{"version":3,"file":"static/js/main.a4022b9b.js","mappings":";uEAGA,SAASA,EAAsBC,EAAWC,EAAiBC,GACvD,OAAO,SAAuCC,EAAMC,QACjC,IAAXA,IAAqBA,EAASF,GAClC,IAAIG,EAAiBL,EAAUG,GAAQC,EACvC,OAAOH,EAAgBI,EAC1B,CACJ,CACD,SAASC,EAAWC,GAChB,OAAO,SAA4BJ,GAC/B,OAAO,IAAIK,KAAKD,EAAqBJ,GAAMM,UAAY,EAC1D,CACJ,CACD,SAASC,EAAaC,EAAUC,GAC5B,OAAO,SAA8BT,GACjC,MAAO,CAACQ,EAASR,GAAOS,EAAOT,GAClC,CACJ,CASM,SAASU,EAAQV,GACpB,GAAIA,aAAgBK,KAChB,OAAOL,EAAKW,cAEhB,GAAoB,kBAATX,EACP,OAAOA,EAEX,IAAIY,EAAOC,SAASb,EAAM,IAC1B,GAAoB,kBAATA,IAAsBc,MAAMF,GACnC,OAAOA,EAEX,MAAM,IAAIG,MAAM,iCAAiCC,OAAOhB,EAAM,KACjE,CAMM,SAASiB,EAASjB,GACrB,GAAIA,aAAgBK,KAChB,OAAOL,EAAKiB,WAEhB,MAAM,IAAIF,MAAM,kCAAkCC,OAAOhB,EAAM,KAClE,CAMM,SAASkB,EAAclB,GAC1B,GAAIA,aAAgBK,KAChB,OAAOL,EAAKiB,WAAa,EAE7B,MAAM,IAAIF,MAAM,iDAAiDC,OAAOhB,EAAM,KACjF,CAMM,SAASmB,EAAQnB,GACpB,GAAIA,aAAgBK,KAChB,OAAOL,EAAKmB,UAEhB,MAAM,IAAIJ,MAAM,iCAAiCC,OAAOhB,EAAM,KACjE,CAMM,SAASoB,EAASpB,GACrB,GAAIA,aAAgBK,KAChB,OAAOL,EAAKoB,WAEhB,GAAoB,kBAATpB,EAAmB,CAC1B,IAAIqB,EAAarB,EAAKsB,MAAM,KAC5B,GAAID,EAAWE,QAAU,EAAG,CACxB,IAAIC,EAAcH,EAAW,GAC7B,GAAIG,EAAa,CACb,IAAIC,EAAQZ,SAASW,EAAa,IAClC,IAAKV,MAAMW,GACP,OAAOA,CAEd,CACJ,CACJ,CACD,MAAM,IAAIV,MAAM,kCAAkCC,OAAOhB,EAAM,KAClE,CAMM,SAAS0B,EAAW1B,GACvB,GAAIA,aAAgBK,KAChB,OAAOL,EAAK0B,aAEhB,GAAoB,kBAAT1B,EAAmB,CAC1B,IAAIqB,EAAarB,EAAKsB,MAAM,KAC5B,GAAID,EAAWE,QAAU,EAAG,CACxB,IAAII,EAAgBN,EAAW,IAAM,IACjCO,EAAUf,SAASc,EAAe,IACtC,IAAKb,MAAMc,GACP,OAAOA,CAEd,CACJ,CACD,MAAM,IAAIb,MAAM,oCAAoCC,OAAOhB,EAAM,KACpE,CAMM,SAAS6B,EAAW7B,GACvB,GAAIA,aAAgBK,KAChB,OAAOL,EAAK6B,aAEhB,GAAoB,kBAAT7B,EAAmB,CAC1B,IAAIqB,EAAarB,EAAKsB,MAAM,KAC5B,GAAID,EAAWE,QAAU,EAAG,CACxB,IAAIO,EAAgBT,EAAW,IAAM,IACjCU,EAAUlB,SAASiB,EAAe,IACtC,IAAKhB,MAAMiB,GACP,OAAOA,CAEd,CACJ,CACD,MAAM,IAAIhB,MAAM,oCAAoCC,OAAOhB,EAAM,KACpE,CAIM,SAASgC,EAAgBhC,GAC5B,IAAIY,EAAOF,EAAQV,GACfiC,EAAmBrB,GAAiB,EAAPA,GAAY,IACzCsB,EAAmB,IAAI7B,KAG3B,OAFA6B,EAAiBC,YAAYF,EAAkB,EAAG,GAClDC,EAAiBE,SAAS,EAAG,EAAG,EAAG,GAC5BF,CACV,yvDACM,IAAIG,EAA0BzC,EAAsBc,EAASsB,GAAkB,KAC3EM,EAAsB1C,EAAsBc,EAASsB,EAAiB,KACtEO,EAAgBpC,EAAWmC,GAC3BE,EAAwB5C,EAAsBc,EAAS6B,GAAgB,KACvEE,EAAoB7C,EAAsBc,EAAS6B,EAAe,KAClEG,EAAkBnC,EAAayB,EAAiBO,GAIpD,SAASI,EAAe3C,GAC3B,IAAIY,EAAOF,EAAQV,GACf4C,EAAkBhC,GAAiB,EAAPA,GAAY,GACxCiC,EAAkB,IAAIxC,KAG1B,OAFAwC,EAAgBV,YAAYS,EAAiB,EAAG,GAChDC,EAAgBT,SAAS,EAAG,EAAG,EAAG,GAC3BS,CACV,CACM,IAAIC,EAAyBlD,EAAsBc,EAASiC,GAAiB,IACzEI,EAAqBnD,EAAsBc,EAASiC,EAAgB,IACpEK,EAAe7C,EAAW4C,GAC1BE,EAAuBrD,EAAsBc,EAASsC,GAAe,IACrEE,EAAmBtD,EAAsBc,EAASsC,EAAc,IAChEG,EAAiB5C,EAAaoC,EAAgBK,GAIlD,SAASI,EAAapD,GACzB,IAAIY,EAAOF,EAAQV,GACfqD,EAAgB,IAAIhD,KAGxB,OAFAgD,EAAclB,YAAYvB,EAAM,EAAG,GACnCyC,EAAcjB,SAAS,EAAG,EAAG,EAAG,GACzBiB,CACV,CACM,IAAIC,EAAuB1D,EAAsBc,EAAS0C,GAAe,GACrEG,EAAmB3D,EAAsBc,EAAS0C,EAAc,GAChEI,EAAarD,EAAWoD,GACxBE,EAAqB7D,EAAsBc,EAAS8C,GAAa,GACjEE,EAAiB9D,EAAsBc,EAAS8C,EAAY,GAC5DG,EAAepD,EAAa6C,EAAcI,GAIrD,SAASI,EAA2B9D,EAAiBC,GACjD,OAAO,SAA4CC,EAAMC,QACtC,IAAXA,IAAqBA,EAASF,GAClC,IAAIa,EAAOF,EAAQV,GACf6D,EAAQ5C,EAASjB,GAAQC,EACzBC,EAAiB,IAAIG,KAGzB,OAFAH,EAAeiC,YAAYvB,EAAMiD,EAAO,GACxC3D,EAAekC,SAAS,EAAG,EAAG,EAAG,GAC1BtC,EAAgBI,EAC1B,CACJ,CACM,SAAS4D,EAAc9D,GAC1B,IAAIY,EAAOF,EAAQV,GACf6D,EAAQ5C,EAASjB,GACjB+D,EAAiB,IAAI1D,KAGzB,OAFA0D,EAAe5B,YAAYvB,EAAMiD,EAAO,GACxCE,EAAe3B,SAAS,EAAG,EAAG,EAAG,GAC1B2B,CACV,CACM,IAAIC,EAAwBJ,EAA2BE,GAAgB,GACnEG,EAAoBL,EAA2BE,EAAe,GAC9DI,EAAc/D,EAAW8D,GACzBE,EAAsBP,EAA2BM,GAAc,GAC/DE,EAAkBR,EAA2BM,EAAa,GAC1DG,EAAgB9D,EAAauD,EAAeI,GAIvD,SAASI,EAAyBxE,EAAiBC,GAC/C,OAAO,SAA0CC,EAAMC,QACpC,IAAXA,IAAqBA,EAASF,GAClC,IAAIa,EAAOF,EAAQV,GACf6D,EAAQ5C,EAASjB,GACjBuE,EAAMpD,EAAQnB,GAAQC,EACtBC,EAAiB,IAAIG,KAGzB,OAFAH,EAAeiC,YAAYvB,EAAMiD,EAAOU,GACxCrE,EAAekC,SAAS,EAAG,EAAG,EAAG,GAC1BtC,EAAgBI,EAC1B,CACJ,CACM,SAASsE,EAAYxE,GACxB,IAAIY,EAAOF,EAAQV,GACf6D,EAAQ5C,EAASjB,GACjBuE,EAAMpD,EAAQnB,GACdyE,EAAe,IAAIpE,KAGvB,OAFAoE,EAAatC,YAAYvB,EAAMiD,EAAOU,GACtCE,EAAarC,SAAS,EAAG,EAAG,EAAG,GACxBqC,CACV,CACM,IAAIC,EAAsBJ,EAAyBE,GAAc,GAC7DG,EAAkBL,EAAyBE,EAAa,GACxDI,EAAYzE,EAAWwE,GACvBE,EAAoBP,EAAyBM,GAAY,GACzDE,EAAgBR,EAAyBM,EAAW,GACpDG,EAAcxE,EAAaiE,EAAaI,GAS5C,SAASI,EAAehF,GAC3B,OAAOmB,EAAQ+C,EAAYlE,GAC9B,CACD,SAASiF,EAASC,EAAKC,QACP,IAARA,IAAkBA,EAAM,GAC5B,IAAIC,EAAS,GAAGpE,OAAOkE,GACvB,OAAIE,EAAO7D,QAAU4D,EACVD,EAEJ,OAAOlE,OAAOoE,GAAQC,OAAOF,EACvC,CAIM,SAASG,EAAgBtF,GAC5B,IAAIyB,EAAQwD,EAAS7D,EAASpB,IAC1B4B,EAAUqD,EAASvD,EAAW1B,IAClC,MAAO,GAAGgB,OAAOS,EAAO,KAAKT,OAAOY,EACvC,CAIM,SAAS2D,EAAuBvF,GACnC,IAAIyB,EAAQwD,EAAS7D,EAASpB,IAC1B4B,EAAUqD,EAASvD,EAAW1B,IAC9B+B,EAAUkD,EAASpD,EAAW7B,IAClC,MAAO,GAAGgB,OAAOS,EAAO,KAAKT,OAAOY,EAAS,KAAKZ,OAAOe,EAC5D,CAIM,SAASyD,GAAiBxF,GAC7B,IAAIY,EAAOqE,EAASvE,EAAQV,GAAO,GAC/B6D,EAAQoB,EAAS/D,EAAclB,IACnC,MAAO,GAAGgB,OAAOJ,EAAM,KAAKI,OAAO6C,EACtC,CAIM,SAAS4B,GAAgBzF,GAC5B,IAAIY,EAAOqE,EAASvE,EAAQV,GAAO,GAC/B6D,EAAQoB,EAAS/D,EAAclB,IAC/BuE,EAAMU,EAAS9D,EAAQnB,IAC3B,MAAO,GAAGgB,OAAOJ,EAAM,KAAKI,OAAO6C,EAAO,KAAK7C,OAAOuD,EACzD,CAIM,SAASmB,GAAoB1F,GAChC,MAAO,GAAGgB,OAAOyE,GAAgBzF,GAAO,KAAKgB,OAAOuE,EAAuBvF,GAC9E,wBCjTD2F,EAAOC,QAAU,EAAjBD,yCCEA,IAAIE,EAAQC,EAAQ,MAChBC,EAASD,EAAQ,MACjBE,EAAUF,EAAQ,MAClBG,EAAWH,EAAQ,MACnBI,EAAgBJ,EAAQ,MACxBK,EAAeL,EAAQ,MACvBM,EAAkBN,EAAQ,MAC1BO,EAAuBP,EAAQ,MAC/BQ,EAAaR,EAAQ,MACrBS,EAAgBT,EAAQ,MACxBU,EAAgBV,EAAQ,MAE5BH,EAAOC,QAAU,SAAoBa,GACnC,OAAO,IAAIC,SAAQ,SAA4BC,EAASC,GACtD,IAGIC,EAHAC,EAAcL,EAAOM,KACrBC,EAAiBP,EAAOQ,QACxBC,EAAeT,EAAOS,aAE1B,SAASC,IACHV,EAAOW,aACTX,EAAOW,YAAYC,YAAYR,GAG7BJ,EAAOa,QACTb,EAAOa,OAAOC,oBAAoB,QAASV,EAE9C,CAEGhB,EAAM2B,WAAWV,IAAgBjB,EAAM4B,+BAClCT,EAAe,gBAGxB,IAAIU,EAAU,IAAIC,eAGlB,GAAIlB,EAAOmB,KAAM,CACf,IAAIC,EAAWpB,EAAOmB,KAAKC,UAAY,GACnCC,EAAWrB,EAAOmB,KAAKE,SAAWC,SAASC,mBAAmBvB,EAAOmB,KAAKE,WAAa,GAC3Fd,EAAeiB,cAAgB,SAAWC,KAAKL,EAAW,IAAMC,EACjE,CAED,IAAIK,EAAWjC,EAAcO,EAAO2B,QAAS3B,EAAO4B,KAOpD,SAASC,IACP,GAAKZ,EAAL,CAIA,IAAIa,EAAkB,0BAA2Bb,EAAUvB,EAAauB,EAAQc,yBAA2B,KAGvGC,EAAW,CACb1B,KAHkBG,GAAiC,SAAjBA,GAA6C,SAAjBA,EACvCQ,EAAQe,SAA/Bf,EAAQgB,aAGRC,OAAQjB,EAAQiB,OAChBC,WAAYlB,EAAQkB,WACpB3B,QAASsB,EACT9B,OAAQA,EACRiB,QAASA,GAGX3B,GAAO,SAAkB8C,GACvBlC,EAAQkC,GACR1B,GACD,IAAE,SAAiB2B,GAClBlC,EAAOkC,GACP3B,GACD,GAAEsB,GAGHf,EAAU,IAvBT,CAwBF,CAmED,GAnGAA,EAAQqB,KAAKtC,EAAOuC,OAAOC,cAAehD,EAASkC,EAAU1B,EAAOyC,OAAQzC,EAAO0C,mBAAmB,GAGtGzB,EAAQ0B,QAAU3C,EAAO2C,QA+BrB,cAAe1B,EAEjBA,EAAQY,UAAYA,EAGpBZ,EAAQ2B,mBAAqB,WACtB3B,GAAkC,IAAvBA,EAAQ4B,aAQD,IAAnB5B,EAAQiB,QAAkBjB,EAAQ6B,aAAwD,IAAzC7B,EAAQ6B,YAAYC,QAAQ,WAKjFC,WAAWnB,EACZ,EAIHZ,EAAQgC,QAAU,WACXhC,IAILd,EAAO,IAAIN,EAAW,kBAAmBA,EAAWqD,aAAclD,EAAQiB,IAG1EA,EAAU,KACX,EAGDA,EAAQkC,QAAU,WAGhBhD,EAAO,IAAIN,EAAW,gBAAiBA,EAAWuD,YAAapD,EAAQiB,EAASA,IAGhFA,EAAU,IACX,EAGDA,EAAQoC,UAAY,WAClB,IAAIC,EAAsBtD,EAAO2C,QAAU,cAAgB3C,EAAO2C,QAAU,cAAgB,mBACxFY,EAAevD,EAAOuD,cAAgB3D,EACtCI,EAAOsD,sBACTA,EAAsBtD,EAAOsD,qBAE/BnD,EAAO,IAAIN,EACTyD,EACAC,EAAaC,oBAAsB3D,EAAW4D,UAAY5D,EAAWqD,aACrElD,EACAiB,IAGFA,EAAU,IACX,EAKG7B,EAAM4B,uBAAwB,CAEhC,IAAI0C,GAAa1D,EAAO2D,iBAAmBhE,EAAgB+B,KAAc1B,EAAO4D,eAC9ErE,EAAQsE,KAAK7D,EAAO4D,qBACpBE,EAEEJ,IACFnD,EAAeP,EAAO+D,gBAAkBL,EAE3C,CAGG,qBAAsBzC,GACxB7B,EAAM4E,QAAQzD,GAAgB,SAA0B7B,EAAKuF,GAChC,qBAAhB5D,GAAqD,iBAAtB4D,EAAIC,qBAErC3D,EAAe0D,GAGtBhD,EAAQkD,iBAAiBF,EAAKvF,EAEjC,IAIEU,EAAMgF,YAAYpE,EAAO2D,mBAC5B1C,EAAQ0C,kBAAoB3D,EAAO2D,iBAIjClD,GAAiC,SAAjBA,IAClBQ,EAAQR,aAAeT,EAAOS,cAIS,oBAA9BT,EAAOqE,oBAChBpD,EAAQqD,iBAAiB,WAAYtE,EAAOqE,oBAIP,oBAA5BrE,EAAOuE,kBAAmCtD,EAAQuD,QAC3DvD,EAAQuD,OAAOF,iBAAiB,WAAYtE,EAAOuE,mBAGjDvE,EAAOW,aAAeX,EAAOa,UAG/BT,EAAa,SAASqE,GACfxD,IAGLd,GAAQsE,GAAWA,GAAUA,EAAOC,KAAQ,IAAI5E,EAAkB2E,GAClExD,EAAQ0D,QACR1D,EAAU,KACX,EAEDjB,EAAOW,aAAeX,EAAOW,YAAYiE,UAAUxE,GAC/CJ,EAAOa,SACTb,EAAOa,OAAOgE,QAAUzE,IAAeJ,EAAOa,OAAOyD,iBAAiB,QAASlE,KAI9EC,IACHA,EAAc,MAGhB,IAAIyE,EAAW/E,EAAc2B,GAEzBoD,IAA+D,IAAnD,CAAE,OAAQ,QAAS,QAAS/B,QAAQ+B,GAClD3E,EAAO,IAAIN,EAAW,wBAA0BiF,EAAW,IAAKjF,EAAWkF,gBAAiB/E,IAM9FiB,EAAQ+D,KAAK3E,EACd,GACF,qCC3ND,IAAIjB,EAAQC,EAAQ,MAChB4F,EAAO5F,EAAQ,MACf6F,EAAQ7F,EAAQ,MAChB8F,EAAc9F,EAAQ,KA4B1B,IAAI+F,EAnBJ,SAASC,EAAeC,GACtB,IAAIC,EAAU,IAAIL,EAAMI,GACpBE,EAAWP,EAAKC,EAAMO,UAAUxE,QAASsE,GAa7C,OAVAnG,EAAMsG,OAAOF,EAAUN,EAAMO,UAAWF,GAGxCnG,EAAMsG,OAAOF,EAAUD,GAGvBC,EAASG,OAAS,SAAgBC,GAChC,OAAOP,EAAeF,EAAYG,EAAeM,GAClD,EAEMJ,CACR,CAGWH,CA3BGhG,EAAQ,OA8BvB+F,EAAMF,MAAQA,EAGdE,EAAMtF,cAAgBT,EAAQ,MAC9B+F,EAAMS,YAAcxG,EAAQ,MAC5B+F,EAAMU,SAAWzG,EAAQ,MACzB+F,EAAMW,QAAU1G,EAAAA,MAAAA,QAChB+F,EAAMY,WAAa3G,EAAQ,MAG3B+F,EAAMvF,WAAaR,EAAQ,MAG3B+F,EAAMa,OAASb,EAAMtF,cAGrBsF,EAAMc,IAAM,SAAaC,GACvB,OAAOlG,QAAQiG,IAAIC,EACpB,EACDf,EAAMgB,OAAS/G,EAAQ,MAGvB+F,EAAMiB,aAAehH,EAAQ,MAE7BH,EAAOC,QAAUiG,EAGjBlG,EAAOC,QAAPD,QAAyBkG,qCC7DzB,IAAItF,EAAgBT,EAAQ,MAQ5B,SAASwG,EAAYS,GACnB,GAAwB,oBAAbA,EACT,MAAM,IAAIC,UAAU,gCAGtB,IAAIC,EAEJC,KAAKC,QAAU,IAAIzG,SAAQ,SAAyBC,GAClDsG,EAAiBtG,CAClB,IAED,IAAIyG,EAAQF,KAGZA,KAAKC,QAAQE,MAAK,SAASnC,GACzB,GAAKkC,EAAME,WAAX,CAEA,IAAIC,EACAC,EAAIJ,EAAME,WAAW/L,OAEzB,IAAKgM,EAAI,EAAGA,EAAIC,EAAGD,IACjBH,EAAME,WAAWC,GAAGrC,GAEtBkC,EAAME,WAAa,IARU,CAS9B,IAGDJ,KAAKC,QAAQE,KAAO,SAASI,GAC3B,IAAIC,EAEAP,EAAU,IAAIzG,SAAQ,SAASC,GACjCyG,EAAM/B,UAAU1E,GAChB+G,EAAW/G,CACZ,IAAE0G,KAAKI,GAMR,OAJAN,EAAQjC,OAAS,WACfkC,EAAM/F,YAAYqG,EACnB,EAEMP,CACR,EAEDJ,GAAS,SAAgBY,GACnBP,EAAMQ,SAKVR,EAAMQ,OAAS,IAAIrH,EAAcoH,GACjCV,EAAeG,EAAMQ,QACtB,GACF,CAKDtB,EAAYJ,UAAU2B,iBAAmB,WACvC,GAAIX,KAAKU,OACP,MAAMV,KAAKU,MAEd,EAMDtB,EAAYJ,UAAUb,UAAY,SAAmByC,GAC/CZ,KAAKU,OACPE,EAASZ,KAAKU,QAIZV,KAAKI,WACPJ,KAAKI,WAAWS,KAAKD,GAErBZ,KAAKI,WAAa,CAACQ,EAEtB,EAMDxB,EAAYJ,UAAU7E,YAAc,SAAqByG,GACvD,GAAKZ,KAAKI,WAAV,CAGA,IAAIU,EAAQd,KAAKI,WAAW9D,QAAQsE,IACrB,IAAXE,GACFd,KAAKI,WAAWW,OAAOD,EAAO,EAH/B,CAKF,EAMD1B,EAAY4B,OAAS,WACnB,IAAIhD,EAIJ,MAAO,CACLkC,MAJU,IAAId,GAAY,SAAkB6B,GAC5CjD,EAASiD,CACV,IAGCjD,OAAQA,EAEX,EAEDvF,EAAOC,QAAU0G,qCCpHjB,IAAIhG,EAAaR,EAAQ,MASzB,SAASS,EAAcoH,GAErBrH,EAAW8H,KAAKlB,KAAiB,MAAXS,EAAkB,WAAaA,EAASrH,EAAW+H,cACzEnB,KAAKoB,KAAO,eACb,CAZWxI,EAAQ,MAcdyI,SAAShI,EAAeD,EAAY,CACxCkI,YAAY,IAGd7I,EAAOC,QAAUW,iCCnBjBZ,EAAOC,QAAU,SAAkBiD,GACjC,SAAUA,IAASA,EAAM2F,WAC1B,qCCFD,IAAI3I,EAAQC,EAAQ,MAChBG,EAAWH,EAAQ,MACnB2I,EAAqB3I,EAAQ,MAC7B4I,EAAkB5I,EAAQ,MAC1B8F,EAAc9F,EAAQ,KACtBI,EAAgBJ,EAAQ,MACxB6I,EAAY7I,EAAQ,MAEpB8I,EAAaD,EAAUC,WAM3B,SAASjD,EAAMU,GACba,KAAK2B,SAAWxC,EAChBa,KAAK4B,aAAe,CAClBpH,QAAS,IAAI+G,EACbhG,SAAU,IAAIgG,EAEjB,CAOD9C,EAAMO,UAAUxE,QAAU,SAAiBqH,EAAatI,GAG3B,kBAAhBsI,GACTtI,EAASA,GAAU,CAAC,GACb4B,IAAM0G,EAEbtI,EAASsI,GAAe,CAAC,GAG3BtI,EAASmF,EAAYsB,KAAK2B,SAAUpI,IAGzBuC,OACTvC,EAAOuC,OAASvC,EAAOuC,OAAO2B,cACrBuC,KAAK2B,SAAS7F,OACvBvC,EAAOuC,OAASkE,KAAK2B,SAAS7F,OAAO2B,cAErClE,EAAOuC,OAAS,MAGlB,IAAIgB,EAAevD,EAAOuD,kBAELO,IAAjBP,GACF2E,EAAUK,cAAchF,EAAc,CACpCiF,kBAAmBL,EAAW5E,aAAa4E,EAAWM,SACtDC,kBAAmBP,EAAW5E,aAAa4E,EAAWM,SACtDjF,oBAAqB2E,EAAW5E,aAAa4E,EAAWM,WACvD,GAIL,IAAIE,EAA0B,GAC1BC,GAAiC,EACrCnC,KAAK4B,aAAapH,QAAQ+C,SAAQ,SAAoC6E,GACjC,oBAAxBA,EAAYC,UAA0D,IAAhCD,EAAYC,QAAQ9I,KAIrE4I,EAAiCA,GAAkCC,EAAYE,YAE/EJ,EAAwBK,QAAQH,EAAYI,UAAWJ,EAAYK,UACpE,IAED,IAKIxC,EALAyC,EAA2B,GAO/B,GANA1C,KAAK4B,aAAarG,SAASgC,SAAQ,SAAkC6E,GACnEM,EAAyB7B,KAAKuB,EAAYI,UAAWJ,EAAYK,SAClE,KAIIN,EAAgC,CACnC,IAAIQ,EAAQ,CAACnB,OAAiBnE,GAM9B,IAJAuF,MAAM5D,UAAUuD,QAAQM,MAAMF,EAAOT,GACrCS,EAAQA,EAAM7O,OAAO4O,GAErBzC,EAAUzG,QAAQC,QAAQF,GACnBoJ,EAAMtO,QACX4L,EAAUA,EAAQE,KAAKwC,EAAMG,QAASH,EAAMG,SAG9C,OAAO7C,CACR,CAID,IADA,IAAI8C,EAAYxJ,EACT2I,EAAwB7N,QAAQ,CACrC,IAAI2O,EAAcd,EAAwBY,QACtCG,EAAaf,EAAwBY,QACzC,IACEC,EAAYC,EAAYD,EAIzB,CAHC,MAAOG,GACPD,EAAWC,GACX,KACD,CACF,CAED,IACEjD,EAAUuB,EAAgBuB,EAG3B,CAFC,MAAOG,GACP,OAAO1J,QAAQE,OAAOwJ,EACvB,CAED,KAAOR,EAAyBrO,QAC9B4L,EAAUA,EAAQE,KAAKuC,EAAyBI,QAASJ,EAAyBI,SAGpF,OAAO7C,CACR,EAEDxB,EAAMO,UAAUmE,OAAS,SAAgB5J,GACvCA,EAASmF,EAAYsB,KAAK2B,SAAUpI,GACpC,IAAI0B,EAAWjC,EAAcO,EAAO2B,QAAS3B,EAAO4B,KACpD,OAAOpC,EAASkC,EAAU1B,EAAOyC,OAAQzC,EAAO0C,iBACjD,EAGDtD,EAAM4E,QAAQ,CAAC,SAAU,MAAO,OAAQ,YAAY,SAA6BzB,GAE/E2C,EAAMO,UAAUlD,GAAU,SAASX,EAAK5B,GACtC,OAAOyG,KAAKxF,QAAQkE,EAAYnF,GAAU,CAAC,EAAG,CAC5CuC,OAAQA,EACRX,IAAKA,EACLtB,MAAON,GAAU,CAAC,GAAGM,OAExB,CACF,IAEDlB,EAAM4E,QAAQ,CAAC,OAAQ,MAAO,UAAU,SAA+BzB,GAGrE,SAASsH,EAAmBC,GAC1B,OAAO,SAAoBlI,EAAKtB,EAAMN,GACpC,OAAOyG,KAAKxF,QAAQkE,EAAYnF,GAAU,CAAC,EAAG,CAC5CuC,OAAQA,EACR/B,QAASsJ,EAAS,CAChB,eAAgB,uBACd,CAAC,EACLlI,IAAKA,EACLtB,KAAMA,IAET,CACF,CAED4E,EAAMO,UAAUlD,GAAUsH,IAE1B3E,EAAMO,UAAUlD,EAAS,QAAUsH,GAAmB,EACvD,IAED3K,EAAOC,QAAU+F,qCC7JjB,IAAI9F,EAAQC,EAAQ,MAYpB,SAASQ,EAAWqH,EAAS6C,EAAM/J,EAAQiB,EAASe,GAClD1H,MAAMqN,KAAKlB,MACXA,KAAKS,QAAUA,EACfT,KAAKoB,KAAO,aACZkC,IAAStD,KAAKsD,KAAOA,GACrB/J,IAAWyG,KAAKzG,OAASA,GACzBiB,IAAYwF,KAAKxF,QAAUA,GAC3Be,IAAayE,KAAKzE,SAAWA,EAC9B,CAED5C,EAAM0I,SAASjI,EAAYvF,MAAO,CAChC0P,OAAQ,WACN,MAAO,CAEL9C,QAAST,KAAKS,QACdW,KAAMpB,KAAKoB,KAEXoC,YAAaxD,KAAKwD,YAClBC,OAAQzD,KAAKyD,OAEbC,SAAU1D,KAAK0D,SACfC,WAAY3D,KAAK2D,WACjBC,aAAc5D,KAAK4D,aACnBC,MAAO7D,KAAK6D,MAEZtK,OAAQyG,KAAKzG,OACb+J,KAAMtD,KAAKsD,KACX7H,OAAQuE,KAAKzE,UAAYyE,KAAKzE,SAASE,OAASuE,KAAKzE,SAASE,OAAS,KAE1E,IAGH,IAAIuD,EAAY5F,EAAW4F,UACvB8E,EAAc,CAAC,EAEnB,CACE,uBACA,iBACA,eACA,YACA,cACA,4BACA,iBACA,mBACA,kBACA,gBAEAvG,SAAQ,SAAS+F,GACjBQ,EAAYR,GAAQ,CAAC3H,MAAO2H,EAC7B,IAEDS,OAAOC,iBAAiB5K,EAAY0K,GACpCC,OAAOE,eAAejF,EAAW,eAAgB,CAACrD,OAAO,IAGzDvC,EAAW8K,KAAO,SAAShB,EAAOI,EAAM/J,EAAQiB,EAASe,EAAU4I,GACjE,IAAIC,EAAaL,OAAO7E,OAAOF,GAY/B,OAVArG,EAAM0L,aAAanB,EAAOkB,GAAY,SAAgBE,GACpD,OAAOA,IAAQzQ,MAAMmL,SACtB,IAED5F,EAAW8H,KAAKkD,EAAYlB,EAAMzC,QAAS6C,EAAM/J,EAAQiB,EAASe,GAElE6I,EAAWhD,KAAO8B,EAAM9B,KAExB+C,GAAeJ,OAAOQ,OAAOH,EAAYD,GAElCC,CACR,EAED3L,EAAOC,QAAUU,qCCnFjB,IAAIT,EAAQC,EAAQ,MAEpB,SAAS2I,IACPvB,KAAKwE,SAAW,EACjB,CAUDjD,EAAmBvC,UAAUyF,IAAM,SAAajC,EAAWC,EAAUiC,GAOnE,OANA1E,KAAKwE,SAAS3D,KAAK,CACjB2B,UAAWA,EACXC,SAAUA,EACVH,cAAaoC,GAAUA,EAAQpC,YAC/BD,QAASqC,EAAUA,EAAQrC,QAAU,OAEhCrC,KAAKwE,SAASnQ,OAAS,CAC/B,EAODkN,EAAmBvC,UAAU2F,MAAQ,SAAeC,GAC9C5E,KAAKwE,SAASI,KAChB5E,KAAKwE,SAASI,GAAM,KAEvB,EAUDrD,EAAmBvC,UAAUzB,QAAU,SAAiBsH,GACtDlM,EAAM4E,QAAQyC,KAAKwE,UAAU,SAAwBM,GACzC,OAANA,GACFD,EAAGC,EAEN,GACF,EAEDrM,EAAOC,QAAU6I,qCCnDjB,IAAIwD,EAAgBnM,EAAQ,MACxBoM,EAAcpM,EAAQ,MAW1BH,EAAOC,QAAU,SAAuBwC,EAAS+J,GAC/C,OAAI/J,IAAY6J,EAAcE,GACrBD,EAAY9J,EAAS+J,GAEvBA,CACR,qCCjBD,IAAItM,EAAQC,EAAQ,MAChBsM,EAAgBtM,EAAQ,MACxByG,EAAWzG,EAAQ,MACnB+I,EAAW/I,EAAQ,MACnBS,EAAgBT,EAAQ,MAK5B,SAASuM,EAA6B5L,GAKpC,GAJIA,EAAOW,aACTX,EAAOW,YAAYyG,mBAGjBpH,EAAOa,QAAUb,EAAOa,OAAOgE,QACjC,MAAM,IAAI/E,CAEb,CAQDZ,EAAOC,QAAU,SAAyBa,GA8BxC,OA7BA4L,EAA6B5L,GAG7BA,EAAOQ,QAAUR,EAAOQ,SAAW,CAAC,EAGpCR,EAAOM,KAAOqL,EAAchE,KAC1B3H,EACAA,EAAOM,KACPN,EAAOQ,QACPR,EAAO6L,kBAIT7L,EAAOQ,QAAUpB,EAAM0M,MACrB9L,EAAOQ,QAAQuL,QAAU,CAAC,EAC1B/L,EAAOQ,QAAQR,EAAOuC,SAAW,CAAC,EAClCvC,EAAOQ,SAGTpB,EAAM4E,QACJ,CAAC,SAAU,MAAO,OAAQ,OAAQ,MAAO,QAAS,WAClD,SAA2BzB,UAClBvC,EAAOQ,QAAQ+B,EACvB,KAGWvC,EAAOgM,SAAW5D,EAAS4D,SAE1BhM,GAAQ4G,MAAK,SAA6B5E,GAWvD,OAVA4J,EAA6B5L,GAG7BgC,EAAS1B,KAAOqL,EAAchE,KAC5B3H,EACAgC,EAAS1B,KACT0B,EAASxB,QACTR,EAAOiM,mBAGFjK,CACR,IAAE,SAA4BmF,GAe7B,OAdKrB,EAASqB,KACZyE,EAA6B5L,GAGzBmH,GAAUA,EAAOnF,WACnBmF,EAAOnF,SAAS1B,KAAOqL,EAAchE,KACnC3H,EACAmH,EAAOnF,SAAS1B,KAChB6G,EAAOnF,SAASxB,QAChBR,EAAOiM,qBAKNhM,QAAQE,OAAOgH,EACvB,GACF,oCCpFD,IAAI/H,EAAQC,EAAQ,MAUpBH,EAAOC,QAAU,SAAqB+M,EAASC,GAE7CA,EAAUA,GAAW,CAAC,EACtB,IAAInM,EAAS,CAAC,EAEd,SAASoM,EAAeC,EAAQ5E,GAC9B,OAAIrI,EAAMkN,cAAcD,IAAWjN,EAAMkN,cAAc7E,GAC9CrI,EAAM0M,MAAMO,EAAQ5E,GAClBrI,EAAMkN,cAAc7E,GACtBrI,EAAM0M,MAAM,CAAC,EAAGrE,GACdrI,EAAMmN,QAAQ9E,GAChBA,EAAO7I,QAET6I,CACR,CAGD,SAAS+E,EAAoBC,GAC3B,OAAKrN,EAAMgF,YAAY+H,EAAQM,IAEnBrN,EAAMgF,YAAY8H,EAAQO,SAA/B,EACEL,OAAetI,EAAWoI,EAAQO,IAFlCL,EAAeF,EAAQO,GAAON,EAAQM,GAIhD,CAGD,SAASC,EAAiBD,GACxB,IAAKrN,EAAMgF,YAAY+H,EAAQM,IAC7B,OAAOL,OAAetI,EAAWqI,EAAQM,GAE5C,CAGD,SAASE,EAAiBF,GACxB,OAAKrN,EAAMgF,YAAY+H,EAAQM,IAEnBrN,EAAMgF,YAAY8H,EAAQO,SAA/B,EACEL,OAAetI,EAAWoI,EAAQO,IAFlCL,OAAetI,EAAWqI,EAAQM,GAI5C,CAGD,SAASG,EAAgBH,GACvB,OAAIA,KAAQN,EACHC,EAAeF,EAAQO,GAAON,EAAQM,IACpCA,KAAQP,EACVE,OAAetI,EAAWoI,EAAQO,SADpC,CAGR,CAED,IAAII,EAAW,CACb,IAAOH,EACP,OAAUA,EACV,KAAQA,EACR,QAAWC,EACX,iBAAoBA,EACpB,kBAAqBA,EACrB,iBAAoBA,EACpB,QAAWA,EACX,eAAkBA,EAClB,gBAAmBA,EACnB,QAAWA,EACX,aAAgBA,EAChB,eAAkBA,EAClB,eAAkBA,EAClB,iBAAoBA,EACpB,mBAAsBA,EACtB,WAAcA,EACd,iBAAoBA,EACpB,cAAiBA,EACjB,eAAkBA,EAClB,UAAaA,EACb,UAAaA,EACb,WAAcA,EACd,YAAeA,EACf,WAAcA,EACd,iBAAoBA,EACpB,eAAkBC,GASpB,OANAxN,EAAM4E,QAAQwG,OAAOsC,KAAKZ,GAAS3R,OAAOiQ,OAAOsC,KAAKX,KAAW,SAA4BM,GAC3F,IAAIX,EAAQe,EAASJ,IAASD,EAC1BO,EAAcjB,EAAMW,GACvBrN,EAAMgF,YAAY2I,IAAgBjB,IAAUc,IAAqB5M,EAAOyM,GAAQM,EAClF,IAEM/M,CACR,qCCjGD,IAAIH,EAAaR,EAAQ,MASzBH,EAAOC,QAAU,SAAgBe,EAASC,EAAQ6B,GAChD,IAAIgL,EAAiBhL,EAAShC,OAAOgN,eAChChL,EAASE,QAAW8K,IAAkBA,EAAehL,EAASE,QAGjE/B,EAAO,IAAIN,EACT,mCAAqCmC,EAASE,OAC9C,CAACrC,EAAWkF,gBAAiBlF,EAAWoN,kBAAkBC,KAAKC,MAAMnL,EAASE,OAAS,KAAO,GAC9FF,EAAShC,OACTgC,EAASf,QACTe,IAPF9B,EAAQ8B,EAUX,qCCtBD,IAAI5C,EAAQC,EAAQ,MAChB+I,EAAW/I,EAAQ,MAUvBH,EAAOC,QAAU,SAAuBmB,EAAME,EAAS4M,GACrD,IAAI7H,EAAUkB,MAAQ2B,EAMtB,OAJAhJ,EAAM4E,QAAQoJ,GAAK,SAAmB9B,GACpChL,EAAOgL,EAAG3D,KAAKpC,EAASjF,EAAME,EAC/B,IAEMF,CACR,qCCnBD,IAAIlB,EAAQC,EAAQ,MAChBgO,EAAsBhO,EAAQ,MAC9BQ,EAAaR,EAAQ,MACrBO,EAAuBP,EAAQ,MAC/B2G,EAAa3G,EAAQ,MAErBiO,EAAuB,CACzB,eAAgB,qCAGlB,SAASC,EAAsB/M,EAAS4B,IACjChD,EAAMgF,YAAY5D,IAAYpB,EAAMgF,YAAY5D,EAAQ,mBAC3DA,EAAQ,gBAAkB4B,EAE7B,CA6BD,IAAIgG,EAAW,CAEb7E,aAAc3D,EAEdoM,QA/BF,WACE,IAAIA,EAQJ,OAP8B,qBAAnB9K,gBAGmB,qBAAZsM,SAAuE,qBAA5ChD,OAAO/E,UAAUgI,SAAS9F,KAAK6F,YAD1ExB,EAAU3M,EAAQ,OAKb2M,CACR,CAqBU0B,GAET7B,iBAAkB,CAAC,SAA0BvL,EAAME,GAIjD,GAHA6M,EAAoB7M,EAAS,UAC7B6M,EAAoB7M,EAAS,gBAEzBpB,EAAM2B,WAAWT,IACnBlB,EAAMuO,cAAcrN,IACpBlB,EAAMwO,SAAStN,IACflB,EAAMyO,SAASvN,IACflB,EAAM0O,OAAOxN,IACblB,EAAM2O,OAAOzN,GAEb,OAAOA,EAET,GAAIlB,EAAM4O,kBAAkB1N,GAC1B,OAAOA,EAAK2N,OAEd,GAAI7O,EAAM8O,kBAAkB5N,GAE1B,OADAiN,EAAsB/M,EAAS,mDACxBF,EAAKmN,WAGd,IAGIU,EAHAC,EAAkBhP,EAAMiP,SAAS/N,GACjCgO,EAAc9N,GAAWA,EAAQ,gBAIrC,IAAK2N,EAAa/O,EAAM+O,WAAW7N,KAAW8N,GAAmC,wBAAhBE,EAAwC,CACvG,IAAIC,EAAY9H,KAAK+H,KAAO/H,KAAK+H,IAAIC,SACrC,OAAOzI,EAAWmI,EAAa,CAAC,UAAW7N,GAAQA,EAAMiO,GAAa,IAAIA,EAC3E,CAAM,OAAIH,GAAmC,qBAAhBE,GAC5Bf,EAAsB/M,EAAS,oBAnDrC,SAAyBkO,EAAUC,EAAQC,GACzC,GAAIxP,EAAMyP,SAASH,GACjB,IAEE,OADCC,GAAUG,KAAKC,OAAOL,GAChBtP,EAAM4P,KAAKN,EAKnB,CAJC,MAAOO,GACP,GAAe,gBAAXA,EAAEpH,KACJ,MAAMoH,CAET,CAGH,OAAQL,GAAWE,KAAKI,WAAWR,EACpC,CAuCYS,CAAgB7O,IAGlBA,CACR,GAED2L,kBAAmB,CAAC,SAA2B3L,GAC7C,IAAIiD,EAAekD,KAAKlD,cAAgB6E,EAAS7E,aAC7CiF,EAAoBjF,GAAgBA,EAAaiF,kBACjDE,EAAoBnF,GAAgBA,EAAamF,kBACjD0G,GAAqB5G,GAA2C,SAAtB/B,KAAKhG,aAEnD,GAAI2O,GAAsB1G,GAAqBtJ,EAAMyP,SAASvO,IAASA,EAAKxF,OAC1E,IACE,OAAOgU,KAAKC,MAAMzO,EAQnB,CAPC,MAAO2O,GACP,GAAIG,EAAmB,CACrB,GAAe,gBAAXH,EAAEpH,KACJ,MAAMhI,EAAW8K,KAAKsE,EAAGpP,EAAWoN,iBAAkBxG,KAAM,KAAMA,KAAKzE,UAEzE,MAAMiN,CACP,CACF,CAGH,OAAO3O,CACR,GAMDqC,QAAS,EAETiB,eAAgB,aAChBG,eAAgB,eAEhBsL,kBAAmB,EACnBC,eAAgB,EAEhBd,IAAK,CACHC,SAAUpP,EAAQ,OAGpB2N,eAAgB,SAAwB9K,GACtC,OAAOA,GAAU,KAAOA,EAAS,GAClC,EAED1B,QAAS,CACPuL,OAAQ,CACN,OAAU,uCAKhB3M,EAAM4E,QAAQ,CAAC,SAAU,MAAO,SAAS,SAA6BzB,GACpE6F,EAAS5H,QAAQ+B,GAAU,CAAC,CAC7B,IAEDnD,EAAM4E,QAAQ,CAAC,OAAQ,MAAO,UAAU,SAA+BzB,GACrE6F,EAAS5H,QAAQ+B,GAAUnD,EAAM0M,MAAMwB,EACxC,IAEDpO,EAAOC,QAAUiJ,iCC/IjBlJ,EAAOC,QAAU,CACfqJ,mBAAmB,EACnBE,mBAAmB,EACnBlF,qBAAqB,qBCLvBtE,EAAOC,QAAU,CACf,QAAW,yCCCbD,EAAOC,QAAU,SAAcmM,EAAIiE,GACjC,OAAO,WAEL,IADA,IAAIC,EAAO,IAAInG,MAAMoG,UAAU3U,QACtBgM,EAAI,EAAGA,EAAI0I,EAAK1U,OAAQgM,IAC/B0I,EAAK1I,GAAK2I,UAAU3I,GAEtB,OAAOwE,EAAGhC,MAAMiG,EAASC,EAC1B,CACF,qCCRD,IAAIpQ,EAAQC,EAAQ,MAEpB,SAASqQ,EAAOhR,GACd,OAAO6C,mBAAmB7C,GACxBiR,QAAQ,QAAS,KACjBA,QAAQ,OAAQ,KAChBA,QAAQ,QAAS,KACjBA,QAAQ,OAAQ,KAChBA,QAAQ,QAAS,KACjBA,QAAQ,QAAS,IACpB,CASDzQ,EAAOC,QAAU,SAAkByC,EAAKa,EAAQC,GAE9C,IAAKD,EACH,OAAOb,EAGT,IAAIgO,EACJ,GAAIlN,EACFkN,EAAmBlN,EAAiBD,QAC/B,GAAIrD,EAAM8O,kBAAkBzL,GACjCmN,EAAmBnN,EAAOgL,eACrB,CACL,IAAIoC,EAAQ,GAEZzQ,EAAM4E,QAAQvB,GAAQ,SAAmB/D,EAAKuF,GAChC,OAARvF,GAA+B,qBAARA,IAIvBU,EAAMmN,QAAQ7N,GAChBuF,GAAY,KAEZvF,EAAM,CAACA,GAGTU,EAAM4E,QAAQtF,GAAK,SAAoBoR,GACjC1Q,EAAM2Q,OAAOD,GACfA,EAAIA,EAAEE,cACG5Q,EAAMiP,SAASyB,KACxBA,EAAIhB,KAAKI,UAAUY,IAErBD,EAAMvI,KAAKoI,EAAOzL,GAAO,IAAMyL,EAAOI,GACvC,IACF,IAEDF,EAAmBC,EAAMI,KAAK,IAC/B,CAED,GAAIL,EAAkB,CACpB,IAAIM,EAAgBtO,EAAImB,QAAQ,MACT,IAAnBmN,IACFtO,EAAMA,EAAIhD,MAAM,EAAGsR,IAGrBtO,KAA8B,IAAtBA,EAAImB,QAAQ,KAAc,IAAM,KAAO6M,CAChD,CAED,OAAOhO,CACR,iCC5DD1C,EAAOC,QAAU,SAAqBwC,EAASwO,GAC7C,OAAOA,EACHxO,EAAQgO,QAAQ,OAAQ,IAAM,IAAMQ,EAAYR,QAAQ,OAAQ,IAChEhO,CACL,qCCXD,IAAIvC,EAAQC,EAAQ,MAEpBH,EAAOC,QACLC,EAAM4B,uBAIK,CACLoP,MAAO,SAAevI,EAAMzF,EAAOiO,EAASC,EAAMC,EAAQC,GACxD,IAAIC,EAAS,GACbA,EAAOnJ,KAAKO,EAAO,IAAMtG,mBAAmBa,IAExChD,EAAMsR,SAASL,IACjBI,EAAOnJ,KAAK,WAAa,IAAI1N,KAAKyW,GAASM,eAGzCvR,EAAMyP,SAASyB,IACjBG,EAAOnJ,KAAK,QAAUgJ,GAGpBlR,EAAMyP,SAAS0B,IACjBE,EAAOnJ,KAAK,UAAYiJ,IAGX,IAAXC,GACFC,EAAOnJ,KAAK,UAGdsJ,SAASH,OAASA,EAAOR,KAAK,KAC/B,EAEDpM,KAAM,SAAcgE,GAClB,IAAIgJ,EAAQD,SAASH,OAAOI,MAAM,IAAIC,OAAO,aAAejJ,EAAO,cACnE,OAAQgJ,EAAQE,mBAAmBF,EAAM,IAAM,IAChD,EAEDG,OAAQ,SAAgBnJ,GACtBpB,KAAK2J,MAAMvI,EAAM,GAAIjO,KAAKqX,MAAQ,MACnC,GAMI,CACLb,MAAO,WAAmB,EAC1BvM,KAAM,WAAkB,OAAO,IAAO,EACtCmN,OAAQ,WAAoB,kCCzCpC9R,EAAOC,QAAU,SAAuByC,GAItC,MAAO,8BAA8BsP,KAAKtP,EAC3C,qCCXD,IAAIxC,EAAQC,EAAQ,MAQpBH,EAAOC,QAAU,SAAsBgS,GACrC,OAAO/R,EAAMiP,SAAS8C,KAAsC,IAAzBA,EAAQ9K,YAC5C,qCCVD,IAAIjH,EAAQC,EAAQ,MAEpBH,EAAOC,QACLC,EAAM4B,uBAIH,WACC,IAEIoQ,EAFAC,EAAO,kBAAkBH,KAAKI,UAAUC,WACxCC,EAAiBZ,SAASa,cAAc,KAS5C,SAASC,EAAW9P,GAClB,IAAI+P,EAAO/P,EAWX,OATIyP,IAEFG,EAAeI,aAAa,OAAQD,GACpCA,EAAOH,EAAeG,MAGxBH,EAAeI,aAAa,OAAQD,GAG7B,CACLA,KAAMH,EAAeG,KACrB7M,SAAU0M,EAAe1M,SAAW0M,EAAe1M,SAAS6K,QAAQ,KAAM,IAAM,GAChFkC,KAAML,EAAeK,KACrBC,OAAQN,EAAeM,OAASN,EAAeM,OAAOnC,QAAQ,MAAO,IAAM,GAC3EoC,KAAMP,EAAeO,KAAOP,EAAeO,KAAKpC,QAAQ,KAAM,IAAM,GACpEqC,SAAUR,EAAeQ,SACzBC,KAAMT,EAAeS,KACrBC,SAAiD,MAAtCV,EAAeU,SAASC,OAAO,GACxCX,EAAeU,SACf,IAAMV,EAAeU,SAE1B,CAUD,OARAd,EAAYM,EAAWU,OAAOC,SAASV,MAQhC,SAAyBW,GAC9B,IAAIC,EAAUnT,EAAMyP,SAASyD,GAAeZ,EAAWY,GAAcA,EACrE,OAAQC,EAAOzN,WAAasM,EAAUtM,UAClCyN,EAAOV,OAAST,EAAUS,IAC/B,CACF,CAlDA,GAsDQ,WACL,OAAO,CACR,qCC/DP,IAAIzS,EAAQC,EAAQ,MAEpBH,EAAOC,QAAU,SAA6BqB,EAASgS,GACrDpT,EAAM4E,QAAQxD,GAAS,SAAuB4B,EAAOyF,GAC/CA,IAAS2K,GAAkB3K,EAAKrF,gBAAkBgQ,EAAehQ,gBACnEhC,EAAQgS,GAAkBpQ,SACnB5B,EAAQqH,GAElB,GACF,oBCVD3I,EAAOC,QAAU,wCCCjB,IAAIC,EAAQC,EAAQ,MAIhBoT,EAAoB,CACtB,MAAO,gBAAiB,iBAAkB,eAAgB,OAC1D,UAAW,OAAQ,OAAQ,oBAAqB,sBAChD,gBAAiB,WAAY,eAAgB,sBAC7C,UAAW,cAAe,cAgB5BvT,EAAOC,QAAU,SAAsBqB,GACrC,IACIyD,EACAvF,EACAoI,EAHAyL,EAAS,CAAC,EAKd,OAAK/R,GAELpB,EAAM4E,QAAQxD,EAAQ3F,MAAM,OAAO,SAAgB6X,GAKjD,GAJA5L,EAAI4L,EAAK3P,QAAQ,KACjBkB,EAAM7E,EAAM4P,KAAK0D,EAAKC,OAAO,EAAG7L,IAAI5C,cACpCxF,EAAMU,EAAM4P,KAAK0D,EAAKC,OAAO7L,EAAI,IAE7B7C,EAAK,CACP,GAAIsO,EAAOtO,IAAQwO,EAAkB1P,QAAQkB,IAAQ,EACnD,OAGAsO,EAAOtO,GADG,eAARA,GACasO,EAAOtO,GAAOsO,EAAOtO,GAAO,IAAI1J,OAAO,CAACmE,IAEzC6T,EAAOtO,GAAOsO,EAAOtO,GAAO,KAAOvF,EAAMA,CAE1D,CACF,IAEM6T,GAnBgBA,CAoBxB,iCClDDrT,EAAOC,QAAU,SAAuByC,GACtC,IAAIiP,EAAQ,4BAA4B+B,KAAKhR,GAC7C,OAAOiP,GAASA,EAAM,IAAM,EAC7B,iCCiBD3R,EAAOC,QAAU,SAAgB0T,GAC/B,OAAO,SAAcC,GACnB,OAAOD,EAASvJ,MAAM,KAAMwJ,EAC7B,CACF,qCCxBD,IAAI1T,EAAQC,EAAQ,MAqEpBH,EAAOC,QA5DP,SAAoB4L,EAAKgI,GAEvBA,EAAWA,GAAY,IAAItE,SAE3B,IAAInE,EAAQ,GAEZ,SAAS0I,EAAa5Q,GACpB,OAAc,OAAVA,EAAuB,GAEvBhD,EAAM2Q,OAAO3N,GACRA,EAAM4N,cAGX5Q,EAAMuO,cAAcvL,IAAUhD,EAAM6T,aAAa7Q,GAC5B,oBAAT8Q,KAAsB,IAAIA,KAAK,CAAC9Q,IAAU+Q,OAAOxI,KAAKvI,GAG/DA,CACR,CAuCD,OArCA,SAASgR,EAAM9S,EAAM+S,GACnB,GAAIjU,EAAMkN,cAAchM,IAASlB,EAAMmN,QAAQjM,GAAO,CACpD,IAA6B,IAAzBgK,EAAMvH,QAAQzC,GAChB,MAAMhG,MAAM,kCAAoC+Y,GAGlD/I,EAAMhD,KAAKhH,GAEXlB,EAAM4E,QAAQ1D,GAAM,SAAc8B,EAAO6B,GACvC,IAAI7E,EAAMgF,YAAYhC,GAAtB,CACA,IACI0Q,EADAQ,EAAUD,EAAYA,EAAY,IAAMpP,EAAMA,EAGlD,GAAI7B,IAAUiR,GAA8B,kBAAVjR,EAChC,GAAIhD,EAAMmU,SAAStP,EAAK,MAEtB7B,EAAQ0M,KAAKI,UAAU9M,QAClB,GAAIhD,EAAMmU,SAAStP,EAAK,QAAU6O,EAAM1T,EAAMoU,QAAQpR,IAK3D,YAHA0Q,EAAI9O,SAAQ,SAASyP,IAClBrU,EAAMgF,YAAYqP,IAAOV,EAASW,OAAOJ,EAASN,EAAaS,GACjE,IAKLL,EAAMhR,EAAOkR,EAjBuB,CAkBrC,IAEDhJ,EAAMqJ,KACP,MACCZ,EAASW,OAAOL,EAAWL,EAAa1S,GAE3C,CAED8S,CAAMrI,GAECgI,CACR,qCCnED,IAAIhN,EAAU1G,EAAAA,MAAAA,QACVQ,EAAaR,EAAQ,MAErB8I,EAAa,CAAC,EAGlB,CAAC,SAAU,UAAW,SAAU,WAAY,SAAU,UAAUnE,SAAQ,SAASU,EAAMoC,GACrFqB,EAAWzD,GAAQ,SAAmBkP,GACpC,cAAcA,IAAUlP,GAAQ,KAAOoC,EAAI,EAAI,KAAO,KAAOpC,CAC9D,CACF,IAED,IAAImP,EAAqB,CAAC,EAS1B1L,EAAW5E,aAAe,SAAsB2E,EAAW4L,EAAS5M,GAClE,SAAS6M,EAAcC,EAAKC,GAC1B,MAAO,WAAalO,EAAU,0BAA6BiO,EAAM,IAAOC,GAAQ/M,EAAU,KAAOA,EAAU,GAC5G,CAGD,OAAO,SAAS9E,EAAO4R,EAAKE,GAC1B,IAAkB,IAAdhM,EACF,MAAM,IAAIrI,EACRkU,EAAcC,EAAK,qBAAuBF,EAAU,OAASA,EAAU,KACvEjU,EAAWsU,gBAef,OAXIL,IAAYD,EAAmBG,KACjCH,EAAmBG,IAAO,EAE1BI,QAAQC,KACNN,EACEC,EACA,+BAAiCF,EAAU,8CAK1C5L,GAAYA,EAAU9F,EAAO4R,EAAKE,EAC1C,CACF,EAgCDhV,EAAOC,QAAU,CACfoJ,cAxBF,SAAuB4C,EAASmJ,EAAQC,GACtC,GAAuB,kBAAZpJ,EACT,MAAM,IAAItL,EAAW,4BAA6BA,EAAW2U,sBAI/D,IAFA,IAAI1H,EAAOtC,OAAOsC,KAAK3B,GACnBrE,EAAIgG,EAAKhS,OACNgM,KAAM,GAAG,CACd,IAAIkN,EAAMlH,EAAKhG,GACXoB,EAAYoM,EAAON,GACvB,GAAI9L,EAAJ,CACE,IAAI9F,EAAQ+I,EAAQ6I,GAChBS,OAAmB3Q,IAAV1B,GAAuB8F,EAAU9F,EAAO4R,EAAK7I,GAC1D,IAAe,IAAXsJ,EACF,MAAM,IAAI5U,EAAW,UAAYmU,EAAM,YAAcS,EAAQ5U,EAAW2U,qBAG3E,MACD,IAAqB,IAAjBD,EACF,MAAM,IAAI1U,EAAW,kBAAoBmU,EAAKnU,EAAW6U,eAE5D,CACF,EAICvM,WAAYA,sCClFd,IAOuBwM,EAPnB1P,EAAO5F,EAAQ,MAIfoO,EAAWjD,OAAO/E,UAAUgI,SAG5BmH,GAAmBD,EAMpBnK,OAAO7E,OAAO,MAJR,SAASiO,GACd,IAAIiB,EAAMpH,EAAS9F,KAAKiM,GACxB,OAAOe,EAAME,KAASF,EAAME,GAAOA,EAAIjW,MAAM,GAAI,GAAGsF,cACrD,GAGH,SAAS4Q,EAAWpQ,GAElB,OADAA,EAAOA,EAAKR,cACL,SAAkB0P,GACvB,OAAOgB,EAAOhB,KAAWlP,CAC1B,CACF,CAQD,SAAS6H,EAAQ7N,GACf,OAAO2K,MAAMkD,QAAQ7N,EACtB,CAQD,SAAS0F,EAAY1F,GACnB,MAAsB,qBAARA,CACf,CAoBD,IAAIiP,EAAgBmH,EAAW,eA6C/B,SAASzG,EAAS3P,GAChB,OAAe,OAARA,GAA+B,kBAARA,CAC/B,CAQD,SAAS4N,EAAc5N,GACrB,GAAoB,WAAhBkW,EAAOlW,GACT,OAAO,EAGT,IAAI+G,EAAY+E,OAAOuK,eAAerW,GACtC,OAAqB,OAAd+G,GAAsBA,IAAc+E,OAAO/E,SACnD,CASD,IAAIsK,EAAS+E,EAAW,QASpBhH,EAASgH,EAAW,QASpB/G,EAAS+G,EAAW,QASpB3G,EAAa2G,EAAW,YAQ5B,SAASE,EAAWtW,GAClB,MAA8B,sBAAvB+O,EAAS9F,KAAKjJ,EACtB,CAiCD,IAAIwP,EAAoB4G,EAAW,mBAmDnC,SAAS9Q,EAAQ+G,EAAKO,GAEpB,GAAY,OAARP,GAA+B,qBAARA,EAU3B,GALmB,kBAARA,IAETA,EAAM,CAACA,IAGLwB,EAAQxB,GAEV,IAAK,IAAIjE,EAAI,EAAGC,EAAIgE,EAAIjQ,OAAQgM,EAAIC,EAAGD,IACrCwE,EAAG3D,KAAK,KAAMoD,EAAIjE,GAAIA,EAAGiE,QAI3B,IAAK,IAAI9G,KAAO8G,EACVP,OAAO/E,UAAUwP,eAAetN,KAAKoD,EAAK9G,IAC5CqH,EAAG3D,KAAK,KAAMoD,EAAI9G,GAAMA,EAAK8G,EAIpC,CAwJD,IAA6BmK,EAAzBjC,GAAyBiC,EAKJ,qBAAfC,YAA8B3K,OAAOuK,eAAeI,YAHrD,SAASvB,GACd,OAAOsB,GAActB,aAAiBsB,CACvC,GAGHhW,EAAOC,QAAU,CACfoN,QAASA,EACToB,cAAeA,EACfC,SAvYF,SAAkBlP,GAChB,OAAe,OAARA,IAAiB0F,EAAY1F,IAA4B,OAApBA,EAAI0W,cAAyBhR,EAAY1F,EAAI0W,cAChD,oBAA7B1W,EAAI0W,YAAYxH,UAA2BlP,EAAI0W,YAAYxH,SAASlP,EACjF,EAqYCqC,WA9PF,SAAoB6S,GAClB,IAAIyB,EAAU,oBACd,OAAOzB,IACgB,oBAAbnF,UAA2BmF,aAAiBnF,UACpDhB,EAAS9F,KAAKiM,KAAWyB,GACxBL,EAAWpB,EAAMnG,WAAamG,EAAMnG,aAAe4H,EAEvD,EAwPCrH,kBApXF,SAA2BtP,GAOzB,MAL4B,qBAAhB4W,aAAiCA,YAAYC,OAC9CD,YAAYC,OAAO7W,GAElBA,GAASA,EAAIuP,QAAYN,EAAcjP,EAAIuP,OAGxD,EA6WCY,SArWF,SAAkBnQ,GAChB,MAAsB,kBAARA,CACf,EAoWCgS,SA5VF,SAAkBhS,GAChB,MAAsB,kBAARA,CACf,EA2VC2P,SAAUA,EACV/B,cAAeA,EACflI,YAAaA,EACb2L,OAAQA,EACRjC,OAAQA,EACRC,OAAQA,EACRiH,WAAYA,EACZnH,SAnRF,SAAkBnP,GAChB,OAAO2P,EAAS3P,IAAQsW,EAAWtW,EAAI8W,KACxC,EAkRCtH,kBAAmBA,EACnBlN,qBAjOF,WACE,OAAyB,qBAAdsQ,WAAoD,gBAAtBA,UAAUmE,SACY,iBAAtBnE,UAAUmE,SACY,OAAtBnE,UAAUmE,WAI/B,qBAAXrD,QACa,qBAAbxB,SAEV,EAwNC5M,QAASA,EACT8H,MA/JF,SAASA,IACP,IAAI2I,EAAS,CAAC,EACd,SAASiB,EAAYhX,EAAKuF,GACpBqI,EAAcmI,EAAOxQ,KAASqI,EAAc5N,GAC9C+V,EAAOxQ,GAAO6H,EAAM2I,EAAOxQ,GAAMvF,GACxB4N,EAAc5N,GACvB+V,EAAOxQ,GAAO6H,EAAM,CAAC,EAAGpN,GACf6N,EAAQ7N,GACjB+V,EAAOxQ,GAAOvF,EAAIE,QAElB6V,EAAOxQ,GAAOvF,CAEjB,CAED,IAAK,IAAIoI,EAAI,EAAGC,EAAI0I,UAAU3U,OAAQgM,EAAIC,EAAGD,IAC3C9C,EAAQyL,UAAU3I,GAAI4O,GAExB,OAAOjB,CACR,EA8IC/O,OApIF,SAAgBiQ,EAAGC,EAAGrG,GAQpB,OAPAvL,EAAQ4R,GAAG,SAAqBlX,EAAKuF,GAEjC0R,EAAE1R,GADAsL,GAA0B,oBAAR7Q,EACXuG,EAAKvG,EAAK6Q,GAEV7Q,CAEZ,IACMiX,CACR,EA4HC3G,KAxPF,SAAc6F,GACZ,OAAOA,EAAI7F,KAAO6F,EAAI7F,OAAS6F,EAAIlF,QAAQ,aAAc,GAC1D,EAuPCkG,SArHF,SAAkBC,GAIhB,OAH8B,QAA1BA,EAAQC,WAAW,KACrBD,EAAUA,EAAQlX,MAAM,IAEnBkX,CACR,EAiHChO,SAvGF,SAAkBsN,EAAaY,EAAkBC,EAAO1L,GACtD6K,EAAY3P,UAAY+E,OAAO7E,OAAOqQ,EAAiBvQ,UAAW8E,GAClE6K,EAAY3P,UAAU2P,YAAcA,EACpCa,GAASzL,OAAOQ,OAAOoK,EAAY3P,UAAWwQ,EAC/C,EAoGCnL,aA1FF,SAAsBoL,EAAWC,EAASC,GACxC,IAAIH,EACAnP,EACA2F,EACA4J,EAAS,CAAC,EAEdF,EAAUA,GAAW,CAAC,EAEtB,EAAG,CAGD,IADArP,GADAmP,EAAQzL,OAAO8L,oBAAoBJ,IACzBpb,OACHgM,KAAM,GAENuP,EADL5J,EAAOwJ,EAAMnP,MAEXqP,EAAQ1J,GAAQyJ,EAAUzJ,GAC1B4J,EAAO5J,IAAQ,GAGnByJ,EAAY1L,OAAOuK,eAAemB,EACnC,OAAQA,KAAeE,GAAUA,EAAOF,EAAWC,KAAaD,IAAc1L,OAAO/E,WAEtF,OAAO0Q,CACR,EAqECvB,OAAQA,EACRE,WAAYA,EACZvB,SA9DF,SAAkBsB,EAAK0B,EAAcC,GACnC3B,EAAM4B,OAAO5B,SACI/Q,IAAb0S,GAA0BA,EAAW3B,EAAI/Z,UAC3C0b,EAAW3B,EAAI/Z,QAEjB0b,GAAYD,EAAazb,OACzB,IAAI4b,EAAY7B,EAAI9R,QAAQwT,EAAcC,GAC1C,OAAsB,IAAfE,GAAoBA,IAAcF,CAC1C,EAuDChD,QA/CF,SAAiBI,GACf,IAAKA,EAAO,OAAO,KACnB,IAAI9M,EAAI8M,EAAM9Y,OACd,GAAIsJ,EAAY0C,GAAI,OAAO,KAE3B,IADA,IAAIgM,EAAM,IAAIzJ,MAAMvC,GACbA,KAAM,GACXgM,EAAIhM,GAAK8M,EAAM9M,GAEjB,OAAOgM,CACR,EAuCCG,aAAcA,EACd9E,WAAYA,uBCpdd,OAOC,WACA,aAEA,IAAIwI,EAAS,CAAC,EAAE1B,eAGhB,SAAS2B,IAGR,IAFA,IAAIC,EAAU,GAEL/P,EAAI,EAAGA,EAAI2I,UAAU3U,OAAQgM,IAAK,CAC1C,IAAIgQ,EAAMrH,UAAU3I,GACpB,GAAKgQ,EAAL,CAEA,IAAIC,SAAiBD,EAErB,GAAgB,WAAZC,GAAoC,WAAZA,EAC3BF,EAAQvP,KAAKwP,QACP,GAAIzN,MAAMkD,QAAQuK,IACxB,GAAIA,EAAIhc,OAAQ,CACf,IAAIkc,EAAQJ,EAAWtN,MAAM,KAAMwN,GAC/BE,GACHH,EAAQvP,KAAK0P,EAEd,OACK,GAAgB,WAAZD,EAAsB,CAChC,GAAID,EAAIrJ,WAAajD,OAAO/E,UAAUgI,WAAaqJ,EAAIrJ,SAASA,WAAWwJ,SAAS,iBAAkB,CACrGJ,EAAQvP,KAAKwP,EAAIrJ,YACjB,QACA,CAED,IAAK,IAAIxJ,KAAO6S,EACXH,EAAOhP,KAAKmP,EAAK7S,IAAQ6S,EAAI7S,IAChC4S,EAAQvP,KAAKrD,EAGf,CAxBiB,CAyBlB,CAED,OAAO4S,EAAQ5G,KAAK,IACpB,CAEoC/Q,EAAOC,SAC3CyX,EAAWM,QAAUN,EACrB1X,EAAOC,QAAUyX,QAGX,kBACL,OAAOA,CADF,UAAe,OAAf,YA9CP,uCCPD,SAASO,EAAElI,GAAG,IAAImI,EAAEC,EAAEC,EAAE,GAAG,GAAG,iBAAiBrI,GAAG,iBAAiBA,EAAEqI,GAAGrI,OAAO,GAAG,iBAAiBA,EAAE,GAAG5F,MAAMkD,QAAQ0C,GAAG,IAAImI,EAAE,EAAEA,EAAEnI,EAAEnU,OAAOsc,IAAInI,EAAEmI,KAAKC,EAAEF,EAAElI,EAAEmI,OAAOE,IAAIA,GAAG,KAAKA,GAAGD,QAAQ,IAAID,KAAKnI,EAAEA,EAAEmI,KAAKE,IAAIA,GAAG,KAAKA,GAAGF,GAAG,OAAOE,CAAE,CAAO,SAASC,IAAO,IAAI,IAAItI,EAAEmI,EAAEC,EAAE,EAAEC,EAAE,GAAGD,EAAE5H,UAAU3U,SAASmU,EAAEQ,UAAU4H,QAAQD,EAAED,EAAElI,MAAMqI,IAAIA,GAAG,KAAKA,GAAGF,GAAG,OAAOE,CAAE,sFCMlWpY,EAAOC,QAAU,SAASqY,EAAM7B,EAAGC,GACjC,GAAID,IAAMC,EAAG,OAAO,EAEpB,GAAID,GAAKC,GAAiB,iBAALD,GAA6B,iBAALC,EAAe,CAC1D,GAAID,EAAEP,cAAgBQ,EAAER,YAAa,OAAO,EAE5C,IAAIta,EAAQgM,EAAGgG,EACf,GAAIzD,MAAMkD,QAAQoJ,GAAI,CAEpB,IADA7a,EAAS6a,EAAE7a,SACG8a,EAAE9a,OAAQ,OAAO,EAC/B,IAAKgM,EAAIhM,EAAgB,IAARgM,KACf,IAAK0Q,EAAM7B,EAAE7O,GAAI8O,EAAE9O,IAAK,OAAO,EACjC,OAAO,CACR,CAID,GAAI6O,EAAEP,cAAgBtE,OAAQ,OAAO6E,EAAElO,SAAWmO,EAAEnO,QAAUkO,EAAE8B,QAAU7B,EAAE6B,MAC5E,GAAI9B,EAAE+B,UAAYlN,OAAO/E,UAAUiS,QAAS,OAAO/B,EAAE+B,YAAc9B,EAAE8B,UACrE,GAAI/B,EAAElI,WAAajD,OAAO/E,UAAUgI,SAAU,OAAOkI,EAAElI,aAAemI,EAAEnI,WAIxE,IADA3S,GADAgS,EAAOtC,OAAOsC,KAAK6I,IACL7a,UACC0P,OAAOsC,KAAK8I,GAAG9a,OAAQ,OAAO,EAE7C,IAAKgM,EAAIhM,EAAgB,IAARgM,KACf,IAAK0D,OAAO/E,UAAUwP,eAAetN,KAAKiO,EAAG9I,EAAKhG,IAAK,OAAO,EAEhE,IAAKA,EAAIhM,EAAgB,IAARgM,KAAY,CAC3B,IAAI7C,EAAM6I,EAAKhG,GAEf,IAAK0Q,EAAM7B,EAAE1R,GAAM2R,EAAE3R,IAAO,OAAO,CACpC,CAED,OAAO,CACR,CAGD,OAAO0R,IAAIA,GAAKC,IAAIA,CACrB,mBCnCM1W,EAAOC,QAKL,WACP,aAEA,IAAIwY,EAAgB,WAElBC,KAAKC,UAAY,SAAS5I,GACxB6I,EAAQ7I,EAAE3O,KAAK4G,SAAS,SAASlF,GAC/B4V,KAAKG,YAAY,CAAE1M,GAAI4D,EAAE3O,KAAK+K,GAAInE,QAASlF,GAC5C,GACF,EAGD,IAAI8V,EAAU,SAAiB3M,EAAS6M,GACtC,IAAIC,EAAO9M,EAAQ8M,KAEfC,EAAS,IAAIC,WACjBD,EAAOrW,UAAY,WACjBmW,EAAGE,EAAOzD,OAAO9E,QAAQ,QAAS,IAAIA,QAAQ,OAAQ,IACvD,EACDuI,EAAOE,cAAcH,EACtB,CACF,EAEGI,EAAS,SAAgBC,GAC3B,IAAIC,EAAYD,EAAKC,UACnBnZ,EAAQkZ,EAAKlZ,MAGXoZ,EAAOpZ,EAAMoZ,KACfC,EAAerZ,EAAMqZ,aACrBC,EAActZ,EAAMsZ,YACpB5K,EAAS1O,EAAM0O,OAEb4B,EAAS,SAAgBiJ,GAC3B,IAAI9Q,EAAO8Q,EAAM9Q,KACfoQ,EAAOU,EAAMV,KACf,OAAO,IAAIhY,SAAQ,SAASC,GAC1B,IAAI0Y,EAASH,EAAad,GAC1BiB,EAAOC,KAAK,CAAEZ,KAAMA,IAAQ,SAAS3X,GACnCJ,EAAQ,CAAE2H,KAAMA,EAAMvH,KAAMA,IAC5BsY,EAAOE,WACR,GACF,GACF,EAGGC,EAAc,GAqHlB,OApHAR,EAAU,mBAAmB,SAASS,EAAMC,IAGrCC,EAFOD,EAAMC,OAEP,2BAEXF,EAAKtT,OAAO,6BAA6B,WACvC,OAAOqT,EAAYC,EAAK3N,KAAO0N,EAAYC,EAAK3N,IAAI/K,IACrD,IACD0Y,EAAKtT,OAAO,wBAAwB,WAClC,MAAO,QACJnL,OAAOye,EAAKG,SAAU,YACtB5e,OAAOwe,EAAYC,EAAK3N,IAAI/K,KAChC,IACF,IAEDiY,EAAU,yBAAyB,SAASa,EAAqBC,GAC/D,IAAIH,EAAQG,EAAMH,MAClB,OAAO,IAAIjZ,SAAQ,SAASC,GAC1BA,EAAQgZ,EAAM,yBACf,GACF,IAEDX,EAAU,2BAA2B,SAASN,EAAMqB,GAClD,IAAIN,EAAOM,EAAMN,KACfE,EAAQI,EAAMJ,MAChB,OAAO,IAAIjZ,SAAQ,SAASC,GAE1B,IACGgZ,EAAM,2BACLpL,EAAOmK,KAAU5O,MAAMkD,QAAQ0L,GAEjC,OAAO/X,EAAQ+X,GAIjBc,EAAYC,EAAK3N,IAAM,CACrBkO,SAAUP,EAAKQ,cACflZ,KAAM,MAIRL,QAAQiG,KACL+R,aAAgB/E,KAAO,CAAC,CAAErL,KAAM,KAAMoQ,KAAMA,IAAUA,GAAMwB,IAC3D/J,IAEF9I,MAAK,SAAS8S,GACdX,EAAYC,EAAK3N,IAAI/K,KACnB2X,aAAgB/E,KAAOwG,EAAU,GAAGpZ,KAAOoZ,EAC7CxZ,EAAQ+X,EACT,GACF,GACF,IAGDM,EAAU,eAAe,SAASoB,GAEhC,IAAIC,EAAKD,EAAQC,GACfC,EAAOF,EAAQE,KACfX,EAAQS,EAAQT,MAGbU,EAAG,iBAAoBV,EAAM,0BAIlCW,EAAKC,eACHpB,EAAY,CACVqB,mBAAoB,SAA4BC,GAC9C,IAAIC,EAAOD,EAAMC,KACfC,EAASF,EAAME,OAGjB,IAAIhB,EAAM,YAAV,CAIA,IAAIF,EAAOE,EAAM,WAAYgB,EAAO7O,IACpC,GAAK2N,EAAL,CAGA,IAAIrE,EAAQoE,EAAYC,EAAK3N,IACzBkO,EAAW5E,EAAM4E,SACjBjZ,EAAOqU,EAAMrU,KAGb8B,EAAQ0M,KAAKI,UAAU,CACzB7D,GAAI2N,EAAK3N,GACTxD,KAAMmR,EAAKf,KAAKpQ,KAChBnD,KAAMsU,EAAKf,KAAKvT,KAChByV,KAAMnB,EAAKf,KAAKkC,KAChBZ,SAAUA,EACVjZ,KAAMA,IAIJ2Z,EAAKG,IAAI9Z,KACX2Z,EAAKG,IAAI9Z,KAAK8B,MAAQA,EAItB6X,EAAKI,SAAS,mBAAoB,CAChChP,GAAI2N,EAAK3N,GACTjJ,MAAOA,GAzBM,CAHhB,CA+BF,EACDkY,gBAAiB,SAAyBC,GACxC,IAAIL,EAASK,EAAML,OACflB,EAAOE,EAAM,WAAYgB,EAAO7O,IAC/B2N,UACED,EAAYC,EAAK3N,GACzB,IAGN,IAEM,CACLF,QAAS,CAEPqP,gBAAiB,EAAC,EAAMhC,EAAKiC,UAGlC,EAWD,MAPoB,qBAAXrI,QAAqD,qBAApBA,OAAOxB,UAE/CA,SAAS8J,cACP,IAAIC,YAAY,wBAAyB,CAAEC,OAAQvC,KAIhDA,CACR,CA1LuBwC,qBCAjB3b,EAAOC,QAKL,WACP,aAEA,IAAIkZ,EAAS,SAAgBC,GAC3B,IAAIC,EAAYD,EAAKC,UACnBnZ,EAAQkZ,EAAKlZ,MAEXoZ,EAAOpZ,EAAMoZ,KACf3J,EAAWzP,EAAMyP,SACjBiM,EAAkB1b,EAAM0b,gBACxBC,EAAsB3b,EAAM2b,oBAC5BC,EAA2B5b,EAAM4b,yBACjCC,EAAqB7b,EAAM6b,mBAEzBC,EAA0B,SAC5BC,EACAC,GAIA,OAFqB,SAASxI,KAAKuI,IAAa,IAAIxH,QAChCyH,EAASxc,MAAM,GAAI,EAExC,EAEGyc,EAAkB,SACpBC,EACAC,GAEA,OAAOD,EAAcE,MAAK,SAASC,GAEjC,MAAI,MAAMvK,KAAKuK,GACNP,EAAwBK,EAAeE,GAIzCA,IAAiBF,CACzB,GACF,EAEGG,EAAc,SAAqB1C,GAErC,IAAItU,EAAO,GACX,GAAImK,EAASmK,GAAO,CAClB,IAAI2C,EAAWV,EAAmBjC,GAC9B4C,EAAYZ,EAAyBW,GACrCC,IACFlX,EAAOqW,EAAoBa,GAE9B,MACClX,EAAOsU,EAAKtU,KAGd,OAAOA,CACR,EAEGmX,EAAe,SACjB7C,EACA8C,EACAC,GAGA,GAAiC,IAA7BD,EAAkBhhB,OACpB,OAAO,EAIT,IAAI4J,EAAOgX,EAAY1C,GAGvB,OAAK+C,EAKE,IAAI9b,SAAQ,SAASC,EAASC,GACnC4b,EAAa/C,EAAMtU,GAChBkC,MAAK,SAASoV,GACTX,EAAgBS,EAAmBE,GACrC9b,IAEAC,GAEH,IACA8b,MAAM9b,EACV,IAdQkb,EAAgBS,EAAmBpX,EAe7C,EAEGwX,EAAmB,SAA0BzC,GAC/C,OAAO,SAAS0C,GACd,OAAiC,OAA1B1C,EAAI0C,KAEP1C,EAAI0C,IAAqBA,EAC9B,CACF,EAmGD,OAhGA5D,EAAU,+BAA+B,SAASkB,GAChD,OAAOjP,OAAOQ,OAAOyO,EAAK,CACxB2C,OAAQ,qBAEX,IAGD7D,EAAU,qBAAqB,SAASN,EAAMU,GAC5C,IAAIO,EAAQP,EAAMO,MAElB,OAAKA,EAAM,mCAKJ2C,EAAa5D,EAAMiB,EAAM,2BACjC,IAKDX,EAAU,aAAa,SAASN,EAAMgB,GACpC,IAAIC,EAAQD,EAAMC,MAClB,OAAO,IAAIjZ,SAAQ,SAASC,EAASC,GACnC,GAAK+Y,EAAM,kCAAX,CAKA,IAAI4C,EAAoB5C,EAAM,2BAG1B6C,EAAe7C,EAAM,sCAGrBmD,EAAmBR,EACrB5D,EACA6D,EACAC,GAGEO,EAAkB,WACpB,IAAIC,EAA0BT,EAC3BrC,IACCyC,EACEhD,EAAM,qDAGT9C,QAAO,SAASoG,GACf,OAAiB,IAAVA,CACR,IAECC,EAAiCF,EAAwBnG,QAC3D,SAAS4C,EAAMzR,GACb,OAAOgV,EAAwBxZ,QAAQiW,KAAUzR,CAClD,IAGHpH,EAAO,CACL+B,OAAQ,CACNwa,KAAMxD,EAAM,mCACZyD,IAAK7B,EACH5B,EAAM,+CACN,CACE0D,SAAUH,EAA+BxM,KAAK,MAC9C4M,eAAgBJ,EACb7d,MAAM,GAAI,GACVqR,KAAK,MACR6M,SACEL,EACEF,EAAwBzhB,OAAS,OAM9C,EAGD,GAAgC,mBAArBuhB,EACT,OAAKA,EAGEnc,EAAQ+X,GAFNqE,IAMXD,EACGzV,MAAK,WACJ1G,EAAQ+X,EACT,IACAgE,MAAMK,EAhER,MAFCpc,EAAQ+X,EAmEX,GACF,IAGM,CAEL9M,QAAS,CAEP4R,wBAAyB,EAAC,EAAMvE,EAAKiC,SAGrCqB,kBAAmB,CAAC,GAAItD,EAAKwE,OAO7BC,wBAAyB,CAAC,0BAA2BzE,EAAK0E,QAG1DC,mCAAoC,CAClC,yCACA3E,EAAK0E,QAIPE,sCAAuC,CAAC,CAAC,EAAG5E,EAAK6E,QAGjDC,2BAA4B,CAAC,KAAM9E,EAAK+E,WAG7C,EAWD,MAPoB,qBAAXnL,QAAqD,qBAApBA,OAAOxB,UAE/CA,SAAS8J,cACP,IAAIC,YAAY,wBAAyB,CAAEC,OAAQvC,KAIhDA,CACR,CA7OuBwC,wBCIf,SAAS1b,GACd,aAEA,IAAIqe,EAAS,SAAgBpb,GACzB,OAAOA,aAAiBqb,WAC3B,EAEGC,EAAc,SAAqBC,GACnC,IAAIC,EAAUnO,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,GAAmBA,UAAU,GAAK,GAC9EoO,EAAUpO,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,GAAmBA,UAAU,GAAK,GAE9EqO,EAAQtT,OAAOQ,OAAO,CAAC,EAAG2S,GAG1BI,EAAc,GACdC,EAAgB,GAmBhBC,EAAuB,WAEvB,IAAIC,EAAQ,GAAG3jB,OAAOyjB,GAGtBA,EAAcljB,OAAS,EAGvBojB,EAAMla,SAAQ,SAASsU,GACnB,IAAI5T,EAAO4T,EAAK5T,KACZpE,EAAOgY,EAAKhY,KAChB+Z,EAAS3V,EAAMpE,EAClB,GACJ,EAGG+Z,EAAW,SAAkB3V,EAAMpE,EAAM6d,IAErCA,GAAevN,SAASwN,QAMxBC,EAAe3Z,IACf2Z,EAAe3Z,GAAMpE,GAIzByd,EAAYzW,KAAK,CACb5C,KAAMA,EACNpE,KAAMA,KAZN0d,EAAc1W,KAAK,CAAE5C,KAAMA,EAAMpE,KAAMA,GAc9C,EAEG4Y,EAAQ,SAAerE,GAEvB,IADA,IAAIyJ,EAEIC,EAAO9O,UAAU3U,OAAQ0U,EAAO,IAAInG,MAAMkV,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAC/EA,EAAOD,EACPC,IAEAhP,EAAKgP,EAAO,GAAK/O,UAAU+O,GAE/B,OAAOC,EAAa5J,IACbyJ,EAAgBG,GAAc5J,GAAKvL,MAAMgV,EAAe9O,GACzD,IACT,EAEGkP,EAAM,CACNC,SAlEW,WACX,OAAOnU,OAAOQ,OAAO,CAAC,EAAG8S,EAC5B,EAiEGc,mBA9DqB,WAErB,IAAIV,EAAQ,GAAG3jB,OAAOwjB,GAKtB,OAFAA,EAAYjjB,OAAS,EAEdojB,CACV,EAuDGD,qBAAsBA,EACtB5D,SAAUA,EACVnB,MAAOA,GAGPuF,EAAe,CAAC,EACpBb,EAAQ5Z,SAAQ,SAASkV,GACrBuF,EAAejU,OAAOQ,OAAO,CAAC,EAAGkO,EAAM4E,GAAQ,CAAC,EAAGW,EACtD,IAED,IAAIJ,EAAiB,CAAC,EAKtB,OAJAR,EAAQ7Z,SAAQ,SAASkW,GACrBmE,EAAiB7T,OAAOQ,OAAO,CAAC,EAAGkP,EAAOG,EAAUnB,EAAO4E,GAAQ,CAAC,EAAGO,EAC1E,IAEMK,CACV,EAEGhU,EAAiB,SAAwBK,EAAK8T,EAAUC,GAC9B,oBAAfA,EAIXtU,OAAOE,eAAeK,EAAK8T,EAAUrU,OAAOQ,OAAO,CAAC,EAAG8T,IAHnD/T,EAAI8T,GAAYC,CAIvB,EAEGC,EAAQ,SAAehU,EAAKiN,GAC5B,IAAK,IAAI/T,KAAO8G,EACPA,EAAIkK,eAAehR,IAIxB+T,EAAG/T,EAAK8G,EAAI9G,GAEnB,EAEG+a,EAAe,SAAsBF,GACrC,IAAI/T,EAAM,CAAC,EAIX,OAHAgU,EAAMD,GAAY,SAASD,GACvBnU,EAAeK,EAAK8T,EAAUC,EAAWD,GAC5C,IACM9T,CACV,EAEGkU,EAAO,SAAcC,EAAMrX,GAC3B,IAAIzF,EAAQqN,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,GAAmBA,UAAU,GAAK,KAChF,GAAc,OAAVrN,EACA,OAAO8c,EAAKC,aAAatX,IAASqX,EAAKE,aAAavX,GAExDqX,EAAKtN,aAAa/J,EAAMzF,EAC3B,EAEGid,EAAK,6BACLC,EAAc,CAAC,MAAO,QAEtBC,EAAe,SAAsBC,GACrC,OAAOF,EAAYrI,SAASuI,EAC/B,EAEG/N,EAAgB,SAAuB+N,EAAKC,GAC5C,IAAIC,EAAajQ,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC7D,kBAAdgQ,IACPC,EAAaD,EACbA,EAAY,MAEhB,IAAIE,EAAUJ,EAAaC,GACrB5O,SAASgP,gBAAgBP,EAAIG,GAC7B5O,SAASa,cAAc+N,GAW7B,OAVIC,IACIF,EAAaC,GACbP,EAAKU,EAAS,QAASF,GAEvBE,EAAQF,UAAYA,GAG5BV,EAAMW,GAAY,SAAS7X,EAAMzF,GAC7B6c,EAAKU,EAAS9X,EAAMzF,EACvB,IACMud,CACV,EAEGE,EAAc,SAAqBC,GACnC,OAAO,SAASC,EAAOxY,GACE,qBAAVA,GAAyBuY,EAAOE,SAASzY,GAChDuY,EAAOG,aAAaF,EAAOD,EAAOE,SAASzY,IAE3CuY,EAAOD,YAAYE,EAE1B,CACJ,EAEGG,EAAkB,SAAyBJ,EAAQK,GACnD,OAAO,SAAStG,EAAMtS,GAOlB,MANqB,qBAAVA,EACP4Y,EAAW3Y,OAAOD,EAAO,EAAGsS,GAE5BsG,EAAW7Y,KAAKuS,GAGbA,CACV,CACJ,EAEGuG,EAAkB,SAAyBN,EAAQK,GACnD,OAAO,SAAStG,GASZ,OAPAsG,EAAW3Y,OAAO2Y,EAAWpd,QAAQ8W,GAAO,GAGxCA,EAAK8F,QAAQU,YACbP,EAAOQ,YAAYzG,EAAK8F,SAGrB9F,CACV,CACJ,EAEG0G,EACyB,qBAAXnO,QAAqD,qBAApBA,OAAOxB,SAEtD4P,EAAY,WACZ,OAAOD,CACV,EAGGE,EACA,aAFcD,IAAc/O,EAAc,OAAS,CAAC,GAG9C,SAASgC,GACL,OAAOA,EAAGuM,SAASllB,MACtB,EACD,SAAS2Y,GACL,OAAOA,EAAGiN,WAAW5lB,MACxB,EAEP6lB,EAAc,SAAqBC,EAAaT,EAAY3mB,EAAQqnB,GACpE,IAAIC,EAAOtnB,EAAO,IAAMonB,EAAYE,KAChCC,EAAMvnB,EAAO,IAAMonB,EAAYG,IAC/BC,EAAQF,EAAOF,EAAYK,MAC3BC,EAASH,EAAMH,EAAYO,QAAUN,EAAM,IAAM,GAEjDO,EAAO,CAEPzB,QAASnV,OAAOQ,OAAO,CAAC,EAAG4V,GAG3B5J,MAAO,CACH8J,KAAMF,EAAYE,KAClBC,IAAKH,EAAYG,IACjBC,MAAOJ,EAAYI,MACnBE,OAAQN,EAAYM,QAKxBG,MAAO,CACHP,KAAMA,EACNC,IAAKA,EACLC,MAAOA,EACPE,OAAQA,IA2BhB,OAtBAf,EACK/J,QAAO,SAASkL,GACb,OAAQA,EAAUC,eACrB,IACA9H,KAAI,SAAS6H,GACV,OAAOA,EAAUF,IACpB,IACApd,SAAQ,SAASwd,GACdC,EAAWL,EAAKpK,MAAOxM,OAAOQ,OAAO,CAAC,EAAGwW,EAAcxK,QACvDyK,EAAWL,EAAKC,MAAO7W,OAAOQ,OAAO,CAAC,EAAGwW,EAAcH,OAC1D,IAGLK,EAAkBN,EAAKpK,OAGvBoK,EAAKC,MAAMH,QAAUE,EAAKzB,QAAQgC,aAClCP,EAAKC,MAAML,OAASI,EAAKzB,QAAQiC,YAGjCF,EAAkBN,EAAKC,OAEhBD,CACV,EAEGK,EAAa,SAAoB3B,EAAQC,GAEzCA,EAAMgB,KAAOjB,EAAOiB,IACpBhB,EAAMiB,OAASlB,EAAOgB,KACtBf,EAAMmB,QAAUpB,EAAOiB,IACvBhB,EAAMe,MAAQhB,EAAOgB,KAEjBf,EAAMmB,OAASpB,EAAOoB,SACtBpB,EAAOoB,OAASnB,EAAMmB,QAGtBnB,EAAMiB,MAAQlB,EAAOkB,QACrBlB,EAAOkB,MAAQjB,EAAMiB,MAE5B,EAEGU,EAAoB,SAA2BN,GAC/CA,EAAKH,MAAQG,EAAKJ,MAAQI,EAAKN,KAC/BM,EAAKD,OAASC,EAAKF,OAASE,EAAKL,GACpC,EAEGrQ,EAAW,SAAkBtO,GAC7B,MAAwB,kBAAVA,CACjB,EAUGyf,EAAW,SAAkBrL,EAAUsL,EAAaC,GACpD,IAAIC,EAAcvS,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,GAAmBA,UAAU,GAAK,KACtF,OAAOvC,KAAK+U,IAAIzL,EAAWsL,GAAeE,GAAe9U,KAAK+U,IAAIF,GAAYC,CACjF,EAKGE,EAEA,WAEI,IAAI5J,EAAO7I,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC5E0S,EAAiB7J,EAAK8J,UACtBA,OAA+B,IAAnBD,EAA4B,GAAMA,EAC9CE,EAAe/J,EAAKgK,QACpBA,OAA2B,IAAjBD,EAA0B,IAAOA,EAC3CE,EAAYjK,EAAKkK,KACjBA,OAAqB,IAAdD,EAAuB,GAAKA,EACnClW,EAAS,KACTmK,EAAW,KACXuL,EAAW,EACXU,GAAU,EA6EV/D,EAAMM,EAAa,CACnB0D,YA3Ec,SAAqBC,EAAIC,GAEvC,IAAIH,EAAJ,CAGA,IAAM/R,EAASrE,KAAWqE,EAAS8F,GAG/B,OAFAiM,GAAU,OACVV,EAAW,GAiBXF,EANJrL,GAHAuL,KAHUvL,EAAWnK,GAAU+V,EAGfI,EASOnW,EAHvB0V,GAAYO,IAGgCM,GACxCpM,EAAWnK,EACX0V,EAAW,EACXU,GAAU,EAGV/D,EAAImE,SAASrM,GACbkI,EAAIoE,WAAWtM,IAGfkI,EAAImE,SAASrM,EAhCE,CAkCtB,EAwCGnK,OAAQ,CACJ0W,IAnCQ,SAAmB3gB,GAgB/B,GAdIsO,EAAStO,KAAWsO,EAAS8F,KAC7BA,EAAWpU,GAIA,OAAXiK,IACAA,EAASjK,EACToU,EAAWpU,GAOXoU,KAHJnK,EAASjK,IAGoC,qBAAXiK,EAS9B,OAPAoW,GAAU,EACVV,EAAW,EAGXrD,EAAImE,SAASrM,QACbkI,EAAIoE,WAAWtM,GAKnBiM,GAAU,CACb,EAOOO,IAAK,WACD,OAAO3W,CACV,GAGLoW,QAAS,CACLO,IAAK,WACD,OAAOP,CACV,GAGLI,SAAU,SAAkBzgB,GAAS,EACrC0gB,WAAY,SAAoB1gB,GAAS,IAG7C,OAAOsc,CACV,EAKDuE,EAAgB,SAAuB7L,GACvC,OAAOA,EAAI,GAAM,EAAIA,EAAIA,GAAU,EAAI,EAAIA,GAAKA,EAAlB,CACjC,EAEG8L,EAEA,WAEI,IAQI9L,EACA+L,EATA7K,EAAO7I,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC5E2T,EAAgB9K,EAAK+K,SACrBA,OAA6B,IAAlBD,EAA2B,IAAMA,EAC5CE,EAAchL,EAAKiL,OACnBA,OAAyB,IAAhBD,EAAyBL,EAAgBK,EAClDE,EAAalL,EAAKmL,MAClBA,OAAuB,IAAfD,EAAwB,EAAIA,EACpCE,EAAQ,KAGRjB,GAAU,EACVkB,GAAU,EACVtX,EAAS,KA0BTqS,EAAMM,EAAa,CACnB0D,YAzBc,SAAqBC,EAAIC,GACnCH,GAAsB,OAAXpW,IAED,OAAVqX,IACAA,EAAQf,GAGRA,EAAKe,EAAQD,KAEjBrM,EAAIuL,EAAKe,EAAQD,IAERJ,GAAYT,GACjBxL,EAAI,EACJ+L,EAAIQ,EAAU,EAAI,EAClBjF,EAAImE,SAASM,EAAI9W,GACjBqS,EAAIoE,WAAWK,EAAI9W,GACnBoW,GAAU,IAEVU,EAAI/L,EAAIiM,EACR3E,EAAImE,UAAUzL,GAAK,EAAImM,EAAOI,EAAU,EAAIR,EAAIA,GAAK,GAAK9W,KAEjE,EAKGA,OAAQ,CACJ2W,IAAK,WACD,OAAOW,EAAU,EAAItX,CACxB,EACD0W,IAAK,SAAa3gB,GAEd,GAAe,OAAXiK,EAIA,OAHAA,EAASjK,EACTsc,EAAImE,SAASzgB,QACbsc,EAAIoE,WAAW1gB,GAKfA,EAAQiK,GACRA,EAAS,EACTsX,GAAU,IAGVA,GAAU,EACVtX,EAASjK,GAIbqgB,GAAU,EACViB,EAAQ,IACX,GAGLjB,QAAS,CACLO,IAAK,WACD,OAAOP,CACV,GAGLI,SAAU,SAAkBzgB,GAAS,EACrC0gB,WAAY,SAAoB1gB,GAAS,IAG7C,OAAOsc,CACV,EAEDkF,EAAW,CACX1B,OAAQA,EACRgB,MAAOA,GAQPW,EAAiB,SAAwB/E,EAAYgF,EAAUjF,GAG/D,IAAIkF,EACAjF,EAAWgF,IAAuD,kBAAnChF,EAAWgF,GAAUjF,GAC9CC,EAAWgF,GAAUjF,GACrBC,EAAWgF,IAAahF,EAE9Bpa,EAAsB,kBAARqf,EAAmBA,EAAMA,EAAIrf,KAC3CuR,EAAuB,kBAAR8N,EAAmBvZ,OAAOQ,OAAO,CAAC,EAAG+Y,GAAO,CAAC,EAEhE,OAAOH,EAASlf,GAAQkf,EAASlf,GAAMuR,GAAS,IACnD,EAEG+N,EAAY,SAAmBlX,EAAM/B,EAAKkL,GAC1C,IAAIgO,EAAYxU,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,IAAmBA,UAAU,IAC/E1E,EAAM1B,MAAMkD,QAAQxB,GAAOA,EAAM,CAACA,IAC9B/G,SAAQ,SAASkgB,GACjBpX,EAAK9I,SAAQ,SAASC,GAClB,IAAI4D,EAAO5D,EACPkgB,EAAS,WACT,OAAOlO,EAAMhS,EAChB,EACGmgB,EAAS,SAAgBhiB,GACzB,OAAQ6T,EAAMhS,GAAO7B,CACxB,EAEkB,kBAAR6B,IACP4D,EAAO5D,EAAIA,IACXkgB,EAASlgB,EAAIkgB,QAAUA,EACvBC,EAASngB,EAAImgB,QAAUA,GAGvBF,EAAErc,KAAUoc,IAIhBC,EAAErc,GAAQ,CACNmb,IAAKmB,EACLpB,IAAKqB,GAEZ,GACJ,GACJ,EAMGC,EAAa,SAAoB/L,GACjC,IAAIgM,EAAchM,EAAKgM,YACnBC,EAAYjM,EAAKiM,UACjBC,EAAkBlM,EAAKkM,gBACvBC,EAAkBnM,EAAKmM,gBAEvBC,EAAela,OAAOQ,OAAO,CAAC,EAAGuZ,GAGjCF,EAAa,GAyCjB,OAtCAtF,EAAMuF,GAAa,SAASzF,EAAU8F,GAClC,IAAIf,EAAWC,EAAec,GACzBf,IAKLA,EAASf,SAAW,SAASzgB,GACzBmiB,EAAU1F,GAAYzc,CACzB,EAGDwhB,EAASvX,OAASqY,EAAa7F,GAmB/BmF,EAAU,CAhBC,CACP/f,IAAK4a,EACLuF,OAAQ,SAAgBhiB,GAEhBwhB,EAASvX,SAAWjK,IAIxBwhB,EAASvX,OAASjK,EACrB,EACD+hB,OAAQ,WACJ,OAAOI,EAAU1F,EACpB,IAIa,CAAC2F,EAAiBC,GAAkBF,GAAW,GAGjEF,EAAW/c,KAAKsc,GACnB,IAGM,CACHxT,MAAO,SAAeuS,GAClB,IAAIC,EAAiBhS,SAASwN,OAC1BqE,GAAU,EAKd,OAJA4B,EAAWrgB,SAAQ,SAAS2gB,GACnBA,EAAUlC,UAASA,GAAU,GAClCkC,EAAUjC,YAAYC,EAAIC,EAC7B,IACMH,CACV,EACDmC,QAAS,WAAqB,EAErC,EAEGC,EAAW,SAAkBlF,GAC7B,OAAO,SAASjb,EAAM4G,GAClBqU,EAAQrb,iBAAiBI,EAAM4G,EAClC,CACJ,EAEGwZ,EAAc,SAAqBnF,GACnC,OAAO,SAASjb,EAAM4G,GAClBqU,EAAQ7e,oBAAoB4D,EAAM4G,EACrC,CACJ,EAGGyZ,EAAY,SAAmBzM,GACbA,EAAKgM,YACPhM,EAAKiM,UACCjM,EAAKkM,gBAF3B,IAGIC,EAAkBnM,EAAKmM,gBAEvB5K,GADYvB,EAAK0M,UACV1M,EAAKuB,MACZoL,EAAS,GAETC,EAAML,EAAShL,EAAK8F,SACpB3O,EAAS8T,EAAYjL,EAAK8F,SAsB9B,OApBA8E,EAAgBU,GAAK,SAASzgB,EAAM4G,GAChC2Z,EAAO3d,KAAK,CACR5C,KAAMA,EACN4G,GAAIA,IAGR4Z,EAAIxgB,EAAM4G,EACb,EAEDmZ,EAAgBW,IAAM,SAAS1gB,EAAM4G,GACjC2Z,EAAOzd,OACHyd,EAAOI,WAAU,SAASC,GACtB,OAAOA,EAAM5gB,OAASA,GAAQ4gB,EAAMha,KAAOA,CAC9C,IACD,GAGJ0F,EAAOtM,EAAM4G,EAChB,EAEM,CACH8E,MAAO,WAEH,OAAO,CACV,EACDwU,QAAS,WACLK,EAAOjhB,SAAQ,SAASshB,GACpBtU,EAAOsU,EAAM5gB,KAAM4gB,EAAMha,GAC5B,GACJ,EAER,EAWGia,EAAY,SAAmBnjB,GAC/B,OAAgB,MAATA,CACV,EAOGgG,EAAW,CACXod,QAAS,EACTC,OAAQ,EACRC,OAAQ,EACRC,WAAY,EACZC,WAAY,EACZC,QAAS,EACTC,QAAS,EACTC,QAAS,EACTC,QAAS,EACTC,QAAS,GAGTC,EAAS,SAAgB5N,GACzB,IAAIgM,EAAchM,EAAKgM,YACnBC,EAAYjM,EAAKiM,UACjBC,EAAkBlM,EAAKkM,gBACvBC,EAAkBnM,EAAKmM,gBACvB5K,EAAOvB,EAAKuB,KAEZ6K,EAAela,OAAOQ,OAAO,CAAC,EAAGuZ,GAGjC4B,EAAe,CAAC,EAGpBnC,EAAUM,EAAa,CAACE,EAAiBC,GAAkBF,GAG3D,IAAI6B,EAAY,WACZ,MAAO,CAAC7B,EAAS,YAAkB,EAAGA,EAAS,YAAkB,EACpE,EAEG8B,EAAW,WACX,MAAO,CAAC9B,EAAS,QAAc,EAAGA,EAAS,QAAc,EAC5D,EACG+B,EAAU,WACV,OAAOzM,EAAKuH,KACNT,EAAY9G,EAAKuH,KAAMvH,EAAKsG,WAAYiG,IAAaC,KACrD,IACT,EAWD,OAVA7B,EAAgBpD,KAAO,CAAE4B,IAAKsD,GAC9B7B,EAAgBrD,KAAO,CAAE4B,IAAKsD,GAG9BhC,EAAYtgB,SAAQ,SAASC,GACzBsgB,EAAUtgB,GACuB,qBAAtBygB,EAAazgB,GAAuBmE,EAASnE,GAAOygB,EAAazgB,EAC/E,IAGM,CACHmM,MAAO,WAEH,GAAKmW,EAAiBJ,EAAc5B,GAWpC,OANAiC,EAAY3M,EAAK8F,QAAS4E,GAG1B/Z,OAAOQ,OAAOmb,EAAc3b,OAAOQ,OAAO,CAAC,EAAGuZ,KAGvC,CACV,EACDK,QAAS,WAAqB,EAErC,EAEG2B,EAAmB,SAA0BJ,EAAcM,GAE3D,GAAIjc,OAAOsC,KAAKqZ,GAAcrrB,SAAW0P,OAAOsC,KAAK2Z,GAAU3rB,OAC3D,OAAO,EAIX,IAAK,IAAI2R,KAAQga,EACb,GAAIA,EAASha,KAAU0Z,EAAa1Z,GAChC,OAAO,EAIf,OAAO,CACV,EAEG+Z,EAAc,SAAqB7G,EAAShH,GAC5C,IAAI6M,EAAU7M,EAAM6M,QAChBkB,EAAc/N,EAAM+N,YACpBf,EAAahN,EAAMgN,WACnBC,EAAajN,EAAMiN,WACnBH,EAAS9M,EAAM8M,OACfC,EAAS/M,EAAM+M,OACfG,EAAUlN,EAAMkN,QAChBC,EAAUnN,EAAMmN,QAChBC,EAAUpN,EAAMoN,QAChBC,EAAUrN,EAAMqN,QAChBC,EAAUtN,EAAMsN,QAChBhF,EAAQtI,EAAMsI,MACdE,EAASxI,EAAMwI,OAEfwF,EAAa,GACbT,EAAS,IAGTX,EAAUS,IAAYT,EAAUU,MAChCC,GAAU,sBAAwBF,GAAW,GAAK,OAASC,GAAW,GAAK,OAK3EV,EAAUmB,KACVC,GAAc,eAAiBD,EAAc,SAI7CnB,EAAUI,IAAeJ,EAAUK,MACnCe,GACI,gBAAkBhB,GAAc,GAAK,QAAUC,GAAc,GAAK,YAItEL,EAAUE,IAAWF,EAAUG,MAC/BiB,GACI,YACCpB,EAAUE,GAAUA,EAAS,GAC9B,MACCF,EAAUG,GAAUA,EAAS,GAC9B,SAIJH,EAAUQ,KACVY,GAAc,WAAaZ,EAAU,SAGrCR,EAAUM,KACVc,GAAc,WAAad,EAAU,SAGrCN,EAAUO,KACVa,GAAc,WAAab,EAAU,SAIrCa,EAAW7rB,SACXorB,GAAU,aAAeS,EAAa,KAItCpB,EAAUC,KACVU,GAAU,WAAaV,EAAU,IAGjB,IAAZA,IACAU,GAAU,sBAIVV,EAAU,IACVU,GAAU,yBAKdX,EAAUpE,KACV+E,GAAU,UAAY/E,EAAS,OAI/BoE,EAAUtE,KACViF,GAAU,SAAWjF,EAAQ,OAIjC,IAAI2F,EAAsBjH,EAAQiH,qBAAuB,GAGrDV,EAAOprB,SAAW8rB,EAAoB9rB,QAAUorB,IAAWU,IAC3DjH,EAAQkH,MAAMC,QAAUZ,EAGxBvG,EAAQiH,oBAAsBV,EAErC,EAEGa,EAAS,CACTb,OAAQA,EACRnB,UAAWA,EACXV,WAAYA,EACZ2C,KA/MO,SAAc1O,GACrB,IAAIgM,EAAchM,EAAKgM,YACnBC,EAAYjM,EAAKiM,UACjBE,EAAkBnM,EAAKmM,gBAC3BT,EAAUM,EAAaG,EAAiBF,EAC3C,GA6MG0C,EAAa,WACb,IAAI7F,EAAO3R,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC5EkQ,EAAUlQ,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/EoX,EAAQpX,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAuBjF,OArBKkQ,EAAQuH,mBACT9F,EAAK+F,WAAa/sB,SAASysB,EAAMM,WAAY,KAAO,EACpD/F,EAAKgG,UAAYhtB,SAASysB,EAAMO,UAAW,KAAO,EAClDhG,EAAKQ,YAAcxnB,SAASysB,EAAMjF,YAAa,KAAO,EACtDR,EAAKO,aAAevnB,SAASysB,EAAMlF,aAAc,KAAO,EACxDP,EAAKiG,WAAajtB,SAASysB,EAAMQ,WAAY,KAAO,EACpD1H,EAAQuH,kBAAmB,GAG/B9F,EAAKN,KAAOnB,EAAQ2H,YAAc,EAClClG,EAAKL,IAAMpB,EAAQ4H,WAAa,EAChCnG,EAAKH,MAAQtB,EAAQ6H,aAAe,EACpCpG,EAAKD,OAASxB,EAAQ8H,cAAgB,EAEtCrG,EAAKJ,MAAQI,EAAKN,KAAOM,EAAKH,MAC9BG,EAAKF,OAASE,EAAKL,IAAMK,EAAKD,OAE9BC,EAAKsG,UAAY/H,EAAQ+H,UAEzBtG,EAAKhD,OAAkC,OAAzBuB,EAAQgI,aAEfvG,CACV,EAEGwG,EAEA,WACI,IAAItP,EAAO7I,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC5EoY,EAAWvP,EAAKkH,IAChBA,OAAmB,IAAbqI,EAAsB,MAAQA,EACpCC,EAAYxP,EAAKzQ,KACjBA,OAAqB,IAAdigB,EAAuB,KAAOA,EACrCC,EAAkBzP,EAAKoH,WACvBA,OAAiC,IAApBqI,EAA6B,CAAC,EAAIA,EAC/CC,EAAY1P,EAAKzU,KACjBA,OAAqB,IAAdmkB,EAAuB,WAAa,EAAGA,EAC9CC,EAAa3P,EAAKlI,MAClBA,OAAuB,IAAf6X,EAAwB,WAAa,EAAGA,EAChDC,EAAc5P,EAAK3S,OACnBA,OAAyB,IAAhBuiB,EAAyB,WAAa,EAAGA,EAClDC,EAAe7P,EAAKsM,QACpBA,OAA2B,IAAjBuD,EAA0B,WAAa,EAAGA,EACpDC,EAAwB9P,EAAK+P,2BAC7BA,OAC8B,IAA1BD,EACM,SAASrI,EAAOlC,GACZ,OAAOA,CACV,EACDuK,EACVE,EAAqBhQ,EAAKiQ,cAC1BA,OAAuC,IAAvBD,EAAgC,WAAa,EAAGA,EAChEE,EAAoBlQ,EAAKmQ,aACzBA,OAAqC,IAAtBD,EAA+B,WAAa,EAAGA,EAC9DE,EAAkBpQ,EAAKqQ,WACvBA,OAAiC,IAApBD,GAAqCA,EAClDE,EAAwBtQ,EAAKuQ,iBAC7BA,OAA6C,IAA1BD,GAA2CA,EAC9DE,EAAcxQ,EAAKyQ,OACnBA,OAAyB,IAAhBD,EAAyB,GAAKA,EAC3C,OAAO,SAEHE,GAEA,IAAI/S,EAAQxG,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAE7EkQ,EAAUlO,EAAc+N,EAAK,aAAe3X,EAAM6X,GAGlDmH,EAAQzU,OAAO6W,iBAAiBtJ,EAAS,MAGzCyB,EAAO6F,IACPiC,EAAY,KAGZC,GAAY,EAGZhJ,EAAa,GAGbiJ,EAAe,GAGfhP,EAAM,CAAC,EAGP0D,EAAQ,CAAC,EAGTuL,EAAU,CACVjZ,GAGAkZ,EAAU,CACVzlB,GAGA0lB,EAAa,CACb3E,GAIA4E,EAAa,WACb,OAAO7J,CACV,EACG8J,EAAgB,WAChB,OAAOtJ,EAAW5lB,QACrB,EACGmvB,EAAe,WACf,OAAOtP,CACV,EACGuP,EAAkB,SAAyBX,GAC3C,OAAO,SAASnP,EAAM5D,GAClB,OAAO4D,EAAKmP,EAAO/S,EACtB,CACJ,EACGqQ,EAAU,WACV,OAAI4C,IAGJA,EAAYvI,EAAYS,EAAMjB,EAAY,CAAC,EAAG,GAAI,CAAC,EAAG,IAEzD,EASGyJ,EAAQ,WACRV,EAAY,KAGZ/I,EAAWnc,SAAQ,SAAS+b,GACxB,OAAOA,EAAM6J,OAChB,MAEoBf,GAAoBzH,EAAKH,OAASG,EAAKD,SAExD8F,EAAW7F,EAAMzB,EAASkH,GAI9B,IAAInI,EAAM,CAAEzE,KAAM4P,EAAa5T,MAAOA,EAAOmL,KAAMA,GACnDkI,EAAQtlB,SAAQ,SAASkU,GACrB,OAAOA,EAAOwG,EACjB,GACJ,EAMGoL,EAAS,SAAgBnH,EAAIoH,EAAcC,GAE3C,IAAIvH,EAAkC,IAAxBsH,EAAajvB,OAiF3B,OA9EAuuB,EAAQrlB,SAAQ,SAASimB,IASC,IARFA,EAAO,CACvBhU,MAAOA,EACPgE,KAAM4P,EACNhM,QAASkM,EACTG,UAAWvH,EACXqH,eAAgBA,MAIhBvH,GAAU,EAEjB,IAGD2G,EAAaplB,SAAQ,SAASmmB,IAGL,IADFA,EAAM/Z,MAAMuS,KAE3BF,GAAU,EAEjB,IAGDtC,EACK/J,QAAO,SAAS2J,GACb,QAASA,EAAMJ,QAAQU,UAC1B,IACArc,SAAQ,SAAS+b,GAEKA,EAAM+J,OACrBnH,EACA0F,EAA2BtI,EAAOgK,GAClCC,KAIAvH,GAAU,EAEjB,IAGLtC,EAEKnc,SAAQ,SAAS+b,EAAOxY,GAEjBwY,EAAMJ,QAAQU,aAKlBwJ,EAAYhK,YAAYE,EAAMJ,QAASpY,GAGvCwY,EAAM6J,QAGN7J,EAAM+J,OACFnH,EACA0F,EAA2BtI,EAAOgK,GAClCC,GAIJvH,GAAU,EACb,IAGL0G,EAAY1G,EAEZgG,EAAa,CACTxS,MAAOA,EACPgE,KAAM4P,EACNhM,QAASkM,EACTG,UAAWvH,IAIRF,CACV,EAEG2H,EAAW,WACXhB,EAAaplB,SAAQ,SAASmmB,GAC1B,OAAOA,EAAMvF,SAChB,IACD2E,EAAWvlB,SAAQ,SAASqmB,GACxBA,EAAU,CAAEpQ,KAAM4P,EAAa5T,MAAOA,GACzC,IACDkK,EAAWnc,SAAQ,SAAS+b,GACxB,OAAOA,EAAMqK,UAChB,GACJ,EAGGE,EAAsB,CACtB3K,QAAS,CACLqD,IAAKwG,GAGT3C,MAAO,CACH7D,IAzIO,WACX,OAAO6D,CACV,GA0IG1G,WAAY,CACR6C,IAAKyG,IAKTc,EAAwB/f,OAAOQ,OAAO,CAAC,EAAGsf,EAAqB,CAC/DlJ,KAAM,CACF4B,IAAKsD,GAITlM,IAAK,CACD4I,IAAK0G,GAIT9P,GAAI,SAAY4Q,GACZ,OAAO3iB,IAAS2iB,CACnB,EACD3K,YAAaA,EAAYF,GACzBgK,gBAAiBA,EAAgBX,GACjCyB,SAAU,SAAkB5Q,GAExB,OADAsG,EAAW7Y,KAAKuS,GACTA,CACV,EACD6Q,WAAY,SAAoB7Q,GAC5BsG,EAAW3Y,OAAO2Y,EAAWpd,QAAQ8W,GAAO,EAC/C,EACDqG,gBAAiBA,EAAgBP,EAASQ,GAC1CC,gBAAiBA,EAAgBT,EAASQ,GAC1CrG,eAAgB,SAAwBmQ,GACpC,OAAOZ,EAAQ/hB,KAAK2iB,EACvB,EACDU,eAAgB,SAAwBzS,GACpC,OAAOoR,EAAQhiB,KAAK4Q,EACvB,EACD0S,kBAAmB,SAA2BP,GAC1C,OAAOd,EAAWjiB,KAAK+iB,EAC1B,EACDQ,iBAAkB,WACd,OAAQlL,EAAQuH,kBAAmB,CACtC,EAGD7M,SAAU2O,EAAM3O,SAChBnB,MAAO8P,EAAM9P,QAIb4R,EAAwB,CACxBnL,QAAS,CACLqD,IAAKwG,GAGTrJ,WAAY,CACR6C,IAAKyG,GAGTrI,KAAM,CACF4B,IAAKsD,GAGT7D,QAAS,CACLO,IAAK,WACD,OAAOmG,CACV,GAGL5H,cAAe,WACX,OAAOoH,CACV,EACDiB,MAAOA,EACPE,OAAQA,EACRM,SAAUA,GAIVW,EAAqBvgB,OAAOQ,OAAO,CAAC,EAAGsf,EAAqB,CAC5DlJ,KAAM,CACF4B,IAAK,WACD,OAAO5B,CACV,KAKT5W,OAAOsC,KAAKic,GACPiC,MAAK,SAASrV,EAAGC,GAEd,MAAU,WAAND,EACO,EACM,WAANC,GACC,EAEL,CACV,IACA5R,SAAQ,SAASC,GACd,IAAIgnB,EAAWlE,EAAO9iB,GAAK,CACvBqgB,YAAayE,EAAO9kB,GACpBsgB,UAAWtO,EACX+O,UAAWlH,EACX0G,gBAAiB+F,EACjB9F,gBAAiBqG,EACjBjR,KAAMmF,EAAa+L,KAGnBE,GACA7B,EAAa9hB,KAAK2jB,EAEzB,IAGL,IAAIpB,EAAc7K,EAAauL,GAG/B5kB,EAAO,CACHsU,KAAM4P,EACN5T,MAAOA,IAIX,IAAIiV,EAAazK,EAAcd,GAS/B,OARAQ,EAAWnc,SAAQ,SAAS+b,EAAOxY,GAC/BsiB,EAAYhK,YAAYE,EAAMJ,QAASuL,EAAa3jB,EACvD,IAGDghB,EAAcsB,GAGP7K,EAAa8L,EACvB,CACJ,EAEDK,EAAgB,SAAuBtnB,EAAMuM,GAC7C,IAAIgb,EAAM3b,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,GAAmBA,UAAU,GAAK,GAE1E5H,EAAO,iBAGX,GAAIuK,OAAOvK,GAGP,OAFAuK,OAAOvK,GAAMyhB,QAAQhiB,KAAKzD,QAC1BuO,OAAOvK,GAAMwhB,QAAQ/hB,KAAK8I,GAI9BgC,OAAOvK,GAAQ,CACXyhB,QAAS,CAACzlB,GACVwlB,QAAS,CAACjZ,IAGd,IAAIib,EAAUjZ,OAAOvK,GAEjByjB,EAAW,IAAOF,EAClBG,EAAO,KACPlgB,EAAK,KACLmgB,EAAc,KACdC,EAAa,KAEbC,EAAe,WACX9a,SAASwN,QACToN,EAAc,WACV,OAAOpZ,OAAOpP,YAAW,WACrB,OAAO2oB,EAAKC,YAAY3a,MAC3B,GAAEqa,EACN,EACDG,EAAa,WACT,OAAOrZ,OAAOyZ,aAAaxgB,EAC9B,IAEDmgB,EAAc,WACV,OAAOpZ,OAAO0Z,sBAAsBH,EACvC,EACDF,EAAa,WACT,OAAOrZ,OAAO2Z,qBAAqB1gB,EACtC,EAER,EAEDuF,SAAStM,iBAAiB,oBAAoB,WACtCmnB,GAAYA,IAChBC,IACAC,EAAKC,YAAY3a,MACpB,IAED,IAAI0a,EAAO,SAASA,EAAKhJ,GAErBtX,EAAKmgB,EAAYG,GAGZJ,IACDA,EAAO5I,GAGX,IAAIqJ,EAAQrJ,EAAK4I,EAEbS,GAASV,IAMbC,EAAO5I,EAAMqJ,EAAQV,EAGrBD,EAAQ/B,QAAQtlB,SAAQ,SAASH,GAC7B,OAAOA,GACV,IACDwnB,EAAQhC,QAAQrlB,SAAQ,SAASoM,GAC7B,OAAOA,EAAMuS,EAChB,IACJ,EAKD,OAHA+I,IACAC,EAAKC,YAAY3a,OAEV,CACHgb,MAAO,WACHR,EAAWpgB,EACd,EAER,EAEGqN,EAAc,SAAqBwT,EAAQ5gB,GAC3C,OAAO,SAASgN,GACZ,IAAI2B,EAAO3B,EAAK2B,KACZhE,EAAQqC,EAAKrC,MACbkW,EAAe7T,EAAKuF,QACpBA,OAA2B,IAAjBsO,EAA0B,GAAKA,EACzCjC,EAAY5R,EAAK4R,UACjBF,EAAiB1R,EAAK0R,eAC1BnM,EACKzH,QAAO,SAAS8D,GACb,OAAOgS,EAAOhS,EAAOxV,KACxB,IACAV,SAAQ,SAASkW,GACd,OAAOgS,EAAOhS,EAAOxV,MAAM,CACvBuV,KAAMA,EACNhE,MAAOA,EACPiE,OAAQA,EAAO5Z,KACf4pB,UAAWA,EACXF,eAAgBA,GAEvB,IAED1e,GACAA,EAAG,CACC2O,KAAMA,EACNhE,MAAOA,EACP4H,QAASA,EACTqM,UAAWA,EACXF,eAAgBA,GAG3B,CACJ,EAEG/J,EAAe,SAAsBmM,EAASC,GAC9C,OAAOA,EAAchM,WAAWJ,aAAamM,EAASC,EACzD,EAEGC,EAAc,SAAqBF,EAASC,GAC5C,OAAOA,EAAchM,WAAWJ,aAAamM,EAASC,EAAcE,YACvE,EAEGhgB,EAAU,SAAiBnK,GAC3B,OAAOiH,MAAMkD,QAAQnK,EACxB,EAEGoqB,EAAU,SAAiBpqB,GAC3B,OAAgB,MAATA,CACV,EAEG4M,EAAO,SAAc6F,GACrB,OAAOA,EAAI7F,MACd,EAEGvB,EAAW,SAAkBrL,GAC7B,MAAO,GAAKA,CACf,EAEGoR,EAAU,SAAiBpR,GAC3B,IAAIqqB,EAAWhd,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,GAAmBA,UAAU,GAAK,IACnF,OAAI+c,EAAQpqB,GACD,GAEPmK,EAAQnK,GACDA,EAEJqL,EAASrL,GACXvH,MAAM4xB,GACNhT,IAAIzK,GACJoH,QAAO,SAASvB,GACb,OAAOA,EAAI/Z,MACd,GACR,EAEG4xB,EAAY,SAAmBtqB,GAC/B,MAAwB,mBAAVA,CACjB,EAEGuqB,EAAY,SAAmBvqB,GAC/B,OAAOsqB,EAAUtqB,GAASA,EAAkB,SAAVA,CACrC,EAEGyM,EAAW,SAAkBzM,GAC7B,MAAwB,kBAAVA,CACjB,EAEGwqB,EAAW,SAAkBxqB,GAC7B,OAAOsO,EAAStO,GACVA,EACAyM,EAASzM,GACTqL,EAASrL,GAAOuN,QAAQ,WAAY,IACpC,CACT,EAEGkd,EAAQ,SAAezqB,GACvB,OAAOhI,SAASwyB,EAASxqB,GAAQ,GACpC,EAEG0qB,GAAU,SAAiB1qB,GAC3B,OAAO2qB,WAAWH,EAASxqB,GAC9B,EAEG4qB,GAAQ,SAAe5qB,GACvB,OAAOsO,EAAStO,IAAU6qB,SAAS7qB,IAAU8K,KAAKC,MAAM/K,KAAWA,CACtE,EAEG8qB,GAAU,SAAiB9qB,GAC3B,IAAI+qB,EAAO1d,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,GAAmBA,UAAU,GAAK,IAE/E,GAAIud,GAAM5qB,GACN,OAAOA,EAIX,IAAIgrB,EAAkB3f,EAASrL,GAAO4M,OAGtC,MAAI,OAAOkC,KAAKkc,IACZA,EAAkBA,EAAgBzd,QAAQ,OAAQ,IAAIX,OAC/C6d,EAAMO,GAAmBD,EAAOA,GAIvC,MAAMjc,KAAKkc,IACXA,EAAkBA,EAAgBzd,QAAQ,OAAQ,IAAIX,OAC/C6d,EAAMO,GAAmBD,GAG7BN,EAAMO,EAChB,EAEGpY,GAAa,SAAoB5S,GACjC,MAAwB,oBAAVA,CACjB,EAEGirB,GAAsB,SAA6BC,GAInD,IAHA,IAAIlT,EAAMxC,KACN2V,EAASD,EAAOzyB,MAAM,KACtB2yB,EAAQ,KACJA,EAAQD,EAAOhkB,SAEnB,KADA6Q,EAAMA,EAAIoT,IAEN,OAAO,KAGf,OAAOpT,CACV,EAEGqT,GAAU,CACVjgB,QAAS,OACTkgB,MAAO,QACPC,OAAQ,SACRC,MAAO,MACPC,QAAS,MACTC,KAAM,OAGNC,GAAkB,SAAyBC,GAC3C,IAAItP,EAAM,CAAC,EAmBX,OAjBAA,EAAI9c,IAAMiN,EAASmf,GAAWA,EAAUA,EAAQpsB,KAAO,GACvD8c,EAAI/b,QAAUqrB,EAAQrrB,QAAUvI,SAAS4zB,EAAQrrB,QAAS,IAAM,EAChE+b,EAAIle,QAAUwtB,EAAQxtB,QAAUwtB,EAAQxtB,QAAU,CAAC,EAEnDue,EAAM0O,IAAS,SAASxpB,GACpBya,EAAIza,GAAOgqB,GAAahqB,EAAK+pB,EAAQ/pB,GAAMwpB,GAAQxpB,GAAMya,EAAI/b,QAAS+b,EAAIle,QAC7E,IAGDke,EAAIlR,QAAUwgB,EAAQxgB,SAAWqB,EAASmf,IAAYA,EAAQpsB,IAAM8c,EAAIlR,QAAU,KAGlFkR,EAAI1N,OAASgd,EAAQhd,QAAU,YAGxB0N,EAAIle,QAEJke,CACV,EAEGuP,GAAe,SAAsBpmB,EAAMmmB,EAASzrB,EAAQI,EAASnC,GAErE,GAAgB,OAAZwtB,EACA,OAAO,KAIX,GAAuB,oBAAZA,EACP,OAAOA,EAIX,IAAI9T,EAAS,CACTtY,IAAgB,QAAXW,GAA+B,UAAXA,EAAqB,IAAMsF,EAAO,IAAM,GACjEtF,OAAQA,EACR/B,QAASA,EACTmD,iBAAiB,EACjBhB,QAASA,EACTurB,OAAQ,KACRC,OAAQ,KACRhrB,QAAS,MAIb,GAAI0L,EAASmf,GAET,OADA9T,EAAOtY,IAAMosB,EACN9T,EAOX,GAHA1P,OAAOQ,OAAOkP,EAAQ8T,GAGlBnf,EAASqL,EAAO1Z,SAAU,CAC1B,IAAIqP,EAAQqK,EAAO1Z,QAAQ3F,MAAM,SACjCqf,EAAO1Z,QAAU,CACb4tB,OAAQve,EAAM,GACdzN,MAAOyN,EAAM,GAEpB,CAKD,OAFAqK,EAAOvW,gBAAkBgpB,EAAUzS,EAAOvW,iBAEnCuW,CACV,EAMGmU,GAAS,SAAgBjsB,GACzB,OAAiB,OAAVA,CACV,EAEGiM,GAAW,SAAkBjM,GAC7B,MAAwB,kBAAVA,GAAgC,OAAVA,CACvC,EAEGksB,GAAQ,SAAelsB,GACvB,OACIiM,GAASjM,IACTyM,EAASzM,EAAMR,MACfyM,GAASjM,EAAMoL,UACfa,GAASjM,EAAMurB,SACftf,GAASjM,EAAMyrB,UACfxf,GAASjM,EAAMwrB,MAEtB,EAEGW,GAAU,SAAiBnsB,GAC3B,OAAImK,EAAQnK,GACD,QAGPisB,GAAOjsB,GACA,OAGP4qB,GAAM5qB,GACC,MAGP,2BAA2B8O,KAAK9O,GACzB,QAGPksB,GAAMlsB,GACC,aAGGA,CACjB,EAEGosB,GAAsB,SAA6B3Z,GACnD,OAAOA,EACFlF,QAAQ,SAAU,MAClBA,QAAQ,SAAU,MAClBA,QAAQ,SAAU,MAClBA,QAAQ,SAAU,MAClBA,QAAQ,SAAU,MAClBA,QAAQ,SAAU,KAC1B,EAEG8e,GAAkB,CAClBC,MAAOlb,EACP/K,QAASkkB,EACTgC,IAAK,SAAavsB,GACd,MAA0B,UAAnBmsB,GAAQnsB,GAAqB8qB,GAAQ9qB,GAASyqB,EAAMzqB,EAC9D,EACD8H,OAAQ4iB,GACR8B,MAAO9B,GACP+B,MAAO3B,GACPI,OAAQ,SAAgBlrB,GACpB,OAAO4S,GAAW5S,GAASA,EAAQqL,EAASrL,EAC/C,EACD0sB,SAAU,SAAmB1sB,GACzB,OAAOirB,GAAoBjrB,EAC9B,EACD2sB,UAxEc,SAAqB3sB,GACnC,OAAO2rB,GAAgB3rB,EAC1B,EAuEG4sB,OAAQ,SAAgB5sB,GACpB,IACI,OAAO0M,KAAKC,MAAMyf,GAAoBpsB,GAGzC,CAFC,MAAO6M,GACL,OAAO,IACV,CACJ,GAGDggB,GAAY,SAAmB7sB,EAAOsC,GACtC,OAAO+pB,GAAgB/pB,GAAMtC,EAChC,EAEG8sB,GAAiB,SAAwBC,EAAUC,EAAcC,GAEjE,GAAIF,IAAaC,EACb,OAAOD,EAIX,IAAIG,EAAef,GAAQY,GAG3B,GAAIG,IAAiBD,EAAW,CAE5B,IAAIE,EAAiBN,GAAUE,EAAUE,GAMzC,GAHAC,EAAef,GAAQgB,GAGA,OAAnBA,EACA,KAAM,kDACFC,OACA,qBACAH,EACA,IAEJF,EAAWI,CAElB,CAGD,OAAOJ,CACV,EAEGM,GAAe,SAAsBL,EAAcC,GACnD,IAAIK,EAAeN,EACnB,MAAO,CACHO,YAAY,EACZ3M,IAAK,WACD,OAAO0M,CACV,EACD3M,IAAK,SAAaoM,GACdO,EAAeR,GAAeC,EAAUC,EAAcC,EACzD,EAER,EAEGO,GAAgB,SAAuBzkB,GACvC,IAAIJ,EAAM,CAAC,EAKX,OAJAgU,EAAM5T,GAAS,SAASsB,GACpB,IAAIojB,EAAmB1kB,EAAQsB,GAC/B1B,EAAI0B,GAAQgjB,GAAaI,EAAiB,GAAIA,EAAiB,GAClE,IACM7Q,EAAajU,EACvB,EAEG+kB,GAAqB,SAA4B3kB,GACjD,MAAO,CAEH4kB,MAAO,GAGPC,kBAAmB,KAGnBC,kBAAmB,KAGnBC,gBAAiB,GAGjB/kB,QAASykB,GAAczkB,GAE9B,EAEGglB,GAAa,SAAoB7C,GACjC,IAAI8C,EAAY3gB,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,GAAmBA,UAAU,GAAK,IACpF,OAAO6d,EACFzyB,MAAM,aACN4e,KAAI,SAAS4W,GACV,OAAOA,EAAKnsB,aACf,IACA+L,KAAKmgB,EACb,EAEGE,GAAkB,SAAyBtH,EAAO7d,GAClD,IAAIJ,EAAM,CAAC,EAaX,OAZAgU,EAAM5T,GAAS,SAASlH,GACpB8G,EAAI9G,GAAO,CACP+e,IAAK,WACD,OAAOgG,EAAMrK,WAAWxT,QAAQlH,EACnC,EACD8e,IAAK,SAAa3gB,GACd4mB,EAAM3O,SAAS,OAAS8V,GAAWlsB,EAAK,KAAKzB,cAAe,CACxDJ,MAAOA,GAEd,EAER,IACM2I,CACV,EAEGwlB,GAAsB,SAA6BplB,GACnD,OAAO,SAASkP,EAAUnB,EAAO4E,GAC7B,IAAI/S,EAAM,CAAC,EAaX,OAZAgU,EAAM5T,GAAS,SAASlH,GACpB,IAAI4D,EAAOsoB,GAAWlsB,EAAK,KAAKzB,cAEhCuI,EAAI,OAASlD,GAAQ,SAASqS,GAC1B,IACI4D,EAAM3S,QAAQlH,GAAOiW,EAAO9X,KAClB,CAAZ,MAAO6M,GAAK,CAGdoL,EAAS,WAAaxS,EAAM,CAAEzF,MAAO0b,EAAM3S,QAAQlH,IACtD,CACJ,IACM8G,CACV,CACJ,EAEGylB,GAAsB,SAA6BrlB,GACnD,OAAO,SAAS2S,GACZ,IAAI/S,EAAM,CAAC,EAMX,OALAgU,EAAM5T,GAAS,SAASlH,GACpB8G,EAAI,OAASolB,GAAWlsB,EAAK,KAAKzB,eAAiB,SAAS0X,GACxD,OAAO4D,EAAM3S,QAAQlH,EACxB,CACJ,IACM8G,CACV,CACJ,EAEG0lB,GAAoB,CACpBC,IAAK,EACLC,KAAM,EACNC,OAAQ,EACRC,MAAO,EACPC,KAAM,GAGNC,GAAc,WACd,OAAO7jB,KAAK8jB,SACPvjB,SAAS,IACTwjB,UAAU,EAAG,GACrB,EAyFD,SAASC,GAAY9uB,GACjBqE,KAAK0qB,QAAU/uB,CAClB,CAED,SAASgvB,GAAgBC,GACrB,IAAIC,EAAOC,EAEX,SAASvsB,EAAKf,EAAK6S,GACf,OAAO,IAAI7W,SAAQ,SAASC,EAASC,GACjC,IAAIc,EAAU,CACVgD,IAAKA,EACL6S,IAAKA,EACL5W,QAASA,EACTC,OAAQA,EACRqxB,KAAM,MAGND,EACAA,EAAOA,EAAKC,KAAOvwB,GAEnBqwB,EAAQC,EAAOtwB,EACfwwB,EAAOxtB,EAAK6S,GAEnB,GACJ,CAED,SAAS2a,EAAOxtB,EAAK6S,GACjB,IACI,IAAIrC,EAAS4c,EAAIptB,GAAK6S,GAClB1U,EAAQqS,EAAOrS,MACfsvB,EAAetvB,aAAiB8uB,GACpCjxB,QAAQC,QAAQwxB,EAAetvB,EAAM+uB,QAAU/uB,GAAOwE,MAClD,SAASkQ,GACD4a,EACAD,EAAO,OAAQ3a,GAInBxX,EAAOmV,EAAO/T,KAAO,SAAW,SAAUoW,EAC7C,IACD,SAASzU,GACLovB,EAAO,QAASpvB,EACnB,GAIR,CAFC,MAAOA,GACL/C,EAAO,QAAS+C,EACnB,CACJ,CAED,SAAS/C,EAAOoF,EAAMtC,GAClB,OAAQsC,GACJ,IAAK,SACD4sB,EAAMpxB,QAAQ,CACVkC,MAAOA,EACP1B,MAAM,IAEV,MAEJ,IAAK,QACD4wB,EAAMnxB,OAAOiC,GACb,MAEJ,QACIkvB,EAAMpxB,QAAQ,CACVkC,MAAOA,EACP1B,MAAM,KAKlB4wB,EAAQA,EAAME,MAGVC,EAAOH,EAAMrtB,IAAKqtB,EAAMxa,KAExBya,EAAO,IAEd,CAED9qB,KAAKkrB,QAAU3sB,EAEW,oBAAfqsB,EAAIO,SACXnrB,KAAKmrB,YAAS9tB,EAErB,CAkbD,SAAS+tB,GAA8BpqB,EAAQqqB,GAC3C,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAC5B,IAEIxD,EAAK6C,EAFLuF,EAAS,CAAC,EACV0lB,EAAavnB,OAAOsC,KAAKrF,GAG7B,IAAKX,EAAI,EAAGA,EAAIirB,EAAWj3B,OAAQgM,IAC/B7C,EAAM8tB,EAAWjrB,GACbgrB,EAAS/uB,QAAQkB,IAAQ,IAC7BoI,EAAOpI,GAAOwD,EAAOxD,IAGzB,OAAOoI,CACV,CAED,SAAS2lB,GAAyBvqB,EAAQqqB,GACtC,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAE5B,IAEIxD,EAAK6C,EAFLuF,EAASwlB,GAA8BpqB,EAAQqqB,GAInD,GAAItnB,OAAOynB,sBAAuB,CAC9B,IAAIC,EAAmB1nB,OAAOynB,sBAAsBxqB,GAEpD,IAAKX,EAAI,EAAGA,EAAIorB,EAAiBp3B,OAAQgM,IACrC7C,EAAMiuB,EAAiBprB,GACnBgrB,EAAS/uB,QAAQkB,IAAQ,GACxBuG,OAAO/E,UAAU0sB,qBAAqBxqB,KAAKF,EAAQxD,KACxDoI,EAAOpI,GAAOwD,EAAOxD,GAE5B,CAED,OAAOoI,CACV,CAuJD,SAAS+lB,GAAmBtf,GACxB,OAAOuf,GAAmBvf,IAAQwf,GAAiBxf,IAAQyf,IAC9D,CAED,SAASF,GAAmBvf,GACxB,GAAIzJ,MAAMkD,QAAQuG,GAAM,CACpB,IAAK,IAAIhM,EAAI,EAAG0rB,EAAO,IAAInpB,MAAMyJ,EAAIhY,QAASgM,EAAIgM,EAAIhY,OAAQgM,IAAK0rB,EAAK1rB,GAAKgM,EAAIhM,GAEjF,OAAO0rB,CACV,CACJ,CAMD,SAASF,GAAiBG,GACtB,GACIC,OAAOC,YAAYnoB,OAAOioB,IACe,uBAAzCjoB,OAAO/E,UAAUgI,SAAS9F,KAAK8qB,GAE/B,OAAOppB,MAAMsB,KAAK8nB,EACzB,CAwCD,SAASF,KACL,MAAM,IAAIhsB,UAAU,kDACvB,CAzqBqB,oBAAXmsB,QAAyBA,OAAOE,gBACvCxB,GAAgB3rB,UAAUitB,OAAOE,eAAiB,WAC9C,OAAOnsB,IACV,GAGL2qB,GAAgB3rB,UAAU+rB,KAAO,SAAS1a,GACtC,OAAOrQ,KAAKkrB,QAAQ,OAAQ7a,EAC/B,EAEDsa,GAAgB3rB,UAAUotB,MAAQ,SAAS/b,GACvC,OAAOrQ,KAAKkrB,QAAQ,QAAS7a,EAChC,EAEDsa,GAAgB3rB,UAAUmsB,OAAS,SAAS9a,GACxC,OAAOrQ,KAAKkrB,QAAQ,SAAU7a,EACjC,EA62CD,IAAIgc,GAAc,SAAqBhgB,EAAKvL,GACxC,OAAOuL,EAAItL,OAAOD,EAAO,EAC5B,EAEGwrB,GAAM,SAAa/a,EAAIgb,GACnBA,EACAhb,IACOpH,SAASwN,OAChBne,QAAQC,QAAQ,GAAG0G,KAAKoR,GAExBhV,WAAWgV,EAAI,EAEtB,EAEGmN,GAAK,WACL,IAAIJ,EAAY,GACZK,EAAM,SAAaE,EAAOtN,GAC1B8a,GACI/N,EACAA,EAAUM,WAAU,SAAShe,GACzB,OAAOA,EAASie,QAAUA,IAAUje,EAAS2Q,KAAOA,IAAOA,EAC9D,IAER,EACGib,EAAQ,SAAc3N,EAAO9V,EAAMwjB,GACnCjO,EACK3O,QAAO,SAAS/O,GACb,OAAOA,EAASie,QAAUA,CAC7B,IACA7L,KAAI,SAASpS,GACV,OAAOA,EAAS2Q,EACnB,IACAhU,SAAQ,SAASgU,GACd,OAAO+a,IAAI,WACP,OAAO/a,EAAG1O,WAAM,EAAQ8oB,GAAmB5iB,GAC9C,GAAEwjB,EACN,GACR,EACD,MAAO,CACHE,SAAU,SAAkB5N,GACxB,IACI,IAAI/G,EAAO9O,UAAU3U,OACjB0U,EAAO,IAAInG,MAAMkV,EAAO,EAAIA,EAAO,EAAI,GACvCC,EAAO,EACXA,EAAOD,EACPC,IAEAhP,EAAKgP,EAAO,GAAK/O,UAAU+O,GAE/ByU,EAAM3N,EAAO9V,GAAM,EACtB,EACD2jB,KAAM,SAAc7N,GAChB,IACI,IAAI8N,EAAQ3jB,UAAU3U,OAClB0U,EAAO,IAAInG,MAAM+pB,EAAQ,EAAIA,EAAQ,EAAI,GACzCC,EAAQ,EACZA,EAAQD,EACRC,IAEA7jB,EAAK6jB,EAAQ,GAAK5jB,UAAU4jB,GAEhCJ,EAAM3N,EAAO9V,GAAM,EACtB,EACD2V,GAAI,SAAYG,EAAOtN,GACnB+M,EAAUzd,KAAK,CAAEge,MAAOA,EAAOtN,GAAIA,GACtC,EACDsb,OAAQ,SAAgBhO,EAAOiO,GAC3BxO,EAAUzd,KAAK,CACXge,MAAOA,EACPtN,GAAI,WACAoN,EAAIE,EAAOiO,GACXA,EAAIjqB,WAAM,EAAQmG,UACrB,GAER,EACD2V,IAAKA,EAEZ,EAEGoO,GAA+B,SAC/BC,EACApnB,EACAylB,GAEAtnB,OAAO8L,oBAAoBmd,GACtBrd,QAAO,SAASyI,GACb,OAAQiT,EAAS7a,SAAS4H,EAC7B,IACA7a,SAAQ,SAASC,GACd,OAAOuG,OAAOE,eACV2B,EACApI,EACAuG,OAAOkpB,yBAAyBD,EAAKxvB,GAE5C,GACR,EAEG0vB,GAAU,CACV,OACA,UACA,SACA,OACA,KACA,MACA,SACA,YACA,SACA,UACA,WACA,UACA,WACA,oBACA,UAGAC,GAAgB,SAAuB5a,GACvC,IAAI0F,EAAM,CAAC,EAEX,OADA8U,GAA6Bxa,EAAM0F,EAAKiV,IACjCjV,CACV,EAEGmV,GAAsB,SAA6B9D,GACnDA,EAAM/rB,SAAQ,SAASgV,EAAMzR,GACrByR,EAAK8a,UACLhB,GAAY/C,EAAOxoB,EAE1B,GACJ,EAEGwsB,GAAa,CACbC,KAAM,EACNC,KAAM,EACNC,kBAAmB,EACnBC,WAAY,EACZC,oBAAqB,EACrBC,iBAAkB,EAClBC,wBAAyB,GACzBC,QAAS,EACTC,WAAY,GAGZC,GAAa,CACbC,MAAO,EACPC,MAAO,EACPC,MAAO,GAGPC,GAAgB,SAAuBhgB,GACvC,MAAO,UAAUjC,KAAKiC,EACzB,EAEGigB,GAAsB,WACtB,OAAOD,GAAe,IAAKE,kBAAkB,EAChD,EAEGC,GAAwB,WAGxB,IAAIC,EAAmBH,KACnBI,EAAgC,IAAQH,iBAE5C,OAAIG,IADmC,IAAQznB,WAEpConB,GAAcK,GAA8B,GAE3B,MAArBD,EAA2B,IAAM,GAC3C,EAEGzc,GAAO,CACPiC,QAAS,UACT0a,IAAK,MACLC,OAAQ,SACRlY,OAAQ,SACRF,MAAO,QACPK,OAAQ,SACRE,SAAU,WACV8X,OAAQ,SACRC,WAAY,YACZC,MAAO,SAIPC,GAAU,GAGVC,GAAmB,SAA0BxxB,EAAK7B,EAAOhD,GACzD,OAAO,IAAIa,SAAQ,SAASC,EAASC,GAEjC,IAAIu1B,EAAkBF,GACjBpf,QAAO,SAASiB,GACb,OAAOA,EAAEpT,MAAQA,CACpB,IACAwV,KAAI,SAASpC,GACV,OAAOA,EAAEW,EACZ,IAGL,GAA+B,IAA3B0d,EAAgB56B,OAApB,CAMA,IAAI66B,EAAgBD,EAAgBnsB,QAGpCmsB,EACKE,QAEG,SAASC,EAASrE,GACd,OAAOqE,EAAQjvB,MAAK,SAASxE,GACzB,OAAOovB,EAAKpvB,EAAOhD,EACtB,GACJ,GAGDu2B,EAAcvzB,EAAOhD,IAIxBwH,MAAK,SAASxE,GACX,OAAOlC,EAAQkC,EAClB,IACA6Z,OAAM,SAAStS,GACZ,OAAOxJ,EAAOwJ,EACjB,GAzBJ,MAFGzJ,EAAQkC,EA4Bf,GACJ,EAEG0zB,GAAe,SAAsB7xB,EAAK7B,EAAOhD,GACjD,OAAOo2B,GACFpf,QAAO,SAASiB,GACb,OAAOA,EAAEpT,MAAQA,CACpB,IACAwV,KAAI,SAASpC,GACV,OAAOA,EAAEW,GAAG5V,EAAOhD,EACtB,GACR,EAGGmZ,GAAY,SAAmBtU,EAAK+T,GACpC,OAAOwd,GAAQluB,KAAK,CAAErD,IAAKA,EAAK+T,GAAIA,GACvC,EAEG+d,GAAuB,SAA8BC,GACrD,OAAOxrB,OAAOQ,OAAOirB,GAAgBD,EACxC,EAEGE,GAAa,WACb,OAAO1rB,OAAOQ,OAAO,CAAC,EAAGirB,GAC5B,EAEGE,GAAa,SAAoBjiB,GACjC6K,EAAM7K,GAAM,SAASjQ,EAAK7B,GAEjB6zB,GAAehyB,KAGpBgyB,GAAehyB,GAAK,GAAKirB,GACrB9sB,EACA6zB,GAAehyB,GAAK,GACpBgyB,GAAehyB,GAAK,IAE3B,GACJ,EAGGgyB,GAAiB,CAEjB5qB,GAAI,CAAC,KAAMmN,GAAK0E,QAGhBrV,KAAM,CAAC,WAAY2Q,GAAK0E,QAGxBkZ,SAAU,EAAC,EAAO5d,GAAKiC,SAGvBgF,UAAW,CAAC,KAAMjH,GAAK0E,QAGvBmZ,SAAU,EAAC,EAAO7d,GAAKiC,SAGvB6b,cAAe,CAAC,KAAM9d,GAAK0E,QAM3BqZ,yBAA0B,EAAC,EAAM/d,GAAKiC,SAGtC+b,UAAW,EAAC,EAAMhe,GAAKiC,SACvBgc,YAAa,EAAC,EAAMje,GAAKiC,SACzBic,WAAY,EAAC,EAAMle,GAAKiC,SACxBkc,cAAe,EAAC,EAAOne,GAAKiC,SAC5Bmc,aAAc,EAAC,EAAMpe,GAAKiC,SAC1Boc,YAAa,EAAC,EAAMre,GAAKiC,SACzBqc,YAAa,EAAC,EAAMte,GAAKiC,SACzBsc,aAAc,EAAC,EAAMve,GAAKiC,SAC1Buc,aAAc,EAAC,EAAOxe,GAAKiC,SAC3Bwc,qBAAsB,EAAC,EAAOze,GAAKiC,SAGnCyc,YAAa,EAAC,EAAO1e,GAAKiC,SAG1B0c,YAAa,EAAC,EAAO3e,GAAKiC,SAG1B2c,SAAU,CAAC,KAAM5e,GAAK2c,KACtBkC,cAAe,EAAC,EAAO7e,GAAKiC,SAG5B6c,0BAA2B,EAAC,EAAM9e,GAAKiC,SACvC8c,mBAAoB,CAAC,SAAU/e,GAAK0E,QACpCsa,mBAAoB,CAAC,GAAIhf,GAAK2c,KAG9BsC,WAAY,EAAC,EAAOjf,GAAKiC,SACzBid,cAAe,EAAC,EAAMlf,GAAKiC,SAC3Bkd,eAAgB,EAAC,EAAOnf,GAAKiC,SAC7Bmd,aAAc,CAAC,CAAC,YAAa,YAAa,eAAgBpf,GAAKwE,OAG/D6a,cAAe,EAAC,EAAMrf,GAAKiC,SAC3Bqd,mBAAoB,CAAC,EAAGtf,GAAK2c,KAC7B4C,2BAA4B,EAAC,EAAMvf,GAAKiC,SAGxCud,aAAc,EAAC,EAAOxf,GAAKiC,SAC3Bwd,WAAY,EAAC,EAAOzf,GAAKiC,SACzByd,UAAW,CAAC,IAAS1f,GAAK2c,KAC1BgD,iBAAkB,CAAC,CAAC,IAAK,IAAM,KAAO3f,GAAKwE,OAG3Cob,OAAQ,CAAC,KAAM5f,GAAK8c,YAGpB+C,aAAc,CAAC,IAAM7f,GAAK2c,KAG1BmD,mBAAoB,CAAC,QAAS9f,GAAK0E,QACnCqb,uBAAwB,CAAC,KAAM/f,GAAK0E,QACpCsb,uBAAwB,CAAC,KAAMhgB,GAAK0E,QACpCub,uBAAwB,CAAC,KAAMjgB,GAAK0E,QAEpCwb,sBAAuB,CAAC5D,KAAuBtc,GAAK0E,QACpDyb,wBAAyB,CAAC3D,KAAyBxc,GAAK0E,QAExD0b,UAAW,CACP,+EACApgB,GAAK0E,QAGT2b,kBAAmB,CAAC,+BAAgCrgB,GAAK0E,QACzD4b,wBAAyB,CAAC,mBAAoBtgB,GAAK0E,QACnD6b,0BAA2B,CAAC,qBAAsBvgB,GAAK0E,QACvD8b,uBAAwB,CAAC,eAAgBxgB,GAAK0E,QAC9C+b,qBAAsB,CAAC,gBAAiBzgB,GAAK0E,QAC7Cgc,iBAAkB,CAAC,UAAW1gB,GAAK0E,QACnCic,eAAgB,CAAC,QAAS3gB,GAAK0E,QAC/Bkc,mBAAoB,CAAC,oBAAqB5gB,GAAK0E,QAC/Cmc,iBAAkB,CAAC,UAAW7gB,GAAK0E,QACnCoc,qBAAsB,CAAC,sBAAuB9gB,GAAK0E,QACnDqc,oBAAqB,CAAC,YAAa/gB,GAAK0E,QACxCsc,4BAA6B,CAAC,kBAAmBhhB,GAAK0E,QACtDuc,2BAA4B,CAAC,mBAAoBjhB,GAAK0E,QACtDwc,yBAA0B,CAAC,sBAAuBlhB,GAAK0E,QACvDyc,+BAAgC,CAAC,sBAAuBnhB,GAAK0E,QAE7D0c,iBAAkB,CAAC,gBAAiBphB,GAAK0E,QACzC2c,gBAAiB,CAAC,eAAgBrhB,GAAK0E,QACvC4c,eAAgB,CAAC,cAAethB,GAAK0E,QAErC6c,sBAAuB,CAAC,SAAUvhB,GAAK0E,QACvC8c,yBAA0B,CAAC,QAASxhB,GAAK0E,QACzC+c,yBAA0B,CAAC,QAASzhB,GAAK0E,QACzCgd,+BAAgC,CAAC,SAAU1hB,GAAK0E,QAChDid,8BAA+B,CAAC,OAAQ3hB,GAAK0E,QAC7Ckd,+BAAgC,CAAC,QAAS5hB,GAAK0E,QAC/Cmd,uBAAwB,CAAC,SAAU7hB,GAAK0E,QAGxCod,WAAY,CACR,6UACA9hB,GAAK0E,QAGTqd,YAAa,CACT,yTACA/hB,GAAK0E,QAGTsd,UAAW,CACP,8YACAhiB,GAAK0E,QAGTud,SAAU,CACN,kZACAjiB,GAAK0E,QAGTwd,SAAU,CACN,oQACAliB,GAAK0E,QAITyd,OAAQ,CAAC,KAAMniB,GAAK+E,UACpBqd,UAAW,CAAC,KAAMpiB,GAAK+E,UACvBpa,QAAS,CAAC,KAAMqV,GAAK+E,UACrBsd,eAAgB,CAAC,KAAMriB,GAAK+E,UAC5Bud,WAAY,CAAC,KAAMtiB,GAAK+E,UACxBwd,eAAgB,CAAC,KAAMviB,GAAK+E,UAC5Byd,kBAAmB,CAAC,KAAMxiB,GAAK+E,UAC/B0d,UAAW,CAAC,KAAMziB,GAAK+E,UACvB2d,mBAAoB,CAAC,KAAM1iB,GAAK+E,UAChC4d,sBAAuB,CAAC,KAAM3iB,GAAK+E,UACnC6d,mBAAoB,CAAC,KAAM5iB,GAAK+E,UAChC8d,oBAAqB,CAAC,KAAM7iB,GAAK+E,UACjC+d,cAAe,CAAC,KAAM9iB,GAAK+E,UAC3Bge,eAAgB,CAAC,KAAM/iB,GAAK+E,UAC5Bie,aAAc,CAAC,KAAMhjB,GAAK+E,UAC1Bke,cAAe,CAAC,KAAMjjB,GAAK+E,UAC3Bme,cAAe,CAAC,KAAMljB,GAAK+E,UAC3Boe,eAAgB,CAAC,KAAMnjB,GAAK+E,UAG5Bqe,eAAgB,CAAC,KAAMpjB,GAAK+E,UAC5Bse,cAAe,CAAC,KAAMrjB,GAAK+E,UAC3Bue,iBAAkB,CAAC,KAAMtjB,GAAK+E,UAC9Bwe,kBAAmB,CAAC,KAAMvjB,GAAK+E,UAG/Bye,iBAAkB,CAAC,KAAMxjB,GAAK0E,QAC9B+e,sBAAuB,CAAC,KAAMzjB,GAAK0E,QACnCgf,0BAA2B,CAAC,KAAM1jB,GAAK0E,QACvCif,8BAA+B,CAAC,OAAQ3jB,GAAK0E,QAC7Ckf,+BAAgC,CAAC,QAAS5jB,GAAK0E,QAC/Cmf,2BAA4B,CAAC,QAAS7jB,GAAK0E,QAC3Cof,+BAAgC,CAAC,QAAS9jB,GAAK0E,QAC/Cqf,2BAA4B,EAAC,EAAO/jB,GAAKiC,SAGzC+hB,MAAO,CAAC,GAAIhkB,GAAKwE,OAGjByf,QAAS,CAAC,CAAC,oBAAqB,oBAAqBjkB,GAAKwE,QAG1D0f,GAAiB,SAAwB3M,EAAO7W,GAEhD,OAAIsT,EAAQtT,GACD6W,EAAM,IAAM,KAInB/C,GAAM9T,GACC6W,EAAM7W,IAAU,MAIN,kBAAVA,IACPA,EAAQA,EAAM7N,IAKd0kB,EAAM4M,MAAK,SAAS3jB,GAChB,OAAOA,EAAK3N,KAAO6N,CACtB,KAAK,KAEb,EAEG0jB,GAAkC,SAAyCC,GAC3E,GAAIrQ,EAAQqQ,GACR,OAAOA,EAEX,GAAI,IAAI3rB,KAAK2rB,GAAc,CACvB,IAAIhtB,EAAQgtB,EAAYhiC,MAAM,KAC9B,OAAOgV,EAAM,GAAKA,EAAM,EAC3B,CACD,OAAOkd,WAAW8P,EACrB,EAEGC,GAAiB,SAAwB/M,GACzC,OAAOA,EAAM3Z,QAAO,SAAS4C,GACzB,OAAQA,EAAK+jB,QAChB,GACJ,EAEGC,GAAS,CACTC,MAAO,EACPhJ,KAAM,EACNiJ,MAAO,EACPC,KAAM,EACNC,MAAO,GAGPC,GAAM,KACNC,GAAqB,WACrB,GAAY,OAARD,GACA,IACI,IAAIE,EAAe,IAAIC,aACvBD,EAAaxN,MAAM7K,IAAI,IAAIuY,KAAK,CAAC,eAAgB,mBACjD,IAAIhqB,EAAK7C,SAASa,cAAc,SAChCgC,EAAG7B,aAAa,OAAQ,QACxB6B,EAAG+oB,MAAQe,EAAaf,MACxBa,GAA0B,IAApB5pB,EAAG+oB,MAAM1hC,MAGlB,CAFC,MAAOuH,GACLg7B,IAAM,CACT,CAEL,OAAOA,EACV,EAEGK,GAAa,CACb3J,GAAWS,WACXT,GAAWM,iBACXN,GAAWO,yBAGXqJ,GAAY,CACZ5J,GAAWQ,QACXR,GAAWI,WACXJ,GAAWG,kBACXH,GAAWC,MAGX4J,GAAa,CAAC7J,GAAWK,qBAEzByJ,GAAqB,SAA4B7kB,GACjD,OAAO0kB,GAAWzmB,SAAS+B,EAAK9W,OACnC,EACG47B,GAAoB,SAA2B9kB,GAC/C,OAAO2kB,GAAU1mB,SAAS+B,EAAK9W,OAClC,EACG67B,GAAqB,SAA4B/kB,GACjD,OAAO4kB,GAAW3mB,SAAS+B,EAAK9W,OACnC,EAEG87B,GAAU,SAAiBlgB,GAC3B,OACIzP,GAASyP,EAAM3S,QAAQitB,UACtB/pB,GAASyP,EAAM3S,QAAQitB,OAAO5qB,UAAYwH,GAAW8I,EAAM3S,QAAQitB,OAAO5qB,SAElF,EAEGoQ,GAAU,SAAiBE,GAC3B,MAAO,CACHmgB,WAAY,WACR,IAAIlO,EAAQ+M,GAAehf,EAAMiS,OAC7BkN,EAAQD,GAAOC,MACfC,EAAQF,GAAOE,MACfC,EAAOH,GAAOG,KACdlJ,EAAO+I,GAAO/I,KACdmJ,EAAQJ,GAAOI,MAEnB,OAAqB,IAAjBrN,EAAMj1B,OAAqBmiC,EAE3BlN,EAAMvU,KAAKqiB,IAA4BX,EAEvCnN,EAAMvU,KAAKsiB,IAA2BX,EAEtCpN,EAAMvU,KAAKuiB,IAA4BX,EAEpCnJ,CACV,EAEDiK,SAAU,SAAkBhlB,GACxB,OAAOwjB,GAAe5e,EAAMiS,MAAO7W,EACtC,EAEDilB,gBAAiB,SAAyBjlB,GACtC,OAAOwjB,GAAeI,GAAehf,EAAMiS,OAAQ7W,EACtD,EAEDklB,iBAAkB,WACd,OAAOtB,GAAehf,EAAMiS,MAC/B,EAEDsO,UAAW,WACP,OAAOvgB,EAAMiS,KAChB,EAEDuO,cAAe,SAAuBplB,GAClC,IAAIF,EAAO0jB,GAAe5e,EAAMiS,MAAO7W,GACvC,OAAOF,EAAOA,EAAK2C,SAAW,IACjC,EAED4iB,cAAe,SAAuBrlB,GAClC,IAAIF,EAAO0jB,GAAe5e,EAAMiS,MAAO7W,GACvC,OAAOF,EAAOA,EAAKwlB,SAAW,IACjC,EAEDC,WAAY,WACR,OAAOj0B,OAAOsC,KAAKgR,EAAM3S,SACpBiL,QAAO,SAASnS,GACb,MAAO,SAASiN,KAAKjN,EACxB,IACAwV,KAAI,SAAS+V,GACV,MAAO,CACH3nB,KAAM2nB,EACNptB,MAAO0b,EAAM3S,QAAQqkB,GAE5B,GACR,EAEDkP,uBAAwB,WAKpB,MAJoB,SAASxtB,KAAK4M,EAAM3S,QAAQ6wB,kBAE1C,EACAY,GAAgC9e,EAAM3S,QAAQ8wB,sBAEvD,EAED0C,4BAA6B,WACzB,OAAO7gB,EAAM3S,QAAQ+wB,yBACxB,EAED0C,oBAAqB,SAA6B18B,GAC9C,OAAO46B,GAAehf,EAAMiS,OAAO3Z,QAAO,SAAS4C,GAC/C,OAAOA,EAAK9W,SAAWA,CAC1B,GACJ,EAED28B,gBAAiB,WACb,OAAO/B,GAAehf,EAAMiS,OAAOj1B,MACtC,EAEDgkC,yBAA0B,WACtB,OAAOhhB,EAAM3S,QAAQ+rB,aAAeoG,OAAyBU,GAAQlgB,EACxE,EAEDihB,SAAU,WACN,OAAOf,GAAQlgB,EAClB,EAEDkhB,qBAAsB,SAA8B9lB,GAChD,MAAO,CACH+lB,WAAY/lB,EAAM,mCAAgCpV,EAClDo7B,eAAgBhmB,EAAM,uCAAoCpV,EAC1Dq7B,eAAgBjmB,EAAM,uCAAoCpV,EAC1Ds7B,eAAgBlmB,EAAM,uCAAoCpV,EAEjE,EAER,EAEGu7B,GAAiB,SAAwBvhB,GACzC,IAAIwhB,EAAQxC,GAAehf,EAAMiS,OAAOj1B,OAGxC,IAAKgjB,EAAM3S,QAAQwrB,cACf,OAAiB,IAAV2I,EAIX,IAAIC,EAAezhB,EAAM3S,QAAQisB,SACjC,OAAqB,OAAjBmI,GAKAD,EAAQC,CAMf,EAEGC,GAAQ,SAAep9B,EAAOq9B,EAAKC,GACnC,OAAOxyB,KAAKwyB,IAAIxyB,KAAKuyB,IAAIC,EAAKt9B,GAAQq9B,EACzC,EAEGE,GAAc,SAAqB7sB,EAAKvL,EAAOyR,GAC/C,OAAOlG,EAAItL,OAAOD,EAAO,EAAGyR,EAC/B,EAEG4mB,GAAa,SAAoB7P,EAAO/W,EAAMzR,GAC9C,OAAIilB,EAAQxT,GACD,KAIU,qBAAVzR,GACPwoB,EAAMzoB,KAAK0R,GACJA,IAIXzR,EAAQi4B,GAAMj4B,EAAO,EAAGwoB,EAAMj1B,QAG9B6kC,GAAY5P,EAAOxoB,EAAOyR,GAGnBA,EACV,EAEG6mB,GAAkB,SAAyBhrB,GAC3C,MAAO,4GAA4G3D,KAC/G2D,EAEP,EAEGoG,GAAqB,SAA4BrZ,GACjD,OAAOA,EACF/G,MAAM,KACN8Y,MACA9Y,MAAM,KACN0O,OACR,EAEGyR,GAA2B,SAAkCnT,GAC7D,OAAOA,EAAKhN,MAAM,KAAK8Y,KAC1B,EAEGmsB,GAAuB,SAA8Bp7B,GAErD,GAAoB,kBAATA,EACP,MAAO,GAIX,IAAIq7B,EAAUr7B,EAAK7J,MAAM,KAAK8Y,MAG9B,MAAI,MAAMzC,KAAK6uB,GACJ,MAGP,iBAAiB7uB,KAAK6uB,GACf,MAGP,QAAQ7uB,KAAK6uB,GACN,MAGP,SAAS7uB,KAAK6uB,GACP,MAIP,SAAS7uB,KAAK6uB,GAEE,SAAZA,EACO,MAIJA,EAGJ,EACV,EAEGC,GAAU,SAAiB59B,GAC3B,IAAI69B,EAAUxwB,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,GAAmBA,UAAU,GAAK,GAClF,OAAQwwB,EAAU79B,GAAOxD,OAAOqhC,EAAQnlC,OAC3C,EAEGolC,GAAgB,WAChB,IAAI3mC,EAAOkW,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,GAAmBA,UAAU,GAAK,IAAI7V,KACnF,OACIL,EAAKW,cACL,IACA8lC,GAAQzmC,EAAKiB,WAAa,EAAG,MAC7B,IACAwlC,GAAQzmC,EAAKmB,UAAW,MACxB,IACAslC,GAAQzmC,EAAKoB,WAAY,MACzB,IACAqlC,GAAQzmC,EAAK0B,aAAc,MAC3B,IACA+kC,GAAQzmC,EAAK6B,aAAc,KAElC,EAEG+kC,GAAkB,SAAyBC,EAAMzkB,GACjD,IAAIjX,EAAO+K,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,GAAmBA,UAAU,GAAK,KAC3EmM,EAAYnM,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,GAAmBA,UAAU,GAAK,KAChFwI,EACgB,kBAATvT,EACD07B,EAAKxhC,MAAM,EAAGwhC,EAAKjmB,KAAMzV,GACzB07B,EAAKxhC,MAAM,EAAGwhC,EAAKjmB,KAAMimB,EAAK17B,MAmBxC,OAlBAuT,EAAKooB,iBAAmB,IAAIzmC,KAGxBwmC,EAAKE,gBAAeroB,EAAKqoB,cAAgBF,EAAKE,eAG7CzxB,EAAS8M,KACVA,EAAWukB,MAIXvkB,GAA0B,OAAdC,GAAsBZ,GAAyBW,GAC3D1D,EAAKpQ,KAAO8T,GAEZC,EAAYA,GAAakkB,GAAqB7nB,EAAKvT,MACnDuT,EAAKpQ,KAAO8T,GAAYC,EAAY,IAAMA,EAAY,KAGnD3D,CACV,EAEGsoB,GAAiB,WACjB,OAAQnuB,OAAOouB,YACXpuB,OAAOouB,aACPpuB,OAAOquB,mBACPruB,OAAOsuB,gBACPtuB,OAAOuuB,aACd,EAEGC,GAAa,SAAoBC,EAAa1lB,GAC9C,IAAI2lB,EAAKP,KAET,GAAIO,EAAI,CACJ,IAAIC,EAAK,IAAID,EAEb,OADAC,EAAGrtB,OAAOmtB,GACHE,EAAGC,QAAQ7lB,EACrB,CAED,OAAO,IAAIjI,KAAK,CAAC2tB,GAAc,CAC3Bn8B,KAAMyW,GAEb,EAEG8lB,GAAoC,SACpCC,EACA/lB,GAKA,IAHA,IAAIgmB,EAAK,IAAI7rB,YAAY4rB,EAAWpmC,QAChCsmC,EAAK,IAAIjsB,WAAWgsB,GAEfr6B,EAAI,EAAGA,EAAIo6B,EAAWpmC,OAAQgM,IACnCs6B,EAAGt6B,GAAKo6B,EAAWnrB,WAAWjP,GAGlC,OAAO85B,GAAWO,EAAIhmB,EACzB,EAEGkmB,GAA+B,SAAsCC,GACrE,OAAQ,cAAc1uB,KAAK0uB,IAAY,IAAI,IAAM,IACpD,EAEGC,GAAiC,SAAwCD,GAKzE,OAHWA,EAAQzmC,MAAM,KAAK,GAGlB8U,QAAQ,MAAO,GAC9B,EAEG6xB,GAAiC,SAAwCF,GACzE,OAAOG,KAAKF,GAA+BD,GAC9C,EAEGI,GAA2B,SAAkCJ,GAC7D,IAAInmB,EAAWkmB,GAA6BC,GACxCJ,EAAaM,GAA+BF,GAEhD,OAAOL,GAAkCC,EAAY/lB,EACxD,EAEGwmB,GAA2B,SAAkCL,EAAS3lB,EAAUC,GAChF,OAAOukB,GAAgBuB,GAAyBJ,GAAU3lB,EAAU,KAAMC,EAC7E,EAEGgmB,GAAwB,SAA+BxT,GAEvD,IAAK,yBAAyBld,KAAKkd,GAAS,OAAO,KAGnD,IAAIyT,EAAUzT,EACTvzB,MAAM,6BACN2M,OAAO,GACPiS,KAAI,SAAS5R,GACV,OAAOA,EAAKmH,OAAOW,QAAQ,qBAAsB,GACpD,IACAyG,QAAO,SAASvO,GACb,OAAOA,EAAK/M,MACf,IAEL,OAAO+mC,EAAQ/mC,OAASgnC,UAAUD,EAAQA,EAAQ/mC,OAAS,IAAM,IACpE,EAEGinC,GAAwB,SAA+B3T,GACvD,GAAI,mBAAmBld,KAAKkd,GAAS,CACjC,IAAIjU,EAAOiU,EAAOvd,MAAM,UAAU,GAClC,OAAOsJ,EAAO/f,SAAS+f,EAAM,IAAM,IACtC,CACD,OAAO,IACV,EAEG6nB,GAA0B,SAAiC5T,GAC3D,MAAI,0BAA0Bld,KAAKkd,KACrBA,EAAOvzB,MAAM,KAAK,IAAM,IAAImU,QAGnC,IACV,EAEGizB,GAAyB,SAAgCzhC,GACzD,IAAI0hC,EAAO,CACPz6B,OAAQ,KACRI,KAAM,KACNsS,KAAM,MAGNgoB,EAAO3hC,EAAQ3F,MAAM,MACrBunC,GAA4B,EAC5BC,GAAoB,EACpBC,OAAiBx+B,EACrB,IACI,IACI,IAAyCy+B,EAArCC,EAAYL,EAAKzP,OAAOC,cAC1ByP,GAA6BG,EAAQC,EAAUhR,QAAQ9wB,MACzD0hC,GAA4B,EAC9B,CACE,IAAIhU,EAASmU,EAAMngC,MAEfyF,EAAO+5B,GAAsBxT,GACjC,GAAIvmB,EACAq6B,EAAKr6B,KAAOA,MADhB,CAKA,IAAIsS,EAAO4nB,GAAsB3T,GACjC,GAAIjU,EACA+nB,EAAK/nB,KAAOA,MADhB,CAKA,IAAI1S,EAASu6B,GAAwB5T,GACjC3mB,IACAy6B,EAAKz6B,OAASA,EAJjB,CANA,CAaJ,CAcJ,CAbC,MAAOpF,GACLggC,GAAoB,EACpBC,EAAiBjgC,CACpB,CA7BD,QA8BI,IACS+/B,GAAiD,MAApBI,EAAU5Q,QACxC4Q,EAAU5Q,QAMjB,CARD,QAKI,GAAIyQ,EACA,MAAMC,CAEb,CACJ,CAED,OAAOJ,CACV,EAEGO,GAAmB,SAA0BC,GAC7C,IAAI5kB,EAAQ,CACRrW,OAAQ,KACRk7B,UAAU,EACVC,SAAU,EACVzoB,KAAM,KACN+P,UAAW,KACX7G,SAAU,EACVpiB,QAAS,MAGT4hC,EAAc,WACd,OAAO/kB,EAAM8kB,QAChB,EACGj+B,EAAQ,WACJmZ,EAAM7c,SAAW6c,EAAM7c,QAAQ0D,OAC/BmZ,EAAM7c,QAAQ0D,OAErB,EAGGmpB,EAAO,WAEP,IAAIrmB,EAASqW,EAAMrW,OAEnBiX,EAAIyU,KAAK,OAAQ1rB,GAGbA,aAAkBg2B,KAClB/e,EAAIyU,KAAK,OAAQ1rB,GACVA,aAAkByL,KAEzBwL,EAAIyU,KAAK,OAAQgN,GAAgB14B,EAAQA,EAAOI,OACzCg4B,GAAgBp4B,GAEvBiX,EAAIyU,KAAK,OAAQwO,GAAyBl6B,IAG1Cq7B,EAAQr7B,EAEf,EAGGq7B,EAAU,SAAiBlhC,GAEtB8gC,GAWL5kB,EAAMoM,UAAYtwB,KAAKqX,MAGvB6M,EAAM7c,QAAUyhC,EACZ9gC,GACA,SAASI,GAEL8b,EAAMuF,SAAWzpB,KAAKqX,MAAQ6M,EAAMoM,UAGpCpM,EAAM6kB,UAAW,EAGb3gC,aAAoBkR,OACpBlR,EAAWm+B,GACPn+B,EACAA,EAAS6F,MAAQoT,GAAmBrZ,KAI5C8c,EAAIyU,KACA,OAEAnxB,aAAoBkR,KAAOlR,EAAWA,EAAWA,EAAS+gC,KAAO,KAExE,IACD,SAASp5B,GACL+U,EAAIyU,KACA,QACiB,kBAAVxpB,EACD,CACIjF,KAAM,QACNqF,KAAM,EACNg5B,KAAMp5B,GAEVA,EAEb,IACD,SAASq5B,EAAYnN,EAASoN,GAEtBA,IACAnlB,EAAM3D,KAAO8oB,GAIjBnlB,EAAMuF,SAAWzpB,KAAKqX,MAAQ6M,EAAMoM,UAG/B8Y,GAMLllB,EAAM8kB,SAAW/M,EAAUoN,EAG3BvkB,EAAIyU,KAAK,WAAYrV,EAAM8kB,WARvB9kB,EAAM8kB,SAAW,IASxB,IACD,WACIlkB,EAAIyU,KAAK,QACZ,IACD,SAASnxB,GACL,IAAIkhC,EAAWjB,GACS,kBAAbjgC,EAAwBA,EAAWA,EAASxB,SAEvDke,EAAIyU,KAAK,OAAQ,CACbhZ,KAAM2D,EAAM3D,MAAQ+oB,EAAS/oB,KAC7BwB,SAAUunB,EAASr7B,KACnBJ,OAAQy7B,EAASz7B,QAExB,KAjFDiX,EAAIyU,KAAK,QAAS,CACdzuB,KAAM,QACNq+B,KAAM,iBACNh5B,KAAM,KAgFjB,EAEG2U,EAAMlU,OAAOQ,OAAO,CAAC,EAAGma,KAAM,CAC9Bge,UAAW,SAAmB17B,GAC1B,OAAQqW,EAAMrW,OAASA,CAC1B,EACDo7B,YAAaA,EACbl+B,MAAOA,EACPmpB,KAAMA,IAGV,OAAOpP,CACV,EAEG0kB,GAAQ,SAAe7gC,GACvB,MAAO,WAAW2O,KAAK3O,EAC1B,EAEG8gC,GAAc,SAAqB/iC,EAAMsB,EAAKuJ,GAC9C,IAAIuT,EAAM,CACN4kB,UAAW,WAAuB,EAClCC,WAAY,WAAwB,EACpCrV,OAAQ,WAAoB,EAC5B7qB,UAAW,WAAuB,EAClCF,QAAS,WAAqB,EAC9BF,QAAS,WAAqB,EAC9B0B,MAAO,WACHE,GAAU,EACV2+B,EAAI7+B,OACP,GAIDE,GAAU,EACV4+B,GAAkB,EAGtBt4B,EAAUX,OAAOQ,OACb,CACIzI,OAAQ,OACR/B,QAAS,CAAC,EACVmD,iBAAiB,GAErBwH,GAIJvJ,EAAM8hC,UAAU9hC,GAIZwhC,GAAMj4B,EAAQ5I,SAAWjC,IACzBsB,EACI,GACAA,EACAL,mBAAmC,kBAATjB,EAAoBA,EAAOwO,KAAKI,UAAU5O,KAI5E,IAAIkjC,EAAM,IAAItiC,eAwFd,OArFckiC,GAAMj4B,EAAQ5I,QAAUihC,EAAMA,EAAIh/B,QACxC++B,WAAa,SAASt0B,GAEtBpK,GAIJ6Z,EAAI6kB,WAAWt0B,EAAE00B,iBAAkB10B,EAAE20B,OAAQ30B,EAAEg0B,MAClD,EAGDO,EAAI5gC,mBAAqB,WAEjB4gC,EAAI3gC,WAAa,GAKE,IAAnB2gC,EAAI3gC,YAAmC,IAAf2gC,EAAIthC,QAI5BuhC,IAIJA,GAAkB,EAGlB/kB,EAAI4kB,UAAUE,GACjB,EAGDA,EAAItV,OAAS,WAELsV,EAAIthC,QAAU,KAAOshC,EAAIthC,OAAS,IAClCwc,EAAIwP,OAAOsV,GAEX9kB,EAAIvb,QAAQqgC,EAEnB,EAGDA,EAAIrgC,QAAU,WACV,OAAOub,EAAIvb,QAAQqgC,EACtB,EAGDA,EAAIvgC,QAAU,WACV4B,GAAU,EACV6Z,EAAIzb,SACP,EAGDugC,EAAIngC,UAAY,WACZ,OAAOqb,EAAIrb,UAAUmgC,EACxB,EAGDA,EAAIlhC,KAAK6I,EAAQ5I,OAAQX,GAAK,GAG1BorB,GAAM7hB,EAAQxI,WACd6gC,EAAI7gC,QAAUwI,EAAQxI,SAI1B6H,OAAOsC,KAAK3B,EAAQ3K,SAASwD,SAAQ,SAASC,GAC1C,IAAI7B,EAAQd,SAASC,mBAAmB4J,EAAQ3K,QAAQyD,KACxDu/B,EAAIr/B,iBAAiBF,EAAK7B,EAC7B,IAGG+I,EAAQ1K,eACR+iC,EAAI/iC,aAAe0K,EAAQ1K,cAI3B0K,EAAQxH,kBACR6/B,EAAI7/B,iBAAkB,GAI1B6/B,EAAIx+B,KAAK1E,GAEFoe,CACV,EAEGmlB,GAAiB,SAAwBn/B,EAAMqF,EAAMg5B,EAAMviC,GAC3D,MAAO,CACHkE,KAAMA,EACNqF,KAAMA,EACNg5B,KAAMA,EACNviC,QAASA,EAEhB,EAEGsjC,GAAwB,SAA+B9rB,GACvD,OAAO,SAASwrB,GACZxrB,EAAG6rB,GAAe,QAAS,EAAG,UAAWL,EAAIzhC,yBAChD,CACJ,EAEGgiC,GAAQ,SAAelvB,GACvB,MAAO,KAAK3D,KAAK2D,EACpB,EACGrV,GAAW,WAEX,IADA,IAAIoC,EAAM,GACD2c,EAAO9O,UAAU3U,OAAQ+U,EAAQ,IAAIxG,MAAMkV,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC9E3O,EAAM2O,GAAQ/O,UAAU+O,GAK5B,OAHA3O,EAAM7L,SAAQ,SAASqsB,GACnBzuB,GAAOmiC,GAAMniC,IAAQmiC,GAAM1T,GAAQA,EAAK1gB,QAAQ,KAAM,KAAO0gB,CAChE,IACMzuB,CACV,EAEGoiC,GAAsB,WACtB,IAAIC,EAASx0B,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,GAAmBA,UAAU,GAAK,GAC7EyK,EAASzK,UAAU3U,OAAS,EAAI2U,UAAU,QAAK3L,EAEnD,GAAsB,oBAAXoW,EACP,OAAOA,EAIX,IAAKA,IAAWrL,EAASqL,EAAOtY,KAC5B,OAAO,KAIX,IAAIssB,EACAhU,EAAOgU,QACP,SAASmP,GACL,OAAOA,CACV,EACDl6B,EACA+W,EAAO/W,SACP,SAASk6B,GACL,OAAO,IACV,EAGL,OAAO,SAASz7B,EAAKksB,EAAMnkB,EAAOi5B,EAAUj+B,EAAOnE,GAE/C,IAAIS,EAAUoiC,GACVzhC,EACApC,GAASykC,EAAQ/pB,EAAOtY,KACxB4I,OAAOQ,OAAO,CAAC,EAAGkP,EAAQ,CACtBzZ,aAAc,UA4CtB,OAxCAQ,EAAQitB,OAAS,SAASsV,GAEtB,IAAIhjC,EAAUgjC,EAAIzhC,wBAGd4Z,EAAWsmB,GAAuBzhC,GAASqH,MAAQoT,GAAmBrZ,GAG1EksB,EACI+V,GACI,OACAL,EAAIthC,OACc,SAAlBgY,EAAO3X,OACD,KACA49B,GAAgBjS,EAAOsV,EAAIxhC,UAAW2Z,GAC5Cnb,GAGX,EAEDS,EAAQkC,QAAU,SAASqgC,GACvB75B,EACIk6B,GACI,QACAL,EAAIthC,OACJiB,EAAQqgC,EAAIxhC,WAAawhC,EAAIrhC,WAC7BqhC,EAAIzhC,yBAGf,EAEDd,EAAQqiC,UAAY,SAASE,GACzBhjC,EAAQqjC,GAAe,UAAWL,EAAIthC,OAAQ,KAAMshC,EAAIzhC,yBAC3D,EAEDd,EAAQoC,UAAYygC,GAAsBn6B,GAC1C1I,EAAQsiC,WAAaX,EACrB3hC,EAAQgC,QAAU0B,EAGX1D,CACV,CACJ,EAEGijC,GAAc,CACdC,OAAQ,EACRC,SAAU,EACVjQ,WAAY,EACZ+I,MAAO,EACPmH,QAAS,GAaTC,GAAqB,SACrBL,EACA/pB,EACArS,EACAoQ,EACAsB,EACAuU,EACAnkB,EACAi5B,EACAj+B,EACA4/B,EACAp5B,GA8GA,IA3GA,IAAIq5B,EAAS,GACTC,EAAkBt5B,EAAQs5B,gBAC1BC,EAAcv5B,EAAQu5B,YACtBxM,EAAY/sB,EAAQ+sB,UACpBC,EAAmBhtB,EAAQgtB,iBAG3Bra,EAAQ,CACR6mB,SAAUF,EACV5/B,SAAS,GAITspB,EACAjU,EAAOiU,QACP,SAASyW,GACL,OAAOA,CACV,EACD1W,EACAhU,EAAOgU,QACP,SAASsV,EAAKjhC,GACV,MAAkB,SAAXA,EAAoBihC,EAAIqB,kBAAkB,iBAAmBrB,EAAIxhC,QAC3E,EACDmB,EACA+W,EAAO/W,SACP,SAASk6B,GACL,OAAO,IACV,EAGDyH,EAAoB,SAA2B9sB,GAC/C,IAAIjF,EAAW,IAAItE,SAGfJ,GAASkL,IAAWxG,EAASW,OAAO7L,EAAMiH,KAAKI,UAAUqK,IAE7D,IAAI/Y,EAC0B,oBAAnB0Z,EAAO1Z,QACR0Z,EAAO1Z,QAAQyX,EAAMsB,GACrB/O,OAAOQ,OAAO,CAAC,EAAGkP,EAAO1Z,QAAS,CAC9B,gBAAiByX,EAAKkC,OAGhC4qB,EAAgBv6B,OAAOQ,OAAO,CAAC,EAAGkP,EAAQ,CAC1C1Z,QAASA,IAITS,EAAUoiC,GACVlV,EAAOpb,GACPvT,GAASykC,EAAQ/pB,EAAOtY,KACxBmjC,GAGJ9jC,EAAQitB,OAAS,SAASsV,GACtB,OAAOxrB,EAAGkW,EAAOsV,EAAKuB,EAAcxiC,QACvC,EAEDtB,EAAQkC,QAAU,SAASqgC,GACvB,OAAO75B,EACHk6B,GACI,QACAL,EAAIthC,OACJiB,EAAQqgC,EAAIxhC,WAAawhC,EAAIrhC,WAC7BqhC,EAAIzhC,yBAGf,EAEDd,EAAQoC,UAAYygC,GAAsBn6B,EAC7C,EAEGq7B,EAAwB,SAA+BhtB,GACvD,IAAIitB,EAAazlC,GAASykC,EAAQS,EAAY9iC,IAAKkc,EAAM6mB,UAOrDI,EAAgB,CAChBvkC,QAL0B,oBAAnB0Z,EAAO1Z,QACR0Z,EAAO1Z,QAAQsd,EAAM6mB,UACrBn6B,OAAOQ,OAAO,CAAC,EAAGkP,EAAO1Z,SAI/B+B,OAAQ,QAGRtB,EAAUoiC,GAAY,KAAM4B,EAAYF,GAE5C9jC,EAAQitB,OAAS,SAASsV,GACtB,OAAOxrB,EAAGkW,EAAOsV,EAAKuB,EAAcxiC,QACvC,EAEDtB,EAAQkC,QAAU,SAASqgC,GACvB,OAAO75B,EACHk6B,GACI,QACAL,EAAIthC,OACJiB,EAAQqgC,EAAIxhC,WAAawhC,EAAIrhC,WAC7BqhC,EAAIzhC,yBAGf,EAEDd,EAAQoC,UAAYygC,GAAsBn6B,EAC7C,EAGGu7B,EAAiBh4B,KAAKC,MAAM8K,EAAKkC,KAAO+d,GACnCpxB,EAAI,EAAGA,GAAKo+B,EAAgBp+B,IAAK,CACtC,IAAItN,EAASsN,EAAIoxB,EACb53B,EAAO2X,EAAKrZ,MAAMpF,EAAQA,EAAS0+B,EAAW,mCAClDsM,EAAO19B,GAAK,CACRS,MAAOT,EACPqT,KAAM7Z,EAAK6Z,KACX3gB,OAAQA,EACR8G,KAAMA,EACN2X,KAAMA,EACN2qB,SAAU,EACVuC,QAAS/S,GAAmB+F,GAC5Bj2B,OAAQgiC,GAAYC,OACpBx6B,MAAO,KACP1I,QAAS,KACT0B,QAAS,KAEhB,CAED,IAAIyiC,EAA2B,WAC3B,OAAOtX,EAAKhQ,EAAM6mB,SACrB,EAEGU,EAAkB,SAAyBC,GAC3C,OAAOA,EAAMpjC,SAAWgiC,GAAYC,QAAUmB,EAAMpjC,SAAWgiC,GAAYhH,KAC9E,EAEGqI,EAAe,SAAsBD,GAErC,IAAIxnB,EAAMjZ,QAMV,GAHAygC,EAAQA,GAASd,EAAO7H,KAAK0I,GAG7B,CAeAC,EAAMpjC,OAASgiC,GAAY/P,WAC3BmR,EAAM1C,SAAW,KAGjB,IAAIzU,EACAuW,EAAYvW,QACZ,SAASyW,GACL,OAAOA,CACV,EACDzhC,EACAuhC,EAAYvhC,SACZ,SAASk6B,GACL,OAAO,IACV,EAGD4H,EAAazlC,GAASykC,EAAQS,EAAY9iC,IAAKkc,EAAM6mB,UAErDnkC,EAC+B,oBAAxBkkC,EAAYlkC,QACbkkC,EAAYlkC,QAAQ8kC,GACpB96B,OAAOQ,OAAO,CAAC,EAAG05B,EAAYlkC,QAAS,CACnC,eAAgB,kCAChB,gBAAiB8kC,EAAM9rC,OACvB,gBAAiBye,EAAKkC,KACtB,cAAelC,EAAKpQ,OAG9B5G,EAAWqkC,EAAMrkC,QAAUoiC,GAC3BlV,EAAOmX,EAAMhlC,MACb2kC,EACAz6B,OAAOQ,OAAO,CAAC,EAAG05B,EAAa,CAC3BlkC,QAASA,KAIjBS,EAAQitB,OAAS,WAEboX,EAAMpjC,OAASgiC,GAAYE,SAG3BkB,EAAMrkC,QAAU,KAGhBukC,GACH,EAEDvkC,EAAQsiC,WAAa,SAASI,EAAkBC,EAAQX,GACpDqC,EAAM1C,SAAWe,EAAmBC,EAAS,KAC7C6B,GACH,EAEDxkC,EAAQkC,QAAU,SAASqgC,GACvB8B,EAAMpjC,OAASgiC,GAAYhH,MAC3BoI,EAAMrkC,QAAU,KAChBqkC,EAAM37B,MAAQxG,EAAQqgC,EAAIxhC,WAAawhC,EAAIrhC,WACtCujC,EAAkBJ,IACnB37B,EACIk6B,GACI,QACAL,EAAIthC,OACJiB,EAAQqgC,EAAIxhC,WAAawhC,EAAIrhC,WAC7BqhC,EAAIzhC,yBAInB,EAEDd,EAAQoC,UAAY,SAASmgC,GACzB8B,EAAMpjC,OAASgiC,GAAYhH,MAC3BoI,EAAMrkC,QAAU,KACXykC,EAAkBJ,IACnBxB,GAAsBn6B,EAAtBm6B,CAA6BN,EAEpC,EAEDviC,EAAQgC,QAAU,WACdqiC,EAAMpjC,OAASgiC,GAAYC,OAC3BmB,EAAMrkC,QAAU,KAChB0D,GACH,CAnFA,MATO6/B,EAAOmB,OAAM,SAASL,GAClB,OAAOA,EAAMpjC,SAAWgiC,GAAYE,QACvC,KAEDgB,GAyFX,EAEGM,EAAoB,SAA2BJ,GAE/C,OAA6B,IAAzBA,EAAMH,QAAQrqC,SAGlBwqC,EAAMpjC,OAASgiC,GAAYG,QAC3BxY,aAAayZ,EAAM3iC,SACnB2iC,EAAM3iC,QAAUK,YAAW,WACvBuiC,EAAaD,EAChB,GAAEA,EAAMH,QAAQ57B,UAGV,EACV,EAEGk8B,EAAsB,WAEtB,IAAIG,EAAuBpB,EAAO5O,QAAO,SAASzS,EAAGmiB,GACjD,OAAU,OAANniB,GAAiC,OAAnBmiB,EAAM1C,SAA0B,KAC3Czf,EAAImiB,EAAM1C,QACpB,GAAE,GAGH,GAA6B,OAAzBgD,EAA+B,OAAOhD,GAAS,EAAO,EAAG,GAG7D,IAAIiD,EAAYrB,EAAO5O,QAAO,SAASqN,EAAOqC,GAC1C,OAAOrC,EAAQqC,EAAMnrB,IACxB,GAAE,GAGHyoB,GAAS,EAAMgD,EAAsBC,EACxC,EAGGL,EAAgB,WACMhB,EAAOpuB,QAAO,SAASkvB,GACzC,OAAOA,EAAMpjC,SAAWgiC,GAAY/P,UACvC,IAAEr5B,QACoB,GACvByqC,GACH,EAEGO,EAAc,WACdtB,EAAOxgC,SAAQ,SAASshC,GACpBzZ,aAAayZ,EAAM3iC,SACf2iC,EAAMrkC,SACNqkC,EAAMrkC,QAAQ0D,OAErB,GACJ,EAmCD,OAhCKmZ,EAAM6mB,SAaPK,GAAsB,SAASxrC,GAEvBskB,EAAMjZ,UAGV2/B,EACKpuB,QAAO,SAASkvB,GACb,OAAOA,EAAM9rC,OAASA,CACzB,IACAwK,SAAQ,SAASshC,GACdA,EAAMpjC,OAASgiC,GAAYE,SAC3BkB,EAAM1C,SAAW0C,EAAMnrB,IAC1B,IAGLqrB,IACH,IA5BDV,GAAkB,SAASH,GAEnB7mB,EAAMjZ,UAGV0/B,EAASI,GAGT7mB,EAAM6mB,SAAWA,EACjBa,IACH,IAqBE,CACH7gC,MAAO,WACHmZ,EAAMjZ,SAAU,EAChBihC,GACH,EAER,EAUGC,GAA8B,SAC9B9B,EACA/pB,EACArS,EACAsD,GAEA,OAAO,SAAS8M,EAAMsB,EAAUuU,EAAMnkB,EAAOi5B,EAAUj+B,EAAO4/B,GAE1D,GAAKtsB,EAAL,CAGA,IAAI+tB,EAAiB76B,EAAQ6sB,aACzBiO,EAAoBD,GAAkB/tB,EAAKkC,KAAOhP,EAAQ+sB,UAC1DgO,EAAkBF,IAAmBC,GAAqB96B,EAAQ8sB,YACtE,GAAIhgB,aAAgB/E,MAAQgzB,EACxB,OAAO5B,GACHL,EACA/pB,EACArS,EACAoQ,EACAsB,EACAuU,EACAnkB,EACAi5B,EACAj+B,EACA4/B,EACAp5B,GAIR,IAAIgjB,EACAjU,EAAOiU,QACP,SAASyW,GACL,OAAOA,CACV,EACD1W,EACAhU,EAAOgU,QACP,SAASmP,GACL,OAAOA,CACV,EACDl6B,EACA+W,EAAO/W,SACP,SAASk6B,GACL,OAAO,IACV,EAED78B,EAC0B,oBAAnB0Z,EAAO1Z,QACR0Z,EAAO1Z,QAAQyX,EAAMsB,IAAa,CAAC,EACnC/O,OAAOQ,OACH,CAAC,EAEDkP,EAAO1Z,SAGjBukC,EAAgBv6B,OAAOQ,OAAO,CAAC,EAAGkP,EAAQ,CAC1C1Z,QAASA,IAITuS,EAAW,IAAItE,SAGfJ,GAASkL,IACTxG,EAASW,OAAO7L,EAAMiH,KAAKI,UAAUqK,KAIxCtB,aAAgB/E,KAAO,CAAC,CAAErL,KAAM,KAAMoQ,KAAMA,IAAUA,GAAMjU,SAAQ,SAASgV,GAC1EjG,EAASW,OACL7L,EACAmR,EAAKf,KACS,OAAde,EAAKnR,KAAgBmR,EAAKf,KAAKpQ,KAAO,GAAKmR,EAAKnR,KAAOmR,EAAKf,KAAKpQ,KAExE,IAGD,IAAI5G,EAAUoiC,GACVlV,EAAOpb,GACPvT,GAASykC,EAAQ/pB,EAAOtY,KACxBmjC,GA6BJ,OA3BA9jC,EAAQitB,OAAS,SAASsV,GACtB1V,EACI+V,GACI,OACAL,EAAIthC,OACJgsB,EAAOsV,EAAIxhC,UACXwhC,EAAIzhC,yBAGf,EAEDd,EAAQkC,QAAU,SAASqgC,GACvB75B,EACIk6B,GACI,QACAL,EAAIthC,OACJiB,EAAQqgC,EAAIxhC,WAAawhC,EAAIrhC,WAC7BqhC,EAAIzhC,yBAGf,EAEDd,EAAQoC,UAAYygC,GAAsBn6B,GAC1C1I,EAAQsiC,WAAaX,EACrB3hC,EAAQgC,QAAU0B,EAGX1D,CArGU,CAsGpB,CACJ,EAEGklC,GAA0B,WAC1B,IAAIlC,EAASx0B,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,GAAmBA,UAAU,GAAK,GAC7EyK,EAASzK,UAAU3U,OAAS,EAAI2U,UAAU,QAAK3L,EAC/C+D,EAAO4H,UAAU3U,OAAS,EAAI2U,UAAU,QAAK3L,EAC7CqH,EAAUsE,UAAU3U,OAAS,EAAI2U,UAAU,QAAK3L,EAGpD,MAAsB,oBAAXoW,EACA,WACH,IACI,IAAIqE,EAAO9O,UAAU3U,OAAQ2H,EAAS,IAAI4G,MAAMkV,GAAOC,EAAO,EAC9DA,EAAOD,EACPC,IAEA/b,EAAO+b,GAAQ/O,UAAU+O,GAE7B,OAAOtE,EAAO5Q,WAAM,EAAQ,CAACzB,GAAMtN,OAAOkI,EAAQ,CAAC0I,IACtD,EAGA+O,GAAWrL,EAASqL,EAAOtY,KAGzBmkC,GAA4B9B,EAAQ/pB,EAAQrS,EAAMsD,GAHZ,IAIhD,EAMGi7B,GAAuB,WACvB,IAAInC,EAASx0B,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,GAAmBA,UAAU,GAAK,GAC7EyK,EAASzK,UAAU3U,OAAS,EAAI2U,UAAU,QAAK3L,EAEnD,GAAsB,oBAAXoW,EACP,OAAOA,EAIX,IAAKA,IAAWrL,EAASqL,EAAOtY,KAC5B,OAAO,SAASykC,EAAcvY,GAC1B,OAAOA,GACV,EAIL,IAAII,EACAhU,EAAOgU,QACP,SAASmP,GACL,OAAOA,CACV,EACDl6B,EACA+W,EAAO/W,SACP,SAASk6B,GACL,OAAO,IACV,EAGL,OAAO,SAASgJ,EAAcvY,EAAMnkB,GAChC,IAAI1I,EAAUoiC,GACVgD,EACApC,EAAS/pB,EAAOtY,IAChBsY,GA0BJ,OAxBAjZ,EAAQitB,OAAS,SAASsV,GACtB1V,EACI+V,GACI,OACAL,EAAIthC,OACJgsB,EAAOsV,EAAIxhC,UACXwhC,EAAIzhC,yBAGf,EAEDd,EAAQkC,QAAU,SAASqgC,GACvB75B,EACIk6B,GACI,QACAL,EAAIthC,OACJiB,EAAQqgC,EAAIxhC,WAAawhC,EAAIrhC,WAC7BqhC,EAAIzhC,yBAGf,EAEDd,EAAQoC,UAAYygC,GAAsBn6B,GAEnC1I,CACV,CACJ,EAEGqlC,GAAkB,WAClB,IAAI7G,EAAMhwB,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,GAAmBA,UAAU,GAAK,EAC1EiwB,EAAMjwB,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,GAAmBA,UAAU,GAAK,EAC9E,OAAOgwB,EAAMvyB,KAAK8jB,UAAY0O,EAAMD,EACvC,EAEG8G,GAAoC,SAA2CvuB,GAC/E,IAAIqL,EAAW5T,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,GAAmBA,UAAU,GAAK,IAE/E+2B,EAAU/2B,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,GAAmBA,UAAU,GAAK,GAC9Eg3B,EAAUh3B,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,GAAmBA,UAAU,GAAK,IAC9E9M,EAAU,KACV+gB,EAAQ9pB,KAAKqX,MAuBjB,OAFIoS,EAAW,GAnBJ,SAASsI,IAChB,IAAI+a,EAAU9sC,KAAKqX,MAAQyS,EACvBD,EAAQ6iB,GAAgBE,EAASC,GAEjCC,EAAUjjB,EAAQJ,IAClBI,EAAQijB,EAAUjjB,EAAQJ,GAG9B,IAAIuf,EAAW8D,EAAUrjB,EACrBuf,GAAY,GAAKhyB,SAASwN,OAC1BpG,EAAG,IAIPA,EAAG4qB,GAEHjgC,EAAUK,WAAW2oB,EAAMlI,GAC9B,CAEiBkI,GAEX,CACHgb,MAAO,WACH9a,aAAalpB,EAChB,EAER,EAEGikC,GAAsB,SAA6BC,EAAW17B,GAC9D,IAAI2S,EAAQ,CACR6kB,UAAU,EACVmE,kBAAmB,EACnBC,4BAA6B,KAC7BnE,SAAU,KACV1Y,UAAW,KACX8c,kBAAmB,EACnB3jB,SAAU,EACVpiB,QAAS,KACTe,SAAU,MAEV+1B,EAA6B5sB,EAAQ4sB,2BAErCvqB,EAAU,SAAiByK,EAAMsB,GACjC,IAAI0tB,EAAa,WAIU,IAAnBnpB,EAAMuF,UAAqC,OAAnBvF,EAAM8kB,UAGlClkB,EAAIyU,KAAK,WAAYzU,EAAImkB,cAC5B,EAEGqE,EAAa,WACbppB,EAAM6kB,UAAW,EACjBjkB,EAAIyU,KAAK,iBAAkBrV,EAAM9b,SAAS+gC,KAC7C,EAGDrkB,EAAIyU,KAAK,SAGTrV,EAAMoM,UAAYtwB,KAAKqX,MAGvB6M,EAAMipB,4BAA8BR,IAChC,SAAS3D,GACL9kB,EAAMgpB,kBAAoBlE,EAC1B9kB,EAAMkpB,kBAAoBptC,KAAKqX,MAAQ6M,EAAMoM,UAE7C+c,IAIInpB,EAAM9b,UAAwC,IAA5B8b,EAAMgpB,oBAA4BhpB,EAAM6kB,UAE1DuE,GAEP,GAGDnP,EAA6BuO,GAAgB,IAAK,MAAQ,GAI9DxoB,EAAM7c,QAAU4lC,EAEZ5uB,EAGAsB,GAKA,SAASvX,GAGL8b,EAAM9b,SAAWqM,GAASrM,GACpBA,EACA,CACI0C,KAAM,OACNqF,KAAM,IACNg5B,KAAM,GAAK/gC,EACXxB,QAAS,CAAC,GAIpBsd,EAAMuF,SAAWzpB,KAAKqX,MAAQ6M,EAAMoM,UAGpCpM,EAAM8kB,SAAW,EAGjBlkB,EAAIyU,KAAK,OAAQrV,EAAM9b,SAAS+gC,QAM3BhL,GACAA,GAA0D,IAA5Bja,EAAMgpB,oBAErCI,GAEP,IAGD,SAASv9B,GAELmU,EAAMipB,4BAA4BJ,QAGlCjoB,EAAIyU,KACA,QACA9kB,GAAS1E,GACHA,EACA,CACIjF,KAAM,QACNqF,KAAM,EACNg5B,KAAM,GAAKp5B,GAG5B,IAGD,SAASq5B,EAAYnN,EAASoN,GAE1BnlB,EAAMuF,SAAWzpB,KAAKqX,MAAQ6M,EAAMoM,UAGpCpM,EAAM8kB,SAAWI,EAAanN,EAAUoN,EAAQ,KAEhDgE,GACH,IAGD,WAEInpB,EAAMipB,4BAA4BJ,QAGlCjoB,EAAIyU,KAAK,QAASrV,EAAM9b,SAAW8b,EAAM9b,SAAS+gC,KAAO,KAC5D,IAGD,SAASoE,GACLzoB,EAAIyU,KAAK,WAAYgU,EACxB,GAER,EAEGxiC,EAAQ,WAEHmZ,EAAM7c,UAGX6c,EAAMipB,4BAA4BJ,QAG9B7oB,EAAM7c,QAAQ0D,OAAOmZ,EAAM7c,QAAQ0D,QAGvCmZ,EAAM6kB,UAAW,EACpB,EAEGyE,EAAQ,WACRziC,IACAmZ,EAAM6kB,UAAW,EACjB7kB,EAAMgpB,kBAAoB,EAC1BhpB,EAAM8kB,SAAW,EACjB9kB,EAAMoM,UAAY,KAClBpM,EAAMkpB,kBAAoB,EAC1BlpB,EAAMuF,SAAW,EACjBvF,EAAM7c,QAAU,KAChB6c,EAAM9b,SAAW,IACpB,EAEG6gC,EAAc9K,EACZ,WACI,OAAOja,EAAM8kB,SAAW11B,KAAKuyB,IAAI3hB,EAAM8kB,SAAU9kB,EAAMgpB,mBAAqB,IAC/E,EACD,WACI,OAAOhpB,EAAM8kB,UAAY,IAC5B,EAEHyE,EAActP,EACZ,WACI,OAAO7qB,KAAKuyB,IAAI3hB,EAAMuF,SAAUvF,EAAMkpB,kBACzC,EACD,WACI,OAAOlpB,EAAMuF,QAChB,EAEH3E,EAAMlU,OAAOQ,OAAO,CAAC,EAAGma,KAAM,CAC9B3X,QAASA,EACT7I,MAAOA,EACPk+B,YAAaA,EACbwE,YAAaA,EACbD,MAAOA,IAGX,OAAO1oB,CACV,EAEG4oB,GAA8B,SAAqCz/B,GACnE,OAAOA,EAAKopB,UAAU,EAAGppB,EAAK0/B,YAAY,OAAS1/B,CACtD,EAEG2/B,GAAiB,SAAwB//B,GACzC,IAAInH,EAAO,CAACmH,EAAOI,KAAMJ,EAAO0S,KAAM1S,EAAO/C,MAgB7C,OAbI+C,aAAkByL,MAAQ2sB,GAAgBp4B,GAC1CnH,EAAK,GAAKmH,EAAOI,MAAQq4B,KAClBL,GAAgBp4B,IAEvBnH,EAAK,GAAKmH,EAAO3M,OACjBwF,EAAK,GAAK+gC,GAA6B55B,IAChCoH,EAASpH,KAEhBnH,EAAK,GAAK2a,GAAmBxT,GAC7BnH,EAAK,GAAK,EACVA,EAAK,GAAK,4BAGP,CACHuH,KAAMvH,EAAK,GACX6Z,KAAM7Z,EAAK,GACXoE,KAAMpE,EAAK,GAElB,EAEGwN,GAAS,SAAgB1L,GACzB,SAAUA,aAAiBq7B,MAASr7B,aAAiB8Q,MAAQ9Q,EAAMyF,KACtE,EAEG4/B,GAAkB,SAASA,EAAgBhU,GAC3C,IAAKplB,GAASolB,GAAM,OAAOA,EAC3B,IAAIpnB,EAASE,EAAQknB,GAAO,GAAK,CAAC,EAClC,IAAK,IAAIxvB,KAAOwvB,EACZ,GAAKA,EAAIxe,eAAehR,GAAxB,CACA,IAAI6L,EAAI2jB,EAAIxvB,GACZoI,EAAOpI,GAAO6L,GAAKzB,GAASyB,GAAK23B,EAAgB33B,GAAKA,CAFhB,CAI1C,OAAOzD,CACV,EAEGq7B,GAAa,WACb,IAAIC,EAASl4B,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,GAAmBA,UAAU,GAAK,KAC7Em4B,EACAn4B,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,GAAmBA,UAAU,GAAK,KACpEwI,EAAOxI,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,GAAmBA,UAAU,GAAK,KAE3EpE,EAAK0lB,KAKLjT,EAAQ,CAERif,UAAU,EAGV8K,QAAQ,EAGR/T,UAAU,EAGVrsB,OAAQ,KAGRwQ,KAAMA,EAGN2vB,oBAAqBA,EAGrBT,WAAY,KAGZW,mBAAmB,EAGnB5lC,OAAQ0lC,EAAsB7T,GAAWK,oBAAsBL,GAAWC,KAG1E+T,aAAc,KACdC,gBAAiB,MAIjBC,EAAiC,KAKjC1uB,EAAW,CAAC,EAGZ2uB,EAAY,SAAmBhmC,GAC/B,OAAQ4b,EAAM5b,OAASA,CAC1B,EAGGixB,EAAO,SAAc7N,GACrB,IAAIxH,EAAMgW,WAAYhW,EAAM+pB,OAA5B,CACA,IACI,IAAItpB,EAAO9O,UAAU3U,OAAQ2H,EAAS,IAAI4G,MAAMkV,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EACjFA,EAAOD,EACPC,IAEA/b,EAAO+b,EAAO,GAAK/O,UAAU+O,GAEjCE,EAAIyU,KAAK7pB,MAAMoV,EAAK,CAAC4G,GAAO/qB,OAAOkI,GARO,CAS7C,EAGG0lC,EAAmB,WACnB,OAAOntB,GAAyB8C,EAAM7F,KAAKpQ,KAC9C,EACGugC,EAAc,WACd,OAAOtqB,EAAM7F,KAAKvT,IACrB,EACG2jC,EAAc,WACd,OAAOvqB,EAAM7F,KAAKkC,IACrB,EACGmuB,EAAU,WACV,OAAOxqB,EAAM7F,IAChB,EAKG6V,EAAO,SAAcrmB,EAAQ8gC,EAAQra,GAErCpQ,EAAMrW,OAASA,EAGfiX,EAAIwU,SAAS,QAGTpV,EAAM7F,KACNyG,EAAIwU,SAAS,cAKjBpV,EAAM7F,KAAOuvB,GAAe//B,GAG5B8gC,EAAOpjB,GAAG,QAAQ,WACdgO,EAAK,YACR,IAGDoV,EAAOpjB,GAAG,QAAQ,SAASqjB,GAEvB1qB,EAAM7F,KAAKkC,KAAOquB,EAAKruB,KAGvB2D,EAAM7F,KAAK0D,SAAW6sB,EAAK7sB,SAGvB6sB,EAAK/gC,SACLkgC,EAASlT,GAAWE,MACpB7W,EAAM8pB,oBAAsBY,EAAK/gC,OACjCqW,EAAM5b,OAAS6xB,GAAWK,qBAI9BjB,EAAK,YACR,IAGDoV,EAAOpjB,GAAG,YAAY,SAASyd,GAC3BsF,EAAUnU,GAAWQ,SAErBpB,EAAK,gBAAiByP,EACzB,IAGD2F,EAAOpjB,GAAG,SAAS,SAASxb,GACxBu+B,EAAUnU,GAAWS,YAErBrB,EAAK,qBAAsBxpB,EAC9B,IAGD4+B,EAAOpjB,GAAG,SAAS,WACf+iB,EAAUnU,GAAWC,MACrBb,EAAK,aACR,IAGDoV,EAAOpjB,GAAG,QAAQ,SAASlN,GAEvB6F,EAAMiqB,aAAe,KAGrB,IAAIU,EAAU,SAAiBh0B,GAE3BqJ,EAAM7F,KAAOnK,GAAO2G,GAAUA,EAASqJ,EAAM7F,KAGzC0vB,IAAWlT,GAAWE,OAAS7W,EAAM8pB,oBACrCM,EAAUnU,GAAWK,qBAErB8T,EAAUnU,GAAWE,MAGzBd,EAAK,OACR,EAEGxpB,EAAQ,SAAe8K,GAEvBqJ,EAAM7F,KAAOA,EACbkb,EAAK,aAEL+U,EAAUnU,GAAWS,YACrBrB,EAAK,kBAAmB1e,EAC3B,EAGGqJ,EAAM8pB,oBACNa,EAAQxwB,GAKZiW,EAAOjW,EAAMwwB,EAAS9+B,EACzB,IAGD4+B,EAAOpF,UAAU17B,GAGjBqW,EAAMiqB,aAAeQ,EAGrBA,EAAOza,OACV,EAEG4a,EAAY,WACP5qB,EAAMiqB,cAGXjqB,EAAMiqB,aAAaja,MACtB,EAEG6a,EAAY,WACR7qB,EAAMiqB,aACNjqB,EAAMiqB,aAAapjC,SAGvBujC,EAAUnU,GAAWC,MACrBb,EAAK,cACR,EAKG3lB,EAAU,SAASA,EAAQo7B,EAAWC,GAEtC,GAAI/qB,EAAMgqB,kBACNhqB,EAAMgqB,mBAAoB,OAW9B,GANAI,EAAUnU,GAAWI,YAGrB8T,EAAiC,KAG3BnqB,EAAM7F,gBAAgB/E,KAA5B,CAQA01B,EAAUzjB,GAAG,QAAQ,SAASyiB,GAE1B9pB,EAAMqpB,WAAa,KACnBrpB,EAAM8pB,oBAAsBA,CAC/B,IAGDgB,EAAUzjB,GAAG,YAAY,SAASgiB,GAE9BrpB,EAAMqpB,WAAaA,CACtB,IAEDyB,EAAUzjB,GAAG,kBAAkB,SAASyiB,GAEpC9pB,EAAMkqB,gBAAkB,KAGxBlqB,EAAMqpB,WAAa,KACnBrpB,EAAM8pB,oBAAsBA,EAE5BM,EAAUnU,GAAWK,qBACrBjB,EAAK,mBAAoByU,EAC5B,IAEDgB,EAAUzjB,GAAG,SAAS,WAClBgO,EAAK,gBACR,IAEDyV,EAAUzjB,GAAG,SAAS,SAASxb,GAC3BmU,EAAMkqB,gBAAkB,KACxBE,EAAUnU,GAAWM,kBACrBlB,EAAK,gBAAiBxpB,EACzB,IAEDi/B,EAAUzjB,GAAG,SAAS,SAASyiB,GAC3B9pB,EAAMkqB,gBAAkB,KAGxBlqB,EAAM8pB,oBAAsBA,EAE5BM,EAAUnU,GAAWE,MACrBd,EAAK,iBAGD8U,GACAA,GAEP,IAEDW,EAAUzjB,GAAG,YAAY,SAASyd,GAC9BzP,EAAK,mBAAoByP,EAC5B,IAGD,IAAI6F,EAAU,SAAiBxwB,GAEvB6F,EAAMif,UAGV6L,EAAUp7B,QAAQyK,EAAMzN,OAAOQ,OAAO,CAAC,EAAGuO,GAC7C,EAGG5P,EAAQyK,QAAQzK,MAGpBk/B,EAAU/qB,EAAM7F,KAAMwwB,EAAS9+B,GAG/BmU,EAAMkqB,gBAAkBY,CAxEvB,MAJGlqB,EAAIyG,GAAG,QAAQ,WACX3X,EAAQo7B,EAAWC,EACtB,GA2ER,EAEGC,EAAoB,WACpBhrB,EAAMgqB,mBAAoB,EAC1BI,EAAUnU,GAAWG,kBACxB,EAEG6U,EAAkB,WAClB,OAAO,IAAI9oC,SAAQ,SAASC,GACxB,IAAK4d,EAAMkqB,gBAOP,OANAlqB,EAAMgqB,mBAAoB,EAE1BI,EAAUnU,GAAWE,MACrBd,EAAK,sBAELjzB,IAIJ+nC,EAAiC,WAC7B/nC,GACH,EAED4d,EAAMkqB,gBAAgBrjC,OACzB,GACJ,EAKGgpB,EAAS,SAAgBqb,EAAkB7R,GAC3C,OAAO,IAAIl3B,SAAQ,SAASC,EAASC,GAGjC,IAAI8oC,EAC8B,OAA9BnrB,EAAM8pB,oBACA9pB,EAAM8pB,oBACN9pB,EAAMqpB,WAGS,OAArB8B,GAMJD,EACIC,GACA,WAEInrB,EAAM8pB,oBAAsB,KAC5B9pB,EAAMqpB,WAAa,KACnBjnC,GACH,IACD,SAASyJ,GAEAwtB,GAML+Q,EAAUnU,GAAWO,yBACrBnB,EAAK,wBACLhzB,EAAOwJ,IAPHzJ,GAQP,IAILgoC,EAAUnU,GAAWE,MACrBd,EAAK,mBA7BDjzB,GA8BP,GACJ,EAGGgpC,EAAe,SAAqBjlC,EAAK7B,EAAO+mC,GAChD,IAAIr8B,EAAO7I,EAAIpJ,MAAM,KACjBof,EAAOnN,EAAK,GACZye,EAAOze,EAAK6G,MACZrT,EAAOiZ,EACXzM,EAAK9I,SAAQ,SAASC,GAClB,OAAQ3D,EAAOA,EAAK2D,EACvB,IAGG6K,KAAKI,UAAU5O,EAAKirB,MAAWzc,KAAKI,UAAU9M,KAGlD9B,EAAKirB,GAAQnpB,EAGb+wB,EAAK,kBAAmB,CACpBlvB,IAAKgW,EACL7X,MAAOmX,EAASU,GAChBkvB,OAAQA,IAEf,EAEG3vB,EAAc,SAAqBvV,GACnC,OAAOwjC,GAAgBxjC,EAAMsV,EAAStV,GAAOsV,EAChD,EAEGmF,EAAMlU,OAAOQ,OACb,CACIK,GAAI,CACA2X,IAAK,WACD,OAAO3X,CACV,GAELs8B,OAAQ,CACJ3kB,IAAK,WACD,OAAO2kB,CACV,EACD5kB,IAAK,SAAa3gB,GACd,OAAQulC,EAASvlC,CACpB,GAELuiC,SAAU,CACN3hB,IAAK,WACD,OAAOlF,EAAM8pB,mBAChB,GAELT,WAAY,CACRnkB,IAAK,WACD,OAAOlF,EAAMqpB,UAChB,GAELjlC,OAAQ,CACJ8gB,IAAK,WACD,OAAOlF,EAAM5b,MAChB,GAELyZ,SAAU,CACNqH,IAAK,WACD,OAAOlF,EAAM7F,KAAKpQ,IACrB,GAELuhC,yBAA0B,CACtBpmB,IAAK,WACD,OAAOskB,GAA4BxpB,EAAM7F,KAAKpQ,KACjD,GAELwhC,cAAe,CAAErmB,IAAKmlB,GACtBhvB,SAAU,CAAE6J,IAAKolB,GACjB5J,SAAU,CAAExb,IAAKqlB,GACjBpwB,KAAM,CAAE+K,IAAKslB,GACbgB,aAAc,CACVtmB,IAAK,WACD,OAAOlF,EAAM7F,KAAKqoB,aACrB,GAGL74B,OAAQ,CACJub,IAAK,WACD,OAAOlF,EAAMrW,MAChB,GAGL+R,YAAaA,EACb+vB,YAAa,SAAqBtlC,EAAK7B,EAAO+mC,GAC1C,GAAI96B,GAASpK,GAAM,CACf,IAAI3D,EAAO2D,EAIX,OAHAuG,OAAOsC,KAAKxM,GAAM0D,SAAQ,SAASC,GAC/BilC,EAAajlC,EAAK3D,EAAK2D,GAAM7B,EAChC,IACM6B,CACV,CAED,OADAilC,EAAajlC,EAAK7B,EAAO+mC,GAClB/mC,CACV,EAEDsD,OAAQ,SAAgBmC,EAAM2hC,GAC1B,OAAQC,EAAQ5hC,GAAQ2hC,CAC3B,EAEDb,UAAWA,EACXD,UAAWA,EACXI,kBAAmBA,EACnBC,gBAAiBA,EAEjBjb,KAAMA,EACNtgB,QAASA,EACTmgB,OAAQA,GAGZxI,KACA,CACIukB,OAAQ,WACJ,OAAQ5rB,EAAM+pB,QAAS,CAC1B,EAED8B,QAAS,WACL,OAAQ7rB,EAAMgW,UAAW,CAC5B,EACDA,SAAU,CACN9Q,IAAK,WACD,OAAOlF,EAAMgW,QAChB,GAGL8V,QAAS,WACL,OAAQ9rB,EAAMif,UAAW,CAC5B,EACDA,SAAU,CACN/Z,IAAK,WACD,OAAOlF,EAAMif,QAChB,KAMT0M,EAAUzqB,EAAaN,GAE3B,OAAO+qB,CACV,EAEGI,GAAsB,SAA6B9Z,EAAO7W,GAE1D,OAAIsT,EAAQtT,GACD,EAINrK,EAASqK,GAKP6W,EAAM1K,WAAU,SAASrM,GAC5B,OAAOA,EAAK3N,KAAO6N,CACtB,KANW,CAOf,EAEG4wB,GAAc,SAAqB/Z,EAAOga,GAC1C,IAAIxiC,EAAQsiC,GAAoB9Z,EAAOga,GACvC,KAAIxiC,EAAQ,GAGZ,OAAOwoB,EAAMxoB,IAAU,IAC1B,EAEGyiC,GAAY,SAAmBpoC,EAAKksB,EAAMnkB,EAAOi5B,EAAUj+B,EAAOnE,GAClE,IAAIS,EAAUoiC,GAAY,KAAMzhC,EAAK,CACjCW,OAAQ,MACR9B,aAAc,SA6BlB,OA1BAQ,EAAQitB,OAAS,SAASsV,GAEtB,IAAIhjC,EAAUgjC,EAAIzhC,wBAGd4Z,EAAWsmB,GAAuBzhC,GAASqH,MAAQoT,GAAmBrZ,GAG1EksB,EACI+V,GAAe,OAAQL,EAAIthC,OAAQi+B,GAAgBqD,EAAIxhC,SAAU2Z,GAAWnb,GAEnF,EAEDS,EAAQkC,QAAU,SAASqgC,GACvB75B,EAAMk6B,GAAe,QAASL,EAAIthC,OAAQshC,EAAIrhC,WAAYqhC,EAAIzhC,yBACjE,EAEDd,EAAQqiC,UAAY,SAASE,GACzBhjC,EAAQqjC,GAAe,UAAWL,EAAIthC,OAAQ,KAAMshC,EAAIzhC,yBAC3D,EAEDd,EAAQoC,UAAYygC,GAAsBn6B,GAC1C1I,EAAQsiC,WAAaX,EACrB3hC,EAAQgC,QAAU0B,EAGX1D,CACV,EAEGgpC,GAAmB,SAA0BroC,GAI7C,OAH0B,IAAtBA,EAAImB,QAAQ,QACZnB,EAAMyQ,SAASvN,SAAWlD,GAEvBA,EACFsC,cACAyL,QAAQ,QAAS,IACjBA,QAAQ,gBAAiB,MACzB9U,MAAM,KAAK,EACnB,EAEGqvC,GAAgB,SAAuBtoC,GACvC,OACKA,EAAImB,QAAQ,MAAQ,GAAKnB,EAAImB,QAAQ,OAAS,IAC/CknC,GAAiB53B,SAASV,QAAUs4B,GAAiBroC,EAE5D,EAEGuoC,GAAe,SAAsB3tB,GACrC,OAAO,WACH,OAAOxH,GAAWwH,GAASA,EAAMlT,WAAM,EAAQmG,WAAa+M,CAC/D,CACJ,EAEG4tB,GAAa,SAAoBpxB,GACjC,OAAQlL,GAAOkL,EAAKf,KACvB,EAEGoyB,GAAc,SAAqBhwB,EAAUyD,GAC7C+N,aAAa/N,EAAMkS,mBACnBlS,EAAMkS,kBAAoBhtB,YAAW,WACjCqX,EAAS,mBAAoB,CAAE0V,MAAO+M,GAAehf,EAAMiS,QAC9D,GAAE,EACN,EAEGua,GAAkB,SAAyBh/B,GAC3C,IACI,IAAIiT,EAAO9O,UAAU3U,OAAQ2H,EAAS,IAAI4G,MAAMkV,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EACjFA,EAAOD,EACPC,IAEA/b,EAAO+b,EAAO,GAAK/O,UAAU+O,GAEjC,OAAO,IAAIve,SAAQ,SAASC,GACxB,IAAKoL,EACD,OAAOpL,GAAQ,GAGnB,IAAIuU,EAASnJ,EAAGhC,WAAM,EAAQ7G,GAE9B,OAAc,MAAVgS,EACOvU,GAAQ,GAGG,mBAAXuU,EACAvU,EAAQuU,QAGQ,oBAAhBA,EAAO7N,MACd6N,EAAO7N,KAAK1G,GAEnB,GACJ,EAEGqqC,GAAY,SAAmBzsB,EAAO0sB,GACtC1sB,EAAMiS,MAAM/E,MAAK,SAASrV,EAAGC,GACzB,OAAO40B,EAAQ5W,GAAcje,GAAIie,GAAche,GAClD,GACJ,EAGG60B,GAA0B,SAAiC3sB,EAAO4sB,GAClE,OAAO,WACH,IAAIpyB,EAAO7I,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC5EyJ,EAAQZ,EAAKY,MACbyxB,EAAeryB,EAAKmwB,QACpBA,OAA2B,IAAjBkC,EAA0B,WAAa,EAAGA,EACpDC,EAAetyB,EAAKuyB,QACpBA,OAA2B,IAAjBD,EAA0B,WAAa,EAAGA,EACpDz/B,EAAU6mB,GAAyB1Z,EAAM,CAAC,QAAS,UAAW,YAC9DU,EAAO0jB,GAAe5e,EAAMiS,MAAO7W,GAClCF,EAQL0xB,EAAY1xB,EAAMyvB,EAASoC,EAAS1/B,GAAW,CAAC,GAP5C0/B,EAAQ,CACJlhC,MAAOk6B,GAAe,QAAS,EAAG,kBAClC5rB,KAAM,MAMjB,CACJ,EAEG4F,GAAU,SAAiBxD,EAAUnB,EAAO4E,GAC5C,MAAO,CAIHgtB,UAAW,WACPhO,GAAehf,EAAMiS,OAAO/rB,SAAQ,SAASgV,GACzCA,EAAK0wB,SACL1wB,EAAK2vB,YACL3vB,EAAK+vB,iBACR,GACJ,EAKDgC,cAAe,SAAuBpyB,GAClC,IAAIqyB,EAAcryB,EAAMvW,MAGpBo6B,QAFwB,IAAhBwO,EAAyB,GAAKA,GAExBvxB,KAAI,SAASxB,GAC3B,MAAO,CACHxQ,OAAQwQ,EAAKxQ,OAASwQ,EAAKxQ,OAASwQ,EACpC9M,QAAS8M,EAAK9M,QAErB,IAIG8/B,EAAcnO,GAAehf,EAAMiS,OAEvCkb,EAAYjnC,SAAQ,SAASgV,GAGpBwjB,EAAMG,MAAK,SAAS1kB,GACjB,OAAOA,EAAKxQ,SAAWuR,EAAKvR,QAAUwQ,EAAKxQ,SAAWuR,EAAKf,IAC9D,KAEDoC,EAAS,cAAe,CAAEnB,MAAOF,EAAMhI,QAAQ,GAEtD,IAGDi6B,EAAcnO,GAAehf,EAAMiS,OACnCyM,EAAMx4B,SAAQ,SAASiU,EAAM1Q,GAGrB0jC,EAAYtO,MAAK,SAAS3jB,GACtB,OAAOA,EAAKvR,SAAWwQ,EAAKxQ,QAAUuR,EAAKf,OAASA,EAAKxQ,MAC5D,KAKL4S,EACI,WACA7P,OAAOQ,OAAO,CAAC,EAAGiN,EAAM,CACpBizB,kBAAmBza,GAAkBK,KACrCvpB,MAAOA,IAGlB,GACJ,EAED4jC,yBAA0B,SAAkClyB,GACxD,IAAI5N,EAAK4N,EAAM5N,GACX6O,EAASjB,EAAMiB,OACfkxB,EAASnyB,EAAMmyB,OAEfA,EAAOjC,SAGXtd,aAAa/N,EAAMmS,mBACnBnS,EAAMmS,kBAAoBjtB,YAAW,WACjC,IAAIgW,EAAO8wB,GAAYhsB,EAAMiS,MAAO1kB,GAGpC,GAAK6N,EAAM,YAAX,CAiCIF,EAAK2uB,SAAWlT,GAAWG,OAC3Bva,EAAS,gBAAiB,CACtBhP,GAAI2N,EAAK3N,GACT1B,MAAO,KACPi+B,oBAAqB5uB,EAAKvR,SAKlC,IAAIjD,EAAS,WAETxB,YAAW,WACPqX,EAAS,0BAA2B,CAAEnB,MAAO7N,GAChD,GAAE,GACN,EAEGsiB,EAAS,SAAgB0d,GACzBryB,EAAK2U,OACDyY,GACItoB,EAAM3S,QAAQitB,OAAOx2B,IACrBkc,EAAM3S,QAAQitB,OAAOzK,QAEzBzU,EAAM,qBAELtS,KAAKykC,EAAW7mC,EAAS,WAAa,GACtCyX,OAAM,WAAa,GAC3B,EAEGtX,EAAQ,SAAe0mC,GACvBryB,EAAK+vB,kBAAkBniC,KAAKykC,EAAW7mC,EAAS,WAAa,EAChE,EAGD,OAAIwU,EAAK9W,SAAW6xB,GAAWK,oBACpBzG,EAAO7P,EAAM3S,QAAQ0sB,eAI5B7e,EAAK9W,SAAW6xB,GAAWI,WACpBxvB,EAAMmZ,EAAM3S,QAAQ0sB,oBAG3B/Z,EAAM3S,QAAQ0sB,eACdrzB,IA9CH,CA5BGixB,GAAiB,yBAAyB,EAAO,CAC7Czc,KAAMA,EACNE,MAAOA,EACPgB,OAAQA,EACRkxB,OAAQA,IACTxkC,MAAK,SAASwS,GAEb,IAAI2iB,EAAoB7iB,EAAM,2BAC1B6iB,IACA3iB,EAAsB2iB,EAAkB/iB,EAAMI,IAE7CA,GAELiB,EACI,yBACA,CACInB,MAAO7N,EACP2N,KAAMA,EACNyvB,QAAS,SAAiBxwB,GACtBoC,EAAS,qBAAsB,CAAEhP,GAAIA,EAAI4M,KAAMA,GAClD,IAGL,EAEP,GAmDR,GAAE,GACN,EAEDqzB,UAAW,SAAmBjyB,GAC1B,IAAIH,EAAQG,EAAMH,MACd3R,EAAQ8R,EAAM9R,MACdyR,EAAO0jB,GAAe5e,EAAMiS,MAAO7W,GACvC,GAAKF,EAAL,CACA,IAAIuyB,EAAeztB,EAAMiS,MAAMhtB,QAAQiW,GAEnCuyB,KADJhkC,EAAQi4B,GAAMj4B,EAAO,EAAGuW,EAAMiS,MAAMj1B,OAAS,KAE7CgjB,EAAMiS,MAAMvoB,OAAOD,EAAO,EAAGuW,EAAMiS,MAAMvoB,OAAO+jC,EAAc,GAAG,GAJhD,CAKpB,EAEDC,KAAM,SAAclyB,GAChB,IAAIkxB,EAAUlxB,EAAMkxB,QACpBD,GAAUzsB,EAAO0sB,GACjBnwB,EAAS,iBAAkB,CACvB0V,MAAO7W,EAAM,qBAEpB,EAEDuyB,UAAW,SAAmBzxB,GAC1B,IAAI+V,EAAQ/V,EAAM+V,MACdxoB,EAAQyS,EAAMzS,MACd2jC,EAAoBlxB,EAAMkxB,kBAC1BQ,EAAgB1xB,EAAMyuB,QACtBA,OAA4B,IAAlBiD,EAA2B,WAAa,EAAGA,EACrDC,EAAgB3xB,EAAM6wB,QACtBA,OAA4B,IAAlBc,EAA2B,WAAa,EAAGA,EACrDJ,EAAehkC,EAEnB,IAAe,IAAXA,GAAiC,qBAAVA,EAAuB,CAC9C,IAAIqkC,EAAiB1yB,EAAM,4BACvB2yB,EAAa3yB,EAAM,mBACvBqyB,EAAkC,WAAnBK,EAA8B,EAAIC,CACpD,CAED,IAAIjU,EAAe1e,EAAM,qBACrB4yB,EAAc,SAAqBrkC,GACnC,OAAOqG,GAAOrG,IACPmwB,EAAa3gB,SAASxP,EAAOI,KAAK3D,gBAClCsoB,EAAQ/kB,EAClB,EAGGtB,EAFa4pB,EAAM3Z,OAAO01B,GAEJryB,KAAI,SAAShS,GACnC,OAAO,IAAIxH,SAAQ,SAASC,EAASC,GACjCka,EAAS,WAAY,CACjB6wB,kBAAmBA,EACnBzjC,OAAQA,EAAOA,QAAUA,EACzBghC,QAASvoC,EACT2qC,QAAS1qC,EACToH,MAAOgkC,IACPpgC,QAAS1D,EAAO0D,SAAW,CAAC,GAEnC,GACJ,IAEDlL,QAAQiG,IAAIC,GACPS,KAAK6hC,GACLxsB,MAAM4uB,EACd,EAODkB,SAAU,SAAkBxxB,GACxB,IAAI9S,EAAS8S,EAAM9S,OACfukC,EAAczxB,EAAMhT,MACpBA,OAAwB,IAAhBykC,GAA0B,EAAIA,EACtCd,EAAoB3wB,EAAM2wB,kBAC1Be,EAAgB1xB,EAAMkuB,QACtBA,OAA4B,IAAlBwD,EAA2B,WAAa,EAAGA,EACrDC,EAAgB3xB,EAAMswB,QACtBA,OAA4B,IAAlBqB,EAA2B,WAAa,EAAGA,EACrDC,EAAgB5xB,EAAMpP,QACtBA,OAA4B,IAAlBghC,EAA2B,CAAC,EAAIA,EAE9C,GAAI3f,EAAQ/kB,GACRojC,EAAQ,CACJlhC,MAAOk6B,GAAe,QAAS,EAAG,aAClC5rB,KAAM,YAOd,IACInK,GAAOrG,KACPqW,EAAM3S,QAAQysB,aAAa3gB,SAASxP,EAAOI,KAAK3D,eAFpD,CASA,IAAKm7B,GAAevhB,GAAQ,CAGxB,GACIA,EAAM3S,QAAQwrB,gBACZ7Y,EAAM3S,QAAQwrB,gBAAkB7Y,EAAM3S,QAAQyrB,aAClD,CACE,IAAIjtB,EAAQk6B,GAAe,UAAW,EAAG,aASzC,OAPAxpB,EAAS,sBAAuB,CAC5B5S,OAAQA,EACRkC,MAAOA,SAGXkhC,EAAQ,CAAElhC,MAAOA,EAAOsO,KAAM,MAGjC,CAID,IAAIm0B,EAAQtP,GAAehf,EAAMiS,OAAO,GAGxC,GACIqc,EAAMlqC,SAAW6xB,GAAWK,qBAC5BgY,EAAMlqC,SAAW6xB,GAAWO,wBAC9B,CACE,IAAI6C,EAAcje,EAAM,oBAwBxB,GAvBAkzB,EACKze,OACGyY,GACItoB,EAAM3S,QAAQitB,OAAOx2B,IACrBkc,EAAM3S,QAAQitB,OAAOzK,QAEzBwJ,GAEHvwB,MAAK,WACGuwB,GAGL9c,EAAS,WAAY,CACjB5S,OAAQA,EACRF,MAAOA,EACP2jC,kBAAmBA,EACnBzC,QAASA,EACToC,QAASA,EACT1/B,QAASA,GAEhB,IACA8Q,OAAM,WAAa,IAEpBkb,EAAa,MACpB,CAGD9c,EAAS,cAAe,CAAEnB,MAAOkzB,EAAM/gC,IAC1C,CAGD,IAAIs8B,EACiB,UAAjBx8B,EAAQzG,KACF+vB,GAAWG,MACM,UAAjBzpB,EAAQzG,KACR+vB,GAAWE,MACXF,GAAWC,MAGjB1b,EAAO0uB,GAEPC,EAGAA,IAAWlT,GAAWC,MAAQ,KAAOjtB,EAGrC0D,EAAQ8M,MAIZzN,OAAOsC,KAAK3B,EAAQoO,UAAY,CAAC,GAAGvV,SAAQ,SAASC,GACjD+U,EAAKuwB,YAAYtlC,EAAKkH,EAAQoO,SAAStV,GAC1C,IAGD6xB,GAAa,kBAAmB9c,EAAM,CAAEE,MAAOA,EAAOmB,SAAUA,IAGhE,IAAIkd,EAAqBre,EAAM,4BAG1B4E,EAAM3S,QAAQmsB,4BACf/vB,EAA+B,WAAvBgwB,GAAmC,EAAIzZ,EAAMiS,MAAMj1B,QAI/D8kC,GAAW9hB,EAAMiS,MAAO/W,EAAMzR,GAG1ByN,GAAWuiB,IAAuB9vB,GAClC8iC,GAAUzsB,EAAOyZ,GAIrB,IAAIlsB,EAAK2N,EAAK3N,GAGd2N,EAAKmM,GAAG,QAAQ,WACZ9K,EAAS,gBAAiB,CAAEhP,GAAIA,GACnC,IAED2N,EAAKmM,GAAG,aAAa,WACjB9K,EAAS,sBAAuB,CAAEhP,GAAIA,GACzC,IAED2N,EAAKmM,GAAG,aAAa,WACjB9K,EAAS,uBAAwB,CAAEhP,GAAIA,GAC1C,IAED2N,EAAKmM,GAAG,iBAAiB,SAASyd,GAC9BvoB,EAAS,gCAAiC,CAAEhP,GAAIA,EAAIu3B,SAAUA,GACjE,IAED5pB,EAAKmM,GAAG,sBAAsB,SAASxb,GACnC,IAAI0iC,EAAalC,GAAarsB,EAAM3S,QAAQiuB,mBAA3B+Q,CAA+CxgC,GAGhE,GAAIA,EAAMI,MAAQ,KAAOJ,EAAMI,KAAO,IAYlC,OAXAsQ,EAAS,yBAA0B,CAC/BhP,GAAIA,EACJ1B,MAAOA,EACPzH,OAAQ,CACJwa,KAAM2vB,EACN1vB,IAAKhT,EAAMI,KAAO,KAAOJ,EAAMo5B,KAAO,YAK9C8H,EAAQ,CAAElhC,MAAOA,EAAOsO,KAAM2b,GAAc5a,KAKhDqB,EAAS,4BAA6B,CAClChP,GAAIA,EACJ1B,MAAOA,EACPzH,OAAQ,CACJwa,KAAM2vB,EACN1vB,IAAKmB,EAAM3S,QAAQ0uB,kBAG9B,IAED7gB,EAAKmM,GAAG,mBAAmB,SAASxb,GAChC0Q,EAAS,yBAA0B,CAC/BhP,GAAIA,EACJ1B,MAAOA,EAAMzH,OACbA,OAAQyH,EAAMzH,SAGlB2oC,EAAQ,CAAElhC,MAAOA,EAAMzH,OAAQ+V,KAAM2b,GAAc5a,IACtD,IAEDA,EAAKmM,GAAG,cAAc,WAClB9K,EAAS,cAAe,CAAEnB,MAAO7N,GACpC,IAED2N,EAAKmM,GAAG,aAAa,WACjB9K,EAAS,qBAAsB,CAC3BnB,MAAO7N,EACP2N,KAAMA,EACN1Y,KAAM,CACFmH,OAAQA,EACRghC,QAASA,IAGpB,IAEDzvB,EAAKmM,GAAG,QAAQ,WACZ,IAAImnB,EAAY,SAAmBC,GAE1BA,GASLvzB,EAAKmM,GAAG,mBAAmB,SAASimB,GAChC/wB,EAAS,2BAA4B,CAAEhP,GAAIA,EAAI+/B,OAAQA,GAC1D,IAID3V,GAAiB,yBAAyB,EAAO,CAC7Czc,KAAMA,EACNE,MAAOA,IACRtS,MAAK,SAASwS,GAEb,IAAI2iB,EAAoB7iB,EAAM,2BAC1B6iB,IACA3iB,EAAsB2iB,EAAkB/iB,EAAMI,IAElD,IAAIozB,EAAe,WACfnyB,EAAS,qBAAsB,CAC3BnB,MAAO7N,EACP2N,KAAMA,EACN1Y,KAAM,CACFmH,OAAQA,EACRghC,QAASA,KAIjB4B,GAAYhwB,EAAUyD,EACzB,EAGG1E,EAEAiB,EACI,yBACA,CACInB,MAAO7N,EACP2N,KAAMA,EACNyvB,QAAS,SAAiBxwB,GACtBoC,EAAS,qBAAsB,CAAEhP,GAAIA,EAAI4M,KAAMA,IAC/Cu0B,GACH,IAGL,GAMRA,GACH,KAzDGnyB,EAAS,cAAe,CACpBnB,MAAO7N,GAyDlB,EAKDoqB,GAAiB,gBAAiBzc,EAAM,CAAEE,MAAOA,EAAOmB,SAAUA,IAC7DzT,MAAK,WACF0jC,GAAgBpxB,EAAM,uBAAwB0a,GAAc5a,IAAOpS,KAC/D0lC,EAEP,IACArwB,OAAM,SAAShN,GACZ,IAAKA,IAAMA,EAAEtF,QAAUsF,EAAE/M,OAAQ,OAAOoqC,GAAU,GAClDjyB,EAAS,yBAA0B,CAC/BhP,GAAIA,EACJ1B,MAAOsF,EAAEtF,MACTzH,OAAQ+M,EAAE/M,QAEjB,GACR,IAED8W,EAAKmM,GAAG,iBAAiB,WACrB9K,EAAS,4BAA6B,CAAEhP,GAAIA,GAC/C,IAED2N,EAAKmM,GAAG,oBAAoB,SAASyd,GACjCvoB,EAAS,mCAAoC,CAAEhP,GAAIA,EAAIu3B,SAAUA,GACpE,IAED5pB,EAAKmM,GAAG,iBAAiB,SAASxb,GAC9B0Q,EAAS,kCAAmC,CACxChP,GAAIA,EACJ1B,MAAOA,EACPzH,OAAQ,CACJwa,KAAMytB,GAAarsB,EAAM3S,QAAQuuB,yBAA3ByQ,CAAqDxgC,GAC3DgT,IAAKmB,EAAM3S,QAAQ0uB,kBAG9B,IAED7gB,EAAKmM,GAAG,wBAAwB,SAASxb,GACrC0Q,EAAS,yCAA0C,CAC/ChP,GAAIA,EACJ1B,MAAOA,EACPzH,OAAQ,CACJwa,KAAMytB,GAAarsB,EAAM3S,QAAQwuB,+BAA3BwQ,CAA2DxgC,GACjEgT,IAAKmB,EAAM3S,QAAQ0uB,kBAG9B,IAED7gB,EAAKmM,GAAG,oBAAoB,SAASyiB,GACjCvtB,EAAS,+BAAgC,CACrChP,GAAIA,EACJ1B,MAAO,KACPi+B,oBAAqBA,IAGzBvtB,EAAS,mBAAoB,CAAEhP,GAAIA,EAAIjJ,MAAOwlC,GACjD,IAED5uB,EAAKmM,GAAG,iBAAiB,WACrB9K,EAAS,4BAA6B,CAAEhP,GAAIA,GAC/C,IAED2N,EAAKmM,GAAG,kBAAkB,WACtB9K,EAAS,6BAA8B,CAAEhP,GAAIA,IAC7CgP,EAAS,mBAAoB,CAAEhP,GAAIA,EAAIjJ,MAAO,MACjD,IAGDiY,EAAS,eAAgB,CACrBhP,GAAIA,EACJ9D,MAAOA,EACP2jC,kBAAmBA,IAGvBb,GAAYhwB,EAAUyD,GAGtB,IAAI2uB,EAAQ3uB,EAAM3S,QAAQitB,QAAU,CAAC,EACjCx2B,EAAM6qC,EAAM7qC,IACZksB,EAAO2e,EAAM3e,KACbD,EAAU4e,EAAM5e,QAChBD,EAAQ6e,EAAM7e,MAElB5U,EAAK8U,KACDrmB,EAGAg7B,GACIkF,IAAWlT,GAAWC,MAEhB7lB,EAASpH,IAAWyiC,GAAcziC,IAC9BmmB,EACIoW,GAAoBpiC,EAAKgsB,GAE7Boc,GAENrC,IAAWlT,GAAWE,MACpBqP,GAAoBpiC,EAAKisB,GACzBmW,GAAoBpiC,EAAKksB,KAInC,SAAS7V,EAAMwwB,EAAS9+B,GAEpB8rB,GAAiB,YAAaxd,EAAM,CAAEiB,MAAOA,IACxCtS,KAAK6hC,GACLxsB,MAAMtS,EACd,GAjWJ,CAmWJ,EAED+iC,uBAAwB,SAAgCC,GACpD,IAAI3zB,EAAO2zB,EAAM3zB,KACbyvB,EAAUkE,EAAMlE,QAChBmE,EAAgBD,EAAM9B,QACtBA,OAA4B,IAAlB+B,EAA2B,WAAa,EAAGA,EAErDvqC,EAAM,CACNsH,MAAOk6B,GAAe,QAAS,EAAG,kBAClC5rB,KAAM,MAIV,GAAIe,EAAK+jB,SAAU,OAAO8N,EAAQxoC,GAGlCozB,GAAiB,iBAAkBzc,EAAKf,KAAM,CAAEiB,MAAOA,EAAOF,KAAMA,IAAQpS,MACxE,SAAS6N,GACLghB,GAAiB,0BAA2BhhB,EAAQ,CAChDyE,MAAOA,EACPF,KAAMA,IACPpS,MAAK,SAAS6N,GAEb,GAAIuE,EAAK+jB,SAAU,OAAO8N,EAAQxoC,GAGlComC,EAAQh0B,EACX,GACJ,GAER,EAEDo4B,mBAAoB,SAA4BC,GAC5C,IAAI9zB,EAAO8zB,EAAO9zB,KACd1Y,EAAOwsC,EAAOxsC,KACdmoC,EAAUnoC,EAAKmoC,QACfhhC,EAASnH,EAAKmH,OAGd8vB,EAAqBre,EAAM,4BAiB/B,GAhBIlE,GAAWuiB,IAAuB9vB,GAClC8iC,GAAUzsB,EAAOyZ,GAIrBld,EAAS,gBAAiB,CACtBhP,GAAI2N,EAAK3N,GACT1B,MAAO,KACPi+B,oBAAqB5uB,EAAK2uB,SAAWlT,GAAWC,MAAQ,KAAOjtB,IAKnEghC,EAAQ7U,GAAc5a,IAGlBA,EAAK2uB,SAAWlT,GAAWG,MAM/B,OAAI5b,EAAK2uB,SAAWlT,GAAWE,OAC3Bta,EAAS,+BAAgC,CACrChP,GAAI2N,EAAK3N,GACT1B,MAAO,KACPi+B,oBAAqBngC,SAGzB4S,EAAS,mBAAoB,CACzBhP,GAAI2N,EAAK3N,GACTjJ,MAAO4W,EAAK2rB,UAAYl9B,UAO5ByR,EAAM,aAAe4E,EAAM3S,QAAQ0sB,eACnCxd,EAAS,0BAA2B,CAAEnB,MAAOF,EAAK3N,MAtBlDgP,EAAS,sBAAuB,CAAEhP,GAAI2N,EAAK3N,IAwBlD,EAED0hC,gBAAiBtC,GAAwB3sB,GAAO,SAAS9E,GAErDA,EAAK0vB,WACR,IAEDsE,qBAAsBvC,GAAwB3sB,GAAO,SAAS9E,EAAMi0B,EAAUpC,GAC1ExwB,EACI,yBACA,CACInB,MAAOF,EAAK3N,GACZ2N,KAAMA,EACNyvB,QAAS,SAAiBxwB,GACtBoC,EAAS,qBAAsB,CAAEhP,GAAI2N,EAAK3N,GAAI4M,KAAMA,IACpDg1B,EAAS,CACLh1B,KAAMe,EACNk0B,OAAQj1B,GAEf,EACD4yB,QAASA,IAGb,EAEP,IAEDsC,wBAAyB1C,GAAwB3sB,GAAO,SACpD9E,EACAyvB,EACAoC,GAUA,GALI7xB,EAAK9W,SAAW6xB,GAAWE,MAE3Bjb,EAAK9W,SAAW6xB,GAAWM,iBAsC3Brb,EAAK9W,SAAW6xB,GAAWG,oBAE/Blb,EAAK8vB,oBAELzuB,EAAS,8BAA+B,CAAEhP,GAAI2N,EAAK3N,KAEnDgP,EAAS,eAAgB,CAAEnB,MAAOF,EAAMyvB,QAASA,EAASoC,QAASA,IAAW,QAzC9E,CACI,IAAIuC,EAAa,WACb,OAAO/yB,EAAS,0BAA2B,CACvCnB,MAAOF,EACPyvB,QAASA,EACToC,QAASA,GAEhB,EAEGr9B,EAAU,WACV,OAAOoD,SAASwN,OAASgvB,IAAepqC,WAAWoqC,EAAY,GAClE,EAIGp0B,EAAK9W,SAAW6xB,GAAWK,qBAC3Bpb,EAAK9W,SAAW6xB,GAAWO,wBAE3Btb,EAAK2U,OACDyY,GACItoB,EAAM3S,QAAQitB,OAAOx2B,IACrBkc,EAAM3S,QAAQitB,OAAOzK,QAEzBzU,EAAM,qBAELtS,KAAK4G,GACLyO,OAAM,WAAa,IACjBjD,EAAK9W,SAAW6xB,GAAWI,YAClCnb,EAAK+vB,kBAAkBniC,KAAK4G,EAInC,CAUJ,IAED6/B,aAAc5C,GAAwB3sB,GAAO,SAAS9E,EAAMyvB,EAASoC,GACjE,IAAI/S,EAAqB5e,EAAM,4BAK/B,GAJ0BA,EAAM,sBAAuB6a,GAAWI,YAC7Dr5B,SAGuBg9B,GAa5B,GAAI9e,EAAK9W,SAAW6xB,GAAWI,WAA/B,CAEA,IAAImZ,EAAc,SAASA,IAEvB,IAAIC,EAAazvB,EAAMoS,gBAAgB3mB,QAGvC,GAAKgkC,EAAL,CAGA,IAAIliC,EAAKkiC,EAAWliC,GAChBo9B,EAAU8E,EAAW9E,QACrBoC,EAAU0C,EAAW1C,QACrB2C,EAAgB9Q,GAAe5e,EAAMiS,MAAO1kB,GAG3CmiC,IAAiBA,EAAczQ,SAMpC1iB,EACI,eACA,CAAEnB,MAAO7N,EAAIo9B,QAASA,EAASoC,QAASA,IACxC,GARAyC,GAVmB,CAoB1B,EAGDt0B,EAAKsa,OAAO,oBAAoB,WAC5BmV,EAAQ7U,GAAc5a,IACtBs0B,IAIA,IAAIlV,EAASta,EAAM3S,QAAQitB,OAE3B,GADoBta,EAAM3S,QAAQ0sB,eAG9B7e,EAAK2uB,SAAWlT,GAAWG,OAC3B5f,GAAWojB,EAAOpnB,QACpB,CACE,IAAIy8B,EAAO,WAAkB,EAC7Bz0B,EAAK2uB,OAASlT,GAAWE,MACzB7W,EAAM3S,QAAQitB,OAAOpnB,OAAOgI,EAAKvR,OAAQgmC,EAAMA,EAClD,CAIGv0B,EAAM,sBAAuB6a,GAAWK,qBAAqBt5B,SAC7DgjB,EAAMiS,MAAMj1B,QAEZuf,EAAS,mCAEhB,IAGDrB,EAAKsa,OAAO,iBAAiB,SAAS3pB,GAClCkhC,EAAQ,CAAElhC,MAAOA,EAAOsO,KAAM2b,GAAc5a,KAC5Cs0B,GACH,IAGD,IAAIniC,EAAU2S,EAAM3S,QACpB6N,EAAKxL,QACDo5B,GACIT,GACIh7B,EAAQitB,OAAOx2B,IACfuJ,EAAQitB,OAAO5qB,QACfrC,EAAQtD,KACR,CACI48B,gBAAiBzrB,EAAKmuB,WACtBzC,YAAav5B,EAAQitB,OAAO1K,MAC5BsK,aAAc7sB,EAAQ6sB,aACtBC,WAAY9sB,EAAQ8sB,WACpBC,UAAW/sB,EAAQ+sB,UACnBC,iBAAkBhtB,EAAQgtB,mBAIlC,CACIJ,2BAA4B7e,EAAM,wCAK1C,SAASjB,EAAMwwB,EAAS9+B,GAEpB8rB,GAAiB,iBAAkBxd,EAAM,CAAEiB,MAAOA,EAAOF,KAAMA,IAC1DpS,MAAK,SAASqR,GACXoC,EAAS,qBAAsB,CAAEhP,GAAI2N,EAAK3N,GAAI4M,KAAMA,IAEpDwwB,EAAQxwB,EACX,IACAgE,MAAMtS,EACd,GAhG4C,OAX7CmU,EAAMoS,gBAAgB5oB,KAAK,CACvB+D,GAAI2N,EAAK3N,GACTo9B,QAASA,EACToC,QAASA,GA0GpB,IAED6C,sBAAuBjD,GAAwB3sB,GAAO,SAAS9E,GAC3DqB,EAAS,0BAA2B,CAAEnB,MAAOF,GAChD,IAED20B,oBAAqBlD,GAAwB3sB,GAAO,SAAS9E,GACzDsxB,GAAgBpxB,EAAM,0BAA2B0a,GAAc5a,IAAOpS,MAAK,SACvEgnC,GAEKA,GAGLvzB,EAAS,cAAe,CAAEnB,MAAOF,GACpC,GACJ,IAED60B,aAAcpD,GAAwB3sB,GAAO,SAAS9E,GAClDA,EAAK2wB,SACR,IAEDmE,YAAarD,GAAwB3sB,GAAO,SAAS9E,EAAMyvB,EAASoC,EAAS1/B,GACzE,IAAI4iC,EAAiB,WAEjB,IAAI1iC,EAAK2N,EAAK3N,GAGdy+B,GAAYhsB,EAAMiS,MAAO1kB,GAAIu+B,UAG7BvvB,EAAS,kBAAmB,CAAE1Q,MAAO,KAAM0B,GAAIA,EAAI2N,KAAMA,IAGzDqxB,GAAYhwB,EAAUyD,GAGtB2qB,EAAQ7U,GAAc5a,GACzB,EAIGof,EAASta,EAAM3S,QAAQitB,OAEvBpf,EAAK2uB,SAAWlT,GAAWG,OAC3BwD,GACApjB,GAAWojB,EAAOpnB,UACC,IAAnB7F,EAAQ6F,QAERqJ,EAAS,wBAAyB,CAAEhP,GAAI2N,EAAK3N,KAE7C+sB,EAAOpnB,OACHgI,EAAKvR,QACL,WACI,OAAOsmC,GACV,IACD,SAAS7rC,GACLmY,EAAS,8BAA+B,CACpChP,GAAI2N,EAAK3N,GACT1B,MAAOk6B,GAAe,QAAS,EAAG3hC,EAAQ,MAC1CA,OAAQ,CACJwa,KAAMytB,GAAarsB,EAAM3S,QAAQmuB,qBAA3B6Q,CAAiDjoC,GACvDya,IAAKmB,EAAM3S,QAAQ0uB,kBAG9B,OAKA1uB,EAAQwiB,QACL3U,EAAK2uB,SAAWlT,GAAWG,OACT,OAAlB5b,EAAK2rB,UAIR7mB,EAAM3S,QAAQ6sB,cAAgBhf,EAAKf,KAAKkC,KAAO2D,EAAM3S,QAAQ+sB,WAC7Dpa,EAAM3S,QAAQ6sB,cAAgBla,EAAM3S,QAAQ8sB,aAE7Cjf,EAAK2U,OACDyY,GACItoB,EAAM3S,QAAQitB,OAAOx2B,IACrBkc,EAAM3S,QAAQitB,OAAOzK,QAEzBzU,EAAM,qBAKd60B,IAEP,IAEDC,gBAAiBvD,GAAwB3sB,GAAO,SAAS9E,GACrDA,EAAK2vB,WACR,IAEDsF,sBAAuBxD,GAAwB3sB,GAAO,SAAS9E,GAEvDA,EAAK2rB,SACLtqB,EAAS,yBAA0B,CAAEhP,GAAI2N,EAAK3N,KAKlD2N,EAAK+vB,kBAAkBniC,MAAK,WACLkX,EAAM3S,QAAQ0sB,eAE7Bxd,EAAS,cAAe,CAAEnB,MAAOF,EAAK3N,IAE7C,GACJ,IAED6iC,+BAAgCzD,GAAwB3sB,GAAO,SAAS9E,GAEpE,GAAK8E,EAAM3S,QAAQ0sB,cAAnB,CAOA,IAAIsW,EAAe,SAAsBC,GAChCA,GACL/zB,EAAS,yBAA0B,CAAEnB,MAAOF,GAC/C,EAEG1N,EAAK4N,EAAM,0BACf,IAAK5N,EACD,OAAO6iC,GAAa,GAGxB,IAAIE,EAAsB/iC,EAAGsoB,GAAc5a,IAC3C,OAA2B,MAAvBq1B,EAEOF,GAAa,GAGW,mBAAxBE,EACAF,EAAaE,QAGgB,oBAA7BA,EAAoBznC,MAC3BynC,EAAoBznC,KAAKunC,GAzB5B,CAFG9zB,EAAS,yBAA0B,CAAEnB,MAAOF,GA6BnD,IAEDs1B,uBAAwB7D,GAAwB3sB,GAAO,SAAS9E,GAC5DA,EAAK2U,OACDyY,GAAqBtoB,EAAM3S,QAAQitB,OAAOx2B,IAAKkc,EAAM3S,QAAQitB,OAAOzK,QACpEzU,EAAM,qBAELtS,MAAK,YACiBkX,EAAM3S,QAAQ0sB,eAAiBuS,GAAWpxB,KAEzDqB,EAAS,cAAe,CAAEnB,MAAOF,EAAK3N,IAE7C,IACA4Q,OAAM,WAAa,GAC3B,IAEDsyB,YAAa,SAAqBC,GAC9B,IAAIrjC,EAAUqjC,EAAOrjC,QAEjBsjC,EAAajkC,OAAOsC,KAAK3B,GAGzBujC,EAAwBC,GAAmBv4B,QAAO,SAASnS,GAC3D,OAAOwqC,EAAWx3B,SAAShT,EAC9B,IAGuB,GAAG1J,OACvB63B,GAAmBsc,GACnBtc,GACI5nB,OAAOsC,KAAK3B,GAASiL,QAAO,SAASnS,GACjC,OAAQyqC,EAAsBz3B,SAAShT,EAC1C,MAKSD,SAAQ,SAASC,GAC/BoW,EAAS,OAAS8V,GAAWlsB,EAAK,KAAKzB,cAAe,CAClDJ,MAAO+I,EAAQlH,IAEtB,GACJ,EAER,EAEG0qC,GAAqB,CAAC,UAEtBC,GAAiB,SAAwB/mC,GACzC,OAAOA,CACV,EAEGgnC,GAAkB,SAAuBC,GACzC,OAAOl+B,SAASa,cAAcq9B,EACjC,EAEGC,GAAO,SAAc7vB,EAAM9c,GAC3B,IAAI4sC,EAAW9vB,EAAKwB,WAAW,GAC1BsuB,EAGM5sC,IAAU4sC,EAASC,YAC1BD,EAASC,UAAY7sC,IAHrB4sC,EAAWp+B,SAASs+B,eAAe9sC,GACnC8c,EAAKW,YAAYmvB,GAIxB,EAEGG,GAAmB,SAA0BC,EAASC,EAASC,EAAQC,GACvE,IAAIC,GAAoBD,EAAiB,IAAO,IAAMriC,KAAKuiC,GAAM,IACjE,MAAO,CACHC,EAAGN,EAAUE,EAASpiC,KAAKyiC,IAAIH,GAC/BI,EAAGP,EAAUC,EAASpiC,KAAK2iC,IAAIL,GAEtC,EAEGM,GAAc,SAAqBJ,EAAGE,EAAGN,EAAQS,EAAYC,EAAUC,GACvE,IAAIvsB,EAAQyrB,GAAiBO,EAAGE,EAAGN,EAAQU,GACvCE,EAAMf,GAAiBO,EAAGE,EAAGN,EAAQS,GACzC,MAAO,CAAC,IAAKrsB,EAAMgsB,EAAGhsB,EAAMksB,EAAG,IAAKN,EAAQA,EAAQ,EAAGW,EAAU,EAAGC,EAAIR,EAAGQ,EAAIN,GAAG3/B,KAAK,IAC1F,EAEGkgC,GAAgB,SAAuBT,EAAGE,EAAGN,EAAQ3kC,EAAMylC,GAC3D,IAAIH,EAAW,EAOf,OANIG,EAAKzlC,GAAQylC,EAAKzlC,GAAQ,KAC1BslC,EAAW,GAEXtlC,EAAOylC,GAAMzlC,EAAOylC,GAAM,KAC1BH,EAAW,GAERH,GACHJ,EACAE,EACAN,EACyB,IAAzBpiC,KAAKuyB,IAAI,MAAQ90B,GACM,IAAvBuC,KAAKuyB,IAAI,MAAQ2Q,GACjBH,EAEP,EAEGtqC,GAAS,SAAgB2S,GACzB,IAAI2B,EAAO3B,EAAK2B,KACZhE,EAAQqC,EAAKrC,MAEjBA,EAAMo6B,MAAO,EACbp6B,EAAM2sB,SAAW,EACjB3sB,EAAMuP,QAAU,EAGhB,IAAI8qB,EAAM7+B,EAAc,OACxBwI,EAAKG,IAAI9J,KAAOmB,EAAc,OAAQ,CAClC,eAAgB,EAChB,iBAAkB,UAGtB6+B,EAAIzwB,YAAY5F,EAAKG,IAAI9J,MAEzB2J,EAAKG,IAAIk2B,IAAMA,EAEfr2B,EAAK4F,YAAYywB,EACpB,EAEGlgC,GAAQ,SAAeuI,GACvB,IAAIsB,EAAOtB,EAAMsB,KACbhE,EAAQ0C,EAAM1C,MAClB,GAAsB,IAAlBA,EAAMuP,QAAV,CAIIvP,EAAMs6B,QACNt2B,EAAK0F,QAAQ6wB,QAAQD,MAAQt6B,EAAMs6B,OAIvC,IAAIE,EAAkBr2C,SAAS6kB,EAAKhF,EAAKG,IAAI9J,KAAM,gBAAiB,IAGhE6J,EAAiC,GAA1BF,EAAKmH,KAAKzB,QAAQsB,MAGzByvB,EAAW,EACXC,EAAS,EAGT16B,EAAMo6B,MACNK,EAAW,EACXC,EAAS,KAETD,EAAW,EACXC,EAAS16B,EAAM2sB,UAInB,IAAIgO,EAAcT,GAAch2B,EAAMA,EAAMA,EAAOs2B,EAAiBC,EAAUC,GAG9E1xB,EAAKhF,EAAKG,IAAI9J,KAAM,IAAKsgC,GAGzB3xB,EAAKhF,EAAKG,IAAI9J,KAAM,iBAAkB2F,EAAMo6B,MAAQp6B,EAAM2sB,SAAW,EAAI,EAAI,EAhC5E,CAiCJ,EAEGiO,GAAoBjpB,EAAW,CAC/BpI,IAAK,MACL3X,KAAM,qBACNghB,kBAAkB,EAClBF,YAAY,EACZhjB,OAAQA,GACRyK,MAAOA,GACP2Y,OAAQ,CACJ/B,KAAM,CAAC,WAAY,OAAQ,SAC3Bd,OAAQ,CAAC,WACT7B,WAAY,CACRmB,QAAS,CAAE9gB,KAAM,QAAS2e,SAAU,KACpCuf,SAAU,CACNl+B,KAAM,SACN0d,UAAW,IACXE,QAAS,IACTE,KAAM,QAMlBsuB,GAAW,SAAgBx4B,GAC3B,IAAI2B,EAAO3B,EAAK2B,KACZhE,EAAQqC,EAAKrC,MACjBgE,EAAK0F,QAAQoxB,WAAa96B,EAAM+6B,MAAQ,IAAO,SAAW/6B,EAAMuG,MAAQ,UAExEvG,EAAMg7B,YAAa,CACtB,EAEGC,GAAU,SAAev4B,GACzB,IAAIsB,EAAOtB,EAAMsB,KACbhE,EAAQ0C,EAAM1C,MACdg7B,EAAah7B,EAAMg7B,WACnBE,EAAgBl3B,EAAKf,MAAM,iBAAqC,IAAlBjD,EAAMuP,QAEpD2rB,IAAkBF,GAClBh7B,EAAMg7B,YAAa,EACnBhyB,EAAKhF,EAAK0F,QAAS,WAAY,cACvBwxB,GAAiBF,IACzBh7B,EAAMg7B,YAAa,EACnBh3B,EAAK0F,QAAQyxB,gBAAgB,YAEpC,EAEGC,GAAmBzpB,EAAW,CAC9BpI,IAAK,SACLE,WAAY,CACRhb,KAAM,UAGVikB,YAAY,EACZE,kBAAkB,EAClBhhB,KAAM,qBACNkhB,OAAQ,CACJ/B,KAAM,CAAC,SACPd,OAAQ,CAAC,aAAc,aAAc,SAAU,SAAU,WACzD7B,WAAY,CACRoB,OAAQ,SACRC,OAAQ,SACRC,WAAY,SACZC,WAAY,SACZJ,QAAS,CAAE9gB,KAAM,QAAS2e,SAAU,MAGxC0B,WAAW,GAGfpf,OAAQmrC,GACR1gC,MAAO8gC,KAGPI,GAAoB,SAA2BziB,GAC/C,IAAIoG,EACAxlB,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,GAAmBA,UAAU,GAAK,IACpE0d,EAAO1d,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,GAAmBA,UAAU,GAAK,IAC3EtE,EAAUsE,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/E8hC,EAAsBpmC,EAAQ8zB,WAC9BA,OAAqC,IAAxBsS,EAAiC,QAAUA,EACxDC,EAAwBrmC,EAAQ+zB,eAChCA,OAA2C,IAA1BsS,EAAmC,KAAOA,EAC3DC,EAAwBtmC,EAAQg0B,eAChCA,OAA2C,IAA1BsS,EAAmC,KAAOA,EAC3DC,EAAwBvmC,EAAQi0B,eAChCA,OAA2C,IAA1BsS,EAAmC,KAAOA,EAK3DC,EAAKxkB,EACLykB,EAAKzkB,EAAOA,EACZ0kB,EAAK1kB,EAAOA,EAAOA,EAGvB,OAPA0B,EAAQ3hB,KAAK4kC,MAAM5kC,KAAK+U,IAAI4M,KAOhB8iB,EACD9iB,EAAQ,IAAMoQ,EAIrBpQ,EAAQ+iB,EACD1kC,KAAKC,MAAM0hB,EAAQ8iB,GAAM,IAAMzS,EAItCrQ,EAAQgjB,EACDE,GAAuBljB,EAAQ+iB,EAAI,EAAG3c,GAAoB,IAAMkK,EAIpE4S,GAAuBljB,EAAQgjB,EAAI,EAAG5c,GAAoB,IAAMmK,CAC1E,EAEG2S,GAAyB,SAAgC3vC,EAAO4vC,EAAc5hB,GAC9E,OAAOhuB,EACF6vC,QAAQD,GACRn3C,MAAM,KACNub,QAAO,SAASia,GACb,MAAgB,MAATA,CACV,IACApgB,KAAKmgB,EACb,EAEG8hB,GAAW,SAAgB55B,GAC3B,IAAI2B,EAAO3B,EAAK2B,KACZhE,EAAQqC,EAAKrC,MAEb9L,EAAW0kC,GAAgB,QAC/B1kC,EAASsV,UAAY,2BAIrBR,EAAK9U,EAAU,cAAe,QAC9B8P,EAAK4F,YAAY1V,GACjB8P,EAAKG,IAAIjQ,SAAWA,EAGpB,IAAIq0B,EAAWqQ,GAAgB,QAC/BrQ,EAAS/e,UAAY,0BACrBxF,EAAK4F,YAAY2e,GACjBvkB,EAAKG,IAAIokB,SAAWA,EAGpBuQ,GAAKvQ,EAAUvkB,EAAKf,MAAM,oCAC1B61B,GAAK5kC,EAAUykC,GAAe30B,EAAKf,MAAM,gBAAiBjD,EAAM5K,KACnE,EAEG8mC,GAAa,SAAoBx5B,GACjC,IAAIsB,EAAOtB,EAAMsB,KACbhE,EAAQ0C,EAAM1C,MAClB84B,GACI90B,EAAKG,IAAIokB,SACT8S,GACIr3B,EAAKf,MAAM,gBAAiBjD,EAAM5K,IAClC,IACA4O,EAAKf,MAAM,sBACXe,EAAKf,MAAM,uBAAwBe,EAAKf,SAIhD61B,GAAK90B,EAAKG,IAAIjQ,SAAUykC,GAAe30B,EAAKf,MAAM,gBAAiBjD,EAAM5K,KAC5E,EAEG+mC,GAAwB,SAA+Bn5B,GACvD,IAAIgB,EAAOhB,EAAMgB,KACbhE,EAAQgD,EAAMhD,MAEd+W,GAAM/S,EAAKf,MAAM,gBAAiBjD,EAAM5K,KACxC8mC,GAAW,CAAEl4B,KAAMA,EAAMhE,MAAOA,IAIpC84B,GAAK90B,EAAKG,IAAIokB,SAAUvkB,EAAKf,MAAM,qCACtC,EAEGm5B,GAAWzqB,EAAW,CACtB/f,KAAM,YACN8gB,YAAY,EACZE,kBAAkB,EAClBzY,MAAOsI,EAAY,CACf45B,cAAeH,GACfI,qBAAsBJ,GACtBK,0BAA2BJ,GAC3BK,uBAAwBL,KAG5B7pB,cAAe,SAAuBtO,GAClC6b,GAAa,cAAetrB,OAAOQ,OAAO,CAAC,EAAGiP,EAAM,CAAEJ,KAAMI,IAC/D,EACDtU,OAAQusC,GACRnpB,OAAQ,CACJ7C,OAAQ,CAAC,aAAc,cACvB7B,WAAY,CACRsB,WAAY,SACZC,WAAY,aAKpB8sB,GAAe,SAAsBtwC,GACrC,OAAO8K,KAAK4kC,MAAc,IAAR1vC,EACrB,EAEGuwC,GAAW,SAAgBr6B,GAC3B,IAAI2B,EAAO3B,EAAK2B,KAGZyC,EAAOmyB,GAAgB,QAC3BnyB,EAAK+C,UAAY,6BACjBxF,EAAK4F,YAAYnD,GACjBzC,EAAKG,IAAIsC,KAAOA,EAGhB,IAAIC,EAAMkyB,GAAgB,QAC1BlyB,EAAI8C,UAAY,4BAChBxF,EAAK4F,YAAYlD,GACjB1C,EAAKG,IAAIuC,IAAMA,EAEfi2B,GAAuB,CAAE34B,KAAMA,EAAMC,OAAQ,CAAE0oB,SAAU,OAC5D,EAEGgQ,GAAyB,SAAgCj6B,GACzD,IAAIsB,EAAOtB,EAAMsB,KACbC,EAASvB,EAAMuB,OACf24B,EACoB,OAApB34B,EAAO0oB,SACD3oB,EAAKf,MAAM,0BACXe,EAAKf,MAAM,0BAA4B,IAAMw5B,GAAax4B,EAAO0oB,UAAY,IAEvFmM,GAAK90B,EAAKG,IAAIsC,KAAMm2B,GACpB9D,GAAK90B,EAAKG,IAAIuC,IAAK1C,EAAKf,MAAM,2BACjC,EAEG45B,GAA4B,SAAmC75B,GAC/D,IAAIgB,EAAOhB,EAAMgB,KACbC,EAASjB,EAAMiB,OACf24B,EACoB,OAApB34B,EAAO0oB,SACD3oB,EAAKf,MAAM,6BACXe,EAAKf,MAAM,6BACX,IACAw5B,GAAax4B,EAAO0oB,UACpB,IAEVmM,GAAK90B,EAAKG,IAAIsC,KAAMm2B,GACpB9D,GAAK90B,EAAKG,IAAIuC,IAAK1C,EAAKf,MAAM,2BACjC,EAEG65B,GAA2B,SAAkC15B,GAC7D,IAAIY,EAAOZ,EAAMY,KACjB80B,GAAK90B,EAAKG,IAAIsC,KAAMzC,EAAKf,MAAM,8BAC/B61B,GAAK90B,EAAKG,IAAIuC,IAAK1C,EAAKf,MAAM,2BACjC,EAEG85B,GAAyB,SAAgC15B,GACzD,IAAIW,EAAOX,EAAMW,KACjB80B,GAAK90B,EAAKG,IAAIsC,KAAMzC,EAAKf,MAAM,sCAC/B61B,GAAK90B,EAAKG,IAAIuC,IAAK1C,EAAKf,MAAM,0BACjC,EAEG+5B,GAA4B,SAAmCj5B,GAC/D,IAAIC,EAAOD,EAAMC,KACjB80B,GAAK90B,EAAKG,IAAIsC,KAAMzC,EAAKf,MAAM,uCAC/B61B,GAAK90B,EAAKG,IAAIuC,IAAK1C,EAAKf,MAAM,yBACjC,EAEGytB,GAAQ,SAAepsB,GACvB,IAAIN,EAAOM,EAAMN,KACjB80B,GAAK90B,EAAKG,IAAIsC,KAAM,IACpBqyB,GAAK90B,EAAKG,IAAIuC,IAAK,GACtB,EAEGhT,GAAQ,SAAe8iC,GACvB,IAAIxyB,EAAOwyB,EAAMxyB,KACbC,EAASuyB,EAAMvyB,OACnB60B,GAAK90B,EAAKG,IAAIsC,KAAMxC,EAAOhY,OAAOwa,MAClCqyB,GAAK90B,EAAKG,IAAIuC,IAAKzC,EAAOhY,OAAOya,IACpC,EAEGu2B,GAAatrB,EAAW,CACxB/f,KAAM,cACN8gB,YAAY,EACZE,kBAAkB,EAClBzY,MAAOsI,EAAY,CACf45B,cAAe3L,GACfwM,2BAA4BxM,GAC5ByM,4BAA6BL,GAC7BM,0BAA2BL,GAC3BM,6BAA8BL,GAC9BM,iCAAkCT,GAClCU,8BAA+BZ,GAC/BJ,0BAA2B7oC,GAC3B8oC,uBAAwB9oC,GACxB8pC,gCAAiC9pC,GACjC+pC,uCAAwC/pC,GACxCgqC,4BAA6BhqC,KAGjC4e,cAAe,SAAuBtO,GAClC6b,GAAa,cAAetrB,OAAOQ,OAAO,CAAC,EAAGiP,EAAM,CAAEJ,KAAMI,IAC/D,EACDtU,OAAQgtC,GACR5pB,OAAQ,CACJ7C,OAAQ,CAAC,aAAc,aAAc,WACrC7B,WAAY,CACRmB,QAAS,CAAE9gB,KAAM,QAAS2e,SAAU,KACpCsC,WAAY,SACZC,WAAY,aASpBguB,GAAU,CACVC,cAAe,CACXr3B,MAAO,mCACPtC,OAAQ,kBACRuF,UAAW,mCACX8wB,MAAO,2BAEXuD,cAAe,CACXt3B,MAAO,mCACPtC,OAAQ,kBACR82B,KAAM,iBACNvxB,UAAW,mCACX8wB,MAAO,gCAEXwD,WAAY,CACRv3B,MAAO,+BACPtC,OAAQ,sBACR82B,KAAM,kBACNvxB,UAAW,+BACX8wB,MAAO,+BAEXyD,YAAa,CACTx3B,MAAO,gCACPtC,OAAQ,0BACR82B,KAAM,mBACNvxB,UAAW,gCACX8wB,MAAO,gCAEX0D,oBAAqB,CACjBz3B,MAAO,yCACPtC,OAAQ,wBACRuF,UAAW,yCACX8wB,MAAO,gCAEX2D,oBAAqB,CACjB13B,MAAO,yCACPtC,OAAQ,wBACR82B,KAAM,iBACNvxB,UAAW,yCACX8wB,MAAO,gCAEX4D,qBAAsB,CAClB33B,MAAO,wCACPtC,OAAQ,iCACR82B,KAAM,gBACNvxB,UAAW,0CACX8wB,MAAO,iCAKX6D,GAAa,GACjBr1B,EAAM60B,IAAS,SAAS3vC,GACpBmwC,GAAW9sC,KAAKrD,EACnB,IAED,IAAIowC,GAA0B,SAAiCp6B,GAC3D,GAAyC,UAArCq6B,GAA2Br6B,GAAmB,OAAO,EACzD,IAAIs6B,EAAat6B,EAAKG,IAAIo6B,iBAAiBpzB,KAAKzB,QAChD,OAAO40B,EAAWn2B,OAAS,KAAOm2B,EAAWtzB,MAAQszB,EAAWzzB,IACnE,EAEG2zB,GAAuB,SAA8Bx6B,GAErD,OADiBA,EAAKG,IAAIs6B,oBAAoBtzB,KAAKzB,QACjCsB,KACrB,EAGG0zB,GAAoC,SAA2C16B,GAC/E,OAAO/M,KAAKC,MAAM8M,EAAKG,IAAIo6B,iBAAiBpzB,KAAKzB,QAAQwB,OAAS,EACrE,EACGyzB,GAAsC,SAA6C36B,GACnF,OAAO/M,KAAKC,MAAM8M,EAAKG,IAAIo6B,iBAAiBpzB,KAAKzB,QAAQmB,KAAO,EACnE,EAEG+zB,GAA4B,SAAmC56B,GAC/D,OAAOA,EAAKf,MAAM,oCACrB,EACG47B,GAA+B,SAAsC76B,GACrE,OAAOA,EAAKf,MAAM,wCACrB,EACGo7B,GAA6B,SAAoCr6B,GACjE,OAAOA,EAAKf,MAAM,wCACrB,EAEG67B,GAAe,CACfL,oBAAqB,CAAElvB,QAAS,GAChCwvB,oBAAqB,CAAExvB,QAAS,GAChCgvB,iBAAkB,CAAEhvB,QAAS,GAC7ByvB,kBAAmB,CAAEzvB,QAAS,GAC9B0vB,0BAA2B,CAAE1vB,QAAS,GACtC2vB,0BAA2B,CAAE3vB,QAAS,GACtC4vB,2BAA4B,CAAE5vB,QAAS,GACvC6vB,sBAAuB,CAAE7vB,QAAS,EAAG+qB,MAAOsE,IAC5CS,yBAA0B,CAAE9vB,QAAS,EAAG+qB,MAAOuE,IAC/CS,4BAA6B,CAAE/vB,QAAS,EAAGC,OAAQ,IAAMC,OAAQ,KACjEwc,KAAM,CAAEvc,WAAY,EAAGC,WAAY,EAAGJ,QAAS,GAC/CtjB,OAAQ,CAAEyjB,WAAY,EAAGC,WAAY,EAAGJ,QAAS,IAGjDgwB,GAAY,CACZhB,iBAAkB,CAAEhvB,QAAS,GAC7ByvB,kBAAmB,CAAEzvB,QAAS,GAC9B0c,KAAM,CAAEvc,WAAY0uB,IACpBnyC,OAAQ,CAAEyjB,WAAY0uB,KAGtBoB,GAAkB,CAClBP,0BAA2B,CAAE1vB,QAAS,GACtC8vB,yBAA0B,CAAE9vB,QAAS,GACrCtjB,OAAQ,CAAEsjB,QAAS,IAGnBkwB,GAAW,CACXjD,uBAAwB,CACpB+B,iBAAkB,CAAEhvB,QAAS,GAC7B0c,KAAM,CAAEvc,WAAY0uB,IACpBnyC,OAAQ,CAAEyjB,WAAY0uB,GAAyB7uB,QAAS,IAG5DmwB,oBAAqB,CACjBjB,oBAAqB,CAAElvB,QAAS,GAChC6vB,sBAAuB,CAAE7vB,QAAS,GAClCtjB,OAAQ,CAAEsjB,QAAS,IAGvBgtB,0BAA2B,CACvBwC,oBAAqB,CAAExvB,QAAS,GAChCgvB,iBAAkB,CAAEhvB,QAAS,GAC7B0c,KAAM,CAAEvc,WAAY0uB,IACpBnyC,OAAQ,CAAEsjB,QAAS,IAGvBowB,sBAAuB,CACnBN,yBAA0B,CAAE9vB,QAAS,EAAG+qB,MAAO+D,IAC/CpS,KAAM,CAAEvc,WAAY0uB,IACpBnyC,OAAQ,CAAEsjB,QAAS,IAGvBmuB,4BAA6B,CACzB2B,yBAA0B,CAAE9vB,QAAS,EAAG+qB,MAAO+D,IAC/CE,iBAAkB,CAAEhvB,QAAS,GAC7B0c,KAAM,CAAEvc,WAAY0uB,IACpBnyC,OAAQ,CAAEsjB,QAAS,EAAGG,WAAY0uB,KAGtC/B,cAAekD,GACfK,oBAAqB,CACjBrB,iBAAkB,CAAEhvB,QAAS,GAC7B0c,KAAM,CAAEvc,WAAY0uB,IACpBnyC,OAAQ,CAAEyjB,WAAY0uB,KAG1ByB,0BAA2BL,GAC3BrC,4BAA6BqC,GAC7BlC,iCAAkCkC,GAClCnC,6BAA8B,CAC1B8B,2BAA4B,CAAE5vB,QAAS,GACvC0c,KAAM,CAAE1c,QAAS,GACjBtjB,OAAQ,CAAEsjB,QAAS,IAGvBiuB,gCAAiC,CAC7Be,iBAAkB,CAAEhvB,QAAS,GAC7B2vB,0BAA2B,CAAE3vB,QAAS,GACtCtjB,OAAQ,CAAEsjB,QAAS,GACnB0c,KAAM,CAAEvc,WAAY0uB,KAGxBX,uCAAwC,CACpC0B,2BAA4B,CAAE5vB,QAAS,GACvCtjB,OAAQ,CAAEsjB,QAAS,GACnB0c,KAAM,CAAE1c,QAAS,IAGrB6tB,0BAA2B,CACvBmB,iBAAkB,CAAEhvB,QAAS,GAC7ByvB,kBAAmB,CAAEzvB,QAAS,GAC9B0c,KAAM,CAAEvc,WAAY0uB,IACpBnyC,OAAQ,CAAEsjB,QAAS,IAGvB2tB,2BAA4BqC,IAI5BO,GAAkCnuB,EAAW,CAC7CjiB,OAAQ,SAAgB2S,GACpB,IAAI2B,EAAO3B,EAAK2B,KAChBA,EAAK0F,QAAQoxB,UAAY92B,EAAKf,MAAM,gBACvC,EACDrR,KAAM,gCACN8gB,YAAY,EACZI,OAAQ,CACJ7C,OAAQ,CAAC,SAAU,SAAU,WAC7B7B,WAAY,CACRoB,OAAQ,SACRC,OAAQ,SACRF,QAAS,CAAE9gB,KAAM,QAAS2e,SAAU,SAQ5C2yB,GAAW,SAAgBr9B,GAC3B,IA4BIs9B,EA5BAh8B,EAAOtB,EAAMsB,KACbhE,EAAQ0C,EAAM1C,MAEdigC,EAAe1rC,OAAOsC,KAAK8mC,IAAShe,QAAO,SAASugB,EAAMC,GAE1D,OADAD,EAAKC,GAAQ5rC,OAAOQ,OAAO,CAAC,EAAG4oC,GAAQwC,IAChCD,CACV,GAAE,CAAC,GACA9qC,EAAK4K,EAAM5K,GAGXwrB,EAAc5c,EAAKf,MAAM,oBAGzB4d,EAAc7c,EAAKf,MAAM,oBAGzB6d,EAAe9c,EAAKf,MAAM,qBAG1B2e,EAAgB5d,EAAKf,MAAM,sBAG3B8kB,EAAU/jB,EAAKf,MAAM,YAGrBm9B,EAAwBp8B,EAAKf,MAAM,sCAInC8kB,EACIjH,IAAiBF,EAEjBof,EAAe,SAAsBhyC,GACjC,OAAQ,uBAAuBiN,KAAKjN,EACvC,GACO8yB,GAAgBF,EAExBof,EAAe,SAAsBhyC,GACjC,OAAQ,sDAAsDiN,KAAKjN,EACtE,EACO8yB,GAAiBF,IAEzBof,EAAe,SAAsBhyC,GACjC,OAAQ,UAAUiN,KAAKjN,EAC1B,GAILgyC,EAAe,SAAsBhyC,GACjC,OAAQ,UAAUiN,KAAKjN,EAC1B,EAGL,IAAIqyC,EAAiBL,EAAe7B,GAAWh+B,OAAO6/B,GAAgB7B,GAAW75C,SASjF,GANIs9B,GAAiBhB,IACjBqf,EAAY,qBAAyB15B,MAAQ,+BAC7C05B,EAAY,qBAAyBlF,KAAO,mBAI5ChT,IAAYnH,EAAa,CACzB,IAAIpd,EAAMi8B,GAAQ,6BAClBj8B,EAAIyoB,KAAKvc,WAAaivB,GACtBn7B,EAAIyoB,KAAKtc,WAAa+uB,GACtBl7B,EAAIvX,OAAO0jB,WAAa+uB,GACxBl7B,EAAI87B,4BAA8B,CAAE/vB,QAAS,EAAGC,OAAQ,EAAGC,OAAQ,EACtE,CAgBD,GAbIsY,IAAYjH,IACZ,CACI,4BACA,8BACA,mCACA,mCACF/yB,SAAQ,SAASC,GACfyxC,GAASzxC,GAAK/B,OAAO0jB,WAAa+uB,EACrC,IACDe,GAAQ,gCAAoCxzC,OAAOyjB,WAAa8uB,IAIhE4B,GAAyBxf,EAAa,CACtCqf,EAAY,qBAAyB3F,MAAQ,8BAC7C,IAAIgG,EAAOb,GAAQ,6BACnBa,EAAKrU,KAAKvc,WAAa0uB,GACvBkC,EAAKr0C,OAAO0jB,WAAa+uB,GACzB4B,EAAKhB,4BAA8B,CAAE/vB,QAAS,EAAGC,OAAQ,EAAGC,OAAQ,EACvE,CAGIoR,IACDof,EAAY,WAAe9f,UAAW,GAI1CrX,EAAMm3B,GAAc,SAASjyC,EAAK6a,GAE9B,IAAI03B,EAAav8B,EAAK0P,gBAAgB0nB,GAAkB,CACpD70B,MAAOvC,EAAKf,MAAM4F,EAAWtC,OAC7Bw0B,KAAM/2B,EAAKf,MAAM4F,EAAWkyB,MAC5BxrB,QAAS,IAIT8wB,EAAer/B,SAAShT,IACxBgW,EAAKiG,gBAAgBs2B,GAIrB13B,EAAWsX,WACXogB,EAAW72B,QAAQ/N,aAAa,WAAY,YAC5C4kC,EAAW72B,QAAQ/N,aAAa,SAAU,WAI9C4kC,EAAW72B,QAAQ6wB,QAAQD,MAAQt2B,EAAKf,MAAM,aAAe4F,EAAWyxB,OAGxEiG,EAAW72B,QAAQ82B,UAAUvxB,IAAIpG,EAAWW,WAG5C+2B,EAAWrxB,GAAG,SAAS,SAASlW,GAC5BA,EAAEynC,kBACE53B,EAAWsX,UACfnc,EAAKI,SAASyE,EAAW5E,OAAQ,CAAEhB,MAAO7N,GAC7C,IAGD4O,EAAKG,IAAI,SAAWnW,GAAOuyC,CAC9B,IAGDv8B,EAAKG,IAAIm7B,4BAA8Bt7B,EAAKiG,gBACxCjG,EAAK0P,gBAAgBosB,KAGzB97B,EAAKG,IAAIm7B,4BAA4B51B,QAAQ6wB,QAAQD,MAAQt2B,EAAKf,MAC9D,0CAIJe,EAAKG,IAAI8nB,KAAOjoB,EAAKiG,gBAAgBjG,EAAK0P,gBAAgB0oB,GAAU,CAAEhnC,GAAIA,KAG1E4O,EAAKG,IAAIlY,OAAS+X,EAAKiG,gBAAgBjG,EAAK0P,gBAAgBupB,GAAY,CAAE7nC,GAAIA,KAG9E,IAAIsrC,EAAoB18B,EAAKiG,gBACzBjG,EAAK0P,gBAAgBknB,GAAmB,CACpCrrB,QAAS,EACT+qB,MAAOt2B,EAAKf,MAAM,wCAI1By9B,EAAkBh3B,QAAQ82B,UAAUvxB,IAAI,4BACxCjL,EAAKG,IAAIi7B,sBAAwBsB,EAEjC,IAAIC,EAAwB38B,EAAKiG,gBAC7BjG,EAAK0P,gBAAgBknB,GAAmB,CACpCrrB,QAAS,EACT+qB,MAAOt2B,EAAKf,MAAM,4CAI1B09B,EAAsBj3B,QAAQ82B,UAAUvxB,IAAI,+BAC5CjL,EAAKG,IAAIk7B,yBAA2BsB,EAGpC38B,EAAKG,IAAIy8B,aAAe,EAC3B,EAEGC,GAAU,SAAe79B,GACzB,IAAIgB,EAAOhB,EAAMgB,KACb4D,EAAU5E,EAAM4E,QAChB5H,EAAQgD,EAAMhD,MAElB8gC,GAAM,CAAE98B,KAAMA,EAAM4D,QAASA,EAAS5H,MAAOA,IAG7C,IAAIiE,EAAS2D,EACRtjB,SACA6b,QAAO,SAAS8D,GACb,MAAO,QAAQhJ,KAAKgJ,EAAOxV,KAC9B,IACAif,UACAgZ,MAAK,SAASziB,GACX,OAAOw7B,GAASx7B,EAAOxV,KAC1B,IAGL,GAAIwV,EAAQ,CAERD,EAAKG,IAAIy8B,aAAe,GAExB,IAAIG,EAAgBtB,GAASx7B,EAAOxV,MACpCqa,EAAMg2B,IAAc,SAASltC,EAAMovC,GAE/B,IAAIC,EAAUj9B,EAAKG,IAAIvS,GAGvBkX,EAAMk4B,GAAe,SAAShzC,EAAKmrB,GAC/B,IAAIhtB,EACA40C,EAAcnvC,IAA6C,qBAA7BmvC,EAAcnvC,GAAM5D,GAC5C+yC,EAAcnvC,GAAM5D,GACpBmrB,EACVnV,EAAKG,IAAIy8B,aAAavvC,KAAK,CAAE4vC,QAASA,EAASjzC,IAAKA,EAAK7B,MAAOA,GACnE,GACJ,GACJ,CAGD6X,EAAKG,IAAIy8B,aAAa7yC,SAAQ,SAASqV,GACnC,IAAI69B,EAAU79B,EAAM69B,QAChBjzC,EAAMoV,EAAMpV,IACZ7B,EAAQiX,EAAMjX,MAClB80C,EAAQjzC,GAAwB,oBAAV7B,EAAuBA,EAAM6X,GAAQ7X,CAC9D,GACJ,EAEG20C,GAAQr+B,EAAY,CACpBy+B,2CAA4C,SACxC79B,GAEA,IAAIW,EAAOX,EAAMW,KACbC,EAASZ,EAAMY,OACnBD,EAAKG,IAAI86B,0BAA0B14B,MAAQtC,EAAO9X,KACrD,EACDg1C,qCAAsC,SAA8Cp9B,GAChF,IAAIC,EAAOD,EAAMC,KACbC,EAASF,EAAME,OACnBD,EAAKG,IAAIs6B,oBAAoBl4B,MAAQtC,EAAO9X,KAC/C,EACDi1C,wCAAyC,SACrC98B,GAEA,IAAIN,EAAOM,EAAMN,KACbC,EAASK,EAAML,OACnBD,EAAKG,IAAIk9B,uBAAuB96B,MAAQtC,EAAO9X,KAClD,EACDgxC,4BAA6B,SAAqC3G,GAC9D,IAAIxyB,EAAOwyB,EAAMxyB,KACjBA,EAAKG,IAAIk7B,yBAAyBjF,MAAO,EACzCp2B,EAAKG,IAAIk7B,yBAAyB1S,SAAW,CAChD,EACD+S,oBAAqB,SAA6BhJ,GAC9C,IAAI1yB,EAAO0yB,EAAM1yB,KACjBA,EAAKG,IAAIi7B,sBAAsBhF,MAAO,EACtCp2B,EAAKG,IAAIi7B,sBAAsBzS,SAAW,CAC7C,EACDgT,sBAAuB,SAA+B9I,GAClD,IAAI7yB,EAAO6yB,EAAO7yB,KAClBA,EAAKG,IAAIk7B,yBAAyBjF,MAAO,EACzCp2B,EAAKG,IAAIk7B,yBAAyB1S,SAAW,CAChD,EACD4Q,8BAA+B,SAAuChF,GAClE,IAAIv0B,EAAOu0B,EAAOv0B,KACdC,EAASs0B,EAAOt0B,OACpBD,EAAKG,IAAIi7B,sBAAsBhF,MAAO,EACtCp2B,EAAKG,IAAIi7B,sBAAsBzS,SAAW1oB,EAAO0oB,QACpD,EACD2Q,iCAAkC,SAA0CgE,GACxE,IAAIt9B,EAAOs9B,EAAOt9B,KACdC,EAASq9B,EAAOr9B,OACpBD,EAAKG,IAAIk7B,yBAAyBjF,MAAO,EACzCp2B,EAAKG,IAAIk7B,yBAAyB1S,SAAW1oB,EAAO0oB,QACvD,IAGD3qB,GAAO2P,EAAW,CAClBjiB,OAAQqwC,GACR5lC,MAAO0mC,GACPvuB,cAAe,SAAuBtO,GAClC6b,GAAa,cAAetrB,OAAOQ,OAAO,CAAC,EAAGiP,EAAM,CAAEJ,KAAMI,IAC/D,EACDpS,KAAM,SAMN2vC,GAAW,SAAgBl/B,GAC3B,IAAI2B,EAAO3B,EAAK2B,KACZhE,EAAQqC,EAAKrC,MAGjBgE,EAAKG,IAAIjQ,SAAW0kC,GAAgB,UACpC50B,EAAK4F,YAAY5F,EAAKG,IAAIjQ,UAG1B8P,EAAKG,IAAInC,KAAOgC,EAAKiG,gBAAgBjG,EAAK0P,gBAAgB1R,GAAM,CAAE5M,GAAI4K,EAAM5K,MAG5E4O,EAAKG,IAAI9Z,MAAO,CACnB,EAKGm3C,GAAc,SAAqB9+B,GACnC,IAAIsB,EAAOtB,EAAMsB,KACbhE,EAAQ0C,EAAM1C,MAElB84B,GAAK90B,EAAKG,IAAIjQ,SAAUykC,GAAe30B,EAAKf,MAAM,gBAAiBjD,EAAM5K,KAC5E,EAEGqsC,GAAc9vB,EAAW,CACzBjiB,OAAQ6xC,GACR7uB,YAAY,EACZvY,MAAOsI,EAAY,CACf45B,cAAemF,KAGnBlvB,cAAe,SAAuBtO,GAClC6b,GAAa,cAAetrB,OAAOQ,OAAO,CAAC,EAAGiP,EAAM,CAAEJ,KAAMI,IAC/D,EACDuF,IAAK,WACL3X,KAAM,iBAGN8vC,GAAqB,CAAEjzC,KAAM,SAAU4d,QAAS,GAAKE,KAAM,GAE3Do1B,GAAW,SAAgBt/B,GAC3B,IAAI2B,EAAO3B,EAAK2B,KACZhE,EAAQqC,EAAKrC,MACjB,CACI,CACIpO,KAAM,OAGV,CACIA,KAAM,SACNoO,MAAO,CACH2P,WAAY,KACZF,OAAQ,MAGZqD,OAAQ,CACJ1E,WAAY,CACRqB,OAAQiyB,IAGZzxB,OAAQ,CAAC,aAAc,YAI/B,CACIre,KAAM,SACNoO,MAAO,CACH2P,WAAY,MAGhBmD,OAAQ,CACJ1E,WAAY,CACRuB,WAAY+xB,IAGhBzxB,OAAQ,CAAC,iBAGnBliB,SAAQ,SAAS6zC,GACfC,GAAc79B,EAAM49B,EAAS5hC,EAAMpO,KACtC,IAEDoS,EAAK0F,QAAQ82B,UAAUvxB,IAAI,aAAejP,EAAMpO,MAEhDoS,EAAKG,IAAI29B,SAAW,IACvB,EAEGD,GAAgB,SAAuB79B,EAAM49B,EAASp4B,GACtD,IAAIu4B,EAAkBpwB,EAAW,CAC7B/f,KAAM,SAAWgwC,EAAQhwC,KAAO,cAAgB4X,EAChDsJ,OAAQ8uB,EAAQ9uB,OAChBF,kBAAkB,IAGlBhP,EAAOI,EAAK0P,gBAAgBquB,EAAiBH,EAAQ5hC,OAEzDgE,EAAKG,IAAIy9B,EAAQhwC,MAAQoS,EAAKiG,gBAAgBrG,EACjD,EAEGo+B,GAAU,SAAet/B,GACzB,IAAIsB,EAAOtB,EAAMsB,KACbhE,EAAQ0C,EAAM1C,MASlB,GAN0B,OAAtBgE,EAAKG,IAAI29B,UAAqB9hC,EAAM8hC,WAAa99B,EAAKG,IAAI29B,WAC1D99B,EAAKG,IAAI29B,UAAWrrB,EAAUzW,EAAM8hC,WAAY9hC,EAAM8hC,SACtD99B,EAAK0F,QAAQ6wB,QAAQuH,SAAW99B,EAAKG,IAAI29B,UAIxC9hC,EAAMkL,OAAX,CAGA,IAAI+2B,EAAUj+B,EAAKG,IAAI2G,IAAIK,KAAKzB,QAC5Bw4B,EAAal+B,EAAKG,IAAI8G,OAAOE,KAAKzB,QAGlCwB,EAASjU,KAAKwyB,IAAIwY,EAAQ/2B,OAASg3B,EAAWh3B,OAAQlL,EAAMkL,QAGhElH,EAAKG,IAAIg+B,OAAOxyB,WAAasyB,EAAQ/2B,OAIrClH,EAAKG,IAAIg+B,OAAO1yB,QAAUvE,EAAS+2B,EAAQ/2B,OAASg3B,EAAWh3B,QAAU,IAGzElH,EAAKG,IAAI8G,OAAO0E,WAAazE,EAASg3B,EAAWh3B,MAjBxB,CAkB5B,EAEGk3B,GAAQzwB,EAAW,CACnB/f,KAAM,QACNhE,KAAM,SAAcoV,GAChB,IAAIgB,EAAOhB,EAAMgB,KAEjB,OADYhB,EAAMhD,MACJqiC,cAAgBr+B,EAAKG,IAAI8G,OAAO0E,UACjD,EACDxV,MAAO6nC,GACPtyC,OAAQiyC,GACRjvB,YAAY,EACZI,OAAQ,CACJ/B,KAAM,CAAC,SAAU,gBAAiB,eAItCuxB,GAAmB,SAA0BxoB,GAC7C,IAAIyoB,EAAUzoB,EAAMtW,KAAI,SAAST,GAC7B,OAAOA,EAAK3N,EACf,IACGotC,OAAY30C,EAChB,MAAO,CACH40C,SAAU,SAAkBnxC,GACxBkxC,EAAYlxC,CACf,EACDoxC,SAAU,WACN,OAAOF,CACV,EACDG,aAAc,SAAsB5/B,GAChC,OAAOw/B,EAAQz1C,QAAQiW,EAAK3N,GAC/B,EAER,EAEGwtC,GAAwB,CACxBn0C,KAAM,SACN0d,UAAW,IACXE,QAAS,IACTE,KAAM,IAGNs2B,GAAoB,SAEpBC,GAAW,CACXpD,oBAAqB,OACrBnC,8BAA+B,UAC/Bf,uBAAwB,eACxBD,0BAA2B,aAC3BF,cAAe,OACfqB,4BAA6B,eAC7BiC,sBAAuB,OACvBE,0BAA2B,kBAC3B1C,4BAA6B,kBAC7BG,iCAAkC,aAClCD,6BAA8B,sBAC9BG,gCAAiC,mBACjCC,uCAAwC,0BACxCL,0BAA2B,YAC3BF,2BAA4B,QAM5B6F,GAAW,SAAgB1gC,GAC3B,IAAI2B,EAAO3B,EAAK2B,KACZhE,EAAQqC,EAAKrC,MA0BjB,GAvBAgE,EAAKG,IAAI6+B,YAAc,SAAShqC,GAC5B,OAAOgL,EAAKI,SAAS,oBAAqB,CAAEhP,GAAI4K,EAAM5K,IACzD,EAGD4O,EAAK0F,QAAQtU,GAAK,kBAAoB4K,EAAM5K,GAC5C4O,EAAK0F,QAAQrb,iBAAiB,QAAS2V,EAAKG,IAAI6+B,aAGhDh/B,EAAKG,IAAI8+B,UAAYj/B,EAAKiG,gBACtBjG,EAAK0P,gBAAgB+tB,GAAa,CAAErsC,GAAI4K,EAAM5K,MAIlD4O,EAAKG,IAAIi+B,MAAQp+B,EAAKiG,gBAAgBjG,EAAK0P,gBAAgB0uB,GAAO,CAAExwC,KAAM,gBAG1EoS,EAAKG,IAAIi+B,MAAMl3B,OAAS,KAGxBlL,EAAMkjC,kBAAmB,EAGpBl/B,EAAKf,MAAM,qBAAhB,CAGAe,EAAK0F,QAAQ6wB,QAAQ4I,UAAY,OAEjC,IAAIC,EAAO,SAAcpqC,GACrB,GAAKA,EAAEqqC,UAAP,CAEA,IAAIC,GAA0B,EAE1B5R,EAAS,CACT+H,EAAGzgC,EAAEuqC,MACL5J,EAAG3gC,EAAEwqC,OAGTxjC,EAAMyjC,WAAa,CACfhK,EAAGz1B,EAAK0L,WACRiqB,EAAG31B,EAAK2L,YAGZ3P,EAAM0jC,WAAa,CACfjK,EAAGzgC,EAAE2qC,QACLhK,EAAG3gC,EAAE4qC,SAGT,IAAIT,EAAYb,GAAiBt+B,EAAKf,MAAM,qBAE5Ce,EAAKI,SAAS,gBAAiB,CAAEhP,GAAI4K,EAAM5K,GAAI+tC,UAAWA,IAE1D,IAAIU,EAAO,SAAc7qC,GAChBA,EAAEqqC,YAEPrqC,EAAEynC,kBACFznC,EAAE8qC,iBAEF9jC,EAAM+jC,WAAa,CACftK,EAAGzgC,EAAEuqC,MAAQ7R,EAAO+H,EACpBE,EAAG3gC,EAAEwqC,MAAQ9R,EAAOiI,GAKpB35B,EAAM+jC,WAAWtK,EAAIz5B,EAAM+jC,WAAWtK,EACtCz5B,EAAM+jC,WAAWpK,EAAI35B,EAAM+jC,WAAWpK,EAC/B,KAAO2J,IACdA,GAA0B,EAC1Bt/B,EAAK0F,QAAQ7e,oBAAoB,QAASmZ,EAAKG,IAAI6+B,cAGvDh/B,EAAKI,SAAS,gBAAiB,CAAEhP,GAAI4K,EAAM5K,GAAI+tC,UAAWA,IAC7D,EAEGa,EAAO,SAASA,EAAKhrC,GAChBA,EAAEqqC,YAEP1oC,SAAS9P,oBAAoB,cAAeg5C,GAC5ClpC,SAAS9P,oBAAoB,YAAam5C,GAE1ChkC,EAAM+jC,WAAa,CACftK,EAAGzgC,EAAEuqC,MAAQ7R,EAAO+H,EACpBE,EAAG3gC,EAAEwqC,MAAQ9R,EAAOiI,GAGxB31B,EAAKI,SAAS,gBAAiB,CAAEhP,GAAI4K,EAAM5K,GAAI+tC,UAAWA,IAGtDG,GACAv2C,YAAW,WACP,OAAOiX,EAAK0F,QAAQrb,iBAAiB,QAAS2V,EAAKG,IAAI6+B,YAC1D,GAAE,GAEV,EAEDroC,SAAStM,iBAAiB,cAAew1C,GACzClpC,SAAStM,iBAAiB,YAAa21C,EApEf,CAqE3B,EAEDhgC,EAAK0F,QAAQrb,iBAAiB,cAAe+0C,EA7ED,CA8E/C,EAEGa,GAAUxhC,EAAY,CACtByhC,wBAAyB,SAAiCxhC,GACtD,IAAIsB,EAAOtB,EAAMsB,KACbC,EAASvB,EAAMuB,OACnBD,EAAKkH,OAASjH,EAAOiH,MACxB,IAGDi5B,GAAU1hC,EACV,CACI2hC,cAAe,SAAuBphC,GAClC,IAAIgB,EAAOhB,EAAMgB,KACLhB,EAAMhD,MACZyjC,WAAa,CACfhK,EAAGz1B,EAAK0L,WACRiqB,EAAG31B,EAAK2L,WAEf,EACD00B,cAAe,SAAuBjhC,GACvBA,EAAMY,KACZ0F,QAAQ6wB,QAAQ4I,UAAY,MACpC,EACDmB,cAAe,SAAuBjhC,GAClC,IAAIW,EAAOX,EAAMW,KACbhE,EAAQqD,EAAMrD,MAClBA,EAAM+jC,WAAa,KACnB/jC,EAAMyjC,WAAa,KACnBz/B,EAAK0F,QAAQ6wB,QAAQ4I,UAAY,MACpC,IAEL,SAASp/B,GACL,IAAIC,EAAOD,EAAMC,KACb4D,EAAU7D,EAAM6D,QAChB5H,EAAQ+D,EAAM/D,MACd+T,EAAiBhQ,EAAMgQ,eAEY,SAAnC/P,EAAK0F,QAAQ6wB,QAAQ4I,WACjBn/B,EAAKwL,QAAU,IACfxL,EAAK0F,QAAQ6wB,QAAQ4I,UAAY,QAKzC,IAAIl/B,EAAS2D,EACRtjB,SACA6b,QAAO,SAAS8D,GACb,MAAO,QAAQhJ,KAAKgJ,EAAOxV,KAC9B,IACAif,UACAgZ,MAAK,SAASziB,GACX,OAAO6+B,GAAS7+B,EAAOxV,KAC1B,IAGDwV,GAAUA,EAAOxV,OAASuR,EAAMukC,eAEhCvkC,EAAMukC,aAAetgC,EAAOxV,KAG5BuV,EAAK0F,QAAQ6wB,QAAQiK,kBAAoB1B,GAAS9iC,EAAMukC,eAAiB,IAI7E,IAAI3d,EACA5iB,EAAKf,MAAM,gCAAkCe,EAAKf,MAAM,0BACvD2jB,EAKO7S,IACR/P,EAAKkH,OAASlH,EAAKmH,KAAKzB,QAAQsB,MAAQ4b,IALxCqd,GAAQ,CAAEjgC,KAAMA,EAAM4D,QAASA,EAAS5H,MAAOA,KAC1CgE,EAAKkH,QAAUlH,EAAKG,IAAI8+B,UAAU93B,KAAKzB,QAAQwB,OAAS,IACzDlH,EAAKkH,OAASlH,EAAKG,IAAI8+B,UAAU93B,KAAKzB,QAAQwB,SAOlD6I,IACA/P,EAAKG,IAAIi+B,MAAMl3B,OAAS,MAG5BlH,EAAKG,IAAIi+B,MAAMl3B,OAASlH,EAAKkH,MAChC,IAGDnI,GAAO4O,EAAW,CAClBjiB,OAAQqzC,GACR5oC,MAAOgqC,GACPx1B,QAAS,SAAiBrK,GACtB,IAAIN,EAAOM,EAAMN,KACbhE,EAAQsE,EAAMtE,MAClBgE,EAAK0F,QAAQ7e,oBAAoB,QAASmZ,EAAKG,IAAI6+B,aACnDh/B,EAAKI,SAAS,eAAgB,CAAEnB,MAAOjD,EAAM5K,IAChD,EACDmU,IAAK,KACL3X,KAAM,OACNkhB,OAAQ,CACJ/B,KAAM,CACF,KACA,oBACA,mBACA,YACA,aACA,aACA,cAEJd,OAAQ,CAAC,aAAc,aAAc,SAAU,SAAU,UAAW,UAEpE7B,WAAY,CACRoB,OAAQqzB,GACRpzB,OAAQozB,GACRnzB,WAAYkzB,GACZjzB,WAAYizB,GACZrzB,QAAS,CAAE9gB,KAAM,QAAS2e,SAAU,SAK5Cq3B,GAAiB,SAASC,EAAiBC,GAG3C,OAAO1tC,KAAKwyB,IAAI,EAAGxyB,KAAKC,OAAOwtC,EAAkB,GAAKC,GACzD,EAEGC,GAAyB,SAAgChhC,EAAMmG,EAAU86B,GACzE,GAAKA,EAAL,CAEA,IAAIH,EAAkB9gC,EAAKuH,KAAKzB,QAAQsB,MAEpCla,EAAIiZ,EAASllB,OACbywB,EAAO,KAGX,GAAU,IAANxkB,GAAW+zC,EAAe/5B,IAAMf,EAAS,GAAGoB,KAAKzB,QAAQoB,IAAK,OAAQ,EAG1E,IACIg6B,EADO/6B,EAAS,GACAoB,KAAKzB,QACrBq7B,EAAuBD,EAAS1zB,WAAa0zB,EAASn5B,YACtDg5B,EAAYG,EAAS95B,MAAQ+5B,EAC7BC,EAAcP,GAAeC,EAAiBC,GAGlD,GAAoB,IAAhBK,EAAmB,CACnB,IAAK,IAAI1zC,EAAQ,EAAGA,EAAQR,EAAGQ,IAAS,CACpC,IAAIwY,EAAQC,EAASzY,GACjB2zC,EAAWn7B,EAAMqB,KAAKC,MAAMN,IAAkC,GAA5BhB,EAAMqB,KAAKzB,QAAQwB,OACzD,GAAI25B,EAAe/5B,IAAMm6B,EACrB,OAAO3zC,CAEd,CACD,OAAOR,CACV,CAKD,IAFA,IAAIo0C,EAAqBJ,EAAS3zB,UAAY2zB,EAASp5B,aACnDy5B,EAAaL,EAAS55B,OAASg6B,EAC1BE,EAAS,EAAGA,EAASt0C,EAAGs0C,IAAU,CACvC,IAGIzB,EAHSyB,EAASJ,EAGCL,EACnBf,EAHS3sC,KAAKC,MAAMkuC,EAASJ,GAGVG,EAEnBE,EAAUzB,EAAUkB,EAAS3zB,UAC7Bm0B,EAAY3B,EAAUgB,EACtBY,EAAa3B,EAAUuB,EAAaL,EAASp5B,aAEjD,GAAIm5B,EAAe/5B,IAAMy6B,GAAcV,EAAe/5B,IAAMu6B,EAAS,CACjE,GAAIR,EAAeh6B,KAAOy6B,EACtB,OAAOF,EAEP9vB,EADO8vB,IAAWt0C,EAAI,EACfs0C,EAEA,IAEd,CACJ,CAED,OAAa,OAAT9vB,EACOA,EAGJxkB,CA1DoB,CA2D9B,EAEG00C,GAAqB,CACrBt6B,OAAQ,EACRF,MAAO,EACHy6B,gBACA,OAAOj1C,KAAK0a,MACf,EACGw6B,cAAUj9C,GACU,IAAhB+H,KAAK0a,QAAwB,IAARziB,IAAW+H,KAAK0a,OAASziB,EACrD,EACGk9C,eACA,OAAOn1C,KAAKwa,KACf,EACG46B,aAASn9C,GACU,IAAf+H,KAAKwa,OAAuB,IAARviB,IAAW+H,KAAKwa,MAAQviB,EACnD,EACDo9C,cAAe,SAAuB36B,EAAQF,GACtB,IAAhBxa,KAAK0a,QAA2B,IAAXA,IAAc1a,KAAK0a,OAASA,GAClC,IAAf1a,KAAKwa,OAAyB,IAAVA,IAAaxa,KAAKwa,MAAQA,EACrD,GAGD86B,GAAW,SAAgBzjC,GAC3B,IAAI2B,EAAO3B,EAAK2B,KAEhBgF,EAAKhF,EAAK0F,QAAS,OAAQ,QAE3B1F,EAAKG,IAAI4hC,kBAAoBpiD,KAAKqX,KACrC,EAOGgrC,GAAc,SAAqBtjC,GACnC,IAAIsB,EAAOtB,EAAMsB,KACbC,EAASvB,EAAMuB,OACf7O,EAAK6O,EAAO7O,GACZ9D,EAAQ2S,EAAO3S,MACf2jC,EAAoBhxB,EAAOgxB,kBAE/BjxB,EAAKG,IAAI8hC,SAAW30C,EAEpB,IAAI0J,EAAMrX,KAAKqX,MACXkrC,EAAYlrC,EACZuU,EAAU,EAEd,GAAI0lB,IAAsBza,GAAkBK,KAAM,CAC9CtL,EAAU,EACV,IAAI42B,EAAWniC,EAAKf,MAAM,4BACtBmjC,EAAOprC,EAAMgJ,EAAKG,IAAI4hC,kBAC1BG,EAAYE,EAAOD,EAAWnrC,GAAOmrC,EAAWC,GAAQprC,CAC3D,CAEDgJ,EAAKG,IAAI4hC,kBAAoBG,EAE7BliC,EAAKiG,gBACDjG,EAAK0P,gBAED3Q,GAGA,CACImjC,UAAWA,EACX9wC,GAAIA,EACJma,QAASA,EACT0lB,kBAAmBA,IAI3B3jC,EAEP,EAEG+0C,GAAW,SAAkBtjC,EAAM02B,EAAGE,GACtC,IAAI2M,EAAK9sC,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,GAAmBA,UAAU,GAAK,EACzE+sC,EAAK/sC,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,GAAmBA,UAAU,GAAK,EAEzEuJ,EAAKghC,YACLhhC,EAAK2M,WAAa,KAClB3M,EAAK4M,WAAa,KAClB5M,EAAK2M,WAAa3M,EAAK0gC,WAAWhK,EAAI12B,EAAKghC,WAAWtK,EACtD12B,EAAK4M,WAAa5M,EAAK0gC,WAAW9J,EAAI52B,EAAKghC,WAAWpK,EACtD52B,EAAKyM,OAAS,MACdzM,EAAK0M,OAAS,QAEd1M,EAAK2M,WAAa+pB,EAClB12B,EAAK4M,WAAagqB,EAEdh2C,KAAKqX,MAAQ+H,EAAKmjC,YAEG,IAAjBnjC,EAAKwM,SACLi3B,GAAczjC,EAAM02B,EAAGE,EAAG2M,EAAIC,GAIlCxjC,EAAKyM,OAAS,EACdzM,EAAK0M,OAAS,EACd1M,EAAKwM,QAAU,GAG1B,EAEGi3B,GAAgB,SAAuBzjC,EAAM02B,EAAGE,EAAG2M,EAAIC,GACnDxjC,EAAKkyB,oBAAsBza,GAAkBK,MAC7C9X,EAAK2M,WAAa,KAClB3M,EAAK2M,WAAa+pB,EAClB12B,EAAK4M,WAAa,KAClB5M,EAAK4M,WAAagqB,GACX52B,EAAKkyB,oBAAsBza,GAAkBE,MACpD3X,EAAK2M,WAAa,KAClB3M,EAAK2M,WAAa+pB,EAAS,GAAL6M,EAEtBvjC,EAAK4M,WAAa,KAClB5M,EAAK4M,WAAagqB,EAAS,GAAL4M,EAEtBxjC,EAAKyM,OAAS,GACdzM,EAAK0M,OAAS,IACP1M,EAAKkyB,oBAAsBza,GAAkBG,QACpD5X,EAAK4M,WAAa,KAClB5M,EAAK4M,WAAagqB,EAAI,IACf52B,EAAKkyB,oBAAsBza,GAAkBC,MACpD1X,EAAK2M,WAAa,KAClB3M,EAAK2M,WAAa+pB,EAAI,GACtB12B,EAAK4M,WAAa,KAEzB,EAOG82B,GAAiB,SAAwBzjC,GACzC,IAAIgB,EAAOhB,EAAMgB,KAEb5O,EADS4N,EAAMiB,OACH7O,GAGZwO,EAAOI,EAAKkG,WAAWwc,MAAK,SAAS5c,GACrC,OAAOA,EAAM1U,KAAOA,CACvB,IAGIwO,IAKLA,EAAK4L,OAAS,GACd5L,EAAK6L,OAAS,GACd7L,EAAK2L,QAAU,EAGf3L,EAAKs/B,kBAAmB,EAC3B,EAEGwD,GAAgB,SAAuB58B,GACvC,OACIA,EAAMqB,KAAKzB,QAAQwB,OACe,GAAlCpB,EAAMqB,KAAKzB,QAAQgC,aACY,GAA/B5B,EAAMqB,KAAKzB,QAAQyH,SAE1B,EACGw1B,GAAe,SAAsB78B,GACrC,OACIA,EAAMqB,KAAKzB,QAAQsB,MACa,GAAhClB,EAAMqB,KAAKzB,QAAQ0H,WACc,GAAjCtH,EAAMqB,KAAKzB,QAAQiC,WAE1B,EAEGi7B,GAAW,SAAkBxjC,GAC7B,IAAIY,EAAOZ,EAAMY,KACbC,EAASb,EAAMa,OACf7O,EAAK6O,EAAO7O,GACZ+tC,EAAYl/B,EAAOk/B,UAGnBpgC,EAAOiB,EAAKf,MAAM,WAAY,CAAE7N,GAAIA,IAGpCwO,EAAOI,EAAKkG,WAAWwc,MAAK,SAAS5c,GACrC,OAAOA,EAAM1U,KAAOA,CACvB,IAEGyxC,EAAW7iC,EAAKkG,WAAWrlB,OAC3BiiD,EAAW3D,EAAUR,aAAa5/B,GAGtC,GAAKa,EAAL,CAEA,IAAImjC,EAAe,CACftN,EAAG71B,EAAK6/B,WAAWhK,EAAI71B,EAAKmgC,WAAWtK,EAAI71B,EAAK8/B,WAAWjK,EAC3DE,EAAG/1B,EAAK6/B,WAAW9J,EAAI/1B,EAAKmgC,WAAWpK,EAAI/1B,EAAK8/B,WAAW/J,GAI3DqN,EAAaN,GAAc9iC,GAC3BqjC,EAAYN,GAAa/iC,GAGzBsjC,EAAOjwC,KAAKC,MAAM8M,EAAKmH,KAAKC,MAAMJ,MAAQi8B,GAC1CC,EAAOL,IAAUK,EAAOL,GAG5B,IAAI3a,EAAOj1B,KAAKC,MAAM2vC,EAAWK,EAAO,GAExC1B,GAAmBE,UAAYsB,EAAa9a,EAC5CsZ,GAAmBI,SAAWqB,EAAYC,EAG1C,IAAI9qC,EAAW,CACXu9B,EAAG1iC,KAAKC,MAAM6vC,EAAapN,EAAIqN,GAC/BvN,EAAGxiC,KAAKC,MAAM6vC,EAAatN,EAAIwN,GAC/BE,aAAc,WACV,OACIJ,EAAapN,EAAI6L,GAAmBC,WACpCsB,EAAapN,EAAI,GACjBoN,EAAatN,EAAI+L,GAAmBG,UACpCoB,EAAatN,EAAI,EAEVqN,EACJt2C,KAAKmpC,EAAIuN,EAAO12C,KAAKipC,CAC/B,EACD2N,YAAa,WAoBT,IAnBA,IAAIttB,EAAQ9V,EAAKf,MAAM,oBACnBokC,EAAkBrjC,EAAKkG,WAAW/J,QAAO,SAAS2J,GAClD,OAAOA,EAAMqB,KAAKzB,QAAQwB,MAC7B,IACGnB,EAAW+P,EAAMtW,KAAI,SAAST,GAC9B,OAAOskC,EAAgB3gB,MAAK,SAASrb,GACjC,OAAOA,EAAUjW,KAAO2N,EAAK3N,EAChC,GACJ,IAEGkgC,EAAevrB,EAASqF,WAAU,SAAStF,GAC3C,OAAOA,IAAUlG,CACpB,IACGojC,EAAaN,GAAc9iC,GAC3B9S,EAAIiZ,EAASllB,OACbyiD,EAAMx2C,EAENy2C,EAAc,EACdC,EAAW,EACN32C,EAAI,EAAGA,EAAIC,EAAGD,IAInB,GADA02C,GADAC,EAAWD,GADGb,GAAc38B,EAASlZ,IAGjCk2C,EAAapN,EAAI4N,EAAa,CAC9B,GAAIjS,EAAezkC,EAAG,CAClB,GAAIk2C,EAAapN,EAAI6N,EAAWR,EAAY,CACxCM,EAAMz2C,EACN,KACH,CACD,QACH,CACDy2C,EAAMz2C,EACN,KACH,CAEL,OAAOy2C,CACV,GAIDh2C,EAAQ41C,EAAO,EAAI9qC,EAAS+qC,eAAiB/qC,EAASgrC,cAC1DpjC,EAAKI,SAAS,YAAa,CAAEnB,MAAOW,EAAMtS,MAAOA,IAGjD,IAAIgkC,EAAe6N,EAAUT,WAE7B,QAAqB70C,IAAjBynC,GAA8BA,IAAiBhkC,EAAO,CAGtD,GAFA6xC,EAAUV,SAASnxC,QAEEzD,IAAjBynC,EAA4B,OAEhCtxB,EAAKI,SAAS,oBAAqB,CAC/B0V,MAAO9V,EAAKf,MAAM,oBAClByuB,OAAQoV,EACR1wC,OAAQ9E,GAEf,CA5FgB,CA6FpB,EAKGm2C,GAAUhlC,EAAY,CACtBilC,aAAc1B,GACd3hC,gBAAiBoiC,GACjBpC,cAAeuC,KASfe,GAAU,SAAetkC,GACzB,IAAIW,EAAOX,EAAMW,KACbhE,EAAQqD,EAAMrD,MACd4H,EAAUvE,EAAMuE,QAChBmM,EAAiB1Q,EAAM0Q,eAE3B0zB,GAAQ,CAAEzjC,KAAMA,EAAMhE,MAAOA,EAAO4H,QAASA,IAC7C,IAAIggC,EAAkB5nC,EAAM4nC,gBAGxBlD,EAAkB1gC,EAAKmH,KAAKzB,QAAQsB,MAGpCq8B,EAAkBrjC,EAAKkG,WAAW/J,QAAO,SAAS2J,GAClD,OAAOA,EAAMqB,KAAKzB,QAAQwB,MAC7B,IAGGnB,EAAW/F,EACVf,MAAM,oBACNO,KAAI,SAAST,GACV,OAAOskC,EAAgB3gB,MAAK,SAAS5c,GACjC,OAAOA,EAAM1U,KAAO2N,EAAK3N,EAC5B,GACJ,IACA+K,QAAO,SAAS4C,GACb,OAAOA,CACV,IAGD8kC,EAAYD,EACVhD,GAAuB5gC,EAAM+F,EAAU69B,GACvC,KAGF3B,EAAWjiC,EAAKG,IAAI8hC,UAAY,KAGpCjiC,EAAKG,IAAI8hC,SAAW,KAEpB,IAAI6B,EAAkB,EAClBC,EAAoB,EACpBC,EAAiB,EAErB,GAAwB,IAApBj+B,EAASllB,OAAb,CAEA,IAAIojD,EAAYl+B,EAAS,GAAGoB,KAAKzB,QAC7Bw7B,EAAqB+C,EAAU92B,UAAY82B,EAAUv8B,aACrDq5B,EAAuBkD,EAAU72B,WAAa62B,EAAUt8B,YACxDg5B,EAAYsD,EAAUj9B,MAAQ+5B,EAC9BI,EAAa8C,EAAU/8B,OAASg6B,EAChCF,EAAcP,GAAeC,EAAiBC,GAGlD,GAAoB,IAAhBK,EAAmB,CACnB,IAAIpB,EAAU,EACVG,EAAa,EAEjBh6B,EAAShc,SAAQ,SAAS+b,EAAOxY,GAC7B,GAAIu2C,EAAW,CACX,IAAIzB,EAAO90C,EAAQu2C,EAEf9D,GADU,IAAVqC,EACmC,KAArBlB,GACG,IAAVkB,EAC4B,KAArBlB,EACE,IAATkB,EAC2B,IAArBlB,EACG,IAATkB,EAC2B,IAArBlB,EAEA,CAEpB,CAEGnxB,IACAjK,EAAM4F,WAAa,KACnB5F,EAAM6F,WAAa,MAGlB7F,EAAMo5B,kBACPmD,GAASv8B,EAAO,EAAG85B,EAAUG,GAGjC,IAEImE,GAFap+B,EAAMqB,KAAKzB,QAAQwB,OAASg6B,IAEZp7B,EAAMo5B,iBAAmBp5B,EAAMyF,QAAU,GAE1Eq0B,GAAWsE,CACd,GACJ,KAEI,CACD,IAAIC,EAAQ,EACRC,EAAQ,EAEZr+B,EAAShc,SAAQ,SAAS+b,EAAOxY,GACzBA,IAAUu2C,IACVC,EAAkB,GAGlBx2C,IAAU20C,IACV+B,GAAkB,GAGlBl+B,EAAMo5B,kBAAoBp5B,EAAMyF,QAAU,KAC1Cw4B,GAAqB,GAGzB,IAAIM,EAAc/2C,EAAQ02C,EAAiBF,EAAkBC,EAEzDO,EAASD,EAAcrD,EACvBuD,EAAStxC,KAAKC,MAAMmxC,EAAcrD,GAElCrB,EAAU2E,EAAS3D,EACnBf,EAAU2E,EAASpD,EAEnBqD,EAAUvxC,KAAKwxC,KAAK9E,EAAUwE,GAC9BO,EAAUzxC,KAAKwxC,KAAK7E,EAAUwE,GAElCD,EAAQxE,EACRyE,EAAQxE,EAEJ95B,EAAMo5B,mBAENnvB,IACAjK,EAAM4F,WAAa,KACnB5F,EAAM6F,WAAa,MAGvB02B,GAASv8B,EAAO65B,EAASC,EAAS4E,EAASE,GAC9C,GACJ,CAvFgC,CAwFpC,EAOGC,GAAuB,SAA8B7+B,EAAOlC,GAC5D,OAAOA,EAAQzH,QAAO,SAAS8D,GAE3B,OAAIA,EAAO5Z,OAAQ4Z,EAAO5Z,KAAK+K,IACpB0U,EAAM1U,KAAO6O,EAAO5Z,KAAK+K,EAKvC,GACJ,EAEGwzC,GAAOj3B,EAAW,CAClBjiB,OAAQo2C,GACR3rC,MAAOwtC,GACPp+B,IAAK,KACL3X,KAAM,OACN4gB,aAAc,SAAsBzO,GAChC,IAAIC,EAAOD,EAAMC,KACjBA,EAAKkG,WACA/J,QAAO,SAASyD,GACb,OAAOA,EAAKs/B,kBAAqC,IAAjBt/B,EAAK2L,SAAiB3L,EAAK4I,OAC9D,IACAze,SAAQ,SAAS6V,GACdA,EAAKuQ,WACLnQ,EAAKmG,gBAAgBvG,EACxB,GACR,EACDwO,2BAA4Bu2B,GAC5B71B,OAAQ,CACJ/B,KAAM,CAAC,sBAIX83B,GAAW,SAAgBxmC,GAC3B,IAAI2B,EAAO3B,EAAK2B,KACZhE,EAAQqC,EAAKrC,MACjBgE,EAAKG,IAAIykC,KAAO5kC,EAAKiG,gBAAgBjG,EAAK0P,gBAAgBk1B,KAC1D5oC,EAAM4nC,gBAAkB,KACxB5nC,EAAM8oC,aAAc,CACvB,EAEGC,GAAuB,SAA8BrmC,GACrD,IAAIsB,EAAOtB,EAAMsB,KACbhE,EAAQ0C,EAAM1C,MACdiE,EAASvB,EAAMuB,OACdD,EAAKf,MAAM,sCAChBjD,EAAM4nC,gBAAkB,CACpB/8B,KAAM5G,EAAO1D,SAASyoC,UAAYhlC,EAAKG,IAAIykC,KAAKz9B,KAAKzB,QAAQmB,KAC7DC,IACI7G,EAAO1D,SAAS0oC,UACfjlC,EAAKmH,KAAKC,MAAMN,IAAM9G,EAAKmH,KAAKzB,QAAQyH,UAAYnN,EAAKmH,KAAKzB,QAAQ+H,YAElF,EAOGy3B,GAAUzmC,EAAY,CACtB0mC,SAAUJ,GACVK,aAPuB,SAA8BpmC,GACzCA,EAAMhD,MACZ4nC,gBAAkB,IAC3B,IAOGyB,GAAU,SAAejmC,GACzB,IAAIY,EAAOZ,EAAMY,KACbhE,EAAQoD,EAAMpD,MACd4H,EAAUxE,EAAMwE,QAkBpB,GAfAshC,GAAQ,CAAEllC,KAAMA,EAAMhE,MAAOA,EAAO4H,QAASA,IAG7C5D,EAAKG,IAAIykC,KAAKhB,gBAAkB5nC,EAAM4nC,gBAGlC5nC,EAAM8oC,cAAgB9oC,EAAMspC,WAC5BtpC,EAAM8oC,aAAc,EAGpB9kC,EAAK0F,QAAQ6wB,QAAQ1yB,MAAQ,GAC7B7D,EAAKkH,OAAS,MAIdlL,EAAMspC,SAAU,CAChB,IAAIC,EAAYtyC,KAAK4kC,MAAM77B,EAAMspC,UAC7BC,IAAcvlC,EAAKkH,SACnBlL,EAAM8oC,aAAc,EACpB9kC,EAAK0F,QAAQ6wB,QAAQ1yB,MAAQ,WAC7B7D,EAAKkH,OAASq+B,EAErB,CACJ,EAEGC,GAAe73B,EAAW,CAC1BjiB,OAAQm5C,GACR1uC,MAAOkvC,GACPz3C,KAAM,gBACNkhB,OAAQ,CACJ/B,KAAM,CAAC,WAAY,mBACnBd,OAAQ,CAAC,SAAU,cACnB7B,WAAY,CACRuB,WAAY,aAKpB85B,GAAa,SAAoB//B,EAAS9X,EAAMiW,GAE5CA,EACAmB,EAAKU,EAAS9X,EAFC4H,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,GAAmBA,UAAU,GAAK,IAInFkQ,EAAQyxB,gBAAgBvpC,EAE/B,EAEG83C,GAAiB,SAAwBC,GAEzC,GAAKA,GAAyB,KAAhBA,EAAMx9C,MAApB,CAIA,IAEIw9C,EAAMx9C,MAAQ,EACF,CAAd,MAAOC,GAAO,CAGhB,GAAIu9C,EAAMx9C,MAAO,CAEb,IAAIy9C,EAAOhR,GAAgB,QACvBxuB,EAAau/B,EAAMv/B,WACnBjG,EAAMwlC,EAAMrzB,YAChBszB,EAAKhgC,YAAY+/B,GACjBC,EAAKzY,QAGDhtB,EACAiG,EAAWJ,aAAa2/B,EAAOxlC,GAE/BiG,EAAWR,YAAY+/B,EAE9B,CAtBA,CAuBJ,EAEGE,GAAW,SAAgBxnC,GAC3B,IAAI2B,EAAO3B,EAAK2B,KACZhE,EAAQqC,EAAKrC,MAGjBgE,EAAK0F,QAAQtU,GAAK,qBAAuB4K,EAAM5K,GAG/C4T,EAAKhF,EAAK0F,QAAS,OAAQ1F,EAAKf,MAAM,aAGtC+F,EAAKhF,EAAK0F,QAAS,gBAAiB,uBAAyB1J,EAAM5K,IAGnE4T,EAAKhF,EAAK0F,QAAS,kBAAmB,wBAA0B1J,EAAM5K,IAGtE00C,GAAqB,CACjB9lC,KAAMA,EACNC,OAAQ,CAAE9X,MAAO6X,EAAKf,MAAM,8BAEhC8mC,GAAoB,CAAE/lC,KAAMA,EAAMC,OAAQ,CAAE9X,MAAO6X,EAAKf,MAAM,yBAC9D+mC,GAAsB,CAClBhmC,KAAMA,EACNC,OAAQ,CAAE9X,MAAO6X,EAAKf,MAAM,iCAEhCgnC,GAAe,CAAEjmC,KAAMA,IACvBkmC,GAAe,CAAElmC,KAAMA,EAAMC,OAAQ,CAAE9X,MAAO6X,EAAKf,MAAM,mBACzDknC,GAAiB,CAAEnmC,KAAMA,EAAMC,OAAQ,CAAE9X,MAAO6X,EAAKf,MAAM,yBAG3De,EAAKG,IAAIimC,aAAe,SAASpxC,GAC7B,GAAKgL,EAAK0F,QAAQvd,MAAlB,CAKA,IAAIo6B,EAAQnzB,MAAMsB,KAAKsP,EAAK0F,QAAQ6c,OAAO/iB,KAAI,SAASxB,GAEpD,OADAA,EAAKqoB,cAAgBroB,EAAKqoC,mBACnBroC,CACV,IAGDjV,YAAW,WAEPiT,EAAMiY,OAAOsO,GAGbmjB,GAAe1lC,EAAK0F,QACvB,GAAE,IAfF,CAgBJ,EAED1F,EAAK0F,QAAQrb,iBAAiB,SAAU2V,EAAKG,IAAIimC,aACpD,EAEGN,GAAuB,SAA8BpnC,GACrD,IAAIsB,EAAOtB,EAAMsB,KACbC,EAASvB,EAAMuB,OACdD,EAAKf,MAAM,oCAChBwmC,GACIzlC,EAAK0F,QACL,WACEzF,EAAO9X,MACT8X,EAAO9X,MAAQ8X,EAAO9X,MAAM6N,KAAK,KAAO,GAE/C,EAEG+vC,GAAsB,SAA6B/mC,GACnD,IAAIgB,EAAOhB,EAAMgB,KACbC,EAASjB,EAAMiB,OACnBwlC,GAAWzlC,EAAK0F,QAAS,WAAYzF,EAAO9X,MAC/C,EAEG69C,GAAwB,SAA+B5mC,GACvD,IAAIY,EAAOZ,EAAMY,KACbC,EAASb,EAAMa,OACnBwlC,GAAWzlC,EAAK0F,QAAS,kBAAmBzF,EAAO9X,MACtD,EAEG89C,GAAiB,SAAwB5mC,GACzC,IAAIW,EAAOX,EAAMW,KACbg3B,EAAah3B,EAAKf,MAAM,gBACxBqnC,EAAkBtmC,EAAKf,MAAM,oBAC7BsnC,EAAevP,IAAesP,EAClCb,GAAWzlC,EAAK0F,QAAS,WAAY6gC,EACxC,EAEGL,GAAiB,SAAwBnmC,GACzC,IAAIC,EAAOD,EAAMC,KACJD,EAAME,OAEP9X,MAI+B,IAAlC6X,EAAKf,MAAM,oBAChBwmC,GAAWzlC,EAAK0F,QAAS,YAAY,GAJrC+/B,GAAWzlC,EAAK0F,QAAS,YAAY,EAM5C,EAEGygC,GAAmB,SAA0B7lC,GAC7C,IAAIN,EAAOM,EAAMN,KACbC,EAASK,EAAML,OACnBwlC,GACIzlC,EAAK0F,QACL,YACEzF,EAAO9X,OACQ,IAAjB8X,EAAO9X,MAAiB,GAAK8X,EAAO9X,MAE3C,EAEGq+C,GAAuB,SAA8BhU,GACrD,IAAIxyB,EAAOwyB,EAAMxyB,KACb0F,EAAU1F,EAAK0F,QAEf1F,EAAKf,MAAM,mBAAqB,GAChCwmC,GAAW//B,EAAS,YAAY,GAChC+/B,GAAW//B,EAAS,QAAQ,KAG5B+/B,GAAW//B,EAAS,QAAQ,EAAM1F,EAAKf,MAAM,aAGnBe,EAAKf,MAAM,uBAEjCyG,EAAQ+gC,kBAAkB,IAI1BzmC,EAAKf,MAAM,iBACXwmC,GAAW//B,EAAS,YAAY,GAG3C,EAEGghC,GAA4B,SAAmChU,GAC/D,IAAI1yB,EAAO0yB,EAAM1yB,KACSA,EAAKf,MAAM,uBAErCe,EAAK0F,QAAQ+gC,kBAAkBzmC,EAAKf,MAAM,2BAC7C,EAEG0nC,GAAUh5B,EAAW,CACrBpI,IAAK,QACL3X,KAAM,UACN8gB,YAAY,EACZE,kBAAkB,EAClBnJ,WAAY,CACRhb,KAAM,QAGViB,OAAQm6C,GACRl7B,QAAS,SAAiBkoB,GACtB,IAAI7yB,EAAO6yB,EAAO7yB,KAClBA,EAAK0F,QAAQ7e,oBAAoB,SAAUmZ,EAAKG,IAAIimC,aACvD,EACDjwC,MAAOsI,EAAY,CACf45B,cAAemO,GACfnmC,gBAAiBmmC,GACjBhO,uBAAwBkO,GAExBE,iBAAkBX,GAClBY,qBAAsBZ,GACtBa,+BAAgCd,GAChCe,uBAAwBhB,GACxBiB,4BAA6BlB,GAC7BmB,uBAAwBd,GACxBe,iBAAkBhB,OAItBiB,GAAM,CACNC,MAAO,GACPC,MAAO,IAGPC,GAAW,SAAgBjpC,GAC3B,IAAI2B,EAAO3B,EAAK2B,KACZhE,EAAQqC,EAAKrC,MAGbuG,EAAQqyB,GAAgB,SAC5B5vB,EAAKzC,EAAO,MAAO,qBAAuBvG,EAAM5K,IAGhD4T,EAAKzC,EAAO,KAAM,wBAA0BvG,EAAM5K,IAGlD4T,EAAKzC,EAAO,cAAe,QAG3BvC,EAAKG,IAAIonC,cAAgB,SAASvyC,IACRA,EAAEwyC,UAAYL,GAAIC,OAASpyC,EAAEwyC,UAAYL,GAAIE,SAGnEryC,EAAE8qC,iBAGF9/B,EAAKG,IAAIoC,MAAMklC,QAClB,EAEDznC,EAAKG,IAAI6+B,YAAc,SAAShqC,GACTA,EAAE5C,SAAWmQ,GAASA,EAAMmlC,SAAS1yC,EAAE5C,SAM1D4N,EAAKG,IAAIoC,MAAMklC,OAClB,EAGDllC,EAAMlY,iBAAiB,UAAW2V,EAAKG,IAAIonC,eAC3CvnC,EAAK0F,QAAQrb,iBAAiB,QAAS2V,EAAKG,IAAI6+B,aAGhD2I,GAAiBplC,EAAOvG,EAAM4rC,SAG9B5nC,EAAK4F,YAAYrD,GACjBvC,EAAKG,IAAIoC,MAAQA,CACpB,EAEGolC,GAAmB,SAA0BplC,EAAOpa,GACpDoa,EAAMu0B,UAAY3uC,EAClB,IAAI0/C,EAAYtlC,EAAMulC,cAAc,2BAIpC,OAHID,GACA7iC,EAAK6iC,EAAW,WAAY,KAEzB1/C,CACV,EAEG4/C,GAAYp6B,EAAW,CACvB/f,KAAM,aACN8gB,YAAY,EACZhjB,OAAQ47C,GACR38B,QAAS,SAAiBjM,GACtB,IAAIsB,EAAOtB,EAAMsB,KACjBA,EAAKG,IAAIoC,MAAMlY,iBAAiB,UAAW2V,EAAKG,IAAIonC,eACpDvnC,EAAK0F,QAAQ7e,oBAAoB,QAASmZ,EAAKG,IAAI6+B,YACtD,EACD7oC,MAAOsI,EAAY,CACfupC,mBAAoB,SAA4BhpC,GAC5C,IAAIgB,EAAOhB,EAAMgB,KACbC,EAASjB,EAAMiB,OACnB0nC,GAAiB3nC,EAAKG,IAAIoC,MAAOtC,EAAO9X,MAC3C,IAGL2mB,OAAQ,CACJ7C,OAAQ,CAAC,UAAW,aAAc,cAClC7B,WAAY,CACRmB,QAAS,CAAE9gB,KAAM,QAAS2e,SAAU,KACpCsC,WAAY,SACZC,WAAY,aAKpBwa,GAAOxY,EAAW,CAClB/f,KAAM,YACN8gB,YAAY,EACZI,OAAQ,CACJ7C,OAAQ,CAAC,aAAc,aAAc,SAAU,SAAU,WACzD7B,WAAY,CACRoB,OAAQ,SACRC,OAAQ,SACRC,WAAY,SACZC,WAAY,SACZJ,QAAS,CAAE9gB,KAAM,QAAS2e,SAAU,SAK5C6+B,GAAU,SAAiB5pC,GAC3B,IAAI2B,EAAO3B,EAAK2B,KACZm1B,EAAoC,GAA1Bn1B,EAAKmH,KAAKzB,QAAQsB,MAC5BouB,EAAqC,GAA3Bp1B,EAAKmH,KAAKzB,QAAQwB,OAEhClH,EAAKG,IAAIgmB,KAAOnmB,EAAKiG,gBACjBjG,EAAK0P,gBAAgByW,GAAM,CACvB5a,QAAS,EACTC,OAAQ,IACRC,OAAQ,IACRC,WAAYypB,EACZxpB,WAAYypB,IAGvB,EAEG8S,GAAW,SAAkBxpC,GAC7B,IAAIsB,EAAOtB,EAAMsB,KACbC,EAASvB,EAAMuB,OACdD,EAAKG,IAAIgmB,MAKdnmB,EAAKG,IAAIgmB,KAAKza,WAAazL,EAAO1D,SAASyoC,UAC3ChlC,EAAKG,IAAIgmB,KAAKxa,WAAa1L,EAAO1D,SAAS0oC,SAC3CjlC,EAAKG,IAAIgmB,KAAK3a,OAAS,EACvBxL,EAAKG,IAAIgmB,KAAK1a,OAAS,EACvBzL,EAAKG,IAAIgmB,KAAK5a,QAAU,GARpB08B,GAAQ,CAAEjoC,KAAMA,GASvB,EAEGmoC,GAAW,SAAkBnpC,GAC7B,IAAIgB,EAAOhB,EAAMgB,KACZA,EAAKG,IAAIgmB,OAGdnmB,EAAKG,IAAIgmB,KAAK5a,QAAU,EAC3B,EAEG68B,GAAc,SAAqBhpC,GACnC,IAAIY,EAAOZ,EAAMY,KACZA,EAAKG,IAAIgmB,OAGdnmB,EAAKG,IAAIgmB,KAAK3a,OAAS,IACvBxL,EAAKG,IAAIgmB,KAAK1a,OAAS,IACvBzL,EAAKG,IAAIgmB,KAAK5a,QAAU,EAC3B,EAEG88B,GAAU,SAAehpC,GACzB,IAAIW,EAAOX,EAAMW,KACbhE,EAAQqD,EAAMrD,MACd4H,EAAUvE,EAAMuE,QACpB0kC,GAAQ,CAAEtoC,KAAMA,EAAMhE,MAAOA,EAAO4H,QAASA,IAC7C,IAAIuiB,EAAOnmB,EAAKG,IAAIgmB,KAEG,IAAnBviB,EAAQ/iB,QAAgBslC,GAAyB,IAAjBA,EAAK5a,UACrCvL,EAAKmG,gBAAgBggB,GACrBnmB,EAAKG,IAAIgmB,KAAO,KAEvB,EAEGmiB,GAAU7pC,EAAY,CACtB0mC,SAAU+C,GACVK,SAAUH,GACVhD,aAAc+C,KAGdK,GAAO76B,EAAW,CAClBe,YAAY,EACZE,kBAAkB,EAClBhhB,KAAM,OACNuI,MAAOkyC,KAGPI,GAAgB,SAAuB/iC,EAAS6c,GAChD,IAEI,IAAIe,EAAe,IAAIC,aACvBhB,EAAMx4B,SAAQ,SAASiU,GACfA,aAAgBwlB,KAChBF,EAAaxN,MAAM7K,IAAIjN,GAEvBslB,EAAaxN,MAAM7K,IACf,IAAIuY,KAAK,CAACxlB,GAAOA,EAAKpQ,KAAM,CACxBnD,KAAMuT,EAAKvT,OAI1B,IAGDib,EAAQ6c,MAAQe,EAAaf,KAGhC,CAFC,MAAOn6B,GACL,OAAO,CACV,CACD,OAAO,CACV,EAEGsgD,GAAW,SAAgBrqC,GAE3B,OADWA,EAAK2B,KACHG,IAAIwoC,OAAS,CAAC,CAC9B,EAEGC,GAAW,SAAkB5oC,EAAM5O,GACnC,OAAO4O,EAAKG,IAAIwoC,OAAOv3C,EAC1B,EAEGy3C,GAA8B,SAAqC7oC,GACnEA,EAAKf,MAAM,oBAAoBlV,SAAQ,SAASgV,GACvCiB,EAAKG,IAAIwoC,OAAO5pC,EAAK3N,KAC1B4O,EAAK0F,QAAQE,YAAY5F,EAAKG,IAAIwoC,OAAO5pC,EAAK3N,IACjD,GACJ,EAEG03C,GAAkB,SAAyBpqC,GAC3C,IAAIsB,EAAOtB,EAAMsB,KACjB,OAAO6oC,GAA4B7oC,EACtC,EAEG+oC,GAAa,SAAoB/pC,GACjC,IAAIgB,EAAOhB,EAAMgB,KACbC,EAASjB,EAAMiB,OAGf+oC,IAFWhpC,EAAKf,MAAM,WAAYgB,EAAO7O,IAClBs8B,SAAWlT,GAAWG,QACR3a,EAAKf,MAAM,4BAChDgqC,EAAgBrU,GAAgB,SACpCqU,EAAcx+C,KAAOu+C,EAAqB,OAAS,SACnDC,EAAcr7C,KAAOoS,EAAKf,MAAM,YAChCgqC,EAAc9sB,SAAWnc,EAAKf,MAAM,gBACpCe,EAAKG,IAAIwoC,OAAO1oC,EAAO7O,IAAM63C,EAC7BJ,GAA4B7oC,EAC/B,EAEGkpC,GAAgB,SAAqB9pC,GACrC,IAAIY,EAAOZ,EAAMY,KACbC,EAASb,EAAMa,OACfkpC,EAAQP,GAAS5oC,EAAMC,EAAO7O,IAClC,GAAK+3C,IAG8B,OAA/BlpC,EAAO0tB,sBAA8Bwb,EAAMhhD,MAAQ8X,EAAO0tB,qBAGzD3tB,EAAKf,MAAM,6BAAhB,CAEA,IAAImqC,EAAWppC,EAAKf,MAAM,WAAYgB,EAAO7O,IAC7Cq3C,GAAcU,EAAO,CAACC,EAASprC,MAHoB,CAItD,EAEGqrC,GAAmB,SAA0BhqC,GAC7C,IAAIW,EAAOX,EAAMW,KACbC,EAASZ,EAAMY,OAEdD,EAAKf,MAAM,6BAChBlW,YAAW,WACP,IAAIogD,EAAQP,GAAS5oC,EAAMC,EAAO7O,IAC7B+3C,GACLV,GAAcU,EAAO,CAAClpC,EAAOjC,MAChC,GAAE,EACN,EAEGsrC,GAAiB,SAAwBvpC,GACzC,IAAIC,EAAOD,EAAMC,KACjBA,EAAK0F,QAAQyW,SAAWnc,EAAKf,MAAM,eACtC,EAEGsqC,GAAgB,SAAuBjpC,GACvC,IAAIN,EAAOM,EAAMN,KACbC,EAASK,EAAML,OACfkpC,EAAQP,GAAS5oC,EAAMC,EAAO7O,IAC7B+3C,IACDA,EAAM/iC,YAAY+iC,EAAM/iC,WAAWC,YAAY8iC,UAC5CnpC,EAAKG,IAAIwoC,OAAO1oC,EAAO7O,IACjC,EAGGo4C,GAAiB,SAAwBhX,GACzC,IAAIxyB,EAAOwyB,EAAMxyB,KACbC,EAASuyB,EAAMvyB,OACfkpC,EAAQP,GAAS5oC,EAAMC,EAAO7O,IAC7B+3C,IACgB,OAAjBlpC,EAAO9X,MAEPghD,EAAMhS,gBAAgB,SAGtBgS,EAAMhhD,MAAQ8X,EAAO9X,MAEzB0gD,GAA4B7oC,GAC/B,EAEGypC,GAAUhrC,EAAY,CACtBmoC,iBAAkB0C,GAClB5F,aAAcqF,GACd1Q,cAAe6Q,GACf7oC,gBAAiBkpC,GACjBG,iBAAkBF,GAClB1pC,mBAAoBupC,GACpBM,kBAAmBb,GACnBc,eAAgBd,KAGhBziD,GAAOsnB,EAAW,CAClBpI,IAAK,WACL3X,KAAM,OACNlC,OAAQg9C,GACRvyC,MAAOszC,GACP/6B,YAAY,IAGZm7B,GAAc,SAAqBnkC,GACnC,MAAO,gBAAiBA,EAAUA,EAAQmkC,cAAgBlzC,QAC7D,EAEGmzC,GAAS,CAAC,MAAO,OAAQ,MAAO,MAAO,MAAO,OAAQ,MAAO,QAC7DC,GAAS,CAAC,MAAO,MAAO,OAAQ,OAChCvqC,GAAM,CACNwqC,IAAK,iBACLC,KAAM,wBAGNnpC,GAAsB,WACtB,IAAIa,EAAYnM,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,GAAmBA,UAAU,GAAK,GAEpF,OADAmM,EAAYA,EAAU1X,cAClB6/C,GAAO9sC,SAAS2E,GAEZ,UACe,QAAdA,EAAsB,OAAuB,QAAdA,EAAsB,UAAYA,GAGtEooC,GAAO/sC,SAAS2E,GACT,QAAUA,EAGdnC,GAAImC,IAAc,EAC5B,EAEGuoC,GAA2B,SAAkC5mB,GAC7D,OAAO,IAAIt9B,SAAQ,SAASC,EAASC,GAEjC,IAAIikD,EAAQC,GAAS9mB,GACrB,GAAI6mB,EAAMtpD,SAAWwpD,GAAS/mB,GAC1B,OAAOr9B,EAAQkkD,GAGnBG,GAAShnB,GAAc32B,KAAK1G,EAC/B,GACJ,EAKGokD,GAAW,SAAkB/mB,GAC7B,QAAIA,EAAaf,OAAce,EAAaf,MAAM1hC,OAAS,CAE9D,EAKGypD,GAAW,SAAkBhnB,GAC7B,OAAO,IAAIt9B,SAAQ,SAASC,EAASC,GAEjC,IAAIqkD,GAAiBjnB,EAAaxN,MAAQ1mB,MAAMsB,KAAK4yB,EAAaxN,OAAS,IAEtE3Z,QAAO,SAAS4C,GACb,OAAOyrC,GAAiBzrC,EAC3B,IAGAS,KAAI,SAAST,GACV,OAAO0rC,GAAiB1rC,EAC3B,IAGAwrC,EAAc1pD,OAQnBmF,QAAQiG,IAAIs+C,GACP59C,MAAK,SAAS+9C,GAEX,IAAInoB,EAAQ,GACZmoB,EAAmB3gD,SAAQ,SAAS4gD,GAChCpoB,EAAMl1B,KAAKgC,MAAMkzB,EAAOooB,EAC3B,IAGD1kD,EACIs8B,EACKpmB,QAAO,SAAS6B,GACb,OAAOA,CACV,IACAwB,KAAI,SAASxB,GAGV,OAFKA,EAAKqoB,gBACNroB,EAAKqoB,cAAgBroB,EAAKqoC,oBACvBroC,CACV,IAEZ,IACAgE,MAAM7H,QAAQzK,OA1BfzJ,EAAQq9B,EAAaf,MAAQnzB,MAAMsB,KAAK4yB,EAAaf,OAAS,GA2BrE,GACJ,EAEGioB,GAAmB,SAA0BzrC,GAC7C,GAAI6rC,GAAQ7rC,GAAO,CACf,IAAI8rC,EAAQC,GAAW/rC,GACvB,GAAI8rC,EACA,OAAOA,EAAMh3C,QAAUg3C,EAAME,WAEpC,CACD,MAAqB,SAAdhsC,EAAKisC,IACf,EAEGP,GAAmB,SAA0B1rC,GAC7C,OAAO,IAAI/Y,SAAQ,SAASC,EAASC,GAC7B+kD,GAAiBlsC,GACjBmsC,GAAoBJ,GAAW/rC,IAC1BpS,KAAK1G,GACL+b,MAAM9b,GAIfD,EAAQ,CAAC8Y,EAAKosC,aACjB,GACJ,EAEGD,GAAsB,SAA6BL,GACnD,OAAO,IAAI7kD,SAAQ,SAASC,EAASC,GACjC,IAAIq8B,EAAQ,GAGR6oB,EAAa,EACbC,EAAc,EAEdC,EAAgB,WACI,IAAhBD,GAAoC,IAAfD,GACrBnlD,EAAQs8B,EAEf,EAGGgpB,EAAc,SAASA,EAAYC,GACnCJ,IAEA,IAAIK,EAAkBD,EAASE,eAG3BC,EAAY,SAASA,IACrBF,EAAgBF,aAAY,SAASK,GACjC,GAAuB,IAAnBA,EAAQ/qD,OAGR,OAFAuqD,SACAE,IAIJM,EAAQ7hD,SAAQ,SAAS8gD,GAEjBA,EAAME,YACNQ,EAAYV,IAGZQ,IAEAR,EAAM7sC,MAAK,SAASA,GAChB,IAAI6tC,EAAgBC,GAAuB9tC,GACvC6sC,EAAMpjD,WACNokD,EAAcxlB,cAAgBwkB,EAAMpjD,UACxC86B,EAAMl1B,KAAKw+C,GACXR,IACAC,GACH,IAER,IAGDK,GACH,GAAEzlD,EACN,EAGDylD,GACH,EAGDJ,EAAYV,EACf,GACJ,EAEGiB,GAAyB,SAAgC9tC,GACzD,GAAIA,EAAKvT,KAAK5J,OAAQ,OAAOmd,EAC7B,IAAI1e,EAAO0e,EAAKooB,iBACZx4B,EAAOoQ,EAAKpQ,KACZnD,EAAOqW,GAAoBC,GAAyB/C,EAAKpQ,OAC7D,OAAKnD,EAAK5J,SACVmd,EAAOA,EAAKrZ,MAAM,EAAGqZ,EAAKkC,KAAMzV,IAC3BmD,KAAOA,EACZoQ,EAAKooB,iBAAmB9mC,EACjB0e,GAJkBA,CAK5B,EAEGitC,GAAmB,SAA0BlsC,GAC7C,OAAO6rC,GAAQ7rC,KAAU+rC,GAAW/rC,IAAS,CAAC,GAAGgsC,WACpD,EAEGH,GAAU,SAAiB7rC,GAC3B,MAAO,qBAAsBA,CAChC,EAEG+rC,GAAa,SAAoB/rC,GACjC,OAAOA,EAAKgtC,kBACf,EAKG3B,GAAW,SAAkB9mB,GAC7B,IAAI6mB,EAAQ,GACZ,IAGI,IADAA,EAAQ6B,GAA6B1oB,IAC3BziC,OACN,OAAOspD,EAEXA,EAAQ8B,GAA4B3oB,EAGvC,CAFC,MAAOtuB,GAER,CACD,OAAOm1C,CACV,EAEG8B,GAA8B,SAAqC3oB,GACnE,IAAIj9B,EAAOi9B,EAAa4oB,QAAQ,OAChC,MAAoB,kBAAT7lD,GAAqBA,EAAKxF,OAC1B,CAACwF,GAEL,EACV,EAEG2lD,GAA+B,SAAsC1oB,GACrE,IAAIj9B,EAAOi9B,EAAa4oB,QAAQ,aAChC,GAAoB,kBAAT7lD,GAAqBA,EAAKxF,OAAQ,CACzC,IAAI+mC,EAAUvhC,EAAKuQ,MAAM,qBACzB,GAAIgxB,EACA,MAAO,CAACA,EAAQ,GAEvB,CACD,MAAO,EACV,EAEGukB,GAAqB,GAErBC,GAAgB,SAAuBp3C,GACvC,MAAO,CACHq3C,SAAUr3C,EAAEuqC,MACZ+M,QAASt3C,EAAEwqC,MACXwF,UAAWhwC,EAAE2qC,SAAW3qC,EAAEu3C,OAC1BtH,SAAUjwC,EAAE4qC,SAAW5qC,EAAEw3C,OAEhC,EAEGC,GAAwB,SACxB/mC,EACAgnC,EACAC,GAEA,IAAIC,EAAWC,GAAqBH,GAEhCI,EAAS,CACTpnC,QAASA,EACTinC,cAAeA,EACf9oC,MAAO,KACPkpC,OAAQ,WAAoB,EAC5BC,QAAS,WAAqB,EAC9BC,OAAQ,WAAoB,EAC5BC,OAAQ,WAAoB,EAC5Bj5B,OAAQ,WAAoB,EAC5Bk5B,UAAW,WAAuB,GAKtC,OAFAL,EAAOniC,QAAUiiC,EAASQ,YAAYN,GAE/BA,CACV,EAEGD,GAAuB,SAA8BnnC,GAErD,IAAIknC,EAAWT,GAAmBzpB,MAAK,SAAS3jB,GAC5C,OAAOA,EAAK2G,UAAYA,CAC3B,IACD,GAAIknC,EACA,OAAOA,EAIX,IAAIS,EAAcC,GAAwB5nC,GAE1C,OADAymC,GAAmB9+C,KAAKggD,GACjBA,CACV,EAEGC,GAA0B,SAAiC5nC,GAC3D,IAAI6nC,EAAU,GAEVt7B,EAAS,CACTu7B,UAAWA,GACXC,SAAUA,GACVC,UAAWA,GACX1N,KAAMA,IAGNhvC,EAAW,CAAC,EAEhB8T,EAAMmN,GAAQ,SAAS5G,EAAOsiC,GAC1B38C,EAASqa,GAASsiC,EAAcjoC,EAAS6nC,GACzC7nC,EAAQrb,iBAAiBghB,EAAOra,EAASqa,IAAQ,EACpD,IAED,IAAIuhC,EAAW,CACXlnC,QAASA,EACT0nC,YAAa,SAAqBN,GAK9B,OAHAS,EAAQlgD,KAAKy/C,GAGN,WAEHS,EAAQhgD,OAAOggD,EAAQzkD,QAAQgkD,GAAS,GAGjB,IAAnBS,EAAQ1sD,SACRsrD,GAAmB5+C,OAAO4+C,GAAmBrjD,QAAQ8jD,GAAW,GAEhE9nC,EAAMmN,GAAQ,SAAS5G,GACnB3F,EAAQ7e,oBAAoBwkB,EAAOra,EAASqa,IAAQ,EACvD,IAER,CACJ,GAGL,OAAOuhC,CACV,EAEGgB,GAAmB,SAA0B5tC,EAAM6tC,GAInD,MAHM,qBAAsB7tC,IACxBA,EAAOrJ,UAEJqJ,EAAK4tC,iBAAiBC,EAAMpY,EAAGoY,EAAMlY,EAC/C,EAEGmY,GAAgB,SAAuB94C,EAAG5C,GAE1C,IAAI4N,EAAO6pC,GAAYz3C,GAInB27C,EAAoBH,GAAiB5tC,EAAM,CAC3Cy1B,EAAGzgC,EAAEuqC,MAAQpnC,OAAO61C,YACpBrY,EAAG3gC,EAAEwqC,MAAQrnC,OAAO81C,cAIxB,OAAOF,IAAsB37C,GAAUA,EAAOs1C,SAASqG,EAC1D,EAEGG,GAAgB,KAEhBC,GAAgB,SAAuB7qB,EAAc8qB,GAErD,IACI9qB,EAAa+qB,WAAaD,CAChB,CAAZ,MAAOp5C,GAAK,CACjB,EAEGw4C,GAAY,SAAmBxtC,EAAMutC,GACrC,OAAO,SAASv4C,GACZA,EAAE8qC,iBAEFoO,GAAgBl5C,EAAE5C,OAElBm7C,EAAQxjD,SAAQ,SAAS+iD,GACrB,IAAIpnC,EAAUonC,EAAOpnC,QACjBsnC,EAAUF,EAAOE,QAEjBc,GAAc94C,EAAG0Q,KACjBonC,EAAOjpC,MAAQ,QAGfmpC,EAAQZ,GAAcp3C,IAE7B,GACJ,CACJ,EAEGy4C,GAAW,SAAkBztC,EAAMutC,GACnC,OAAO,SAASv4C,GACZA,EAAE8qC,iBAEF,IAAIxc,EAAetuB,EAAEsuB,aAErB4mB,GAAyB5mB,GAAc32B,MAAK,SAASmpB,GACjD,IAAIw4B,GAAiB,EAErBf,EAAQhsC,MAAK,SAASurC,GAClB,IAAIH,EAAgBG,EAAOH,cACvBjnC,EAAUonC,EAAOpnC,QACjBsnC,EAAUF,EAAOE,QACjBE,EAASJ,EAAOI,OAChBD,EAASH,EAAOG,OAChBE,EAAYL,EAAOK,UAGvBgB,GAAc7qB,EAAc,QAG5B,IAAIirB,EAAiBpB,EAAUr3B,GAG/B,GAAKy4B,EAML,GAAIT,GAAc94C,EAAG0Q,GAAU,CAI3B,GAHA4oC,GAAiB,EAGI,OAAjBxB,EAAOjpC,MAGP,OAFAipC,EAAOjpC,MAAQ,aACfmpC,EAAQZ,GAAcp3C,IAQ1B,GAHA83C,EAAOjpC,MAAQ,OAGX8oC,IAAkB4B,EAElB,YADAJ,GAAc7qB,EAAc,QAKhC2pB,EAAOb,GAAcp3C,GACxB,MAEO23C,IAAkB2B,GAClBH,GAAc7qB,EAAc,QAI5BwpB,EAAOjpC,QACPipC,EAAOjpC,MAAQ,KACfqpC,EAAOd,GAAcp3C,UAnCzBm5C,GAAc7qB,EAAc,OAsCnC,GACJ,GACJ,CACJ,EAEG0c,GAAO,SAAchgC,EAAMutC,GAC3B,OAAO,SAASv4C,GACZA,EAAE8qC,iBAEF,IAAIxc,EAAetuB,EAAEsuB,aAErB4mB,GAAyB5mB,GAAc32B,MAAK,SAASmpB,GACjDy3B,EAAQxjD,SAAQ,SAAS+iD,GACrB,IAAIH,EAAgBG,EAAOH,cACvBjnC,EAAUonC,EAAOpnC,QACjBqnC,EAASD,EAAOC,OAChBG,EAASJ,EAAOI,OAChBC,EAAYL,EAAOK,UAKvB,GAHAL,EAAOjpC,MAAQ,MAGX8oC,GAAkBmB,GAAc94C,EAAG0Q,GAGvC,OAAKynC,EAAUr3B,QAGfi3B,EAAOX,GAAcp3C,GAAI8gB,GAHKo3B,EAAOd,GAAcp3C,GAItD,GACJ,GACJ,CACJ,EAEG04C,GAAY,SAAmB1tC,EAAMutC,GACrC,OAAO,SAASv4C,GACRk5C,KAAkBl5C,EAAE5C,QAIxBm7C,EAAQxjD,SAAQ,SAAS+iD,GACrB,IAAII,EAASJ,EAAOI,OAEpBJ,EAAOjpC,MAAQ,KAEfqpC,EAAOd,GAAcp3C,GACxB,GACJ,CACJ,EAEGw5C,GAAe,SAAsBC,EAAOC,EAAex9C,GAE3Du9C,EAAMjS,UAAUvxB,IAAI,oBAGpB,IAAI0jC,EAAqBz9C,EAAQy9C,mBAC7BC,EAAwB19C,EAAQ09C,sBAChCC,EAAuB39C,EAAQ49C,YAC/BA,OAC6B,IAAzBD,EACM,SAAS/4B,GACL,OAAOA,CACV,EACD+4B,EAGV/B,EAASL,GACTgC,EACAE,EAAqBh4C,SAASo4C,gBAAkBN,EAChDG,GAIAI,EAAY,GACZzO,EAAe,GAGnBuM,EAAOK,UAAY,SAASr3B,GAGxB,OAAO44B,EAAcI,EAAYh5B,GACpC,EAEDg3B,EAAOC,OAAS,SAASxwC,EAAUuZ,GAC/B,IAAIm5B,EAAgBH,EAAYh5B,GAE3B44B,EAAcO,IAKnB1O,EAAe,YAEf97B,EAAIwP,OAAOg7B,EAAe1yC,IANtBkI,EAAIyqC,UAAU3yC,EAOrB,EAEDuwC,EAAOG,OAAS,SAAS1wC,GACrBkI,EAAIwoC,OAAO1wC,EACd,EAEDuwC,EAAOE,QAAU,SAASzwC,GACtBgkC,EAAe,YAEf97B,EAAI0qC,YAAY5yC,EACnB,EAEDuwC,EAAOI,OAAS,SAAS3wC,GACrBgkC,EAAe,YAEf97B,EAAIyqC,UAAU3yC,EACjB,EAED,IAAIkI,EAAM,CACN2qC,kBAAmB,WACXJ,IAAczO,IACdkO,EAAMlY,QAAQ8Y,YAAc9O,EAC5ByO,EAAYzO,EAEnB,EACDtsB,OAAQ,WAAoB,EAC5Bk7B,YAAa,WAAyB,EACtClC,OAAQ,WAAoB,EAC5BiC,UAAW,WAAuB,EAClCvkC,QAAS,WAELmiC,EAAOniC,SACV,GAGL,OAAOlG,CACV,EAEG6qC,IAAY,EACZC,GAAc,GAEdC,GAAc,SAAqBx6C,GAEnC,IAAIy6C,EAAW94C,SAAS+4C,cACxB,GAAID,GAAY,kBAAkBx4C,KAAKw4C,EAASE,UAAW,CAIvD,IAFA,IAAIC,GAAU,EACVlqC,EAAU+pC,EACP/pC,IAAY/O,SAASmyB,MAAM,CAC9B,GAAIpjB,EAAQ82B,UAAUkL,SAAS,kBAAmB,CAC9CkI,GAAU,EACV,KACH,CACDlqC,EAAUA,EAAQU,UACrB,CAED,IAAKwpC,EAAS,MACjB,CAED1F,GAAyBl1C,EAAE66C,eAAeljD,MAAK,SAAS41B,GAE/CA,EAAM1hC,QAKX0uD,GAAYxlD,SAAQ,SAASqD,GACzB,OAAOA,EAASm1B,EACnB,GACJ,GACJ,EAEGutB,GAAS,SAAgB/xC,GAErBwxC,GAAYvyC,SAASe,KAKzBwxC,GAAYliD,KAAK0Q,GAGbuxC,KAIJA,IAAY,EACZ34C,SAAStM,iBAAiB,QAASmlD,KACtC,EAEGO,GAAW,SAAkB3iD,GAC7ByrB,GAAY02B,GAAaA,GAAYzmD,QAAQsE,IAGlB,IAAvBmiD,GAAY1uD,SACZ8V,SAAS9P,oBAAoB,QAAS2oD,IACtCF,IAAY,EAEnB,EAEGU,GAAe,WACf,IAAIjyC,EAAK,SAAYwkB,GACjB9d,EAAIwP,OAAOsO,EACd,EAEG9d,EAAM,CACNkG,QAAS,WACLolC,GAAShyC,EACZ,EACDkW,OAAQ,WAAoB,GAKhC,OAFA67B,GAAO/xC,GAEA0G,CACV,EAKGwrC,GAAW,SAAgB5xC,GAC3B,IAAI2B,EAAO3B,EAAK2B,KACZhE,EAAQqC,EAAKrC,MACjBgE,EAAK0F,QAAQtU,GAAK,uBAAyB4K,EAAM5K,GACjD4T,EAAKhF,EAAK0F,QAAS,OAAQ,UAC3BV,EAAKhF,EAAK0F,QAAS,YAAa,UAChCV,EAAKhF,EAAK0F,QAAS,gBAAiB,YACvC,EAEGwqC,GAA8B,KAC9BC,GAA2B,KAE3BC,GAAY,GAEZC,GAAS,SAAgBrwC,EAAM/S,GAC/B+S,EAAK0F,QAAQ4qC,YAAcrjD,CAC9B,EAEGsjD,GAAU,SAAevwC,GACzBA,EAAK0F,QAAQ4qC,YAAc,EAC9B,EAEGE,GAAe,SAAsBxwC,EAAM0B,EAAUa,GACrD,IAAIymB,EAAQhpB,EAAKf,MAAM,mBACvBoxC,GACIrwC,EACAuC,EACI,IACAb,EACA,KACAsnB,EACA,KACW,IAAVA,EACKhpB,EAAKf,MAAM,iCACXe,EAAKf,MAAM,iCAIzB2S,aAAau+B,IACbA,GAA2BpnD,YAAW,WAClCwnD,GAAQvwC,EACX,GAAE,KACN,EAEGywC,GAAkB,SAAyBzwC,GAC3C,OAAOA,EAAK0F,QAAQU,WAAWshC,SAAS/wC,SAAS+4C,cACpD,EAEGgB,GAAY,SAAmBhyC,GAC/B,IAAIsB,EAAOtB,EAAMsB,KACbC,EAASvB,EAAMuB,OACnB,GAAKwwC,GAAgBzwC,GAArB,CAIAA,EAAK0F,QAAQ4qC,YAAc,GAC3B,IAAIvxC,EAAOiB,EAAKf,MAAM,WAAYgB,EAAO7O,IACzCg/C,GAAU/iD,KAAK0R,EAAK2C,UAEpBkQ,aAAas+B,IACbA,GAA8BnnD,YAAW,WACrCynD,GAAaxwC,EAAMowC,GAAUp6C,KAAK,MAAOgK,EAAKf,MAAM,yBAEpDmxC,GAAUvvD,OAAS,CACtB,GAAE,IAXF,CAYJ,EAEG8vD,GAAc,SAAqB3xC,GACnC,IAAIgB,EAAOhB,EAAMgB,KACbC,EAASjB,EAAMiB,OACnB,GAAKwwC,GAAgBzwC,GAArB,CAIA,IAAIjB,EAAOkB,EAAOlB,KAClByxC,GAAaxwC,EAAMjB,EAAK2C,SAAU1B,EAAKf,MAAM,0BAH5C,CAIJ,EAEG2xC,GAAgB,SAAuBxxC,GACvC,IAAIY,EAAOZ,EAAMY,KACbC,EAASb,EAAMa,OAIfyB,EADO1B,EAAKf,MAAM,WAAYgB,EAAO7O,IACrBsQ,SAChBa,EAAQvC,EAAKf,MAAM,sCAEvBoxC,GAAOrwC,EAAM0B,EAAW,IAAMa,EACjC,EAEGsuC,GAAoB,SAA2BxxC,GAC/C,IAAIW,EAAOX,EAAMW,KACbC,EAASZ,EAAMY,OAEfyB,EADO1B,EAAKf,MAAM,WAAYgB,EAAO7O,IACrBsQ,SAChBa,EAAQvC,EAAKf,MAAM,qCAEvBoxC,GAAOrwC,EAAM0B,EAAW,IAAMa,EACjC,EAEGuuC,GAAY,SAAmB/wC,GAC/B,IAAIC,EAAOD,EAAMC,KACbC,EAASF,EAAME,OAEfyB,EADO1B,EAAKf,MAAM,WAAYgB,EAAO7O,IACrBsQ,SAIpB2uC,GAAOrwC,EAAMC,EAAOhY,OAAOwa,KAAO,IAAMf,EAAW,IAAMzB,EAAOhY,OAAOya,IAC1E,EAEGquC,GAAYpjC,EAAW,CACvBjiB,OAAQukD,GACRvhC,YAAY,EACZE,kBAAkB,EAClBzY,MAAOsI,EAAY,CACf45B,cAAeqY,GACfrwC,gBAAiBswC,GACjBtX,6BAA8BuX,GAE9BxX,0BAA2ByX,GAC3B3X,2BAA4B2X,GAE5BnX,4BAA6BoX,GAC7BvY,0BAA2BuY,GAC3BtY,uBAAwBsY,GACxBtX,gCAAiCsX,KAGrCvrC,IAAK,OACL3X,KAAM,cAGNojD,GAAW,SAAkB39B,GAC7B,IAAI8C,EAAY3gB,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,GAAmBA,UAAU,GAAK,IACpF,OAAO6d,EAAO3d,QAAQ,IAAImB,OAAOsf,EAAY,IAAK,MAAM,SAASzT,GAC7D,OAAOA,EAAIxK,OAAO,GAAG3P,aACxB,GACJ,EAEG0oD,GAAW,SAAkBC,GAC7B,IAAI7/B,EAAW7b,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,GAAmBA,UAAU,GAAK,GAC/E27C,IACA37C,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,KAAmBA,UAAU,GAC/D8b,EAAO3xB,KAAKqX,MACZtO,EAAU,KAEd,OAAO,WACH,IACI,IAAI4b,EAAO9O,UAAU3U,OAAQ0U,EAAO,IAAInG,MAAMkV,GAAOC,EAAO,EAC5DA,EAAOD,EACPC,IAEAhP,EAAKgP,GAAQ/O,UAAU+O,GAE3BqN,aAAalpB,GAEb,IAAI05C,EAAOziD,KAAKqX,MAAQsa,EAEpBjgB,EAAK,WACLigB,EAAO3xB,KAAKqX,MACZk6C,EAAK7hD,WAAM,EAAQkG,EACtB,EAEG6sC,EAAO/wB,EAIF8/B,IACDzoD,EAAUK,WAAWsI,EAAIggB,EAAW+wB,IAIxC/wC,GAEP,CACJ,EAEG+/C,GAAkB,IAElBC,GAAU,SAAiBr8C,GAC3B,OAAOA,EAAE8qC,gBACZ,EAEGwR,GAAW,SAAgBjzC,GAC3B,IAAI2B,EAAO3B,EAAK2B,KACZhE,EAAQqC,EAAKrC,MAEb5K,EAAK4O,EAAKf,MAAM,UAChB7N,IACA4O,EAAK0F,QAAQtU,GAAKA,GAItB,IAAIoU,EAAYxF,EAAKf,MAAM,kBACvBuG,GACAA,EACK5kB,MAAM,KACNub,QAAO,SAASvO,GACb,OAAOA,EAAK/M,MACf,IACAkJ,SAAQ,SAAS6D,GACdoS,EAAK0F,QAAQ82B,UAAUvxB,IAAIrd,EAC9B,IAIToS,EAAKG,IAAIoC,MAAQvC,EAAKiG,gBAClBjG,EAAK0P,gBACDq4B,GACAx3C,OAAOQ,OAAO,CAAC,EAAGiL,EAAO,CACrB2P,WAAY,KACZi8B,QAAS5nC,EAAKf,MAAM,sBAMhCe,EAAKG,IAAIykC,KAAO5kC,EAAKiG,gBACjBjG,EAAK0P,gBAAgB81B,GAAc,CAAE75B,WAAY,QAIrD3L,EAAKG,IAAIi+B,MAAQp+B,EAAKiG,gBAAgBjG,EAAK0P,gBAAgB0uB,GAAO,CAAExwC,KAAM,gBAG1EoS,EAAKG,IAAI4wC,UAAY/wC,EAAKiG,gBACtBjG,EAAK0P,gBAAgBqhC,GAAWxgD,OAAOQ,OAAO,CAAC,EAAGiL,KAItDgE,EAAKG,IAAI9Z,KAAO2Z,EAAKiG,gBAAgBjG,EAAK0P,gBAAgBrpB,GAAMkK,OAAOQ,OAAO,CAAC,EAAGiL,KAIlFgE,EAAKG,IAAIoxC,QAAU3c,GAAgB,OACnC50B,EAAKG,IAAIoxC,QAAQ3kC,MAAM1F,OAAS,OAChClH,EAAK0F,QAAQE,YAAY5F,EAAKG,IAAIoxC,SAGlCvxC,EAAKG,IAAIqxC,OAAS,KAGlBxxC,EAAKf,MAAM,cACN9C,QAAO,SAASyQ,GACb,OAAQ2F,EAAQ3F,EAAMzkB,MACzB,IACAqX,KAAI,SAASd,GACV,IAAI9Q,EAAO8Q,EAAM9Q,KACbzF,EAAQuW,EAAMvW,MAClB6X,EAAK0F,QAAQ6wB,QAAQ3oC,GAAQzF,CAChC,IAGL6X,EAAKG,IAAIsxC,cAAgB,KACzBzxC,EAAKG,IAAIuxC,aAAeT,IAAS,WAC7BjxC,EAAKG,IAAIwxC,cAAgB,GACzB3xC,EAAKI,SAAS,kBACjB,GAAE,KAGHJ,EAAKG,IAAIyxC,oBAAsB,KAC/B5xC,EAAKG,IAAIwxC,cAAgB,GAGzB,IAAIE,EAAW15C,OAAO25C,WAAW,sCAAsClqB,QACnEmqB,EAAmB,iBAAkB55C,OACrC6H,EAAKf,MAAM,sBAAwB8yC,IAAqBF,IACxD7xC,EAAK0F,QAAQrb,iBAAiB,YAAagnD,GAAS,CAAEW,SAAS,IAC/DhyC,EAAK0F,QAAQrb,iBAAiB,eAAgBgnD,KAIlD,IAAI7uB,EAAUxiB,EAAKf,MAAM,eAEzB,GADoC,IAAnBujB,EAAQ3hC,OACT,CACZ,IAAIoxD,EAAOt7C,SAASa,cAAc,KAClCy6C,EAAKzsC,UAAY,oBACjBysC,EAAKt6C,aAAa,cAAe,QACjCs6C,EAAKv6C,KAAO8qB,EAAQ,GACpByvB,EAAKC,UAAY,EACjBD,EAAK7/C,OAAS,SACd6/C,EAAKE,IAAM,sBACXF,EAAK3B,YAAc9tB,EAAQ,GAC3BxiB,EAAK0F,QAAQE,YAAYqsC,GACzBjyC,EAAKG,IAAIqiB,QAAUyvB,CACtB,CACJ,EAEGG,GAAU,SAAepzC,GACzB,IAAIgB,EAAOhB,EAAMgB,KACbhE,EAAQgD,EAAMhD,MACd4H,EAAU5E,EAAM4E,QAoBpB,GAlBAyuC,GAAQ,CAAEryC,KAAMA,EAAMhE,MAAOA,EAAO4H,QAASA,IAG7CA,EACKzH,QAAO,SAAS8D,GACb,MAAO,kBAAkBhJ,KAAKgJ,EAAOxV,KACxC,IACA0R,QAAO,SAAS8D,GACb,OAAQsS,EAAQtS,EAAO5Z,KAAK8B,MAC/B,IACAqX,KAAI,SAASJ,GACV,IAAI3U,EAAO2U,EAAM3U,KACbpE,EAAO+Y,EAAM/Y,KACbuH,EAAOojD,GAASvmD,EAAKusB,UAAU,GAAG/sB,cAAe,KACrD+V,EAAK0F,QAAQ6wB,QAAQ3oC,GAAQvH,EAAK8B,MAClC6X,EAAK4Q,kBACR,KAED5Q,EAAKmH,KAAKzB,QAAQvB,OAAtB,CAEInE,EAAKmH,KAAKzB,QAAQsB,QAAUhH,EAAKG,IAAIsxC,gBACrCzxC,EAAKG,IAAIsxC,cAAgBzxC,EAAKmH,KAAKzB,QAAQsB,MAC3ChH,EAAKG,IAAIuxC,gBAIb,IAAIF,EAASxxC,EAAKG,IAAIqxC,OACjBA,IACDA,EAASxxC,EAAKG,IAAIqxC,OAASc,GAA+BtyC,GAG1DA,EAAK0F,QAAQW,YAAYrG,EAAKG,IAAIoxC,SAClCvxC,EAAKG,IAAIoxC,QAAU,MAIvB,IAAIgB,EAAYvyC,EAAKG,IACjBqyC,EAASD,EAAUC,OACnBjwC,EAAQgwC,EAAUhwC,MAClBqiC,EAAO2N,EAAU3N,KACjBxG,EAAQmU,EAAUnU,MAGlBoU,GACAA,EAAOpD,oBAIX,IAAIxsB,EAAc5iB,EAAKf,MAAM,0BACzBwzC,EAAczyC,EAAKf,MAAM,sBACzB2yB,EAAa5xB,EAAKf,MAAM,mBAExByzC,EAAgB9gB,KADL6gB,EAAczyC,EAAKf,MAAM,kBAAoBmyC,GAAkB,GAI1EuB,EAAY/uC,EAAQ8e,MAAK,SAASziB,GAClC,MAAuB,iBAAhBA,EAAOxV,IACjB,IAGD,GAAIioD,GAAiBC,EAAW,CAE5B,IAAI1hB,EAAoB0hB,EAAUtsD,KAAK4qC,kBAGvC1uB,EAAMgJ,QAAU,EAEZknC,EACAlwC,EAAMoJ,YAAc,GAEhBslB,IAAsBza,GAAkBC,IACxClU,EAAMmJ,WAAa,GACZulB,IAAsBza,GAAkBG,OAC/CpU,EAAMoJ,WAAa,GAEnBpJ,EAAMoJ,WAAa,EAG9B,MAAW+mC,IACRnwC,EAAMgJ,QAAU,EAChBhJ,EAAMmJ,WAAa,EACnBnJ,EAAMoJ,WAAa,GAGvB,IAAIinC,EAAiBC,GAAwB7yC,GAEzC8yC,EAAaC,GAAoB/yC,GAEjCgzC,EAAczwC,EAAM4E,KAAKzB,QAAQwB,OACjC+rC,GAAsBR,GAAeC,EAAgB,EAAIM,EAEzDE,EAAgBR,EAAgB9N,EAAKz9B,KAAKzB,QAAQyH,UAAY,EAC9DgmC,EAAkC,IAAfvhB,EAAmB,EAAIgT,EAAKz9B,KAAKzB,QAAQgC,aAE5Dw8B,EACA+O,EAAqBC,EAAgBJ,EAAWM,OAASD,EACzDE,EACAJ,EAAqBC,EAAgBJ,EAAWtB,OAAS2B,EAM7D,GAHAvO,EAAKj5B,WACD1Y,KAAKwyB,IAAI,EAAGwtB,EAAqBrO,EAAKz9B,KAAKzB,QAAQyH,WAAaylC,EAAe9rC,IAE/E8b,EAAa,CAIb,IAAI5b,EAAQhH,EAAKmH,KAAKzB,QAAQsB,MAC1BE,EAASF,EAAQ4b,EAGjBA,IAAgB5iB,EAAKG,IAAIyxC,sBACzB5xC,EAAKG,IAAIyxC,oBAAsBhvB,EAC/B5iB,EAAKG,IAAIwxC,cAAgB,IAI7B,IAAI2B,EAAUtzC,EAAKG,IAAIwxC,cACvB2B,EAAQjmD,KAAK2Z,GAEb,IAAIusC,EAAc,EAClB,GAAID,EAAQzyD,OAAuB,EAAd0yD,EAIjB,IAHA,IAAIzmD,EAAIwmD,EAAQzyD,OACZomB,EAASna,EAAI,GACb0mD,EAAU,EACL3mD,EAAIC,EAAGD,GAAKoa,EAAQpa,IAKzB,GAJIymD,EAAQzmD,KAAOymD,EAAQzmD,EAAI,IAC3B2mD,IAGAA,GAAWD,EAEX,OAMZnV,EAAMN,UAAW,EACjBM,EAAMl3B,OAASA,EAGf,IAAIusC,EAEAvsC,EACA+rC,GAECE,EAAmBP,EAAe3rC,SAElCyrC,EAAgBQ,EAAgB,GAEjCJ,EAAWM,OAASK,EACpB7O,EAAKU,SAAWmO,EAEhB7O,EAAKU,SAAW,KAIpBtlC,EAAKkH,OAASA,CACjB,MAAM,GAAIsqC,EAAOkC,YAAa,CAI3BtV,EAAMN,UAAW,EAGjB,IAAI6V,EAEAnC,EAAOkC,YACPT,GAECE,EAAmBP,EAAe3rC,SAElCyrC,EAAgBQ,EAAgB,GAGjCJ,EAAWM,OAASO,EACpB/O,EAAKU,SAAWqO,EAEhB/O,EAAKU,SAAW,IAIvB,MAAM,GAAIkM,EAAOoC,aAAc,CAI5B,IAAIC,EAAiB3P,GAAgBsN,EAAOoC,aACxCE,EAAc7gD,KAAKuyB,IAAIgsB,EAAOoC,aAAc1P,GAChD9F,EAAMN,UAAW,EACjBM,EAAMl3B,OAAS2sC,EACTC,EACAA,EAAclB,EAAe9rC,IAAM8rC,EAAe3rC,OAGxD,IAAI8sC,EAEAD,EACAb,GAECE,EAAmBP,EAAe3rC,SAElCyrC,EAAgBQ,EAAgB,GAGjChP,EAAesN,EAAOoC,cAAgBd,EAAWM,OAASW,EAC1DnP,EAAKU,SAAWyO,EAEhBnP,EAAKU,SAAW,KAIpBtlC,EAAKkH,OAASjU,KAAKuyB,IACfgsB,EAAOoC,aACPP,EAAeT,EAAe9rC,IAAM8rC,EAAe3rC,OAE1D,KAAM,CAIH,IAAI+sC,EAAapiB,EAAa,EAAIghB,EAAe9rC,IAAM8rC,EAAe3rC,OAAS,EAC/Em3B,EAAMN,UAAW,EACjBM,EAAMl3B,OAASjU,KAAKwyB,IAAIutB,EAAa9O,EAAe8P,GAGpDh0C,EAAKkH,OAASjU,KAAKwyB,IAAIutB,EAAaK,EAAeW,EACtD,CAGGh0C,EAAKG,IAAIqiB,SAAW4b,EAAMC,gBAC1Br+B,EAAKG,IAAIqiB,QAAQ5V,MAAMqnC,UAAY,cAAgB7V,EAAMC,cAAgB,MApNzC,CAqNvC,EAEGwU,GAA0B,SAAiC7yC,GAC3D,IAAIjB,EAAOiB,EAAKG,IAAIykC,KAAK1+B,WAAW,GAAGA,WAAW,GAClD,OAAOnH,EACD,CACI+H,IAAK/H,EAAKoI,KAAKzB,QAAQyH,UACvBlG,OAAQlI,EAAKoI,KAAKzB,QAAQgC,cAE9B,CACIZ,IAAK,EACLG,OAAQ,EAErB,EAEG8rC,GAAsB,SAA6B/yC,GACnD,IAAIozC,EAAS,EACT5B,EAAS,EAGT0C,EAAal0C,EAAKG,IAAIykC,KACtBuP,EAAWD,EAAWhuC,WAAW,GACjCm9B,EAAkB8Q,EAASjuC,WAAW/J,QAAO,SAAS2J,GACtD,OAAOA,EAAMqB,KAAKzB,QAAQwB,MAC7B,IACGnB,EAAW/F,EACVf,MAAM,oBACNO,KAAI,SAAST,GACV,OAAOskC,EAAgB3gB,MAAK,SAAS5c,GACjC,OAAOA,EAAM1U,KAAO2N,EAAK3N,EAC5B,GACJ,IACA+K,QAAO,SAAS4C,GACb,OAAOA,CACV,IAGL,GAAwB,IAApBgH,EAASllB,OAAc,MAAO,CAAEuyD,OAAQA,EAAQ5B,OAAQA,GAE5D,IAAI9Q,EAAkByT,EAAShtC,KAAKzB,QAAQsB,MACxC68B,EAAYjD,GAAuBuT,EAAUpuC,EAAUmuC,EAAWtQ,iBAElEK,EAAYl+B,EAAS,GAAGoB,KAAKzB,QAE7Bw7B,EAAqB+C,EAAU92B,UAAY82B,EAAUv8B,aACrDq5B,EAAuBkD,EAAU72B,WAAa62B,EAAUt8B,YAExDg5B,EAAYsD,EAAUj9B,MAAQ+5B,EAC9BI,EAAa8C,EAAU/8B,OAASg6B,EAEhCkT,EAA+B,qBAAdvQ,GAA6BA,GAAa,EAAI,EAAI,EACnEwQ,EAActuC,EAAS2c,MAAK,SAAS5c,GACrC,OAAOA,EAAMo5B,kBAAoBp5B,EAAMyF,QAAU,GACpD,KACM,EACD,EACF+oC,EAAoBvuC,EAASllB,OAASuzD,EAAUC,EAChDrT,EAAcP,GAAeC,EAAiBC,GAgBlD,OAboB,IAAhBK,EACAj7B,EAAShc,SAAQ,SAASgV,GACtB,IAAImI,EAASnI,EAAKoI,KAAKzB,QAAQwB,OAASg6B,EACxCsQ,GAAUtqC,EACVksC,GAAUlsC,EAASnI,EAAKwM,OAC3B,KAIDimC,EAASv+C,KAAKshD,KAAKD,EAAoBtT,GAAeG,EACtDiS,EAAS5B,GAGN,CAAE4B,OAAQA,EAAQ5B,OAAQA,EACpC,EAEGc,GAAiC,SAAwCtyC,GACzE,IAAIkH,EAASlH,EAAKG,IAAIq0C,eAAiB,KAIvC,MAAO,CACHZ,aAJezzD,SAAS6f,EAAK4M,MAAM6nC,UAAW,KAAO,KAKrDf,YAJyB,IAAXxsC,EAAe,KAAOA,EAM3C,EAEGwtC,GAAkB,SAAyB10C,EAAM8V,GACjD,IAAI6G,EAAe3c,EAAKf,MAAM,qBAC1Byd,EAAgB1c,EAAKf,MAAM,sBAC3B2yB,EAAa5xB,EAAKf,MAAM,mBACxB01C,EAAW30C,EAAKf,MAAM,iBAGtB21C,EAAmB9+B,EAAMj1B,OAG7B,QAAK67B,GAAiBk4B,EAAmB,MAYpCl4B,GAAiBC,OAMJ5J,GARlB4hC,EAAWj4B,EAAgBi4B,EAAW,IASnB/iB,EAAagjB,EAAmBD,MAlB/C30C,EAAKI,SAAS,sBAAuB,CACjC5S,OAAQsoB,EACRpmB,MAAOk6B,GAAe,UAAW,EAAG,gBAGjC,EAuBd,EAEGirB,GAAe,SAAsBjQ,EAAM7+B,EAAUxJ,GACrD,IAAI43C,EAAWvP,EAAK1+B,WAAW,GAC/B,OAAO06B,GAAuBuT,EAAUpuC,EAAU,CAC9Cc,KAAMtK,EAASyoC,UAAYmP,EAAShtC,KAAKzB,QAAQmB,KACjDC,IACIvK,EAAS0oC,UACRL,EAAKz9B,KAAKC,MAAMN,IAAM89B,EAAKz9B,KAAKzB,QAAQyH,UAAYy3B,EAAKz9B,KAAKzB,QAAQ+H,YAElF,EAKGqnC,GAAa,SAAoB90C,GACjC,IAAI+0C,EAAY/0C,EAAKf,MAAM,kBACvB+3B,EAAah3B,EAAKf,MAAM,gBACxB+1C,EAAUD,IAAc/d,EAC5B,GAAIge,IAAYh1C,EAAKG,IAAIqyC,OAAQ,CAC7B,IAAIA,EAAShE,GACTxuC,EAAK0F,SACL,SAASoQ,GAEL,IAAI6L,EACA3hB,EAAKf,MAAM,yBACX,WACI,OAAO,CACV,EAIL,OADqBe,EAAKf,MAAM,wBAE1B6W,EAAM4V,OAAM,SAAS3sB,GACjB,OACI8c,GAAa,oBAAqB9c,EAAM,CACpCE,MAAOe,EAAKf,QACbysB,OAAM,SAASlxB,GACd,OAAkB,IAAXA,CACV,KAAKmnB,EAAe5iB,EAE5B,GAEV,GACD,CACI+vC,YAAa,SAAqBh5B,GAC9B,IAAI6H,EAAe3d,EAAKf,MAAM,qBAC9B,OAAO6W,EAAM3Z,QAAO,SAAS4C,GACzB,OAAIlL,GAAOkL,KACC4e,EAAa3gB,SAAS+B,EAAKnR,KAAK3D,cAG/C,GACJ,EACD0kD,mBAAoB3uC,EAAKf,MAAM,oBAC/B2vC,sBAAuB5uC,EAAKf,MAAM,yBAI1CuzC,EAAOv+B,OAAS,SAAS6B,EAAOvZ,GAE5B,IACI8mC,EADOrjC,EAAKG,IAAIykC,KAAK1+B,WAAW,GACTA,WAAW/J,QAAO,SAAS2J,GAClD,OAAOA,EAAMqB,KAAKzB,QAAQwB,MAC7B,IACGnB,EAAW/F,EACVf,MAAM,oBACNO,KAAI,SAAST,GACV,OAAOskC,EAAgB3gB,MAAK,SAAS5c,GACjC,OAAOA,EAAM1U,KAAO2N,EAAK3N,EAC5B,GACJ,IACA+K,QAAO,SAAS4C,GACb,OAAOA,CACV,IAELyc,GAAiB,YAAa1F,EAAO,CAAE1V,SAAUJ,EAAKI,WAAYzT,MAAK,SACnEsX,GAGA,GAAIywC,GAAgB10C,EAAMiE,GAAQ,OAAO,EAGzCjE,EAAKI,SAAS,YAAa,CACvB0V,MAAO7R,EACP3W,MAAOunD,GAAa70C,EAAKG,IAAIykC,KAAM7+B,EAAUxJ,GAC7C00B,kBAAmBza,GAAkBE,MAE5C,IAED1W,EAAKI,SAAS,WAAY,CAAE7D,SAAUA,IAEtCyD,EAAKI,SAAS,eAAgB,CAAE7D,SAAUA,GAC7C,EAEDi2C,EAAOrD,YAAc,SAAS5yC,GAC1ByD,EAAKI,SAAS,iBAAkB,CAAE7D,SAAUA,GAC/C,EAEDi2C,EAAOvF,OAASgE,IAAS,SAAS10C,GAC9ByD,EAAKI,SAAS,WAAY,CAAE7D,SAAUA,GACzC,IAEDi2C,EAAOtD,UAAY,SAAS3yC,GACxByD,EAAKI,SAAS,eAAgB,CAAE7D,SAAUA,GAC7C,EAEDyD,EAAKG,IAAIqyC,OAASA,EAElBxyC,EAAKG,IAAIqoC,KAAOxoC,EAAKiG,gBAAgBjG,EAAK0P,gBAAgB84B,IAC7D,MAAWwM,GAAWh1C,EAAKG,IAAIqyC,SAC5BxyC,EAAKG,IAAIqyC,OAAO7nC,UAChB3K,EAAKG,IAAIqyC,OAAS,KAClBxyC,EAAKmG,gBAAgBnG,EAAKG,IAAIqoC,MAErC,EAKGyM,GAAe,SAAsBj1C,EAAMhE,GAC3C,IAAI+4C,EAAY/0C,EAAKf,MAAM,oBACvB+3B,EAAah3B,EAAKf,MAAM,gBACxB+1C,EAAUD,IAAc/d,EACxBge,IAAYh1C,EAAKG,IAAIwmC,QACrB3mC,EAAKG,IAAIwmC,QAAU3mC,EAAKiG,gBACpBjG,EAAK0P,gBACDi3B,GACAp2C,OAAOQ,OAAO,CAAC,EAAGiL,EAAO,CACrBiY,OAAQ,SAAgB6B,GACpB0F,GAAiB,YAAa1F,EAAO,CACjC1V,SAAUJ,EAAKI,WAChBzT,MAAK,SAASsX,GAEb,GAAIywC,GAAgB10C,EAAMiE,GAAQ,OAAO,EAGzCjE,EAAKI,SAAS,YAAa,CACvB0V,MAAO7R,EACP3W,OAAQ,EACR2jC,kBAAmBza,GAAkBG,QAE5C,GACJ,KAIT,IAEIq+B,GAAWh1C,EAAKG,IAAIwmC,UAC5B3mC,EAAKmG,gBAAgBnG,EAAKG,IAAIwmC,SAC9B3mC,EAAKG,IAAIwmC,QAAU,KAE1B,EAKGuO,GAAc,SAAqBl1C,GACnC,IAAI+0C,EAAY/0C,EAAKf,MAAM,mBACvB+3B,EAAah3B,EAAKf,MAAM,gBACxB+1C,EAAUD,IAAc/d,EACxBge,IAAYh1C,EAAKG,IAAIg1C,QACrBn1C,EAAKG,IAAIg1C,OAASnF,KAClBhwC,EAAKG,IAAIg1C,OAAOlhC,OAAS,SAAS6B,GAC9B0F,GAAiB,YAAa1F,EAAO,CAAE1V,SAAUJ,EAAKI,WAAYzT,MAAK,SACnEsX,GAGA,GAAIywC,GAAgB10C,EAAMiE,GAAQ,OAAO,EAGzCjE,EAAKI,SAAS,YAAa,CACvB0V,MAAO7R,EACP3W,OAAQ,EACR2jC,kBAAmBza,GAAkBI,OAE5C,GACJ,IACOo+B,GAAWh1C,EAAKG,IAAIg1C,SAC5Bn1C,EAAKG,IAAIg1C,OAAOxqC,UAChB3K,EAAKG,IAAIg1C,OAAS,KAEzB,EAKG9C,GAAU5zC,EAAY,CACtBooC,qBAAsB,SAA8BxnC,GAChD,IAAIW,EAAOX,EAAMW,KACbhE,EAAQqD,EAAMrD,MAClBi5C,GAAaj1C,EAAMhE,EACtB,EACDo5C,mBAAoB,SAA4Br1C,GAC5C,IAAIC,EAAOD,EAAMC,KACjB80C,GAAW90C,EACd,EACDq1C,oBAAqB,SAA6B/0C,GAC9C,IAAIN,EAAOM,EAAMN,KACjBk1C,GAAYl1C,EACf,EACD4mC,iBAAkB,SAA0BpU,GACxC,IAAIxyB,EAAOwyB,EAAMxyB,KACbhE,EAAQw2B,EAAMx2B,MAClB84C,GAAW90C,GACXk1C,GAAYl1C,GACZi1C,GAAaj1C,EAAMhE,GACFgE,EAAKf,MAAM,gBAExBe,EAAK0F,QAAQ6wB,QAAQpa,SAAW,WAGhCnc,EAAK0F,QAAQyxB,gBAAgB,gBAEpC,IAGDn3B,GAAO2N,EAAW,CAClB/f,KAAM,OACNhE,KAAM,SAAc8oC,GAChB,IAAI1yB,EAAO0yB,EAAM1yB,KACbA,EAAKG,IAAIoxC,UACTvxC,EAAKG,IAAIq0C,cAAgBx0C,EAAKG,IAAIoxC,QAAQ/jC,aAEjD,EACD9hB,OAAQ4lD,GACRn7C,MAAOi8C,GACPznC,QAAS,SAAiBkoB,GACtB,IAAI7yB,EAAO6yB,EAAO7yB,KACdA,EAAKG,IAAIg1C,QACTn1C,EAAKG,IAAIg1C,OAAOxqC,UAEhB3K,EAAKG,IAAIqyC,QACTxyC,EAAKG,IAAIqyC,OAAO7nC,UAEpB3K,EAAK0F,QAAQ7e,oBAAoB,YAAawqD,IAC9CrxC,EAAK0F,QAAQ7e,oBAAoB,eAAgBwqD,GACpD,EACDviC,OAAQ,CACJ7C,OAAQ,CAAC,aAKbqpC,GAAY,WACZ,IAAIC,EAAiB//C,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAEtFggD,EAAkB,KAGlBx5B,EAAiBC,KAGjBlN,EAAQtL,EAERoS,GAAmBmG,GAGnB,CAACrY,GAAS4S,GAAoByF,IAG9B,CAACpY,GAAS0S,GAAoB0F,KAIlCjN,EAAM3O,SAAS,cAAe,CAAElP,QAASqkD,IAGzC,IAAIE,EAAoB,WAChB9+C,SAASwN,QACb4K,EAAM3O,SAAS,OAClB,EACDzJ,SAAStM,iBAAiB,mBAAoBorD,GAG9C,IAAIC,EAAkB,KAClBC,GAAa,EACbC,GAAyB,EACzBC,EAAqB,KACrBC,EAAqB,KACrBC,EAAgB,WACXJ,IACDA,GAAa,GAEjB/jC,aAAa8jC,GACbA,EAAkB3sD,YAAW,WACzB4sD,GAAa,EACbE,EAAqB,KACrBC,EAAqB,KACjBF,IACAA,GAAyB,EACzB7mC,EAAM3O,SAAS,mBAEtB,GAAE,IACN,EACDjI,OAAO9N,iBAAiB,SAAU0rD,GAGlC,IAAIn2C,EAAOI,GAAK+O,EAAO,CAAE3d,GAAI0lB,OAKzB5H,GAAY,EACZ8mC,GAAW,EAEXC,EAAe,CAOftmC,MAAO,WAGCgmC,IACAG,EAAqB39C,OAAO+9C,WACvBL,IACDA,EAAqBC,GAGpBF,GAA0BE,IAAuBD,IAClD9mC,EAAM3O,SAAS,oBACfw1C,GAAyB,IAI7BI,GAAY9mC,IAEZA,EAA0C,OAA9BtP,EAAK8F,QAAQgI,cAIzBwB,IAGJtP,EAAK+P,QAGLqmC,EAAWp2C,EAAKuH,KAAKzB,QAAQvB,OAChC,EAMD0L,OAAQ,SAAgBnH,GAEpB,IAAI9E,EAAUmL,EACTpK,qBAGAxI,QAAO,SAAS8D,GACb,OAAQ,QAAQhJ,KAAKgJ,EAAOxV,KAC/B,IAGDykB,IAActL,EAAQ/iB,SAG1Bs1D,EAAqBvyC,GAGrBsL,EAAYtP,EAAKiQ,OAAOnH,EAAI9E,EAASgyC,GAGrCh8B,GAAoB7K,EAAM9P,MAAM,cAG5BiQ,GACAH,EAAM/K,uBAEb,GAMDoyC,EAAc,SAAqBxoD,GACnC,OAAO,SAASvH,GAEZ,IAAIglB,EAAQ,CACR5gB,KAAMmD,GAIV,IAAKvH,EACD,OAAOglB,EAiBX,GAbIhlB,EAAK2U,eAAe,WACpBqQ,EAAM3b,MAAQrJ,EAAKqJ,MAAQa,OAAOQ,OAAO,CAAC,EAAG1K,EAAKqJ,OAAS,MAG3DrJ,EAAK4B,SACLojB,EAAMpjB,OAASsI,OAAOQ,OAAO,CAAC,EAAG1K,EAAK4B,SAGtC5B,EAAK2X,OACLqN,EAAM4nB,OAAS5sC,EAAK2X,MAIpB3X,EAAKmH,OACL6d,EAAMrN,KAAO3X,EAAKmH,YACf,GAAInH,EAAK0Y,MAAQ1Y,EAAK+K,GAAI,CAC7B,IAAI2N,EAAO1Y,EAAK0Y,KAAO1Y,EAAK0Y,KAAOgQ,EAAM9P,MAAM,WAAY5Y,EAAK+K,IAChEia,EAAMrN,KAAOe,EAAO4a,GAAc5a,GAAQ,IAC7C,CAkBD,OAfI1Y,EAAKyvB,QACLzK,EAAMyK,MAAQzvB,EAAKyvB,MAAMtW,IAAIma,KAI7B,WAAW1iB,KAAKrJ,KAChByd,EAAMsd,SAAWtiC,EAAKsiC,UAItBtiC,EAAK2U,eAAe,WAAa3U,EAAK2U,eAAe,YACrDqQ,EAAMqiB,OAASrnC,EAAKqnC,OACpBriB,EAAMjZ,OAAS/L,EAAK+L,QAGjBiZ,CACV,CACJ,EAEGgrC,EAAc,CACdC,YAAaF,EAAY,WAEzBG,SAAUH,EAAY,QAEtBI,oBAAqBJ,EAAY,WAEjCK,cAAeL,EAAY,YAC3B1a,oBAAqB0a,EAAY,gBACjC7c,8BAA+B6c,EAAY,mBAC3C/d,cAAe+d,EAAY,WAE3B5d,uBAAwB,CAAC4d,EAAY,SAAUA,EAAY,YAE3D7d,0BAA2B,CAAC6d,EAAY,SAAUA,EAAY,YAE9D1c,4BAA6B,CAAC0c,EAAY,SAAUA,EAAY,eAEhEt2C,mBAAoBs2C,EAAY,eAEhCva,0BAA2Bua,EAAY,oBACvC9c,iCAAkC8c,EAAY,uBAC9Chd,0BAA2Bgd,EAAY,oBACvC/c,6BAA8B+c,EAAY,eAC1CM,iCAAkCN,EAAY,gBAC9Cld,2BAA4Bkd,EAAY,qBAExC5c,gCAAiC,CAAC4c,EAAY,SAAUA,EAAY,gBAEpE/1C,gBAAiB+1C,EAAY,cAE7BO,iBAAkBP,EAAY,eAE9BQ,kBAAmBR,EAAY,gBAE/BzM,kBAAmByM,EAAY,iBAG/BS,EAAc,SAAqBxrC,GAEnC,IAAI1K,EAASpQ,OAAOQ,OAAO,CAAE+lD,KAAM5xD,GAAWmmB,UACvC1K,EAAOlW,KACdmV,EAAK8F,QAAQjF,cACT,IAAIC,YAAY,YAAc2K,EAAM5gB,KAAM,CAEtCkW,OAAQA,EAGRo2C,SAAS,EACTC,YAAY,EACZC,UAAU,KAKlB,IAAIzuD,EAAS,GAGT6iB,EAAMrQ,eAAe,UACrBxS,EAAO6E,KAAKge,EAAM3b,OAIlB2b,EAAMrQ,eAAe,SACrBxS,EAAO6E,KAAKge,EAAMrN,MAItB,IAAIk5C,EAAW,CAAC,OAAQ,QAAS,QACjC3mD,OAAOsC,KAAKwY,GACPlP,QAAO,SAASnS,GACb,OAAQktD,EAASl6C,SAAShT,EAC7B,IACAD,SAAQ,SAASC,GACd,OAAOxB,EAAO6E,KAAKge,EAAMrhB,GAC5B,IAGL9E,EAAQg0B,KAAK7pB,MAAMnK,EAAS,CAACmmB,EAAM5gB,MAAMnK,OAAOkI,IAGhD,IAAI+mC,EAAUxgB,EAAM9P,MAAM,SAAWoM,EAAM5gB,KAAKlC,eAC5CgnC,GACAA,EAAQlgC,WAAM,EAAQ7G,EAE7B,EAEG2tD,EAAuB,SAA8BvyC,GAChDA,EAAQ/iB,QACb+iB,EACKzH,QAAO,SAAS8D,GACb,OAAOo2C,EAAYp2C,EAAOxV,KAC7B,IACAV,SAAQ,SAASkW,GACd,IAAIgS,EAASokC,EAAYp2C,EAAOxV,OAC/B2E,MAAMkD,QAAQ2f,GAAUA,EAAS,CAACA,IAASloB,SAAQ,SAAS+yC,GAErC,kBAAhB78B,EAAOxV,KACPosD,EAAY/Z,EAAM78B,EAAO5Z,OAEzB0C,YAAW,WACP8tD,EAAY/Z,EAAM78B,EAAO5Z,MAC5B,GAAE,EAEV,GACJ,GACR,EAKG61B,EAAa,SAAoBhrB,GACjC,OAAO6d,EAAM3O,SAAS,cAAe,CAAElP,QAASA,GACnD,EAEGm9B,EAAU,SAAiBpvB,GAC3B,OAAO8P,EAAM9P,MAAM,kBAAmBA,EACzC,EAEGk4C,EAAc,SAAqBl4C,GACnC,OAAO,IAAIjZ,SAAQ,SAASC,EAASC,GACjC6oB,EAAM3O,SAAS,uBAAwB,CACnCnB,MAAOA,EACPuvB,QAAS,SAAiBzvB,GACtB9Y,EAAQ8Y,EACX,EACD6xB,QAAS,SAAiBlhC,GACtBxJ,EAAOwJ,EACV,GAER,GACJ,EAEG0nD,EAAU,SAAiB5pD,GAC3B,IAAI0D,EAAUsE,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnF,OAAO,IAAIxP,SAAQ,SAASC,EAASC,GACjCmxD,EAAS,CAAC,CAAE7pD,OAAQA,EAAQ0D,QAASA,IAAY,CAAE5D,MAAO4D,EAAQ5D,QAC7DX,MAAK,SAASmpB,GACX,OAAO7vB,EAAQ6vB,GAASA,EAAM,GACjC,IACA9T,MAAM9b,EACd,GACJ,EAEGoxD,EAAiB,SAAwBxmD,GACzC,OAAOA,EAAIkN,MAAQlN,EAAIM,EAC1B,EAEGmmD,EAAa,SAAoBt4C,EAAO/N,GAWxC,MATqB,kBAAV+N,GAAuBq4C,EAAer4C,IAAW/N,IACxDA,EAAU+N,EACVA,OAAQpV,GAIZklB,EAAM3O,SAAS,cAAe7P,OAAOQ,OAAO,CAAC,EAAGG,EAAS,CAAE+N,MAAOA,KAGjB,OAA1C8P,EAAM9P,MAAM,kBAAmBA,EACzC,EAEGo4C,EAAW,WACX,IACI,IAAI/yC,EAAO9O,UAAU3U,OAAQ0U,EAAO,IAAInG,MAAMkV,GAAOC,EAAO,EAC5DA,EAAOD,EACPC,IAEAhP,EAAKgP,GAAQ/O,UAAU+O,GAE3B,OAAO,IAAIve,SAAQ,SAASC,EAASC,GACjC,IAAIsxD,EAAU,GACVtmD,EAAU,CAAC,EAGf,GAAIoB,EAAQiD,EAAK,IACbiiD,EAAQnqD,KAAKgC,MAAMmoD,EAASjiD,EAAK,IACjChF,OAAOQ,OAAOG,EAASqE,EAAK,IAAM,CAAC,OAChC,CAEH,IAAIkiD,EAAeliD,EAAKA,EAAK1U,OAAS,GACV,kBAAjB42D,GAA+BA,aAAwBx+C,MAC9D1I,OAAOQ,OAAOG,EAASqE,EAAKmE,OAIhC89C,EAAQnqD,KAAKgC,MAAMmoD,EAASjiD,EAC/B,CAEDwZ,EAAM3O,SAAS,YAAa,CACxB0V,MAAO0hC,EACPlqD,MAAO4D,EAAQ5D,MACf2jC,kBAAmBza,GAAkBC,IACrC+X,QAASvoC,EACT2qC,QAAS1qC,GAEhB,GACJ,EAEGokD,EAAW,WACX,OAAOv7B,EAAM9P,MAAM,mBACtB,EAEGy4C,EAAc,SAAqBz4C,GACnC,OAAO,IAAIjZ,SAAQ,SAASC,EAASC,GACjC6oB,EAAM3O,SAAS,0BAA2B,CACtCnB,MAAOA,EACPuvB,QAAS,SAAiBzvB,GACtB9Y,EAAQ8Y,EACX,EACD6xB,QAAS,SAAiBlhC,GACtBxJ,EAAOwJ,EACV,GAER,GACJ,EAEGioD,EAAe,WACf,IACI,IAAIx+B,EAAQ3jB,UAAU3U,OAAQ0U,EAAO,IAAInG,MAAM+pB,GAAQC,EAAQ,EAC/DA,EAAQD,EACRC,IAEA7jB,EAAK6jB,GAAS5jB,UAAU4jB,GAE5B,IAAIzV,EAAUvU,MAAMkD,QAAQiD,EAAK,IAAMA,EAAK,GAAKA,EAC7CugB,EAAQnS,EAAQ9iB,OAAS8iB,EAAU2mC,IACvC,OAAOtkD,QAAQiG,IAAI6pB,EAAMtW,IAAI23C,GAChC,EAEGS,EAAe,WACf,IACI,IAAIC,EAAQriD,UAAU3U,OAAQ0U,EAAO,IAAInG,MAAMyoD,GAAQC,EAAQ,EAC/DA,EAAQD,EACRC,IAEAviD,EAAKuiD,GAAStiD,UAAUsiD,GAE5B,IAAIn0C,EAAUvU,MAAMkD,QAAQiD,EAAK,IAAMA,EAAK,GAAKA,EACjD,IAAKoO,EAAQ9iB,OAAQ,CACjB,IAAI0hC,EAAQ+nB,IAAWnuC,QAAO,SAAS4C,GACnC,QACMA,EAAK9W,SAAW6xB,GAAWE,MAAQjb,EAAK2uB,SAAWlT,GAAWG,QAChE5b,EAAK9W,SAAW6xB,GAAWI,YAC3Bnb,EAAK9W,SAAW6xB,GAAWK,qBAC3Bpb,EAAK9W,SAAW6xB,GAAWO,uBAElC,IAED,OAAOr0B,QAAQiG,IAAIs2B,EAAM/iB,IAAIk4C,GAChC,CACD,OAAO1xD,QAAQiG,IAAI0X,EAAQnE,IAAIk4C,GAClC,EAEGK,EAAc,WACd,IACI,IAAIC,EAAQxiD,UAAU3U,OAAQ0U,EAAO,IAAInG,MAAM4oD,GAAQC,EAAQ,EAC/DA,EAAQD,EACRC,IAEA1iD,EAAK0iD,GAASziD,UAAUyiD,GAG5B,IAEI/mD,EAFAyS,EAAUvU,MAAMkD,QAAQiD,EAAK,IAAMA,EAAK,GAAKA,EAGN,kBAAhCoO,EAAQA,EAAQ9iB,OAAS,GAChCqQ,EAAUyS,EAAQjK,MACXtK,MAAMkD,QAAQiD,EAAK,MAC1BrE,EAAUqE,EAAK,IAGnB,IAAIgtB,EAAQ+nB,IAEZ,OAAK3mC,EAAQ9iB,OAQO8iB,EACfnE,KAAI,SAASP,GACV,OAAOxI,EAASwI,GAAUsjB,EAAMtjB,GAASsjB,EAAMtjB,GAAO7N,GAAK,KAAQ6N,CACtE,IACA9C,QAAO,SAAS8C,GACb,OAAOA,CACV,IAEgBO,KAAI,SAAS04C,GAC9B,OAAOX,EAAWW,EAAGhnD,EACxB,IAjBUlL,QAAQiG,IACXs2B,EAAM/iB,KAAI,SAASxB,GACf,OAAOu5C,EAAWv5C,EAAM9M,EAC3B,IAeZ,EAEGhM,EAAUqL,OAAOQ,OACjB,CAAC,EAEDma,KACA,CAAC,EAED+qC,EACA,CAAC,EAED5/B,GAAgBtH,EAAOiN,GACvB,CAKIE,WAAYA,EAOZk7B,QAASA,EAOTC,SAAUA,EAMVhpB,QAASA,EAMTqpB,YAAaA,EAMbP,YAAaA,EAMbI,WAAYA,EAKZY,SAAU,SAAkBl5C,EAAO3R,GAC/B,OAAOyhB,EAAM3O,SAAS,YAAa,CAAEnB,MAAOA,EAAO3R,MAAOA,GAC7D,EAKDg9C,SAAUA,EAKVsN,aAAcA,EAKdG,YAAaA,EAKbJ,aAAcA,EAKd5mC,KAAM,SAAcwf,GAChB,OAAOxhB,EAAM3O,SAAS,OAAQ,CAAEmwB,QAASA,GAC5C,EAKD6nB,OAAQ,WAEJ,IAAIzS,EAAQ/lC,EAAK8F,QAAQoiC,cAAc,oBACnCnC,GACAA,EAAM8B,OAEb,EAKD98B,QAAS,WAELzlB,EAAQg0B,KAAK,UAAWtZ,EAAK8F,SAI7BqJ,EAAM3O,SAAS,aAGfR,EAAKuQ,WAGLhY,OAAOtR,oBAAoB,SAAUkvD,GAGrCp/C,SAAS9P,oBAAoB,mBAAoB4uD,GAGjD1mC,EAAM3O,SAAS,cAClB,EAKD4F,aAAc,SAAwBN,GAClC,OAAOM,EAAapG,EAAK8F,QAASA,EACrC,EAKD2M,YAAa,SAAuB3M,GAChC,OAAO2M,EAAYzS,EAAK8F,QAASA,EACpC,EAKD2yC,SAAU,SAAkB3yC,GACxB,OAAOA,EAAQE,YAAYhG,EAAK8F,QACnC,EAKD4yC,eAAgB,SAAwB5yC,GAEpCM,EAAapG,EAAK8F,QAASA,GAG3BA,EAAQU,WAAWC,YAAYX,GAG/B8vC,EAAkB9vC,CACrB,EAKD6yC,eAAgB,WACP/C,IAKLnjC,EAAYmjC,EAAiB51C,EAAK8F,SAGlC9F,EAAK8F,QAAQU,WAAWC,YAAYzG,EAAK8F,SAGzC8vC,EAAkB,KACrB,EAMDgD,aAAc,SAAsB9yC,GAChC,OAAO9F,EAAK8F,UAAYA,GAAW8vC,IAAoB9vC,CAC1D,EAKDA,QAAS,CACLqD,IAAK,WACD,OAAOnJ,EAAK8F,OACf,GAMLzd,OAAQ,CACJ8gB,IAAK,WACD,OAAOgG,EAAM9P,MAAM,aACtB,KASb,OAHA8P,EAAM3O,SAAS,YAGR2E,EAAa7f,EACvB,EAEGuzD,GAAkB,WAClB,IAAIC,EAAgBljD,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAErFwmB,EAAiB,CAAC,EAkBtB,OAjBAlX,EAAMmX,MAAc,SAASjyB,EAAK7B,GAC9B6zB,EAAehyB,GAAO7B,EAAM,EAC/B,IAGSmtD,GACN/kD,OAAOQ,OACH,CAAC,EAEDirB,EACA,CAAC,EAED08B,GAMX,EAEGC,GAAuB,SAA8BtlC,GACrD,OAAOA,EAAOnb,OAAO,GAAGjO,cAAgBopB,EAAO1uB,MAAM,EACxD,EAEGi0D,GAA8B,SAAqCC,GACnE,OAAO7H,GAAS6H,EAAcnjD,QAAQ,SAAU,IACnD,EAEGojD,GAAY,SAASA,EAAU/jC,EAAQgkC,GAEvCj0C,EAAMi0C,GAAa,SAASC,EAAUC,GAClCn0C,EAAMiQ,GAAQ,SAASnQ,EAAUzc,GAE7B,IAAI+wD,EAAiB,IAAIriD,OAAOmiD,GAMhC,GAHcE,EAAejiD,KAAK2N,YAQ3BmQ,EAAOnQ,IAGE,IAAZq0C,GAKJ,GAAIrkD,EAASqkD,GACTlkC,EAAOkkC,GAAW9wD,MADtB,CAMA,IAAIwiD,EAAQsO,EAAQtO,MAChBv2C,GAAS6kD,KAAalkC,EAAO41B,KAC7B51B,EAAO41B,GAAS,CAAC,GAGrB51B,EAAO41B,GAAOgO,GAAqB/zC,EAASlP,QAAQwjD,EAAgB,MAAQ/wD,CAR3E,CASJ,IAGG8wD,EAAQA,SACRH,EAAU/jC,EAAOkkC,EAAQtO,OAAQsO,EAAQA,QAEhD,GACJ,EAEGE,GAAwB,SAA+Bl0C,GACvD,IAAIm0C,EACA5jD,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAErEiQ,EAAa,GACjBX,EAAMG,EAAKQ,YAAY,SAASnY,GAC5BmY,EAAWpY,KAAK4X,EAAKQ,WAAWnY,GACnC,IAED,IAAI2lC,EAASxtB,EACRtJ,QAAO,SAASk9C,GACb,OAAOA,EAAUzrD,IACpB,IACA+tB,QAAO,SAAS7qB,EAAKuoD,GAClB,IAAIlxD,EAAQ6c,EAAKC,EAAMo0C,EAAUzrD,MAIjC,OAFAkD,EAAI8nD,GAA4BS,EAAUzrD,OACtCzF,IAAUkxD,EAAUzrD,MAAczF,EAC/B2I,CACV,GAAE,CAAC,GAKR,OAFAgoD,GAAU7lB,EAAQmmB,GAEXnmB,CACV,EAEGqmB,GAAqB,SAA4B5zC,GACjD,IAAIxU,EAAUsE,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAG/E4jD,EAAmB,CAEnB,UAAW,YACX,aAAc,gBACd,YAAa,gBACb,oBAAqB,uBAGrB,UAAW,CACPzO,MAAO,SACPsO,QAAS,CACL,WAAY,CACRtO,MAAO,WAGX,UAAW,CACPA,MAAO,UAGX,SAAU,CACNA,MAAO,SAGX,WAAY,CACRA,MAAO,WAGX,QAAS,CACLA,MAAO,UAMnB,UAAU,EACV,WAAW,GAIf9uB,GAAa,8BAA+Bu9B,GAG5C,IAAIG,EAAgBhpD,OAAOQ,OAAO,CAAC,EAAGG,GAElCsoD,EAAmBL,GACE,aAArBzzC,EAAQiqC,SAA0BjqC,EAAQoiC,cAAc,oBAAsBpiC,EAC9E0zC,GAIJ7oD,OAAOsC,KAAK2mD,GAAkBzvD,SAAQ,SAASC,GACvCoK,GAASolD,EAAiBxvD,KACrBoK,GAASmlD,EAAcvvD,MACxBuvD,EAAcvvD,GAAO,CAAC,GAE1BuG,OAAOQ,OAAOwoD,EAAcvvD,GAAMwvD,EAAiBxvD,KAEnDuvD,EAAcvvD,GAAOwvD,EAAiBxvD,EAE7C,IAIDuvD,EAAch3B,OAASrxB,EAAQqxB,OAAS,IAAIjiC,OACxC8O,MAAMsB,KAAKgV,EAAQ+zC,iBAAiB,2BAA2Bj6C,KAAI,SAASmmC,GACxE,MAAO,CACHn4C,OAAQm4C,EAAMx9C,MACd+I,QAAS,CACLzG,KAAMk7C,EAAMpP,QAAQ9rC,MAG/B,KAIL,IAAIivD,EAAMjB,GAAgBc,GAa1B,OAVI7zC,EAAQ6c,OACRnzB,MAAMsB,KAAKgV,EAAQ6c,OAAOx4B,SAAQ,SAASiU,GACvC07C,EAAItC,QAAQp5C,EACf,IAIL07C,EAAIpB,eAAe5yC,GAGZg0C,CACV,EAGGC,GAAc,WACd,OAAOp2C,EAAO/N,UAAU3U,QAAU,OAAIgJ,EAAY2L,UAAU,IACtD8jD,GAAmBjqD,WAAM,EAAQmG,WACjCijD,GAAgBppD,WAAM,EAAQmG,UACvC,EAEGokD,GAAkB,CAAC,OAAQ,QAAS,UAEpCC,GAAe,SAAsBH,GACrC,IAAIj1C,EAAM,CAAC,EAIX,OAFA8U,GAA6BmgC,EAAKj1C,EAAKm1C,IAEhCn1C,CACV,EAOG5D,GAAkB,SAAyBwS,EAAQymC,GACnD,OAAOzmC,EAAO3d,QAAQ,sBAAsB,SAASkB,EAAO+zC,GACxD,OAAOmP,EAAanP,EACvB,GACJ,EAEGnsC,GAAe,SAAsBnN,GACrC,IAAI0oD,EAAa,IAAI9gD,KAAK,CAAC,IAAK5H,EAAGmC,WAAY,OAAQ,CACnD/I,KAAM,2BAGNuvD,EAAYC,IAAIC,gBAAgBH,GAChCp7C,EAAS,IAAIw7C,OAAOH,GAExB,MAAO,CACH1vB,SAAU,SAAkBr9B,EAAS8Q,GAAM,EAC3Ca,KAAM,SAAc3R,EAAS8Q,EAAIq8C,GAC7B,IAAIhpD,EAAK0lB,KAETnY,EAAOf,UAAY,SAAS5I,GACpBA,EAAE3O,KAAK+K,KAAOA,GACd2M,EAAG/I,EAAE3O,KAAK4G,QAEjB,EAED0R,EAAOb,YACH,CACI1M,GAAIA,EACJnE,QAASA,GAGbmtD,EAEP,EACDv7C,UAAW,WACPF,EAAOE,YACPo7C,IAAII,gBAAgBL,EACvB,EAER,EAEGM,GAAY,SAAmB3yD,GAC/B,OAAO,IAAI3B,SAAQ,SAASC,EAASC,GACjC,IAAIq0D,EAAM,IAAIC,MACdD,EAAItmC,OAAS,WACThuB,EAAQs0D,EACX,EACDA,EAAIrxD,QAAU,SAAS8L,GACnB9O,EAAO8O,EACV,EACDulD,EAAI/gC,IAAM7xB,CACb,GACJ,EAEG8yD,GAAa,SAAoBz8C,EAAMpQ,GACvC,IAAI8sD,EAAc18C,EAAKrZ,MAAM,EAAGqZ,EAAKkC,KAAMlC,EAAKvT,MAGhD,OAFAiwD,EAAYt0B,iBAAmBpoB,EAAKooB,iBACpCs0B,EAAY9sD,KAAOA,EACZ8sD,CACV,EAEGC,GAAW,SAAkB38C,GAC7B,OAAOy8C,GAAWz8C,EAAMA,EAAKpQ,KAChC,EAGGgtD,GAAoB,GAGpBC,GAAkB,SAAyBz8C,GAE3C,IAAIw8C,GAAkB59C,SAASoB,GAA/B,CAKAw8C,GAAkBvtD,KAAK+Q,GAGvB,IAAI08C,EAAgB18C,EAAO,CACvBE,UAAWA,GACXnZ,MAAO,CACHoZ,KAAMA,GACNuG,MAAOA,EACPlQ,SAAUA,EACVf,OAAQA,GACRwjC,kBAAmBA,GACnBx2B,gBAAiBA,GACjBE,yBAA0BA,GAC1BssB,4BAA6BA,GAC7BvsB,oBAAqBA,GACrBolB,gBAAiBA,GACjBllB,mBAAoBA,GACpBvC,YAAaA,EACbD,aAAcA,GACdmP,WAAYA,EACZgM,cAAeA,GACf2gC,UAAWA,GACXK,SAAUA,GACVF,WAAYA,GACZ9zB,WAAYA,GACZnL,iBAAkBA,GAClBsZ,KAAMA,GACNnS,gCAAiCA,IAGrCo4B,MAAO,CACH3jB,iBAAkBA,MAK1Btb,GAAqBg/B,EAAc5pD,QAvClC,CAwCJ,EAGG8pD,GAAc,WACd,MAA4D,uBAArDzqD,OAAO/E,UAAUgI,SAAS9F,KAAKyK,OAAO8iD,UAChD,EACGC,GAAc,WACd,MAAO,YAAa/iD,MACvB,EACGgjD,GAAe,WACf,MAAO,UAAWliD,KAAKzN,SAC1B,EACG4vD,GAAqB,WACrB,MAAO,QAASjjD,QAAU,oBAAqBA,OAAO8hD,GACzD,EACGoB,GAAgB,WAChB,MAAO,oBAAqB1kD,QAC/B,EACG2kD,GAAY,WACZ,MAAO,gBAAiBnjD,MAC3B,EACGojD,GAAiB,WACjB,MAAO,aAAepjD,OAAOqjD,KAAO,CAAC,EACxC,EACGC,GAAS,WACT,MAAO,eAAexkD,KAAKkB,OAAOd,UAAUC,UAC/C,EAEGokD,GAAa,WAEb,IAAIC,EAEAp1C,MAECy0C,MAEDK,MACAH,MACAC,MACAC,MACAE,OAECC,MAAoBE,MAEzB,OAAO,WACH,OAAOE,CACV,CACJ,CAnBgB,GAwBb93C,GAAQ,CAER+3C,KAAM,IAINhuD,GAAO,WAKPyD,GAAK,WAAgB,EAczB,GAbAnM,EAAQ69B,OAAS,CAAC,EAClB79B,EAAQ22D,WAAa,CAAC,EACtB32D,EAAQs1B,WAAa,CAAC,EACtBt1B,EAAQ42D,YAAc,CAAC,EACvB52D,EAAQwG,OAAS2F,GACjBnM,EAAQylB,QAAUtZ,GAClBnM,EAAQ4P,MAAQzD,GAChBnM,EAAQw9B,KAAOrxB,GACfnM,EAAQ62D,eAAiB1qD,GACzBnM,EAAQ+2B,WAAa5qB,GACrBnM,EAAQg3B,WAAa7qB,GAGjBqqD,KAAa,CAEbxqC,GACI,WACIrN,GAAM+3C,KAAK7xD,SAAQ,SAAS2vD,GACxB,OAAOA,EAAI/pC,OACd,GACJ,IACD,SAASjH,GACL7E,GAAM+3C,KAAK7xD,SAAQ,SAAS2vD,GACxB,OAAOA,EAAI7pC,OAAOnH,EACrB,GACJ,IAIL,IAAItI,GAAW,SAASA,IAEpBzJ,SAAS8J,cACL,IAAIC,YAAY,kBAAmB,CAC/BC,OAAQ,CACJ+6C,UAAWA,GACXhwD,OAAQxG,EAAQwG,OAChBif,QAASzlB,EAAQylB,QACjB7V,MAAO5P,EAAQ4P,MACf4tB,KAAMx9B,EAAQw9B,KACdq5B,eAAgB72D,EAAQ62D,eACxB7/B,WAAYh3B,EAAQg3B,eAMhCvlB,SAAS9P,oBAAoB,mBAAoBuZ,EACpD,EAE2B,YAAxBzJ,SAAS/N,WAETG,YAAW,WACP,OAAOqX,IACV,GAAE,GAEHzJ,SAAStM,iBAAiB,mBAAoB+V,IAIlD,IAAI47C,GAAoB,WACpB,OAAOl3C,EAAMmX,MAAc,SAASjyB,EAAK7B,GACrCjD,EAAQ42D,YAAY9xD,GAAO7B,EAAM,EACpC,GACJ,EAEDjD,EAAQ69B,OAASxyB,OAAOQ,OAAO,CAAC,EAAGgyB,IACnC79B,EAAQs1B,WAAajqB,OAAOQ,OAAO,CAAC,EAAGypB,IACvCt1B,EAAQ22D,WAAatrD,OAAOQ,OAAO,CAAC,EAAG+oB,IAEvC50B,EAAQ42D,YAAc,CAAC,EACvBE,KAGA92D,EAAQwG,OAAS,WACb,IAAIguD,EAAMC,GAAYtqD,WAAM,EAAQmG,WAGpC,OAFAkkD,EAAIxuC,GAAG,UAAWhmB,EAAQylB,SAC1B9G,GAAM+3C,KAAKvuD,KAAKqsD,GACTG,GAAaH,EACvB,EAGDx0D,EAAQylB,QAAU,SAAiBsxC,GAE/B,IAAIC,EAAgBr4C,GAAM+3C,KAAKxwC,WAAU,SAASsuC,GAC9C,OAAOA,EAAIlB,aAAayD,EAC3B,IACD,OAAIC,GAAiB,IAEPr4C,GAAM+3C,KAAKruD,OAAO2uD,EAAe,GAAG,GAG1C3D,kBAEG,EAId,EAGDrzD,EAAQ4P,MAAQ,SAAexJ,GAY3B,OAVmB8D,MAAMsB,KAAKpF,EAAQmuD,iBAAiB,IAAM7rD,KAGjCuO,QAAO,SAASggD,GACxC,OAAQt4C,GAAM+3C,KAAKl5B,MAAK,SAASg3B,GAC7B,OAAOA,EAAIlB,aAAa2D,EAC3B,GACJ,IAGe38C,KAAI,SAASy8C,GACzB,OAAO/2D,EAAQwG,OAAOuwD,EACzB,GACJ,EAGD/2D,EAAQw9B,KAAO,SAAcu5B,GACzB,IAAIvC,EAAM71C,GAAM+3C,KAAKl5B,MAAK,SAASg3B,GAC/B,OAAOA,EAAIlB,aAAayD,EAC3B,IACD,OAAKvC,EAGEG,GAAaH,GAFT,IAGd,EAGDx0D,EAAQ62D,eAAiB,WACrB,IACI,IAAIz3C,EAAO9O,UAAU3U,OAAQu7D,EAAU,IAAIhtD,MAAMkV,GAAOC,EAAO,EAC/DA,EAAOD,EACPC,IAEA63C,EAAQ73C,GAAQ/O,UAAU+O,GAI9B63C,EAAQryD,QAAQ8wD,IAGhBmB,IACH,EAED92D,EAAQ+2B,WAAa,WACjB,IAAIhiB,EAAO,CAAC,EAIZ,OAHA6K,EAAMmX,MAAc,SAASjyB,EAAK7B,GAC9B8R,EAAKjQ,GAAO7B,EAAM,EACrB,IACM8R,CACV,EAED/U,EAAQg3B,WAAa,SAAsBjiB,GAYvC,OAXI7F,GAAS6F,KAET4J,GAAM+3C,KAAK7xD,SAAQ,SAAS2vD,GACxBA,EAAIx9B,WAAWjiB,EAClB,IAGDiiB,GAAWjiB,IAIR/U,EAAQ+2B,YAClB,CACJ,CAED/2B,EAAQw2D,UAAYA,GAEpBnrD,OAAOE,eAAevL,EAAS,aAAc,CAAEiD,OAAO,GACzD,CA76YSyY,CAAQ1b,qQCThB,IAAIm3D,EAAmB,CAAC,EAGxB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUr3D,QAGnC,IAAID,EAASo3D,EAAiBE,GAAY,CACzC1vD,EAAG0vD,EACHzvD,GAAG,EACH5H,QAAS,CAAC,GAUX,OANAs3D,EAAQD,GAAU7uD,KAAKzI,EAAOC,QAASD,EAAQA,EAAOC,QAASo3D,GAG/Dr3D,EAAO6H,GAAAA,EAGA7H,EAAOC,OA0Df,QArDAo3D,EAAoBG,EAAID,EAGxBF,EAAoB7uD,EAAI4uD,EAGxBC,EAAoBI,EAAI,SAASx3D,EAAS0I,EAAMsc,GAC3CoyC,EAAoBryC,EAAE/kB,EAAS0I,IAClC2C,OAAOE,eAAevL,EAAS0I,EAAM,CAAE8nB,YAAY,EAAM3M,IAAKmB,GAAAA,EAKhEoyC,EAAoBp/C,EAAI,SAAShY,GACX,oBAAXuzB,QAA0BA,OAAOkkC,aAC1CpsD,OAAOE,eAAevL,EAASuzB,OAAOkkC,YAAa,CAAEx0D,MAAO,WAE7DoI,OAAOE,eAAevL,EAAS,aAAc,CAAEiD,OAAO,KAQvDm0D,EAAoBn/C,EAAI,SAAShV,EAAOy0D,GAEvC,GADU,EAAPA,IAAUz0D,EAAQm0D,EAAoBn0D,IAC/B,EAAPy0D,EAAU,OAAOz0D,EACpB,GAAW,EAAPy0D,GAA8B,iBAAVz0D,GAAsBA,GAASA,EAAM00D,WAAY,OAAO10D,EAChF,IAAIid,EAAK7U,OAAO7E,OAAO,MAGvB,GAFA4wD,EAAoBp/C,EAAEkI,GACtB7U,OAAOE,eAAe2U,EAAI,UAAW,CAAEsQ,YAAY,EAAMvtB,MAAOA,IACtD,EAAPy0D,GAA4B,iBAATz0D,EAAmB,IAAI,IAAI6B,KAAO7B,EAAOm0D,EAAoBI,EAAEt3C,EAAIpb,EAAK,SAASA,GAAO,OAAO7B,EAAM6B,EAAAA,EAAQgB,KAAK,KAAMhB,IAC9I,OAAOob,CAAAA,EAIRk3C,EAAoBj/C,EAAI,SAASpY,GAChC,IAAIilB,EAASjlB,GAAUA,EAAO43D,WAC7B,WAAwB,OAAO53D,EAAgBgY,OAAA,EAC/C,WAA8B,OAAOhY,CAAAA,EAEtC,OADAq3D,EAAoBI,EAAExyC,EAAQ,IAAKA,GAC5BA,CAAAA,EAIRoyC,EAAoBryC,EAAI,SAAS8K,EAAQnQ,GAAY,OAAOrU,OAAO/E,UAAUwP,eAAetN,KAAKqnB,EAAQnQ,EAAAA,EAGzG03C,EAAoBpzC,EAAI,GAIjBozC,EAAoBA,EAAoBQ,EAAI,kOClErD,IAAIC,EAAgB,SAASL,EAAG/gD,GAI5B,OAHAohD,EAAgBxsD,OAAOysD,gBAClB,CAAEC,UAAW,cAAgB7tD,OAAS,SAAUstD,EAAG/gD,GAAK+gD,EAAEO,UAAYthD,CAAAA,GACvE,SAAU+gD,EAAG/gD,GAAK,IAAK,IAAIuN,KAAKvN,EAAOA,EAAEX,eAAekO,KAAIwzC,EAAExzC,GAAKvN,EAAEuN,GAAAA,GACpDwzC,EAAG/gD,EAAAA,EAGrB,SAASuhD,EAAUR,EAAG/gD,GAEzB,SAASwhD,IAAO3wD,KAAK2O,YAAcuhD,CADnCK,CAAAA,EAAcL,EAAG/gD,GAEjB+gD,EAAElxD,UAAkB,OAANmQ,EAAapL,OAAO7E,OAAOiQ,IAAMwhD,EAAG3xD,UAAYmQ,EAAEnQ,UAAW,IAAI2xD,EAG5E,KAAIC,EAAW,WAQlB,OAPAA,EAAW7sD,OAAOQ,QAAU,SAAkBoM,GAC1C,IAAK,IAAI2/C,EAAGjwD,EAAI,EAAGwQ,EAAI7H,UAAU3U,OAAQgM,EAAIwQ,EAAGxQ,IAE5C,IAAK,IAAIqc,KADT4zC,EAAItnD,UAAU3I,GACO0D,OAAO/E,UAAUwP,eAAetN,KAAKovD,EAAG5zC,KAAI/L,EAAE+L,GAAK4zC,EAAE5zC,IAE9E,OAAO/L,CAAAA,GAEK9N,MAAM7C,KAAMgJ,UAAAA,EA8BzB,SAAS6nD,EAAU/nD,EAASgoD,EAAYC,EAAGC,GAE9C,OAAO,IAAKD,IAAMA,EAAIv3D,WAAU,SAAUC,EAASC,GAC/C,SAAS8I,EAAU7G,GAAS,IAAMs1D,EAAKD,EAAUjmC,KAAKpvB,GAA8B6M,CAAnB,MAAOA,GAAK9O,EAAO8O,EAAAA,CACpF,UAAS/F,EAAS9G,GAAS,IAAMs1D,EAAKD,EAAS5kC,MAAUzwB,GAA8B6M,CAAnB,MAAOA,GAAK9O,EAAO8O,EAAAA,CACvF,UAASyoD,EAAKjjD,GAJlB,IAAerS,EAIaqS,EAAO/T,KAAOR,EAAQuU,EAAOrS,QAJ1CA,EAIyDqS,EAAOrS,MAJhDA,aAAiBo1D,EAAIp1D,EAAQ,IAAIo1D,GAAE,SAAUt3D,GAAWA,EAAQkC,EAAAA,KAITwE,KAAKqC,EAAWC,EAClGwuD,CAAAA,GAAMD,EAAYA,EAAUnuD,MAAMiG,EAASgoD,GAAc,KAAK/lC,OAAAA,GAI/D,UAASmmC,EAAYpoD,EAASwzB,GACjC,IAAsG1rB,EAAGu4B,EAAGx4B,EAAGwgD,EAA3GC,EAAI,CAAEr7C,MAAO,EAAGs7C,KAAM,WAAa,GAAW,EAAP1gD,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,IAAO2gD,KAAM,GAAIC,IAAK,IAChG,OAAOJ,EAAI,CAAEpmC,KAAMymC,EAAK,GAAIplC,MAASolC,EAAK,GAAIrmC,OAAUqmC,EAAK,IAAwB,mBAAXvlC,SAA0BklC,EAAEllC,OAAOC,UAAY,WAAa,OAAOlsB,IAAAA,GAAUmxD,EACvJ,SAASK,EAAK3gD,GAAK,OAAO,SAAUxH,GAAK,OACzC,SAAcooD,GACV,GAAI7gD,EAAG,MAAM,IAAI9Q,UAAU,mCAC3B,KAAOsxD,GAAG,IACN,GAAIxgD,EAAI,EAAGu4B,IAAMx4B,EAAY,EAAR8gD,EAAG,GAAStoB,EAAChe,OAAasmC,EAAG,GAAKtoB,EAAC/c,SAAezb,EAAIw4B,EAAChe,SAAexa,EAAEzP,KAAKioC,GAAI,GAAKA,EAAEpe,SAAWpa,EAAIA,EAAEzP,KAAKioC,EAAGsoB,EAAG,KAAKx3D,KAAM,OAAO0W,EAE3J,OADIw4B,EAAI,EAAGx4B,IAAG8gD,EAAK,CAAS,EAARA,EAAG,GAAQ9gD,EAAEhV,QACzB81D,EAAG,IACP,KAAK,EAAG,KAAK,EAAG9gD,EAAI8gD,EAAI,MACxB,KAAK,EAAc,OAAXL,EAAEr7C,QAAgB,CAAEpa,MAAO81D,EAAG,GAAIx3D,MAAM,GAChD,KAAK,EAAGm3D,EAAEr7C,QAASozB,EAAIsoB,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKL,EAAEG,IAAIrkD,MAAOkkD,EAAEE,KAAKpkD,MAAO,SACxC,QACI,MAAkByD,GAAZA,EAAIygD,EAAEE,MAAYj9D,OAAS,GAAKsc,EAAEA,EAAEtc,OAAS,KAAkB,IAAVo9D,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAEL,EAAI,EAAG,QACjG,IAAc,IAAVK,EAAG,MAAc9gD,GAAM8gD,EAAG,GAAK9gD,EAAE,IAAM8gD,EAAG,GAAK9gD,EAAE,IAAM,CAAEygD,EAAEr7C,MAAQ07C,EAAG,GAAI,KAC9E,IAAc,IAAVA,EAAG,IAAYL,EAAEr7C,MAAQpF,EAAE,GAAI,CAAEygD,EAAEr7C,MAAQpF,EAAE,GAAIA,EAAI8gD,EAAI,KAC7D,IAAI9gD,GAAKygD,EAAEr7C,MAAQpF,EAAE,GAAI,CAAEygD,EAAEr7C,MAAQpF,EAAE,GAAIygD,EAAEG,IAAI1wD,KAAK4wD,GAAK,KACvD9gD,CAAAA,EAAE,IAAIygD,EAAEG,IAAIrkD,MAChBkkD,EAAEE,KAAKpkD,MAAO,SAEtBukD,EAAKn1B,EAAKp7B,KAAK4H,EAASsoD,EAE5B,CADE,MAAO5oD,GAAKipD,EAAK,CAAC,EAAGjpD,GAAI2gC,EAAI,CAjBrB,SAiBoCv4B,EAAID,EAAI,CACtD,IAAY,EAAR8gD,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAE91D,MAAO81D,EAAG,GAAKA,EAAG,UAAax3D,MAAM,EArB9Bg3D,CAChD,CADqD,CAACpgD,EAAGxH,GAAAA,CAAAA,CA6BtD,UAASqoD,EAASj0C,GACrB,IAAI6yC,EAAsB,mBAAXrkC,QAAyBA,OAAOC,SAAU+jC,EAAIK,GAAK7yC,EAAE6yC,GAAIjwD,EAAI,EAC5E,GAAI4vD,EAAG,OAAOA,EAAE/uD,KAAKuc,GACrB,GAAIA,GAAyB,iBAAbA,EAAEppB,OAAqB,MAAO,CAC1C02B,KAAM,WAEF,OADItN,GAAKpd,GAAKod,EAAEppB,SAAQopB,OAAAA,GACjB,CAAE9hB,MAAO8hB,GAAKA,EAAEpd,KAAMpG,MAAOwjB,EAAAA,GAG5C,MAAM,IAAI3d,UAAUwwD,EAAI,0BAA4B,kCAGjD,UAASqB,EAAOl0C,EAAG5M,GACtB,IAAIo/C,EAAsB,mBAAXhkC,QAAyBxO,EAAEwO,OAAOC,UACjD,IAAK+jC,EAAG,OAAOxyC,EACf,IAAmB/M,EAAYlI,EAA3BnI,EAAI4vD,EAAE/uD,KAAKuc,GAAOm0C,EAAK,GAC3B,IACI,eAAQ/gD,GAAgBA,KAAM,MAAQH,EAAIrQ,EAAE0qB,QAAQ9wB,MAAM23D,EAAG/wD,KAAK6P,EAAE/U,MASxE,CAPA,MAAOuH,GAASsF,EAAI,CAAEtF,MAAOA,EAH7B,SAKI,IACQwN,IAAMA,EAAEzW,OAASg2D,EAAI5vD,EAAC8qB,SAAa8kC,EAAE/uD,KAAKb,EAEzB6C,CAHzB,QAGU,GAAIsF,EAAG,MAAMA,EAAEtF,KAAAA,CAE7B,QAAO0uD,CAGJ,UAASC,IACZ,IAAK,IAAID,EAAK,GAAIvxD,EAAI,EAAGA,EAAI2I,UAAU3U,OAAQgM,IAC3CuxD,EAAKA,EAAG99D,OAAO69D,EAAO3oD,UAAU3I,KACpC,OAAOuxD,CAAAA,CAAAA,EAAAA,SAAAA,EAAAA,EAAAA,spBC5DP9sC,SChESgtC,EAAgB,CAC3B,2BAA4B,CAAC,MAC7B,yBAA0B,CAAC,MAC3B,uBAAwB,CAAC,QACzB,0BAA2B,CAAC,WAC5B,0BAA2B,CAAC,WAC5B,mBAAoB,CAAC,QACrB,wBAAyB,CAAC,SAC1B,8BAA+B,CAAC,SAChC,6BAA8B,CAAC,SAC/B,0BAA2B,CAAC,SAC5B,0BAA2B,CAAC,SAC5B,yBAA0B,CAAC,SAC3B,uBAAwB,CAAC,MACzB,uBAAwB,CAAC,OACzB,2BAA4B,CAAC,YAC7B,0BAA2B,CAAC,OAC5B,uBAAwB,CAAC,QACzB,uBAAwB,CAAC,SACzB,yBAA0B,CAAC,OAAQ,MACnC,uBAAwB,CAAC,QACzB,uBAAwB,CAAC,QACzB,kBAAmB,CAAC,OACpB,yBAA0B,CAAC,OAC3B,uBAAwB,CAAC,WACzB,sBAAuB,CAAC,OACxB,sBAAuB,CAAC,OACxB,kBAAmB,CAAC,OACpB,mBAAoB,CAAC,MACrB,oBAAqB,CAAC,SACtB,0BAA2B,CAAC,OAC5B,wBAAyB,CAAC,MAAO,SACjC,oBAAqB,CAAC,SACtB,2BAA4B,CAAC,MAAO,MAAO,OAC3C,qCAAsC,CAAC,OACvC,sBAAuB,CAAC,SACxB,yBAA0B,CAAC,KAAM,OACjC,mBAAoB,CAAC,OAAQ,OAC7B,oBAAqB,CAAC,SACtB,0BAA2B,CAAC,UAC5B,sBAAuB,CAAC,UACxB,uBAAwB,CAAC,WACzB,2BAA4B,CAAC,OAC7B,6BAA8B,CAAC,OAC/B,uBAAwB,CAAC,QACzB,4BAA6B,CAAC,eAC9B,mBAAoB,CAAC,OACrB,0BAA2B,CAAC,QAC5B,0BAA2B,CAAC,KAAM,KAAM,MACxC,yBAA0B,CAAC,UAC3B,mBAAoB,CAAC,QACrB,qCAAsC,CAAC,SACvC,2BAA4B,CAAC,YAC7B,4BAA6B,CAAC,SAC9B,uBAAwB,CAAC,QACzB,uBAAwB,CAAC,QACzB,mBAAoB,CAAC,MAAO,QAC5B,kBAAmB,CAAC,OAAQ,OAC5B,qBAAsB,CAAC,MAAO,OAC9B,kBAAmB,CAAC,OACpB,sBAAuB,CAAC,MACxB,wBAAyB,CAAC,MAC1B,2BAA4B,CAC1B,MACA,MACA,MACA,MACA,KACA,OACA,QACA,MACA,MACA,OACA,MACA,SACA,MACA,MACA,MACA,MACA,MACA,MACA,UAEF,kBAAmB,CAAC,OACpB,gCAAiC,CAAC,OAClC,kBAAmB,CAAC,OACpB,wBAAyB,CAAC,SAC1B,sBAAuB,CAAC,SAAU,UAAW,SAAU,UACvD,mBAAoB,CAAC,QACrB,kCAAmC,CAAC,OACpC,kBAAmB,CAAC,OACpB,4BAA6B,CAAC,OAC9B,4BAA6B,CAAC,MAAO,OACrC,yBAA0B,CAAC,OAC3B,qBAAsB,CAAC,OACvB,yBAA0B,CAAC,MAAO,OAClC,8BAA+B,CAAC,OAChC,oBAAqB,CAAC,MACtB,6BAA8B,CAAC,MAC/B,wBAAyB,CAAC,OAC1B,uBAAwB,CAAC,OACzB,2BAA4B,CAAC,WAC7B,sBAAuB,CAAC,OACxB,sBAAuB,CAAC,OACxB,yBAA0B,CAAC,KAAM,MAAO,MACxC,uBAAwB,CAAC,WACzB,wBAAyB,CAAC,QAC1B,sBAAuB,CAAC,MAAO,OAC/B,0BAA2B,CAAC,OAC5B,sCAAuC,CAAC,OACxC,iCAAkC,CAAC,MACnC,sCAAuC,CAAC,OACxC,+BAAgC,CAAC,MACjC,gCAAiC,CAAC,OAClC,4BAA6B,CAAC,OAC9B,uBAAwB,CAAC,OACzB,sBAAuB,CAAC,OACxB,sBAAuB,CAAC,OACxB,kBAAmB,CAAC,OACpB,uBAAwB,CAAC,QACzB,8BAA+B,CAAC,OAChC,+BAAgC,CAAC,OACjC,8BAA+B,CAAC,OAChC,+BAAgC,CAAC,OACjC,kBAAmB,CAAC,OACpB,qCAAsC,CAAC,UACvC,0CAA2C,CAAC,UAC5C,sBAAuB,CAAC,OACxB,oBAAqB,CAAC,MAAO,SAC7B,uBAAwB,CAAC,MAAO,QAChC,2BAA4B,CAAC,MAC7B,iCAAkC,CAAC,OACnC,mBAAoB,CAAC,QACrB,uBAAwB,CAAC,SACzB,sBAAuB,CAAC,OACxB,uBAAwB,CAAC,QACzB,uBAAwB,CAAC,QACzB,sBAAuB,CAAC,MAAO,aAC/B,yBAA0B,CAAC,OAC3B,+BAAgC,CAAC,OACjC,2BAA4B,CAAC,QAC7B,mBAAoB,CAAC,QACrB,qBAAsB,CAAC,OACvB,qBAAsB,CAAC,OACvB,uBAAwB,CAAC,QACzB,2BAA4B,CAAC,YAC7B,uBAAwB,CAAC,QACzB,4BAA6B,CAAC,OAC9B,uBAAwB,CAAC,QACzB,wBAAyB,CAAC,QAAS,OACnC,kBAAmB,CAAC,MAAO,MAAO,MAAO,OACzC,sBAAuB,CAAC,OACxB,sBAAuB,CAAC,OACxB,wBAAyB,CAAC,OAC1B,uBAAwB,CAAC,QACzB,uBAAwB,CAAC,QACzB,qBAAsB,CAAC,OAAQ,QAAS,OAAQ,OAChD,mBAAoB,CAAC,QACrB,sBAAuB,CAAC,OACxB,kBAAmB,CAAC,OACpB,aAAc,CAAC,SACf,cAAe,CAAC,OAChB,cAAe,CAAC,KAAM,OACtB,aAAc,CAAC,MAAO,OAAQ,MAAO,OACrC,YAAa,CAAC,QACd,YAAa,CAAC,MAAO,QACrB,aAAc,CAAC,OAAQ,MAAO,OAAQ,MAAO,MAAO,OACpD,YAAa,CAAC,MAAO,MAAO,OAC5B,YAAa,CAAC,OACd,aAAc,CAAC,OACf,YAAa,CAAC,OACd,aAAc,CAAC,QACf,aAAc,CAAC,QACf,WAAY,CAAC,MACb,kBAAmB,CAAC,OACpB,WAAY,CAAC,OACb,WAAY,CAAC,OACb,YAAa,CAAC,QACd,aAAc,CAAC,SACf,aAAc,CAAC,OACf,aAAc,CAAC,QACf,YAAa,CAAC,OACd,YAAa,CAAC,OACd,kBAAmB,CAAC,QACpB,YAAa,CAAC,OACd,aAAc,CAAC,QACf,cAAe,CAAC,MAChB,YAAa,CAAC,OACd,aAAc,CAAC,QACf,sBAAuB,CAAC,SACxB,aAAc,CAAC,QACf,sBAAuB,CAAC,SACxB,YAAa,CAAC,OACd,YAAa,CAAC,OACd,YAAa,CAAC,MAAO,QACrB,aAAc,CAAC,OAAQ,MAAO,OAC9B,YAAa,CAAC,OACd,YAAa,CAAC,MAAO,OACrB,YAAa,CAAC,OACd,YAAa,CAAC,OACd,YAAa,CAAC,OACd,YAAa,CAAC,OACd,gBAAiB,CAAC,MAAO,QACzB,YAAa,CAAC,OACd,aAAc,CAAC,MAAO,QACtB,gBAAiB,CAAC,OAClB,aAAc,CAAC,QACf,YAAa,CAAC,OACd,mCAAoC,CAAC,4BACrC,iBAAkB,CAAC,SACnB,iCAAkC,CAAC,SACnC,0CAA2C,CAAC,SAC5C,yBAA0B,CAAC,SAC3B,iBAAkB,CAAC,MAAO,QAC1B,YAAa,CAAC,OACd,kBAAmB,CAAC,QACpB,oBAAqB,CAAC,OACtB,aAAc,CAAC,MAAO,QACtB,aAAc,CAAC,MAAO,OAAQ,QAC9B,YAAa,CAAC,OACd,aAAc,CAAC,MAAO,QACtB,mBAAoB,CAAC,QAAS,SAC9B,wBAAyB,CAAC,QAC1B,iBAAkB,CAAC,QAAS,SAC5B,gBAAiB,CAAC,MAAO,QACzB,iBAAkB,CAAC,QACnB,sBAAuB,CAAC,WAAY,YACpC,gBAAiB,CAAC,MAAO,OACzB,oBAAqB,CAAC,SAAU,aAChC,WAAY,CAAC,OACb,WAAY,CAAC,OACb,YAAa,CAAC,OAAQ,MAAO,SAC7B,YAAa,CAAC,QACd,WAAY,CAAC,OACb,YAAa,CAAC,QACd,gBAAiB,CAAC,WAAY,MAC9B,cAAe,CAAC,OAChB,WAAY,CAAC,OACb,UAAW,CAAC,MACZ,aAAc,CAAC,MAAO,OAAQ,OAAQ,MAAO,OAAQ,MAAO,KAAM,OAClE,gBAAiB,CAAC,OAClB,uBAAwB,MACxB,gCAAiC,MACjC,uBAAwB,MACxB,WAAY,CAAC,QACb,YAAa,CAAC,OAAQ,OACtB,YAAa,CAAC,QACd,YAAa,CAAC,OAAQ,OACtB,cAAe,CAAC,SAAU,QAC1B,4BAA6B,CAAC,OAC9B,aAAc,CAAC,IAAK,KAAM,OAAQ,MAAO,KAAM,MAC/C,cAAe,CAAC,OAChB,gBAAiB,CAAC,MAAO,OAAQ,QACjC,aAAc,CAAC,QAAS,OACxB,WAAY,CAAC,OACb,WAAY,CAAC,QACb,YAAa,CAAC,OAAQ,OACtB,aAAc,CAAC,MAAO,QACtB,cAAe,CAAC,OAChB,aAAc,CAAC,QACf,aAAc,CAAC,QACf,aAAc,CAAC,QACf,aAAc,CAAC,QACf,YAAa,CAAC,OAAQ,QACtB,YAAa,CAAC,MAAO,QACrB,aAAc,CAAC,MACf,YAAa,CAAC,MAAO,OAAQ,QAC7B,aAAc,CAAC,OAAQ,MAAO,MAAO,MAAO,OAC5C,YAAa,CAAC,OACd,kBAAmB,CAAC,KAAM,OAC1B,aAAc,CAAC,QACf,sBAAuB,CAAC,OACxB,oCAAqC,CAAC,OACtC,oCAAqC,CAAC,OACtC,kCAAmC,CAAC,OACpC,6BAA8B,CAAC,QAC/B,mCAAoC,CAAC,OACrC,oCAAqC,CAAC,OACtC,oCAAqC,CAAC,OACtC,2BAA4B,CAAC,OAC7B,0BAA2B,CAAC,MAAO,SACnC,8DAA+D,CAAC,OAChE,0CAA2C,CAAC,QAC5C,4BAA6B,CAAC,MAAO,QACrC,gCAAiC,CAAC,OAClC,6BAA8B,CAAC,QAC/B,8BAA+B,CAAC,SAChC,wCAAyC,CAAC,OAC1C,wCAAyC,CAAC,OAC1C,+BAAgC,CAAC,OACjC,uCAAwC,CAAC,OACzC,4BAA6B,CAAC,OAC9B,0CAA2C,CAAC,OAC5C,yDAA0D,CAAC,OAC3D,sDAAuD,CAAC,OACxD,uCAAwC,CAAC,OACzC,sCAAuC,CAAC,QACxC,gCAAiC,CAAC,UAAW,OAC7C,gCAAiC,CAAC,QAClC,gCAAiC,CAAC,WAClC,8BAA+B,CAAC,SAChC,4BAA6B,CAAC,OAC9B,+BAAgC,CAAC,UACjC,qCAAsC,CAAC,OACvC,wCAAyC,CAAC,QAC1C,6BAA8B,CAAC,OAC/B,oCAAqC,CAAC,OACtC,sBAAuB,CAAC,OACxB,kCAAmC,CAAC,OACpC,+BAAgC,CAAC,SACjC,uCAAwC,CAAC,OACzC,6BAA8B,CAAC,OAC/B,2CAA4C,CAAC,OAC7C,2BAA4B,CAAC,OAC7B,8BAA+B,CAAC,OAChC,gCAAiC,CAAC,MAAO,MAAO,MAAO,MAAO,OAC9D,+CAAgD,CAAC,UACjD,mDAAoD,CAAC,UACrD,8BAA+B,CAAC,OAChC,+BAAgC,CAAC,WACjC,8BAA+B,CAAC,OAChC,gCAAiC,CAAC,QAClC,yCAA0C,CAAC,QAC3C,wCAAyC,CAAC,QAC1C,yCAA0C,CAAC,QAC3C,yCAA0C,CAAC,QAC3C,wCAAyC,CAAC,OAC1C,4BAA6B,CAAC,OAC9B,2BAA4B,CAAC,OAC7B,2BAA4B,CAAC,OAC7B,6BAA8B,CAAC,SAC/B,uBAAwB,CAAC,QACzB,kCAAmC,CAAC,OACpC,4BAA6B,CAAC,MAAO,OAAQ,MAAO,QACpD,gCAAiC,CAAC,MAAO,QACzC,mCAAoC,CAAC,MAAO,QAC5C,2BAA4B,CAAC,MAAO,QACpC,yCAA0C,CAAC,aAC3C,sBAAuB,CAAC,OACxB,4BAA6B,CAAC,OAC9B,0BAA2B,CAAC,OAC5B,+BAAgC,CAAC,QACjC,8BAA+B,CAAC,QAChC,0BAA2B,CAAC,OAC5B,8BAA+B,CAAC,OAChC,0BAA2B,CAAC,OAC5B,+BAAgC,CAAC,OACjC,0BAA2B,CAAC,OAC5B,4BAA6B,CAAC,OAC9B,4BAA6B,CAAC,OAC9B,mCAAoC,CAAC,OACrC,6BAA8B,CAAC,OAC/B,4BAA6B,CAAC,OAC9B,+BAAgC,CAAC,MAAO,OACxC,8BAA+B,CAAC,OAChC,gCAAiC,CAAC,OAClC,sBAAuB,CAAC,OACxB,6BAA8B,CAAC,SAC/B,4BAA6B,CAAC,OAAQ,YACtC,6BAA8B,CAAC,OAC/B,gCAAiC,CAAC,OAClC,6BAA8B,CAAC,KAAM,QAAS,QAAS,QACvD,8BAA+B,CAAC,OAChC,8BAA+B,CAAC,OAChC,gCAAiC,CAAC,OAClC,gCAAiC,CAAC,OAClC,iCAAkC,CAAC,OACnC,iCAAkC,CAAC,OACnC,kCAAmC,CAAC,OACpC,mCAAoC,CAAC,OACrC,gCAAiC,CAAC,OAClC,sCAAuC,CAAC,OACxC,6CAA8C,CAAC,OAC/C,6BAA8B,CAAC,OAC/B,mCAAoC,CAAC,OACrC,gCAAiC,CAAC,OAClC,gCAAiC,CAAC,OAClC,oCAAqC,CAAC,MAAO,OAC7C,0BAA2B,CAAC,OAC5B,0BAA2B,CAAC,OAC5B,2BAA4B,CAAC,OAC7B,sBAAuB,CAAC,OACxB,uCAAwC,CAAC,QACzC,2CAA4C,CAAC,WAC7C,0CAA2C,CAAC,UAC5C,uCAAwC,CAAC,OACzC,mCAAoC,CAAC,OACrC,yBAA0B,CAAC,MAAO,OAClC,iCAAkC,CAAC,OACnC,8BAA+B,CAAC,OAChC,0CAA2C,CAAC,OAC5C,kCAAmC,CAAC,OACpC,sCAAuC,CAAC,OACxC,uCAAwC,CAAC,OACzC,+BAAgC,CAAC,OACjC,0BAA2B,CAAC,OAC5B,6CAA8C,CAAC,OAC/C,uBAAwB,CAAC,QACzB,oCAAqC,CAAC,OACtC,0BAA2B,CAAC,QAC5B,0BAA2B,CAAC,QAC5B,yBAA0B,CAAC,OAC3B,0BAA2B,CAAC,OAC5B,yBAA0B,CAAC,OAC3B,2BAA4B,CAAC,SAC7B,uCAAwC,CAAC,aACzC,8BAA+B,CAAC,OAChC,6BAA8B,CAAC,MAAO,UAAW,YACjD,wCAAyC,CAAC,OAC1C,uCAAwC,CAAC,MACzC,6BAA8B,CAAC,MAAO,OACtC,2BAA4B,CAAC,OAC7B,kCAAmC,CAAC,OACpC,kCAAmC,CAAC,OACpC,6BAA8B,CAAC,OAC/B,mCAAoC,CAAC,MAAO,OAC5C,2BAA4B,CAAC,OAC7B,2BAA4B,CAAC,OAC7B,2BAA4B,CAAC,OAC7B,wCAAyC,CAAC,aAC1C,0CAA2C,CAAC,OAC5C,yBAA0B,CAAC,OAC3B,2BAA4B,CAAC,OAC7B,sBAAuB,CAAC,OACxB,wCAAyC,CAAC,OAC1C,uBAAwB,CAAC,QACzB,qCAAsC,CAAC,QACvC,0BAA2B,CAAC,MAAO,OACnC,6BAA8B,CAAC,UAC/B,6BAA8B,CAAC,QAC/B,+BAAgC,CAAC,OACjC,4BAA6B,CAAC,OAC9B,8BAA+B,CAAC,OAChC,iCAAkC,CAAC,MAAO,OAC1C,8BAA+B,CAAC,OAChC,4BAA6B,CAAC,MAAO,OACrC,6BAA8B,CAAC,QAC/B,+BAAgC,CAAC,OACjC,wBAAyB,CAAC,MAAO,OACjC,uBAAwB,CAAC,MAAO,MAAO,MAAO,OAC9C,mCAAoC,CAAC,OACrC,8BAA+B,CAAC,UAChC,qDAAsD,CAAC,OACvD,0DAA2D,CAAC,OAC5D,8BAA+B,CAAC,OAChC,iCAAkC,CAAC,OACnC,kCAAmC,CAAC,OACpC,8BAA+B,CAAC,OAChC,kCAAmC,CAAC,OACpC,kCAAmC,CAAC,OACpC,gCAAiC,CAAC,OAClC,mCAAoC,CAAC,WACrC,sBAAuB,CAAC,OACxB,8BAA+B,CAAC,OAChC,qCAAsC,CAAC,SACvC,uBAAwB,CAAC,OACzB,uBAAwB,CAAC,OACzB,iCAAkC,CAAC,OACnC,iCAAkC,CAAC,OACnC,sBAAuB,CAAC,OACxB,6BAA8B,CAAC,OAC/B,6BAA8B,CAAC,OAC/B,6BAA8B,CAAC,OAC/B,6BAA8B,CAAC,OAC/B,6BAA8B,CAAC,OAC/B,6BAA8B,CAAC,OAC/B,6BAA8B,CAAC,OAC/B,qCAAsC,CAAC,OACvC,qCAAsC,CAAC,OACvC,kCAAmC,CAAC,OACpC,8BAA+B,CAAC,OAChC,oCAAqC,CAAC,OACtC,2BAA4B,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,OAChE,iDAAkD,CAAC,QACnD,wDAAyD,CAAC,QAC1D,iDAAkD,CAAC,QACnD,oDAAqD,CAAC,QACtD,8BAA+B,CAAC,OAChC,yBAA0B,CAAC,OAC3B,yBAA0B,CAAC,OAC3B,iCAAkC,CAAC,QACnC,6BAA8B,CAAC,OAC/B,gCAAiC,CAAC,OAClC,6BAA8B,CAAC,QAC/B,gCAAiC,CAAC,MAAO,MAAO,OAChD,sDAAuD,CAAC,QACxD,6DAA8D,CAAC,QAC/D,sDAAuD,CAAC,QACxD,0DAA2D,CAAC,QAC5D,yDAA0D,CAAC,QAC3D,6BAA8B,CAAC,MAAO,OACtC,mDAAoD,CAAC,QACrD,mDAAoD,CAAC,QACrD,2BAA4B,CAAC,MAAO,MAAO,MAAO,OAClD,yBAA0B,CAAC,OAC3B,iCAAkC,CAAC,OACnC,uBAAwB,CAAC,QACzB,2BAA4B,CAAC,OAC7B,8BAA+B,CAAC,QAChC,wBAAyB,CAAC,UAC1B,oCAAqC,CAAC,OACtC,uBAAwB,CAAC,MAAO,QAChC,qCAAsC,CAAC,OACvC,kCAAmC,CAAC,OACpC,+BAAgC,CAAC,OACjC,oCAAqC,CAAC,SACtC,+CAAgD,CAAC,UACjD,qCAAsC,CAAC,QACvC,sCAAuC,CAAC,QACxC,+BAAgC,CAAC,OACjC,+BAAgC,CAAC,OACjC,+BAAgC,CAAC,OACjC,2CAA4C,CAAC,OAC7C,oDAAqD,CAAC,OACtD,8CAA+C,CAAC,OAChD,6CAA8C,CAAC,OAC/C,sDAAuD,CAAC,QACxD,8CAA+C,CAAC,OAChD,uDAAwD,CAAC,OACzD,2CAA4C,CAAC,OAC7C,oDAAqD,CAAC,OACtD,kDAAmD,CAAC,OACpD,2DAA4D,CAAC,OAC7D,iDAAkD,CAAC,OACnD,0DAA2D,CAAC,OAC5D,0CAA2C,CAAC,OAC5C,iDAAkD,CAAC,OACnD,mDAAoD,CAAC,OACrD,8CAA+C,CAAC,OAChD,6BAA8B,CAAC,MAC/B,8BAA+B,CAAC,OAChC,0CAA2C,CAAC,OAC5C,4EAA6E,CAAC,QAC9E,qEAAsE,CAAC,QACvE,yEAA0E,CAAC,QAC3E,wEAAyE,CAAC,QAC1E,oEAAqE,CAAC,QACtE,uEAAwE,CAAC,QACzE,0EAA2E,CAAC,QAC5E,0EAA2E,CAAC,QAC5E,yCAA0C,CAAC,OAC3C,0BAA2B,CAAC,MAC5B,iCAAkC,CAAC,OACnC,uBAAwB,CAAC,MAAO,MAAO,QACvC,4BAA6B,CAAC,OAC9B,4BAA6B,CAAC,OAC9B,4BAA6B,CAAC,OAC9B,yBAA0B,CAAC,QAC3B,6BAA8B,CAAC,MAC/B,8BAA+B,CAAC,OAChC,gCAAiC,CAAC,OAClC,qCAAsC,CAAC,OACvC,mCAAoC,CAAC,OACrC,wCAAyC,CAAC,OAC1C,4BAA6B,CAAC,QAC9B,oCAAqC,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,OACzE,8BAA+B,CAAC,OAChC,qCAAsC,CAAC,OACvC,yCAA0C,CAAC,YAC3C,iCAAkC,CAAC,cACnC,0BAA2B,CAAC,OAC5B,+BAAgC,CAAC,MACjC,mCAAoC,CAAC,QACrC,qCAAsC,CAAC,UACvC,uCAAwC,CAAC,MACzC,0BAA2B,CAAC,OAC5B,uBAAwB,CAAC,QACzB,uBAAwB,CAAC,QACzB,uBAAwB,CAAC,QACzB,0CAA2C,CAAC,OAC5C,8CAA+C,CAAC,OAChD,6CAA8C,CAAC,OAC/C,yCAA0C,CAAC,OAC3C,qCAAsC,CAAC,MAAO,QAC9C,uBAAwB,CAAC,OACzB,gCAAiC,CAAC,WAClC,kCAAmC,CAAC,OAAQ,QAC5C,+BAAgC,CAAC,OACjC,+BAAgC,CAAC,OACjC,oCAAqC,CAAC,OACtC,oCAAqC,CAAC,OACtC,uCAAwC,CAAC,OACzC,oCAAqC,CAAC,OACtC,sCAAuC,CAAC,MAAO,OAC/C,6CAA8C,CAAC,OAC/C,oCAAqC,CAAC,SACtC,sCAAuC,CAAC,MACxC,+BAAgC,CAAC,QACjC,+BAAgC,CAAC,OACjC,wCAAyC,CAAC,OAC1C,+BAAgC,CAAC,OACjC,wCAAyC,CAAC,OAC1C,kCAAmC,CAAC,OACpC,2CAA4C,CAAC,OAC7C,+BAAgC,CAAC,OACjC,iCAAkC,CAAC,OACnC,wCAAyC,CAAC,OAC1C,0CAA2C,CAAC,OAC5C,+BAAgC,CAAC,MAAO,QACxC,sBAAuB,CAAC,OACxB,kCAAmC,CAAC,MAAO,QAC3C,6BAA8B,CAAC,OAC/B,kCAAmC,CAAC,OACpC,gCAAiC,CAAC,OAClC,4CAA6C,CAAC,OAC9C,+BAAgC,CAAC,OAAQ,MAAO,OAChD,iCAAkC,CAAC,OACnC,2BAA4B,CAAC,OAC7B,+BAAgC,CAAC,OACjC,0BAA2B,CAAC,OAC5B,uBAAwB,CAAC,MAAO,QAChC,4BAA6B,CAAC,OAC9B,yBAA0B,CAAC,OAC3B,wBAAyB,CAAC,YAC1B,2BAA4B,CAAC,QAC7B,sBAAuB,CAAC,OACxB,wBAAyB,CAAC,MAAO,MAAO,MAAO,OAC/C,4BAA6B,CAAC,OAC9B,sBAAuB,CAAC,OACxB,4BAA6B,CAAC,SAC9B,2BAA4B,CAAC,QAC7B,iCAAkC,CAAC,SACnC,2BAA4B,CAAC,OAC7B,iCAAkC,CAAC,OACnC,8BAA+B,CAAC,OAChC,sBAAuB,CAAC,OACxB,yBAA0B,CAAC,OAC3B,uBAAwB,CAAC,OACzB,uBAAwB,CAAC,QACzB,gCAAiC,CAAC,OAClC,mCAAoC,CAAC,OACrC,kCAAmC,CAAC,OACpC,yCAA0C,CAAC,OAC3C,oDAAqD,CAAC,UACtD,oCAAqC,CAAC,OACtC,qCAAsC,CAAC,OACvC,0CAA2C,CAAC,OAC5C,sBAAuB,CAAC,MAAO,QAC/B,iCAAkC,CAAC,OACnC,8BAA+B,CAAC,MAChC,wBAAyB,CAAC,OAC1B,+BAAgC,CAAC,OACjC,gCAAiC,CAAC,QAClC,oBAAqB,CAAC,OACtB,+BAAgC,CAAC,MAAO,MAAO,MAAO,OACtD,+BAAgC,CAAC,OACjC,+BAAgC,CAAC,OACjC,sBAAuB,CAAC,SACxB,qBAAsB,CAAC,SACvB,2BAA4B,CAAC,WAC7B,sBAAuB,CAAC,MAAO,SAC/B,qBAAsB,CAAC,MACvB,sBAAuB,CAAC,MAAO,OAC/B,oBAAqB,CAAC,MAAO,MAAO,MAAO,MAAO,OAClD,uBAAwB,CAAC,OACzB,+BAAgC,CAAC,OACjC,qBAAsB,CAAC,QACvB,0BAA2B,CAAC,OAC5B,iCAAkC,CAAC,OACnC,sBAAuB,CAAC,OACxB,2BAA4B,CAAC,OAC7B,qBAAsB,CAAC,QACvB,oBAAqB,CAAC,OACtB,+BAAgC,CAAC,OAAQ,QACzC,+BAAgC,CAAC,OACjC,yBAA0B,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OACnF,qBAAsB,CAAC,OACvB,2BAA4B,CAAC,OAC7B,2BAA4B,CAAC,OAC7B,gCAAiC,CAAC,OAClC,oBAAqB,CAAC,OACtB,sBAAuB,CAAC,OACxB,oBAAqB,CAAC,OACtB,yBAA0B,CAAC,OAC3B,iCAAkC,CAAC,OACnC,+BAAgC,CAAC,OACjC,yBAA0B,CAAC,OAC3B,yBAA0B,CAAC,OAC3B,2BAA4B,CAAC,MAAO,MAAO,MAAO,OAClD,wBAAyB,CAAC,OAC1B,6BAA8B,CAAC,OAC/B,+BAAgC,CAAC,OACjC,sBAAuB,CAAC,OACxB,yBAA0B,CAAC,YAC3B,2BAA4B,CAAC,UAC7B,qBAAsB,CAAC,QACvB,oBAAqB,CAAC,OACtB,0BAA2B,CAAC,OAC5B,qCAAsC,CAAC,WACvC,8BAA+B,CAAC,QAChC,kCAAmC,CAAC,WACpC,+BAAgC,CAAC,QACjC,sBAAuB,CAAC,SACxB,6BAA8B,CAAC,QAC/B,+BAAgC,CAAC,MAAO,OACxC,yBAA0B,CAAC,OAC3B,oBAAqB,CAAC,OACtB,iCAAkC,CAAC,MAAO,QAC1C,+BAAgC,CAAC,eACjC,4BAA6B,CAAC,OAC9B,uBAAwB,CAAC,OACzB,uBAAwB,CAAC,OACzB,wBAAyB,CAAC,QAC1B,yBAA0B,CAAC,OAC3B,yBAA0B,CAAC,OAC3B,2BAA4B,CAAC,OAC7B,uBAAwB,CAAC,OACzB,8BAA+B,CAAC,QAChC,2BAA4B,CAAC,OAAQ,OAAQ,MAAO,MAAO,QAC3D,4BAA6B,CAAC,MAAO,MAAO,OAC5C,2BAA4B,CAAC,OAAQ,OAAQ,OAAQ,OACrD,wBAAyB,CAAC,OAC1B,4BAA6B,CAAC,OAC9B,2BAA4B,CAAC,OAC7B,2BAA4B,CAAC,OAC7B,wBAAyB,CAAC,OAC1B,uBAAwB,CAAC,KAAM,OAC/B,oCAAqC,CAAC,OACtC,oBAAqB,CAAC,OACtB,qBAAsB,CAAC,KAAM,MAC7B,sBAAuB,CAAC,OAAQ,QAChC,uBAAwB,CAAC,MAAO,OAChC,mCAAoC,CAAC,MAAO,OAC5C,kCAAmC,CAAC,OACpC,+BAAgC,CAAC,OACjC,uCAAwC,CAAC,OACzC,sCAAuC,CAAC,OACxC,oBAAqB,CAAC,OACtB,mBAAoB,CAAC,MACrB,qBAAsB,CAAC,QACvB,gCAAiC,CAAC,OAClC,gCAAiC,CAAC,OAClC,oBAAqB,CAAC,OACtB,wBAAyB,CAAC,OAC1B,yBAA0B,CAAC,QAC3B,uBAAwB,CAAC,OACzB,wBAAyB,CAAC,WAC1B,uBAAwB,CAAC,UACzB,2BAA4B,CAAC,MAC7B,qBAAsB,CAAC,OACvB,oBAAqB,CAAC,OACtB,oBAAqB,CAAC,MAAO,MAC7B,oBAAqB,CAAC,OACtB,wBAAyB,CAAC,OAC1B,wBAAyB,CAAC,UAAW,QACrC,qBAAsB,CAAC,OACvB,sBAAuB,CAAC,SACxB,+BAAgC,CAAC,OACjC,+BAAgC,CAAC,OACjC,+BAAgC,CAAC,OACjC,gCAAiC,CAAC,QAClC,wCAAyC,CAAC,gBAC1C,+BAAgC,CAAC,OACjC,+BAAgC,CAAC,OACjC,gCAAiC,CAAC,QAClC,4BAA6B,CAAC,OAC9B,sCAAuC,CAAC,UACxC,6BAA8B,CAAC,MAAO,MAAO,OAC7C,qBAAsB,CAAC,OACvB,0BAA2B,CAAC,OAC5B,0BAA2B,CAAC,OAC5B,mBAAoB,CAAC,MACrB,yBAA0B,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MACrE,uBAAwB,CAAC,MAAO,QAChC,0BAA2B,CAAC,OAC5B,gBAAiB,CAAC,OAClB,gBAAiB,CAAC,OAClB,mBAAoB,CAAC,SACrB,yBAA0B,CAAC,OAC3B,mCAAoC,CAAC,OACrC,4BAA6B,CAAC,aAC9B,4BAA6B,CAAC,aAC9B,4BAA6B,CAAC,aAC9B,gBAAiB,CAAC,OAClB,cAAe,CAAC,OAChB,eAAgB,CAAC,MAAO,OAAQ,QAChC,cAAe,CAAC,OAChB,eAAgB,CAAC,QACjB,cAAe,CAAC,QAChB,mBAAoB,CAAC,OACrB,kBAAmB,CAAC,OACpB,iBAAkB,CAAC,OACnB,iBAAkB,CAAC,OACnB,uBAAwB,CAAC,MAAO,MAChC,8BAA+B,CAAC,OAChC,oBAAqB,CAAC,OACtB,cAAe,CAAC,QAChB,iBAAkB,CAAC,OACnB,iBAAkB,CAAC,OACnB,kBAAmB,CAAC,QACpB,iBAAkB,CAAC,OACnB,kBAAmB,CAAC,QACpB,iBAAkB,CAAC,OACnB,iBAAkB,CAAC,QACnB,gBAAiB,CAAC,OAClB,4BAA6B,CAAC,OAC9B,mCAAoC,CAAC,OACrC,yBAA0B,CAAC,MAAO,OAAQ,MAAO,QACjD,iBAAkB,CAAC,OAAQ,OAC3B,yBAA0B,CAAC,QAC3B,gBAAiB,CAAC,OAClB,gBAAiB,CAAC,OAClB,yBAA0B,CAAC,OAC3B,gBAAiB,CAAC,OAClB,gBAAiB,CAAC,OAClB,iCAAkC,CAAC,OACnC,iCAAkC,CAAC,OACnC,2BAA4B,CAAC,OAC7B,oBAAqB,CAAC,OACtB,qBAAsB,CAAC,OACvB,oBAAqB,CAAC,OACtB,wBAAyB,CAAC,OAC1B,iCAAkC,CAAC,OACnC,qBAAsB,CAAC,QACvB,iBAAkB,CAAC,OACnB,uBAAwB,CAAC,OACzB,cAAe,CAAC,OAChB,qBAAsB,CAAC,OACvB,cAAe,CAAC,OAChB,mBAAoB,CAAC,KAAM,MAAO,MAAO,MAAO,OAChD,eAAgB,CAAC,QACjB,cAAe,CAAC,OAChB,sBAAuB,CAAC,OACxB,iBAAkB,CAAC,QACnB,cAAe,CAAC,QAChB,eAAgB,CAAC,MAAO,OACxB,0BAA2B,CAAC,OAC5B,0BAA2B,CAAC,OAC5B,2BAA4B,CAAC,OAC7B,0BAA2B,CAAC,OAC5B,cAAe,CAAC,OAChB,cAAe,CAAC,OAChB,kBAAmB,CAAC,OACpB,kBAAmB,CAAC,OACpB,sBAAuB,CAAC,OACxB,sBAAuB,CAAC,OACxB,wBAAyB,CAAC,OAC1B,gBAAiB,CAAC,OAClB,gBAAiB,CAAC,OAClB,gBAAiB,CAAC,OAClB,gBAAiB,CAAC,OAClB,oBAAqB,CAAC,QACtB,sCAAuC,CAAC,OACxC,oCAAqC,CAAC,OACtC,qBAAsB,CAAC,QACvB,sCAAuC,CAAC,OACxC,gBAAiB,CAAC,OAClB,qBAAsB,CAAC,OACvB,gBAAiB,CAAC,QAClB,sBAAuB,CAAC,SACxB,sBAAuB,CAAC,SACxB,sBAAuB,CAAC,SACxB,wBAAyB,CAAC,OAC1B,eAAgB,CAAC,OACjB,wBAAyB,CAAC,OAC1B,oBAAqB,CAAC,MACtB,qBAAsB,CAAC,QACvB,qBAAsB,CAAC,QACvB,mCAAoC,CAAC,OACrC,mBAAoB,CAAC,OACrB,yBAA0B,CAAC,QAC3B,aAAc,CAAC,IAAK,OACpB,WAAY,CAAC,IAAK,KAAM,MAAO,MAAO,IAAK,KAAM,OACjD,mBAAoB,CAAC,OACrB,iBAAkB,CAAC,IAAK,MAAO,MAAO,OACtC,6BAA8B,CAAC,OAC/B,qBAAsB,CAAC,QACvB,aAAc,CAAC,OACf,kBAAmB,CAAC,OACpB,aAAc,CAAC,OACf,cAAe,CAAC,QAChB,aAAc,CAAC,QACf,gBAAiB,CAAC,IAAK,OACvB,oBAAqB,CAAC,OACtB,cAAe,CAAC,QAChB,cAAe,CAAC,QAChB,gBAAiB,CAAC,OAClB,aAAc,CAAC,OACf,kBAAmB,CAAC,OACpB,kBAAmB,CAAC,MACpB,mBAAoB,CAAC,OACrB,eAAgB,CAAC,OACjB,oBAAqB,CAAC,MAAO,QAC7B,wBAAyB,CAAC,MAAO,QACjC,oBAAqB,CAAC,MAAO,QAC7B,oBAAqB,CAAC,MAAO,QAC7B,uBAAwB,CAAC,MAAO,QAChC,qBAAsB,CAAC,OACvB,gBAAiB,CAAC,OAClB,oBAAqB,CAAC,MAAO,OAC7B,mCAAoC,CAAC,OACrC,qBAAsB,CAAC,MAAO,QAC9B,iBAAkB,CAAC,OACnB,cAAe,CAAC,OAChB,cAAe,CAAC,OAChB,cAAe,CAAC,OAChB,cAAe,CAAC,OAChB,mBAAoB,CAAC,MAAO,OAAQ,OACpC,cAAe,CAAC,OAChB,iBAAkB,CAAC,MAAO,OAC1B,iBAAkB,CAAC,OACnB,gBAAiB,CAAC,MAClB,iBAAkB,CAAC,OACnB,iBAAkB,CAAC,OACnB,iBAAkB,CAAC,OACnB,kBAAmB,CAAC,OACpB,oBAAqB,CAAC,SACtB,cAAe,CAAC,OAChB,0BAA2B,CAAC,OAC5B,oBAAqB,MACrB,mBAAoB,KACpB,2BAA4B,UAC5B,wCAAyC,MACzC,wBAAyB,OACzB,yBAA0B,QAC1B,yBAA0B,CAAC,MAAO,OAClC,gBAAiB,MACjB,4BAA6B,OAC7B,yBAA0B,MAC1B,gCAAiC,MACjC,kCAAmC,MACnC,6BAA8B,OAC9B,wBAAyB,UACzB,2BAA4B,KAC5B,6BAA8B,MAC9B,0BAA2B,uCC75BzBC,EAAe,6VAORC,EAAM,SAAUn4D,GAEvB,OAAOmB,KAAK0hB,EAAAA,YAAqBpR,KAAKzR,GAAAA,GAAM,EAOrCo4D,EAAM,SAAUp4D,EAAMq4D,QAAAA,IACzBA,IAAsBA,GAAAA,GAC1B,IAAID,EAAMj3D,KAAKnB,GACf,OAAIq4D,EACOD,EAAI/oD,QAAQ,MAAO,KAAKA,QAAQ,MAAO,KAE3C+oD,CAAAA,EAKAE,EAAa,WACpB,MAAO,aAMAC,EAAW,WAAc,OAAOvnD,WAAaA,UAAUC,WAAainD,EAAatnD,KAAKI,UAAUC,UAAAA,EAIhGunD,EAAa,WAAc,OAAOxnD,WAAaA,UAAUC,WAAa,WAAWL,KAAKI,UAAUC,UAAAA,EFzB9FwnD,EAAgB,SAACC,EAAkBC,GAC9C,IAAMC,EAASF,EAAQG,KAAKC,OAE5B,GAAIH,IAAsC,IAA3BA,EAAOl2D,QAAQ,SAA4C,IAA3Bk2D,EAAOl2D,QAAQ,SAAgB,CAC5E,IAAKi2D,EAAQK,OACX,MAAM,IAAI/+D,MAAM,sDAIlB,OAAU4+D,EAAM,IAAIF,EAAQK,MAG9B,QAAOH,CAAAA,EAUII,EAAc,SAACH,EAAaI,GACvC,IAAKA,EACH,OAAOJ,EAGT,IAAMK,EAAQ,yCAMd,OAJAhvD,OAAOsC,KAAKqsD,GAAMn1D,SAAQ,YACxBm1D,EAAKl1D,GAAOk1D,EAAKl1D,GAAK0L,QAAQ6pD,EAAOD,EAAAA,IAGhCJ,CAAAA,EASIvB,EAAc,SAAC7sD,GAC1B,IAAM0uD,EAASjvD,OAAH2M,EAAAA,EAAG3M,CAAH,GAAQO,GAEpB,OADAP,OAAOsC,KAAK2sD,GAAQz1D,SAAQ,YAAK,OAACy1D,EAAOC,IAA2B,kBAAdD,EAAOC,WAA2BD,EAAvDriD,EAAA,IAC1BqiD,CAAAA,EAOIE,EAAa,WACxB,IAAMC,EAAOhgE,KAAKqX,MAElB,OADAsa,EAAOquC,IAASruC,EAAOquC,EAAO,EAAIA,CAAAA,EASvBC,EAAW,SAACC,GACvB,YAAO,IADgBA,IAAAA,EAAAA,IAChB,IAAIzwD,MAAMywD,GAAK7pD,OAAON,QAAQ,UAAU,WAAM,OAAkB,GAAhBzC,KAAK8jB,SAAiB,GAAGvjB,SAAS,IAAIP,KAAK8jB,SAAW,GAAM,WAA9D,qBAS1C0oC,EAAc,SAACzhD,EAA2BpQ,GACrD,IAAInD,EAAOqyD,IAAS9+C,GAIpB,GAAIvT,IAAkD,IAF5B,CAAC,aAAc,2BAA4B,mBAAoB,oBAAqB,mBAEhF3B,QAAQ2B,EAAKq1D,MACzC,OAAOr1D,EAAKq1D,KAGd,GAAIlyD,GAAQA,EAAK9E,QAAQ,MAAQ,EAAG,CAClC,IAAM+D,EAAOkzD,EAAgBnyD,GAE7B,GAAIf,EACF,OAAOA,CAIX,KACE,GAAImzD,EAAOhiD,GACT,MAAO,YAUX,CARE,MAAOhJ,GAEPmF,QAAQC,KAAK,mFAMf,QAAI3P,EACKA,EAAKq1D,KAGP,4BASIC,EAAkB,SAACE,GAC9B,GAAKA,GAAsB,IAAfA,EAAIp/D,OAAhB,CAIA,GAA8B,IAA1Bo/D,EAAIr/D,MAAM,KAAKC,OACjB,OAAOo/D,EAGLA,EAAIn3D,QAAQ,MAAQ,IACtBm3D,EAAMA,EAAIr/D,MAAM,KAAK8Y,OAGvBumD,EAAMA,EAAIC,oBAKV,IAHA,IAAMrtD,EAAOtC,OAAOsC,KAAKyrD,GACnB6B,EAASttD,EAAKhS,OAEXgM,EAAI,EAAGA,EAAIszD,EAAQtzD,IAC1B,GAAIyxD,EAAczrD,EAAKhG,IAAI/D,QAAQm3D,IAAQ,EACzC,OAAOptD,EAAKhG,EAAAA,CAAAA,EAyBLuzD,EAAe,SAACxyD,EAAcsD,GACzC,QAAI,IADqCA,IAAAA,GAAAA,GAClB,kBAAZA,IAA0BA,EACnC,OAAOtD,EAGT,IAAIqyD,EAEEI,EAAiC,kBAAZnvD,GAAyBA,EAAQmvD,YAAcnvD,EAAQmvD,YAAc,IAC1FC,EAA6B,kBAAZpvD,GAAyBA,EAAQovD,QAAUpvD,EAAQovD,QAAU,CAAC,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAEjK,IAAK1yD,GAAwB,IAAhBA,EAAK/M,OAChB,MAAO,YAGT,IAAM0/D,EAAY3yD,EAAKhN,MAAM,KAM7B,OAJI2/D,EAAU1/D,OAAS,IACrBo/D,EAAMM,EAAU7mD,OAGR6mD,EACPvqD,KAAK,KACLpV,MAAM,IACN4e,KAAI,YAAQ,OAAC8gD,EAAQx3D,QAAQ03D,IAAS,EAAIH,EAA9BljD,CAAA,IACZnH,KAAK,KAAMiqD,EAAM,IAAMA,EAAM,KASrBQ,EAAe,SAACC,EAAUC,GACrC,OAAKA,GAA4C,IAA1BA,EAAe9/D,OAID,IAAjC0P,OAAOsC,KAAK6tD,GAAU7/D,OACjB6/D,EAGFnwD,OAAOsC,KAAK6tD,GAChBvkD,QAAO,YAAK,SAAerT,QAAQsU,IAAvB,KACZue,QAAO,SAAC7qB,EAAK9G,SAAQ,kCAAM8G,KAAGjE,EAAAA,CAAAA,GAAG7C,GAAM02D,EAAS12D,GAAI6C,GAAA,GAAK,CAAC,GATpD6zD,CAAAA,EAiBEE,EAAmB,SAAnBA,EAAoB9vD,GAC/B,OAAKA,GAAmC,IAA5BP,OAAOsC,KAAK/B,GAAKjQ,QAI7B0P,OAAOsC,KAAK/B,GAAK/G,SAAQ,YACD,mBAAX+G,EAAI2uD,KACb3uD,EAAI2uD,QAAAA,GAGF3uD,EAAI2uD,KAAOlvD,OAAOO,EAAI2uD,MACxB3uD,EAAI2uD,GAAKmB,EAAiB9vD,EAAI2uD,IAAAA,IAI3B3uD,GAbEA,CAAAA,CAAAA,EAAAA,SAAAA,EAAAA,EAAAA,2EG5NC+vD,UAAZ,SAAYA,GACV1jD,EAAAA,QAAAA,UACAA,EAAAA,QAAAA,UACAA,EAAAA,QAAAA,WACAA,EAAAA,OAAAA,SACAA,EAAAA,QAAAA,UACAA,EAAAA,MAAAA,QACAA,EAAAA,SAAAA,UAPF,EAAY0jD,IAAAA,EAAkB,KAiB9B,kBAoBE,WAAY5zD,EAAiBlH,EAAagC,EAAuB+H,OAcjDsC,EAAe5G,EACzBwxD,qBAfN9zC,EAEE/L,EAAAA,KAAAA,KAAMlQ,IAAQ,YAEdic,EAAKnjB,OAASA,EACdmjB,EAAKnhB,SAAWA,EAChBmhB,EAAKpZ,KAAOA,EAQEsC,EAJL8W,EAIoB1d,EAJdiC,EAAWjC,WAKtBwxD,EAA4BzsD,OAAeysD,gBAEhCA,EAAe5qD,EAAQ5G,GAAe4G,EAAe6qD,UAAYzxD,EAbhF,CAQJ,QAhCoC+E,OAAAA,EAAAA,EAAAA,CAAAA,EAAAA,GAgCpCyE,CAhCA,EAAoC3U,MAAAA,EAAAA,SAAAA,EAAAA,EAAAA,oPCnCpC6E,CAAAA,EAAQ47D,IA2KR,WAAsB,MAGrB,MAA0B,YAAnB,oBAAO3mD,QAAP,cAAOA,WACbA,QAAQ2mD,MACR3jD,EAAAA,SAAQ2jD,IAARzxD,MAAA8N,EAAA3H,UAAA,EA/KFtQ,EAAQ67D,WAiIR,SAAoBxrD,GAQnB,GAPAA,EAAK,IAAM/I,KAAKw0D,UAAY,KAAO,IAClCx0D,KAAKy0D,WACJz0D,KAAKw0D,UAAY,MAAQ,KAC1BzrD,EAAK,IACJ/I,KAAKw0D,UAAY,MAAQ,KAC1B,IAAM/7D,EAAOC,QAAQg8D,SAAS10D,KAAK20D,MAE/B30D,KAAKw0D,UAAV,CAIA,IAAMvzD,EAAI,UAAYjB,KAAK40D,MAC3B7rD,EAAKhI,OAAO,EAAG,EAAGE,EAAG,kBAKrB,IAAIH,EAAQ,EACR+zD,EAAQ,EACZ9rD,EAAK,GAAGG,QAAQ,eAAe,YAChB,OAAVkB,IAGJtJ,IACc,OAAVsJ,IAGHyqD,EAAQ/zD,GAAAA,IAIViI,EAAKhI,OAAO8zD,EAAO,EAAG5zD,EAvBf,CAuBeA,EAhKvBvI,EAAQo8D,KAuLR,SAAcC,GACb,IACKA,EACHr8D,EAAQs8D,QAAQC,QAAQ,QAASF,GAEjCr8D,EAAQs8D,QAAQE,WAAW,QAEpBhyD,CAAP,MAAOA,GAAAA,CAAAA,EA7LVxK,EAAQ2uB,KAyMR,WACC,IAAI3W,EACJ,IACCA,EAAIhY,EAAQs8D,QAAQG,QAAQ,QACpBjyD,CAAP,MAAOA,GAAAA,CAUT,OAJKwN,QAAAA,IAAY3J,GAA2B,QAASA,IACpD2J,EAAI3J,EAAQgB,IAAIqtD,OAGV1kD,CAAAA,EAtNRhY,EAAQ87D,UA+FR,WAIC,QAAsB,oBAAX7oD,SAA0BA,OAAO5E,SAAoC,aAAxB4E,OAAO5E,QAAQ9I,OAAuB0N,OAAO5E,QAAQsuD,UAKpF,oBAAdxqD,YAA6BA,UAAUC,YAAaD,UAAUC,UAAUrN,cAAc2M,MAAM,4BAM3E,oBAAbD,UAA4BA,SAASo4C,iBAAmBp4C,SAASo4C,gBAAgBniC,OAASjW,SAASo4C,gBAAgBniC,MAAMk1C,kBAEpH,oBAAX3pD,QAA0BA,OAAOgC,UAAYhC,OAAOgC,QAAQ4nD,SAAY5pD,OAAOgC,QAAQ6nD,WAAa7pD,OAAOgC,QAAQ8nD,QAGrG,oBAAd5qD,WAA6BA,UAAUC,WAAaD,UAAUC,UAAUrN,cAAc2M,MAAM,mBAAqBzW,SAAS0W,OAAOqrD,GAAI,KAAO,IAE9H,oBAAd7qD,WAA6BA,UAAUC,WAAaD,UAAUC,UAAUrN,cAAc2M,MAAM,wBApHtG1R,EAAQs8D,QAmOR,WACC,IAGC,OAAOW,YACCzyD,CAAP,MAAOA,GAAAA,CAxOQ0yD,CAmOlB,GA7NAl9D,EAAQm9D,OAAS,CAChB,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WA4JDp9D,EAAOC,QAAUE,EAAQ,GAARA,CAAoBF,GAEhBD,EAAOC,QAArBo9D,WAMI7B,EAAI,SAAU5qD,GACxB,IACC,OAAOhB,KAAKI,UAAUY,EAEwB5I,CAD7C,MAAOyC,GACR,MAAO,+BAAiCA,EAAMzC,OAAAA,CAAAA,CAAAA,GAAAA,KAAAA,KAAAA,EAAAA,0PC1P1C,UAAUs1D,EAAQC,GACtB,OAAQjyD,OAAO/E,UAAUgI,SAAS9F,KAAK80D,IACrC,IAAK,iBAEL,IAAK,qBAEL,IAAK,wBACH,OAAO,EACT,QACE,OAAOC,EAAaD,EAAKniE,OA4CzB,UAAUuU,EAAS4tD,GACvB,MAA+C,oBAAxCjyD,OAAO/E,UAAUgI,SAAS9F,KAAK80D,EAUlC,UAAUE,EAAYF,GAC1B,OAAe,OAARA,GAAgC,WAAf31D,EAAO21D,IAAmC,mBAARA,CAUtD,UAAUnwD,EAAcmwD,GAC5B,MAA+C,oBAAxCjyD,OAAO/E,UAAUgI,SAAS9F,KAAK80D,EAUlC,UAAUG,EAAQH,GACtB,MAAwB,oBAAVI,OAAyBH,EAAaD,EAAKI,MAUrD,UAAUC,EAAUL,GACxB,MAA0B,oBAAZM,SAA2BL,EAAaD,EAAKM,QAUvD,UAAUC,EAASP,GACvB,MAA+C,oBAAxCjyD,OAAO/E,UAAUgI,SAAS9F,KAAK80D,EAOlC,UAAUQ,EAAWR,GAEzB,OAAOS,QAAQT,GAAOA,EAAI71D,MAA4B,mBAAb61D,EAAI71D,KAUzC,UAAUu2D,EAAiBV,GAC/B,OAAOnwD,EAAcmwD,IAAQ,gBAAiBA,GAAO,mBAAoBA,GAAO,oBAAqBA,CAUjG,UAAUC,EAAaD,EAAUtvC,GACrC,IACE,OAAOsvC,aAAetvC,CAEf,CADP,MAAOiwC,GACP,OAAO,0pBCpIJ,IAAIxvD,EAAW,WAAc,OAAO,GAOhCC,EAAW,WAAc,OAAO,uOCNpC,KAQMF,EAAgB,SAACjP,GAAqB,+BAAA8L,OAAO/E,UAAUgI,SAAS9F,KAAKjJ,EAAAA,EAyBrE2P,EAAW,SAAC3P,GAAa,OAAQ,OAARA,GAAA,WAAgBwlB,EAAOxlB,EAAAA,EAgBhDoP,EAAS,SAACpP,GAAc,wBAAA8L,OAAO/E,UAAUgI,SAAS9F,KAAKjJ,EAAAA,EAQvDqP,EAAS,SAACrP,GAAc,wBAAA8L,OAAO/E,UAAUgI,SAAS9F,KAAKjJ,EAAAA,EAQvDwP,EAAoB,SAACxP,GAAyB,MAA2B,oBAApB2+D,iBAAmC3+D,aAA1C2+D,eAAA,EAO9Ct8D,EAAa,YAAO,MAAoB,oBAAb0N,UAA4B/P,aAAnC+P,QAAA,EAQpBO,EAAO,YAAO,SAAIW,QAAQ,OAAQ,IAAIA,QAAQ,OAAhCkF,GAAA,mBCrF3B,IAAYyoD,EAAZhmD,EAAAA,EAAAA,EAAAA,KAAAA,WAAA,qBAAYgmD,GACVlmD,EAAAA,IAAAA,MACAA,EAAAA,OAAAA,SACAA,EAAAA,KAAAA,OACAA,EAAAA,MAAAA,QACAA,EAAAA,QAAAA,UACAA,EAAAA,KAAAA,OACAA,EAAAA,IAAAA,MACAA,EAAAA,KAAAA,MARF,EAAYkmD,IAAAA,EAAY,sBChBxB,IAEMC,EAAa,8YACbC,EAAY,IAAI1sD,OAAO,IAAMysD,EAAa,KAsBhDp+D,EAAQs+D,QAAU,SAAS3tD,GACzB,YAAO,IAAOA,CAAAA,EAGhB3Q,EAAQu+D,cAAgB,SAAS3yD,GAC/B,OAAmC,IAA5BP,OAAOsC,KAAK/B,GAAKjQ,MAAAA,EAQ1BqE,EAAQ2M,MAAQ,SAASO,EAAQsJ,EAAGgoD,GAClC,GAAIhoD,EAGF,IAFA,IAAM7I,EAAOtC,OAAOsC,KAAK6I,GACnBmkD,EAAMhtD,EAAKhS,OACRgM,EAAI,EAAGA,EAAIgzD,EAAKhzD,IAErBuF,EAAOS,EAAKhG,IADG,WAAd62D,EACiB,CAAEhoD,EAAE7I,EAAKhG,KAET6O,EAAE7I,EAAKhG,GAAAA,EASjC3H,EAAQy+D,SAAW,SAAS9tD,GAC1B,OAAI3Q,EAAQs+D,QAAQ3tD,GACXA,EAEA,IAOX3Q,EAAQ0+D,aAAe,SAAS1yD,EAAS8qB,EAAgBhgB,GACvD,IAAI6nD,EAAa,CAAC,EAClB,IAAK3yD,EACH,OAAO8qB,EAGT,IAAK,IAAInvB,EAAI,EAAGA,EAAImP,EAAMnb,OAAQgM,SAAAA,IAC5BqE,EAAQ8K,EAAMnP,IAChBg3D,EAAW7nD,EAAMnP,IAAMqE,EAAQ8K,EAAMnP,IAErCg3D,EAAW7nD,EAAMnP,IAAMmvB,EAAehgB,EAAMnP,IAGhD,OAAOg3D,CAAAA,EAGT3+D,EAAQ4+D,OA9DO,SAASzwC,GAEtB,QAAQ,MADMkwC,EAAU5qD,KAAK0a,GACpBzc,EA6DX1R,EAAQ6+D,cA9Ec,SAAS1wC,EAAQ2wC,GAGrC,IAFA,IAAMp8B,EAAU,GACZhxB,EAAQotD,EAAMrrD,KAAK0a,GAChBzc,GAAO,CAGZ,IAFA,IAAMqtD,EAAa,GACbpE,EAAMjpD,EAAM/V,OACTyM,EAAQ,EAAGA,EAAQuyD,EAAKvyD,IAC/B22D,EAAW52D,KAAKuJ,EAAMtJ,IAExBs6B,EAAQv6B,KAAK42D,GACbrtD,EAAQotD,EAAMrrD,KAAK0a,EAErB,QAAOuU,CAAAA,EAmET1iC,EAAQo+D,WAAaA,CAAAA,EAAAA,SAAAA,EAAAA,EAAAA,GCpFrB,IAAIY,EAAM3zD,OAAO/E,UAAUwP,eACvBmpD,EAAS,IASb,SAASC,IA4BT,UAASC,EAAGhzD,EAAI/F,EAASg5D,GACvB93D,KAAK6E,GAAKA,EACV7E,KAAKlB,QAAUA,EACfkB,KAAK83D,KAAOA,IAAAA,CAcd,UAASlX,EAAYmX,EAASl5C,EAAOha,EAAI/F,EAASg5D,GAChD,GAAkB,mBAAPjzD,EACT,MAAM,IAAI/E,UAAU,mCAGtB,IAAIc,EAAW,IAAIi3D,EAAGhzD,EAAI/F,GAAWi5D,EAASD,GAC1CE,EAAML,EAASA,EAAS94C,EAAQA,EAMpC,OAJKk5C,EAAQE,QAAQD,GACXD,EAAQE,QAAQD,GAAKnzD,GAC1BkzD,EAAQE,QAAQD,GAAO,CAACD,EAAQE,QAAQD,GAAMp3D,GADhBm3D,EAAQE,QAAQD,GAAKn3D,KAAKD,IADlCm3D,EAAQE,QAAQD,GAAOp3D,EAAUm3D,EAAQG,gBAI7DH,CAUT,UAASI,EAAWJ,EAASC,GACI,KAAzBD,EAAQG,aAAoBH,EAAQE,QAAU,IAAIL,SAC5CG,EAAQE,QAAQD,EAU9B,UAASI,IACPp4D,KAAKi4D,QAAU,IAAIL,EACnB53D,KAAKk4D,aAAe,CAxElBn0D,CAAAA,OAAO7E,SACT04D,EAAO54D,UAAY+E,OAAO7E,OAAO,OAM5B,IAAI04D,GAASnH,YAAWkH,GAAAA,IA2E/BS,EAAap5D,UAAUq5D,WAAa,WAClC,IACI75C,EACApd,EAFAk3D,EAAQ,GAIZ,GAA0B,IAAtBt4D,KAAKk4D,aAAoB,OAAOI,EAEpC,IAAKl3D,KAASod,EAASxe,KAAKi4D,QACtBP,EAAIx2D,KAAKsd,EAAQpd,IAAOk3D,EAAMz3D,KAAK82D,EAASv2D,EAAKjJ,MAAM,GAAKiJ,GAGlE,OAAI2C,OAAOynB,sBACF8sC,EAAMxkE,OAAOiQ,OAAOynB,sBAAsBhN,IAG5C85C,CAAAA,EAUTF,EAAap5D,UAAUsf,UAAY,SAAmBO,GACpD,IAAIm5C,EAAML,EAASA,EAAS94C,EAAQA,EAChCra,EAAWxE,KAAKi4D,QAAQD,GAE5B,IAAKxzD,EAAU,MAAO,GACtB,GAAIA,EAASK,GAAI,MAAO,CAACL,EAASK,IAElC,IAAK,IAAIxE,EAAI,EAAGC,EAAIkE,EAASnQ,OAAQkkE,EAAK,IAAI31D,MAAMtC,GAAID,EAAIC,EAAGD,IAC7Dk4D,EAAGl4D,GAAKmE,EAASnE,GAAGwE,GAGtB,OAAO0zD,CAAAA,EAUTH,EAAap5D,UAAUw5D,cAAgB,SAAuB35C,GAC5D,IAAIm5C,EAAML,EAASA,EAAS94C,EAAQA,EAChCP,EAAYte,KAAKi4D,QAAQD,GAE7B,OAAK15C,EACDA,EAAUzZ,GAAW,EAClByZ,EAAUjqB,OAFM,GAYzB+jE,EAAap5D,UAAUy5D,KAAO,SAAc55C,EAAO65C,EAAIC,EAAIC,EAAIC,EAAIC,GACjE,IAAId,EAAML,EAASA,EAAS94C,EAAQA,EAEpC,IAAK7e,KAAKi4D,QAAQD,GAAM,OAAO,EAE/B,IAEIjvD,EACA1I,EAHAie,EAAYte,KAAKi4D,QAAQD,GACzB3E,EAAMrqD,UAAU3U,OAIpB,GAAIiqB,EAAUzZ,GAAI,CAGhB,OAFIyZ,EAAUw5C,MAAM93D,KAAK+4D,eAAel6C,EAAOP,EAAUzZ,QAAAA,GAAIxH,GAErDg2D,GACN,KAAK,EAAG,OAAO/0C,EAAUzZ,GAAG3D,KAAKod,EAAUxf,UAAAA,EAC3C,KAAK,EAAG,OAAOwf,EAAUzZ,GAAG3D,KAAKod,EAAUxf,QAAS45D,IAAAA,EACpD,KAAK,EAAG,OAAOp6C,EAAUzZ,GAAG3D,KAAKod,EAAUxf,QAAS45D,EAAIC,IAAAA,EACxD,KAAK,EAAG,OAAOr6C,EAAUzZ,GAAG3D,KAAKod,EAAUxf,QAAS45D,EAAIC,EAAIC,IAAAA,EAC5D,KAAK,EAAG,OAAOt6C,EAAUzZ,GAAG3D,KAAKod,EAAUxf,QAAS45D,EAAIC,EAAIC,EAAIC,IAAAA,EAChE,KAAK,EAAG,OAAOv6C,EAAUzZ,GAAG3D,KAAKod,EAAUxf,QAAS45D,EAAIC,EAAIC,EAAIC,EAAIC,IAAAA,EAGtE,IAAKz4D,EAAI,EAAG0I,EAAO,IAAInG,MAAMywD,EAAK,GAAIhzD,EAAIgzD,EAAKhzD,IAC7C0I,EAAK1I,EAAI,GAAK2I,UAAU3I,GAG1Bie,EAAUzZ,GAAGhC,MAAMyb,EAAUxf,QAASiK,EAAAA,KACjC,CACL,IACIkrD,EADA5/D,EAASiqB,EAAUjqB,OAGvB,IAAKgM,EAAI,EAAGA,EAAIhM,EAAQgM,IAGtB,OAFIie,EAAUje,GAAGy3D,MAAM93D,KAAK+4D,eAAel6C,EAAOP,EAAUje,GAAGwE,QAAAA,GAAIxH,GAE3Dg2D,GACN,KAAK,EAAG/0C,EAAUje,GAAGwE,GAAG3D,KAAKod,EAAUje,GAAGvB,SAAU,MACpD,KAAK,EAAGwf,EAAUje,GAAGwE,GAAG3D,KAAKod,EAAUje,GAAGvB,QAAS45D,GAAK,MACxD,KAAK,EAAGp6C,EAAUje,GAAGwE,GAAG3D,KAAKod,EAAUje,GAAGvB,QAAS45D,EAAIC,GAAK,MAC5D,KAAK,EAAGr6C,EAAUje,GAAGwE,GAAG3D,KAAKod,EAAUje,GAAGvB,QAAS45D,EAAIC,EAAIC,GAAK,MAChE,QACE,IAAK7vD,EAAM,IAAKkrD,EAAI,EAAGlrD,EAAO,IAAInG,MAAMywD,EAAK,GAAIY,EAAIZ,EAAKY,IACxDlrD,EAAKkrD,EAAI,GAAKjrD,UAAUirD,GAG1B31C,EAAUje,GAAGwE,GAAGhC,MAAMyb,EAAUje,GAAGvB,QAASiK,GAKpD,QAAO,GAYTqvD,EAAap5D,UAAU0f,GAAK,SAAYG,EAAOha,EAAI/F,GACjD,OAAO8hD,EAAY5gD,KAAM6e,EAAOha,EAAI/F,GAAAA,EAAS,EAY/Cs5D,EAAap5D,UAAU84D,KAAO,SAAcj5C,EAAOha,EAAI/F,GACrD,OAAO8hD,EAAY5gD,KAAM6e,EAAOha,EAAI/F,GAAAA,EAAS,EAa/Cs5D,EAAap5D,UAAU+5D,eAAiB,SAAwBl6C,EAAOha,EAAI/F,EAASg5D,GAClF,IAAIE,EAAML,EAASA,EAAS94C,EAAQA,EAEpC,IAAK7e,KAAKi4D,QAAQD,GAAM,OAAOh4D,KAC/B,IAAK6E,EAEH,OADAszD,EAAWn4D,KAAMg4D,GACVh4D,KAGT,IAAIse,EAAYte,KAAKi4D,QAAQD,GAE7B,GAAI15C,EAAUzZ,GAEVyZ,EAAUzZ,KAAOA,GACfizD,IAAQx5C,EAAUw5C,MAClBh5D,GAAWwf,EAAUxf,UAAYA,GAEnCq5D,EAAWn4D,KAAMg4D,OAEd,CACL,IAAK,IAAI33D,EAAI,EAAGme,EAAS,GAAInqB,EAASiqB,EAAUjqB,OAAQgM,EAAIhM,EAAQgM,KAEhEie,EAAUje,GAAGwE,KAAOA,GACnBizD,IAASx5C,EAAUje,GAAGy3D,MACtBh5D,GAAWwf,EAAUje,GAAGvB,UAAYA,IAErC0f,EAAO3d,KAAKyd,EAAUje,IAOtBme,EAAOnqB,OAAQ2L,KAAKi4D,QAAQD,GAAyB,IAAlBx5C,EAAOnqB,OAAemqB,EAAO,GAAKA,EACpE25C,EAAWn4D,KAAMg4D,EAGxB,QAAOh4D,IAAAA,EAUTo4D,EAAap5D,UAAUg6D,mBAAqB,SAA4Bn6C,GACtE,IAAIm5C,EAUJ,OARIn5C,GACFm5C,EAAML,EAASA,EAAS94C,EAAQA,EAC5B7e,KAAKi4D,QAAQD,IAAMG,EAAWn4D,KAAMg4D,KAExCh4D,KAAKi4D,QAAU,IAAIL,EACnB53D,KAAKk4D,aAAe,GAGfl4D,IAAAA,EAMTo4D,EAAap5D,UAAU2f,IAAMy5C,EAAap5D,UAAU+5D,eACpDX,EAAap5D,UAAU4hD,YAAcwX,EAAap5D,UAAU0f,GAK5D05C,EAAaa,SAAWtB,EAKxBS,EAAaA,aAAeA,EAM1B3/D,EAAOC,QAAU0/D,CAAAA,EAAAA,SAAAA,EAAAA,EAAAA,aC3UnB,GAAAvnD,EAAAA,EAAAA,EAAAA,KAAAA,WAAA,oFAAAxQ,EAAA,MAoBM64D,GApBNroD,EAAAA,IAoB6B,CAAC,GAOxB,SAAUsoD,IACd,OAAQp1D,OAAAA,EAAAA,EAAAA,GACJq1D,EACkB,oBAAXztD,OACPA,OACgB,oBAATwF,KACPA,KACA+nD,CAeA,UAAUG,IACd,IAAMD,EAASD,IACTG,EAASF,EAAOE,QAAUF,EAAOG,SAEvC,QAAI,IAAED,GAAsBA,EAAOE,gBAAiB,CAElD,IAAMntD,EAAM,IAAIotD,YAAY,GAC5BH,EAAOE,gBAAgBntD,GAIvBA,EAAI,GAAe,KAATA,EAAI,GAAc,MAG5BA,EAAI,GAAe,MAATA,EAAI,GAAe,MAE7B,IAAMqtD,EAAM,SAAC1hE,GAEX,IADA,IAAIqR,EAAIrR,EAAIgP,SAAS,IACdqC,EAAEhV,OAAS,GAChBgV,EAAI,IAAIA,EAEV,OAAOA,CAAAA,EAGT,OACEqwD,EAAIrtD,EAAI,IAAMqtD,EAAIrtD,EAAI,IAAMqtD,EAAIrtD,EAAI,IAAMqtD,EAAIrtD,EAAI,IAAMqtD,EAAIrtD,EAAI,IAAMqtD,EAAIrtD,EAAI,IAAMqtD,EAAIrtD,EAAI,IAAMqtD,EAAIrtD,EAAI,GAI9G,OAAO,mCAAmCnD,QAAQ,SAAS,YAEzD,IAAMwH,EAAqB,GAAhBjK,KAAK8jB,SAAiB,EAGjC,OADgB,MAANtpB,EAAYyP,EAAS,EAAJA,EAAW,GAC7B1J,SAAS,MAiEhB,UAAU2yD,EAAevtD,GAC7B,IAAMgtD,EAASD,IAGf,KAAM,YAAaC,GACjB,OAAOhtD,IAIT,IAAMwtD,EAAmBR,EAAezrD,QAClCksD,EAAwC,CAAC,EARhC,CAAC,QAAS,OAAQ,OAAQ,QAAS,MAAO,UAWlDt8D,SAAQ,YAETwpB,KAAUqyC,EAAezrD,SAAYisD,EAAgB7yC,GAA2B+yC,sBAClFD,EAAc9yC,GAAS6yC,EAAgB7yC,GACvC6yC,EAAgB7yC,GAAU6yC,EAAgB7yC,GAA2B+yC,oBAAAA,IAKzE,IAAM9rD,EAAS5B,IAOf,OAJArI,OAAOsC,KAAKwzD,GAAet8D,SAAQ,YACjCq8D,EAAgB7yC,GAAS8yC,EAAc9yC,EAAAA,IAGlC/Y,CAAAA,CAAAA,GAAAA,KAAAA,KAAAA,EAAAA,sBC3KH,SAAU+rD,EAAS3rD,EAAa6qB,GACpC,gBADoCA,IAAAA,EAAAA,GACjB,iBAAR7qB,GAA4B,IAAR6qB,GAGxB7qB,EAAI/Z,QAAU4kC,EAFZ7qB,EAE2BA,EAAIlC,OAAO,EAAG+sB,GAAI,KAWlD,UAAU+gC,EAAS/tD,EAAcguD,GACrC,IAAIC,EAAUjuD,EACRkuD,EAAKD,EAAQ7lE,OACnB,GAAI8lE,GAAM,IACR,OAAOD,EAELD,EAAQE,IAEVF,EAAQE,GAGV,IAAIl9C,EAAQxW,KAAKwyB,IAAIghC,EAAQ,GAAI,GAC7Bh9C,EAAQ,IACVA,EAAQ,GAGV,IAAIwsB,EAAMhjC,KAAKuyB,IAAI/b,EAAQ,IAAKk9C,GAgBhC,OAfI1wB,EAAM0wB,EAAK,IACb1wB,EAAM0wB,GAEJ1wB,IAAQ0wB,IACVl9C,EAAQxW,KAAKwyB,IAAIwQ,EAAM,IAAK,IAG9BywB,EAAUA,EAAQ/hE,MAAM8kB,EAAOwsB,GAC3BxsB,EAAQ,IACVi9C,EAAU,WAAWA,GAEnBzwB,EAAM0wB,IACRD,GAAW,WAGNA,CAAAA,CAxDTrpD,EAAAA,EAAAA,EAAAA,KAAAA,WAAA,OAAAxQ,CAAA,sCAAAwQ,EAAAA,EAwDSqpD,EAAAA,SAAAA,EAAAA,EAAAA,+KC7BF,WCRDE,EAAmB,CACvB,UACA,OACA,OACA,oBACA,sBACA,MACA,gBACA,iBACA,eACA,OACA,gBACA,WACA,eACA,sBACA,UACA,cACA,cAQW38C,EAAQ,YACnB,IACIjgB,EACAvF,EACAoI,EAHAyL,EAAS,CAAC,EAKd,OAAK/R,GAILA,EAAQ3F,MAAM,MAAMmJ,SAAQ,YAC1B8C,EAAI4L,EAAK3P,QAAQ,KACjBkB,EAAMuG,OAAAA,EAAAA,EAAAA,CAAKkI,EAAKC,OAAO,EAAG7L,IAAI5C,cAC9BxF,EAAM8L,OAAAA,EAAAA,EAAAA,CAAKkI,EAAKC,OAAO7L,EAAI,IAEtB7C,IAIDsO,EAAOtO,IAAQ48D,EAAiB99D,QAAQkB,IAAQ,IAKlDsO,EAAOtO,GADG,eAARA,GACasO,EAAOtO,GAAOsO,EAAOtO,GAAO,IAAI1J,OAAO,CAACmE,IAEzC6T,EAAOtO,GAAOsO,EAAOtO,GAAO,KAAOvF,EAAMA,GAAAA,IAIpD6T,GAvBEA,CAAAA,EAsDEwQ,EAAM,SAACviB,EAA2BqH,EAAczF,EAAe0+D,QAAAA,IAAAA,IAAAA,GAAAA,GAC1E,IAAMtuD,EAAiBuuD,EAAcl5D,GAerC,OAbKrH,IACHA,EAAU,CAAC,QAAD,KAIZA,EAAUsO,KAAKC,MAAMD,KAAKI,UAAU1O,KACxBqH,SAAAA,IAAuBrH,EAAQgS,GACzChS,EAAQgS,GAAkBpQ,EACjB0+D,WACFtgE,EAAQqH,GACfrH,EAAQgS,GAAkBpQ,GAGrB5B,CAAAA,EAQIugE,EAAgB,SAACl5D,GAa5B,MAXa,CACX,cAAe,cACfm5D,IAAK,MACLC,KAAM,OACN,gBAAiB,gBACjBC,IAAK,MACLC,GAAI,KACJ,mBAAoB,mBACpB,wBAAyB,yBACzBt5D,EAAK3D,gBAOA2D,EACJhN,MAAM,KACN4e,KAAI,SAASs1B,GACZ,OAAOA,EAAK58B,OAAO,GAAG3P,cAAgBusC,EAAKp8B,OAAO,GAAGzO,aAAAA,IAEtD+L,KAAK,MD7HHvI,EAAA,2BEJD05D,EAAAA,EAAAA,EAAAA,EAAAA,GAAc,mBAQPzK,EAAc,SAAC32D,GAI1B,OAFAA,EAAS02D,EAAiB12D,GAEtBwK,OAAAA,EAAAA,EAAAA,CAAWxK,EAAOM,OAASkK,OAAAA,EAAAA,EAAAA,CAASxK,EAAOM,OAASkK,OAAAA,EAAAA,EAAAA,CAASxK,EAAOM,OAASkK,OAAAA,EAAAA,EAAAA,CAAOxK,EAAOM,OAASkK,OAAAA,EAAAA,EAAAA,CAAOxK,EAAOM,OAKlHkK,OAAAA,EAAAA,EAAAA,CAAcxK,EAAOM,QAIrBkK,OAAAA,EAAAA,EAAAA,CAAkBxK,EAAOM,OAC3BN,EAAOQ,QAAUuiB,EAAI/iB,EAAOQ,QAAS,eAAgB,mDACrDR,EAAOM,KAAON,EAAOM,KAAKmN,YACjBjD,OAAAA,EAAAA,EAAAA,CAASxK,EAAOM,QACzBN,EAAOQ,QAAUuiB,EAAI/iB,EAAOQ,QAAS,eAAgB,uBACrDR,EAAOM,KAAOwO,KAAKI,UAAUlP,EAAOM,QAb7BN,CAAAA,EAwBE02D,EAAmB,SAAC12D,GAC/B,OAAKA,EAAOqhE,kBAIZrhE,EAAOQ,QAAUuiB,EAAI/iB,EAAOQ,QAAS,mBAAoBgK,OAAAA,EAAAA,WAAAA,IACzDxK,EAAOQ,QAAUuiB,EAAI/iB,EAAOQ,QAAS,qBAAyB0M,KAAKC,MAAMvT,KAAKqX,MAAQ,KAAK,IAAIzG,OAAAA,EAAAA,SAAAA,IAC/FxK,EAAOQ,QAAUuiB,EAAI/iB,EAAOQ,QAAS,uBAAwB,SAASgK,OAAAA,EAAAA,SAAAA,IAE/DxK,GAPEA,CAAAA,EAeEuL,EAAgB,SAAOvJ,GAAoB,iGACtD,IAAKA,EAASxB,UAAYwB,EAASxB,QAAQ,gBACzC,MAAO,CAAP,EAAOP,QAAQC,QAAQ8B,IAKzB,GAFMsM,EAActM,EAASxB,QAAQ,gBAEjC,oBAAoB0Q,KAAK5C,GAC3B,IACEtM,EAAS1B,KAAOwO,KAAKC,MAAM/M,EAAS1B,KAE2BE,CAD/D,MAAOyO,GACPmyD,EAAM,gCAAiCp/D,EAAS1B,KAAM0B,EAASxB,QAAAA,KAExD,qBAAqB0Q,KAAK5C,GAC/B9D,OAAAA,EAAAA,EAAAA,CAASxI,EAAS1B,QACpB0B,EAAS1B,KAAOghE,EAAet/D,EAAS1B,OAEjC,mBAAmB4Q,KAAK5C,KAC7BhO,EAAO0B,EAAS1B,KAEhBkK,OAAAA,EAAAA,EAAAA,CAASxI,EAAS1B,QACpBA,EAAOghE,EAAet/D,EAAS1B,QAAAA,IAG7BqO,EAAAA,SAAgBrO,KAClB0B,EAAS1B,KAAOqO,EAAAA,MAAarO,EAAM,CACjCihE,kBAAAA,EACAC,YAAY,MAKlB,MAAO,CAAP,EAAOvhE,QAAQC,QAAQ8B,GAAAA,GAAAA,GAAAA,EAGzB,SAASs/D,EAAerzD,GAOtB,IANA,IAAMwzD,EAAU,IAAIvB,YAAYjyD,GAC1BnT,EAAS2mE,EAAQ3mE,OAEnB2Z,EAAS,GACTitD,EAAWx0D,KAAKy0D,IAAI,EAAG,IAAM,EAExB76D,EAAI,EAAGA,EAAIhM,EAAQgM,GAAK46D,EAC3B56D,EAAI46D,EAAW5mE,IACjB4mE,EAAW5mE,EAASgM,GAEtB2N,GAAUgC,OAAOmrD,aAAat4D,MAAM,KAAMm4D,EAAQI,SAAS/6D,EAAGA,EAAI46D,IAGpE,OAAOjtD,CCvGF,KAAMqtD,EAAa,SAAClgE,EAAKa,GAC9B,IAAKA,EACH,OAAOb,EAGT,IAAMmgE,EAAaC,EAAMv/D,GACnBw/D,EAAYrgE,EAAImB,QAAQ,KAM9B,OAJmB,IAAfk/D,IACFrgE,EAAMA,EAAIhD,MAAM,EAAGqjE,IAGdrgE,IAA6B,IAAtBA,EAAImB,QAAQ,KAAc,IAAM,KAAOg/D,CAAAA,EAQ1CC,EAAQ,YACnB,OAAAx3D,OAAOsC,KAAKpO,GACT0X,QAAO,YAAK,mBAAY1X,EAAIg7D,EAAAA,IAC5BjgD,KAAI,YAAK,OAAGlY,mBAAmBm4D,GAAE,IAAIn4D,mBAAmB7C,EAA/CuQ,GAAA,IACTgB,KAAK,MAxBH,6PCrBP,KAAIiyD,EAAM7iE,EAAQ,IAEd8iE,EAAkBhjE,EAAQgjE,gBAAkB,SAA0Bj7D,EAAS1B,EAAU8O,EAAQ8tD,EAAcv6D,EAAMw6D,GACnHD,IACF37D,KAAKoY,SAAWujD,GAEdl7D,IACFT,KAAKS,QAAUA,GAEboN,IACEA,EAAOjJ,GACT5E,KAAK6N,OAASA,EAAOjJ,GAErB5E,KAAK6N,OAASA,GAGd9O,IACFiB,KAAKjB,SAAWA,GAElBiB,KAAKoB,KAAOA,EACZpB,KAAK47D,SAAWA,EAChB57D,KAAK6D,MAAQ7D,KAAKgH,UAAAA,EAGpB00D,EAAgB18D,UAAUgI,SAAW,WACnC,OAAOhH,KAAKoY,SAAW,IAAMpY,KAAKS,OAAAA,EAGpC,IAAIo7D,EAAkBnjE,EAAQmjE,gBAAkB,SAAyB98D,EAAU8O,EAAQnJ,EAASo3D,GAClG97D,KAAKjB,SAAWA,EAChBiB,KAAK6N,OAASA,EACd7N,KAAK27D,aAAeG,EAAIH,aACxB37D,KAAK+7D,OAAS,GACd/7D,KAAKg8D,WAAat3D,GAAWA,EAAQs3D,WACrCh8D,KAAKi8D,cAAgBv3D,IAAAA,IAAWA,EAAQu3D,aAAAA,EA6B1C,SAASC,EAAY7yD,EAAEhJ,GACrB,OAAOA,EAAE,KAAKgJ,EAAErC,WAAW,IA3B7B60D,CAAAA,EAAgB78D,UAAUm9D,SAAW,SAAkBhoD,GACrD,IAAIvY,EACJ,GAAqB,iBAAVuY,EACTvY,EAAM,IAAI8/D,EAAgBvnD,EAAQnU,KAAKjB,SAAUiB,KAAK6N,OAAQ7N,KAAK27D,kBAC9D,CACL,IAAKxnD,EAAQ,MAAM,IAAItgB,MAAM,wBAC7B,IAAKsgB,EAAO1T,QAAS,MAAM,IAAI5M,MAAM,yBACrC,IAAKsgB,EAAO/S,KAAM,MAAM,IAAIvN,MAAM,0BAClC+H,EAAM,IAAI8/D,EAAgBvnD,EAAO1T,QAAST,KAAKjB,SAAUiB,KAAK6N,OAAQ7N,KAAK27D,aAAcxnD,EAAO/S,KAAM+S,EAAOynD,SAG/G,IAAI57D,KAAKg8D,WACP,MAAMpgE,EAGR,OADAoE,KAAK+7D,OAAOl7D,KAAKjF,GACVA,CAAAA,EAGTigE,EAAgB78D,UAAUo9D,aAAe,SAAsBxlC,GAC3C,iBAAPA,GAAoBA,GAAOA,EAAIylC,cACxCr8D,KAAKm8D,SAASvlC,GACLA,GAAOA,EAAImlC,QACpBn5D,MAAM5D,UAAU6B,KAAKgC,MAAM7C,KAAK+7D,OAAQnlC,EAAImlC,OAAAA,EAOhDF,EAAgB78D,UAAUgI,SAAW,SAAkB4vB,GACrD,OAAO52B,KAAK+7D,OAAO/oD,IAAIkpD,GAAY1yD,KAAK,KAG1CzF,OAAOE,eAAe43D,EAAgB78D,UAAW,QAAS,CAAEud,IAAK,WAC/D,OAAQvc,KAAK+7D,OAAO1nE,MAAAA,IAQtB,IAAIioE,EAAc5jE,EAAQ4jE,YAAc,SAASA,EAAaC,EAAK1uD,GACjE7N,KAAKS,QAAU87D,EACfv8D,KAAK6N,OAASA,EACdha,MAAMqN,KAAKlB,KAAMu8D,GACjB1oE,MAAM2oE,kBAAkBx8D,KAAMs8D,EAAAA,EAEhCA,EAAYt9D,UAAY+E,OAAO7E,OAAOrL,MAAMmL,UAC1C,CAAE2P,YAAa,CAAChT,MAAO2gE,EAAapzC,YAAY,GAC9C9nB,KAAM,CAACzF,MAAO,cAAeutB,YAAY,KAG7C,IAAIuzC,EAAgB/jE,EAAQ+jE,cAAgB,SAAwB5uD,EAAQnJ,EAASi3D,EAAcj1C,EAAMg2C,GACvG18D,KAAK6N,OAASA,EACd7N,KAAK0E,QAAUA,EACf1E,KAAK27D,aAAeA,EACpB37D,KAAK0mB,KAAOA,EACZ1mB,KAAK08D,QAAUA,CAAAA,EAGjBD,EAAcz9D,UAAUvF,QAAU,SAAkBmM,GAClD,OAAO61D,EAAIhiE,QAAQuG,KAAK0mB,KAAM9gB,EAAAA,EAGhC62D,EAAcz9D,UAAU29D,UAAY,SAAmB9uD,EAAQ+uD,GAC7D,IAAIjB,OAAAA,IAAgBiB,EAA4B58D,KAAK27D,aAAe37D,KAAK27D,aAAakB,EAAWD,GAC7Fl2C,EAAO+0C,EAAIhiE,QAAQuG,KAAK0mB,KAAM7Y,EAAOjJ,IAAI,IACzCk3D,EAAM,IAAIW,EAAc5uD,EAAQ7N,KAAK0E,QAASi3D,EAAcj1C,EAAM3iB,OAAO7E,OAAOc,KAAK08D,UAIzF,OAHG7uD,EAAOjJ,KAAOk3D,EAAIY,QAAQh2C,KAC3Bo1C,EAAIY,QAAQh2C,GAAQ7Y,GAEfiuD,CAAAA,EAGT,IAAIgB,EAAiBpkE,EAAQokE,eAAiB,CAC5C,YAAa,8JACbhqE,KAAQ,2DACRqgE,KAAQ,oDAER4J,MAAS,ySACT,aAAc,8FACdC,KAAQ,0jCACRvB,IAAO,mCAEP7G,MAAS,6YAGTrpD,SAAY,gIACZ,YAAa,gIAEb0xD,MAAS,cACTC,aAAgB,iBAChB,eAAgB,SAAU/jB,GACxB,MAAyB,iBAAVA,GAAuB7yB,WAAW6yB,KAAWxlD,SAASwlD,EAAO,MAAQvlD,MAAMulD,EAAAA,EAE5Fqe,MAAS,SAAUre,GACjB,IAAInrC,GAAAA,EACJ,IACE,IAAI3D,OAAO8uC,EAIb,CAHE,MAAO3wC,GACPwF,GAAAA,CAEF,QAAOA,CAAAA,EAEToS,MAAS,wBACT+8C,MAAS,8BAGXL,EAAeM,OAASN,EAAetF,MACvCsF,EAAeluD,QAAUkuD,EAAetF,MACxCsF,EAAeO,KAAOP,EAAe,cAErCpkE,EAAQ4kE,SAAW,SAAmBnkB,EAAOokB,EAAQ97D,GACnD,GAAqB,iBAAV03C,QAAAA,IAAsB2jB,EAAeS,GAAuB,CACrE,GAAIT,EAAeS,aAAmBlzD,OACpC,OAAOyyD,EAAeS,GAAQ9yD,KAAK0uC,GAErC,GAAsC,mBAA3B2jB,EAAeS,GACxB,OAAOT,EAAeS,GAAQpkB,EAAAA,MAE3B,GAAI13C,GAAaA,EAAU+7D,eACa,mBAApC/7D,EAAU+7D,cAAcD,GACjC,OAAO97D,EAAU+7D,cAAcD,GAAQpkB,GAEzC,OAAO,GAGT,IAAI0jB,EAAankE,EAAQmkE,WAAa,SAAqBr/D,GAKzD,OAJAA,EAAMA,EAAIwJ,YAIDoD,MAAM,cAAiB5M,EAAI4M,MAAM,SAGtC5M,EAAI4M,MAAM,SACL,IAAM5M,EAAM,IAEd,IAAM6K,KAAKI,UAAUjL,GAAO,IAL1B,IAAMA,CAAAA,EAuCjB,SAASigE,EAAY73D,EAAQ83D,EAAKl1D,EAAGnI,GAClB,WAAbA,EAAOmI,GACTk1D,EAAIr9D,GAAKs9D,EAAU/3D,EAAOvF,GAAImI,IAEH,IAAvB5C,EAAOtJ,QAAQkM,IACjBk1D,EAAI78D,KAAK2H,EAKf,UAASo1D,EAAS5wC,EAAK0wC,EAAKlgE,GAC1BkgE,EAAIlgE,GAAOwvB,EAAIxvB,EAGjB,UAASqgE,EAAsBj4D,EAAQonB,EAAK0wC,EAAKlgE,GACvB,WAApB6C,EAAO2sB,EAAIxvB,KAAsBwvB,EAAIxvB,IAIlCoI,EAAOpI,GAGVkgE,EAAIlgE,GAAOmgE,EAAU/3D,EAAOpI,GAAMwvB,EAAIxvB,IANxCkgE,EAAIlgE,GAAOwvB,EAAIxvB,EAWnB,UAASmgE,EAAW/3D,EAAQonB,GAC1B,IAAI/E,EAAQrlB,MAAMkD,QAAQknB,GACtB0wC,EAAMz1C,GAAS,IAAM,CAAC,EAa1B,OAXIA,GACFriB,EAASA,GAAU,GACnB83D,EAAMA,EAAI5pE,OAAO8R,GACjBonB,EAAIzvB,QAAQkgE,EAAWj/D,KAAK,KAAMoH,EAAQ83D,MAEtC93D,GAA4B,WAAlBvF,EAAOuF,IACnB7B,OAAOsC,KAAKT,GAAQrI,QAAQqgE,EAAQp/D,KAAK,KAAMoH,EAAQ83D,IAEzD35D,OAAOsC,KAAK2mB,GAAKzvB,QAAQsgE,EAAqBr/D,KAAK,KAAMoH,EAAQonB,EAAK0wC,KAGjEA,CAuBT,UAASI,EAAaz0D,GACpB,MAAO,IAAIvO,mBAAmBuO,GAAGH,QAAQ,KAAK,MAjGhDxQ,CAAAA,EAAQqlE,kBAAoB,SAASA,EAAmB7uD,EAAGC,GACzD,GAAI9O,EAAO6O,KAAP,EAAoBC,GACtB,OAAO,EAET,GAAID,aAAatM,MACf,OAAMuM,aAAavM,OAGfsM,EAAE7a,SAAW8a,EAAE9a,QAGZ6a,EAAEgwB,OAAM,SAAU71B,EAAGhJ,GAC1B,OAAO09D,EAAkB7uD,EAAE7O,GAAI8O,EAAE9O,GAAAA,IAGrC,GAAiB,WAAbA,EAAO6O,GAAgB,CACzB,IAAKA,IAAMC,EACT,OAAOD,IAAMC,EAEf,IAAI6uD,EAAQj6D,OAAOsC,KAAK6I,GACpB+uD,EAAQl6D,OAAOsC,KAAK8I,GACxB,OAAI6uD,EAAM3pE,SAAW4pE,EAAM5pE,QAGpB2pE,EAAM9+B,OAAM,SAAU71B,GAC3B,OAAO00D,EAAkB7uD,EAAE7F,GAAI8F,EAAE9F,GAAAA,GAGrC,QAAO6F,IAAMC,CAAAA,EAgDf1W,EAAOC,QAAQilE,UAAYA,EAS3BjlE,EAAQwlE,cAAgB,SAAuBzgD,EAAG6yC,GAGhD,IAFA,IACI2C,EADA7pD,EAAQknD,EAAEl8D,MAAM,KAAK+D,MAAM,GAEI,iBAApB86D,EAAE7pD,EAAMtG,UAAsB,CAC3C,IAAI+N,EAAIvG,mBAAmB2oD,EAAE/pD,QAAQ,KAAK,KAAKA,QAAQ,MAAM,MAC7D,KAAM2H,KAAK4M,GAAI,OACfA,EAAIA,EAAE5M,EAER,QAAO4M,CAAAA,EAWT/kB,EAAQylE,WAAa,SAAuBjvD,GAG3C,OAAOA,EAAE8D,IAAI8qD,GAAat0D,KAAK,KAWhC9Q,EAAQ0lE,iBAAmB,SAA0B36D,GAEnD,IAAI46D,EAAgB,EACpB,GAAIzqE,MAAM6P,GAAS,OAAO46D,EAEJ,iBAAX56D,IACTA,EAAS66D,OAAO76D,IAGlB,IAAI2F,EAAQ3F,EAAOuD,WAAW5S,MAAM,KACpC,GAAqB,IAAjBgV,EAAM/U,OAAc,CACtB,GAAoB,MAAhB+U,EAAM,GAAG,GACX,OAAOi1D,EAEPA,EAAgBC,OAAOl1D,EAAM,GAAGjR,MAAM,GAI1C,KAAIomE,EAAen1D,EAAM,GAAGhV,MAAM,KAKlC,OAJ4B,IAAxBmqE,EAAalqE,SACfgqE,GAAiBE,EAAa,GAAGlqE,QAG5BgqE,CAAAA,CAAAA,EAAAA,SAAAA,EAAAA,EAAAA,aClUT,GAKM,SAAUG,IACd,MAAwF,qBAAjFz6D,OAAO/E,UAAUgI,SAAS9F,UAAAA,IAAY6F,EAA0BA,EAAU,EAS7E,UAAU03D,EAAeC,EAAUlkE,GAEvC,OAAOkkE,EAAI9lE,QAAQ4B,EAjBrB,CAAAqW,EAAAA,EAAAA,EAAAA,KAAAA,WAAA,oTCAA,KAAIsgD,EAGJA,EAAK,WACJ,OAAOnxD,IADH,IAIL,IAECmxD,EAAIA,GAAK,IAAIwN,SAAS,cAAb,EAUVlmE,CATE,MAAO+P,GAEc,YAAlB,oBAAOmD,OAAP,cAAOA,WAAqBwlD,EAAIxlD,OAOrClT,CAAAA,EAAOC,QAAUy4D,CAAAA,EAAAA,SAAAA,EAAAA,EAAAA,GCjBjB,IAAMyN,EAAOhmE,EAAQ,GACfw+D,EAAex+D,EAAQ,GAAUw+D,aACjCyH,EAAUjmE,EAAQ,IAElBkmE,EACJ,wFACC51D,QAAQ,QAAS01D,EAAK9H,aAMpBwH,OAAO3qE,UAAYgY,OAAOhY,WAC7B2qE,OAAO3qE,SAAWgY,OAAOhY,WAEtB2qE,OAAOh4C,YAAc3a,OAAO2a,aAC/Bg4C,OAAOh4C,WAAa3a,OAAO2a,YAG7B,IAAMkJ,EAAiB,CACrBuvC,oBAAqB,KACrBC,cAAc,EACdC,aAAc,QACdnE,kBAAkB,EAClBoE,iBAAiB,EACjBC,wBAAwB,EAExBC,gBAAgB,EAChBC,qBAAqB,EACrBnI,WAAW,EACX6D,YAAY,EACZuE,cAAc,EACdC,kBAAmB,MACnBC,kBAAmB,SAAStwD,EAAGm5B,GAC7B,OAAOn5B,CAAAA,EAETuwD,mBAAoB,SAASvwD,EAAGwwD,GAC9B,OAAOxwD,CAAAA,EAETywD,UAAW,IAIbjnE,EAAQ82B,eAAiBA,EAEzB,IAAMhgB,EAAQ,CACZ,sBACA,eACA,eACA,mBACA,kBACA,yBACA,iBACA,sBACA,YACA,aACA,eACA,oBACA,oBACA,qBACA,sBACA,aA6EF,SAASowD,EAAgBC,EAAYn7D,EAASo7D,GAC5C,IAAMz3B,EAAUw3B,EAAW,IAAMC,EAC7B7nE,EAAM4nE,EAAW,IASrB,OARI5nE,IACEyM,EAAQq2D,aACV9iE,EAAMA,EAAIsQ,QAGZtQ,EAAM8nE,EADN9nE,EAAMyM,EAAQ86D,kBAAkBvnE,EAAKowC,GACf3jC,EAAQ06D,eAAgB16D,EAAQs7D,sBAGjD/nE,CAGT,UAASgoE,EAAgB71D,GACvB,MAAiB,QAAbA,EAAM,GAtJ6C,EAwJ9B,MAAdA,EAAM,IAxJmB,OAyJ3B81D,IACS91D,EAAM,IAA+D,MAAzCA,EAAM,GAAG8B,OAAO9B,EAAM,GAAG/V,OAAS,GA1JnC,EAArB,CAiK1B,UAAS8rE,EAAiBC,EAAS17D,GACjC,GAAIA,EAAQw6D,gBAAiB,CAC3B,IAAMmB,EAAOD,EAAQhsE,MAAM,KACrBujE,EAA+B,MAAtByI,EAAQ10D,OAAO,GAAa,IAAM,GACjD,GAAgB,UAAZ20D,EAAK,GACP,MAAO,GAEW,IAAhBA,EAAKhsE,SACP+rE,EAAUzI,EAAS0I,EAAK,GAG5B,QAAOD,CAGT,UAASL,EAAW9nE,EAAKqoE,EAAaN,GAElC,IAAIl0D,EADN,OAAIw0D,GAA8B,iBAARroE,GAEL,KAAfA,EAAIsQ,QAAiB3U,MAAMqE,GAC7B6T,EAAiB,SAAR7T,GAAgC,UAARA,GAA0BA,IAEhC,IAAvBA,EAAIqE,QAAQ,MAEdwP,EAASwyD,OAAO3qE,SAASsE,EAAK,KACC,IAAtBA,EAAIqE,QAAQ,MACrBwP,EAASwyD,OAAOh4C,WAAWruB,GAC3BA,EAAMA,EAAIiR,QAAQ,MAAM,KAExB4C,EAASwyD,OAAO3qE,SAASsE,EAAK,IAE5B+nE,IACFl0D,EAASkE,OAAOlE,KAAY7T,EAAM6T,EAAS7T,IAGxC6T,GAEH8yD,EAAK5H,QAAQ/+D,GACRA,EAEA,EAOb,CAlJAS,EAAQ8W,MAAQA,EAkJhB,IAAM+wD,EAAY,IAAIl2D,OAAO,wCAAyC,KAEtE,SAASm2D,EAAmBC,EAAS/7D,GACnC,IAAKA,EAAQo2D,kBAAuC,iBAAZ2F,EAAsB,CAC5DA,EAAUA,EAAQv3D,QAAQ,SAAU,KAMpC,IAHA,IAAMkyB,EAAUwjC,EAAKrH,cAAckJ,EAASF,GACtClN,EAAMj4B,EAAQ/mC,OACdqsE,EAAQ,CAAC,EACNrgE,EAAI,EAAGA,EAAIgzD,EAAKhzD,IAAK,CAC5B,IAAMq/D,EAAWS,EAAiB/kC,EAAQ/6B,GAAG,GAAIqE,GAC7Cg7D,EAASrrE,cAAAA,IACP+mC,EAAQ/6B,GAAG,IACTqE,EAAQq2D,aACV3/B,EAAQ/6B,GAAG,GAAK+6B,EAAQ/6B,GAAG,GAAGkI,QAEhC6yB,EAAQ/6B,GAAG,GAAKqE,EAAQ+6D,mBAAmBrkC,EAAQ/6B,GAAG,GAAIq/D,GAC1DgB,EAAMh8D,EAAQq6D,oBAAsBW,GAAYK,EAC9C3kC,EAAQ/6B,GAAG,GACXqE,EAAQ26D,oBACR36D,EAAQs7D,sBAEDt7D,EAAQy6D,yBACjBuB,EAAMh8D,EAAQq6D,oBAAsBW,IAAAA,GAI1C,KAAK37D,OAAOsC,KAAKq6D,GAAOrsE,OACtB,OAEF,GAAIqQ,EAAQs6D,aAAc,CACxB,IAAM2B,EAAiB,CAAC,EAExB,OADAA,EAAej8D,EAAQs6D,cAAgB0B,EAChCC,CAET,QAAOD,CAAAA,CAIXhoE,CAAAA,EAAQkoE,gBAxLgB,SAASC,EAASn8D,GACxCA,EAAU0yD,EAAa1yD,EAAS8qB,EAAgBhgB,GAEhDqxD,EAAUA,EAAQ33D,QAAQ,mBAAoB,IAQ9C,IANA,IAAM43D,EAAS,IAAIjC,EAAQ,QACvBkC,EAAcD,EAEZE,EAAW,IAAI32D,OAAOy0D,EAAM,KAC9B/lD,EAAMioD,EAAS70D,KAAK00D,GACpBI,EAAUD,EAAS70D,KAAK00D,GACrB9nD,GAAK,CACV,IAAMmoD,EAAUjB,EAAgBlnD,GAEhC,GA5EkC,IA4E9BmoD,EAEEH,EAAY1nD,QAAUN,EAAI,MAC5BgoD,EAAY1nD,OAAOphB,IAAM2mE,EAAKzH,SAAS4J,EAAY1nD,OAAOphB,KAAO,GAAK2nE,EAAgB7mD,EAAKrU,EAASq8D,EAAY1nD,OAAO+mD,UAErH17D,EAAQi7D,UAAUtrE,QAAUqQ,EAAQi7D,UAAUnvD,SAASuwD,EAAYX,WACrEW,EAAYznD,MAAQ,GACQjc,MAAxB0jE,EAAYI,WAAyBJ,EAAYI,SAAW,CAAC,GACjEJ,EAAY9oE,IAAM4oE,EAAQ30D,OAAO60D,EAAYK,WAAa,EAAGroD,EAAIjY,MAAQigE,EAAYK,WAAa,IAEpGL,EAAcA,EAAY1nD,YACrB,GAvF8C,IAuF1C6nD,EACT,GAAIx8D,EAAQ46D,aAAc,CAExB,IAAM+B,EAAY,IAAIxC,EAAQn6D,EAAQ46D,aAAcyB,EAAahoD,EAAI,IACrEsoD,EAAUF,SAAWX,EAAmBznD,EAAI,GAAIrU,GAChDq8D,EAAYO,SAASD,GAErBN,EAAY9oE,IAAM2mE,EAAKzH,SAAS4J,EAAY9oE,KAAOyM,EAAQ66D,kBAEvDxmD,EAAI,MACNgoD,EAAY9oE,KAAO2nE,EAAgB7mD,EAAKrU,GAAAA,MAG1Cq8D,EAAY9oE,KAAO8oE,EAAY9oE,KAAO,KAAO8gB,EAAI,IAAM,IAAM6mD,EAAgB7mD,EAAKrU,QAE/E,GAtGoC,IAsGhCw8D,EAA0B,CAC/BH,GAAehoD,EAAI,MACrBgoD,EAAY9oE,IAAM2mE,EAAKzH,SAAS4J,EAAY9oE,KAAO,GAAK2nE,EAAgB7mD,EAAKrU,IAG/E,IAAM28D,EAAY,IAAIxC,EAAQn6D,EAAQw6D,gBAAkBnmD,EAAI,GAAKA,EAAI,GAAIgoD,EAAa,IAClFhoD,EAAI,IAAMA,EAAI,GAAG1kB,OAAS,IAC5B0kB,EAAI,GAAKA,EAAI,GAAG7M,OAAO,EAAG6M,EAAI,GAAG1kB,OAAS,IAE5CgtE,EAAUF,SAAWX,EAAmBznD,EAAI,GAAIrU,GAChDq8D,EAAYO,SAASD,EAAAA,KAChB,CAEL,IAAMA,EAAY,IAAIxC,EACpBn6D,EAAQw6D,gBAAkBnmD,EAAI,GAAKA,EAAI,GACvCgoD,EACAnB,EAAgB7mD,EAAKrU,IAEnBA,EAAQi7D,UAAUtrE,QAAUqQ,EAAQi7D,UAAUnvD,SAAS6wD,EAAUjB,WACnEiB,EAAUD,WAAWroD,EAAIjY,MAAQiY,EAAI,GAAG1kB,QAE1CgtE,EAAUF,SAAWX,EAAmBznD,EAAI,GAAIrU,GAChDq8D,EAAYO,SAASD,GACrBN,EAAcM,CAGhBtoD,CAAAA,EAAMkoD,EACNA,EAAUD,EAAS70D,KAAK00D,EAG1B,QAAOC,CAAAA,CAAAA,EAAAA,SAAAA,EAAAA,EAAAA,GCzITjwD,EAAAA,EAAAA,EAAAA,KAAAA,WAAA,8BAoBM8pD,EApBN9pD,EAAAA,EAAAA,EAAAA,GAoBoB,0BAUP0wD,EAAc,SAAC3lE,GAI1B,OAHA++D,EAAM,+CAAiD/+D,EAAIL,SAAWK,EAAIL,SAASE,OAAS,qBAAuBG,EAAI0H,MAG/G1H,EAAI0H,MACV,KAAKjD,EAAAA,EAAmBmhE,QACxB,KAAKnhE,EAAAA,EAAmBohE,OACxB,KAAKphE,EAAAA,EAAmBqhE,QACtB,OAAO,EAET,KAAKrhE,EAAAA,EAAmBshE,QACtB,OAAO,EAGX,QAAK/lE,EAAIL,UAML,KAAOK,EAAIL,SAASE,QAAUG,EAAIL,SAASE,QAAU,ovBCjD3D,KAAMgrB,QAAU,YAAC,OAAIkF,mBAAI2kC,GAAGt9C,KAAI,YAAC,OAAI/R,EAAEqO,WAAW,OAC5CsyD,eAAiBn7C,QAAQ,wBACzBo7C,iBAAmBp7C,QAAQ,uBAC3Bq7C,SAAWr7C,QAAQ,eAEzB,SAASs7C,aAAaC,GAIrB,IAJsC,IAAZjvE,EAAYiW,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAAH,EAC/B6H,EAAImxD,EAAIjvE,GACRkvE,EAAM,EACN5hE,EAAI,IACCA,EAAI,GACZ4hE,GAAO,IACPpxD,GAAKmxD,EAAIjvE,EAASsN,GAAK4hE,EAGxB,OAAOpxD,CAGR,KAAM6B,SAAW,YAChB,KAAMymC,aAAiBzqC,YAAcyqC,aAAiBtqC,aAAenC,OAAOvF,SAASgyC,IACpF,MAAM,IAAIr5C,UAAJ,8GAA6Hq5C,GAA7H,MAGP,IAAM6oB,EAAM7oB,aAAiBzqC,WAAayqC,EAAQ,IAAIzqC,WAAWyqC,GAEjE,KAAM6oB,GAAOA,EAAI3tE,OAAS,GACzB,OAAO,KAGR,IAAM6tE,EAAQ,SAACv6C,EAAQjjB,GACtBA,EAAUX,OAAOQ,OAAO,CACvBxR,OAAQ,GACN2R,GAEH,IAAK,IAAIrE,EAAI,EAAGA,EAAIsnB,EAAOtzB,OAAQgM,IAElC,GAAIqE,EAAQy9D,MAEX,GAAIx6C,EAAOtnB,MAAQqE,EAAQy9D,KAAK9hE,GAAK2hE,EAAI3hE,EAAIqE,EAAQ3R,SACpD,OAAO,OAEF,GAAI40B,EAAOtnB,KAAO2hE,EAAI3hE,EAAIqE,EAAQ3R,QACxC,OAAO,EAIT,OAAO,GAGFqvE,EAAc,SAACz6C,EAAQjjB,GAAT,OAAqBw9D,EAAMz7C,QAAQkB,GAASjjB,EAAAA,EAEhE,GAAIw9D,EAAM,CAAC,IAAM,IAAM,MACtB,MAAO,CACNzO,IAAK,MACLH,KAAM,cAIR,GAAI4O,EAAM,CAAC,IAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,KACpD,MAAO,CACNzO,IAAK,MACLH,KAAM,aAIR,GAAI4O,EAAM,CAAC,GAAM,GAAM,KACtB,MAAO,CACNzO,IAAK,MACLH,KAAM,aAIR,GAAI4O,EAAM,CAAC,GAAM,GAAM,GAAM,IAAO,CAACnvE,OAAQ,IAC5C,MAAO,CACN0gE,IAAK,OACLH,KAAM,cAIR,GAAI4O,EAAM,CAAC,GAAM,GAAM,GAAM,KAC5B,MAAO,CACNzO,IAAK,OACLH,KAAM,cAKR,IACE4O,EAAM,CAAC,GAAM,GAAM,GAAM,KAASA,EAAM,CAAC,GAAM,GAAM,EAAK,OAC3DA,EAAM,CAAC,GAAM,IAAO,CAACnvE,OAAQ,IAE7B,MAAO,CACN0gE,IAAK,MACLH,KAAM,qBAIR,GACC4O,EAAM,CAAC,GAAM,GAAM,GAAM,KACzBA,EAAM,CAAC,GAAM,GAAM,EAAK,KAExB,MAAO,CACNzO,IAAK,MACLH,KAAM,cAIR,GAAI4O,EAAM,CAAC,GAAM,KAChB,MAAO,CACNzO,IAAK,MACLH,KAAM,aAIR,GAAI4O,EAAM,CAAC,GAAM,GAAM,MACtB,MAAO,CACNzO,IAAK,MACLH,KAAM,sBAIR,GAAI4O,EAAM,CAAC,GAAM,GAAM,GAAM,KAC5B,MAAO,CACNzO,IAAK,MACLH,KAAM,6BAMR,GAAI4O,EAAM,CAAC,GAAM,GAAM,EAAK,IAAO,CAClC,GACCA,EAAM,CAAC,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,IAAM,KAAO,CAACnvE,OAAQ,KAEzL,MAAO,CACN0gE,IAAK,OACLH,KAAM,wBAKR,GAAI4O,EAAMN,eAAgB,CAAC7uE,OAAQ,KAClC,MAAO,CACN0gE,IAAK,MACLH,KAAM,2BAIR,GAAI8O,EAAY,kDAAmD,CAACrvE,OAAQ,KAC3E,MAAO,CACN0gE,IAAK,MACLH,KAAM,2CAIR,GAAI8O,EAAY,yDAA0D,CAACrvE,OAAQ,KAClF,MAAO,CACN0gE,IAAK,MACLH,KAAM,kDAIR,GAAI8O,EAAY,0DAA2D,CAACrvE,OAAQ,KACnF,MAAO,CACN0gE,IAAK,MACLH,KAAM,mDAUR,IAAM+O,EAAyB,SAACh2D,GAAD,IAAMi2D,EAANt5D,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAAgB,EAAhB,OAAsBqD,EAAIuS,WAAU,SAAC5R,EAAI3M,EAAGgM,GAAR,OAAgBhM,GAAKiiE,GAAsB,KAAXj2D,EAAIhM,IAA8B,KAAfgM,EAAIhM,EAAI,IAA8B,IAAfgM,EAAIhM,EAAI,IAA6B,IAAfgM,EAAIhM,EAAI,OAEvKkiE,EAAiB,EACjBC,GAAAA,EACAvkE,EAAO,KAEX,EAAG,CACF,IAAMlL,EAASwvE,EAAiB,GAyBhC,GAvBKC,IACJA,EAAaN,EAAML,iBAAkB,CAAC9uE,OAAAA,KAAYmvE,EAAMJ,SAAU,CAAC/uE,OAAAA,KAG/DkL,IACAmkE,EAAY,QAAS,CAACrvE,OAAAA,IACzBkL,EAAO,CACNw1D,IAAK,OACLH,KAAM,2EAEG8O,EAAY,OAAQ,CAACrvE,OAAAA,IAC/BkL,EAAO,CACNw1D,IAAK,OACLH,KAAM,6EAEG8O,EAAY,MAAO,CAACrvE,OAAAA,MAC9BkL,EAAO,CACNw1D,IAAK,OACLH,KAAM,uEAKLkP,GAAavkE,EAChB,OAAOA,EAGRskE,EAAiBF,EAAuBL,EAAKjvE,EAAAA,OACrCwvE,GAAkB,GAG3B,GAAItkE,EACH,OAAOA,CAIT,IACCikE,EAAM,CAAC,GAAM,OACD,IAAXF,EAAI,IAAyB,IAAXA,EAAI,IAAyB,IAAXA,EAAI,MAC7B,IAAXA,EAAI,IAAyB,IAAXA,EAAI,IAAyB,IAAXA,EAAI,IAEzC,MAAO,CACNvO,IAAK,MACLH,KAAM,mBAIR,GAAI4O,EAAM,CAAC,IAAM,IAAM,IAAM,GAAM,KAAO,CAACnvE,OAAQ,MAClD,MAAO,CACN0gE,IAAK,MACLH,KAAM,qBAIR,GACC4O,EAAM,CAAC,GAAM,GAAM,IAAM,GAAM,GAAM,MACzB,IAAXF,EAAI,IAAyB,IAAXA,EAAI,IAEvB,MAAO,CACNvO,IAAK,MACLH,KAAM,gCAIR,GAAI4O,EAAM,CAAC,GAAM,IAAM,IACtB,MAAO,CACNzO,IAAK,KACLH,KAAM,oBAIR,GAAI4O,EAAM,CAAC,GAAM,GAAM,MACtB,MAAO,CACNzO,IAAK,MACLH,KAAM,uBAIR,GAAI4O,EAAM,CAAC,GAAM,IAAM,IAAM,IAAM,GAAM,KACxC,MAAO,CACNzO,IAAK,KACLH,KAAM,+BAIR,GAAI4O,EAAM,CAAC,IAAM,IAChB,MAAO,CACNzO,IAAK,MACLH,KAAM,iCAIR,GAAI4O,EAAM,CAAC,GAAM,IAAM,IAAM,MAE3BA,EAAM,CAAC,EAAK,EAAK,KAASA,EAAM,CAAC,IAAM,IAAM,IAAM,KAAO,CAACnvE,OAAQ,MAEjEmvE,EAAM,CAAC,IAAM,IAAM,GAAM,IAAO,CAACnvE,OAAQ,KACzCmvE,EAAM,CAAC,IAAM,IAAM,GAAM,IAAO,CAACnvE,OAAQ,KACzCmvE,EAAM,CAAC,IAAM,IAAM,IAAM,KAAO,CAACnvE,OAAQ,KACzCmvE,EAAM,CAAC,IAAM,IAAM,IAAM,IAAO,CAACnvE,OAAQ,KACzCmvE,EAAM,CAAC,IAAM,IAAM,IAAM,IAAO,CAACnvE,OAAQ,KACzCmvE,EAAM,CAAC,GAAM,GAAM,IAAO,CAACnvE,OAAQ,KACnCmvE,EAAM,CAAC,IAAM,GAAM,IAAM,KAAO,CAACnvE,OAAQ,KAG5C,MAAO,CACN0gE,IAAK,MACLH,KAAM,aAIR,GAAI4O,EAAM,CAAC,GAAM,GAAM,IAAM,MAC5B,MAAO,CACNzO,IAAK,MACLH,KAAM,cAKR,GAAI4O,EAAM,CAAC,GAAM,GAAM,IAAM,MAAQ,CACpC,IAAMO,EAAST,EAAI5G,SAAS,EAAG,MACzBsH,EAAQD,EAAO7jD,WAAU,SAAC5R,EAAI3M,EAAGgM,GAAR,OAA2B,KAAXA,EAAIhM,IAA8B,MAAfgM,EAAIhM,EAAI,MAE1E,IAAe,IAAXqiE,EAAc,CACjB,IAAMC,EAAaD,EAAQ,EACrBE,EAAc,SAAAjyD,GAAI,OAAIgb,mBAAI1tB,GAAMihC,OAAM,SAACj+B,EAAGZ,GAAJ,OAAUoiE,EAAOE,EAAatiE,KAAOY,EAAEqO,WAAW,OAE9F,GAAIszD,EAAY,YACf,MAAO,CACNnP,IAAK,MACLH,KAAM,oBAIR,GAAIsP,EAAY,QACf,MAAO,CACNnP,IAAK,OACLH,KAAM,cAMV,IAAI4O,EAAM,CAAC,EAAK,EAAK,EAAK,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,MACzEA,EAAM,CAAC,IAAM,IAAM,IAAM,KAAO,CAACnvE,OAAQ,KACzCmvE,EAAM,CAAC,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAO,CAACnvE,OAAQ,KACjEmvE,EAAM,CAAC,IAAM,IAAM,GAAM,KAAO,CAACnvE,OAAQ,KACzCmvE,EAAM,CAAC,IAAM,IAAM,IAAM,KAAO,CAACnvE,OAAQ,KACzCmvE,EAAM,CAAC,IAAM,IAAM,IAAM,KAAO,CAACnvE,OAAQ,IACzC,MAAO,CACN0gE,IAAK,MACLH,KAAM,mBAKR,GAAI4O,EAAM,CAAC,GAAM,GAAM,GAAM,KAAQ,CACpC,GAAIA,EAAM,CAAC,GAAM,GAAM,IAAO,CAACnvE,OAAQ,IACtC,MAAO,CACN0gE,IAAK,MACLH,KAAM,iBAIR,GAAI4O,EAAM,CAAC,GAAM,GAAM,GAAM,IAAO,CAACnvE,OAAQ,IAC5C,MAAO,CACN0gE,IAAK,MACLH,KAAM,kBAKR,GAAI4O,EAAM,CAAC,GAAM,GAAM,GAAM,IAAO,CAACnvE,OAAQ,IAC5C,MAAO,CACN0gE,IAAK,MACLH,KAAM,cAMT,IAAI4O,EAAM,CAAC,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,MAAQ,CAGxE,IAAInvE,EAAS,GACb,EAAG,CACF,IAAM8vE,EAAad,aAAaC,EAAKjvE,EAAS,IAC9C,GAAImvE,EAAM,CAAC,IAAM,EAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,EAAM,IAAM,GAAM,GAAM,GAAM,KAAO,CAACnvE,OAAAA,IAAU,CAEtH,GAAImvE,EAAM,CAAC,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,EAAM,IAAM,GAAM,GAAM,GAAM,IAAO,CAACnvE,OAAQA,EAAS,KAE7H,MAAO,CACN0gE,IAAK,MACLH,KAAM,kBAIR,GAAI4O,EAAM,CAAC,IAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,EAAM,IAAM,GAAM,GAAM,GAAM,IAAO,CAACnvE,OAAQA,EAAS,KAE7H,MAAO,CACN0gE,IAAK,MACLH,KAAM,kBAIR,KAGDvgE,CAAAA,GAAU8vE,CAAAA,OACF9vE,EAAS,IAAMivE,EAAI3tE,QAG5B,MAAO,CACNo/D,IAAK,MACLH,KAAM,yBAIR,IACC4O,EAAM,CAAC,EAAK,EAAK,EAAK,OACtBA,EAAM,CAAC,EAAK,EAAK,EAAK,MAEtB,MAAO,CACNzO,IAAK,MACLH,KAAM,cAIR,GAAI4O,EAAM,CAAC,IAAM,IAAM,IAAM,IAAM,GAAM,KAAO,CAACnvE,OAAQ,IACxD,MAAO,CACN0gE,IAAK,MACLH,KAAM,cAKR,IAAK,IAAIr2C,EAAQ,EAAGA,EAAQ,GAAKA,EAAS+kD,EAAI3tE,OAAS,GAAK4oB,IAAS,CACpE,GACCilD,EAAM,CAAC,GAAM,GAAM,IAAO,CAACnvE,OAAQkqB,KACnCilD,EAAM,CAAC,IAAM,KAAO,CAACnvE,OAAQkqB,EAAOklD,KAAM,CAAC,IAAM,OAEjD,MAAO,CACN1O,IAAK,MACLH,KAAM,cAIR,GACC4O,EAAM,CAAC,IAAM,KAAO,CAACnvE,OAAQkqB,EAAOklD,KAAM,CAAC,IAAM,OAEjD,MAAO,CACN1O,IAAK,MACLH,KAAM,cAIR,GACC4O,EAAM,CAAC,IAAM,KAAO,CAACnvE,OAAQkqB,EAAOklD,KAAM,CAAC,IAAM,OAEjD,MAAO,CACN1O,IAAK,MACLH,KAAM,cAIR,GACC4O,EAAM,CAAC,IAAM,KAAO,CAACnvE,OAAQkqB,EAAOklD,KAAM,CAAC,IAAM,OAEjD,MAAO,CACN1O,IAAK,MACLH,KAAM,aAKT,IACC4O,EAAM,CAAC,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,IAAO,CAACnvE,OAAQ,IAE3D,MAAO,CACN0gE,IAAK,MACLH,KAAM,aAKR,GAAI4O,EAAM,CAAC,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,KAAO,CAACnvE,OAAQ,KACpE,MAAO,CACN0gE,IAAK,OACLH,KAAM,cAKR,GAAI4O,EAAM,CAAC,GAAM,IAAM,IAAM,KAI5B,OAAIA,EAAM,CAAC,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAO,CAACnvE,OAAQ,KACvD,CACN0gE,IAAK,MACLH,KAAM,aAKJ4O,EAAM,CAAC,EAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAO,CAACnvE,OAAQ,KACvD,CACN0gE,IAAK,MACLH,KAAM,aAKJ4O,EAAM,CAAC,IAAM,GAAM,GAAM,GAAM,IAAO,CAACnvE,OAAQ,KAC3C,CACN0gE,IAAK,MACLH,KAAM,aAKJ4O,EAAM,CAAC,GAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAO,CAACnvE,OAAQ,KACvD,CACN0gE,IAAK,MACLH,KAAM,aAKJ4O,EAAM,CAAC,EAAM,IAAM,IAAM,IAAM,GAAM,IAAM,KAAO,CAACnvE,OAAQ,KACvD,CACN0gE,IAAK,MACLH,KAAM,aAKD,CACNG,IAAK,MACLH,KAAM,mBAIR,GAAI4O,EAAM,CAAC,IAAM,GAAM,GAAM,KAC5B,MAAO,CACNzO,IAAK,OACLH,KAAM,gBAIR,GAAI4O,EAAM,CAAC,GAAM,GAAM,GAAM,KAC5B,MAAO,CACNzO,IAAK,MACLH,KAAM,aAIR,GAAI4O,EAAM,CAAC,IAAM,IAAM,IAAM,MAC5B,MAAO,CACNzO,IAAK,KACLH,KAAM,iBAIR,GAAI4O,EAAM,CAAC,GAAM,GAAM,GAAM,GAAM,GAAM,KACxC,MAAO,CACNzO,IAAK,MACLH,KAAM,aAIR,GAAI4O,EAAM,CAAC,GAAM,GAAM,GAAM,KAC5B,MAAO,CACNzO,IAAK,MACLH,KAAM,mBAIR,GAAI4O,EAAM,CAAC,GAAM,KAChB,MAAO,CACNzO,IAAK,MACLH,KAAM,4BAIR,IACa,KAAX0O,EAAI,IAA0B,KAAXA,EAAI,KACxBE,EAAM,CAAC,GAAM,IAAO,CAACnvE,OAAQ,IAE7B,MAAO,CACN0gE,IAAK,MACLH,KAAM,iCAIR,GAAI4O,EAAM,CAAC,IAAM,GAAM,IAAM,IAAM,MAClC,MAAO,CACNzO,IAAK,MACLH,KAAM,mBAIR,GAAI4O,EAAM,CAAC,EAAM,GAAM,IAAM,MAC5B,MAAO,CACNzO,IAAK,OACLH,KAAM,oBAIR,GACC4O,EAAM,CAAC,IAAM,GAAM,GAAM,OAExBA,EAAM,CAAC,EAAM,EAAM,EAAM,GAAO,CAACnvE,OAAQ,KACzCmvE,EAAM,CAAC,GAAM,GAAM,GAAM,IAAO,CAACnvE,OAAQ,KAG1C,MAAO,CACN0gE,IAAK,OACLH,KAAM,aAIR,GACC4O,EAAM,CAAC,IAAM,GAAM,GAAM,OAExBA,EAAM,CAAC,EAAM,EAAM,EAAM,GAAO,CAACnvE,OAAQ,KACzCmvE,EAAM,CAAC,GAAM,GAAM,GAAM,IAAO,CAACnvE,OAAQ,KAG1C,MAAO,CACN0gE,IAAK,QACLH,KAAM,cAIR,GACC4O,EAAM,CAAC,GAAM,IAAO,CAACnvE,OAAQ,OAE5BmvE,EAAM,CAAC,EAAM,EAAM,GAAO,CAACnvE,OAAQ,KACnCmvE,EAAM,CAAC,EAAM,EAAM,GAAO,CAACnvE,OAAQ,KACnCmvE,EAAM,CAAC,EAAM,EAAM,GAAO,CAACnvE,OAAQ,KAGpC,MAAO,CACN0gE,IAAK,MACLH,KAAM,iCAIR,GAAI4O,EAAM,CAAC,EAAM,EAAM,EAAM,EAAM,IAClC,MAAO,CACNzO,IAAK,MACLH,KAAM,YAIR,GAAI4O,EAAM,CAAC,GAAM,GAAM,GAAM,GAAM,IAClC,MAAO,CACNzO,IAAK,MACLH,KAAM,YAIR,GAAI4O,EAAM,CAAC,EAAM,EAAM,EAAM,IAC5B,MAAO,CACNzO,IAAK,MACLH,KAAM,gBAIR,GAAI4O,EAAM,CAAC,EAAM,EAAM,EAAM,IAC5B,MAAO,CACNzO,IAAK,MACLH,KAAM,gBAIR,GAAI4O,EAAM,CAAC,GAAM,GAAM,GAAM,IAC5B,MAAO,CACNzO,IAAK,MACLH,KAAM,eAIR,GAAI4O,EAAM,CAAC,GAAM,KAChB,MAAO,CACNzO,IAAK,KACLH,KAAM,0BAIR,GAAI4O,EAAM,CAAC,IAAM,GAAM,IAAM,GAAM,GAAM,IACxC,MAAO,CACNzO,IAAK,KACLH,KAAM,oBAIR,GAAI4O,EAAM,CAAC,GAAM,GAAM,GAAM,MAC5B,MAAO,CACNzO,IAAK,SACLH,KAAM,yBAIR,GAAI4O,EAAM,CAAC,GAAM,GAAM,GAAM,KAC5B,MAAO,CACNzO,IAAK,MACLH,KAAM,kCAIR,GAAI4O,EAAM,CAAC,GAAM,IAAM,GAAM,KAC5B,MAAO,CACNzO,IAAK,MACLH,KAAM,yCAIR,GACC4O,EAAM,CAAC,GAAM,GAAM,GAAM,MACzBA,EAAM,CAAC,GAAM,GAAM,GAAM,KAEzB,MAAO,CACNzO,IAAK,MACLH,KAAM,qCAKR,GAAI4O,EAAM,CAAC,GAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,MAClI,MAAO,CACNzO,IAAK,MACLH,KAAM,qBAIR,GAAI4O,EAAM,CAAC,GAAM,GAAM,GAAM,IAAM,GAAM,IAAM,KAC9C,MAAO,CACNzO,IAAK,KACLH,KAAM,8BAIR,GAAI4O,EAAM,CAAC,IAAM,IAAM,IAAM,MAC5B,MAAO,CACNzO,IAAK,MACLH,KAAM,qBAIR,GACC4O,EAAM,CAAC,GAAM,OACbA,EAAM,CAAC,GAAM,MAEb,MAAO,CACNzO,IAAK,IACLH,KAAM,0BAIR,GAAI4O,EAAM,CAAC,GAAM,GAAM,GAAM,KAC5B,MAAO,CACNzO,IAAK,KACLH,KAAM,sBAIR,GAAI4O,EAAM,CAAC,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,MACpD,MAAO,CACNzO,IAAK,MACLH,KAAM,qBAIR,GAAI4O,EAAM,CAAC,EAAM,GAAM,GAAM,GAAM,EAAM,EAAM,EAAM,EAAM,GAAM,EAAM,EAAM,EAAM,EAAM,IACxF,MAAO,CACNzO,IAAK,MACLH,KAAM,mBAIR,GAAI4O,EAAM,CAAC,IAAO,CAACnvE,OAAQ,MAAQmvE,EAAM,CAAC,IAAO,CAACnvE,OAAQ,OAASmvE,EAAM,CAAC,IAAO,CAACnvE,OAAQ,OACzF,MAAO,CACN0gE,IAAK,MACLH,KAAM,cAIR,GAAI4O,EAAM,CAAC,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,KAC9C,MAAO,CACNzO,IAAK,QACLH,KAAM,yBAIR,GAAI4O,EAAM,CAAC,GAAM,GAAM,GAAM,MAC5B,MAAO,CACNzO,IAAK,MACLH,KAAM,aAIR,GAAI4O,EAAM,CAAC,EAAM,EAAM,EAAM,GAAM,IAAM,GAAM,GAAM,GAAM,GAAM,GAAM,IAAM,KAAQ,CAGpF,GAAIA,EAAM,CAAC,IAAM,IAAM,GAAM,IAAO,CAACnvE,OAAQ,KAC5C,MAAO,CACN0gE,IAAK,MACLH,KAAM,aAIR,GAAI4O,EAAM,CAAC,IAAM,IAAM,IAAM,IAAO,CAACnvE,OAAQ,KAC5C,MAAO,CACN0gE,IAAK,MACLH,KAAM,aAIR,GAAI4O,EAAM,CAAC,IAAM,IAAM,IAAM,IAAO,CAACnvE,OAAQ,KAC5C,MAAO,CACN0gE,IAAK,MACLH,KAAM,aAIR,GAAI4O,EAAM,CAAC,IAAM,IAAM,IAAM,IAAO,CAACnvE,OAAQ,KAC5C,MAAO,CACN0gE,IAAK,MACLH,KAAM,YAKT,IAAI4O,EAAM,CAAC,GAAM,GAAM,GAAM,KAC5B,MAAO,CACNzO,IAAK,MACLH,KAAM,cAIR,GAAI8O,EAAY,UACf,MAAO,CACN3O,IAAK,MACLH,KAAM,mBAIR,GAAI4O,EAAM,CAAC,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,IAAO,CAACnvE,OAAQ,KACpE,MAAO,CACN0gE,IAAK,OACLH,KAAM,kCAKR,GAAI4O,EAAM,CAAC,IAAM,IAAM,IAAM,KAAO,CAACnvE,OAAQ,IAAK,CACjD,GAAImvE,EAAM,CAAC,IAAM,IAAM,IAAM,IAAO,CAACnvE,OAAQ,IAC5C,MAAO,CACN0gE,IAAK,OACLH,KAAM,cAIR,GAAI4O,EAAM,CAAC,IAAM,IAAM,IAAM,IAAO,CAACnvE,OAAQ,IAC5C,MAAO,CACN0gE,IAAK,OACLH,KAAM,uBAIR,GAAI4O,EAAM,CAAC,IAAM,IAAM,IAAM,IAAO,CAACnvE,OAAQ,KAAOmvE,EAAM,CAAC,IAAM,IAAM,IAAM,KAAO,CAACnvE,OAAQ,IAC5F,MAAO,CACN0gE,IAAK,OACLH,KAAM,cAIR,GAAI4O,EAAM,CAAC,IAAM,IAAM,IAAM,IAAO,CAACnvE,OAAQ,KAAOmvE,EAAM,CAAC,IAAM,IAAM,IAAM,KAAO,CAACnvE,OAAQ,IAC5F,MAAO,CACN0gE,IAAK,OACLH,KAAM,sBAKT,QAAI4O,EAAM,CAAC,IAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,IAAM,GAAM,GAAM,GAAM,KACrE,CACNzO,IAAK,MACLH,KAAM,aAIJ4O,EAAM,CAAC,GAAM,GAAM,GAAM,IAAO,CAACnvE,OAAQ,MACrC,CACN0gE,IAAK,MACLH,KAAM,qBAKJ4O,EAAM,CAAC,GAAM,GAAM,MAQnBA,EAAM,CAAC,GAAM,GAAM,GAAM,KAPrB,CACNzO,IAAK,MACLH,KAAM,oBAYJ4O,EAAM,CAAC,GAAM,GAAM,GAAM,GAAM,GAAM,KACjC,CACNzO,IAAK,MACLH,KAAM,iBAIJ4O,EAAM,CAAC,IAAM,IAAM,GAAM,GAAM,EAAM,EAAM,EAAM,IAC7C,CACNzO,IAAK,MACLH,KAAM,qBAIJ4O,EAAM,CAAC,IAAM,IAAM,IAAM,OAAUA,EAAM,CAAC,IAAM,IAAM,IAAM,MACxD,CACNzO,IAAK,OACLH,KAAM,gCAID,MAGR76D,OAAOC,QAAUga,SAEjBja,OAAOC,QAAQ+X,QAAUiC,SAEzB3O,OAAOE,eAAeyO,SAAU,eAAgB,CAAC/W,MAAO,OAExDlD,OAAOC,QAAQoqE,OAAS,SAAAC,gBAAc,OAAI,IAAIvpE,SAAQ,SAACC,QAASC,QAE/D,IAAMopE,OAASE,KAAK,UAALA,CAAgB,UAE/BD,eAAejL,KAAK,YAAY,WAC/B,IAAMmL,EAAO,IAAIH,OAAOI,YAClBrkC,EAAQkkC,eAAe3lE,KAAK3E,OAAOC,QAAQyqE,eAAiBJ,eAAe3lE,OACjF,IACC6lE,EAAKvwD,SAAWA,SAASmsB,EAK1BkkC,CAJE,MAAO7/D,GACRxJ,OAAOwJ,EAGR6/D,CAAAA,eAAexgE,QAAQs8B,GAEnBikC,OAAOM,SACV3pE,QAAQqpE,OAAOM,SAASL,eAAgBE,GAAM,gBAE9CxpE,QAAQspE,eAAeh0D,KAAKk0D,GAAAA,GAAAA,GAAAA,CAAAA,EAAAA,SAAAA,EAAAA,EAAAA,GCn7B/B,IAAII,EAAY5qE,EAAOC,QAAQ2qE,UAAYzqE,EAAQ,IAEnDH,EAAOC,QAAQmjE,gBAAkBjjE,EAAQ,IAAaijE,gBACtDpjE,EAAOC,QAAQgjE,gBAAkB9iE,EAAQ,IAAa8iE,gBACtDjjE,EAAOC,QAAQ4jE,YAAc1jE,EAAQ,IAAa0jE,YAClD7jE,EAAOC,QAAQ4qE,iBAAmB1qE,EAAQ,IAAU0qE,iBACpD7qE,EAAOC,QAAQ6qE,KAAO3qE,EAAQ,IAAU2qE,KAExC9qE,EAAOC,QAAQ8qE,SAAW,SAAUzkE,EAAU8O,EAAQnJ,GAEpD,OADQ,IAAI2+D,GACHG,SAASzkE,EAAU8O,EAAQnJ,EAAAA,CAAAA,EAAAA,SAAAA,EAAAA,EAAAA,uOCWtC,KAAI++D,EAAW7qE,EAAQ,IACnBgmE,EAAOhmE,EAAQ,IASnB,SAAS8qE,IACP1jE,KAAK3B,SAAW,KAChB2B,KAAK2jE,QAAU,KACf3jE,KAAKtF,KAAO,KACZsF,KAAKoL,KAAO,KACZpL,KAAKwL,KAAO,KACZxL,KAAKuL,SAAW,KAChBvL,KAAKsL,KAAO,KACZtL,KAAKqL,OAAS,KACdrL,KAAKyS,MAAQ,KACbzS,KAAKyL,SAAW,KAChBzL,KAAK6J,KAAO,KACZ7J,KAAKkL,KAAO,IAnBdxS,CAAAA,EAAQ4P,MAAQs7D,EAChBlrE,EAAQe,QA0ZR,SAAoBuH,EAAQ6iE,GAC1B,OAAOD,EAAS5iE,GAAAA,GAAQ,GAAavH,QAAQoqE,EAAAA,EA1Z/CnrE,EAAQorE,cAiaR,SAA0B9iE,EAAQ6iE,GAChC,OAAK7iE,EACE4iE,EAAS5iE,GAAAA,GAAQ,GAAa8iE,cAAcD,GAD/BA,CAAAA,EAjatBnrE,EAAQ6kE,OAsVR,SAAmBj5D,GAMjB,OADIs6D,EAAKx2D,SAAS9D,KAAMA,EAAMs/D,EAASt/D,IACjCA,aAAeo/D,EACdp/D,EAAIi5D,SADuBmG,EAAI1kE,UAAUu+D,OAAOr8D,KAAKoD,EAAAA,EA1V9D5L,EAAQgrE,IAAMA,EAqBd,IAAIK,EAAkB,oBAClBC,EAAc,WAGdC,EAAoB,qCAOpBC,EAAS,CAAC,IAAK,IAAK,IAAK,KAAM,IAAK,KAAKpwE,OAHhC,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,OAM/CqwE,EAAa,CAAC,KAAMrwE,OAAOowE,GAK3BE,EAAe,CAAC,IAAK,IAAK,IAAK,IAAK,KAAKtwE,OAAOqwE,GAChDE,EAAkB,CAAC,IAAK,IAAK,KAE7BC,EAAsB,yBACtBC,EAAoB,+BAEpBC,EAAiB,CACfC,YAAAA,EACA,kBAGFC,EAAmB,CACjBD,YAAAA,EACA,kBAGFE,EAAkB,CAChBC,MAAAA,EACAC,OAAAA,EACAC,KAAAA,EACAC,QAAAA,EACAvzD,MAAAA,EACA,WACA,YACA,UACA,aACA,YAEFwzD,EAAcpsE,EAAQ,IAE1B,SAASgrE,EAASzoE,EAAK8pE,EAAkBC,GACvC,GAAI/pE,GAAOyjE,EAAKh3D,SAASzM,IAAQA,aAAeuoE,EAAK,OAAOvoE,EAE5D,IAAIgqE,EAAI,IAAIzB,EAEZ,OADAyB,EAAE78D,MAAMnN,EAAK8pE,EAAkBC,GACxBC,CAGTzB,CAAAA,EAAI1kE,UAAUsJ,MAAQ,SAASnN,EAAK8pE,EAAkBC,GACpD,IAAKtG,EAAKx2D,SAASjN,GACjB,MAAM,IAAI2E,UAAU,yCAA2CO,EAAOlF,IAMxE,IAAIiqE,EAAajqE,EAAImB,QAAQ,KACzB0pB,GACqB,IAAhBo/C,GAAqBA,EAAajqE,EAAImB,QAAQ,KAAQ,IAAM,IACjE+oE,EAASlqE,EAAI/G,MAAM4xB,GAEvBq/C,EAAO,GAAKA,EAAO,GAAGn8D,QADL,MACyB,KAG1C,IAAIo8D,EAFJnqE,EAAMkqE,EAAO77D,KAAKwc,GAQlB,GAFAs/C,EAAOA,EAAK/8D,QAEP28D,GAA+C,IAA1B/pE,EAAI/G,MAAM,KAAKC,OAAc,CAErD,IAAIkxE,EAAatB,EAAkB93D,KAAKm5D,GACxC,GAAIC,EAeF,OAdAvlE,KAAK6J,KAAOy7D,EACZtlE,KAAKkL,KAAOo6D,EACZtlE,KAAKyL,SAAW85D,EAAW,GACvBA,EAAW,IACbvlE,KAAKqL,OAASk6D,EAAW,GAEvBvlE,KAAKyS,MADHwyD,EACWD,EAAY18D,MAAMtI,KAAKqL,OAAOa,OAAO,IAErClM,KAAKqL,OAAOa,OAAO,IAEzB+4D,IACTjlE,KAAKqL,OAAS,GACdrL,KAAKyS,MAAQ,CAAC,GAETzS,IAIX,KAAIwlE,EAAQzB,EAAgB53D,KAAKm5D,GACjC,GAAIE,EAAO,CAET,IAAIC,GADJD,EAAQA,EAAM,IACS/nE,cACvBuC,KAAK3B,SAAWonE,EAChBH,EAAOA,EAAKp5D,OAAOs5D,EAAMnxE,OAO3B,IAAI6wE,GAAqBM,GAASF,EAAKl7D,MAAM,wBAAyB,CACpE,IAAIu5D,EAAgC,OAAtB2B,EAAKp5D,OAAO,EAAG,IACzBy3D,GAAa6B,GAASd,EAAiBc,KACzCF,EAAOA,EAAKp5D,OAAO,GACnBlM,KAAK2jE,SAAAA,EAIT,KAAKe,EAAiBc,KACjB7B,GAAY6B,IAAUb,EAAgBa,IAAU,CAmBnD,IADA,IASI9qE,EAAMgrE,EATNC,GAAW,EACNtlE,EAAI,EAAGA,EAAIgkE,EAAgBhwE,OAAQgM,KAE7B,KADTulE,EAAMN,EAAKhpE,QAAQ+nE,EAAgBhkE,QACP,IAAbslE,GAAkBC,EAAMD,KACzCA,EAAUC,GAyBd,KARgB,KATdF,GAFe,IAAbC,EAEOL,EAAKxkC,YAAY,KAIjBwkC,EAAKxkC,YAAY,IAAK6kC,MAM/BjrE,EAAO4qE,EAAKntE,MAAM,EAAGutE,GACrBJ,EAAOA,EAAKntE,MAAMutE,EAAS,GAC3B1lE,KAAKtF,KAAO4P,mBAAmB5P,IAIjCirE,GAAW,EACFtlE,EAAI,EAAGA,EAAI+jE,EAAa/vE,OAAQgM,IAAK,CAC5C,IAAIulE,GACS,KADTA,EAAMN,EAAKhpE,QAAQ8nE,EAAa/jE,QACJ,IAAbslE,GAAkBC,EAAMD,KACzCA,EAAUC,EAAAA,EAGG,IAAbD,IACFA,EAAUL,EAAKjxE,QAEjB2L,KAAKoL,KAAOk6D,EAAKntE,MAAM,EAAGwtE,GAC1BL,EAAOA,EAAKntE,MAAMwtE,GAGlB3lE,KAAK6lE,YAIL7lE,KAAKuL,SAAWvL,KAAKuL,UAAY,GAIjC,IAAIu6D,EAAoC,MAArB9lE,KAAKuL,SAAS,IACe,MAA5CvL,KAAKuL,SAASvL,KAAKuL,SAASlX,OAAS,GAGzC,IAAKyxE,EAEH,IADA,IAAIC,EAAY/lE,KAAKuL,SAASnX,MAAM,MACpBkM,GAAPD,EAAI,EAAO0lE,EAAU1xE,QAAQgM,EAAIC,EAAGD,IAAK,CAChD,IAAIupB,EAAOm8C,EAAU1lE,GACrB,GAAKupB,IACAA,EAAKxf,MAAMk6D,GAAsB,CAEpC,IADA,IAAI0B,EAAU,GACL/R,EAAI,EAAGhB,EAAIrpC,EAAKv1B,OAAQ4/D,EAAIhB,EAAGgB,IAClCrqC,EAAKta,WAAW2kD,GAAK,IAIvB+R,GAAW,IAEXA,GAAWp8C,EAAKqqC,GAIpB,IAAK+R,EAAQ57D,MAAMk6D,GAAsB,CACvC,IAAI2B,EAAaF,EAAU5tE,MAAM,EAAGkI,GAChC6lE,EAAUH,EAAU5tE,MAAMkI,EAAI,GAC9B8lE,EAAMv8C,EAAKxf,MAAMm6D,GACjB4B,IACFF,EAAWplE,KAAKslE,EAAI,IACpBD,EAAQ3jE,QAAQ4jE,EAAI,KAElBD,EAAQ7xE,SACVixE,EAAO,IAAMY,EAAQ18D,KAAK,KAAO87D,GAEnCtlE,KAAKuL,SAAW06D,EAAWz8D,KAAK,KAChC,OAMJxJ,CAAAA,KAAKuL,SAASlX,OAjND,IAkNf2L,KAAKuL,SAAW,GAGhBvL,KAAKuL,SAAWvL,KAAKuL,SAAS9N,cAG3BqoE,IAKH9lE,KAAKuL,SAAWk4D,EAAS2C,QAAQpmE,KAAKuL,WAGxC,IAAImR,EAAI1c,KAAKwL,KAAO,IAAMxL,KAAKwL,KAAO,GAClC1G,EAAI9E,KAAKuL,UAAY,GACzBvL,KAAKoL,KAAOtG,EAAI4X,EAChB1c,KAAKkL,MAAQlL,KAAKoL,KAId06D,IACF9lE,KAAKuL,SAAWvL,KAAKuL,SAASW,OAAO,EAAGlM,KAAKuL,SAASlX,OAAS,GAC/C,MAAZixE,EAAK,KACPA,EAAO,IAAMA,GAOnB,KAAKd,EAAeiB,GAKlB,IAASplE,EAAI,EAAGC,EAAI6jE,EAAW9vE,OAAQgM,EAAIC,EAAGD,IAAK,CACjD,IAAIgmE,EAAKlC,EAAW9jE,GACpB,IAA0B,IAAtBilE,EAAKhpE,QAAQ+pE,GAAjB,CAEA,IAAIC,EAAMxrE,mBAAmBurE,GACzBC,IAAQD,IACVC,EAAMC,OAAOF,IAEff,EAAOA,EAAKlxE,MAAMiyE,GAAI78D,KAAK88D,EAAAA,CAM/B,KAAIh7D,EAAOg6D,EAAKhpE,QAAQ,MACV,IAAVgP,IAEFtL,KAAKsL,KAAOg6D,EAAKp5D,OAAOZ,GACxBg6D,EAAOA,EAAKntE,MAAM,EAAGmT,IAEvB,IAAIk7D,EAAKlB,EAAKhpE,QAAQ,KAoBtB,IAnBY,IAARkqE,GACFxmE,KAAKqL,OAASi6D,EAAKp5D,OAAOs6D,GAC1BxmE,KAAKyS,MAAQ6yD,EAAKp5D,OAAOs6D,EAAK,GAC1BvB,IACFjlE,KAAKyS,MAAQuyD,EAAY18D,MAAMtI,KAAKyS,QAEtC6yD,EAAOA,EAAKntE,MAAM,EAAGquE,IACZvB,IAETjlE,KAAKqL,OAAS,GACdrL,KAAKyS,MAAQ,CAAC,GAEZ6yD,IAAMtlE,KAAKyL,SAAW65D,GACtBX,EAAgBc,IAChBzlE,KAAKuL,WAAavL,KAAKyL,WACzBzL,KAAKyL,SAAW,KAIdzL,KAAKyL,UAAYzL,KAAKqL,OAAQ,CAC5BqR,EAAI1c,KAAKyL,UAAY,GAAzB,IACI6kD,EAAItwD,KAAKqL,QAAU,GACvBrL,KAAK6J,KAAO6S,EAAI4zC,CAKlB,QADAtwD,KAAKkL,KAAOlL,KAAKu9D,SACVv9D,IAAAA,EAcT0jE,EAAI1kE,UAAUu+D,OAAS,WACrB,IAAI7iE,EAAOsF,KAAKtF,MAAQ,GACpBA,IAEFA,GADAA,EAAOI,mBAAmBJ,IACdwO,QAAQ,OAAQ,KAC5BxO,GAAQ,KAGV,IAAI2D,EAAW2B,KAAK3B,UAAY,GAC5BoN,EAAWzL,KAAKyL,UAAY,GAC5BH,EAAOtL,KAAKsL,MAAQ,GACpBF,GAAAA,EACAqH,EAAQ,GAERzS,KAAKoL,KACPA,EAAO1Q,EAAOsF,KAAKoL,KACVpL,KAAKuL,WACdH,EAAO1Q,IAAwC,IAAhCsF,KAAKuL,SAASjP,QAAQ,KACjC0D,KAAKuL,SACL,IAAMvL,KAAKuL,SAAW,KACtBvL,KAAKwL,OACPJ,GAAQ,IAAMpL,KAAKwL,OAInBxL,KAAKyS,OACLmsD,EAAKh3D,SAAS5H,KAAKyS,QACnB1O,OAAOsC,KAAKrG,KAAKyS,OAAOpe,SAC1Boe,EAAQuyD,EAAYv8D,UAAUzI,KAAKyS,QAGrC,IAAIpH,EAASrL,KAAKqL,QAAWoH,GAAU,IAAMA,GAAW,GAsBxD,OApBIpU,GAAoC,MAAxBA,EAAS6N,QAAQ,KAAY7N,GAAY,KAIrD2B,KAAK2jE,WACHtlE,GAAYsmE,EAAgBtmE,MAAAA,IAAc+M,GAC9CA,EAAO,MAAQA,GAAQ,IACnBK,GAAmC,MAAvBA,EAASC,OAAO,KAAYD,EAAW,IAAMA,IACnDL,IACVA,EAAO,IAGLE,GAA2B,MAAnBA,EAAKI,OAAO,KAAYJ,EAAO,IAAMA,GAC7CD,GAA+B,MAArBA,EAAOK,OAAO,KAAYL,EAAS,IAAMA,GAOhDhN,EAAW+M,GALlBK,EAAWA,EAASvC,QAAQ,SAAS,SAASkB,GAC5C,OAAOtP,mBAAmBsP,EAAAA,MAE5BiB,EAASA,EAAOnC,QAAQ,IAAK,QAEgBoC,CAAAA,EAO/Co4D,EAAI1kE,UAAUvF,QAAU,SAASoqE,GAC/B,OAAO7jE,KAAK8jE,cAAcF,EAASC,GAAAA,GAAU,IAActG,QAAAA,EAQ7DmG,EAAI1kE,UAAU8kE,cAAgB,SAASD,GACrC,GAAIjF,EAAKx2D,SAASy7D,GAAW,CAC3B,IAAIle,EAAM,IAAI+d,EACd/d,EAAIr9C,MAAMu7D,GAAAA,GAAU,GACpBA,EAAWle,CAKb,KAFA,IAAI33C,EAAS,IAAI01D,EACb+C,EAAQ1iE,OAAOsC,KAAKrG,MACf0mE,EAAK,EAAGA,EAAKD,EAAMpyE,OAAQqyE,IAAM,CACxC,IAAIC,EAAOF,EAAMC,GACjB14D,EAAO24D,GAAQ3mE,KAAK2mE,EAQtB,IAHA34D,EAAO1C,KAAOu4D,EAASv4D,KAGD,KAAlBu4D,EAAS34D,KAEX,OADA8C,EAAO9C,KAAO8C,EAAOuvD,SACdvvD,EAIT,GAAI61D,EAASF,UAAYE,EAASxlE,SAAU,CAG1C,IADA,IAAIuoE,EAAQ7iE,OAAOsC,KAAKw9D,GACfgD,EAAK,EAAGA,EAAKD,EAAMvyE,OAAQwyE,IAAM,CACxC,IAAIC,EAAOF,EAAMC,GACJ,aAATC,IACF94D,EAAO84D,GAAQjD,EAASiD,GAU5B,QANInC,EAAgB32D,EAAO3P,WACvB2P,EAAOzC,WAAayC,EAAOvC,WAC7BuC,EAAOnE,KAAOmE,EAAOvC,SAAW,KAGlCuC,EAAO9C,KAAO8C,EAAOuvD,SACdvvD,CAGT,IAAI61D,EAASxlE,UAAYwlE,EAASxlE,WAAa2P,EAAO3P,SAAU,CAS9D,IAAKsmE,EAAgBd,EAASxlE,UAAW,CAEvC,IADA,IAAIgI,EAAOtC,OAAOsC,KAAKw9D,GACdx6D,EAAI,EAAGA,EAAIhD,EAAKhS,OAAQgV,IAAK,CACpC,IAAI4pD,EAAI5sD,EAAKgD,GACb2E,EAAOilD,GAAK4Q,EAAS5Q,EAGvB,QADAjlD,EAAO9C,KAAO8C,EAAOuvD,SACdvvD,CAIT,IADAA,EAAO3P,SAAWwlE,EAASxlE,SACtBwlE,EAASz4D,MAASs5D,EAAiBb,EAASxlE,UAS/C2P,EAAOvC,SAAWo4D,EAASp4D,aAT+B,CAE1D,IADA,IAAIs7D,GAAWlD,EAASp4D,UAAY,IAAIrX,MAAM,KACvC2yE,EAAQ1yE,UAAYwvE,EAASz4D,KAAO27D,EAAQjkE,WAC9C+gE,EAASz4D,OAAMy4D,EAASz4D,KAAO,IAC/By4D,EAASt4D,WAAUs4D,EAASt4D,SAAW,IACzB,KAAfw7D,EAAQ,IAAWA,EAAQxkE,QAAQ,IACnCwkE,EAAQ1yE,OAAS,GAAG0yE,EAAQxkE,QAAQ,IACxCyL,EAAOvC,SAAWs7D,EAAQv9D,KAAK,IAWjC,IAPAwE,EAAO3C,OAASw4D,EAASx4D,OACzB2C,EAAOyE,MAAQoxD,EAASpxD,MACxBzE,EAAO5C,KAAOy4D,EAASz4D,MAAQ,GAC/B4C,EAAOtT,KAAOmpE,EAASnpE,KACvBsT,EAAOzC,SAAWs4D,EAASt4D,UAAYs4D,EAASz4D,KAChD4C,EAAOxC,KAAOq4D,EAASr4D,KAEnBwC,EAAOvC,UAAYuC,EAAO3C,OAAQ,CACpC,IAAIqR,EAAI1O,EAAOvC,UAAY,GACvB6kD,EAAItiD,EAAO3C,QAAU,GACzB2C,EAAOnE,KAAO6S,EAAI4zC,CAIpB,QAFAtiD,EAAO21D,QAAU31D,EAAO21D,SAAWE,EAASF,QAC5C31D,EAAO9C,KAAO8C,EAAOuvD,SACdvvD,CAGT,KAAIg5D,EAAeh5D,EAAOvC,UAA0C,MAA9BuC,EAAOvC,SAASC,OAAO,GACzDu7D,EACIpD,EAASz4D,MACTy4D,EAASp4D,UAA4C,MAAhCo4D,EAASp4D,SAASC,OAAO,GAElDw7D,EAAcD,GAAYD,GACXh5D,EAAO5C,MAAQy4D,EAASp4D,SACvC07D,EAAgBD,EAChBE,EAAUp5D,EAAOvC,UAAYuC,EAAOvC,SAASrX,MAAM,MAAQ,GAE3DizE,GADAN,EAAUlD,EAASp4D,UAAYo4D,EAASp4D,SAASrX,MAAM,MAAQ,GACnD4Z,EAAO3P,WAAasmE,EAAgB32D,EAAO3P,WA2B3D,GApBIgpE,IACFr5D,EAAOzC,SAAW,GAClByC,EAAOxC,KAAO,KACVwC,EAAO5C,OACU,KAAfg8D,EAAQ,GAAWA,EAAQ,GAAKp5D,EAAO5C,KACtCg8D,EAAQ7kE,QAAQyL,EAAO5C,OAE9B4C,EAAO5C,KAAO,GACVy4D,EAASxlE,WACXwlE,EAASt4D,SAAW,KACpBs4D,EAASr4D,KAAO,KACZq4D,EAASz4D,OACQ,KAAf27D,EAAQ,GAAWA,EAAQ,GAAKlD,EAASz4D,KACxC27D,EAAQxkE,QAAQshE,EAASz4D,OAEhCy4D,EAASz4D,KAAO,MAElB87D,EAAaA,IAA8B,KAAfH,EAAQ,IAA4B,KAAfK,EAAQ,KAGvDH,EAEFj5D,EAAO5C,KAAQy4D,EAASz4D,MAA0B,KAAlBy4D,EAASz4D,KAC3By4D,EAASz4D,KAAO4C,EAAO5C,KACrC4C,EAAOzC,SAAYs4D,EAASt4D,UAAkC,KAAtBs4D,EAASt4D,SAC/Bs4D,EAASt4D,SAAWyC,EAAOzC,SAC7CyC,EAAO3C,OAASw4D,EAASx4D,OACzB2C,EAAOyE,MAAQoxD,EAASpxD,MACxB20D,EAAUL,OAEL,GAAIA,EAAQ1yE,OAGZ+yE,IAASA,EAAU,IACxBA,EAAQl6D,MACRk6D,EAAUA,EAAQtzE,OAAOizE,GACzB/4D,EAAO3C,OAASw4D,EAASx4D,OACzB2C,EAAOyE,MAAQoxD,EAASpxD,WACnB,IAAKmsD,EAAK0I,kBAAkBzD,EAASx4D,QAwB1C,OApBIg8D,IACFr5D,EAAOzC,SAAWyC,EAAO5C,KAAOg8D,EAAQtkE,SAIpCykE,KAAav5D,EAAO5C,MAAQ4C,EAAO5C,KAAK9O,QAAQ,KAAO,IAC1C0R,EAAO5C,KAAKhX,MAAM,QAEjC4Z,EAAOtT,KAAO6sE,EAAWzkE,QACzBkL,EAAO5C,KAAO4C,EAAOzC,SAAWg8D,EAAWzkE,UAG/CkL,EAAO3C,OAASw4D,EAASx4D,OACzB2C,EAAOyE,MAAQoxD,EAASpxD,MAEnBmsD,EAAKh3C,OAAO5Z,EAAOvC,WAAcmzD,EAAKh3C,OAAO5Z,EAAO3C,UACvD2C,EAAOnE,MAAQmE,EAAOvC,SAAWuC,EAAOvC,SAAW,KACpCuC,EAAO3C,OAAS2C,EAAO3C,OAAS,KAEjD2C,EAAO9C,KAAO8C,EAAOuvD,SACdvvD,EAGT,IAAKo5D,EAAQ/yE,OAWX,OARA2Z,EAAOvC,SAAW,KAEduC,EAAO3C,OACT2C,EAAOnE,KAAO,IAAMmE,EAAO3C,OAE3B2C,EAAOnE,KAAO,KAEhBmE,EAAO9C,KAAO8C,EAAOuvD,SACdvvD,EAcT,IARA,IAAI8W,EAAOsiD,EAAQjvE,OAAO,GAAG,GACzBqvE,GACCx5D,EAAO5C,MAAQy4D,EAASz4D,MAAQg8D,EAAQ/yE,OAAS,KACxC,MAATywB,GAAyB,OAATA,IAA2B,KAATA,EAInC2iD,EAAK,EACApnE,EAAI+mE,EAAQ/yE,OAAQgM,GAAK,EAAGA,IAEtB,OADbykB,EAAOsiD,EAAQ/mE,IAEb+mE,EAAQrmE,OAAOV,EAAG,GACA,OAATykB,GACTsiD,EAAQrmE,OAAOV,EAAG,GAClBonE,KACSA,IACTL,EAAQrmE,OAAOV,EAAG,GAClBonE,KAKJ,IAAKP,IAAeC,EAClB,KAAOM,IAAMA,EACXL,EAAQ7kE,QAAQ,OAIhB2kE,GAA6B,KAAfE,EAAQ,IACpBA,EAAQ,IAA+B,MAAzBA,EAAQ,GAAG17D,OAAO,IACpC07D,EAAQ7kE,QAAQ,IAGdilE,GAAsD,MAAjCJ,EAAQ59D,KAAK,KAAK0C,QAAQ,IACjDk7D,EAAQvmE,KAAK,IAGf,IAUM0mE,EAVFG,EAA4B,KAAfN,EAAQ,IACpBA,EAAQ,IAA+B,MAAzBA,EAAQ,GAAG17D,OAAO,GAsCrC,OAnCI27D,IACFr5D,EAAOzC,SAAWyC,EAAO5C,KAAOs8D,EAAa,GACbN,EAAQ/yE,OAAS+yE,EAAQtkE,QAAU,IAI/DykE,KAAav5D,EAAO5C,MAAQ4C,EAAO5C,KAAK9O,QAAQ,KAAO,IAC1C0R,EAAO5C,KAAKhX,MAAM,QAEjC4Z,EAAOtT,KAAO6sE,EAAWzkE,QACzBkL,EAAO5C,KAAO4C,EAAOzC,SAAWg8D,EAAWzkE,WAI/CokE,EAAaA,GAAel5D,EAAO5C,MAAQg8D,EAAQ/yE,UAEhCqzE,GACjBN,EAAQ7kE,QAAQ,IAGb6kE,EAAQ/yE,OAIX2Z,EAAOvC,SAAW27D,EAAQ59D,KAAK,MAH/BwE,EAAOvC,SAAW,KAClBuC,EAAOnE,KAAO,MAMX+0D,EAAKh3C,OAAO5Z,EAAOvC,WAAcmzD,EAAKh3C,OAAO5Z,EAAO3C,UACvD2C,EAAOnE,MAAQmE,EAAOvC,SAAWuC,EAAOvC,SAAW,KACpCuC,EAAO3C,OAAS2C,EAAO3C,OAAS,KAEjD2C,EAAOtT,KAAOmpE,EAASnpE,MAAQsT,EAAOtT,KACtCsT,EAAO21D,QAAU31D,EAAO21D,SAAWE,EAASF,QAC5C31D,EAAO9C,KAAO8C,EAAOuvD,SACdvvD,CAAAA,EAGT01D,EAAI1kE,UAAU6mE,UAAY,WACxB,IAAIz6D,EAAOpL,KAAKoL,KACZI,EAAOw4D,EAAY73D,KAAKf,GACxBI,IAEW,OADbA,EAAOA,EAAK,MAEVxL,KAAKwL,KAAOA,EAAKU,OAAO,IAE1Bd,EAAOA,EAAKc,OAAO,EAAGd,EAAK/W,OAASmX,EAAKnX,SAEvC+W,IAAMpL,KAAKuL,SAAWH,EAAAA,CAAAA,EAAAA,SAAAA,EAAAA,EAAAA,uOCztB5B,KAAIu8D,EAAS/uE,EAAQ,IACjBgvE,EAAUhvE,EAAQ,IAGtB,SAAS0qE,EAAiBuE,EAAOl0D,GAC/B3T,KAAK4E,GAAKijE,EACV7nE,KAAK2T,IAAMA,CAHblb,CAAAA,EAAOC,QAAQ4qE,iBAAmBA,EAYlC7qE,EAAOC,QAAQ6qE,KAAO,SAAc78C,EAAM7Y,GACxC,SAASi6D,EAAWC,EAASl6D,GAC3B,GAAIA,GAAyB,UAAfxN,EAAOwN,GAErB,GAAGA,EAAOm6D,KAAV,CACE,IAAIC,EAAcN,EAAOluE,QAAQsuE,EAASl6D,EAAOm6D,MACjDr0D,EAAIs0D,GAAet0D,EAAIs0D,GAAet0D,EAAIs0D,GAAa,EAAI,MAF7D,CAKA,IAAIC,EAAUr6D,EAAOjJ,GAAK+iE,EAAOluE,QAAQsuE,EAASl6D,EAAOjJ,IAAMmjE,EAC/D,GAAIG,EAAS,CAGX,GADGA,EAAQ5rE,QAAQ,KAAK,IAAG4rE,GAAW,KACnCL,EAAMK,GAAS,CAChB,IAAIN,EAAQ7J,kBAAkB8J,EAAMK,GAAUr6D,GAC5C,MAAM,IAAIha,MAAM,WAAWga,EAAO,8CAEpC,OAAOg6D,EAAMK,EAEfL,CAAAA,EAAMK,GAAWr6D,EAEa,KAA3Bq6D,EAAQA,EAAQ7zE,OAAO,KACxBwzE,EAAMK,EAAQ19C,UAAU,EAAG09C,EAAQ7zE,OAAO,IAAMwZ,EAGpDs6D,CAAAA,EAAUD,EAAQ,SAAYr6D,EAAOyb,iBAAiB1mB,MAAOiL,EAAOyb,MAAM,CAACzb,EAAOyb,QAClF6+C,EAAUD,EAAQ,WAAcr6D,EAAOu6D,mBAAmBxlE,MAAOiL,EAAOu6D,QAAQ,CAACv6D,EAAOu6D,UACxFN,EAAWI,EAAQ,mBAAoBr6D,EAAOw6D,iBAC9CC,EAAWJ,EAAQ,cAAer6D,EAAO06D,YACzCT,EAAWI,EAAQ,wBAAyBr6D,EAAO26D,sBACnDF,EAAWJ,EAAQ,eAAgBr6D,EAAO46D,aAC1CH,EAAWJ,EAAQ,qBAAsBr6D,EAAO66D,mBAChDJ,EAAWJ,EAAQ,gBAAiBr6D,EAAO86D,cAC3CR,EAAUD,EAAQ,YAAar6D,EAAO+6D,UACtCT,EAAUD,EAAQ,SAAUr6D,EAAOg7D,OACnCV,EAAUD,EAAQ,SAAUr6D,EAAOi7D,OACnCX,EAAUD,EAAQ,SAAUr6D,EAAOk7D,OACnCjB,EAAWI,EAAQ,OAAQr6D,EAAOm7D,IAAAA,CAEpC,UAASb,EAAUJ,EAASrL,GAC1B,GAAKA,aAAmB95D,MACxB,IAAI,IAAIvC,EAAE,EAAGA,EAAEq8D,EAAQroE,OAAQgM,IAC7BynE,EAAWC,EAAQ,IAAI1nE,EAAGq8D,EAAQr8D,GAGtC,UAASioE,EAAWP,EAASrL,GAC3B,GAAIA,GAA2B,UAAhBr8D,EAAOq8D,GACtB,IAAI,IAAIhgD,KAAKggD,EACXoL,EAAWC,EAAQ,IAAIrrD,EAAGggD,EAAQhgD,GAItC,KAAImrD,EAAQ,CAAC,EACTl0D,EAAM,CAAC,EAGX,OADAm0D,EAAWphD,EAAM7Y,GACV,IAAIy1D,EAAiBuE,EAAOl0D,EAAAA,CAAAA,EAAAA,SAAAA,EAAAA,EAAAA,GCtErC,IAAMs1D,EAAarwE,EAAQ,IACrBswE,EAAetwE,EAAQ,IACvBuwE,EAAYvwE,EAAQ,IACpBw+D,EAAex+D,EAAQ,GAAUw+D,aACjC31D,EAAY7I,EAAQ,IAE1BF,EAAQ4P,MAAQ,SAASu4D,EAASn8D,EAAS0kE,GACzC,GAAIA,EAAiB,MAChBA,IAA2BA,EAAmB,CAAC,GAElD,IAAMp7D,EAASvM,EAAU+hE,SAAS3C,EAASuI,GAC3C,IAAI,IAAAp7D,EACF,MAAMna,MAAOma,EAAOpS,IAAI2gE,IAI5B,QADA73D,EAAU0yD,EAAa1yD,EAASykE,EAAU35C,eAAgB25C,EAAU35D,OAC7Dy5D,EAAWI,cAAcH,EAAatI,gBAAgBC,EAASn8D,GAAUA,EAAAA,EAElFhM,EAAQ4wE,cAAgB1wE,EAAQ,IAAmB2wE,aACnD7wE,EAAQkoE,gBAAkBsI,EAAatI,gBACvCloE,EAAQ2wE,cAAgBJ,EAAWI,cACnC3wE,EAAQ8wE,oBAAsB5wE,EAAQ,IAAmB4wE,oBACzD9wE,EAAQ8qE,SAAW/hE,EAAU+hE,SAC7B9qE,EAAQ+wE,UAAY7wE,EAAQ,IAC5BF,EAAQgxE,YAAc,SAAS7I,EAAShzD,EAAQnJ,GAC9C,OAAOhM,EAAQ4wE,cAAc5wE,EAAQkoE,gBAAgBC,EAASn8D,GAAUmJ,EAAQnJ,EAAAA,CAAAA,EAAAA,SAAAA,EAAAA,EAAAA,GC3BlFmM,EAAAA,EAAAA,EAAAA,KAAAA,WAAA,gBAAAxQ,EAAA,KAQM,SAAUspE,EAAiBC,GAS/B,IAYE,IAXA,IAAIC,EAAcD,EAGZE,EAAM,GACRpvD,EAAS,EACT24C,EAAM,EAEJ0W,EADY,MACU11E,OACxB21E,OAAAA,EAGGH,GAAenvD,IAVM,KAgBV,UALhBsvD,EAAUC,EAAqBJ,KAKJnvD,EAAS,GAAK24C,EAAMyW,EAAIz1E,OAAS01E,EAAYC,EAAQ31E,QAf3D,KAmBrBy1E,EAAIjpE,KAAKmpE,GAET3W,GAAO2W,EAAQ31E,OACfw1E,EAAcA,EAAYjwD,WAG5B,OAAOkwD,EAAI5sD,UAAU1T,KArBH,MAuBX,CADP,MAAO0gE,GACP,MAAO,YASX,UAASD,EAAqBj9D,GAC5B,IAQIgM,EACA5I,EACA5S,EACAgb,EACAnY,EAZEupE,EAAO58D,EAOP88D,EAAM,GAOZ,IAAKF,IAASA,EAAKvhC,QACjB,MAAO,GAUT,GAPAyhC,EAAIjpE,KAAK+oE,EAAKvhC,QAAQ5qC,eAClBmsE,EAAKhlE,IACPklE,EAAIjpE,KAAK,IAAI+oE,EAAKhlE,KAIpBoU,EAAY4wD,EAAK5wD,YACAjV,OAAAA,EAAAA,EAAAA,CAASiV,GAExB,IADA5I,EAAU4I,EAAU5kB,MAAM,OACrBiM,EAAI,EAAGA,EAAI+P,EAAQ/b,OAAQgM,IAC9BypE,EAAIjpE,KAAK,IAAIuP,EAAQ/P,IAGzB,IAAM8pE,EAAe,CAAC,OAAQ,OAAQ,QAAS,OAC/C,IAAK9pE,EAAI,EAAGA,EAAI8pE,EAAa91E,OAAQgM,IACnC7C,EAAM2sE,EAAa9pE,IACnBmY,EAAOoxD,EAAKlxD,aAAalb,KAEvBssE,EAAIjpE,KAAK,IAAIrD,EAAG,KAAKgb,EAAI,MAG7B,OAAOsxD,EAAItgE,KAAK,qBChGlB/Q,EAAOC,QAAU,SAASD,GAoBzB,OAnBKA,EAAO2xE,kBACX3xE,EAAO4xE,UAAY,aACnB5xE,EAAO6xE,MAAQ,GAEV7xE,EAAO8gB,WAAU9gB,EAAO8gB,SAAW,IACxCxV,OAAOE,eAAexL,EAAQ,SAAU,CACvCywB,YAAY,EACZ3M,IAAK,WACJ,OAAO9jB,EAAO6H,CAAAA,IAGhByD,OAAOE,eAAexL,EAAQ,KAAM,CACnCywB,YAAY,EACZ3M,IAAK,WACJ,OAAO9jB,EAAO4H,CAAAA,IAGhB5H,EAAO2xE,gBAAkB,GAEnB3xE,CAAAA,CAAAA,EAAAA,SAAAA,EAAAA,aCpBR,GACAA,EAAOC,QAAU6xE,CAAAA,GAAAA,KAAAA,KAAAA,CAAAA,kBCAjB,IAOIC,EACAC,EARA1jE,EAAUtO,EAAOC,QAAU,CAAC,EAUhC,SAASgyE,IACL,MAAM,IAAI72E,MAAM,kCAEpB,UAAS82E,IACL,MAAM,IAAI92E,MAAM,oCAsBpB,UAAS+2E,EAAWC,GAChB,GAAIL,IAAqBjuE,WAErB,OAAOA,WAAWsuE,EAAK,GAG3B,IAAKL,IAAqBE,IAAqBF,IAAqBjuE,WAEhE,OADAiuE,EAAmBjuE,WACZA,WAAWsuE,EAAK,GAE3B,IAEI,OAAOL,EAAiBK,EAAK,EAOe,CAN9C,MAAMriE,GACJ,IAEI,OAAOgiE,EAAiBtpE,KAAK,KAAM2pE,EAAK,EAGA,CAF1C,MAAMriE,GAEJ,OAAOgiE,EAAiBtpE,KAAKlB,KAAM6qE,EAAK,MAvCnD,WACG,IAEQL,EADsB,mBAAfjuE,WACYA,WAEAmuE,CAK3B,CAHE,MAAOliE,GACLgiE,EAAmBE,CAEvB,KAEQD,EADwB,mBAAjBrlD,aACcA,aAEAulD,CAGJA,CADvB,MAAOniE,GACLiiE,EAAqBE,CAAAA,CAjB5B,IAwED,IAEIG,EAFArzD,EAAQ,GACRszD,GAAAA,EAEAC,GAAc,EAElB,SAASC,IACAF,GAAaD,IAGlBC,GAAAA,EACID,EAAaz2E,OACbojB,EAAQqzD,EAAah3E,OAAO2jB,GAE5BuzD,GAAc,EAEdvzD,EAAMpjB,QACN62E,IAIR,UAASA,IACL,IAAIH,EAAJ,CAGA,IAAI7uE,EAAU0uE,EAAWK,GACzBF,GAAAA,EAGA,IADA,IAAI1X,EAAM57C,EAAMpjB,OACVg/D,GAAK,CAGP,IAFAyX,EAAerzD,EACfA,EAAQ,KACCuzD,EAAa3X,GACdyX,GACAA,EAAaE,GAAY1+C,MAGjC0+C,GAAc,EACd3X,EAAM57C,EAAMpjB,MAEhBy2E,CAAAA,EAAe,KACfC,GAAAA,EAnEJ,SAAyBI,GACrB,GAAIV,IAAuBrlD,aAEvB,OAAOA,aAAa+lD,GAGxB,IAAKV,IAAuBE,IAAwBF,IAAuBrlD,aAEvE,OADAqlD,EAAqBrlD,aACdA,aAAa+lD,GAExB,IAEWV,EAAmBU,EAQeA,CAP3C,MAAO3iE,GACL,IAEI,OAAOiiE,EAAmBvpE,KAAK,KAAMiqE,EAIAA,CAHvC,MAAO3iE,GAGL,OAAOiiE,EAAmBvpE,KAAKlB,KAAMmrE,EAAAA,CAAAA,CAgD7CC,CApEJ,CAoEoBlvE,EAAAA,CAiBpB,UAASmvE,EAAKR,EAAK5iD,GACfjoB,KAAK6qE,IAAMA,EACX7qE,KAAKioB,MAAQA,CAYjB,UAAS+e,IA5BTjgC,CAAAA,EAAQukE,SAAW,SAAUT,GACzB,IAAI9hE,EAAO,IAAInG,MAAMoG,UAAU3U,OAAS,GACxC,GAAI2U,UAAU3U,OAAS,EACnB,IAAK,IAAIgM,EAAI,EAAGA,EAAI2I,UAAU3U,OAAQgM,IAClC0I,EAAK1I,EAAI,GAAK2I,UAAU3I,GAGhCoX,EAAM5W,KAAK,IAAIwqE,EAAKR,EAAK9hE,IACJ,IAAjB0O,EAAMpjB,QAAiB02E,GACvBH,EAAWM,EAAAA,EASnBG,EAAKrsE,UAAUstB,IAAM,WACjBtsB,KAAK6qE,IAAIhoE,MAAM,KAAM7C,KAAKioB,MAAAA,EAE9BlhB,EAAQqlC,MAAQ,UAChBrlC,EAAQozC,SAAAA,EACRpzC,EAAQgB,IAAM,CAAC,EACfhB,EAAQwkE,KAAO,GACfxkE,EAAQsG,QAAU,GAClBtG,EAAQykE,SAAW,CAAC,EAIpBzkE,EAAQ2X,GAAKsoB,EACbjgC,EAAQ65C,YAAc5Z,EACtBjgC,EAAQ+wD,KAAO9wB,EACfjgC,EAAQ4X,IAAMqoB,EACdjgC,EAAQgyD,eAAiB/xB,EACzBjgC,EAAQiyD,mBAAqBhyB,EAC7BjgC,EAAQ0xD,KAAOzxB,EACfjgC,EAAQ0kE,gBAAkBzkC,EAC1BjgC,EAAQ2kE,oBAAsB1kC,EAE9BjgC,EAAQuX,UAAY,SAAUld,GAAQ,MAAO,IAE7C2F,EAAQ4kE,QAAU,SAAUvqE,GACxB,MAAM,IAAIvN,MAAM,qCAGpBkT,EAAQ6kE,IAAM,WAAc,MAAO,KACnC7kE,EAAQ8kE,MAAQ,SAAUC,GACtB,MAAM,IAAIj4E,MAAM,mCAEpBkT,EAAQglE,MAAQ,WAAa,OAAO,oBC7EpCtzE,EAAOC,QA9EP,SAAgBspE,GACZ,IAAKA,EACD,OAAO,EAKX,IAFA,IAAI3hE,EAAI,EAAGgzD,EAAM2O,EAAI3tE,OAEfgM,EAAIgzD,GAEN,GAAI2O,EAAI3hE,IAAM,IACVA,QADJ,CAOA,GAAI2hE,EAAI3hE,IAAM,KAAQ2hE,EAAI3hE,IAAM,IAAM,CAElC,GAAI2hE,EAAI3hE,EAAI,IAAM,GAAM,EAAG,CACvBA,GAAK,EAEL,QAEA,QAAO,CAMf,KAEwB,MAAX2hE,EAAI3hE,IAAe2hE,EAAI3hE,EAAI,IAAM,KAAQ2hE,EAAI3hE,EAAI,IAAM,KAC5C,MAAX2hE,EAAI3hE,IAAe2hE,EAAI3hE,EAAI,IAAM,KAAQ2hE,EAAI3hE,EAAI,IAAM,MACvD2hE,EAAI3hE,EAAI,IAAM,GAAM,EAE7BA,GAAK,OAOT,IAEa2hE,EAAI3hE,IAAM,KAAQ2hE,EAAI3hE,IAAM,KAC5B2hE,EAAI3hE,IAAM,KAAQ2hE,EAAI3hE,IAAM,MAEjC2hE,EAAI3hE,EAAI,IAAM,GAAM,GACpB2hE,EAAI3hE,EAAI,IAAM,GAAM,EAExBA,GAAK,MART,CAgBA,KAEwB,MAAX2hE,EAAI3hE,IAAe2hE,EAAI3hE,EAAI,IAAM,KAAQ2hE,EAAI3hE,EAAI,IAAM,KACvD2hE,EAAI3hE,IAAM,KAAQ2hE,EAAI3hE,IAAM,KAAQ2hE,EAAI3hE,EAAI,IAAM,GAAM,GAC7C,MAAX2hE,EAAI3hE,IAAgB2hE,EAAI3hE,EAAI,IAAM,KAAQ2hE,EAAI3hE,EAAI,IAAM,MAEjE2hE,EAAI3hE,EAAI,IAAM,GAAM,GACpB2hE,EAAI3hE,EAAI,IAAM,GAAM,EAOxB,OAAO,EALHA,GAAK,EAQb,QAAO,aAAAsQ,EAAA,aCvGAyD,sOAAAA,CAAAA,EAmBT,SAAU/W,GAiBR,IAGI2uE,EAAU,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAQ1F,SAASC,EAAShjC,EAAGgqB,GACjB,IAAI/jD,EAAI+5B,EAAE,GACN95B,EAAI85B,EAAE,GACNhoC,EAAIgoC,EAAE,GACNinB,EAAIjnB,EAAE,GASV95B,IADAA,KADAlO,IADAA,KADAivD,IADAA,KADAhhD,IADAA,IAAMC,EAAIlO,GAAKkO,EAAI+gD,GAAK+C,EAAE,GAAK,UAAY,IAChC,EAAI/jD,IAAM,IAAMC,EAAI,GACrBA,GAAKD,EAAIjO,GAAKgyD,EAAE,GAAK,UAAY,IAChC,GAAK/C,IAAM,IAAMhhD,EAAI,GACtBA,GAAKghD,EAAI/gD,GAAK8jD,EAAE,GAAK,UAAY,IAChC,GAAKhyD,IAAM,IAAMivD,EAAI,GACtBA,GAAKjvD,EAAIiO,GAAK+jD,EAAE,GAAK,WAAa,IACjC,GAAK9jD,IAAM,IAAMlO,EAAI,EAQhCkO,IADAA,KADAlO,IADAA,KADAivD,IADAA,KADAhhD,IADAA,IAAMC,EAAIlO,GAAKkO,EAAI+gD,GAAK+C,EAAE,GAAK,UAAY,IAChC,EAAI/jD,IAAM,IAAMC,EAAI,GACrBA,GAAKD,EAAIjO,GAAKgyD,EAAE,GAAK,WAAa,IACjC,GAAK/C,IAAM,IAAMhhD,EAAI,GACtBA,GAAKghD,EAAI/gD,GAAK8jD,EAAE,GAAK,WAAa,IACjC,GAAKhyD,IAAM,IAAMivD,EAAI,GACtBA,GAAKjvD,EAAIiO,GAAK+jD,EAAE,GAAK,SAAW,IAC/B,GAAK9jD,IAAM,IAAMlO,EAAI,EAQhCkO,IADAA,KADAlO,IADAA,KADAivD,IADAA,KADAhhD,IADAA,IAAMC,EAAIlO,GAAKkO,EAAI+gD,GAAK+C,EAAE,GAAK,WAAa,IACjC,EAAI/jD,IAAM,IAAMC,EAAI,GACrBA,GAAKD,EAAIjO,GAAKgyD,EAAE,GAAK,WAAa,IACjC,GAAK/C,IAAM,IAAMhhD,EAAI,GACtBA,GAAKghD,EAAI/gD,GAAK8jD,EAAE,IAAM,MAAQ,IAC7B,GAAKhyD,IAAM,IAAMivD,EAAI,GACtBA,GAAKjvD,EAAIiO,GAAK+jD,EAAE,IAAM,WAAa,IAClC,GAAK9jD,IAAM,IAAMlO,EAAI,EAQhCkO,IADAA,KADAlO,IADAA,KADAivD,IADAA,KADAhhD,IADAA,IAAMC,EAAIlO,GAAKkO,EAAI+gD,GAAK+C,EAAE,IAAM,WAAa,IAClC,EAAI/jD,IAAM,IAAMC,EAAI,GACrBA,GAAKD,EAAIjO,GAAKgyD,EAAE,IAAM,SAAW,IAChC,GAAK/C,IAAM,IAAMhhD,EAAI,GACtBA,GAAKghD,EAAI/gD,GAAK8jD,EAAE,IAAM,WAAa,IAClC,GAAKhyD,IAAM,IAAMivD,EAAI,GACtBA,GAAKjvD,EAAIiO,GAAK+jD,EAAE,IAAM,WAAa,IAClC,GAAK9jD,IAAM,IAAMlO,EAAI,EAShCkO,IADAA,KADAlO,IADAA,KADAivD,IADAA,KADAhhD,IADAA,IAAMC,EAAI+gD,EAAIjvD,GAAKivD,GAAK+C,EAAE,GAAK,UAAY,IAChC,EAAI/jD,IAAM,IAAMC,EAAI,GACrBlO,EAAIkO,GAAKlO,GAAKgyD,EAAE,GAAK,WAAa,IACjC,EAAI/C,IAAM,IAAMhhD,EAAI,GACrBC,EAAID,GAAKC,GAAK8jD,EAAE,IAAM,UAAY,IACjC,GAAKhyD,IAAM,IAAMivD,EAAI,GACtBhhD,EAAIghD,GAAKhhD,GAAK+jD,EAAE,GAAK,UAAY,IAChC,GAAK9jD,IAAM,IAAMlO,EAAI,EAQhCkO,IADAA,KADAlO,IADAA,KADAivD,IADAA,KADAhhD,IADAA,IAAMC,EAAI+gD,EAAIjvD,GAAKivD,GAAK+C,EAAE,GAAK,UAAY,IAChC,EAAI/jD,IAAM,IAAMC,EAAI,GACrBlO,EAAIkO,GAAKlO,GAAKgyD,EAAE,IAAM,SAAW,IAChC,EAAI/C,IAAM,IAAMhhD,EAAI,GACrBC,EAAID,GAAKC,GAAK8jD,EAAE,IAAM,UAAY,IACjC,GAAKhyD,IAAM,IAAMivD,EAAI,GACtBhhD,EAAIghD,GAAKhhD,GAAK+jD,EAAE,GAAK,UAAY,IAChC,GAAK9jD,IAAM,IAAMlO,EAAI,EAQhCkO,IADAA,KADAlO,IADAA,KADAivD,IADAA,KADAhhD,IADAA,IAAMC,EAAI+gD,EAAIjvD,GAAKivD,GAAK+C,EAAE,GAAK,UAAY,IAChC,EAAI/jD,IAAM,IAAMC,EAAI,GACrBlO,EAAIkO,GAAKlO,GAAKgyD,EAAE,IAAM,WAAa,IAClC,EAAI/C,IAAM,IAAMhhD,EAAI,GACrBC,EAAID,GAAKC,GAAK8jD,EAAE,GAAK,UAAY,IAChC,GAAKhyD,IAAM,IAAMivD,EAAI,GACtBhhD,EAAIghD,GAAKhhD,GAAK+jD,EAAE,GAAK,WAAa,IACjC,GAAK9jD,IAAM,IAAMlO,EAAI,EAQhCkO,IADAA,KADAlO,IADAA,KADAivD,IADAA,KADAhhD,IADAA,IAAMC,EAAI+gD,EAAIjvD,GAAKivD,GAAK+C,EAAE,IAAM,WAAa,IAClC,EAAI/jD,IAAM,IAAMC,EAAI,GACrBlO,EAAIkO,GAAKlO,GAAKgyD,EAAE,GAAK,SAAW,IAC/B,EAAI/C,IAAM,IAAMhhD,EAAI,GACrBC,EAAID,GAAKC,GAAK8jD,EAAE,GAAK,WAAa,IACjC,GAAKhyD,IAAM,IAAMivD,EAAI,GACtBhhD,EAAIghD,GAAKhhD,GAAK+jD,EAAE,IAAM,WAAa,IAClC,GAAK9jD,IAAM,IAAMlO,EAAI,EAShCkO,IADAA,KADAlO,IADAA,KADAivD,IADAA,KADAhhD,IADAA,IAAMC,EAAIlO,EAAIivD,GAAK+C,EAAE,GAAK,OAAS,IACxB,EAAI/jD,IAAM,IAAMC,EAAI,GACrBA,EAAIlO,GAAKgyD,EAAE,GAAK,WAAa,IAC5B,GAAK/C,IAAM,IAAMhhD,EAAI,GACtBA,EAAIC,GAAK8jD,EAAE,IAAM,WAAa,IAC7B,GAAKhyD,IAAM,IAAMivD,EAAI,GACtBA,EAAIhhD,GAAK+jD,EAAE,IAAM,SAAW,IAC3B,GAAK9jD,IAAM,GAAKlO,EAAI,EAQ/BkO,IADAA,KADAlO,IADAA,KADAivD,IADAA,KADAhhD,IADAA,IAAMC,EAAIlO,EAAIivD,GAAK+C,EAAE,GAAK,WAAa,IAC5B,EAAI/jD,IAAM,IAAMC,EAAI,GACrBA,EAAIlO,GAAKgyD,EAAE,GAAK,WAAa,IAC5B,GAAK/C,IAAM,IAAMhhD,EAAI,GACtBA,EAAIC,GAAK8jD,EAAE,GAAK,UAAY,IAC3B,GAAKhyD,IAAM,IAAMivD,EAAI,GACtBA,EAAIhhD,GAAK+jD,EAAE,IAAM,WAAa,IAC7B,GAAK9jD,IAAM,GAAKlO,EAAI,EAQ/BkO,IADAA,KADAlO,IADAA,KADAivD,IADAA,KADAhhD,IADAA,IAAMC,EAAIlO,EAAIivD,GAAK+C,EAAE,IAAM,UAAY,IAC5B,EAAI/jD,IAAM,IAAMC,EAAI,GACrBA,EAAIlO,GAAKgyD,EAAE,GAAK,UAAY,IAC3B,GAAK/C,IAAM,IAAMhhD,EAAI,GACtBA,EAAIC,GAAK8jD,EAAE,GAAK,UAAY,IAC3B,GAAKhyD,IAAM,IAAMivD,EAAI,GACtBA,EAAIhhD,GAAK+jD,EAAE,GAAK,SAAW,IAC1B,GAAK9jD,IAAM,GAAKlO,EAAI,EAQ/BkO,IADAA,KADAlO,IADAA,KADAivD,IADAA,KADAhhD,IADAA,IAAMC,EAAIlO,EAAIivD,GAAK+C,EAAE,GAAK,UAAY,IAC3B,EAAI/jD,IAAM,IAAMC,EAAI,GACrBA,EAAIlO,GAAKgyD,EAAE,IAAM,UAAY,IAC5B,GAAK/C,IAAM,IAAMhhD,EAAI,GACtBA,EAAIC,GAAK8jD,EAAE,IAAM,UAAY,IAC5B,GAAKhyD,IAAM,IAAMivD,EAAI,GACtBA,EAAIhhD,GAAK+jD,EAAE,GAAK,UAAY,IAC3B,GAAK9jD,IAAM,GAAKlO,EAAI,EAS/BkO,IADAA,KAHA+gD,IADAA,IAAM/gD,IADND,IADAA,IAAMjO,GAAKkO,GAAK+gD,IAAM+C,EAAE,GAAK,UAAY,IAC9B,EAAI/jD,IAAM,IAAMC,EAAI,IACflO,IAAMgyD,EAAE,GAAK,WAAa,IAC/B,GAAK/C,IAAM,IAAMhhD,EAAI,KAEhCjO,IADAA,IAAMiO,GAAKghD,GAAK/gD,IAAM8jD,EAAE,IAAM,WAAa,IAChC,GAAKhyD,IAAM,IAAMivD,EAAI,IAChBhhD,IAAM+jD,EAAE,GAAK,SAAW,IAC7B,GAAI9jD,IAAM,IAAMlO,EAAI,EAQ/BkO,IADAA,KAHA+gD,IADAA,IAAM/gD,IADND,IADAA,IAAMjO,GAAKkO,GAAK+gD,IAAM+C,EAAE,IAAM,WAAa,IAChC,EAAI/jD,IAAM,IAAMC,EAAI,IACflO,IAAMgyD,EAAE,GAAK,WAAa,IAC/B,GAAK/C,IAAM,IAAMhhD,EAAI,KAEhCjO,IADAA,IAAMiO,GAAKghD,GAAK/gD,IAAM8jD,EAAE,IAAM,QAAU,IAC7B,GAAKhyD,IAAM,IAAMivD,EAAI,IAChBhhD,IAAM+jD,EAAE,GAAK,WAAa,IAC/B,GAAI9jD,IAAM,IAAMlO,EAAI,EAQ/BkO,IADAA,KAHA+gD,IADAA,IAAM/gD,IADND,IADAA,IAAMjO,GAAKkO,GAAK+gD,IAAM+C,EAAE,GAAK,WAAa,IAC/B,EAAI/jD,IAAM,IAAMC,EAAI,IACflO,IAAMgyD,EAAE,IAAM,SAAW,IAC9B,GAAK/C,IAAM,IAAMhhD,EAAI,KAEhCjO,IADAA,IAAMiO,GAAKghD,GAAK/gD,IAAM8jD,EAAE,GAAK,WAAa,IAC/B,GAAKhyD,IAAM,IAAMivD,EAAI,IAChBhhD,IAAM+jD,EAAE,IAAM,WAAa,IAChC,GAAI9jD,IAAM,IAAMlO,EAAI,EAQ/BkO,IADAA,KAHA+gD,IADAA,IAAM/gD,IADND,IADAA,IAAMjO,GAAKkO,GAAK+gD,IAAM+C,EAAE,GAAK,UAAY,IAC9B,EAAI/jD,IAAM,IAAMC,EAAI,IACflO,IAAMgyD,EAAE,IAAM,WAAa,IAChC,GAAK/C,IAAM,IAAMhhD,EAAI,KAEhCjO,IADAA,IAAMiO,GAAKghD,GAAK/gD,IAAM8jD,EAAE,GAAK,UAAY,IAC9B,GAAKhyD,IAAM,IAAMivD,EAAI,IAChBhhD,IAAM+jD,EAAE,GAAK,UAAY,IAC9B,GAAK9jD,IAAM,IAAMlO,EAAI,EAEhCgoC,EAAE,GAAK/5B,EAAI+5B,EAAE,GAAK,EAClBA,EAAE,GAAK95B,EAAI85B,EAAE,GAAK,EAClBA,EAAE,GAAKhoC,EAAIgoC,EAAE,GAAK,EAClBA,EAAE,GAAKinB,EAAIjnB,EAAE,GAAK,CAGtB,UAASijC,EAAO5b,GACZ,IACIjwD,EADA8rE,EAAU,GAGd,IAAK9rE,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACrB8rE,EAAQ9rE,GAAK,GAAKiwD,EAAEhhD,WAAWjP,IAAMiwD,EAAEhhD,WAAWjP,EAAI,IAAM,IAAMiwD,EAAEhhD,WAAWjP,EAAI,IAAM,KAAOiwD,EAAEhhD,WAAWjP,EAAI,IAAM,IAE3H,OAAO8rE,CAGX,UAASC,EAAal9D,GAClB,IACI7O,EADA8rE,EAAU,GAGd,IAAK9rE,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACrB8rE,EAAQ9rE,GAAK,GAAK6O,EAAE7O,IAAM6O,EAAE7O,EAAI,IAAM,IAAM6O,EAAE7O,EAAI,IAAM,KAAO6O,EAAE7O,EAAI,IAAM,IAE/E,OAAO8rE,CAGX,UAASE,EAAK/b,GACV,IAEIjwD,EACAhM,EACAi4E,EACAC,EACAC,EACAC,EAPA57D,EAAIy/C,EAAEj8D,OACNgjB,EAAQ,CAAC,YAAa,WAAY,WAAY,WAQlD,IAAKhX,EAAI,GAAIA,GAAKwQ,EAAGxQ,GAAK,GACtB4rE,EAAS50D,EAAO60D,EAAO5b,EAAE9lC,UAAUnqB,EAAI,GAAIA,KAK/C,IAFAhM,GADAi8D,EAAIA,EAAE9lC,UAAUnqB,EAAI,KACThM,OACXi4E,EAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAChDjsE,EAAI,EAAGA,EAAIhM,EAAQgM,GAAK,EACzBisE,EAAKjsE,GAAK,IAAMiwD,EAAEhhD,WAAWjP,KAAQA,EAAI,GAAM,GAGnD,GADAisE,EAAKjsE,GAAK,IAAM,MAAUA,EAAI,GAAM,GAChCA,EAAI,GAEJ,IADA4rE,EAAS50D,EAAOi1D,GACXjsE,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACrBisE,EAAKjsE,GAAK,EAclB,OARAksE,GADAA,EAAU,EAAJ17D,GACI7J,SAAS,IAAIoD,MAAM,kBAC7BoiE,EAAK74E,SAAS44E,EAAI,GAAI,IACtBE,EAAK94E,SAAS44E,EAAI,GAAI,KAAO,EAE7BD,EAAK,IAAME,EACXF,EAAK,IAAMG,EAEXR,EAAS50D,EAAOi1D,GACTj1D,CAmDX,UAASq1D,EAAK77D,GACV,IACIojD,EADA3D,EAAI,GAER,IAAK2D,EAAI,EAAGA,EAAI,EAAGA,GAAK,EACpB3D,GAAK0b,EAASn7D,GAAU,EAAJojD,EAAQ,EAAM,IAAQ+X,EAASn7D,GAAU,EAAJojD,EAAU,IAEvE,OAAO3D,CAGX,UAASqc,EAAI1jC,GACT,IAAI5oC,EACJ,IAAKA,EAAI,EAAGA,EAAI4oC,EAAE50C,OAAQgM,GAAK,EAC3B4oC,EAAE5oC,GAAKqsE,EAAKzjC,EAAE5oC,IAElB,OAAO4oC,EAAEz/B,KAAK,GAmElB,UAASojE,EAAOx+D,GAKZ,MAJI,kBAAkB3D,KAAK2D,KACvBA,EAAMvT,SAASC,mBAAmBsT,KAG/BA,CA6BX,UAASy+D,EAAkBF,GACvB,IAEI1jC,EAFA7gB,EAAQ,GACR/zB,EAASs4E,EAAIt4E,OAGjB,IAAK40C,EAAI,EAAGA,EAAI50C,EAAS,EAAG40C,GAAK,EAC7B7gB,EAAMvnB,KAAKlN,SAASg5E,EAAIzgE,OAAO+8B,EAAG,GAAI,KAG1C,OAAOj5B,OAAOmrD,aAAat4D,MAAMmN,OAAQoY,EAY7C,UAAS0kD,IAEL9sE,KAAK2gC,OAwTT,QAhbIgsC,EAAIN,EAAK,UAgBc,oBAAhBx9D,aAAgCA,YAAY7P,UAAU7G,OAC7D,WACI,SAAS40E,EAAM90E,EAAK5D,GAGhB,OAFA4D,EAAa,EAANA,GAAY,GAET,EACCwO,KAAKwyB,IAAIhhC,EAAM5D,EAAQ,GAG3BoS,KAAKuyB,IAAI/gC,EAAK5D,EAGzBwa,CAAAA,YAAY7P,UAAU7G,MAAQ,SAAU+L,EAAMylC,GAC1C,IAGI3xC,EACA4N,EACAonE,EACAC,EANA54E,EAAS2L,KAAKktE,WACdC,EAAQJ,EAAM7oE,EAAM7P,GACpBo1C,EAAMp1C,EAUV,OAJIs1C,IAAOtsC,IACPosC,EAAMsjC,EAAMpjC,EAAIt1C,IAGhB84E,EAAQ1jC,EACD,IAAI56B,YAAY,IAG3B7W,EAAMyxC,EAAM0jC,EACZvnE,EAAS,IAAIiJ,YAAY7W,GACzBg1E,EAAc,IAAIt+D,WAAW9I,GAE7BqnE,EAAc,IAAIv+D,WAAW1O,KAAMmtE,EAAOn1E,GAC1Cg1E,EAAY1wD,IAAI2wD,GAETrnE,EAAAA,CAnCf,IAkHJknE,EAAS9tE,UAAUiO,OAAS,SAAUmB,GAKlC,OAFApO,KAAKotE,aAAaR,EAAOx+D,IAElBpO,IAAAA,EAUX8sE,EAAS9tE,UAAUouE,aAAe,SAAUC,GACxCrtE,KAAKstE,OAASD,EACdrtE,KAAKutE,SAAWF,EAASh5E,OAEzB,IACIgM,EADAhM,EAAS2L,KAAKstE,MAAMj5E,OAGxB,IAAKgM,EAAI,GAAIA,GAAKhM,EAAQgM,GAAK,GAC3B4rE,EAASjsE,KAAKwtE,MAAOtB,EAAOlsE,KAAKstE,MAAM9iD,UAAUnqB,EAAI,GAAIA,KAK7D,OAFAL,KAAKstE,MAAQttE,KAAKstE,MAAM9iD,UAAUnqB,EAAI,IAE/BL,IAAAA,EAWX8sE,EAAS9tE,UAAUyqC,IAAM,SAAUgkC,GAC/B,IAEIptE,EAEAqtE,EAJAC,EAAO3tE,KAAKstE,MACZj5E,EAASs5E,EAAKt5E,OAEdi4E,EAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAGzD,IAAKjsE,EAAI,EAAGA,EAAIhM,EAAQgM,GAAK,EACzBisE,EAAKjsE,GAAK,IAAMstE,EAAKr+D,WAAWjP,KAAQA,EAAI,GAAM,GAYtD,OATAL,KAAK4tE,QAAQtB,EAAMj4E,GACnBq5E,EAAMf,EAAI3sE,KAAKwtE,OAEXC,IACAC,EAAMb,EAAkBa,IAG5B1tE,KAAK2gC,QAEE+sC,CAAAA,EAQXZ,EAAS9tE,UAAU2hC,MAAQ,WAKvB,OAJA3gC,KAAKstE,MAAQ,GACbttE,KAAKutE,QAAU,EACfvtE,KAAKwtE,MAAQ,CAAC,YAAa,WAAY,WAAY,WAE5CxtE,IAAAA,EAQX8sE,EAAS9tE,UAAUkZ,SAAW,WAC1B,MAAO,CACHy1D,KAAM3tE,KAAKstE,MACXj5E,OAAQ2L,KAAKutE,QACbjiE,KAAMtL,KAAKwtE,MAAAA,EAWnBV,EAAS9tE,UAAU6uE,SAAW,SAAUx2D,GAKpC,OAJArX,KAAKstE,MAAQj2D,EAAMs2D,KACnB3tE,KAAKutE,QAAUl2D,EAAMhjB,OACrB2L,KAAKwtE,MAAQn2D,EAAM/L,KAEZtL,IAAAA,EAOX8sE,EAAS9tE,UAAUmf,QAAU,kBAClBne,KAAKwtE,aACLxtE,KAAKstE,aACLttE,KAAKutE,OAAAA,EAShBT,EAAS9tE,UAAU4uE,QAAU,SAAUtB,EAAMj4E,GACzC,IACIk4E,EACAC,EACAC,EAHApsE,EAAIhM,EAMR,GADAi4E,EAAKjsE,GAAK,IAAM,MAAUA,EAAI,GAAM,GAChCA,EAAI,GAEJ,IADA4rE,EAASjsE,KAAKwtE,MAAOlB,GAChBjsE,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACrBisE,EAAKjsE,GAAK,EAOlBksE,GADAA,EAAqB,EAAfvsE,KAAKutE,SACDvmE,SAAS,IAAIoD,MAAM,kBAC7BoiE,EAAK74E,SAAS44E,EAAI,GAAI,IACtBE,EAAK94E,SAAS44E,EAAI,GAAI,KAAO,EAE7BD,EAAK,IAAME,EACXF,EAAK,IAAMG,EACXR,EAASjsE,KAAKwtE,MAAOlB,EAAAA,EAYzBQ,EAASxhE,KAAO,SAAU8C,EAAKq/D,GAG3B,OAAOX,EAASgB,WAAWlB,EAAOx+D,GAAMq/D,EAAAA,EAW5CX,EAASgB,WAAa,SAAUz+D,EAASo+D,GACrC,IACIC,EAAMf,EADCN,EAAKh9D,IAGhB,OAAOo+D,EAAMZ,EAAkBa,GAAOA,CAAAA,EAU1CZ,EAASj+D,YAAc,WAEnB7O,KAAK2gC,OAAAA,EAUTmsC,EAASj+D,YAAY7P,UAAUiO,OAAS,SAAUZ,GAC9C,IAEIhM,EAhPyB0tE,EAAOC,EAChChgE,EA6OA2/D,GA9OyBI,EA8OM/tE,KAAKstE,MAAM9lE,OA9OVwmE,EA8OkB3hE,GA9OV4hE,GACxCjgE,EAAS,IAAIU,WAAWq/D,EAAMb,WAAac,EAAOd,aAE/C5wD,IAAI,IAAI5N,WAAWq/D,IAC1B//D,EAAOsO,IAAI,IAAI5N,WAAWs/D,GAASD,EAAMb,YAEfl/D,GAyOtB3Z,EAASs5E,EAAKt5E,OAKlB,IAFA2L,KAAKutE,SAAWlhE,EAAI6gE,WAEf7sE,EAAI,GAAIA,GAAKhM,EAAQgM,GAAK,GAC3B4rE,EAASjsE,KAAKwtE,MAAOpB,EAAauB,EAAKvS,SAAS/6D,EAAI,GAAIA,KAK5D,OAFAL,KAAKstE,MAASjtE,EAAI,GAAMhM,EAAS,IAAIqa,WAAWi/D,EAAKnmE,OAAOrP,MAAMkI,EAAI,KAAO,IAAIqO,WAAW,GAErF1O,IAAAA,EAWX8sE,EAASj+D,YAAY7P,UAAUyqC,IAAM,SAAUgkC,GAC3C,IAGIptE,EACAqtE,EAJAC,EAAO3tE,KAAKstE,MACZj5E,EAASs5E,EAAKt5E,OACdi4E,EAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAIzD,IAAKjsE,EAAI,EAAGA,EAAIhM,EAAQgM,GAAK,EACzBisE,EAAKjsE,GAAK,IAAMstE,EAAKttE,KAAQA,EAAI,GAAM,GAY3C,OATAL,KAAK4tE,QAAQtB,EAAMj4E,GACnBq5E,EAAMf,EAAI3sE,KAAKwtE,OAEXC,IACAC,EAAMb,EAAkBa,IAG5B1tE,KAAK2gC,QAEE+sC,CAAAA,EAQXZ,EAASj+D,YAAY7P,UAAU2hC,MAAQ,WAKnC,OAJA3gC,KAAKstE,MAAQ,IAAI5+D,WAAW,GAC5B1O,KAAKutE,QAAU,EACfvtE,KAAKwtE,MAAQ,CAAC,YAAa,WAAY,WAAY,WAE5CxtE,IAAAA,EAQX8sE,EAASj+D,YAAY7P,UAAUkZ,SAAW,WACtC,IAnTyBy1D,EAmTrBt2D,EAAQy1D,EAAS9tE,UAAUkZ,SAAShX,KAAKlB,MAK7C,OAFAqX,EAAMs2D,MAtTmBA,EAsTQt2D,EAAMs2D,KArThC39D,OAAOmrD,aAAat4D,MAAM,KAAM,IAAI6L,WAAWi/D,KAuT/Ct2D,CAAAA,EAUXy1D,EAASj+D,YAAY7P,UAAU6uE,SAAW,SAAUx2D,GAIhD,OAFAA,EAAMs2D,KAjVV,SAA6Bv/D,EAAK6/D,GAC9B,IAGG5tE,EAHChM,EAAS+Z,EAAI/Z,OACds5E,EAAO,IAAI9+D,YAAYxa,GACvBgY,EAAM,IAAIqC,WAAWi/D,GAGxB,IAAKttE,EAAI,EAAGA,EAAIhM,EAAQgM,GAAK,EACzBgM,EAAIhM,GAAK+N,EAAIkB,WAAWjP,GAG5B,OAA0BgM,CAuUb6hE,CAjVjB,CAiVqC72D,EAAMs2D,MAEhCb,EAAS9tE,UAAU6uE,SAAS3sE,KAAKlB,KAAMqX,EAAAA,EAGlDy1D,EAASj+D,YAAY7P,UAAUmf,QAAU2uD,EAAS9tE,UAAUmf,QAE5D2uD,EAASj+D,YAAY7P,UAAU4uE,QAAUd,EAAS9tE,UAAU4uE,QAU5Dd,EAASj+D,YAAYvD,KAAO,SAAUe,EAAKohE,GACvC,IACIC,EAAMf,EA7ed,SAAoBz9D,GAChB,IAEI7O,EACAhM,EACAi4E,EACAC,EACAC,EACAC,EAPA57D,EAAI3B,EAAE7a,OACNgjB,EAAQ,CAAC,YAAa,WAAY,WAAY,WAQlD,IAAKhX,EAAI,GAAIA,GAAKwQ,EAAGxQ,GAAK,GACtB4rE,EAAS50D,EAAO+0D,EAAal9D,EAAEksD,SAAS/6D,EAAI,GAAIA,KAWpD,IAFAhM,GAFA6a,EAAK7O,EAAI,GAAMwQ,EAAI3B,EAAEksD,SAAS/6D,EAAI,IAAM,IAAIqO,WAAW,IAE5Cra,OACXi4E,EAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAChDjsE,EAAI,EAAGA,EAAIhM,EAAQgM,GAAK,EACzBisE,EAAKjsE,GAAK,IAAM6O,EAAE7O,KAAQA,EAAI,GAAM,GAIxC,GADAisE,EAAKjsE,GAAK,IAAM,MAAUA,EAAI,GAAM,GAChCA,EAAI,GAEJ,IADA4rE,EAAS50D,EAAOi1D,GACXjsE,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACrBisE,EAAKjsE,GAAK,EAelB,OATAksE,GADAA,EAAU,EAAJ17D,GACI7J,SAAS,IAAIoD,MAAM,kBAC7BoiE,EAAK74E,SAAS44E,EAAI,GAAI,IACtBE,EAAK94E,SAAS44E,EAAI,GAAI,KAAO,EAE7BD,EAAK,IAAME,EACXF,EAAK,IAAMG,EAEXR,EAAS50D,EAAOi1D,GAETj1D,CA+bI82D,CA5ef,CA4e0B,IAAIz/D,WAAWrC,KAGrC,OAAOohE,EAAMZ,EAAkBa,GAAOA,CAAAA,EAGnCZ,CAAAA,EA5uBgB,WAAnB59D,EAAOxW,GAEPD,EAAOC,QAAU0b,SAAAA,KAGX1D,EAAAA,mBAAN09D,EAAAA,GAAM,qBAAAz9D,EAAAA,QAAAA,EAAA,gxBCJd,KAAMynD,EAAex/D,EAAQ,IAuBvBy1E,EAAAA,WACL,aAAc/d,EAAAA,KAAAA,GACbtwD,KAAKsuE,OAAS,6CAGPhiD,EAAK5nB,GAKZ,IAAMwU,EAAU,CAACq1D,UAJjB7pE,EAAUX,OAAOQ,OAAO,CACvBgqE,SAAU,GACR7pE,IAEgC6pE,SAAUjiD,IAAAA,GAE7C,GAAItsB,KAAK0T,MAAQ1T,KAAKsuE,OAAOtuE,KAAK0T,KAAO,GAAG66D,UAAY7pE,EAAQ6pE,SAC/DvuE,KAAKsuE,OAAOztE,KAAKqY,OADlB,CAKA,IAAMpY,EApCR,SAAoBmnB,EAAOtsB,EAAO6yE,GAIjC,IAHA,IAAIT,EAAQ,EACRl1C,EAAQ5Q,EAAM5zB,OAEXwkC,EAAQ,GAAG,CACjB,IAAMo4B,EAAQp4B,EAAQ,EAAK,EACvB41C,EAAKV,EAAQ9c,EAEbud,EAAKvmD,EAAMwmD,GAAK9yE,IAAU,GAC7BoyE,IAAUU,EACV51C,GAASo4B,EAAO,GAEhBp4B,EAAQo4B,CAIV,QAAO8c,CAoBQW,CApChB,CAoC2B1uE,KAAKsuE,OAAQp1D,GAAS,SAAChK,EAAGC,GAAJ,OAAUA,EAAEo/D,SAAWr/D,EAAEq/D,QAAAA,IACxEvuE,KAAKsuE,OAAOvtE,OAAOD,EAAO,EAAGoY,EAAAA,CAAAA,mCAI7B,OAAOlZ,KAAKsuE,OAAOxrE,QAAQwpB,GAAAA,8BAI3B,OAAOtsB,KAAKsuE,OAAOj6E,MAAAA,OA1Bfg6E,GA8BAM,EAAAA,SAAAA,GACL,WAAYjqE,GAAS,MAYpB,GAZoB4rD,EAAAA,KAAAA,GACpBz/C,+LAAAA,CAAAA,KAAAA,EAAAA,GAAAA,KAAAA,SAWqC,iBATrCnM,EAAUX,OAAOQ,OAAO,CACvBqqE,2BAA2B,EAC3BC,YAAaC,IACbjqD,SAAU,EACVkqD,YAAaD,IACbE,WAAW,EACXC,WAAYZ,GACV3pE,IAEkBqqE,aAA4BrqE,EAAQqqE,aAAe,GACvE,MAAM,IAAIjvE,UAAJ,oEAA8E4E,EAAQqqE,YAAtF,gBAA+GrqE,EAAQqqE,aAAvH,MAGP,KAAqC,iBAAxBrqE,EAAQmqE,aAA4BnqE,EAAQmqE,aAAe,GACvE,MAAM,IAAI/uE,UAAJ,oEAA8E4E,EAAQmqE,YAAtF,gBAA+GnqE,EAAQmqE,aAAvH,MAGP,KAAMvQ,OAAO93C,SAAS9hB,EAAQmgB,WAAangB,EAAQmgB,UAAY,GAC9D,MAAM,IAAI/kB,UAAJ,+DAAyE4E,EAAQmgB,SAAjF,gBAAuGngB,EAAQmgB,UAA/G,MArBa,OAwBpBhU,EAAKq+D,2BAA6BxqE,EAAQkqE,0BAC1C/9D,EAAKs+D,mBAAqBzqE,EAAQmqE,cAAgBC,KAAiC,IAArBpqE,EAAQmgB,SACtEhU,EAAKu+D,eAAiB,EACtBv+D,EAAKw+D,aAAe3qE,EAAQmqE,YAC5Bh+D,EAAKy+D,UAAY5qE,EAAQmgB,SACzBhU,EAAK0+D,YAAc,KACnB1+D,EAAK2+D,aAAe,EACpB3+D,EAAK4+D,WAAa,KAElB5+D,EAAK4G,MAAQ,IAAI/S,EAAQuqE,WACzBp+D,EAAK6+D,YAAchrE,EAAQuqE,WAC3Bp+D,EAAK8+D,cAAgB,EACrB9+D,EAAK++D,aAAelrE,EAAQqqE,YAC5Bl+D,EAAKg/D,WAAAA,IAAYnrE,EAAQsqE,UACzBn+D,EAAKi/D,cAAgB,aACrBj/D,EAAKk/D,aAAe,aAvCAl/D,oRAmDpB7Q,KAAK2vE,gBACL3vE,KAAKgwE,oBAAAA,4CAILhwE,KAAK8vE,gBACL9vE,KAAK8vE,cAAgB,aAEM,IAAvB9vE,KAAK2vE,gBACR3vE,KAAK+vE,eACL/vE,KAAK+vE,aAAe,0DAKrB/vE,KAAKiwE,cACLjwE,KAAKkwE,8BACLlwE,KAAKyvE,WAAa,+CAGD,WACXjlE,EAAMrX,KAAKqX,MAEjB,GAAyB,OAArBxK,KAAKuvE,YAAsB,CAC9B,IAAMvyD,EAAQhd,KAAKwvE,aAAehlE,EAClC,KAAIwS,EAAQ,GAWX,OAJwB,OAApBhd,KAAKyvE,aACRzvE,KAAKyvE,WAAalzE,YAAW,kBAAMoU,EAAKw/D,mBAAAA,GAAqBnzD,KAAAA,EAJ9Dhd,KAAKovE,eAAkBpvE,KAAKkvE,2BAA8BlvE,KAAK2vE,cAAgB,CAWjF,QAAO,+CAIP,GAAwB,IAApB3vE,KAAKyX,MAAM/D,KAQd,OALA08D,cAAcpwE,KAAKuvE,aACnBvvE,KAAKuvE,YAAc,KAEnBvvE,KAAKqwE,oBAAAA,EAKN,IAAKrwE,KAAK6vE,UAAW,CACpB,IAAMS,GAAyBtwE,KAAKuwE,kBACpC,GAAIvwE,KAAKwwE,2BAA6BxwE,KAAKywE,4BAO1C,OANAzwE,KAAKy4D,KAAK,UACVz4D,KAAKyX,MAAMi5D,SAAX1wE,GACIswE,GACHtwE,KAAKkwE,+BAAAA,CAOR,QAAO,wDAGsB,WACzBlwE,KAAKmvE,oBAA2C,OAArBnvE,KAAKuvE,cAIpCvvE,KAAKuvE,YAAcoB,aAAY,kBAAMhgE,EAAKs/D,aAAAA,GAAejwE,KAAKsvE,WAC9DtvE,KAAKwvE,aAAer8E,KAAKqX,MAAQxK,KAAKsvE,UAAAA,uCAUtC,IAN4B,IAAxBtvE,KAAKovE,gBAA+C,IAAvBpvE,KAAK2vE,gBACrCS,cAAcpwE,KAAKuvE,aACnBvvE,KAAKuvE,YAAc,MAGpBvvE,KAAKovE,eAAkBpvE,KAAKkvE,2BAA8BlvE,KAAK2vE,cAAgB,EACxE3vE,KAAKgwE,uBAAAA,6BAGTnrE,EAAIH,GAAS,WAChB,OAAO,IAAIlL,SAAQ,SAACC,EAASC,GAsB5BmX,EAAK4G,MAAMm5D,SArBC,WACX//D,EAAK8+D,gBACL9+D,EAAKu+D,iBAEL,IACC51E,QAAQC,QAAQoL,KAAM1E,MACrB,YACC1G,EAAQxB,GACR4Y,EAAKggE,OAAAA,IAEN,YACCn3E,EAAOkC,GACPiV,EAAKggE,OAAAA,GAKFA,CAFJ,MAAO3tE,GACRxJ,EAAOwJ,GACP2N,EAAKggE,OAAAA,CAAAA,GAIiBnsE,GACxBmM,EAAKm/D,oBAAAA,GAAAA,gCAIArpE,EAAKjC,GAAS,WACpB,OAAOlL,QAAQiG,IAAIkH,EAAIqM,KAAI,YAAE,OAAInC,EAAK4N,IAAI5Z,EAAIH,EAAAA,IAAAA,iCAI9C,GAAK1E,KAAK6vE,UAKV,IADA7vE,KAAK6vE,WAAAA,EACE7vE,KAAKgwE,uBAAAA,iCAIZhwE,KAAK6vE,WAAAA,CAAY,iCAIjB7vE,KAAKyX,MAAQ,IAAIzX,KAAK0vE,WAAAA,mCAGb,WAET,OAAwB,IAApB1vE,KAAKyX,MAAM/D,KACPla,QAAQC,UAGT,IAAID,SAAQ,YAClB,IAAMs3E,EAAkBngE,EAAKm/D,cAC7Bn/D,EAAKm/D,cAAgB,WACpBgB,IACAr3E,GAAAA,CAAAA,GAAAA,kCAKM,WAER,OAA2B,IAAvBuG,KAAK2vE,eAA2C,IAApB3vE,KAAKyX,MAAM/D,KACnCla,QAAQC,UAGT,IAAID,SAAQ,YAClB,IAAMs3E,EAAkBngE,EAAKo/D,aAC7Bp/D,EAAKo/D,aAAe,WACnBe,IACAr3E,GAAAA,CAAAA,GAAAA,mDA5KF,OAAOuG,KAAKmvE,oBAAsBnvE,KAAKovE,eAAiBpvE,KAAKqvE,YAAAA,qDAI7D,OAAOrvE,KAAK2vE,cAAgB3vE,KAAK4vE,YAAAA,8BA8KjC,OAAO5vE,KAAKyX,MAAM/D,IAAAA,iCAIlB,OAAO1T,KAAK2vE,aAAAA,kCAIZ,OAAO3vE,KAAK6vE,SAAAA,OAtORlB,CAAevW,GA0OrB3/D,EAAOC,QAAUi2E,EACjBl2E,EAAOC,QAAQ+X,QAAUk+D,CAAAA,EAAAA,SAAAA,EAAAA,EAAAA,sPCxRzB,KASIoC,EAAU,qBAKVC,EAAU,oBACVC,EAAS,6BACTC,EAAS,eAKTC,EAAS,eAwBTC,EAAU,OAGVC,EAAe,8BAGfC,EAAW,mBAGXC,EAAgB,CAAC,EACrBA,EAAcR,GAAWQ,EA7CV,kBA8CfA,EA9BqB,wBA8BWA,EA7Bd,qBA8BlBA,EA9Cc,oBA8CWA,EA7CX,iBA8CdA,EA9BiB,yBA8BWA,EA7BX,yBA8BjBA,EA7Bc,sBA6BWA,EA5BV,uBA6BfA,EA5Be,uBA4BWA,EAAcL,GACxCK,EA5CgB,mBA4CWA,EA3CX,mBA4ChBA,EA1CgB,mBA0CWA,EAAcJ,GACzCI,EAzCgB,mBAyCWA,EAxCX,mBAyChBA,EA/Be,uBA+BWA,EA9BJ,8BA+BtBA,EA9BgB,wBA8BWA,EA7BX,2BA8BhBA,EArDe,kBAqDWA,EAAcP,GACxCO,EA3CiB,uBA8CjB,IAAIC,EAA8B,oBAAVpY,EAAP,YAAA/4D,EAAO+4D,KAAsBA,GAAUA,EAAOr1D,SAAWA,QAAUq1D,EAGhFqY,EAA0B,WAAf,oBAAOtgE,KAAP,cAAOA,QAAoBA,MAAQA,KAAKpN,SAAWA,QAAUoN,KAGxEqC,EAAOg+D,GAAcC,GAAY9S,SAAS,cAATA,GAGjC+S,EAAgC,UAAlBrxE,EAAO3H,IAAuBA,IAAYA,EAAQi5E,UAAYj5E,EAG5Ek5E,EAAaF,GAAgC,UAAjBrxE,EAAO5H,IAAsBA,IAAWA,EAAOk5E,UAAYl5E,EAGvFo5E,EAAgBD,GAAcA,EAAWl5E,UAAYg5E,EAUzD,SAASI,EAAY9+D,EAAK++D,GAGxB,OADA/+D,EAAIsJ,IAAIy1D,EAAK,GAAIA,EAAK,IACf/+D,CAWT,UAASg/D,EAAY11D,EAAK3gB,GAGxB,OADA2gB,EAAImC,IAAI9iB,GACD2gB,CAuDT,UAAS21D,EAAYhqD,EAAOiqD,EAAUC,EAAaC,GACjD,IAAItxE,GAAS,EACTzM,EAAS4zB,EAAQA,EAAM5zB,OAAS,EAKpC,IAHI+9E,GAAa/9E,IACf89E,EAAclqD,IAAQnnB,MAEfA,EAAQzM,GACf89E,EAAcD,EAASC,EAAalqD,EAAMnnB,GAAQA,EAAOmnB,GAE3D,OAAOkqD,CAyCT,UAASE,EAAa12E,GAGpB,IAAIqS,GAAAA,EACJ,GAAa,MAATrS,GAA0C,mBAAlBA,EAAMqL,SAChC,IACEgH,KAAYrS,EAAQ,GAGxB,CAFI,MAAO6M,GAEX,QAAOwF,CAUT,UAASskE,EAAWt/D,GAClB,IAAIlS,GAAS,EACTkN,EAASpL,MAAMoQ,EAAIU,MAKvB,OAHAV,EAAIzV,SAAQ,SAAS5B,EAAO6B,GAC1BwQ,IAASlN,GAAS,CAACtD,EAAK7B,EAAAA,IAEnBqS,CAWT,UAASukE,EAAQ7tB,EAAM+C,GACrB,OAAO,SAASp3C,GACd,OAAOq0C,EAAK+C,EAAUp3C,GAAAA,CAW1B,UAASmiE,EAAWl2D,GAClB,IAAIxb,GAAS,EACTkN,EAASpL,MAAM0Z,EAAI5I,MAKvB,OAHA4I,EAAI/e,SAAQ,SAAS5B,GACnBqS,IAASlN,GAASnF,CAAAA,IAEbqS,CAIT,KASMykE,EATFC,EAAa9vE,MAAM5D,UACnB2zE,EAAYhU,SAAS3/D,UACrB4zE,EAAc7uE,OAAO/E,UAGrB6zE,EAAar/D,EAAK,sBAGlBs/D,GACEL,EAAM,SAAStmE,KAAK0mE,GAAcA,EAAWxsE,MAAQwsE,EAAWxsE,KAAK0sE,UAAY,KACvE,iBAAmBN,EAAO,GAItCO,EAAeL,EAAU3rE,SAGzBwH,EAAiBokE,EAAYpkE,eAO7BykE,EAAiBL,EAAY5rE,SAG7BksE,EAAa7oE,OAAO,IACtB2oE,EAAa9xE,KAAKsN,GAAgBtF,QAzQjB,sBAyQuC,QACvDA,QAAQ,yDAA0D,SAAW,KAI5EwD,EAASmlE,EAAgBr+D,EAAK9G,YAAAA,EAC9Buf,EAASzY,EAAKyY,OACdvd,EAAa8E,EAAK9E,WAClBykE,EAAeZ,EAAQxuE,OAAOuK,eAAgBvK,QAC9CqvE,EAAervE,OAAO7E,OACtBwsB,EAAuBknD,EAAYlnD,qBACnC3qB,EAAS2xE,EAAW3xE,OAGpBsyE,EAAmBtvE,OAAOynB,sBAC1B8nD,EAAiB5mE,EAASA,EAAOvF,cAAAA,EACjCosE,EAAahB,EAAQxuE,OAAOsC,KAAMtC,QAGlCyvE,EAAWC,GAAUjgE,EAAM,YAC3BkgE,EAAMD,GAAUjgE,EAAM,OACtBha,EAAUi6E,GAAUjgE,EAAM,WAC1BmgE,EAAMF,GAAUjgE,EAAM,OACtBogE,EAAUH,GAAUjgE,EAAM,WAC1BqgE,EAAeJ,GAAU1vE,OAAQ,UAGjC+vE,EAAqBC,GAASP,GAC9BQ,EAAgBD,GAASL,GACzBO,GAAoBF,GAASv6E,GAC7B06E,GAAgBH,GAASJ,GACzBQ,GAAoBJ,GAASH,GAG7BQ,GAAcnoD,EAASA,EAAOjtB,eAAAA,EAC9Bq1E,GAAgBD,GAAcA,GAAYnjE,aAAAA,EAS9C,SAASqjE,GAAKl1B,GACZ,IAAIt+C,GAAS,EACTzM,EAAS+qD,EAAUA,EAAQ/qD,OAAS,EAGxC,IADA2L,KAAKkgC,UACIp/B,EAAQzM,GAAQ,CACvB,IAAIgqD,EAAQe,EAAQt+C,GACpBd,KAAKsc,IAAI+hC,EAAM,GAAIA,EAAM,IA2F7B,UAASk2B,GAAUn1B,GACjB,IAAIt+C,GAAS,EACTzM,EAAS+qD,EAAUA,EAAQ/qD,OAAS,EAGxC,IADA2L,KAAKkgC,UACIp/B,EAAQzM,GAAQ,CACvB,IAAIgqD,EAAQe,EAAQt+C,GACpBd,KAAKsc,IAAI+hC,EAAM,GAAIA,EAAM,IAyG7B,UAASm2B,GAASp1B,GAChB,IAAIt+C,GAAS,EACTzM,EAAS+qD,EAAUA,EAAQ/qD,OAAS,EAGxC,IADA2L,KAAKkgC,UACIp/B,EAAQzM,GAAQ,CACvB,IAAIgqD,EAAQe,EAAQt+C,GACpBd,KAAKsc,IAAI+hC,EAAM,GAAIA,EAAM,IAuF7B,UAASo2B,GAAMr1B,GACbp/C,KAAK00E,SAAW,IAAIH,GAAUn1B,EA4FhC,CA6BA,SAASnwC,GAAYsZ,EAAQ/qB,EAAK7B,GAChC,IAAIg5E,EAAWpsD,EAAO/qB,GAChBgR,EAAetN,KAAKqnB,EAAQ/qB,IAAQo3E,GAAGD,EAAUh5E,UAAAA,IAClDA,GAAyB6B,KAAO+qB,KACnCA,EAAO/qB,GAAO7B,EAYlB,UAASk5E,GAAa5sD,EAAOzqB,GAE3B,IADA,IAAInJ,EAAS4zB,EAAM5zB,OACZA,KACL,GAAIugF,GAAG3sD,EAAM5zB,GAAQ,GAAImJ,GACvB,OAAOnJ,EAGX,OAAQ,CA8BV,UAASygF,GAAUn5E,EAAOo5E,EAAQC,EAAQC,EAAYz3E,EAAK+qB,EAAQ1kB,GACjE,IAAImK,EAIJ,GAHIinE,IACFjnE,EAASua,EAAS0sD,EAAWt5E,EAAO6B,EAAK+qB,EAAQ1kB,GAASoxE,EAAWt5E,SAAAA,IAEnEqS,EACF,OAAOA,EAET,IAAKpG,GAASjM,GACZ,OAAOA,EAET,IAAIu5E,EAAQpvE,GAAQnK,GACpB,GAAIu5E,GAEF,GADAlnE,EA2XJ,SAAwBia,GACtB,IAAI5zB,EAAS4zB,EAAM5zB,OACf2Z,EAASia,EAAMtZ,YAAYta,GAO/B,OAJIA,GAA6B,iBAAZ4zB,EAAM,IAAkBzZ,EAAetN,KAAK+mB,EAAO,WACtEja,EAAOlN,MAAQmnB,EAAMnnB,MACrBkN,EAAOmrC,MAAQlxB,EAAMkxB,OAEhBnrC,CApYImnE,CA2Xb,CA3X4Bx5E,IACnBo5E,EACH,OA6ON,SAAmB/zE,EAAQinB,GACzB,IAAInnB,GAAS,EACTzM,EAAS2M,EAAO3M,OAGpB,IADA4zB,IAAUA,EAAQrlB,MAAMvO,MACfyM,EAAQzM,GACf4zB,EAAMnnB,GAASE,EAAOF,GAExB,OAAOmnB,CArPImtD,CA6Ob,CA7OuBz5E,EAAOqS,OAErB,CACL,IAAI+K,EAAMs8D,GAAO15E,GACb25E,EAASv8D,GAAOi4D,GAAWj4D,GAAOk4D,EAEtC,GAAI9pE,GAASxL,GACX,OA0HN,SAAqB6L,EAAQutE,GAC3B,GAAIA,EACF,OAAOvtE,EAAOrP,QAEhB,IAAI6V,EAAS,IAAIxG,EAAOmH,YAAYnH,EAAOnT,QAE3C,OADAmT,EAAO+tE,KAAKvnE,GACLA,CAhIIwnE,CA0Hb,CA1HyB75E,EAAOo5E,GAE5B,GAp0BY,mBAo0BRh8D,GAAoBA,GAAOg4D,GAAYuE,IAAW/sD,EAAS,CAC7D,GAAI8pD,EAAa12E,GACf,OAAO4sB,EAAS5sB,EAAQ,CAAC,EAG3B,GADAqS,EA+XN,SAAyBua,GACvB,MAAqC,mBAAtBA,EAAO5Z,aAA8B8mE,GAAYltD,GAE5D,CAAC,EAxVE3gB,GADW49D,EAwVH2N,EAAa5qD,IAvVH6qD,EAAa5N,GAAS,CAAC,EADlD,IAAoBA,CAzCLkQ,CA+Xf,CA/X+BJ,EAAS,CAAC,EAAI35E,IAClCo5E,EACH,OA6QR,SAAqB/zE,EAAQunB,GAC3B,OAAOotD,GAAW30E,EAAQ40E,GAAW50E,GAASunB,EA9QjCstD,CA6Qf,CA7Q2Bl6E,EAhD3B,SAAoB4sB,EAAQvnB,GAC1B,OAAOunB,GAAUotD,GAAW30E,EAAQqF,GAAKrF,GAASunB,EA+ClButD,CAhDlC,CAgD6C9nE,EAAQrS,GAAAA,KAE1C,CACL,IAAK41E,EAAcx4D,GACjB,OAAOwP,EAAS5sB,EAAQ,CAAC,EAE3BqS,EA0YN,SAAwBua,EAAQxP,EAAKg9D,EAAWhB,GAC9C,IA5MmBiB,EA4MfC,EAAO1tD,EAAO5Z,YAClB,OAAQoK,GACN,IArtCiB,uBAstCf,OAAOm9D,GAAiB3tD,GAE1B,IAvuCU,mBAwuCV,IAvuCU,gBAwuCR,OAAO,IAAI0tD,GAAM1tD,GAEnB,IA3tCc,oBA4tCZ,OA3QN,SAAuB4tD,EAAUpB,GAC/B,IAAIvtE,EAASutE,EAASmB,GAAiBC,EAAS3uE,QAAU2uE,EAAS3uE,OACnE,OAAO,IAAI2uE,EAASxnE,YAAYnH,EAAQ2uE,EAASC,WAAYD,EAASjJ,WAyQ3DmJ,CA3Qb,CA2Q2B9tD,EAAQwsD,GAE/B,IA7tCa,wBA6tCI,IA5tCJ,wBA6tCb,IA5tCU,qBA4tCI,IA3tCH,sBA2tCkB,IA1tClB,sBA2tCX,IA1tCW,sBA0tCI,IAztCG,6BAytCmB,IAxtCzB,uBAwtCyC,IAvtCzC,uBAwtCV,OA/MN,SAAyBuB,EAAYvB,GACnC,IAAIvtE,EAASutE,EAASmB,GAAiBI,EAAW9uE,QAAU8uE,EAAW9uE,OACvE,OAAO,IAAI8uE,EAAW3nE,YAAYnH,EAAQ8uE,EAAWF,WAAYE,EAAWjiF,OA6MjEkiF,CA/Mb,CA+M6BhuD,EAAQwsD,GAEjC,KAAK7D,EACH,OArQN,SAAkBl+D,EAAK+hE,EAAQgB,GAE7B,OAAO9D,EADK8C,EAASgB,EAAUzD,EAAWt/D,IAAAA,GAAcs/D,EAAWt/D,GACzC8+D,EAAa,IAAI9+D,EAAIrE,YAmQpC6nE,CArQb,CAqQsBjuD,EAAQwsD,EAAQgB,GAElC,IAhvCY,kBAivCZ,IA5uCY,kBA6uCV,OAAO,IAAIE,EAAK1tD,GAElB,IAjvCY,kBAkvCV,OAhQN,SAAqB60C,GACnB,IAAIpvD,EAAS,IAAIovD,EAAOzuD,YAAYyuD,EAAOp8D,OAAQowE,EAAQjlE,KAAKixD,IAEhE,OADApvD,EAAOiC,UAAYmtD,EAAOntD,UACnBjC,CA6PIyoE,CAhQb,CAgQyBluD,GAErB,KAAK4oD,EACH,OApPN,SAAkB70D,EAAKy4D,EAAQgB,GAE7B,OAAO9D,EADK8C,EAASgB,EAAUvD,EAAWl2D,IAAAA,GAAck2D,EAAWl2D,GACzC01D,EAAa,IAAI11D,EAAI3N,YAkPpC+nE,CApPb,CAoPsBnuD,EAAQwsD,EAAQgB,GAElC,IApvCY,kBAqvCV,OA3OeC,EA2OIztD,EA1OhB8rD,GAAgBtwE,OAAOswE,GAAcnzE,KAAK80E,IAAW,CAAC,EAhMhDW,CA0Yf,CA1Y8Bh7E,EAAOod,EAAK+7D,GAAWC,EAAAA,CAInDlxE,CAAAA,IAAUA,EAAQ,IAAI4wE,IACtB,IAAImC,EAAU/yE,EAAM0Y,IAAI5gB,GACxB,GAAIi7E,EACF,OAAOA,EAIT,GAFA/yE,EAAMyY,IAAI3gB,EAAOqS,IAEZknE,EACH,IAAI1lE,EAAQwlE,EAsQhB,SAAoBzsD,GAClB,OAnOF,SAAwBA,EAAQsuD,EAAUC,GACxC,IAAI9oE,EAAS6oE,EAAStuD,GACtB,OAAOziB,GAAQyiB,GAAUva,EApwB3B,SAAmBia,EAAO8uD,GAKxB,IAJA,IAAIj2E,GAAS,EACTzM,EAAS0iF,EAAO1iF,OAChBtB,EAASk1B,EAAM5zB,SAEVyM,EAAQzM,GACf4zB,EAAMl1B,EAAS+N,GAASi2E,EAAOj2E,GAEjC,OAAOmnB,CA4vB2B+uD,CApwBpC,CAowB8ChpE,EAAQ8oE,EAAYvuD,GAiOzD0uD,CAnOT,CAmOwB1uD,EAAQliB,GAAMuvE,GAvQbsB,CAsQzB,CAtQoCv7E,GAAS0K,GAAK1K,GAUhD,OA5vBF,SAAmBssB,EAAOiqD,GAIxB,IAHA,IAAIpxE,GAAS,EACTzM,EAAS4zB,EAAQA,EAAM5zB,OAAS,IAE3ByM,EAAQzM,IAAAA,IACX69E,EAASjqD,EAAMnnB,GAAQA,KA+uB7Bq2E,CApvBF,CAovBY3nE,GAAS7T,GAAO,SAASy7E,EAAU55E,GACvCgS,IAEF4nE,EAAWz7E,EADX6B,EAAM45E,IAIRnoE,GAAYjB,EAAQxQ,EAAKs3E,GAAUsC,EAAUrC,EAAQC,EAAQC,EAAYz3E,EAAK7B,EAAOkI,GAAAA,IAEhFmK,CAkDT,CAoDA,SAASkoE,GAAiB97C,GACxB,IAAIpsB,EAAS,IAAIosB,EAAYzrB,YAAYyrB,EAAY8yC,YAErD,OADA,IAAIx+D,EAAWV,GAAQsO,IAAI,IAAI5N,EAAW0rB,IACnCpsB,CA8GT,UAAS2nE,GAAW30E,EAAQwO,EAAO+Y,EAAQ0sD,GACzC1sD,IAAWA,EAAS,CAAC,GAKrB,IAHA,IAAIznB,GAAS,EACTzM,EAASmb,EAAMnb,SAEVyM,EAAQzM,GAAQ,CACvB,IAAImJ,EAAMgS,EAAM1O,GAEZ4nB,EAAWusD,EACXA,EAAW1sD,EAAO/qB,GAAMwD,EAAOxD,GAAMA,EAAK+qB,EAAQvnB,QAAAA,EAGtDiO,GAAYsZ,EAAQ/qB,OAAAA,IAAKkrB,EAAyB1nB,EAAOxD,GAAOkrB,EAElE,QAAOH,CAkCT,UAAS8uD,GAAWrkE,EAAKxV,GACvB,IAqKiB7B,EACbsC,EAtKApE,EAAOmZ,EAAI0hE,SACf,OAsKgB,WADZz2E,EAAOoC,EADM1E,EApKA6B,KAsKmB,UAARS,GAA4B,UAARA,GAA4B,WAARA,EACrD,cAAVtC,EACU,OAAVA,GAvKD9B,EAAmB,iBAAP2D,EAAkB,SAAW,QACzC3D,EAAKmZ,GAWX,UAASygE,GAAUlrD,EAAQ/qB,GACzB,IAAI7B,EAj8BN,SAAkB4sB,EAAQ/qB,GACxB,OAAiB,MAAV+qB,OAAAA,EAA6BA,EAAO/qB,EAg8B/B25D,CAj8Bd,CAi8BuB5uC,EAAQ/qB,GAC7B,OAvOF,SAAsB7B,GACpB,SAAKiM,GAASjM,KAyYE+oD,EAzYiB/oD,EA0YxBm3E,GAAeA,KAAcpuB,MAvYvBn2C,GAAW5S,IAAU02E,EAAa12E,GAAUu3E,EAAa7B,GACzD5mE,KAAKspE,GAASp4E,IAqY/B,IAAkB+oD,CAtVlB,CAmLS4yB,CAAa37E,GAASA,OAAAA,CA7tB/B24E,CAAAA,GAAKt1E,UAAUkhC,MAnEf,WACElgC,KAAK00E,SAAWb,EAAeA,EAAa,MAAQ,CAAC,CAAD,EAmEtDS,GAAKt1E,UAALs1E,OAtDA,SAAoB92E,GAClB,OAAOwC,KAAK03D,IAAIl6D,WAAewC,KAAK00E,SAASl3E,EAAAA,EAsD/C82E,GAAKt1E,UAAUud,IA1Cf,SAAiB/e,GACf,IAAI3D,EAAOmG,KAAK00E,SAChB,GAAIb,EAAc,CAChB,IAAI7lE,EAASnU,EAAK2D,GAClB,MA7YiB,8BA6YVwQ,OAAAA,EAAwCA,CAEjD,QAAOQ,EAAetN,KAAKrH,EAAM2D,GAAO3D,EAAK2D,QAAAA,CAAOH,EAqCtDi3E,GAAKt1E,UAAU04D,IAzBf,SAAiBl6D,GACf,IAAI3D,EAAOmG,KAAK00E,SAChB,OAAOb,OAAAA,IAAeh6E,EAAK2D,GAAqBgR,EAAetN,KAAKrH,EAAM2D,EAAAA,EAwB5E82E,GAAKt1E,UAAUsd,IAXf,SAAiB9e,EAAK7B,GAGpB,OAFWqE,KAAK00E,SACXl3E,GAAQq2E,QAAAA,IAAgBl4E,EA5aV,4BA4akDA,EAC9DqE,IAAAA,EAoHTu0E,GAAUv1E,UAAUkhC,MAjFpB,WACElgC,KAAK00E,SAAW,IAiFlBH,GAAUv1E,UAAVu1E,OArEA,SAAyB/2E,GACvB,IAAI3D,EAAOmG,KAAK00E,SACZ5zE,EAAQ+zE,GAAah7E,EAAM2D,GAE/B,QAAIsD,EAAQ,KAIRA,GADYjH,EAAKxF,OAAS,EAE5BwF,EAAKqT,MAELnM,EAAOG,KAAKrH,EAAMiH,EAAO,MAEpB,EAyDTyzE,GAAUv1E,UAAUud,IA7CpB,SAAsB/e,GACpB,IAAI3D,EAAOmG,KAAK00E,SACZ5zE,EAAQ+zE,GAAah7E,EAAM2D,GAE/B,OAAOsD,EAAQ,SAAgBjH,EAAKiH,GAAO,IA0C7CyzE,GAAUv1E,UAAU04D,IA9BpB,SAAsBl6D,GACpB,OAAOq3E,GAAa70E,KAAK00E,SAAUl3E,IAAQ,GA8B7C+2E,GAAUv1E,UAAUsd,IAjBpB,SAAsB9e,EAAK7B,GACzB,IAAI9B,EAAOmG,KAAK00E,SACZ5zE,EAAQ+zE,GAAah7E,EAAM2D,GAO/B,OALIsD,EAAQ,EACVjH,EAAKgH,KAAK,CAACrD,EAAK7B,IAEhB9B,EAAKiH,GAAO,GAAKnF,EAEZqE,IAAAA,EAkGTw0E,GAASx1E,UAAUkhC,MA/DnB,WACElgC,KAAK00E,SAAW,CACdppE,KAAQ,IAAIgpE,GACZthE,IAAO,IAAK0gE,GAAOa,IACnB1tD,OAAU,IAAIytD,GAAAA,EA4DlBE,GAASx1E,UAATw1E,OA/CA,SAAwBh3E,GACtB,OAAO65E,GAAWr3E,KAAMxC,GAAjB65E,OAAgC75E,EAAAA,EA+CzCg3E,GAASx1E,UAAUud,IAnCnB,SAAqB/e,GACnB,OAAO65E,GAAWr3E,KAAMxC,GAAK+e,IAAI/e,EAAAA,EAmCnCg3E,GAASx1E,UAAU04D,IAvBnB,SAAqBl6D,GACnB,OAAO65E,GAAWr3E,KAAMxC,GAAKk6D,IAAIl6D,EAAAA,EAuBnCg3E,GAASx1E,UAAUsd,IAVnB,SAAqB9e,EAAK7B,GAExB,OADA07E,GAAWr3E,KAAMxC,GAAK8e,IAAI9e,EAAK7B,GACxBqE,IAAAA,EAgGTy0E,GAAMz1E,UAAUkhC,MApEhB,WACElgC,KAAK00E,SAAW,IAAIH,EAAAA,EAoEtBE,GAAMz1E,UAANy1E,OAxDA,SAAqBj3E,GACnB,OAAOwC,KAAK00E,SAAL10E,OAAwBxC,EAAAA,EAwDjCi3E,GAAMz1E,UAAUud,IA5ChB,SAAkB/e,GAChB,OAAOwC,KAAK00E,SAASn4D,IAAI/e,EAAAA,EA4C3Bi3E,GAAMz1E,UAAU04D,IAhChB,SAAkBl6D,GAChB,OAAOwC,KAAK00E,SAAShd,IAAIl6D,EAAAA,EAgC3Bi3E,GAAMz1E,UAAUsd,IAnBhB,SAAkB9e,EAAK7B,GACrB,IAAIuS,EAAQlO,KAAK00E,SACjB,GAAIxmE,aAAiBqmE,GAAW,CAC9B,IAAIgD,EAAQrpE,EAAMwmE,SAClB,IAAKhB,GAAQ6D,EAAMljF,OAASmjF,IAE1B,OADAD,EAAM12E,KAAK,CAACrD,EAAK7B,IACVqE,KAETkO,EAAQlO,KAAK00E,SAAW,IAAIF,GAAS+C,EAGvC,QADArpE,EAAMoO,IAAI9e,EAAK7B,GACRqE,IAAAA,EAicT,IAAI41E,GAAavC,EAAmBd,EAAQc,EAAkBtvE,QAyhB9D,WACE,MAAO,IAjhBLsxE,GAtQJ,SAAoB15E,GAClB,OAAOs3E,EAAe/xE,KAAKvF,EAAAA,EAyX7B,SAAS87E,GAAQ97E,EAAOtH,GAEtB,SADAA,EAAmB,MAAVA,EAnxCY,iBAmxCwBA,KAE1B,iBAATsH,GAAqB21E,EAAS7mE,KAAK9O,KAC1CA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,EAAQtH,CAmC7C,UAASohF,GAAY95E,GACnB,IAAIs6E,EAAOt6E,GAASA,EAAMgT,YAG1B,OAAOhT,KAFqB,mBAARs6E,GAAsBA,EAAKj3E,WAAc4zE,EAY/D,UAASmB,GAASrvB,GAChB,GAAY,MAARA,EAAc,CAChB,IACE,OAAOsuB,EAAa9xE,KAAKwjD,EAE3B,CADE,MAAOl8C,GACT,KACE,OAAQk8C,EAAO,EACRl8C,CAAP,MAAOA,GAAAA,CAEX,OAAO,EAyDT,UAASosE,GAAGj5E,EAAO+7E,GACjB,OAAO/7E,IAAU+7E,GAAU/7E,GAAUA,GAAS+7E,GAAUA,CAAAA,EAxOrDlE,GA7oCa,qBA6oCD6B,GAAO,IAAI7B,EAAS,IAAI3kE,YAAY,MAChD6kE,GAAO2B,GAAO,IAAI3B,IAAQxC,GAC1B13E,GAvpCY,oBAupCD67E,GAAO77E,EAAQC,YAC1Bk6E,GAAO0B,GAAO,IAAI1B,IAAQxC,GAC1ByC,GAppCY,oBAopCDyB,GAAO,IAAIzB,MACzByB,GAAS,SAAS15E,GAChB,IAAIqS,EAASilE,EAAe/xE,KAAKvF,GAC7Bs6E,EA7pCQ,mBA6pCDjoE,EAAsBrS,EAAMgT,iBAAAA,EACnCgpE,EAAa1B,EAAOlC,GAASkC,QAAAA,EAEjC,GAAI0B,EACF,OAAQA,GACN,KAAK7D,EAAoB,MAzpCf,oBA0pCV,KAAKE,EAAe,OAAO9C,EAC3B,KAAK+C,GAAmB,MAnqCf,mBAoqCT,KAAKC,GAAe,OAAO/C,EAC3B,KAAKgD,GAAmB,MAhqCf,mBAmqCb,OAAOnmE,CAAAA,GAuQX,IAAIlI,GAAUlD,MAAMkD,QA2BpB,SAAS8xE,GAAYj8E,GACnB,OAAgB,MAATA,GAqGT,SAAkBA,GAChB,MAAuB,iBAATA,GACZA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,GA/jDb,gBAw9CGk8E,CAqG1B,CArGmCl8E,EAAMtH,UAAYka,GAAW5S,EAiDhE,KAAIwL,GAAWmsE,GAsLf,WACE,OAAO,GApKT,SAAS/kE,GAAW5S,GAGlB,IAAIod,EAAMnR,GAASjM,GAASs3E,EAAe/xE,KAAKvF,GAAS,GACzD,OAAOod,GAAOi4D,GAAWj4D,GAAOk4D,CA2DlC,UAASrpE,GAASjM,GAChB,IAAIsC,EAAOoC,EAAO1E,GAClB,QAASA,IAAkB,UAARsC,GAA4B,YAARA,EA2DzC,UAASoI,GAAKkiB,GACZ,OAAOqvD,GAAYrvD,GAn7BrB,SAAuB5sB,EAAOm8E,GAG5B,IAAI9pE,EAAUlI,GAAQnK,IAsrBxB,SAAqBA,GAEnB,OAmFF,SAA2BA,GACzB,OAmIF,SAAsBA,GACpB,QAASA,GAAyB,UAAhB0E,EAAO1E,EApIlBo8E,CAmIT,CAnIsBp8E,IAAUi8E,GAAYj8E,EApFnCq8E,CAmFT,CAnF2Br8E,IAAU6S,EAAetN,KAAKvF,EAAO,aAC1D+vB,EAAqBxqB,KAAKvF,EAAO,WAAas3E,EAAe/xE,KAAKvF,IAAUo1E,EAzrBhDkH,CAsrBlC,CAtrB8Ct8E,GAljB9C,SAAmBkV,EAAGqhE,GAIpB,IAHA,IAAIpxE,GAAS,EACTkN,EAASpL,MAAMiO,KAEV/P,EAAQ+P,GACf7C,EAAOlN,GAASoxE,EAASpxE,GAE3B,OAAOkN,CA4iBHkqE,CAnjBN,CAmjBgBv8E,EAAMtH,OAAQ2b,QACxB,GAEA3b,EAAS2Z,EAAO3Z,OAChB8jF,IAAgB9jF,EAEpB,IAAK,IAAImJ,KAAO7B,GACTm8E,IAAatpE,EAAetN,KAAKvF,EAAO6B,IACvC26E,IAAuB,UAAP36E,GAAmBi6E,GAAQj6E,EAAKnJ,KACpD2Z,EAAOnN,KAAKrD,GAGhB,OAAOwQ,CAaT,CAs5B+BoqE,CAAc7vD,GAtuB7C,SAAkBA,GAChB,IAAKktD,GAAYltD,GACf,OAAOgrD,EAAWhrD,GAEpB,IAAIva,EAAS,GACb,IAAK,IAAIxQ,KAAOuG,OAAOwkB,GACjB/Z,EAAetN,KAAKqnB,EAAQ/qB,IAAe,eAAPA,GACtCwQ,EAAOnN,KAAKrD,GAGhB,OAAOwQ,CA4tB8CqqE,CAtuBvD,CAsuBgE9vD,EA0ChE9vB,CAAAA,EAAOC,QA9VP,SAAmBiD,GACjB,OAAOm5E,GAAUn5E,GAAAA,GAAO,EAAM,0BAAAgV,qBCj3C1B,SAAU2nE,EAAgBzzE,GAC9B,IACE,OAAKA,GAAoB,mBAAPA,GAGXA,EAAGzD,MAVc,cAWxB,MAAOoH,GAGP,MAdwB,eAA5BqI,EAAAA,EAAAA,EAAAA,KAAAA,WAAA,WAA4B,kBCA5BA,EAAAA,EAAAA,EAAAA,KAAAA,WAAA,YAMA,iBAME,aACE7Q,KAAKu4E,YAAiC,mBAAZC,QAC1Bx4E,KAAKy4E,OAASz4E,KAAKu4E,YAAc,IAAIC,QAAY,EA0CrD,QAnCS7nE,EAAAA,UAAAA,QAAP,SAAerM,GACb,GAAItE,KAAKu4E,YACP,QAAIv4E,KAAKy4E,OAAO/gB,IAAIpzD,KAGpBtE,KAAKy4E,OAAOh6D,IAAIna,IAAAA,GAIlB,IAAK,IAAIjE,EAAI,EAAGA,EAAIL,KAAKy4E,OAAOpkF,OAAQgM,IAEtC,GADcL,KAAKy4E,OAAOp4E,KACZiE,EACZ,OAAO,EAIX,OADAtE,KAAKy4E,OAAO53E,KAAKyD,IAAAA,CACV,EAOFqM,EAAAA,UAAAA,UAAP,SAAiBrM,GACf,GAAItE,KAAKu4E,YACPv4E,KAAKy4E,OAAOC,OAAOp0E,QAEnB,IAAK,IAAIjE,EAAI,EAAGA,EAAIL,KAAKy4E,OAAOpkF,OAAQgM,IACtC,GAAIL,KAAKy4E,OAAOp4E,KAAOiE,EAAK,CAC1BtE,KAAKy4E,OAAO13E,OAAOV,EAAG,GACtB,QAKVsQ,CAlDA,iBAAAnI,EAAA,uOCJA,KAAIm/D,EAAS/uE,EAAQ,IAEjBi0D,EAAYj0D,EAAQ,IACpBgvE,EAAUhvE,EAAQ,IAClBkvE,EAAalvE,EAAQ,IAAU2qE,KAC/B1H,EAAkB+L,EAAQ/L,gBAC1BS,EAAcsL,EAAQtL,YACtBG,EAAgBmL,EAAQnL,cASxB4G,EAAY,SAASA,IAGvBrjE,KAAKw9D,cAAgBz5D,OAAO7E,OAAOmkE,EAAUrkE,UAAUw+D,eACvDx9D,KAAK08D,QAAU,CAAC,EAChB18D,KAAK24E,eAAiB,GAGtB34E,KAAK44E,MAAQ70E,OAAO7E,OAAO05E,GAC3B54E,KAAKiZ,WAAalV,OAAO7E,OAAO2tD,EAAUnrD,WAAAA,EA6G5C,SAASm3E,EAAchrE,GACrB,IAAI8F,EAAyB,iBAAX9F,EAAuBA,EAASA,EAAOm6D,KACzD,MAAgB,iBAALr0D,GAAsBA,CA3GnC0vD,CAAAA,EAAUrkE,UAAUw+D,cAAgB,CAAC,EAGrC6F,EAAUrkE,UAAU09D,QAAU,KAC9B2G,EAAUrkE,UAAU45E,MAAQ,KAC5BvV,EAAUrkE,UAAUia,WAAa,KACjCoqD,EAAUrkE,UAAU25E,eAAiB,KAQrCtV,EAAUrkE,UAAU85E,UAAY,SAAoBjrE,EAAQ6Y,GAC1D,IAAIvV,EAAOnR,KACX,IAAK6N,EACH,OAAO,KAET,IAAI01D,EAAOuE,EAAWphD,GAvCJ,IAuCyB7Y,GACvCkrE,EAASryD,GAAQ7Y,EAAOjJ,GAC5B,IAAI,IAAI62D,KAAO8H,EAAK3+D,GAClB5E,KAAK08D,QAAQjB,GAAO8H,EAAK3+D,GAAG62D,GAE9B,IAAI,IAAIA,KAAO8H,EAAK5vD,IAClB3T,KAAK24E,eAAe93E,KAAK46D,GAK3B,OAHAz7D,KAAK24E,eAAiB34E,KAAK24E,eAAehpE,QAAO,SAAS8rD,GACxD,YAAO,IAAOtqD,EAAKurD,QAAQjB,EAAAA,IAEtBz7D,KAAK08D,QAAQqc,EAAAA,EAGtB1V,EAAUrkE,UAAUg6E,kBAAoB,SAA2BjR,EAASrL,GAC1E,GAAKA,aAAmB95D,MACxB,IAAI,IAAIvC,EAAE,EAAGA,EAAEq8D,EAAQroE,OAAQgM,IAC7BL,KAAKi5E,aAAalR,EAASrL,EAAQr8D,GAAAA,EAIvCgjE,EAAUrkE,UAAUk6E,mBAAqB,SAA2BnR,EAASrL,GAC3E,GAAIA,GAA2B,UAAhBr8D,EAAOq8D,GACtB,IAAI,IAAIhgD,KAAKggD,EACX18D,KAAKi5E,aAAalR,EAASrL,EAAQhgD,GAAAA,EAUvC2mD,EAAUrkE,UAAUm6E,WAAa,SAAqBzc,GACpD18D,KAAK08D,QAAUA,CAAAA,EAOjB2G,EAAUrkE,UAAUo6E,UAAY,SAAoBC,GAClD,OAAOr5E,KAAK08D,QAAQ2c,EAAAA,EAWtBhW,EAAUrkE,UAAUwkE,SAAW,SAAmBzkE,EAAU8O,EAAQnJ,EAASo3D,GACtEp3D,IACHA,EAAU,CAAC,GAEb,IAAIk4D,EAAel4D,EAAQk4D,cAAgB,WAEvCl2C,EAAOihD,EAAOluE,QAAQiL,EAAQgiB,MAnGhB,IAmGqC7Y,EAAOjJ,IAAI,IAClE,IAAIk3D,EAAI,EACNA,EAAM,IAAIW,EAAc5uD,EAAQnJ,EAASk4D,EAAcl2C,EAAM3iB,OAAO7E,OAAOc,KAAK08D,WACvEA,QAAQh2C,KACfo1C,EAAIY,QAAQh2C,GAAQ7Y,GAEtB,IAAIg6D,EAAQC,EAAWphD,EAAM7Y,GAC7B,IAAI,IAAIgD,KAAKg3D,EAAMjjE,GAAG,CACpB,IAAI00E,EAAMzR,EAAMjjE,GAAGiM,GACnBirD,EAAIY,QAAQ7rD,GAAKyoE,CAAAA,CAGrB,IAAIzrE,EAAQ,CACV,IAAIG,EAAShO,KAAKu5E,eAAex6E,EAAU8O,EAAQnJ,EAASo3D,GAC5D,IAAK9tD,EACH,MAAM,IAAIna,MAAM,oBAElB,OAAOma,CAET,OAAM,IAAIsuD,EAAY,sBAAuBzuD,EAAAA,EAsB/Cw1D,EAAUrkE,UAAUu6E,eAAiB,SAAyBx6E,EAAU8O,EAAQnJ,EAASo3D,GACvF,IA8BI0d,EA9BAxrE,EAAS,IAAI6tD,EAAgB98D,EAAU8O,EAAQnJ,EAASo3D,GAG5D,GAAmB,kBAATjuD,GAAAA,IACLA,EAEDA,EAAS,CAAC,GAAD,IACFA,IAEPA,EAAS,CAAC5P,KAAM,UAEd,IAAI4P,EAER,MAAM,IAAIha,MAAM,uBAGlB,GAAIga,EAAMu6D,QACR,GAAIv6D,EAAMu6D,mBAAuBxlE,MAAO,CACtC,IAAI62E,EAAY,CAAC5rE,OAAQA,EAAQiuD,IAAKA,GACtCjuD,EAAMu6D,QAAY7qE,QAAQyC,KAAK05E,gBAAgBl7E,KAAKwB,KAAMy5E,IAC1D5rE,EAAS4rE,EAAU5rE,OACnB4rE,EAAU5rE,OAAS,KACnB4rE,EAAU3d,IAAM,KAChB2d,EAAY,UAEZ5rE,EAAS+5D,EAAQjK,UAAU9vD,EAAQ7N,KAAK25E,aAAa9rE,EAAMu6D,QAAatM,IAM5E,GAAI0d,EAAeX,EAAchrE,GAAS,CACxC,IAAI+rE,EAAW55E,KAAKvG,QAAQoU,EAAQ2rE,EAAc1d,GAC9C+d,EAAS,IAAIpd,EAAcmd,EAASE,UAAWp1E,EAASo3D,EAAIH,aAAcie,EAASJ,aAAc1d,EAAIY,SACzG,OAAO18D,KAAKu5E,eAAex6E,EAAU66E,EAASE,UAAWp1E,EAASm1E,EAGpE,KAAIE,EAAiBr1E,GAAWA,EAAQq1E,gBAAkB,GAE1D,IAAK,IAAIv8E,KAAOqQ,EACd,IAAKg/C,EAAUmtB,iBAAiBx8E,IAAQu8E,EAAez9E,QAAQkB,GAAO,EAAG,CACvE,IAAIy8E,EAAe,KACfx4E,EAAYzB,KAAKiZ,WAAWzb,GAChC,GAAIiE,EACFw4E,EAAex4E,EAAUP,KAAKlB,KAAMjB,EAAU8O,EAAQnJ,EAASo3D,QAC1D,IAAI,IAAAp3D,EAAQw1E,uBAEjB,MAAM,IAAI5d,EAAY,0BAA4B9+D,EAAKqQ,GAErDosE,GACFjsE,EAAOouD,aAAa6d,EAK1B,IAA8B,mBAAnBv1E,EAAQy1E,QAAuB,CACxC,IAAIx+E,EAAQ+I,EAAQy1E,QAAQj5E,KAAKlB,KAAMjB,EAAU8O,EAAQnJ,EAASo3D,GAClE9tD,EAAOjP,SAAWpD,CAEpB,QAAOqS,CAAAA,EASTq1D,EAAUrkE,UAAU06E,gBAAkB,SAA0BD,EAAWnpB,GACzEmpB,EAAU5rE,OAAS+5D,EAAQjK,UAAU8b,EAAU5rE,OAAQ7N,KAAK25E,aAAarpB,EAAGmpB,EAAU3d,KAAAA,EASxFuH,EAAUrkE,UAAU26E,aAAe,SAAuB9rE,EAAQiuD,GAChE,IAAInoD,EACJ,OAAGA,EAAMklE,EAAchrE,IACd7N,KAAKvG,QAAQoU,EAAQ8F,EAAKmoD,GAAKge,UAEjCjsE,CAAAA,EAWTw1D,EAAUrkE,UAAUvF,QAAU,SAAkBoU,EAAQ2rE,EAAc1d,GAGpE,GAFA0d,EAAe1d,EAAIriE,QAAQ+/E,GAEvB1d,EAAIY,QAAQ8c,GACd,MAAO,CAACM,UAAWhe,EAAIY,QAAQ8c,GAAeA,aAAcA,GAG9D,IAAI1tE,EAAS67D,EAAOr/D,MAAMkxE,GACtBY,EAAWtuE,GAAUA,EAAOR,KAC5BnB,EAAWiwE,GAAYA,EAAS/lF,QAAUmlF,EAAattE,OAAO,EAAGstE,EAAanlF,OAAS+lF,EAAS/lF,QACpG,IAAK8V,IAAa2xD,EAAIY,QAAQvyD,GAC5B,MAAM,IAAImyD,EAAY,mBAAqBkd,EAAe,IAAK3rE,GAEjE,IAAIisE,EAAYlS,EAAQ1J,cAAcpC,EAAIY,QAAQvyD,GAAWiwE,EAASluE,OAAO,IAC7E,YAAG4tE,EACD,MAAM,IAAIxd,EAAY,kBAAoB8d,EAAW,gBAAkBjwE,EAAW,IAAK0D,GAEzF,MAAO,CAACisE,UAAWA,EAAWN,aAAcA,EAAAA,EAa9CnW,EAAUrkE,UAAUq7E,SAAW,SAAuBt7E,EAAU8O,EAAQnJ,EAASo3D,EAAK79D,GACpF,GAA+B,mBAApB+B,KAAK44E,MAAM36E,GACpB,OAAO+B,KAAK44E,MAAM36E,GAAMiD,KAAKlB,KAAMjB,GAErC,GAAId,GAAuB,UAAfoC,EAAOpC,GAAkB,CACnC,IAAI24B,EAAM52B,KAAKu5E,eAAex6E,EAAUd,EAAMyG,EAASo3D,GACvD,YAAO,IAAAllC,KAAuBA,GAAOA,EAAImlC,OAAO1nE,OAGlD,QAAO,GAGT,IAAIukF,EAAQvV,EAAUrkE,UAAU45E,MAAQ,CAAC,EACzCA,EAAM/xD,OAAS,SAAqB9nB,GAClC,MAA0B,iBAAZA,CAAAA,EAEhB65E,EAAMn1E,OAAS,SAAqB1E,GAElC,MAA0B,iBAAZA,GAAwBynB,SAASznB,EAAAA,EAEjD65E,EAAM0B,QAAU,SAAsBv7E,GACpC,MAA2B,iBAAZA,GAAyBA,EAAW,GAAM,GAE3D65E,EAAM52E,QAAU,SAAsBjD,GACpC,MAA0B,kBAAZA,CAAAA,EAEhB65E,EAAM3wD,MAAQ,SAAoBlpB,GAChC,OAAO6D,MAAMkD,QAAQ/G,EAAAA,EAEvB65E,EAAK2B,KAAW,SAAmBx7E,GACjC,OAAoB,OAAbA,CAAAA,EAET65E,EAAM9lF,KAAO,SAAmBiM,GAC9B,OAAOA,aAAoB5L,IAAAA,EAE7BylF,EAAM4B,IAAM,SAAkBz7E,GAC5B,OAAO,GAET65E,EAAMrwD,OAAS,SAAqBxpB,GAElC,OAAOA,GAAkC,WAAtBsB,EAAQtB,MAA4BA,aAAoB6D,UAAY7D,aAAoB5L,KAAAA,EAG7GsF,EAAOC,QAAU2qE,CAAAA,EAAAA,SAAAA,EAAAA,EAAAA,8PC9Tf,SAAS7vD,GAGV,IAAIk+D,EAAgC,UAAlBj0D,EAAO/kB,IAAuBA,IAC9CA,EAAQi5E,UAAYj5E,EAClBk5E,EAA8B,UAAjBn0D,EAAOhlB,IAAsBA,IAC5CA,EAAOk5E,UAAYl5E,EACjB+4E,EAA8B,oBAAVpY,EAAP,YAAA37C,EAAO27C,KAAsBA,EAE7CoY,EAAWpY,SAAWoY,GACtBA,EAAW7lE,SAAW6lE,GACtBA,EAAWrgE,OAASqgE,IAEpBh+D,EAAOg+D,GAQR,IAAI/N,EAiCJjmE,EA9BAi9E,EAAS,WAaTC,EAAgB,QAChBC,EAAgB,eAChBC,EAAkB,4BAGlB7e,EAAS,CACRjjB,SAAY,kDACZ,YAAa,iDACb,gBAAiB,iBAKlBpyC,EAAQD,KAAKC,MACbm0E,EAAqB7qE,OAAOmrD,aAa5B,SAASj4D,EAAMjF,GACd,MAAM68E,WAAW/e,EAAO99D,GAWzB,UAAS+U,EAAIiV,EAAOpjB,GAGnB,IAFA,IAAIxQ,EAAS4zB,EAAM5zB,OACf2Z,EAAS,GACN3Z,KACN2Z,EAAO3Z,GAAUwQ,EAAGojB,EAAM5zB,IAE3B,OAAO2Z,CAaR,UAAS+sE,EAAUl0D,EAAQhiB,GAC1B,IAAIuE,EAAQyd,EAAOzyB,MAAM,KACrB4Z,EAAS,GAWb,OAVI5E,EAAM/U,OAAS,IAGlB2Z,EAAS5E,EAAM,GAAK,IACpByd,EAASzd,EAAM,IAMT4E,EADOgF,GAFd6T,EAASA,EAAO3d,QAAQ0xE,EAAiB,MACrBxmF,MAAM,KACAyQ,GAAI2E,KAAK,IAiBpC,UAASwxE,EAAWn0D,GAMnB,IALA,IAGIlrB,EACAs/E,EAJAx0C,EAAS,GACTy0C,EAAU,EACV7mF,EAASwyB,EAAOxyB,OAGb6mF,EAAU7mF,IAChBsH,EAAQkrB,EAAOvX,WAAW4rE,OACb,OAAUv/E,GAAS,OAAUu/E,EAAU7mF,EAG3B,QAAX,OADb4mF,EAAQp0D,EAAOvX,WAAW4rE,OAEzBz0C,EAAO5lC,OAAe,KAARlF,IAAkB,KAAe,KAARs/E,GAAiB,QAIxDx0C,EAAO5lC,KAAKlF,GACZu/E,KAGDz0C,EAAO5lC,KAAKlF,GAGd,OAAO8qC,CAWR,UAAS00C,EAAWlzD,GACnB,OAAOjV,EAAIiV,GAAO,SAAStsB,GAC1B,IAAI8qC,EAAS,GAOb,OANI9qC,EAAQ,QAEX8qC,GAAUo0C,GADVl/E,GAAS,SAC8B,GAAK,KAAQ,OACpDA,EAAQ,MAAiB,KAARA,GAElB8qC,EAAUo0C,EAAmBl/E,EAAAA,IAE3B6N,KAAK,GAoCT,UAAS4xE,EAAaC,EAAOC,GAG5B,OAAOD,EAAQ,GAAK,IAAMA,EAAQ,MAAgB,GAARC,IAAc,EAQzD,UAASC,EAAMh2D,EAAOi2D,EAAWC,GAChC,IAAIxoB,EAAI,EAGR,IAFA1tC,EAAQk2D,EAAY/0E,EAAM6e,EA1LpB,KA0LoCA,GAAS,EACnDA,GAAS7e,EAAM6e,EAAQi2D,GACOj2D,EAAQm2D,IAA2BzoB,GAhM3D,GAiML1tC,EAAQ7e,EAAM6e,EA3KAmB,IA6Kf,OAAOhgB,EAAMusD,EAAI,GAAsB1tC,GAASA,EAhM1C,IA0MP,UAASo2D,EAAOxiC,GAEf,IAEI2wB,EAIA8R,EACA3nB,EACAnzD,EACA+6E,EACAtoB,EACAN,EACAooB,EACA1qE,EAEAmrE,EArEiBC,EAsDjBt1C,EAAS,GACTu1C,EAAc7iC,EAAM9kD,OAEpBgM,EAAI,EACJwQ,EA7MM,IA8MNorE,EA/MS,GAoOb,KALAL,EAAQziC,EAAMrY,YA7NH,MA8NC,IACX86C,EAAQ,GAGJ3nB,EAAI,EAAGA,EAAI2nB,IAAS3nB,EAEpB9a,EAAM7pC,WAAW2kD,IAAM,KAC1B/wD,EAAM,aAEPujC,EAAO5lC,KAAKs4C,EAAM7pC,WAAW2kD,IAM9B,IAAKnzD,EAAQ86E,EAAQ,EAAIA,EAAQ,EAAI,EAAG96E,EAAQk7E,GAAwC,CAOvF,IAAKH,EAAOx7E,EAAGkzD,EAAI,EAAGN,EA3PjB,GA6PAnyD,GAASk7E,GACZ94E,EAAM,mBAGPm4E,GAxGmBU,EAwGE5iC,EAAM7pC,WAAWxO,MAvGxB,GAAK,GACbi7E,EAAY,GAEhBA,EAAY,GAAK,GACbA,EAAY,GAEhBA,EAAY,GAAK,GACbA,EAAY,GAjKd,SAmQiBV,EAAQ30E,GAAO+zE,EAASp6E,GAAKkzD,KACjDrwD,EAAM,YAGP7C,GAAKg7E,EAAQ9nB,IAGT8nB,GAFJ1qE,EAAIsiD,GAAKgpB,EAvQL,EAuQoBhpB,GAAKgpB,EAtQzB,MAsQ8ChpB,EAAIgpB,IAbHhpB,GA3P/C,GA+QAM,EAAI7sD,EAAM+zE,GADdqB,EA9QI,GA8QgBnrE,KAEnBzN,EAAM,YAGPqwD,GAAKuoB,EAKNG,EAAOV,EAAMl7E,EAAIw7E,EADjB/R,EAAMrjC,EAAOpyC,OAAS,EACc,GAARwnF,GAIxBn1E,EAAMrG,EAAIypE,GAAO2Q,EAAS5pE,GAC7B3N,EAAM,YAGP2N,GAAKnK,EAAMrG,EAAIypE,GACfzpE,GAAKypE,EAGLrjC,EAAO1lC,OAAOV,IAAK,EAAGwQ,EAIvB,QAAOsqE,EAAW10C,EAUnB,UAASx9B,EAAOkwC,GACf,IAAItoC,EACA0U,EACA22D,EACAC,EACAF,EACAhoB,EACAhE,EACAvE,EACAuH,EACAtiD,EACAsY,EAGA+yD,EAEAI,EACAN,EACAO,EANA51C,EAAS,GAoBb,IARAu1C,GAHA7iC,EAAQ6hC,EAAW7hC,IAGC9kD,OAGpBwc,EAvUU,IAwUV0U,EAAQ,EACR02D,EA1Ua,GA6URhoB,EAAI,EAAGA,EAAI+nB,IAAe/nB,GAC9BhrC,EAAekwB,EAAM8a,IACF,KAClBxtB,EAAO5lC,KAAKg6E,EAAmB5xD,IAejC,IAXAizD,EAAiBC,EAAc11C,EAAOpyC,OAMlC8nF,GACH11C,EAAO5lC,KAzVG,KA6VJq7E,EAAiBF,GAAa,CAIpC,IAAK/rB,EAAIwqB,EAAQxmB,EAAI,EAAGA,EAAI+nB,IAAe/nB,GAC1ChrC,EAAekwB,EAAM8a,KACDpjD,GAAKoY,EAAegnC,IACvCA,EAAIhnC,GAcN,IAPIgnC,EAAIp/C,EAAInK,GAAO+zE,EAASl1D,IAD5B62D,EAAwBF,EAAiB,KAExCh5E,EAAM,YAGPqiB,IAAU0qC,EAAIp/C,GAAKurE,EACnBvrE,EAAIo/C,EAECgE,EAAI,EAAGA,EAAI+nB,IAAe/nB,EAO9B,IANAhrC,EAAekwB,EAAM8a,IAEFpjD,KAAO0U,EAAQk1D,GACjCv3E,EAAM,YAGH+lB,GAAgBpY,EAAG,CAEtB,IAAK66C,EAAInmC,EAAO0tC,EAlYb,KAoYEvH,GADJ/6C,EAAIsiD,GAAKgpB,EAlYP,EAkYsBhpB,GAAKgpB,EAjY3B,MAiYgDhpB,EAAIgpB,IADThpB,GAlY3C,GAuYFopB,EAAU3wB,EAAI/6C,EACdmrE,EAxYE,GAwYkBnrE,EACpB81B,EAAO5lC,KACNg6E,EAAmBO,EAAazqE,EAAI0rE,EAAUP,EAAY,KAE3DpwB,EAAIhlD,EAAM21E,EAAUP,GAGrBr1C,EAAO5lC,KAAKg6E,EAAmBO,EAAa1vB,EAAG,KAC/CuwB,EAAOV,EAAMh2D,EAAO62D,EAAuBF,GAAkBC,GAC7D52D,EAAQ,IACN22D,CAAAA,GAIF32D,IACA1U,CAGH,QAAO41B,EAAOj9B,KAAK,GAuEpB,IA3BAi6D,EAAW,CAMVp2D,QAAW,QAQXivE,KAAQ,CACPX,OAAUX,EACV/xE,OAAUkyE,GAEXQ,OAAUA,EACV1yE,OAAUA,EACVm9D,QA/BD,SAAiBjtB,GAChB,OAAO4hC,EAAU5hC,GAAO,SAAStyB,GAChC,OAAO8zD,EAAclwE,KAAKoc,GACvB,OAAS5d,EAAO4d,GAChBA,CAAAA,GAAAA,EA4BJ01D,UAnDD,SAAmBpjC,GAClB,OAAO4hC,EAAU5hC,GAAO,SAAStyB,GAChC,OAAO6zD,EAAcjwE,KAAKoc,GACvB80D,EAAO90D,EAAO1uB,MAAM,GAAGsF,eACvBopB,CAAAA,GAAAA,GAuDiB,UAArBpJ,EAAO2wD,EAAAA,MACPA,EAAAA,SAAAA,KAEAA,EAAAA,WACC,OAAO3K,CAAAA,EADFviE,KAAAsH,EAAAqI,EAAArI,EAAAmI,MAAAA,EAAAA,QAAAA,QAGA,GAAI+gE,GAAeE,EACzB,GAAIn5E,EAAOC,SAAWg5E,EACrBE,EAAWl5E,QAAU+qE,OAErB,IAAKjmE,KAAOimE,EACXA,EAASj1D,eAAehR,KAASk0E,EAAYl0E,GAAOimE,EAASjmE,SAI/DgW,EAAKiwD,SAAWA,CA7gBhB,EAghBAzjE,KAAAA,GAAAA,KAAAA,KAAAA,EAAAA,GAAAA,CAAAA,GAAAA,EAAAA,0PC/gBFvH,CAAAA,EAAOC,QAAU,CACf0P,SAAU,SAASiI,GACjB,MAAuB,iBAATA,CAAAA,EAEhBzI,SAAU,SAASyI,GACjB,MAAuB,WAAhBhQ,EAAOgQ,IAA6B,OAARA,CAAAA,EAErCuX,OAAQ,SAASvX,GACf,OAAe,OAARA,CAAAA,EAETi3D,kBAAmB,SAASj3D,GAC1B,OAAc,MAAPA,CAAAA,EAAAA,EAAAA,SAAAA,EAAAA,EAAAA,GCXX3X,EAAQijF,OAASjjF,EAAQ4P,MAAQ1P,EAAQ,IACzCF,EAAQuQ,OAASvQ,EAAQ+P,UAAY7P,EAAQ,qBCuB7C,SAAS4V,EAAelK,EAAK0B,GAC3B,OAAOjC,OAAO/E,UAAUwP,eAAetN,KAAKoD,EAAK0B,EAGnDvN,CAAAA,EAAOC,QAAU,SAAS8jF,EAAIC,EAAK7H,EAAIlwE,GACrC+3E,EAAMA,GAAO,IACb7H,EAAKA,GAAM,IACX,IAAItwE,EAAM,CAAC,EAEX,GAAkB,iBAAPk4E,GAAiC,IAAdA,EAAGnoF,OAC/B,OAAOiQ,EAGT,IAAI84D,EAAS,MACbof,EAAKA,EAAGpoF,MAAMqoF,GAEd,IAAIC,EAAU,IACVh4E,GAAsC,iBAApBA,EAAQg4E,UAC5BA,EAAUh4E,EAAQg4E,SAGpB,IAAIrpB,EAAMmpB,EAAGnoF,OAETqoF,EAAU,GAAKrpB,EAAMqpB,IACvBrpB,EAAMqpB,GAGR,IAAK,IAAIr8E,EAAI,EAAGA,EAAIgzD,IAAOhzD,EAAG,CAC5B,IAEIs8E,EAAMC,EAAM3pB,EAAG5pD,EAFf4/B,EAAIuzC,EAAGn8E,GAAG6I,QAAQk0D,EAAQ,OAC1BtmB,EAAM7N,EAAE3sC,QAAQs4E,GAGhB99B,GAAO,GACT6lC,EAAO1zC,EAAE/8B,OAAO,EAAG4qC,GACnB8lC,EAAO3zC,EAAE/8B,OAAO4qC,EAAM,KAEtB6lC,EAAO1zC,EACP2zC,EAAO,IAGT3pB,EAAI3oD,mBAAmBqyE,GACvBtzE,EAAIiB,mBAAmBsyE,GAElBpuE,EAAelK,EAAK2uD,GAEdntD,EAAQxB,EAAI2uD,IACrB3uD,EAAI2uD,GAAGpyD,KAAKwI,GAEZ/E,EAAI2uD,GAAK,CAAC3uD,EAAI2uD,GAAI5pD,GAJlB/E,EAAI2uD,GAAK5pD,CAQb,QAAO/E,CAAAA,EAGT,IAAIwB,EAAUlD,MAAMkD,SAAW,SAAU+2E,GACvC,MAA8C,mBAAvC94E,OAAO/E,UAAUgI,SAAS9F,KAAK27E,EAAAA,CAAAA,EAAAA,SAAAA,EAAAA,EAAAA,uOC3DxC,KAAIC,EAAqB,SAASzzE,GAChC,OAAQ,EAAOA,IACb,IAAK,SACH,OAAOA,EAET,IAAK,UACH,OAAOA,EAAI,OAAS,QAEtB,IAAK,SACH,OAAOmd,SAASnd,GAAKA,EAAI,GAE3B,QACE,MAAO,KAIb5Q,EAAOC,QAAU,SAAS4L,EAAKm4E,EAAK7H,EAAIxzE,GAOtC,OANAq7E,EAAMA,GAAO,IACb7H,EAAKA,GAAM,IACC,OAARtwE,IACFA,OAAAA,GAGiB,WAAfjE,EAAOiE,GACF0O,EAAI+pE,EAAWz4E,IAAM,SAAS2uD,GACnC,IAAI+pB,EAAKliF,mBAAmBgiF,EAAmB7pB,IAAM2hB,EACrD,OAAI9uE,EAAQxB,EAAI2uD,IACPjgD,EAAI1O,EAAI2uD,IAAI,SAAS5pD,GAC1B,OAAO2zE,EAAKliF,mBAAmBgiF,EAAmBzzE,GAAAA,IACjDG,KAAKizE,GAEDO,EAAKliF,mBAAmBgiF,EAAmBx4E,EAAI2uD,IAAAA,IAEvDzpD,KAAKizE,GAILr7E,EACEtG,mBAAmBgiF,EAAmB17E,IAASwzE,EAC/C95E,mBAAmBgiF,EAAmBx4E,IAF3B,IAKpB,IAAIwB,EAAUlD,MAAMkD,SAAW,SAAU+2E,GACvC,MAA8C,mBAAvC94E,OAAO/E,UAAUgI,SAAS9F,KAAK27E,EAAAA,EAGxC,SAAS7pE,EAAK6pE,EAAIjsE,GAChB,GAAIisE,EAAG7pE,IAAK,OAAO6pE,EAAG7pE,IAAIpC,GAE1B,IADA,IAAIgmB,EAAM,GACDv2B,EAAI,EAAGA,EAAIw8E,EAAGxoF,OAAQgM,IAC7Bu2B,EAAI/1B,KAAK+P,EAAEisE,EAAGx8E,GAAIA,IAEpB,OAAOu2B,CAGT,KAAImmD,EAAah5E,OAAOsC,MAAQ,SAAU/B,GACxC,IAAIsyB,EAAM,GACV,IAAK,IAAIp5B,KAAO8G,EACVP,OAAO/E,UAAUwP,eAAetN,KAAKoD,EAAK9G,IAAMo5B,EAAI/1B,KAAKrD,GAE/D,OAAOo5B,CAAAA,CAAAA,EAAAA,SAAAA,EAAAA,EAAAA,GCjFT,IAAIgxC,EAAUhvE,EAAQ,IAGlBijE,EAAkB+L,EAAQ/L,gBAE1BS,EAAcsL,EAAQtL,YAEtBzP,EAAY,CAEhBA,iBAA6B,CAE3BjoD,IAAAA,EACA6L,SAAAA,EACAjN,aAAAA,EACA4oC,OAAAA,EAEA6wC,kBAAAA,EACAC,kBAAAA,EACA7U,iBAAAA,EAEA8U,SAAAA,EACAnV,MAAAA,EACAI,SAAAA,IAME1mE,EAAamrD,EAAUnrD,WAAa,CAAC,EA8BzC,SAAS07E,EAAkBr+E,EAAU2F,EAASo3D,EAAK1vD,EAAUyB,GAC3D,IAAImuD,EAAat3D,EAAQs3D,WACzBt3D,EAAQs3D,YAAAA,EACR,IAAIplC,EAAM52B,KAAKu5E,eAAex6E,EAAU8O,EAAQnJ,EAASo3D,GAMzD,OALAp3D,EAAQs3D,WAAaA,GAEfplC,EAAIymD,OAASjxE,aAAoBuyD,UACrCvyD,EAASwqB,GAEJA,EAAIymD,KA+Ib,UAASC,EAAwBv+E,EAAU8O,EAAQnJ,EAASo3D,EAAK1jD,EAAUpK,GACzE,GAAIhO,KAAK44E,MAAMrwD,OAAOxpB,MAClB8O,EAAO06D,iBAAAA,IAAc16D,EAAO06D,WAAWnwD,IAG3C,IAAI,IAAAvK,EAAO26D,qBACTx6D,EAAOmuD,SAAS,CACd/6D,KAAM,uBACNw6D,SAAUxjD,EACV3X,QAAS,sBAAwB4H,KAAKI,UAAU2P,GAAY,6CAEzD,CACL,IAAIowD,EAAuB36D,EAAO26D,sBAAwB,CAAC,EAEjB,mBAA/B9jE,EAAQ64E,qBACjB74E,EAAQ64E,oBAAoBx+E,EAAUqZ,EAAUowD,EAAsB9jE,EAASo3D,GAGjF,IAAIllC,EAAM52B,KAAKu5E,eAAex6E,EAASqZ,GAAWowD,EAAsB9jE,EAASo3D,EAAIa,UAAU6L,EAAsBpwD,IAClHwe,EAAI73B,WAAaiP,EAAOjP,SAASqZ,KAAWpK,EAAOjP,SAASqZ,GAAYwe,EAAI73B,UAC/EiP,EAAOouD,aAAaxlC,EAAAA,CAhMxBl1B,CAAAA,EAAWzD,KAAO,SAAuBc,EAAU8O,EAAQnJ,EAASo3D,GAElE,QAAI,IAAA/8D,EACF,OAAO,KAET,IAAIiP,EAAS,IAAI6tD,EAAgB98D,EAAU8O,EAAQnJ,EAASo3D,GACxD8c,EAAQh2E,MAAMkD,QAAQ+H,EAAO5P,MAAQ4P,EAAO5P,KAAO,CAAC4P,EAAO5P,MAC/D,IAAK26E,EAAM7jE,KAAK/U,KAAKq6E,SAAS77E,KAAKwB,KAAMjB,EAAU8O,EAAQnJ,EAASo3D,IAAO,CACzE,IAAI1jB,EAAOwgC,EAAM5lE,KAAI,SAAU3J,GAC7B,OAAOA,EAAEzE,IAAO,IAAMyE,EAAEzE,GAAK,KAASyE,EAAE,MAE1C2E,EAAOmuD,SAAS,CACd/6D,KAAM,OACNw6D,SAAUxjB,EACV33C,QAAS,uBAAyB23C,GAGtC,QAAOpqC,CAAAA,EAuBTtM,EAAWonE,MAAQ,SAAwB/pE,EAAU8O,EAAQnJ,EAASo3D,GAEpE,QAAI,IAAA/8D,EACF,OAAO,KAET,IAAIiP,EAAS,IAAI6tD,EAAgB98D,EAAU8O,EAAQnJ,EAASo3D,GACxDvrD,EAAQ,IAAIsrD,EAAgB98D,EAAU8O,EAAQnJ,EAASo3D,GAC3D,IAAKl5D,MAAMkD,QAAQ+H,EAAOi7D,OACxB,MAAM,IAAIxM,EAAY,0BAExB,IAAKzuD,EAAOi7D,MAAM/zD,KAChBqoE,EAAkB5+E,KAChBwB,KAAMjB,EAAU2F,EAASo3D,GAAK,SAASllC,GAAKrmB,EAAM6rD,aAAaxlC,EAAAA,KAC3D,CACN,IAAIwhB,EAAOvqC,EAAOi7D,MAAM91D,KAAI,SAAU3J,EAAGhJ,GACvC,OAAQgJ,EAAEzE,IAAO,IAAMyE,EAAEzE,GAAK,KAAUyE,EAAE+iC,OAAS/jC,KAAKI,UAAUY,EAAE+iC,QAAY/iC,EAAC2+D,MAAa,IAAM3+D,EAAC2+D,KAAW,KAAS,cAAc3nE,EAAE,OAEvIqE,EAAQ84E,cACVxvE,EAAOouD,aAAa7rD,GAEtBvC,EAAOmuD,SAAS,CACd/6D,KAAM,QACNw6D,SAAUxjB,EACV33C,QAAS,iBAAmB23C,EAAK5uC,KAAK,MAG1C,QAAOwE,CAAAA,EAWTtM,EAAWmnE,MAAQ,SAAwB9pE,EAAU8O,EAAQnJ,EAASo3D,GAEpE,QAAI,IAAA/8D,EACF,OAAO,KAET,IAAK6D,MAAMkD,QAAQ+H,EAAOg7D,OACxB,MAAM,IAAIvM,EAAY,0BAExB,IAAItuD,EAAS,IAAI6tD,EAAgB98D,EAAU8O,EAAQnJ,EAASo3D,GACxD3qD,EAAOnR,KAaX,OAZA6N,EAAOg7D,MAAMtrE,SAAQ,SAAS8L,EAAGhJ,GAC/B,IAAIg9E,EAAQlsE,EAAKooE,eAAex6E,EAAUsK,EAAG3E,EAASo3D,GACtD,IAAIuhB,EAAMA,MAAM,CACd,IAAI9gB,EAAOlzD,EAAEzE,IAAO,IAAMyE,EAAEzE,GAAK,KAAUyE,EAAE+iC,OAAS/jC,KAAKI,UAAUY,EAAE+iC,QAAY/iC,EAAC2+D,MAAa,IAAM3+D,EAAC2+D,KAAW,KAAS,cAAc3nE,EAAE,IAC5I2N,EAAOmuD,SAAS,CACd/6D,KAAM,QACNw6D,SAAU,CAAEh3D,GAAI23D,EAAKloE,OAAQgpF,EAAMthB,OAAO1nE,OAAQgpF,MAAOA,GACzD58E,QAAS,+BAAiC87D,EAAM,SAAW8gB,EAAMthB,OAAO1nE,OAAS,eAEnF2Z,EAAOouD,aAAaihB,EAAAA,CAAAA,IAGjBrvE,CAAAA,EAWTtM,EAAWqnE,MAAQ,SAAwBhqE,EAAU8O,EAAQnJ,EAASo3D,GAEpE,QAAI,IAAA/8D,EACF,OAAO,KAET,IAAK6D,MAAMkD,QAAQ+H,EAAOk7D,OACxB,MAAM,IAAIzM,EAAY,0BAExB,IAAItuD,EAAS,IAAI6tD,EAAgB98D,EAAU8O,EAAQnJ,EAASo3D,GACxDvrD,EAAQ,IAAIsrD,EAAgB98D,EAAU8O,EAAQnJ,EAASo3D,GACvDjjC,EAAQhrB,EAAOk7D,MAAMp5D,OACvBytE,EAAkB5+E,KAChBwB,KAAMjB,EAAU2F,EAASo3D,GAAK,SAASllC,GAAMrmB,EAAM6rD,aAAaxlC,EAAAA,KAC5DviC,OACJ+jD,EAAOvqC,EAAOk7D,MAAM/1D,KAAI,SAAU3J,EAAGhJ,GACvC,OAAQgJ,EAAEzE,IAAO,IAAMyE,EAAEzE,GAAK,KAAUyE,EAAE+iC,OAAS/jC,KAAKI,UAAUY,EAAE+iC,QAAY/iC,EAAC2+D,MAAa,IAAM3+D,EAAC2+D,KAAW,KAAS,cAAc3nE,EAAE,OAY3I,OAVY,IAARw4B,IACEn0B,EAAQ84E,cACVxvE,EAAOouD,aAAa7rD,GAEtBvC,EAAOmuD,SAAS,CACd/6D,KAAM,QACNw6D,SAAUxjB,EACV33C,QAAS,2BAA6B23C,EAAK5uC,KAAK,QAG7CwE,CAAAA,EAWTtM,EAAW6mE,WAAa,SAA6BxpE,EAAU8O,EAAQnJ,EAASo3D,GAC9E,GAAI97D,KAAK44E,MAAMrwD,OAAOxpB,GAAtB,CACA,IAAIiP,EAAS,IAAI6tD,EAAgB98D,EAAU8O,EAAQnJ,EAASo3D,GACxDyM,EAAa16D,EAAO06D,YAAc,CAAC,EACvC,IAAK,IAAInwD,KAAYmwD,EAAY,CACW,mBAA/B7jE,EAAQ64E,qBACjB74E,EAAQ64E,oBAAoBx+E,EAAUqZ,EAAUmwD,EAAWnwD,GAAW1T,EAASo3D,GAGjF,IAAI91D,EAAOjC,OAAOyK,eAAetN,KAAKnC,EAAUqZ,GAAYrZ,EAASqZ,QAAAA,EACjEwe,EAAM52B,KAAKu5E,eAAevzE,EAAMuiE,EAAWnwD,GAAW1T,EAASo3D,EAAIa,UAAU4L,EAAWnwD,GAAWA,IACpGwe,EAAI73B,WAAaiP,EAAOjP,SAASqZ,KAAWpK,EAAOjP,SAASqZ,GAAYwe,EAAI73B,UAC/EiP,EAAOouD,aAAaxlC,EAEtB,QAAO5oB,CAAAA,CAAAA,EA0CTtM,EAAWgnE,kBAAoB,SAAoC3pE,EAAU8O,EAAQnJ,EAASo3D,GAC5F,GAAI97D,KAAK44E,MAAMrwD,OAAOxpB,GAAtB,CACA,IAAIiP,EAAS,IAAI6tD,EAAgB98D,EAAU8O,EAAQnJ,EAASo3D,GACxD4M,EAAoB76D,EAAO66D,mBAAqB,CAAC,EAErD,IAAK,IAAItwD,KAAYrZ,EAAU,CAC7B,IAAI0L,GAAAA,EACJ,IAAK,IAAImE,KAAW85D,EAElB,GADW,IAAIr+D,OAAOuE,GACZnE,KAAK2N,GAAf,CAGA3N,GAAAA,EAE0C,mBAA/B/F,EAAQ64E,qBACjB74E,EAAQ64E,oBAAoBx+E,EAAUqZ,EAAUswD,EAAkB95D,GAAUlK,EAASo3D,GAGvF,IAAIllC,EAAM52B,KAAKu5E,eAAex6E,EAASqZ,GAAWswD,EAAkB95D,GAAUlK,EAASo3D,EAAIa,UAAU+L,EAAkB95D,GAAUwJ,IAC9Hwe,EAAI73B,WAAaiP,EAAOjP,SAASqZ,KAAWpK,EAAOjP,SAASqZ,GAAYwe,EAAI73B,UAC/EiP,EAAOouD,aAAaxlC,EAAAA,CAElBnsB,GACF6yE,EAAuBp8E,KAAKlB,KAAMjB,EAAU8O,EAAQnJ,EAASo3D,EAAK1jD,EAAUpK,EAIhF,QAAOA,CAAAA,CAAAA,EAWTtM,EAAW8mE,qBAAuB,SAAuCzpE,EAAU8O,EAAQnJ,EAASo3D,GAClG,GAAI97D,KAAK44E,MAAMrwD,OAAOxpB,GAAtB,CAEA,GAAI8O,EAAO66D,kBACT,OAAO,KAET,IAAI16D,EAAS,IAAI6tD,EAAgB98D,EAAU8O,EAAQnJ,EAASo3D,GAC5D,IAAK,IAAI1jD,KAAYrZ,EACnBu+E,EAAuBp8E,KAAKlB,KAAMjB,EAAU8O,EAAQnJ,EAASo3D,EAAK1jD,EAAUpK,GAE9E,OAAOA,CAAAA,CAAAA,EASTtM,EAAW+7E,cAAgB,SAAgC1+E,EAAU8O,EAAQnJ,EAASo3D,GACpF,GAAK97D,KAAK44E,MAAMrwD,OAAOxpB,GAAvB,CACA,IAAIiP,EAAS,IAAI6tD,EAAgB98D,EAAU8O,EAAQnJ,EAASo3D,GAS5D,OARW/3D,OAAOsC,KAAKtH,GACZ1K,QAAUwZ,EAAO4vE,eAC1BzvE,EAAOmuD,SAAS,CACd/6D,KAAM,gBACNw6D,SAAU/tD,EAAO4vE,cACjBh9E,QAAS,4CAA8CoN,EAAO4vE,gBAG3DzvE,CAAAA,CAAAA,EASTtM,EAAWg8E,cAAgB,SAAgC3+E,EAAU8O,EAAQnJ,EAASo3D,GACpF,GAAK97D,KAAK44E,MAAMrwD,OAAOxpB,GAAvB,CACA,IAAIiP,EAAS,IAAI6tD,EAAgB98D,EAAU8O,EAAQnJ,EAASo3D,GAS5D,OARW/3D,OAAOsC,KAAKtH,GACZ1K,QAAUwZ,EAAO6vE,eAC1B1vE,EAAOmuD,SAAS,CACd/6D,KAAM,gBACNw6D,SAAU/tD,EAAO6vE,cACjBj9E,QAAS,4CAA8CoN,EAAO6vE,gBAG3D1vE,CAAAA,CAAAA,EAWTtM,EAAW4nB,MAAQ,SAAwBvqB,EAAU8O,EAAQnJ,EAASo3D,GACpE,IAAI3qD,EAAOnR,KACX,GAAKA,KAAK44E,MAAM3wD,MAAMlpB,IACjB8O,EAAOyb,MAAZ,CACA,IAAItb,EAAS,IAAI6tD,EAAgB98D,EAAU8O,EAAQnJ,EAASo3D,GAkB5D,OAjBA/8D,EAASmgC,OAAM,SAAUvjC,EAAO0E,GAC9B,IAAIipB,EAAQ1mB,MAAMkD,QAAQ+H,EAAOyb,OAAUzb,EAAOyb,MAAMjpB,IAAMwN,EAAOw6D,gBAAmBx6D,EAAOyb,MAC/F,QAAI,IAAAA,EACF,OAAO,EAET,IAAI,IAAAA,EAKF,OAJAtb,EAAOmuD,SAAS,CACd/6D,KAAM,QACNX,QAAS,qCAIb,IAAIm2B,EAAMzlB,EAAKooE,eAAe59E,EAAO2tB,EAAO5kB,EAASo3D,EAAIa,UAAUrzC,EAAOjpB,IAG1E,OAFGu2B,EAAI73B,WAAaiP,EAAOjP,SAASsB,KAAI2N,EAAOjP,SAASsB,GAAKu2B,EAAI73B,UACjEiP,EAAOouD,aAAaxlC,IAAAA,CACb,IAEF5oB,CAAAA,CAAAA,EASTtM,EAAWi8E,QAAU,SAA0B5+E,EAAU8O,EAAQnJ,EAASo3D,GACxE,GAAK97D,KAAK44E,MAAMn1E,OAAO1E,GAAvB,CACA,IAAIiP,EAAS,IAAI6tD,EAAgB98D,EAAU8O,EAAQnJ,EAASo3D,GAc5D,OAZIjuD,EAAOovE,mBAAAA,IAAoBpvE,EAAOovE,iBAC5Bl+E,EAAW8O,EAAO8vE,QAElB5+E,GAAY8O,EAAO8vE,UAG3B3vE,EAAOmuD,SAAS,CACd/6D,KAAM,UACNw6D,SAAU/tD,EAAO8vE,QACjBl9E,QAAS,gCAAkCoN,EAAO8vE,UAG/C3vE,CAAAA,CAAAA,EASTtM,EAAWk8E,QAAU,SAA0B7+E,EAAU8O,EAAQnJ,EAASo3D,GACxE,GAAK97D,KAAK44E,MAAMn1E,OAAO1E,GAAvB,CACA,IAAIiP,EAAS,IAAI6tD,EAAgB98D,EAAU8O,EAAQnJ,EAASo3D,GAc5D,OAZIjuD,EAAOqvE,mBAAAA,IAAoBrvE,EAAOqvE,iBAC5Bn+E,EAAW8O,EAAO+vE,QAElB7+E,GAAY8O,EAAO+vE,UAG3B5vE,EAAOmuD,SAAS,CACd/6D,KAAM,UACNw6D,SAAU/tD,EAAO+vE,QACjBn9E,QAAS,gCAAkCoN,EAAO+vE,UAG/C5vE,CAAAA,CAAAA,EAWT,IAAI6vE,EAAiC,SAAyC9+E,EAAU8O,EAAQnJ,EAASo3D,EAAKgiB,EAAgBC,GAC5H,GAAK/9E,KAAK44E,MAAMn1E,OAAO1E,GAAvB,CAEA,IAAIi/E,EAAqBnwE,EAAOiwE,GAChC,GAA0B,GAAtBE,EACF,MAAM,IAAI1hB,EAAYwhB,EAAiB,mBAGzC,IAAI9vE,EAAS,IAAI6tD,EAAgB98D,EAAU8O,EAAQnJ,EAASo3D,GAExDmiB,EAAmBrW,EAAQxJ,iBAAiBr/D,GAC5Cm/E,EAAkBtW,EAAQxJ,iBAAiB4f,GAE3CG,EAAc13E,KAAKwyB,IAAIglD,EAAmBC,GAC1CE,EAAa33E,KAAKy0D,IAAI,GAAIijB,GAU9B,OARI13E,KAAK4kC,MAAMtsC,EAAWq/E,GAAc33E,KAAK4kC,MAAM2yC,EAAqBI,IAAgB,GACtFpwE,EAAOmuD,SAAS,CACd/6D,KAAM08E,EACNliB,SAAWoiB,EACXv9E,QAASs9E,EAAe11E,KAAKI,UAAUu1E,KAIpChwE,CAAAA,CAAAA,EA2NT,SAASqwE,EAAYh1E,EAAGhJ,EAAG6O,GACzB,IAAI+kD,EAAGZ,EAAMnkD,EAAE7a,OACf,IAAK4/D,EAAI5zD,EAAI,EAAQ4zD,EAAIZ,EAAKY,IAC5B,GAAI2T,EAAQ7J,kBAAkB10D,EAAG6F,EAAE+kD,IACjC,OAAO,EAGX,OAAO,CAzNTvyD,CAAAA,EAAW48E,WAAa,SAA6Bv/E,EAAU8O,EAAQnJ,EAASo3D,GAC/E,OAAO+hB,EAA+B38E,KAAKlB,KAAMjB,EAAU8O,EAAQnJ,EAASo3D,EAAK,aAAc,yCAShGp6D,EAAW68E,YAAc,SAA8Bx/E,EAAU8O,EAAQnJ,EAASo3D,GAChF,OAAO+hB,EAA+B38E,KAAKlB,KAAMjB,EAAU8O,EAAQnJ,EAASo3D,EAAK,cAAe,uCASlGp6D,EAAWkuB,SAAW,SAA2B7wB,EAAU8O,EAAQnJ,EAASo3D,GAC1E,IAAI9tD,EAAS,IAAI6tD,EAAgB98D,EAAU8O,EAAQnJ,EAASo3D,GAkB5D,YAAO,IAjBH/8D,IAAAA,IAA0B8O,EAAO+hB,SAEnC5hB,EAAOmuD,SAAS,CACd/6D,KAAM,WACNX,QAAS,gBAEFT,KAAK44E,MAAMrwD,OAAOxpB,IAAa6D,MAAMkD,QAAQ+H,EAAO+hB,WAC7D/hB,EAAO+hB,SAASryB,SAAQ,SAASsT,QAAAA,IAC5B9R,EAAS8R,IACV7C,EAAOmuD,SAAS,CACd/6D,KAAM,WACNw6D,SAAU/qD,EACVpQ,QAAS,qBAAuB4H,KAAKI,UAAUoI,IAAAA,IAKhD7C,CAAAA,EASTtM,EAAWkN,QAAU,SAA0B7P,EAAU8O,EAAQnJ,EAASo3D,GACxE,GAAK97D,KAAK44E,MAAM/xD,OAAO9nB,GAAvB,CACA,IAAIiP,EAAS,IAAI6tD,EAAgB98D,EAAU8O,EAAQnJ,EAASo3D,GAQ5D,OAPK/8D,EAASqL,MAAMyD,EAAOe,UACzBZ,EAAOmuD,SAAS,CACd/6D,KAAM,UACNw6D,SAAU/tD,EAAOe,QACjBnO,QAAS,0BAA4B4H,KAAKI,UAAUoF,EAAOe,QAAQ5H,cAGhEgH,CAAAA,CAAAA,EAwBTtM,EAAW67D,OAAS,SAAyBx+D,EAAU8O,EAAQnJ,EAASo3D,GACtE,QAAI,IAAA/8D,EAAJ,CACA,IAAIiP,EAAS,IAAI6tD,EAAgB98D,EAAU8O,EAAQnJ,EAASo3D,GAQ5D,OAPK9tD,EAAOiuD,eAAkB2L,EAAQtK,SAASv+D,EAAU8O,EAAO0vD,OAAQv9D,OACtEgO,EAAOmuD,SAAS,CACd/6D,KAAM,SACNw6D,SAAU/tD,EAAO0vD,OACjB98D,QAAS,2BAA6B4H,KAAKI,UAAUoF,EAAO0vD,QAAU,YAGnEvvD,CAAAA,CAAAA,EASTtM,EAAW88E,UAAY,SAA4Bz/E,EAAU8O,EAAQnJ,EAASo3D,GAC5E,GAAK97D,KAAK44E,MAAM/xD,OAAO9nB,GAAvB,CACA,IAAIiP,EAAS,IAAI6tD,EAAgB98D,EAAU8O,EAAQnJ,EAASo3D,GACxD2iB,EAAM1/E,EAASqL,MAAM,oBASzB,OARarL,EAAS1K,QAAUoqF,EAAMA,EAAIpqF,OAAS,IACnCwZ,EAAO2wE,WACrBxwE,EAAOmuD,SAAS,CACd/6D,KAAM,YACNw6D,SAAU/tD,EAAO2wE,UACjB/9E,QAAS,mCAAqCoN,EAAO2wE,YAGlDxwE,CAAAA,CAAAA,EASTtM,EAAWg9E,UAAY,SAA4B3/E,EAAU8O,EAAQnJ,EAASo3D,GAC5E,GAAK97D,KAAK44E,MAAM/xD,OAAO9nB,GAAvB,CACA,IAAIiP,EAAS,IAAI6tD,EAAgB98D,EAAU8O,EAAQnJ,EAASo3D,GAExD2iB,EAAM1/E,EAASqL,MAAM,oBASzB,OARarL,EAAS1K,QAAUoqF,EAAMA,EAAIpqF,OAAS,IACnCwZ,EAAO6wE,WACrB1wE,EAAOmuD,SAAS,CACd/6D,KAAM,YACNw6D,SAAU/tD,EAAO6wE,UACjBj+E,QAAS,mCAAqCoN,EAAO6wE,YAGlD1wE,CAAAA,CAAAA,EASTtM,EAAWi9E,SAAW,SAA2B5/E,EAAU8O,EAAQnJ,EAASo3D,GAC1E,GAAK97D,KAAK44E,MAAM3wD,MAAMlpB,GAAtB,CACA,IAAIiP,EAAS,IAAI6tD,EAAgB98D,EAAU8O,EAAQnJ,EAASo3D,GAQ5D,OAPM/8D,EAAS1K,QAAUwZ,EAAO8wE,UAC9B3wE,EAAOmuD,SAAS,CACd/6D,KAAM,WACNw6D,SAAU/tD,EAAO8wE,SACjBl+E,QAAS,mCAAqCoN,EAAO8wE,WAGlD3wE,CAAAA,CAAAA,EASTtM,EAAWymD,SAAW,SAA2BppD,EAAU8O,EAAQnJ,EAASo3D,GAC1E,GAAK97D,KAAK44E,MAAM3wD,MAAMlpB,GAAtB,CACA,IAAIiP,EAAS,IAAI6tD,EAAgB98D,EAAU8O,EAAQnJ,EAASo3D,GAQ5D,OAPM/8D,EAAS1K,QAAUwZ,EAAOs6C,UAC9Bn6C,EAAOmuD,SAAS,CACd/6D,KAAM,WACNw6D,SAAU/tD,EAAOs6C,SACjB1nD,QAAS,mCAAqCoN,EAAOs6C,WAGlDn6C,CAAAA,CAAAA,EAWTtM,EAAWk9E,YAAc,SAA8B7/E,EAAU8O,EAAQnJ,EAASo3D,GAChF,GAAK97D,KAAK44E,MAAM3wD,MAAMlpB,GAAtB,CACA,IAAIiP,EAAS,IAAI6tD,EAAgB98D,EAAU8O,EAAQnJ,EAASo3D,GAa5D,OANK/8D,EAASmgC,OANd,SAAqB71B,EAAGhJ,EAAG6O,GACzB,IAAK,IAAI+kD,EAAI5zD,EAAI,EAAG4zD,EAAI/kD,EAAE7a,OAAQ4/D,IAAK,GAAI2T,EAAQ7J,kBAAkB10D,EAAG6F,EAAE+kD,IACxE,OAAO,EAET,OAAO,MAGPjmD,EAAOmuD,SAAS,CACd/6D,KAAM,cACNX,QAAS,4BAGNuN,CAAAA,CAAAA,EA0BTtM,EAAWk9E,YAAc,SAA8B7/E,EAAU8O,EAAQnJ,EAASo3D,GAChF,GAAK97D,KAAK44E,MAAM3wD,MAAMlpB,GAAtB,CACA,IAAIiP,EAAS,IAAI6tD,EAAgB98D,EAAU8O,EAAQnJ,EAASo3D,GAO5D,OANK/8D,EAASmgC,MAAMm/C,IAClBrwE,EAAOmuD,SAAS,CACd/6D,KAAM,cACNX,QAAS,4BAGNuN,CAAAA,CAAAA,EAWTtM,EAAWinE,aAAe,SAA+B5pE,EAAU8O,EAAQnJ,EAASo3D,GAClF,GAAK97D,KAAK44E,MAAMrwD,OAAOxpB,GAAvB,CACA,IAAIiP,EAAS,IAAI6tD,EAAgB98D,EAAU8O,EAAQnJ,EAASo3D,GAC5D,IAAK,IAAI1jD,KAAYvK,EAAO86D,aAC1B,QAAI,IAAA5pE,EAASqZ,GAAb,CAGA,IAAIymE,EAAMhxE,EAAO86D,aAAavwD,GAC1B0mE,EAAehjB,EAAIa,UAAUkiB,EAAKzmE,GAItC,GAHkB,iBAAPymE,IACTA,EAAM,CAACA,IAELj8E,MAAMkD,QAAQ+4E,GAChBA,EAAIthF,SAAQ,SAAUyI,QAAAA,IAChBjH,EAASiH,IACXgI,EAAOmuD,SAAS,CAGd/6D,KAAM,eACNw6D,SAAUkjB,EAAanjB,aACvBl7D,QAAS,YAAcuF,EAAO,2BAA6B84E,EAAanjB,cAAAA,QAIzE,CACL,IAAI/kC,EAAM52B,KAAKu5E,eAAex6E,EAAU8/E,EAAKn6E,EAASo6E,GACnD9wE,EAAOjP,WAAa63B,EAAI73B,WAAUiP,EAAOjP,SAAW63B,EAAI73B,UACvD63B,GAAOA,EAAImlC,OAAO1nE,SACpB2Z,EAAOmuD,SAAS,CACd/6D,KAAM,eACNw6D,SAAUkjB,EAAanjB,aACvBl7D,QAAS,wCAA0Cq+E,EAAanjB,eAElE3tD,EAAOouD,aAAaxlC,GAAAA,CAI1B,QAAO5oB,CAAAA,CAAAA,EAUTtM,EAAUq9E,KAAW,SAAuBhgF,EAAU8O,EAAQnJ,EAASo3D,GACrE,QAAI,IAAA/8D,EACF,OAAO,KAET,IAAK6D,MAAMkD,QAAQ+H,EAAMkxE,MACvB,MAAM,IAAIziB,EAAY,wBAAyBzuD,GAEjD,IAAIG,EAAS,IAAI6tD,EAAgB98D,EAAU8O,EAAQnJ,EAASo3D,GAQ5D,OAPKjuD,EAAMkxE,KAAShqE,KAAK6yD,EAAQ7J,kBAAkBv/D,KAAK,KAAMO,KAC5DiP,EAAOmuD,SAAS,CACd/6D,KAAM,OACNw6D,SAAU/tD,EAAMkxE,KAChBt+E,QAAS,8BAAgCoN,EAAMkxE,KAAS/rE,IAAIhD,QAAQxG,KAAK,OAGtEwE,CAAAA,EAUTtM,EAAUs9E,MAAY,SAAuBjgF,EAAU8O,EAAQnJ,EAASo3D,GACtE,QAAI,IAAA/8D,EACF,OAAO,KAET,IAAIiP,EAAS,IAAI6tD,EAAgB98D,EAAU8O,EAAQnJ,EAASo3D,GAQ5D,OAPK8L,EAAQ7J,kBAAkBlwD,EAAMmxE,MAAWjgF,IAC9CiP,EAAOmuD,SAAS,CACd/6D,KAAM,QACNw6D,SAAU/tD,EAAMmxE,MAChBv+E,QAAS,6CAA+CoN,EAAMmxE,QAG3DhxE,CAAAA,EAWTtM,EAAWsnE,IAAMtnE,EAAWknE,SAAW,SAAsB7pE,EAAU8O,EAAQnJ,EAASo3D,GACtF,IAAI3qD,EAAOnR,KACX,YAAGjB,EAAsB,OAAO,KAChC,IAAIiP,EAAS,IAAI6tD,EAAgB98D,EAAU8O,EAAQnJ,EAASo3D,GACxDmjB,EAAWpxE,EAAOm7D,KAAOn7D,EAAO+6D,SACpC,OAAIqW,GACAr8E,MAAMkD,QAAQm5E,KAAWA,EAAS,CAACA,IACvCA,EAAS1hF,SAAQ,SAAUU,GACzB,GAAIkT,EAAKkpE,SAASt7E,EAAU8O,EAAQnJ,EAASo3D,EAAK79D,GAAO,CACvD,IAAIihF,EAAWjhF,GAAQA,EAAK2G,IAAO,IAAM3G,EAAK2G,GAAK,KAAQ3G,EAC3D+P,EAAOmuD,SAAS,CACd/6D,KAAM,MACNw6D,SAAUsjB,EACVz+E,QAAS,yBAA2By+E,GAAAA,CAAAA,IAInClxE,GAZc,MAevBvV,EAAOC,QAAUm0D,CAAAA,EAAAA,SAAAA,EAAAA,EAAAA,uVC1iBjBp0D,CAAAA,EAAOC,QAnQP,SAAeqP,GAsCd,SAASo3E,EAAY1qB,GAGpB,IAFA,IAAInpD,EAAO,EAEFjL,EAAI,EAAGA,EAAIo0D,EAAUpgE,OAAQgM,IACrCiL,GAASA,GAAQ,GAAKA,EAAQmpD,EAAUnlD,WAAWjP,GACnDiL,GAAQ,EAGT,OAAO8zE,EAAYvpB,OAAOpvD,KAAK+U,IAAIlQ,GAAQ8zE,EAAYvpB,OAAOxhE,OAW/D,UAAS+qF,EAAY3qB,GACpB,IAAI4qB,EAEJ,SAAS1kB,IAAe,2BAAN5xD,EAAM,yBAANA,EAAM0U,GAAAzU,UAAAA,GAEvB,GAAK2xD,EAAMnS,QAAX,CAIA,IAAMr3C,EAAOwpD,EAGPhrB,EAAO2uB,OAAO,IAAInrE,MAClBmsF,EAAK3vC,GAAQ0vC,GAAY1vC,GAC/Bx+B,EAAKwjD,KAAO2qB,EACZnuE,EAAKu+B,KAAO2vC,EACZluE,EAAKw+B,KAAOA,EACZ0vC,EAAW1vC,EAEX5mC,EAAK,GAAKq2E,EAAYG,OAAOx2E,EAAK,IAEX,iBAAZA,EAAK,IAEfA,EAAKxG,QAAQ,MAId,IAAIzB,EAAQ,EACZiI,EAAK,GAAKA,EAAK,GAAGG,QAAQ,iBAAiB,SAACkB,EAAOmzD,GAElD,GAAc,OAAVnzD,EACH,OAAOA,EAERtJ,IACA,IAAM0+E,EAAYJ,EAAYtpB,WAAWyH,GACzC,GAAyB,mBAAdiiB,EAA0B,CACpC,IAAMvnF,EAAM8Q,EAAKjI,GACjBsJ,EAAQo1E,EAAUt+E,KAAKiQ,EAAMlZ,GAG7B8Q,EAAKhI,OAAOD,EAAO,GACnBA,GAED,QAAOsJ,CAAAA,IAIRg1E,EAAY7qB,WAAWrzD,KAAKiQ,EAAMpI,GAElC,IAAM02E,EAAQtuE,EAAKmjD,KAAO8qB,EAAY9qB,IACtCmrB,EAAM58E,MAAMsO,EAAMpI,EAAAA,CAmBnB,QAhBA4xD,EAAMlG,UAAYA,EAClBkG,EAAMnS,QAAU42B,EAAY52B,QAAQiM,GACpCkG,EAAMnG,UAAY4qB,EAAY5qB,YAC9BmG,EAAM/F,MAAQuqB,EAAY1qB,GAC1BkG,EAAMx8C,QAAUA,EAChBw8C,EAAM17D,OAASA,EAKiB,mBAArBmgF,EAAYM,MACtBN,EAAYM,KAAK/kB,GAGlBykB,EAAYO,UAAU9+E,KAAK85D,GAEpBA,CAGR,UAASx8C,IACR,IAAMrd,EAAQs+E,EAAYO,UAAUrjF,QAAQ0D,MAC5C,OAAe,IAAXc,IACHs+E,EAAYO,UAAU5+E,OAAOD,EAAO,MAMtC,UAAS7B,EAAOw1D,EAAWmrB,GAC1B,IAAMC,EAAWT,EAAYp/E,KAAKy0D,gBAAAA,IAAoBmrB,EAA4B,IAAMA,GAAanrB,GAErG,OADAorB,EAASvrB,IAAMt0D,KAAKs0D,IACburB,CA6FR,UAASC,EAAY1iB,GACpB,OAAOA,EAAOp2D,WACZwjB,UAAU,EAAG4yC,EAAOp2D,WAAW3S,OAAS,GACxC6U,QAAQ,UAAW,IAmBtB,QA/PAk2E,EAAYzkB,MAAQykB,EACpBA,EAAY3uE,QAAU2uE,EACtBA,EAAYG,OAoPZ,SAAgBtnF,GACf,OAAIA,aAAepE,MACXoE,EAAI4L,OAAS5L,EAAIwI,QAElBxI,CAAAA,EAvPRmnF,EAAYW,QAwLZ,WACC,IAAMhrB,EAAa,YACfqqB,EAAY9mB,MAAMtlD,IAAI8sE,IADP,EAEfV,EAAYY,MAAMhtE,IAAI8sE,GAAa9sE,KAAI,YAAS,MAAI,IAAMyhD,CAAAA,MAC5DjrD,KAAK,KAEP,OADA41E,EAAYa,OAAO,IACZlrB,CAAAA,EA7LRqqB,EAAYa,OAkJZ,SAAgBlrB,GAMf,IAAI10D,EALJ++E,EAAYtqB,KAAKC,GAEjBqqB,EAAY9mB,MAAQ,GACpB8mB,EAAYY,MAAQ,GAGpB,IAAM5rF,GAA+B,iBAAf2gE,EAA0BA,EAAa,IAAI3gE,MAAM,UACjEi/D,EAAMj/D,EAAMC,OAElB,IAAKgM,EAAI,EAAGA,EAAIgzD,EAAKhzD,IACfjM,EAAMiM,KAOW,OAFtB00D,EAAa3gE,EAAMiM,GAAG6I,QAAQ,MAAO,QAEtB,GACdk2E,EAAYY,MAAMn/E,KAAK,IAAIwJ,OAAO,IAAM0qD,EAAW7oD,OAAO,GAAK,MAE/DkzE,EAAY9mB,MAAMz3D,KAAK,IAAIwJ,OAAO,IAAM0qD,EAAa,OAIvD,IAAK10D,EAAI,EAAGA,EAAI++E,EAAYO,UAAUtrF,OAAQgM,IAAK,CAClD,IAAMtB,EAAWqgF,EAAYO,UAAUt/E,GACvCtB,EAASypD,QAAU42B,EAAY52B,QAAQzpD,EAAS01D,UAAAA,CAAAA,EA5KlD2qB,EAAY52B,QAsMZ,SAAiBpnD,GAChB,GAA8B,MAA1BA,EAAKA,EAAK/M,OAAS,GACtB,OAAO,EAGR,IAAIgM,EACAgzD,EAEJ,IAAKhzD,EAAI,EAAGgzD,EAAM+rB,EAAYY,MAAM3rF,OAAQgM,EAAIgzD,EAAKhzD,IACpD,GAAI++E,EAAYY,MAAM3/E,GAAGoK,KAAKrJ,GAC7B,OAAO,EAIT,IAAKf,EAAI,EAAGgzD,EAAM+rB,EAAY9mB,MAAMjkE,OAAQgM,EAAIgzD,EAAKhzD,IACpD,GAAI++E,EAAY9mB,MAAMj4D,GAAGoK,KAAKrJ,GAC7B,OAAO,EAIT,OAAO,GAzNRg+E,EAAY1qB,SAAW97D,EAAQ,IAE/BmL,OAAOsC,KAAK0B,GAAKxK,SAAQ,YACxB6hF,EAAY5hF,GAAOuK,EAAIvK,EAAAA,IAMxB4hF,EAAYO,UAAY,GAMxBP,EAAY9mB,MAAQ,GACpB8mB,EAAYY,MAAQ,GAOpBZ,EAAYtpB,WAAa,CAAC,EAkB1BspB,EAAYD,YAAcA,EA8M1BC,EAAYa,OAAOb,EAAY/3D,QAExB+3D,CAAAA,CAAAA,EAAAA,SAAAA,EAAAA,uOClQR,KAAI9uB,EAAI,IACJL,EAAIK,IACJxrD,EAAQ,GAAJmrD,EACJC,EAAQ,GAAJprD,EAuJR,SAASo7E,EAAOZ,EAAIa,EAAOtvE,EAAGzP,GAC5B,IAAIg/E,EAAWD,GAAa,IAAJtvE,EACxB,OAAOpK,KAAK4kC,MAAMi0C,EAAKzuE,GAAK,IAAMzP,GAAQg/E,EAAW,IAAM,GAvI7D3nF,CAAAA,EAAOC,QAAU,SAAST,EAAKyM,GAC7BA,EAAUA,GAAW,CAAC,EACtB,IAAIzG,EAAO4S,EAAO5Y,GAClB,GAAa,WAATgG,GAAqBhG,EAAI5D,OAAS,EACpC,OAkBJ,SAAe+Z,GAEb,MADAA,EAAM4B,OAAO5B,IACL/Z,OAAS,KAAjB,CAGA,IAAI+V,EAAQ,mIAAmI+B,KAC7IiC,GAEF,GAAKhE,EAAL,CAGA,IAAIyG,EAAIyV,WAAWlc,EAAM,IAEzB,QADYA,EAAM,IAAM,MAAM3M,eAE5B,IAAK,QACL,IAAK,OACL,IAAK,MACL,IAAK,KACL,IAAK,IACH,OAzDEyyD,SAyDKr/C,EACT,IAAK,QACL,IAAK,OACL,IAAK,IACH,OA9DEq/C,OA8DKr/C,EACT,IAAK,OACL,IAAK,MACL,IAAK,IACH,OAAOA,EAAIq/C,EACb,IAAK,QACL,IAAK,OACL,IAAK,MACL,IAAK,KACL,IAAK,IACH,OAAOr/C,EAAI/L,EACb,IAAK,UACL,IAAK,SACL,IAAK,OACL,IAAK,MACL,IAAK,IACH,OAAO+L,EAAIo/C,EACb,IAAK,UACL,IAAK,SACL,IAAK,OACL,IAAK,MACL,IAAK,IACH,OAAOp/C,EAAIy/C,EACb,IAAK,eACL,IAAK,cACL,IAAK,QACL,IAAK,OACL,IAAK,KACH,OAAOz/C,EACT,QACE,OA5CI,CANA,CArBCvI,CAkBX,CAlBiBrQ,GACR,GAAa,WAATgG,GAAqBuoB,SAASvuB,GACvC,OAAOyM,EAAQ27E,KA0GnB,SAAiBf,GACf,IAAIa,EAAQ15E,KAAK+U,IAAI8jE,GACrB,OAAIa,GAASjwB,EACJgwB,EAAOZ,EAAIa,EAAOjwB,EAAG,OAE1BiwB,GAASr7E,EACJo7E,EAAOZ,EAAIa,EAAOr7E,EAAG,QAE1Bq7E,GAASlwB,EACJiwB,EAAOZ,EAAIa,EAAOlwB,EAAG,UAE1BkwB,GAAS7vB,EACJ4vB,EAAOZ,EAAIa,EAAO7vB,EAAG,UAEvBgvB,EAAK,KAxHYgB,CA0G1B,CA1GkCroF,GAiFlC,SAAkBqnF,GAChB,IAAIa,EAAQ15E,KAAK+U,IAAI8jE,GACrB,OAAIa,GAASjwB,EACJzpD,KAAK4kC,MAAMi0C,EAAKpvB,GAAK,IAE1BiwB,GAASr7E,EACJ2B,KAAK4kC,MAAMi0C,EAAKx6E,GAAK,IAE1Bq7E,GAASlwB,EACJxpD,KAAK4kC,MAAMi0C,EAAKrvB,GAAK,IAE1BkwB,GAAS7vB,EACJ7pD,KAAK4kC,MAAMi0C,EAAKhvB,GAAK,IAEvBgvB,EAAK,IA/F2BiB,CAiFzC,CAjFkDtoF,GAEhD,MAAM,IAAIpE,MACR,wDACEwU,KAAKI,UAAUxQ,GAAAA,CAAAA,EAAAA,SAAAA,EAAAA,EAAAA,6GCZf0iE,EAAQl9C,IAAM,kBAGpBnd,EAAAA,WAAA,aAmKA,QAjKEqQ,EAAAA,UAAAA,QAAAA,SAAQpX,GAAR,oBAEaA,EAAOqhE,mBAChBrhE,EAAOqhE,kBAAAA,IAGTrhE,EAASwK,OAAAA,EAAAA,EAAAA,CAAYxK,IACdQ,QAAUR,EAAOQ,SAAW,CAAC,EAE9B,QAAAF,KAAME,EAAAA,EAAAA,QAGRmV,EAAAA,EAAiBrV,WACZE,EAAQ,gBAGjB,IAAIS,EAAU,IAAIC,eAOlB,GALIlB,EAAOinF,eACThmF,EAAQR,aAAe,QAIrBT,EAAOmB,KAAM,CACf,IAAKnB,EAAOmB,KAAKC,UAA4C,IAAhCpB,EAAOmB,KAAKC,SAAStG,SAAiBkF,EAAOmB,KAAKE,UAA4C,IAAhCrB,EAAOmB,KAAKE,SAASvG,OAC9G,OAAOmF,QAAQE,OAAO,IAAIuH,EAAAA,EAAe,kDAAkD1H,EAAOmB,KAAQnB,IAG5GQ,EAAQgB,cAAgB,SAAWC,KAAKH,SAASC,mBAAsBvB,EAAOmB,KAAKC,SAAQ,IAAIpB,EAAOmB,KAAKE,YAC3G+/D,EAAM,kCAAmCphE,EAAOmB,KAAKC,SAAWpB,EAAOmB,KAAKE,SAG9E,KAAIO,EAAM5B,EAAO4B,IAAIoN,OAcrB,MAZK,iBAAiBkC,KAAKtP,KACzBA,EAAM,WAAWA,GAGnBA,EAAM4I,OAAAA,EAAAA,EAAAA,CAAW5I,EAAK5B,EAAOyC,QAE7B2+D,EAAM,yCAA0Cx/D,EAAK5B,GAErDiB,EAAQqB,KAAKtC,EAAOuC,OAAOC,cAAeZ,GAAAA,GAE1CX,EAAQ0B,QAAU3C,EAAO2C,QAElB,IAAI1C,SAAoB,SAACC,EAASC,GACvC,IAAI+mF,EAqFJ,GAnFIlnF,EAAOW,cACTumF,EAAiB,SAAC//E,GAQhB,OANIlG,IACFA,EAAQ0D,QACR1D,EAAU,MAGZmgE,EAAM,0CAA2Cj6D,EAAQnH,GAClDG,EAAO,IAAIuH,EAAAA,EAAe,4BAA4BP,EAAUnH,EAAQ,KAAM0H,EAAAA,EAAmB0gE,SAAAA,EAG1GpoE,EAAOW,YAAY49D,KAAK,SAAU2oB,IAGpCjmF,EAAQ2B,mBAAqB,gIAC3B,OAAK3B,GAAkC,IAAvBA,EAAQ4B,aAID,IAAnB5B,EAAQiB,QAAiBjB,EAAQ6B,cAK/BhB,EAAkB0I,OAAAA,EAAAA,EAAAA,CAAavJ,EAAQc,yBACvColF,EAAelmF,EAAQe,SAEzBA,EAAuB,CACzB1B,KAAM6mF,EACNjlF,OAAQjB,EAAQiB,OAChBC,WAAYlB,EAAQkB,WACpB3B,QAASsB,EACT9B,OAAQA,GAGViB,EAAU,KACC,GAAMuJ,OAAAA,EAAAA,EAAAA,CAAcxI,KApB7B,WAsBF,OAAI,MAFJA,EAAW8E,EAAAA,QAES5E,QAAUF,EAASE,QAAU,KAE/Ck/D,EAAM,yBAA0Bp/D,GAChC,GAAO7B,EAAO,IAAIuH,EAAAA,EAAe,gBAAgB9F,EAAO5B,EAAQgC,EAAU0F,EAAAA,EAAmBwgE,WACpF,KAAOlmE,EAASE,QAAUF,EAASE,QAAU,KACtDk/D,EAAM,0BAA2Bp/D,GACjC,GAAO7B,EAAO,IAAIuH,EAAAA,EAAe,iBAAiB9F,EAAO5B,EAAQgC,EAAU0F,EAAAA,EAAmB0/E,aAI5FpnF,EAAOW,cACTX,EAAOW,YAAY6+D,eAAe,SAAU0nB,GAC5CA,EAAiB,MAGnB,GAAOhnF,EAAQ8B,KAAAA,GAAAA,GAAAA,EAIjBf,EAAQgC,QAAU,WAEXhC,IAILA,EAAU,KACVd,EAAO,IAAIuH,EAAAA,EAAe,kBAAmB1H,EAAQ,KAAM0H,EAAAA,EAAmB0gE,UAAAA,EAIhFnnE,EAAQkC,QAAU,SAAqBd,GACrCpB,EAAU,KACVmgE,EAAM,oBAAqB/+D,GAC3BlC,EAAO,IAAIuH,EAAAA,EAAe,gBAAiB1H,EAAQ,KAAM0H,EAAAA,EAAmBugE,SAAAA,EAI9EhnE,EAAQoC,UAAY,WAClBpC,EAAU,KACVmgE,EAAM,wBAAyBphE,GAC/BG,EAAO,IAAIuH,EAAAA,EAAe,kBAAmB1H,EAAQ,KAAM0H,EAAAA,EAAmBygE,SAAAA,EAI5E,qBAAsBlnE,GAAWT,GAAWgK,OAAOsC,KAAKtM,GAAS1F,OACnE,IAAK,IAAImJ,KAAOzD,OAAAA,IACVA,EAAQyD,KAIZm9D,EAAM,8BAA+Bn9D,EAAKzD,EAAQyD,IAClDhD,EAAQkD,iBAAiBF,EAAKzD,EAAQyD,KAIT,mBAAtBjE,EAAOqnF,YAA6B,CAACtwB,EAAAA,EAAauwB,KAAMvwB,EAAAA,EAAawwB,KAAKxkF,QAAQ/C,EAAOuC,SAAW,IAEzGtB,EAAQuD,QACV48D,EAAM,iCACNngE,EAAQuD,OAAOF,iBAAiB,WAAYtE,EAAOqnF,cAEnDjmB,EAAM,0BACNngE,EAAQqD,iBAAiB,WAAYtE,EAAOqnF,mBAAAA,IAI5C/mF,IACFA,EAAO,MAGTW,EAAQ+D,KAAK1E,EAAAA,GAAAA,EAGnB8W,CAnKA,CAAArQ,EAAA,aAAAkI,EAAA,uOCxBA,KAAMo2D,EAAOhmE,EAAQ,GAkDrBF,EAAQ2wE,cAhDc,SAAhBA,EAAyB5wD,EAAM/T,GACnC,IAAMq8E,EAAO,CAAC,EAGd,KAAMtoE,EAAKa,QAASslD,EAAK3H,cAAcx+C,EAAKa,QAAab,EAAK0oD,WAAYvC,EAAK3H,cAAcx+C,EAAK0oD,WAChG,OAAOvC,EAAK5H,QAAQv+C,EAAKxgB,KAAOwgB,EAAKxgB,IAAM,GAGvC2mE,EAAK5H,QAAQv+C,EAAKxgB,OACM,iBAAbwgB,EAAKxgB,KAAkC,KAAbwgB,EAAKxgB,KAAcwgB,EAAKxgB,MAAQyM,EAAQ66D,qBACpD,WAAtB76D,EAAQwyD,UACT6pB,EAAKr8E,EAAQu6D,cAAgB,CAAExmD,EAAKxgB,KAEpC8oF,EAAKr8E,EAAQu6D,cAAgBxmD,EAAKxgB,KAM1C2mE,EAAKv5D,MAAM07E,EAAMtoE,EAAK0oD,SAAUz8D,EAAQwyD,WAGxC,IADA,IAAM7wD,EAAOtC,OAAOsC,KAAKoS,EAAKa,OACrBxY,EAAQ,EAAGA,EAAQuF,EAAKhS,OAAQyM,IAAS,CAChD,IAAIs/D,EAAU/5D,EAAKvF,GACnB,GAAI2X,EAAKa,MAAM8mD,IAAY3nD,EAAKa,MAAM8mD,GAAS/rE,OAAS,EAEtD,IAAK,IAAI0kB,KADTgoE,EAAK3gB,GAAW,GACA3nD,EAAKa,MAAM8mD,GACzB2gB,EAAK3gB,GAASv/D,KAAKwoE,EAAc5wD,EAAKa,MAAM8mD,GAASrnD,GAAMrU,SAG7D,QAAGA,EAAQwyD,UAAmB,CAC5B,IAAMlpD,EAASq7D,EAAc5wD,EAAKa,MAAM8mD,GAAS,GAAI17D,GAChC,WAAlBrE,EAAO2N,GACR+yE,EAAK3gB,GAAW,CAAEpyD,GAElB+yE,EAAK3gB,GAAWpyD,CAAAA,KACW,WAAtBtJ,EAAQwyD,UACf6pB,EAAK3gB,GAAW,CAACiJ,EAAc5wD,EAAKa,MAAM8mD,GAAS,GAAI17D,IAEvDq8E,EAAK3gB,GAAWiJ,EAAc5wD,EAAKa,MAAM8mD,GAAS,GAAI17D,EAM5D,QAAOq8E,CAAAA,CAAAA,EAAAA,SAAAA,EAAAA,EAAAA,GC/CTtoF,EAAOC,QAAU,SAAS0nE,EAAS/mD,EAAQphB,GACzC+H,KAAKogE,QAAUA,EACfpgE,KAAKqZ,OAASA,EACdrZ,KAAKsZ,MAAQ,CAAC,EACdtZ,KAAKmhE,SAAW,CAAC,EACjBnhE,KAAK/H,IAAMA,EACX+H,KAAKshE,SAAW,SAAShoD,GACnB1W,MAAMkD,QAAQ9F,KAAKsZ,MAAMA,EAAM8mD,UAEjCpgE,KAAKsZ,MAAMA,EAAM8mD,SAASv/D,KAAKyY,GAE/BtZ,KAAKsZ,MAAMA,EAAM8mD,SAAW,CAAC9mD,EAAAA,CAAAA,CAAAA,EAAAA,SAAAA,EAAAA,EAAAA,GCXnC,IAAMslD,EAAOhmE,EAAQ,GAEf42B,EAAiB,CACrB2vC,wBAAwB,GAGpB3vD,EAAQ,CAAC,0BA8Kf,SAASwxE,EAAOngB,EAASxgE,GAEvB,IADA,IAAI4c,EAAQ5c,EACLA,EAAIwgE,EAAQxsE,OAAQgM,IACzB,GAAkB,KAAdwgE,EAAQxgE,IAA2B,KAAdwgE,EAAQxgE,QAAjC,CAEE,IAAI+/D,EAAUS,EAAQ30D,OAAO+Q,EAAO5c,EAAI4c,GACxC,GAAI5c,EAAI,GAAiB,QAAZ+/D,EACX,OAAO6gB,EAAe,aAAc,6DAA8DC,EAAyBrgB,EAASxgE,IAC/H,GAAkB,KAAdwgE,EAAQxgE,IAA+B,KAAlBwgE,EAAQxgE,EAAI,GAAW,CAErDA,IACA,MAMN,QAAOA,CAGT,UAAS8gF,EAAoBtgB,EAASxgE,GACpC,GAAIwgE,EAAQxsE,OAASgM,EAAI,GAAwB,MAAnBwgE,EAAQxgE,EAAI,IAAiC,MAAnBwgE,EAAQxgE,EAAI,IAElE,IAAKA,GAAK,EAAGA,EAAIwgE,EAAQxsE,OAAQgM,IAC/B,GAAmB,MAAfwgE,EAAQxgE,IAAiC,MAAnBwgE,EAAQxgE,EAAI,IAAiC,MAAnBwgE,EAAQxgE,EAAI,GAAY,CAC1EA,GAAK,EACL,YAGC,GACLwgE,EAAQxsE,OAASgM,EAAI,GACF,MAAnBwgE,EAAQxgE,EAAI,IACO,MAAnBwgE,EAAQxgE,EAAI,IACO,MAAnBwgE,EAAQxgE,EAAI,IACO,MAAnBwgE,EAAQxgE,EAAI,IACO,MAAnBwgE,EAAQxgE,EAAI,IACO,MAAnBwgE,EAAQxgE,EAAI,IACO,MAAnBwgE,EAAQxgE,EAAI,GACZ,CACA,IAAI+gF,EAAqB,EACzB,IAAK/gF,GAAK,EAAGA,EAAIwgE,EAAQxsE,OAAQgM,IAC/B,GAAmB,MAAfwgE,EAAQxgE,GACV+gF,SACK,GAAmB,MAAfvgB,EAAQxgE,IAEU,MAD3B+gF,EAEE,WAID,GACLvgB,EAAQxsE,OAASgM,EAAI,GACF,MAAnBwgE,EAAQxgE,EAAI,IACO,MAAnBwgE,EAAQxgE,EAAI,IACO,MAAnBwgE,EAAQxgE,EAAI,IACO,MAAnBwgE,EAAQxgE,EAAI,IACO,MAAnBwgE,EAAQxgE,EAAI,IACO,MAAnBwgE,EAAQxgE,EAAI,IACO,MAAnBwgE,EAAQxgE,EAAI,GAEZ,IAAKA,GAAK,EAAGA,EAAIwgE,EAAQxsE,OAAQgM,IAC/B,GAAmB,MAAfwgE,EAAQxgE,IAAiC,MAAnBwgE,EAAQxgE,EAAI,IAAiC,MAAnBwgE,EAAQxgE,EAAI,GAAY,CAC1EA,GAAK,EACL,KAKN,QAAOA,CA/OT3H,CA0PA,SAAS2oF,EAAiBxgB,EAASxgE,GAIjC,IAHA,IAAIogE,EAAU,GACV6gB,EAAY,GACZC,GAAAA,EACGlhF,EAAIwgE,EAAQxsE,OAAQgM,IAAK,CAC9B,GAbc,MAaVwgE,EAAQxgE,IAZE,MAYoBwgE,EAAQxgE,GACxC,GAAkB,KAAdihF,EACFA,EAAYzgB,EAAQxgE,OACf,IAAIihF,IAAczgB,EAAQxgE,GAE/B,SAEAihF,EAAY,QAET,GAAmB,MAAfzgB,EAAQxgE,IACC,KAAdihF,EAAkB,CACpBC,GAAAA,EACA,KAGJ9gB,CAAAA,GAAWI,EAAQxgE,EAErB,OAAkB,KAAdihF,GAIG,CAAE3lF,MAAO8kE,EAAS3/D,MAAOT,EAAGkhF,UAAWA,EAMhD,CA1RA7oF,EAAQ8qE,SAAW,SAAU3C,EAASn8D,GACpCA,EAAUk6D,EAAKxH,aAAa1yD,EAAS8qB,EAAgBhgB,GAKrD,IA8WuB4wD,EA9WjBC,EAAO,GACTmhB,GAAAA,EAGAC,GAAAA,EAEe,WAAf5gB,EAAQ,KAEVA,EAAUA,EAAQ30D,OAAO,IAG3B,IAAK,IAAI7L,EAAI,EAAGA,EAAIwgE,EAAQxsE,OAAQgM,IAAK,CACvC,GAAmB,MAAfwgE,EAAQxgE,GAmIL,CACL,GAAmB,MAAfwgE,EAAQxgE,IAA6B,OAAfwgE,EAAQxgE,IAA8B,OAAfwgE,EAAQxgE,IAA8B,OAAfwgE,EAAQxgE,GAC9E,SAEF,OAAO4gF,EAAe,cAAD,gBAAyBpgB,EAAQxgE,GAAjC,sBAAyD6gF,EAAyBrgB,EAASxgE,GAlIhH,IAAmB,MAAfwgE,IADJxgE,IAGE,IADAA,EAAI2gF,EAAOngB,IAAWxgE,IAChBzE,IACJ,OAAOyE,MAEJ,IAAmB,MAAfwgE,EAAQxgE,GAAY,CAC7BA,EAAI8gF,EAAoBtgB,EAASxgE,GACjC,QAEA,KAAIqhF,GAAAA,EACe,MAAf7gB,EAAQxgE,KAEVqhF,GAAAA,EACArhF,KAIF,IADA,IAAIgoC,EAAU,GAGZhoC,EAAIwgE,EAAQxsE,QACG,MAAfwsE,EAAQxgE,IACO,MAAfwgE,EAAQxgE,IACO,OAAfwgE,EAAQxgE,IACO,OAAfwgE,EAAQxgE,IACO,OAAfwgE,EAAQxgE,GACRA,IAEAgoC,GAAWw4B,EAAQxgE,GAWrB,GANoC,OAHpCgoC,EAAUA,EAAQ9/B,QAGN8/B,EAAQh0C,OAAS,KAE3Bg0C,EAAUA,EAAQ7d,UAAU,EAAG6d,EAAQh0C,OAAS,GAEhDgM,KAyTe+/D,EAvTI/3B,GA2TpBu2B,EAAKtH,OAAO8I,GApTX,OAAO6gB,EAAe,aALO,IAA1B54C,EAAQ9/B,OAAOlU,OACV,6EAEA,QAAHP,OAAWu0C,EAAX,yBAEoC64C,EAAyBrgB,EAASxgE,IAG7E,IAAM2N,EAASqzE,EAAiBxgB,EAASxgE,GACzC,IAAI,IAAA2N,EACF,OAAOizE,EAAe,cAAD,0BAAmC54C,EAAnC,sBAAgE64C,EAAyBrgB,EAASxgE,IAEzH,IAAIogE,EAAUzyD,EAAOrS,MAGrB,GAFA0E,EAAI2N,EAAOlN,MAEyB,MAAhC2/D,EAAQA,EAAQpsE,OAAS,GAAY,CAGvC,IAAMstF,EAAUC,EADhBnhB,EAAUA,EAAQj2C,UAAU,EAAGi2C,EAAQpsE,OAAS,GACCqQ,GACjD,IAAI,IAAAi9E,EAOF,OAAOV,EAAeU,EAAQ/lF,IAAI0H,KAAMq+E,EAAQ/lF,IAAI2gE,IAAK2kB,EAAyBrgB,EAASxgE,EAAIogE,EAAQpsE,OAASstF,EAAQ/lF,IAAIqQ,OAN5Hu1E,GAAAA,CAAW,MAQR,GAAIE,EAAY,CACrB,IAAK1zE,EAAOuzE,UACV,OAAON,EAAe,aAAD,uBAA+B54C,EAA/B,kCAAwE64C,EAAyBrgB,EAASxgE,IAC1H,GAAIogE,EAAQl4D,OAAOlU,OAAS,EACjC,OAAO4sF,EAAe,aAAD,uBAA+B54C,EAA/B,gDAAsF64C,EAAyBrgB,EAASxgE,IAE7I,IAAMwhF,EAAMxhB,EAAKnzD,MACjB,GAAIm7B,IAAYw5C,EACd,OAAOZ,EAAe,aAAD,uBAA+BY,EAA/B,qCAA+Dx5C,EAA/D,MAA4E64C,EAAyBrgB,EAASxgE,IAInH,GAAfggE,EAAKhsE,SAENotF,GAAAA,EAAc,KAGb,CACL,IAAME,EAAUC,EAAwBnhB,EAAS/7D,GACjD,IAAI,IAAAi9E,EAIF,OAAOV,EAAeU,EAAQ/lF,IAAI0H,KAAMq+E,EAAQ/lF,IAAI2gE,IAAK2kB,EAAyBrgB,EAASxgE,EAAIogE,EAAQpsE,OAASstF,EAAQ/lF,IAAIqQ,OAI9H,QAAGw1E,EACC,OAAOR,EAAe,aAAc,sCAAuCC,EAAyBrgB,EAASxgE,IAE7GggE,EAAKx/D,KAAKwnC,GAEdm5C,GAAAA,CAKF,KAAKnhF,IAAKA,EAAIwgE,EAAQxsE,OAAQgM,IAAK,CACjC,GAAmB,MAAfwgE,EAAQxgE,GAAY,CACtB,GAAuB,MAAnBwgE,EAAQxgE,EAAI,GAAY,CAG1BA,EAAI8gF,EAAoBtgB,IADxBxgE,GAEA,QAEA,MAEG,IAAmB,MAAfwgE,EAAQxgE,GAAY,CAC7B,IAAMyhF,EAAWC,EAAkBlhB,EAASxgE,GAC5C,IAAiB,GAAbyhF,EACF,OAAOb,EAAe,cAAD,4BAA6CC,EAAyBrgB,EAASxgE,IACtGA,EAAIyhF,CAAAA,CAGW,OAAfjhB,EAAQxgE,IACVA,GAAAA,CAWR,QAAKmhF,IAEMnhB,EAAKhsE,OAAS,IAChB4sF,EAAe,aAAD,mBAA2B54E,KAAKI,UAAU43D,EAAM,KAAM,GAAGn3D,QAAQ,SAAU,IAA3E,YAA0F,GAFxG+3E,EAAe,aAAc,sBAAuB,IA4H/D,IAAMe,EAAoB,IAAI33E,OAAO,0DAA2D,KAIhG,SAASu3E,EAAwBnhB,EAAS/7D,GAQxC,IAHA,IAAM02B,EAAUwjC,EAAKrH,cAAckJ,EAASuhB,GACtCC,EAAY,CAAC,EAEV5hF,EAAI,EAAGA,EAAI+6B,EAAQ/mC,OAAQgM,IAAK,CACvC,GAA6B,IAAzB+6B,EAAQ/6B,GAAG,GAAGhM,OAEhB,OAAO4sF,EAAe,cAAD,qBAA8B7lD,EAAQ/6B,GAAG,GAAzC,+BAA0E6hF,EAAqBzhB,EAASrlC,EAAQ/6B,GAAG,KACnI,QAAI,IAAA+6B,EAAQ/6B,GAAG,KAAqBqE,EAAQy6D,uBAEjD,OAAO8hB,EAAe,cAAD,6BAAsC7lD,EAAQ/6B,GAAG,GAAjD,qBAAwE6hF,EAAqBzhB,EAASrlC,EAAQ/6B,GAAG,KAKxI,IAAMq/D,EAAWtkC,EAAQ/6B,GAAG,GAC5B,IAAK8hF,EAAiBziB,GACpB,OAAOuhB,EAAe,cAAD,qBAA8BvhB,EAA9B,yBAA+DwiB,EAAqBzhB,EAASrlC,EAAQ/6B,GAAG,KAE/H,GAAK4hF,EAAUzzE,eAAekxD,GAI5B,OAAOuhB,EAAe,cAAD,qBAA8BvhB,EAA9B,kBAAwDwiB,EAAqBzhB,EAASrlC,EAAQ/6B,GAAG,KAFtH4hF,EAAUviB,GAAY,CAM1B,QAAO,CAkBT,UAASqiB,EAAkBlhB,EAASxgE,GAGlC,GAAmB,MAAfwgE,IADJxgE,GAEE,OAAQ,EACV,GAAmB,MAAfwgE,EAAQxgE,GAEV,OAtBJ,SAAiCwgE,EAASxgE,GACxC,IAAI+hF,EAAK,KAKT,IAJmB,MAAfvhB,EAAQxgE,KACVA,IACA+hF,EAAK,cAEA/hF,EAAIwgE,EAAQxsE,OAAQgM,IAAK,CAC9B,GAAmB,MAAfwgE,EAAQxgE,GACV,OAAOA,EACT,IAAKwgE,EAAQxgE,GAAG+J,MAAMg4E,GACpB,KAEJ,QAAQ,CAUCC,CAtBX,CAsBmCxhB,IAD/BxgE,GAIF,IADA,IAAIw4B,EAAQ,EACLx4B,EAAIwgE,EAAQxsE,OAAQgM,IAAKw4B,IAC9B,KAAIgoC,EAAQxgE,GAAG+J,MAAM,OAASyuB,EAAQ,IAAtC,CAEA,GAAmB,MAAfgoC,EAAQxgE,GACV,MACF,OAAQ,CAEV,QAAOA,CAGT,UAAS4gF,EAAe39E,EAAM7C,EAASkD,GACrC,MAAO,CACL/H,IAAK,CACH0H,KAAMA,EACNi5D,IAAK97D,EACLwL,KAAMtI,GAKZ,UAASw+E,EAAiBziB,GACxB,OAAOd,EAAKtH,OAAOoI,EAcrB,UAASwhB,EAAyBrgB,EAAS//D,GAEzC,OADY+/D,EAAQr2C,UAAU,EAAG1pB,GAAO1M,MAAM,SACjCC,MAIf,UAAS6tF,EAAqBzhB,EAASr2D,GACrC,OAAOq2D,EAAQnkE,QAAQ8N,GAASA,EAAM/V,MAAAA,CAAAA,EAAAA,SAAAA,EAAAA,EAAAA,GC7YxC,IAAM2/D,EAAO,SAAS9kD,GACpB,OAAOc,OAAOmrD,aAAajsD,EAAAA,EAGvBozE,EAAQ,CACZC,QAASvuB,EAAK,KACdwuB,YAAaxuB,EAAK,KAClByuB,aAAczuB,EAAK,KACnB0uB,iBAAkB1uB,EAAK,KAEvB2uB,UAAW3uB,EAAK,KAChB4uB,WAAY5uB,EAAK,KAEjB6uB,YAAa7uB,EAAK,KAElB8uB,SAAU9uB,EAAK,KACf+uB,SAAU/uB,EAAK,KACfgvB,SAAUhvB,EAAK,MAGXivB,EAAW,CACfX,EAAMC,QACND,EAAMG,aACNH,EAAME,YACNF,EAAMI,iBACNJ,EAAMO,YACNP,EAAMK,UACNL,EAAMM,WACNN,EAAMU,SACNV,EAAMQ,SACNR,EAAMS,UAGFpsB,EAAK,SAALA,EAAcl+C,EAAMyqE,EAAUx+E,GAClC,GAAwB,iBAAbw+E,EAET,OAAIzqE,GAAQA,EAAK,aAAMA,EAAK,GAAGxgB,IACtBk/D,EAAS1+C,EAAK,GAAGxgB,IAAKirF,GAEtB/rB,EAAS1+C,EAAMyqE,GAGxB,IA4EanC,EA5EPoC,OAAAA,KA4EOpC,EA5EgBtoE,GA8EtB6pE,EAAME,YACK,OAATzB,EACFuB,EAAMC,UAEbxB,EAAKznE,OAC8B,IAAnCvV,OAAOsC,KAAK06E,EAAKznE,OAAOjlB,UACtB0sF,EAAK5f,UAAkD,IAAtCp9D,OAAOsC,KAAK06E,EAAK5f,UAAU9sE,UAEvCiuF,EAAMK,UArFb,IAAI,IAAAQ,EAAuB,CACzB,IAAI/0E,EAAM,GACV,GAAIxL,MAAMkD,QAAQo9E,GAAW,CAE3B90E,GAAOk0E,EAAMS,SACb,IAAMK,EAAaF,EAAS,GAEtBG,EAAU5qE,EAAKpkB,OAErB,GAA0B,iBAAf+uF,EACT,IAAK,IAAIE,EAAQ,EAAGA,EAAQD,EAASC,IAAS,CAC5C,IAAM5yE,EAAIymD,EAAS1+C,EAAK6qE,GAAOrrF,IAAKmrF,GACpCh1E,EAAMm1E,EAAan1E,EAAKsC,EAAAA,MAG1B,IAAK,IAAI4yE,EAAQ,EAAGA,EAAQD,EAASC,IAAS,CAC5C,IAAM5yE,EAAIimD,EAAGl+C,EAAK6qE,GAAQF,EAAY1+E,GACtC0J,EAAMm1E,EAAan1E,EAAKsC,EAG5BtC,CAAAA,GAAOk0E,EAAMU,QAAAA,KACR,CAEL50E,GAAOk0E,EAAMQ,SACb,IAAMz8E,EAAOtC,OAAOsC,KAAK68E,GAIzB,IAAK,IAAI7iF,KAHLuC,MAAMkD,QAAQ2S,KAChBA,EAAOA,EAAK,IAEApS,EAAM,CAClB,IAIIqK,EAJElT,EAAM6I,EAAKhG,GAMfqQ,GADGhM,EAAQo2D,kBAAoBriD,EAAK0oD,UAAY1oD,EAAK0oD,SAAS3jE,GAC1Dm5D,EAAGl+C,EAAK0oD,SAAS3jE,GAAM0lF,EAAS1lF,GAAMkH,GACjClH,IAAQkH,EAAQu6D,aACrBtI,EAAGl+C,EAAKxgB,IAAKirF,EAAS1lF,GAAMkH,GAE5BiyD,EAAGl+C,EAAKa,MAAM9b,GAAM0lF,EAAS1lF,GAAMkH,GAEzC0J,EAAMm1E,EAAan1E,EAAKsC,EAAAA,CAG5B,QAAOtC,CAEP,QAAO+0E,CAAAA,EAKPhsB,EAAW,SAASjoD,GACxB,OAAQA,GACN,UAAK,EACH,OAAOozE,EAAMI,iBACf,KAAK,KACH,OAAOJ,EAAMG,aACf,IAAK,GACH,OAAOH,EAAMM,WACf,QACE,OAAO1zE,EAAAA,EAIPq0E,EAAe,SAASn1E,EAAKsC,GAIjC,OAHK8yE,EAAU9yE,EAAE,KAAQ8yE,EAAUp1E,EAAIA,EAAI/Z,OAAS,MAClD+Z,GAAOk0E,EAAMO,aAERz0E,EAAMsC,CAAAA,EAGT8yE,EAAY,SAASC,GACzB,OAAiC,IAA1BR,EAAS3mF,QAAQmnF,EAAAA,EAmBpBC,EAAM9qF,EAAQ,IACdw+D,EAAex+D,EAAQ,GAAUw+D,aAOvC1+D,EAAQ6wE,aALa,SAAS9wD,EAAMyqE,EAAUx+E,GAE5C,OADAA,EAAU0yD,EAAa1yD,EAASg/E,EAAIl0D,eAAgBk0D,EAAIl0E,OACjDmnD,EAAGl+C,EAAMyqE,EAAUx+E,EAAAA,CAAAA,EAAAA,SAAAA,EAAAA,EAAAA,GC1I5B,IAAMk6D,EAAOhmE,EAAQ,GACfw+D,EAAex+D,EAAQ,GAAUw+D,aACjCssB,EAAM9qF,EAAQ,IAUd+qF,EAAc,SAAdA,EAAuBlrE,EAAM/T,EAASqiB,GAM1C,IALA,IAmCiB1d,EAnCb03E,EAAO,IAGL16E,EAAOtC,OAAOsC,KAAKoS,EAAKa,OAErBxY,EAAQ,EAAGA,EAAQuF,EAAKhS,OAAQyM,IAAS,CAChD,IAAIs/D,EAAU/5D,EAAKvF,GACnB,GAAI2X,EAAKa,MAAM8mD,IAAY3nD,EAAKa,MAAM8mD,GAAS/rE,OAAS,EAAG,CAEzD,IAAK,IAAI0kB,KADTgoE,GAAQ,IAAM3gB,EAAU,SACR3nD,EAAKa,MAAM8mD,GACzB2gB,GAAQ4C,EAAYlrE,EAAKa,MAAM8mD,GAASrnD,GAAMrU,GAAW,MAE3Dq8E,EAAOA,EAAK70E,OAAO,EAAG60E,EAAK1sF,OAAS,GAAK,WAEzC0sF,GAAQ,IAAM3gB,EAAU,OAASujB,EAAYlrE,EAAKa,MAAM8mD,GAAS,GAAI17D,GAAW,IAKpF,QAFAk6D,EAAKv5D,MAAM07E,EAAMtoE,EAAK0oD,UAElBvC,EAAK3H,cAAc8pB,GACdniB,EAAK5H,QAAQv+C,EAAKxgB,KAAOwgB,EAAKxgB,IAAM,IAEvC2mE,EAAK5H,QAAQv+C,EAAKxgB,OACM,iBAAbwgB,EAAKxgB,KAAkC,KAAbwgB,EAAKxgB,KAAcwgB,EAAKxgB,MAAQyM,EAAQ66D,qBAC7EwhB,GAAQ,IAAMr8E,EAAQu6D,aAAe,cAW1B51D,EAX6CoP,EAAKxgB,OAAAA,IAYjDoR,GAAgBzV,MAAMyV,GAG/B,IAAMA,EAAI,IAFVA,IARqB,MAA1B03E,EAAKA,EAAK1sF,OAAS,KACrB0sF,EAAOA,EAAK70E,OAAO,EAAG60E,EAAK1sF,OAAS,IAE/B0sF,EAAO,MAehBroF,EAAQ8wE,oBAvDoB,SAAS/wD,EAAM/T,GAIzC,OAHAA,EAAU0yD,EAAa1yD,EAASg/E,EAAIl0D,eAAgBk0D,EAAIl0E,QAEhDo0E,SAAWl/E,EAAQk/E,UAAY,GAChCD,EAAYlrE,EAAM/T,EAAS,uPCTpC,KAAM0yD,EAAex+D,EAAQ,GAAUw+D,aAEjC5nC,EAAiB,CACrBuvC,oBAAqB,KACrBC,cAAc,EACdC,aAAc,QACdnE,kBAAkB,EAClBwE,cAAc,EACdC,kBAAmB,MACnBhC,QAAQ,EACRqmB,SAAU,KACVC,kBAAkB,EAClBrkB,kBAAmB,SAAStwD,GAC1B,OAAOA,CAAAA,EAETuwD,mBAAoB,SAASvwD,GAC3B,OAAOA,CAAAA,GAILM,EAAQ,CACZ,sBACA,eACA,eACA,mBACA,eACA,oBACA,SACA,WACA,mBACA,oBACA,sBAGF,SAASs0E,EAAOp/E,GACd1E,KAAK0E,QAAU0yD,EAAa1yD,EAAS8qB,EAAgBhgB,GACjDxP,KAAK0E,QAAQo2D,kBAAoB96D,KAAK0E,QAAQs6D,aAChDh/D,KAAK+jF,YAAc,WACjB,OAAO,IAGT/jF,KAAKgkF,cAAgBhkF,KAAK0E,QAAQq6D,oBAAoB1qE,OACtD2L,KAAK+jF,YAAcA,GAEjB/jF,KAAK0E,QAAQ46D,aACft/D,KAAKikF,QAAUA,EAEfjkF,KAAKikF,QAAU,WACb,OAAO,GAGXjkF,KAAKkkF,gBAAkBA,EACvBlkF,KAAKmkF,gBAAkBA,EAEnBnkF,KAAK0E,QAAQ64D,QACfv9D,KAAKokF,UAAYA,EACjBpkF,KAAKqkF,WAAa,MAClBrkF,KAAKk6D,QAAU,OAEfl6D,KAAKokF,UAAY,WACf,MAAO,IAETpkF,KAAKqkF,WAAa,IAClBrkF,KAAKk6D,QAAU,IAGbl6D,KAAK0E,QAAQm/E,kBACf7jF,KAAKskF,cAAgBC,EACrBvkF,KAAKwkF,aAAeC,IAEpBzkF,KAAKskF,cAAgBI,EACrB1kF,KAAKwkF,aAAeG,GAGtB3kF,KAAK0kF,iBAAmBA,EACxB1kF,KAAK2kF,gBAAkBA,CAsFzB,UAAST,EAAgB91E,EAAKw2E,GAE5B,OADAx2E,EAAMpO,KAAK0E,QAAQ86D,kBAAkB,GAAKpxD,GACH,KAAnCpO,KAAK0E,QAAQ66D,mBAAoC,KAARnxD,EACpCA,EAAM,YAAcw2E,EAAQ,KAAO5kF,KAAKqkF,WAExCj2E,EAAIlF,QAAQlJ,KAAK0E,QAAQ66D,kBAAmB,YAAcqlB,EAAQ,KAAO5kF,KAAKqkF,WAIzF,UAASF,EAAgB/1E,EAAKw2E,GAE5B,GADAx2E,EAAMpO,KAAK0E,QAAQ86D,kBAAkB,GAAKpxD,GACH,KAAnCpO,KAAK0E,QAAQ66D,mBAAoC,KAARnxD,EAC3C,OAAOA,EAAM,YAAcw2E,EAAMp7E,KAAK,gBAAkB,KAAOxJ,KAAKqkF,WAEpE,IAAK,IAAIh7E,KAAKu7E,EACZx2E,EAAMA,EAAIlF,QAAQlJ,KAAK0E,QAAQ66D,kBAAmB,YAAcqlB,EAAMv7E,GAAK,OAE7E,OAAO+E,EAAMpO,KAAKk6D,OAItB,UAASyqB,EAAgB1sF,EAAKuF,EAAKijE,EAAS15C,GAC1C,OAAI05C,IAAYxoE,EAAIuY,SAAS,KAEzBxQ,KAAKokF,UAAUr9D,GACf,IACAvpB,EACAijE,EACA,IACAxoE,EAGA,KACAuF,EACAwC,KAAKqkF,WAILrkF,KAAKokF,UAAUr9D,GACf,IACAvpB,EACAijE,EACAzgE,KAAKqkF,WACLpsF,EAEA+H,KAAKokF,UAAUr9D,GACf,KACAvpB,EACAwC,KAAKqkF,UAKX,UAASI,EAAkBxsF,EAAKuF,EAAKijE,EAAS15C,GAC5C,MAAY,KAAR9uB,EACK+H,KAAK2kF,gBAAgB1sF,EAAKuF,EAAKijE,EAAS15C,GAExC/mB,KAAKokF,UAAUr9D,GAAS,IAAMvpB,EAAMijE,EAAU,IAAMzgE,KAAKqkF,UAKpE,UAASK,EAAiBzsF,EAAKuF,EAAKijE,EAAS15C,GAC3C,OACE/mB,KAAKokF,UAAUr9D,GACf,IACAvpB,EACAijE,EACA,IACAzgE,KAAK0E,QAAQ86D,kBAAkBvnE,GAC/B,KACAuF,EACAwC,KAAKqkF,UAIT,UAASE,EAAmBtsF,EAAKuF,EAAKijE,EAAS15C,GAC7C,MAAY,KAAR9uB,EACK+H,KAAK0kF,iBAAiBzsF,EAAKuF,EAAKijE,EAAS15C,GAEzC/mB,KAAKokF,UAAUr9D,GAAS,IAAMvpB,EAAMijE,EAAU,IAAMzgE,KAAKqkF,UAIpE,UAASD,EAAUr9D,GACjB,OAAO/mB,KAAK0E,QAAQk/E,SAASiB,OAAO99D,EAGtC,UAASg9D,EAAY3iF,GACnB,QAAIA,EAAK0jF,WAAW9kF,KAAK0E,QAAQq6D,sBACxB39D,EAAK8K,OAAOlM,KAAKgkF,cAM5B,UAASC,EAAQ7iF,GACf,OAAOA,IAASpB,KAAK0E,QAAQ46D,YApL/BwkB,CAAAA,EAAO9kF,UAAUsJ,MAAQ,SAASy4E,GAChC,OAAO/gF,KAAK+kF,IAAIhE,EAAM,GAAG9oF,GAAAA,EAG3B6rF,EAAO9kF,UAAU+lF,IAAM,SAAShE,EAAMh6D,GAKpC,IAJA,IAAI05C,EAAU,GACVxoE,EAAM,GACJoO,EAAOtC,OAAOsC,KAAK06E,GACnB1tB,EAAMhtD,EAAKhS,OACRgM,EAAI,EAAGA,EAAIgzD,EAAKhzD,IAAK,CAC5B,IAAM7C,EAAM6I,EAAKhG,GACjB,QAAI,IAAO0gF,EAAKvjF,SAET,GAAkB,OAAdujF,EAAKvjF,GACdvF,GAAO+H,KAAKokF,UAAUr9D,GAAS,IAAMvpB,EAAM,IAAMwC,KAAKqkF,gBACjD,GAAItD,EAAKvjF,aAAgBrK,KAC9B8E,GAAO+H,KAAKskF,cAAcvD,EAAKvjF,GAAMA,EAAK,GAAIupB,QACzC,GAAyB,WAArB1mB,EAAO0gF,EAAKvjF,IAAmB,CAExC,IAAMgb,EAAOxY,KAAK+jF,YAAYvmF,GAC1Bgb,EACFioD,GAAW,IAAMjoD,EAAO,KAAOxY,KAAK0E,QAAQ+6D,mBAAmB,GAAKshB,EAAKvjF,IAAQ,IACxEwC,KAAKikF,QAAQzmF,GAClBujF,EAAK/gF,KAAK0E,QAAQu6D,cACpBhnE,GAAO+H,KAAKkkF,gBAAgBnD,EAAK/gF,KAAK0E,QAAQu6D,cAAe8hB,EAAKvjF,IAElEvF,GAAO+H,KAAKkkF,gBAAgB,GAAInD,EAAKvjF,IAInCA,IAAQwC,KAAK0E,QAAQu6D,aACnB8hB,EAAK/gF,KAAK0E,QAAQ46D,gBAGpBrnE,GAAO+H,KAAK0E,QAAQ86D,kBAAkB,GAAKuhB,EAAKvjF,KAGlDvF,GAAO+H,KAAKskF,cAAcvD,EAAKvjF,GAAMA,EAAK,GAAIupB,EAAAA,MAG7C,GAAInkB,MAAMkD,QAAQi7E,EAAKvjF,IAE5B,GAAIwC,KAAKikF,QAAQzmF,GACfvF,GAAO+H,KAAKokF,UAAUr9D,GAClBg6D,EAAK/gF,KAAK0E,QAAQu6D,cACpBhnE,GAAO+H,KAAKmkF,gBAAgBpD,EAAK/gF,KAAK0E,QAAQu6D,cAAe8hB,EAAKvjF,IAElEvF,GAAO+H,KAAKmkF,gBAAgB,GAAIpD,EAAKvjF,SAKvC,IADA,IAAMwnF,EAASjE,EAAKvjF,GAAKnJ,OAChB4/D,EAAI,EAAGA,EAAI+wB,EAAQ/wB,IAAK,CAC/B,IAAM1hD,EAAOwuE,EAAKvjF,GAAKy2D,GACvB,QAAI,IAAO1hD,QAEJ,GAAa,OAATA,EACTta,GAAO+H,KAAKokF,UAAUr9D,GAAS,IAAMvpB,EAAM,IAAMwC,KAAKqkF,gBACjD,GAAoB,WAAhBhkF,EAAOkS,GAAmB,CACnC,IAAMvE,EAAShO,KAAK+kF,IAAIxyE,EAAMwU,EAAQ,GACtC9uB,GAAO+H,KAAKwkF,aAAax2E,EAAO/V,IAAKuF,EAAKwQ,EAAOyyD,QAAS15C,EAAAA,MAE1D9uB,GAAO+H,KAAKskF,cAAc/xE,EAAM/U,EAAK,GAAIupB,EAAAA,MAM/C,GAAI/mB,KAAK0E,QAAQs6D,cAAgBxhE,IAAQwC,KAAK0E,QAAQs6D,aAGpD,IAFA,IAAMimB,EAAKlhF,OAAOsC,KAAK06E,EAAKvjF,IACtB0nF,EAAID,EAAG5wF,OACJ4/D,EAAI,EAAGA,EAAIixB,EAAGjxB,IACrBwM,GAAW,IAAMwkB,EAAGhxB,GAAK,KAAOj0D,KAAK0E,QAAQ+6D,mBAAmB,GAAKshB,EAAKvjF,GAAKynF,EAAGhxB,KAAO,QAEtF,CACL,IAAMjmD,EAAShO,KAAK+kF,IAAIhE,EAAKvjF,GAAMupB,EAAQ,GAC3C9uB,GAAO+H,KAAKwkF,aAAax2E,EAAO/V,IAAKuF,EAAKwQ,EAAOyyD,QAAS15C,EAAAA,CAIhE,OAAO,CAAC05C,QAASA,EAASxoE,IAAKA,EAAAA,EA2GjCQ,EAAOC,QAAUorF,CAAAA,EAAAA,SAAAA,EAAAA,EAAAA,GCzQjB,IAAIpsB,EAAM3zD,OAAO/E,UAAUwP,eACvBmpD,EAAS,IASb,SAASC,IA4BT,UAASC,EAAGhzD,EAAI/F,EAASg5D,GACvB93D,KAAK6E,GAAKA,EACV7E,KAAKlB,QAAUA,EACfkB,KAAK83D,KAAOA,IAAAA,CAcd,UAASlX,EAAYmX,EAASl5C,EAAOha,EAAI/F,EAASg5D,GAChD,GAAkB,mBAAPjzD,EACT,MAAM,IAAI/E,UAAU,mCAGtB,IAAIc,EAAW,IAAIi3D,EAAGhzD,EAAI/F,GAAWi5D,EAASD,GAC1CE,EAAML,EAASA,EAAS94C,EAAQA,EAMpC,OAJKk5C,EAAQE,QAAQD,GACXD,EAAQE,QAAQD,GAAKnzD,GAC1BkzD,EAAQE,QAAQD,GAAO,CAACD,EAAQE,QAAQD,GAAMp3D,GADhBm3D,EAAQE,QAAQD,GAAKn3D,KAAKD,IADlCm3D,EAAQE,QAAQD,GAAOp3D,EAAUm3D,EAAQG,gBAI7DH,CAUT,UAASI,EAAWJ,EAASC,GACI,KAAzBD,EAAQG,aAAoBH,EAAQE,QAAU,IAAIL,SAC5CG,EAAQE,QAAQD,EAU9B,UAASI,IACPp4D,KAAKi4D,QAAU,IAAIL,EACnB53D,KAAKk4D,aAAe,CAxElBn0D,CAAAA,OAAO7E,SACT04D,EAAO54D,UAAY+E,OAAO7E,OAAO,OAM5B,IAAI04D,GAASnH,YAAWkH,GAAAA,IA2E/BS,EAAap5D,UAAUq5D,WAAa,WAClC,IACI75C,EACApd,EAFAk3D,EAAQ,GAIZ,GAA0B,IAAtBt4D,KAAKk4D,aAAoB,OAAOI,EAEpC,IAAKl3D,KAASod,EAASxe,KAAKi4D,QACtBP,EAAIx2D,KAAKsd,EAAQpd,IAAOk3D,EAAMz3D,KAAK82D,EAASv2D,EAAKjJ,MAAM,GAAKiJ,GAGlE,OAAI2C,OAAOynB,sBACF8sC,EAAMxkE,OAAOiQ,OAAOynB,sBAAsBhN,IAG5C85C,CAAAA,EAUTF,EAAap5D,UAAUsf,UAAY,SAAmBO,GACpD,IAAIm5C,EAAML,EAASA,EAAS94C,EAAQA,EAChCra,EAAWxE,KAAKi4D,QAAQD,GAE5B,IAAKxzD,EAAU,MAAO,GACtB,GAAIA,EAASK,GAAI,MAAO,CAACL,EAASK,IAElC,IAAK,IAAIxE,EAAI,EAAGC,EAAIkE,EAASnQ,OAAQkkE,EAAK,IAAI31D,MAAMtC,GAAID,EAAIC,EAAGD,IAC7Dk4D,EAAGl4D,GAAKmE,EAASnE,GAAGwE,GAGtB,OAAO0zD,CAAAA,EAUTH,EAAap5D,UAAUw5D,cAAgB,SAAuB35C,GAC5D,IAAIm5C,EAAML,EAASA,EAAS94C,EAAQA,EAChCP,EAAYte,KAAKi4D,QAAQD,GAE7B,OAAK15C,EACDA,EAAUzZ,GAAW,EAClByZ,EAAUjqB,OAFM,GAYzB+jE,EAAap5D,UAAUy5D,KAAO,SAAc55C,EAAO65C,EAAIC,EAAIC,EAAIC,EAAIC,GACjE,IAAId,EAAML,EAASA,EAAS94C,EAAQA,EAEpC,IAAK7e,KAAKi4D,QAAQD,GAAM,OAAO,EAE/B,IAEIjvD,EACA1I,EAHAie,EAAYte,KAAKi4D,QAAQD,GACzB3E,EAAMrqD,UAAU3U,OAIpB,GAAIiqB,EAAUzZ,GAAI,CAGhB,OAFIyZ,EAAUw5C,MAAM93D,KAAK+4D,eAAel6C,EAAOP,EAAUzZ,QAAAA,GAAIxH,GAErDg2D,GACN,KAAK,EAAG,OAAO/0C,EAAUzZ,GAAG3D,KAAKod,EAAUxf,UAAAA,EAC3C,KAAK,EAAG,OAAOwf,EAAUzZ,GAAG3D,KAAKod,EAAUxf,QAAS45D,IAAAA,EACpD,KAAK,EAAG,OAAOp6C,EAAUzZ,GAAG3D,KAAKod,EAAUxf,QAAS45D,EAAIC,IAAAA,EACxD,KAAK,EAAG,OAAOr6C,EAAUzZ,GAAG3D,KAAKod,EAAUxf,QAAS45D,EAAIC,EAAIC,IAAAA,EAC5D,KAAK,EAAG,OAAOt6C,EAAUzZ,GAAG3D,KAAKod,EAAUxf,QAAS45D,EAAIC,EAAIC,EAAIC,IAAAA,EAChE,KAAK,EAAG,OAAOv6C,EAAUzZ,GAAG3D,KAAKod,EAAUxf,QAAS45D,EAAIC,EAAIC,EAAIC,EAAIC,IAAAA,EAGtE,IAAKz4D,EAAI,EAAG0I,EAAO,IAAInG,MAAMywD,EAAK,GAAIhzD,EAAIgzD,EAAKhzD,IAC7C0I,EAAK1I,EAAI,GAAK2I,UAAU3I,GAG1Bie,EAAUzZ,GAAGhC,MAAMyb,EAAUxf,QAASiK,EAAAA,KACjC,CACL,IACIkrD,EADA5/D,EAASiqB,EAAUjqB,OAGvB,IAAKgM,EAAI,EAAGA,EAAIhM,EAAQgM,IAGtB,OAFIie,EAAUje,GAAGy3D,MAAM93D,KAAK+4D,eAAel6C,EAAOP,EAAUje,GAAGwE,QAAAA,GAAIxH,GAE3Dg2D,GACN,KAAK,EAAG/0C,EAAUje,GAAGwE,GAAG3D,KAAKod,EAAUje,GAAGvB,SAAU,MACpD,KAAK,EAAGwf,EAAUje,GAAGwE,GAAG3D,KAAKod,EAAUje,GAAGvB,QAAS45D,GAAK,MACxD,KAAK,EAAGp6C,EAAUje,GAAGwE,GAAG3D,KAAKod,EAAUje,GAAGvB,QAAS45D,EAAIC,GAAK,MAC5D,KAAK,EAAGr6C,EAAUje,GAAGwE,GAAG3D,KAAKod,EAAUje,GAAGvB,QAAS45D,EAAIC,EAAIC,GAAK,MAChE,QACE,IAAK7vD,EAAM,IAAKkrD,EAAI,EAAGlrD,EAAO,IAAInG,MAAMywD,EAAK,GAAIY,EAAIZ,EAAKY,IACxDlrD,EAAKkrD,EAAI,GAAKjrD,UAAUirD,GAG1B31C,EAAUje,GAAGwE,GAAGhC,MAAMyb,EAAUje,GAAGvB,QAASiK,GAKpD,QAAO,GAYTqvD,EAAap5D,UAAU0f,GAAK,SAAYG,EAAOha,EAAI/F,GACjD,OAAO8hD,EAAY5gD,KAAM6e,EAAOha,EAAI/F,GAAAA,EAAS,EAY/Cs5D,EAAap5D,UAAU84D,KAAO,SAAcj5C,EAAOha,EAAI/F,GACrD,OAAO8hD,EAAY5gD,KAAM6e,EAAOha,EAAI/F,GAAAA,EAAS,EAa/Cs5D,EAAap5D,UAAU+5D,eAAiB,SAAwBl6C,EAAOha,EAAI/F,EAASg5D,GAClF,IAAIE,EAAML,EAASA,EAAS94C,EAAQA,EAEpC,IAAK7e,KAAKi4D,QAAQD,GAAM,OAAOh4D,KAC/B,IAAK6E,EAEH,OADAszD,EAAWn4D,KAAMg4D,GACVh4D,KAGT,IAAIse,EAAYte,KAAKi4D,QAAQD,GAE7B,GAAI15C,EAAUzZ,GAEVyZ,EAAUzZ,KAAOA,GACfizD,IAAQx5C,EAAUw5C,MAClBh5D,GAAWwf,EAAUxf,UAAYA,GAEnCq5D,EAAWn4D,KAAMg4D,OAEd,CACL,IAAK,IAAI33D,EAAI,EAAGme,EAAS,GAAInqB,EAASiqB,EAAUjqB,OAAQgM,EAAIhM,EAAQgM,KAEhEie,EAAUje,GAAGwE,KAAOA,GACnBizD,IAASx5C,EAAUje,GAAGy3D,MACtBh5D,GAAWwf,EAAUje,GAAGvB,UAAYA,IAErC0f,EAAO3d,KAAKyd,EAAUje,IAOtBme,EAAOnqB,OAAQ2L,KAAKi4D,QAAQD,GAAyB,IAAlBx5C,EAAOnqB,OAAemqB,EAAO,GAAKA,EACpE25C,EAAWn4D,KAAMg4D,EAGxB,QAAOh4D,IAAAA,EAUTo4D,EAAap5D,UAAUg6D,mBAAqB,SAA4Bn6C,GACtE,IAAIm5C,EAUJ,OARIn5C,GACFm5C,EAAML,EAASA,EAAS94C,EAAQA,EAC5B7e,KAAKi4D,QAAQD,IAAMG,EAAWn4D,KAAMg4D,KAExCh4D,KAAKi4D,QAAU,IAAIL,EACnB53D,KAAKk4D,aAAe,GAGfl4D,IAAAA,EAMTo4D,EAAap5D,UAAU2f,IAAMy5C,EAAap5D,UAAU+5D,eACpDX,EAAap5D,UAAU4hD,YAAcwX,EAAap5D,UAAU0f,GAK5D05C,EAAaa,SAAWtB,EAKxBS,EAAaA,aAAeA,EAM1B3/D,EAAOC,QAAU0/D,CAAAA,EAAAA,SAAAA,EAAAA,GC9UnB3/D,EAAOC,QAAU,SAASysF,GACzB,IAAKA,EAAe/a,gBAAiB,CACpC,IAAI3xE,EAASsL,OAAO7E,OAAOimF,GAEtB1sF,EAAO8gB,WAAU9gB,EAAO8gB,SAAW,IACxCxV,OAAOE,eAAexL,EAAQ,SAAU,CACvCywB,YAAY,EACZ3M,IAAK,WACJ,OAAO9jB,EAAO6H,CAAAA,IAGhByD,OAAOE,eAAexL,EAAQ,KAAM,CACnCywB,YAAY,EACZ3M,IAAK,WACJ,OAAO9jB,EAAO4H,CAAAA,IAGhB0D,OAAOE,eAAexL,EAAQ,UAAW,CACxCywB,YAAY,IAEbzwB,EAAO2xE,gBAAkB,CAE1B,QAAO3xE,CAAAA,CAAAA,EAAAA,SAAAA,EAAAA,EAAAA,ohHC+BIiY,gBCpDV,IAAIm/C,EAAmB,CAAC,EAGxB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUr3D,QAGnC,IAAID,EAASo3D,EAAiBE,GAAY,CACzC1vD,EAAG0vD,EACHzvD,GAAG,EACH5H,QAAS,CAAC,GAUX,OANAs3D,EAAQD,GAAU7uD,KAAKzI,EAAOC,QAASD,EAAQA,EAAOC,QAASo3D,GAG/Dr3D,EAAO6H,GAAAA,EAGA7H,EAAOC,OA0Df,QArDAo3D,EAAoBG,EAAID,EAGxBF,EAAoB7uD,EAAI4uD,EAGxBC,EAAoBI,EAAI,SAASx3D,EAAS0I,EAAMsc,GAC3CoyC,EAAoBryC,EAAE/kB,EAAS0I,IAClC2C,OAAOE,eAAevL,EAAS0I,EAAM,CAAE8nB,YAAY,EAAM3M,IAAKmB,GAAAA,EAKhEoyC,EAAoBp/C,EAAI,SAAShY,GACX,oBAAXuzB,QAA0BA,OAAOkkC,aAC1CpsD,OAAOE,eAAevL,EAASuzB,OAAOkkC,YAAa,CAAEx0D,MAAO,WAE7DoI,OAAOE,eAAevL,EAAS,aAAc,CAAEiD,OAAO,GAAPA,EAQhDm0D,EAAoBn/C,EAAI,SAAShV,EAAOy0D,GAEvC,GADU,EAAPA,IAAUz0D,EAAQm0D,EAAoBn0D,IAC/B,EAAPy0D,EAAU,OAAOz0D,EACpB,GAAW,EAAPy0D,GAA8B,YAAVz0D,IAAsBA,GAASA,EAAM00D,WAAY,OAAO10D,EAChF,IAAIid,EAAK7U,OAAO7E,OAAO,MAGvB,GAFA4wD,EAAoBp/C,EAAEkI,GACtB7U,OAAOE,eAAe2U,EAAI,UAAW,CAAEsQ,YAAY,EAAMvtB,MAAOA,IACtD,EAAPy0D,GAA4B,iBAATz0D,EAAmB,IAAI,IAAI6B,KAAO7B,EAAOm0D,EAAoBI,EAAEt3C,EAAIpb,EAAK,SAASA,GAAO,OAAO7B,EAAM6B,EAAAA,EAAQgB,KAAK,KAAMhB,IAC9I,OAAOob,CAAAA,EAIRk3C,EAAoBj/C,EAAI,SAASpY,GAChC,IAAIilB,EAASjlB,GAAUA,EAAO43D,WAC7B,WAAwB,OAAO53D,EAAgBgY,OAAA,EAC/C,WAA8B,OAAOhY,CAAAA,EAEtC,OADAq3D,EAAoBI,EAAExyC,EAAQ,IAAKA,GAC5BA,CAAAA,EAIRoyC,EAAoBryC,EAAI,SAAS8K,EAAQnQ,GAAY,OAAOrU,OAAO/E,UAAUwP,eAAetN,KAAKqnB,EAAQnQ,EAAAA,EAGzG03C,EAAoBpzC,EAAI,GAIjBozC,EAAoBA,EAAoBQ,EAAI,qBClFrDz/C,EAAAA,EAAAA,GAAAA,EAAAA,EAAAA,EAAAA,eAAAA,WAAA,OAAA5P,CAAA,oLAAAA,IAAA,IA4JWmkF,EA3JLC,EAAe,CAAC,EAuBhBC,EAtB4B,WAC9B,IAAIC,EASA9wB,GANA8wB,EADkB,oBAAX55E,OACE05E,EAGA15E,QAGU25E,mBAUvB,OATK7wB,IACDA,EAAY,CACRzE,QAAS,CAAC,GAEdu1B,EAAOD,mBAAqB7wB,GAE3BA,EAAUzE,UACXyE,EAAUzE,QAAU,CAAC,GAElByE,CApBuB,IAuB5BzE,EAAUs1B,GAAsBA,EAAmBt1B,QAQnD+I,EAAiB,SAACtgD,EAAMisC,EAAMtjD,GAC5BqX,EAAK+sE,YACL/sE,EAAK+sE,YAAY,qBAAsB9gC,GAGvCjsC,EAAKpe,oBAAoB+G,EAAMsjD,GAAAA,EAAAA,EAQ1B+gC,EAAeC,SAAAA,GAAAA,OAAgBlsF,QAAQiG,IAAIimF,EAAY1yE,KAAI,gBAAGpO,EAAH+L,EAAG/L,GAAIzJ,EAAPwV,EAAOxV,IAAP,OAAiBwqF,EAAW/gF,EAAIzJ,EAAAA,KAAOgF,MAAMy2B,SAAAA,GACjH,IAAMgvD,EAAW,CAAC,EAKlB,OAJAhvD,EAAIr5B,SAAQ,SAACmhE,EAAK5nB,GACd,IAAM9pC,EAAK04E,EAAY5uC,GACvB8uC,EAAS54E,EAAGpI,IAAM85D,CAAAA,IAEfknB,CAAAA,GAAAA,EAQED,EAAa,SAAC/gF,EAAIzJ,GAC3B,GAAsB,oBAAXwQ,OACP,OAAOnS,QAAQE,OAAO,IAAI7F,MAAM,+CAEpC,IAAK+Q,EACD,MAAM,IAAI/Q,MAAM,yBAGpB,IAAIgyF,EAAmB71B,EADvBprD,EAnEkB,aAmEGA,GAMrB,OAJKihF,IACD71B,EAAQprD,GAAM,CAAC,EACfihF,EAAmB71B,EAAQprD,IAE3BihF,EAAiB9mF,SACVvF,QAAQC,QAAQosF,EAAiB9mF,UAExC8mF,EAAiB5lF,QACV4lF,EAAiB5lF,QAErB4lF,EAAiB5lF,QAAU,IAAIzG,SAAQ,SAACC,EAASC,GACpD,IAAMosF,EAAoB9tB,SAApB8tB,EAAoB9tB,GACtB,GAAiB,SAAbA,EAAI/5D,MAAoB,sBAAsBwM,MAAMutD,EAAI+tB,eAAiB/tB,EAAIguB,YAAY5pF,YAAc,CACvG,IAAMqc,EAAOu/C,EAAI+tB,eAAiB/tB,EAAIguB,WACtCjtB,EAAetgD,EAAMqtE,EAAkB,QACvC/sB,EAAetgD,EAAM/e,EAAQ,SAE7B6C,YAAW,kBAAM9C,EAAQu2D,EAAQprD,GAAMorD,EAAQprD,GAAI7F,cAAAA,EAAAA,GAAuB,MAG5EknF,EAAS97E,SAASa,cAAc,UACtCi7E,EAAOrhF,GAAKA,GAERqhF,EAAOC,aAAiBD,EAAOC,YAAYl/E,UAAYi/E,EAAOC,YAAYl/E,WAAW1K,QAAQ,gBAAkB,GAK/G2pF,EAAOpoF,iBAAiB,OAAQioF,GAAAA,GAChCG,EAAOpoF,iBAAiB,UAAWnE,GAAAA,IAJnCusF,EAAOC,YAAY,qBAAsBJ,GAM7CG,EAAO96E,aAAa,cAAe,aACnC86E,EAAO96E,aAAa,UAAW,SAC/B86E,EAAO96E,aAAa,QAAS,QAC7B86E,EAAOj5D,IAAM7xB,EACbgP,SAASmyB,KAAKljB,YAAY6sE,EAAAA,GAAAA,EAUrBE,EAAiB,SAACvhF,EAAI7F,EAAU+T,GAEzC,GAAsB,oBAAXnH,OAAX,CAGA,IAAK/G,EACD,MAAM,IAAI/Q,MAAM,yBAEpB,IAAKm8D,EACD,MAAM,IAAIn8D,MAAM,6BAGhBm8D,EADJprD,EA7HkB,aA6HGA,KAEjBorD,EAAQprD,GAAM,CAAE7F,SAAAA,EAAU+T,SAAAA,GAAAA,CAAAA,EAQrBszE,EAAWjrF,SAAAA,GAAAA,OAEQ,OADAgP,SAASmxC,cAATnxC,cAAAA,OAAqChP,EAArCgP,OAEjB3Q,QAAQC,UAEZ,IAAID,SAASC,SAAAA,GAChB,IAAM4sF,EAAOl8E,SAASm8E,qBAAqB,QAAQ,GAC7CC,EAAOp8E,SAASa,cAAc,QAKpCu7E,EAAK5gC,IAAM,aACX4gC,EAAKr7E,KAAO/P,EACZorF,EAAK1oF,iBAAiB,QANP,SAATs/B,IACF1jC,IACA8sF,EAAKlsF,oBAAoB,OAAQ8iC,EAAAA,IAKrCkpD,EAAKjtE,YAAYmtE,EAAAA,GAAAA,GAOzB,SAAWnB,GACPA,EAAiCoB,cAAI,gBACrCpB,EAAiCqB,cAAI,gBACrCrB,EAA0BsB,OAAI,QAHlC,EAIGtB,IAAsBA,EAAoB,CAAC,GAAD,wFCjJlCuB,EAAc,SAAUC,EAAeC,GAC9C,MAAM,IAAIhzF,MAAM,4CAETizF,EAA2B,SAAUC,EAAQC,EAASC,GAC7D,MAAM,IAAIpzF,MAAM,wEHiCpB,SAAY8c,GAERA,EAAFu2E,GAAA,KAEEv2E,EAAFw2E,OAAA,SAEEx2E,EAAFy2E,QAAA,UAEEz2E,EAAF02E,SAAA,UARF,EAAY32E,IAAAA,EAAa,wBIjDnB5L,EAASf,OAAAA,EAAAA,EAAAA,GAGTujF,EAAS,iBAGfj+E,EAAAA,WAKE,aACErJ,KAAKunF,UAAAA,CA0CT,QAtCS52E,EAAAA,UAAAA,QAAP,WACE3Q,KAAKunF,UAAAA,CAAW,EAIX52E,EAAAA,UAAAA,OAAP,WACE3Q,KAAKunF,UAAAA,CAAW,EAIX52E,EAAAA,UAAAA,IAAP,eAAW,aAAAnI,EAAAA,UAAAA,OAAAA,IAAAmI,EAAAA,GAAAA,UAAAA,GACJ3Q,KAAKunF,UAGVxjF,OAAAA,EAAAA,EAAAA,EAAe,WACbe,EAAO6I,QAAQ2mD,IAAOgzB,EAAM,UAAUv+E,EAAKS,KAAK,UAK7CmH,EAAAA,UAAAA,KAAP,eAAY,aAAAnI,EAAAA,UAAAA,OAAAA,IAAAmI,EAAAA,GAAAA,UAAAA,GACL3Q,KAAKunF,UAGVxjF,OAAAA,EAAAA,EAAAA,EAAe,WACbe,EAAO6I,QAAQC,KAAQ05E,EAAM,WAAWv+E,EAAKS,KAAK,UAK/CmH,EAAAA,UAAAA,MAAP,eAAa,aAAAnI,EAAAA,UAAAA,OAAAA,IAAAmI,EAAAA,GAAAA,UAAAA,GACN3Q,KAAKunF,UAGVxjF,OAAAA,EAAAA,EAAAA,EAAe,WACbe,EAAO6I,QAAQzK,MAASokF,EAAM,YAAYv+E,EAAKS,KAAK,UAG1DmH,CAhDA,CAAAtH,GAmDAvE,EAAO0iF,WAAa1iF,EAAO0iF,YAAc,CAAC,EAC1C,ICvDKC,EDuDCC,EAAU5iF,EAAO0iF,WAAWE,SAAsB5iF,EAAO0iF,WAAWE,OAAS,IAAIr+E,GAAvF,gBCvDA,SAAKo+E,GAEH92E,EAAAA,QAAAA,UAEAA,EAAAA,SAAAA,WAEAA,EAAAA,SAAAA,UANF,EAAK82E,IAAAA,EAAM,KAaX,iBASE,WACE5nF,GADF,WARQ,KAAA8nF,OAAiBF,EAAOG,QACxB,KAAAC,UAIH,GAgJY,KAAArnF,SAAW,SAAC7E,GAC3B6M,EAAKs/E,WAAWL,EAAOM,SAAUpsF,EAAAA,EAIlB,KAAAqsF,QAAU,SAACtnF,GAC1B8H,EAAKs/E,WAAWL,EAAOQ,SAAUvnF,EAAAA,EAIlB,KAAAonF,WAAa,SAACzwE,EAAe1b,GACxC6M,EAAKm/E,SAAWF,EAAOG,UAIvB7jF,OAAAA,EAAAA,EAAAA,CAAWpI,GACZA,EAAyBwE,KAAKqI,EAAKhI,SAAUgI,EAAKw/E,UAIrDx/E,EAAKm/E,OAAStwE,EACd7O,EAAK0/E,OAASvsF,EAEd6M,EAAK2/E,oBAAAA,EAKU,KAAAC,eAAiB,SAACrlD,GAQjCv6B,EAAKq/E,UAAYr/E,EAAKq/E,UAAU/zF,OAAOivC,GACvCv6B,EAAK2/E,kBAAAA,EAIU,KAAAA,iBAAmB,WAClC,GAAI3/E,EAAKm/E,SAAWF,EAAOG,QAA3B,CAIA,IAAMS,EAAiB7/E,EAAKq/E,UAAU1vF,QACtCqQ,EAAKq/E,UAAY,GAEjBQ,EAAe9qF,SAAQ,YACjBwlC,EAAQ9oC,OAIRuO,EAAKm/E,SAAWF,EAAOM,UACrBhlD,EAAQxiC,aAEVwiC,EAAQxiC,YAAaiI,EAAK0/E,QAI1B1/E,EAAKm/E,SAAWF,EAAOQ,UACrBllD,EAAQulD,YACVvlD,EAAQulD,WAAW9/E,EAAK0/E,QAI5BnlD,EAAQ9oC,MAAAA,EAAO,MA7MjB,IACE4F,EAASG,KAAKQ,SAAUR,KAAKgoF,QAEhBx/E,CADb,MAAOA,GACPxI,KAAKgoF,QAAQx/E,EAAAA,CA6MnB,QAxMgBmI,EAAAA,QAAd,SAAyBhV,GACvB,OAAO,IAAI4sF,GAAY,YACrB9uF,EAAQkC,EAAAA,GAAAA,EAKEgV,EAAAA,OAAd,SAAgCjQ,GAC9B,OAAO,IAAI6nF,GAAY,SAACn3B,EAAG13D,GACzBA,EAAOgH,EAAAA,GAAAA,EAKGiQ,EAAAA,IAAd,SAA2B63E,GACzB,OAAO,IAAID,GAAiB,SAAC9uF,EAASC,GACpC,GAAKkJ,MAAMkD,QAAQ0iF,GAKnB,GAA0B,IAAtBA,EAAWn0F,OAAf,CAKA,IAAI6mF,EAAUsN,EAAWn0F,OACnBo0F,EAA0B,GAEhCD,EAAWjrF,SAAQ,SAACgV,EAAMzR,GACxBynF,EAAY9uF,QAAQ8Y,GACjBpS,MAAK,YACJsoF,EAAmB3nF,GAASnF,EAGZ,KAFhBu/E,GAAW,IAKXzhF,EAAQgvF,EAAAA,IAETtoF,KAAK,KAAMzG,EAAAA,GAAAA,MAlBdD,EAAQ,SALRC,EAAO,IAAIoG,UAAU,gDA6BpB6Q,EAAAA,UAAAA,KAAP,SACEnI,EACAqI,GAFF,WAIE,OAAO,IAAI03E,GAAY,SAAC9uF,EAASC,GAC/B2G,EAAK+nF,eAAe,CAClBnuF,MAAM,EACNsG,YAAa,YACX,GAAKiI,EAML,IAEE,YADA/O,EAAQ+O,EAAYwF,GAGbxF,CADP,MAAOA,GAEP,YADA9O,EAAO8O,EAAAA,MAPP/O,EAAQuU,EAAAA,EAWZs6E,WAAY,YACV,GAAKz3E,EAIL,IAEE,YADApX,EAAQoX,EAAWnQ,GAGZ8H,CADP,MAAOA,GAEP,YADA9O,EAAO8O,EAAAA,MAPP9O,EAAOgH,EAAAA,GAAAA,GAAAA,EAgBViQ,EAAAA,UAAAA,MAAP,SACE23E,GAEA,OAAOtoF,KAAKG,MAAK,YAAO,QAAAlI,GAAKqwF,EAAAA,EAIxB33E,EAAAA,UAAAA,QAAP,SAAwB+3E,GAAxB,WACE,OAAO,IAAIH,GAAqB,SAAC9uF,EAASC,GACxC,IAAIzB,EACA0wF,EAEJ,OAAO93E,EAAK1Q,MACV,YACEwoF,GAAAA,EACA1wF,EAAM0D,EACF+sF,GACFA,GAAAA,IAGJ,YACEC,GAAAA,EACA1wF,EAAMyI,EACFgoF,GACFA,GAAAA,IAGJvoF,MAAK,WACDwoF,EACFjvF,EAAOzB,GAITwB,EAASxB,EAAAA,GAAAA,GAAAA,EAMR0Y,EAAAA,UAAAA,SAAP,WACE,MAAO,wBA0EXA,CA5NA,ICOAygD,EAAAA,WAAA,aAEY,KAAAw3B,qBAAA,EAGA,KAAAC,gBAAiD,GAGjD,KAAAC,iBAAqC,GAGrC,KAAAC,aAA6B,GAG7B,KAAAC,MAAc,CAAC,EAGf,KAAAC,MAAsC,CAAC,EAGvC,KAAAC,OAAiB,CAAC,EAGlB,KAAAC,UAAsB,CAAC,CAyanC,QApZgBx4E,EAAAA,MAAd,SAAoBsxC,GAClB,IAAMmnC,EAAW,IAAIC,EAcrB,OAbIpnC,IACFmnC,EAASL,aAAYhlF,OAAAA,EAAAA,EAAAA,CAAOk+C,EAAM8mC,cAClCK,EAASH,MAAKllF,OAAAA,EAAAA,EAAAA,CAAAA,CAAAA,EAAQk+C,EAAMgnC,OAC5BG,EAASF,OAAMnlF,OAAAA,EAAAA,EAAAA,CAAAA,CAAAA,EAAQk+C,EAAMinC,QAC7BE,EAASD,UAASplF,OAAAA,EAAAA,EAAAA,CAAAA,CAAAA,EAAQk+C,EAAMknC,WAChCC,EAASJ,MAAQ/mC,EAAM+mC,MACvBI,EAASE,OAASrnC,EAAMqnC,OACxBF,EAASG,MAAQtnC,EAAMsnC,MACvBH,EAASI,SAAWvnC,EAAMunC,SAC1BJ,EAASK,iBAAmBxnC,EAAMwnC,iBAClCL,EAASM,aAAeznC,EAAMynC,aAC9BN,EAASN,iBAAgB/kF,OAAAA,EAAAA,EAAAA,CAAOk+C,EAAM6mC,mBAEjCM,CAAAA,EAOFz4E,EAAAA,UAAAA,iBAAP,SAAwBvE,GACtBpM,KAAK6oF,gBAAgBhoF,KAAKuL,EAAAA,EAMrBuE,EAAAA,UAAAA,kBAAP,SAAyBvE,GAEvB,OADApM,KAAK8oF,iBAAiBjoF,KAAKuL,GACpBpM,IAAAA,EAMF2Q,EAAAA,UAAAA,QAAP,SAAeg5E,GAMb,OALA3pF,KAAKgpF,MAAQW,GAAQ,CAAC,EAClB3pF,KAAKwpF,UACPxpF,KAAKwpF,SAASI,OAAO,CAAED,KAAIh5E,IAE7B3Q,KAAK6pF,wBACE7pF,IAAAA,EAMF2Q,EAAAA,UAAAA,QAAP,WACE,OAAO3Q,KAAKgpF,KAAAA,EAMPr4E,EAAAA,UAAAA,QAAP,SAAe0vD,GAMb,OALArgE,KAAKipF,MAAKllF,OAAAA,EAAAA,EAAAA,CAAAA,OAAAA,EAAAA,EAAAA,CAAAA,CAAAA,EACL/D,KAAKipF,OACL5oB,GAELrgE,KAAK6pF,wBACE7pF,IAAAA,EAMF2Q,EAAAA,UAAAA,OAAP,SAAcnT,EAAa7B,SAGzB,OAFAqE,KAAKipF,MAAKllF,OAAAA,EAAAA,EAAAA,CAAAA,OAAAA,EAAAA,EAAAA,CAAAA,CAAAA,EAAQ/D,KAAKipF,SAAKp4E,EAAAA,CAAAA,GAAGrT,GAAM7B,EAAKkV,IAC1C7Q,KAAK6pF,wBACE7pF,IAAAA,EAMF2Q,EAAAA,UAAAA,UAAP,SAAiBm5E,GAMf,OALA9pF,KAAKkpF,OAAMnlF,OAAAA,EAAAA,EAAAA,CAAAA,OAAAA,EAAAA,EAAAA,CAAAA,CAAAA,EACN/D,KAAKkpF,QACLY,GAEL9pF,KAAK6pF,wBACE7pF,IAAAA,EAMF2Q,EAAAA,UAAAA,SAAP,SAAgBnT,EAAay9E,SAG3B,OAFAj7E,KAAKkpF,OAAMnlF,OAAAA,EAAAA,EAAAA,CAAAA,OAAAA,EAAAA,EAAAA,CAAAA,CAAAA,EAAQ/D,KAAKkpF,UAAMr4E,EAAAA,CAAAA,GAAGrT,GAAMy9E,EAAKpqE,IAC5C7Q,KAAK6pF,wBACE7pF,IAAAA,EAMF2Q,EAAAA,UAAAA,eAAP,SAAsBo5E,GAGpB,OAFA/pF,KAAK0pF,aAAeK,EACpB/pF,KAAK6pF,wBACE7pF,IAAAA,EAMF2Q,EAAAA,UAAAA,SAAP,SAAgBoW,GAGd,OAFA/mB,KAAKspF,OAASviE,EACd/mB,KAAK6pF,wBACE7pF,IAAAA,EAMF2Q,EAAAA,UAAAA,mBAAP,SAA0BvP,GAGxB,OAFApB,KAAKypF,iBAAmBroF,EACxBpB,KAAK6pF,wBACE7pF,IAAAA,EAOF2Q,EAAAA,UAAAA,eAAP,SAAsBvP,GACpB,OAAOpB,KAAKgqF,mBAAmB5oF,EAAAA,EAM1BuP,EAAAA,UAAAA,WAAP,SAAkBnT,EAAasB,SAS7B,OARgB,OAAZA,SAEKkB,KAAKmpF,UAAU3rF,GAEtBwC,KAAKmpF,UAASplF,OAAAA,EAAAA,EAAAA,CAAAA,OAAAA,EAAAA,EAAAA,CAAAA,CAAAA,EAAQ/D,KAAKmpF,aAASt4E,EAAAA,CAAAA,GAAGrT,GAAMsB,EAAO+R,IAGtD7Q,KAAK6pF,wBACE7pF,IAAAA,EAMF2Q,EAAAA,UAAAA,QAAP,SAAes5E,GAGb,OAFAjqF,KAAKupF,MAAQU,EACbjqF,KAAK6pF,wBACE7pF,IAAAA,EAMF2Q,EAAAA,UAAAA,QAAP,WACE,OAAO3Q,KAAKupF,KAAAA,EAMP54E,EAAAA,UAAAA,eAAP,uBAEQs5E,EAAOjqF,KAAKkqF,UAGlB,OAAQ,QAARv5E,EAAIs5E,SAAAA,IAAIt5E,OAAAA,EAAAA,EAAEw5E,aACG,QAAX3hF,EAAOyhF,SAAAA,IAAIzhF,OAAAA,EAAAA,EAAE2hF,aAIO,QAAtB9pF,EAAQ,QAARwQ,EAAIo5E,SAAAA,IAAIp5E,OAAAA,EAAAA,EAAEu5E,oBAAAA,IAAY/pF,OAAAA,EAAAA,EAAEgqF,MAAM,IACrBJ,EAAKG,aAAaC,MAAM,SADjC,EAWK15E,EAAAA,UAAAA,WAAP,SAAkB4hD,GAOhB,OANKA,EAGHvyD,KAAKwpF,SAAWj3B,SAFTvyD,KAAKwpF,SAIdxpF,KAAK6pF,wBACE7pF,IAAAA,EAMF2Q,EAAAA,UAAAA,WAAP,WACE,OAAO3Q,KAAKwpF,QAAAA,EAMP74E,EAAAA,UAAAA,OAAP,SAAc25E,GACZ,IAAKA,EACH,OAAOtqF,KAGT,GAA8B,mBAAnBsqF,EAA+B,CACxC,IAAMC,EAAgBD,EAAsCtqF,MAC5D,OAAOuqF,aAAwBlB,EAAQkB,EAAevqF,IAiCxD,QA9BIsqF,aAA0BjB,GAC5BrpF,KAAKipF,MAAKllF,OAAAA,EAAAA,EAAAA,CAAAA,OAAAA,EAAAA,EAAAA,CAAAA,CAAAA,EAAQ/D,KAAKipF,OAAUqB,EAAerB,OAChDjpF,KAAKkpF,OAAMnlF,OAAAA,EAAAA,EAAAA,CAAAA,OAAAA,EAAAA,EAAAA,CAAAA,CAAAA,EAAQ/D,KAAKkpF,QAAWoB,EAAepB,QAClDlpF,KAAKmpF,UAASplF,OAAAA,EAAAA,EAAAA,CAAAA,OAAAA,EAAAA,EAAAA,CAAAA,CAAAA,EAAQ/D,KAAKmpF,WAAcmB,EAAenB,WACpDmB,EAAetB,OAASjlF,OAAOsC,KAAKikF,EAAetB,OAAO30F,SAC5D2L,KAAKgpF,MAAQsB,EAAetB,OAE1BsB,EAAehB,SACjBtpF,KAAKspF,OAASgB,EAAehB,QAE3BgB,EAAeZ,eACjB1pF,KAAK0pF,aAAeY,EAAeZ,eAE5B3lF,OAAAA,EAAAA,EAAAA,CAAcumF,KAGvBtqF,KAAKipF,MAAKllF,OAAAA,EAAAA,EAAAA,CAAAA,OAAAA,EAAAA,EAAAA,CAAAA,CAAAA,EAAQ/D,KAAKipF,OAAUqB,EAAejqB,MAChDrgE,KAAKkpF,OAAMnlF,OAAAA,EAAAA,EAAAA,CAAAA,OAAAA,EAAAA,EAAAA,CAAAA,CAAAA,EAAQ/D,KAAKkpF,QAAWoB,EAAerP,OAClDj7E,KAAKmpF,UAASplF,OAAAA,EAAAA,EAAAA,CAAAA,OAAAA,EAAAA,EAAAA,CAAAA,CAAAA,EAAQ/D,KAAKmpF,WAAcmB,EAAeE,UACpDF,EAAeX,OACjB3pF,KAAKgpF,MAAQsB,EAAeX,MAE1BW,EAAevjE,QACjB/mB,KAAKspF,OAASgB,EAAevjE,OAE3BujE,EAAeP,cACjB/pF,KAAK0pF,aAAeY,EAAeP,cAIhC/pF,IAAAA,EAMF2Q,EAAAA,UAAAA,MAAP,WAYE,OAXA3Q,KAAK+oF,aAAe,GACpB/oF,KAAKipF,MAAQ,CAAC,EACdjpF,KAAKkpF,OAAS,CAAC,EACflpF,KAAKgpF,MAAQ,CAAC,EACdhpF,KAAKmpF,UAAY,CAAC,EAClBnpF,KAAKspF,YAAAA,EACLtpF,KAAKypF,sBAAAA,EACLzpF,KAAK0pF,kBAAAA,EACL1pF,KAAKupF,WAAAA,EACLvpF,KAAKwpF,cAAAA,EACLxpF,KAAK6pF,wBACE7pF,IAAAA,EAMF2Q,EAAAA,UAAAA,cAAP,SAAqB85E,EAAwBC,GAC3C,IAAMC,EAAmB5mF,OAAHzD,EAAAA,EAAGyD,CAAH,CACpB0f,UAAW1f,OAAAA,EAAAA,EAAAA,IACR0mF,GAQL,OALAzqF,KAAK+oF,kBAAAA,IACH2B,GAAgCA,GAAkB,EAC9C3mF,OAAAA,EAAAA,EAAAA,CAAI/D,KAAK+oF,aAAY,CAAE4B,IAAkBxyF,OAAOuyF,GACjD3mF,OAAAA,EAAAA,EAAAA,CAAK/D,KAAK+oF,aAAY,CAAE4B,IAC7B3qF,KAAK6pF,wBACE7pF,IAAAA,EAMF2Q,EAAAA,UAAAA,iBAAP,WAGE,OAFA3Q,KAAK+oF,aAAe,GACpB/oF,KAAK6pF,wBACE7pF,IAAAA,EAWF2Q,EAAAA,UAAAA,aAAP,SAAoBkO,EAAc+rE,SAsBhC,GArBI5qF,KAAKkpF,QAAUnlF,OAAOsC,KAAKrG,KAAKkpF,QAAQ70F,SAC1CwqB,EAAMo8D,MAAKl3E,OAAAA,EAAAA,EAAAA,CAAAA,OAAAA,EAAAA,EAAAA,CAAAA,CAAAA,EAAQ/D,KAAKkpF,QAAWrqE,EAAMo8D,QAEvCj7E,KAAKipF,OAASllF,OAAOsC,KAAKrG,KAAKipF,OAAO50F,SACxCwqB,EAAMwhD,KAAIt8D,OAAAA,EAAAA,EAAAA,CAAAA,OAAAA,EAAAA,EAAAA,CAAAA,CAAAA,EAAQ/D,KAAKipF,OAAUpqE,EAAMwhD,OAErCrgE,KAAKgpF,OAASjlF,OAAOsC,KAAKrG,KAAKgpF,OAAO30F,SACxCwqB,EAAM8qE,KAAI5lF,OAAAA,EAAAA,EAAAA,CAAAA,OAAAA,EAAAA,EAAAA,CAAAA,CAAAA,EAAQ/D,KAAKgpF,OAAUnqE,EAAM8qE,OAErC3pF,KAAKmpF,WAAaplF,OAAOsC,KAAKrG,KAAKmpF,WAAW90F,SAChDwqB,EAAM2rE,SAAQzmF,OAAAA,EAAAA,EAAAA,CAAAA,OAAAA,EAAAA,EAAAA,CAAAA,CAAAA,EAAQ/D,KAAKmpF,WAActqE,EAAM2rE,WAE7CxqF,KAAKspF,SACPzqE,EAAMkI,MAAQ/mB,KAAKspF,QAEjBtpF,KAAKypF,mBACP5qE,EAAMsrE,YAAcnqF,KAAKypF,kBAKvBzpF,KAAKupF,MAAO,CACd1qE,EAAM2rE,SAAQzmF,OAAAA,EAAAA,EAAAA,CAAAA,CAAK8mF,MAAO7qF,KAAKupF,MAAMuB,mBAAsBjsE,EAAM2rE,UACjE,IAAMO,EAAwC,QAAzBl6E,EAAG7Q,KAAKupF,MAAMY,mBAAAA,IAAWt5E,OAAAA,EAAAA,EAAEzP,KAC5C2pF,IACFlsE,EAAMwhD,KAAIt8D,OAAAA,EAAAA,EAAAA,CAAAA,CAAKomF,YAAaY,GAAoBlsE,EAAMwhD,MAS1D,QALArgE,KAAKgrF,kBAAkBnsE,GAEvBA,EAAMosE,YAAWlnF,OAAAA,EAAAA,EAAAA,CAAQ8a,EAAMosE,aAAe,GAAQjrF,KAAK+oF,cAC3DlqE,EAAMosE,YAAcpsE,EAAMosE,YAAY52F,OAAS,EAAIwqB,EAAMosE,iBAAAA,EAElDjrF,KAAKkrF,uBAAsBnnF,OAAAA,EAAAA,EAAAA,CA0EtC,WAEE,IAAMq1D,EAASr1D,OAAAA,EAAAA,EAAAA,GAGf,OAFAq1D,EAAOouB,WAAapuB,EAAOouB,YAAc,CAAC,EAC1CpuB,EAAOouB,WAAW2D,sBAAwB/xB,EAAOouB,WAAW2D,uBAAyB,GAC9E/xB,EAAOouB,WAAW2D,sBA/EgBC,GAA+BprF,KAAK8oF,kBAAmBjqE,EAAO+rE,EAAAA,EAM7Fj6E,EAAAA,UAAAA,uBAAV,SACE06E,EACAxsE,EACA+rE,EACA9pF,GAJF,WAME,YAAO,IAFPA,IAAAA,EAAAA,GAEO,IAAIyyD,GAA0B,SAAC95D,EAASC,GAC7C,IAAMyoC,EAAYkpD,EAAWvqF,GAC7B,GAAc,OAAV+d,GAAuC,mBAAdsjB,EAC3B1oC,EAAQolB,OACH,CACL,IAAM7Q,EAASm0B,EAAUp+B,OAADzD,EAAAA,EAACyD,CAAD,GAAM8a,GAAS+rE,GACnC7mF,OAAAA,EAAAA,EAAAA,CAAWiK,GACZA,EACE7N,MAAK,YAAS,SAAK+qF,uBAAuBG,EAAYC,EAAOV,EAAM9pF,EAAQ,GAAGX,KAAhE,MACdA,KAAK,KAAMzG,GAEdgX,EAAKw6E,uBAAuBG,EAAYr9E,EAAQ48E,EAAM9pF,EAAQ,GAC3DX,KAAK1G,GACL0G,KAAK,KAAMzG,EAAAA,CAAAA,GAAAA,EASZiX,EAAAA,UAAAA,sBAAV,sBAIO3Q,KAAK4oF,sBACR5oF,KAAK4oF,qBAAAA,EACL5oF,KAAK6oF,gBAAgBtrF,SAAQ,YAC3B6O,EAASuE,EAAA,IAEX3Q,KAAK4oF,qBAAAA,EAAsB,EAQvBj4E,EAAAA,UAAAA,kBAAR,SAA0BkO,GAExBA,EAAMkrE,YAAclrE,EAAMkrE,YACtBnnF,MAAMkD,QAAQ+Y,EAAMkrE,aAClBlrE,EAAMkrE,YACN,CAAClrE,EAAMkrE,aACT,GAGA/pF,KAAK0pF,eACP7qE,EAAMkrE,YAAclrE,EAAMkrE,YAAYj2F,OAAOkM,KAAK0pF,eAIhD7qE,EAAMkrE,cAAgBlrE,EAAMkrE,YAAY11F,eACnCwqB,EAAMkrE,WAAAA,EAGnBp5E,CAhcA,CAAAygD,eNrBAm6B,EAAAA,WAcE,WAAYzsF,GAZL,KAAAi9D,OAAiB,EAEjB,KAAAyvB,IAAcznF,OAAAA,EAAAA,EAAAA,GAEd,KAAA0f,UAAoBtwB,KAAKqX,MACzB,KAAAihF,QAAkBt4F,KAAKqX,MACvB,KAAAoS,SAAmB,EACnB,KAAAnhB,OAAwBiwF,EAAcxE,GAGtC,KAAAxH,MAAA,EAGD5gF,GACFkB,KAAK4pF,OAAO9qF,EAsGlB,QAhGE6R,EAAAA,UAAAA,OAAAA,SAAO7R,QAAAA,IAAAA,IAAAA,EAAAA,CAAAA,GACDA,EAAQ6qF,OACN7qF,EAAQ6qF,KAAKgC,aACf3rF,KAAK4rF,UAAY9sF,EAAQ6qF,KAAKgC,YAG3B7sF,EAAQ+sF,MACX7rF,KAAK6rF,IAAM/sF,EAAQ6qF,KAAK/kF,IAAM9F,EAAQ6qF,KAAK5sB,OAASj+D,EAAQ6qF,KAAKhvF,WAIrEqF,KAAKyjB,UAAY3kB,EAAQ2kB,WAAatwB,KAAKqX,MAEvC1L,EAAQ0sF,MAEVxrF,KAAKwrF,IAA6B,KAAvB1sF,EAAQ0sF,IAAIn3F,OAAgByK,EAAQ0sF,IAAMznF,OAAAA,EAAAA,EAAAA,SAAA,IAEnDjF,EAAQ4gF,OACV1/E,KAAK0/E,KAAO5gF,EAAQ4gF,MAElB5gF,EAAQ+sF,MACV7rF,KAAK6rF,IAAM,GAAG/sF,EAAQ+sF,KAEO,iBAApB/sF,EAAQ2sF,UACjBzrF,KAAKyrF,QAAU3sF,EAAQ2sF,SAEO,iBAArB3sF,EAAQ8d,SACjB5c,KAAK4c,SAAW9d,EAAQ8d,SAExB5c,KAAK4c,SAAW5c,KAAKyjB,UAAYzjB,KAAKyrF,QAEpC3sF,EAAQokC,UACVljC,KAAKkjC,QAAUpkC,EAAQokC,SAErBpkC,EAAQgtF,cACV9rF,KAAK8rF,YAAchtF,EAAQgtF,aAEzBhtF,EAAQ8sF,YACV5rF,KAAK4rF,UAAY9sF,EAAQ8sF,WAEvB9sF,EAAQgM,YACV9K,KAAK8K,UAAYhM,EAAQgM,WAEG,iBAAnBhM,EAAQi9D,SACjB/7D,KAAK+7D,OAASj9D,EAAQi9D,QAEpBj9D,EAAQrD,SACVuE,KAAKvE,OAASqD,EAAQrD,OAAAA,EAK1BkV,EAAAA,UAAAA,MAAAA,SAAMlV,GACAA,EACFuE,KAAK4pF,OAAO,CAAEnuF,OAAMkV,IACX3Q,KAAKvE,SAAWiwF,EAAcxE,GACvClnF,KAAK4pF,OAAO,CAAEnuF,OAAQiwF,EAAcvE,SAEpCnnF,KAAK4pF,QAAAA,EAKTj5E,EAAAA,UAAAA,OAAAA,WAgBE,OAAO5M,OAAAA,EAAAA,EAAAA,CAAkB,CACvBynF,IAAK,GAAGxrF,KAAKwrF,IACb9L,KAAM1/E,KAAK0/E,KACX+L,QAAS,IAAIt4F,KAAK6M,KAAKyrF,SAASliF,cAChCka,UAAW,IAAItwB,KAAK6M,KAAKyjB,WAAWla,cACpC9N,OAAQuE,KAAKvE,OACbsgE,OAAQ/7D,KAAK+7D,OACb8vB,IAAyB,iBAAb7rF,KAAK6rF,KAAwC,iBAAb7rF,KAAK6rF,IAAmB,GAAG7rF,KAAK6rF,SAAAA,EAC5EjvE,SAAU5c,KAAK4c,SACf8jD,MAAO38D,OAAAA,EAAAA,EAAAA,CAAkB,CACvBm/B,QAASljC,KAAKkjC,QACd4oD,YAAa9rF,KAAK8rF,YAClBH,WAAY3rF,KAAK4rF,UACjBG,WAAY/rF,KAAK8K,aAAAA,EAIzB6F,CAtHA,CAAA46E,GOgDAS,EAAAA,WAeE,WAAmB1rC,EAAiB2B,EAA6CgqC,QAAAA,IAA7ChqC,IAAAA,EAAAA,IAAmBmP,QAAA,IAA0B66B,IAAAA,EAhCxD,GAgCwDA,KAAAA,SAAAA,EAbhE,KAAAC,OAAkB,CAAC,CAAC,GAcnClsF,KAAKmsF,cAAclqC,MAAQA,EAC3BjiD,KAAKosF,WAAW9rC,EAkYpB,QA5XS3vC,EAAAA,UAAAA,YAAP,SAAmBtD,GACjB,OAAOrN,KAAKisF,SAAW5+E,CAAAA,EAMlBsD,EAAAA,UAAAA,WAAP,SAAkB2vC,GACJtgD,KAAKmsF,cACb7rC,OAASA,EACTA,GAAUA,EAAO+rC,mBACnB/rC,EAAO+rC,mBAAAA,EAOJ17E,EAAAA,UAAAA,UAAP,WAEE,IAAMsxC,EAAQmP,EAAMk7B,MAAMtsF,KAAKusF,YAK/B,OAJAvsF,KAAKwsF,WAAW3rF,KAAK,CACnBy/C,OAAQtgD,KAAKysF,YACbxqC,MAAKtxC,IAEAsxC,CAAAA,EAMFtxC,EAAAA,UAAAA,SAAP,WACE,QAAI3Q,KAAKwsF,WAAWn4F,QAAU,MACrB2L,KAAKwsF,WAAWt/E,KAAAA,EAMpByD,EAAAA,UAAAA,UAAP,SAAiBvE,GACf,IAAM61C,EAAQjiD,KAAK0sF,YACnB,IACEtgF,EAAS61C,EAEJ0qC,CAHP,QAGE3sF,KAAK2sF,UAAAA,CAAAA,EAOFh8E,EAAAA,UAAAA,UAAP,WACE,OAAO3Q,KAAKmsF,cAAc7rC,MAAAA,EAIrB3vC,EAAAA,UAAAA,SAAP,WACE,OAAO3Q,KAAKmsF,cAAclqC,KAAAA,EAIrBtxC,EAAAA,UAAAA,SAAP,WACE,OAAO3Q,KAAKksF,MAAAA,EAIPv7E,EAAAA,UAAAA,YAAP,WACE,OAAO3Q,KAAKksF,OAAOlsF,KAAKksF,OAAO73F,OAAS,IAOnCsc,EAAAA,UAAAA,iBAAP,SAAwB6kD,EAAgBo1B,GACtC,IAAMgC,EAAW5sF,KAAK6sF,aAAe9oF,OAAAA,EAAAA,EAAAA,GACjC+oF,EAAYlC,EAMhB,IAAKA,EAAM,CACT,IAAImC,OAAAA,EACJ,IACE,MAAM,IAAIl5F,MAAM,4BAIlBi5F,CAHE,MAAOt3B,GACPu3B,EAAqBv3B,CAEvBs3B,CAAAA,EAAY,CACVE,kBAAmBx3B,EACnBu3B,mBAAkBr8E,EAQtB,QAJA1Q,KAAKitF,cAAc,mBAAoBz3B,EAASzxD,OAAAA,EAAAA,EAAAA,CAAAA,OAAAA,EAAAA,EAAAA,CAAAA,CAAAA,EAC3C+oF,GAAS,CACZI,SAAUN,KAELA,CAAAA,EAMFj8E,EAAAA,UAAAA,eAAP,SAAsBlQ,EAAiBsmB,EAAkB6jE,GACvD,IAAMgC,EAAW5sF,KAAK6sF,aAAe9oF,OAAAA,EAAAA,EAAAA,GACjC+oF,EAAYlC,EAMhB,IAAKA,EAAM,CACT,IAAImC,OAAAA,EACJ,IACE,MAAM,IAAIl5F,MAAM4M,EAIlBqsF,CAHE,MAAOt3B,GACPu3B,EAAqBv3B,CAEvBs3B,CAAAA,EAAY,CACVE,kBAAmBvsF,EACnBssF,mBAAkBtvE,EAQtB,QAJAzd,KAAKitF,cAAc,iBAAkBxsF,EAASsmB,EAAKhjB,OAAAA,EAAAA,EAAAA,CAAAA,OAAAA,EAAAA,EAAAA,CAAAA,CAAAA,EAC9C+oF,GAAS,CACZI,SAAUN,KAELA,CAAAA,EAMFj8E,EAAAA,UAAAA,aAAP,SAAoBkO,EAAc+rE,GAChC,IAAMgC,EAAW5sF,KAAK6sF,aAAe9oF,OAAAA,EAAAA,EAAAA,GAKrC,OAJA/D,KAAKitF,cAAc,eAAgBpuE,EAAK9a,OAAAA,EAAAA,EAAAA,CAAAA,OAAAA,EAAAA,EAAAA,CAAAA,CAAAA,EACnC6mF,GAAI,CACPsC,SAAUN,KAELA,CAAAA,EAMFj8E,EAAAA,UAAAA,YAAP,WACE,OAAO3Q,KAAK6sF,YAAAA,EAMPl8E,EAAAA,UAAAA,cAAP,SAAqB85E,EAAwBG,GACrC,yBAAE3oC,EAAAA,EAAAA,MAAO3B,EAAAA,EAAAA,OAEf,GAAK2B,GAAU3B,EAAf,CAGM,uCAAEpxC,EAAAA,EAAAA,iBAAAi+E,OAAAA,IAAmBj+E,EAAnBi+E,KAAAA,EAAyBlsF,EAAAA,EAAAA,eAAAypF,OAAAA,IAAiBzpF,EAnM1B,IAmMSypF,EAGjC,KAAIA,GAAkB,GAAtB,CAEA,IAAMjnE,EAAY1f,OAAAA,EAAAA,EAAAA,GACZ4mF,EAAmB5mF,OAAHzD,EAAAA,EAAGyD,CAAH,CAAK0f,UAAS0hD,GAAKslB,GACnC2C,EAAkBD,EACnBppF,OAAAA,EAAAA,EAAAA,EAAe,WAAM,SAAiB4mF,EAAjBwC,EAAA,IACtBxC,EAEoB,OAApByC,GAEJnrC,EAAMorC,cAAcD,EAAiB3mF,KAAKuyB,IAAI0xD,EA1M1B,SAgNf/5E,EAAAA,UAAAA,QAAP,SAAeg5E,GACb,IAAM1nC,EAAQjiD,KAAKusF,WACftqC,GAAOA,EAAMqrC,QAAQ3D,EAAAA,EAMpBh5E,EAAAA,UAAAA,QAAP,SAAe0vD,GACb,IAAMpe,EAAQjiD,KAAKusF,WACftqC,GAAOA,EAAMsrC,QAAQltB,EAAAA,EAMpB1vD,EAAAA,UAAAA,UAAP,SAAiBm5E,GACf,IAAM7nC,EAAQjiD,KAAKusF,WACftqC,GAAOA,EAAMurC,UAAU1D,EAAAA,EAMtBn5E,EAAAA,UAAAA,OAAP,SAAcnT,EAAa7B,GACzB,IAAMsmD,EAAQjiD,KAAKusF,WACftqC,GAAOA,EAAMkvB,OAAO3zE,EAAK7B,EAAAA,EAMxBgV,EAAAA,UAAAA,SAAP,SAAgBnT,EAAay9E,GAC3B,IAAMh5B,EAAQjiD,KAAKusF,WACftqC,GAAOA,EAAMwrC,SAASjwF,EAAKy9E,EAAAA,EAO1BtqE,EAAAA,UAAAA,WAAP,SAAkBvP,EAActC,GAC9B,IAAMmjD,EAAQjiD,KAAKusF,WACftqC,GAAOA,EAAMyrC,WAAWtsF,EAAMtC,EAAAA,EAM7B6R,EAAAA,UAAAA,eAAP,SAAsBvE,GACd,yBAAE61C,EAAAA,EAAAA,MAAO3B,EAAAA,EAAAA,OACX2B,GAAS3B,GACXl0C,EAAS61C,EAAAA,EAONtxC,EAAAA,UAAAA,IAAP,SAAWvE,GACT,IAAMuhF,EAASC,EAAS5tF,MACxB,IACEoM,EAASpM,KAEA2tF,CAHX,QAGEC,EAASD,EAAAA,CAAAA,EAONh9E,EAAAA,UAAAA,eAAP,SAA6Ck9E,GAC3C,IAAMvtC,EAAStgD,KAAKysF,YACpB,IAAKnsC,EAAQ,OAAO,KACpB,IACE,OAAOA,EAAOwtC,eAAeD,EAGtB,CAFP,MAAO3jB,GAEP,OADAwd,EAAO95E,KAAK,+BAA+BigF,EAAYjpF,GAAE,yBAClD,OAOJ+L,EAAAA,UAAAA,UAAP,SAAiB7R,GACf,OAAOkB,KAAK+tF,qBAAqB,YAAajvF,EAAAA,EAMzC6R,EAAAA,UAAAA,iBAAP,SAAwB7R,EAA6BkvF,GACnD,OAAOhuF,KAAK+tF,qBAAqB,mBAAoBjvF,EAASkvF,EAAAA,EAMzDr9E,EAAAA,UAAAA,aAAP,WACE,OAAO3Q,KAAK+tF,qBAAgD,iBAMvDp9E,EAAAA,UAAAA,eAAP,SAAsBs9E,GAEpB,QAAI,IAFgBA,IAAAA,GAAAA,GAEhBA,EACF,OAAOjuF,KAAKiuF,aAIdjuF,KAAKkuF,oBAAAA,EAMAv9E,EAAAA,UAAAA,WAAP,yBAEuB,QADrBE,EACS,QADTrI,EAAkB,QAAlBmI,EAAAA,KAAKw7E,qBAAAA,IAAax7E,OAAAA,EAAAA,EACdsxC,aAAAA,IAAKz5C,OAAAA,EAAAA,EAAE2lF,oBAAAA,IAAUt9E,GAAAA,EACjBu9E,QACJpuF,KAAKkuF,qBAGoB,QAAzBx9E,EAAkB,QAAlBrQ,EAAAA,KAAK8rF,qBAAAA,IAAa9rF,OAAAA,EAAAA,EAAE4hD,aAAAA,IAAKvxC,GAAAA,EAAE29E,YAAAA,EAMtB19E,EAAAA,UAAAA,aAAP,SAAoB7R,GACZ,yBAAEmjD,EAAAA,EAAAA,MAAO3B,EAAAA,EAAAA,OACT7iC,EAAAA,GAAAA,EAAAA,cAAAA,CAAAA,EAAEylB,EAAAA,EAAAA,QAAS4oD,EAAAA,EAAAA,YACXv5B,EAAU,IAAIg5B,EAAOxnF,OAAAA,EAAAA,EAAAA,CAAAA,OAAAA,EAAAA,EAAAA,CAAAA,CACzBm/B,QAAOh0B,EACP48E,YAAWx7B,GACPrO,GAAS,CAAE0nC,KAAM1nC,EAAMqsC,YACxBxvF,IAGL,GAAImjD,EAAO,CAET,IAAMssC,EAAiBtsC,EAAMksC,YAAclsC,EAAMksC,aAC7CI,GAAkBA,EAAe9yF,SAAWiwF,EAAcxE,IAC5DqH,EAAe3E,OAAO,CAAEnuF,OAAQiwF,EAAcvE,SAEhDnnF,KAAKiuF,aAGLhsC,EAAMosC,WAAW97B,EAGnB,QAAOA,CAAAA,EAMD5hD,EAAAA,UAAAA,mBAAR,WACQ,yBAAEsxC,EAAAA,EAAAA,MAAO3B,EAAAA,EAAAA,OACf,GAAK2B,EAAL,CAEA,IAAMsQ,EAAUtQ,EAAMksC,YAAclsC,EAAMksC,aACtC57B,GACEjS,GAAUA,EAAOkuC,gBACnBluC,EAAOkuC,eAAej8B,EAAAA,CAAAA,EAYpB5hD,EAAAA,UAAAA,cAAR,SAA8C7U,aAAW+U,EAAAA,GAAAxQ,EAAAA,EAAAA,EAAAA,UAAAA,OAAAA,IAAAwQ,EAAAA,EAAAA,GAAAA,UAAAA,GACjD,yBAAEoxC,EAAAA,EAAAA,MAAO3B,EAAAA,EAAAA,OACXA,GAAUA,EAAOxkD,KAEnB0M,EAAC83C,GAAexkD,GAAO+G,MAAA2F,EAAAzE,OAAAA,EAAAA,EAAAA,CAAIgF,EAAI,CAAEk5C,IAAAA,EAS7BtxC,EAAAA,UAAAA,qBAAR,SAAgC7U,OAAgB,aAAA+U,EAAAA,UAAAA,OAAAA,IAAArI,EAAAA,EAAAA,GAAAA,UAAAA,GAC9C,IAAMimF,EAAUC,IACVC,EAASF,EAAQjH,WACvB,GAAImH,GAAUA,EAAOC,YAAmD,mBAA9BD,EAAOC,WAAW9yF,GAC1D,OAAO6yF,EAAOC,WAAW9yF,GAAQ+G,MAAM7C,KAAM+I,GAE/C2+E,EAAO95E,KAAK,oBAAoB9R,EAAM,uCAE1C6U,CAnZA,CAAAq7E,GAsZM,SAAU0C,IACd,IAAMD,EAAU1qF,OAAAA,EAAAA,EAAAA,GAKhB,OAJA0qF,EAAQjH,WAAaiH,EAAQjH,YAAc,CACzCoH,WAAY,CAAC,EACbC,SAAK,GAEAJ,CAQH,UAAUb,EAASiB,GACvB,IAAMC,EAAWJ,IACXf,EAASoB,EAAkBD,GAEjC,OADAE,EAAgBF,EAAUD,GACnBlB,CAUH,UAAUsB,IAEd,IAAMH,EAAWJ,IAQjB,OALKQ,EAAgBJ,KAAaC,EAAkBD,GAAUK,YAxcrC,IAycvBH,EAAgBF,EAAU,IAAI9C,GAI5BjoF,OAAAA,EAAAA,EAAAA,GAyBN,SAAgC+qF,aAC9B,IACE,IAAMM,EAA8D,QAAlD/uF,EAA0C,QAA1CwQ,EAA8B,QAA9BrI,EAAGkmF,IAAiBlH,kBAAAA,IAAUh/E,OAAAA,EAAAA,EAAEomF,kBAAAA,IAAU/9E,OAAAA,EAAAA,EAAE/G,cAAAA,IAAMzJ,OAAAA,EAAAA,EAAEgvF,OAGtE,IAAKD,EACH,OAAOL,EAAkBD,GAI3B,IAAKI,EAAgBE,IAAiBL,EAAkBK,GAAcD,YAhf/C,GAgfyE,CAC9F,IAAMG,EAAsBP,EAAkBD,GAAU3C,cACxD6C,EAAgBI,EAAc,IAAIpD,EAAIsD,EAAoBhvC,OAAQ8Q,EAAMk7B,MAAMgD,EAAoBrtC,QAIpG,QAAO8sC,EAAkBK,EAGAN,CAFzB,MAAOS,GAEP,OAAOR,EAAkBD,EAAAA,CA3ClBU,CAwBX,CAxBkCV,GAGzBC,EAAkBD,EAgD3B,UAASI,EAAgBT,GACvB,SAAUA,GAAWA,EAAQjH,YAAciH,EAAQjH,WAAWqH,IAS1D,UAAUE,EAAkBN,GAChC,OAAIA,GAAWA,EAAQjH,YAAciH,EAAQjH,WAAWqH,MACxDJ,EAAQjH,WAAaiH,EAAQjH,YAAc,CAAC,EAC5CiH,EAAQjH,WAAWqH,IAAM,IAAI7C,GAFuCyC,EAAQjH,WAAWqH,GAYnF,UAAUG,EAAgBP,EAAkBI,GAChD,QAAKJ,IACLA,EAAQjH,WAAaiH,EAAQjH,YAAc,CAAC,EAC5CiH,EAAQjH,WAAWqH,IAAMA,GAAAA,EC3iB3B,UAASY,EAAa3zF,OAAgB,aAAA+U,EAAAA,UAAAA,OAAAA,IAAArI,EAAAA,EAAAA,GAAAA,UAAAA,GACpC,IAAMqmF,EAAMI,IACZ,GAAIJ,GAAOA,EAAI/yF,GAEb,OAAQ+yF,EAAI/yF,GAAoB+G,MAAxBgsF,EAAG9qF,OAAAA,EAAAA,EAAAA,CAAiCgF,IAE9C,MAAM,IAAIlV,MAAM,qBAAqBiI,EAAM,uDAUvC,UAAU4zF,EAAiBl6B,EAAgB80B,GAC/C,IAAIyC,EACJ,IACE,MAAM,IAAIl5F,MAAM,4BAIlB,CAHE,MAAO2hE,GACPu3B,EAAqBv3B,CAEvB,QAAOi6B,EAAU,mBAAoBj6B,EAAW,CAC9C80B,eAAc9hF,EACdwkF,kBAAmBx3B,EACnBu3B,mBAAkBl8E,GAkIhB,UAAU8+E,EAAUvjF,GACxBqjF,EAAgB,YAAarjF,EC9J/B,KCHYwjF,EDyBCC,EACL,CACJC,WAAY,mCACZC,WAAY,wCACZC,aAAc,kCACdC,YAAa,iCACbt9B,OAAQ,mCACRu9B,UAAW,4DChCf,SAAYN,GACVj/E,EAAAA,WAAAA,aACAA,EAAAA,QAAAA,UACAA,EAAAA,QAAAA,UACAA,EAAAA,MAAAA,OAJF,EAAYi/E,IAAAA,EAAkB,KAO9B,kBAWE,WAAYnvF,EAAkB0vF,EAAelyF,GAA7C,MAGE0S,EAAAA,KAAAA,KAAMlQ,IAAQ,YACdsD,OAAOysD,eAAe/yC,EAAM2yE,EAAepxF,WAC3Cye,EAAK0yE,QAAUA,EACf1yE,EAAKxf,KAAOA,EAFZ8F,CAKJ,QApBoCA,OAAAA,EAAAA,EAAAA,CAAAA,EAAAA,GAoBpCyE,CApBA,EAAoC3U,OCRvBw8F,EAAkB,CAC7BlT,QAAW,0CACX/wC,MAAO,4BACP5oC,YAAa,uCACbvF,KAAM,SACNuqE,sBAAsB,EACtBD,WAAY,CACV+nB,KAAM,CACJryF,KAAM,UACNuqE,sBAAsB,GAExB+nB,WAAY,CACVtyF,KAAM,UACNuqE,sBAAsB,GAExBgoB,YAAa,CACXvyF,KAAM,UACNuqE,sBAAsB,GAExBioB,SAAU,CACRjoB,sBAAsB,EACtBO,MAAO,CAAC,CACN9qE,KAAM,WACL,CACDA,KAAM,SACNsqE,WAAY,CACVz1D,SAAU,CACR7U,KAAM,UACNwS,SAAS,OAKjBigF,KAAM,CACJzyF,KAAM,UACNuqE,sBAAsB,GAExBmoB,QAAS,CACPlgF,SAAS,EACTs4D,MAAO,CAAC,CACN9qE,KAAM,WACL,CACDA,KAAM,SACNuqE,sBAAsB,EACtBD,WAAY,CACVqoB,OAAQ,CACN3yF,KAAM,SACN8gF,KAAM,CAAC,OAAQ,QAAS,WAAY,gBAAiB,WAAY,YAAa,WAAY,UAAW,kBAK7G8R,OAAQ,CACN5yF,KAAM,UACNuqE,sBAAsB,GAExBsoB,WAAY,CACV7yF,KAAM,UACNuqE,sBAAsB,GAExBuoB,SAAU,CACR9yF,KAAM,UACNuqE,sBAAsB,GAExBnI,KAAM,CACJpiE,KAAM,UACNuqE,sBAAsB,GAExBwoB,IAAK,CACH/yF,KAAM,UACNuqE,sBAAsB,GAExByoB,UAAW,CACThzF,KAAM,UACNuqE,sBAAsB,GAExB0oB,WAAY,CACV12E,MAAO,CACLvc,KAAM,UACN0/E,QAAS,EACTC,QAAS,KAEXljE,OAAQ,CACNzc,KAAM,UACN0/E,QAAS,EACTC,QAAS,KAEXxtB,KAAM,CACJnyD,KAAM,SACNwS,QAAS,OACTsuE,KAAM,CAAC,OAAQ,UAGnBoS,QAAS,CACPlzF,KAAM,SACNsqE,WAAY,CACVvrD,MAAO,CACL/e,KAAM,UACN0/E,QAAS,EACTC,QAAS,IACTntE,QAAS,KAEX2gF,KAAM,CACJnzF,KAAM,UACN0/E,QAAS,EACTC,QAAS,IACTntE,QAAS,GAEX+J,MAAO,CACLvc,KAAM,UACN0/E,QAAS,EACTC,QAAS,MAEXljE,OAAQ,CACNzc,KAAM,UACN0/E,QAAS,EACTC,QAAS,MAEXyT,IAAK,CACHpzF,KAAM,SACNwS,QAAS,OACTsuE,KAAM,CAAC,OAAQ,QAAS,SAE1BuS,WAAY,CACVtpB,KAAQ,WACRv3D,QAAS,eAEXq5B,MAAO,CACLk+B,KAAQ,cACRv3D,QAAS,YAIfqC,SAAU,CACR7U,KAAM,SACNjC,OAAQ,CACNiC,KAAM,QACNqrB,MAAO,CACLrrB,KAAM,SACN8gF,KAAM,CACJ,WACA,WACA,OACA,QACA,SACA,YACA,OACA,YACA,QACA,OACA,aACA,MACA,SACA,OACA,WAGJJ,SAAU,EACVC,aAAa,EACbvW,iBAAiB,GAEnBG,sBAAsB,GAExB+oB,OAAQ,CACNtzF,KAAM,SACNsqE,WAAY,CACV/tD,MAAO,CACLvc,KAAM,SACN0/E,QAAS,EACTC,QAAS,KAEXljE,OAAQ,CACNzc,KAAM,SACN0/E,QAAS,EACTC,QAAS,KAEXyT,IAAK,CACHpzF,KAAM,SACN8gF,KAAM,CAAC,OAAQ,OAAQ,QAAS,OAChCtuE,QAAS,QAEXq5B,MAAO,CACLk+B,KAAQ,cACRv3D,QAAS,WAIb+3D,sBAAsB,EACtBM,MAAO,CACL,CAAEl5C,SAAU,CAAC,UACb,CAAEA,SAAU,CAAC,aAGjB4hE,KAAM,CACJvzF,KAAM,SACNsqE,WAAY,CACVkpB,IAAK,CACHxzF,KAAM,QACNoqE,iBAAiB,EACjBsW,SAAU,EACVr1D,MAAO,CAAC,CACNrrB,KAAM,UACN0/E,QAAS,EACTC,QAAS,KACR,CACD3/E,KAAM,UACN0/E,QAAS,EACTC,QAAS,KACR,CACD3/E,KAAM,UACN0/E,QAAS,EACTC,QAAS,KACR,CACD3/E,KAAM,UACN0/E,QAAS,EACTC,QAAS,QAIfhuD,SAAU,CAAC,QAEb8hE,OAAQ,CACNzzF,KAAM,SACNsqE,WAAY,CACVopB,IAAK,CACH5oB,MAAO,CAAC,CACN9qE,KAAM,SACN8gF,KAAM,CAAC,SACN,CACD9gF,KAAM,SACN0/E,QAAS,EACTC,QAAS,OAGbgU,KAAM,CACJ3zF,KAAM,WAERqzF,WAAY,CACVtpB,KAAQ,WACRv3D,QAAS,aAGb+3D,sBAAsB,GAExBqpB,aAAc,CACZ9oB,MAAO,CAAC,CACN9qE,KAAM,WACL,CACDA,KAAM,SACNsqE,WAAY,CACVupB,QAAS,CACP7zF,KAAM,SACN0/E,QAAS,EACTC,QAAS,IACTntE,QAAS,KAEXshF,QAAS,CACP9zF,KAAM,SACN0/E,QAAS,EACTC,QAAS,IACTntE,QAAS,KAEXuhF,OAAQ,CACN/zF,KAAM,WAER22D,MAAO,CACLoT,KAAQ,WACRv3D,QAAS,aAGb+3D,sBAAsB,KAG1BypB,WAAY,CACVlpB,MAAO,CAAC,CACN9qE,KAAM,WACL,CACDA,KAAM,SACNsqE,WAAY,CACV2pB,MAAO,CACLzhF,QAAS,EACTu3D,KAAQ,YAEVxtD,MAAO,CACLvc,KAAM,SACN0/E,QAAS,EACTC,QAAS,KAEXljE,OAAQ,CACNzc,KAAM,SACN0/E,QAAS,EACTC,QAAS,KAEXkU,QAAS,CACP7zF,KAAM,SACN0/E,QAAS,EACTC,QAAS,IACTntE,QAAS,KAEXshF,QAAS,CACP9zF,KAAM,SACN0/E,QAAS,EACTC,QAAS,IACTntE,QAAS,KAEXjJ,OAAQ,CACNvJ,KAAM,UACN0/E,QAAS,EACTC,QAAS,KAEXxtB,KAAM,CACJnyD,KAAM,SACN8gF,KAAM,CAAC,OAAQ,QAAS,QACxBtuE,QAAS,UAGb+3D,sBAAsB,KAG1B2pB,eAAgB,CACdppB,MAAO,CAAC,CACN9qE,KAAM,WACL,CACDA,KAAM,SACNsqE,WAAY,CACV2pB,MAAO,CACLlqB,KAAQ,WACRv3D,QAAS,OAEXqhF,QAAS,CACP7zF,KAAM,SACN0/E,QAAS,EACTC,QAAS,IACTntE,QAAS,KAEXshF,QAAS,CACP9zF,KAAM,SACN0/E,QAAS,EACTC,QAAS,IACTntE,QAAS,KAEXjJ,OAAQ,CACNvJ,KAAM,UACN0/E,QAAS,EACTC,QAAS,KAEXwU,OAAQ,CACNn0F,KAAM,UACN0/E,QAAS,EACTC,QAAS,IACTntE,QAAS,IAEX4hF,KAAM,CACJp0F,KAAM,SACN0/E,QAAS,EACTC,QAAS,GACTntE,QAAS,GAEXxS,KAAM,CACJA,KAAM,SACN8gF,KAAM,CAAC,OAAQ,QACftuE,QAAS,SAGb+3D,sBAAsB,KAG1B8pB,WAAY,CACVvpB,MAAO,CAAC,CACN9qE,KAAM,WACL,CACDA,KAAM,SACNsqE,WAAY,CACV2pB,MAAO,CACLlqB,KAAQ,WACRv3D,QAAS,OAEXqhF,QAAS,CACP7zF,KAAM,SACN0/E,QAAS,EACTC,QAAS,IACTntE,QAAS,KAEXshF,QAAS,CACP9zF,KAAM,SACN0/E,QAAS,EACTC,QAAS,IACTntE,QAAS,KAEXjJ,OAAQ,CACNvJ,KAAM,UACN0/E,QAAS,EACTC,QAAS,KAEXwU,OAAQ,CACNn0F,KAAM,SACN0/E,QAAS,EACTC,QAAS,GACTntE,QAAS,IAEX4hF,KAAM,CACJp0F,KAAM,SACN0/E,QAAS,EACTC,QAAS,GACTntE,QAAS,GAEXxS,KAAM,CACJA,KAAM,SACN8gF,KAAM,CAAC,OAAQ,QACftuE,QAAS,SAGb+3D,sBAAsB,KAG1B+pB,gBAAiB,CACfxpB,MAAO,CAAC,CACN9qE,KAAM,WACL,CACDA,KAAM,SACNsqE,WAAY,CACV1/B,OAAQ,CACNkgC,MAAO,CAAC,CACN9qE,KAAM,UACN0/E,QAAS,EACTC,QAAS,KACR,CACD3/E,KAAM,SACN8gF,KAAM,CAAC,UAGXsT,KAAM,CACJp0F,KAAM,SACN0/E,QAAS,EACTC,QAAS,GACTntE,QAAS,IAEX6gF,WAAY,CACVtpB,KAAQ,aAGZQ,sBAAsB,KAG1BgqB,SAAU,CACRzpB,MAAO,CAAC,CACN9qE,KAAM,WACL,CACDA,KAAM,SACNsqE,WAAY,CACV6pB,OAAQ,CACNn0F,KAAM,UACN0/E,QAAS,EACTC,QAAS,IACTntE,QAAS,IAEXgiF,SAAU,CACRx0F,KAAM,SACN8gF,KAAM,CAAC,WAAY,UACnBtuE,QAAS,YAEX6gF,WAAY,CACVtpB,KAAQ,aAGZQ,sBAAsB,KAG1BkqB,SAAU,CACR3pB,MAAO,CAAC,CACN9qE,KAAM,WACL,CACDA,KAAM,SACNsqE,WAAY,CACVmpB,OAAQ,CACNzzF,KAAM,UACN0/E,QAAS,EACTC,QAAS,KAEXhpB,MAAO,CACLoT,KAAQ,WACRv3D,QAAS,QAEX6gF,WAAY,CACVtpB,KAAQ,aAGZQ,sBAAsB,KAG1BmqB,WAAY,CACV5pB,MAAO,CAAC,CACN9qE,KAAM,WACL,CACDA,KAAM,SACNsqE,WAAY,CACV5oE,OAAQ,CACN1B,KAAM,QACNoqE,iBAAiB,EACjBsW,SAAU,EACVr1D,MAAO,CAAC,CACNrrB,KAAM,UACN0/E,QAAS,EACTC,QAAS,IACTntE,QAAS,GACR,CACDxS,KAAM,UACN0/E,QAAS,EACTC,QAAS,IACTntE,QAAS,MAGb6gF,WAAY,CACVtpB,KAAQ,aAGZQ,sBAAsB,KAG1BoqB,OAAQ,CACN7pB,MAAO,CAAC,CACN9qE,KAAM,WACL,CACDA,KAAM,SACNsqE,WAAY,CACV8pB,KAAM,CACJp0F,KAAM,SACN0/E,QAAS,EACTC,QAAS,GACTntE,QAAS,KAEXsO,QAAS,CACP9gB,KAAM,UACN0/E,QAAS,EACTC,QAAS,IACTntE,QAAS,IAEXoiF,OAAQ,CACN50F,KAAM,QACNoqE,iBAAiB,EACjBsW,SAAU,EACVr1D,MAAO,CAAC,CACNrrB,KAAM,UACN0/E,SAAU,IACVC,QAAS,IACTntE,QAAS,GACR,CACDxS,KAAM,UACN0/E,SAAU,IACVC,QAAS,IACTntE,QAAS,KAGbmkD,MAAO,CACLoT,KAAQ,YAEVspB,WAAY,CACVtpB,KAAQ,aAGZQ,sBAAsB,KAG1BsqB,OAAQ,CACN/pB,MAAO,CAAC,CACN9qE,KAAM,WACL,CACDA,KAAM,SACNsqE,WAAY,CACV+oB,WAAY,CACVtpB,KAAQ,aAGZQ,sBAAsB,KAG1BuqB,OAAQ,CACNhqB,MAAO,CAAC,CACN9qE,KAAM,WACL,CACDA,KAAM,SACNsqE,WAAY,CACV3T,MAAO,CACLoT,KAAQ,YAEVspB,WAAY,CACVtpB,KAAQ,YAEVxtD,MAAO,CACLvc,KAAM,UACN0/E,QAAS,EACTC,QAAS,MAGbpV,sBAAsB,KAG1BwqB,QAAS,CACPjqB,MAAO,CAAC,CACN9qE,KAAM,WACL,CACDA,KAAM,SACNsqE,WAAY,CACV6pB,OAAQ,CACNn0F,KAAM,UACN0/E,QAAS,EACTC,QAAS,GACTntE,QAAS,IAGb+3D,sBAAsB,KAG1B6pB,KAAM,CACJtpB,MAAO,CAAC,CACN9qE,KAAM,WACL,CACDA,KAAM,SACNsqE,WAAY,CACV6pB,OAAQ,CACNn0F,KAAM,UACN0/E,QAAS,EACTC,QAAS,GACTntE,QAAS,IAGb+3D,sBAAsB,KAG1ByqB,WAAY,CACVlqB,MAAO,CAAC,CACN9qE,KAAM,WACL,CACDA,KAAM,SACNsqE,WAAY,CACV2qB,UAAW,CACTj1F,KAAM,UACN0/E,QAAS,EACTC,QAAS,IACTntE,QAAS,KAGb+3D,sBAAsB,KAG1B2qB,MAAO,CACLpqB,MAAO,CAAC,CACN9qE,KAAM,WACL,CACDA,KAAM,SACNsqE,WAAY,CACV6qB,KAAM,CACJn1F,KAAM,UACN0/E,QAAS,EACTC,QAAS,IACTntE,QAAS,KAGb+3D,sBAAsB,KAG1B6qB,SAAU,CACRtqB,MAAO,CAAC,CACN9qE,KAAM,WACL,CACDA,KAAM,SACNsqE,WAAY,CACV6pB,OAAQ,CACNn0F,KAAM,UACN0/E,QAAS,EACTC,QAAS,IACTntE,QAAS,IAGb+3D,sBAAsB,KAG1B8qB,UAAW,CACTvqB,MAAO,CAAC,CACN9qE,KAAM,WACL,CACDA,KAAM,SACNsqE,WAAY,CACV6pB,OAAQ,CACNn0F,KAAM,UACN0/E,QAAS,EACTC,QAAS,IACTntE,QAAS,IAGb+3D,sBAAsB,KAG1B+qB,SAAU,CACRxqB,MAAO,CAAC,CACN9qE,KAAM,WACL,CACDA,KAAM,SACNsqE,WAAY,CACVirB,WAAY,CACVv1F,KAAM,UACN0/E,QAAS,EACTC,QAAS,IACTntE,QAAS,KAEXgjF,WAAY,CACVx1F,KAAM,UACN0/E,QAAS,EACTC,QAAS,IACTntE,QAAS,KAEXijF,IAAK,CACHz1F,KAAM,UACN0/E,QAAS,EACTC,QAAS,IACTntE,QAAS,IAGb+3D,sBAAsB,KAG1BmrB,MAAO,CACL5qB,MAAO,CAAC,CACN9qE,KAAM,WACL,CACDA,KAAM,SACNsqE,WAAY,CACVqrB,WAAY,CACV5rB,KAAQ,WACRv3D,QAAS,YAEX6gF,WAAY,CACVtpB,KAAQ,WACRv3D,QAAS,YAEXojF,QAAS,CACP51F,KAAM,UACNwS,SAAS,GAEXiD,KAAM,CACJzV,KAAM,UACN0/E,QAAS,GACTC,QAAS,IACTntE,QAAS,KAEXyM,QAAS,CACPjf,KAAM,UACNwS,SAAS,IAGb+3D,sBAAsB,KAG1BsrB,QAAS,CACP71F,KAAM,SACNsqE,WAAY,CACVxyC,MAAO,CACL93B,KAAM,QACN0gF,SAAU,EACVr1D,MAAO,CAAC,CACNrrB,KAAM,YAGV81F,OAAQ,CACN91F,KAAM,UACN0/E,QAAS,EACTC,QAAS,IACTntE,QAAS,IAEX+J,MAAO,CACLvc,KAAM,UACN0/E,QAAS,EACTC,QAAS,KAEXljE,OAAQ,CACNzc,KAAM,UACN0/E,QAAS,EACTC,QAAS,KAEXhpB,MAAO,CACLoT,KAAQ,WACRv3D,QAAS,YAEX4gF,IAAK,CACHpzF,KAAM,SACN8gF,KAAM,CAAC,OAAQ,SAEjBiV,WAAY,CACV/1F,KAAM,UACNwS,SAAS,IAGbmf,SAAU,CAAC,QAAS,SAAU,SAC9B44C,sBAAsB,GAExByrB,cAAe,CACblrB,MAAO,CAAC,CACN9qE,KAAM,WACL,CACDA,KAAM,SACNsqE,WAAY,CACV2rB,MAAO,CACLj2F,KAAO,SACP8gF,KAAM,CAAC,UAAW,UAClBtuE,QAAS,WAEX+J,MAAO,CACLvc,KAAM,UACN0/E,QAAS,EACTC,QAAS,KACTntE,QAAS,MAEXiK,OAAQ,CACNzc,KAAM,UACN0/E,QAAS,EACTC,QAAS,IACTntE,QAAS,KAEX2/C,KAAM,CACJnyD,KAAM,SACN8gF,KAAM,CAAC,MAAO,UACdtuE,QAAS,OAEXuM,MAAO,CACL/e,KAAM,UACN0/E,QAAS,EACTC,QAAS,IACTntE,QAAS,KAEX0jF,YAAa,CACXl2F,KAAM,SACN8gF,KAAM,CAAC,WAAY,aACnBtuE,QAAS,YAEX2jF,OAAQ,CACNn2F,KAAM,SACNwS,QAAS,KAGb+3D,sBAAsB,KAG1B6rB,QAAS,CACPtrB,MAAO,CAAC,CACN9qE,KAAM,WACL,CACDA,KAAM,SACNsqE,WAAY,CACV+rB,MAAO,CACLr2F,KAAM,SACN8gF,KAAM,CAAC,OAAQ,MAAO,SAAU,QAChCtuE,QAAS,QAEX4jF,QAAS,CACPp2F,KAAM,UACNwS,SAAS,GAEX2P,MAAO,CACLniB,KAAM,SACN8gF,KAAM,CAAC,UAAW,SAClBtuE,QAAS,UAGb+3D,sBAAsB,KAG1B/hC,OAAQ,CACNxoC,KAAM,SACNuqE,sBAAsB,EACtBD,WAAY,CACVhL,OAAQ,CACNt/D,KAAM,SACN8gF,KAAM,CAAC,MAAO,OAAQ,OAAQ,MAAO,MAAO,MAAO,MAAO,OAAQ,MAAO,MAAO,MAAO,OAAQ,MAAO,MAAO,OAAQ,MAAO,SAE9HwV,KAAM,CACJt2F,KAAM,UACN0/E,QAAS,EACTC,QAAS,OAEX4W,QAAS,CACPv2F,KAAM,UACN0/E,QAAS,EACTC,QAAS,KAEX6S,SAAU,CACRxyF,KAAM,WAERw2F,QAAS,CACP1rB,MAAO,CAAC,CACN9qE,KAAM,SACN8gF,KAAM,CAAC,UACN,CACD9gF,KAAM,UACN0/E,QAAS,EACTC,QAAS,IACTntE,QAAS,MAGb1G,OAAQ,CACN9L,KAAM,UACNwS,SAAS,GAEXikF,QAAS,CACPz2F,KAAM,UACNwS,SAAS,GAEXkkF,MAAO,CACL12F,KAAM,UACNwS,SAAS,GAEXmkF,WAAY,CACV32F,KAAM,SACN8gF,KAAM,CAAC,MAAO,OAAQ,SACtBtuE,QAAS,OAEX6gF,WAAY,CACVtpB,KAAQ,YAEV6sB,WAAY,CACV52F,KAAM,SACN8gF,KAAM,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,SAAU,QAAS,YAEhE+V,gBAAiB,CACf72F,KAAM,SACN8gF,KAAM,CAAC,YAAa,eAI1BgW,KAAM,CACJhsB,MAAO,CAAC,CACN9qE,KAAM,WACL,CACDA,KAAM,SACNuqE,sBAAsB,EACtBD,WAAY,CACVksB,QAAS,CACPx2F,KAAM,UACN0/E,QAAS,EACTC,QAAS,KAEX9qE,SAAU,CACR7U,KAAM,UACNwS,SAAS,OAKjBgkF,QAAS,CACPx2F,KAAM,SACNuqE,sBAAsB,EACtBD,WAAY,CACV5sE,MAAO,CACLsC,KAAM,UACN0/E,QAAS,EACTC,QAAS,OAIf1vE,MAAO,CACL66D,MAAO,CAAC,CACN9qE,KAAM,WACL,CACDA,KAAM,SACNsqE,WAAY,CACVysB,OAAQ,CACN/2F,KAAM,eAKdg3F,cAAe,CACbh3F,KAAM,SACNuqE,sBAAsB,EACtBD,WAAY,CACV/tD,MAAO,CACLvc,KAAM,UACN0/E,QAAS,EACTC,QAAS,MAEXljE,OAAQ,CACNzc,KAAM,UACN0/E,QAAS,EACTC,QAAS,MAEXgT,OAAQ,CACN3yF,KAAM,UAERi3F,MAAO,CACLj3F,KAAM,WAERmuC,MAAO,CACLnuC,KAAM,UAERk3F,QAAS,CACPl3F,KAAM,UAERo2F,QAAS,CACPp2F,KAAM,WAERm3F,YAAa,CACXn3F,KAAM,SACN8gF,KAAM,CAAC,YAAa,MAAO,OAAQ,WAAY,aAC/CtuE,QAAS,aAEX4kF,kBAAmB,CACjBp3F,KAAM,UACN0/E,QAAS,EACTC,QAAS,OAEX0X,SAAU,CACRr3F,KAAM,WAERs3F,cAAe,CACbt3F,KAAM,UACN0/E,QAAS,EACTC,QAAS,KAEXj5D,IAAK,CACH1mB,KAAM,UACN0/E,QAAS,EACTC,QAAS,KAEX4X,kBAAmB,CACjBv3F,KAAM,UACN0/E,QAAS,IACTC,QAAS,KAEX6X,cAAe,CACbx3F,KAAM,UACN0/E,QAAS,EACTC,QAAS,KAEX8X,eAAgB,CACdz3F,KAAM,UACN0/E,QAAS,EACTC,QAAS,IAEX+X,YAAa,CACX13F,KAAM,SACN2Q,QAAS,0DAEXgnF,YAAa,CACX33F,KAAM,SACN2Q,QAAS,0DAEXinF,cAAe,CACb53F,KAAM,UAER63F,cAAe,CACb73F,KAAM,UACN0/E,QAAS,EACTC,QAAS,MAEXmY,gBAAiB,CACf93F,KAAM,UACN0/E,QAAS,EACTC,QAAS,MAEXoY,iBAAkB,CAChB/3F,KAAM,UACN0/E,QAAS,EACTC,QAAS,MAEXqY,eAAgB,CACdh4F,KAAM,UACN0/E,QAAS,EACTC,QAAS,MAEXsY,YAAa,CACXj4F,KAAM,UACN0/E,QAAS,EACTC,QAAS,EACTntE,QAAS,GAEXyE,SAAU,CACRjX,KAAM,UAER2N,SAAU,CACRo8D,KAAQ,gBAEVn+D,KAAM,CACJ5L,KAAM,UAERw0C,UAAW,CACTx0C,KAAM,UAERk4F,OAAQ,CACNl4F,KAAM,SACN8gF,KAAM,CAAC,SAAU,WACjBtuE,QAAS,YAIf8R,MAAO,CACLwmD,MAAO,CAAC,CACN9qE,KAAM,WACL,CACDA,KAAM,SACNuqE,sBAAsB,EACtBD,WAAY,CACVrzD,SAAU,CACRjX,KAAM,UAER2N,SAAU,CACRo8D,KAAQ,gBAEVn+D,KAAM,CACJ5L,KAAM,UAERw0C,UAAW,CACTx0C,KAAM,UAERm4F,OAAQ,CACNpuB,KAAQ,cAEVmuB,OAAQ,CACNl4F,KAAM,SACN8gF,KAAM,CAAC,SAAU,WACjBtuE,QAAS,WAEX4lF,aAAc,CACZp4F,KAAM,WAERq4F,UAAW,CACTtuB,KAAQ,oBAKhBuuB,UAAW,CACTt4F,KAAM,SACNsqE,WAAY,CACV/2D,KAAM,CACJvT,KAAM,UAERyV,KAAM,CACJzV,KAAM,SACN0/E,QAAS,EACTC,QAAS,KAEX7tE,SAAU,CACRi4D,KAAQ,gBAGZp4C,SAAU,CACR,QAEF44C,sBAAsB,GAExBguB,aAAc,CACZv4F,KAAM,SACNsqE,WAAY,CACVkuB,QAAS,CACPzuB,KAAQ,cAEVoqB,OAAQ,CACNn0F,KAAM,SACN0/E,QAAS,EACTC,QAAS,IAEXyU,KAAM,CACJp0F,KAAM,SACN0/E,QAAS,EACTC,QAAS,IAEX3/E,KAAM,CACJA,KAAM,SACN8gF,KAAM,CAAC,OAAQ,UAGnBnvD,SAAU,CAAC,YAEb8mE,iBAAkB,CAChBz4F,KAAM,SACNsqE,WAAY,CACVkuB,QAAS,CACPzuB,KAAQ,cAEVoqB,OAAQ,CACNn0F,KAAM,SACN0/E,QAAS,EACTC,QAAS,KAEXyU,KAAM,CACJp0F,KAAM,SACN0/E,QAAS,EACTC,QAAS,IAEX3/E,KAAM,CACJA,KAAM,SACN8gF,KAAM,CAAC,OAAQ,UAGnBnvD,SAAU,CAAC,YAEb+mE,SAAU,CACR14F,KAAM,SACNuqE,sBAAsB,EACtBD,WAAY,CACVquB,OAAQ,CACN34F,KAAM,UAER44F,UAAW,CACT54F,KAAM,WAGV2xB,SAAU,CAAC,SAAU,cAEvBknE,QAAS,CACP/tB,MAAO,CAAC,CACN9qE,KAAM,WACL,CACDA,KAAM,SACNsqE,WAAY,CACVwuB,UAAW,CACT94F,KAAM,eAKd+4F,WAAY,CACV/4F,KAAM,SACNuqE,sBAAsB,EACtBD,WAAY,CACVusB,gBAAiB,CACf72F,KAAM,SACN8gF,KAAM,CAAC,WAAY,cAErB8V,WAAY,CACV7sB,KAAQ,iBAEVivB,MAAO,CACLjvB,KAAQ,iBAGZc,MAAO,CAAC,CACNl5C,SAAU,CAAC,oBACV,CACDA,SAAU,CAAC,eACV,CACDA,SAAU,CAAC,YAGfsnE,SAAU,CACRj5F,KAAM,SACNuqE,sBAAsB,EACtBD,WAAY,CACV/V,OAAQ,CACNv0D,KAAM,UAERiQ,MAAO,CACLjQ,KAAM,UACN0/E,QAAS,EACTC,QAAS,UAGbhuD,SAAU,CAAC,WAEb4tB,IAAK,CACHv/C,KAAM,UAERk5F,WAAY,CACVl5F,KAAM,SACNuqE,sBAAsB,EACtBD,WAAY,CACV6uB,KAAM,CACJn5F,KAAM,WAER8oB,MAAO,CACL9oB,KAAM,SACN8gF,KAAM,CAAC,EAAG,MAIhBsY,UAAW,CACTp5F,KAAM,SACNuqE,sBAAsB,EACtBD,WAAY,CACV6uB,KAAM,CACJn5F,KAAM,WAERq5F,mBAAoB,CAClBr5F,KAAM,WAERs5F,aAAc,CACZt5F,KAAM,WAERu5F,gBAAiB,CACfv5F,KAAM,WAERw5F,OAAQ,CACNx5F,KAAM,WAERy5F,WAAY,CACVz5F,KAAM,WAER05F,eAAgB,CACd15F,KAAM,WAER25F,iBAAkB,CAChB35F,KAAM,WAER45F,QAAS,CACP55F,KAAM,cD/wChB,QERa65F,EAAoB,CAC/B3a,QAAW,0CACX/wC,MAAO,YACP5oC,YAAa,+BACbvF,KAAM,SACNuqE,sBAAsB,EACtBC,YAAa,CACXsvB,aAAc,CACZnzF,GAAI,gBACJ3G,KAAM,QACNoqE,iBAAiB,EACjBsW,SAAU,EACVx2B,SAAU,GACV7+B,MAAO,CAAC,CACNy/C,MAAO,CAAC,CACN9qE,KAAM,UACL,CACDA,KAAM,SACNuqE,sBAAsB,EACtBD,WAAY,CACV3jE,GAAI,CACF3G,KAAM,gBAMhB+5F,gBAAiB,CACfpzF,GAAI,mBACJmkE,MAAO,CAAC,CACNP,sBAAsB,EACtBvqE,KAAM,SACN8gF,KAAM,CAAC,OAAQ,OAAQ,OAAQ,QAAS,WAAY,QAAS,UAAW,SAAU,OAAQ,gBACzF,CACD9gF,KAAM,QACNuqE,sBAAsB,EACtBl/C,MAAO,CAAC,CACNq1D,SAAU,EACVx2B,SAAU,GACVlqD,KAAM,SACNuqE,sBAAsB,EACtBuW,KAAM,CAAC,OAAQ,OAAQ,OAAQ,QAAS,WAAY,QAAS,UAAW,SAAU,OAAQ,oBAIhGkZ,WAAY,CACVrzF,GAAI,cACJ3G,KAAM,UAKRi6F,aAAc,CACZtzF,GAAI,gBACJ3G,KAAM,SACN8gF,KAAM,CAAC,KAAM,KAAM,YAAa,MAAO,QAAS,YAElDoZ,SAAU,CACRvzF,GAAI,WACJmkE,MAAO,CAAC,CACN9qE,KAAM,SACN2Q,QAAS,qCACR,CACD3Q,KAAM,SACN8gF,KAAM,CAAC,YAAa,eAAgB,OAAQ,aAAc,QAAS,QAAS,SAAU,QAAS,iBAAkB,OAAQ,aAAc,QAAS,YAAa,YAAa,aAAc,YAAa,QAAS,iBAAkB,WAAY,UAAW,OAAQ,WAAY,WAAY,gBAAiB,WAAY,YAAa,WAAY,YAAa,cAAe,iBAAkB,aAAc,aAAc,UAAW,aAAc,eAAgB,gBAAiB,gBAAiB,gBAAiB,gBAAiB,aAAc,WAAY,cAAe,UAAW,UAAW,aAAc,YAAa,cAAe,cAAe,UAAW,UAAW,YAAa,aAAc,OAAQ,YAAa,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,UAAW,OAAQ,QAAS,cAAe,OAAQ,WAAY,UAAW,YAAa,SAAU,QAAS,QAAS,WAAY,gBAAiB,YAAa,eAAgB,YAAa,aAAc,YAAa,uBAAwB,YAAa,aAAc,YAAa,YAAa,cAAe,gBAAiB,eAAgB,iBAAkB,iBAAkB,iBAAkB,cAAe,OAAQ,YAAa,QAAS,UAAW,SAAU,mBAAoB,aAAc,eAAgB,eAAgB,iBAAkB,kBAAmB,oBAAqB,kBAAmB,kBAAmB,eAAgB,YAAa,YAAa,WAAY,cAAe,OAAQ,OAAQ,UAAW,QAAS,YAAa,SAAU,YAAa,SAAU,gBAAiB,YAAa,gBAAiB,gBAAiB,aAAc,YAAa,OAAQ,OAAQ,OAAQ,aAAc,SAAU,MAAO,YAAa,YAAa,cAAe,SAAU,aAAc,WAAY,WAAY,SAAU,SAAU,UAAW,YAAa,YAAa,YAAa,OAAQ,cAAe,YAAa,MAAO,OAAQ,UAAW,SAAU,YAAa,SAAU,QAAS,QAAS,aAAc,SAAU,cAAe,kBAGh3FqZ,cAAe,CACbxzF,GAAI,iBACJ3G,KAAM,SACN8gF,KAAM,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,SAAU,QAAS,YAEhEsZ,aAAc,CACZzzF,GAAI,gBACJ3G,KAAM,QACN2gF,aAAa,EACbt1D,MAAO,CAAC,CACNy/C,MAAO,CAAC,CACN9qE,KAAM,UACN0/E,QAAS,GACR,CACD1/E,KAAM,SACN2Q,QAAS,yCACTmvE,aAAc,+FAIpBua,SAAU,CACR1zF,GAAI,YACJmkE,MAAO,CAAC,CACN9qE,KAAM,SACN8gF,KAAM,CAAC,QACN,CACD9gF,KAAM,UACN0/E,QAAS,EACTC,QAAS,KACR,CACD3/E,KAAM,QACN2gF,aAAa,EACbt1D,MAAO,CAAC,CACNrrB,KAAM,UACN0/E,QAAS,EACTC,QAAS,SAIf2a,WAAY,CACV3zF,GAAI,cACJ3G,KAAM,QACN0gF,SAAU,EACVx2B,SAAU,GACV7+B,MAAO,CAAC,CACNrrB,KAAM,QACNoqE,iBAAiB,EACjBsW,SAAU,EACVr1D,MAAO,CAAC,CACNrrB,KAAM,UACN0/E,QAAS,EACTC,QAAS,KACR,CACD3/E,KAAM,UACN0/E,QAAS,EACTC,QAAS,KACR,CACD3/E,KAAM,UACN0/E,QAAS,EACTC,QAAS,KACR,CACD3/E,KAAM,UACN0/E,QAAS,EACTC,QAAS,SAIf4a,YAAa,CACX5zF,GAAI,eACJ6L,QAAS,CAAC,SAAU,UACpBs4D,MAAO,CACL,CACE9qE,KAAM,SACN8gF,KAAM,CACJ,MACA,SACA,SACA,OACA,SACA,QACA,UAGJ,CACE9gF,KAAM,QACN2gF,aAAa,EACbvW,iBAAiB,EACjBsW,SAAU,EACVx2B,SAAU,EACV13C,QAAS,CAAC,SAAU,UACpB6Y,MAAO,CACL,CACErrB,KAAM,SACN8gF,KAAM,CACJ,MACA,SACA,WAED,CACD9gF,KAAM,SACN8gF,KAAM,CACJ,OACA,SACA,gBCvKV11E,EAAI,IAAIovF,EAAAA,UAEdA,EAAAA,UAAUz5F,UAAUw+D,cAAcpxD,SAAW,SAAC+sC,GAAU,yBAAOA,CAAAA,EAE/Ds/C,EAAAA,UAAUz5F,UAAUw+D,cAAck7B,cAAgB,SAACv/C,GAAU,MAAiB,iBAAVA,GAAuBA,EAAMnyC,UAAYmyC,EAAMnyC,WAAW1K,QAAQ,SAAzE,GAKtD,IAAMq8F,EAAe,SAAC9qF,GAC3B,OAAO,SAAC7R,GAEN,OADAqN,EAAEyvE,UAAUgf,GACLzuF,EAAEm6D,SAASxnE,EAAQ6R,EAAAA,CAAAA,EAHvB,2PCJP,KAEY+qF,EAkBAC,EAUAC,EAQAC,EAQAC,EAUAC,EAQAC,GASAC,GASAC,GAYAC,GAQAC,GAeAC,GAKAC,GAKAC,GAQAC,GAQAC,GAKAC,GAkSAC,GAtbNl/B,GAAQm/B,IAAM,gBAEpB,SAAYlB,GACVjoF,EAAAA,KAAAA,OACAA,EAAAA,MAAAA,QACAA,EAAAA,OAAAA,SACAA,EAAAA,OAAAA,SACAA,EAAAA,IAAAA,MACAA,EAAAA,MAAAA,QACAA,EAAAA,OAAAA,QAPF,EAAYioF,IAAAA,EAAK,KAkBjB,SAAYC,GACVloF,EAAAA,KAAAA,OACAA,EAAAA,KAAAA,OACAA,EAAAA,MAAAA,QACAA,EAAAA,IAAAA,KAJF,EAAYkoF,IAAAA,EAAU,KAUtB,SAAYC,GACVnoF,EAAAA,OAAAA,SACAA,EAAAA,SAAAA,UAFF,EAAYmoF,IAAAA,EAAQ,KAQpB,SAAYC,GACVpoF,EAAAA,KAAAA,OACAA,EAAAA,KAAAA,MAFF,EAAYooF,IAAAA,EAAS,KAQrB,SAAYC,GACVroF,EAAAA,KAAAA,OACAA,EAAAA,IAAAA,MACAA,EAAAA,OAAAA,SACAA,EAAAA,KAAAA,MAJF,EAAYqoF,IAAAA,EAAS,KAUrB,SAAYC,GACVtoF,EAAAA,QAAAA,UACAA,EAAAA,MAAAA,OAFF,EAAYsoF,IAAAA,EAAS,KAQrB,SAAYC,GACVvoF,EAAAA,IAAAA,MACAA,EAAAA,KAAAA,OACAA,EAAAA,MAAAA,OAHF,EAAYuoF,KAAAA,GAAc,KAS1B,SAAYC,GACVxoF,EAAAA,MAAAA,QACAA,EAAAA,KAAAA,OACAA,EAAAA,KAAAA,MAHF,EAAYwoF,KAAAA,GAAa,KASzB,SAAYC,GACVzoF,EAAAA,IAAAA,MACAA,EAAAA,OAAAA,SACAA,EAAAA,OAAAA,SACAA,EAAAA,KAAAA,OACAA,EAAAA,OAAAA,SACAA,EAAAA,MAAAA,OANF,EAAYyoF,KAAAA,GAAsB,KAYlC,SAAYC,GACV1oF,EAAAA,KAAAA,OACAA,EAAAA,KAAAA,MAFF,EAAY0oF,KAAAA,GAAa,KAQzB,SAAYC,GACV3oF,EAAAA,KAAAA,OACAA,EAAAA,QAAAA,UACAA,EAAAA,KAAAA,OACAA,EAAAA,WAAAA,UACAA,EAAAA,IAAAA,MACAA,EAAAA,UAAAA,SACAA,EAAAA,eAAAA,cACAA,EAAAA,IAAAA,MACAA,EAAAA,IAAAA,MACAA,EAAAA,IAAAA,MACAA,EAAAA,IAAAA,MACAA,EAAAA,IAAAA,mBAZF,EAAY2oF,KAAAA,GAAU,KAetB,SAAYC,GACV5oF,EAAAA,QAAAA,UACAA,EAAAA,OAAAA,QAFF,EAAY4oF,KAAAA,GAAkB,KAK9B,SAAYC,GACV7oF,EAAAA,IAAAA,MACAA,EAAAA,OAAAA,QAFF,EAAY6oF,KAAAA,GAAiB,KAK7B,SAAYC,GACV9oF,EAAAA,SAAAA,WACAA,EAAAA,UAAAA,WAFF,EAAY8oF,KAAAA,GAAwB,KAQpC,SAAYC,GACV/oF,EAAAA,GAAAA,KACAA,EAAAA,MAAAA,QACAA,EAAAA,IAAAA,MACAA,EAAAA,UAAAA,YACAA,EAAAA,QAAAA,SALF,EAAY+oF,KAAAA,GAAS,KAQrB,SAAYC,GACVhpF,EAAAA,QAAAA,UACAA,EAAAA,OAAAA,QAFF,EAAYgpF,KAAAA,GAAW,KAKvB,SAAYC,GACVjpF,EAAAA,SAAAA,WACAA,EAAAA,UAAAA,YACAA,EAAAA,UAAAA,YACAA,EAAAA,IAAAA,MACAA,EAAAA,KAAAA,MALF,EAAYipF,KAAAA,GAAe,KAkS3B,SAAYC,GACVlpF,EAAAA,KAAAA,OACAA,EAAAA,MAAAA,QACAA,EAAAA,SAAAA,WACAA,EAAAA,aAAAA,gBACAA,EAAAA,QAAAA,WACAA,EAAAA,SAAAA,YACAA,EAAAA,QAAAA,WACAA,EAAAA,OAAAA,UACAA,EAAAA,UAAAA,WATF,EAAYkpF,KAAAA,GAAa,KA+CzB,ICjdYE,GAWAC,GAYAC,GAUAC,GAQAC,GAQAC,GAUAC,GAQAC,GASAC,GASAC,GAKAC,GAYAC,GAeAC,GAKAC,GAKAC,GAQAC,GAQAC,GAKAC,GD6TNC,GAAe,oCAkBrBC,GAAAA,WA4EE,WAAYl6F,EAA2B4xD,GA7D/B,KAAA1yC,WAAa,GA0Bb,KAAA+xC,KAAA,EAQA,KAAAkpC,cAAA,EA2/BA,KAAAC,cAAgB,SAACnzE,EAAsBozE,EAAiBC,GAC9D,YAAO,IADgBrzE,IAAAA,EAAAA,IAChBA,EAAMkH,QAAO,SAAC7qB,EAAKiO,GAExB,OADAjO,EAAIiO,EAAK8oF,IAAY9oF,EAAK+oF,GACnBh3F,CAAAA,GACN,CAAC,EAAD,EAn+BHtE,KAAK4yD,OAASA,EACd5yD,KAAK08B,UAAU17B,EAo+BnB,QA19BE2P,EAAAA,UAAAA,UAAAA,SAAU2qE,GAER,OADAt7E,KAAKiyD,IAAMqpB,EACJt7E,IAAAA,EAUT2Q,EAAAA,UAAAA,gBAAAA,SAAgB2qE,GAEd,OADAt7E,KAAKm7F,aAAe7f,EACbt7E,IAAAA,EAUT2Q,EAAAA,UAAAA,SAAAA,SAASmiD,GAEP,OADA9yD,KAAK8yD,MAAQA,EACN9yD,IAAAA,EAUT2Q,EAAAA,UAAAA,gBAAAA,SAAgB7G,GAEd,OADA9J,KAAKu7F,aAAezxF,EACb9J,IAAAA,EAGT2Q,EAAAA,UAAAA,UAAAA,SAAU3P,GACRhB,KAAKgB,OAASA,EAEd,IAAMw6F,EAAax7F,KAAKy7F,mBAIxB,GAFA9gC,GAAM,UAAU35D,EAAM,kBAAkBw6F,GAEpCA,IAAex7F,KAAK4yD,OACtB,MAAM,IAAIlH,EAAe,yDAG3B,IAAK8vC,GAAqC,iBAAhBx7F,KAAKgB,SAAwBi6F,GAAaxwF,KAAKzK,KAAKgB,UAAwD,IAA7ChB,KAAKgB,OAAO1E,QAAQ,oBAC3G,MAAM,IAAIovD,EAAe,sCAU7B/6C,EAAAA,UAAAA,oBAAAA,WACE,OAAO0/E,CAAAA,EAST1/E,EAAAA,UAAAA,mBAAAA,WAIE,OAHI3Q,KAAKm7F,cACPn7F,KAAK07F,cAAc17F,KAAKkgB,YAEnBlgB,KAAKkgB,UAAAA,EASdvP,EAAAA,UAAAA,SAAAA,WACE,IAAMgrF,EAAY,GAClBA,EAAU96F,KAAKb,KAAK47F,cAEhB57F,KAAKm7F,cACPn7F,KAAK07F,cAAc17F,KAAKkgB,YAGtBlgB,KAAK4yD,QACP+oC,EAAU96F,KAAKb,KAAK4yD,QAGtB,IAAIipC,EAAmB77F,KAAK87F,0BAExB96F,EAAShB,KAAKgB,OAyBlB,OAvBIhB,KAAKiyD,KACHjyD,KAAKkgB,WAAW7rB,OAAS,IAC3BwnG,EAAmB,OAAO93F,OAAAA,EAAAA,IAAAA,CAAIsE,KAAKI,UAAUzI,KAAKkgB,aAAAA,IAGhDtd,MAAMkD,QAAQ9E,KAChBA,EAAShB,KAAK+7F,cAAc/6F,IAG9BA,EAAS,SAAS+C,OAAAA,EAAAA,IAAAA,CAAI/C,GAAAA,IAGpBA,EADE4B,MAAMkD,QAAQ9E,GACPhB,KAAK+7F,cAAc/6F,GAEnBhB,KAAKg8F,YAAYh7F,GAI1B66F,EAAiBxnG,QACnBsnG,EAAU96F,KAAKg7F,GAGjBF,EAAU96F,KAAKG,GACR26F,EAAUnyF,KAAK,MAWxBmH,EAAAA,UAAAA,QAAAA,SAAQvP,EAAcpF,GAGpB,GAFA89F,IAAM,aAAa14F,EAAI,kBAAmBpF,GAE7B,UAAToF,GAAsC,kBAAXpF,EAAsB,CACnD,IAAKA,EACH,OAAOgE,KAEPhE,OAAAA,CAASqB,KAEgB,WAAlB4+F,EAAOjgG,IAAwB+H,OAAOsC,KAAKrK,GAAQ3H,SAC5D2H,OAAAA,GAIF,OADAgE,KAAKkgB,WAAWrf,KAAK,CAAEO,KAAIuP,EAAE3U,OAAMwM,IAC5BxI,IAAAA,EAQT2Q,EAAAA,UAAAA,SAAAA,WACE,OAAO3Q,KAAKkgB,UAAAA,EASdvP,EAAAA,UAAAA,MAAAA,WAEE,OADA3Q,KAAKkgB,WAAa,GACXlgB,IAAAA,EAcT2Q,EAAAA,UAAAA,UAAAA,WACE,OAAO3Q,KAAKk8F,QAAQ,gBAAc,EAUpCvrF,EAAAA,UAAAA,KAAAA,WACE,OAAO3Q,KAAKk8F,QAAQ,UAAQ,EAU9BvrF,EAAAA,UAAAA,KAAAA,WACE,OAAO3Q,KAAKk8F,QAAQ,UAAQ,EAU9BvrF,EAAAA,UAAAA,UAAAA,WACE,OAAO3Q,KAAKk8F,QAAQ,eAAa,EAUnCvrF,EAAAA,UAAAA,WAAAA,WACE,OAAO3Q,KAAKk8F,QAAQ,iBAAe,EAUrCvrF,EAAAA,UAAAA,KAAAA,SAAK3U,GACH,OAAOgE,KAAKk8F,QAAQ,OAAQlgG,EAAAA,EAU9B2U,EAAAA,UAAAA,UAAAA,SAAU3U,GACR,OAAOgE,KAAKk8F,QAAQ,aAAclgG,EAAAA,EAUpC2U,EAAAA,UAAAA,UAAAA,SAAU3U,GACR,OAAOgE,KAAKk8F,QAAQ,YAAalgG,EAAAA,EAUnC2U,EAAAA,UAAAA,QAAAA,SAAQ3U,GACN,OAAOgE,KAAKk8F,QAAQ,UAAWlgG,IAAAA,EAAU,EAU3C2U,EAAAA,UAAAA,OAAAA,WACE,OAAO3Q,KAAKk8F,QAAQ,YAAU,EAUhCvrF,EAAAA,UAAAA,WAAAA,WACE,OAAO3Q,KAAKk8F,QAAQ,gBAAc,EAUpCvrF,EAAAA,UAAAA,SAAAA,SAAS3U,GACP,OAAOgE,KAAKk8F,QAAQ,WAAYlgG,IAAAA,EAAU,EAU5C2U,EAAAA,UAAAA,SAAAA,WACE,OAAO3Q,KAAKk8F,QAAQ,cAAY,EAUlCvrF,EAAAA,UAAAA,KAAAA,WACE,OAAO3Q,KAAKk8F,QAAQ,UAAQ,EAU9BvrF,EAAAA,UAAAA,IAAAA,WACE,OAAO3Q,KAAKk8F,QAAQ,SAAO,EAW7BvrF,EAAAA,UAAAA,QAAAA,SAAQ3U,GACN,OAAOgE,KAAKk8F,QAAQ,UAAWlgG,EAAAA,EAWjC2U,EAAAA,UAAAA,MAAAA,SAAM3U,GACJ,OAAOgE,KAAKk8F,QAAQ,QAASlgG,EAAAA,EAW/B2U,EAAAA,UAAAA,MAAAA,SAAM3U,GACJ,OAAOgE,KAAKk8F,QAAQ,QAASlgG,EAAAA,EAW/B2U,EAAAA,UAAAA,OAAAA,SAAO3U,GACL,OAAOgE,KAAKk8F,QAAQ,SAAUlgG,EAAAA,EAWhC2U,EAAAA,UAAAA,KAAAA,SAAK3U,GACH,OAAOgE,KAAKk8F,QAAQ,OAAQlgG,EAAAA,EAW9B2U,EAAAA,UAAAA,OAAAA,SAAO3U,GACL,OAAOgE,KAAKk8F,QAAQ,SAAUlgG,EAAAA,EAWhC2U,EAAAA,UAAAA,YAAAA,SAAY3U,GACV,OAAOgE,KAAKk8F,QAAQ,eAAgBlgG,EAAAA,EAWtC2U,EAAAA,UAAAA,UAAAA,SAAU3U,GACR,OAAOgE,KAAKk8F,QAAQ,aAAclgG,EAAAA,EAWpC2U,EAAAA,UAAAA,cAAAA,SAAc3U,GACZ,OAAOgE,KAAKk8F,QAAQ,iBAAkBlgG,EAAAA,EAWxC2U,EAAAA,UAAAA,UAAAA,SAAU3U,GACR,OAAOgE,KAAKk8F,QAAQ,aAAclgG,EAAAA,EAWpC2U,EAAAA,UAAAA,eAAAA,SAAe3U,GACb,OAAOgE,KAAKk8F,QAAQ,kBAAmBlgG,EAAAA,EAWzC2U,EAAAA,UAAAA,SAAAA,SAAS3U,GACP,OAAOgE,KAAKk8F,QAAQ,WAAYlgG,EAAAA,EAWlC2U,EAAAA,UAAAA,SAAAA,SAAS3U,GACP,OAAOgE,KAAKk8F,QAAQ,WAAYlgG,EAAAA,EAWlC2U,EAAAA,UAAAA,UAAAA,SAAU3U,GACR,OAAOgE,KAAKk8F,QAAQ,aAAclgG,EAAAA,EAWpC2U,EAAAA,UAAAA,OAAAA,SAAO3U,GACL,OAAOgE,KAAKk8F,QAAQ,SAAUlgG,EAAAA,EAWhC2U,EAAAA,UAAAA,OAAAA,SAAO3U,GACL,OAAOgE,KAAKk8F,QAAQ,SAAUlgG,EAAAA,EAWhC2U,EAAAA,UAAAA,OAAAA,SAAO3U,GACL,OAAOgE,KAAKk8F,QAAQ,SAAUlgG,EAAAA,EAWhC2U,EAAAA,UAAAA,QAAAA,SAAQ3U,GACN,OAAOgE,KAAKk8F,QAAQ,UAAWlgG,EAAAA,EAWjC2U,EAAAA,UAAAA,KAAAA,SAAK3U,GACH,OAAOgE,KAAKk8F,QAAQ,OAAQlgG,EAAAA,EAW9B2U,EAAAA,UAAAA,WAAAA,SAAW3U,GACT,OAAOgE,KAAKk8F,QAAQ,aAAclgG,EAAAA,EAWpC2U,EAAAA,UAAAA,MAAAA,SAAM3U,GACJ,OAAOgE,KAAKk8F,QAAQ,QAASlgG,EAAAA,EAW/B2U,EAAAA,UAAAA,SAAAA,SAAS3U,GACP,OAAOgE,KAAKk8F,QAAQ,WAAYlgG,EAAAA,EAWlC2U,EAAAA,UAAAA,SAAAA,SAAS3U,GACP,OAAOgE,KAAKk8F,QAAQ,YAAalgG,EAAAA,EAWnC2U,EAAAA,UAAAA,SAAAA,SAAS3U,GACP,OAAOgE,KAAKk8F,QAAQ,WAAYlgG,EAAAA,EAWlC2U,EAAAA,UAAAA,gBAAAA,SAAgB3U,GACd,OAAOgE,KAAKk8F,QAAQ,mBAAoBlgG,EAAAA,EAW1C2U,EAAAA,UAAAA,YAAAA,SAAY3U,GACV,OAAOgE,KAAKk8F,QAAQ,eAAgBlgG,EAAAA,EAWtC2U,EAAAA,UAAAA,QAAAA,SAAQ3U,GACN,OAAOgE,KAAKk8F,QAAQ,UAAWlgG,EAAAA,EAWjC2U,EAAAA,UAAAA,QAAAA,SAAQ3U,GACN,OAAOgE,KAAKk8F,QAAQ,UAAWlgG,EAAAA,EAWjC2U,EAAAA,UAAAA,MAAAA,SAAM3U,GACJ,OAAOgE,KAAKk8F,QAAQ,QAASlgG,EAAAA,EAW/B2U,EAAAA,UAAAA,QAAAA,SAAQ3U,GACN,OAAOgE,KAAKk8F,QAAQ,UAAWlgG,EAAAA,EAWjC2U,EAAAA,UAAAA,SAAAA,SAAS3U,GACP,OAAOgE,KAAKk8F,QAAQ,WAAYlgG,EAAAA,EAWlC2U,EAAAA,UAAAA,OAAAA,SAAO3U,GACL,OAAOgE,KAAKk8F,QAAQ,SAAUlgG,EAAAA,EAWhC2U,EAAAA,UAAAA,aAAAA,SAAa3U,GACX,OAAOgE,KAAKk8F,QAAQ,gBAAiBlgG,EAAAA,EAWvC2U,EAAAA,UAAAA,cAAAA,SAAc3U,GACZ,OAAOgE,KAAKk8F,QAAQ,gBAAiBlgG,EAAAA,EAWvC2U,EAAAA,UAAAA,QAAAA,SAAQ3U,GACN,OAAOgE,KAAKk8F,QAAQ,UAAWlgG,EAAAA,EAWjC2U,EAAAA,UAAAA,WAAAA,SAAW3U,GACT,OAAOgE,KAAKk8F,QAAQ,aAAclgG,EAAAA,EAWpC2U,EAAAA,UAAAA,SAAAA,SAAS3U,GACP,OAAOgE,KAAKk8F,QAAQ,WAAYlgG,EAAAA,EAWlC2U,EAAAA,UAAAA,IAAAA,WACE,OAAO3Q,KAAKk8F,QAAQ,SAAO,EAS7BvrF,EAAAA,UAAAA,UAAAA,SAAU3U,GACR,OAAOgE,KAAKk8F,QAAQ,aAAclgG,EAAAA,EAUpC2U,EAAAA,UAAAA,SAAAA,SAAS3U,GACP,OAAOgE,KAAKk8F,QAAQ,YAAalgG,EAAAA,EAU3B2U,EAAAA,UAAAA,iBAAR,WACE,IAAK3Q,KAAKgB,OACR,MAAM,IAAI0qD,EAAe,kBAG3B,IAAIywC,EAASv5F,MAAMkD,QAAQ9F,KAAKgB,QAAUhB,KAAKgB,OAAS,CAAChB,KAAKgB,QAC9D,IAAK,IAAIX,KAAK87F,EAEZ,GAAKA,EAAO3tF,eAAenO,KAIO,IAA9B87F,EAAO97F,GAAG/D,QAAQ,SAAgD,IAA9B6/F,EAAO97F,GAAG/D,QAAQ,UAA4D,IAA3C6/F,EAAO97F,GAAG/D,QAAQ,qBAC3F,OAAO,EAIX,OAAO,GAWDqU,EAAAA,UAAAA,cAAR,SAAsByrF,GACpB,IAAMxlE,EAAMylE,EAAS56F,UAAUzB,KAAKo7F,cAAcgB,EAAiB,OAAQ,WAC3E,GAAIxlE,EAAImlC,OAAO1nE,OACb,MAAM,IAAIq3D,EAAe,0BAA2B90B,EAAImlC,OAAQ6zB,EAAmB0M,WAAAA,EAa/E3rF,EAAAA,UAAAA,WAAR,WACE,IAAI+hD,EAAO3uD,OAAOQ,OAAO,CAAC,EAAGsrF,GAQ7B,OANI7vF,KAAKu7F,eACP7oC,EAAKC,OAAS3yD,KAAKu7F,eAGrB7oC,EAAO3uD,OAAAA,EAAAA,YAAAA,CAAY2uD,EAAM1yD,KAAK8yD,QAElBH,MAAAA,EAUNhiD,EAAAA,UAAAA,wBAAR,sBACMuP,EAAa,GAMjB,OAJAlgB,KAAKkgB,WAAW3iB,SAAQ,YACtB2iB,EAAWrf,KAAK8P,EAAK4rF,eAAevvF,EAAG5L,KAAM4L,EAAGhR,QAAAA,IAG3CkkB,EAAW1W,KAAK,MAWjBmH,EAAAA,UAAAA,eAAR,SAAuBnT,EAAau5E,GAApC,WACMylB,EAA0B,GAC9B,gBAAWzlB,EACFv5E,EAIa,kBAAXu5E,EACJA,GAAkB,UAARv5E,EAIRA,EAHE,eAMXuG,OAAOsC,KAAK0wE,GAAQx5E,SAAQ,YACtBqF,MAAMkD,QAAQixE,EAAO12E,IACvBm8F,EAAc37F,KAAQR,EAAC,IAAIwQ,EAAKkrF,cAAchlB,EAAO12E,KAIvDm8F,EAAc37F,KAAQR,EAAC,IAAIwQ,EAAKmrF,YAAYjlB,EAAO12E,IAAAA,IAG3C7C,EAAG,IAAIg/F,EAAchzF,KAAK,OAW9BmH,EAAAA,UAAAA,YAAR,SAAoBhV,GAClB,MAAqB,iBAAVA,EACFA,EAGLA,EAAMW,QAAQ,MAAQ,GAAKX,EAAMW,QAAQ,MAAQ,EAC5C,IAAIX,EAAK,IAGXA,CAAAA,EAUDgV,EAAAA,UAAAA,cAAR,SAAsBtE,GAAtB,WASE,MAAO,IARUA,EAAI2G,KAAI,YACvB,OAAIpQ,MAAMkD,QAAQkH,GACTxE,EAAKuzF,cAAc/uF,GAGrBxE,EAAKwzF,YAAYhvF,EAAAA,IAGP,KA3hCN2D,EAAAA,UAAYgoF,EAAatI,GA2iC1C1/E,CAljCA,CAAAuqF,GE/fauB,GAAoB,CAC/Btf,QAAW,0CACX/wC,MAAO,kBACP5oC,YAAa,0BACbvF,KAAM,SACNuqE,sBAAsB,EACtBD,WAAY,CACVrzD,SAAU,CACR6zD,MAAO,CAAC,CACN9qE,KAAM,UACL,CACDs/D,OAAQ,cAGZ3xD,SAAU,CACRo8D,KAAQ,gBAEVn+D,KAAM,CACJ5L,KAAM,UAERw0C,UAAW,CACTx0C,KAAM,UAERm4F,OAAQ,CACNpuB,KAAQ,cAEVmuB,OAAQ,CACNl4F,KAAM,SACN8gF,KAAM,CAAC,SAAU,WACjBtuE,QAAS,WAEX4lF,aAAc,CACZp4F,KAAM,WAERq4F,UAAW,CACTtuB,KAAQ,gBAEV00B,kBAAmB,CACjBz+F,KAAM,WAERoiE,KAAM,CACJpiE,KAAM,SACNuqE,qBAAsB,CACpBvqE,KAAM,WAGV0+F,UAAW,CACT5zB,MAAO,CAAC,CACN9qE,KAAM,WACL,CACDA,KAAM,SACNuqE,sBAAsB,EACtBD,WAAY,CACVzU,QAAS,CACP71D,KAAM,QACNqrB,MAAO,CAAC,CACNrrB,KAAM,YAGV41D,YAAa,CACX51D,KAAM,gBC5DL2+F,GAAsB,CACjCzf,QAAW,0CACX/wC,MAAO,oBACP5oC,YAAa,4BACbvF,KAAM,SACNuqE,sBAAsB,EACtBD,WAAY,CACV3jE,GAAI,CACF3G,KAAM,UAER4+F,IAAK,CACH5+F,KAAM,YCXC6+F,GAAqB,CAChC3f,QAAS,0CACT/wC,MAAO,mBACP5oC,YAAa,2BACbvF,KAAM,SACNuqE,sBAAsB,EACtBD,WAAY,CACVw0B,SAAU,CACR9+F,KAAM,UACN0/E,QAAS,SAEX5O,YAAa,CACX9wE,KAAM,UACN0/E,QAAS,EACTC,QAAS,IAEXof,iBAAkB,CAChB/+F,KAAM,UACN0/E,QAAS,GAEXsf,MAAO,CACLh/F,KAAM,UACN0/E,QAAS,EACTC,QAAS,IAEXsf,YAAa,CACXj/F,KAAM,WAERk/F,aAAc,CACZl/F,KAAM,WAER/B,QAAS,CACP+B,KAAM,UACN0/E,QAAS,EACTC,QAAS,MAEXwf,YAAa,CACXr0B,MAAO,CACL,CACE9qE,KAAM,WAER,CACEA,KAAM,SACN8gF,KAAM,CAAC,eAIbse,qBAAsB,CACpBp/F,KAAM,WAER2iF,WAAY,CACVrjB,OAAQ,YAEV+/B,QAAS,CACP//B,OAAQ,YAEVggC,sBAAuB,CACrBt/F,KAAM,WAERoiE,KAAM,CACJpiE,KAAM,SACNkqD,SAAU,GACVqgB,qBAAsB,CACpBvqE,KAAM,SACNu/F,UAAW,QC9DNC,GAAqB,CAChCtgB,QAAS,0CACT/wC,MAAO,mBACP5oC,YAAa,2BACbvF,KAAM,SACNuqE,sBAAsB,EAEtBD,WAAY,CACVm1B,iBAAkB,CAChBz/F,KAAM,WAER0X,OAAQ,CACN6yD,sBAAsB,EACtBO,MAAO,CACL,CACE9qE,KAAM,UAER,CACEA,KAAM,QACN0gF,SAAU,EACVr1D,MAAO,CACL,CACErrB,KAAM,cAMhB0/F,SAAU,CACRpgC,OAAQ,YAEVqgC,YAAa,CACX3/F,KAAM,QACNqrB,MAAO,CACL,CACErrB,KAAM,CAAC,SAAU,UACjBuqE,sBAAsB,EACtBuW,KAAM,CACJ,oBACA,MACA,cACA,WACA,YACA,cACA,WACA,UACA,SACA,QACA,QACA,MACA,SACA,QACA,eACA,WACA,sBACA,aACA,eACA,eACA,WAKRtsC,UAAW,CACT8qB,OAAQ,iBAEVsgC,iBAAkB,CAChB90B,MAAO,CACL,CACE9qE,KAAM,WAER,CACEA,KAAM,SACNuqE,sBAAsB,EACtBD,WAAY,CACVu1B,gBAAiB,CACf7/F,KAAM,WAER8/F,cAAe,CACb9/F,KAAM,eAMhB+/F,YAAa,CACX//F,KAAM,SACN8gF,KAAM,CAAC,SAAU,UAAW,aAE9BhQ,YAAa,CACX9wE,KAAM,UACN0/E,QAAS,EACTC,QAAS,IAEXqgB,aAAc,CACZhgG,KAAM,UAERigG,sBAAuB,CACrBjgG,KAAM,UAERkgG,iBAAkB,CAChBlgG,KAAM,UAERmgG,iBAAkB,CAChBngG,KAAM,UAERy+F,kBAAmB,CACjBz+F,KAAM,WAERogG,mBAAoB,CAClBpgG,KAAM,WAERqgG,kBAAmB,CACjBrgG,KAAM,WAERsgG,mBAAoB,CAClBtgG,KAAM,WAERugG,eAAgB,CACdvgG,KAAM,WAERwgG,uBAAwB,CACtBxgG,KAAM,WAERygG,SAAU,CACRzgG,KAAM,QACN0gF,SAAU,EACVx2B,SAAU,EACV7+B,MAAO,CACL,CACErrB,KAAM,UACN0/E,QAAS,KAIfghB,SAAU,CACR1gG,KAAM,QACN0gF,SAAU,EACVx2B,SAAU,EACV7+B,MAAO,CACL,CACErrB,KAAM,UACN0/E,QAAS,KAIfihB,SAAU,CACR3gG,KAAM,QACN0gF,SAAU,EACVx2B,SAAU,EACV7+B,MAAO,CACL,CACErrB,KAAM,UACN0/E,QAAS,KAIfkhB,iBAAkB,CAChB5gG,KAAM,UACNwS,SAAS,GAEXquF,KAAM,CACJ7gG,KAAM,SACN8gF,KAAM,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,OAE3HggB,SAAU,CACR9gG,KAAM,UACN0/E,QAAS,EACTC,QAAS,KAEXjtD,SAAU,CACR1yB,KAAM,UACN0/E,QAAS,EACTC,QAAS,KAEXohB,QAAS,CACP/gG,KAAM,UACN0/E,QAAS,GAEXshB,UAAW,CACThhG,KAAM,QACN0gF,SAAU,EACVx2B,SAAU,EACV7+B,MAAO,CACL,CACErrB,KAAM,UACN0/E,QAAS,EACTC,QAAS,OAIfshB,OAAQ,CACNjhG,KAAM,UAERkhG,kCAAmC,CACjClhG,KAAM,WAERmhG,mBAAoB,CAClBnhG,KAAM,WAERohG,gBAAiB,CACfphG,KAAM,UAERqhG,SAAU,CACR/hC,OAAQ,YAEVgiC,QAAS,CACPhiC,OAAQ,YAEViiC,OAAQ,CACNjiC,OAAQ,YAEVkiC,eAAgB,CACdliC,OAAQ,YAEVmiC,mBAAoB,CAClBniC,OAAQ,YAEVoiC,oBAAqB,CACnBpiC,OAAQ,YAEVqiC,qBAAsB,CACpBriC,OAAQ,YAEVsiC,mBAAoB,CAClBtiC,OAAQ,YAEVuiC,qBAAsB,CACpBviC,OAAQ,YAEVwiC,gBAAiB,CACfxiC,OAAQ,YAEVyiC,aAAc,CACZziC,OAAQ,YAEV0iC,cAAe,CACb1iC,OAAQ,YAEV2iC,QAAS,CACP13B,sBAAsB,EACtBvqE,KAAM,SACNsqE,WAAY,CACVrzD,SAAU,CACRjX,KAAM,UAER2N,SAAU,CACRo8D,KAAM,gBAERv1B,UAAW,CACTx0C,KAAM,UAER4L,KAAM,CACJ5L,KAAM,UAERm4F,OAAQ,CACNn4F,KAAM,UAERk4F,OAAQ,CACNl4F,KAAM,SACN8gF,KAAM,CAAC,SAAU,YAEnBuX,UAAW,CACTtuB,KAAM,kBAIZm4B,SAAU,CACRliG,KAAM,SACN8gF,KAAM,CAAC,OAAQ,SAEjBqd,gBAAiB,CACfn+F,KAAM,SACNuqE,sBAAsB,EACtBD,WAAY,CACVuqB,OAAQ,CACN70F,KAAM,WAERyzF,OAAQ,CACNzzF,KAAM,WAERi3F,MAAO,CACLj3F,KAAM,WAERuzF,KAAM,CACJzoB,MAAO,CACL,CACE9qE,KAAM,WAER,CACEA,KAAM,SACNuqE,sBAAsB,EACtBD,WAAY,CACV2sB,MAAO,CACLj3F,KAAM,WAERm4B,YAAa,CACXn4B,KAAM,gBAQpBmiG,WAAY,CACVniG,KAAM,SACNyqE,kBAAmB,CACjB,KAAM,CAAEzqE,KAAM,YAGlBoiG,UAAW,CACTpiG,KAAM,QACN0gF,SAAU,GAEZyH,QAAS,CACPnoF,KAAM,UAERqiG,iBAAkB,CAChBriG,KAAM,WAERsiG,SAAU,CACRtiG,KAAM,SACNsqE,WAAY,CACV83B,UAAW,CACTpiG,KAAM,QACN0gF,SAAU,GAEZyhB,WAAY,CACVniG,KAAM,UAERuiG,aAAc,CACZviG,KAAM,WAERwiG,QAAS,CACPxiG,KAAM,WAERyiG,SAAU,CACRziG,KAAM,WAER0iG,aAAc,CACZ1iG,KAAM,WAER2iG,YAAa,CACXrjC,OAAQ,YAEVqjB,WAAY,CACVrjB,OAAQ,YAEVsjC,YAAa,CACXtjC,OAAQ,YAEVujC,WAAY,CACVvjC,OAAQ,YAEVwjC,OAAQ,CACNxjC,OAAQ,YAEVyjC,UAAW,CACTzjC,OAAQ,YAEV0jC,QAAS,CACP1jC,OAAQ,YAEV2jC,QAAS,CACP3jC,OAAQ,cAId4jC,cAAe,CACbljG,KAAM,SACN0/E,QAAS,GAEXyjB,eAAgB,CACdnjG,KAAM,SACNyqE,kBAAmB,CACjB,KAAM,CACJF,sBAAsB,EACtBvqE,KAAM,SACN2xB,SAAU,CAAC,MAAO,UAClB24C,WAAY,CACVjuD,IAAK,CACHrc,KAAM,UAERwc,OAAQ,CACNxc,KAAM,cAMhBojG,aAAc,CACZpjG,KAAM,SACNuqE,sBAAsB,EACtBD,WAAYxkE,OAAFzD,EAAAA,EAAEyD,CAAFA,OAAAA,EAAAA,EAAAA,CAAAA,CAAAA,EAEL+4F,GAAmBv0B,YAAU,CAChClI,KAAM,CACJpiE,KAAM,SACNuqE,qBAAsB,CACpBM,MAAO,CACL,CACE7qE,KAAM,UAER,CACEs/D,OAAQ,kBAOpB+jC,qBAAsB,CACpBrjG,KAAM,WAERsjG,UAAW,CACTtjG,KAAM,SACNuqE,sBAAsB,EACtBD,WAAY,CACVi5B,uBAAwB,CACtBvjG,KAAM,WAERwjG,qBAAsB,CACpBxjG,KAAM,eCzaHyjG,GAAuB,CAClCvkB,QAAW,0CACX/wC,MAAO,qBACP5oC,YAAa,6BACbvF,KAAM,SACNuqE,sBAAsB,EACtBD,WAAY,CACV70D,KAAM,CACJzV,KAAM,WAER0jG,SAAU,CACR1jG,KAAM,WAERiX,SAAU,CACRjX,KAAM,WAERuc,MAAO,CACLvc,KAAM,WAER6U,SAAU,CACR7U,KAAM,WAERyc,OAAQ,CACNzc,KAAM,WAER2jG,SAAU,CACR3jG,KAAM,WAER4jG,UAAW,CACT5jG,KAAM,WAER6jG,MAAO,CACL7jG,KAAM,WAER8jG,UAAW,CACT9jG,KAAM,WAER+zD,IAAK,CACH/zD,KAAM,WAER+jG,KAAM,CACJ/jG,KAAM,WAERgkG,OAAQ,CACNhkG,KAAM,WAERikG,OAAQ,CACNjkG,KAAM,WAERkkG,OAAQ,CACNlkG,KAAM,WAERmkG,OAAQ,CACNnkG,KAAM,WAER2N,SAAU,CACR3N,KAAM,WAER4L,KAAM,CACJ5L,KAAM,WAERw0C,UAAW,CACTx0C,KAAM,WAER2zF,KAAM,CACJ3zF,KAAM,aCjECokG,GAAuB,CAClCllB,QAAW,0CACX/wC,MAAO,qBACP5oC,YAAa,6BACbvF,KAAM,SACNuqE,sBAAsB,EACtBD,WAAY,CACVz1D,SAAU,CACR7U,KAAM,WAERooF,KAAM,CACJpoF,KAAM,WAERqkG,GAAI,CACFrkG,KAAM,WAERiQ,MAAO,CACLjQ,KAAM,WAERkX,UAAW,CACTlX,KAAM,YPydZ,iBQveMskG,GAAQzI,IAAM,uBAQpB0I,GAAAA,WASE,WAAYj9F,GACVvF,KAAKuF,QAAUA,CA8DnB,QAnDSoL,EAAAA,UAAAA,QAAP,SAAepX,GAAf,WAGE,OAFAA,EAAOQ,QAAUR,EAAOQ,SAAW,CAAC,EACpCwoG,GAAM,yBAA0BhpG,GACzByG,KAAKuF,QAAQ/K,QAAQjB,GAAQic,OAAM,SAAC9U,GAEzC,OADA6hG,GAAM,yBAA0B7hG,EAAQA,EAAOnF,UACxCiN,EAAKy0F,MAAMv8F,EAAAA,GAAAA,EAYdiQ,EAAAA,UAAAA,MAAR,SAAc/U,GAAd,WACQrC,EAASqC,EAAIrC,OAEnB,IAAKwK,OAAAA,GAAAA,EAAAA,CAAYnI,GAEf,OADA2mG,GAAM,mDACC/oG,QAAQE,OAAOkC,GAGxB,IAAKrC,EAAO0jG,MAEV,OADAsF,GAAM,2CACC/oG,QAAQE,OAAOkC,GAGxB,IAAM6mG,EAAclpG,EAAO0jG,MACvByF,EAAWnpG,EAAO0mC,SAAW1mC,EAAO0mC,QAAQ0iE,WAAappG,EAAO0mC,QAAQ0iE,WAAa,EAEzF,GAAIF,EAAYxF,OAASwF,EAAYxF,OAASyF,EAE5C,OADAH,GAAM,6CAA8CG,GAC7ClpG,QAAQE,OAAOkC,GAGxB,IAAMgnG,EAAan8F,KAAKwyB,IAAIxyB,KAAKuyB,IAAIypE,EAAYtF,aAAoD,IAAtC12F,KAAAA,IAAAA,EAAYy2F,YAAewF,IAAkB,GAS5G,OAPAnpG,EAAO0mC,QAAOl8B,OAAAA,EAAAA,EAAAA,CAAAA,OAAAA,EAAAA,EAAAA,CAAAA,CAAAA,EACTxK,EAAO0mC,SAAO,CACjB0iE,WAAYD,EAAW,IAGzBH,GAAM,+BAA+BhpG,EAAO4B,IAAG,WAAWunG,EAAQ,OAAOD,EAAYxF,MAAK,aAAa2F,GAEhG,IAAIppG,SAAoB,YAC7B+C,YAAW,WAAM,SAAQiM,EAAKhO,QAAbqW,GAAA,GAA+B+xF,EAAAA,GAAAA,EAGtDjyF,CAxEA,CAAA6xF,GCdWK,GAAiBhyF,EAAQ,IAAkBiyF,WCUtDC,GAAAA,WAmCE,WAAYxpG,GAEVyG,KAAK2B,SAAWpI,EAChByG,KAAKgjG,WAAa,IAAIR,GAAS,IAAIK,GA0JvC,QA/IiBlyF,EAAAA,YAAf,WAKE,OAJKsyF,EAAUlkG,WACbkkG,EAAUlkG,SAAW,IAAIkkG,GAGpBA,EAAUlkG,QAAAA,EAWZ4R,EAAAA,UAAAA,SAAP,SAAgBpX,GAKd,OAJKA,EAAOuC,SACVvC,EAAOuC,OAASonG,GAAAA,EAAaC,KAGxBnjG,KAAKgjG,WAAWxoG,QAAQuJ,OAAOQ,OAAO,CAAC,EAAGvE,KAAK2B,SAAUpI,GAAAA,EAYpDoX,EAAAA,SAAd,SAAuBxV,EAAa5B,GAClC,OAAO0pG,EAAUG,cAAcxvF,SAAS7P,OAAOQ,OAAO,CAAC,EAAGhL,GAAU,CAAC,EAAG,CAAE4B,IAAGqN,IAAA,EAYjEmI,EAAAA,IAAd,SAAkBxV,EAAa5B,GAC7B,OAAO0pG,EAAUG,cAAcxvF,SAAS7P,OAAOQ,OAAO,CAAC,EAAGhL,GAAU,CAAC,EAAG,CAAEuC,OAAQonG,GAAAA,EAAaC,IAAKhoG,IAAGqN,IAAA,EAY3FmI,EAAAA,KAAd,SAAmBxV,EAAa5B,GAC9B,OAAO0pG,EAAUG,cAAcxvF,SAAS7P,OAAOQ,OAAO,CAAC,EAAGhL,GAAU,CAAC,EAAG,CAAEuC,OAAQonG,GAAAA,EAAaG,KAAMloG,IAAGqN,IAAA,EAY5FmI,EAAAA,QAAd,SAAsBxV,EAAa5B,GACjC,OAAO0pG,EAAUG,cAAcxvF,SAAS7P,OAAOQ,OAAO,CAAC,EAAGhL,GAAU,CAAC,EAAG,CAAEuC,OAAQonG,GAAAA,EAAaI,QAASnoG,IAAGqN,IAAA,EAY/FmI,EAAAA,MAAd,SAAoBxV,EAAa5B,GAC/B,OAAO0pG,EAAUG,cAAcxvF,SAAS7P,OAAOQ,OAAO,CAAC,EAAGhL,GAAU,CAAC,EAAG,CAAEuC,OAAQonG,GAAAA,EAAaK,MAAOpoG,IAAGqN,IAAA,EAY7FmI,EAAAA,OAAd,SAAqBxV,EAAa5B,GAChC,OAAO0pG,EAAUG,cAAcxvF,SAAS7P,OAAOQ,OAAO,CAAC,EAAGhL,GAAU,CAAC,EAAG,CAAEuC,OAAQonG,GAAAA,EAAaM,OAAQroG,IAAGqN,IAAA,EAa9FmI,EAAAA,KAAd,SAAmBxV,EAAatB,EAAYN,GAC1C,OAAO0pG,EAAUG,cAAcxvF,SAAS7P,OAAOQ,OAAO,CAAC,EAAGhL,GAAU,CAAC,EAAG,CAAEuC,OAAQonG,GAAAA,EAAariB,KAAM1lF,IAAGqN,EAAE3O,KAAIgX,IAAA,EAalGF,EAAAA,IAAd,SAAkBxV,EAAatB,EAAYN,GACzC,OAAO0pG,EAAUG,cAAcxvF,SAAS7P,OAAOQ,OAAO,CAAC,EAAGhL,GAAU,CAAC,EAAG,CAAEuC,OAAQonG,GAAAA,EAAapiB,IAAK3lF,IAAGqN,EAAE3O,KAAIgX,IAAA,EAajGF,EAAAA,KAAd,SAAmBxV,EAAatB,EAAYN,GAC1C,OAAO0pG,EAAUG,cAAcxvF,SAAS7P,OAAOQ,OAAO,CAAC,EAAGhL,GAAU,CAAC,EAAG,CAAEuC,OAAQonG,GAAAA,EAAaO,KAAMtoG,IAAGqN,EAAE3O,KAAIgX,IAAA,EAElHF,CAhMA,CAAAoyF,GVmeA,QWpeAW,GAAAA,SAAAA,GAAA,SAAAl7F,kDAcA,QAdmCzE,OAAAA,EAAAA,EAAAA,CAAAA,EAAAA,GAQ1ByE,EAAAA,UAAAA,OAAP,SAAc9H,GACZV,KAAKy4D,KAAK,SAAU/3D,GAEpBV,KAAKg5D,oBAAAA,EAGTxwD,CAdA,CAAAk7F,CAAmC9yF,EAAAA,cCQtB+yF,GAAS,SAACpxC,EAAkBC,EAAiBoxC,EAAuBjN,GAC/E,IAAKnkC,GAA4B,iBAAXA,EACpB,MAAM,IAAI9G,EAAe,mDAG3B,KAAM6G,EAAQqkC,QAAUrkC,EAAQskC,WAAgBF,GAAcA,EAASC,QAAUD,EAASE,WACxF,MAAM,IAAInrC,EAAe,yDAG3B,IACMxwD,EADaq3D,EAAQG,KAAKq9B,WACH,IAAIv9B,EAC3B9tD,EAAe,CACnBlH,IAAK+0D,EAAQK,OACbgkC,OAASD,GAAYA,EAASC,QAAWrkC,EAAQqkC,OACjDC,UAAYF,GAAYA,EAASE,WAActkC,EAAQskC,WAOzD,OAJI+M,IACFl/F,EAAQm/F,cAAAA,GAGHd,GAAUrqB,OAAOx9E,EAAS,CAC/B0/D,kBAAkB,EAClB5+D,OAAQ+H,OAAAA,EAAAA,YAAAA,CAAYW,IAAAA,wOXjCxB,EAqBA,SAAYq1F,GACVppF,EAAAA,KAAAA,OACAA,EAAAA,MAAAA,QACAA,EAAAA,OAAAA,SACAA,EAAAA,OAAAA,SACAA,EAAAA,IAAAA,KALF,EAAYopF,KAAAA,GAAa,KAWzB,SAAYC,GACVrpF,EAAAA,KAAAA,OACAA,EAAAA,MAAAA,QACAA,EAAAA,OAAAA,SACAA,EAAAA,OAAAA,SACAA,EAAAA,IAAAA,MACAA,EAAAA,MAAAA,OANF,EAAYqpF,KAAAA,GAAkB,KAY9B,SAAYC,GACVtpF,EAAAA,KAAAA,OACAA,EAAAA,KAAAA,OACAA,EAAAA,MAAAA,QACAA,EAAAA,IAAAA,KAJF,EAAYspF,KAAAA,GAAW,KAUvB,SAAYC,GACVvpF,EAAAA,OAAAA,SACAA,EAAAA,SAAAA,UAFF,EAAYupF,KAAAA,GAAS,KAQrB,SAAYC,GACVxpF,EAAAA,KAAAA,OACAA,EAAAA,KAAAA,MAFF,EAAYwpF,KAAAA,GAAU,KAQtB,SAAYC,GACVzpF,EAAAA,KAAAA,OACAA,EAAAA,IAAAA,MACAA,EAAAA,OAAAA,SACAA,EAAAA,KAAAA,MAJF,EAAYypF,KAAAA,GAAU,KAUtB,SAAYC,GACV1pF,EAAAA,QAAAA,UACAA,EAAAA,MAAAA,OAFF,EAAY0pF,KAAAA,GAAU,KAQtB,SAAYC,GACV3pF,EAAAA,IAAAA,MACAA,EAAAA,KAAAA,OACAA,EAAAA,MAAAA,OAHF,EAAY2pF,KAAAA,GAAe,KAS3B,SAAYC,GACV5pF,EAAAA,MAAAA,QACAA,EAAAA,KAAAA,OACAA,EAAAA,KAAAA,MAHF,EAAY4pF,KAAAA,GAAc,KAS1B,SAAYC,GACV7pF,EAAAA,IAAAA,MACAA,EAAAA,KAAAA,MAFF,EAAY6pF,KAAAA,GAAc,KAK1B,SAAYC,GACV9pF,EAAAA,IAAAA,MACAA,EAAAA,OAAAA,SACAA,EAAAA,OAAAA,SACAA,EAAAA,KAAAA,OACAA,EAAAA,OAAAA,SACAA,EAAAA,MAAAA,OANF,EAAY8pF,KAAAA,GAAuB,KAYnC,SAAYC,GACR/pF,EAAAA,KAAAA,OACAA,EAAAA,QAAAA,UACAA,EAAAA,KAAAA,OACAA,EAAAA,WAAAA,UACAA,EAAAA,IAAAA,MACAA,EAAAA,UAAAA,SACAA,EAAAA,eAAAA,cACAA,EAAAA,IAAAA,MACAA,EAAAA,IAAAA,MACAA,EAAAA,IAAAA,MACAA,EAAAA,IAAAA,MACAA,EAAAA,IAAAA,mBAZJ,EAAY+pF,KAAAA,GAAW,KAevB,SAAYC,GACVhqF,EAAAA,QAAAA,UACAA,EAAAA,OAAAA,QAFF,EAAYgqF,KAAAA,GAAmB,KAK/B,SAAYC,GACVjqF,EAAAA,IAAAA,MACAA,EAAAA,OAAAA,QAFF,EAAYiqF,KAAAA,GAAkB,KAK9B,SAAYC,GACVlqF,EAAAA,SAAAA,WACAA,EAAAA,UAAAA,WAFF,EAAYkqF,KAAAA,GAAyB,KAQrC,SAAYC,GACVnqF,EAAAA,GAAAA,KACAA,EAAAA,MAAAA,QACAA,EAAAA,IAAAA,MACAA,EAAAA,UAAAA,YACAA,EAAAA,QAAAA,SALF,EAAYmqF,KAAAA,GAAe,KAQ3B,SAAYC,GACVpqF,EAAAA,QAAAA,UACAA,EAAAA,OAAAA,QAFF,EAAYoqF,KAAAA,GAAY,KAKxB,SAAYC,GACVrqF,EAAAA,SAAAA,WACAA,EAAAA,UAAAA,YACAA,EAAAA,UAAAA,YACAA,EAAAA,IAAAA,MACAA,EAAAA,KAAAA,MALF,EAAYqqF,KAAAA,GAAgB,KAgSrB,IAAM8I,GAAY,SAACvxC,EAAkBp3D,EAAwBuJ,EAAgCutD,QAAAA,IAAhCvtD,IAAAA,EAAAA,CAAAA,QAAA,IAAgCutD,IAAAA,GAAAA,GAClGvtD,EA1ckB,SAAdq/F,EAAeC,GAKnB,IAJA,IAAIC,EAAuC,CAAC,EAEtC59F,EAAOtC,OAAOsC,KAAK29F,GAEhB3jG,EAAI,EAAGA,EAAIgG,EAAKhS,OAAQgM,IAAK,CACpC,IAAI6jG,EAAS79F,EAAKhG,GAAGjM,MAAM,aAAaoV,KAAK,KAAK/L,cAEjB,WAA7B0mG,GAAOH,EAAS39F,EAAKhG,MAAqBuC,MAAMkD,QAAQk+F,EAAS39F,EAAKhG,KAGxE4jG,EAAWC,GAAUF,EAAS39F,EAAKhG,IAFnC4jG,EAAWC,GAAUH,EAAYC,EAAS39F,EAAKhG,IAMnD,QAAO4jG,CA2bGF,CA1cQ,CA0cIr/F,GAElB6tD,EAAQqkC,QAAUrkC,EAAQskC,YAC5BnyF,EAAQiyF,SAAW,CACjBC,OAAQrkC,EAAQqkC,OAChBC,UAAWtkC,EAAQskC,YAIvB,IAAMuN,EAAW,IAAIlJ,GAAS//F,EAAKo3D,EAAQK,QAY3C,OAXAwxC,EAASC,SAAS9xC,EAAQO,OAC1BsxC,EAASE,UAAUryC,GAEnBluD,OAAOsC,KAAK3B,GAASnH,SAAQ,SAACC,IACA,kBAAjBkH,EAAQlH,IAAuBkH,EAAQlH,IAAgB,UAARA,IAI1D4mG,EAASlI,QAAQ1+F,EAAKkH,EAAQlH,GAAAA,IAGzB4mG,EAASp9F,UAAAA,wOY1blB,KCzCYu9F,GDyCZ,cAgBE,WAA6BC,EAAsCC,GAAtC,KAAAD,MAAA,EAAsC,KAAAC,iBAAA,EACjEzkG,KAAKwkG,MAAMpjG,KAAO2C,OAAAA,EAAAA,aAAAA,CAAa/D,KAAKwkG,MAAMpjG,KAAMpB,KAAKykG,iBA4LzD,QAnLE1gG,OAAAA,eAAW4M,EAAAA,UAAA,OAAI,KAAf,WACE,OAAO3Q,KAAKwkG,MAAMpjG,IAAAA,MAmBpB,SAAgBnJ,GACd+H,KAAKwkG,MAAMpjG,KAAO2C,OAAAA,EAAAA,aAAAA,CAAa9L,EAAK+H,KAAKykG,iBAAAA,kCAV3C1gG,OAAAA,eAAW4M,EAAAA,UAAA,WAAQ,KAAnB,WACE,OAAO3Q,KAAKoB,IAAAA,kCAkBd2C,OAAAA,eAAW4M,EAAAA,UAAA,aAAU,KAArB,SAAsB1Y,GACpB,OAAQ,GAAOA,IACb,IAAK,SACH+H,KAAKoB,KAAOnJ,EACZ,MACF,IAAK,WAEH,GAAuB,iBADPA,EAAI+H,MAElB,MAAM,IAAInM,MAAM,iEAAqEoE,IAGvF+H,KAAKoB,KAAOnJ,EAAI+H,MAAAA,kCAYtB+D,OAAAA,eAAW4M,EAAAA,UAAA,OAAI,KAAf,WAEE,OAAO3Q,KAAKwkG,MAAMvmG,MAAQ,4DAU5B8F,OAAAA,eAAW4M,EAAAA,UAAA,WAAQ,KAAnB,WACE,OAAO3Q,KAAK/B,IAAAA,kCASd8F,OAAAA,eAAW4M,EAAAA,UAAA,OAAI,KAAf,WACE,OAAO3Q,KAAKwkG,MAAM9wF,IAAAA,kCAUb/C,EAAAA,UAAAA,cAAP,SAAsB+C,GACpB,OAAOjN,KAAKshD,KAAK/nD,KAAKwkG,MAAM9wF,KAAOA,EAAAA,EAW9B/C,EAAAA,UAAAA,gBAAP,SAAwB+zF,EAAiBhxF,GACvC,IAAMixF,EAAYjxF,EAAOgxF,EAEzB,GAAIC,EAAY3kG,KAAKwkG,MAAM9wF,KACzB,MAAM,IAAI7f,MAAM,qDAGlB,IAAM+wG,EAAUn+F,KAAKuyB,IAAI2rE,EAAYjxF,EAAM1T,KAAKwkG,MAAM9wF,MAEtD,MAAO,CACLmxF,WAAYH,EACZC,UAAS9zF,EACT+zF,QAAOvkG,EACPqT,KAAMkxF,EAAUD,EAAAA,EAWPh0F,EAAAA,UAAAA,kBAAb,SAA+BoxB,EAAwB+iE,mBAAAA,IAAAA,GAAAA,GAAAA,OAAAA,EAAAA,EAAAA,CAAAA,UAAAA,OAAAA,GAAAA,6EACzC,SAAM9kG,KAAKwkG,MAAMrsG,MAAM4pC,EAAK4iE,UAAW5iE,EAAK6iE,iBAExD,OAFIzsG,EAAQkI,EAAAA,OAEZ,GAAO7G,QAAQC,QAAOsK,OAAAA,EAAAA,EAAAA,CAAAA,OAAAA,EAAAA,EAAAA,CAAAA,CAAAA,EACjBg+B,GAAI,CACPv6B,OAAQrP,EACR65D,IAAK8yC,EAAa/gG,OAAAA,EAAAA,IAAAA,CAAI5L,QAAAA,MAASkF,GAAAA,GAAAA,EAatBsT,EAAAA,UAAAA,mBAAb,SAAgCoxB,EAAwBhvC,EAAgB0+B,EAAmBqzE,mBAAAA,IAAAA,GAAAA,GAAAA,OAAAA,EAAAA,EAAAA,CAAAA,UAAAA,OAAAA,GAAAA,iFAI7E,OAHNH,EAAY5iE,EAAK4iE,UAAY5xG,EAC7B6xG,EAAUn+F,KAAKuyB,IAAI2rE,EAAYlzE,EAAWsQ,EAAK6iE,SAEzC,GAAM5kG,KAAKwkG,MAAMrsG,MAAMwsG,EAAWC,WAE9C,OAFIzsG,EAAQm4D,EAAAA,OAEZ,GAAO92D,QAAQC,QAAOsK,OAAAA,EAAAA,EAAAA,CAAAA,OAAAA,EAAAA,EAAAA,CAAAA,CAAAA,EACjBg+B,GAAI,CACPv6B,OAAQrP,EACR65D,IAAK8yC,EAAa/gG,OAAAA,EAAAA,IAAAA,CAAI5L,QAAAA,EACtBub,KAAMvb,EAAM+0E,WACZy3B,UAASj0F,EACTk0F,QAAOnnF,EACP1qB,OAAMyV,MAAA,QAQHmI,EAAAA,UAAAA,QAAP,WACM3Q,KAAKwkG,MAAMthE,SACbljC,KAAKwkG,MAAMthE,SAAAA,EAIRvyB,EAAAA,UAAAA,OAAP,WACE,MAAO,CACLvP,KAAMpB,KAAKoB,KACX3F,OAAQuE,KAAKvE,OACbwC,KAAM+B,KAAK/B,KACXyV,KAAM1T,KAAK0T,KACXvY,IAAK6E,KAAK7E,IACVq3D,OAAQxyD,KAAKwyD,OACbuyC,WAAY/kG,KAAK+kG,WAAAA,EAGvBp0F,CA7MA,wBEvCIq0F,GAAe,+CAmHRnjE,GAAU,SAAUsX,EAAO8rD,GAClC,IAAI/vF,EACA1D,EAKJ,GApFc,SAAU2nC,GAAS,OAAOA,GAASA,EAAY3nC,MAAK2nC,EAAY/3C,IAgF1E8jG,CAhFU,CAgFE/rD,KACZjkC,EAAWikC,EAAM/3C,KACjB+3C,EAAQA,EAAM3nC,MA5GF,SAAU2nC,GAAS,OAAOA,aAAiBniB,IA8GvDmuE,CA9GY,CA8GEhsD,GACd3nC,EAAO2nC,EACPjkC,EAAWikC,EAAM/3C,UAEhB,GA5GQ,SAAU+3C,GACvB,GAAqB,iBAAVA,EACP,OAAO,EAEPA,EAAM78C,QAAQ,WAAa,IAC3B68C,EAAQA,EAAM/uC,MAAM46F,IAAc93F,OAEtC,IACI,OAAOlS,KAAKggC,KAAKme,MAAYA,CAItB,CAFX,MAAOv9C,GAEH,OAAO,EAgGFwpG,CA5GI,CA4GOjsD,GAChB3nC,EA/EQ,SAAU6zF,EAASC,QAAAA,IAC3BA,IAAwBA,EAAY,KACxC,IAAIz9F,EAAc,GAClB,GAAIw9F,EAAQ/oG,QAAQ,WAAa,EAAG,CAChC,IAAI8+B,EAAUiqE,EAAQj7F,MAAM46F,IAC5BK,EAAUjqE,EAAQluB,MAClBrF,EAAcuzB,EAAQ,EAI1B,KAFA,IAAImqE,EAAiBvqE,KAAKqqE,GACtBG,EAAa,GACRzyG,EAAS,EAAGA,EAASwyG,EAAelxG,OAAQtB,GAAUuyG,EAAW,CAGtE,IAFA,IAAIntG,EAAQotG,EAAeptG,MAAMpF,EAAQA,EAASuyG,GAC9CG,EAAc,IAAI7iG,MAAMzK,EAAM9D,QACzBgM,EAAI,EAAGA,EAAIlI,EAAM9D,OAAQgM,GAAK,EACnColG,EAAYplG,GAAKlI,EAAMmX,WAAWjP,GAEtCmlG,EAAW3kG,KAAK,IAAI6N,WAAW+2F,GAEnC,QAAO,IAAIh5F,KAAK+4F,EAAY,CAAEvnG,KAAM4J,GA6DzB69F,CA/EC,CA+ESvsD,OAEhB,KA5HQ,SAAUA,GAAS,MAA4B,kBAArBA,EAAMnyC,UA4HpC2+F,CA5HI,CA4HOxsD,GAIhB,OAAO3/C,QAAQE,OAAO,IAAIgyD,EAAe,gCAHzCl6C,EAAO2nC,CAKX,QA3DW,SAAU3nC,GAAQ,OAAOzN,OAAAA,EAAAA,EAAAA,MAAAA,OAAU,OAAQ,GAAgB,WACtE,OAAOA,OAAAA,EAAAA,EAAAA,CAAY/D,MAAM,SAAU4lG,GAE/B,OAAK5uE,MAAStlB,YAAejF,KAGtB,CAAC,EAAcjT,QAAQC,QAAQ,CAC9BtB,MAAO,SAAU8kB,EAAOwsB,GACpB,OAeL,SAAUxsB,EAAOwsB,EAAKj4B,GACjC,OAAO,IAAIhY,SAAQ,SAAUC,EAASC,GAClC,IAAIgX,EAAI,IAAIgB,WACRioB,EAAOnoB,EAAKrZ,MAAM8kB,EAAOwsB,GAC7B/4B,EAAE+W,OAAS,WAAc,OAAOhuB,EAAQiX,EAAE1C,OAAAA,EAC1C0C,EAAEhU,QAAUhD,EACZgX,EAAEm1F,kBAAkBlsE,EAAAA,GAAAA,CArBDmsE,CAAS7oF,EAAOwsB,EAAKj4B,EAAAA,EAEhC0xB,QAAS,WACL1xB,EAAO,SAPR,CAAC,EAAchY,QAAQE,OAAO,IAAIgyD,EAAe,gEAuDzDq6C,CA3DI,CA2DKv0F,GAAMrR,MAAK,SAAUy2B,GAAO,OAAO7yB,OAAAA,EAAAA,EAAAA,MAAAA,OAAU,OAAQ,GAAgB,WACjF,IAAIuvD,EAAMsyC,EACV,OAAO7hG,OAAAA,EAAAA,EAAAA,CAAY/D,MAAM,SAAUgmG,GAC/B,OAAQA,EAAGjwF,OACP,KAAK,EAED,OADAu9C,EAAO9hD,EAAKvT,KACLuT,EAAKvT,MAA6B,IAArBuT,EAAKvT,KAAK5J,QAA8B,eAAdmd,EAAKvT,KAA+B,CAAC,EAAa,IAChG2nG,EAAKK,EAAAA,YACE,CAAC,EAAarvE,EAAIz+B,MAAM,EAAGogE,GAAAA,EAAS4K,gBAC/C,KAAK,EACD7P,EAAOsyC,EAAG/iG,WAAAA,EAAc,CAACmjG,EAAG30C,OAAQn8C,IACpC8wF,EAAGjwF,MAAQ,EACf,KAAK,EAAG,MAAO,CAAC,EAAc,IAAImwF,GAAO,CACjC9kG,KAAM8T,EACNxB,KAAMlC,EAAKkC,KACXzV,KAAMq1D,EACNn7D,MAAOy+B,EAAIz+B,MACX+qC,QAAStM,EAAIsM,SACd+hE,IAAAA,GAAAA,GAAAA,GAAAA,EFlHvB,6BGjBMkB,GAAQrM,IAAM,sBAQpBsM,GAAAA,SAAAA,GAsBE,WAA+BC,EAAqDt3B,QAAAA,IAAAA,IAAAA,EAAAA,GAApF,MACEp+D,EAAAA,KAAAA,OAAO,YADsBtQ,EAAAA,aAAAA,EAAqDA,EAAAA,YAAAA,EApB1EA,EAAAA,SA1BqB,QA6BrBA,EAAAA,qBAA+B0D,OAAAA,EAAAA,SAAAA,GApBE,QAHP,QA2B1B1D,EAAAA,QAAkB,IAClBA,EAAAA,WAAU,UAMVA,EAAAA,cAAAA,EAEAA,EAAAA,gBAAAA,EAEAA,EAAAA,WAAyB,KAEJ,CA0JjC,QAhL+C0D,OAAAA,EAAAA,EAAAA,CAAAA,EAAAA,GA0BtCyE,EAAAA,UAAAA,YAAP,SAAmBmuF,GACjBwP,GAAM,kBAAmBxP,GACzB32F,KAAK22F,SAAWA,CAAAA,EAGXnuF,EAAAA,UAAAA,UAAP,SAAiBoqD,GACfuzC,GAAM,iBAAiBvzC,GACvB5yD,KAAK4yD,OAASA,CAAAA,EAGTpqD,EAAAA,UAAAA,WAAP,SAAkBtM,GAChBiqG,GAAM,0BAA0BjqG,GAChC8D,KAAK9D,QAAUA,CAAAA,EAGVsM,EAAAA,UAAAA,eAAP,SAAsB89F,GACpBH,GAAM,uBAAuBG,GAC7BtmG,KAAKyiG,YAAc6D,CAAAA,EAGd99F,EAAAA,UAAAA,OAAP,SAAcrN,GACZgrG,GAAM,qBAAqBhrG,GAC3B6E,KAAK7E,IAAMA,CAAAA,EAGNqN,EAAAA,UAAAA,cAAP,SAAqB63D,GACnB8lC,GAAM,iBAAkB9lC,GACxBrgE,KAAK+kG,WAAa1kC,CAAAA,EAOb73D,EAAAA,UAAAA,kBAAP,SAAyB6O,GACvBrX,KAAKumG,eAAiBlvF,CAAAA,EAWjB7O,EAAAA,UAAAA,cAAP,SAAqB4nD,EAAkBo2C,QAAAA,IAAAA,IAAAA,GAAAA,IAAAA,IAGjCxmG,KAAKymG,cAKTzmG,KAAKymG,aAAeD,EAEpBL,GAAM,sBAAsB/1C,GAE5BpwD,KAAK0mG,WAAat2C,GARhB+1C,GAAM,yBAAyB/1C,EAAI,4DAmBhC5nD,EAAAA,UAAAA,YAAP,SAAmBkL,GACjB,GAAmB,YAAf1T,KAAK0mG,WAAT,CAOA,GAFAP,GAAM,oBAAoBzyF,GAEtBA,EA5HqB,QA6HvB,MAAM,IAAIg4C,EAAe,4BAG3B1rD,KAAK+8F,SAAWrpF,CAAAA,MAVdyyF,GAAM,qEAgBH39F,EAAAA,UAAAA,YAAP,WACE,OAAOxI,KAAK+8F,QAAAA,EASPv0F,EAAAA,UAAAA,wBAAP,SAA+BkL,GAE7B,GADAyyF,GAAM,gCAAgCzyF,GAClCA,EAzIsB,MA0IxB,MAAM,IAAIg4C,EAAe,2CAE3B1rD,KAAKq9F,qBAAuB3pF,CAAAA,EAMvBlL,EAAAA,UAAAA,wBAAP,WACE,OAAOxI,KAAKq9F,oBAAAA,EAUP70F,EAAAA,UAAAA,OAAP,WACE,IAAKxI,KAAK7E,IACR,MAAM,IAAIuwD,EAAe,sBAG3B,OAAO1rD,KAAK7E,GAAAA,EA0BhBqN,CAhLA,CAAA49F,CAA+Cx1F,GCxBzC+1F,GAAQ7M,IAAM,gBAqBpB8M,GAAAA,SAAAA,GAME,WAAYP,EAAkCt3B,GAA9C,MACEp+D,EAAAA,KAAAA,KAAM01F,EAAct3B,IAAY,YAH1B1uE,EAAAA,SAA6C,CAAC,EAKpDA,EAAKwmG,WAAa,IAAIxgC,GAAAA,EAAO,CAC3B2I,WAAW,EACXD,YAAa1uE,EAAK0uE,cAGpB1uE,EAAKnG,YAAc,IAAIwpG,GAVjB,CA6zBV,QAj0BgC3/F,OAAAA,EAAAA,EAAAA,CAAAA,EAAAA,GAsBvByE,EAAAA,UAAAA,MAAP,WACExI,KAAK6mG,WAAWrhF,OAAAA,EAQXhd,EAAAA,UAAAA,OAAP,WAEMxI,KAAK6mG,WAAWC,UAClB9mG,KAAK6mG,WAAW5pF,OAAAA,EASbzU,EAAAA,UAAAA,MAAP,SAAa+zD,GACXv8D,KAAK6mG,WAAWrhF,QAChBxlB,KAAK6mG,WAAW3mE,QAEhBlgC,KAAK9F,YAAY8D,OAAOu+D,GAAO,oBASpB/zD,EAAAA,UAAAA,QAAb,+GA2BE,OA1BMu+F,EAAQhjG,OAAOsC,KAAKrG,KAAKgnG,UAAUh0F,KACvC,YACE,WAAIxZ,SAAQ,SAAMC,GAAO,mHAErB,gCAAMuG,KAAKinG,aAAariG,WACxB,OADA8L,EAAAA,OACA,GAAM1Q,KAAKknG,aAAatiG,WACxB,OADA8L,EAAAA,OACA,GAAM1Q,KAAKmnG,gBAAgBviG,WAC3B,OADA8L,EAAAA,OACA,GAAM1Q,KAAKonG,gBAAgBxiG,kBAA3B8L,EAAAA,OAAAA,CAAAA,EAAAA,4BAGA1Q,KAAKy4D,KAAK,QAASjwD,GACnBm+F,GAAM,IAAI/hG,EAAE,2CAA4C4D,EAAE/H,QAAS+H,EAAE2nF,SAArE,oBAGI3+E,EAAOxR,KAAKqnG,eAAeziG,GAAI4M,MAGhC0xB,iBAGEljC,KAAKgnG,SAASpiG,GAErBnL,EAAQ+X,GAAR/X,CAAAA,gBAIN,GAAOD,QAAQiG,IAAIsnG,GAAAA,GAAAA,GAAAA,EAUdv+F,EAAAA,UAAAA,QAAP,SAAegJ,GACbm1F,GAAM,2BAA4Bn1F,GAElC,IAAM5M,EAAQb,OAAAA,EAAAA,SAAAA,CAAS,IAAG,IAAIA,OAAAA,EAAAA,WAAAA,GAU9B,OARAyN,EAAK/V,OAAM,cAGXuE,KAAKgnG,SAASpiG,GAAM,CAClB4M,KAAIb,EACJvH,MAAO,IAGFxE,CAAAA,EAUD4D,EAAAA,UAAAA,aAAR,SAAqB5D,GACX,gDAAA0iG,aACR,OAAwC,IAAjCA,EAAahrG,QAAQ,QAAgBgrG,EAAe,WAAWA,CAAAA,EAUhE9+F,EAAAA,UAAAA,gBAAR,SAAwB5D,GACtB,IAAIF,EAAUX,OAAHzD,EAAAA,EAAGyD,CAAH,CACT6H,SDzIgC,MC0I7B5L,KAAKqmG,cAGV,GAAIrmG,KAAKqmG,aAAa3J,kBAAmB,CACvC,IAAMhyF,EAAU1K,KAAKqnG,eAAeziG,GAEhCF,EAAQmF,MAAoC,MAA5BnF,EAAQmF,KAAKqC,QAAQ,KACvCxH,EAAQmF,KAAUnF,EAAQmF,KAAI,KAGhCnF,EAAQmF,KAAO,IAAGnF,EAAQmF,KAAOnF,EAAQmF,KAAO,KAAMa,EAAQ8G,KAAKpQ,YAE5DsD,EAAQg4F,iBAGjB,QAAOh4F,CAAAA,EAUD8D,EAAAA,UAAAA,iBAAR,SAAyB5D,EAAYuvD,EAA0BozC,QAAAA,IAAAA,IAAAA,GAAAA,GAC7D,IAAM78F,EAAU1K,KAAKqnG,eAAeziG,GAEhCu3C,EAASp4C,OAAHzD,EAAAA,EAAGyD,CAAHA,OAAAA,EAAAA,EAAAA,CAAAA,CAAAA,EACL/D,KAAK22F,UAAQ,CAChB/jC,OAAQ5yD,KAAK4yD,OACb6I,IAAK/wD,EAAQ+wD,IACb6rC,aAAc58F,EAAQ48F,aACtBE,UAAW98F,EAAQ88F,UACnBpR,OAAQ1rF,EAAQ0rF,SAOlB,OAJmB,gBAAfp2F,KAAK0mG,YAAyD,aAAf1mG,KAAK0mG,YAAsCa,KAC5FprD,EAAMsrD,KAAA,GAGR,2BACK1jG,OAAAA,EAAAA,aAAAA,CAAao4C,EAAQgY,IAAe,CACvC5xC,MAAOviB,KAAK0nG,gBAAgB9iG,IAAAA,EAWxB4D,EAAAA,UAAAA,kBAAR,SAA0B5D,GACxB,IAAI7K,EAAU,CAAC,EACTyX,EAAOxR,KAAKqnG,eAAeziG,GAMjC,OAJI4M,EAAKm2F,kBACP5tG,EAAQ,2BAA6ByX,EAAKm2F,iBAGrC5tG,CAAAA,EAGDyO,EAAAA,UAAAA,eAAR,SAAuB5D,GACrB,OAAO5E,KAAKgnG,SAASpiG,EAAAA,EASf4D,EAAAA,UAAAA,aAAR,SAAqB5D,GACnB,IAAM4M,EAAOxR,KAAKqnG,eAAeziG,GAAI4M,KAGjC,CAAC,cAAD,YAA8ClV,QAAQ0D,KAAK0mG,aAAe,IAC5E1mG,KAAK+8F,SDlO2B,SCyOlC,IAJA,IAAM6K,EAAap2F,EAAKq2F,cAAc7nG,KAAK+8F,UAErC3zF,EAAQ,GAEL/I,EAAI,EAAGA,EAAIunG,EAAYvnG,IAC9B+I,EAAM/I,GAAE0D,OAAAA,EAAAA,EAAAA,CAAAA,OAAAA,EAAAA,EAAAA,CAAAA,CAAAA,EACHyN,EAAKs2F,gBAAgBznG,EAAGL,KAAK+8F,WAAS,CACzChqG,OAAQ,IAOZ,OAFAiN,KAAKgnG,SAASpiG,GAAIwE,MAAQA,EAEnB5P,QAAQC,SAAAA,EAUT+O,EAAAA,UAAAA,aAAR,SAAqB5D,GAArB,WACQ8F,EAAU1K,KAAKqnG,eAAeziG,GAEpC,OAA0B,IAAtB8F,EAAQ8G,KAAKkC,MACf1T,KAAK+nG,iBAAiBnjG,EAAE,UACjBpL,QAAQE,OAAO,IAAIgyD,EAAe,iBAAiBhhD,EAAQ8G,KAAKpQ,KAAI,aAAc,CAAC,EAAGwuF,EAAmB0M,eAGlHqK,GAAM,IAAI/hG,EAAE,wBACLm+F,GAAU3wF,KACZpS,KAAKgoG,SAAQ,mBAAkBjkG,OAAAA,EAAAA,EAAAA,CAAAA,CAEhCmR,SAAUxK,EAAQ8G,KAAKpQ,KACvBugG,SAAUj3F,EAAQ8G,KAAKvT,KACvByV,KAAMhJ,EAAQ8G,KAAKkC,MAChB1T,KAAKioG,iBAAiBrjG,EAAI,CAAC,SAAU,SAAU,YAAa,YAEjE,CACE1I,QAAS8D,KAAK9D,QACdhC,YAAa8F,KAAK9F,YAClBH,QAASiG,KAAKkoG,kBAAkBtjG,GAChCq4F,MAAOj9F,KAAKyiG,cAGbtiG,MAAK,SAAC0Q,OAAEhX,EAAAA,EAAAA,KACP,OAAKA,GAASA,EAAKytG,cAAiBztG,EAAKu8F,QAAWv8F,EAAK2tG,WAAc3tG,EAAK4hE,KAM5EkrC,GAAM,IAAI/hG,EAAE,gCAAiC/K,GAE7C2O,EAAK2/F,cAAcvjG,EAAI/K,GAGnB,CAAC,cAAD,YAA8CyC,QAAQkM,EAAKk+F,aAAe,KAAO7sG,EAAKuuG,aAAoC,0BAArBvuG,EAAKuuG,eAC5GzB,GAAM,IAAI/hG,EAAE,yGACZ4D,EAAK6/F,cAAa,eAGbxuG,IAfL8sG,GAAM,IAAI/hG,EAAE,qCAAsC/K,GAClD2O,EAAKu/F,iBAAiBnjG,EAAE,UACjBpL,QAAQE,OAAO,IAAIgyD,EAAe,2BAA4B7xD,EAAM+1F,EAAmBjP,UAAAA,IAejGnrE,OAAM,YAIL,OAHAmxF,GAAM,IAAI/hG,EAAE,2BAA4BhJ,GACxC4M,EAAKu/F,iBAAiBnjG,EAAE,UAEjB4D,EAAK8/F,aAAa,2CAA4C1sG,EAAAA,IAAAA,EAW7D4M,EAAAA,UAAAA,gBAAd,SAA8B5D,2GAO5B,OANM8F,EAAU1K,KAAKqnG,eAAeziG,GAC9BwE,EAAQsB,EAAQtB,MAChBm/F,EAAgBn/F,EAAM/U,OAE5BsyG,GAAM,IAAI/hG,EAAE,uDAAwD2jG,GAEpE,GAAO,IAAI/uG,SAAQ,SAAOC,EAASC,GAAM,wHAkB/B,OAjBR0P,EAAM7L,SAAQ,YACZ,SAAKspG,WACFpoF,KAAI,WAAM,SAAK+pF,UAAU5jG,EAAIglB,EAAnBi7E,WAAA,IACVrvF,OAAM,SAAAhN,GAML,OALAiV,EAAKsqF,iBAAiBnjG,EAAE,UACxB+hG,GAAM,IAAI/hG,EAAE,6BAA8B4D,EAAE/H,SAE5Cgd,EAAKopF,WAAWrhF,QAChB/H,EAAKopF,WAAW3mE,QACTxmC,EAAO8O,EAAAA,GAAAA,IAIpBm+F,GAAM,IAAI/hG,EAAE,kEAAmEA,GAC/E5E,KAAKy4D,KAAK,SACVz4D,KAAK6mG,WAAW5pF,QAEhBvM,EAAAA,EAAQ,GAAM1Q,KAAK6mG,WAAW4B,wBAA9B/3F,EAAAA,WAAAA,EAAAA,CAAQxB,EAAAA,SAAR,sBAaI1G,EAAAA,UAAAA,UAAR,SAAkB5D,EAAYigG,GAM5B,OALA8B,GAAM,IAAI/hG,EAAE,2BAA2BigG,EAAU,cAAc7kG,KAAK0mG,YAEtD1mG,KAAKqnG,eAAeziG,GAE1B4M,KAAK/V,OAAM,YACI,gBAAfuE,KAAK0mG,WAAwC1mG,KAAK0oG,cAAgB1oG,KAAK2oG,mBAAmB9lG,MAAM7C,KAAM,CAAC4E,EAAIigG,GAAAA,EAY7Gr8F,EAAAA,UAAAA,kBAAR,SAA0B5D,EAAYglB,EAAgB72B,GAAtD,WACQoI,EAAM6E,KAAK4oG,aAAahkG,GAE9B+hG,GAAM,IAAI/hG,EAAE,uBAAuBglB,EAAKi7E,WAAU,SAAS1pG,EAAG,UAAUyuB,EAAKooC,IAAG,WAAWpoC,EAAKlW,MAEhG,IAAM7Z,EAAOkK,OAAHzD,EAAAA,EAAGyD,CAAHA,OAAAA,EAAAA,EAAAA,CAAAA,CAAAA,EACL/D,KAAKioG,iBAAiBrjG,EAAI,CAAC,SAAU,MAAO,SAAU,YAAa,SAAU,YAAa,SAAO,CAEpGglB,KAAMA,EAAKi7E,WAAa,EACxBnxF,KAAMkW,EAAKlW,KACX3gB,OAAM8d,IAOR,OAJI7Q,KAAKumG,gBAAkB38E,EAAKooC,MAC9Bn4D,EAAKm4D,IAAMpoC,EAAKooC,KAGX+wC,GAAU3wF,KAAQjX,EAAG,oBAAqBtB,EAAM,CACrDE,QAASiG,KAAKkoG,kBAAkBtjG,GAChC1K,YAAa8F,KAAK9F,YAClBgC,QAAS8D,KAAK9D,QACd+gG,MAAOj9F,KAAKyiG,cACXjtF,OAAM,SAAAhN,GAGP,OAFAnI,EAAK0nG,iBAAiBnjG,EAAE,UAEjBvE,EAAKioG,aAAa,2BAA4B1sG,EAAAA,GAAAA,EAY3C4M,EAAAA,UAAAA,cAAd,SAA4B5D,EAAYigG,wIAG3B,OAFPn6F,EAAU1K,KAAKqnG,eAAeziG,GAC5BikG,EAAen+F,EAAQtB,MAAMy7F,GACxB,GAAMn6F,EAAQ8G,KAAKs3F,kBAAkBD,EAAc7oG,KAAKumG,wBAEzC,OAFtB38E,EAAOlN,EAAAA,OAEe,GAAM1c,KAAK+oG,kBAAkBnkG,EAAIglB,WAE3D,OAFMnM,EAAoBf,EAAAA,OAAlB7iB,EAAI4jB,EAAAA,KAAE1jB,EAAO0jB,EAAAA,QACrBkpF,GAAM,IAAI/hG,EAAE,mBAAmBigG,EAAU,qCAAsChrG,EAAME,GACrF,GAAOgpG,GAAUiG,IAAInvG,EAAKsB,IAAKyuB,EAAKpiB,OAAQ,CAC1CtN,YAAa8F,KAAK9F,YAClBgC,QAAS8D,KAAK9D,QACdnC,QAASF,EAAKE,QACd6gE,kBAAkB,EAGlBgmB,WAAY,SAACqoB,GAAsB,SAAKC,iBAAiBtkG,EAAIigG,EAAYoE,EAAtC9rE,OAAA,EACnC8/D,MAAOj9F,KAAKyiG,aAA8B,aAAfziG,KAAK0mG,WAAqC1mG,KAAKyiG,iBAAAA,IAE3EtiG,MAAK,YACJ,IAAIy2B,EAAI78B,QAAQygE,KAKd,MADA5wC,EAAO,KACD,IAAI8hC,EAAe,+CAAgD,8CAA+CkkC,EAAmBjP,SAU7I,OAdE1/E,EAAKkoG,YAAYvkG,EAAIigG,EAAYjuE,EAAI78B,QAAQygE,MAO/CmsC,GAAM,IAAI/hG,EAAE,oCAAoCigG,EAAU,WAAYjuE,EAAI78B,SAE1EkH,EAAKioG,iBAAiBtkG,EAAIigG,EAAYj7E,EAAKlW,MAG3CkW,EAAO,KAEAgN,CAAAA,IAERphB,OAAM,YACL,IAAM4zF,EAAOxtG,GAAOA,EAAIL,SAAWK,EAAIL,SAAW,KAGlD,GAAI6tG,GAAwB,MAAhBA,EAAK3tG,QACX2tG,EAAKvvG,MAAQuvG,EAAKvvG,KAAKhG,OAASu1G,EAAKvvG,KAAKhG,MAAMyP,KAAM,CACxD,IAAIA,EAAO8lG,EAAKvvG,KAAKhG,MAAMyP,KAM3B,MACO,0BALHV,MAAMkD,QAAQxC,KAChBA,EAAOA,EAAK4J,OAGN5J,GAEGrC,EAAKunG,UAAU5jG,EAAIigG,GAEnBrrG,QAAQE,OAAO,IAAIgyD,EAAe,qBAAsB09C,EAAKvvG,KAAKhG,MAAO+7F,EAAmBjP,SAQ3G,QAFA/2D,EAAO,KAEHhuB,aAAe8vD,EACVlyD,QAAQE,OAAOkC,IAGxBqF,EAAKioG,iBAAiBtkG,EAAIigG,EAAY,GAGlB,aAAf5jG,EAAKylG,aAAuCzlG,EAAKwlG,cAAgC,gBAAfxlG,EAAKylG,YAC1EC,GAAM,IAAI/hG,EAAE,oEACZ3D,EAAKonG,cAAa,eAEXpnG,EAAKunG,UAAU5jG,EAAIigG,IAGrB5jG,EAAKqnG,aAAa,0BAA2B1sG,GAAAA,KAAAA,GAAAA,GAAAA,EAa1C4M,EAAAA,UAAAA,kBAAd,SAAgC5D,EAAYigG,qGAC1C,MAAO,CAAP,EAAO7kG,KAAKqpG,gBAAgBzkG,EAAIigG,GAAY1kG,MAAK,WAAM,SAAKmpG,WAAW1kG,EAAhB,cAa3C4D,EAAAA,UAAAA,gBAAd,SAA8B5D,EAAYigG,EAAoBpzE,mBAAAA,IAAAA,EAAoBzxB,KAAKq9F,sBAAAA,OAAAA,EAAAA,EAAAA,CAAAA,UAAAA,OAAAA,GAAAA,0FAKzE,OAJN3yF,EAAU1K,KAAKqnG,eAAeziG,GAChCglB,EAAOlf,EAAQtB,MAAMy7F,GACzBpzE,EAAYhrB,KAAKuyB,IAAIvH,EAAW7H,EAAKlW,KAAOkW,EAAK72B,QAErC,GAAM2X,EAAQ8G,KAAK+3F,mBAAmB3/E,EAAMA,EAAK72B,OAAQ0+B,EAAWzxB,KAAKumG,wBAQpE,OARb1nE,EAAQ59B,EAAAA,OAEZ0lG,GACE,IAAI/hG,EAAE,cAAcigG,EAAU,eAAej7E,EAAKlW,KAAI,gBAAgBkW,EAAK+6E,UAAS,aAAa/6E,EAAK72B,OAAM,gBAAgB8rC,EAAMnrB,KAAI,oBAC7HkW,EAAKlW,KAAOkW,EAAK72B,OAAS8rC,EAAMnrB,OAI1B,GAAM1T,KAAK+oG,kBAAkBnkG,EAAIi6B,EAAOjV,EAAK72B,QAAQyiB,OAAM,YAE1E,OADAmxF,GAAM,IAAI/hG,EAAE,sDAAsD6sB,EAAS,YAAY7H,EAAK72B,OAAM,UAAU8xG,EAAcjpG,GACnHpC,QAAQE,OAAOkC,EAAAA,YAGxB,OALQ/B,EAASoH,EAAAA,OAALpH,KAKZ,GAAOkpG,GAAUiG,IAAInvG,EAAKsB,IAAK0jC,EAAMr3B,OAAQ,CAC3CtN,YAAa8F,KAAK9F,YAClBgC,QAAS8D,KAAK9D,QACdnC,QAASF,EAAKE,QACd6gE,kBAAkB,EAGlBgmB,WAAY,SAACqoB,GAAsB,SAAO34C,EAAK44C,iBAAiBtkG,EAAIigG,EAAYj7E,EAAK72B,OAASk2G,EAAG9rE,QAA9DvT,IAAA,IAElCzpB,MAAK,YACJmwD,EAAK44C,iBAAiBtkG,EAAIigG,EAAYj7E,EAAK72B,OAAS8rC,EAAMnrB,MAC1D,IAAM81F,EAAY/iG,KAAKuyB,IAAIpP,EAAK72B,OAAS0+B,EAAW7H,EAAKlW,MAKzD,OAJAizF,GAAM,IAAI/hG,EAAE,gCAAgCglB,EAAK72B,OAAM,UAAU8xG,EAAU,0BAA0BA,EAAU,WAAYjuE,EAAI78B,SAC/Hu2D,EAAKm5C,YAAY7kG,EAAIigG,EAAY,SAAU2E,GAGvCA,IAAc5/E,EAAKlW,KACdla,QAAQC,QAAQm9B,IAIzBhN,EAAO,KACPiV,EAAQ,KAEDyxB,EAAK+4C,gBAAgBzkG,EAAIigG,EAAYpzE,GAAAA,IAE7Cjc,OAAM,YACL,IAAM4zF,EAAOxtG,GAAOA,EAAIL,SAAWK,EAAIL,SAAW,KAElD,GAAI6tG,GAAwB,MAAhBA,EAAK3tG,QACX2tG,EAAKvvG,MAAQuvG,EAAKvvG,KAAKhG,OAASu1G,EAAKvvG,KAAKhG,MAAMyP,KAAM,CACxD,IAAIA,EAAO8lG,EAAKvvG,KAAKhG,MAAMyP,KAM3B,MACO,0BALHV,MAAMkD,QAAQxC,KAChBA,EAAOA,EAAK4J,OAGN5J,GAEGgtD,EAAKk4C,UAAU5jG,EAAIigG,GAEnBrrG,QAAQE,OAAO,IAAIgyD,EAAe,qBAAsB09C,EAAKvvG,KAAKhG,MAAO+7F,EAAmBjP,SAM3G,CAAArwB,EAAK44C,iBAAiBtkG,EAAIigG,EAAYj7E,EAAK72B,QAC3C,IAAM22G,EAAgBjjG,KAAKshD,KAAKt2B,EAAY,GAE5C,OAAIi4E,EDtjBkB,OCujBpB/C,GAAM,IAAI/hG,EAAE,mDACLpL,QAAQE,OAAO,IAAIgyD,EAAe,yBAA0B9vD,EAAI/B,KAAM+1F,EAAmBjP,WAG9F58E,OAAAA,GAAAA,EAAAA,CAAYnI,IACd+qG,GAAM,IAAI/hG,EAAE,uDAAuD8kG,GAC5Dp5C,EAAK+4C,gBAAgBzkG,EAAIigG,EAAY6E,KAI9C9/E,EAAO,KACPiV,EAAQ,KAEDyxB,EAAKg4C,aAAa,gCAAiC1sG,GAAAA,KAAAA,GAAAA,GAAAA,EAaxD4M,EAAAA,UAAAA,WAAR,SAAmB5D,EAAYigG,GAA/B,WACQn6F,EAAU1K,KAAKqnG,eAAeziG,GAC9BglB,EAAOlf,EAAQtB,MAAMy7F,GAE3B,OAAO9B,GAAU3wF,KACZpS,KAAK4oG,aAAahkG,GAAG,oBAAmBb,OAAAA,EAAAA,EAAAA,CAAAA,OAAAA,EAAAA,EAAAA,CAAAA,CAAAA,EAEtC/D,KAAKioG,iBAAiBrjG,EAAI,CAAC,SAAU,SAAU,YAAa,SAAU,YAAa,SAAO,CAC7F8O,KAAMhJ,EAAQ8G,KAAKkC,KACnBkW,KAAMA,EAAKi7E,WAAa,IAE1B,CACE3qG,YAAa8F,KAAK9F,YAClBgC,QAAS8D,KAAK9D,QACdnC,QAASiG,KAAKkoG,kBAAkBtjG,GAChCq4F,MAAOj9F,KAAKyiG,cAGbtiG,MAAK,SAACy2B,GAGL,OAFA+vE,GAAM,IAAI/hG,EAAE,wBAAwBglB,EAAKi7E,WAAU,iBAAkBjuE,EAAI/8B,MAElE+8B,CAAAA,IAERphB,OAAM,YACL,OAAO3E,EAAKy3F,aAAa,mCAAoC1sG,EAAAA,GAAAA,EAW3D4M,EAAAA,UAAAA,gBAAR,SAAwB5D,GAAxB,WACQ8F,EAAU1K,KAAKqnG,eAAeziG,GAChCwE,EAAQ,GAEZu9F,GAAM,IAAI/hG,EAAE,0BAKZ,IAHA,IAAM+kG,EAAcj/F,EAAQtB,MACtBwgG,EAAUD,EAAYt1G,OAEnBgM,EAAI,EAAGA,EAAIupG,EAASvpG,IACvBspG,EAAYtpG,GAAGm6D,MACjBpxD,EAAMvI,KAAK,CAAEgpG,YAAaxpG,EAAI,EAAGm6D,KAAMmvC,EAAYtpG,GAAGm6D,OAM1D,OAFAmsC,GAAM,IAAI/hG,EAAE,aAAcwE,GAEnB25F,GAAU3wF,KACZpS,KAAK4oG,aAAahkG,GAAG,sBAAqBb,OAAAA,EAAAA,EAAAA,CAAAA,OAAAA,EAAAA,EAAAA,CAAAA,CAAAA,EAExC/D,KAAKioG,iBAAiBrjG,EAAI,CAAC,SAAU,SAAU,YAAa,MAAO,SAAU,YAAa,YAAa,CAE1GsQ,SAAUxK,EAAQ8G,KAAKpQ,KACvBugG,SAAUj3F,EAAQ8G,KAAKvT,KACvByV,KAAMhJ,EAAQ8G,KAAKkC,KACnBo2F,YAAa9pG,KAAK+kG,YAAchhG,OAAOsC,KAAKrG,KAAK+kG,YAAY1wG,OAAS2L,KAAK+kG,gBAAAA,EAC3E37F,MAAOA,EAAM/U,OAAS+U,OAAAA,IAExB,CACElN,QAAS8D,KAAK9D,QACdhC,YAAa8F,KAAK9F,YAClBH,QAASiG,KAAKkoG,kBAAkBtjG,GAChCq4F,MAAOj9F,KAAKyiG,cAGbtiG,MAAK,YAEJ,GAAmB,MAAfy2B,EAAIn7B,OACN,OAAO,IAAIjC,SAAQ,SAACC,EAASC,GAC3B6C,YACE,WACE,SAAK6qG,gBAAgBxiG,GAClBzE,KAAK1G,GACL+b,MAAM9b,EAAAA,GAzqBA,QAgrBjB,IAAI8X,EAAOhJ,EAAK6+F,eAAeziG,GAAI4M,KAUnC,OARAA,EAAKghD,OAAS57B,EAAI/8B,KAAK24D,OACvBhhD,EAAKrW,IAAMy7B,EAAI/8B,KAAKsB,IACpBqW,EAAKihC,UAAY7b,EAAI/8B,KAAK44C,UAC1BjhC,EAAKhU,IAAMo5B,EAAI/8B,KAAK2D,IACpBgU,EAAKuzF,WAAanuE,EAAI/8B,KAAKiwG,YAC3Bt4F,EAAK8kF,UAAY1/D,EAAI/8B,KAAKy8F,UAC1B9kF,EAAK/V,OAASm7B,EAAI/8B,KAAK4B,OAEhB+V,CAAAA,IAERgE,OAAM,YAGL,OAFAhN,EAAKu/F,iBAAiBnjG,EAAE,UAEjB4D,EAAK8/F,aAAa,uBAAwB1sG,EAAAA,GAAAA,EAa/C4M,EAAAA,UAAAA,iBAAR,SAAyB5D,EAAYigG,EAAoB1nE,GACvDn9B,KAAKypG,YAAY7kG,EAAIigG,EAAY,WAAY1nE,GAC7Cn9B,KAAK+pG,cAAAA,EASCvhG,EAAAA,UAAAA,aAAR,WACE,IAAI42B,EAAY,EACZ4qE,EAAa,EAEbC,EAAgB,CAAC,EACrB,IAAK,IAAI5pG,KAAKL,KAAKgnG,SAAU,CAC3B,IAAMt8F,EAAU1K,KAAKgnG,SAAS3mG,GAI9B,GAAuB,WAAnBqK,EAAQ8G,KAAK/V,OAAjB,CAIA,IAAMyuG,EAAax/F,EAAQtB,MAAM4J,KAAI,YAAK,SAAEmpB,UAAFzf,CAAA,IAAiByS,QAAO,SAACjgB,EAAGC,GAAM,aAAO,GAEnF66F,GAA0BE,EAE1BD,EAAc5pG,GAAK,CACjB2pG,WAAYE,EACZC,aAAc1jG,KAAK4kC,MAAoB,IAAb6+D,EAAoBx/F,EAAQ8G,KAAKkC,OAAS,GAGtE0rB,GAAwB10B,EAAQ8G,KAAKkC,IAAAA,CAGvC,KAAMkjB,EAAM,CACVozE,WAAYA,GAAc,EAC1BG,aAAc1jG,KAAK4kC,MAAoB,IAAb2+D,EAAoB5qE,IAAc,EAC5DrJ,MAAOk0E,GAGTtD,GAAM,qBAAsB/vE,GAC5B52B,KAAKy4D,KAAK,WAAY7hC,EAAAA,EAWhBpuB,EAAAA,UAAAA,cAAR,SAAsB5D,EAAY/K,GAChCmG,KAAKgnG,SAASpiG,GAAGb,OAAAA,EAAAA,EAAAA,CAAAA,OAAAA,EAAAA,EAAAA,CAAAA,CAAAA,EACZ/D,KAAKgnG,SAASpiG,IACd/K,EAAAA,EAYC2O,EAAAA,UAAAA,YAAR,SAAoB5D,EAAYigG,EAAoBrqC,GAClDmsC,GAAM,IAAI/hG,EAAE,SAAS41D,EAAI,kBAAkBqqC,GAC3C7kG,KAAKqnG,eAAeziG,GAAIwE,MAAMy7F,GAAYrqC,KAAOA,CAAAA,EAW3ChyD,EAAAA,UAAAA,YAAR,SAAoB5D,EAAYigG,EAAoBrnG,EAAa7B,GAC/DgrG,GAAM,IAAI/hG,EAAE,SAASpH,EAAG,MAAM7B,EAAK,aAAakpG,GAEhD,IAAMn6F,EAAU1K,KAAKqnG,eAAeziG,GAG/B8F,EAKLA,EAAQtB,MAAMy7F,GAAYrnG,GAAO7B,EAJ/BgrG,GAAM,IAAI/hG,EAAE,gBAAgBpH,EAAG,MAAM7B,EAAK,aAAakpG,EAAAA,EAanDr8F,EAAAA,UAAAA,iBAAR,SAAyB5D,EAAYnJ,GACnCkrG,GAAM,IAAI/hG,EAAE,2BAA2BnJ,GAElCuE,KAAKgnG,SAASpiG,KAInB5E,KAAKgnG,SAASpiG,GAAI4M,KAAK/V,OAASA,EAAAA,EAQ1B+M,EAAAA,UAAAA,WAAR,SAAmB5M,GACjB,OAAKA,EAAIL,SAIF,CACL+H,KAAM1H,EAAIL,SAASE,OACnB5B,KAAM+B,EAAIL,SAAS1B,KACnBE,QAAS6B,EAAIL,SAASxB,SANf,CAAC,CAAD,EAUHyO,EAAAA,UAAAA,aAAR,SAAqB/H,EAAiB7E,GACpC,OAAIA,aAAewuG,GAAAA,GAAkBxuG,EAAI0H,OAAS8mG,GAAAA,EAAmBzoC,QAC5DnoE,QAAQE,OAAO,IAAIgyD,EAAejrD,EAAS,CAAEC,OAAQ9E,EAAI6E,SAAWmvF,EAAmBjuB,UAEzFnoE,QAAQE,OAAO,IAAIgyD,EAAejrD,EAAST,KAAKqqG,WAAWzuG,GAAMg0F,EAAmBjP,SAAAA,EAE/Fn4E,CAj0BA,CAAAo+F,CAAgCR,ICX1BkE,GAAoB,SAACl7E,EAAStK,GAIlC,OAHAsK,EAAQ46E,WAAavjG,KAAKwyB,IAAI7J,EAAQ46E,WAAYllF,EAAKklF,YACvD56E,EAAQ+6E,aAAe1jG,KAAKwyB,IAAI7J,EAAQ+6E,aAAcrlF,EAAKqlF,cAEpD/6E,CAAAA,EASTm7E,GAAAA,SAAAA,GA2BE,WAA6B7lG,EAAqC2hG,QAAAA,IAArC3hG,IAAAA,EAAAA,CAAAA,QAAA,IAAqC2hG,IAAAA,EAAAA,CAAAA,GAAlE,MACE11F,EAAAA,KAAAA,OAAO,KADoBtQ,EAAAA,QAAAA,EAAqCA,EAAAA,aAAAA,EAR1DA,EAAAA,aAA8B,CACpC2pG,WAAY,EACZG,aAAc,GAUd9pG,EAAKgmG,aAAetiG,OAAOQ,OAAO,CAAC,EAAG8hG,GAEtC,IAAMmE,EAAc7R,EAAamE,GAAbnE,CAAiCj0F,GAErD,GAAI8lG,EAAYzuC,OAAO1nE,OACrB,MAAM,IAAIq3D,EAAe,wBAAyB8+C,EAAYzuC,OAAQ6zB,EAAmB0M,YAG3F,IAAMmO,EAAmB9R,EAAa8D,GAAb9D,CAAgC0N,GACzD,GAAIoE,EAAiB1uC,OAAO1nE,OAC1B,MAAM,IAAIq3D,EAAe,8BAA+B++C,EAAiB1uC,OAAQ6zB,EAAmB0M,mBAGlG+J,EAAanxF,WACf7U,EAAKqqG,iBAAmBrE,EAAanxF,gBAC9B7U,EAAKgmG,aAAanxF,UAGvB7U,EAAKgmG,aAAa1J,YACpBt8F,EAAKsqG,iBAAmBtqG,EAAKgmG,aAAa1J,iBACnCt8F,EAAKgmG,aAAa1J,WAG3Bt8F,EAAKuqG,SAAW,IAAIhE,GAAWvmG,EAAKgmG,aAAc3hG,EAAQqqE,aAE1D1uE,EAAKuqG,SAASC,eAAe,CAC3B5N,MAAOv4F,EAAQu4F,OAAS,GACxBK,QAAS54F,EAAQ44F,QACjBJ,YAAax4F,EAAQw4F,aAAe,EACpCC,aAAcz4F,EAAQy4F,cAAgB,OAGxC98F,EAAKuqG,SAASruG,WAAWmI,EAAQxI,SAAW,MAExCwI,EAAQq4F,UACV18F,EAAKuqG,SAASE,YAAYpmG,EAAQq4F,UAGhCr4F,EAAQ24F,sBACVh9F,EAAKuqG,SAASG,wBAAwBrmG,EAAQ24F,sBAG5C34F,EAAQ64F,uBACVl9F,EAAKuqG,SAASI,mBAAAA,GAGZtmG,EAAQ04F,aACV/8F,EAAKuqG,SAASvC,cAAsC,aAAxB3jG,EAAQ04F,YAA4B,WAAsB,eAGxF/8F,EAAKuqG,SAASK,cAAcvmG,EAAQ27D,MAEpChgE,EAAKuqG,SAASlsF,GAAG,SAAS,WAAM,SAAK+5C,KAAL,YAChCp4D,EAAKuqG,SAASlsF,GAAG,SAAS,SAAClW,GAAM,SAAKiwD,KAAK,QAAV9nD,EAAA,IACjCtQ,EAAKuqG,SAASlsF,GAAG,WAAYre,EAAK6qG,eAAe1sG,KAAK6B,IAzClDgmG,CA+MR,QA3P4BtiG,OAAAA,EAAAA,EAAAA,CAAAA,EAAAA,GA+F1ByE,EAAAA,UAAAA,WAAAA,SAAW+pD,GACTvyD,KAAK4qG,SAASO,UAAU54C,EAAQK,QAE5BL,EAAQqkC,QAAUrkC,EAAQskC,WAC5B72F,KAAK4qG,SAASQ,YAAY,CACxBxU,OAAQrkC,EAAQqkC,OAChBC,UAAWtkC,EAAQskC,YAIvB72F,KAAK4qG,SAASS,OAAO94C,EAAQG,KAAKs9B,aAAAA,EAU7BxnF,EAAAA,UAAAA,SAAP,SAAgBtI,GAAhB,WACE,IAAKA,GAASA,IAAU6D,OAAO7D,GAC7B,MAAM,IAAIrM,MAAM,sDAOlB,OAJAqM,EAAMslB,MAAQ,WAAM,SAAKolF,SAAL,SACpB1qG,EAAM8qB,OAAS,WAAM,SAAK4/E,SAAL,UACrB1qG,EAAMlC,OAAS,WAAM,SAAK4sG,SAAL,SAEd1qG,CAAAA,EASFsI,EAAAA,UAAAA,YAAP,SAAmBmuF,GACjB32F,KAAK4qG,SAASQ,YAAYzU,EAAAA,EASrBnuF,EAAAA,UAAAA,cAAP,SAAqB63D,GACnBrgE,KAAK4qG,SAASK,cAAc5qC,EAAAA,EAUxB73D,EAAAA,UAAAA,OAAN,SAAa2wC,yHAED,SAAMtX,GAAQsX,EAAOn5C,KAAK2qG,0BAKvB,OALP/5F,EAAIvQ,EAAAA,QACRirG,WAAatrG,KAAK0qG,iBACpB1qG,KAAK4qG,SAAShgD,QAAQh6C,GAEtB5Q,KAAKurG,wBACQ,GAAMvrG,KAAK4qG,SAASY,kBAKjC,OALM50E,EAAOv2B,EAAAA,OAA+ByC,QAC5C9C,KAAKyrG,uBAELzrG,KAAK4qG,SAAS5xC,qBAEA,WAAVpiC,EAAIn7B,OACN,GAAOjC,QAAQE,OAAOk9B,IAGxB,GAAOp9B,QAAQC,QAAQm9B,IAAAA,GAAAA,GAAAA,EAUnBpuB,EAAAA,UAAAA,YAAN,SAAkB2wC,+IACFA,2DAEPA,EAAM3qC,eAAenO,GAIhB,GAAMwhC,GAAQsX,EAAM94C,GAAIL,KAAK2qG,mBAHrC,qBAGI/5F,EAAI0/C,EAAAA,QACRg7C,WAAatrG,KAAK0qG,iBACpB1qG,KAAK4qG,SAAShgD,QAAQh6C,GAAtB5Q,EAAAA,MAAAA,iCAIU,OADZA,KAAKurG,wBACO,GAAMvrG,KAAK4qG,SAASY,kBAKhC,OALM50E,EAAM05B,EAAAA,OACZtwD,KAAKyrG,uBAELzrG,KAAK4qG,SAAS5xC,qBAEd,GAAOx/D,QAAQC,QAAQm9B,IAAAA,GAAAA,GAAAA,EAUjBpuB,EAAAA,UAAAA,sBAAR,sBACyC,mBAA5BxI,KAAK0E,QAAQk8E,aAIxB5gF,KAAK0rG,wBAA0B/6B,aAAY,WACzChgE,EAAKjM,QAAQk8E,WAAWjwE,EAAKg7F,aAAAA,GAC5B3rG,KAAK0E,QAAQs4F,kBAtOc,KAwO9Bh9F,KAAK0E,QAAQk8E,WAAW5gF,KAAK2rG,cAAAA,EASvBnjG,EAAAA,UAAAA,qBAAR,WACE4nE,cAAcpwE,KAAK0rG,wBAAAA,EAUbljG,EAAAA,UAAAA,eAAR,SAAuB2zB,GAIrB,GAFAA,EAAWmuE,GAAkBnuE,EAAUn8B,KAAK2rG,cAExC3rG,KAAK2rG,aAAa51E,MACpB,IAAK,IAAI11B,KAAK87B,EAASpG,MACjB/1B,KAAK2rG,aAAa51E,MAAM11B,KAC1B87B,EAASpG,MAAM11B,GAAKiqG,GAAkBnuE,EAASpG,MAAM11B,GAAIL,KAAK2rG,aAAa51E,MAAM11B,KAKvFL,KAAK2rG,aAAexvE,CAAAA,EAExB3zB,CA3PA,CAAA+hG,CAA4B35F,EAAAA,cChCxBg7F,GAAQ9R,IAAM,cACd+R,GAAuB,WACvB,SAASC,IACL9rG,KAAK+rG,eAAiB,YAClBpgG,OAAOgqD,eACP31D,KAAK+rG,eAAelrG,KAAK0jG,GAAWp2E,OACpCy9E,GAAM,kCAENjgG,OAAOqgG,iBACPhsG,KAAK+rG,eAAelrG,KAAK0jG,GAAW0H,SACpCL,GAAM,2BAEVA,GAAM,sBAAuB5rG,KAAK+rG,eAiDtC,QA/CAD,EAAM9sG,UAAUktG,UAAY,SAAUC,GAElC,OADAP,GAAM,yDAA0DO,EAAUnsG,KAAK+rG,gBAC3EI,EACOnsG,KAAK+rG,eAAezvG,QAAQ6vG,IAAa,IAE3CnsG,KAAK+rG,eAAe13G,MAAAA,EAEjCy3G,EAAM9sG,UAAUm2D,QAAU,SAAU33D,EAAK2uG,GACrC,IAAI5pF,EAAQviB,KAAKosG,SAASD,GAE1B,GADAP,GAAM,qBAAsBpuG,EAAK+kB,GAC5BA,EAGL,OAAOA,EAAM4yC,QAAQ33D,EAAAA,EAEzBsuG,EAAM9sG,UAAUi2D,QAAU,SAAUz3D,EAAK7B,EAAOwwG,GAC5C,IAAI5pF,EAAQviB,KAAKosG,SAASD,GAE1B,GADAP,GAAM,mBAAoBpuG,EAAK+kB,GAC1BA,EAGL,OAAOA,EAAM0yC,QAAQz3D,EAAK7B,EAAAA,EAE9BmwG,EAAM9sG,UAAUk2D,WAAa,SAAU13D,EAAK2uG,GACxC,IAAI5pF,EAAQviB,KAAKosG,SAASD,GAE1B,GADAP,GAAM,wBAAyBpuG,EAAK+kB,GAC/BA,EAGL,OAAOA,EAAM2yC,WAAW13D,EAAAA,EAE5BsuG,EAAM9sG,UAAUotG,SAAW,SAAUD,GAEjC,GADAP,GAAM,gCAAiCO,GAClCnsG,KAAKksG,UAAUC,GAIpB,OAAQA,GACJ,KAAK5H,GAAWp2E,MACZ,OAAOxiB,OAAOgqD,aAClB,KAAK4uC,GAAW0H,QACZ,OAAOtgG,OAAOqgG,eAClB,QAEI,OAAOrgG,OAAO3L,KAAK+rG,eAAe,SAVtCH,GAAM,yCAaPE,CA5De,CAAC,ILA3B,SAAYvH,GACV5zF,EAAAA,QAAAA,iBACAA,EAAAA,MAAAA,cAFF,EAAY4zF,KAAAA,GAAU,KMSf,ICWK8H,GDXCC,GAAa,oBAW1BC,GAAAA,WA+BE,WAAYh6C,EAAkB7tD,GApBtB,KAAAwJ,OAAA,EAqBNlO,KAAKuyD,QAAUA,EACfvyD,KAAKwsG,aAAe,IAAIX,GAExB7rG,KAAKiwF,YAAc19B,EAAQG,KAAKu9B,YAE5BvrF,GAAWA,EAAQ+nG,eACrBzsG,KAAKkO,MAAQxJ,EAAQ+nG,aAuO3B,QAnOE1oG,OAAAA,eAAI4M,EAAAA,UAAA,QAAK,KAAT,WACE,GAAI3Q,KAAKkO,MAAO,CACd,IAAMhO,EAAQF,KAAKwsG,aAAar3C,QAAQm3C,GAAY/H,GAAWp2E,OAC/D,GAAIjuB,EAAO,OAAOA,CAGpB,QAAIF,KAAK0sG,eACA1sG,KAAKwsG,aAAar3C,QAAQm3C,GAAY/H,GAAW0H,SAGnDjsG,KAAK2sG,MAAAA,MAGd,SAAUnvG,GACJwC,KAAKkO,OACPlO,KAAKwsG,aAAav3C,QAAQq3C,GAAY9uG,EAAK+mG,GAAWp2E,OAGpDnuB,KAAK0sG,gBACP1sG,KAAKwsG,aAAav3C,QAAQq3C,GAAY9uG,EAAK+mG,GAAW0H,SAGxDjsG,KAAK2sG,OAASnvG,CAAAA,kCAShBuG,OAAAA,eAAY4M,EAAAA,UAAA,iBAAc,KAA1B,WACE,SAAI3Q,KAAKuyD,SACJvyD,KAAKuyD,QAAQq6C,UACb5sG,KAAKuyD,QAAQq6C,SAASC,UACtB7sG,KAAKuyD,QAAQq6C,SAASC,SAASC,gBAC3B9sG,KAAKuyD,QAAQq6C,SAASC,SAASC,aAAAA,kCAM1Cn8F,EAAAA,UAAAA,KAAAA,SAAKo8F,EAAaC,EAAwBr3F,GAA1C,WACQjL,EAAe,CACnBkoD,OAAQ5yD,KAAKuyD,QAAQK,OACrBm6C,OAAMp8F,EACNs8F,KAAM,MACN/sG,MAAOF,KAAKE,OAGVyV,IACG/S,MAAMkD,QAAQ6P,KACjBA,EAAS,CAACA,IAGZjL,EAAQiL,OAASA,GAGf3V,KAAK0sG,iBACPhiG,EAAQwiG,OAASltG,KAAKmtG,iBAGpBntG,KAAKuyD,QAAQqkC,QAAU52F,KAAKuyD,QAAQskC,YACtCnsF,EAAQksF,OAAS52F,KAAKuyD,QAAQqkC,OAC9BlsF,EAAQmsF,UAAY72F,KAAKuyD,QAAQskC,WAGnC,IAAInyF,EAAe,CAAC,EAEpB,GAAIsoG,EAAkB,CACpB,IAAM9yG,EAAc,IAAIwpG,GACxBsJ,EAAiBhvG,OAAS9D,EAAY8D,OAAOQ,KAAKtE,GAClDwK,EAAQxK,YAAcA,CAGxB,QAAO6oG,GAAU3wF,KAAQpS,KAAKiwF,YAAW,eAAgBvlF,EAAShG,GAASvE,MAAK,YAK9E,OAJIy2B,EAAI/8B,MAAQ+8B,EAAI/8B,KAAKqG,QACvBG,EAAKH,MAAQ02B,EAAI/8B,KAAKqG,OAGjB02B,EAAI/8B,IAAAA,GAAAA,EAIf8W,EAAAA,UAAAA,MAAAA,SAAMvP,EAAcyI,EAAcnF,EAA2B0oG,EAAwBJ,EAAwBjI,SAA7Gz0C,EAAAA,UAAA,IAAkC5rD,IAAAA,EAAAA,CAAAA,QAAA,IAA2B0oG,IAAAA,EAAAA,CAAAA,QAAA,IAAgDrI,IAAAA,EAAAA,WAAA,IAEvGrgG,EAAQkH,WACVlH,EAAQkH,SAAW,MAGrB,IAAMlB,EAAe,CACnBkoD,OAAQ5yD,KAAKuyD,QAAQK,OACrB1yD,MAAOF,KAAKE,MACZ+sG,KAAM,MACNnD,YAAa/E,QAAAA,EACbgI,QAAM79F,EAAAA,CAAAA,EACJA,EAAC9N,GAAO,CACNyI,KAAIrB,EACJ+Z,MAAOxe,OAAAA,EAAAA,YAAAA,CAAYW,IAEtBwK,IAGU,iBAAT9N,GAA2BgsG,EAAajP,mBAC1CzzF,EAAQqiG,OAAOM,aAAalP,iBAAmBiP,EAAajP,kBAGjD,iBAAT/8F,GAA2BgsG,EAAalP,wBAC1CxzF,EAAQqiG,OAAOM,aAAanP,sBAAwBkP,EAAalP,uBAG/Dl+F,KAAKuyD,QAAQqkC,QAAU52F,KAAKuyD,QAAQskC,YACtCnsF,EAAQksF,OAAS52F,KAAKuyD,QAAQqkC,OAC9BlsF,EAAQmsF,UAAY72F,KAAKuyD,QAAQskC,WAGnC,IAAIyW,EAAsB,CAAC,EAE3B,GAAIN,EAAkB,CACpB,IAAM9yG,EAAc,IAAIwpG,GACxBsJ,EAAiBhvG,OAAS9D,EAAY8D,OAAOQ,KAAKtE,GAClDozG,EAAepzG,YAAcA,CAG/B,QAAO6oG,GAAU3wF,KAAQpS,KAAKiwF,YAAW,UAAWvlF,EAAS4iG,GAAgBntG,MAAK,YAKhF,OAJIy2B,EAAI/8B,MAAQ+8B,EAAI/8B,KAAKqG,QACvBowD,EAAKpwD,MAAQ02B,EAAI/8B,KAAKqG,OAGpB02B,EAAI/8B,MAAQ+8B,EAAI/8B,KAAKuH,GAChBw1B,EAAI/8B,KAAKuH,GAGXw1B,EAAI/8B,IAAAA,GAAAA,EAIf8W,EAAAA,UAAAA,OAAAA,SAAOvP,SACCsJ,EAAe,CACnBkoD,OAAQ5yD,KAAKuyD,QAAQK,OACrBq6C,KAAM,MACN/sG,MAAOF,KAAKE,OAgBd,OAbIkB,EACFsJ,EAAQqiG,SAAMvkG,EAAAA,CAAAA,GAAMpH,GAAO,CAAC,EAACoH,IAEzBxI,KAAKkO,OAEPlO,KAAKwsG,aAAat3C,WAAWo3C,GAAY/H,GAAWp2E,OAGlDnuB,KAAK0sG,gBACP1sG,KAAKwsG,aAAat3C,WAAWo3C,GAAY/H,GAAW0H,UAIjDlJ,GAAU3wF,KAAQpS,KAAKiwF,YAAW,eAAgBvlF,GAASvK,MAAK,YACrE,OAAIy2B,EAAI/8B,MAAQ+8B,EAAI/8B,KAAKuH,GAChBw1B,EAAI/8B,KAAKuH,GAEXw1B,EAAI/8B,IAAAA,GAAAA,EAIf8W,EAAAA,UAAAA,SAAAA,SAASxV,EAAapB,GACpB,IAAM2Q,EAAe,CACnBkoD,OAAQ5yD,KAAKuyD,QAAQK,OACrBz3D,IAAGwV,EACH5W,QAAOyO,GAQT,OALIxI,KAAKuyD,QAAQqkC,QAAU52F,KAAKuyD,QAAQskC,YACtCnsF,EAAQksF,OAAS52F,KAAKuyD,QAAQqkC,OAC9BlsF,EAAQmsF,UAAY72F,KAAKuyD,QAAQskC,WAG5BkM,GAAU3wF,KAAQpS,KAAKiwF,YAAW,YAAavlF,GAASvK,MAAK,YAAO,kBAI7EwQ,EAAAA,UAAAA,QAAAA,SAAQ1S,GACN,GAAa,UAATA,GAA6B,UAATA,EACtB,MAAM,IAAIytD,EAAe,uCAE3B,OAAOq3C,GAAU3wF,KAAQpS,KAAKiwF,YAAW,cAAchyF,EAAI,SAASkC,MAAK,YAAO,kBAGlFwQ,EAAAA,UAAAA,SAAAA,SAAS1S,EAAcT,EAAa+vG,GAClC,GAAa,UAATtvG,GAA6B,UAATA,EACtB,MAAM,IAAIytD,EAAe,uCAE3B,IAAMhhD,EAAU,CACdkoD,OAAQp1D,EACRgwG,WAAYD,GAGd,OAAOxK,GAAU3wF,KAAQpS,KAAKiwF,YAAW,cAAchyF,EAAI,SAAUyM,GAASvK,MAAK,YAAO,kBAG5FwQ,EAAAA,UAAAA,QAAAA,SAAQ1S,EAAcT,EAAa+vG,EAAmBE,GACpD,GAAa,UAATxvG,GAA6B,UAATA,EACtB,MAAM,IAAIytD,EAAe,uCAG3B,IAAMhhD,EAAU,CACdkoD,OAAQp1D,EACRgwG,WAAYD,EACZG,WAAYD,GAGd,OAAO1K,GAAU3wF,KAAQpS,KAAKiwF,YAAW,cAAchyF,EAAI,QAASyM,GAASvK,MAAK,YAAO,kBAGnFwQ,EAAAA,UAAAA,cAAR,WACE,GAAKhF,OAAOirD,gBAAZ,CAOA,IAAM+2C,EAAe,IAAI/2C,gBAAgBjrD,OAAOC,SAASP,QAGzD,OAFAsiG,EAAarxF,IA9Qe,SA8QO,QAEzB3Q,OAAOC,SAASvN,SAAQ,KAAKsN,OAAOC,SAASR,KAAOO,OAAOC,SAASH,SAAQ,IAAIkiG,EAAa3mG,UAAAA,CAAAA,EAE3G2J,CA7QA,CAAA47F,GAXO,UCWP,SAAYF,GACV17F,EAAAA,OAAAA,SACAA,EAAAA,aAAAA,cAFF,EAAY07F,KAAAA,GAAc,KA+B1B,ICcYuB,GAkHAC,GDhIZ,cAIE,WAAYC,GAER9tG,KAAKuyD,QADHu7C,aAAiBC,GACJD,EAAMv7C,QAENu7C,CA4FrB,QAnFQn9F,EAAAA,UAAAA,UAAN,SAAgBA,OAAEq9F,EAAAA,EAAAA,cAAenB,EAAAA,EAAAA,SAAUoB,EAAAA,EAAAA,YAAazvF,EAAAA,EAAAA,6GAqCtD,OApCI0vF,EAAgC,CAClCt7C,OAAQ5yD,KAAKuyD,QAAQK,QAGnB5yD,KAAKuyD,QAAQqkC,QAAU52F,KAAKuyD,QAAQskC,YACtCqX,EAAavX,SAAW,CAAEC,OAAQ52F,KAAKuyD,QAAQqkC,OAAQC,UAAW72F,KAAKuyD,QAAQskC,YAa/EgW,EALGA,GAGHA,EAAWA,EAAS/4G,OAAO,CAAC,mBAER6b,QAAO,SAACtG,EAAGhJ,GAAM,SAAS/D,QAAQ+M,KAAjBwjG,CAAA,IAJ1B,CAAC,iBAQVmB,GAAiBjqG,OAAOsC,KAAK2nG,GAAe35G,SAC9C85G,EAAsBpqG,OAAAA,EAAAA,iBAAAA,CAAiBqqG,GAAUrqG,OAADzD,EAAAA,EAACyD,CAAD,GAAMiqG,MAGxDE,EAAenqG,OAAHzD,EAAAA,EAAGyD,CAAHA,OAAAA,EAAAA,EAAAA,CAAAA,CAAAA,EACPmqG,GAAY,CACfD,YAAW5tG,EACXwsG,SAAQh8F,EACRw9F,cAAeF,EACf3vF,OAAM9N,IAGR1Q,KAAKuyD,QAAQq6C,SAAW,KAExB,GAAO7J,GAAU3wF,KAAQpS,KAAKuyD,QAAQG,KAAKs9B,aAAY,YAAake,GAAc/tG,MAAK,SAACy2B,GAEtF,GAAmB,MAAfA,EAAIn7B,OACN,MAAM,IAAIiwD,EAAe,4CAG3B,IAAI7xD,EAAO+8B,EAAI/8B,KAaf,OAVIA,EAAKy0G,gBAEPz0G,EAAKm0G,cAAgB9+F,EAAKq/F,kBAAkBP,EAAen0G,EAAKy0G,gBAAkB,CAAC,UAC5Ez0G,EAAKy0G,gBAEZz0G,EAAKm0G,cAAgBA,EAGvB9+F,EAAKqjD,QAAQq6C,SAAW/yG,EAEjBA,CAAAA,IAAAA,GAAAA,GAAAA,EAUH8W,EAAAA,UAAAA,kBAAR,SAA0B69F,EAAQC,GAChC,IAAKD,GAAyC,IAA/BzqG,OAAOsC,KAAKmoG,GAAQn6G,OACjC,OAAOm6G,EAGT,IAAK,IAAMv7C,KAAKu7C,EACW,mBAAdA,EAAOv7C,KAChBw7C,EAAUx7C,GAAKu7C,EAAOv7C,IAGpBu7C,EAAOv7C,KAAOlvD,OAAOyqG,EAAOv7C,MAC9Bw7C,EAAUx7C,GAAKjzD,KAAKuuG,kBAAkBC,EAAOv7C,GAAIw7C,EAAUx7C,KAI/D,OAAOw7C,CAAAA,EAEX99F,CApGA,KCcA,SAAYi9F,GACVj9F,EAAAA,GAAAA,KACAA,EAAAA,IAAAA,KAFF,EAAYi9F,KAAAA,GAAe,KAkH3B,SAAYC,GACVl9F,EAAAA,OAAAA,SACAA,EAAAA,QAAAA,UACAA,EAAAA,SAAAA,UAHF,EAAYk9F,KAAAA,GAAiB,KAujB7B,kBAGE,WAAYvtD,EAAgB57C,GAC1B,IAAM8lG,EAAc7R,EAAa8E,GAAb9E,CAAiCj0F,GAErD,GAAI8lG,EAAYzuC,OAAO1nE,OACrB,MAAM,IAAIq3D,EAAe,wBAAyB8+C,EAAYzuC,OAAQ6zB,EAAmB0M,YAG3Ft8F,KAAK0uG,aAAe1uG,KAAK2lF,WAAWrlC,EAAQ57C,EA4BhD,QAzBQiM,EAAAA,UAAAA,KAAN,yHACiB,SAAM3Q,KAAK0uG,qBAC1B,SADe/9F,EAAAA,OACF9U,sBAAb8U,EAAAA,OAAAA,CAAAA,WAGIA,EAAAA,UAAAA,KAAN,SAAWolB,iHACM,SAAM/1B,KAAK0uG,qBAC1B,SADelmG,EAAAA,OACFgpF,KAAKz7D,kBAAlBvtB,EAAAA,OAAAA,CAAAA,WAGImI,EAAAA,UAAAA,MAAN,yHACiB,SAAM3Q,KAAK0uG,qBAC1B,SADe/9F,EAAAA,OACFy9E,uBAAbz9E,EAAAA,OAAAA,CAAAA,WAGIA,EAAAA,UAAAA,OAAN,yHACiB,SAAM3Q,KAAK0uG,qBAC1B,SADe/9F,EAAAA,OACF3S,wBAAb2S,EAAAA,OAAAA,CAAAA,WAGYA,EAAAA,UAAAA,WAAd,SAAyB2vC,EAAgB57C,uHAExB,OADuBvJ,EAAYmlD,EAAMiS,QAAAG,KAAfw9B,UAC1B,GAAMhhF,EAAWjO,EAAkBylF,OAAQvrF,WAC1D,MAAO,CAAP,EAAO,IADQkF,EAAAA,OACR,CAAWigD,EAAQ57C,IAAAA,GAAAA,GAAAA,EAE9BiM,CAtCA,I5BppBE8+E,EAAgB,gB6BtEG,CAAEpyE,SAAU,MAAO5c,QAAS,2BA6DjD,mBAiBE,WAAYmyD,EAAwBluD,GAApC,MACEiM,EAAAA,KAAAA,OAAO,KAOP,GARkCtQ,EAAAA,QAAAA,EAZ5BA,EAAAA,eAAAA,EAgBFqE,GAAWA,EAAQiqG,gBACrBtuG,EAAKsuG,cAAgBjqG,EAAQiqG,gBAG1B/7C,GAA4B,iBAAXA,GAAyC,IAAlBA,EAAOv+D,OAClD,MAAM,IAAIR,MAAM,4DAEV,QAGR,GAFAwM,EAAKkyD,QAAU,CAAEK,OAAMpqD,EAAEkqD,KAAIhiD,GAEzBhM,EAAS,CACH,QAAAouD,MAAO6jC,EAAAA,EAAAA,SAEft2F,EAAK+qG,YAAYzU,GACjBt2F,EAAKgkG,SAASvxC,UAGhBzyD,EAAKuuG,iBAAmB,IAAIj4C,GAASt2D,EAAKkyD,SAC1ClyD,EAAKyhG,MAAQ,IAAIyK,GAAYlsG,EAAKkyD,QAAS7tD,GAD3C,CAwZJ,QA9b4BX,OAAAA,EAAAA,EAAAA,CAAAA,EAAAA,GAa1BA,OAAAA,eAAIyE,EAAAA,UAAA,QAAK,KAAT,WACE,OAAOy9F,CAAA,kCAiCTz9F,EAAAA,UAAAA,SAAAA,SAASxM,GACP,OAAOgE,KAAK4uG,iBAAiBC,UAAU7yG,EAAAA,EASzCwM,EAAAA,UAAAA,YAAAA,SAAYmuF,GACV,GAAIA,KAAcA,EAASC,SAAUD,EAASE,WAC5C,MAAM,IAAInrC,EAAe,8DAGvBirC,GAAYA,EAASC,QAAUD,EAASE,YAC1C72F,KAAKuyD,QAAQqkC,OAASD,EAASC,OAC/B52F,KAAKuyD,QAAQskC,UAAYF,EAASE,UAAAA,EAWtCruF,EAAAA,UAAAA,SAAAA,SAASsqD,GACFA,GAA0B,IAAjBA,EAAMz+D,SAIpB2L,KAAKuyD,QAAQO,MAAQA,EACrB9yD,KAAKuyD,QAAQG,KAAOuzC,EAAAA,YAAkBjmG,KAAKuyD,QAAQG,KAAMI,GAAAA,EAS3DtqD,EAAAA,UAAAA,OAAAA,SAAOpH,GACL,OAAOpB,KAAK8hG,MAAMgN,OAAO1tG,EAAAA,EAsB3BoH,EAAAA,UAAAA,SAAAA,SAASgqD,EAAgB9tD,EAA2BiyF,GAElD,OXxHoB,SAACpkC,EAAkBC,EAAiB/kD,EAAwBkpF,GAClF,IAAKnkC,GAA4B,iBAAXA,EACpB,MAAM,IAAI9G,EAAe,qDAG3B,IAAM8+C,EAAc7R,EAAa+I,GAAb/I,CAAmClrF,GAEvD,GAAI+8F,EAAYzuC,OAAO1nE,OACrB,MAAM,IAAIq3D,EAAe,0BAA2B8+C,EAAYzuC,QAGlE,IAAMr3D,EAAOX,OAAAA,EAAAA,EAAAA,CAAAA,CAAAA,EAAa0J,GAC1B/I,EAAQqqG,WAAarqG,EAAQq9F,UAC7Br9F,EAAQkyF,OAAUD,GAAYA,EAASC,QAAWrkC,EAAQqkC,OAC1DlyF,EAAQmyF,UAAaF,GAAYA,EAASE,WAActkC,EAAQskC,UAEhE,IAAM37F,EAAaq3D,EAAQG,KAAKq9B,WAAU,IAAIv9B,EAAM,YACpD,OAAO,IAAIh5D,SAAQ,SAACC,EAASC,GAC3BqpG,GAAUxmF,IAAIrhB,EAAS,CAAEc,OAAQ+H,OAAAA,EAAAA,YAAAA,CAAYW,GAAUk2D,kBAAkB,IACtEz6D,MAAK,YAAO,SAAQ4D,OAADzD,EAAAA,EAACyD,CAADA,OAAAA,EAAAA,EAAAA,CAAAA,CAAAA,EAAM6yB,EAAI/8B,MAAI,CAAE24D,OAAvBhqD,IAAA,IACZgN,MAAM9b,EAAAA,GWoGF,CXxHa,CWwHJsG,KAAKuyD,QAASC,EAAQ9tD,EAASiyF,EAAAA,EAKjDnuF,EAAAA,UAAAA,OAAAA,SAAO9D,GAEL,ODklBkB,SAAC47C,EAAgB57C,GACrC,OAAO,IAAIsqG,GAAa1uD,EAAQ57C,ECnlBvB,CDklBW,CCllBJ1E,KAAM0E,EAAAA,EAgBtB8D,EAAAA,UAAAA,QAAAA,SAAQgqD,EAAgB9tD,GAEtB,OC7JmB,SAAC6tD,EAAkBC,EAAiB/kD,GACzD,IAAK+kD,GAA4B,iBAAXA,EACpB,MAAM,IAAI3+D,MAAM,qEAGlB,IAAM22G,EAAc7R,EAAaiE,GAAbjE,CAAkClrF,GAEtD,GAAI+8F,EAAYzuC,OAAO1nE,OACrB,MAAM,IAAIq3D,EAAe,yBAA0B8+C,EAAYzuC,OAAQ6zB,EAAmB0M,YAG5F,IAAM53F,EAAUX,OAAAA,EAAAA,YAAAA,CAAY0J,GAAQ,CAAC,GAC/BtS,EAhDc,SACpBo3D,EACAC,EACA/kD,EACAkpF,GAEA,IAAMjyF,EAAUX,OAAHzD,EAAAA,EAAGyD,CAAH,GAAQ0J,GACfmpF,EAAwCrkC,EAAQqkC,OAChDC,EAA8CtkC,EAAQskC,UACtDoY,EAAcpY,GAAaD,EAC3BsY,EAAU,CAAC38C,EAAQG,KAAKC,QACxBkqC,EAAMn4F,EAAQm4F,KAAO/hG,mBAAmB,IAAI4J,EAAQm4F,IAAG,KACvDsS,EAActS,EAAM,eAAeA,EAAQ,UAajD,OAVgC,IAA5BrqC,EAAOl2D,QAAQ,QACjB4yG,EAAQruG,KAAQ0xD,EAAQK,OAAM,IAAIu8C,GAElCD,EAAQruG,KAAKsuG,GAEXF,GACFC,EAAQruG,KAAK,mBAAmB+1F,EAAM,cAAcC,GAGtDqY,EAAQruG,KAAK2xD,GACN08C,EAAQ1lG,KAAK,IAuBR,CAhDQ,CAgDD+oD,EAASC,EAAQ9tD,GAEpC,GAAIA,GAAWA,EAAQE,GAAI,CACzB,IAAMA,EAAKF,EAAQE,GACbwqG,EAASjlG,SAASa,cAAc,UAChCqkG,EAAallG,SAASmlG,eAAe1qG,GAM3C,GAJAwqG,EAAOpiF,IAAM7xB,EACbi0G,EAAO50F,MAAQ,OACf40F,EAAO10F,OAAS,QAEX20F,EACH,MAAM,IAAIx7G,MAAM,wBAAwB+Q,EAAE,gBAE5C,OAAOyqG,EAAWj2F,YAAYg2F,EAEhC,QAAOzjG,OAAO9P,KAAKV,EAAKq3D,EAAAA,CDiIf+8C,CAAQvvG,KAAKuyD,QAASC,EAAQ9tD,EAAAA,EAuBvC8D,EAAAA,UAAAA,OAAAA,SAAOgqD,EAAgBmkC,GAErB,OAAOgN,GAAO3jG,KAAKuyD,QAASC,GAAAA,EAAemkC,EAAAA,EAuB7CnuF,EAAAA,UAAAA,eAAAA,SAAegqD,EAAgBmkC,GAE7B,OAAOgN,GAAO3jG,KAAKuyD,QAASC,GAAAA,EAAcmkC,EAAAA,EAqB5CnuF,EAAAA,UAAAA,SAAAA,SAASrN,EAAaq0G,EAA2BtvG,EAAay2F,EAAqBoO,EAAyBhrG,EAAmC01G,GAC7I,OEtQoB,SAAC9+F,OACvB4hD,EAAAA,EAAAA,QACAp3D,EAAAA,EAAAA,IACAq0G,EAAAA,EAAAA,YACAtvG,EAAAA,EAAAA,MACAy2F,EAAAA,EAAAA,SACAoO,EAAAA,EAAAA,WACAhrG,EAAAA,EAAAA,QACA01G,EAAAA,EAAAA,YAEA,IAAKt0G,GAAsB,iBAARA,EACjB,OAAO3B,QAAQE,OAAO,IAAIgyD,EAAe,iCAG3C,IAAM8+C,EAAc7R,EAAa8D,GAAb9D,CAAgC6W,GAEpD,GAAIhF,EAAYzuC,OAAO1nE,OACrB,OAAOmF,QAAQE,OAAO,IAAIgyD,EAAe,uBAAwB8+C,EAAYzuC,SAG/ExJ,EAAQqkC,OAASD,GAAYA,EAASC,QAAUrkC,EAAQqkC,OACxDrkC,EAAQskC,UAAYF,GAAYA,EAASE,WAAatkC,EAAQskC,UAE9D,IAAMuN,EAAW,IAAIlJ,GAAS//F,EAAKo3D,EAAQK,QAC3CwxC,EAAS7hF,MAAMitF,GAEXj9C,EAAQqkC,QAAUrkC,EAAQskC,WAC5BuN,EAASzN,SAAS,CAChBC,OAAQrkC,EAAQqkC,OAChBC,UAAWtkC,EAAQskC,YAIvB,IAAInyF,EAAe,CAAC,EAEpB,GAAIxE,EAAO,CACT,IAAMhG,EAAc,IAAIwpG,GACxBxjG,EAAMlC,OAAS9D,EAAY8D,OAAOQ,KAAKtE,GACvCwK,EAAQxK,YAAcA,CAGxB,KAAI8wD,EAAe,CAAE7vD,GAarB,OAXIpB,IACFixD,EAAU,CAAC,CACThqD,OAAQ7F,EACRpB,QAAOu2D,KAIPm/C,GAAeA,EAAYp7G,OAAS,GACtC+vG,EAASlI,QAAQ,QAAS,CAAE5F,UAAWmZ,IAGlC1M,GAAU3wF,KAAQmgD,EAAQG,KAAKo9B,WAAU,WAAY,CAC1Dl9B,OAAQL,EAAQK,OAChB5H,QAAOiF,EACP82C,MAAO3C,EAASsL,WAChB5F,YAAa/E,GACZrgG,GAASvE,MAAK,SAACy2B,GAChB,GAAIA,EAAI/8B,MAAQ+8B,EAAI/8B,KAAK24D,OAMvB,OALI57B,EAAI/8B,KAAKiwG,cACXlzE,EAAI/8B,KAAKkrG,WAAanuE,EAAI/8B,KAAKiwG,mBACxBlzE,EAAI/8B,KAAKiwG,aAGlB/lG,OAAAA,EAAAA,EAAAA,CAAAA,OAAAA,EAAAA,EAAAA,CAAAA,CAAAA,EAAY6yB,EAAI/8B,MAAI,CAAE8nG,SAAU/qE,EAAI/8B,KAAKoE,OAG3C,MAAM,IAAIytD,EAAe,0BAA0BrjD,KAAKI,UAAUmuB,EAAI/8B,MAAAA,GFiM/D,CEtQa,CFsQJ,CACd04D,QAASvyD,KAAKuyD,QACdp3D,IAAGwV,EACH6+F,YAAWhnG,EACXtI,MAAK2Q,EACL8lF,SAAQt2F,EACR0kG,WAAUr0F,EACV3W,QAAO0jB,EACPgyF,YAAWvgG,GAAA,EA+Bf1G,EAAAA,UAAAA,SAAAA,SAASgqD,EAAgB9tD,EAA2BiyF,GAElD,OXrMoB,SAACpkC,EAAkBC,EAAgB9tD,EAA+BiyF,GACxF,QAAI,IADqDjyF,IAAAA,EAAAA,CAAAA,IACpD8tD,GAA4B,IAAlBA,EAAOn+D,QAAkC,iBAAXm+D,EAC3C,MAAM,IAAI9G,EAAe,2BAG3B/9C,QAAQ8tB,KAAK,yFAEb,IAAM+uE,EAAc7R,EAAa0J,GAAb1J,CAAmCj0F,GAEvD,GAAI8lG,EAAYzuC,OAAO1nE,OACrB,MAAM,IAAIq3D,EAAe,0BAA2B8+C,EAAYzuC,QAGlE,IAAMuxC,EAAcvpG,OAAAA,EAAAA,EAAAA,CAAAA,CAAAA,EAAaW,GACjC4oG,EAAe9vG,IAAM+0D,EAAQK,OAC7B06C,EAAe1W,OAAUD,GAAYA,EAASC,QAAWrkC,EAAQqkC,OACjE0W,EAAezW,UAAaF,GAAYA,EAASE,WAActkC,EAAQskC,UAEvE,IAOI1hF,EAOArC,EAdAhX,EAAuBonG,GAAAA,EAAaC,IAexC,GAbImK,EAAejnB,OACjBvqF,EAASonG,GAAAA,EAAaG,YACfiK,EAAejnB,MAKpBinB,EAAen4F,WAAam4F,EAAen4F,UAAU9gB,SACvD8gB,EAAYm4F,EAAen4F,iBACpBm4F,EAAen4F,WAIpBm4F,EAAex6F,SAAU,CAC3B,GAAIhX,IAAWonG,GAAAA,EAAaG,KAC1B,MAAM,IAAI33C,EAAe,qDAG3B54C,EAAWw6F,EAAex6F,gBACnBw6F,EAAex6F,QAGxB,KAAM5X,EAAaq3D,EAAQG,KAAKq9B,WAAU,IAAIv9B,GAAYr9C,EAAY,IAAIA,EAAc,KAAOrC,EAAW,YAAc,IAExH,OAAO,IAAItZ,SAAQ,SAACC,EAASC,GAC3BqpG,GAAUnvF,SAAS1Y,EAAS,CAC1BY,OAAMmF,EACN25D,kBAAkB,EAClB5+D,OAAQ+H,OAAAA,EAAAA,YAAAA,CAAYupG,KAEnBntG,MAAK,YAAO,SAAQrE,IAAWonG,GAAAA,EAAaG,KAAOzsE,EAAI78B,QAAU68B,EAArD/8B,KAAA,IACZ2b,MAAM9b,EAAAA,GWkJF,CXrMa,CWqMJsG,KAAKuyD,QAASC,EAAQ9tD,EAASiyF,EAAAA,EAuBjDnuF,EAAAA,UAAAA,SAAAA,SAASgqD,EAAgBmkC,GAEvB,OX7PoB,SAACpkC,EAAkBC,EAAiBmkC,GAC1D,IAAMgZ,EAAK,IAAIzU,GAAS1oC,EAAQD,EAAQK,QAElCgkC,EAAUD,GAAYA,EAASC,QAAWrkC,EAAQqkC,OAClDC,EAAaF,GAAYA,EAASE,WAActkC,EAAQskC,UAM9D,OAJID,GAAUC,GACZ8Y,EAAGhZ,SAAS,CAAEE,UAASp5E,EAAEm5E,OAAMlmF,IAG1BqyF,GAAUnvF,SAAS+7F,EAAG3oG,WAAY,CAAElL,OAAQonG,GAAAA,EAAaC,IAAK3iB,cAAc,GWmP1E,CX7Pa,CW6PJxgF,KAAKuyD,QAASC,EAAQmkC,EAAAA,EAoCxCnuF,EAAAA,UAAAA,UAAAA,SAAUrN,EAAwBuJ,EAA2ButD,GAE3D,YAAO,IAFoDA,IAAAA,GAAAA,GAEpD6xC,GAAU9jG,KAAKuyD,QAASp3D,EAAKuJ,EAASutD,EAAAA,EAmC/CzpD,EAAAA,UAAAA,OAAAA,SAAOgJ,EAAiB9M,EAAyB2hG,EAAmCnmG,EAAay2F,GAAjG,WACM54F,EAAS,IAAIwsG,GAAO7lG,EAAS2hG,GA6BjC,OA5BAtoG,EAAOswF,WAAWruF,KAAKuyD,SAEnBryD,GACFnC,EAAO6xG,SAAS1vG,GAGdy2F,GACF54F,EAAOqtG,YAAYzU,GAGrB54F,EAAO2gB,GAAG,SAAS,WAAM,SAAK+5C,KAAL,mBAEzB16D,EAAO2gB,GAAG,SAAS,YACbjB,EAAKkxF,eACPkB,GAAiB,YACf5tD,EAAMkvB,OAAO,mBAAoB1zD,EAAK80C,QAAQK,QAC9C3Q,EAAMkvB,OAAO,oBAAqB80B,EAAAA,cAClChkD,EAAMwrC,SAAS,oBAAqBhwE,EAAK/Y,SACzCu9C,EAAMurC,UAAU,CAAEsiB,cAAeprG,EAAS2hG,aAAYx1F,EAAEs/E,QAAS3nF,EAAE2nF,UACnE3nF,EAAE/H,QAAU,MAAM+H,EAAE/H,QAEpBsvG,EAAwBvnG,EAAAA,IAI5BiV,EAAKg7C,KAAK,eAAgBjwD,EAAAA,IAGrBzK,EAAOA,OAAOyT,EAAAA,EAmCvBhJ,EAAAA,UAAAA,YAAAA,SAAYgJ,EAAmB9M,EAAyB2hG,EAAmCnmG,EAAay2F,GAAxG,WACM54F,EAAS,IAAIwsG,GAAO7lG,EAAS2hG,GA2BjC,OAzBAtoG,EAAOswF,WAAWruF,KAAKuyD,SAEnBryD,GACFnC,EAAO6xG,SAAS1vG,GAGdy2F,GACF54F,EAAOqtG,YAAYzU,GAGrB54F,EAAO2gB,GAAG,SAAS,WAAM,SAAK+5C,KAAL,mBAEzB16D,EAAO2gB,GAAG,SAAS,YACjBmxF,GAAiB,YACf5tD,EAAMkvB,OAAO,mBAAoB1zD,EAAK80C,QAAQK,QAC9C3Q,EAAMkvB,OAAO,oBAAqB80B,EAAAA,cAClChkD,EAAMwrC,SAAS,oBAAqBhwE,EAAK/Y,SACzCu9C,EAAMurC,UAAUhlF,EAAE2nF,SAClBluC,EAAMurC,UAAU,CAAEsiB,cAAeprG,EAAS2hG,aAAYx1F,IACtDk/F,EAAwBvnG,EAAAA,IAG1BiV,EAAKg7C,KAAK,eAAgBjwD,EAAAA,IAGrBzK,EAAOiyG,YAAYx+F,EAAAA,EAE9BhJ,CA9bA,EAA4BoI,EAAAA,c7B1Dfq/F,GAAY,SAACr9C,EAAgBluD,GACxC,OAAO,IAAIqpG,GAAOn7C,EAAQluD,EAAAA,EAIfg7E,GAAOuwB,GAKP5iG,GAAU,SAEvBijD,EAAervD,EAAkBulF,cAAeypB,GAAW,CAAE5iG,QAAS,uCgClDtE,GAAAwD,EAAAA,EAAAA,EAAAA,KAAAA,WAAA,gBAAAxQ,EAAA,aAiBM6vG,EAAuC,CAC3CC,WAAY,WAAM,OAAAh9G,KAAKqX,MAALrX,GAAA,GA2Edi9G,EAA+CrsG,OAAAA,EAAAA,EAAAA,GAZrD,WACE,IAEE,OADkBA,OAAAA,EAAAA,EAAAA,CAAetL,EAAQ,cACxB0sB,WAEjB,CADA,MAAOisC,GACP,OAO+Di/C,CAZnE,GAvCA,WACU,oBAAAlrF,YACR,GAAKA,GAAgBA,EAAY3a,IA2BjC,MAAO,CACLA,IAAK,WAAM,gBACX8lG,WAJiBn9G,KAAKqX,MAAQ2a,EAAY3a,MAwB4C+lG,CAnD1F,GAqDMC,OAAAA,IACJJ,EACIF,EACA,CACEC,WAAY,WAAM,OAACC,EAAoBE,WAAaF,EAAoB5lG,OAAtD,MAMbimG,EAAyBP,EAAoBC,WAAW3xG,KAAK0xG,GAaxCM,EAAgBL,WAAW3xG,KAAKgyG,GAcrB,WACnC,oBAAArrF,YACHA,IAGDA,EAAYmrF,WACPnrF,EAAYmrF,WAQbnrF,EAAYurF,QAAUvrF,EAAYurF,OAAOC,iBAAoBx9G,KAAKqX,MAd/B,oHCiPvC,SAAUomG,EAAqB34G,WACnC,GAAI8L,OAAAA,EAAAA,EAAAA,CAAc9L,GAAM,CACtB,IAAMqM,EAAMrM,EACN44G,EAA6B,CAAC,MACpC,IAAkB,MAAA9sG,OAAA,IAAAA,CAAAA,OAAOsC,KAAK/B,IAAIoY,EAAAA,EAAAA,QAAA,OAAAA,EAAAA,EAAAA,OAAE,CAA/B,IAAMlf,EAAGkf,EAAAA,WAAA,IACDpY,EAAI9G,KACbqzG,EAAGrzG,GAAOozG,EAAkBtsG,EAAI9G,IAAAA,CAGpC,yGAAOqzG,CAGT,QAAIjuG,MAAMkD,QAAQ7N,GACRA,EAAc+a,IAAI49F,GAGrB34G,CAAAA,kBAAAA,GAAAA,KAAAA,KAAAA,EAAAA,k5GCnYT,SAAS64G,EAASpsG,GAChB,OAAO2D,KAAKI,UAAU/D,EACvB,CAyCM,IAAIqsG,EAAiBC,KAtB5B,SAAgCC,GAC9B,IAlBmB5kG,EAkBfwF,OAAiB,IAAVo/F,EAAmB,CAAC,EAAIA,EAC/BC,EAAwBr/F,EAAKs/F,kBAC7BA,OAA8C,IAA1BD,GAA0CA,EAC9DE,EAAsBv/F,EAAKw/F,eAC3BA,OAAyC,IAAxBD,EAAiC,QAAUA,EAE5DE,EAAe,GAEnB,GAAsB,qBAAX3lG,OAAwB,CACjC,IACId,EADUc,OACUd,UACxBymG,EAAeA,EAAax9G,OAAO+W,EAAU0mG,UAAW1mG,EAAU2mG,SAAU3mG,EAAU4mG,aAAc5mG,EAAU6mG,gBAAiB7mG,EAAU8mG,eAC1I,CAMD,OAJIR,GACFG,EAAazwG,KAAKwwG,GA3BtB,SAA0BhlG,GACxB,OAAOA,EAAI2G,KAAI,SAAUhG,GACvB,IAAKA,IAA2B,IAArBA,EAAG1Q,QAAQ,MAAe0Q,EAAGvP,gBAAkBuP,EACxD,OAAOA,EAGT,IAAI4kG,EAAU5kG,EAAG5Y,MAAM,KACvB,OAAOw9G,EAAQ,GAAK,IAAMA,EAAQ,GAAG71G,aACtC,GACF,CAqBQ81G,EApCYxlG,EAoCiBilG,GAnCzB3hG,QAAO,SAAU3C,EAAIlM,GAC9B,OAAOkM,GAAMX,EAAI/P,QAAQ0Q,KAAQlM,CAClC,IAkCF,GAE2DgwG,GAMrD,IAAIgB,EAAgBd,KAJ3B,SAA+BtsG,GAC7B,OAAOqsG,EAAersG,GAAS,IAAM,IACtC,GAEyDosG,GAC1D,+CClDA,IAAIiB,EAAUn5G,EAAQ,MAMlBo5G,EAAgB,CAClBC,mBAAmB,EACnBC,aAAa,EACbC,cAAc,EACdC,cAAc,EACdC,aAAa,EACbC,iBAAiB,EACjBC,0BAA0B,EAC1BC,0BAA0B,EAC1BlwF,QAAQ,EACRmwF,WAAW,EACXx0G,MAAM,GAEJy0G,EAAgB,CAClBtxG,MAAM,EACN/M,QAAQ,EACR2K,WAAW,EACX2zG,QAAQ,EACRC,QAAQ,EACR5pG,WAAW,EACX6pG,OAAO,GASLC,EAAe,CACjB,UAAY,EACZ/uE,SAAS,EACTquE,cAAc,EACdC,aAAa,EACbI,WAAW,EACXx0G,MAAM,GAEJ80G,EAAe,CAAC,EAIpB,SAASC,EAAWC,GAElB,OAAIlB,EAAQmB,OAAOD,GACVH,EAIFC,EAAaE,EAAS,WAAiBjB,CAC/C,CAXDe,EAAahB,EAAQoB,YAhBK,CACxB,UAAY,EACZC,QAAQ,EACRhB,cAAc,EACdC,aAAa,EACbI,WAAW,GAYbM,EAAahB,EAAQsB,MAAQP,EAY7B,IAAI7uG,EAAiBF,OAAOE,eACxB4L,EAAsB9L,OAAO8L,oBAC7B2b,EAAwBznB,OAAOynB,sBAC/ByB,EAA2BlpB,OAAOkpB,yBAClC3e,EAAiBvK,OAAOuK,eACxBglG,EAAkBvvG,OAAO/E,UAsC7BvG,EAAOC,QArCP,SAAS66G,EAAqBC,EAAiBC,EAAiBC,GAC9D,GAA+B,kBAApBD,EAA8B,CAEvC,GAAIH,EAAiB,CACnB,IAAIK,EAAqBrlG,EAAemlG,GAEpCE,GAAsBA,IAAuBL,GAC/CC,EAAqBC,EAAiBG,EAAoBD,EAE7D,CAED,IAAIrtG,EAAOwJ,EAAoB4jG,GAE3BjoF,IACFnlB,EAAOA,EAAKvS,OAAO03B,EAAsBioF,KAM3C,IAHA,IAAIG,EAAgBZ,EAAWQ,GAC3BK,EAAgBb,EAAWS,GAEtBpzG,EAAI,EAAGA,EAAIgG,EAAKhS,SAAUgM,EAAG,CACpC,IAAI7C,EAAM6I,EAAKhG,GAEf,IAAKqyG,EAAcl1G,MAAUk2G,IAAaA,EAAUl2G,OAAWq2G,IAAiBA,EAAcr2G,OAAWo2G,IAAiBA,EAAcp2G,IAAO,CAC7I,IAAIs2G,EAAa7mF,EAAyBwmF,EAAiBj2G,GAE3D,IAEEyG,EAAeuvG,EAAiBh2G,EAAKs2G,EACzB,CAAZ,MAAOtrG,GAAK,CACf,CACF,CACF,CAED,OAAOgrG,CACR,kCC3FY,IAAIrkG,EAAE,oBAAoB8c,QAAQA,OAAO8nF,IAAI9yG,EAAEkO,EAAE8c,OAAO8nF,IAAI,iBAAiB,MAAM7jD,EAAE/gD,EAAE8c,OAAO8nF,IAAI,gBAAgB,MAAMvrG,EAAE2G,EAAE8c,OAAO8nF,IAAI,kBAAkB,MAAMnjG,EAAEzB,EAAE8c,OAAO8nF,IAAI,qBAAqB,MAAM5iD,EAAEhiD,EAAE8c,OAAO8nF,IAAI,kBAAkB,MAAMjvG,EAAEqK,EAAE8c,OAAO8nF,IAAI,kBAAkB,MAAM9gD,EAAE9jD,EAAE8c,OAAO8nF,IAAI,iBAAiB,MAAMzzG,EAAE6O,EAAE8c,OAAO8nF,IAAI,oBAAoB,MAAM9jD,EAAE9gD,EAAE8c,OAAO8nF,IAAI,yBAAyB,MAAMljG,EAAE1B,EAAE8c,OAAO8nF,IAAI,qBAAqB,MAAMr3F,EAAEvN,EAAE8c,OAAO8nF,IAAI,kBAAkB,MAAMroD,EAAEv8C,EACpf8c,OAAO8nF,IAAI,uBAAuB,MAAMrjG,EAAEvB,EAAE8c,OAAO8nF,IAAI,cAAc,MAAMpjG,EAAExB,EAAE8c,OAAO8nF,IAAI,cAAc,MAAM1qG,EAAE8F,EAAE8c,OAAO8nF,IAAI,eAAe,MAAMxgD,EAAEpkD,EAAE8c,OAAO8nF,IAAI,qBAAqB,MAAM9qE,EAAE95B,EAAE8c,OAAO8nF,IAAI,mBAAmB,MAAM5qE,EAAEh6B,EAAE8c,OAAO8nF,IAAI,eAAe,MAClQ,SAASC,EAAE9kG,GAAG,GAAG,kBAAkBA,GAAG,OAAOA,EAAE,CAAC,IAAIi2D,EAAEj2D,EAAE+kG,SAAS,OAAO9uC,GAAG,KAAKlkE,EAAE,OAAOiO,EAAEA,EAAEjR,MAAQ,KAAKqC,EAAE,KAAK2vD,EAAE,KAAKznD,EAAE,KAAK2oD,EAAE,KAAKvgD,EAAE,KAAK8L,EAAE,OAAOxN,EAAE,QAAQ,OAAOA,EAAEA,GAAGA,EAAE+kG,UAAY,KAAKhhD,EAAE,KAAKpiD,EAAE,KAAKF,EAAE,KAAKD,EAAE,KAAK5L,EAAE,OAAOoK,EAAE,QAAQ,OAAOi2D,GAAG,KAAKjV,EAAE,OAAOiV,EAAG,CAAC,UAAS+uC,EAAEhlG,GAAG,OAAO8kG,EAAE9kG,KAAK+gD,CAAE,CAAAv3D,EAAQy7G,UAAU7zG,EAAE5H,EAAQ07G,eAAenkD,EAAEv3D,EAAQ27G,gBAAgBphD,EAAEv6D,EAAQ47G,gBAAgBxvG,EAAEpM,EAAQ49D,QAAQr1D,EAAEvI,EAAQy6G,WAAWtiG,EAAEnY,EAAQ67G,SAAS/rG,EAAE9P,EAAQ87G,KAAK7jG,EAAEjY,EAAQ26G,KAAK3iG,EAAEhY,EAAQ+7G,OAAOvkD,EAChfx3D,EAAQg8G,SAASvjD,EAAEz4D,EAAQi8G,WAAW/jG,EAAElY,EAAQk8G,SAASl4F,EAAEhkB,EAAQm8G,YAAY,SAAS3lG,GAAG,OAAOglG,EAAEhlG,IAAI8kG,EAAE9kG,KAAK5O,CAAE,EAAC5H,EAAQo8G,iBAAiBZ,EAAEx7G,EAAQq8G,kBAAkB,SAAS7lG,GAAG,OAAO8kG,EAAE9kG,KAAK+jD,CAAE,EAACv6D,EAAQs8G,kBAAkB,SAAS9lG,GAAG,OAAO8kG,EAAE9kG,KAAKpK,CAAE,EAACpM,EAAQ29D,UAAU,SAASnnD,GAAG,MAAM,kBAAkBA,GAAG,OAAOA,GAAGA,EAAE+kG,WAAWhzG,CAAE,EAACvI,EAAQu8G,aAAa,SAAS/lG,GAAG,OAAO8kG,EAAE9kG,KAAK2B,CAAE,EAACnY,EAAQw8G,WAAW,SAAShmG,GAAG,OAAO8kG,EAAE9kG,KAAK1G,CAAE,EAAC9P,EAAQy8G,OAAO,SAASjmG,GAAG,OAAO8kG,EAAE9kG,KAAKyB,CAAE,EAC3djY,EAAQw6G,OAAO,SAAShkG,GAAG,OAAO8kG,EAAE9kG,KAAKwB,CAAE,EAAChY,EAAQ08G,SAAS,SAASlmG,GAAG,OAAO8kG,EAAE9kG,KAAKghD,CAAE,EAACx3D,EAAQ28G,WAAW,SAASnmG,GAAG,OAAO8kG,EAAE9kG,KAAKiiD,CAAE,EAACz4D,EAAQ48G,aAAa,SAASpmG,GAAG,OAAO8kG,EAAE9kG,KAAK0B,CAAE,EAAClY,EAAQ68G,WAAW,SAASrmG,GAAG,OAAO8kG,EAAE9kG,KAAKwN,CAAE,EAC3OhkB,EAAQ88G,mBAAmB,SAAStmG,GAAG,MAAM,kBAAkBA,GAAG,oBAAoBA,GAAGA,IAAI1G,GAAG0G,IAAI+gD,GAAG/gD,IAAIiiD,GAAGjiD,IAAI0B,GAAG1B,IAAIwN,GAAGxN,IAAIw8C,GAAG,kBAAkBx8C,GAAG,OAAOA,IAAIA,EAAE+kG,WAAWtjG,GAAGzB,EAAE+kG,WAAWvjG,GAAGxB,EAAE+kG,WAAWnvG,GAAGoK,EAAE+kG,WAAWhhD,GAAG/jD,EAAE+kG,WAAWpjG,GAAG3B,EAAE+kG,WAAW1gD,GAAGrkD,EAAE+kG,WAAWhrE,GAAG/5B,EAAE+kG,WAAW9qE,GAAGj6B,EAAE+kG,WAAW5qG,EAAG,EAAC3Q,EAAQ+8G,OAAOzB,qCCXjUv7G,EAAOC,QAAU,EAAjBD,oCC6CFA,EAAOC,QA5BS,SAASg9G,EAAWn4C,EAAQruD,EAAGC,EAAGlO,EAAGivD,EAAG1nD,EAAGoI,GAOzD,IAAK8kG,EAAW,CACd,IAAIxyG,EACJ,QAAe7F,IAAXkgE,EACFr6D,EAAQ,IAAIrP,MACV,qIAGG,CACL,IAAIkV,EAAO,CAACmG,EAAGC,EAAGlO,EAAGivD,EAAG1nD,EAAGoI,GACvB+kG,EAAW,GACfzyG,EAAQ,IAAIrP,MACV0pE,EAAOr0D,QAAQ,OAAO,WAAa,OAAOH,EAAK4sG,IAAc,MAEzDv0G,KAAO,qBACd,CAGD,MADA8B,EAAM0yG,YAAc,EACd1yG,CACP,CACF,wBCpCD,IASI2yG,EAAS,aAGTC,EAAa,qBAGbC,EAAa,aAGbC,EAAY,cAGZC,EAAetiH,SAGf69E,EAA8B,iBAAVpY,EAAAA,GAAsBA,EAAAA,GAAUA,EAAAA,EAAOr1D,SAAWA,QAAUq1D,EAAAA,EAGhFqY,EAA0B,iBAARtgE,MAAoBA,MAAQA,KAAKpN,SAAWA,QAAUoN,KAGxEqC,EAAOg+D,GAAcC,GAAY9S,SAAS,cAATA,GAUjCsU,EAPclvE,OAAO/E,UAOQgI,SAG7BkvG,EAAYzvG,KAAKwyB,IACjBk9E,EAAY1vG,KAAKuyB,IAkBjBxuB,EAAM,WACR,OAAOgJ,EAAKrgB,KAAKqX,KAClB,EA2MD,SAAS5C,EAASjM,GAChB,IAAIsC,SAActC,EAClB,QAASA,IAAkB,UAARsC,GAA4B,YAARA,EACxC,CA2ED,SAASkoB,EAASxqB,GAChB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAhCF,SAAkBA,GAChB,MAAuB,iBAATA,GAtBhB,SAAsBA,GACpB,QAASA,GAAyB,iBAATA,CAC1B,CAqBIo8E,CAAap8E,IAzTF,mBAyTYs3E,EAAe/xE,KAAKvF,EAC/C,CA6BKy6G,CAASz6G,GACX,OA3VM,IA6VR,GAAIiM,EAASjM,GAAQ,CACnB,IAAI+7E,EAAgC,mBAAjB/7E,EAAMsV,QAAwBtV,EAAMsV,UAAYtV,EACnEA,EAAQiM,EAAS8vE,GAAUA,EAAQ,GAAMA,CAC1C,CACD,GAAoB,iBAAT/7E,EACT,OAAiB,IAAVA,EAAcA,GAASA,EAEhCA,EAAQA,EAAMuN,QAAQ2sG,EAAQ,IAC9B,IAAIQ,EAAWN,EAAWtrG,KAAK9O,GAC/B,OAAQ06G,GAAYL,EAAUvrG,KAAK9O,GAC/Bs6G,EAAat6G,EAAMxD,MAAM,GAAIk+G,EAAW,EAAI,GAC3CP,EAAWrrG,KAAK9O,GAxWb,KAwW6BA,CACtC,CAEDlD,EAAOC,QAtPP,SAAkBgsD,EAAM4xD,EAAM5xG,GAC5B,IAAI6xG,EACAC,EACAC,EACAzoG,EACA0oG,EACAC,EACAC,EAAiB,EACjBC,GAAU,EACVC,GAAS,EACTC,GAAW,EAEf,GAAmB,mBAARryD,EACT,MAAM,IAAI5kD,UArIQ,uBA+IpB,SAASk3G,EAAW7jD,GAClB,IAAIpqD,EAAOwtG,EACPztG,EAAU0tG,EAKd,OAHAD,EAAWC,OAAWn5G,EACtBu5G,EAAiBzjD,EACjBnlD,EAAS02C,EAAK7hD,MAAMiG,EAASC,EAE9B,CAED,SAASkuG,EAAY9jD,GAMnB,OAJAyjD,EAAiBzjD,EAEjBujD,EAAUn6G,WAAW26G,EAAcZ,GAE5BO,EAAUG,EAAW7jD,GAAQnlD,CACrC,CAUD,SAASmpG,EAAahkD,GACpB,IAAIikD,EAAoBjkD,EAAOwjD,EAM/B,YAAyBt5G,IAAjBs5G,GAA+BS,GAAqBd,GACzDc,EAAoB,GAAON,GANJ3jD,EAAOyjD,GAM8BH,CAChE,CAED,SAASS,IACP,IAAI/jD,EAAO3oD,IACX,GAAI2sG,EAAahkD,GACf,OAAOkkD,EAAalkD,GAGtBujD,EAAUn6G,WAAW26G,EAzBvB,SAAuB/jD,GACrB,IAEInlD,EAASsoG,GAFWnjD,EAAOwjD,GAI/B,OAAOG,EAASX,EAAUnoG,EAAQyoG,GAHRtjD,EAAOyjD,IAGkC5oG,CACpE,CAmBoCspG,CAAcnkD,GAClD,CAED,SAASkkD,EAAalkD,GAKpB,OAJAujD,OAAUr5G,EAIN05G,GAAYR,EACPS,EAAW7jD,IAEpBojD,EAAWC,OAAWn5G,EACf2Q,EACR,CAcD,SAASupG,IACP,IAAIpkD,EAAO3oD,IACPgtG,EAAaL,EAAahkD,GAM9B,GAJAojD,EAAWvtG,UACXwtG,EAAWx2G,KACX22G,EAAexjD,EAEXqkD,EAAY,CACd,QAAgBn6G,IAAZq5G,EACF,OAAOO,EAAYN,GAErB,GAAIG,EAGF,OADAJ,EAAUn6G,WAAW26G,EAAcZ,GAC5BU,EAAWL,EAErB,CAID,YAHgBt5G,IAAZq5G,IACFA,EAAUn6G,WAAW26G,EAAcZ,IAE9BtoG,CACR,CAGD,OAxGAsoG,EAAOnwF,EAASmwF,IAAS,EACrB1uG,EAASlD,KACXmyG,IAAYnyG,EAAQmyG,QAEpBJ,GADAK,EAAS,YAAapyG,GACHwxG,EAAU/vF,EAASzhB,EAAQ+xG,UAAY,EAAGH,GAAQG,EACrEM,EAAW,aAAcryG,IAAYA,EAAQqyG,SAAWA,GAiG1DQ,EAAUv5G,OAnCV,gBACkBX,IAAZq5G,GACFtxF,aAAasxF,GAEfE,EAAiB,EACjBL,EAAWI,EAAeH,EAAWE,OAAUr5G,CAChD,EA8BDk6G,EAAUE,MA5BV,WACE,YAAmBp6G,IAAZq5G,EAAwB1oG,EAASqpG,EAAa7sG,IACtD,EA2BM+sG,CACR,wBChPD,IAGIG,EAAiB,4BAGjB1mC,EAAU,oBACVC,EAAS,6BASTI,EAAe,8BAGfG,EAA8B,iBAAVpY,EAAAA,GAAsBA,EAAAA,GAAUA,EAAAA,EAAOr1D,SAAWA,QAAUq1D,EAAAA,EAGhFqY,EAA0B,iBAARtgE,MAAoBA,MAAQA,KAAKpN,SAAWA,QAAUoN,KAGxEqC,EAAOg+D,GAAcC,GAAY9S,SAAS,cAATA,GAkCrC,IAAI+T,EAAa9vE,MAAM5D,UACnB2zE,EAAYhU,SAAS3/D,UACrB4zE,EAAc7uE,OAAO/E,UAGrB6zE,EAAar/D,EAAK,sBAGlBs/D,EAAc,WAChB,IAAIL,EAAM,SAAStmE,KAAK0mE,GAAcA,EAAWxsE,MAAQwsE,EAAWxsE,KAAK0sE,UAAY,IACrF,OAAON,EAAO,iBAAmBA,EAAO,EACzC,CAHiB,GAMdO,EAAeL,EAAU3rE,SAGzBwH,EAAiBokE,EAAYpkE,eAO7BykE,EAAiBL,EAAY5rE,SAG7BksE,EAAa7oE,OAAO,IACtB2oE,EAAa9xE,KAAKsN,GAAgBtF,QA1EjB,sBA0EuC,QACvDA,QAAQ,yDAA0D,SAAW,KAI5EnI,EAAS2xE,EAAW3xE,OAGpB2yE,EAAMD,EAAUjgE,EAAM,OACtBqgE,EAAeJ,EAAU1vE,OAAQ,UASrC,SAASuwE,EAAKl1B,GACZ,IAAIt+C,GAAS,EACTzM,EAAS+qD,EAAUA,EAAQ/qD,OAAS,EAGxC,IADA2L,KAAKkgC,UACIp/B,EAAQzM,GAAQ,CACvB,IAAIgqD,EAAQe,EAAQt+C,GACpBd,KAAKsc,IAAI+hC,EAAM,GAAIA,EAAM,GAC1B,CACF,CAyFD,SAASk2B,EAAUn1B,GACjB,IAAIt+C,GAAS,EACTzM,EAAS+qD,EAAUA,EAAQ/qD,OAAS,EAGxC,IADA2L,KAAKkgC,UACIp/B,EAAQzM,GAAQ,CACvB,IAAIgqD,EAAQe,EAAQt+C,GACpBd,KAAKsc,IAAI+hC,EAAM,GAAIA,EAAM,GAC1B,CACF,CAuGD,SAASm2B,EAASp1B,GAChB,IAAIt+C,GAAS,EACTzM,EAAS+qD,EAAUA,EAAQ/qD,OAAS,EAGxC,IADA2L,KAAKkgC,UACIp/B,EAAQzM,GAAQ,CACvB,IAAIgqD,EAAQe,EAAQt+C,GACpBd,KAAKsc,IAAI+hC,EAAM,GAAIA,EAAM,GAC1B,CACF,CAsFD,SAASw2B,EAAa5sD,EAAOzqB,GAE3B,IADA,IAoMU7B,EAAO+7E,EApMbrjF,EAAS4zB,EAAM5zB,OACZA,KACL,IAkMQsH,EAlMDssB,EAAM5zB,GAAQ,OAkMNqjF,EAlMUl6E,IAmMA7B,IAAUA,GAAS+7E,IAAUA,EAlMpD,OAAOrjF,EAGX,OAAQ,CACT,CAUD,SAASijF,EAAa37E,GACpB,IAAKiM,EAASjM,KAwDE+oD,EAxDiB/oD,EAyDxBm3E,GAAeA,KAAcpuB,GAxDpC,OAAO,EAuDX,IAAkBA,EArDZ91C,EAoMN,SAAoBjT,GAGlB,IAAIod,EAAMnR,EAASjM,GAASs3E,EAAe/xE,KAAKvF,GAAS,GACzD,OAAOod,GAAOi4D,GAAWj4D,GAAOk4D,CACjC,CAzMgB1iE,CAAW5S,IAlY5B,SAAsBA,GAGpB,IAAIqS,GAAS,EACb,GAAa,MAATrS,GAA0C,mBAAlBA,EAAMqL,SAChC,IACEgH,KAAYrS,EAAQ,GACR,CAAZ,MAAO6M,GAAK,CAEhB,OAAOwF,CACR,CAwXqCqkE,CAAa12E,GAAUu3E,EAAa7B,EACxE,OAAOziE,EAAQnE,KA+DjB,SAAkBi6C,GAChB,GAAY,MAARA,EAAc,CAChB,IACE,OAAOsuB,EAAa9xE,KAAKwjD,EACb,CAAZ,MAAOl8C,GAAK,CACd,IACE,OAAQk8C,EAAO,EACH,CAAZ,MAAOl8C,GAAK,CACf,CACD,MAAO,EACR,CAzEqBurE,CAASp4E,GAC9B,CAUD,SAAS07E,EAAWrkE,EAAKxV,GACvB,IAAI3D,EAAOmZ,EAAI0hE,SACf,OAyBF,SAAmB/4E,GACjB,IAAIsC,SAActC,EAClB,MAAgB,UAARsC,GAA4B,UAARA,GAA4B,UAARA,GAA4B,WAARA,EACrD,cAAVtC,EACU,OAAVA,CACN,CA9BQg8G,CAAUn6G,GACb3D,EAAmB,iBAAP2D,EAAkB,SAAW,QACzC3D,EAAKmZ,GACV,CAUD,SAASygE,EAAUlrD,EAAQ/qB,GACzB,IAAI7B,EAzaN,SAAkB4sB,EAAQ/qB,GACxB,OAAiB,MAAV+qB,OAAiBlrB,EAAYkrB,EAAO/qB,EAC5C,CAuaa25D,CAAS5uC,EAAQ/qB,GAC7B,OAAO85E,EAAa37E,GAASA,OAAQ0B,CACtC,CA0FD,SAAS2zG,EAAQtsD,EAAMosD,GACrB,GAAmB,mBAARpsD,GAAuBosD,GAA+B,mBAAZA,EACnD,MAAM,IAAIhxG,UA1iBQ,uBA4iBpB,IAAI83G,EAAW,SAAXA,IACF,IAAI7uG,EAAOC,UACPxL,EAAMszG,EAAWA,EAASjuG,MAAM7C,KAAM+I,GAAQA,EAAK,GACnDmF,EAAQ0pG,EAAS1pG,MAErB,GAAIA,EAAMwpD,IAAIl6D,GACZ,OAAO0Q,EAAMqO,IAAI/e,GAEnB,IAAIwQ,EAAS02C,EAAK7hD,MAAM7C,KAAM+I,GAE9B,OADA6uG,EAAS1pG,MAAQA,EAAMoO,IAAI9e,EAAKwQ,GACzBA,CACR,EAED,OADA4pG,EAAS1pG,MAAQ,IAAK8iG,EAAQ6G,OAASrjC,GAChCojC,CACR,CA0FD,SAAShwG,EAASjM,GAChB,IAAIsC,SAActC,EAClB,QAASA,IAAkB,UAARsC,GAA4B,YAARA,EACxC,CAzdDq2E,EAAKt1E,UAAUkhC,MAnEf,WACElgC,KAAK00E,SAAWb,EAAeA,EAAa,MAAQ,CAAC,CACtD,EAkEDS,EAAKt1E,UAAL,OAtDA,SAAoBxB,GAClB,OAAOwC,KAAK03D,IAAIl6D,WAAewC,KAAK00E,SAASl3E,EAC9C,EAqDD82E,EAAKt1E,UAAUud,IA1Cf,SAAiB/e,GACf,IAAI3D,EAAOmG,KAAK00E,SAChB,GAAIb,EAAc,CAChB,IAAI7lE,EAASnU,EAAK2D,GAClB,OAAOwQ,IAAW0pG,OAAiBr6G,EAAY2Q,CAChD,CACD,OAAOQ,EAAetN,KAAKrH,EAAM2D,GAAO3D,EAAK2D,QAAOH,CACrD,EAoCDi3E,EAAKt1E,UAAU04D,IAzBf,SAAiBl6D,GACf,IAAI3D,EAAOmG,KAAK00E,SAChB,OAAOb,OAA6Bx2E,IAAdxD,EAAK2D,GAAqBgR,EAAetN,KAAKrH,EAAM2D,EAC3E,EAuBD82E,EAAKt1E,UAAUsd,IAXf,SAAiB9e,EAAK7B,GAGpB,OAFWqE,KAAK00E,SACXl3E,GAAQq2E,QAA0Bx2E,IAAV1B,EAAuB+7G,EAAiB/7G,EAC9DqE,IACR,EAmHDu0E,EAAUv1E,UAAUkhC,MAjFpB,WACElgC,KAAK00E,SAAW,EACjB,EAgFDH,EAAUv1E,UAAV,OArEA,SAAyBxB,GACvB,IAAI3D,EAAOmG,KAAK00E,SACZ5zE,EAAQ+zE,EAAah7E,EAAM2D,GAE/B,QAAIsD,EAAQ,KAIRA,GADYjH,EAAKxF,OAAS,EAE5BwF,EAAKqT,MAELnM,EAAOG,KAAKrH,EAAMiH,EAAO,IAEpB,EACR,EAwDDyzE,EAAUv1E,UAAUud,IA7CpB,SAAsB/e,GACpB,IAAI3D,EAAOmG,KAAK00E,SACZ5zE,EAAQ+zE,EAAah7E,EAAM2D,GAE/B,OAAOsD,EAAQ,OAAIzD,EAAYxD,EAAKiH,GAAO,EAC5C,EAyCDyzE,EAAUv1E,UAAU04D,IA9BpB,SAAsBl6D,GACpB,OAAOq3E,EAAa70E,KAAK00E,SAAUl3E,IAAQ,CAC5C,EA6BD+2E,EAAUv1E,UAAUsd,IAjBpB,SAAsB9e,EAAK7B,GACzB,IAAI9B,EAAOmG,KAAK00E,SACZ5zE,EAAQ+zE,EAAah7E,EAAM2D,GAO/B,OALIsD,EAAQ,EACVjH,EAAKgH,KAAK,CAACrD,EAAK7B,IAEhB9B,EAAKiH,GAAO,GAAKnF,EAEZqE,IACR,EAiGDw0E,EAASx1E,UAAUkhC,MA/DnB,WACElgC,KAAK00E,SAAW,CACd,KAAQ,IAAIJ,EACZ,IAAO,IAAKZ,GAAOa,GACnB,OAAU,IAAID,EAEjB,EA0DDE,EAASx1E,UAAT,OA/CA,SAAwBxB,GACtB,OAAO65E,EAAWr3E,KAAMxC,GAAjB,OAAgCA,EACxC,EA8CDg3E,EAASx1E,UAAUud,IAnCnB,SAAqB/e,GACnB,OAAO65E,EAAWr3E,KAAMxC,GAAK+e,IAAI/e,EAClC,EAkCDg3E,EAASx1E,UAAU04D,IAvBnB,SAAqBl6D,GACnB,OAAO65E,EAAWr3E,KAAMxC,GAAKk6D,IAAIl6D,EAClC,EAsBDg3E,EAASx1E,UAAUsd,IAVnB,SAAqB9e,EAAK7B,GAExB,OADA07E,EAAWr3E,KAAMxC,GAAK8e,IAAI9e,EAAK7B,GACxBqE,IACR,EAoLDgxG,EAAQ6G,MAAQrjC,EA4FhB/7E,EAAOC,QAAUs4G,4rBCnqBjB,IAAI8G,EAAgD,SAAUnuE,EAAIzlC,EAAM6zG,GACpE,GAAIA,GAA6B,IAArB/uG,UAAU3U,OAAc,IAAK,IAA4Bu9D,EAAxBvxD,EAAI,EAAGC,EAAI4D,EAAK7P,OAAYgM,EAAIC,EAAGD,KACxEuxD,GAAQvxD,KAAK6D,IACR0tD,IAAIA,EAAKhvD,MAAM5D,UAAU7G,MAAM+I,KAAKgD,EAAM,EAAG7D,IAClDuxD,EAAGvxD,GAAK6D,EAAK7D,IAGrB,OAAOspC,EAAG71C,OAAO89D,GAAMhvD,MAAM5D,UAAU7G,MAAM+I,KAAKgD,GACrD,EAEU8zG,EAAkB,CAAC,SAAU,QAAS,WACtCC,EAAoB,CAC3B,mBACA,qBACA,uBAEOC,EAAiB,CAAC,YAAa,aAAc,WAC7CC,EAAc,CAAC,UAAW,UAC1BC,EAAa,CAAC,WAAY,UAAW,YAAa,UAAW,YAC7DC,EAAgB,CAAC,UAAW,UAC5BC,EAAc,CACrB,UACA,gBACA,gBACA,SACA,YACA,cACA,aACA,cACA,aACA,cACA,SACA,cACA,eACA,eACA,cACA,aACA,cACA,aAEOC,EAAgB,CACvB,gBACA,gBACA,cACA,kBACA,sBACA,uBACA,iBACA,iBACA,gBACA,gBAEOC,EAAkB,CAAC,YACnBC,EAAc,CAAC,gBAAiB,aAAc,cAAe,gBAC7DC,EAAW,CAAC,YACZC,EAAc,CAAC,WACfC,EAAc,CACrB,UACA,YACA,mBACA,mBACA,YACA,cACA,UACA,UACA,eACA,mBACA,cACA,UACA,SACA,YACA,aACA,eACA,WACA,YACA,YACA,YACA,eACA,iBACA,aAEOC,EAAc,CAAC,SAAU,WACzBC,EAAkB,CACzB,mBACA,iBACA,wBAEOC,EAAmB,CAAC,mBACpBC,EAAc,CAAC,YACfC,EAAYnB,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAc,GAAIE,GAAiB,GAAOC,GAAmB,GAAOC,GAAgB,GAAOC,GAAa,GAAOC,GAAY,GAAOC,GAAe,GAAOC,GAAa,GAAOC,GAAe,GAAOC,GAAiB,GAAOC,GAAa,GAAOC,GAAU,GAAOC,GAAa,GAAOC,GAAa,GAAOC,GAAa,GAAOC,GAAiB,GAAOC,GAAkB,GAAOC,GAAa,GAOjmB,SAASE,EAAe1pG,EAAO2pG,GAC1C,IAAIC,EAAa,CAAC,EAYlB,OAXAH,EAAU17G,SAAQ,SAAU87G,GACxB,IAAIC,EAAe9pG,EAAM6pG,GACpBC,IAOLF,EAAWC,GAJNF,EAImB,SAAUt6F,GAAS,OAAOy6F,EAAaz6F,EAAOs6F,EAAQE,GAAc,EAHhEC,EAI/B,IACMF,CACV,qCC5GDr1G,OAAOE,eAAevL,EAAS,aAAc,CAC3CiD,OAAO,IAETjD,EAAAA,QAQA,WACE,IAAK,IAAIof,EAAO9O,UAAU3U,OAAQqN,EAAakB,MAAMkV,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IACjFrW,EAAWqW,GAAQ/O,UAAU+O,GAG/B,SAASwhG,IACP,IAAK,IAAI5sF,EAAQ3jB,UAAU3U,OAAQ0U,EAAOnG,MAAM+pB,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IAChF7jB,EAAK6jB,GAAS5jB,UAAU4jB,GAG1B,IAAI1pB,EAAQ,KAaZ,OAXAxB,EAAWnE,SAAQ,SAAUkE,GAC3B,GAAa,MAATyB,EAAJ,CAIA,IAAI8K,EAASvM,EAAUoB,WAAMxF,EAAW0L,GAC1B,MAAViF,IACF9K,EAAQ8K,EAJT,CAMF,IAEM9K,CACR,CAED,OAAO,EAAIs2G,EAA6B/oG,SAAS8oG,EAClD,EAjCD,IAIgCj1G,EAJ5Bm1G,EAA8B7gH,EAAQ,MAEtC4gH,GAE4Bl1G,EAF0Bm1G,IAELn1G,EAAI+rD,WAAa/rD,EAAM,CAAEmM,QAASnM,GA8BvF7L,EAAOC,QAAUA,EAAO,yCCvCxBqL,OAAOE,eAAevL,EAAS,aAAc,CAC3CiD,OAAO,IAETjD,EAAAA,QAYA,SAAoC8qE,GAClC,SAASk2C,EAAUC,EAAYnqG,EAAOoqG,EAAUC,EAAejuG,EAAUkuG,GACvE,IAAIC,EAAoBF,GAAiB,gBACrCG,EAAmBF,GAAgBF,EAEvC,GAAuB,MAAnBpqG,EAAMoqG,GACR,OAAID,EACK,IAAI9lH,MAAM,YAAc+X,EAAW,KAAOouG,EAAhC,2BAAsFD,EAAoB,MAGtH,KAGT,IAAK,IAAIjiG,EAAO9O,UAAU3U,OAAQ0U,EAAOnG,MAAMkV,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IAC9FhP,EAAKgP,EAAO,GAAK/O,UAAU+O,GAG7B,OAAOyrD,EAAS3gE,WAAMxF,EAAW,CAACmS,EAAOoqG,EAAUG,EAAmBnuG,EAAUouG,GAAkBlmH,OAAOiV,GAC1G,CAED,IAAIkxG,EAAmBP,EAAUl7G,KAAK,MAAM,GAG5C,OAFAy7G,EAAiBN,WAAaD,EAAUl7G,KAAK,MAAM,GAE5Cy7G,CACR,EACDxhH,EAAOC,QAAUA,EAAO,0CCjCxB,IAAIwhH,EAAuBthH,EAAQ,MAEnC,SAASuhH,IAAkB,CAC3B,SAASC,IAA2B,CACpCA,EAAuBC,kBAAoBF,EAE3C1hH,EAAOC,QAAU,WACf,SAAS4hH,EAAK9qG,EAAOoqG,EAAUC,EAAejuG,EAAUkuG,EAAc/yB,GACpE,GAAIA,IAAWmzB,EAAf,CAIA,IAAIt+G,EAAM,IAAI/H,MACZ,mLAKF,MADA+H,EAAIwF,KAAO,sBACLxF,CAPL,CAQF,CAED,SAAS2+G,IACP,OAAOD,CACR,CAHDA,EAAKX,WAAaW,EAMlB,IAAIE,EAAiB,CACnBvyF,MAAOqyF,EACPG,OAAQH,EACRI,KAAMJ,EACN51D,KAAM41D,EACN72G,OAAQ62G,EACR/xF,OAAQ+xF,EACRzzF,OAAQyzF,EACRtkC,OAAQskC,EAER9/B,IAAK8/B,EACLK,QAASJ,EACTrhG,QAASohG,EACTM,YAAaN,EACbO,WAAYN,EACZ9hG,KAAM6hG,EACNQ,SAAUP,EACVxxC,MAAOwxC,EACPQ,UAAWR,EACXS,MAAOT,EACPU,MAAOV,EAEPW,eAAgBd,EAChBC,kBAAmBF,GAKrB,OAFAK,EAAeW,UAAYX,EAEpBA,CACR,wBC/CC/hH,EAAOC,QAAUE,EAAQ,IAARA,kCCNnBH,EAAOC,QAFoB,qUCTvB0iH,6DAMJ,SAASC,EAAkBhvG,EAAKgnD,IAAkB,MAAPA,GAAeA,EAAMhnD,EAAIhY,UAAQg/D,EAAMhnD,EAAIhY,QAAQ,IAAK,IAAIgM,EAAI,EAAG0rB,EAAO,IAAInpB,MAAMywD,GAAMhzD,EAAIgzD,EAAKhzD,IAAO0rB,EAAK1rB,GAAKgM,EAAIhM,GAAM,OAAO0rB,CAAO,CACvL,SAASuvF,EAAgBh3G,EAAK9G,EAAK7B,GAAiK,OAApJ6B,KAAO8G,EAAOP,OAAOE,eAAeK,EAAK9G,EAAK,CAAE7B,MAAOA,EAAOutB,YAAY,EAAMqyF,cAAc,EAAMC,UAAU,IAAkBl3G,EAAI9G,GAAO7B,EAAgB2I,CAAM,CAC1M,IAPqB+H,EAOjBovG,EAAiB,CAC1BC,OAAQ,SACRC,OAAQ,SACRC,SAAU,WACVC,GAAI,MAEKC,GAAqDR,EAA5BF,EAAwB,CAAC,EAA0CK,EAAeI,GAAI,CAAC,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,UAAWP,EAAgBF,EAAuBK,EAAeC,OAAQ,CAEtW,KAAM,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,KAAM,QAAS,KAAM,UAAWJ,EAAgBF,EAAuBK,EAAeE,OAAQ,CAAC,KAAM,UAAWP,GACzOW,GAhBiB1vG,EAgBazJ,MAAM,GAZ/C,SAA4ByJ,GAAO,GAAIzJ,MAAMkD,QAAQuG,GAAM,OAAOgvG,EAAkBhvG,EAAO,CAJjDuf,CAAmBvf,IAG7D,SAA0B2f,GAAQ,GAAsB,qBAAXC,QAAmD,MAAzBD,EAAKC,OAAOC,WAA2C,MAAtBF,EAAK,cAAuB,OAAOppB,MAAMsB,KAAK8nB,EAAQ,CAHzFH,CAAiBxf,IAEtF,SAAqCoR,EAAGu+F,GAAU,GAAKv+F,EAAL,CAAgB,GAAiB,kBAANA,EAAgB,OAAO49F,EAAkB59F,EAAGu+F,GAAS,IAAInrG,EAAI9M,OAAO/E,UAAUgI,SAAS9F,KAAKuc,GAAGtlB,MAAM,GAAI,GAAiE,MAAnD,WAAN0Y,GAAkB4M,EAAE9O,cAAakC,EAAI4M,EAAE9O,YAAYvN,MAAgB,QAANyP,GAAqB,QAANA,EAAoBjO,MAAMsB,KAAKuZ,GAAc,cAAN5M,GAAqB,2CAA2CpG,KAAKoG,GAAWwqG,EAAkB59F,EAAGu+F,QAAzG,CAA7O,CAAgW,CAFlUC,CAA4B5vG,IAC1H,WAAgC,MAAM,IAAIvM,UAAU,uIAA0I,CAD5DgsB,IAgB/E9Y,KAAI,SAAUhG,EAAIlM,GACnE,OAAOA,CACR,IClBGo7G,EAAiB,IAAIxoC,IA4BzB,SAASyoC,EAAiBz3G,GACxB,OAAO,SAAU03G,EAAQtpH,GACvB,OA7BJ,SAAsB4R,GACpB,OAAO,SAAU03G,EAAQtpH,GACvB,IAAIupH,EAAoBD,IAAUtK,EAAAA,EAAAA,WAC7BoK,EAAexkD,IAAI2kD,IACtBH,EAAe5/F,IAAI+/F,EAAmB,IAAI3oC,KAE5C,IAAI4oC,EAAuBJ,EAAe3/F,IAAI8/F,GAI9C,OAHKC,EAAqB5kD,IAAIhzD,IAC5B43G,EAAqBhgG,IAAI5X,EAAS,IAAI63G,KAAKC,eAAeH,EAAmB33G,GAAS64D,QAEjF++C,EAAqB//F,IAAI7X,EAAzB43G,CAAkCxpH,EAC1C,CACF,CAiBU2pH,CAAa/3G,EAAb+3G,CAAsBL,EANjC,SAAoBtpH,GAClB,IAAI4pH,EAAW,IAAIvpH,KAAKL,GACxB,OAAO,IAAIK,KAAKupH,EAASxnH,SAAS,IACnC,CAGwCynH,CAAW7pH,GACjD,CACF,CA8BuBqpH,EA7BA,CACtB9kH,IAAK,UACLV,MAAO,UACPjD,KAAM,YAHR,IA8BWkpH,EAAYT,EAzBA,CACrB9kH,IAAK,YAyBIwlH,EAAiBV,EAvBA,CAC1B9kH,IAAK,UACLV,MAAO,OACPjD,KAAM,YAqBGopH,EAAcX,EAnBA,CACvBxlH,MAAO,SAmBEomH,EAAkBZ,EAjBA,CAC3BxlH,MAAO,OACPjD,KAAM,YAgBGspH,EAAqBb,EAdA,CAC9Bc,QAAS,UAcAC,EAAgBf,EAZA,CACzBc,QAAS,SAYAE,EAAahB,EAVA,CACtBzoH,KAAM,YC1DJ0pH,EAASrB,EAAS,GAClBsB,EAAStB,EAAS,GAClBuB,EAAWvB,EAAS,GAIjB,SAASwB,EAAazqH,GAC3B,IAAI0qH,EAAex0G,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,GAAmBA,UAAU,GAAKyyG,EAAeG,SAClGqB,EAAUnqH,EAAK2qH,SACnB,OAAQD,GACN,KAAK/B,EAAeG,SAElB,OAAQqB,EAAU,GAAK,EACzB,KAAKxB,EAAeC,OAClB,OAAQuB,EAAU,GAAK,EACzB,KAAKxB,EAAeE,OACpB,KAAKF,EAAeI,GAClB,OAAOoB,EACT,QACE,MAAM,IAAIppH,MAAM,8BAErB,CA6BM,SAAS6pH,EAAe5qH,GAC7B,IAAI0qH,EAAex0G,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,GAAmBA,UAAU,GAAKyyG,EAAeG,SAClGloH,GAAOF,EAAAA,EAAAA,SAAQV,GACf6qH,GAAaC,EAAAA,EAAAA,UAAc9qH,GAC3BuE,EAAMvE,EAAKmB,UAAYspH,EAAazqH,EAAM0qH,GAC9C,OAAO,IAAIrqH,KAAKO,EAAMiqH,EAAYtmH,EACnC,CAqCM,SAASwmH,EAASC,EAAWhrH,GAClC,OAAQgrH,GACN,IAAK,UACH,OAAOhpH,EAAAA,EAAAA,iBAAgBhC,GACzB,IAAK,SACH,OAAO2C,EAAAA,EAAAA,gBAAe3C,GACxB,IAAK,OACH,OAAOoD,EAAAA,EAAAA,cAAapD,GACtB,IAAK,QACH,OAAO8D,EAAAA,EAAAA,eAAc9D,GACvB,IAAK,MACH,OAAOwE,EAAAA,EAAAA,aAAYxE,GACrB,QACE,MAAM,IAAIe,MAAM,sBAAsBC,OAAOgqH,IAElD,CAeM,SAASC,EAAaD,EAAWhrH,GACtC,OAAQgrH,GACN,IAAK,UACH,OAAO1oH,EAAAA,EAAAA,qBAAoBtC,GAC7B,IAAK,SACH,OAAO+C,EAAAA,EAAAA,oBAAmB/C,GAC5B,IAAK,OACH,OAAOuD,EAAAA,EAAAA,kBAAiBvD,GAC1B,IAAK,QACH,OAAOiE,EAAAA,EAAAA,mBAAkBjE,GAC3B,QACE,MAAM,IAAIe,MAAM,sBAAsBC,OAAOgqH,IAElD,CAgCM,SAASvqH,EAAOuqH,EAAWhrH,GAChC,OAAQgrH,GACN,IAAK,UACH,OAAOzoH,EAAAA,EAAAA,eAAcvC,GACvB,IAAK,SACH,OAAOgD,EAAAA,EAAAA,cAAahD,GACtB,IAAK,OACH,OAAOwD,EAAAA,EAAAA,YAAWxD,GACpB,IAAK,QACH,OAAOkE,EAAAA,EAAAA,aAAYlE,GACrB,IAAK,MACH,OAAO4E,EAAAA,EAAAA,WAAU5E,GACnB,QACE,MAAM,IAAIe,MAAM,sBAAsBC,OAAOgqH,IAElD,CAkCM,SAASE,EAASF,EAAWhrH,GAClC,OAAQgrH,GACN,IAAK,UACH,OAAOtoH,EAAAA,EAAAA,iBAAgB1C,GACzB,IAAK,SACH,OAAOmD,EAAAA,EAAAA,gBAAenD,GACxB,IAAK,OACH,OAAO2D,EAAAA,EAAAA,cAAa3D,GACtB,IAAK,QACH,OAAOqE,EAAAA,EAAAA,eAAcrE,GACvB,IAAK,MACH,OAAO+E,EAAAA,EAAAA,aAAY/E,GACrB,QACE,MAAM,IAAIe,MAAM,sBAAsBC,OAAOgqH,IAElD,CASM,SAASG,EAAcH,EAAWI,EAAOC,GAC9C,IAAIC,EAAe,CAACF,EAAOC,GAAO55F,MAAK,SAAUrV,EAAGC,GAClD,OAAOD,EAAIC,CACZ,IACD,MAAO,CAAC0uG,EAASC,EAAWM,EAAa,IAAK7qH,EAAOuqH,EAAWM,EAAa,IAC9E,CACD,SAASC,EAAYjC,GACnB,IAAIe,EAAan0G,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,GAAmBA,UAAU,GAAKs1G,EACjFC,EAAQv1G,UAAU3U,OAAS,EAAI2U,UAAU,QAAK3L,EAClD,OAAOkhH,EAAMvrG,KAAI,SAAUlgB,GACzB,OAAOqqH,EAAWf,EAAQtpH,EAC3B,IAAE0W,KAAK,WACT,CAkBM,SAASg1G,EAAepC,EAAQe,EAAYrqH,GACjD,OAAOurH,EAAYjC,EAAQe,GAAYlnH,EAAAA,EAAAA,gBAAenD,GACvD,CAOM,SAAS2rH,EAAU3rH,GACxB,IAAI0qH,EAAex0G,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,GAAmBA,UAAU,GAAKyyG,EAAeG,SAClGqB,EAAUnqH,EAAK2qH,SACnB,OAAQD,GACN,KAAK/B,EAAeC,OACpB,KAAKD,EAAeE,OAClB,OAAOsB,IAAYI,GAAUJ,IAAYK,EAC3C,KAAK7B,EAAeG,SACpB,KAAKH,EAAeI,GAClB,OAAOoB,IAAYK,GAAYL,IAAYG,EAC7C,QACE,MAAM,IAAIvpH,MAAM,8BAErB,CCxSD,SAAS6qH,EAAQp6G,GAAkC,OAAOo6G,EAAU,mBAAqBzyF,QAAU,iBAAmBA,OAAOC,SAAW,SAAU5nB,GAAO,cAAcA,CAAM,EAAG,SAAUA,GAAO,OAAOA,GAAO,mBAAqB2nB,QAAU3nB,EAAIqK,cAAgBsd,QAAU3nB,IAAQ2nB,OAAOjtB,UAAY,gBAAkBsF,CAAM,EAAEo6G,EAAQp6G,EAAO,CAGhV,IAAIq6G,EAAgB56G,OAAOgzE,OAAO0kC,GAC9BmD,EAAW,CAAC,UAAW,SAAU,OAAQ,SAClCC,EAAiB1D,IAAAA,MAAgBwD,GACjCG,EAAc3D,IAAAA,UAAoB,CAACA,IAAAA,OAAkBA,IAAAA,QAAkBA,IAAAA,UACvE4D,EAAY,SAAmBvvG,EAAOoqG,EAAUC,GACzD,IAAImF,EAAUxvG,EAAMoqG,GACpB,IAAKoF,EACH,OAAO,KAET,KAAMA,aAAmB7rH,MACvB,OAAO,IAAIU,MAAM,iBAAiBC,OAAO8lH,EAAU,eAAe9lH,OAAO4qH,EAAQM,GAAU,mBAAmBlrH,OAAO+lH,EAAe,oCAEtI,IAAIoF,EAAUzvG,EAAMyvG,QACpB,OAAIA,GAAWD,EAAUC,EAChB,IAAIprH,MAAM,iBAAiBC,OAAO8lH,EAAU,eAAe9lH,OAAO4qH,EAAQM,GAAU,mBAAmBlrH,OAAO+lH,EAAe,8CAE/H,IACR,EACUqF,EAAY,SAAmB1vG,EAAOoqG,EAAUC,GACzD,IAAIoF,EAAUzvG,EAAMoqG,GACpB,IAAKqF,EACH,OAAO,KAET,KAAMA,aAAmB9rH,MACvB,OAAO,IAAIU,MAAM,iBAAiBC,OAAO8lH,EAAU,eAAe9lH,OAAO4qH,EAAQO,GAAU,mBAAmBnrH,OAAO+lH,EAAe,oCAEtI,IAAImF,EAAUxvG,EAAMwvG,QACpB,OAAIA,GAAWC,EAAUD,EAChB,IAAInrH,MAAM,iBAAiBC,OAAO8lH,EAAU,eAAe9lH,OAAO4qH,EAAQO,GAAU,mBAAmBnrH,OAAO+lH,EAAe,+CAE/H,IACR,EACUsF,EAAQhE,IAAAA,UAAoB,CAACA,IAAAA,KAAgBA,IAAAA,MAAgB,CACtE/rF,QAAS+rF,IAAAA,QAEAiE,EAAUjE,IAAAA,UAAoB,CAACA,IAAAA,WAAqBhoH,MAAOgoH,IAAAA,QAAkBA,IAAAA,WAAqBhoH,SAClGksH,EAAUlE,IAAAA,QAAkBA,IAAAA,MAAgByD,IAC5C9vG,EAAS,SAAgBU,EAAOoqG,EAAUC,GACnD,IAAIzmG,EAAO5D,EAAMoqG,GAEb0F,EADQ9vG,EAAM++C,OACUqwD,EAC5B,YAAavhH,IAAT+V,IAAsD,IAAhCksG,EAAahjH,QAAQ8W,GACtC,IAAIvf,MAAM,iBAAiBC,OAAO8lH,EAAU,gBAAgB9lH,OAAOsf,EAAM,mBAAmBtf,OAAO+lH,EAAe,wBAAwB/lH,OAAOwrH,EAAatsG,KAAI,SAAU9D,GACjL,MAAO,IAAKpb,OAAOob,EAAG,IACvB,IAAE1F,KAAK,MAAO,OAIV,IACR,EACDsF,EAAO6qG,WAAa,SAAUnqG,EAAOoqG,EAAUC,GAC7C,IAAIzmG,EAAO5D,EAAMoqG,GACjB,OAAKxmG,EAGEtE,EAAOU,EAAOoqG,EAAUC,GAFtB,IAAIhmH,MAAM,aAAaC,OAAO8lH,EAAU,gCAAgC9lH,OAAO+lH,EAAe,yBAAyB/lH,OAAOsf,EAAM,MAG9I,EACM,IAAImsG,EAAiB,CAC1BC,gBAAiBrE,IAAAA,WAAqBhoH,MAAMwmH,WAC5C8F,MAAOtE,IAAAA,WAAqBhoH,MAC5BipH,OAAQjB,IAAAA,OACR8D,QAASC,EACTF,QAASD,EACT7d,QAASia,IAAAA,KACTuE,YAAavE,IAAAA,KACbwE,cAAexE,IAAAA,UAAoB,CAACA,IAAAA,KAAgB2D,IACpDc,YAAazE,IAAAA,UAAoB,CAACA,IAAAA,KAAgBA,IAAAA,OAClDx/G,MAAOyjH,EACPx2F,UAAWuyF,IAAAA,QAEF0E,EAAY,CACrBL,gBAAiBrE,IAAAA,WAAqBhoH,MAAMwmH,WAC5CvpG,QAAS+qG,IAAAA,QAAkBA,IAAAA,QAAkBxB,WAC7C7mH,KAAMqoH,IAAAA,WAAqBhoH,MAAMwmH,WACjCyC,OAAQjB,IAAAA,OACR8D,QAASC,EACTF,QAASD,EACT7d,QAASia,IAAAA,KACTuE,YAAavE,IAAAA,KACb/6F,MAAO+6F,IAAAA,SAAmBA,IAAAA,UAAoB,CAACA,IAAAA,OAAkBA,IAAAA,UACjEwE,cAAexE,IAAAA,UAAoB,CAACA,IAAAA,KAAgB2D,IACpDc,YAAazE,IAAAA,UAAoB,CAACA,IAAAA,KAAgBA,IAAAA,OAClD2E,aAAc3E,IAAAA,MC/EZniG,EAAY,6BACD,SAAS+mG,EAAWluG,GACjC,IAAI2tG,EAAkB3tG,EAAK2tG,gBACzBQ,EAAUnuG,EAAKmuG,QACfC,EAAuBpuG,EAAKkrG,gBAC5BA,OAA2C,IAAzBkD,EAAkCC,EAAyBD,EAC7EE,EAAkBtuG,EAAKsrG,WACvBA,OAAiC,IAApBgD,EAA6B7B,EAAoB6B,EAC9D/D,EAASvqG,EAAKuqG,OACd6C,EAAUptG,EAAKotG,QACfD,EAAUntG,EAAKmtG,QACfoB,EAAwBvuG,EAAKwuG,oBAC7BA,OAAgD,IAA1BD,EAAmC,GAAKA,EAC9DE,EAAqBzuG,EAAKyuG,mBAC1BC,EAAkB1uG,EAAK0uG,gBACvBC,EAAsB3uG,EAAK4uG,eAC3BA,OAAyC,IAAxBD,EAAiC,GAAKA,EACvDE,EAAkB7uG,EAAK8uG,WACvBA,OAAiC,IAApBD,EAA6B,OAAMA,EAChDE,EAAqB/uG,EAAKgvG,cAC1BA,OAAuC,IAAvBD,EAAgC,GAAKA,EACrDE,EAAiBjvG,EAAKkvG,UACtBA,OAA+B,IAAnBD,EAA4B,SAAMA,EAC9CE,EAAsBnvG,EAAKovG,eAC3BA,OAAyC,IAAxBD,EAAiC,GAAKA,EACvDE,EAAkBrvG,EAAKsvG,WACvBA,OAAiC,IAApBD,EAA6B,OAAMA,EAChDE,EAAqBvvG,EAAKwvG,cAC1BA,OAAuC,IAAvBD,EAAgC,GAAKA,EACrDE,EAAiBzvG,EAAK0vG,UACtBA,OAA+B,IAAnBD,EAA4B,SAAMA,EAC9CE,EAAqB3vG,EAAK2vG,mBAC1BC,EAAiB5vG,EAAK4vG,eACtBruG,EAAOvB,EAAKuB,KAEVsuG,EADM7vG,EAAK08C,MACcjyD,QAAQ8W,GAAQ,EACzCuuG,EAAsC,YAATvuG,EAC7BwuG,EFqEC,SAA0B9D,EAAWhrH,GAC1C,OAAQgrH,GACN,IAAK,UACH,OAAO3oH,EAAAA,EAAAA,yBAAwBrC,GACjC,IAAK,SACH,OAAO8C,EAAAA,EAAAA,wBAAuB9C,GAChC,IAAK,OACH,OAAOsD,EAAAA,EAAAA,sBAAqBtD,GAC9B,IAAK,QACH,OAAOgE,EAAAA,EAAAA,uBAAsBhE,GAC/B,QACE,MAAM,IAAIe,MAAM,sBAAsBC,OAAOgqH,IAElD,CElF+B+D,CAAiBzuG,EAAMosG,GACjDsC,EAA2BH,GFgGF,SAA2B7D,EAAWhrH,GACnE,OAAQgrH,GACN,IAAK,SACH,OAAOloH,EAAAA,EAAAA,wBAAuB9C,GAAO,KACvC,IAAK,OACH,OAAOsD,EAAAA,EAAAA,sBAAqBtD,GAAO,IACrC,IAAK,QACH,OAAOgE,EAAAA,EAAAA,uBAAsBhE,GAAO,IACtC,QACE,MAAM,IAAIe,MAAM,sBAAsBC,OAAOgqH,IAElD,CE3G8DiE,CAAkB3uG,EAAMosG,GACjFwC,EAAsBjE,EAAa3qG,EAAMosG,GACzCyC,EAAuBN,GF0GF,SAAuB7D,EAAWhrH,GAC3D,OAAQgrH,GACN,IAAK,SACH,OAAOjoH,EAAAA,EAAAA,oBAAmB/C,EAAM,KAClC,IAAK,OACH,OAAOuD,EAAAA,EAAAA,kBAAiBvD,EAAM,IAChC,IAAK,QACH,OAAOiE,EAAAA,EAAAA,mBAAkBjE,EAAM,IACjC,QACE,MAAM,IAAIe,MAAM,sBAAsBC,OAAOgqH,IAElD,CErH0DoE,CAAc9uG,EAAMosG,GACzE2C,EAAqB,WACvB,GAAIP,EAAwBnuH,cAAgB,EAC1C,OAAO,EAET,IAAI2uH,EFwID,SAAwBtE,EAAWhrH,GACxC,OAAQgrH,GACN,IAAK,UACH,OAAOxoH,EAAAA,EAAAA,uBAAsBxC,GAC/B,IAAK,SACH,OAAOiD,EAAAA,EAAAA,sBAAqBjD,GAC9B,IAAK,OACH,OAAOyD,EAAAA,EAAAA,oBAAmBzD,GAC5B,IAAK,QACH,OAAOmE,EAAAA,EAAAA,qBAAoBnE,GAC7B,QACE,MAAM,IAAIe,MAAM,sBAAsBC,OAAOgqH,IAElD,CErJ+BuE,CAAejvG,EAAMosG,GACjD,OAAOR,GAAWA,GAAWoD,CAC9B,CANwB,GAOrBE,EAAsBX,GAA8B,WACtD,GAAIG,EAAyBruH,cAAgB,EAC3C,OAAO,EAET,IAAI2uH,EF+IqB,SAAyBtE,EAAWhrH,GAC/D,OAAQgrH,GACN,IAAK,SACH,OAAO/nH,EAAAA,EAAAA,sBAAqBjD,GAAO,KACrC,IAAK,OACH,OAAOyD,EAAAA,EAAAA,oBAAmBzD,GAAO,IACnC,IAAK,QACH,OAAOmE,EAAAA,EAAAA,qBAAoBnE,GAAO,IACpC,QACE,MAAM,IAAIe,MAAM,sBAAsBC,OAAOgqH,IAElD,CE1J+ByE,CAAgBnvG,EAAMosG,GAClD,OAAOR,GAAWA,GAAWoD,CAC9B,CANuD,GAOpDI,EAAqBvD,GAAWA,EAAU+C,EAC1CS,EAAsBd,GAA8B1C,GAAWA,EAAUgD,EAa7E,SAASS,EAAY5vH,GACnB,IAAIijB,EAAQ,WACV,OAAQ3C,GACN,IAAK,UACH,OFyLH,SAAyBgpG,EAAQe,EAAYrqH,GAClD,OAAOurH,EAAYjC,EAAQe,GAAY3nH,EAAAA,EAAAA,iBAAgB1C,GACxD,CE3LgB6vH,CAAgBvG,EAAQe,EAAYrqH,GAC7C,IAAK,SACH,OAAO0rH,EAAepC,EAAQe,EAAYrqH,GAC5C,IAAK,OACH,OAAOqqH,EAAWf,EAAQtpH,GAC5B,IAAK,QACH,OAAOiqH,EAAgBX,EAAQtpH,GACjC,QACE,MAAM,IAAIe,MAAM,iBAAiBC,OAAOsf,EAAM,MAEnD,CAbW,GAcZ,OAAOmtG,EAAkBA,EAAgB,CACvCztH,KAAMA,EACNijB,MAAOA,EACPqmG,OAAQA,IAAUtK,EAAAA,EAAAA,iBAClB1+F,KAAMA,IACH2C,CACN,CAqBD,OAAoB6sG,EAAAA,cAAoB,MAAO,CAC7C5pG,UAAWA,GACK,OAAfmoG,GAAuBQ,GAA2CiB,EAAAA,cAAoB,SAAU,CACjG,aAAc3B,EACdjoG,UAAW,GAAGllB,OAAOklB,EAAW,YAAYllB,OAAOklB,EAAW,kBAC9D2W,SAAU2yF,EACVphB,QAzDF,WACEsgB,EAAmBM,EAA0B,QAC9C,EAwDC7jH,KAAM,UACLkjH,GAA2B,OAAdI,GAAmCqB,EAAAA,cAAoB,SAAU,CAC/E,aAAcvB,EACdroG,UAAW,GAAGllB,OAAOklB,EAAW,YAAYllB,OAAOklB,EAAW,iBAC9D2W,SAAUwyF,EACVjhB,QAlEF,WACEsgB,EAAmBI,EAAyB,OAC7C,EAiEC3jH,KAAM,UACLsjH,GAlCH,WACE,IAAIsB,EAAiB,GAAG/uH,OAAOklB,EAAW,WAC1C,OAAoB4pG,EAAAA,cAAoB,SAAU,CAChD,aAAcvC,EACd,YAAaC,EACbtnG,UAAW6pG,EACXlzF,UAAW+xF,EACXxgB,QAAS8e,EACT5/F,MAAO,CACL0iG,SAAU,GAEZ7kH,KAAM,UACQ2kH,EAAAA,cAAoB,OAAQ,CAC1C5pG,UAAW,GAAGllB,OAAO+uH,EAAgB,gBAAgB/uH,OAAO+uH,EAAgB,sBAC3EH,EAAYlD,IAAmBiC,GAA+BmB,EAAAA,cAAoBA,EAAAA,SAAgB,KAAmBA,EAAAA,cAAoB,OAAQ,CAClJ5pG,UAAW,GAAGllB,OAAO+uH,EAAgB,cACpC,YAA0BD,EAAAA,cAAoB,OAAQ,CACvD5pG,UAAW,GAAGllB,OAAO+uH,EAAgB,gBAAgB/uH,OAAO+uH,EAAgB,oBAC3EH,EAAYV,KAChB,CAece,GAA8B,OAAdhC,GAAmC6B,EAAAA,cAAoB,SAAU,CAC9F,aAAc/B,EACd7nG,UAAW,GAAGllB,OAAOklB,EAAW,YAAYllB,OAAOklB,EAAW,iBAC9D2W,SAAU6yF,EACVthB,QAlEF,WACEsgB,EAAmBQ,EAAqB,OACzC,EAiEC/jH,KAAM,UACL8iH,GAA2B,OAAfJ,GAAuBgB,GAA2CiB,EAAAA,cAAoB,SAAU,CAC7G,aAAcnC,EACdznG,UAAW,GAAGllB,OAAOklB,EAAW,YAAYllB,OAAOklB,EAAW,kBAC9D2W,SAAU8yF,EACVvhB,QArEF,WACEsgB,EAAmBS,EAAsB,QAC1C,EAoEChkH,KAAM,UACL0iH,GACJ,CACDZ,EAAWtN,UAAY,CACrB+M,gBAAiBrE,IAAAA,WAAqBhoH,MAAMwmH,WAC5CqG,QAAS7E,IAAAA,KAAAA,WACT4B,gBAAiB5B,IAAAA,KACjBgC,WAAYhC,IAAAA,KACZiB,OAAQjB,IAAAA,OACR8D,QAAS9D,IAAAA,WAAqBhoH,MAC9B6rH,QAAS7D,IAAAA,WAAqBhoH,MAC9BktH,oBAAqBlF,IAAAA,OACrBmF,mBAAoBnF,IAAAA,OACpBoF,gBAAiBpF,IAAAA,KACjBsF,eAAgBtF,IAAAA,OAChBwF,WAAYxF,IAAAA,KACZ0F,cAAe1F,IAAAA,OACf4F,UAAW5F,IAAAA,KACX8F,eAAgB9F,IAAAA,OAChBgG,WAAYhG,IAAAA,KACZkG,cAAelG,IAAAA,OACfoG,UAAWpG,IAAAA,KACXqG,mBAAoBrG,IAAAA,KAAAA,WACpBsG,eAAgBtG,IAAAA,KAChB/nG,KAAMtE,EAAO6qG,WACbprD,MAAO8wD,EAAQ1F,YCvKjB,IAAIqJ,EAAY,CAAC,WAAY,YAAa,YAAa,QAAS,SAAU,QAAS,QACnF,SAASC,KAAiS,OAApRA,GAAWl/G,OAAOQ,OAASR,OAAOQ,OAAO/F,OAAS,SAAUoH,GAAU,IAAK,IAAIvF,EAAI,EAAGA,EAAI2I,UAAU3U,OAAQgM,IAAK,CAAE,IAAIW,EAASgI,UAAU3I,GAAI,IAAK,IAAI7C,KAAOwD,EAAc+C,OAAO/E,UAAUwP,eAAetN,KAAKF,EAAQxD,KAAQoI,EAAOpI,GAAOwD,EAAOxD,GAAW,CAAC,OAAOoI,CAAS,EAASq9G,GAASpgH,MAAM7C,KAAMgJ,UAAa,CACnV,SAASk6G,GAAQ36F,EAAQ46F,GAAkB,IAAI98G,EAAOtC,OAAOsC,KAAKkiB,GAAS,GAAIxkB,OAAOynB,sBAAuB,CAAE,IAAI43F,EAAUr/G,OAAOynB,sBAAsBjD,GAAS46F,IAAmBC,EAAUA,EAAQzzG,QAAO,SAAU0zG,GAAO,OAAOt/G,OAAOkpB,yBAAyB1E,EAAQ86F,GAAKn6F,UAAa,KAAI7iB,EAAKxF,KAAKgC,MAAMwD,EAAM+8G,EAAW,CAAC,OAAO/8G,CAAO,CACrV,SAASi9G,GAAc19G,GAAU,IAAK,IAAIvF,EAAI,EAAGA,EAAI2I,UAAU3U,OAAQgM,IAAK,CAAE,IAAIW,EAAS,MAAQgI,UAAU3I,GAAK2I,UAAU3I,GAAK,CAAC,EAAGA,EAAI,EAAI6iH,GAAQn/G,OAAO/C,IAAS,GAAIzD,SAAQ,SAAUC,GAAO89G,GAAgB11G,EAAQpI,EAAKwD,EAAOxD,GAAQ,IAAIuG,OAAOw/G,0BAA4Bx/G,OAAOC,iBAAiB4B,EAAQ7B,OAAOw/G,0BAA0BviH,IAAWkiH,GAAQn/G,OAAO/C,IAASzD,SAAQ,SAAUC,GAAOuG,OAAOE,eAAe2B,EAAQpI,EAAKuG,OAAOkpB,yBAAyBjsB,EAAQxD,GAAQ,GAAI,CAAC,OAAOoI,CAAS,CAC1f,SAAS01G,GAAgBh3G,EAAK9G,EAAK7B,GAAiK,OAApJ6B,KAAO8G,EAAOP,OAAOE,eAAeK,EAAK9G,EAAK,CAAE7B,MAAOA,EAAOutB,YAAY,EAAMqyF,cAAc,EAAMC,UAAU,IAAkBl3G,EAAI9G,GAAO7B,EAAgB2I,CAAM,CACjN,SAASinB,GAAyBvqB,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAAkExD,EAAK6C,EAAnEuF,EACzF,SAAuC5E,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAA2DxD,EAAK6C,EAA5DuF,EAAS,CAAC,EAAO0lB,EAAavnB,OAAOsC,KAAKrF,GAAqB,IAAKX,EAAI,EAAGA,EAAIirB,EAAWj3B,OAAQgM,IAAO7C,EAAM8tB,EAAWjrB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,IAAaoI,EAAOpI,GAAOwD,EAAOxD,IAAQ,OAAOoI,CAAS,CADjNwlB,CAA8BpqB,EAAQqqB,GAAuB,GAAItnB,OAAOynB,sBAAuB,CAAE,IAAIC,EAAmB1nB,OAAOynB,sBAAsBxqB,GAAS,IAAKX,EAAI,EAAGA,EAAIorB,EAAiBp3B,OAAQgM,IAAO7C,EAAMiuB,EAAiBprB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,GAAkBuG,OAAO/E,UAAU0sB,qBAAqBxqB,KAAKF,EAAQxD,KAAgBoI,EAAOpI,GAAOwD,EAAOxD,GAAS,CAAC,OAAOoI,CAAS,CAI5e,SAAS49G,GAAUxrH,GACjB,MAAO,GAAGlE,OAAOkE,EAAK,IACvB,CACc,SAASyrH,GAAK5xG,GAC3B,IAAI0H,EAAW1H,EAAK0H,SAClBP,EAAYnH,EAAKmH,UACjB0qG,EAAY7xG,EAAK6xG,UACjB7qF,EAAQhnB,EAAKgnB,MACb9lC,EAAS8e,EAAK9e,OACdqtB,EAAQvO,EAAKuO,MACbujG,EAAO9xG,EAAK8xG,KACZC,EAAar4F,GAAyB1Z,EAAMmxG,GAC9C,OAAoBJ,EAAAA,cAAoB,MAAOK,GAAS,CACtDjqG,UAAWA,EACXoH,MAAOkjG,GAAc,CACnBO,QAAS,OACTC,cAAeJ,EACfK,SAAUJ,EAAO,OAAS,WACzBvjG,IACFwjG,GAAahB,EAAAA,SAAAA,IAAmBrpG,GAAU,SAAUD,EAAOxY,GAC5D,OAAoB8hH,EAAAA,aAAmBtpG,EAAOgqG,GAAcA,GAAc,CAAC,EAAGhqG,EAAM9J,OAAQ,CAAC,EAAG,CAC9F4Q,MAAO,CACL4jG,UAAWR,GAAU,IAAM3qF,GAC3BorF,WAAY,EACZnB,SAAU,EACVhqE,SAAU,SACVl4B,WAAY7tB,GAAoB,IAAV+N,EAAc0iH,GAAU,IAAMzwH,EAAS8lC,GAAS,QAG3E,IACF,CCvCD,SAASlN,GAAmBtf,GAAO,OAInC,SAA4BA,GAAO,GAAIzJ,MAAMkD,QAAQuG,GAAM,OAAOgvG,GAAkBhvG,EAAO,CAJjDuf,CAAmBvf,IAG7D,SAA0B2f,GAAQ,GAAsB,qBAAXC,QAAmD,MAAzBD,EAAKC,OAAOC,WAA2C,MAAtBF,EAAK,cAAuB,OAAOppB,MAAMsB,KAAK8nB,EAAQ,CAHzFH,CAAiBxf,IAEtF,SAAqCoR,EAAGu+F,GAAU,IAAKv+F,EAAG,OAAQ,GAAiB,kBAANA,EAAgB,OAAO49F,GAAkB59F,EAAGu+F,GAAS,IAAInrG,EAAI9M,OAAO/E,UAAUgI,SAAS9F,KAAKuc,GAAGtlB,MAAM,GAAI,GAAc,WAAN0Y,GAAkB4M,EAAE9O,cAAakC,EAAI4M,EAAE9O,YAAYvN,MAAM,GAAU,QAANyP,GAAqB,QAANA,EAAa,OAAOjO,MAAMsB,KAAKuZ,GAAI,GAAU,cAAN5M,GAAqB,2CAA2CpG,KAAKoG,GAAI,OAAOwqG,GAAkB59F,EAAGu+F,EAAU,CAFlUC,CAA4B5vG,IAC1H,WAAgC,MAAM,IAAIvM,UAAU,uIAA0I,CAD5DgsB,EAAuB,CAKzJ,SAASuvF,GAAkBhvG,EAAKgnD,IAAkB,MAAPA,GAAeA,EAAMhnD,EAAIhY,UAAQg/D,EAAMhnD,EAAIhY,QAAQ,IAAK,IAAIgM,EAAI,EAAG0rB,EAAO,IAAInpB,MAAMywD,GAAMhzD,EAAIgzD,EAAKhzD,IAAO0rB,EAAK1rB,GAAKgM,EAAIhM,GAAM,OAAO0rB,CAAO,CAmBhL,SAASm4F,GAAmBvoH,EAAOwoH,GACxC,OAAOA,EAAM,IAAMxoH,GAASwoH,EAAM,IAAMxoH,CACzC,CACM,SAASyoH,GAAmBC,EAAcC,GAC/C,OAAOD,EAAa,IAAMC,EAAa,IAAMD,EAAa,IAAMC,EAAa,EAC9E,CACM,SAASC,GAAgBC,EAAQC,GACtC,OAAOP,GAAmBM,EAAO,GAAIC,IAAWP,GAAmBM,EAAO,GAAIC,EAC/E,CACD,SAASC,GAAmBC,EAAYC,EAAWC,GACjD,IACIz0G,EAAU,GACd,GAFcm0G,GAAgBK,EAAWD,GAE5B,CACXv0G,EAAQvP,KAAKgkH,GACb,IAAIC,EAAeZ,GAAmBS,EAAW,GAAIC,GACjDG,EAAab,GAAmBS,EAAW,GAAIC,GAC/CE,GACF10G,EAAQvP,KAAK,GAAG/M,OAAO+wH,EAAe,UAEpCE,GACF30G,EAAQvP,KAAK,GAAG/M,OAAO+wH,EAAe,QAEpCC,GAAgBC,GAClB30G,EAAQvP,KAAK,GAAG/M,OAAO+wH,EAAe,YAEzC,CACD,OAAOz0G,CACR,CACM,SAAS40G,KACd,IAAInzG,EAAO7I,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC9ErN,EAAQkW,EAAKlW,MACbitB,EAAY/W,EAAK+W,UACjB91B,EAAO+e,EAAK/e,KACZmyH,EAAWpzG,EAAKozG,SAChBxF,EAAQ5tG,EAAK4tG,MACXzmG,EAAY,uBACZ5I,EAAU,CAAC4I,GACf,IAAKlmB,EACH,OAAOsd,EAET,IAAKxN,MAAMkD,QAAQhT,KAAUmyH,EAC3B,MAAM,IAAIpxH,MAAM,iHAElB,IAAI2W,EAAM,IAAIrX,KACVyxH,EAAYhiH,MAAMkD,QAAQhT,GAAQA,EAAOkrH,EAASiH,EAAUnyH,GAIhE,GAHIoxH,GAAmB15G,EAAKo6G,IAC1Bx0G,EAAQvP,KAAK,GAAG/M,OAAOklB,EAAW,WAE/Brd,EACH,OAAOyU,EAET,IAAKxN,MAAMkD,QAAQnK,KAAWitB,EAC5B,MAAM,IAAI/0B,MAAM,iHAElB,IAAI8wH,EAAa/hH,MAAMkD,QAAQnK,GAASA,EAAQqiH,EAASp1F,EAAWjtB,GAChEyoH,GAAmBO,EAAYC,GACjCx0G,EAAQvP,KAAK,GAAG/M,OAAOklB,EAAW,aACzBurG,GAAgBI,EAAYC,IACrCx0G,EAAQvP,KAAK,GAAG/M,OAAOklB,EAAW,gBAEpC,IAAIksG,EAAuBR,GAAmBC,EAAYC,EAAW,GAAG9wH,OAAOklB,EAAW,YAC1F5I,EAAQvP,KAAKgC,MAAMuN,EAASub,GAAmBu5F,IAC/C,IAAIC,EAAa,GAAGrxH,OAAO6H,GAC3B,GAAI8jH,GAA+B,IAAtB0F,EAAW9wH,OAAc,CACpC,IAAI+wH,EAAa3F,EAAQkF,EAAW,GAAK,CAACA,EAAW,GAAIlF,GAAS,CAACA,EAAOkF,EAAW,IACjFU,EAAuBX,GAAmBU,EAAYR,EAAW,GAAG9wH,OAAOklB,EAAW,YAC1F5I,EAAQvP,KAAKgC,MAAMuN,EAASub,GAAmB05F,GAChD,CACD,OAAOj1G,CACR,CDrDDqzG,GAAKhR,UAAY,CACfl5F,SAAU4hG,IAAAA,KACVniG,UAAWmiG,IAAAA,OACXtiF,MAAOsiF,IAAAA,OAAAA,WACPuI,UAAWvI,IAAAA,OACXpoH,OAAQooH,IAAAA,OACR/6F,MAAO+6F,IAAAA,SAAmBA,IAAAA,UAAoB,CAACA,IAAAA,OAAkBA,IAAAA,UACjEwI,KAAMxI,IAAAA,ME/CR,IAAI6H,GAAY,CAAC,YAAa,QAAS,gBAAiB,WAAY,MAAO,QAAS,SAAU,QAAS,OAAQ,OAAQ,QAAS,aAChI,SAASE,GAAQ36F,EAAQ46F,GAAkB,IAAI98G,EAAOtC,OAAOsC,KAAKkiB,GAAS,GAAIxkB,OAAOynB,sBAAuB,CAAE,IAAI43F,EAAUr/G,OAAOynB,sBAAsBjD,GAAS46F,IAAmBC,EAAUA,EAAQzzG,QAAO,SAAU0zG,GAAO,OAAOt/G,OAAOkpB,yBAAyB1E,EAAQ86F,GAAKn6F,UAAa,KAAI7iB,EAAKxF,KAAKgC,MAAMwD,EAAM+8G,EAAW,CAAC,OAAO/8G,CAAO,CACrV,SAASi9G,GAAc19G,GAAU,IAAK,IAAIvF,EAAI,EAAGA,EAAI2I,UAAU3U,OAAQgM,IAAK,CAAE,IAAIW,EAAS,MAAQgI,UAAU3I,GAAK2I,UAAU3I,GAAK,CAAC,EAAGA,EAAI,EAAI6iH,GAAQn/G,OAAO/C,IAAS,GAAIzD,SAAQ,SAAUC,GAAO89G,GAAgB11G,EAAQpI,EAAKwD,EAAOxD,GAAQ,IAAIuG,OAAOw/G,0BAA4Bx/G,OAAOC,iBAAiB4B,EAAQ7B,OAAOw/G,0BAA0BviH,IAAWkiH,GAAQn/G,OAAO/C,IAASzD,SAAQ,SAAUC,GAAOuG,OAAOE,eAAe2B,EAAQpI,EAAKuG,OAAOkpB,yBAAyBjsB,EAAQxD,GAAQ,GAAI,CAAC,OAAOoI,CAAS,CAC1f,SAAS01G,GAAgBh3G,EAAK9G,EAAK7B,GAAiK,OAApJ6B,KAAO8G,EAAOP,OAAOE,eAAeK,EAAK9G,EAAK,CAAE7B,MAAOA,EAAOutB,YAAY,EAAMqyF,cAAc,EAAMC,UAAU,IAAkBl3G,EAAI9G,GAAO7B,EAAgB2I,CAAM,CACjN,SAAS2+G,KAAiS,OAApRA,GAAWl/G,OAAOQ,OAASR,OAAOQ,OAAO/F,OAAS,SAAUoH,GAAU,IAAK,IAAIvF,EAAI,EAAGA,EAAI2I,UAAU3U,OAAQgM,IAAK,CAAE,IAAIW,EAASgI,UAAU3I,GAAI,IAAK,IAAI7C,KAAOwD,EAAc+C,OAAO/E,UAAUwP,eAAetN,KAAKF,EAAQxD,KAAQoI,EAAOpI,GAAOwD,EAAOxD,GAAW,CAAC,OAAOoI,CAAS,EAASq9G,GAASpgH,MAAM7C,KAAMgJ,UAAa,CACnV,SAASuiB,GAAyBvqB,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAAkExD,EAAK6C,EAAnEuF,EACzF,SAAuC5E,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAA2DxD,EAAK6C,EAA5DuF,EAAS,CAAC,EAAO0lB,EAAavnB,OAAOsC,KAAKrF,GAAqB,IAAKX,EAAI,EAAGA,EAAIirB,EAAWj3B,OAAQgM,IAAO7C,EAAM8tB,EAAWjrB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,IAAaoI,EAAOpI,GAAOwD,EAAOxD,IAAQ,OAAOoI,CAAS,CADjNwlB,CAA8BpqB,EAAQqqB,GAAuB,GAAItnB,OAAOynB,sBAAuB,CAAE,IAAIC,EAAmB1nB,OAAOynB,sBAAsBxqB,GAAS,IAAKX,EAAI,EAAGA,EAAIorB,EAAiBp3B,OAAQgM,IAAO7C,EAAMiuB,EAAiBprB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,GAAkBuG,OAAO/E,UAAU0sB,qBAAqBxqB,KAAKF,EAAQxD,KAAgBoI,EAAOpI,GAAOwD,EAAOxD,GAAS,CAAC,OAAOoI,CAAS,CAO7d,SAAS0/G,GAAUzzG,GAiBhC,IAhBA,IAAImH,EAAYnH,EAAKmH,UACnBusG,EAAa1zG,EAAKgnB,MAClBA,OAAuB,IAAf0sF,EAAwB,EAAIA,EACpCC,EAAgB3zG,EAAK2zG,cACrBP,EAAWpzG,EAAKozG,SAChBx7E,EAAM53B,EAAK43B,IACXg2E,EAAQ5tG,EAAK4tG,MACb1sH,EAAS8e,EAAK9e,OACdkqB,EAAQpL,EAAKoL,MACbwoG,EAAY5zG,EAAKo/C,KACjBA,OAAqB,IAAdw0D,EAAuB,EAAIA,EAClCC,EAAO7zG,EAAK8zG,KACZhqH,EAAQkW,EAAKlW,MACbitB,EAAY/W,EAAK+W,UACjBi3F,EAAYt0F,GAAyB1Z,EAAMmxG,IACzC4C,EAAQ,GACHvkE,EAAQpkC,EAAOokC,GAAS5X,EAAK4X,GAAS4P,EAAM,CACnD,IAAIn+D,EAAO0yH,EAAcnkE,GACzBukE,EAAM/kH,KAAmB+hH,EAAAA,cAAoB8C,EAAMzC,GAAS,CAC1DzlH,IAAK1K,EAAKM,UACVgd,QAAS40G,GAAe,CACtBrpH,MAAOA,EACPitB,UAAWA,EACX91B,KAAMA,EACNmyH,SAAUA,EACVxF,MAAOA,IAET3sH,KAAMA,EACNuuD,MAAOA,GACNw+D,IACJ,CACD,OAAoB+C,EAAAA,cAAoBa,GAAM,CAC5CzqG,UAAWA,EACX6f,MAAOA,EACP9lC,OAAQA,EACR4wH,MAAM,GACLiC,EACJ,CClDD,SAASlH,GAAQp6G,GAAkC,OAAOo6G,GAAU,mBAAqBzyF,QAAU,iBAAmBA,OAAOC,SAAW,SAAU5nB,GAAO,cAAcA,CAAM,EAAG,SAAUA,GAAO,OAAOA,GAAO,mBAAqB2nB,QAAU3nB,EAAIqK,cAAgBsd,QAAU3nB,IAAQ2nB,OAAOjtB,UAAY,gBAAkBsF,CAAM,EAAEo6G,GAAQp6G,EAAO,CAChV,SAAS4+G,GAAQ36F,EAAQ46F,GAAkB,IAAI98G,EAAOtC,OAAOsC,KAAKkiB,GAAS,GAAIxkB,OAAOynB,sBAAuB,CAAE,IAAI43F,EAAUr/G,OAAOynB,sBAAsBjD,GAAS46F,IAAmBC,EAAUA,EAAQzzG,QAAO,SAAU0zG,GAAO,OAAOt/G,OAAOkpB,yBAAyB1E,EAAQ86F,GAAKn6F,UAAa,KAAI7iB,EAAKxF,KAAKgC,MAAMwD,EAAM+8G,EAAW,CAAC,OAAO/8G,CAAO,CACrV,SAASi9G,GAAc19G,GAAU,IAAK,IAAIvF,EAAI,EAAGA,EAAI2I,UAAU3U,OAAQgM,IAAK,CAAE,IAAIW,EAAS,MAAQgI,UAAU3I,GAAK2I,UAAU3I,GAAK,CAAC,EAAGA,EAAI,EAAI6iH,GAAQn/G,OAAO/C,IAAS,GAAIzD,SAAQ,SAAUC,GAAO89G,GAAgB11G,EAAQpI,EAAKwD,EAAOxD,GAAQ,IAAIuG,OAAOw/G,0BAA4Bx/G,OAAOC,iBAAiB4B,EAAQ7B,OAAOw/G,0BAA0BviH,IAAWkiH,GAAQn/G,OAAO/C,IAASzD,SAAQ,SAAUC,GAAOuG,OAAOE,eAAe2B,EAAQpI,EAAKuG,OAAOkpB,yBAAyBjsB,EAAQxD,GAAQ,GAAI,CAAC,OAAOoI,CAAS,CAC1f,SAASigH,GAAgB9mH,EAAU+mH,GAAe,KAAM/mH,aAAoB+mH,GAAgB,MAAM,IAAIhmH,UAAU,oCAAyC,CACzJ,SAASimH,GAAkBngH,EAAQ4J,GAAS,IAAK,IAAInP,EAAI,EAAGA,EAAImP,EAAMnb,OAAQgM,IAAK,CAAE,IAAIyzG,EAAatkG,EAAMnP,GAAIyzG,EAAW5qF,WAAa4qF,EAAW5qF,aAAc,EAAO4qF,EAAWyH,cAAe,EAAU,UAAWzH,IAAYA,EAAW0H,UAAW,GAAMz3G,OAAOE,eAAe2B,EAAQkuG,EAAWt2G,IAAKs2G,EAAc,CAAE,CAG7T,SAASkS,GAAgBvoG,EAAGf,GAA6I,OAAxIspG,GAAkBjiH,OAAOysD,eAAiBzsD,OAAOysD,eAAehyD,OAAS,SAAyBif,EAAGf,GAAsB,OAAjBe,EAAEgzC,UAAY/zC,EAAUe,CAAI,EAASuoG,GAAgBvoG,EAAGf,EAAK,CACxM,SAASupG,GAAaC,GAAW,IAAIC,EAGrC,WAAuC,GAAuB,qBAAZC,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,oBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhF9vD,QAAQz3D,UAAUiS,QAAQ/P,KAAKklH,QAAQC,UAAU5vD,QAAS,IAAI,WAAc,MAAW,CAAmC,CAA3B,MAAOjuD,GAAK,OAAO,CAAQ,CAAE,CAHxQg+G,GAA6B,OAAO,WAAkC,IAAsCx4G,EAAlCy4G,EAAQC,GAAgBR,GAAkB,GAAIC,EAA2B,CAAE,IAAIQ,EAAYD,GAAgB1mH,MAAM2O,YAAaX,EAASo4G,QAAQC,UAAUI,EAAOz9G,UAAW29G,EAAa,MAAQ34G,EAASy4G,EAAM5jH,MAAM7C,KAAMgJ,WAAc,OAAO49G,GAA2B5mH,KAAMgO,EAAU,CAAG,CACza,SAAS44G,GAA2Bz1G,EAAMjQ,GAAQ,GAAIA,IAA2B,WAAlBw9G,GAAQx9G,IAAsC,oBAATA,GAAwB,OAAOA,EAAa,QAAa,IAATA,EAAmB,MAAM,IAAIpB,UAAU,4DAA+D,OAAO+mH,GAAuB11G,EAAQ,CAChS,SAAS01G,GAAuB11G,GAAQ,QAAa,IAATA,EAAmB,MAAM,IAAI21G,eAAe,6DAAgE,OAAO31G,CAAO,CAEtK,SAASu1G,GAAgBjpG,GAA+J,OAA1JipG,GAAkB3iH,OAAOysD,eAAiBzsD,OAAOuK,eAAe9P,OAAS,SAAyBif,GAAK,OAAOA,EAAEgzC,WAAa1sD,OAAOuK,eAAemP,EAAK,EAASipG,GAAgBjpG,EAAK,CACpN,SAAS69F,GAAgBh3G,EAAK9G,EAAK7B,GAAiK,OAApJ6B,KAAO8G,EAAOP,OAAOE,eAAeK,EAAK9G,EAAK,CAAE7B,MAAOA,EAAOutB,YAAY,EAAMqyF,cAAc,EAAMC,UAAU,IAAkBl3G,EAAI9G,GAAO7B,EAAgB2I,CAAM,CAKjN,SAASyiH,GAAkB7I,EAAOC,GAChC,OAAOD,IAAUC,IAAUD,GAASC,GAASD,GAASC,GAASD,EAAM9qH,YAAc+qH,EAAM/qH,SAC1F,CACD,SAAS+jE,GAAS6vD,EAAWhhH,GAC3B,IAAIw5G,EAAkBwH,EAAUxH,gBAC9B1sH,EAAOk0H,EAAUl0H,KACjBsgB,EAAO4zG,EAAU5zG,KACnB,MAAuB,oBAATpN,EAAsBA,EAAK,CACvCw5G,gBAAiBA,EACjB1sH,KAAMA,EACNsgB,KAAMA,IACHpN,CACN,CDqBDs/G,GAAU7S,UAAY6Q,GAAcA,GAAc,CAAC,EAAG/D,GAAiB,CAAC,EAAG,CACzEC,gBAAiBrE,IAAAA,WAAqBhoH,MACtC0lC,MAAOsiF,IAAAA,OACPqK,cAAerK,IAAAA,KAAAA,WACf8J,SAAU9J,IAAAA,OACVpoH,OAAQooH,IAAAA,OACRlqD,KAAMkqD,IAAAA,OACNwK,KAAMxK,IAAAA,KAAAA,aC3BR,IAAIuK,GAAoB,SAAUuB,IAzBlC,SAAmBC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIrnH,UAAU,sDAAyDonH,EAASloH,UAAY+E,OAAO7E,OAAOioH,GAAcA,EAAWnoH,UAAW,CAAE2P,YAAa,CAAEhT,MAAOurH,EAAU1L,UAAU,EAAMD,cAAc,KAAWx3G,OAAOE,eAAeijH,EAAU,YAAa,CAAE1L,UAAU,IAAc2L,GAAYnB,GAAgBkB,EAAUC,EAAc,CA0BlcC,CAAU1B,EAAMuB,GAChB,IA5BoBnB,EAAauB,EAAYC,EA4BzCC,EAAStB,GAAaP,GAC1B,SAASA,IACP,IAAI8B,EACJ3B,GAAgB7lH,KAAM0lH,GACtB,IAAK,IAAI5tG,EAAO9O,UAAU3U,OAAQ0U,EAAO,IAAInG,MAAMkV,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/EhP,EAAKgP,GAAQ/O,UAAU+O,GAIzB,OADAujG,GAAgBuL,GADhBW,EAAQD,EAAOrmH,KAAK2B,MAAM0kH,EAAQ,CAACvnH,MAAMlM,OAAOiV,KACD,QAAS,CAAC,GAClDy+G,CACR,CAgED,OAtGoB1B,EAuCPJ,EAvCgC4B,EAmFzC,CAAC,CACH9pH,IAAK,2BACL7B,MAAO,SAAkCqrH,EAAWS,GAClD,IAAIjI,EAAkBwH,EAAUxH,gBAC9BG,EAAgBqH,EAAUrH,cAC1BC,EAAcoH,EAAUpH,YACtB8H,EAAY,CAAC,EAUjB,OATI/H,IAAkB8H,EAAUE,oBAAsBZ,GAAkBvH,EAAiBiI,EAAUG,yBACjGF,EAAU/H,cAAgBxoD,GAAS6vD,EAAWrH,GAC9C+H,EAAUC,mBAAqBhI,IAE7BC,IAAgB6H,EAAUI,kBAAoBd,GAAkBvH,EAAiBiI,EAAUG,yBAC7FF,EAAU9H,YAAczoD,GAAS6vD,EAAWpH,GAC5C8H,EAAUG,iBAAmBjI,GAE/B8H,EAAUE,qBAAuBpI,EAC1BkI,CACR,KApG8BL,EAuCd,CAAC,CAClB7pH,IAAK,SACL7B,MAAO,WACL,IAAImsH,EAAc9nH,KAAKwP,MACrBgwG,EAAkBsI,EAAYtI,gBAC9BjmG,EAAWuuG,EAAYvuG,SACvBnJ,EAAU03G,EAAY13G,QACtBtd,EAAOg1H,EAAYh1H,KACnBi1H,EAAaD,EAAYC,WACzB3L,EAAS0L,EAAY1L,OACrB6C,EAAU6I,EAAY7I,QACtB+I,EAAmBF,EAAYE,iBAC/BhJ,EAAU8I,EAAY9I,QACtBiJ,EAAmBH,EAAYG,iBAC/B/mB,EAAU4mB,EAAY5mB,QACtBwe,EAAcoI,EAAYpI,YAC1Bt/F,EAAQ0nG,EAAY1nG,MACpB0/F,EAAegI,EAAYhI,aAC3B1sG,EAAO00G,EAAY10G,KACjB80G,EAAcloH,KAAKqX,MACrBsoG,EAAgBuI,EAAYvI,cAC5BC,EAAcsI,EAAYtI,YAC5B,OAAoBgD,EAAAA,cAAoB,SAAU,CAChD5pG,WAAWlI,EAAAA,EAAAA,SAAKV,EAASuvG,GACzBhwF,SAAUqvF,GAAWiJ,EAAiBjJ,GAAWlsH,GAAQmsH,GAAW+I,EAAiB/I,GAAWnsH,GAAQgtH,GAAgBA,EAAa,CACnIN,gBAAiBA,EACjB1sH,KAAMA,EACNsgB,KAAMA,IAER8tF,QAASA,GAAW,SAAUriF,GAC5B,OAAOqiF,EAAQpuG,EAAM+rB,EACtB,EACDspG,QAASzI,GAAe,WACtB,OAAOA,EAAY5sH,EACpB,EACD4sH,YAAaA,GAAe,WAC1B,OAAOA,EAAY5sH,EACpB,EACDstB,MAAOA,EACPniB,KAAM,UACL8pH,EAA0BnF,EAAAA,cAAoB,OAAQ,CACvD,aAAcmF,EAAW3L,EAAQtpH,IAChCymB,GAAYA,EAAUqmG,EAC1B,MAlFyEmG,GAAkBD,EAAY9mH,UAAWqoH,GAAiBC,GAAavB,GAAkBD,EAAawB,GAAcvjH,OAAOE,eAAe6hH,EAAa,YAAa,CAAEtK,UAAU,IAsGrPkK,CACR,CA7EuB,CA6EtB0C,EAAAA,WAEF1C,GAAKjT,UAAY6Q,GAAcA,GAAc,CAAC,EAAGzD,GAAY,CAAC,EAAG,CAC/DtmG,SAAU4hG,IAAAA,KAAAA,WACV4M,WAAY5M,IAAAA,KACZ6M,iBAAkB7M,IAAAA,KAAAA,WAClB8M,iBAAkB9M,IAAAA,KAAAA,aClHpB,IAAI6H,GAAY,CAAC,UAAW,cAC5B,SAASE,GAAQ36F,EAAQ46F,GAAkB,IAAI98G,EAAOtC,OAAOsC,KAAKkiB,GAAS,GAAIxkB,OAAOynB,sBAAuB,CAAE,IAAI43F,EAAUr/G,OAAOynB,sBAAsBjD,GAAS46F,IAAmBC,EAAUA,EAAQzzG,QAAO,SAAU0zG,GAAO,OAAOt/G,OAAOkpB,yBAAyB1E,EAAQ86F,GAAKn6F,UAAa,KAAI7iB,EAAKxF,KAAKgC,MAAMwD,EAAM+8G,EAAW,CAAC,OAAO/8G,CAAO,CACrV,SAASi9G,GAAc19G,GAAU,IAAK,IAAIvF,EAAI,EAAGA,EAAI2I,UAAU3U,OAAQgM,IAAK,CAAE,IAAIW,EAAS,MAAQgI,UAAU3I,GAAK2I,UAAU3I,GAAK,CAAC,EAAGA,EAAI,EAAI6iH,GAAQn/G,OAAO/C,IAAS,GAAIzD,SAAQ,SAAUC,GAAO89G,GAAgB11G,EAAQpI,EAAKwD,EAAOxD,GAAQ,IAAIuG,OAAOw/G,0BAA4Bx/G,OAAOC,iBAAiB4B,EAAQ7B,OAAOw/G,0BAA0BviH,IAAWkiH,GAAQn/G,OAAO/C,IAASzD,SAAQ,SAAUC,GAAOuG,OAAOE,eAAe2B,EAAQpI,EAAKuG,OAAOkpB,yBAAyBjsB,EAAQxD,GAAQ,GAAI,CAAC,OAAOoI,CAAS,CAC1f,SAAS01G,GAAgBh3G,EAAK9G,EAAK7B,GAAiK,OAApJ6B,KAAO8G,EAAOP,OAAOE,eAAeK,EAAK9G,EAAK,CAAE7B,MAAOA,EAAOutB,YAAY,EAAMqyF,cAAc,EAAMC,UAAU,IAAkBl3G,EAAI9G,GAAO7B,EAAgB2I,CAAM,CACjN,SAAS2+G,KAAiS,OAApRA,GAAWl/G,OAAOQ,OAASR,OAAOQ,OAAO/F,OAAS,SAAUoH,GAAU,IAAK,IAAIvF,EAAI,EAAGA,EAAI2I,UAAU3U,OAAQgM,IAAK,CAAE,IAAIW,EAASgI,UAAU3I,GAAI,IAAK,IAAI7C,KAAOwD,EAAc+C,OAAO/E,UAAUwP,eAAetN,KAAKF,EAAQxD,KAAQoI,EAAOpI,GAAOwD,EAAOxD,GAAW,CAAC,OAAOoI,CAAS,EAASq9G,GAASpgH,MAAM7C,KAAMgJ,UAAa,CACnV,SAASuiB,GAAyBvqB,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAAkExD,EAAK6C,EAAnEuF,EACzF,SAAuC5E,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAA2DxD,EAAK6C,EAA5DuF,EAAS,CAAC,EAAO0lB,EAAavnB,OAAOsC,KAAKrF,GAAqB,IAAKX,EAAI,EAAGA,EAAIirB,EAAWj3B,OAAQgM,IAAO7C,EAAM8tB,EAAWjrB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,IAAaoI,EAAOpI,GAAOwD,EAAOxD,IAAQ,OAAOoI,CAAS,CADjNwlB,CAA8BpqB,EAAQqqB,GAAuB,GAAItnB,OAAOynB,sBAAuB,CAAE,IAAIC,EAAmB1nB,OAAOynB,sBAAsBxqB,GAAS,IAAKX,EAAI,EAAGA,EAAIorB,EAAiBp3B,OAAQgM,IAAO7C,EAAMiuB,EAAiBprB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,GAAkBuG,OAAO/E,UAAU0sB,qBAAqBxqB,KAAKF,EAAQxD,KAAgBoI,EAAOpI,GAAOwD,EAAOxD,GAAS,CAAC,OAAOoI,CAAS,CAU7d,SAASyiH,GAAOx2G,GAC7B,IAAIzB,EAAUyB,EAAKzB,QACjB+vG,EAAkBtuG,EAAKsrG,WACvBA,OAAiC,IAApBgD,EAA6B7B,EAAoB6B,EAC9DyD,EAAar4F,GAAyB1Z,EAAMmxG,IAC1ClwH,EAAO8wH,EAAW9wH,KACpBspH,EAASwH,EAAWxH,OACtB,OAAoBwG,EAAAA,cAAoB8C,GAAMzC,GAAS,CAAC,EAAGW,EAAY,CACrExzG,QAAS,GAAGtc,OAAOsc,EATP,iDAUZ43G,iBAAkBlyH,EAAAA,aAClBmyH,iBAAkBxyH,EAAAA,eAClB2d,KAAM,YACJorG,EAAepC,EAAQe,EAAYrqH,GACxC,CC5BD,SAASowH,GAAQ36F,EAAQ46F,GAAkB,IAAI98G,EAAOtC,OAAOsC,KAAKkiB,GAAS,GAAIxkB,OAAOynB,sBAAuB,CAAE,IAAI43F,EAAUr/G,OAAOynB,sBAAsBjD,GAAS46F,IAAmBC,EAAUA,EAAQzzG,QAAO,SAAU0zG,GAAO,OAAOt/G,OAAOkpB,yBAAyB1E,EAAQ86F,GAAKn6F,UAAa,KAAI7iB,EAAKxF,KAAKgC,MAAMwD,EAAM+8G,EAAW,CAAC,OAAO/8G,CAAO,CAErV,SAASi1G,GAAgBh3G,EAAK9G,EAAK7B,GAAiK,OAApJ6B,KAAO8G,EAAOP,OAAOE,eAAeK,EAAK9G,EAAK,CAAE7B,MAAOA,EAAOutB,YAAY,EAAMqyF,cAAc,EAAMC,UAAU,IAAkBl3G,EAAI9G,GAAO7B,EAAgB2I,CAAM,CACjN,SAAS2+G,KAAiS,OAApRA,GAAWl/G,OAAOQ,OAASR,OAAOQ,OAAO/F,OAAS,SAAUoH,GAAU,IAAK,IAAIvF,EAAI,EAAGA,EAAI2I,UAAU3U,OAAQgM,IAAK,CAAE,IAAIW,EAASgI,UAAU3I,GAAI,IAAK,IAAI7C,KAAOwD,EAAc+C,OAAO/E,UAAUwP,eAAetN,KAAKF,EAAQxD,KAAQoI,EAAOpI,GAAOwD,EAAOxD,GAAW,CAAC,OAAOoI,CAAS,EAASq9G,GAASpgH,MAAM7C,KAAMgJ,UAAa,CAOpU,SAASs/G,GAAQ94G,GAC9B,IACIyN,ERkBC,SAA+BnqB,GACpC,IAAIy1H,GAAiBzzH,EAAAA,EAAAA,iBAAgBhC,GACrC,OAAOU,EAAAA,EAAAA,SAAQ+0H,EAChB,CQrBaC,CADUh5G,EAAMgwG,iBAExB/1E,EAAMxsB,EAAQ,GAClB,OAAoB2lG,EAAAA,cAAoB0C,GAAWrC,GAAS,CAAC,EAAGzzG,EAAO,CACrEwJ,UAAW,wCACXwsG,cAAe/vH,EAAAA,eACfwvH,SAAU,SACVx7E,IAAKA,EACLxsB,MAAOA,EACPg0C,KAAM,GACN00D,KAAM0C,KAET,CCrBc,SAASI,GAAYj5G,GAIlC,OAAoBozG,EAAAA,cAAoB,MAAO,CAC7C5pG,UAAW,gCAHS4pG,EAAAA,cAAoB0F,GAAS94G,GAKpD,CFoBD64G,GAAO5V,UAAY6Q,GAAcA,GAAc,CAAC,EAAGzD,GAAY,CAAC,EAAG,CACjE1C,WAAYhC,IAAAA,OCNdmN,GAAQ7V,UAvBR,SAAuB7sG,GAAU,IAAK,IAAIvF,EAAI,EAAGA,EAAI2I,UAAU3U,OAAQgM,IAAK,CAAE,IAAIW,EAAS,MAAQgI,UAAU3I,GAAK2I,UAAU3I,GAAK,CAAC,EAAGA,EAAI,EAAI6iH,GAAQn/G,OAAO/C,IAAS,GAAIzD,SAAQ,SAAUC,GAAO89G,GAAgB11G,EAAQpI,EAAKwD,EAAOxD,GAAQ,IAAIuG,OAAOw/G,0BAA4Bx/G,OAAOC,iBAAiB4B,EAAQ7B,OAAOw/G,0BAA0BviH,IAAWkiH,GAAQn/G,OAAO/C,IAASzD,SAAQ,SAAUC,GAAOuG,OAAOE,eAAe2B,EAAQpI,EAAKuG,OAAOkpB,yBAAyBjsB,EAAQxD,GAAQ,GAAI,CAAC,OAAOoI,CAAS,CAuBte09G,CAAc,CAAC,EAAG/D,GExBtC,IAAIyD,GAAY,CAAC,UAAW,cAC5B,SAASE,GAAQ36F,EAAQ46F,GAAkB,IAAI98G,EAAOtC,OAAOsC,KAAKkiB,GAAS,GAAIxkB,OAAOynB,sBAAuB,CAAE,IAAI43F,EAAUr/G,OAAOynB,sBAAsBjD,GAAS46F,IAAmBC,EAAUA,EAAQzzG,QAAO,SAAU0zG,GAAO,OAAOt/G,OAAOkpB,yBAAyB1E,EAAQ86F,GAAKn6F,UAAa,KAAI7iB,EAAKxF,KAAKgC,MAAMwD,EAAM+8G,EAAW,CAAC,OAAO/8G,CAAO,CACrV,SAASi9G,GAAc19G,GAAU,IAAK,IAAIvF,EAAI,EAAGA,EAAI2I,UAAU3U,OAAQgM,IAAK,CAAE,IAAIW,EAAS,MAAQgI,UAAU3I,GAAK2I,UAAU3I,GAAK,CAAC,EAAGA,EAAI,EAAI6iH,GAAQn/G,OAAO/C,IAAS,GAAIzD,SAAQ,SAAUC,GAAO89G,GAAgB11G,EAAQpI,EAAKwD,EAAOxD,GAAQ,IAAIuG,OAAOw/G,0BAA4Bx/G,OAAOC,iBAAiB4B,EAAQ7B,OAAOw/G,0BAA0BviH,IAAWkiH,GAAQn/G,OAAO/C,IAASzD,SAAQ,SAAUC,GAAOuG,OAAOE,eAAe2B,EAAQpI,EAAKuG,OAAOkpB,yBAAyBjsB,EAAQxD,GAAQ,GAAI,CAAC,OAAOoI,CAAS,CAC1f,SAAS01G,GAAgBh3G,EAAK9G,EAAK7B,GAAiK,OAApJ6B,KAAO8G,EAAOP,OAAOE,eAAeK,EAAK9G,EAAK,CAAE7B,MAAOA,EAAOutB,YAAY,EAAMqyF,cAAc,EAAMC,UAAU,IAAkBl3G,EAAI9G,GAAO7B,EAAgB2I,CAAM,CACjN,SAAS2+G,KAAiS,OAApRA,GAAWl/G,OAAOQ,OAASR,OAAOQ,OAAO/F,OAAS,SAAUoH,GAAU,IAAK,IAAIvF,EAAI,EAAGA,EAAI2I,UAAU3U,OAAQgM,IAAK,CAAE,IAAIW,EAASgI,UAAU3I,GAAI,IAAK,IAAI7C,KAAOwD,EAAc+C,OAAO/E,UAAUwP,eAAetN,KAAKF,EAAQxD,KAAQoI,EAAOpI,GAAOwD,EAAOxD,GAAW,CAAC,OAAOoI,CAAS,EAASq9G,GAASpgH,MAAM7C,KAAMgJ,UAAa,CACnV,SAASuiB,GAAyBvqB,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAAkExD,EAAK6C,EAAnEuF,EACzF,SAAuC5E,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAA2DxD,EAAK6C,EAA5DuF,EAAS,CAAC,EAAO0lB,EAAavnB,OAAOsC,KAAKrF,GAAqB,IAAKX,EAAI,EAAGA,EAAIirB,EAAWj3B,OAAQgM,IAAO7C,EAAM8tB,EAAWjrB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,IAAaoI,EAAOpI,GAAOwD,EAAOxD,IAAQ,OAAOoI,CAAS,CADjNwlB,CAA8BpqB,EAAQqqB,GAAuB,GAAItnB,OAAOynB,sBAAuB,CAAE,IAAIC,EAAmB1nB,OAAOynB,sBAAsBxqB,GAAS,IAAKX,EAAI,EAAGA,EAAIorB,EAAiBp3B,OAAQgM,IAAO7C,EAAMiuB,EAAiBprB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,GAAkBuG,OAAO/E,UAAU0sB,qBAAqBxqB,KAAKF,EAAQxD,KAAgBoI,EAAOpI,GAAOwD,EAAOxD,GAAS,CAAC,OAAOoI,CAAS,CAS7d,SAAS8iH,GAAK72G,GAC3B,IAAIzB,EAAUyB,EAAKzB,QACjB+vG,EAAkBtuG,EAAKsrG,WACvBA,OAAiC,IAApBgD,EAA6B7B,EAAoB6B,EAC9DyD,EAAar4F,GAAyB1Z,EAAMmxG,IAC1ClwH,EAAO8wH,EAAW9wH,KACpBspH,EAASwH,EAAWxH,OACtB,OAAoBwG,EAAAA,cAAoB8C,GAAMzC,GAAS,CAAC,EAAGW,EAAY,CACrExzG,QAAS,GAAGtc,OAAOsc,EATP,4CAUZ43G,iBAAkB1xH,EAAAA,WAClB2xH,iBAAkB/xH,EAAAA,aAClBkd,KAAM,WACJ+pG,EAAWf,EAAQtpH,GACxB,CC3BD,SAASowH,GAAQ36F,EAAQ46F,GAAkB,IAAI98G,EAAOtC,OAAOsC,KAAKkiB,GAAS,GAAIxkB,OAAOynB,sBAAuB,CAAE,IAAI43F,EAAUr/G,OAAOynB,sBAAsBjD,GAAS46F,IAAmBC,EAAUA,EAAQzzG,QAAO,SAAU0zG,GAAO,OAAOt/G,OAAOkpB,yBAAyB1E,EAAQ86F,GAAKn6F,UAAa,KAAI7iB,EAAKxF,KAAKgC,MAAMwD,EAAM+8G,EAAW,CAAC,OAAO/8G,CAAO,CAErV,SAASi1G,GAAgBh3G,EAAK9G,EAAK7B,GAAiK,OAApJ6B,KAAO8G,EAAOP,OAAOE,eAAeK,EAAK9G,EAAK,CAAE7B,MAAOA,EAAOutB,YAAY,EAAMqyF,cAAc,EAAMC,UAAU,IAAkBl3G,EAAI9G,GAAO7B,EAAgB2I,CAAM,CACjN,SAAS2+G,KAAiS,OAApRA,GAAWl/G,OAAOQ,OAASR,OAAOQ,OAAO/F,OAAS,SAAUoH,GAAU,IAAK,IAAIvF,EAAI,EAAGA,EAAI2I,UAAU3U,OAAQgM,IAAK,CAAE,IAAIW,EAASgI,UAAU3I,GAAI,IAAK,IAAI7C,KAAOwD,EAAc+C,OAAO/E,UAAUwP,eAAetN,KAAKF,EAAQxD,KAAQoI,EAAOpI,GAAOwD,EAAOxD,GAAW,CAAC,OAAOoI,CAAS,EAASq9G,GAASpgH,MAAM7C,KAAMgJ,UAAa,CAMpU,SAAS2/G,GAAMn5G,GAC5B,IACIyN,EX2BC,SAA8BnqB,GACnC,IAAI81H,GAAgBnzH,EAAAA,EAAAA,gBAAe3C,GACnC,OAAOU,EAAAA,EAAAA,SAAQo1H,EAChB,CW9BaC,CADUr5G,EAAMgwG,iBAExB/1E,EAAMxsB,EAAQ,EAClB,OAAoB2lG,EAAAA,cAAoB0C,GAAWrC,GAAS,CAAC,EAAGzzG,EAAO,CACrEwJ,UAAW,qCACXwsG,cAAe,SAAuB9xH,GACpC,IAAIZ,EAAO,IAAIK,KAGf,OAFAL,EAAKmC,YAAYvB,EAAM,EAAG,GAC1BZ,EAAKoC,SAAS,EAAG,EAAG,EAAG,GAChBpC,CACR,EACDmyH,SAAU,OACVx7E,IAAKA,EACLxsB,MAAOA,EACP0oG,KAAM+C,KAET,CCxBc,SAASI,GAAWt5G,GAIjC,OAAoBozG,EAAAA,cAAoB,MAAO,CAC7C5pG,UAAW,+BAHS4pG,EAAAA,cAAoB+F,GAAOn5G,GAKlD,CFmBDk5G,GAAKjW,UAAY6Q,GAAcA,GAAc,CAAC,EAAGzD,GAAY,CAAC,EAAG,CAC/D1C,WAAYhC,IAAAA,OCFdwN,GAAMlW,UA1BN,SAAuB7sG,GAAU,IAAK,IAAIvF,EAAI,EAAGA,EAAI2I,UAAU3U,OAAQgM,IAAK,CAAE,IAAIW,EAAS,MAAQgI,UAAU3I,GAAK2I,UAAU3I,GAAK,CAAC,EAAGA,EAAI,EAAI6iH,GAAQn/G,OAAO/C,IAAS,GAAIzD,SAAQ,SAAUC,GAAO89G,GAAgB11G,EAAQpI,EAAKwD,EAAOxD,GAAQ,IAAIuG,OAAOw/G,0BAA4Bx/G,OAAOC,iBAAiB4B,EAAQ7B,OAAOw/G,0BAA0BviH,IAAWkiH,GAAQn/G,OAAO/C,IAASzD,SAAQ,SAAUC,GAAOuG,OAAOE,eAAe2B,EAAQpI,EAAKuG,OAAOkpB,yBAAyBjsB,EAAQxD,GAAQ,GAAI,CAAC,OAAOoI,CAAS,CA0Bxe09G,CAAc,CAAC,EAAG/D,GE3BpC,IAAIyD,GAAY,CAAC,UAAW,cAAe,mBAC3C,SAASE,GAAQ36F,EAAQ46F,GAAkB,IAAI98G,EAAOtC,OAAOsC,KAAKkiB,GAAS,GAAIxkB,OAAOynB,sBAAuB,CAAE,IAAI43F,EAAUr/G,OAAOynB,sBAAsBjD,GAAS46F,IAAmBC,EAAUA,EAAQzzG,QAAO,SAAU0zG,GAAO,OAAOt/G,OAAOkpB,yBAAyB1E,EAAQ86F,GAAKn6F,UAAa,KAAI7iB,EAAKxF,KAAKgC,MAAMwD,EAAM+8G,EAAW,CAAC,OAAO/8G,CAAO,CACrV,SAASi9G,GAAc19G,GAAU,IAAK,IAAIvF,EAAI,EAAGA,EAAI2I,UAAU3U,OAAQgM,IAAK,CAAE,IAAIW,EAAS,MAAQgI,UAAU3I,GAAK2I,UAAU3I,GAAK,CAAC,EAAGA,EAAI,EAAI6iH,GAAQn/G,OAAO/C,IAAS,GAAIzD,SAAQ,SAAUC,GAAO89G,GAAgB11G,EAAQpI,EAAKwD,EAAOxD,GAAQ,IAAIuG,OAAOw/G,0BAA4Bx/G,OAAOC,iBAAiB4B,EAAQ7B,OAAOw/G,0BAA0BviH,IAAWkiH,GAAQn/G,OAAO/C,IAASzD,SAAQ,SAAUC,GAAOuG,OAAOE,eAAe2B,EAAQpI,EAAKuG,OAAOkpB,yBAAyBjsB,EAAQxD,GAAQ,GAAI,CAAC,OAAOoI,CAAS,CAC1f,SAAS01G,GAAgBh3G,EAAK9G,EAAK7B,GAAiK,OAApJ6B,KAAO8G,EAAOP,OAAOE,eAAeK,EAAK9G,EAAK,CAAE7B,MAAOA,EAAOutB,YAAY,EAAMqyF,cAAc,EAAMC,UAAU,IAAkBl3G,EAAI9G,GAAO7B,EAAgB2I,CAAM,CACjN,SAAS2+G,KAAiS,OAApRA,GAAWl/G,OAAOQ,OAASR,OAAOQ,OAAO/F,OAAS,SAAUoH,GAAU,IAAK,IAAIvF,EAAI,EAAGA,EAAI2I,UAAU3U,OAAQgM,IAAK,CAAE,IAAIW,EAASgI,UAAU3I,GAAI,IAAK,IAAI7C,KAAOwD,EAAc+C,OAAO/E,UAAUwP,eAAetN,KAAKF,EAAQxD,KAAQoI,EAAOpI,GAAOwD,EAAOxD,GAAW,CAAC,OAAOoI,CAAS,EAASq9G,GAASpgH,MAAM7C,KAAMgJ,UAAa,CACnV,SAASuiB,GAAyBvqB,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAAkExD,EAAK6C,EAAnEuF,EACzF,SAAuC5E,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAA2DxD,EAAK6C,EAA5DuF,EAAS,CAAC,EAAO0lB,EAAavnB,OAAOsC,KAAKrF,GAAqB,IAAKX,EAAI,EAAGA,EAAIirB,EAAWj3B,OAAQgM,IAAO7C,EAAM8tB,EAAWjrB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,IAAaoI,EAAOpI,GAAOwD,EAAOxD,IAAQ,OAAOoI,CAAS,CADjNwlB,CAA8BpqB,EAAQqqB,GAAuB,GAAItnB,OAAOynB,sBAAuB,CAAE,IAAIC,EAAmB1nB,OAAOynB,sBAAsBxqB,GAAS,IAAKX,EAAI,EAAGA,EAAIorB,EAAiBp3B,OAAQgM,IAAO7C,EAAMiuB,EAAiBprB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,GAAkBuG,OAAO/E,UAAU0sB,qBAAqBxqB,KAAKF,EAAQxD,KAAgBoI,EAAOpI,GAAOwD,EAAOxD,GAAS,CAAC,OAAOoI,CAAS,CAS7d,SAASmjH,GAAMl3G,GAC5B,IAAIzB,EAAUyB,EAAKzB,QACjB44G,EAAmBn3G,EAAKirG,YACxBA,OAAmC,IAArBkM,EAA8BC,EAAqBD,EACjE/I,EAAuBpuG,EAAKkrG,gBAC5BA,OAA2C,IAAzBkD,EAAkCC,EAAyBD,EAC7E2D,EAAar4F,GAAyB1Z,EAAMmxG,IAC1ClwH,EAAO8wH,EAAW9wH,KACpBspH,EAASwH,EAAWxH,OACtB,OAAoBwG,EAAAA,cAAoB8C,GAAMzC,GAAS,CAAC,EAAGW,EAAY,CACrExzG,QAAS,GAAGtc,OAAOsc,EAXP,4CAYZ23G,WAAYhL,EACZiL,iBAAkBhxH,EAAAA,YAClBixH,iBAAkBrxH,EAAAA,cAClBwc,KAAM,SACJ0pG,EAAYV,EAAQtpH,GACzB,CC9BD,SAASowH,GAAQ36F,EAAQ46F,GAAkB,IAAI98G,EAAOtC,OAAOsC,KAAKkiB,GAAS,GAAIxkB,OAAOynB,sBAAuB,CAAE,IAAI43F,EAAUr/G,OAAOynB,sBAAsBjD,GAAS46F,IAAmBC,EAAUA,EAAQzzG,QAAO,SAAU0zG,GAAO,OAAOt/G,OAAOkpB,yBAAyB1E,EAAQ86F,GAAKn6F,UAAa,KAAI7iB,EAAKxF,KAAKgC,MAAMwD,EAAM+8G,EAAW,CAAC,OAAO/8G,CAAO,CACrV,SAASi9G,GAAc19G,GAAU,IAAK,IAAIvF,EAAI,EAAGA,EAAI2I,UAAU3U,OAAQgM,IAAK,CAAE,IAAIW,EAAS,MAAQgI,UAAU3I,GAAK2I,UAAU3I,GAAK,CAAC,EAAGA,EAAI,EAAI6iH,GAAQn/G,OAAO/C,IAAS,GAAIzD,SAAQ,SAAUC,GAAO89G,GAAgB11G,EAAQpI,EAAKwD,EAAOxD,GAAQ,IAAIuG,OAAOw/G,0BAA4Bx/G,OAAOC,iBAAiB4B,EAAQ7B,OAAOw/G,0BAA0BviH,IAAWkiH,GAAQn/G,OAAO/C,IAASzD,SAAQ,SAAUC,GAAOuG,OAAOE,eAAe2B,EAAQpI,EAAKuG,OAAOkpB,yBAAyBjsB,EAAQxD,GAAQ,GAAI,CAAC,OAAOoI,CAAS,CAC1f,SAAS01G,GAAgBh3G,EAAK9G,EAAK7B,GAAiK,OAApJ6B,KAAO8G,EAAOP,OAAOE,eAAeK,EAAK9G,EAAK,CAAE7B,MAAOA,EAAOutB,YAAY,EAAMqyF,cAAc,EAAMC,UAAU,IAAkBl3G,EAAI9G,GAAO7B,EAAgB2I,CAAM,CACjN,SAAS2+G,KAAiS,OAApRA,GAAWl/G,OAAOQ,OAASR,OAAOQ,OAAO/F,OAAS,SAAUoH,GAAU,IAAK,IAAIvF,EAAI,EAAGA,EAAI2I,UAAU3U,OAAQgM,IAAK,CAAE,IAAIW,EAASgI,UAAU3I,GAAI,IAAK,IAAI7C,KAAOwD,EAAc+C,OAAO/E,UAAUwP,eAAetN,KAAKF,EAAQxD,KAAQoI,EAAOpI,GAAOwD,EAAOxD,GAAW,CAAC,OAAOoI,CAAS,EAASq9G,GAASpgH,MAAM7C,KAAMgJ,UAAa,CAOpU,SAASkgH,GAAO15G,GAC7B,IAAIgwG,EAAkBhwG,EAAMgwG,gBAGxB9rH,GAAOF,EAAAA,EAAAA,SAAQgsH,GACnB,OAAoBoD,EAAAA,cAAoB0C,GAAWrC,GAAS,CAAC,EAAGzzG,EAAO,CACrEwJ,UAAW,oCACXwsG,cAAe,SAAuB7H,GACpC,IAAI7qH,EAAO,IAAIK,KAGf,OAFAL,EAAKmC,YAAYvB,EAAMiqH,EAAY,GACnC7qH,EAAKoC,SAAS,EAAG,EAAG,EAAG,GAChBpC,CACR,EACDmyH,SAAU,QACVx7E,IAXQ,GAYRxsB,MAbU,EAcV0oG,KAAMoD,KAET,CC1Bc,SAASI,GAAS35G,GAI/B,OAAoBozG,EAAAA,cAAoB,MAAO,CAC7C5pG,UAAW,6BAHS4pG,EAAAA,cAAoBsG,GAAQ15G,GAKnD,CFsBDu5G,GAAMtW,UAAY6Q,GAAcA,GAAc,CAAC,EAAGzD,GAAY,CAAC,EAAG,CAChE/C,YAAa3B,IAAAA,KACb4B,gBAAiB5B,IAAAA,OCJnB+N,GAAOzW,UAAY6Q,GAAcA,GAAc,CAAC,EAAG/D,GAAiB,CAAC,EAAG,CACtEnD,OAAQjB,IAAAA,SE9BV,IAAI6H,GAAY,CAAC,YAAa,iBAAkB,eAAgB,UAAW,qBAC3E,SAASE,GAAQ36F,EAAQ46F,GAAkB,IAAI98G,EAAOtC,OAAOsC,KAAKkiB,GAAS,GAAIxkB,OAAOynB,sBAAuB,CAAE,IAAI43F,EAAUr/G,OAAOynB,sBAAsBjD,GAAS46F,IAAmBC,EAAUA,EAAQzzG,QAAO,SAAU0zG,GAAO,OAAOt/G,OAAOkpB,yBAAyB1E,EAAQ86F,GAAKn6F,UAAa,KAAI7iB,EAAKxF,KAAKgC,MAAMwD,EAAM+8G,EAAW,CAAC,OAAO/8G,CAAO,CACrV,SAASi9G,GAAc19G,GAAU,IAAK,IAAIvF,EAAI,EAAGA,EAAI2I,UAAU3U,OAAQgM,IAAK,CAAE,IAAIW,EAAS,MAAQgI,UAAU3I,GAAK2I,UAAU3I,GAAK,CAAC,EAAGA,EAAI,EAAI6iH,GAAQn/G,OAAO/C,IAAS,GAAIzD,SAAQ,SAAUC,GAAO89G,GAAgB11G,EAAQpI,EAAKwD,EAAOxD,GAAQ,IAAIuG,OAAOw/G,0BAA4Bx/G,OAAOC,iBAAiB4B,EAAQ7B,OAAOw/G,0BAA0BviH,IAAWkiH,GAAQn/G,OAAO/C,IAASzD,SAAQ,SAAUC,GAAOuG,OAAOE,eAAe2B,EAAQpI,EAAKuG,OAAOkpB,yBAAyBjsB,EAAQxD,GAAQ,GAAI,CAAC,OAAOoI,CAAS,CAC1f,SAAS01G,GAAgBh3G,EAAK9G,EAAK7B,GAAiK,OAApJ6B,KAAO8G,EAAOP,OAAOE,eAAeK,EAAK9G,EAAK,CAAE7B,MAAOA,EAAOutB,YAAY,EAAMqyF,cAAc,EAAMC,UAAU,IAAkBl3G,EAAI9G,GAAO7B,EAAgB2I,CAAM,CACjN,SAAS2+G,KAAiS,OAApRA,GAAWl/G,OAAOQ,OAASR,OAAOQ,OAAO/F,OAAS,SAAUoH,GAAU,IAAK,IAAIvF,EAAI,EAAGA,EAAI2I,UAAU3U,OAAQgM,IAAK,CAAE,IAAIW,EAASgI,UAAU3I,GAAI,IAAK,IAAI7C,KAAOwD,EAAc+C,OAAO/E,UAAUwP,eAAetN,KAAKF,EAAQxD,KAAQoI,EAAOpI,GAAOwD,EAAOxD,GAAW,CAAC,OAAOoI,CAAS,EAASq9G,GAASpgH,MAAM7C,KAAMgJ,UAAa,CACnV,SAASuiB,GAAyBvqB,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAAkExD,EAAK6C,EAAnEuF,EACzF,SAAuC5E,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAA2DxD,EAAK6C,EAA5DuF,EAAS,CAAC,EAAO0lB,EAAavnB,OAAOsC,KAAKrF,GAAqB,IAAKX,EAAI,EAAGA,EAAIirB,EAAWj3B,OAAQgM,IAAO7C,EAAM8tB,EAAWjrB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,IAAaoI,EAAOpI,GAAOwD,EAAOxD,IAAQ,OAAOoI,CAAS,CADjNwlB,CAA8BpqB,EAAQqqB,GAAuB,GAAItnB,OAAOynB,sBAAuB,CAAE,IAAIC,EAAmB1nB,OAAOynB,sBAAsBxqB,GAAS,IAAKX,EAAI,EAAGA,EAAIorB,EAAiBp3B,OAAQgM,IAAO7C,EAAMiuB,EAAiBprB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,GAAkBuG,OAAO/E,UAAU0sB,qBAAqBxqB,KAAKF,EAAQxD,KAAgBoI,EAAOpI,GAAOwD,EAAOxD,GAAS,CAAC,OAAOoI,CAAS,CAS5e,IAAIoT,GAAY,wCACD,SAASowG,GAAIv3G,GAC1B,IAAIw3G,EAAiBx3G,EAAK+qG,UACxBA,OAA+B,IAAnByM,EAA4BC,EAAmBD,EAC3DE,EAAsB13G,EAAKgrG,eAC3BA,OAAyC,IAAxB0M,EAAiCC,EAAwBD,EAC1E/L,EAAe3rG,EAAK2rG,aACpBptG,EAAUyB,EAAKzB,QACfq5G,EAAoB53G,EAAK43G,kBACzB7F,EAAar4F,GAAyB1Z,EAAMmxG,IAC1ClwH,EAAO8wH,EAAW9wH,KACpBspH,EAASwH,EAAWxH,OACtB,OAAoBwG,EAAAA,cAAoB8C,GAAMzC,GAAS,CAAC,EAAGW,EAAY,CACrExzG,QAAS,GAAGtc,OAAOsc,EAAS4I,GAAWylG,EAAU3rH,EAAM0qH,GAAgB,GAAG1pH,OAAOklB,GAAW,aAAe,KAAMlmB,EAAKiB,aAAe01H,EAAoB,GAAG31H,OAAOklB,GAAW,sBAAwB,MACtM+uG,WAAYlL,EACZmL,iBAAkBtwH,EAAAA,UAClBuwH,iBAAkB3wH,EAAAA,YAClB8b,KAAM,UACJwpG,EAAUR,EAAQtpH,GACvB,CACDs2H,GAAI3W,UAAY6Q,GAAcA,GAAc,CAAC,EAAGzD,GAAY,CAAC,EAAG,CAC9D4J,kBAAmBtO,IAAAA,OAAAA,WACnByB,UAAWzB,IAAAA,KACX0B,eAAgB1B,IAAAA,OCrClB,IAAI6H,GAAY,CAAC,yBAA0B,wBAC3C,SAASE,GAAQ36F,EAAQ46F,GAAkB,IAAI98G,EAAOtC,OAAOsC,KAAKkiB,GAAS,GAAIxkB,OAAOynB,sBAAuB,CAAE,IAAI43F,EAAUr/G,OAAOynB,sBAAsBjD,GAAS46F,IAAmBC,EAAUA,EAAQzzG,QAAO,SAAU0zG,GAAO,OAAOt/G,OAAOkpB,yBAAyB1E,EAAQ86F,GAAKn6F,UAAa,KAAI7iB,EAAKxF,KAAKgC,MAAMwD,EAAM+8G,EAAW,CAAC,OAAO/8G,CAAO,CAErV,SAASi1G,GAAgBh3G,EAAK9G,EAAK7B,GAAiK,OAApJ6B,KAAO8G,EAAOP,OAAOE,eAAeK,EAAK9G,EAAK,CAAE7B,MAAOA,EAAOutB,YAAY,EAAMqyF,cAAc,EAAMC,UAAU,IAAkBl3G,EAAI9G,GAAO7B,EAAgB2I,CAAM,CACjN,SAAS2+G,KAAiS,OAApRA,GAAWl/G,OAAOQ,OAASR,OAAOQ,OAAO/F,OAAS,SAAUoH,GAAU,IAAK,IAAIvF,EAAI,EAAGA,EAAI2I,UAAU3U,OAAQgM,IAAK,CAAE,IAAIW,EAASgI,UAAU3I,GAAI,IAAK,IAAI7C,KAAOwD,EAAc+C,OAAO/E,UAAUwP,eAAetN,KAAKF,EAAQxD,KAAQoI,EAAOpI,GAAOwD,EAAOxD,GAAW,CAAC,OAAOoI,CAAS,EAASq9G,GAASpgH,MAAM7C,KAAMgJ,UAAa,CACnV,SAASuiB,GAAyBvqB,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAAkExD,EAAK6C,EAAnEuF,EACzF,SAAuC5E,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAA2DxD,EAAK6C,EAA5DuF,EAAS,CAAC,EAAO0lB,EAAavnB,OAAOsC,KAAKrF,GAAqB,IAAKX,EAAI,EAAGA,EAAIirB,EAAWj3B,OAAQgM,IAAO7C,EAAM8tB,EAAWjrB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,IAAaoI,EAAOpI,GAAOwD,EAAOxD,IAAQ,OAAOoI,CAAS,CADjNwlB,CAA8BpqB,EAAQqqB,GAAuB,GAAItnB,OAAOynB,sBAAuB,CAAE,IAAIC,EAAmB1nB,OAAOynB,sBAAsBxqB,GAAS,IAAKX,EAAI,EAAGA,EAAIorB,EAAiBp3B,OAAQgM,IAAO7C,EAAMiuB,EAAiBprB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,GAAkBuG,OAAO/E,UAAU0sB,qBAAqBxqB,KAAKF,EAAQxD,KAAgBoI,EAAOpI,GAAOwD,EAAOxD,GAAS,CAAC,OAAOoI,CAAS,CAS7d,SAAS8jH,GAAKl6G,GAC3B,IAAIgwG,EAAkBhwG,EAAMgwG,gBAC1BhC,EAAehuG,EAAMguG,aACnBmM,EAAyBn6G,EAAMm6G,uBACjCC,EAAuBp6G,EAAMo6G,qBAC7BhG,EAAar4F,GAAyB/b,EAAOwzG,IAC3CtvH,GAAOF,EAAAA,EAAAA,SAAQgsH,GACf7B,GAAa5pH,EAAAA,EAAAA,UAASyrH,GACtBqK,EAAwBF,GAA0BC,EAClDE,EAAYvM,EAAaiC,EAAiBhC,GAC1CzqH,EAAS82H,EAAwB,EAAIC,EAOrC7sG,EAAmD,GAA1C4sG,GAAyBC,EAAY,GAO9CrgF,EAAM,WACR,GAAIkgF,EAEF,OAAO1sG,EAAQ,GAAQ,EAEzB,IAAI8sG,GAAcjyH,EAAAA,EAAAA,gBAAe0nH,GACjC,GAAIoK,EAAsB,CACxB,IAAII,EAAgB,IAAI72H,KAIxB,OAHA62H,EAAc/0H,YAAYvB,EAAMiqH,EAAYoM,GAC5CC,EAAc90H,SAAS,EAAG,EAAG,EAAG,GAEzB60H,GADqB,EAAIxM,EAAayM,EAAexM,GAAgB,EAE7E,CACD,OAAOuM,CACR,CAdS,GAeV,OAAoBnH,EAAAA,cAAoB0C,GAAWrC,GAAS,CAAC,EAAGW,EAAY,CAC1E5qG,UAAW,mCACX6f,MAAO,EACP4wF,kBAAmB9L,EACnB6H,cAAe,SAAuBnuH,GACpC,IAAIvE,EAAO,IAAIK,KAGf,OAFAL,EAAKmC,YAAYvB,EAAMiqH,EAAYtmH,GACnCvE,EAAKoC,SAAS,EAAG,EAAG,EAAG,GAChBpC,CACR,EACDmyH,SAAU,MACVx7E,IAAKA,EACL12C,OAAQA,EACRkqB,MAAOA,EACP0oG,KAAMyD,KAET,CACDM,GAAKjX,UApEL,SAAuB7sG,GAAU,IAAK,IAAIvF,EAAI,EAAGA,EAAI2I,UAAU3U,OAAQgM,IAAK,CAAE,IAAIW,EAAS,MAAQgI,UAAU3I,GAAK2I,UAAU3I,GAAK,CAAC,EAAGA,EAAI,EAAI6iH,GAAQn/G,OAAO/C,IAAS,GAAIzD,SAAQ,SAAUC,GAAO89G,GAAgB11G,EAAQpI,EAAKwD,EAAOxD,GAAQ,IAAIuG,OAAOw/G,0BAA4Bx/G,OAAOC,iBAAiB4B,EAAQ7B,OAAOw/G,0BAA0BviH,IAAWkiH,GAAQn/G,OAAO/C,IAASzD,SAAQ,SAAUC,GAAOuG,OAAOE,eAAe2B,EAAQpI,EAAKuG,OAAOkpB,yBAAyBjsB,EAAQxD,GAAQ,GAAI,CAAC,OAAOoI,CAAS,CAoEze09G,CAAc,CAC7B9F,aAAcqB,EAAelF,WAC7BgQ,uBAAwBxO,IAAAA,KACxByO,qBAAsBzO,IAAAA,MACrBoE,GClEH,IAAIvmG,GAAY,uCACZixG,GAAmB,GAAGn2H,OAAOklB,GAAW,aAC7B,SAASkxG,GAAS16G,GAa/B,IAZA,IAAIguG,EAAehuG,EAAMguG,aACvB2M,EAAwB36G,EAAMwtG,mBAC9BA,OAA+C,IAA1BmN,EAAmCC,EAA4BD,EACpFE,EAAuB76G,EAAM0tG,cAC7BA,OAAyC,IAAzBmN,EAAkCC,EAAuBD,EACzEjO,EAAS5sG,EAAM4sG,OACfmO,EAAe/6G,EAAM+6G,aACnBC,EAAU,IAAIr3H,KACds3H,GAAe7zH,EAAAA,EAAAA,eAAc4zH,GAC7B92H,GAAOF,EAAAA,EAAAA,SAAQi3H,GACf9M,GAAa5pH,EAAAA,EAAAA,UAAS02H,GACtBC,EAAW,GACNzN,EAAU,EAAGA,GAAW,EAAGA,GAAW,EAAG,CAChD,IAAI0N,EAAc,IAAIx3H,KAAKO,EAAMiqH,EAAYV,EAAUM,EAAakN,EAAcjN,IAC9EoN,EAAO1N,EAAcd,EAAQuO,GACjCD,EAAS7pH,KAAmB+hH,EAAAA,cAAoB,MAAO,CACrDplH,IAAKy/G,EACLjkG,WAAWlI,EAAAA,EAAAA,SAAKm5G,GAAkBxL,EAAUkM,EAAanN,IAAiB,GAAG1pH,OAAOm2H,GAAkB,eACxFrH,EAAAA,cAAoB,OAAQ,CAC1C,aAAcgI,EACdx+E,MAAOw+E,GACN5N,EAAmBZ,EAAQuO,GAAazhH,QAAQ,IAAK,MACzD,CACD,OAAoB05G,EAAAA,cAAoBa,GAAM,CAC5CzqG,UAAWA,GACX6f,MAAO,EACPsvF,QAASoC,EACT7K,YAAa6K,GACZG,EACJ,CACDR,GAASzX,UAAY,CACnB+K,aAAcqB,EAAelF,WAC7BqD,mBAAoB7B,IAAAA,KACpB+B,cAAe/B,IAAAA,KACfiB,OAAQjB,IAAAA,OACRoP,aAAcpP,IAAAA,MC9ChB,IAAI6H,GAAY,CAAC,OAAQ,oBAAqB,cAC9C,SAASC,KAAiS,OAApRA,GAAWl/G,OAAOQ,OAASR,OAAOQ,OAAO/F,OAAS,SAAUoH,GAAU,IAAK,IAAIvF,EAAI,EAAGA,EAAI2I,UAAU3U,OAAQgM,IAAK,CAAE,IAAIW,EAASgI,UAAU3I,GAAI,IAAK,IAAI7C,KAAOwD,EAAc+C,OAAO/E,UAAUwP,eAAetN,KAAKF,EAAQxD,KAAQoI,EAAOpI,GAAOwD,EAAOxD,GAAW,CAAC,OAAOoI,CAAS,EAASq9G,GAASpgH,MAAM7C,KAAMgJ,UAAa,CACnV,SAASk6G,GAAQ36F,EAAQ46F,GAAkB,IAAI98G,EAAOtC,OAAOsC,KAAKkiB,GAAS,GAAIxkB,OAAOynB,sBAAuB,CAAE,IAAI43F,EAAUr/G,OAAOynB,sBAAsBjD,GAAS46F,IAAmBC,EAAUA,EAAQzzG,QAAO,SAAU0zG,GAAO,OAAOt/G,OAAOkpB,yBAAyB1E,EAAQ86F,GAAKn6F,UAAa,KAAI7iB,EAAKxF,KAAKgC,MAAMwD,EAAM+8G,EAAW,CAAC,OAAO/8G,CAAO,CAErV,SAASi1G,GAAgBh3G,EAAK9G,EAAK7B,GAAiK,OAApJ6B,KAAO8G,EAAOP,OAAOE,eAAeK,EAAK9G,EAAK,CAAE7B,MAAOA,EAAOutB,YAAY,EAAMqyF,cAAc,EAAMC,UAAU,IAAkBl3G,EAAI9G,GAAO7B,EAAgB2I,CAAM,CACjN,SAASinB,GAAyBvqB,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAAkExD,EAAK6C,EAAnEuF,EACzF,SAAuC5E,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAA2DxD,EAAK6C,EAA5DuF,EAAS,CAAC,EAAO0lB,EAAavnB,OAAOsC,KAAKrF,GAAqB,IAAKX,EAAI,EAAGA,EAAIirB,EAAWj3B,OAAQgM,IAAO7C,EAAM8tB,EAAWjrB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,IAAaoI,EAAOpI,GAAOwD,EAAOxD,IAAQ,OAAOoI,CAAS,CADjNwlB,CAA8BpqB,EAAQqqB,GAAuB,GAAItnB,OAAOynB,sBAAuB,CAAE,IAAIC,EAAmB1nB,OAAOynB,sBAAsBxqB,GAAS,IAAKX,EAAI,EAAGA,EAAIorB,EAAiBp3B,OAAQgM,IAAO7C,EAAMiuB,EAAiBprB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,GAAkBuG,OAAO/E,UAAU0sB,qBAAqBxqB,KAAKF,EAAQxD,KAAgBoI,EAAOpI,GAAOwD,EAAOxD,GAAS,CAAC,OAAOoI,CAAS,CAK7d,SAASilH,GAAWh5G,GACjC,IAAI/e,EAAO+e,EAAK/e,KACdg4H,EAAoBj5G,EAAKi5G,kBACzBC,EAAal5G,EAAKk5G,WAEhBv7G,EAZN,SAAuB5J,GAAU,IAAK,IAAIvF,EAAI,EAAGA,EAAI2I,UAAU3U,OAAQgM,IAAK,CAAE,IAAIW,EAAS,MAAQgI,UAAU3I,GAAK2I,UAAU3I,GAAK,CAAC,EAAGA,EAAI,EAAI6iH,GAAQn/G,OAAO/C,IAAS,GAAIzD,SAAQ,SAAUC,GAAO89G,GAAgB11G,EAAQpI,EAAKwD,EAAOxD,GAAQ,IAAIuG,OAAOw/G,0BAA4Bx/G,OAAOC,iBAAiB4B,EAAQ7B,OAAOw/G,0BAA0BviH,IAAWkiH,GAAQn/G,OAAO/C,IAASzD,SAAQ,SAAUC,GAAOuG,OAAOE,eAAe2B,EAAQpI,EAAKuG,OAAOkpB,yBAAyBjsB,EAAQxD,GAAQ,GAAI,CAAC,OAAOoI,CAAS,CAY5e09G,CAAc,CACxBtqG,UAPY,wBAKCuS,GAAyB1Z,EAAMmxG,KAI1CzpG,EAAwBqpG,EAAAA,cAAoB,OAAQ,KAAMmI,GAC9D,OAAOD,EAAiClI,EAAAA,cAAoB,SAAUK,GAAS,CAAC,EAAGzzG,EAAO,CACxF0xF,QAAS,SAAiBriF,GACxB,OAAOisG,EAAkBC,EAAYj4H,EAAM+rB,EAC5C,EACD5gB,KAAM,WACJsb,GAAyBqpG,EAAAA,cAAoB,MAAOpzG,EAAO+J,EAChE,CClBc,SAASyxG,GAAYx7G,GAClC,IAAIgwG,EAAkBhwG,EAAMgwG,gBAC1BhC,EAAehuG,EAAMguG,aACrBsN,EAAoBt7G,EAAMs7G,kBAC1BP,EAAe/6G,EAAM+6G,aACrBZ,EAAyBn6G,EAAMm6G,uBAC7BsB,EAAgB,WAClB,GAAItB,EACF,OAAO,EAET,IAEIuB,GAFepzH,EAAAA,EAAAA,gBAAe0nH,IAEP,EADRjC,EAAaiC,EAAiBhC,IAEjD,OAAO,EAAI/2G,KAAKshD,KAAKmjE,EAAO,EAC7B,CARmB,GAShB3M,EAAQ,WAKV,IAJA,IAAI7qH,GAAOF,EAAAA,EAAAA,SAAQgsH,GACf7B,GAAa5pH,EAAAA,EAAAA,UAASyrH,GACtBnoH,GAAMpD,EAAAA,EAAAA,SAAQurH,GACdxxG,EAAS,GACJlN,EAAQ,EAAGA,EAAQmqH,EAAenqH,GAAS,EAClDkN,EAAOnN,KAAK68G,EAAe,IAAIvqH,KAAKO,EAAMiqH,EAAYtmH,EAAc,EAARyJ,GAAY08G,IAE1E,OAAOxvG,CACR,CATW,GAURm9G,EAAc5M,EAAMvrG,KAAI,SAAUlgB,GACpC,OpBoCG,SAAuBA,GAC5B,IAKIs4H,EALA5N,EAAex0G,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,GAAmBA,UAAU,GAAKyyG,EAAeG,SAClGyP,EAA4B7N,IAAiB/B,EAAeI,GAAKJ,EAAeI,GAAKJ,EAAeG,SACpG0P,EAAc5N,EAAe5qH,EAAM0qH,GACnC9pH,GAAOF,EAAAA,EAAAA,SAAQV,GAAQ,EAK3B,GAEEs4H,EAAmB1N,EADJ,IAAIvqH,KAAKO,EAAM,EAAG23H,IAA8B5P,EAAeG,SAAW,EAAI,GAC7C4B,GAChD9pH,GAAQ,QACDZ,EAAOs4H,GAChB,OAAO3kH,KAAK4kC,OAAOigF,EAAcF,GAAf,QAAmD,CACtE,CoBnDUG,CAAcz4H,EAAM0qH,EAC5B,IACD,OAAoBoF,EAAAA,cAAoBa,GAAM,CAC5CzqG,UAAW,0CACX6f,MAAOoyF,EACPvH,UAAW,SACXyE,QAASoC,EACT7K,YAAa6K,EACbnqG,MAAO,CACL4jG,UAAW,sBACXC,WAAY,IAEbkH,EAAYn4G,KAAI,SAAU+3G,EAAYS,GACvC,OAAoB5I,EAAAA,cAAoBiI,GAAY,CAClDrtH,IAAKutH,EACLj4H,KAAMyrH,EAAMiN,GACZV,kBAAmBA,EACnBC,WAAYA,GAEf,IACF,CD3BDF,GAAWpY,UAAY,CACrB3/G,KAAMqoH,IAAAA,WAAqBhoH,MAAMwmH,WACjCmR,kBAAmB3P,IAAAA,KACnB4P,WAAY5P,IAAAA,KAAAA,YCyBd6P,GAAYvY,UAAY,CACtB+M,gBAAiBrE,IAAAA,WAAqBhoH,MAAMwmH,WAC5C6D,aAAcqB,EAAelF,WAC7BmR,kBAAmB3P,IAAAA,KACnBoP,aAAcpP,IAAAA,KACdwO,uBAAwBxO,IAAAA,MC3D1B,IAAI6H,GAAY,CAAC,eAAgB,qBAAsB,gBAAiB,oBAAqB,mBAC7F,SAASC,KAAiS,OAApRA,GAAWl/G,OAAOQ,OAASR,OAAOQ,OAAO/F,OAAS,SAAUoH,GAAU,IAAK,IAAIvF,EAAI,EAAGA,EAAI2I,UAAU3U,OAAQgM,IAAK,CAAE,IAAIW,EAASgI,UAAU3I,GAAI,IAAK,IAAI7C,KAAOwD,EAAc+C,OAAO/E,UAAUwP,eAAetN,KAAKF,EAAQxD,KAAQoI,EAAOpI,GAAOwD,EAAOxD,GAAW,CAAC,OAAOoI,CAAS,EAASq9G,GAASpgH,MAAM7C,KAAMgJ,UAAa,CACnV,SAASuiB,GAAyBvqB,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAAkExD,EAAK6C,EAAnEuF,EACzF,SAAuC5E,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAA2DxD,EAAK6C,EAA5DuF,EAAS,CAAC,EAAO0lB,EAAavnB,OAAOsC,KAAKrF,GAAqB,IAAKX,EAAI,EAAGA,EAAIirB,EAAWj3B,OAAQgM,IAAO7C,EAAM8tB,EAAWjrB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,IAAaoI,EAAOpI,GAAOwD,EAAOxD,IAAQ,OAAOoI,CAAS,CADjNwlB,CAA8BpqB,EAAQqqB,GAAuB,GAAItnB,OAAOynB,sBAAuB,CAAE,IAAIC,EAAmB1nB,OAAOynB,sBAAsBxqB,GAAS,IAAKX,EAAI,EAAGA,EAAIorB,EAAiBp3B,OAAQgM,IAAO7C,EAAMiuB,EAAiBprB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,GAAkBuG,OAAO/E,UAAU0sB,qBAAqBxqB,KAAKF,EAAQxD,KAAgBoI,EAAOpI,GAAOwD,EAAOxD,GAAS,CAAC,OAAOoI,CAAS,CAe7d,SAAS6lH,GAAUj8G,GAChC,IAAIgwG,EAAkBhwG,EAAMgwG,gBAC1BpD,EAAS5sG,EAAM4sG,OACfmO,EAAe/6G,EAAM+6G,aACrBZ,EAAyBn6G,EAAMm6G,uBAC7B+B,EAAsBl8G,EAAMguG,aAC9BA,OAAuC,IAAxBkO,EAXnB,SAAmCtP,GACjC,OAAOr4G,OAAOsC,KAAKy1G,GAAuB5lF,MAAK,SAAUsnF,GACvD,OAAO1B,EAAsB0B,GAAchtG,SAAS4rG,EACrD,KAAKX,EAAeG,QACtB,CAOmD+P,CAA0BvP,GAAUsP,EACpF1O,EAAqBxtG,EAAMwtG,mBAC3BE,EAAgB1tG,EAAM0tG,cACtB4N,EAAoBt7G,EAAMs7G,kBAC1Bc,EAAkBp8G,EAAMo8G,gBACxBC,EAAatgG,GAAyB/b,EAAOwzG,IA2B/C,IAAIhqG,EAAY,6BAChB,OAAoB4pG,EAAAA,cAAoB,MAAO,CAC7C5pG,WAAWlI,EAAAA,EAAAA,SAAKkI,EAAW4yG,EAAkB,GAAG93H,OAAOklB,EAAW,iBAAmB,KACvE4pG,EAAAA,cAAoB,MAAO,CACzCxiG,MAAO,CACLyjG,QAAS,OACTiI,WAAY,aAtBTF,EAGehJ,EAAAA,cAAoBoI,GAAa,CACnDxL,gBAAiBA,EACjBhC,aAAcA,EACdsN,kBAAmBA,EACnBP,aAAcA,EACdZ,uBAAwBA,IAPjB,KAuB0B/G,EAAAA,cAAoB,MAAO,CAC9DxiG,MAAO,CACL0iG,SAAU,EACVtoG,MAAO,SApCWooG,EAAAA,cAAoBsH,GAAU,CAChD1M,aAAcA,EACdR,mBAAoBA,EACpBE,cAAeA,EACfd,OAAQA,EACRmO,aAAcA,IAgBI3H,EAAAA,cAAoB8G,GAAMzG,GAAS,CACrDzF,aAAcA,GACbqO,MAgBN,CACDJ,GAAUhZ,UAAY,CACpB+M,gBAAiBrE,IAAAA,WAAqBhoH,MAAMwmH,WAC5C6D,aAAcqB,EACd7B,mBAAoB7B,IAAAA,KACpB+B,cAAe/B,IAAAA,KACfiB,OAAQjB,IAAAA,OACR2P,kBAAmB3P,IAAAA,KACnBoP,aAAcpP,IAAAA,KACdwO,uBAAwBxO,IAAAA,KACxByQ,gBAAiBzQ,IAAAA,MC/EnB,IAAI6H,GAAY,CAAC,kBAAmB,yBAA0B,eAAgB,cAAe,YAAa,YAAa,QAAS,QAChI,SAASC,KAAiS,OAApRA,GAAWl/G,OAAOQ,OAASR,OAAOQ,OAAO/F,OAAS,SAAUoH,GAAU,IAAK,IAAIvF,EAAI,EAAGA,EAAI2I,UAAU3U,OAAQgM,IAAK,CAAE,IAAIW,EAASgI,UAAU3I,GAAI,IAAK,IAAI7C,KAAOwD,EAAc+C,OAAO/E,UAAUwP,eAAetN,KAAKF,EAAQxD,KAAQoI,EAAOpI,GAAOwD,EAAOxD,GAAW,CAAC,OAAOoI,CAAS,EAASq9G,GAASpgH,MAAM7C,KAAMgJ,UAAa,CACnV,SAAS01G,GAAQp6G,GAAkC,OAAOo6G,GAAU,mBAAqBzyF,QAAU,iBAAmBA,OAAOC,SAAW,SAAU5nB,GAAO,cAAcA,CAAM,EAAG,SAAUA,GAAO,OAAOA,GAAO,mBAAqB2nB,QAAU3nB,EAAIqK,cAAgBsd,QAAU3nB,IAAQ2nB,OAAOjtB,UAAY,gBAAkBsF,CAAM,EAAEo6G,GAAQp6G,EAAO,CAChV,SAASuhH,GAAgB9mH,EAAU+mH,GAAe,KAAM/mH,aAAoB+mH,GAAgB,MAAM,IAAIhmH,UAAU,oCAAyC,CACzJ,SAASimH,GAAkBngH,EAAQ4J,GAAS,IAAK,IAAInP,EAAI,EAAGA,EAAImP,EAAMnb,OAAQgM,IAAK,CAAE,IAAIyzG,EAAatkG,EAAMnP,GAAIyzG,EAAW5qF,WAAa4qF,EAAW5qF,aAAc,EAAO4qF,EAAWyH,cAAe,EAAU,UAAWzH,IAAYA,EAAW0H,UAAW,GAAMz3G,OAAOE,eAAe2B,EAAQkuG,EAAWt2G,IAAKs2G,EAAc,CAAE,CAG7T,SAASkS,GAAgBvoG,EAAGf,GAA6I,OAAxIspG,GAAkBjiH,OAAOysD,eAAiBzsD,OAAOysD,eAAehyD,OAAS,SAAyBif,EAAGf,GAAsB,OAAjBe,EAAEgzC,UAAY/zC,EAAUe,CAAI,EAASuoG,GAAgBvoG,EAAGf,EAAK,CACxM,SAASupG,GAAaC,GAAW,IAAIC,EAGrC,WAAuC,GAAuB,qBAAZC,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,oBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhF9vD,QAAQz3D,UAAUiS,QAAQ/P,KAAKklH,QAAQC,UAAU5vD,QAAS,IAAI,WAAc,MAAW,CAAmC,CAA3B,MAAOjuD,GAAK,OAAO,CAAQ,CAAE,CAHxQg+G,GAA6B,OAAO,WAAkC,IAAsCx4G,EAAlCy4G,EAAQC,GAAgBR,GAAkB,GAAIC,EAA2B,CAAE,IAAIQ,EAAYD,GAAgB1mH,MAAM2O,YAAaX,EAASo4G,QAAQC,UAAUI,EAAOz9G,UAAW29G,EAAa,MAAQ34G,EAASy4G,EAAM5jH,MAAM7C,KAAMgJ,WAAc,OAAO49G,GAA2B5mH,KAAMgO,EAAU,CAAG,CACza,SAAS44G,GAA2Bz1G,EAAMjQ,GAAQ,GAAIA,IAA2B,WAAlBw9G,GAAQx9G,IAAsC,oBAATA,GAAwB,OAAOA,EAAa,QAAa,IAATA,EAAmB,MAAM,IAAIpB,UAAU,4DAA+D,OAAO+mH,GAAuB11G,EAAQ,CAChS,SAAS01G,GAAuB11G,GAAQ,QAAa,IAATA,EAAmB,MAAM,IAAI21G,eAAe,6DAAgE,OAAO31G,CAAO,CAEtK,SAASu1G,GAAgBjpG,GAA+J,OAA1JipG,GAAkB3iH,OAAOysD,eAAiBzsD,OAAOuK,eAAe9P,OAAS,SAAyBif,GAAK,OAAOA,EAAEgzC,WAAa1sD,OAAOuK,eAAemP,EAAK,EAASipG,GAAgBjpG,EAAK,CACpN,SAASylG,GAAQ36F,EAAQ46F,GAAkB,IAAI98G,EAAOtC,OAAOsC,KAAKkiB,GAAS,GAAIxkB,OAAOynB,sBAAuB,CAAE,IAAI43F,EAAUr/G,OAAOynB,sBAAsBjD,GAAS46F,IAAmBC,EAAUA,EAAQzzG,QAAO,SAAU0zG,GAAO,OAAOt/G,OAAOkpB,yBAAyB1E,EAAQ86F,GAAKn6F,UAAa,KAAI7iB,EAAKxF,KAAKgC,MAAMwD,EAAM+8G,EAAW,CAAC,OAAO/8G,CAAO,CACrV,SAASi9G,GAAc19G,GAAU,IAAK,IAAIvF,EAAI,EAAGA,EAAI2I,UAAU3U,OAAQgM,IAAK,CAAE,IAAIW,EAAS,MAAQgI,UAAU3I,GAAK2I,UAAU3I,GAAK,CAAC,EAAGA,EAAI,EAAI6iH,GAAQn/G,OAAO/C,IAAS,GAAIzD,SAAQ,SAAUC,GAAO89G,GAAgB11G,EAAQpI,EAAKwD,EAAOxD,GAAQ,IAAIuG,OAAOw/G,0BAA4Bx/G,OAAOC,iBAAiB4B,EAAQ7B,OAAOw/G,0BAA0BviH,IAAWkiH,GAAQn/G,OAAO/C,IAASzD,SAAQ,SAAUC,GAAOuG,OAAOE,eAAe2B,EAAQpI,EAAKuG,OAAOkpB,yBAAyBjsB,EAAQxD,GAAQ,GAAI,CAAC,OAAOoI,CAAS,CAC1f,SAAS01G,GAAgBh3G,EAAK9G,EAAK7B,GAAiK,OAApJ6B,KAAO8G,EAAOP,OAAOE,eAAeK,EAAK9G,EAAK,CAAE7B,MAAOA,EAAOutB,YAAY,EAAMqyF,cAAc,EAAMC,UAAU,IAAkBl3G,EAAI9G,GAAO7B,EAAgB2I,CAAM,CACjN,SAASinB,GAAyBvqB,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAAkExD,EAAK6C,EAAnEuF,EACzF,SAAuC5E,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAA2DxD,EAAK6C,EAA5DuF,EAAS,CAAC,EAAO0lB,EAAavnB,OAAOsC,KAAKrF,GAAqB,IAAKX,EAAI,EAAGA,EAAIirB,EAAWj3B,OAAQgM,IAAO7C,EAAM8tB,EAAWjrB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,IAAaoI,EAAOpI,GAAOwD,EAAOxD,IAAQ,OAAOoI,CAAS,CADjNwlB,CAA8BpqB,EAAQqqB,GAAuB,GAAItnB,OAAOynB,sBAAuB,CAAE,IAAIC,EAAmB1nB,OAAOynB,sBAAsBxqB,GAAS,IAAKX,EAAI,EAAGA,EAAIorB,EAAiBp3B,OAAQgM,IAAO7C,EAAMiuB,EAAiBprB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,GAAkBuG,OAAO/E,UAAU0sB,qBAAqBxqB,KAAKF,EAAQxD,KAAgBoI,EAAOpI,GAAOwD,EAAOxD,GAAS,CAAC,OAAOoI,CAAS,CAO5e,SAASy1G,GAAkBhvG,EAAKgnD,IAAkB,MAAPA,GAAeA,EAAMhnD,EAAIhY,UAAQg/D,EAAMhnD,EAAIhY,QAAQ,IAAK,IAAIgM,EAAI,EAAG0rB,EAAO,IAAInpB,MAAMywD,GAAMhzD,EAAIgzD,EAAKhzD,IAAO0rB,EAAK1rB,GAAKgM,EAAIhM,GAAM,OAAO0rB,CAAO,CAYvL,IAAIggG,GAAiB,IAAI54H,KACzB44H,GAAe92H,YAAY,EAAG,EAAG,GACjC82H,GAAe72H,SAAS,EAAG,EAAG,EAAG,GACjC,IAAI82H,GAAiB,IAAI74H,KAAK,QAC1B0xH,GAAgB,iBAChBjG,GAAW,CAAC,UAAW,SAAU,OAAQ,SACzCqN,GAAgB,GAAGn4H,OAvBvB,SAA4BuY,GAAO,OAInC,SAA4BA,GAAO,GAAIzJ,MAAMkD,QAAQuG,GAAM,OAAOgvG,GAAkBhvG,EAAO,CAJjDuf,CAAmBvf,IAG7D,SAA0B2f,GAAQ,GAAsB,qBAAXC,QAAmD,MAAzBD,EAAKC,OAAOC,WAA2C,MAAtBF,EAAK,cAAuB,OAAOppB,MAAMsB,KAAK8nB,EAAQ,CAHzFH,CAAiBxf,IAEtF,SAAqCoR,EAAGu+F,GAAU,IAAKv+F,EAAG,OAAQ,GAAiB,kBAANA,EAAgB,OAAO49F,GAAkB59F,EAAGu+F,GAAS,IAAInrG,EAAI9M,OAAO/E,UAAUgI,SAAS9F,KAAKuc,GAAGtlB,MAAM,GAAI,GAAc,WAAN0Y,GAAkB4M,EAAE9O,cAAakC,EAAI4M,EAAE9O,YAAYvN,MAAM,GAAU,QAANyP,GAAqB,QAANA,EAAa,OAAOjO,MAAMsB,KAAKuZ,GAAI,GAAU,cAAN5M,GAAqB,2CAA2CpG,KAAKoG,GAAI,OAAOwqG,GAAkB59F,EAAGu+F,EAAU,CAFlUC,CAA4B5vG,IAC1H,WAAgC,MAAM,IAAIvM,UAAU,uIAA0I,CAD5DgsB,EAAuB,CAuB3HH,CAAmBizF,GAASzmH,MAAM,IAAK,CAAC,QAWtE,SAAS+zH,GAAgBC,EAAWC,GAClC,OAAOxN,GAASzmH,MAAMymH,GAAStiH,QAAQ6vH,GAAYvN,GAAStiH,QAAQ8vH,GAAa,EAClF,CAcD,SAASC,GAAQj5G,EAAM+4G,EAAWC,GAChC,OAVF,SAAuBh5G,EAAM+4G,EAAWC,GAEtC,OAAgC,IADpBF,GAAgBC,EAAWC,GAC1B9vH,QAAQ8W,EACtB,CAOKk5G,CAAcl5G,EAAM+4G,EAAWC,GAC1Bh5G,EAEFg5G,CACR,CAKD,SAASG,GAAaH,GACpB,OAAOH,GAAcrN,GAAStiH,QAAQ8vH,GACvC,CACD,SAASj1D,GAASx7D,EAAOmF,GACvB,IAAKnF,EACH,OAAO,KAET,IAAIsM,EAAWrF,MAAMkD,QAAQnK,IAA2B,IAAjBA,EAAMtH,OAAesH,EAAMmF,GAASnF,EAC3E,IAAKsM,EACH,OAAO,KAET,IAAIukH,EA/CN,SAAgB7wH,GACd,OAAIA,aAAiBxI,KACZwI,EAEF,IAAIxI,KAAKwI,EACjB,CA0CiB8wH,CAAOxkH,GACvB,GAAIrU,MAAM44H,EAAUp5H,WAClB,MAAM,IAAIS,MAAM,iBAAiBC,OAAO6H,IAE1C,OAAO6wH,CACR,CACD,SAASE,GAAe76G,EAAM/Q,GAC5B,IAAInF,EAAQkW,EAAKlW,MACfqjH,EAAUntG,EAAKmtG,QACfC,EAAUptG,EAAKotG,QACfmN,EAAYv6G,EAAKu6G,UACfO,EAAax1D,GAASx7D,EAAOmF,GACjC,IAAK6rH,EACH,OAAO,KAET,IAAI/jG,EAAY2jG,GAAaH,GAE7B,OlB3FK,SAAiBzwH,EAAOq9B,EAAKC,GAClC,OAAID,GAAOA,EAAMr9B,EACRq9B,EAELC,GAAOA,EAAMt9B,EACRs9B,EAEFt9B,CACR,CkBmFQixH,CADe,CAAC/O,EAAUtqH,GAAQuN,GAAO8nB,EAAW+jG,GAC3B3N,EAASC,EAC1C,CACD,IAAI4N,GAAqB,SAA4B9jH,GACnD,OAAO2jH,GAAe3jH,EAAM,EAC7B,EACG+jH,GAAmB,SAA0B/jH,GAC/C,OAAO2jH,GAAe3jH,EAAM,EAC7B,EACGgkH,GAAsB,SAA6BhkH,GACrD,IAAIpN,EAAQoN,EAAKpN,MACjB,OAAIiH,MAAMkD,QAAQnK,GACTA,EAEF,CAACkxH,GAAoBC,IAAkB95G,KAAI,SAAUnO,GAC1D,OAAOA,EAAGkE,EACX,GACF,EACD,SAASikH,GAAmBx9G,GAC1B,IAAIyvG,EAAUzvG,EAAMyvG,QAClBmN,EAAY58G,EAAM48G,UAClBpN,EAAUxvG,EAAMwvG,QAChBmN,EAAY38G,EAAM28G,UAClBxwH,EAAQ6T,EAAM7T,MAShB,OAAOkiH,EAPSwO,GADP78G,EAAM4D,KACe+4G,EAAWC,GACzBS,GAAmB,CACjClxH,MAAOA,EACPqjH,QAASA,EACTC,QAASA,EACTmN,UAAWA,KACP,IAAIj5H,KAEX,CAuBD,IAAI85H,GAAmB,SAA0BtxH,GAC/C,OAAOA,GAAqC,IAA5B,GAAG7H,OAAO6H,GAAOtH,MAClC,EACG64H,GAAwB,SAAUjG,IA9JtC,SAAmBC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIrnH,UAAU,sDAAyDonH,EAASloH,UAAY+E,OAAO7E,OAAOioH,GAAcA,EAAWnoH,UAAW,CAAE2P,YAAa,CAAEhT,MAAOurH,EAAU1L,UAAU,EAAMD,cAAc,KAAWx3G,OAAOE,eAAeijH,EAAU,YAAa,CAAE1L,UAAU,IAAc2L,GAAYnB,GAAgBkB,EAAUC,EAAc,CA+JlcC,CAAU8F,EAAUjG,GACpB,IAjKoBnB,EAAauB,EAAYC,EAiKzCC,EAAStB,GAAaiH,GAC1B,SAASA,IACP,IAAI1F,EACJ3B,GAAgB7lH,KAAMktH,GACtB,IAAK,IAAIp1G,EAAO9O,UAAU3U,OAAQ84H,EAAQ,IAAIvqH,MAAMkV,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAChFo1G,EAAMp1G,GAAQ/O,UAAU+O,GAqL1B,OAlLAujG,GAAgBuL,GADhBW,EAAQD,EAAOrmH,KAAK2B,MAAM0kH,EAAQ,CAACvnH,MAAMlM,OAAOq5H,KACD,QAAS,CACtD3N,gBAAiBgI,EAAMh4G,MAAM49G,uBAC7BzxH,MAAO6rH,EAAMh4G,MAAMmZ,aACnBvV,KAAMo0G,EAAMh4G,MAAM69G,cAEpB/R,GAAgBuL,GAAuBW,GAAQ,4BAA4B,SAAUE,EAAW7oG,EAAOzS,GACrG,IAAIkhH,EAAwBzG,GAAuBW,GACjD5F,EAA0B0L,EAAsB9N,gBAChD+N,EAAeD,EAAsBl6G,KACnC00G,EAAcN,EAAMh4G,MACtBg+G,EAAoB1F,EAAY0F,kBAChCC,EAA0B3F,EAAY2F,wBACtCC,EAAW5F,EAAY4F,SACvBC,EAAe7F,EAAY6F,aAC3BC,EAAc9F,EAAY8F,YACxBC,EAAW,CACbrO,gBAAiBoC,EACjBxuG,KAAMm6G,GAER/F,EAAM35C,SAAS65C,GAAW,WACxB,IAAI3+G,EAAO,CACT0K,OAAQi0G,EAAUj0G,OAClB+rG,gBAAiBkI,EAAUlI,iBAAmBgI,EAAMhI,gBACpD7jH,MAAO+rH,EAAU/rH,OAAS6rH,EAAM7rH,MAChCyX,KAAMs0G,EAAUt0G,MAAQo0G,EAAMp0G,MAEhC,SAAS06G,EAAatwH,GACpB,OAEEA,KAAOkqH,IAEPhJ,GAAQgJ,EAAUlqH,MAAUkhH,GAAQmP,EAASrwH,MAE7CkqH,EAAUlqH,aAAgBrK,KAAOu0H,EAAUlqH,GAAKpK,YAAcy6H,EAASrwH,GAAKpK,UAAYs0H,EAAUlqH,KAASqwH,EAASrwH,IAEvH,EACGswH,EAAa,oBACXL,GAAyBA,EAAwB1kH,GAEnD+kH,EAAa,SACXH,GAAcA,EAAa5kH,GAE7B+kH,EAAa,YACXJ,IACEE,GACkBX,GAAiBvF,EAAU/rH,OAGpC6xH,GACTE,EAAS,CAAChG,EAAU/rH,OAAQkjB,GAG9B6uG,EAAShG,EAAU/rH,MAAOkjB,KAI5BzS,GAAUA,EAASrD,EACxB,GACF,IACDuyG,GAAgBuL,GAAuBW,GAAQ,sBAAsB,SAAUxF,EAAqBvuG,GAClG+zG,EAAMuG,yBAAyB,CAC7Bt6G,OAAQA,EACR+rG,gBAAiBwC,GAEpB,IACD1G,GAAgBuL,GAAuBW,GAAQ,aAAa,SAAUxF,EAAqBnjG,GACzF,GAAK2oG,EAAMwG,mBAAX,CAGAxG,EAAMyG,YAAYjM,EAAqBnjG,GACvC,IAAIqvG,EAAyBrH,GAAuBW,GAClDp0G,EAAO86G,EAAuB96G,KAC9Bm7C,EAAQ2/D,EAAuB3/D,MAC7B4/D,EAAc3G,EAAMh4G,MAAM2+G,YAC1BC,EAAW7/D,EAAMA,EAAMjyD,QAAQ8W,GAAQ,GAC3Co0G,EAAMuG,yBAAyB,CAC7Bt6G,OAAQ,YACR+rG,gBAAiBwC,EACjB5uG,KAAMg7G,QACL/wH,EAAW8wH,EAXb,CAYF,IACD7S,GAAgBuL,GAAuBW,GAAQ,WAAW,WACxD,GAAKA,EAAM9F,iBAAX,CAGA,IAAI2M,EAAyBxH,GAAuBW,GAClDhI,EAAkB6O,EAAuB7O,gBACzCpsG,EAAOi7G,EAAuBj7G,KAC9Bm7C,EAAQ8/D,EAAuB9/D,MAC7B+/D,EAAY9G,EAAMh4G,MAAM8+G,UACxBF,EAAW7/D,EAAMA,EAAMjyD,QAAQ8W,GAAQ,GACvC4uG,EAAsBnE,EAASuQ,EAAU5O,GAC7CgI,EAAMuG,yBAAyB,CAC7Bt6G,OAAQ,UACR+rG,gBAAiBwC,EACjB5uG,KAAMg7G,QACL/wH,EAAWixH,EAZb,CAaF,IACDhT,GAAgBuL,GAAuBW,GAAQ,YAAY,SAAU7rH,EAAOkjB,GAC1E,IACE0vG,EAD2B1H,GAAuBW,GACX7rH,MACrC6yH,EAAehH,EAAMh4G,MACvBi/G,EAAyBD,EAAaC,uBACtCb,EAAcY,EAAaZ,YAC7BpG,EAAMyG,YAAYtyH,EAAOkjB,GACzB,IACI6vG,EADAC,EAAsBf,IAAgBX,GAAiBsB,GAE3D,GAAIX,EAAa,CAEf,IACEhlG,EAD2Bi+F,GAAuBW,GACf5+F,UAInC8lG,EAHEC,EAGU9Q,EAASj1F,EAAWjtB,GAGpBsiH,EAAcr1F,EAAW2lG,EAAe5yH,EAEvD,MAEC+yH,EAAYlH,EAAMoH,kBAAkBjzH,GAEtC,IAAIqmH,GAEH4L,GAEDe,GAEAF,EAAyBzB,GAAmB1J,GAAcA,GAAc,CAAC,EAAGkE,EAAMh4G,OAAQ,CAAC,EAAG,CAC5F7T,MAAO+yH,KACH,KACN7vG,EAAMgwG,UACNrH,EAAMuG,yBAAyB,CAC7Bt6G,OAAQ,WACR+rG,gBAAiBwC,EACjBrmH,MAAO+yH,GACN7vG,EACJ,IACDy8F,GAAgBuL,GAAuBW,GAAQ,eAAe,SAAU7rH,EAAOkjB,GAC7E,IACEzL,EAD2ByzG,GAAuBW,GACpBp0G,KAC5B07G,EAAetH,EAAMh4G,MACvBu/G,EAAaD,EAAaC,WAC1BC,EAAgBF,EAAaE,cAC7BC,EAAeH,EAAaG,aAC5BC,EAAcJ,EAAaI,YACzB9iH,EAAW,WACb,OAAQgH,GACN,IAAK,UACH,OAAO47G,EACT,IAAK,SACH,OAAOE,EACT,IAAK,OACH,OAAOD,EACT,IAAK,QACH,OAAOF,EACT,QACE,MAAM,IAAIl7H,MAAM,iBAAiBC,OAAOsf,EAAM,MAEnD,CAbc,GAcXhH,GAAUA,EAASzQ,EAAOkjB,EAC/B,IACDy8F,GAAgBuL,GAAuBW,GAAQ,eAAe,SAAU7rH,GACtE6rH,EAAM35C,UAAS,SAAU45C,GACvB,OAAIA,EAAUhI,OAASgI,EAAUhI,MAAMrsH,YAAcuI,EAAMvI,UAClD,KAEF,CACLqsH,MAAO9jH,EAEV,GACF,IACD2/G,GAAgBuL,GAAuBW,GAAQ,gBAAgB,WAC7DA,EAAM35C,SAAS,CACb4xC,MAAO,MAEV,IACM+H,CACR,CAqQD,OAjmBoB1B,EA6VPoH,EA7VoB7F,EA6VV,CAAC,CACtB7pH,IAAK,kBACL+e,IAAK,WACH,IAAIqrG,EAAuB5nH,KAAKwP,MAAMgwG,gBAClC2P,EAAuBnvH,KAAKqX,MAAMmoG,gBACtC,OAAOoI,GAAwBuH,GA5NrC,SAAmC3/G,GACjC,IAAIgwG,EAAkBhwG,EAAMgwG,gBAC1B4N,EAAyB59G,EAAM49G,uBAC/BzkG,EAAenZ,EAAMmZ,aACrB0kG,EAAc79G,EAAM69G,YACpBjB,EAAY58G,EAAM48G,UAClBD,EAAY38G,EAAM28G,UAClBxwH,EAAQ6T,EAAM7T,MACdyX,EAAO5D,EAAM4D,KACbwwG,EAAar4F,GAAyB/b,EAAOwzG,IAC3ClF,EAAYuO,GAAQj5G,EAAM+4G,EAAWC,GACrCgD,EAAY5P,GAAmB4N,EACnC,OAAIgC,EACKvR,EAASC,EAAWsR,GAEtBpC,GAAmB1J,GAAc,CACtC8I,UAAWA,EACXD,UAAWA,EACXxwH,MAAOA,GAASgtB,EAChBvV,KAAMA,GAAQi6G,GACbzJ,GACJ,CAuM4DyL,CAA0BrvH,KAAKwP,MACvF,GACA,CACDhS,IAAK,QACL+e,IAAK,WACH,IAAI+yG,EAAetvH,KAAKwP,MACtBo+G,EAAc0B,EAAa1B,YAC3B2B,EAAaD,EAAa3zH,MACxB6zH,EAAaxvH,KAAKqX,MAAM1b,MAG5B,OAAIiyH,GAAeX,GAAiBuC,GAC3BA,OAEanyH,IAAfkyH,EAA2BA,EAAaC,CAChD,GACA,CACDhyH,IAAK,YACL+e,IAAK,WAEH,OAAOgwG,GADSvsH,KAAKwP,MAAM48G,UAE5B,GACA,CACD5uH,IAAK,OACL+e,IAAK,WACH,IAAIkzG,EAAezvH,KAAKwP,MACtB28G,EAAYsD,EAAatD,UACzBC,EAAYqD,EAAarD,UACzBtuG,EAAY2xG,EAAar8G,KACvBmL,EAAYve,KAAKqX,MAAMjE,KAC3B,OAAOi5G,GAAQvuG,GAAaS,EAAW4tG,EAAWC,EACnD,GACA,CACD5uH,IAAK,QACL+e,IAAK,WACH,IAAImzG,EAAe1vH,KAAKwP,MAGxB,OAAO08G,GAFOwD,EAAavD,UACbuD,EAAatD,UAE5B,GACA,CACD5uH,IAAK,QACL+e,IAAK,WACH,IAAIqxG,EAAc5tH,KAAKwP,MAAMo+G,YACzBnO,EAAQz/G,KAAKqX,MAAMooG,MACvB,OAAOmO,EAAcnO,EAAQ,IAC9B,GACA,CACDjiH,IAAK,qBACL+e,IAAK,WACH,IAAInJ,EAAOpT,KAAKoT,KACdm7C,EAAQvuD,KAAKuuD,MACf,OAAOA,EAAMjyD,QAAQ8W,GAAQm7C,EAAMl6D,OAAS,CAC7C,GACA,CACDmJ,IAAK,mBACL+e,IAAK,WACH,IAAInJ,EAAOpT,KAAKoT,KAEhB,OADUpT,KAAKuuD,MACFjyD,QAAQ8W,GAAQ,CAC9B,GAKA,CACD5V,IAAK,oBACL7B,MAAO,SAA2BA,GAChC,IAAIg0H,EAAe3vH,KAAKwP,MACtBwvG,EAAU2Q,EAAa3Q,QACvBC,EAAU0Q,EAAa1Q,QACvBmN,EAAYuD,EAAavD,UACzBwD,EAAcD,EAAaC,YAa7B,OAZsB,WACpB,OAAQA,GACN,IAAK,QACH,OAAO/C,GACT,IAAK,MACH,OAAOC,GACT,IAAK,QACH,OAAOC,GACT,QACE,MAAM,IAAIl5H,MAAM,wBAErB,CAXqB,EAYfg8H,CAAgB,CACrBl0H,MAAOA,EACPqjH,QAASA,EACTC,QAASA,EACTmN,UAAWA,GAEd,GACA,CACD5uH,IAAK,gBACL7B,MAAO,SAAuBovB,GAC5B,IAAI+kG,EAAyB9vH,KAAKw/G,gBAChCE,EAAc1/G,KAAK0/G,YACnB92F,EAAY5oB,KAAK4oB,UACjBjtB,EAAQqE,KAAKrE,MACbyX,EAAOpT,KAAKoT,KACV28G,EAAe/vH,KAAKwP,MACtBguG,EAAeuS,EAAavS,aAC5BpB,EAAS2T,EAAa3T,OACtB6C,EAAU8Q,EAAa9Q,QACvBD,EAAU+Q,EAAa/Q,QACvB4O,EAAcmC,EAAanC,YAC3BjO,EAAgBoQ,EAAapQ,cAC7BC,EAAcmQ,EAAanQ,YAC3BE,EAAeiQ,EAAajQ,aAC1BL,EAAQz/G,KAAKy/G,MAGbuQ,EAAc,CAChBxQ,gBAHoBz0F,EAAOgzF,EAAa3qG,EAAM08G,GAA0BjS,EAASzqG,EAAM08G,GAIvFrQ,MAAOA,EACPrD,OAAQA,EACR6C,QAASA,EACTD,QAASA,EACT9d,QAPYlhG,KAAKguH,mBAAqBhuH,KAAKiwH,UAAYjwH,KAAK0tH,SAQ5DhO,YAAakO,EAAclO,EAAc,KACzCC,cAAeA,EACfC,YAAaA,EACbE,aAAcA,EACdnkH,MAAOA,EACPitB,UAAWA,GAEb,OAAQxV,GACN,IAAK,UAED,IAAI+pG,EAAan9G,KAAKwP,MAAM2tG,WAC5B,OAAoByF,EAAAA,cAAoB6F,GAAaxF,GAAS,CAC5D9F,WAAYA,GACX6S,IAEP,IAAK,SAED,IAAIE,EAAclwH,KAAKwP,MAAM2tG,WAC7B,OAAoByF,EAAAA,cAAoBkG,GAAY7F,GAAS,CAC3D9F,WAAY+S,GACXF,IAEP,IAAK,OAED,IAAIG,EAAenwH,KAAKwP,MACtBstG,EAAcqT,EAAarT,YAC3BC,EAAkBoT,EAAapT,gBACjC,OAAoB6F,EAAAA,cAAoBuG,GAAUlG,GAAS,CACzDnG,YAAaA,EACbC,gBAAiBA,GAChBiT,IAEP,IAAK,QAED,IAAII,EAAgBpwH,KAAKwP,MACvBotG,EAAYwT,EAAcxT,UAC1BC,EAAiBuT,EAAcvT,eAC/BG,EAAqBoT,EAAcpT,mBACnCE,EAAgBkT,EAAclT,cAC9B4N,EAAoBsF,EAActF,kBAClCrJ,EAAiB2O,EAAc3O,eAC/BkI,EAAyByG,EAAczG,uBACvCC,EAAuBwG,EAAcxG,qBACrCgC,EAAkBwE,EAAcxE,gBAC9BrB,EAAevqH,KAAKuqH,aACxB,OAAoB3H,EAAAA,cAAoB6I,GAAWxI,GAAS,CAC1DzF,aAAcA,EACdZ,UAAWA,EACXC,eAAgBA,EAChBG,mBAAoBA,EACpBE,cAAeA,EACf4N,kBAAmBA,EACnBP,aAAcqD,EAAcrD,EAAe,KAC3CZ,uBAA0D,qBAA3BA,EAAyCA,EAAyBlI,EACjGmI,qBAAsBA,EACtBgC,gBAAiBA,GAChBoE,IAEP,QACE,MAAM,IAAIn8H,MAAM,iBAAiBC,OAAOsf,EAAM,MAEnD,GACA,CACD5V,IAAK,mBACL7B,MAAO,WAEL,IADqBqE,KAAKwP,MAAM6gH,eAE9B,OAAO,KAET,IAAI7Q,EAAkBx/G,KAAKw/G,gBACzBpsG,EAAOpT,KAAKoT,KACZm7C,EAAQvuD,KAAKuuD,MACX+hE,EAAgBtwH,KAAKwP,MACvButG,EAAkBuT,EAAcvT,gBAChCI,EAAamT,EAAcnT,WAC3Bf,EAASkU,EAAclU,OACvB6C,EAAUqR,EAAcrR,QACxBD,EAAUsR,EAActR,QACxBqB,EAAsBiQ,EAAcjQ,oBACpCC,EAAqBgQ,EAAchQ,mBACnCC,EAAkB+P,EAAc/P,gBAChCE,EAAiB6P,EAAc7P,eAC/BE,EAAa2P,EAAc3P,WAC3BE,EAAgByP,EAAczP,cAC9BE,EAAYuP,EAAcvP,UAC1BE,EAAiBqP,EAAcrP,eAC/BE,EAAamP,EAAcnP,WAC3BE,EAAgBiP,EAAcjP,cAC9BE,EAAY+O,EAAc/O,UAC1BE,EAAiB6O,EAAc7O,eACjC,OAAoBmB,EAAAA,cAAoB7C,EAAY,CAClDP,gBAAiBA,EACjBQ,QAAShgH,KAAKggH,QACdjD,gBAAiBA,EACjBI,WAAYA,EACZf,OAAQA,EACR6C,QAASA,EACTD,QAASA,EACTqB,oBAAqBA,EACrBC,mBAAoBA,EACpBC,gBAAiBA,EACjBE,eAAgBA,EAChBE,WAAYA,EACZE,cAAeA,EACfE,UAAWA,EACXE,eAAgBA,EAChBE,WAAYA,EACZE,cAAeA,EACfE,UAAWA,EACXC,mBAAoBxhH,KAAKwhH,mBACzBC,eAAgBA,EAChBruG,KAAMA,EACNm7C,MAAOA,GAEV,GACA,CACD/wD,IAAK,SACL7B,MAAO,WACL,IAAI40H,EAAgBvwH,KAAKwP,MACvBwJ,EAAYu3G,EAAcv3G,UAC1Bw3G,EAAWD,EAAcC,SACzB5C,EAAc2C,EAAc3C,YAC5BnM,EAAiB8O,EAAc9O,eAC7B8I,EAAevqH,KAAKuqH,aACtB5uH,EAAQqE,KAAKrE,MACXwpH,EAAa,GAAGrxH,OAAO6H,GAC3B,OAAoBinH,EAAAA,cAAoB,MAAO,CAC7C5pG,WAAWlI,EAAAA,EAAAA,SAAK+zG,GAAe+I,GAAqC,IAAtBzI,EAAW9wH,QAAgB,GAAGP,OAAO+wH,GAAe,iBAAkBpD,GAAkB,GAAG3tH,OAAO+wH,GAAe,gBAAiB7rG,GAChLrF,IAAK68G,GACJxwH,KAAKywH,mBAAiC7N,EAAAA,cAAoB,MAAO,CAClE5pG,UAAW,GAAGllB,OAAO+wH,GAAe,mBACpC6L,OAAQ9C,EAAcrD,EAAe,KACrCA,aAAcqD,EAAcrD,EAAe,MAC1CvqH,KAAK2wH,gBAAiBlP,GAAkBzhH,KAAK2wH,eAAc,IAC/D,IA/lB6DtJ,GAAYtB,GAAkBD,EAAY9mH,UAAWqoH,GAAiBC,GAAavB,GAAkBD,EAAawB,GAAcvjH,OAAOE,eAAe6hH,EAAa,YAAa,CAAEtK,UAAU,IAimBrP0R,CACR,CAnc2B,CAmc1B9E,EAAAA,WAEF8E,GAAS9a,aAAe,CACtBqc,wBAAwB,EACxBxP,QAAS+M,GACTI,UAAW,QACXpN,QAAS+M,GACTI,UAAW,UACXyD,YAAa,QACbS,gBAAgB,EAChBzG,sBAAsB,GAExB,IAAIgH,GAAoBzV,IAAAA,WAAqBhoH,MACzC09H,GAAe1V,IAAAA,UAAoB,CAACA,IAAAA,OAAkBiE,IAC1D8N,GAASza,UAAY,CACnB+M,gBAAiBoR,GACjBpD,kBAAmBrS,IAAAA,KACnBqC,aAAcqB,EACd7lG,UAAW8lG,EACXsO,uBAAwBwD,GACxBjoG,aAAckoG,GACdxD,YAAav+G,EACb8tG,UAAWzB,IAAAA,KACX0B,eAAgB1B,IAAAA,KAChB2B,YAAa3B,IAAAA,KACb4B,gBAAiB5B,IAAAA,KACjB6B,mBAAoB7B,IAAAA,KACpB+B,cAAe/B,IAAAA,KACfgC,WAAYhC,IAAAA,KACZsT,uBAAwBtT,IAAAA,KACxBqV,SAAUrR,EACV/C,OAAQjB,IAAAA,OACR8D,QAASC,EACTkN,UAAWjR,IAAAA,MAAgByD,IAC3BI,QAASD,EACToN,UAAWhR,IAAAA,MAAgByD,IAC3ByB,oBAAqBlF,IAAAA,OACrBmF,mBAAoBnF,IAAAA,MAAgB,CAAC,MAAO,SAAU,cACtDoF,gBAAiBpF,IAAAA,KACjBsF,eAAgBtF,IAAAA,OAChBwF,WAAYxF,IAAAA,KACZ0F,cAAe1F,IAAAA,OACf4F,UAAW5F,IAAAA,KACXsS,wBAAyBtS,IAAAA,KACzBuS,SAAUvS,IAAAA,KACV4T,WAAY5T,IAAAA,KACZ6T,cAAe7T,IAAAA,KACf8T,aAAc9T,IAAAA,KACd2P,kBAAmB3P,IAAAA,KACnB+T,YAAa/T,IAAAA,KACbgT,YAAahT,IAAAA,KACbmT,UAAWnT,IAAAA,KACXwS,aAAcxS,IAAAA,KACd8F,eAAgB9F,IAAAA,OAChBgG,WAAYhG,IAAAA,KACZkG,cAAelG,IAAAA,OACfoG,UAAWpG,IAAAA,KACXyU,YAAazU,IAAAA,MAAgB,CAAC,QAAS,MAAO,UAC9CyS,YAAazS,IAAAA,KACbsG,eAAgBtG,IAAAA,KAChBwO,uBAAwBxO,IAAAA,KACxBkV,eAAgBlV,IAAAA,KAChByO,qBAAsBzO,IAAAA,KACtByQ,gBAAiBzQ,IAAAA,KACjBwE,cAAexE,IAAAA,UAAoB,CAACA,IAAAA,KAAgB2D,IACpDc,YAAazE,IAAAA,UAAoB,CAACA,IAAAA,KAAgBA,IAAAA,OAClD2E,aAAc3E,IAAAA,KACdx/G,MAAOk1H,GACPz9G,KAAMtE,GCrqBR,6CCJA,SAAS4vG,EAAQp6G,GAAkC,OAAOo6G,EAAU,mBAAqBzyF,QAAU,iBAAmBA,OAAOC,SAAW,SAAU5nB,GAAO,cAAcA,CAAM,EAAG,SAAUA,GAAO,OAAOA,GAAO,mBAAqB2nB,QAAU3nB,EAAIqK,cAAgBsd,QAAU3nB,IAAQ2nB,OAAOjtB,UAAY,gBAAkBsF,CAAM,EAAEo6G,EAAQp6G,EAAO,CAChVP,OAAOE,eAAevL,EAAS,aAAc,CAC3CiD,OAAO,IAETjD,EAAiB,aAAI,EACrB,IAAIo4H,EAeJ,SAAiCxsH,EAAKysH,GAAe,IAAKA,GAAezsH,GAAOA,EAAI+rD,WAAc,OAAO/rD,EAAO,GAAY,OAARA,GAAiC,WAAjBo6G,EAAQp6G,IAAoC,oBAARA,EAAsB,MAAO,CAAE,QAAWA,GAAS,IAAI4J,EAAQ8iH,EAAyBD,GAAc,GAAI7iH,GAASA,EAAMwpD,IAAIpzD,GAAQ,OAAO4J,EAAMqO,IAAIjY,GAAQ,IAAI0uD,EAAS,CAAC,EAAOi+D,EAAwBltH,OAAOE,gBAAkBF,OAAOkpB,yBAA0B,IAAK,IAAIzvB,KAAO8G,EAAO,GAAY,YAAR9G,GAAqBuG,OAAO/E,UAAUwP,eAAetN,KAAKoD,EAAK9G,GAAM,CAAE,IAAIgQ,EAAOyjH,EAAwBltH,OAAOkpB,yBAAyB3oB,EAAK9G,GAAO,KAAUgQ,IAASA,EAAK+O,KAAO/O,EAAK8O,KAAQvY,OAAOE,eAAe+uD,EAAQx1D,EAAKgQ,GAAgBwlD,EAAOx1D,GAAO8G,EAAI9G,EAAS,CAAGw1D,EAAM,QAAc1uD,EAAS4J,GAASA,EAAMoO,IAAIhY,EAAK0uD,GAAW,OAAOA,CAAS,CAf9xBk+D,CAAwBt4H,EAAQ,OACzCu4H,EAAaC,EAAuBx4H,EAAQ,OAC5Cy4H,EAAaz4H,EAAQ,MACrB04H,EAAWF,EAAuBx4H,EAAQ,OAC1C24H,EAAYH,EAAuBx4H,EAAQ,OAC3C44H,EAAcJ,EAAuBx4H,EAAQ,OAC7C64H,EAAeL,EAAuBx4H,EAAQ,OAC9C84H,EAAaN,EAAuBx4H,EAAQ,OAC5C+4H,EAAeP,EAAuBx4H,EAAQ,OAC9Cg5H,EAAiBh5H,EAAQ,MACzBi5H,EAASj5H,EAAQ,MACjBk5H,EAAcl5H,EAAQ,MACtBm5H,EAASn5H,EAAQ,MACrB,SAASw4H,EAAuB9sH,GAAO,OAAOA,GAAOA,EAAI+rD,WAAa/rD,EAAM,CAAE,QAAWA,EAAQ,CACjG,SAAS0sH,EAAyBD,GAAe,GAAuB,oBAAZn9C,QAAwB,OAAO,KAAM,IAAIo+C,EAAoB,IAAIp+C,QAAeq+C,EAAmB,IAAIr+C,QAAW,OAAQo9C,EAA2B,SAAkCD,GAAe,OAAOA,EAAckB,EAAmBD,CAAoB,GAAEjB,EAAe,CAE/U,SAAS9N,IAAiS,OAApRA,EAAWl/G,OAAOQ,OAASR,OAAOQ,OAAO/F,OAAS,SAAUoH,GAAU,IAAK,IAAIvF,EAAI,EAAGA,EAAI2I,UAAU3U,OAAQgM,IAAK,CAAE,IAAIW,EAASgI,UAAU3I,GAAI,IAAK,IAAI7C,KAAOwD,EAAc+C,OAAO/E,UAAUwP,eAAetN,KAAKF,EAAQxD,KAAQoI,EAAOpI,GAAOwD,EAAOxD,GAAW,CAAC,OAAOoI,CAAS,EAASq9G,EAASpgH,MAAM7C,KAAMgJ,UAAa,CACnV,SAASkpH,EAAe7lH,EAAKhM,GAAK,OAGlC,SAAyBgM,GAAO,GAAIzJ,MAAMkD,QAAQuG,GAAM,OAAOA,CAAM,CAH5B8lH,CAAgB9lH,IAEzD,SAA+BA,EAAKhM,GAAK,IAAI+xH,EAAK,MAAQ/lH,EAAM,KAAO,oBAAsB4f,QAAU5f,EAAI4f,OAAOC,WAAa7f,EAAI,cAAe,GAAI,MAAQ+lH,EAAI,CAAE,IAAIC,EAAI17D,EAAI27D,EAAIC,EAAIC,EAAO,GAAIC,GAAK,EAAIC,GAAK,EAAI,IAAM,GAAIJ,GAAMF,EAAKA,EAAGlxH,KAAKmL,IAAM0e,KAAM,IAAM1qB,EAAG,CAAE,GAAI0D,OAAOquH,KAAQA,EAAI,OAAQK,GAAK,CAAK,MAAM,OAASA,GAAMJ,EAAKC,EAAGpxH,KAAKkxH,IAAKn4H,QAAUu4H,EAAK3xH,KAAKwxH,EAAG12H,OAAQ62H,EAAKn+H,SAAWgM,GAAIoyH,GAAK,GAAgL,CAAzK,MAAO72H,GAAO82H,GAAK,EAAI/7D,EAAK/6D,CAAM,CAArO,QAAgP,IAAM,IAAK62H,GAAM,MAAQL,EAAE,SAAeG,EAAKH,EAAE,SAAcruH,OAAOwuH,KAAQA,GAAK,MAAuC,CAA1H,QAAuG,GAAIG,EAAI,MAAM/7D,CAAK,CAAE,CAAC,OAAO67D,CAAO,CAAE,CAFjhBG,CAAsBtmH,EAAKhM,IAAM47G,EAA4B5vG,EAAKhM,IACnI,WAA8B,MAAM,IAAIP,UAAU,4IAA+I,CADxD8yH,EAAqB,CAI9J,SAAS/M,EAAgB9mH,EAAU+mH,GAAe,KAAM/mH,aAAoB+mH,GAAgB,MAAM,IAAIhmH,UAAU,oCAAyC,CACzJ,SAASimH,EAAkBngH,EAAQ4J,GAAS,IAAK,IAAInP,EAAI,EAAGA,EAAImP,EAAMnb,OAAQgM,IAAK,CAAE,IAAIyzG,EAAatkG,EAAMnP,GAAIyzG,EAAW5qF,WAAa4qF,EAAW5qF,aAAc,EAAO4qF,EAAWyH,cAAe,EAAU,UAAWzH,IAAYA,EAAW0H,UAAW,GAAMz3G,OAAOE,eAAe2B,EAAQitH,EAAe/e,EAAWt2G,KAAMs2G,EAAc,CAAE,CAG7U,SAASkS,EAAgBvoG,EAAGf,GAA6I,OAAxIspG,EAAkBjiH,OAAOysD,eAAiBzsD,OAAOysD,eAAehyD,OAAS,SAAyBif,EAAGf,GAAsB,OAAjBe,EAAEgzC,UAAY/zC,EAAUe,CAAI,EAASuoG,EAAgBvoG,EAAGf,EAAK,CACxM,SAASupG,EAAaC,GAAW,IAAIC,EAGrC,WAAuC,GAAuB,qBAAZC,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,oBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhF9vD,QAAQz3D,UAAUiS,QAAQ/P,KAAKklH,QAAQC,UAAU5vD,QAAS,IAAI,WAAc,MAAW,CAAmC,CAA3B,MAAOjuD,GAAK,OAAO,CAAQ,CAAE,CAHxQg+G,GAA6B,OAAO,WAAkC,IAAsCx4G,EAAlCy4G,EAAQC,EAAgBR,GAAkB,GAAIC,EAA2B,CAAE,IAAIQ,EAAYD,EAAgB1mH,MAAM2O,YAAaX,EAASo4G,QAAQC,UAAUI,EAAOz9G,UAAW29G,EAAa,MAAQ34G,EAASy4G,EAAM5jH,MAAM7C,KAAMgJ,WAAc,OAAO49G,EAA2B5mH,KAAMgO,EAAU,CAAG,CACza,SAAS44G,EAA2Bz1G,EAAMjQ,GAAQ,GAAIA,IAA2B,WAAlBw9G,EAAQx9G,IAAsC,oBAATA,GAAwB,OAAOA,EAAa,QAAa,IAATA,EAAmB,MAAM,IAAIpB,UAAU,4DAA+D,OAAO+mH,EAAuB11G,EAAQ,CAChS,SAAS01G,EAAuB11G,GAAQ,QAAa,IAATA,EAAmB,MAAM,IAAI21G,eAAe,6DAAgE,OAAO31G,CAAO,CAEtK,SAASu1G,EAAgBjpG,GAA+J,OAA1JipG,EAAkB3iH,OAAOysD,eAAiBzsD,OAAOuK,eAAe9P,OAAS,SAAyBif,GAAK,OAAOA,EAAEgzC,WAAa1sD,OAAOuK,eAAemP,EAAK,EAASipG,EAAgBjpG,EAAK,CACpN,SAAS69F,EAAgBh3G,EAAK9G,EAAK7B,GAA4L,OAAnL6B,EAAMq1H,EAAer1H,MAAiB8G,EAAOP,OAAOE,eAAeK,EAAK9G,EAAK,CAAE7B,MAAOA,EAAOutB,YAAY,EAAMqyF,cAAc,EAAMC,UAAU,IAAkBl3G,EAAI9G,GAAO7B,EAAgB2I,CAAM,CAC5O,SAASuuH,EAAexiH,GAAO,IAAI7S,EACnC,SAAsB27C,EAAOyxC,GAAQ,GAAuB,WAAnB8zB,EAAQvlE,IAAiC,OAAVA,EAAgB,OAAOA,EAAO,IAAI25E,EAAO35E,EAAMltB,OAAO8mG,aAAc,QAAa11H,IAATy1H,EAAoB,CAAE,IAAIl8F,EAAMk8F,EAAK5xH,KAAKi4C,EAAOyxC,GAAQ,WAAY,GAAqB,WAAjB8zB,EAAQ9nF,GAAmB,OAAOA,EAAK,MAAM,IAAI92B,UAAU,+CAAkD,CAAC,OAAiB,WAAT8qF,EAAoB56E,OAASsuD,QAAQnlB,EAAS,CADpV65E,CAAa3iH,EAAK,UAAW,MAAwB,WAAjBquG,EAAQlhH,GAAoBA,EAAMwS,OAAOxS,EAAO,CAE7H,SAASmuB,EAAmBtf,GAAO,OAInC,SAA4BA,GAAO,GAAIzJ,MAAMkD,QAAQuG,GAAM,OAAOgvG,EAAkBhvG,EAAO,CAJjDuf,CAAmBvf,IAG7D,SAA0B2f,GAAQ,GAAsB,qBAAXC,QAAmD,MAAzBD,EAAKC,OAAOC,WAA2C,MAAtBF,EAAK,cAAuB,OAAOppB,MAAMsB,KAAK8nB,EAAQ,CAHzFH,CAAiBxf,IAAQ4vG,EAA4B5vG,IAC1H,WAAgC,MAAM,IAAIvM,UAAU,uIAA0I,CAD5DgsB,EAAuB,CAEzJ,SAASmwF,EAA4Bx+F,EAAGu+F,GAAU,GAAKv+F,EAAL,CAAgB,GAAiB,kBAANA,EAAgB,OAAO49F,EAAkB59F,EAAGu+F,GAAS,IAAInrG,EAAI9M,OAAO/E,UAAUgI,SAAS9F,KAAKuc,GAAGtlB,MAAM,GAAI,GAAiE,MAAnD,WAAN0Y,GAAkB4M,EAAE9O,cAAakC,EAAI4M,EAAE9O,YAAYvN,MAAgB,QAANyP,GAAqB,QAANA,EAAoBjO,MAAMsB,KAAKuZ,GAAc,cAAN5M,GAAqB,2CAA2CpG,KAAKoG,GAAWwqG,EAAkB59F,EAAGu+F,QAAzG,CAA7O,CAAgW,CAGha,SAASX,EAAkBhvG,EAAKgnD,IAAkB,MAAPA,GAAeA,EAAMhnD,EAAIhY,UAAQg/D,EAAMhnD,EAAIhY,QAAQ,IAAK,IAAIgM,EAAI,EAAG0rB,EAAO,IAAInpB,MAAMywD,GAAMhzD,EAAIgzD,EAAKhzD,IAAK0rB,EAAK1rB,GAAKgM,EAAIhM,GAAI,OAAO0rB,CAAO,CACnL,IAAIknG,EAA2B,CAAC,EAC5BlH,EAAiB,IAAI54H,KACzB44H,EAAe92H,YAAY,EAAG,EAAG,GACjC82H,EAAe72H,SAAS,EAAG,EAAG,EAAG,GACjC,IAAI82H,EAAiB,IAAI74H,KAAK,QAC1ByrH,EAAW,CAAC,UAAW,SAAU,OAAQ,SACzCqN,EAAgB,GAAGn4H,OAAO63B,EAAmBizF,EAASzmH,MAAM,IAAK,CAAC,QAOtE,SAAS4uH,EAAkB7I,EAAOC,GAChC,OAAOD,IAAUC,IAAUD,GAASC,GAASD,GAASC,GAASD,EAAM9qH,YAAc+qH,EAAM/qH,SAC1F,CAKD,SAASm5H,EAAaH,GACpB,OAAOH,EAAcrN,EAAStiH,QAAQ8vH,GACvC,CACD,SAASj1D,EAASx7D,EAAOmF,GACvB,IAAKnF,EACH,OAAO,KAET,IAAIsM,EAAWrF,MAAMkD,QAAQnK,IAA2B,IAAjBA,EAAMtH,OAAesH,EAAMmF,GAASnF,EAC3E,IAAKsM,EACH,OAAO,KAET,IAAIukH,EAxBN,SAAgB7wH,GACd,OAAIA,aAAiBxI,KACZwI,EAEF,IAAIxI,KAAKwI,EACjB,CAmBiB8wH,CAAOxkH,GACvB,GAAIrU,MAAM44H,EAAUp5H,WAClB,MAAM,IAAIS,MAAM,iBAAiBC,OAAO6H,IAE1C,OAAO6wH,CACR,CACD,SAASE,EAAe76G,EAAM/Q,GAC5B,IAAInF,EAAQkW,EAAKlW,MACfqjH,EAAUntG,EAAKmtG,QACfC,EAAUptG,EAAKotG,QACfmN,EAAYv6G,EAAKu6G,UACfO,EAAax1D,EAASx7D,EAAOmF,GACjC,IAAK6rH,EACH,OAAO,KAET,IAAI/jG,EAAY2jG,EAAaH,GACzB8G,EAAkB,CAACrB,EAAOhU,SAAUgU,EAAOt+H,QAAQuN,GAAO8nB,EAAW+jG,GACzE,OAAO,EAAIoF,EAAOnF,SAASsG,EAAiBlU,EAASC,EACtD,CACD,IAAI4N,EAAqB,SAA4B9jH,GACnD,OAAO2jH,EAAe3jH,EAAM,EAC7B,EACG+jH,EAAmB,SAA0B/jH,GAC/C,OAAO2jH,EAAe3jH,EAAM,EAC7B,EACGgkH,EAAsB,SAA6BhkH,GACrD,IAAIpN,EAAQoN,EAAKpN,MACjB,OAAIiH,MAAMkD,QAAQnK,GACTA,EAEF,CAACkxH,EAAoBC,GAAkB95G,KAAI,SAAUnO,GAC1D,OAAOA,EAAGkE,EACX,GACF,EACD,SAASoqH,EAAgBj6G,GACvB,MAAiC,SAA1BA,EAAQ6wB,QAAQoP,KACxB,CACD,SAASi6E,EAAUl6G,EAASd,GAC1B,IAAIi7G,EAAcn6G,EAClB,GACEm6G,EAAcA,EAAYj7G,SACnBi7G,IAAgBF,EAAgBE,IACzC,OAAOA,CACR,CACD,SAASC,EAAMp6G,GACTA,GACFA,EAAQo6G,OAEX,CA8BD,IAAIC,EAAyB,SAAUC,IA7HvC,SAAmBtM,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIrnH,UAAU,sDAAyDonH,EAASloH,UAAY+E,OAAO7E,OAAOioH,GAAcA,EAAWnoH,UAAW,CAAE2P,YAAa,CAAEhT,MAAOurH,EAAU1L,UAAU,EAAMD,cAAc,KAAWx3G,OAAOE,eAAeijH,EAAU,YAAa,CAAE1L,UAAU,IAAc2L,GAAYnB,EAAgBkB,EAAUC,EAAc,CA8HlcC,CAAUmM,EAAWC,GACrB,IAhIoB1N,EAAauB,EAAYC,EAgIzCC,EAAStB,EAAasN,GAC1B,SAASA,IACP,IAAI/L,EACJ3B,EAAgB7lH,KAAMuzH,GACtB,IAAK,IAAIz7G,EAAO9O,UAAU3U,OAAQ0U,EAAO,IAAInG,MAAMkV,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/EhP,EAAKgP,GAAQ/O,UAAU+O,GA8MzB,OA3MAujG,EAAgBuL,EADhBW,EAAQD,EAAOrmH,KAAK2B,MAAM0kH,EAAQ,CAACvnH,MAAMlM,OAAOiV,KACD,QAAS,CACtDrV,KAAM,KACNiD,MAAO,KACPU,IAAK,OAEPikH,EAAgBuL,EAAuBW,GAAQ,YAAyB,EAAIsJ,EAAO2C,cACnFnY,EAAgBuL,EAAuBW,GAAQ,cAA2B,EAAIsJ,EAAO2C,cACrFnY,EAAgBuL,EAAuBW,GAAQ,aAA0B,EAAIsJ,EAAO2C,cACpFnY,EAAgBuL,EAAuBW,GAAQ,WAAW,SAAU3oG,GAC9DA,EAAMjZ,SAAWiZ,EAAMknE,eAGzButC,EADiBz0G,EAAMjZ,OAAO2T,SAAS,GAG1C,IACD+hG,EAAgBuL,EAAuBW,GAAQ,aAAa,SAAU3oG,GACpE,OAAQA,EAAMrhB,KACZ,IAAK,YACL,IAAK,aACL,KAAKgqH,EAAMkM,QAEP70G,EAAMy0B,iBAINggF,EADgBF,EAFJv0G,EAAMjZ,OACW,cAAdiZ,EAAMrhB,IAAsB,yBAA2B,uBAO7E,IACD89G,EAAgBuL,EAAuBW,GAAQ,WAAW,SAAU3oG,GAClE,IAAIrhB,EAAMqhB,EAAMrhB,IACd27C,EAAQt6B,EAAMjZ,OAEhB,IADmBhS,MAAMD,SAAS6J,EAAK,KACvC,CAGA,IAAI7B,EAAQw9C,EAAMx9C,MACds9B,EAAMkgB,EAAMzgC,aAAa,OAQ7B,GAAY,GAAR/c,EAAas9B,GAAOt9B,EAAMtH,QAAU4kC,EAAI5kC,OAAQ,CAGlDi/H,EADgBF,EAAUj6E,EADX,sBAGhB,CAdA,CAeF,IACDmiE,EAAgBuL,EAAuBW,GAAQ,YAAY,SAAU3oG,GACnE,IAAI80G,EAAgB90G,EAAMjZ,OACxBxE,EAAOuyH,EAAcvyH,KACrBzF,EAAQg4H,EAAch4H,MACxB6rH,EAAM35C,SAASytC,EAAgB,CAAC,EAAGl6G,EAAMzF,GAAQ6rH,EAAMoM,iBACxD,IACDtY,EAAgBuL,EAAuBW,GAAQ,kBAAkB,SAAU3oG,GACzE,IAAI6uG,EAAWlG,EAAMh4G,MAAMk+G,SACvB/xH,EAAQkjB,EAAMjZ,OAAOjK,MACpB+xH,GAoBLA,EAjBqB,WACnB,IAAK/xH,EACH,OAAO,KAET,IACEk4H,EAAgB3B,EADCv2H,EAAMvH,MAAM,KACgB,GAC7C0/H,EAAaD,EAAc,GAC3BE,EAAcF,EAAc,GAC5BG,EAAYH,EAAc,GACxBngI,EAAOC,SAASmgI,EAAY,IAC5BnW,EAAahqH,SAASogI,EAAa,IAAM,GAAK,EAC9C18H,EAAM1D,SAASqgI,EAAW,KAAO,EACjCC,EAAgB,IAAI9gI,KAGxB,OAFA8gI,EAAch/H,YAAYvB,EAAMiqH,EAAYtmH,GAC5C48H,EAAc/+H,SAAS,EAAG,EAAG,EAAG,GACzB++H,CACR,CAhBoB,IAiBI,EAC1B,IACD3Y,EAAgBuL,EAAuBW,GAAQ,oBAAoB,WACjE,IAAIkG,EAAWlG,EAAMh4G,MAAMk+G,SAC3B,GAAKA,EAAL,CAGA,IAAIwG,EAAe,CAAC1M,EAAM2M,SAAS/kG,QAASo4F,EAAM4M,WAAWhlG,QAASo4F,EAAM6M,UAAUjlG,SAASzf,OAAO8mD,SAClGsgB,EAAS,CAAC,EAId,GAHAm9C,EAAa32H,SAAQ,SAAU+2H,GAC7Bv9C,EAAOu9C,EAAYlzH,MAAQkzH,EAAY34H,KACxC,IACGu4H,EAAah1F,OAAM,SAAUo1F,GAC/B,OAAQA,EAAY34H,KACrB,IACC+xH,EAAS,MAAM,QACV,GAAIwG,EAAah1F,OAAM,SAAUo1F,GACtC,OAAOA,EAAY34H,OAAS24H,EAAYC,SAASl3C,KAClD,IAAG,CACF,IAAI3pF,EAAOC,SAASojF,EAAOrjF,KAAM,MAAO,IAAIP,MAAOM,cAC/CkqH,EAAahqH,SAASojF,EAAOpgF,OAAS,EAAG,IAAM,EAC/CU,EAAM1D,SAASojF,EAAO1/E,KAAO,EAAG,IAChC48H,EAAgB,IAAI9gI,KACxB8gI,EAAch/H,YAAYvB,EAAMiqH,EAAYtmH,GAC5C48H,EAAc/+H,SAAS,EAAG,EAAG,EAAG,GAEhCw4H,EADqBlG,EAAMoH,kBAAkBqF,IACpB,EAC1B,CArBA,CAsBF,IACD3Y,EAAgBuL,EAAuBW,GAAQ,aAAa,SAAUgN,EAAc1zH,GAClF,IAAIgnH,EAAcN,EAAMh4G,MACtBilH,EAAY3M,EAAY2M,UACxBC,EAAe5M,EAAY4M,aAC3BC,EAAiB7M,EAAY6M,eAC7BC,EAAmB9M,EAAY8M,iBAC7B1M,EAAcV,EAAMnwG,MACtBhgB,EAAM6wH,EAAY7wH,IAClBV,EAAQuxH,EAAYvxH,MACpBjD,EAAOw0H,EAAYx0H,KACrB,GAAI8gI,GAAgBA,EAAangI,OAAS,EACxC,MAAM,IAAIR,MAAM,sBAAsBC,OAAO0gI,IAE/C,IAAIK,EAA6BL,GAAwC,IAAxBA,EAAangI,OAC9D,OAAoBy8H,EAAM,QAAY9lH,cAAcumH,EAAS,QAAatO,EAAS,CACjFzlH,IAAK,OACJgqH,EAAMsN,iBAAkB,CACzBC,UAAWL,EAGXD,UAAqB,IAAV3zH,GAAe2zH,EAC1BjE,SAAUhJ,EAAM2M,SAChBx9H,MAAOA,EACPq+H,YAAaL,EACbC,iBAAkBC,GAA8BD,EAChDj5H,MAAOtE,EACP3D,KAAMA,IAET,IACD4nH,EAAgBuL,EAAuBW,GAAQ,eAAe,SAAUgN,EAAc1zH,GACpF,IAAI0tH,EAAehH,EAAMh4G,MACvBilH,EAAYjG,EAAaiG,UACzBrY,EAASoS,EAAapS,OACtB6Y,EAAiBzG,EAAayG,eAC9BC,EAAmB1G,EAAa0G,iBAChCN,EAAmBpG,EAAaoG,iBAC9BO,EAAe3N,EAAMnwG,MACvB1gB,EAAQw+H,EAAax+H,MACrBjD,EAAOyhI,EAAazhI,KACtB,GAAI8gI,GAAgBA,EAAangI,OAAS,EACxC,MAAM,IAAIR,MAAM,sBAAsBC,OAAO0gI,IAE/C,GAAIA,EAAangI,OAAS,EACxB,OAAoBy8H,EAAM,QAAY9lH,cAAcymH,EAAY,QAAaxO,EAAS,CACpFzlH,IAAK,SACJgqH,EAAMsN,iBAAkB,CACzBC,UAAWE,EAGXR,UAAqB,IAAV3zH,GAAe2zH,EAC1BjE,SAAUhJ,EAAM4M,WAChBhY,OAAQA,EACR4Y,YAAaE,EACb,MAAiC,IAAxBV,EAAangI,OACtBsH,MAAOhF,EACPjD,KAAMA,KAGV,IAAImhI,EAA6BL,GAAwC,IAAxBA,EAAangI,OAC9D,OAAoBy8H,EAAM,QAAY9lH,cAAcwmH,EAAW,QAAavO,EAAS,CACnFzlH,IAAK,SACJgqH,EAAMsN,iBAAkB,CACzBC,UAAWE,EAGXR,UAAqB,IAAV3zH,GAAe2zH,EAC1BjE,SAAUhJ,EAAM4M,WAChBY,YAAaE,EACbN,iBAAkBC,GAA8BD,EAChDj5H,MAAOhF,EACPjD,KAAMA,IAET,IACD4nH,EAAgBuL,EAAuBW,GAAQ,cAAc,SAAUgN,EAAc1zH,GACnF,IAAIguH,EAAetH,EAAMh4G,MACvBilH,EAAY3F,EAAa2F,UACzBW,EAAgBtG,EAAasG,cAC7BC,EAAkBvG,EAAauG,gBAC7B3hI,EAAO8zH,EAAMnwG,MAAM3jB,KACvB,OAAoBo9H,EAAM,QAAY9lH,cAAc0mH,EAAU,QAAazO,EAAS,CAClFzlH,IAAK,QACJgqH,EAAMsN,iBAAkB,CACzBC,UAAWK,EAGXX,UAAqB,IAAV3zH,GAAe2zH,EAC1BjE,SAAUhJ,EAAM6M,UAChBW,YAAaK,EACb15H,MAAOjI,EACPk1B,UAAW4+F,EAAM5+F,YAEpB,IACM4+F,CACR,CAyOD,OA7jBoB1B,EAqVPyN,EArVgCjM,EAggBzC,CAAC,CACH9pH,IAAK,2BACL7B,MAAO,SAAkCqrH,EAAWS,GAClD,IAAIzI,EAAUgI,EAAUhI,QACtBC,EAAU+H,EAAU/H,QACpBmN,EAAYpF,EAAUoF,UACpB1E,EAAY,CAAC,EAMbV,EAAUsO,iBAAmB7N,EAAU6N,iBACzC5N,EAAU4N,eAAiBtO,EAAUsO,gBAQvC,IAAI5G,EAAY7B,EAAmB,CACjClxH,MAAOqrH,EAAUrrH,MACjBqjH,QAASA,EACTC,QAASA,EACTmN,UAAWA,IAETr1C,EAAS,CAAC23C,EAAWjH,EAAU9rH,OA+BnC,OA5BA+rH,EAAU4N,gBAEVvO,EAAkBlkH,WAAM,EAAQ8oB,EAAmBorD,EAAO/jE,KAAI,SAAUrX,GACtE,OAAOkxH,EAAmB,CACxBlxH,MAAOA,EACPqjH,QAASA,EACTC,QAASA,EACTmN,UAAWA,GAEd,OAAOrF,EAAkBlkH,WAAM,EAAQ8oB,EAAmBorD,EAAO/jE,KAAI,SAAUrX,GAC9E,OAAOmxH,EAAiB,CACtBnxH,MAAOA,EACPqjH,QAASA,EACTC,QAASA,EACTmN,UAAWA,GAEd,SACKsC,GACFhH,EAAUh0H,MAAO,EAAI29H,EAAW79H,SAASk7H,GAAW1nH,WACpD0gH,EAAU/wH,OAAQ,EAAI06H,EAAWr9H,eAAe06H,GAAW1nH,WAC3D0gH,EAAUrwH,KAAM,EAAIg6H,EAAWp9H,SAASy6H,GAAW1nH,aAEnD0gH,EAAUh0H,KAAO,KACjBg0H,EAAU/wH,MAAQ,KAClB+wH,EAAUrwH,IAAM,MAElBqwH,EAAU/rH,MAAQ+yH,GAEbhH,CACR,KA3jB8BL,EAqVT,CAAC,CACvB7pH,IAAK,aACL+e,IAAK,WACH,IAAI6vG,EAAYpsH,KAAKwP,MAAM48G,UACvBrlG,EAAQ63F,EAAStiH,QAAQ8vH,GACzBmJ,EAAmBtC,EAAyBlsG,IAAU,WACxD,IAAIriB,EAAU,CACZhR,KAAM,WASR,OAPIqzB,GAAS,IACXriB,EAAQ/N,MAAQ,WAEdowB,GAAS,IACXriB,EAAQrN,IAAM,WAEhB47H,EAAyBlsG,GAASriB,EAC3BA,CACR,CAZyD,GAa1D,OAAO,EAAIktH,EAAenV,cAAc8Y,EACzC,GAKA,CACD/3H,IAAK,oBACL7B,MAAO,SAA2BA,GAChC,IAAI2zH,EAAetvH,KAAKwP,MACtBwvG,EAAUsQ,EAAatQ,QACvBC,EAAUqQ,EAAarQ,QACvBmN,EAAYkD,EAAalD,UACzBwD,EAAcN,EAAaM,YAa7B,OAZsB,WACpB,OAAQA,GACN,IAAK,QACH,OAAO/C,EACT,IAAK,MACH,OAAOC,EACT,IAAK,QACH,OAAOC,EACT,QACE,MAAM,IAAIl5H,MAAM,wBAErB,CAXqB,EAYfg8H,CAAgB,CACrBl0H,MAAOA,EACPqjH,QAASA,EACTC,QAASA,EACTmN,UAAWA,GAEd,GACA,CACD5uH,IAAK,UACL+e,IAAK,WACH,IAAIi5G,EAAWx1H,KAAKg1H,YAAY5qH,MAAM,cACtC,OAAOorH,EAAWA,EAAS,GAAK,IACjC,GACA,CACDh4H,IAAK,cACL+e,IAAK,WACH,IAAIkzG,EAAezvH,KAAKwP,MACtB+tD,EAASkyD,EAAalyD,OACtB6+C,EAASqT,EAAarT,OACxB,GAAI7+C,EACF,OAAOA,EAET,IAGIzqE,EAAO,IAAIK,KAHJ,KACM,GACP,IAENsiI,EAAgBz1H,KAAK01H,WAAWtZ,EAAQtpH,GAExC6iI,EAAwB,CAAC,IAAK,IAAK,KAWnCX,EAAcS,EAQlB,MApBiB,CAAC,OAAQ,QAAS,OAaxBl4H,SAAQ,SAAUq4H,EAAW90H,GACtC,IAAI+0H,EAZN,SAAyBz0H,EAAM00H,GAC7B,IAAIP,EAAmBtC,EAAyB7xH,IAAS,WACvD,IAAIsD,EAAU42G,EAAgB,CAC5Bya,aAAa,GACZ30H,EAAM,WAET,OADA6xH,EAAyB7xH,GAAQsD,EAC1BA,CACR,CANwD,GAOzD,OAAO,EAAIktH,EAAenV,cAAc8Y,EAAjC,CAAmDnZ,EAAQ0Z,GAAc1rH,MAAM,SACvF,CAG0B4rH,CAAgBJ,EAAW9iI,GAChDmjI,EAAuBN,EAAsB70H,GACjDk0H,EAAcA,EAAY9rH,QAAQ2sH,EAAoBI,EACvD,IAEDjB,EAAcA,EAAY9rH,QAAQ,KAAM,IAEzC,GACA,CACD1L,IAAK,mBACL+e,IAAK,WACH,IAAImzG,EAAe1vH,KAAKwP,MACtBwJ,EAAY02G,EAAa12G,UACzB2W,EAAW+/F,EAAa//F,SACxB2lG,EAAiB5F,EAAa4F,eAC9BrW,EAAUyQ,EAAazQ,QACvBD,EAAU0Q,EAAa1Q,QACvBpvF,EAAW8/F,EAAa9/F,SAC1B,MAAO,CACL5W,UAAWA,EACX2W,SAAUA,EACVsvF,QAASA,GAAW+M,EACpBhN,QAASA,GAAW+M,EACpB2B,SAAU1tH,KAAK0tH,SACfwI,UAAWl2H,KAAKk2H,UAChBC,QAASn2H,KAAKm2H,QAEdvmG,SAAUA,GAAY0lG,EAEzB,GACA,CACD93H,IAAK,YACL+e,IAAK,WAEH,OAAOgwG,EADSvsH,KAAKwP,MAAM48G,UAE5B,GACA,CACD5uH,IAAK,qBACL7B,MAAO,WACL,IAAIq5H,EAAch1H,KAAKg1H,YACnBz3D,EAASv9D,KAAKwP,MAAM+tD,OAOxB,OAxXN,SAA6By3D,EAAaoB,EAAkBC,GAC1D,IAAIC,EAAgB,GAChB1nH,EAAU,IAAIvE,OAAOtG,OAAOsC,KAAK+vH,GAAkBpjH,KAAI,SAAUhG,GACnE,MAAO,GAAGlZ,OAAOkZ,EAAI,IACtB,IAAExD,KAAK,KAAM,KACV4xB,EAAU45F,EAAY5qH,MAAMwE,GAChC,OAAOomH,EAAY5gI,MAAMwa,GAASugB,QAAO,SAAU9iB,EAAK6M,EAASpY,GAC/D,IAAI4yH,EAAUx6G,GAGd43G,EAAM,QAAY9lH,cAAcsmH,EAAQ,QAAa,CACnD9zH,IAAK,aAAa1J,OAAOgN,IACxBoY,GACC0d,EAAM,GAAG9iC,OAAO63B,EAAmBtf,GAAM,CAACqnH,IAC1Cc,EAAep5F,GAAWA,EAAQt6B,GACtC,GAAI0zH,EAAc,CAChB,IAAI+B,EAAiBH,EAAiB5B,IAAiB4B,EAAiBryH,OAAOsC,KAAK+vH,GAAkBlgG,MAAK,SAAUsgG,GACnH,OAAOhC,EAAapqH,MAAMosH,EAC3B,MACIH,GAA0BC,EAAc9lH,SAAS+lH,GACpD3/F,EAAI/1B,KAAK2zH,IAET59F,EAAI/1B,KAAK01H,EAAe/B,EAAc1zH,IACtCw1H,EAAcz1H,KAAK01H,GAEtB,CACD,OAAO3/F,CACR,GAAE,GACJ,CA4VY6/F,CAAoBzB,EANJ,CACrB9kE,EAAGlwD,KAAK02H,UACR7mB,EAAG7vG,KAAK22H,YACRxtF,EAAGnpC,KAAK42H,YAEqC,qBAAXr5D,EAErC,GACA,CACD//D,IAAK,oBACL7B,MAAO,WACL,IAAIg0H,EAAe3vH,KAAKwP,MACtBmgB,EAAWggG,EAAahgG,SACxBsvF,EAAU0Q,EAAa1Q,QACvBD,EAAU2Q,EAAa3Q,QACvB59G,EAAOuuH,EAAavuH,KACpBy1H,EAAuBlH,EAAakH,qBACpCjnG,EAAW+/F,EAAa//F,SACtBj0B,EAAQqE,KAAKqX,MAAM1b,MACvB,OAAoBm1H,EAAM,QAAY9lH,cAAc2mH,EAAY,QAAa,CAC3En0H,IAAK,OACLu3H,UAAW8B,EACXlnG,SAAUA,EACVsvF,QAASA,GAAW+M,EACpBhN,QAASA,GAAW+M,EACpB3qH,KAAMA,EACNssH,SAAU1tH,KAAK82H,eACflnG,SAAUA,EACVj0B,MAAOA,EACPitB,UAAW5oB,KAAK4oB,WAEnB,GACA,CACDprB,IAAK,SACL7B,MAAO,WACL,IAAIqd,EAAYhZ,KAAKwP,MAAMwJ,UAC3B,OAGE83G,EAAM,QAAY9lH,cAAc,MAAO,CACrCgO,UAAWA,EACXkoF,QAASlhG,KAAKkhG,SACblhG,KAAK+2H,oBAAqB/2H,KAAKg3H,qBAErC,MA/fyEjR,EAAkBD,EAAY9mH,UAAWqoH,GAAiBC,GAAavB,EAAkBD,EAAawB,GAAcvjH,OAAOE,eAAe6hH,EAAa,YAAa,CAAEtK,UAAU,IA6jBrP+X,CACR,CAhc4B,CAgc3BzC,EAAOmG,eACTv+H,EAAiB,QAAI66H,EACrBA,EAAUnhB,aAAe,CACvBga,UAAW,QACXhrH,KAAM,OACNwuH,YAAa,SAEf,IAAIxQ,EAAU+R,EAAU,QAAYpW,UAAU,CAACoW,EAAU,QAAYtqG,OAAQsqG,EAAU,QAAYtW,WAAW1nH,QAC9GogI,EAAU9gB,UAAY,CACpBgiB,UAAWtD,EAAU,QAAYzW,KACjC1hG,UAAWm4G,EAAU,QAAYtqG,OAAO8yF,WACxC+a,aAAcvD,EAAU,QAAYtqG,OACpC8tG,eAAgBxD,EAAU,QAAYtqG,OACtC8I,SAAUwhG,EAAU,QAAYzW,KAChCn9C,OAAQ4zD,EAAU,QAAYtqG,OAC9ByuG,eAAgBnE,EAAU,QAAYzW,KACtC0B,OAAQ+U,EAAU,QAAYtqG,OAC9Bo4F,QAAS6S,EAAY5S,UACrBkN,UAAW+E,EAAU,QAAYpoD,MAAM61C,GACvCI,QAAS8S,EAAY/S,UACrBkW,eAAgB9D,EAAU,QAAYtqG,OACtCquG,iBAAkB/D,EAAU,QAAYtqG,OACxCzlB,KAAM+vH,EAAU,QAAYtqG,OAC5BgwG,qBAAsB1F,EAAU,QAAYtqG,OAC5C6mG,SAAUyD,EAAU,QAAYzsE,KAChC90B,SAAUuhG,EAAU,QAAYzW,KAChCkV,YAAauB,EAAU,QAAYpoD,MAAM,CAAC,QAAS,MAAO,UAC1D6rD,iBAAkBzD,EAAU,QAAYzW,KACxC/+G,MAAOw1H,EAAU,QAAYpW,UAAU,CAACqE,EAAS+R,EAAU,QAAYxW,QAAQyE,KAC/EgW,cAAejE,EAAU,QAAYtqG,OACrCwuG,gBAAiBlE,EAAU,QAAYtqG,2CCxnBzC9iB,OAAOE,eAAevL,EAAS,aAAc,CAC3CiD,OAAO,IAETjD,EAAiB,QAAIw+H,EACrB,IAAIpG,EAASM,EAAuBx4H,EAAQ,OACxCu4H,EAAaC,EAAuBx4H,EAAQ,OAC5Cy4H,EAAaz4H,EAAQ,MACrBu+H,EAAS/F,EAAuBx4H,EAAQ,OACxCk5H,EAAcl5H,EAAQ,MACtBm5H,EAASn5H,EAAQ,MACjBoqH,EAAY,CAAC,UAAW,UAAW,QAAS,QAChD,SAASoO,EAAuB9sH,GAAO,OAAOA,GAAOA,EAAI+rD,WAAa/rD,EAAM,CAAE,QAAWA,EAAQ,CACjG,SAAS2+G,IAAiS,OAApRA,EAAWl/G,OAAOQ,OAASR,OAAOQ,OAAO/F,OAAS,SAAUoH,GAAU,IAAK,IAAIvF,EAAI,EAAGA,EAAI2I,UAAU3U,OAAQgM,IAAK,CAAE,IAAIW,EAASgI,UAAU3I,GAAI,IAAK,IAAI7C,KAAOwD,EAAc+C,OAAO/E,UAAUwP,eAAetN,KAAKF,EAAQxD,KAAQoI,EAAOpI,GAAOwD,EAAOxD,GAAW,CAAC,OAAOoI,CAAS,EAASq9G,EAASpgH,MAAM7C,KAAMgJ,UAAa,CACnV,SAASuiB,EAAyBvqB,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAAkExD,EAAK6C,EAAnEuF,EACzF,SAAuC5E,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAA2DxD,EAAK6C,EAA5DuF,EAAS,CAAC,EAAO0lB,EAAavnB,OAAOsC,KAAKrF,GAAqB,IAAKX,EAAI,EAAGA,EAAIirB,EAAWj3B,OAAQgM,IAAO7C,EAAM8tB,EAAWjrB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,IAAaoI,EAAOpI,GAAOwD,EAAOxD,IAAQ,OAAOoI,CAAS,CADjNwlB,CAA8BpqB,EAAQqqB,GAAuB,GAAItnB,OAAOynB,sBAAuB,CAAE,IAAIC,EAAmB1nB,OAAOynB,sBAAsBxqB,GAAS,IAAKX,EAAI,EAAGA,EAAIorB,EAAiBp3B,OAAQgM,IAAO7C,EAAMiuB,EAAiBprB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,GAAkBuG,OAAO/E,UAAU0sB,qBAAqBxqB,KAAKF,EAAQxD,KAAgBoI,EAAOpI,GAAOwD,EAAOxD,GAAS,CAAC,OAAOoI,CAAS,CAE5e,SAASsxH,EAASrlH,GAChB,IAAIotG,EAAUptG,EAAKotG,QACjBD,EAAUntG,EAAKmtG,QACfroH,EAAQkb,EAAKlb,MACbjD,EAAOme,EAAKne,KACZkwH,EAAar4F,EAAyB1Z,EAAMmxG,GAC1CoU,EACGzgI,GAGE,EAAI06H,EAAWv5H,gBAAgB,IAAI3E,KAAKO,EAAMiD,EAAQ,EAAG,IAFvD,GAIX,SAAS0gI,EAAYvkI,GACnB,OAAOA,GAAQY,KAAS,EAAI29H,EAAW79H,SAASV,GAAMkU,YAAcrQ,KAAU,EAAI06H,EAAWr9H,eAAelB,GAAMkU,UACnH,CACD,IAAIswH,GAAS,EAAIvF,EAAOwF,SAASH,EAAqBC,EAAYpY,KAAY,EAAIoS,EAAWp9H,SAASgrH,IAClGuY,GAAS,EAAIzF,EAAO0F,SAAS,EAAGJ,EAAYrY,KAAY,EAAIqS,EAAWp9H,SAAS+qH,IACpF,OAAoB8R,EAAM,QAAY9lH,cAAcmsH,EAAM,QAAalU,EAAS,CAC9EhqF,IAAKq+F,EACLt+F,IAAKw+F,EACLp2H,KAAM,OACLwiH,GACJ,CACDsT,EAASzkB,UAAY,CACnBsiB,UAAW5D,EAAU,QAAYtqG,OACjC7N,UAAWm4G,EAAU,QAAYtqG,OAAO8yF,WACxChqF,SAAUwhG,EAAU,QAAYzW,KAChC8V,SAAUsB,EAAY3S,MACtBF,QAAS6S,EAAY5S,UACrBF,QAAS8S,EAAY/S,UACrBpoH,MAAOw6H,EAAU,QAAYtqG,OAC7B6mG,SAAUyD,EAAU,QAAYzsE,KAChCwxE,UAAW/E,EAAU,QAAYzsE,KACjCyxE,QAAShF,EAAU,QAAYzsE,KAC/BswE,YAAa7D,EAAU,QAAYtqG,OACnC+I,SAAUuhG,EAAU,QAAYzW,KAChCka,iBAAkBzD,EAAU,QAAYzW,KACxC/+G,MAAOw1H,EAAU,QAAYtqG,OAC7BnzB,KAAMy9H,EAAU,QAAYtqG,2CCrD9B,SAAS63F,EAAQp6G,GAAkC,OAAOo6G,EAAU,mBAAqBzyF,QAAU,iBAAmBA,OAAOC,SAAW,SAAU5nB,GAAO,cAAcA,CAAM,EAAG,SAAUA,GAAO,OAAOA,GAAO,mBAAqB2nB,QAAU3nB,EAAIqK,cAAgBsd,QAAU3nB,IAAQ2nB,OAAOjtB,UAAY,gBAAkBsF,CAAM,EAAEo6G,EAAQp6G,EAAO,CAChVP,OAAOE,eAAevL,EAAS,aAAc,CAC3CiD,OAAO,IAETjD,EAAiB,QAAIg/H,EACrB,IAAI5G,EAASI,EAAwBt4H,EAAQ,OACzCu4H,EAAaC,EAAuBx4H,EAAQ,OAC5C++H,EAAQvG,EAAuBx4H,EAAQ,OACvCg/H,EAAoB1G,EAAwBt4H,EAAQ,OACpDk5H,EAAcl5H,EAAQ,MAC1B,SAASw4H,EAAuB9sH,GAAO,OAAOA,GAAOA,EAAI+rD,WAAa/rD,EAAM,CAAE,QAAWA,EAAQ,CACjG,SAAS0sH,EAAyBD,GAAe,GAAuB,oBAAZn9C,QAAwB,OAAO,KAAM,IAAIo+C,EAAoB,IAAIp+C,QAAeq+C,EAAmB,IAAIr+C,QAAW,OAAQo9C,EAA2B,SAAkCD,GAAe,OAAOA,EAAckB,EAAmBD,CAAoB,GAAEjB,EAAe,CAC/U,SAASG,EAAwB5sH,EAAKysH,GAAe,IAAKA,GAAezsH,GAAOA,EAAI+rD,WAAc,OAAO/rD,EAAO,GAAY,OAARA,GAAiC,WAAjBo6G,EAAQp6G,IAAoC,oBAARA,EAAsB,MAAO,CAAE,QAAWA,GAAS,IAAI4J,EAAQ8iH,EAAyBD,GAAc,GAAI7iH,GAASA,EAAMwpD,IAAIpzD,GAAQ,OAAO4J,EAAMqO,IAAIjY,GAAQ,IAAI0uD,EAAS,CAAC,EAAOi+D,EAAwBltH,OAAOE,gBAAkBF,OAAOkpB,yBAA0B,IAAK,IAAIzvB,KAAO8G,EAAO,GAAY,YAAR9G,GAAqBuG,OAAO/E,UAAUwP,eAAetN,KAAKoD,EAAK9G,GAAM,CAAE,IAAIgQ,EAAOyjH,EAAwBltH,OAAOkpB,yBAAyB3oB,EAAK9G,GAAO,KAAUgQ,IAASA,EAAK+O,KAAO/O,EAAK8O,KAAQvY,OAAOE,eAAe+uD,EAAQx1D,EAAKgQ,GAAgBwlD,EAAOx1D,GAAO8G,EAAI9G,EAAS,CAAmE,OAAhEw1D,EAAM,QAAc1uD,EAAS4J,GAASA,EAAMoO,IAAIhY,EAAK0uD,GAAkBA,CAAS,CAG3yB,IAAIj5C,EAAgC,qBAAb5P,SACnB0tH,EAA4B99G,EAAY+2G,EAAOgH,gBAAkBhH,EAAOiH,UACxEC,EAAmBj+G,GAAa,0BAA0BtP,KAAKI,UAAUC,WACzEmtH,EAAYl+G,GAAa,UAAUtP,KAAKI,UAAUC,WACtD,SAASq9G,EAAQtpG,GACf,IAAIjZ,EAASiZ,EAAMjZ,OACfoyH,EACF3yG,uBAAsB,WACpB,OAAOzf,EAAOsyH,QACf,IAEDtyH,EAAOsyH,QAEV,CAwCD,SAASC,EAAez5C,GAKtB,OAAO,SAAoB7/D,GACzB,IAAIo5G,EAAJ,CAIA,IAAIz6H,EAAMqhB,EAAMrhB,IACd27C,EAAQt6B,EAAMjZ,OACZjK,EAAQw9C,EAAMx9C,MACdy8H,EAA6B,IAAf56H,EAAInJ,QAAgB,KAAKoW,KAAKjN,GAC5C66H,EA3BR,SAA4Bl/E,GAK1B,OAAIA,GAAS,mBAAoBA,GAAkC,OAAzBA,EAAMm/E,eACvCn/E,EAAMx9C,MAAMxD,MAAMghD,EAAMm/E,eAAgBn/E,EAAMo/E,cAEnD,iBAAkB5sH,OACbA,OAAO6sH,eAAexxH,WAExB,IACR,CAemByxH,CAAmBt/E,GAC9Bi/E,IAAiBC,GAAa18H,EAAMtH,OAASqqF,IAChD7/D,EAAMy0B,gBAPP,CASF,CACF,CACD,SAASokF,EAAM7lH,GACb,IAAIkjH,EAAYljH,EAAKkjH,UACnBN,EAAY5iH,EAAK4iH,UACjBz7G,EAAYnH,EAAKmH,UACjB2W,EAAW9d,EAAK8d,SAChB6gG,EAAW3+G,EAAK2+G,SAChBv3F,EAAMpnB,EAAKonB,IACXD,EAAMnnB,EAAKmnB,IACX53B,EAAOyQ,EAAKzQ,KACZs3H,EAAe7mH,EAAK6mH,aACpBhL,EAAW77G,EAAK67G,SAChBwI,EAAYrkH,EAAKqkH,UACjByC,EAAW9mH,EAAKskH,QAChByC,EAAmB/mH,EAAKmjH,YACxBA,OAAmC,IAArB4D,EAA8B,KAAOA,EACnDhpG,EAAW/d,EAAK+d,SAChBglG,EAAmB/iH,EAAK+iH,iBACxB3jE,EAAOp/C,EAAKo/C,KACZt1D,EAAQkW,EAAKlW,MACfk8H,GAA0B,WA9E5B,IAAgC3+G,EA+EvBs3G,GAAaA,EAASphG,WAG3B,EAAIwoG,EAAiB,SAAapH,EAASphG,SAlFflW,EAmFLs3G,EAASphG,QAlFN,aAAxBjlB,SAAS/N,YAMbuP,OAAO9N,iBAAiB,QAHxB,YACE,EAAI+5H,EAAiB,SAAa1+G,EACnC,IAGH,SAAoCA,GAClC,GAAK/O,SAAS0uH,MAAd,CAGA,IAAIC,GAAO,EAAIlB,EAAkBmB,kBAAkB7/G,GAC9C4/G,IAGc3uH,SAAS0uH,MAAM32D,MAAM42D,IAOxC3uH,SAAS0uH,MAAMh7H,iBAAiB,eAHhC,YACE,EAAI+5H,EAAiB,SAAa1+G,EACnC,IAXA,CAaF,CA2DG8/G,CAA2BxI,EAASphG,SACrC,GAAE,CAACohG,EAAU70H,IACd,IAAIs9H,EAAiBrE,GAAoBj5H,GAASA,EAAQ,KAAiB,MAAVA,IAAkBA,EAAMqL,WAAW89E,WAAW,MAC3GpG,EAAYzlD,EAAMA,EAAIjyB,WAAW3S,OAAS,KAC9C,MAAO,CAAC4kI,GAA+BnI,EAAM,QAAY9lH,cAAc,OAAQ,CAC7ExN,IAAK,cACLwb,UAAW,GAAGllB,OAAOklB,EAAW,kBAC/B,KAAmB83G,EAAM,QAAY9lH,cAAc,QAAS,CAC7DxN,IAAK,QACL,aAAcu3H,EACdmE,aAAc,MACdzE,UAAWA,EACXz7G,WAAW,EAAI2+G,EAAK,SAAa,GAAG7jI,OAAOklB,EAAW,WAAY,GAAGllB,OAAOklB,EAAW,MAAMllB,OAAO4kI,GAAgBt3H,GAAO63H,GAAkB,GAAGnlI,OAAOklB,EAAW,4BAClK,aAAc,OACd2W,SAAUA,EACVwpG,UAAW,UACXlgG,IAAKA,EACLD,IAAKA,EACL53B,KAAMA,EACNssH,SAAUA,EACVvF,QAASA,EACT+N,UAAWA,EACXkD,WAAYjB,EAAez5C,GAC3By3C,QAAS,SAAiBt3G,IACxB,EAAI+4G,EAAiB,SAAa/4G,EAAMjZ,QACpC+yH,GACFA,EAAS95G,EAEZ,EACDm2G,YAAaA,EACbrhH,IAAK68G,EACL5gG,SAAUA,EACVqhC,KAAMA,EACNhzD,KAAM,SACNtC,MAAiB,OAAVA,EAAiBA,EAAQ,KAEnC,CACD+7H,EAAMjlB,UAAY,CAChBsiB,UAAW5D,EAAU,QAAYtqG,OACjC4tG,UAAWtD,EAAU,QAAYzW,KACjC1hG,UAAWm4G,EAAU,QAAYtqG,OAAO8yF,WACxChqF,SAAUwhG,EAAU,QAAYzW,KAChC8V,SAAUsB,EAAY3S,MACtBlmF,IAAKk4F,EAAU,QAAY1tH,OAC3Bu1B,IAAKm4F,EAAU,QAAY1tH,OAC3BrC,KAAM+vH,EAAU,QAAYtqG,OAC5B6xG,aAAcvH,EAAU,QAAYtqG,OACpC6mG,SAAUyD,EAAU,QAAYzsE,KAChCwxE,UAAW/E,EAAU,QAAYzsE,KACjCyxE,QAAShF,EAAU,QAAYzsE,KAC/BswE,YAAa7D,EAAU,QAAYtqG,OACnC+I,SAAUuhG,EAAU,QAAYzW,KAChCka,iBAAkBzD,EAAU,QAAYzW,KACxCzpD,KAAMkgE,EAAU,QAAY1tH,OAC5B9H,MAAOw1H,EAAU,QAAYtqG,2CCvK/B9iB,OAAOE,eAAevL,EAAS,aAAc,CAC3CiD,OAAO,IAETjD,EAAiB,QAAI2gI,EACrB,IAAIvI,EAASM,EAAuBx4H,EAAQ,OACxCu4H,EAAaC,EAAuBx4H,EAAQ,OAC5Cy4H,EAAaz4H,EAAQ,MACrBu+H,EAAS/F,EAAuBx4H,EAAQ,OACxCk5H,EAAcl5H,EAAQ,MACtBm5H,EAASn5H,EAAQ,MACjBoqH,EAAY,CAAC,UAAW,UAAW,QACvC,SAASoO,EAAuB9sH,GAAO,OAAOA,GAAOA,EAAI+rD,WAAa/rD,EAAM,CAAE,QAAWA,EAAQ,CACjG,SAAS2+G,IAAiS,OAApRA,EAAWl/G,OAAOQ,OAASR,OAAOQ,OAAO/F,OAAS,SAAUoH,GAAU,IAAK,IAAIvF,EAAI,EAAGA,EAAI2I,UAAU3U,OAAQgM,IAAK,CAAE,IAAIW,EAASgI,UAAU3I,GAAI,IAAK,IAAI7C,KAAOwD,EAAc+C,OAAO/E,UAAUwP,eAAetN,KAAKF,EAAQxD,KAAQoI,EAAOpI,GAAOwD,EAAOxD,GAAW,CAAC,OAAOoI,CAAS,EAASq9G,EAASpgH,MAAM7C,KAAMgJ,UAAa,CACnV,SAASuiB,EAAyBvqB,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAAkExD,EAAK6C,EAAnEuF,EACzF,SAAuC5E,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAA2DxD,EAAK6C,EAA5DuF,EAAS,CAAC,EAAO0lB,EAAavnB,OAAOsC,KAAKrF,GAAqB,IAAKX,EAAI,EAAGA,EAAIirB,EAAWj3B,OAAQgM,IAAO7C,EAAM8tB,EAAWjrB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,IAAaoI,EAAOpI,GAAOwD,EAAOxD,IAAQ,OAAOoI,CAAS,CADjNwlB,CAA8BpqB,EAAQqqB,GAAuB,GAAItnB,OAAOynB,sBAAuB,CAAE,IAAIC,EAAmB1nB,OAAOynB,sBAAsBxqB,GAAS,IAAKX,EAAI,EAAGA,EAAIorB,EAAiBp3B,OAAQgM,IAAO7C,EAAMiuB,EAAiBprB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,GAAkBuG,OAAO/E,UAAU0sB,qBAAqBxqB,KAAKF,EAAQxD,KAAgBoI,EAAOpI,GAAOwD,EAAOxD,GAAS,CAAC,OAAOoI,CAAS,CAE5e,SAASyzH,EAAWxnH,GAClB,IAAIotG,EAAUptG,EAAKotG,QACjBD,EAAUntG,EAAKmtG,QACftrH,EAAOme,EAAKne,KACZkwH,EAAar4F,EAAyB1Z,EAAMmxG,GAC9C,SAASsW,EAAWxmI,GAClB,OAAOA,GAAQY,KAAS,EAAI29H,EAAW79H,SAASV,GAAMkU,UACvD,CACD,IAAIuyH,GAAW,EAAIxH,EAAOwF,SAAS,GAAI+B,EAAWra,KAAY,EAAIoS,EAAWr9H,eAAeirH,IACxFua,GAAW,EAAIzH,EAAO0F,SAAS,EAAG6B,EAAWta,KAAY,EAAIqS,EAAWr9H,eAAegrH,IAC3F,OAAoB8R,EAAM,QAAY9lH,cAAcmsH,EAAM,QAAalU,EAAS,CAC9EhqF,IAAKsgG,EACLvgG,IAAKwgG,EACLp4H,KAAM,SACLwiH,GACJ,CACDyV,EAAW5mB,UAAY,CACrBsiB,UAAW5D,EAAU,QAAYtqG,OACjC7N,UAAWm4G,EAAU,QAAYtqG,OAAO8yF,WACxChqF,SAAUwhG,EAAU,QAAYzW,KAChC8V,SAAUsB,EAAY3S,MACtBF,QAAS6S,EAAY5S,UACrBF,QAAS8S,EAAY/S,UACrB2O,SAAUyD,EAAU,QAAYzsE,KAChCwxE,UAAW/E,EAAU,QAAYzsE,KACjCyxE,QAAShF,EAAU,QAAYzsE,KAC/BswE,YAAa7D,EAAU,QAAYtqG,OACnC+I,SAAUuhG,EAAU,QAAYzW,KAChCka,iBAAkBzD,EAAU,QAAYzW,KACxC/+G,MAAOw1H,EAAU,QAAYtqG,OAC7BnzB,KAAMy9H,EAAU,QAAYtqG,2CC7C9B9iB,OAAOE,eAAevL,EAAS,aAAc,CAC3CiD,OAAO,IAETjD,EAAiB,QAAI+gI,EACrB,IAAI3I,EAASM,EAAuBx4H,EAAQ,OACxCu4H,EAAaC,EAAuBx4H,EAAQ,OAC5C++H,EAAQvG,EAAuBx4H,EAAQ,OACvCy4H,EAAaz4H,EAAQ,MACrBg5H,EAAiBh5H,EAAQ,MACzBk5H,EAAcl5H,EAAQ,MACtBm5H,EAASn5H,EAAQ,MACjBoqH,EAAY,CAAC,YAAa,YAAa,WAAY,SAAU,UAAW,UAAW,cAAe,QAAS,QAAS,QACxH,SAASoO,EAAuB9sH,GAAO,OAAOA,GAAOA,EAAI+rD,WAAa/rD,EAAM,CAAE,QAAWA,EAAQ,CACjG,SAAS2+G,IAAiS,OAApRA,EAAWl/G,OAAOQ,OAASR,OAAOQ,OAAO/F,OAAS,SAAUoH,GAAU,IAAK,IAAIvF,EAAI,EAAGA,EAAI2I,UAAU3U,OAAQgM,IAAK,CAAE,IAAIW,EAASgI,UAAU3I,GAAI,IAAK,IAAI7C,KAAOwD,EAAc+C,OAAO/E,UAAUwP,eAAetN,KAAKF,EAAQxD,KAAQoI,EAAOpI,GAAOwD,EAAOxD,GAAW,CAAC,OAAOoI,CAAS,EAASq9G,EAASpgH,MAAM7C,KAAMgJ,UAAa,CACnV,SAAS2iB,EAAmBtf,GAAO,OAInC,SAA4BA,GAAO,GAAIzJ,MAAMkD,QAAQuG,GAAM,OAAOgvG,EAAkBhvG,EAAO,CAJjDuf,CAAmBvf,IAG7D,SAA0B2f,GAAQ,GAAsB,qBAAXC,QAAmD,MAAzBD,EAAKC,OAAOC,WAA2C,MAAtBF,EAAK,cAAuB,OAAOppB,MAAMsB,KAAK8nB,EAAQ,CAHzFH,CAAiBxf,IAEtF,SAAqCoR,EAAGu+F,GAAU,IAAKv+F,EAAG,OAAQ,GAAiB,kBAANA,EAAgB,OAAO49F,EAAkB59F,EAAGu+F,GAAS,IAAInrG,EAAI9M,OAAO/E,UAAUgI,SAAS9F,KAAKuc,GAAGtlB,MAAM,GAAI,GAAc,WAAN0Y,GAAkB4M,EAAE9O,cAAakC,EAAI4M,EAAE9O,YAAYvN,MAAM,GAAU,QAANyP,GAAqB,QAANA,EAAa,OAAOjO,MAAMsB,KAAKuZ,GAAI,GAAU,cAAN5M,GAAqB,2CAA2CpG,KAAKoG,GAAI,OAAOwqG,EAAkB59F,EAAGu+F,EAAU,CAFlUC,CAA4B5vG,IAC1H,WAAgC,MAAM,IAAIvM,UAAU,uIAA0I,CAD5DgsB,EAAuB,CAKzJ,SAASuvF,EAAkBhvG,EAAKgnD,IAAkB,MAAPA,GAAeA,EAAMhnD,EAAIhY,UAAQg/D,EAAMhnD,EAAIhY,QAAQ,IAAK,IAAIgM,EAAI,EAAG0rB,EAAO,IAAInpB,MAAMywD,GAAMhzD,EAAIgzD,EAAKhzD,IAAK0rB,EAAK1rB,GAAKgM,EAAIhM,GAAI,OAAO0rB,CAAO,CACnL,SAASR,EAAyBvqB,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAAkExD,EAAK6C,EAAnEuF,EACzF,SAAuC5E,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAA2DxD,EAAK6C,EAA5DuF,EAAS,CAAC,EAAO0lB,EAAavnB,OAAOsC,KAAKrF,GAAqB,IAAKX,EAAI,EAAGA,EAAIirB,EAAWj3B,OAAQgM,IAAO7C,EAAM8tB,EAAWjrB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,IAAaoI,EAAOpI,GAAOwD,EAAOxD,IAAQ,OAAOoI,CAAS,CADjNwlB,CAA8BpqB,EAAQqqB,GAAuB,GAAItnB,OAAOynB,sBAAuB,CAAE,IAAIC,EAAmB1nB,OAAOynB,sBAAsBxqB,GAAS,IAAKX,EAAI,EAAGA,EAAIorB,EAAiBp3B,OAAQgM,IAAO7C,EAAMiuB,EAAiBprB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,GAAkBuG,OAAO/E,UAAU0sB,qBAAqBxqB,KAAKF,EAAQxD,KAAgBoI,EAAOpI,GAAOwD,EAAOxD,GAAS,CAAC,OAAOoI,CAAS,CAE5e,SAAS6zH,EAAY5nH,GACnB,IAAIkjH,EAAYljH,EAAKkjH,UACnB/7G,EAAYnH,EAAKmH,UACjBw3G,EAAW3+G,EAAK2+G,SAChBpU,EAASvqG,EAAKuqG,OACd6C,EAAUptG,EAAKotG,QACfD,EAAUntG,EAAKmtG,QACf4Z,EAAmB/mH,EAAKmjH,YACxBA,OAAmC,IAArB4D,EAA8B,KAAOA,EACnDc,EAAS7nH,EAAI,MACblW,EAAQkW,EAAKlW,MACbjI,EAAOme,EAAKne,KACZkwH,EAAar4F,EAAyB1Z,EAAMmxG,GAC9C,SAASsW,EAAWxmI,GAClB,OAAOA,GAAQY,KAAS,EAAI29H,EAAW79H,SAASV,GAAMkU,UACvD,CACD,IAAIuyH,GAAW,EAAIxH,EAAOwF,SAAS,GAAI+B,EAAWra,KAAY,EAAIoS,EAAWr9H,eAAeirH,IACxFua,GAAW,EAAIzH,EAAO0F,SAAS,EAAG6B,EAAWta,KAAY,EAAIqS,EAAWr9H,eAAegrH,IACvFT,EAAQ5yF,EAAmB/oB,MAAM,KAAKoQ,KAAI,SAAUhG,EAAIlM,GAC1D,OAAO,IAAI3N,KAAK,KAAM2N,EAAO,EAC9B,IACGM,EAAO,QACPo+E,EAAYk6C,EAAS9H,EAAe+H,iBAAmB/H,EAAe9U,YAC1E,OAAoBgU,EAAM,QAAY9lH,cAAc,SAAUi4G,EAAS,CACrE,aAAc8R,EACd/7G,WAAW,EAAI2+G,EAAK,SAAa,GAAG7jI,OAAOklB,EAAW,WAAY,GAAGllB,OAAOklB,EAAW,MAAMllB,OAAOsN,IACpG,aAAc,OACd,cAAe,OACfA,KAAMA,EACNuS,IAAK68G,EACL70H,MAAiB,OAAVA,EAAiBA,EAAQ,IAC/BioH,IAAcjoH,GAAsBm1H,EAAM,QAAY9lH,cAAc,SAAU,CAC/ErP,MAAO,IACNq5H,GAAczW,EAAMvrG,KAAI,SAAUlgB,GACnC,IAAI6D,GAAQ,EAAI06H,EAAWr9H,eAAelB,GACtC68B,EAAWh5B,EAAQ6iI,GAAY7iI,EAAQ4iI,EAC3C,OAAoBzI,EAAM,QAAY9lH,cAAc,SAAU,CAC5DxN,IAAK7G,EACLg5B,SAAUA,EACVh0B,MAAOhF,GACN6oF,EAAU48B,EAAQtpH,GACtB,IACF,CACD2mI,EAAYhnB,UAAY,CACtBsiB,UAAW5D,EAAU,QAAYtqG,OACjC7N,UAAWm4G,EAAU,QAAYtqG,OAAO8yF,WACxChqF,SAAUwhG,EAAU,QAAYzW,KAChC8V,SAAUsB,EAAY3S,MACtB/C,OAAQ+U,EAAU,QAAYtqG,OAC9Bo4F,QAAS6S,EAAY5S,UACrBF,QAAS8S,EAAY/S,UACrB2O,SAAUyD,EAAU,QAAYzsE,KAChCwxE,UAAW/E,EAAU,QAAYzsE,KACjCyxE,QAAShF,EAAU,QAAYzsE,KAC/BswE,YAAa7D,EAAU,QAAYtqG,OACnC+I,SAAUuhG,EAAU,QAAYzW,KAChC,MAASyW,EAAU,QAAYzW,KAC/B/+G,MAAOw1H,EAAU,QAAYtqG,OAC7BnzB,KAAMy9H,EAAU,QAAYtqG,2CChF9B9iB,OAAOE,eAAevL,EAAS,aAAc,CAC3CiD,OAAO,IAETjD,EAAiB,QAAIkhI,EACrB,IAAI9I,EAASM,EAAuBx4H,EAAQ,OACxCu4H,EAAaC,EAAuBx4H,EAAQ,OAC5Cy4H,EAAaz4H,EAAQ,MACrBk5H,EAAcl5H,EAAQ,MAC1B,SAASw4H,EAAuB9sH,GAAO,OAAOA,GAAOA,EAAI+rD,WAAa/rD,EAAM,CAAE,QAAWA,EAAQ,CACjG,SAASs1H,EAAY/nH,GACnB,IAAIkjH,EAAYljH,EAAKkjH,UACnBplG,EAAW9d,EAAK8d,SAChBsvF,EAAUptG,EAAKotG,QACfD,EAAUntG,EAAKmtG,QACf59G,EAAOyQ,EAAKzQ,KACZssH,EAAW77G,EAAK67G,SAChB99F,EAAW/d,EAAK+d,SAChBj0B,EAAQkW,EAAKlW,MACbitB,EAAY/W,EAAK+W,UACfixG,EAAkB,WACpB,OAAQjxG,GACN,IAAK,SACL,IAAK,OACH,MAAO,SACT,IAAK,QACH,MAAO,QACT,IAAK,MACH,MAAO,OACT,QACE,MAAM,IAAI/0B,MAAM,sBAErB,CAZqB,GAalBimI,EAAoB,WACtB,OAAQlxG,GACN,IAAK,UACL,IAAK,SACL,IAAK,OACH,OAAOyoG,EAAW79H,QACpB,IAAK,QACH,OAAO69H,EAAW/4H,iBACpB,IAAK,MACH,OAAO+4H,EAAW94H,gBACpB,QACE,MAAM,IAAI1E,MAAM,sBAErB,CAbuB,GAiBxB,OAAoBi9H,EAAM,QAAY9lH,cAAc,QAAS,CAC3D,aAAc+pH,EACdplG,SAAUA,EACVhY,QAAQ,EACRshB,IAAKgmF,EAAU6a,EAAkB7a,GAAW,KAC5CjmF,IAAKgmF,EAAU8a,EAAkB9a,GAAW,KAC5C59G,KAAMA,EACNssH,SAAUA,EACVvF,QAXF,SAAyBtpG,GACvBA,EAAMoxB,iBACP,EAUCrgB,SAAUA,EACVxP,MAAO,CACL25G,WAAY,SACZhqH,SAAU,WACViqH,OAAQ,QAEV/7H,KAAM47H,EACNl+H,MAAOA,EAAQm+H,EAAkBn+H,GAAS,IAE7C,CACDi+H,EAAYnnB,UAAY,CACtBsiB,UAAW5D,EAAU,QAAYtqG,OACjC8I,SAAUwhG,EAAU,QAAYzW,KAChCuE,QAAS6S,EAAY5S,UACrBF,QAAS8S,EAAY/S,UACrB39G,KAAM+vH,EAAU,QAAYtqG,OAC5B6mG,SAAUyD,EAAU,QAAYzsE,KAChC90B,SAAUuhG,EAAU,QAAYzW,KAChC/+G,MAAOw1H,EAAU,QAAYpW,UAAU,CAACoW,EAAU,QAAYtqG,OAAQsqG,EAAU,QAAYtW,WAAW1nH,QACvGy1B,UAAWkpG,EAAYmI,gDC7EzBl2H,OAAOE,eAAevL,EAAS,aAAc,CAC3CiD,OAAO,IAETjD,EAAiB,QAAIwhI,EACrB,IAAIpJ,EAASM,EAAuBx4H,EAAQ,OACxCu4H,EAAaC,EAAuBx4H,EAAQ,OAC5Cy4H,EAAaz4H,EAAQ,MACrBu+H,EAAS/F,EAAuBx4H,EAAQ,OACxCk5H,EAAcl5H,EAAQ,MACtBm5H,EAASn5H,EAAQ,MACjBoqH,EAAY,CAAC,UAAW,UAAW,cAAe,aACtD,SAASoO,EAAuB9sH,GAAO,OAAOA,GAAOA,EAAI+rD,WAAa/rD,EAAM,CAAE,QAAWA,EAAQ,CACjG,SAAS2+G,IAAiS,OAApRA,EAAWl/G,OAAOQ,OAASR,OAAOQ,OAAO/F,OAAS,SAAUoH,GAAU,IAAK,IAAIvF,EAAI,EAAGA,EAAI2I,UAAU3U,OAAQgM,IAAK,CAAE,IAAIW,EAASgI,UAAU3I,GAAI,IAAK,IAAI7C,KAAOwD,EAAc+C,OAAO/E,UAAUwP,eAAetN,KAAKF,EAAQxD,KAAQoI,EAAOpI,GAAOwD,EAAOxD,GAAW,CAAC,OAAOoI,CAAS,EAASq9G,EAASpgH,MAAM7C,KAAMgJ,UAAa,CACnV,SAASuiB,EAAyBvqB,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAAkExD,EAAK6C,EAAnEuF,EACzF,SAAuC5E,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAA2DxD,EAAK6C,EAA5DuF,EAAS,CAAC,EAAO0lB,EAAavnB,OAAOsC,KAAKrF,GAAqB,IAAKX,EAAI,EAAGA,EAAIirB,EAAWj3B,OAAQgM,IAAO7C,EAAM8tB,EAAWjrB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,IAAaoI,EAAOpI,GAAOwD,EAAOxD,IAAQ,OAAOoI,CAAS,CADjNwlB,CAA8BpqB,EAAQqqB,GAAuB,GAAItnB,OAAOynB,sBAAuB,CAAE,IAAIC,EAAmB1nB,OAAOynB,sBAAsBxqB,GAAS,IAAKX,EAAI,EAAGA,EAAIorB,EAAiBp3B,OAAQgM,IAAO7C,EAAMiuB,EAAiBprB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,GAAkBuG,OAAO/E,UAAU0sB,qBAAqBxqB,KAAKF,EAAQxD,KAAgBoI,EAAOpI,GAAOwD,EAAOxD,GAAS,CAAC,OAAOoI,CAAS,CAE5e,SAASs0H,EAAUroH,GACjB,IAAIotG,EAAUptG,EAAKotG,QACjBD,EAAUntG,EAAKmtG,QACf4Z,EAAmB/mH,EAAKmjH,YACxBA,OAAmC,IAArB4D,EAA8B,OAASA,EACrDhwG,EAAY/W,EAAK+W,UACjBg7F,EAAar4F,EAAyB1Z,EAAMmxG,GAC1CmX,GAAU,EAAIpI,EAAOwF,SAAS,OAAQtY,IAAW,EAAIoS,EAAW79H,SAASyrH,IACzEmb,GAAU,EAAIrI,EAAO0F,SAAS,EAAGzY,IAAW,EAAIqS,EAAW79H,SAASwrH,IACpEqb,EACgB,YAAdzxG,EACK,GAEF,EAET,OAAoBkoG,EAAM,QAAY9lH,cAAcmsH,EAAM,QAAalU,EAAS,CAC9EhqF,IAAKkhG,EACLnhG,IAAKohG,EACLh5H,KAAM,OACN4zH,YAAaA,EACb/jE,KAAMopE,GACLzW,GACJ,CACDsW,EAAUznB,UAAY,CACpBsiB,UAAW5D,EAAU,QAAYtqG,OACjC7N,UAAWm4G,EAAU,QAAYtqG,OAAO8yF,WACxChqF,SAAUwhG,EAAU,QAAYzW,KAChC8V,SAAUsB,EAAY3S,MACtBF,QAAS6S,EAAY5S,UACrBF,QAAS8S,EAAY/S,UACrB2O,SAAUyD,EAAU,QAAYzsE,KAChCwxE,UAAW/E,EAAU,QAAYzsE,KACjCyxE,QAAShF,EAAU,QAAYzsE,KAC/BswE,YAAa7D,EAAU,QAAYtqG,OACnC+I,SAAUuhG,EAAU,QAAYzW,KAChC/+G,MAAOw1H,EAAU,QAAYtqG,OAC7B+B,UAAWkpG,EAAYmI,gDCnDzBl2H,OAAOE,eAAevL,EAAS,aAAc,CAC3CiD,OAAO,IAETjD,EAAiB,aAAI,EACrB,IAAIo4H,EAaJ,SAAiCxsH,EAAKysH,GAAe,IAAKA,GAAezsH,GAAOA,EAAI+rD,WAAc,OAAO/rD,EAAO,GAAY,OAARA,GAAiC,WAAjBo6G,EAAQp6G,IAAoC,oBAARA,EAAsB,MAAO,CAAE,QAAWA,GAAS,IAAI4J,EAAQ8iH,EAAyBD,GAAc,GAAI7iH,GAASA,EAAMwpD,IAAIpzD,GAAQ,OAAO4J,EAAMqO,IAAIjY,GAAQ,IAAI0uD,EAAS,CAAC,EAAOi+D,EAAwBltH,OAAOE,gBAAkBF,OAAOkpB,yBAA0B,IAAK,IAAIzvB,KAAO8G,EAAO,GAAY,YAAR9G,GAAqBuG,OAAO/E,UAAUwP,eAAetN,KAAKoD,EAAK9G,GAAM,CAAE,IAAIgQ,EAAOyjH,EAAwBltH,OAAOkpB,yBAAyB3oB,EAAK9G,GAAO,KAAUgQ,IAASA,EAAK+O,KAAO/O,EAAK8O,KAAQvY,OAAOE,eAAe+uD,EAAQx1D,EAAKgQ,GAAgBwlD,EAAOx1D,GAAO8G,EAAI9G,EAAS,CAAGw1D,EAAM,QAAc1uD,EAAS4J,GAASA,EAAMoO,IAAIhY,EAAK0uD,GAAW,OAAOA,CAAS,CAb9xBk+D,CAAwBt4H,EAAQ,OACzC0hI,EAAY1hI,EAAQ,MACpBu4H,EAAaC,EAAuBx4H,EAAQ,OAC5C2hI,EAAkBnJ,EAAuBx4H,EAAQ,OACjD++H,EAAQvG,EAAuBx4H,EAAQ,OACvC4hI,EAAiBpJ,EAAuBx4H,EAAQ,OAChD6hI,EAAYrJ,EAAuBx4H,EAAQ,OAC3C8hI,EAAatJ,EAAuBx4H,EAAQ,OAC5Ck5H,EAAcl5H,EAAQ,MACtBoqH,EAAY,CAAC,oBAAqB,YAAa,WAAY,kBAAmB,SAChF2X,EAAa,CAAC,YAChB,SAASvJ,EAAuB9sH,GAAO,OAAOA,GAAOA,EAAI+rD,WAAa/rD,EAAM,CAAE,QAAWA,EAAQ,CACjG,SAAS0sH,EAAyBD,GAAe,GAAuB,oBAAZn9C,QAAwB,OAAO,KAAM,IAAIo+C,EAAoB,IAAIp+C,QAAeq+C,EAAmB,IAAIr+C,QAAW,OAAQo9C,EAA2B,SAAkCD,GAAe,OAAOA,EAAckB,EAAmBD,CAAoB,GAAEjB,EAAe,CAE/U,SAASrS,EAAQp6G,GAAkC,OAAOo6G,EAAU,mBAAqBzyF,QAAU,iBAAmBA,OAAOC,SAAW,SAAU5nB,GAAO,cAAcA,CAAM,EAAG,SAAUA,GAAO,OAAOA,GAAO,mBAAqB2nB,QAAU3nB,EAAIqK,cAAgBsd,QAAU3nB,IAAQ2nB,OAAOjtB,UAAY,gBAAkBsF,CAAM,EAAEo6G,EAAQp6G,EAAO,CAChV,SAASinB,EAAyBvqB,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAAkExD,EAAK6C,EAAnEuF,EACzF,SAAuC5E,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAA2DxD,EAAK6C,EAA5DuF,EAAS,CAAC,EAAO0lB,EAAavnB,OAAOsC,KAAKrF,GAAqB,IAAKX,EAAI,EAAGA,EAAIirB,EAAWj3B,OAAQgM,IAAO7C,EAAM8tB,EAAWjrB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,IAAaoI,EAAOpI,GAAOwD,EAAOxD,IAAQ,OAAOoI,CAAS,CADjNwlB,CAA8BpqB,EAAQqqB,GAAuB,GAAItnB,OAAOynB,sBAAuB,CAAE,IAAIC,EAAmB1nB,OAAOynB,sBAAsBxqB,GAAS,IAAKX,EAAI,EAAGA,EAAIorB,EAAiBp3B,OAAQgM,IAAO7C,EAAMiuB,EAAiBprB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,GAAkBuG,OAAO/E,UAAU0sB,qBAAqBxqB,KAAKF,EAAQxD,KAAgBoI,EAAOpI,GAAOwD,EAAOxD,GAAS,CAAC,OAAOoI,CAAS,CAE5e,SAASq9G,IAAiS,OAApRA,EAAWl/G,OAAOQ,OAASR,OAAOQ,OAAO/F,OAAS,SAAUoH,GAAU,IAAK,IAAIvF,EAAI,EAAGA,EAAI2I,UAAU3U,OAAQgM,IAAK,CAAE,IAAIW,EAASgI,UAAU3I,GAAI,IAAK,IAAI7C,KAAOwD,EAAc+C,OAAO/E,UAAUwP,eAAetN,KAAKF,EAAQxD,KAAQoI,EAAOpI,GAAOwD,EAAOxD,GAAW,CAAC,OAAOoI,CAAS,EAASq9G,EAASpgH,MAAM7C,KAAMgJ,UAAa,CACnV,SAASkpH,EAAe7lH,EAAKhM,GAAK,OAKlC,SAAyBgM,GAAO,GAAIzJ,MAAMkD,QAAQuG,GAAM,OAAOA,CAAM,CAL5B8lH,CAAgB9lH,IAIzD,SAA+BA,EAAKhM,GAAK,IAAI+xH,EAAK,MAAQ/lH,EAAM,KAAO,oBAAsB4f,QAAU5f,EAAI4f,OAAOC,WAAa7f,EAAI,cAAe,GAAI,MAAQ+lH,EAAI,CAAE,IAAIC,EAAI17D,EAAI27D,EAAIC,EAAIC,EAAO,GAAIC,GAAK,EAAIC,GAAK,EAAI,IAAM,GAAIJ,GAAMF,EAAKA,EAAGlxH,KAAKmL,IAAM0e,KAAM,IAAM1qB,EAAG,CAAE,GAAI0D,OAAOquH,KAAQA,EAAI,OAAQK,GAAK,CAAK,MAAM,OAASA,GAAMJ,EAAKC,EAAGpxH,KAAKkxH,IAAKn4H,QAAUu4H,EAAK3xH,KAAKwxH,EAAG12H,OAAQ62H,EAAKn+H,SAAWgM,GAAIoyH,GAAK,GAAgL,CAAzK,MAAO72H,GAAO82H,GAAK,EAAI/7D,EAAK/6D,CAAM,CAArO,QAAgP,IAAM,IAAK62H,GAAM,MAAQL,EAAE,SAAeG,EAAKH,EAAE,SAAcruH,OAAOwuH,KAAQA,GAAK,MAAuC,CAA1H,QAAuG,GAAIG,EAAI,MAAM/7D,CAAK,CAAE,CAAC,OAAO67D,CAAO,CAAE,CAJjhBG,CAAsBtmH,EAAKhM,IAE5F,SAAqCod,EAAGu+F,GAAU,IAAKv+F,EAAG,OAAQ,GAAiB,kBAANA,EAAgB,OAAO49F,EAAkB59F,EAAGu+F,GAAS,IAAInrG,EAAI9M,OAAO/E,UAAUgI,SAAS9F,KAAKuc,GAAGtlB,MAAM,GAAI,GAAc,WAAN0Y,GAAkB4M,EAAE9O,cAAakC,EAAI4M,EAAE9O,YAAYvN,MAAM,GAAU,QAANyP,GAAqB,QAANA,EAAa,OAAOjO,MAAMsB,KAAKuZ,GAAI,GAAU,cAAN5M,GAAqB,2CAA2CpG,KAAKoG,GAAI,OAAOwqG,EAAkB59F,EAAGu+F,EAAU,CAF9TC,CAA4B5vG,EAAKhM,IACnI,WAA8B,MAAM,IAAIP,UAAU,4IAA+I,CADxD8yH,EAAqB,CAG9J,SAASvX,EAAkBhvG,EAAKgnD,IAAkB,MAAPA,GAAeA,EAAMhnD,EAAIhY,UAAQg/D,EAAMhnD,EAAIhY,QAAQ,IAAK,IAAIgM,EAAI,EAAG0rB,EAAO,IAAInpB,MAAMywD,GAAMhzD,EAAIgzD,EAAKhzD,IAAK0rB,EAAK1rB,GAAKgM,EAAIhM,GAAI,OAAO0rB,CAAO,CAGnL,SAAS85F,EAAgB9mH,EAAU+mH,GAAe,KAAM/mH,aAAoB+mH,GAAgB,MAAM,IAAIhmH,UAAU,oCAAyC,CACzJ,SAASimH,EAAkBngH,EAAQ4J,GAAS,IAAK,IAAInP,EAAI,EAAGA,EAAImP,EAAMnb,OAAQgM,IAAK,CAAE,IAAIyzG,EAAatkG,EAAMnP,GAAIyzG,EAAW5qF,WAAa4qF,EAAW5qF,aAAc,EAAO4qF,EAAWyH,cAAe,EAAU,UAAWzH,IAAYA,EAAW0H,UAAW,GAAMz3G,OAAOE,eAAe2B,EAAQitH,EAAe/e,EAAWt2G,KAAMs2G,EAAc,CAAE,CAG7U,SAASkS,EAAgBvoG,EAAGf,GAA6I,OAAxIspG,EAAkBjiH,OAAOysD,eAAiBzsD,OAAOysD,eAAehyD,OAAS,SAAyBif,EAAGf,GAAsB,OAAjBe,EAAEgzC,UAAY/zC,EAAUe,CAAI,EAASuoG,EAAgBvoG,EAAGf,EAAK,CACxM,SAASupG,EAAaC,GAAW,IAAIC,EAGrC,WAAuC,GAAuB,qBAAZC,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,oBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhF9vD,QAAQz3D,UAAUiS,QAAQ/P,KAAKklH,QAAQC,UAAU5vD,QAAS,IAAI,WAAc,MAAW,CAAmC,CAA3B,MAAOjuD,GAAK,OAAO,CAAQ,CAAE,CAHxQg+G,GAA6B,OAAO,WAAkC,IAAsCx4G,EAAlCy4G,EAAQC,EAAgBR,GAAkB,GAAIC,EAA2B,CAAE,IAAIQ,EAAYD,EAAgB1mH,MAAM2O,YAAaX,EAASo4G,QAAQC,UAAUI,EAAOz9G,UAAW29G,EAAa,MAAQ34G,EAASy4G,EAAM5jH,MAAM7C,KAAMgJ,WAAc,OAAO49G,EAA2B5mH,KAAMgO,EAAU,CAAG,CACza,SAAS44G,EAA2Bz1G,EAAMjQ,GAAQ,GAAIA,IAA2B,WAAlBw9G,EAAQx9G,IAAsC,oBAATA,GAAwB,OAAOA,EAAa,QAAa,IAATA,EAAmB,MAAM,IAAIpB,UAAU,4DAA+D,OAAO+mH,EAAuB11G,EAAQ,CAChS,SAAS01G,EAAuB11G,GAAQ,QAAa,IAATA,EAAmB,MAAM,IAAI21G,eAAe,6DAAgE,OAAO31G,CAAO,CAEtK,SAASu1G,EAAgBjpG,GAA+J,OAA1JipG,EAAkB3iH,OAAOysD,eAAiBzsD,OAAOuK,eAAe9P,OAAS,SAAyBif,GAAK,OAAOA,EAAEgzC,WAAa1sD,OAAOuK,eAAemP,EAAK,EAASipG,EAAgBjpG,EAAK,CACpN,SAAS69F,EAAgBh3G,EAAK9G,EAAK7B,GAA4L,OAAnL6B,EAAMq1H,EAAer1H,MAAiB8G,EAAOP,OAAOE,eAAeK,EAAK9G,EAAK,CAAE7B,MAAOA,EAAOutB,YAAY,EAAMqyF,cAAc,EAAMC,UAAU,IAAkBl3G,EAAI9G,GAAO7B,EAAgB2I,CAAM,CAC5O,SAASuuH,EAAexiH,GAAO,IAAI7S,EACnC,SAAsB27C,EAAOyxC,GAAQ,GAAuB,WAAnB8zB,EAAQvlE,IAAiC,OAAVA,EAAgB,OAAOA,EAAO,IAAI25E,EAAO35E,EAAMltB,OAAO8mG,aAAc,QAAa11H,IAATy1H,EAAoB,CAAE,IAAIl8F,EAAMk8F,EAAK5xH,KAAKi4C,EAAOyxC,GAAQ,WAAY,GAAqB,WAAjB8zB,EAAQ9nF,GAAmB,OAAOA,EAAK,MAAM,IAAI92B,UAAU,+CAAkD,CAAC,OAAiB,WAAT8qF,EAAoB56E,OAASsuD,QAAQnlB,EAAS,CADpV65E,CAAa3iH,EAAK,UAAW,MAAwB,WAAjBquG,EAAQlhH,GAAoBA,EAAMwS,OAAOxS,EAAO,CAE7H,IAAIqnH,EAAgB,oBAChB+V,EAAsB,CAAC,YAAa,UAAW,cAE/CC,EAA0B,SAAUrH,IAbxC,SAAmBtM,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIrnH,UAAU,sDAAyDonH,EAASloH,UAAY+E,OAAO7E,OAAOioH,GAAcA,EAAWnoH,UAAW,CAAE2P,YAAa,CAAEhT,MAAOurH,EAAU1L,UAAU,EAAMD,cAAc,KAAWx3G,OAAOE,eAAeijH,EAAU,YAAa,CAAE1L,UAAU,IAAc2L,GAAYnB,EAAgBkB,EAAUC,EAAc,CAclcC,CAAUyT,EAAYrH,GACtB,IAhBoB1N,EAAauB,EAAYC,EAgBzCC,EAAStB,EAAa4U,GAC1B,SAASA,IACP,IAAIrT,EACJ3B,EAAgB7lH,KAAM66H,GACtB,IAAK,IAAI/iH,EAAO9O,UAAU3U,OAAQ0U,EAAO,IAAInG,MAAMkV,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/EhP,EAAKgP,GAAQ/O,UAAU+O,GAgFzB,OA7EAujG,EAAgBuL,EADhBW,EAAQD,EAAOrmH,KAAK2B,MAAM0kH,EAAQ,CAACvnH,MAAMlM,OAAOiV,KACD,QAAS,CAAC,GACzDuyG,EAAgBuL,EAAuBW,GAAQ,WAAwB,EAAIsJ,EAAO2C,cAClFnY,EAAgBuL,EAAuBW,GAAQ,mBAAgC,EAAIsJ,EAAO2C,cAC1FnY,EAAgBuL,EAAuBW,GAAQ,mBAAmB,SAAU3oG,GAC1E,IAAIyuG,EAAwBzG,EAAuBW,GACjDsT,EAAUxN,EAAsBwN,QAChCC,EAAkBzN,EAAsByN,gBAGtCn1H,EAAS,iBAAkBiZ,EAAQA,EAAMm8G,eAAe,GAAKn8G,EAAMjZ,QACnEk1H,EAAQ1rG,SAAY0rG,EAAQ1rG,QAAQ8rB,SAASt1C,IAAam1H,EAAgB3rG,SAAY2rG,EAAgB3rG,QAAQ8rB,SAASt1C,IACzH4hH,EAAMyT,eAET,IACD3f,EAAgBuL,EAAuBW,GAAQ,YAAY,SAAU7rH,GACnE,IAAIs/H,EAAgBjyH,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,GAAmBA,UAAU,GAAKw+G,EAAMh4G,MAAMyrH,cAChGvN,EAAWlG,EAAMh4G,MAAMk+G,SACvBuN,GACFzT,EAAMyT,gBAEJvN,GACFA,EAAS/xH,EAEZ,IACD2/G,EAAgBuL,EAAuBW,GAAQ,WAAW,SAAU3oG,GAClE,IAAIipG,EAAcN,EAAMh4G,MACtBmgB,EAAWm4F,EAAYn4F,SACvBw4F,EAAUL,EAAYK,QACtB+S,EAAsBpT,EAAYoT,oBAMpC,GALI/S,GACFA,EAAQtpG,IAIN8Q,GAGAurG,EAAqB,CACvB,GAAoC,SAAhCr8G,EAAMjZ,OAAOmkC,QAAQmuF,OACvB,OAEF1Q,EAAM2T,cACP,CACF,IACD7f,EAAgBuL,EAAuBW,GAAQ,aAAa,SAAU3oG,GAClD,WAAdA,EAAMrhB,KACRgqH,EAAMyT,eAET,IACD3f,EAAgBuL,EAAuBW,GAAQ,gBAAgB,WAC7DA,EAAM35C,SAAS,CACbutD,QAAQ,GAEX,IACD9f,EAAgBuL,EAAuBW,GAAQ,iBAAiB,WAC9DA,EAAM35C,UAAS,SAAU45C,GACvB,OAAKA,EAAU2T,OAGR,CACLA,QAAQ,GAHD,IAKV,GACF,IACD9f,EAAgBuL,EAAuBW,GAAQ,kBAAkB,WAC/DA,EAAM35C,UAAS,SAAU45C,GACvB,MAAO,CACL2T,QAAS3T,EAAU2T,OAEtB,GACF,IACD9f,EAAgBuL,EAAuBW,GAAQ,mBAAmB,SAAU3oG,GAC1E,OAAOA,EAAMoxB,iBACd,IACDqrE,EAAgBuL,EAAuBW,GAAQ,SAAS,WACtD,OAAOA,EAAMkG,SAAS,KACvB,IACMlG,CACR,CA4LD,OAlSoB1B,EAuGP+U,EAvGgCvT,EAsRzC,CAAC,CACH9pH,IAAK,2BACL7B,MAAO,SAAkCqrH,EAAWS,GAClD,OAAIT,EAAUoU,SAAW3T,EAAU4T,YAC1B,CACLD,OAAQpU,EAAUoU,OAClBC,YAAarU,EAAUoU,QAGpB,IACR,KAhS8B/T,EAuGR,CAAC,CACxB7pH,IAAK,oBACL7B,MAAO,WACLqE,KAAKs7H,8BACN,GACA,CACD99H,IAAK,qBACL7B,MAAO,SAA4B4/H,EAAW9T,GAC5C,IAAI2T,EAASp7H,KAAKqX,MAAM+jH,OACpB5M,EAAexuH,KAAKwP,MACtBgsH,EAAkBhN,EAAagN,gBAC/BC,EAAiBjN,EAAaiN,eAChC,GAAIL,IAAW3T,EAAU2T,OAAQ,CAC/Bp7H,KAAKs7H,+BACL,IAAIlvH,EAAWgvH,EAASK,EAAiBD,EACrCpvH,GAAUA,GACf,CACF,GACA,CACD5O,IAAK,uBACL7B,MAAO,WACLqE,KAAKs7H,8BAA6B,EACnC,GACA,CACD99H,IAAK,aACL+e,IAAK,WACH,OAAO,EAAIg+G,EAAe,SAAav6H,KAAKwP,MAC7C,GACA,CACDhS,IAAK,+BACL7B,MAAO,SAAsC+/H,GAC3C,IAAIC,EAAS37H,KACTo7H,EAASp7H,KAAKqX,MAAM+jH,OAEpBQ,GADmD,qBAAjBF,EAA+BA,EAAeN,GAC5C,mBAAqB,sBAC7DR,EAAoBr9H,SAAQ,SAAU87G,GACpC,OAAOlvG,SAASyxH,GAAQviB,EAAWsiB,EAAOE,gBAC3C,IACD1xH,SAASyxH,GAAQ,UAAW57H,KAAKk2H,UAClC,GACA,CACD14H,IAAK,eACL7B,MAAO,WACL,IAAImzH,EAAe9uH,KAAKwP,MACtBilH,EAAY3F,EAAa2F,UACzBqH,EAAoBhN,EAAagN,kBACjCC,EAAejN,EAAaiN,aAC5BC,EAAiBlN,EAAakN,eAC9BC,EAAYnN,EAAamN,UACzBvH,EAAe5F,EAAa4F,aAC5BC,EAAiB7F,EAAa6F,eAC9BuH,EAAkBpN,EAAaoN,gBAC/BvsG,EAAWm/F,EAAan/F,SACxB4tC,EAASuxD,EAAavxD,OACtB6+C,EAAS0S,EAAa1S,OACtB6C,EAAU6P,EAAa7P,QACvBmN,EAAY0C,EAAa1C,UACzBpN,EAAU8P,EAAa9P,QACvBiW,EAAiBnG,EAAamG,eAC9BC,EAAmBpG,EAAaoG,iBAChC9zH,EAAO0tH,EAAa1tH,KACpBy1H,EAAuB/H,EAAa+H,qBACpCjnG,EAAWk/F,EAAal/F,SACxBggG,EAAcd,EAAac,YAC3BgF,EAAmB9F,EAAa8F,iBAChCj5H,EAAQmzH,EAAanzH,MACrBy5H,EAAgBtG,EAAasG,cAC7BC,EAAkBvG,EAAauG,gBAC7B+F,EAASp7H,KAAKqX,MAAM+jH,OAGtBhM,EADW8C,EADC,GAAGp+H,OAAO6H,GACa,GACd,GACnBwgI,EAAiB,CACnBzH,aAAcA,EACdO,eAAgBA,EAChB4B,qBAAsBA,EACtBzB,cAAeA,GAEbgH,EAAmB,CACrBzH,eAAgBA,EAChBO,iBAAkBA,EAClBG,gBAAiBA,GAEnB,OAAoBvE,EAAM,QAAY9lH,cAAc,MAAO,CACzDgO,UAAW,GAAGllB,OAAO+wH,EAAe,cACtBiM,EAAM,QAAY9lH,cAAc0vH,EAAU,QAAazX,EAAS,CAAC,EAAGkZ,EAAgBC,EAAkB,CAEpH3H,UAAWA,EACXz7G,UAAW,GAAGllB,OAAO+wH,EAAe,gBACpCl1F,SAAUA,EACV4tC,OAAQA,EACR+3D,eAAgB8F,EAChBhf,OAAQA,EACR6C,QAASA,EACTmN,UAAWA,EACXpN,QAASA,EACT59G,KAAMA,EACNssH,SAAU1tH,KAAK0tH,SACf99F,SAAUA,EACVggG,YAAaA,EACbgF,iBAAkBA,EAClBj5H,MAAOyzH,KACU,OAAd6M,GAAmCnL,EAAM,QAAY9lH,cAAc,SAAU,CAChF,aAAcgxH,EACdhjH,UAAW,GAAGllB,OAAO+wH,EAAe,mBAAmB/wH,OAAO+wH,EAAe,YAC7El1F,SAAUA,EACVuxE,QAASlhG,KAAKkgC,MACdioF,QAASnoH,KAAKiwC,gBACdhyC,KAAM,UACLg+H,GAA6B,OAAjBF,IAA0BG,GAAgCpL,EAAM,QAAY9lH,cAAc,SAAU,CACjH,aAAc8wH,EACd9iH,UAAW,GAAGllB,OAAO+wH,EAAe,sBAAsB/wH,OAAO+wH,EAAe,YAChFl1F,SAAUA,EACV+gG,OAAQ1wH,KAAKq8H,WACbn7B,QAASlhG,KAAKs8H,eACdnU,QAASnoH,KAAKiwC,gBACdhyC,KAAM,UACL89H,GACJ,GACA,CACDv+H,IAAK,iBACL7B,MAAO,WACL,IAAI4gI,EAASv8H,KACTk8H,EAAkBl8H,KAAKwP,MAAM0sH,gBAC7Bd,EAASp7H,KAAKqX,MAAM+jH,OACxB,GAAe,OAAXA,GAAmBc,EACrB,OAAO,KAET,IAAI5M,EAAetvH,KAAKwP,MACtBgtH,EAAoBlN,EAAakN,kBAGjCC,GAFsBnN,EAAat2G,UACxBs2G,EAAa5B,SACN4B,EAAamN,iBAC/B9gI,EAAQ2zH,EAAa3zH,MACrB+gI,EAAgBnxG,EAAyB+jG,EAActM,GACrDhqG,EAAY,GAAGllB,OAAO+wH,EAAe,cACrC10G,GAAa,EAAIwnH,EAAK,SAAa3+G,EAAW,GAAGllB,OAAOklB,EAAW,MAAMllB,OAAOsnI,EAAS,OAAS,WAClGuB,EAAwB7L,EAAM,QAAY9lH,cAAcwvH,EAAc,QAAavX,EAAS,CAC9FjqG,UAAWwjH,EACX9O,SAAU,SAAkB/xH,GAC1B,OAAO4gI,EAAO7O,SAAS/xH,EACxB,EACDA,MAAOA,GAAS,MACf+gI,IACH,OAAOD,GAA+B,EAAInC,EAAUsC,cAA4B9L,EAAM,QAAY9lH,cAAc,MAAO,CACrH2I,IAAK3T,KAAK+6H,gBACV/hH,UAAW7I,GACVwsH,GAAWF,GAAgC3L,EAAM,QAAY9lH,cAAcyvH,EAAS,QAAa,KAAmB3J,EAAM,QAAY9lH,cAAc,MAAO,CAC5J2I,IAAK,SAAa9B,GACZA,IAASupH,GACXvpH,EAAK84B,gBAAgB,QAExB,EACD3xB,UAAW7I,GACVwsH,GACJ,GACA,CACDn/H,IAAK,SACL7B,MAAO,WACL,IAAIy9G,EAAap5G,KAAKo5G,WAClBqW,EAAezvH,KAAKwP,MACtBwJ,EAAYy2G,EAAaz2G,UACzB6jH,EAAapN,EAAa,eAC1B9/F,EAAW8/F,EAAa9/F,SACtByrG,EAASp7H,KAAKqX,MAAM+jH,OAEtB0B,GADa1jB,EAAWsU,SACIniG,EAAyB6tF,EAAYuhB,IACnE,OAAoB7J,EAAM,QAAY9lH,cAAc,MAAOi4G,EAAS,CAClEjqG,WAAW,EAAI2+G,EAAK,SAAa9S,EAAe,GAAG/wH,OAAO+wH,EAAe,MAAM/wH,OAAOsnI,EAAS,OAAS,UAAW,GAAGtnI,OAAO+wH,EAAe,MAAM/wH,OAAO67B,EAAW,WAAa,WAAY3W,GAC7L,cAAe6jH,GACdC,EAA2B,CAC5B3U,QAASnoH,KAAKmoH,QACdx0G,IAAK3T,KAAK86H,UACR96H,KAAK+8H,eAAgB/8H,KAAKg9H,iBAC/B,MArRyEjX,EAAkBD,EAAY9mH,UAAWqoH,GAAiBC,GAAavB,EAAkBD,EAAawB,GAAcvjH,OAAOE,eAAe6hH,EAAa,YAAa,CAAEtK,UAAU,IAkSrPqf,CACR,CArR6B,CAqR5B/J,EAAOmG,eACTv+H,EAAiB,QAAImiI,EACrB,IAAIoC,EAAY,CACdC,MAAO,6BACP1iH,MAAO,GACPE,OAAQ,GACRyiH,QAAS,YACTC,OAAQ,QACRC,YAAa,GAEXC,EAA4BxM,EAAM,QAAY9lH,cAAc,MAAOi4G,EAAS,CAAC,EAAGga,EAAW,CAC7FjkH,UAAW,GAAGllB,OAAO+wH,EAAe,4BAA4B/wH,OAAO+wH,EAAe,oBACvEiM,EAAM,QAAY9lH,cAAc,OAAQ,CACvDuyH,KAAM,OACN7iH,OAAQ,KACRF,MAAO,KACPyuB,EAAG,IACHE,EAAG,MACY2nF,EAAM,QAAY9lH,cAAc,OAAQ,CACvDwyH,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,MACW7M,EAAM,QAAY9lH,cAAc,OAAQ,CACvDwyH,GAAI,KACJC,GAAI,KACJC,GAAI,IACJC,GAAI,OAEFC,EAAyB9M,EAAM,QAAY9lH,cAAc,MAAOi4G,EAAS,CAAC,EAAGga,EAAW,CAC1FjkH,UAAW,GAAGllB,OAAO+wH,EAAe,yBAAyB/wH,OAAO+wH,EAAe,oBACpEiM,EAAM,QAAY9lH,cAAc,OAAQ,CACvDwyH,GAAI,IACJC,GAAI,KACJC,GAAI,IACJC,GAAI,OACW7M,EAAM,QAAY9lH,cAAc,OAAQ,CACvDwyH,GAAI,KACJC,GAAI,IACJC,GAAI,IACJC,GAAI,QAEN9C,EAAWzoB,aAAe,CACxB2pB,aAAcuB,EACdrB,UAAW2B,EACX3C,eAAe,EACfG,OAAQ,KACRF,qBAAqB,EACrBtL,YAAa,SAEf,IAAIxQ,EAAU+R,EAAU,QAAYpW,UAAU,CAACoW,EAAU,QAAYtqG,OAAQsqG,EAAU,QAAYtW,WAAW1nH,QAC9G0nI,EAAWpoB,UAAY,CACrBgiB,UAAWtD,EAAU,QAAYzW,KACjCohB,kBAAmB3K,EAAU,QAAYtqG,OACzC21G,kBAAmBrL,EAAU,QAAYpW,UAAU,CAACoW,EAAU,QAAYtqG,OAAQsqG,EAAU,QAAYxW,QAAQwW,EAAU,QAAYtqG,UACtIk1G,aAAc5K,EAAU,QAAY14G,KACpCO,UAAWm4G,EAAU,QAAYpW,UAAU,CAACoW,EAAU,QAAYtqG,OAAQsqG,EAAU,QAAYxW,QAAQwW,EAAU,QAAYtqG,UAC9Hm1G,eAAgB7K,EAAU,QAAYtqG,OACtCo1G,UAAW9K,EAAU,QAAY14G,KACjCwiH,cAAe9J,EAAU,QAAYzW,KACrC,cAAeyW,EAAU,QAAYtqG,OACrC6tG,aAAcvD,EAAU,QAAYtqG,OACpC8tG,eAAgBxD,EAAU,QAAYtqG,OACtCq1G,gBAAiB/K,EAAU,QAAYzW,KACvC/qF,SAAUwhG,EAAU,QAAYzW,KAChCn9C,OAAQ4zD,EAAU,QAAYtqG,OAC9Bu0G,OAAQjK,EAAU,QAAYzW,KAC9B0B,OAAQ+U,EAAU,QAAYtqG,OAC9Bo4F,QAAS6S,EAAY5S,UACrBkN,UAAW+E,EAAU,QAAYpoD,MA3VpB,CAAC,UAAW,SAAU,OAAQ,UA4V3Ci2C,QAAS8S,EAAY/S,UACrBkW,eAAgB9D,EAAU,QAAYtqG,OACtCquG,iBAAkB/D,EAAU,QAAYtqG,OACxCzlB,KAAM+vH,EAAU,QAAYtqG,OAC5BgwG,qBAAsB1F,EAAU,QAAYtqG,OAC5C20G,gBAAiBrK,EAAU,QAAYzsE,KACvC+2E,eAAgBtK,EAAU,QAAYzsE,KACtCgpE,SAAUyD,EAAU,QAAYzsE,KAChCyjE,QAASgJ,EAAU,QAAYzsE,KAC/Bw2E,oBAAqB/J,EAAU,QAAYzW,KAC3C+hB,gBAAiBtL,EAAU,QAAY5oG,OACvCqH,SAAUuhG,EAAU,QAAYzW,KAChCkV,YAAauB,EAAU,QAAYpoD,MAAM,CAAC,QAAS,MAAO,UAC1D6rD,iBAAkBzD,EAAU,QAAYzW,KACxC/+G,MAAOw1H,EAAU,QAAYpW,UAAU,CAACqE,EAAS+R,EAAU,QAAYxW,QAAQyE,KAC/EgW,cAAejE,EAAU,QAAYtqG,OACrCwuG,gBAAiBlE,EAAU,QAAYtqG,2CCvZzC9iB,OAAOE,eAAevL,EAAS,aAAc,CAC3CiD,OAAO,IAETjD,EAAiB,QAAImlI,EACrB,IAAI/M,EAASM,EAAuBx4H,EAAQ,OACxCu4H,EAAaC,EAAuBx4H,EAAQ,OAChD,SAASw4H,EAAuB9sH,GAAO,OAAOA,GAAOA,EAAI+rD,WAAa/rD,EAAM,CAAE,QAAWA,EAAQ,CACjG,SAASu5H,EAAQhsH,GACf,IAAI0H,EAAW1H,EAAK0H,SACpB,OAAoBu3G,EAAM,QAAY9lH,cAAc,OAAQ,CAC1DgO,UAAW,0CACVO,EACJ,CACDskH,EAAQprB,UAAY,CAClBl5F,SAAU43G,EAAU,QAAY14G,yCCXlC/f,EAAAA,OAAqB,EACrBE,EAAQ,KACR,IAEgC0L,EAF5Bw5H,GAE4Bx5H,EAFS1L,EAAQ,QAEI0L,EAAI+rD,WAAa/rD,EAAM,CAAE,QAAWA,GADzF1L,EAAQ,MAIR,IAAImlI,EAAWD,EAAW,QAC1BplI,EAAAA,EAAqBqlI,qCCXrBh6H,OAAOE,eAAevL,EAAS,aAAc,CAC3CiD,OAAO,IAETjD,EAAQihI,iBAAmBjhI,EAAQokH,iBAAc,EACjDpkH,EAAQ+jH,aAAeA,EACvB,IACgCn4G,EAD5B05H,GAC4B15H,EADY1L,EAAQ,QACC0L,EAAI+rD,WAAa/rD,EAAM,CAAE,QAAWA,GACzF,IAAI43G,EAAiB,IAAIxoC,IACzB,SAAS+oC,EAAa/3G,GACpB,OAAO,SAAU03G,EAAQtpH,GACvB,IAAIupH,EAAoBD,IAAU,EAAI4hB,EAAc,WAC/C9hB,EAAexkD,IAAI2kD,IACtBH,EAAe5/F,IAAI+/F,EAAmB,IAAI3oC,KAE5C,IAAI4oC,EAAuBJ,EAAe3/F,IAAI8/F,GAI9C,OAHKC,EAAqB5kD,IAAIhzD,IAC5B43G,EAAqBhgG,IAAI5X,EAAS,IAAI63G,KAAKC,eAAeH,EAAmB33G,GAAS64D,QAEjF++C,EAAqB//F,IAAI7X,EAAzB43G,CAAkCxpH,EAC1C,CACF,CAeD,SAASqpH,EAAiBz3G,GACxB,OAAO,SAAU03G,EAAQtpH,GACvB,OAAO2pH,EAAa/3G,EAAb+3G,CAAsBL,EANjC,SAAoBtpH,GAClB,IAAI4pH,EAAW,IAAIvpH,KAAKL,GACxB,OAAO,IAAIK,KAAKupH,EAASxnH,SAAS,IACnC,CAGwCynH,CAAW7pH,GACjD,CACF,CACD,IAMIgqH,EAAcX,EANO,CACvBxlH,MAAO,SAMT+B,EAAQokH,YAAcA,EACtB,IAAI6c,EAAmBxd,EALO,CAC5BxlH,MAAO,UAKT+B,EAAQihI,iBAAmBA,qCCjD3B51H,OAAOE,eAAevL,EAAS,aAAc,CAC3CiD,OAAO,IAETjD,EAAQmlH,SASR,SAAkBC,EAAWhrH,GAC3B,OAAQgrH,GACN,IAAK,UACH,OAAO,EAAIuT,EAAWv8H,iBAAiBhC,GACzC,IAAK,SACH,OAAO,EAAIu+H,EAAW57H,gBAAgB3C,GACxC,IAAK,OACH,OAAO,EAAIu+H,EAAWn7H,cAAcpD,GACtC,IAAK,QACH,OAAO,EAAIu+H,EAAWz6H,eAAe9D,GACvC,IAAK,MACH,OAAO,EAAIu+H,EAAW/5H,aAAaxE,GACrC,QACE,MAAM,IAAIe,MAAM,sBAAsBC,OAAOgqH,IAElD,EAvBDplH,EAAQnF,OA+BR,SAAgBuqH,EAAWhrH,GACzB,OAAQgrH,GACN,IAAK,UACH,OAAO,EAAIuT,EAAWh8H,eAAevC,GACvC,IAAK,SACH,OAAO,EAAIu+H,EAAWv7H,cAAchD,GACtC,IAAK,OACH,OAAO,EAAIu+H,EAAW/6H,YAAYxD,GACpC,IAAK,QACH,OAAO,EAAIu+H,EAAWr6H,aAAalE,GACrC,IAAK,MACH,OAAO,EAAIu+H,EAAW35H,WAAW5E,GACnC,QACE,MAAM,IAAIe,MAAM,sBAAsBC,OAAOgqH,IAElD,EA7CD,IAAIuT,EAAaz4H,EAAQ,yCCLzBmL,OAAOE,eAAevL,EAAS,aAAc,CAC3CiD,OAAO,IAETjD,EAAQuhI,YAAcvhI,EAAQymH,MAAQzmH,EAAQqmH,UAAYrmH,EAAQwmH,eAAY,EAC9E,IACgC56G,EAD5B6sH,GAC4B7sH,EADQ1L,EAAQ,QACK0L,EAAI+rD,WAAa/rD,EAAM,CAAE,QAAWA,GACzF,SAASo6G,EAAQp6G,GAAkC,OAAOo6G,EAAU,mBAAqBzyF,QAAU,iBAAmBA,OAAOC,SAAW,SAAU5nB,GAAO,cAAcA,CAAM,EAAG,SAAUA,GAAO,OAAOA,GAAO,mBAAqB2nB,QAAU3nB,EAAIqK,cAAgBsd,QAAU3nB,IAAQ2nB,OAAOjtB,UAAY,gBAAkBsF,CAAM,EAAEo6G,EAAQp6G,EAAO,CAMhV,SAAS+2G,EAAkBhvG,EAAKgnD,IAAkB,MAAPA,GAAeA,EAAMhnD,EAAIhY,UAAQg/D,EAAMhnD,EAAIhY,QAAQ,IAAK,IAAIgM,EAAI,EAAG0rB,EAAO,IAAInpB,MAAMywD,GAAMhzD,EAAIgzD,EAAKhzD,IAAK0rB,EAAK1rB,GAAKgM,EAAIhM,GAAI,OAAO0rB,CAAO,CACnL,IAN4B1f,EAOxB4/G,EAAgB,GAAGn4H,OAHvB,SAA4BuY,GAAO,GAAIzJ,MAAMkD,QAAQuG,GAAM,OAAOgvG,EAAkBhvG,EAAO,CAJjDuf,CAAdvf,EAMb,CAAC,UAAW,SAAU,OAAQ,SACalU,MAAM,KAJhE,SAA0B6zB,GAAQ,GAAsB,qBAAXC,QAAmD,MAAzBD,EAAKC,OAAOC,WAA2C,MAAtBF,EAAK,cAAuB,OAAOppB,MAAMsB,KAAK8nB,EAAQ,CAHzFH,CAAiBxf,IAEtF,SAAqCoR,EAAGu+F,GAAU,GAAKv+F,EAAL,CAAgB,GAAiB,kBAANA,EAAgB,OAAO49F,EAAkB59F,EAAGu+F,GAAS,IAAInrG,EAAI9M,OAAO/E,UAAUgI,SAAS9F,KAAKuc,GAAGtlB,MAAM,GAAI,GAAiE,MAAnD,WAAN0Y,GAAkB4M,EAAE9O,cAAakC,EAAI4M,EAAE9O,YAAYvN,MAAgB,QAANyP,GAAqB,QAANA,EAAoBjO,MAAMsB,KAAKuZ,GAAc,cAAN5M,GAAqB,2CAA2CpG,KAAKoG,GAAWwqG,EAAkB59F,EAAGu+F,QAAzG,CAA7O,CAAgW,CAFlUC,CAA4B5vG,IAC1H,WAAgC,MAAM,IAAIvM,UAAU,uIAA0I,CAD5DgsB,GAO7D,CAAC,QAClEmuG,EAAc9I,EAAU,QAAYpoD,MAAMkjD,GAC9CvzH,EAAQuhI,YAAcA,EAetBvhI,EAAQqmH,UAdQ,SAAmBvvG,EAAOoqG,EAAUC,GAClD,IAAImF,EAAUxvG,EAAMoqG,GACpB,IAAKoF,EACH,OAAO,KAET,KAAMA,aAAmB7rH,MACvB,OAAO,IAAIU,MAAM,iBAAiBC,OAAO8lH,EAAU,eAAe9lH,OAAO4qH,EAAQM,GAAU,mBAAmBlrH,OAAO+lH,EAAe,oCAEtI,IAAIoF,EAAUzvG,EAAMyvG,QACpB,OAAIA,GAAWD,EAAUC,EAChB,IAAIprH,MAAM,iBAAiBC,OAAO8lH,EAAU,eAAe9lH,OAAO4qH,EAAQM,GAAU,mBAAmBlrH,OAAO+lH,EAAe,8CAE/H,IACR,EAgBDnhH,EAAQwmH,UAdQ,SAAmB1vG,EAAOoqG,EAAUC,GAClD,IAAIoF,EAAUzvG,EAAMoqG,GACpB,IAAKqF,EACH,OAAO,KAET,KAAMA,aAAmB9rH,MACvB,OAAO,IAAIU,MAAM,iBAAiBC,OAAO8lH,EAAU,eAAe9lH,OAAO4qH,EAAQO,GAAU,mBAAmBnrH,OAAO+lH,EAAe,oCAEtI,IAAImF,EAAUxvG,EAAMwvG,QACpB,OAAIA,GAAWC,EAAUD,EAChB,IAAInrH,MAAM,iBAAiBC,OAAO8lH,EAAU,eAAe9lH,OAAO4qH,EAAQO,GAAU,mBAAmBnrH,OAAO+lH,EAAe,+CAE/H,IACR,EAED,IAAIsF,EAAQgS,EAAU,QAAYpW,UAAU,CAACoW,EAAU,QAAYzsE,KAAMysE,EAAU,QAAYnW,MAAM,CACnG5rF,QAAS+hG,EAAU,QAAY32C,QAEjC9hF,EAAQymH,MAAQA,mCC5ChB,SAASxzF,EAAmBtf,GAAO,OAInC,SAA4BA,GAAO,GAAIzJ,MAAMkD,QAAQuG,GAAM,OAAOgvG,EAAkBhvG,EAAO,CAJjDuf,CAAmBvf,IAG7D,SAA0B2f,GAAQ,GAAsB,qBAAXC,QAAmD,MAAzBD,EAAKC,OAAOC,WAA2C,MAAtBF,EAAK,cAAuB,OAAOppB,MAAMsB,KAAK8nB,EAAQ,CAHzFH,CAAiBxf,IAEtF,SAAqCoR,EAAGu+F,GAAU,IAAKv+F,EAAG,OAAQ,GAAiB,kBAANA,EAAgB,OAAO49F,EAAkB59F,EAAGu+F,GAAS,IAAInrG,EAAI9M,OAAO/E,UAAUgI,SAAS9F,KAAKuc,GAAGtlB,MAAM,GAAI,GAAc,WAAN0Y,GAAkB4M,EAAE9O,cAAakC,EAAI4M,EAAE9O,YAAYvN,MAAM,GAAU,QAANyP,GAAqB,QAANA,EAAa,OAAOjO,MAAMsB,KAAKuZ,GAAI,GAAU,cAAN5M,GAAqB,2CAA2CpG,KAAKoG,GAAI,OAAOwqG,EAAkB59F,EAAGu+F,EAAU,CAFlUC,CAA4B5vG,IAC1H,WAAgC,MAAM,IAAIvM,UAAU,uIAA0I,CAD5DgsB,EAAuB,CAKzJ,SAASuvF,EAAkBhvG,EAAKgnD,IAAkB,MAAPA,GAAeA,EAAMhnD,EAAIhY,UAAQg/D,EAAMhnD,EAAIhY,QAAQ,IAAK,IAAIgM,EAAI,EAAG0rB,EAAO,IAAInpB,MAAMywD,GAAMhzD,EAAIgzD,EAAKhzD,IAAK0rB,EAAK1rB,GAAKgM,EAAIhM,GAAI,OAAO0rB,CAAO,CAiBnL,SAASkyG,EAAcjmI,GACrB,OAAe,OAARA,IAAwB,IAARA,IAAkBsmE,OAAO1qE,MAAM0qE,OAAOtmE,GAC9D,CA9BD+L,OAAOE,eAAevL,EAAS,aAAc,CAC3CiD,OAAO,IAETjD,EAAQk0H,QAgBR,SAAiBjxH,EAAOq9B,EAAKC,GAC3B,GAAID,GAAOA,EAAMr9B,EACf,OAAOq9B,EAET,GAAIC,GAAOA,EAAMt9B,EACf,OAAOs9B,EAET,OAAOt9B,CACR,EAvBDjD,EAAQ++H,QAiCR,WACE,IAAK,IAAI9qG,EAAQ3jB,UAAU3U,OAAQ0U,EAAO,IAAInG,MAAM+pB,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpF7jB,EAAK6jB,GAAS5jB,UAAU4jB,GAE1B,OAAOnmB,KAAKwyB,IAAIp2B,MAAM4D,KAAMklB,EAAmB5iB,EAAK4G,OAAOsuH,IAC5D,EArCDvlI,EAAQ6+H,QA0BR,WACE,IAAK,IAAIz/G,EAAO9O,UAAU3U,OAAQ0U,EAAO,IAAInG,MAAMkV,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/EhP,EAAKgP,GAAQ/O,UAAU+O,GAEzB,OAAOtR,KAAKuyB,IAAIn2B,MAAM4D,KAAMklB,EAAmB5iB,EAAK4G,OAAOsuH,IAC5D,qCC1BY,IAAIC,EAAGtlI,EAAQ,MAASulI,EAAGvlI,EAAQ,MAAa,SAAS8jB,EAAExN,GAAG,IAAI,IAAIC,EAAE,yDAAyDD,EAAEjO,EAAE,EAAEA,EAAE+H,UAAU3U,OAAO4M,IAAIkO,GAAG,WAAWrU,mBAAmBkO,UAAU/H,IAAI,MAAM,yBAAyBiO,EAAE,WAAWC,EAAE,gHAAiH,KAAIivH,EAAG,IAAIzqD,IAAI0qD,EAAG,CAAC,EAAE,SAASC,EAAGpvH,EAAEC,GAAGovH,EAAGrvH,EAAEC,GAAGovH,EAAGrvH,EAAE,UAAUC,EAAG,CACzb,SAASovH,EAAGrvH,EAAEC,GAAW,IAARkvH,EAAGnvH,GAAGC,EAAMD,EAAE,EAAEA,EAAEC,EAAE9a,OAAO6a,IAAIkvH,EAAG3/G,IAAItP,EAAED,GAAI,CAC7D,IAAIyrB,IAAK,qBAAqBhvB,QAAQ,qBAAqBA,OAAOxB,UAAU,qBAAqBwB,OAAOxB,SAASa,eAAewzH,EAAGz6H,OAAO/E,UAAUwP,eAAeiwH,EAAG,8VAA8VC,EACpgB,CAAC,EAAEC,EAAG,CAAC,EACiN,SAASt1H,EAAE6F,EAAEC,EAAElO,EAAEivD,EAAE1nD,EAAEoI,EAAEugD,GAAGnxD,KAAK4+H,gBAAgB,IAAIzvH,GAAG,IAAIA,GAAG,IAAIA,EAAEnP,KAAKqsD,cAAc6D,EAAElwD,KAAK6+H,mBAAmBr2H,EAAExI,KAAK8+H,gBAAgB79H,EAAEjB,KAAK48D,aAAa1tD,EAAElP,KAAK/B,KAAKkR,EAAEnP,KAAK++H,YAAYnuH,EAAE5Q,KAAKg/H,kBAAkB7tE,CAAE,KAAI6iD,EAAE,CAAC,EACpb,uIAAuI5/G,MAAM,KAAKmJ,SAAQ,SAAS2R,GAAG8kG,EAAE9kG,GAAG,IAAI7F,EAAE6F,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAI,IAAE,CAAC,CAAC,gBAAgB,kBAAkB,CAAC,YAAY,SAAS,CAAC,UAAU,OAAO,CAAC,YAAY,eAAe3R,SAAQ,SAAS2R,GAAG,IAAIC,EAAED,EAAE,GAAG8kG,EAAE7kG,GAAG,IAAI9F,EAAE8F,EAAE,GAAE,EAAGD,EAAE,GAAG,MAAK,GAAG,EAAI,IAAE,CAAC,kBAAkB,YAAY,aAAa,SAAS3R,SAAQ,SAAS2R,GAAG8kG,EAAE9kG,GAAG,IAAI7F,EAAE6F,EAAE,GAAE,EAAGA,EAAEzR,cAAc,MAAK,GAAG,EAAI,IAC3e,CAAC,cAAc,4BAA4B,YAAY,iBAAiBF,SAAQ,SAAS2R,GAAG8kG,EAAE9kG,GAAG,IAAI7F,EAAE6F,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAI,IAAE,8OAA8O9a,MAAM,KAAKmJ,SAAQ,SAAS2R,GAAG8kG,EAAE9kG,GAAG,IAAI7F,EAAE6F,EAAE,GAAE,EAAGA,EAAEzR,cAAc,MAAK,GAAG,EAAI,IACzb,CAAC,UAAU,WAAW,QAAQ,YAAYF,SAAQ,SAAS2R,GAAG8kG,EAAE9kG,GAAG,IAAI7F,EAAE6F,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAI,IAAE,CAAC,UAAU,YAAY3R,SAAQ,SAAS2R,GAAG8kG,EAAE9kG,GAAG,IAAI7F,EAAE6F,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAI,IAAE,CAAC,OAAO,OAAO,OAAO,QAAQ3R,SAAQ,SAAS2R,GAAG8kG,EAAE9kG,GAAG,IAAI7F,EAAE6F,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAI,IAAE,CAAC,UAAU,SAAS3R,SAAQ,SAAS2R,GAAG8kG,EAAE9kG,GAAG,IAAI7F,EAAE6F,EAAE,GAAE,EAAGA,EAAEzR,cAAc,MAAK,GAAG,EAAI,IAAE,IAAIwhI,EAAG,gBAAgB,SAASC,EAAGhwH,GAAG,OAAOA,EAAE,GAAGnT,aAAc,CAIzZ,SAASojI,EAAGjwH,EAAEC,EAAElO,EAAEivD,GAAG,IAAI1nD,EAAEwrG,EAAExlG,eAAeW,GAAG6kG,EAAE7kG,GAAG,MAAQ,OAAO3G,EAAE,IAAIA,EAAEvK,KAAKiyD,KAAK,EAAE/gD,EAAE9a,SAAS,MAAM8a,EAAE,IAAI,MAAMA,EAAE,IAAI,MAAMA,EAAE,IAAI,MAAMA,EAAE,MAP9I,SAAYD,EAAEC,EAAElO,EAAEivD,GAAG,GAAG,OAAO/gD,GAAG,qBAAqBA,GADqE,SAAYD,EAAEC,EAAElO,EAAEivD,GAAG,GAAG,OAAOjvD,GAAG,IAAIA,EAAEhD,KAAK,OAAM,EAAG,cAAckR,GAAG,IAAK,WAAW,IAAK,SAAS,OAAM,EAAG,IAAK,UAAU,OAAG+gD,IAAc,OAAOjvD,GAASA,EAAE29H,gBAAmD,WAAnC1vH,EAAEA,EAAEzR,cAActF,MAAM,EAAE,KAAsB,UAAU+W,GAAE,QAAQ,OAAM,EAAI,CAChUkwH,CAAGlwH,EAAEC,EAAElO,EAAEivD,GAAG,OAAM,EAAG,GAAGA,EAAE,OAAM,EAAG,GAAG,OAAOjvD,EAAE,OAAOA,EAAEhD,MAAM,KAAK,EAAE,OAAOkR,EAAE,KAAK,EAAE,OAAM,IAAKA,EAAE,KAAK,EAAE,OAAOvb,MAAMub,GAAG,KAAK,EAAE,OAAOvb,MAAMub,IAAI,EAAEA,EAAE,OAAM,CAAG,CAOvEkwH,CAAGlwH,EAAElO,EAAEuH,EAAE0nD,KAAKjvD,EAAE,MAAMivD,GAAG,OAAO1nD,EARxK,SAAY0G,GAAG,QAAGsvH,EAAGt9H,KAAKy9H,EAAGzvH,KAAesvH,EAAGt9H,KAAKw9H,EAAGxvH,KAAeuvH,EAAGh0H,KAAKyE,GAAUyvH,EAAGzvH,IAAG,GAAGwvH,EAAGxvH,IAAG,GAAS,GAAG,CAQuDowH,CAAGnwH,KAAK,OAAOlO,EAAEiO,EAAEy7B,gBAAgBx7B,GAAGD,EAAE/D,aAAagE,EAAE,GAAGlO,IAAIuH,EAAEs2H,gBAAgB5vH,EAAE1G,EAAEo0D,cAAc,OAAO37D,EAAE,IAAIuH,EAAEvK,MAAQ,GAAGgD,GAAGkO,EAAE3G,EAAE6jD,cAAc6D,EAAE1nD,EAAEq2H,mBAAmB,OAAO59H,EAAEiO,EAAEy7B,gBAAgBx7B,IAAalO,EAAE,KAAXuH,EAAEA,EAAEvK,OAAc,IAAIuK,IAAG,IAAKvH,EAAE,GAAG,GAAGA,EAAEivD,EAAEhhD,EAAEqwH,eAAervE,EAAE/gD,EAAElO,GAAGiO,EAAE/D,aAAagE,EAAElO,KAAK,CAHld,0jCAA0jC7M,MAAM,KAAKmJ,SAAQ,SAAS2R,GAAG,IAAIC,EAAED,EAAEhG,QAAQ+1H,EACzmCC,GAAIlrB,EAAE7kG,GAAG,IAAI9F,EAAE8F,EAAE,GAAE,EAAGD,EAAE,MAAK,GAAG,EAAI,IAAE,2EAA2E9a,MAAM,KAAKmJ,SAAQ,SAAS2R,GAAG,IAAIC,EAAED,EAAEhG,QAAQ+1H,EAAGC,GAAIlrB,EAAE7kG,GAAG,IAAI9F,EAAE8F,EAAE,GAAE,EAAGD,EAAE,gCAA+B,GAAG,EAAI,IAAE,CAAC,WAAW,WAAW,aAAa3R,SAAQ,SAAS2R,GAAG,IAAIC,EAAED,EAAEhG,QAAQ+1H,EAAGC,GAAIlrB,EAAE7kG,GAAG,IAAI9F,EAAE8F,EAAE,GAAE,EAAGD,EAAE,wCAAuC,GAAG,EAAI,IAAE,CAAC,WAAW,eAAe3R,SAAQ,SAAS2R,GAAG8kG,EAAE9kG,GAAG,IAAI7F,EAAE6F,EAAE,GAAE,EAAGA,EAAEzR,cAAc,MAAK,GAAG,EAAI,IACndu2G,EAAEwrB,UAAU,IAAIn2H,EAAE,YAAY,GAAE,EAAG,aAAa,gCAA+B,GAAG,GAAI,CAAC,MAAM,OAAO,SAAS,cAAc9L,SAAQ,SAAS2R,GAAG8kG,EAAE9kG,GAAG,IAAI7F,EAAE6F,EAAE,GAAE,EAAGA,EAAEzR,cAAc,MAAK,GAAG,EAAI,IAE7L,IAAIgiI,EAAGvB,EAAGwB,mDAAmDC,EAAG1zG,OAAO8nF,IAAI,iBAAiB6rB,EAAG3zG,OAAO8nF,IAAI,gBAAgB8rB,EAAG5zG,OAAO8nF,IAAI,kBAAkB+rB,EAAG7zG,OAAO8nF,IAAI,qBAAqBgsB,EAAG9zG,OAAO8nF,IAAI,kBAAkBisB,EAAG/zG,OAAO8nF,IAAI,kBAAkBksB,EAAGh0G,OAAO8nF,IAAI,iBAAiBmsB,EAAGj0G,OAAO8nF,IAAI,qBAAqBosB,EAAGl0G,OAAO8nF,IAAI,kBAAkBqsB,EAAGn0G,OAAO8nF,IAAI,uBAAuBssB,EAAGp0G,OAAO8nF,IAAI,cAAcusB,EAAGr0G,OAAO8nF,IAAI,cAAc9nF,OAAO8nF,IAAI,eAAe9nF,OAAO8nF,IAAI,0BACje,IAAIwsB,EAAGt0G,OAAO8nF,IAAI,mBAAmB9nF,OAAO8nF,IAAI,uBAAuB9nF,OAAO8nF,IAAI,eAAe9nF,OAAO8nF,IAAI,wBAAwB,IAAIysB,EAAGv0G,OAAOC,SAAS,SAASu0G,EAAGvxH,GAAG,OAAG,OAAOA,GAAG,kBAAkBA,EAAS,KAAwC,oBAAnCA,EAAEsxH,GAAItxH,EAAEsxH,IAAKtxH,EAAE,eAA0CA,EAAE,IAAK,KAAoBwxH,EAAhBxsB,EAAEnwG,OAAOQ,OAAU,SAASo8H,EAAGzxH,GAAG,QAAG,IAASwxH,EAAG,IAAI,MAAM7sI,OAA4E,CAAnE,MAAMoN,GAAG,IAAIkO,EAAElO,EAAE4C,MAAM0E,OAAO6B,MAAM,gBAAgBs2H,EAAGvxH,GAAGA,EAAE,IAAI,EAAG,OAAM,KAAKuxH,EAAGxxH,CAAE,KAAI0xH,GAAG,EACzb,SAASC,EAAG3xH,EAAEC,GAAG,IAAID,GAAG0xH,EAAG,MAAM,GAAGA,GAAG,EAAG,IAAI3/H,EAAEpN,MAAMitI,kBAAkBjtI,MAAMitI,uBAAkB,EAAO,IAAI,GAAG3xH,EAAE,GAAGA,EAAE,WAAW,MAAMtb,OAAS,EAACkQ,OAAOE,eAAekL,EAAEnQ,UAAU,QAAQ,CAACsd,IAAI,WAAW,MAAMzoB,OAAS,IAAG,kBAAkBuyH,SAASA,QAAQC,UAAU,CAAC,IAAID,QAAQC,UAAUl3G,EAAE,GAAqB,CAAjB,MAAM7O,GAAG,IAAI4vD,EAAE5vD,CAAE,CAAA8lH,QAAQC,UAAUn3G,EAAE,GAAGC,EAAG,KAAI,CAAC,IAAIA,EAAEjO,MAAoB,CAAb,MAAMZ,GAAG4vD,EAAE5vD,CAAE,CAAA4O,EAAEhO,KAAKiO,EAAEnQ,UAAW,KAAI,CAAC,IAAI,MAAMnL,OAAsB,CAAb,MAAMyM,GAAG4vD,EAAE5vD,CAAE,CAAA4O,GAAI,CAC5D,CAD6D,MAAM5O,GAAG,GAAGA,GAAG4vD,GAAG,kBAAkB5vD,EAAEuD,MAAM,CAAC,IAAI,IAAI2E,EAAElI,EAAEuD,MAAMzP,MAAM,MACnfwc,EAAEs/C,EAAErsD,MAAMzP,MAAM,MAAM+8D,EAAE3oD,EAAEnU,OAAO,EAAEyQ,EAAE8L,EAAEvc,OAAO,EAAE,GAAG88D,GAAG,GAAGrsD,GAAG0D,EAAE2oD,KAAKvgD,EAAE9L,IAAIA,IAAI,KAAK,GAAGqsD,GAAG,GAAGrsD,EAAEqsD,IAAIrsD,IAAI,GAAG0D,EAAE2oD,KAAKvgD,EAAE9L,GAAG,CAAC,GAAG,IAAIqsD,GAAG,IAAIrsD,EAAG,GAAG,GAAGqsD,IAAQ,IAAJrsD,GAAS0D,EAAE2oD,KAAKvgD,EAAE9L,GAAG,CAAC,IAAImuD,EAAE,KAAKzqD,EAAE2oD,GAAGjoD,QAAQ,WAAW,QAA6F,OAArFgG,EAAEmjG,aAAap/C,EAAEziD,SAAS,iBAAiByiD,EAAEA,EAAE/pD,QAAQ,cAAcgG,EAAEmjG,cAAqBp/C,CAAE,QAAM,GAAG9B,GAAG,GAAGrsD,GAAG,KAAM,CAAC,CAAC,CADlO,QAC0O87H,GAAG,EAAG/sI,MAAMitI,kBAAkB7/H,CAAE,QAAOiO,EAAEA,EAAEA,EAAEmjG,aAAanjG,EAAE9N,KAAK,IAAIu/H,EAAGzxH,GAAG,EAAG,CAC/Z,SAAS6xH,EAAG7xH,GAAG,OAAOA,EAAE6J,KAAK,KAAK,EAAE,OAAO4nH,EAAGzxH,EAAEjR,MAAM,KAAK,GAAG,OAAO0iI,EAAG,QAAQ,KAAK,GAAG,OAAOA,EAAG,YAAY,KAAK,GAAG,OAAOA,EAAG,gBAAgB,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,OAAOzxH,EAAE2xH,EAAG3xH,EAAEjR,MAAK,GAAM,KAAK,GAAG,OAAOiR,EAAE2xH,EAAG3xH,EAAEjR,KAAKm1G,QAAO,GAAM,KAAK,EAAE,OAAOlkG,EAAE2xH,EAAG3xH,EAAEjR,MAAK,GAAM,QAAQ,MAAM,GAAI,CACzR,SAAS+iI,EAAG9xH,GAAG,GAAG,MAAMA,EAAE,OAAO,KAAK,GAAG,oBAAoBA,EAAE,OAAOA,EAAEmjG,aAAanjG,EAAE9N,MAAM,KAAK,GAAG,kBAAkB8N,EAAE,OAAOA,EAAE,OAAOA,GAAG,KAAK2wH,EAAG,MAAM,WAAW,KAAKD,EAAG,MAAM,SAAS,KAAKG,EAAG,MAAM,WAAW,KAAKD,EAAG,MAAM,aAAa,KAAKK,EAAG,MAAM,WAAW,KAAKC,EAAG,MAAM,eAAe,GAAG,kBAAkBlxH,EAAE,OAAOA,EAAE+kG,UAAU,KAAKgsB,EAAG,OAAO/wH,EAAEmjG,aAAa,WAAW,YAAY,KAAK2tB,EAAG,OAAO9wH,EAAE+xH,SAAS5uB,aAAa,WAAW,YAAY,KAAK6tB,EAAG,IAAI/wH,EAAED,EAAEkkG,OAC7Z,OADoalkG,EAAEA,EAAEmjG,eACndnjG,EAAE,MADieA,EAAEC,EAAEkjG,aAClfljG,EAAE/N,MAAM,IAAY,cAAc8N,EAAE,IAAI,cAAqBA,EAAE,KAAKmxH,EAAG,OAA6B,QAAtBlxH,EAAED,EAAEmjG,aAAa,MAAcljG,EAAE6xH,EAAG9xH,EAAEjR,OAAO,OAAO,KAAKqiI,EAAGnxH,EAAED,EAAEgyH,SAAShyH,EAAEA,EAAEiyH,MAAM,IAAI,OAAOH,EAAG9xH,EAAEC,GAAc,CAAV,MAAMlO,GAAI,EAAC,OAAO,IAAK,CAC5M,SAASmgI,EAAGlyH,GAAG,IAAIC,EAAED,EAAEjR,KAAK,OAAOiR,EAAE6J,KAAK,KAAK,GAAG,MAAM,QAAQ,KAAK,EAAE,OAAO5J,EAAEkjG,aAAa,WAAW,YAAY,KAAK,GAAG,OAAOljG,EAAE8xH,SAAS5uB,aAAa,WAAW,YAAY,KAAK,GAAG,MAAM,qBAAqB,KAAK,GAAG,OAAkBnjG,GAAXA,EAAEC,EAAEikG,QAAWf,aAAanjG,EAAE9N,MAAM,GAAG+N,EAAEkjG,cAAc,KAAKnjG,EAAE,cAAcA,EAAE,IAAI,cAAc,KAAK,EAAE,MAAM,WAAW,KAAK,EAAE,OAAOC,EAAE,KAAK,EAAE,MAAM,SAAS,KAAK,EAAE,MAAM,OAAO,KAAK,EAAE,MAAM,OAAO,KAAK,GAAG,OAAO6xH,EAAG7xH,GAAG,KAAK,EAAE,OAAOA,IAAI2wH,EAAG,aAAa,OAAO,KAAK,GAAG,MAAM,YACtf,KAAK,GAAG,MAAM,WAAW,KAAK,GAAG,MAAM,QAAQ,KAAK,GAAG,MAAM,WAAW,KAAK,GAAG,MAAM,eAAe,KAAK,GAAG,MAAM,gBAAgB,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,GAAG,oBAAoB3wH,EAAE,OAAOA,EAAEkjG,aAAaljG,EAAE/N,MAAM,KAAK,GAAG,kBAAkB+N,EAAE,OAAOA,EAAE,OAAO,IAAK,UAASkyH,EAAGnyH,GAAG,cAAcA,GAAG,IAAK,UAAU,IAAK,SAAS,IAAK,SAAS,IAAK,YAAqB,IAAK,SAAS,OAAOA,EAAE,QAAQ,MAAM,GAAI,CACta,SAASoyH,EAAGpyH,GAAG,IAAIC,EAAED,EAAEjR,KAAK,OAAOiR,EAAEA,EAAEi0C,WAAW,UAAUj0C,EAAEzR,gBAAgB,aAAa0R,GAAG,UAAUA,EAAG,CAEvF,SAASoyH,EAAGryH,GAAGA,EAAEsyH,gBAAgBtyH,EAAEsyH,cADvD,SAAYtyH,GAAG,IAAIC,EAAEmyH,EAAGpyH,GAAG,UAAU,QAAQjO,EAAE8C,OAAOkpB,yBAAyB/d,EAAEP,YAAY3P,UAAUmQ,GAAG+gD,EAAE,GAAGhhD,EAAEC,GAAG,IAAID,EAAEV,eAAeW,IAAI,qBAAqBlO,GAAG,oBAAoBA,EAAEsb,KAAK,oBAAoBtb,EAAEqb,IAAI,CAAC,IAAI9T,EAAEvH,EAAEsb,IAAI3L,EAAE3P,EAAEqb,IAAiL,OAA7KvY,OAAOE,eAAeiL,EAAEC,EAAE,CAACosG,cAAa,EAAGh/F,IAAI,WAAW,OAAO/T,EAAEtH,KAAKlB,KAAM,EAACsc,IAAI,SAASpN,GAAGghD,EAAE,GAAGhhD,EAAE0B,EAAE1P,KAAKlB,KAAKkP,EAAG,IAAGnL,OAAOE,eAAeiL,EAAEC,EAAE,CAAC+Z,WAAWjoB,EAAEioB,aAAmB,CAACiuC,SAAS,WAAW,OAAOjH,CAAE,EAACuxE,SAAS,SAASvyH,GAAGghD,EAAE,GAAGhhD,CAAE,EAACwyH,aAAa,WAAWxyH,EAAEsyH,cACxf,YAAYtyH,EAAEC,EAAG,EAAE,CAAC,CAAiDwyH,CAAGzyH,GAAI,UAAS0yH,EAAG1yH,GAAG,IAAIA,EAAE,OAAM,EAAG,IAAIC,EAAED,EAAEsyH,cAAc,IAAIryH,EAAE,OAAM,EAAG,IAAIlO,EAAEkO,EAAEgoD,WAAejH,EAAE,GAAqD,OAAlDhhD,IAAIghD,EAAEoxE,EAAGpyH,GAAGA,EAAE2yH,QAAQ,OAAO,QAAQ3yH,EAAEvT,QAAOuT,EAAEghD,KAAajvD,IAAGkO,EAAEsyH,SAASvyH,IAAG,EAAO,UAAS4yH,EAAG5yH,GAAwD,GAAG,qBAAxDA,EAAEA,IAAI,qBAAqB/E,SAASA,cAAS,IAAkC,OAAO,KAAK,IAAI,OAAO+E,EAAEg0C,eAAeh0C,EAAEotB,IAA4B,CAAvB,MAAMntB,GAAG,OAAOD,EAAEotB,IAAK,CAAC,CACra,SAASylG,EAAG7yH,EAAEC,GAAG,IAAIlO,EAAEkO,EAAE0yH,QAAQ,OAAO3tB,EAAE,CAAC,EAAE/kG,EAAE,CAAC6yH,oBAAe,EAAOr5G,kBAAa,EAAOhtB,WAAM,EAAOkmI,QAAQ,MAAM5gI,EAAEA,EAAEiO,EAAE+yH,cAAcC,gBAAiB,UAASC,EAAGjzH,EAAEC,GAAG,IAAIlO,EAAE,MAAMkO,EAAEwZ,aAAa,GAAGxZ,EAAEwZ,aAAaunC,EAAE,MAAM/gD,EAAE0yH,QAAQ1yH,EAAE0yH,QAAQ1yH,EAAE6yH,eAAe/gI,EAAEogI,EAAG,MAAMlyH,EAAExT,MAAMwT,EAAExT,MAAMsF,GAAGiO,EAAE+yH,cAAc,CAACC,eAAehyE,EAAEkyE,aAAanhI,EAAEohI,WAAW,aAAalzH,EAAElR,MAAM,UAAUkR,EAAElR,KAAK,MAAMkR,EAAE0yH,QAAQ,MAAM1yH,EAAExT,MAAO,UAAS++B,EAAGxrB,EAAEC,GAAe,OAAZA,EAAEA,EAAE0yH,UAAiB1C,EAAGjwH,EAAE,UAAUC,GAAE,EAAI,CAC/d,SAASmrB,EAAGprB,EAAEC,GAAGurB,EAAGxrB,EAAEC,GAAG,IAAIlO,EAAEogI,EAAGlyH,EAAExT,OAAOu0D,EAAE/gD,EAAElR,KAAK,GAAG,MAAMgD,EAAK,WAAWivD,GAAM,IAAIjvD,GAAG,KAAKiO,EAAEvT,OAAOuT,EAAEvT,OAAOsF,KAAEiO,EAAEvT,MAAM,GAAGsF,GAAOiO,EAAEvT,QAAQ,GAAGsF,IAAIiO,EAAEvT,MAAM,GAAGsF,QAAQ,GAAG,WAAWivD,GAAG,UAAUA,EAA8B,YAA3BhhD,EAAEy7B,gBAAgB,SAAgBx7B,EAAEX,eAAe,SAAS+C,GAAGrC,EAAEC,EAAElR,KAAKgD,GAAGkO,EAAEX,eAAe,iBAAiB+C,GAAGrC,EAAEC,EAAElR,KAAKojI,EAAGlyH,EAAEwZ,eAAe,MAAMxZ,EAAE0yH,SAAS,MAAM1yH,EAAE6yH,iBAAiB9yH,EAAE8yH,iBAAiB7yH,EAAE6yH,eAAgB,CACna,SAASM,EAAGpzH,EAAEC,EAAElO,GAAG,GAAGkO,EAAEX,eAAe,UAAUW,EAAEX,eAAe,gBAAgB,CAAC,IAAI0hD,EAAE/gD,EAAElR,KAAK,KAAK,WAAWiyD,GAAG,UAAUA,QAAG,IAAS/gD,EAAExT,OAAO,OAAOwT,EAAExT,OAAO,OAAOwT,EAAE,GAAGD,EAAE+yH,cAAcG,aAAanhI,GAAGkO,IAAID,EAAEvT,QAAQuT,EAAEvT,MAAMwT,GAAGD,EAAEyZ,aAAaxZ,CAAE,CAAS,MAATlO,EAAEiO,EAAE9N,QAAc8N,EAAE9N,KAAK,IAAI8N,EAAE8yH,iBAAiB9yH,EAAE+yH,cAAcC,eAAe,KAAKjhI,IAAIiO,EAAE9N,KAAKH,EAAG,CAC1V,SAASsQ,GAAGrC,EAAEC,EAAElO,GAAM,WAAWkO,GAAG2yH,EAAG5yH,EAAEqzH,iBAAiBrzH,IAAE,MAAMjO,EAAEiO,EAAEyZ,aAAa,GAAGzZ,EAAE+yH,cAAcG,aAAalzH,EAAEyZ,eAAe,GAAG1nB,IAAIiO,EAAEyZ,aAAa,GAAG1nB,GAAG,KAAIuhI,GAAG5/H,MAAMkD,QAC7K,SAAS28H,GAAGvzH,EAAEC,EAAElO,EAAEivD,GAAe,GAAZhhD,EAAEA,EAAExK,QAAWyK,EAAE,CAACA,EAAE,CAAC,EAAE,IAAI,IAAI3G,EAAE,EAAEA,EAAEvH,EAAE5M,OAAOmU,IAAI2G,EAAE,IAAIlO,EAAEuH,KAAI,EAAG,IAAIvH,EAAE,EAAEA,EAAEiO,EAAE7a,OAAO4M,IAAIuH,EAAE2G,EAAEX,eAAe,IAAIU,EAAEjO,GAAGtF,OAAOuT,EAAEjO,GAAGyhI,WAAWl6H,IAAI0G,EAAEjO,GAAGyhI,SAASl6H,GAAGA,GAAG0nD,IAAIhhD,EAAEjO,GAAG0hI,iBAAgB,EAAI,KAAI,CAAmB,IAAlB1hI,EAAE,GAAGogI,EAAGpgI,GAAGkO,EAAE,KAAS3G,EAAE,EAAEA,EAAE0G,EAAE7a,OAAOmU,IAAI,CAAC,GAAG0G,EAAE1G,GAAG7M,QAAQsF,EAAiD,OAA9CiO,EAAE1G,GAAGk6H,UAAS,OAAGxyE,IAAIhhD,EAAE1G,GAAGm6H,iBAAgB,IAAW,OAAOxzH,GAAGD,EAAE1G,GAAGmnB,WAAWxgB,EAAED,EAAE1G,GAAI,QAAO2G,IAAIA,EAAEuzH,UAAS,EAAI,CAAC,CACzY,SAASE,GAAG1zH,EAAEC,GAAG,GAAG,MAAMA,EAAE0zH,wBAAwB,MAAMhvI,MAAM6oB,EAAE,KAAK,OAAOw3F,EAAE,CAAC,EAAE/kG,EAAE,CAACxT,WAAM,EAAOgtB,kBAAa,EAAOpP,SAAS,GAAGrK,EAAE+yH,cAAcG,cAAe,UAASU,GAAG5zH,EAAEC,GAAG,IAAIlO,EAAEkO,EAAExT,MAAM,GAAG,MAAMsF,EAAE,CAA+B,GAA9BA,EAAEkO,EAAEoK,SAASpK,EAAEA,EAAEwZ,aAAgB,MAAM1nB,EAAE,CAAC,GAAG,MAAMkO,EAAE,MAAMtb,MAAM6oB,EAAE,KAAK,GAAG8lH,GAAGvhI,GAAG,CAAC,GAAG,EAAEA,EAAE5M,OAAO,MAAMR,MAAM6oB,EAAE,KAAKzb,EAAEA,EAAE,EAAG,CAAAkO,EAAElO,CAAE,OAAMkO,IAAIA,EAAE,IAAIlO,EAAEkO,CAAE,CAAAD,EAAE+yH,cAAc,CAACG,aAAaf,EAAGpgI,GAAI,CACpY,SAAS8hI,GAAG7zH,EAAEC,GAAG,IAAIlO,EAAEogI,EAAGlyH,EAAExT,OAAOu0D,EAAEmxE,EAAGlyH,EAAEwZ,cAAc,MAAM1nB,KAAIA,EAAE,GAAGA,KAAMiO,EAAEvT,QAAQuT,EAAEvT,MAAMsF,GAAG,MAAMkO,EAAEwZ,cAAczZ,EAAEyZ,eAAe1nB,IAAIiO,EAAEyZ,aAAa1nB,IAAI,MAAMivD,IAAIhhD,EAAEyZ,aAAa,GAAGunC,EAAG,UAAS8yE,GAAG9zH,GAAG,IAAIC,EAAED,EAAE40C,YAAY30C,IAAID,EAAE+yH,cAAcG,cAAc,KAAKjzH,GAAG,OAAOA,IAAID,EAAEvT,MAAMwT,EAAG,UAAS8zH,GAAG/zH,GAAG,OAAOA,GAAG,IAAK,MAAM,MAAM,6BAA6B,IAAK,OAAO,MAAM,qCAAqC,QAAQ,MAAM,+BAAgC,CAC9c,SAASg0H,GAAGh0H,EAAEC,GAAG,OAAO,MAAMD,GAAG,iCAAiCA,EAAE+zH,GAAG9zH,GAAG,+BAA+BD,GAAG,kBAAkBC,EAAE,+BAA+BD,CAAE,CACjK,IAAIi0H,GAAej0H,GAAZk0H,IAAYl0H,GAAsJ,SAASA,EAAEC,GAAG,GAAG,+BAA+BD,EAAEm0H,cAAc,cAAcn0H,EAAEA,EAAEo7B,UAAUn7B,MAAM,CAA2F,KAA1Fg0H,GAAGA,IAAIh5H,SAASa,cAAc,QAAUs/B,UAAU,QAAQn7B,EAAE8B,UAAUjK,WAAW,SAAamI,EAAEg0H,GAAGG,WAAWp0H,EAAEo0H,YAAYp0H,EAAE2K,YAAY3K,EAAEo0H,YAAY,KAAKn0H,EAAEm0H,YAAYp0H,EAAEkK,YAAYjK,EAAEm0H,WAAY,CAAC,EAAxb,qBAAqBC,OAAOA,MAAMC,wBAAwB,SAASr0H,EAAElO,EAAEivD,EAAE1nD,GAAG+6H,MAAMC,yBAAwB,WAAW,OAAOt0H,GAAEC,EAAElO,EAAO,GAAE,EAACiO,IACtK,SAASu0H,GAAGv0H,EAAEC,GAAG,GAAGA,EAAE,CAAC,IAAIlO,EAAEiO,EAAEo0H,WAAW,GAAGriI,GAAGA,IAAIiO,EAAEw0H,WAAW,IAAIziI,EAAE0wE,SAAwB,YAAd1wE,EAAEunC,UAAUr5B,EAAU,CAAAD,EAAE40C,YAAY30C,CAAE,CACvH,IAAIw0H,GAAG,CAACC,yBAAwB,EAAGxtG,aAAY,EAAGytG,mBAAkB,EAAGC,kBAAiB,EAAGC,kBAAiB,EAAGC,SAAQ,EAAGC,cAAa,EAAGC,iBAAgB,EAAGC,aAAY,EAAGC,SAAQ,EAAGC,MAAK,EAAGvhB,UAAS,EAAGwhB,cAAa,EAAGrgB,YAAW,EAAGsgB,cAAa,EAAGC,WAAU,EAAGC,UAAS,EAAGC,SAAQ,EAAGC,YAAW,EAAGC,aAAY,EAAGC,cAAa,EAAGC,YAAW,EAAGC,eAAc,EAAGC,gBAAe,EAAGC,iBAAgB,EAAGC,YAAW,EAAGC,WAAU,EAAGC,YAAW,EAAGrmH,SAAQ,EAAGsmH,OAAM,EAAGC,SAAQ,EAAGC,SAAQ,EAAGC,QAAO,EAAGxL,QAAO,EAClfyL,MAAK,EAAGC,aAAY,EAAGC,cAAa,EAAGC,aAAY,EAAGC,iBAAgB,EAAGC,kBAAiB,EAAGC,kBAAiB,EAAGC,eAAc,EAAG3I,aAAY,GAAI4I,GAAG,CAAC,SAAS,KAAK,MAAM,KAA6H,SAASC,GAAGh3H,EAAEC,EAAElO,GAAG,OAAO,MAAMkO,GAAG,mBAAmBA,GAAG,KAAKA,EAAE,GAAGlO,GAAG,kBAAkBkO,GAAG,IAAIA,GAAGw0H,GAAGn1H,eAAeU,IAAIy0H,GAAGz0H,IAAI,GAAGC,GAAG5G,OAAO4G,EAAE,IAAK,CAC1b,SAASg3H,GAAGj3H,EAAEC,GAAa,IAAI,IAAIlO,KAAlBiO,EAAEA,EAAEkR,MAAmBjR,EAAE,GAAGA,EAAEX,eAAevN,GAAG,CAAC,IAAIivD,EAAE,IAAIjvD,EAAE3E,QAAQ,MAAMkM,EAAE09H,GAAGjlI,EAAEkO,EAAElO,GAAGivD,GAAG,UAAUjvD,IAAIA,EAAE,YAAYivD,EAAEhhD,EAAEk3H,YAAYnlI,EAAEuH,GAAG0G,EAAEjO,GAAGuH,CAAE,CAAC,CADWzE,OAAOsC,KAAKs9H,IAAIpmI,SAAQ,SAAS2R,GAAG+2H,GAAG1oI,SAAQ,SAAS4R,GAAGA,EAAEA,EAAED,EAAExD,OAAO,GAAG3P,cAAcmT,EAAEsb,UAAU,GAAGm5G,GAAGx0H,GAAGw0H,GAAGz0H,EAAG,GAAE,IACjI,IAAIm3H,GAAGnyB,EAAE,CAACoyB,UAAS,GAAI,CAACC,MAAK,EAAG7/G,MAAK,EAAG8/G,IAAG,EAAGC,KAAI,EAAGC,OAAM,EAAGC,IAAG,EAAG54E,KAAI,EAAG5U,OAAM,EAAGytF,QAAO,EAAGrgD,MAAK,EAAGxkD,MAAK,EAAG+rE,OAAM,EAAG9sG,QAAO,EAAG6lI,OAAM,EAAGC,KAAI,IAClT,SAASC,GAAG73H,EAAEC,GAAG,GAAGA,EAAE,CAAC,GAAGk3H,GAAGn3H,KAAK,MAAMC,EAAEoK,UAAU,MAAMpK,EAAE0zH,yBAAyB,MAAMhvI,MAAM6oB,EAAE,IAAIxN,IAAI,GAAG,MAAMC,EAAE0zH,wBAAwB,CAAC,GAAG,MAAM1zH,EAAEoK,SAAS,MAAM1lB,MAAM6oB,EAAE,KAAK,GAAG,kBAAkBvN,EAAE0zH,2BAA2B,WAAW1zH,EAAE0zH,yBAAyB,MAAMhvI,MAAM6oB,EAAE,IAAM,IAAG,MAAMvN,EAAEiR,OAAO,kBAAkBjR,EAAEiR,MAAM,MAAMvsB,MAAM6oB,EAAE,IAAM,CAAC,CACnW,SAASsqH,GAAG93H,EAAEC,GAAG,IAAI,IAAID,EAAE5S,QAAQ,KAAK,MAAM,kBAAkB6S,EAAEgE,GAAG,OAAOjE,GAAG,IAAK,iBAAiB,IAAK,gBAAgB,IAAK,YAAY,IAAK,gBAAgB,IAAK,gBAAgB,IAAK,mBAAmB,IAAK,iBAAiB,IAAK,gBAAgB,OAAM,EAAG,QAAQ,OAAM,EAAI,KAAI+3H,GAAG,KAAK,SAASC,GAAGh4H,GAA6F,OAA1FA,EAAEA,EAAEtJ,QAAQsJ,EAAE82E,YAAYr6E,QAASw7H,0BAA0Bj4H,EAAEA,EAAEi4H,yBAAgC,IAAIj4H,EAAEyiE,SAASziE,EAAE0K,WAAW1K,CAAE,KAAIk4H,GAAG,KAAKC,GAAG,KAAKC,GAAG,KACpc,SAASC,GAAGr4H,GAAG,GAAGA,EAAEs4H,GAAGt4H,GAAG,CAAC,GAAG,oBAAoBk4H,GAAG,MAAMvzI,MAAM6oB,EAAE,MAAM,IAAIvN,EAAED,EAAEu4H,UAAUt4H,IAAIA,EAAEu4H,GAAGv4H,GAAGi4H,GAAGl4H,EAAEu4H,UAAUv4H,EAAEjR,KAAKkR,GAAI,CAAC,UAASw4H,GAAGz4H,GAAGm4H,GAAGC,GAAGA,GAAGzmI,KAAKqO,GAAGo4H,GAAG,CAACp4H,GAAGm4H,GAAGn4H,CAAE,UAAS04H,KAAK,GAAGP,GAAG,CAAC,IAAIn4H,EAAEm4H,GAAGl4H,EAAEm4H,GAAoB,GAAjBA,GAAGD,GAAG,KAAKE,GAAGr4H,GAAMC,EAAE,IAAID,EAAE,EAAEA,EAAEC,EAAE9a,OAAO6a,IAAIq4H,GAAGp4H,EAAED,GAAI,CAAC,UAAS24H,GAAG34H,EAAEC,GAAG,OAAOD,EAAEC,EAAG,UAAS24H,KAAM,KAAIC,IAAG,EAAG,SAASC,GAAG94H,EAAEC,EAAElO,GAAG,GAAG8mI,GAAG,OAAO74H,EAAEC,EAAElO,GAAG8mI,IAAG,EAAG,IAAI,OAAOF,GAAG34H,EAAEC,EAAElO,EAAmD,CAArE,QAAgC8mI,IAAG,GAAG,OAAOV,IAAI,OAAOC,MAAGQ,KAAKF,KAAK,CAAC,CACjb,SAASK,GAAG/4H,EAAEC,GAAG,IAAIlO,EAAEiO,EAAEu4H,UAAU,GAAG,OAAOxmI,EAAE,OAAO,KAAK,IAAIivD,EAAEw3E,GAAGzmI,GAAG,GAAG,OAAOivD,EAAE,OAAO,KAAKjvD,EAAEivD,EAAE/gD,GAAGD,EAAE,OAAOC,GAAG,IAAK,UAAU,IAAK,iBAAiB,IAAK,gBAAgB,IAAK,uBAAuB,IAAK,cAAc,IAAK,qBAAqB,IAAK,cAAc,IAAK,qBAAqB,IAAK,YAAY,IAAK,mBAAmB,IAAK,gBAAgB+gD,GAAGA,EAAEvgC,YAAqBugC,IAAI,YAAbhhD,EAAEA,EAAEjR,OAAuB,UAAUiR,GAAG,WAAWA,GAAG,aAAaA,IAAIA,GAAGghD,EAAE,MAAMhhD,EAAE,QAAQA,GAAE,EAAG,GAAGA,EAAE,OAAO,KAAK,GAAGjO,GAAG,oBACleA,EAAE,MAAMpN,MAAM6oB,EAAE,IAAIvN,SAASlO,IAAI,OAAOA,CAAE,KAAIinI,IAAG,EAAG,GAAGvtG,EAAG,IAAI,IAAIwtG,GAAG,CAAC,EAAEpkI,OAAOE,eAAekkI,GAAG,UAAU,CAAC5rH,IAAI,WAAW2rH,IAAG,CAAG,IAAGv8H,OAAO9N,iBAAiB,OAAOsqI,GAAGA,IAAIx8H,OAAOtR,oBAAoB,OAAO8tI,GAAGA,GAAmB,CAAf,MAAMj5H,IAAGg5H,IAAG,CAAG,UAASE,GAAGl5H,EAAEC,EAAElO,EAAEivD,EAAE1nD,EAAEoI,EAAEugD,EAAErsD,EAAEmuD,GAAG,IAAI3yD,EAAEsC,MAAM5D,UAAU7G,MAAM+I,KAAK8H,UAAU,GAAG,IAAImG,EAAEtM,MAAM5B,EAAEX,EAA4B,CAAzB,MAAM2vD,GAAGjwD,KAAKihG,QAAQhxC,EAAG,CAAC,KAAIo4E,IAAG,EAAGC,GAAG,KAAKC,IAAG,EAAGC,GAAG,KAAKC,GAAG,CAACxnC,QAAQ,SAAS/xF,GAAGm5H,IAAG,EAAGC,GAAGp5H,CAAE,GAAE,SAASw5H,GAAGx5H,EAAEC,EAAElO,EAAEivD,EAAE1nD,EAAEoI,EAAEugD,EAAErsD,EAAEmuD,GAAGo1E,IAAG,EAAGC,GAAG,KAAKF,GAAGvlI,MAAM4lI,GAAGz/H,UAAW,CAClW,SAAS2/H,GAAGz5H,GAAG,IAAIC,EAAED,EAAEjO,EAAEiO,EAAE,GAAGA,EAAE05H,UAAU,KAAKz5H,EAAEgc,QAAQhc,EAAEA,EAAEgc,WAAW,CAACjc,EAAEC,EAAE,GAAO,KAAa,MAAjBA,EAAED,GAAS8B,SAAc/P,EAAEkO,EAAEgc,QAAQjc,EAAEC,EAAEgc,aAAajc,EAAG,QAAO,IAAIC,EAAE4J,IAAI9X,EAAE,IAAK,UAAS4nI,GAAG35H,GAAG,GAAG,KAAKA,EAAE6J,IAAI,CAAC,IAAI5J,EAAED,EAAE45H,cAAsE,GAAxD,OAAO35H,IAAkB,QAAdD,EAAEA,EAAE05H,aAAqBz5H,EAAED,EAAE45H,gBAAmB,OAAO35H,EAAE,OAAOA,EAAE45H,UAAW,QAAO,IAAK,UAASC,GAAG95H,GAAG,GAAGy5H,GAAGz5H,KAAKA,EAAE,MAAMrb,MAAM6oB,EAAE,KAAO,CAE3S,SAASusH,GAAG/5H,GAAW,OAAO,QAAfA,EADtN,SAAYA,GAAG,IAAIC,EAAED,EAAE05H,UAAU,IAAIz5H,EAAE,CAAS,GAAG,QAAXA,EAAEw5H,GAAGz5H,IAAe,MAAMrb,MAAM6oB,EAAE,MAAM,OAAOvN,IAAID,EAAE,KAAKA,CAAE,KAAI,IAAIjO,EAAEiO,EAAEghD,EAAE/gD,IAAI,CAAC,IAAI3G,EAAEvH,EAAEkqB,OAAO,GAAG,OAAO3iB,EAAE,MAAM,IAAIoI,EAAEpI,EAAEogI,UAAU,GAAG,OAAOh4H,EAAE,CAAY,GAAG,QAAds/C,EAAE1nD,EAAE2iB,QAAmB,CAAClqB,EAAEivD,EAAE,QAAS,MAAM,IAAG1nD,EAAE8Q,QAAQ1I,EAAE0I,MAAM,CAAC,IAAI1I,EAAEpI,EAAE8Q,MAAM1I,GAAG,CAAC,GAAGA,IAAI3P,EAAE,OAAO+nI,GAAGxgI,GAAG0G,EAAE,GAAG0B,IAAIs/C,EAAE,OAAO84E,GAAGxgI,GAAG2G,EAAEyB,EAAEA,EAAEs4H,OAAQ,OAAMr1I,MAAM6oB,EAAE,KAAO,IAAGzb,EAAEkqB,SAAS+kC,EAAE/kC,OAAOlqB,EAAEuH,EAAE0nD,EAAEt/C,MAAM,CAAC,IAAI,IAAIugD,GAAE,EAAGrsD,EAAE0D,EAAE8Q,MAAMxU,GAAG,CAAC,GAAGA,IAAI7D,EAAE,CAACkwD,GAAE,EAAGlwD,EAAEuH,EAAE0nD,EAAEt/C,EAAE,KAAM,IAAG9L,IAAIorD,EAAE,CAACiB,GAAE,EAAGjB,EAAE1nD,EAAEvH,EAAE2P,EAAE,KAAM,CAAA9L,EAAEA,EAAEokI,OAAQ,KAAI/3E,EAAE,CAAC,IAAIrsD,EAAE8L,EAAE0I,MAAMxU,GAAG,CAAC,GAAGA,IAC5f7D,EAAE,CAACkwD,GAAE,EAAGlwD,EAAE2P,EAAEs/C,EAAE1nD,EAAE,KAAM,IAAG1D,IAAIorD,EAAE,CAACiB,GAAE,EAAGjB,EAAEt/C,EAAE3P,EAAEuH,EAAE,KAAM,CAAA1D,EAAEA,EAAEokI,OAAQ,KAAI/3E,EAAE,MAAMt9D,MAAM6oB,EAAE,KAAO,CAAC,IAAGzb,EAAE2nI,YAAY14E,EAAE,MAAMr8D,MAAM6oB,EAAE,KAAO,IAAG,IAAIzb,EAAE8X,IAAI,MAAMllB,MAAM6oB,EAAE,MAAM,OAAOzb,EAAEwmI,UAAUr4G,UAAUnuB,EAAEiO,EAAEC,CAAE,CAAiBg6H,CAAGj6H,IAAmBk6H,GAAGl6H,GAAG,IAAK,UAASk6H,GAAGl6H,GAAG,GAAG,IAAIA,EAAE6J,KAAK,IAAI7J,EAAE6J,IAAI,OAAO7J,EAAE,IAAIA,EAAEA,EAAEoK,MAAM,OAAOpK,GAAG,CAAC,IAAIC,EAAEi6H,GAAGl6H,GAAG,GAAG,OAAOC,EAAE,OAAOA,EAAED,EAAEA,EAAEg6H,OAAQ,QAAO,IAAK,CAC3X,IAAIG,GAAGlL,EAAGmL,0BAA0BC,GAAGpL,EAAGqL,wBAAwBC,GAAGtL,EAAGuL,qBAAqBC,GAAGxL,EAAGyL,sBAAsBC,GAAE1L,EAAG2L,aAAaC,GAAG5L,EAAG6L,iCAAiCC,GAAG9L,EAAG+L,2BAA2BC,GAAGhM,EAAGiM,8BAA8BC,GAAGlM,EAAGmM,wBAAwBC,GAAGpM,EAAGqM,qBAAqBC,GAAGtM,EAAGuM,sBAAsBC,GAAG,KAAKC,GAAG,KACvV,IAAIC,GAAGpkI,KAAKqkI,MAAMrkI,KAAKqkI,MAAiC,SAAY57H,GAAU,OAAO,KAAdA,KAAK,GAAe,GAAG,IAAI67H,GAAG77H,GAAG87H,GAAG,GAAG,CAAE,EAAhFD,GAAGtkI,KAAK6tD,IAAI02E,GAAGvkI,KAAKwkI,IAA4D,IAAIC,GAAG,GAAGC,GAAG,QAC7H,SAASC,GAAGl8H,GAAG,OAAOA,GAAGA,GAAG,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,OAAO,KAAK,OAAO,KAAK,OAAO,KAAK,QAAQ,KAAK,QAAQ,OAAS,QAAFA,EAAU,KAAK,QAAQ,KAAK,QAAQ,KAAK,SAAS,KAAK,SAAS,KAAK,SAAS,OAAS,UAAFA,EAAY,KAAK,UAAU,OAAO,UAAU,KAAK,UAAU,OAAO,UAAU,KAAK,UAAU,OAAO,UAAU,KAAK,WAAW,OAAO,WACzgB,QAAQ,OAAOA,EAAG,UAASm8H,GAAGn8H,EAAEC,GAAG,IAAIlO,EAAEiO,EAAEo8H,aAAa,GAAG,IAAIrqI,EAAE,OAAO,EAAE,IAAIivD,EAAE,EAAE1nD,EAAE0G,EAAEq8H,eAAe36H,EAAE1B,EAAEs8H,YAAYr6E,EAAI,UAAFlwD,EAAY,GAAG,IAAIkwD,EAAE,CAAC,IAAIrsD,EAAEqsD,GAAG3oD,EAAE,IAAI1D,EAAEorD,EAAEk7E,GAAGtmI,GAAS,KAAL8L,GAAGugD,KAAUjB,EAAEk7E,GAAGx6H,GAAK,MAAY,KAAPugD,EAAElwD,GAAGuH,GAAQ0nD,EAAEk7E,GAAGj6E,GAAG,IAAIvgD,IAAIs/C,EAAEk7E,GAAGx6H,IAAI,GAAG,IAAIs/C,EAAE,OAAO,EAAE,GAAG,IAAI/gD,GAAGA,IAAI+gD,GAAG,KAAK/gD,EAAE3G,MAAKA,EAAE0nD,GAAGA,KAAEt/C,EAAEzB,GAAGA,IAAQ,KAAK3G,GAAG,KAAO,QAAFoI,IAAY,OAAOzB,EAA0C,GAAxC,KAAO,EAAF+gD,KAAOA,GAAK,GAAFjvD,GAA4B,KAAtBkO,EAAED,EAAEu8H,gBAAwB,IAAIv8H,EAAEA,EAAEw8H,cAAcv8H,GAAG+gD,EAAE,EAAE/gD,GAAc3G,EAAE,IAAbvH,EAAE,GAAG4pI,GAAG17H,IAAU+gD,GAAGhhD,EAAEjO,GAAGkO,IAAI3G,EAAE,OAAO0nD,CAAE,CACxc,SAASy7E,GAAGz8H,EAAEC,GAAG,OAAOD,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAOC,EAAE,IAAI,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,OAAO,KAAK,OAAO,KAAK,OAAO,KAAK,QAAQ,KAAK,QAAQ,OAAOA,EAAE,IAAuJ,QAAQ,OAAO,EAAG,CACtN,SAASy8H,GAAG18H,GAAgC,OAAO,KAApCA,GAAkB,WAAhBA,EAAEo8H,cAAsCp8H,EAAI,WAAFA,EAAa,WAAW,CAAE,UAAS28H,KAAK,IAAI38H,EAAEg8H,GAAoC,OAA1B,KAAQ,SAAfA,KAAK,MAAqBA,GAAG,IAAWh8H,CAAE,UAAS48H,GAAG58H,GAAG,IAAI,IAAIC,EAAE,GAAGlO,EAAE,EAAE,GAAGA,EAAEA,IAAIkO,EAAEtO,KAAKqO,GAAG,OAAOC,CAAE,CAC5a,SAAS48H,GAAG78H,EAAEC,EAAElO,GAAGiO,EAAEo8H,cAAcn8H,EAAE,YAAYA,IAAID,EAAEq8H,eAAe,EAAEr8H,EAAEs8H,YAAY,IAAGt8H,EAAEA,EAAE88H,YAAW78H,EAAE,GAAG07H,GAAG17H,IAAQlO,CAAE,CAC1H,SAASgrI,GAAG/8H,EAAEC,GAAG,IAAIlO,EAAEiO,EAAEu8H,gBAAgBt8H,EAAE,IAAID,EAAEA,EAAEw8H,cAAczqI,GAAG,CAAC,IAAIivD,EAAE,GAAG26E,GAAG5pI,GAAGuH,EAAE,GAAG0nD,EAAE1nD,EAAE2G,EAAED,EAAEghD,GAAG/gD,IAAID,EAAEghD,IAAI/gD,GAAGlO,IAAIuH,CAAE,CAAC,KAAI0jI,GAAE,EAAE,SAASC,GAAGj9H,GAAS,OAAO,GAAbA,IAAIA,GAAa,EAAEA,EAAE,KAAO,UAAFA,GAAa,GAAG,UAAU,EAAE,CAAE,KAAIk9H,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,IAAG,EAAGC,GAAG,GAAGC,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAKC,GAAG,IAAIp5D,IAAIq5D,GAAG,IAAIr5D,IAAIs5D,GAAG,GAAGC,GAAG,6PAA6P74I,MAAM,KAChiB,SAAS84I,GAAGh+H,EAAEC,GAAG,OAAOD,GAAG,IAAK,UAAU,IAAK,WAAWy9H,GAAG,KAAK,MAAM,IAAK,YAAY,IAAK,YAAYC,GAAG,KAAK,MAAM,IAAK,YAAY,IAAK,WAAWC,GAAG,KAAK,MAAM,IAAK,cAAc,IAAK,aAAaC,GAAGp0D,OAAOvpE,EAAEg+H,WAAW,MAAM,IAAK,oBAAoB,IAAK,qBAAqBJ,GAAGr0D,OAAOvpE,EAAEg+H,WAAY,CACpT,SAASC,GAAGl+H,EAAEC,EAAElO,EAAEivD,EAAE1nD,EAAEoI,GAAG,OAAG,OAAO1B,GAAGA,EAAEm+H,cAAcz8H,GAAS1B,EAAE,CAACo+H,UAAUn+H,EAAEo+H,aAAatsI,EAAEusI,iBAAiBt9E,EAAEm9E,YAAYz8H,EAAE68H,iBAAiB,CAACjlI,IAAI,OAAO2G,IAAY,QAARA,EAAEq4H,GAAGr4H,KAAak9H,GAAGl9H,IAAID,IAAEA,EAAEs+H,kBAAkBt9E,EAAE/gD,EAAED,EAAEu+H,iBAAiB,OAAOjlI,IAAI,IAAI2G,EAAE7S,QAAQkM,IAAI2G,EAAEtO,KAAK2H,GAAU0G,EAAE,CAErR,SAASw+H,GAAGx+H,GAAG,IAAIC,EAAEw+H,GAAGz+H,EAAEtJ,QAAQ,GAAG,OAAOuJ,EAAE,CAAC,IAAIlO,EAAE0nI,GAAGx5H,GAAG,GAAG,OAAOlO,EAAE,GAAW,MAARkO,EAAElO,EAAE8X,MAAY,GAAW,QAAR5J,EAAE05H,GAAG5nI,IAA4D,OAA/CiO,EAAEo+H,UAAUn+H,OAAEq9H,GAAGt9H,EAAEq/D,UAAS,WAAW+9D,GAAGrrI,EAAG,SAAe,GAAG,IAAIkO,GAAGlO,EAAEwmI,UAAUr4G,QAAQ05G,cAAc8E,aAAmE,YAArD1+H,EAAEo+H,UAAU,IAAIrsI,EAAE8X,IAAI9X,EAAEwmI,UAAUoG,cAAc,KAAa,CAAA3+H,EAAEo+H,UAAU,IAAK,CACnT,SAASQ,GAAG5+H,GAAG,GAAG,OAAOA,EAAEo+H,UAAU,OAAM,EAAG,IAAI,IAAIn+H,EAAED,EAAEu+H,iBAAiB,EAAEt+H,EAAE9a,QAAQ,CAAC,IAAI4M,EAAE8sI,GAAG7+H,EAAEq+H,aAAar+H,EAAEs+H,iBAAiBr+H,EAAE,GAAGD,EAAEm+H,aAAa,GAAG,OAAOpsI,EAAiG,OAAe,QAARkO,EAAEq4H,GAAGvmI,KAAaorI,GAAGl9H,GAAGD,EAAEo+H,UAAUrsI,GAAE,EAA3H,IAAIivD,EAAE,IAAtBjvD,EAAEiO,EAAEm+H,aAAwB1+H,YAAY1N,EAAEhD,KAAKgD,GAAGgmI,GAAG/2E,EAAEjvD,EAAE2E,OAAOqO,cAAci8C,GAAG+2E,GAAG,KAA0D93H,EAAErM,OAAQ,QAAM,CAAG,UAASkrI,GAAG9+H,EAAEC,EAAElO,GAAG6sI,GAAG5+H,IAAIjO,EAAEy3E,OAAOvpE,EAAG,UAAS8+H,KAAKxB,IAAG,EAAG,OAAOE,IAAImB,GAAGnB,MAAMA,GAAG,MAAM,OAAOC,IAAIkB,GAAGlB,MAAMA,GAAG,MAAM,OAAOC,IAAIiB,GAAGjB,MAAMA,GAAG,MAAMC,GAAGvvI,QAAQywI,IAAIjB,GAAGxvI,QAAQywI,GAAI,CACpf,SAASE,GAAGh/H,EAAEC,GAAGD,EAAEo+H,YAAYn+H,IAAID,EAAEo+H,UAAU,KAAKb,KAAKA,IAAG,EAAGtO,EAAGmL,0BAA0BnL,EAAGmM,wBAAwB2D,KAAM,CAC7H,SAASE,GAAGj/H,GAAG,SAASC,EAAEA,GAAG,OAAO++H,GAAG/+H,EAAED,EAAG,IAAG,EAAEw9H,GAAGr4I,OAAO,CAAC65I,GAAGxB,GAAG,GAAGx9H,GAAG,IAAI,IAAIjO,EAAE,EAAEA,EAAEyrI,GAAGr4I,OAAO4M,IAAI,CAAC,IAAIivD,EAAEw8E,GAAGzrI,GAAGivD,EAAEo9E,YAAYp+H,IAAIghD,EAAEo9E,UAAU,KAAM,CAAC,CAAwF,IAAxF,OAAOX,IAAIuB,GAAGvB,GAAGz9H,GAAG,OAAO09H,IAAIsB,GAAGtB,GAAG19H,GAAG,OAAO29H,IAAIqB,GAAGrB,GAAG39H,GAAG49H,GAAGvvI,QAAQ4R,GAAG49H,GAAGxvI,QAAQ4R,GAAOlO,EAAE,EAAEA,EAAE+rI,GAAG34I,OAAO4M,KAAIivD,EAAE88E,GAAG/rI,IAAKqsI,YAAYp+H,IAAIghD,EAAEo9E,UAAU,MAAM,KAAK,EAAEN,GAAG34I,QAAiB,QAAR4M,EAAE+rI,GAAG,IAAYM,WAAYI,GAAGzsI,GAAG,OAAOA,EAAEqsI,WAAWN,GAAGlqI,OAAQ,KAAIsrI,GAAG3O,EAAG4O,wBAAwBC,IAAG,EAC5a,SAASC,GAAGr/H,EAAEC,EAAElO,EAAEivD,GAAG,IAAI1nD,EAAE0jI,GAAEt7H,EAAEw9H,GAAGI,WAAWJ,GAAGI,WAAW,KAAK,IAAItC,GAAE,EAAE/tG,GAAGjvB,EAAEC,EAAElO,EAAEivD,EAA+B,CAAhD,QAA4Bg8E,GAAE1jI,EAAE4lI,GAAGI,WAAW59H,CAAE,CAAC,UAAS69H,GAAGv/H,EAAEC,EAAElO,EAAEivD,GAAG,IAAI1nD,EAAE0jI,GAAEt7H,EAAEw9H,GAAGI,WAAWJ,GAAGI,WAAW,KAAK,IAAItC,GAAE,EAAE/tG,GAAGjvB,EAAEC,EAAElO,EAAEivD,EAA+B,CAAhD,QAA4Bg8E,GAAE1jI,EAAE4lI,GAAGI,WAAW59H,CAAE,CAAC,CAClO,SAASutB,GAAGjvB,EAAEC,EAAElO,EAAEivD,GAAG,GAAGo+E,GAAG,CAAC,IAAI9lI,EAAEulI,GAAG7+H,EAAEC,EAAElO,EAAEivD,GAAG,GAAG,OAAO1nD,EAAEkmI,GAAGx/H,EAAEC,EAAE+gD,EAAEtrD,GAAG3D,GAAGisI,GAAGh+H,EAAEghD,QAAQ,GANtF,SAAYhhD,EAAEC,EAAElO,EAAEivD,EAAE1nD,GAAG,OAAO2G,GAAG,IAAK,UAAU,OAAOw9H,GAAGS,GAAGT,GAAGz9H,EAAEC,EAAElO,EAAEivD,EAAE1nD,IAAG,EAAG,IAAK,YAAY,OAAOokI,GAAGQ,GAAGR,GAAG19H,EAAEC,EAAElO,EAAEivD,EAAE1nD,IAAG,EAAG,IAAK,YAAY,OAAOqkI,GAAGO,GAAGP,GAAG39H,EAAEC,EAAElO,EAAEivD,EAAE1nD,IAAG,EAAG,IAAK,cAAc,IAAIoI,EAAEpI,EAAE2kI,UAAkD,OAAxCL,GAAGxwH,IAAI1L,EAAEw8H,GAAGN,GAAGvwH,IAAI3L,IAAI,KAAK1B,EAAEC,EAAElO,EAAEivD,EAAE1nD,KAAU,EAAG,IAAK,oBAAoB,OAAOoI,EAAEpI,EAAE2kI,UAAUJ,GAAGzwH,IAAI1L,EAAEw8H,GAAGL,GAAGxwH,IAAI3L,IAAI,KAAK1B,EAAEC,EAAElO,EAAEivD,EAAE1nD,KAAI,EAAG,OAAM,CAAG,CAM3QmmI,CAAGnmI,EAAE0G,EAAEC,EAAElO,EAAEivD,GAAGA,EAAEjgB,uBAAuB,GAAGi9F,GAAGh+H,EAAEghD,GAAK,EAAF/gD,IAAM,EAAE89H,GAAG3wI,QAAQ4S,GAAG,CAAC,KAAK,OAAO1G,GAAG,CAAC,IAAIoI,EAAE42H,GAAGh/H,GAA0D,GAAvD,OAAOoI,GAAGw7H,GAAGx7H,GAAiB,QAAdA,EAAEm9H,GAAG7+H,EAAEC,EAAElO,EAAEivD,KAAaw+E,GAAGx/H,EAAEC,EAAE+gD,EAAEtrD,GAAG3D,GAAM2P,IAAIpI,EAAE,MAAMA,EAAEoI,CAAE,QAAOpI,GAAG0nD,EAAEjgB,iBAAkB,MAAKy+F,GAAGx/H,EAAEC,EAAE+gD,EAAE,KAAKjvD,EAAG,CAAC,KAAI2D,GAAG,KACpU,SAASmpI,GAAG7+H,EAAEC,EAAElO,EAAEivD,GAA2B,GAAxBtrD,GAAG,KAAwB,QAAXsK,EAAEy+H,GAAVz+H,EAAEg4H,GAAGh3E,KAAuB,GAAW,QAAR/gD,EAAEw5H,GAAGz5H,IAAYA,EAAE,UAAU,GAAW,MAARjO,EAAEkO,EAAE4J,KAAW,CAAS,GAAG,QAAX7J,EAAE25H,GAAG15H,IAAe,OAAOD,EAAEA,EAAE,IAAK,MAAK,GAAG,IAAIjO,EAAE,CAAC,GAAGkO,EAAEs4H,UAAUr4G,QAAQ05G,cAAc8E,aAAa,OAAO,IAAIz+H,EAAE4J,IAAI5J,EAAEs4H,UAAUoG,cAAc,KAAK3+H,EAAE,IAAK,MAAKC,IAAID,IAAIA,EAAE,MAAW,OAALtK,GAAGsK,EAAS,IAAK,CAC9S,SAAS0/H,GAAG1/H,GAAG,OAAOA,GAAG,IAAK,SAAS,IAAK,QAAQ,IAAK,QAAQ,IAAK,cAAc,IAAK,OAAO,IAAK,MAAM,IAAK,WAAW,IAAK,WAAW,IAAK,UAAU,IAAK,YAAY,IAAK,OAAO,IAAK,UAAU,IAAK,WAAW,IAAK,QAAQ,IAAK,UAAU,IAAK,UAAU,IAAK,WAAW,IAAK,QAAQ,IAAK,YAAY,IAAK,UAAU,IAAK,QAAQ,IAAK,QAAQ,IAAK,OAAO,IAAK,gBAAgB,IAAK,cAAc,IAAK,YAAY,IAAK,aAAa,IAAK,QAAQ,IAAK,SAAS,IAAK,SAAS,IAAK,SAAS,IAAK,cAAc,IAAK,WAAW,IAAK,aAAa,IAAK,eAAe,IAAK,SAAS,IAAK,kBAAkB,IAAK,YAAY,IAAK,mBAAmB,IAAK,iBAAiB,IAAK,oBAAoB,IAAK,aAAa,IAAK,YAAY,IAAK,cAAc,IAAK,OAAO,IAAK,mBAAmB,IAAK,QAAQ,IAAK,aAAa,IAAK,WAAW,IAAK,SAAS,IAAK,cAAc,OAAO,EAAE,IAAK,OAAO,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,cAAc,IAAK,aAAa,IAAK,cAAc,IAAK,SAAS,IAAK,SAAS,IAAK,YAAY,IAAK,QAAQ,IAAK,aAAa,IAAK,aAAa,IAAK,eAAe,IAAK,eAAe,OAAO,EACpqC,IAAK,UAAU,OAAO66H,MAAM,KAAKE,GAAG,OAAO,EAAE,KAAKE,GAAG,OAAO,EAAE,KAAKE,GAAG,KAAKE,GAAG,OAAO,GAAG,KAAKE,GAAG,OAAO,UAAU,QAAQ,OAAO,GAAG,QAAQ,OAAO,GAAI,KAAIoE,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAK,SAASC,KAAK,GAAGD,GAAG,OAAOA,GAAG,IAAI7/H,EAAkBghD,EAAhB/gD,EAAE2/H,GAAG7tI,EAAEkO,EAAE9a,OAASmU,EAAE,UAAUqmI,GAAGA,GAAGlzI,MAAMkzI,GAAG/qF,YAAYlzC,EAAEpI,EAAEnU,OAAO,IAAI6a,EAAE,EAAEA,EAAEjO,GAAGkO,EAAED,KAAK1G,EAAE0G,GAAGA,KAAK,IAAIiiD,EAAElwD,EAAEiO,EAAE,IAAIghD,EAAE,EAAEA,GAAGiB,GAAGhiD,EAAElO,EAAEivD,KAAK1nD,EAAEoI,EAAEs/C,GAAGA,KAAK,OAAO6+E,GAAGvmI,EAAErQ,MAAM+W,EAAE,EAAEghD,EAAE,EAAEA,OAAE,EAAQ,CACzY,SAAS++E,GAAG//H,GAAG,IAAIC,EAAED,EAAE8rC,QAA+E,MAAvE,aAAa9rC,EAAgB,KAAbA,EAAEA,EAAEggI,WAAgB,KAAK//H,IAAID,EAAE,IAAKA,EAAEC,EAAE,KAAKD,IAAIA,EAAE,IAAW,IAAIA,GAAG,KAAKA,EAAEA,EAAE,CAAE,UAASigI,KAAK,OAAM,CAAG,UAASC,KAAK,OAAM,CAAG,CAC7K,SAASC,GAAGngI,GAAG,SAASC,EAAEA,EAAE+gD,EAAE1nD,EAAEoI,EAAEugD,GAA6G,IAAI,IAAIlwD,KAAlHjB,KAAKsvI,WAAWngI,EAAEnP,KAAKuvI,YAAY/mI,EAAExI,KAAK/B,KAAKiyD,EAAElwD,KAAKqtI,YAAYz8H,EAAE5Q,KAAK4F,OAAOurD,EAAEnxD,KAAK+lF,cAAc,KAAkB72E,EAAEA,EAAEV,eAAevN,KAAKkO,EAAED,EAAEjO,GAAGjB,KAAKiB,GAAGkO,EAAEA,EAAEyB,GAAGA,EAAE3P,IAAgI,OAA5HjB,KAAKwvI,oBAAoB,MAAM5+H,EAAE6+H,iBAAiB7+H,EAAE6+H,kBAAiB,IAAK7+H,EAAEg/G,aAAauf,GAAGC,GAAGpvI,KAAK0vI,qBAAqBN,GAAUpvI,IAAK,CAC/E,OAD+Ek0G,EAAE/kG,EAAEnQ,UAAU,CAACs0C,eAAe,WAAWtzC,KAAKyvI,kBAAiB,EAAG,IAAIvgI,EAAElP,KAAKqtI,YAAYn+H,IAAIA,EAAEokC,eAAepkC,EAAEokC,iBAAiB,mBAAmBpkC,EAAE0gH,cAC7e1gH,EAAE0gH,aAAY,GAAI5vH,KAAKwvI,mBAAmBL,GAAI,EAACl/F,gBAAgB,WAAW,IAAI/gC,EAAElP,KAAKqtI,YAAYn+H,IAAIA,EAAE+gC,gBAAgB/gC,EAAE+gC,kBAAkB,mBAAmB/gC,EAAEygI,eAAezgI,EAAEygI,cAAa,GAAI3vI,KAAK0vI,qBAAqBP,GAAI,EAACtgB,QAAQ,WAAY,EAAC+gB,aAAaT,KAAYhgI,CAAE,CAClR,IAAoL0gI,GAAGC,GAAGC,GAAtLC,GAAG,CAACC,WAAW,EAAE1lF,QAAQ,EAAEC,WAAW,EAAE0lF,UAAU,SAAShhI,GAAG,OAAOA,EAAEghI,WAAW/8I,KAAKqX,KAAM,EAACilI,iBAAiB,EAAEU,UAAU,GAAGC,GAAGf,GAAGW,IAAIK,GAAGn8B,EAAE,CAAC,EAAE87B,GAAG,CAAC58H,KAAK,EAAEe,OAAO,IAAIm8H,GAAGjB,GAAGgB,IAAaE,GAAGr8B,EAAE,CAAC,EAAEm8B,GAAG,CAACG,QAAQ,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,QAAQ,EAAE59F,MAAM,EAAEC,MAAM,EAAE49F,QAAQ,EAAEC,SAAS,EAAEC,OAAO,EAAEC,QAAQ,EAAEC,iBAAiBC,GAAGC,OAAO,EAAEC,QAAQ,EAAEC,cAAc,SAASliI,GAAG,YAAO,IAASA,EAAEkiI,cAAcliI,EAAEmiI,cAAcniI,EAAE82E,WAAW92E,EAAEoiI,UAAUpiI,EAAEmiI,YAAYniI,EAAEkiI,aAAc,EAACG,UAAU,SAASriI,GAAG,MAAG,cAC3eA,EAASA,EAAEqiI,WAAUriI,IAAI6gI,KAAKA,IAAI,cAAc7gI,EAAEjR,MAAM4xI,GAAG3gI,EAAEshI,QAAQT,GAAGS,QAAQV,GAAG5gI,EAAEuhI,QAAQV,GAAGU,SAASX,GAAGD,GAAG,EAAEE,GAAG7gI,GAAU2gI,GAAG,EAAC2B,UAAU,SAAStiI,GAAG,MAAM,cAAcA,EAAEA,EAAEsiI,UAAU1B,EAAG,IAAG2B,GAAGpC,GAAGkB,IAAiCmB,GAAGrC,GAA7Bn7B,EAAE,CAAC,EAAEq8B,GAAG,CAACz5G,aAAa,KAA4C66G,GAAGtC,GAA9Bn7B,EAAE,CAAC,EAAEm8B,GAAG,CAACe,cAAc,KAA0EQ,GAAGvC,GAA5Dn7B,EAAE,CAAC,EAAE87B,GAAG,CAAC6B,cAAc,EAAEC,YAAY,EAAEC,cAAc,KAAcC,GAAG99B,EAAE,CAAC,EAAE87B,GAAG,CAAC3sF,cAAc,SAASn0C,GAAG,MAAM,kBAAkBA,EAAEA,EAAEm0C,cAAc13C,OAAO03C,aAAc,IAAG4uF,GAAG5C,GAAG2C,IAAyBE,GAAG7C,GAArBn7B,EAAE,CAAC,EAAE87B,GAAG,CAACn2I,KAAK,KAAcs4I,GAAG,CAACC,IAAI,SACxfC,SAAS,IAAIC,KAAK,YAAYC,GAAG,UAAUC,MAAM,aAAaC,KAAK,YAAYC,IAAI,SAASC,IAAI,KAAKC,KAAK,cAAcC,KAAK,cAAcC,OAAO,aAAaC,gBAAgB,gBAAgBC,GAAG,CAAC,EAAE,YAAY,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,YAAY,GAAG,UAAU,GAAG,aAAa,GAAG,YAAY,GAAG,SAAS,GAAG,SAAS,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KACtf,IAAI,KAAK,IAAI,KAAK,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,IAAI,UAAU,IAAI,aAAa,IAAI,QAAQC,GAAG,CAACC,IAAI,SAASC,QAAQ,UAAUC,KAAK,UAAUC,MAAM,YAAY,SAASC,GAAGpkI,GAAG,IAAIC,EAAEnP,KAAKqtI,YAAY,OAAOl+H,EAAE6hI,iBAAiB7hI,EAAE6hI,iBAAiB9hI,MAAIA,EAAE+jI,GAAG/jI,OAAMC,EAAED,EAAM,UAAS+hI,KAAK,OAAOqC,EAAG,CACjS,IAAIC,GAAGr/B,EAAE,CAAC,EAAEm8B,GAAG,CAAC7yI,IAAI,SAAS0R,GAAG,GAAGA,EAAE1R,IAAI,CAAC,IAAI2R,EAAEgjI,GAAGjjI,EAAE1R,MAAM0R,EAAE1R,IAAI,GAAG,iBAAiB2R,EAAE,OAAOA,CAAE,OAAM,aAAaD,EAAEjR,KAAc,MAARiR,EAAE+/H,GAAG//H,IAAU,QAAQc,OAAOmrD,aAAajsD,GAAI,YAAYA,EAAEjR,MAAM,UAAUiR,EAAEjR,KAAK+0I,GAAG9jI,EAAE8rC,UAAU,eAAe,EAAG,EAAC13C,KAAK,EAAEsI,SAAS,EAAEglI,QAAQ,EAAEC,SAAS,EAAEC,OAAO,EAAEC,QAAQ,EAAElsD,OAAO,EAAEu3B,OAAO,EAAE40B,iBAAiBC,GAAG/B,SAAS,SAAShgI,GAAG,MAAM,aAAaA,EAAEjR,KAAKgxI,GAAG//H,GAAG,CAAE,EAAC8rC,QAAQ,SAAS9rC,GAAG,MAAM,YAAYA,EAAEjR,MAAM,UAAUiR,EAAEjR,KAAKiR,EAAE8rC,QAAQ,CAAE,EAACw4F,MAAM,SAAStkI,GAAG,MAAM,aAC7eA,EAAEjR,KAAKgxI,GAAG//H,GAAG,YAAYA,EAAEjR,MAAM,UAAUiR,EAAEjR,KAAKiR,EAAE8rC,QAAQ,CAAE,IAAGy4F,GAAGpE,GAAGkE,IAAiIG,GAAGrE,GAA7Hn7B,EAAE,CAAC,EAAEq8B,GAAG,CAACpD,UAAU,EAAE3yH,MAAM,EAAEE,OAAO,EAAEi5H,SAAS,EAAEC,mBAAmB,EAAEC,MAAM,EAAEC,MAAM,EAAEC,MAAM,EAAEC,YAAY,EAAEnhG,UAAU,KAAmIohG,GAAG5E,GAArHn7B,EAAE,CAAC,EAAEm8B,GAAG,CAAC6D,QAAQ,EAAEC,cAAc,EAAEC,eAAe,EAAEtD,OAAO,EAAEC,QAAQ,EAAEH,QAAQ,EAAEC,SAAS,EAAEG,iBAAiBC,MAA0EoD,GAAGhF,GAA3Dn7B,EAAE,CAAC,EAAE87B,GAAG,CAACpzE,aAAa,EAAEk1E,YAAY,EAAEC,cAAc,KAAcuC,GAAGpgC,EAAE,CAAC,EAAEq8B,GAAG,CAACgE,OAAO,SAASrlI,GAAG,MAAM,WAAWA,EAAEA,EAAEqlI,OAAO,gBAAgBrlI,GAAGA,EAAEslI,YAAY,CAAE,EACpfC,OAAO,SAASvlI,GAAG,MAAM,WAAWA,EAAEA,EAAEulI,OAAO,gBAAgBvlI,GAAGA,EAAEwlI,YAAY,eAAexlI,GAAGA,EAAEylI,WAAW,CAAE,EAACC,OAAO,EAAEC,UAAU,IAAIC,GAAGzF,GAAGiF,IAAIS,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI1uE,GAAG1rC,GAAI,qBAAqBhvB,OAAO4gG,GAAG,KAAK5xE,GAAI,iBAAiBxwB,WAAWoiG,GAAGpiG,SAAS6qI,cAAc,IAAI7uC,GAAGxrE,GAAI,cAAchvB,SAAS4gG,GAAGhC,GAAG5vE,KAAM0rC,IAAIkmC,IAAI,EAAEA,IAAI,IAAIA,IAAIh0C,GAAGvoD,OAAOmrD,aAAa,IAAI85E,IAAG,EAC1W,SAASC,GAAGhmI,EAAEC,GAAG,OAAOD,GAAG,IAAK,QAAQ,OAAO,IAAI6lI,GAAGz4I,QAAQ6S,EAAE6rC,SAAS,IAAK,UAAU,OAAO,MAAM7rC,EAAE6rC,QAAQ,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,OAAM,EAAG,QAAQ,OAAM,EAAI,UAAS4wD,GAAG18F,GAAc,MAAM,kBAAjBA,EAAEA,EAAEiF,SAAkC,SAASjF,EAAEA,EAAErV,KAAK,IAAK,KAAIs7I,IAAG,EAE9Q,IAAIvuC,GAAG,CAAChyC,OAAM,EAAG9hE,MAAK,EAAGsiJ,UAAS,EAAG,kBAAiB,EAAGr4E,OAAM,EAAGpmE,OAAM,EAAG8M,QAAO,EAAG7I,UAAS,EAAGupH,OAAM,EAAG94G,QAAO,EAAGgqI,KAAI,EAAG/sG,MAAK,EAAG6qB,MAAK,EAAGh4D,KAAI,EAAGm6I,MAAK,GAAI,SAAS/lC,GAAGrgG,GAAG,IAAIC,EAAED,GAAGA,EAAEi0C,UAAUj0C,EAAEi0C,SAAS1lD,cAAc,MAAM,UAAU0R,IAAIy3F,GAAG13F,EAAEjR,MAAM,aAAakR,CAAQ,UAASomI,GAAGrmI,EAAEC,EAAElO,EAAEivD,GAAGy3E,GAAGz3E,GAAsB,GAAnB/gD,EAAEqmI,GAAGrmI,EAAE,aAAgB9a,SAAS4M,EAAE,IAAImvI,GAAG,WAAW,SAAS,KAAKnvI,EAAEivD,GAAGhhD,EAAErO,KAAK,CAACge,MAAM5d,EAAEqd,UAAUnP,IAAK,KAAIi3F,GAAG,KAAKqvC,GAAG,KAAK,SAASrzD,GAAGlzE,GAAGwmI,GAAGxmI,EAAE,EAAG,UAASwrD,GAAGxrD,GAAe,GAAG0yH,EAATj7B,GAAGz3F,IAAY,OAAOA,CAAE,CACre,SAASymI,GAAGzmI,EAAEC,GAAG,GAAG,WAAWD,EAAE,OAAOC,CAAE,KAAIymI,IAAG,EAAG,GAAGj7G,EAAG,CAAC,IAAIyzE,GAAG,GAAGzzE,EAAG,CAAC,IAAIkxE,GAAG,YAAY1hG,SAAS,IAAI0hG,GAAG,CAAC,IAAIgqC,GAAG1rI,SAASa,cAAc,OAAO6qI,GAAG1qI,aAAa,UAAU,WAAW0gG,GAAG,oBAAoBgqC,GAAGC,OAAQ,CAAA1nC,GAAGvC,EAAG,MAAKuC,IAAG,EAAGwnC,GAAGxnC,MAAMjkG,SAAS6qI,cAAc,EAAE7qI,SAAS6qI,aAAc,UAASe,KAAK3vC,KAAKA,GAAG5gB,YAAY,mBAAmBwwD,IAAIP,GAAGrvC,GAAG,KAAM,UAAS4vC,GAAG9mI,GAAG,GAAG,UAAUA,EAAE0tD,cAAclC,GAAG+6E,IAAI,CAAC,IAAItmI,EAAE,GAAGomI,GAAGpmI,EAAEsmI,GAAGvmI,EAAEg4H,GAAGh4H,IAAI84H,GAAG5lD,GAAGjzE,EAAG,CAAC,CAChc,SAAS8mI,GAAG/mI,EAAEC,EAAElO,GAAG,YAAYiO,GAAG6mI,KAAUN,GAAGx0I,GAARmlG,GAAGj3F,GAAU+2E,YAAY,mBAAmB8vD,KAAK,aAAa9mI,GAAG6mI,IAAK,UAASG,GAAGhnI,GAAG,GAAG,oBAAoBA,GAAG,UAAUA,GAAG,YAAYA,EAAE,OAAOwrD,GAAG+6E,GAAI,UAASU,GAAGjnI,EAAEC,GAAG,GAAG,UAAUD,EAAE,OAAOwrD,GAAGvrD,EAAG,UAASinI,GAAGlnI,EAAEC,GAAG,GAAG,UAAUD,GAAG,WAAWA,EAAE,OAAOwrD,GAAGvrD,EAAG,CAAgE,IAAIknI,GAAG,oBAAoBtyI,OAAOoP,GAAGpP,OAAOoP,GAA5G,SAAYjE,EAAEC,GAAG,OAAOD,IAAIC,IAAI,IAAID,GAAG,EAAEA,IAAI,EAAEC,IAAID,IAAIA,GAAGC,IAAIA,CAAE,EACvW,SAASmnI,GAAGpnI,EAAEC,GAAG,GAAGknI,GAAGnnI,EAAEC,GAAG,OAAM,EAAG,GAAG,kBAAkBD,GAAG,OAAOA,GAAG,kBAAkBC,GAAG,OAAOA,EAAE,OAAM,EAAG,IAAIlO,EAAE8C,OAAOsC,KAAK6I,GAAGghD,EAAEnsD,OAAOsC,KAAK8I,GAAG,GAAGlO,EAAE5M,SAAS67D,EAAE77D,OAAO,OAAM,EAAG,IAAI67D,EAAE,EAAEA,EAAEjvD,EAAE5M,OAAO67D,IAAI,CAAC,IAAI1nD,EAAEvH,EAAEivD,GAAG,IAAIsuE,EAAGt9H,KAAKiO,EAAE3G,KAAK6tI,GAAGnnI,EAAE1G,GAAG2G,EAAE3G,IAAI,OAAM,CAAG,QAAM,CAAG,UAAS+tI,GAAGrnI,GAAG,KAAKA,GAAGA,EAAEo0H,YAAYp0H,EAAEA,EAAEo0H,WAAW,OAAOp0H,CAAE,CACvU,SAASsnI,GAAGtnI,EAAEC,GAAG,IAAwB+gD,EAApBjvD,EAAEs1I,GAAGrnI,GAAO,IAAJA,EAAE,EAAYjO,GAAG,CAAC,GAAG,IAAIA,EAAE0wE,SAAS,CAA0B,GAAzBzhB,EAAEhhD,EAAEjO,EAAE6iD,YAAYzvD,OAAU6a,GAAGC,GAAG+gD,GAAG/gD,EAAE,MAAM,CAACsJ,KAAKxX,EAAElO,OAAOoc,EAAED,GAAGA,EAAEghD,CAAE,CAAAhhD,EAAE,CAAC,KAAKjO,GAAG,CAAC,GAAGA,EAAE6kB,YAAY,CAAC7kB,EAAEA,EAAE6kB,YAAY,MAAM5W,CAAE,CAAAjO,EAAEA,EAAE2Y,UAAW,CAAA3Y,OAAE,CAAO,CAAAA,EAAEs1I,GAAGt1I,EAAG,CAAC,UAASw1I,GAAGvnI,EAAEC,GAAG,SAAOD,IAAGC,KAAED,IAAIC,KAAKD,GAAG,IAAIA,EAAEyiE,YAAYxiE,GAAG,IAAIA,EAAEwiE,SAAS8kE,GAAGvnI,EAAEC,EAAEyK,YAAY,aAAa1K,EAAEA,EAAEgsC,SAAS/rC,KAAGD,EAAEwnI,4BAAwD,GAA7BxnI,EAAEwnI,wBAAwBvnI,KAAa,CAC/Z,SAASwnI,KAAK,IAAI,IAAIznI,EAAEvD,OAAOwD,EAAE2yH,IAAK3yH,aAAaD,EAAE0nI,mBAAmB,CAAC,IAAI,IAAI31I,EAAE,kBAAkBkO,EAAE0nI,cAAcjrI,SAASV,IAAmB,CAAd,MAAMglD,GAAGjvD,GAAE,CAAG,KAAGA,EAAyB,MAAMkO,EAAE2yH,GAA/B5yH,EAAEC,EAAE0nI,eAAgC1sI,SAAU,QAAOgF,CAAE,UAAS2nI,GAAG5nI,GAAG,IAAIC,EAAED,GAAGA,EAAEi0C,UAAUj0C,EAAEi0C,SAAS1lD,cAAc,OAAO0R,IAAI,UAAUA,IAAI,SAASD,EAAEjR,MAAM,WAAWiR,EAAEjR,MAAM,QAAQiR,EAAEjR,MAAM,QAAQiR,EAAEjR,MAAM,aAAaiR,EAAEjR,OAAO,aAAakR,GAAG,SAASD,EAAE6nI,gBAAiB,CACza,SAAShpC,GAAG7+F,GAAG,IAAIC,EAAEwnI,KAAK11I,EAAEiO,EAAE8nI,YAAY9mF,EAAEhhD,EAAE+nI,eAAe,GAAG9nI,IAAIlO,GAAGA,GAAGA,EAAEshI,eAAekU,GAAGx1I,EAAEshI,cAAchgF,gBAAgBthD,GAAG,CAAC,GAAG,OAAOivD,GAAG4mF,GAAG71I,GAAG,GAAGkO,EAAE+gD,EAAEjzC,WAAc,KAAR/N,EAAEghD,EAAEzmB,OAAiBv6B,EAAEC,GAAG,mBAAmBlO,EAAEA,EAAEq3H,eAAenpH,EAAElO,EAAEs3H,aAAa9xH,KAAKuyB,IAAI9pB,EAAEjO,EAAEtF,MAAMtH,aAAa,IAAG6a,GAAGC,EAAElO,EAAEshI,eAAep4H,WAAWgF,EAAEk+G,aAAa1hH,QAAS6sH,aAAa,CAACtpH,EAAEA,EAAEspH,eAAe,IAAIhwH,EAAEvH,EAAE6iD,YAAYzvD,OAAOuc,EAAEnK,KAAKuyB,IAAIk3B,EAAEjzC,MAAMzU,GAAG0nD,OAAE,IAASA,EAAEzmB,IAAI74B,EAAEnK,KAAKuyB,IAAIk3B,EAAEzmB,IAAIjhC,IAAI0G,EAAEjQ,QAAQ2R,EAAEs/C,IAAI1nD,EAAE0nD,EAAEA,EAAEt/C,EAAEA,EAAEpI,GAAGA,EAAEguI,GAAGv1I,EAAE2P,GAAG,IAAIugD,EAAEqlF,GAAGv1I,EACvfivD,GAAG1nD,GAAG2oD,IAAI,IAAIjiD,EAAEgoI,YAAYhoI,EAAEioI,aAAa3uI,EAAEiQ,MAAMvJ,EAAEkoI,eAAe5uI,EAAEzV,QAAQmc,EAAEmoI,YAAYlmF,EAAE14C,MAAMvJ,EAAEooI,cAAcnmF,EAAEp+D,WAAUoc,EAAEA,EAAEooI,eAAgBC,SAAShvI,EAAEiQ,KAAKjQ,EAAEzV,QAAQmc,EAAEuoI,kBAAkB7mI,EAAEs/C,GAAGhhD,EAAEwoI,SAASvoI,GAAGD,EAAEjQ,OAAOkyD,EAAE14C,KAAK04C,EAAEp+D,UAAUoc,EAAEwoI,OAAOxmF,EAAE14C,KAAK04C,EAAEp+D,QAAQmc,EAAEwoI,SAASvoI,IAAK,CAAK,IAALA,EAAE,GAAOD,EAAEjO,EAAEiO,EAAEA,EAAE0K,YAAY,IAAI1K,EAAEyiE,UAAUxiE,EAAEtO,KAAK,CAACqY,QAAQhK,EAAEmL,KAAKnL,EAAE0oI,WAAWt9H,IAAIpL,EAAE+R,YAAmD,IAAvC,oBAAoBhgB,EAAEqyH,OAAOryH,EAAEqyH,QAAYryH,EAAE,EAAEA,EAAEkO,EAAE9a,OAAO4M,KAAIiO,EAAEC,EAAElO,IAAKiY,QAAQ0+H,WAAW1oI,EAAEmL,KAAKnL,EAAEgK,QAAQ+H,UAAU/R,EAAEoL,GAAI,CAAC,CAC1f,IAAIu9H,GAAGl9G,GAAI,iBAAiBxwB,UAAU,IAAIA,SAAS6qI,aAAa8C,GAAG,KAAKC,GAAG,KAAK9nC,GAAG,KAAK+nC,IAAG,EAC3F,SAASC,GAAG/oI,EAAEC,EAAElO,GAAG,IAAIivD,EAAEjvD,EAAE0K,SAAS1K,EAAEA,EAAEkJ,SAAS,IAAIlJ,EAAE0wE,SAAS1wE,EAAEA,EAAEshI,cAAcyV,IAAI,MAAMF,IAAIA,KAAKhW,EAAG5xE,KAAU,mBAALA,EAAE4nF,KAAyBhB,GAAG5mF,GAAGA,EAAE,CAACjzC,MAAMizC,EAAEooE,eAAe7uF,IAAIymB,EAAEqoE,cAAuFroE,EAAE,CAACinF,YAA3EjnF,GAAGA,EAAEqyE,eAAeryE,EAAEqyE,cAAclV,aAAa1hH,QAAQ6sH,gBAA+B2e,WAAWC,aAAalnF,EAAEknF,aAAaC,UAAUnnF,EAAEmnF,UAAUC,YAAYpnF,EAAEonF,aAAcrnC,IAAIqmC,GAAGrmC,GAAG//C,KAAK+/C,GAAG//C,EAAsB,GAApBA,EAAEslF,GAAGuC,GAAG,aAAgB1jJ,SAAS8a,EAAE,IAAIihI,GAAG,WAAW,SAAS,KAAKjhI,EAAElO,GAAGiO,EAAErO,KAAK,CAACge,MAAM1P,EAAEmP,UAAU4xC,IAAI/gD,EAAEvJ,OAAOkyI,KAAM,CACvf,SAASI,GAAGhpI,EAAEC,GAAG,IAAIlO,EAAE,CAAC,EAAiF,OAA/EA,EAAEiO,EAAEzR,eAAe0R,EAAE1R,cAAcwD,EAAE,SAASiO,GAAG,SAASC,EAAElO,EAAE,MAAMiO,GAAG,MAAMC,EAASlO,CAAE,KAAIk3I,GAAG,CAACC,aAAaF,GAAG,YAAY,gBAAgBG,mBAAmBH,GAAG,YAAY,sBAAsBI,eAAeJ,GAAG,YAAY,kBAAkBK,cAAcL,GAAG,aAAa,kBAAkBM,GAAG,CAAC,EAAEC,GAAG,CAAC,EACpF,SAASC,GAAGxpI,GAAG,GAAGspI,GAAGtpI,GAAG,OAAOspI,GAAGtpI,GAAG,IAAIipI,GAAGjpI,GAAG,OAAOA,EAAE,IAAYjO,EAARkO,EAAEgpI,GAAGjpI,GAAK,IAAIjO,KAAKkO,EAAE,GAAGA,EAAEX,eAAevN,IAAIA,KAAKw3I,GAAG,OAAOD,GAAGtpI,GAAGC,EAAElO,GAAG,OAAOiO,CAAE,CAAhYyrB,IAAK89G,GAAGtuI,SAASa,cAAc,OAAOoV,MAAM,mBAAmBzU,gBAAgBwsI,GAAGC,aAAal6H,iBAAiBi6H,GAAGE,mBAAmBn6H,iBAAiBi6H,GAAGG,eAAep6H,WAAW,oBAAoBvS,eAAewsI,GAAGI,cAAc/J,YAAwJ,IAAImK,GAAGD,GAAG,gBAAgBE,GAAGF,GAAG,sBAAsBG,GAAGH,GAAG,kBAAkBI,GAAGJ,GAAG,iBAAiBK,GAAG,IAAIrlE,IAAIslE,GAAG,smBAAsmB5kJ,MAAM,KAC/lC,SAAS6kJ,GAAG/pI,EAAEC,GAAG4pI,GAAGz8H,IAAIpN,EAAEC,GAAGmvH,EAAGnvH,EAAE,CAACD,GAAI,KAAI,IAAIgqI,GAAG,EAAEA,GAAGF,GAAG3kJ,OAAO6kJ,KAAK,CAAC,IAAIC,GAAGH,GAAGE,IAA2DD,GAApDE,GAAG17I,cAAuD,MAAtC07I,GAAG,GAAGp9I,cAAco9I,GAAGhhJ,MAAM,IAAkB,CAAA8gJ,GAAGN,GAAG,kBAAkBM,GAAGL,GAAG,wBAAwBK,GAAGJ,GAAG,oBAAoBI,GAAG,WAAW,iBAAiBA,GAAG,UAAU,WAAWA,GAAG,WAAW,UAAUA,GAAGH,GAAG,mBAAmBva,EAAG,eAAe,CAAC,WAAW,cAAcA,EAAG,eAAe,CAAC,WAAW,cAAcA,EAAG,iBAAiB,CAAC,aAAa,gBAC7cA,EAAG,iBAAiB,CAAC,aAAa,gBAAgBD,EAAG,WAAW,oEAAoElqI,MAAM,MAAMkqI,EAAG,WAAW,uFAAuFlqI,MAAM,MAAMkqI,EAAG,gBAAgB,CAAC,iBAAiB,WAAW,YAAY,UAAUA,EAAG,mBAAmB,2DAA2DlqI,MAAM,MAAMkqI,EAAG,qBAAqB,6DAA6DlqI,MAAM,MAC/fkqI,EAAG,sBAAsB,8DAA8DlqI,MAAM,MAAM,IAAIglJ,GAAG,6NAA6NhlJ,MAAM,KAAKilJ,GAAG,IAAI1lE,IAAI,0CAA0Cv/E,MAAM,KAAKN,OAAOslJ,KACzZ,SAASE,GAAGpqI,EAAEC,EAAElO,GAAG,IAAIivD,EAAEhhD,EAAEjR,MAAM,gBAAgBiR,EAAE62E,cAAc9kF,EAlDjE,SAAYiO,EAAEC,EAAElO,EAAEivD,EAAE1nD,EAAEoI,EAAEugD,EAAErsD,EAAEmuD,GAA4B,GAAzBy1E,GAAG7lI,MAAM7C,KAAKgJ,WAAcq/H,GAAG,CAAC,IAAGA,GAAgC,MAAMx0I,MAAM6oB,EAAE,MAA1C,IAAIpc,EAAEgoI,GAAGD,IAAG,EAAGC,GAAG,KAA8BC,KAAKA,IAAG,EAAGC,GAAGloI,EAAG,CAAC,CAkDrEi5I,CAAGrpF,EAAE/gD,OAAE,EAAOD,GAAGA,EAAE62E,cAAc,IAAK,CACzG,SAAS2vD,GAAGxmI,EAAEC,GAAGA,EAAE,KAAO,EAAFA,GAAK,IAAI,IAAIlO,EAAE,EAAEA,EAAEiO,EAAE7a,OAAO4M,IAAI,CAAC,IAAIivD,EAAEhhD,EAAEjO,GAAGuH,EAAE0nD,EAAErxC,MAAMqxC,EAAEA,EAAE5xC,UAAUpP,EAAE,CAAC,IAAI0B,OAAE,EAAO,GAAGzB,EAAE,IAAI,IAAIgiD,EAAEjB,EAAE77D,OAAO,EAAE,GAAG88D,EAAEA,IAAI,CAAC,IAAIrsD,EAAEorD,EAAEiB,GAAG8B,EAAEnuD,EAAE/F,SAASuB,EAAEwE,EAAEihF,cAA2B,GAAbjhF,EAAEA,EAAElE,SAAYqyD,IAAIriD,GAAGpI,EAAEknI,uBAAuB,MAAMxgI,EAAEoqI,GAAG9wI,EAAE1D,EAAExE,GAAGsQ,EAAEqiD,CAAE,MAAK,IAAI9B,EAAE,EAAEA,EAAEjB,EAAE77D,OAAO88D,IAAI,CAAoD,GAA5C8B,GAAPnuD,EAAEorD,EAAEiB,IAAOpyD,SAASuB,EAAEwE,EAAEihF,cAAcjhF,EAAEA,EAAElE,SAAYqyD,IAAIriD,GAAGpI,EAAEknI,uBAAuB,MAAMxgI,EAAEoqI,GAAG9wI,EAAE1D,EAAExE,GAAGsQ,EAAEqiD,CAAE,CAAC,CAAC,IAAGs1E,GAAG,MAAMr5H,EAAEs5H,GAAGD,IAAG,EAAGC,GAAG,KAAKt5H,CAAG,CAC7a,SAASupF,GAAEvpF,EAAEC,GAAG,IAAIlO,EAAEkO,EAAEqqI,SAAI,IAASv4I,IAAIA,EAAEkO,EAAEqqI,IAAI,IAAI7lE,KAAK,IAAIzjB,EAAEhhD,EAAE,WAAWjO,EAAEy2D,IAAIxH,KAAKupF,GAAGtqI,EAAED,EAAE,GAAE,GAAIjO,EAAEwd,IAAIyxC,GAAI,UAASwpF,GAAGxqI,EAAEC,EAAElO,GAAG,IAAIivD,EAAE,EAAE/gD,IAAI+gD,GAAG,GAAGupF,GAAGx4I,EAAEiO,EAAEghD,EAAE/gD,EAAG,KAAIwqI,GAAG,kBAAkBlzI,KAAK8jB,SAASvjB,SAAS,IAAI7O,MAAM,GAAG,SAASyhJ,GAAG1qI,GAAG,IAAIA,EAAEyqI,IAAI,CAACzqI,EAAEyqI,KAAI,EAAGvb,EAAG7gI,SAAQ,SAAS4R,GAAG,oBAAoBA,IAAIkqI,GAAG3hF,IAAIvoD,IAAIuqI,GAAGvqI,GAAE,EAAGD,GAAGwqI,GAAGvqI,GAAE,EAAGD,GAAI,IAAE,IAAIC,EAAE,IAAID,EAAEyiE,SAASziE,EAAEA,EAAEqzH,cAAc,OAAOpzH,GAAGA,EAAEwqI,MAAMxqI,EAAEwqI,KAAI,EAAGD,GAAG,mBAAkB,EAAGvqI,GAAI,CAAC,CAClb,SAASsqI,GAAGvqI,EAAEC,EAAElO,EAAEivD,GAAG,OAAO0+E,GAAGz/H,IAAI,KAAK,EAAE,IAAI3G,EAAE+lI,GAAG,MAAM,KAAK,EAAE/lI,EAAEimI,GAAG,MAAM,QAAQjmI,EAAE21B,GAAGl9B,EAAEuH,EAAEhK,KAAK,KAAK2Q,EAAElO,EAAEiO,GAAG1G,OAAE,GAAQ0/H,IAAI,eAAe/4H,GAAG,cAAcA,GAAG,UAAUA,IAAI3G,GAAE,GAAI0nD,OAAE,IAAS1nD,EAAE0G,EAAErR,iBAAiBsR,EAAElO,EAAE,CAAC44I,SAAQ,EAAGr0F,QAAQh9C,IAAI0G,EAAErR,iBAAiBsR,EAAElO,GAAE,QAAI,IAASuH,EAAE0G,EAAErR,iBAAiBsR,EAAElO,EAAE,CAACukD,QAAQh9C,IAAI0G,EAAErR,iBAAiBsR,EAAElO,GAAE,EAAI,CACnV,SAASytI,GAAGx/H,EAAEC,EAAElO,EAAEivD,EAAE1nD,GAAG,IAAIoI,EAAEs/C,EAAE,GAAG,KAAO,EAAF/gD,IAAM,KAAO,EAAFA,IAAM,OAAO+gD,EAAEhhD,EAAE,OAAO,CAAC,GAAG,OAAOghD,EAAE,OAAO,IAAIiB,EAAEjB,EAAEn3C,IAAI,GAAG,IAAIo4C,GAAG,IAAIA,EAAE,CAAC,IAAIrsD,EAAEorD,EAAEu3E,UAAUoG,cAAc,GAAG/oI,IAAI0D,GAAG,IAAI1D,EAAE6sE,UAAU7sE,EAAE8U,aAAapR,EAAE,MAAM,GAAG,IAAI2oD,EAAE,IAAIA,EAAEjB,EAAE/kC,OAAO,OAAOgmC,GAAG,CAAC,IAAI8B,EAAE9B,EAAEp4C,IAAI,IAAG,IAAIk6C,GAAG,IAAIA,MAAKA,EAAE9B,EAAEs2E,UAAUoG,iBAAkBrlI,GAAG,IAAIyqD,EAAE0e,UAAU1e,EAAEr5C,aAAapR,GAAE,OAAO2oD,EAAEA,EAAEhmC,MAAO,MAAK,OAAOrmB,GAAG,CAAS,GAAG,QAAXqsD,EAAEw8E,GAAG7oI,IAAe,OAAe,GAAG,KAAXmuD,EAAE9B,EAAEp4C,MAAc,IAAIk6C,EAAE,CAAC/C,EAAEt/C,EAAEugD,EAAE,SAASjiD,CAAE,CAAApK,EAAEA,EAAE8U,UAAW,CAAC,CAAAs2C,EAAEA,EAAE/kC,MAAO,CAAA68G,IAAG,WAAW,IAAI93E,EAAEt/C,EAAEpI,EAAE0+H,GAAGjmI,GAAGkwD,EAAE,GACpfjiD,EAAE,CAAC,IAAIpK,EAAEi0I,GAAGx8H,IAAIrN,GAAG,QAAG,IAASpK,EAAE,CAAC,IAAImuD,EAAEm9E,GAAGv/H,EAAE3B,EAAE,OAAOA,GAAG,IAAK,WAAW,GAAG,IAAI+/H,GAAGhuI,GAAG,MAAMiO,EAAE,IAAK,UAAU,IAAK,QAAQ+jD,EAAEwgF,GAAG,MAAM,IAAK,UAAU5iI,EAAE,QAAQoiD,EAAE0+E,GAAG,MAAM,IAAK,WAAW9gI,EAAE,OAAOoiD,EAAE0+E,GAAG,MAAM,IAAK,aAAa,IAAK,YAAY1+E,EAAE0+E,GAAG,MAAM,IAAK,QAAQ,GAAG,IAAI1wI,EAAEiwI,OAAO,MAAMhiI,EAAE,IAAK,WAAW,IAAK,WAAW,IAAK,YAAY,IAAK,YAAY,IAAK,UAAU,IAAK,WAAW,IAAK,YAAY,IAAK,cAAc+jD,EAAEw+E,GAAG,MAAM,IAAK,OAAO,IAAK,UAAU,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,OAAOx+E,EAC1iBy+E,GAAG,MAAM,IAAK,cAAc,IAAK,WAAW,IAAK,YAAY,IAAK,aAAaz+E,EAAEghF,GAAG,MAAM,KAAK0E,GAAG,KAAKC,GAAG,KAAKC,GAAG5lF,EAAE2+E,GAAG,MAAM,KAAKkH,GAAG7lF,EAAEohF,GAAG,MAAM,IAAK,SAASphF,EAAEq9E,GAAG,MAAM,IAAK,QAAQr9E,EAAE6hF,GAAG,MAAM,IAAK,OAAO,IAAK,MAAM,IAAK,QAAQ7hF,EAAEg/E,GAAG,MAAM,IAAK,oBAAoB,IAAK,qBAAqB,IAAK,gBAAgB,IAAK,cAAc,IAAK,cAAc,IAAK,aAAa,IAAK,cAAc,IAAK,YAAYh/E,EAAEygF,GAAG,IAAI/iI,EAAE,KAAO,EAAFxB,GAAK8sF,GAAGtrF,GAAG,WAAWzB,EAAE+5B,EAAEt4B,EAAE,OAAO7L,EAAEA,EAAE,UAAU,KAAKA,EAAE6L,EAAE,GAAG,IAAI,IAAQw0D,EAAJ5R,EAAErD,EAAI,OAC/eqD,GAAG,CAAK,IAAIumF,GAAR30E,EAAE5R,GAAUk0E,UAAsF,GAA5E,IAAItiE,EAAEpsD,KAAK,OAAO+gI,IAAI30E,EAAE20E,EAAE,OAAO7wG,IAAc,OAAV6wG,EAAE7R,GAAG10E,EAAEtqB,KAAYt4B,EAAE9P,KAAKk5I,GAAGxmF,EAAEumF,EAAE30E,MAAS82B,EAAE,MAAM1oC,EAAEA,EAAEpoC,MAAO,GAAExa,EAAEtc,SAASyQ,EAAE,IAAImuD,EAAEnuD,EAAE+L,EAAE,KAAK5P,EAAEuH,GAAG2oD,EAAEtwD,KAAK,CAACge,MAAM/Z,EAAEwZ,UAAU3N,IAAK,CAAC,IAAG,KAAO,EAAFxB,GAAK,CAA4E,GAAnC8jD,EAAE,aAAa/jD,GAAG,eAAeA,KAAtEpK,EAAE,cAAcoK,GAAG,gBAAgBA,IAA2CjO,IAAIgmI,MAAKp2H,EAAE5P,EAAEmwI,eAAenwI,EAAEowI,eAAe1D,GAAG98H,KAAIA,EAAEmpI,OAAgB/mF,GAAGnuD,KAAGA,EAAE0D,EAAEmD,SAASnD,EAAEA,GAAG1D,EAAE0D,EAAE+5H,eAAez9H,EAAEuoH,aAAavoH,EAAEm1I,aAAatuI,OAAUsnD,GAAqCA,EAAE/C,EAAiB,QAAfr/C,GAAnCA,EAAE5P,EAAEmwI,eAAenwI,EAAEqwI,WAAkB3D,GAAG98H,GAAG,QAC9dA,KAARorF,EAAE0sC,GAAG93H,KAAU,IAAIA,EAAEkI,KAAK,IAAIlI,EAAEkI,OAAKlI,EAAE,QAAUoiD,EAAE,KAAKpiD,EAAEq/C,GAAK+C,IAAIpiD,GAAE,CAAgU,GAA/TF,EAAE8gI,GAAGqI,EAAE,eAAe7wG,EAAE,eAAesqB,EAAE,QAAW,eAAerkD,GAAG,gBAAgBA,IAAEyB,EAAE+iI,GAAGoG,EAAE,iBAAiB7wG,EAAE,iBAAiBsqB,EAAE,WAAU0oC,EAAE,MAAMhpC,EAAEnuD,EAAE6hG,GAAG1zC,GAAGkS,EAAE,MAAMt0D,EAAE/L,EAAE6hG,GAAG91F,IAAG/L,EAAE,IAAI6L,EAAEmpI,EAAEvmF,EAAE,QAAQN,EAAEhyD,EAAEuH,IAAK5C,OAAOq2F,EAAEn3F,EAAEssI,cAAcjsE,EAAE20E,EAAE,KAAKnM,GAAGnlI,KAAK0nD,KAAIv/C,EAAE,IAAIA,EAAEs4B,EAAEsqB,EAAE,QAAQ1iD,EAAE5P,EAAEuH,IAAK5C,OAAOu/D,EAAEx0D,EAAEygI,cAAcn1C,EAAE69C,EAAEnpI,GAAGsrF,EAAE69C,EAAK7mF,GAAGpiD,EAAE1B,EAAE,CAAa,IAAR85B,EAAEp4B,EAAE0iD,EAAE,EAAM4R,EAAhBx0D,EAAEsiD,EAAkBkS,EAAEA,EAAE+0E,GAAG/0E,GAAG5R,IAAQ,IAAJ4R,EAAE,EAAM20E,EAAE7wG,EAAE6wG,EAAEA,EAAEI,GAAGJ,GAAG30E,IAAI,KAAK,EAAE5R,EAAE4R,GAAGx0D,EAAEupI,GAAGvpI,GAAG4iD,IAAI,KAAK,EAAE4R,EAAE5R,GAAGtqB,EACpfixG,GAAGjxG,GAAGk8B,IAAI,KAAK5R,KAAK,CAAC,GAAG5iD,IAAIs4B,GAAG,OAAOA,GAAGt4B,IAAIs4B,EAAE2/F,UAAU,MAAMz5H,EAAEwB,EAAEupI,GAAGvpI,GAAGs4B,EAAEixG,GAAGjxG,EAAG,CAAAt4B,EAAE,IAAK,MAAKA,EAAE,KAAK,OAAOsiD,GAAGknF,GAAGhpF,EAAErsD,EAAEmuD,EAAEtiD,GAAE,GAAI,OAAOE,GAAG,OAAOorF,GAAGk+C,GAAGhpF,EAAE8qC,EAAEprF,EAAEF,GAAE,EAAI,CAA6D,GAAG,YAA1CsiD,GAAjBnuD,EAAEorD,EAAEy2C,GAAGz2C,GAAGvkD,QAAWw3C,UAAUr+C,EAAEq+C,SAAS1lD,gBAA+B,UAAUw1D,GAAG,SAASnuD,EAAE7G,KAAK,IAAIm8I,EAAGzE,QAAQ,GAAGpmC,GAAGzqG,GAAG,GAAG8wI,GAAGwE,EAAGhE,OAAO,CAACgE,EAAGlE,GAAG,IAAImE,EAAGpE,EAAG,MAAKhjF,EAAEnuD,EAAEq+C,WAAW,UAAU8P,EAAEx1D,gBAAgB,aAAaqH,EAAE7G,MAAM,UAAU6G,EAAE7G,QAAQm8I,EAAGjE,IACrV,OAD4ViE,IAAKA,EAAGA,EAAGlrI,EAAEghD,IAAKqlF,GAAGpkF,EAAEipF,EAAGn5I,EAAEuH,IAAW6xI,GAAIA,EAAGnrI,EAAEpK,EAAEorD,GAAG,aAAahhD,IAAImrI,EAAGv1I,EAAEm9H,gBAClfoY,EAAGhY,YAAY,WAAWv9H,EAAE7G,MAAMsT,GAAGzM,EAAE,SAASA,EAAEnJ,QAAO0+I,EAAGnqF,EAAEy2C,GAAGz2C,GAAGvkD,OAAcuD,GAAG,IAAK,WAAaqgG,GAAG8qC,IAAK,SAASA,EAAGtD,mBAAgBe,GAAGuC,EAAGtC,GAAG7nF,EAAE+/C,GAAG,MAAK,MAAM,IAAK,WAAWA,GAAG8nC,GAAGD,GAAG,KAAK,MAAM,IAAK,YAAYE,IAAG,EAAG,MAAM,IAAK,cAAc,IAAK,UAAU,IAAK,UAAUA,IAAG,EAAGC,GAAG9mF,EAAElwD,EAAEuH,GAAG,MAAM,IAAK,kBAAkB,GAAGqvI,GAAG,MAAM,IAAK,UAAU,IAAK,QAAQI,GAAG9mF,EAAElwD,EAAEuH,GAAG,IAAI8xI,EAAG,GAAGj0E,GAAGl3D,EAAE,CAAC,OAAOD,GAAG,IAAK,mBAAmB,IAAIqrI,EAAG,qBAAqB,MAAMprI,EAAE,IAAK,iBAAiBorI,EAAG,mBACpe,MAAMprI,EAAE,IAAK,oBAAoBorI,EAAG,sBAAsB,MAAMprI,EAAEorI,OAAG,CAAO,MAAKpF,GAAGD,GAAGhmI,EAAEjO,KAAKs5I,EAAG,oBAAoB,YAAYrrI,GAAG,MAAMjO,EAAE+5C,UAAUu/F,EAAG,sBAAsBA,IAAKhwC,IAAI,OAAOtpG,EAAEm7G,SAAS+4B,IAAI,uBAAuBoF,EAAG,qBAAqBA,GAAIpF,KAAKmF,EAAGtL,OAAYF,GAAG,UAARD,GAAGrmI,GAAkBqmI,GAAGlzI,MAAMkzI,GAAG/qF,YAAYqxF,IAAG,IAAiB,GAAZkF,EAAG7E,GAAGtlF,EAAEqqF,IAASlmJ,SAASkmJ,EAAG,IAAIrI,GAAGqI,EAAGrrI,EAAE,KAAKjO,EAAEuH,GAAG2oD,EAAEtwD,KAAK,CAACge,MAAM07H,EAAGj8H,UAAU+7H,IAAKC,EAAGC,EAAG1gJ,KAAKygJ,EAAa,QAATA,EAAG1uC,GAAG3qG,MAAes5I,EAAG1gJ,KAAKygJ,MAAUA,EAAGn0C,GA5BhM,SAAYj3F,EAAEC,GAAG,OAAOD,GAAG,IAAK,iBAAiB,OAAO08F,GAAGz8F,GAAG,IAAK,WAAW,OAAG,KAAKA,EAAEqkI,MAAa,MAAKyB,IAAG,EAAU18E,IAAG,IAAK,YAAY,OAAOrpD,EAAEC,EAAEtV,QAAS0+D,IAAI08E,GAAG,KAAK/lI,EAAE,QAAQ,OAAO,KAAM,CA4BC8/F,CAAG9/F,EAAEjO,GA3Bzd,SAAYiO,EAAEC,GAAG,GAAGgmI,GAAG,MAAM,mBAAmBjmI,IAAIm3D,IAAI6uE,GAAGhmI,EAAEC,IAAID,EAAE8/H,KAAKD,GAAGD,GAAGD,GAAG,KAAKsG,IAAG,EAAGjmI,GAAG,KAAK,OAAOA,GAAG,IAAK,QAAgQ,QAAQ,OAAO,KAA3P,IAAK,WAAW,KAAKC,EAAEyhI,SAASzhI,EAAE2hI,QAAQ3hI,EAAE4hI,UAAU5hI,EAAEyhI,SAASzhI,EAAE2hI,OAAO,CAAC,GAAG3hI,EAAE6kD,MAAM,EAAE7kD,EAAE6kD,KAAK3/D,OAAO,OAAO8a,EAAE6kD,KAAK,GAAG7kD,EAAEqkI,MAAM,OAAOxjI,OAAOmrD,aAAahsD,EAAEqkI,MAAO,QAAO,KAAK,IAAK,iBAAiB,OAAOjpC,IAAI,OAAOp7F,EAAEitG,OAAO,KAAKjtG,EAAEtV,KAA0B,CA2BoF2gJ,CAAGtrI,EAAEjO,MACje,GADoeivD,EAAEslF,GAAGtlF,EAAE,kBACve77D,SAASmU,EAAE,IAAI0pI,GAAG,gBAAgB,cAAc,KAAKjxI,EAAEuH,GAAG2oD,EAAEtwD,KAAK,CAACge,MAAMrW,EAAE8V,UAAU4xC,IAAI1nD,EAAE3O,KAAKygJ,GAAI,CAAA5E,GAAGvkF,EAAEhiD,EAAG,GAAE,UAAS4qI,GAAG7qI,EAAEC,EAAElO,GAAG,MAAM,CAAClC,SAASmQ,EAAEtO,SAASuO,EAAE42E,cAAc9kF,EAAG,UAASu0I,GAAGtmI,EAAEC,GAAG,IAAI,IAAIlO,EAAEkO,EAAE,UAAU+gD,EAAE,GAAG,OAAOhhD,GAAG,CAAC,IAAI1G,EAAE0G,EAAE0B,EAAEpI,EAAEi/H,UAAU,IAAIj/H,EAAEuQ,KAAK,OAAOnI,IAAIpI,EAAEoI,EAAY,OAAVA,EAAEq3H,GAAG/4H,EAAEjO,KAAYivD,EAAE3tD,QAAQw3I,GAAG7qI,EAAE0B,EAAEpI,IAAc,OAAVoI,EAAEq3H,GAAG/4H,EAAEC,KAAY+gD,EAAErvD,KAAKk5I,GAAG7qI,EAAE0B,EAAEpI,KAAK0G,EAAEA,EAAEic,MAAO,QAAO+kC,CAAE,UAASgqF,GAAGhrI,GAAG,GAAG,OAAOA,EAAE,OAAO,KAAK,GAAGA,EAAEA,EAAEic,aAAajc,GAAG,IAAIA,EAAE6J,KAAK,OAAO7J,GAAI,IAAK,CACpd,SAASirI,GAAGjrI,EAAEC,EAAElO,EAAEivD,EAAE1nD,GAAG,IAAI,IAAIoI,EAAEzB,EAAEmgI,WAAWn+E,EAAE,GAAG,OAAOlwD,GAAGA,IAAIivD,GAAG,CAAC,IAAIprD,EAAE7D,EAAEgyD,EAAEnuD,EAAE8jI,UAAUtoI,EAAEwE,EAAE2iI,UAAU,GAAG,OAAOx0E,GAAGA,IAAI/C,EAAE,MAAM,IAAIprD,EAAEiU,KAAK,OAAOzY,IAAIwE,EAAExE,EAAEkI,EAAa,OAAVyqD,EAAEg1E,GAAGhnI,EAAE2P,KAAYugD,EAAE5uD,QAAQw3I,GAAG94I,EAAEgyD,EAAEnuD,IAAK0D,GAAc,OAAVyqD,EAAEg1E,GAAGhnI,EAAE2P,KAAYugD,EAAEtwD,KAAKk5I,GAAG94I,EAAEgyD,EAAEnuD,KAAM7D,EAAEA,EAAEkqB,MAAO,KAAIgmC,EAAE98D,QAAQ6a,EAAErO,KAAK,CAACge,MAAM1P,EAAEmP,UAAU6yC,GAAI,KAAIspF,GAAG,SAASC,GAAG,iBAAiB,SAASC,GAAGzrI,GAAG,OAAO,kBAAkBA,EAAEA,EAAE,GAAGA,GAAGhG,QAAQuxI,GAAG,MAAMvxI,QAAQwxI,GAAG,GAAI,UAASE,GAAG1rI,EAAEC,EAAElO,GAAW,GAARkO,EAAEwrI,GAAGxrI,GAAMwrI,GAAGzrI,KAAKC,GAAGlO,EAAE,MAAMpN,MAAM6oB,EAAE,KAAO,UAASm+H,KAAM,CAC/e,IAAIC,GAAG,KAAKC,GAAG,KAAK,SAASC,GAAG9rI,EAAEC,GAAG,MAAM,aAAaD,GAAG,aAAaA,GAAG,kBAAkBC,EAAEoK,UAAU,kBAAkBpK,EAAEoK,UAAU,kBAAkBpK,EAAE0zH,yBAAyB,OAAO1zH,EAAE0zH,yBAAyB,MAAM1zH,EAAE0zH,wBAAwBoY,MAAO,CAC7P,IAAIC,GAAG,oBAAoB3+I,WAAWA,gBAAW,EAAO4+I,GAAG,oBAAoB/1H,aAAaA,kBAAa,EAAOg2H,GAAG,oBAAoB5hJ,QAAQA,aAAQ,EAAO6hJ,GAAG,oBAAoBC,eAAeA,eAAe,qBAAqBF,GAAG,SAASlsI,GAAG,OAAOksI,GAAG3hJ,QAAQ,MAAM0G,KAAK+O,GAAGsG,MAAM+lI,GAAI,EAACL,GAAG,SAASK,GAAGrsI,GAAG3S,YAAW,WAAW,MAAM2S,CAAG,GAAE,CACrV,SAASssI,GAAGtsI,EAAEC,GAAG,IAAIlO,EAAEkO,EAAE+gD,EAAE,EAAE,EAAE,CAAC,IAAI1nD,EAAEvH,EAAE6kB,YAA6B,GAAjB5W,EAAE2K,YAAY5Y,GAAMuH,GAAG,IAAIA,EAAEmpE,SAAS,GAAY,QAAT1wE,EAAEuH,EAAE3O,MAAc,CAAC,GAAG,IAAIq2D,EAA0B,OAAvBhhD,EAAE2K,YAAYrR,QAAG2lI,GAAGh/H,GAAU+gD,GAAI,KAAI,MAAMjvD,GAAG,OAAOA,GAAG,OAAOA,GAAGivD,IAAIjvD,EAAEuH,CAAE,OAAMvH,GAAGktI,GAAGh/H,EAAG,UAASssI,GAAGvsI,GAAG,KAAK,MAAMA,EAAEA,EAAEA,EAAE4W,YAAY,CAAC,IAAI3W,EAAED,EAAEyiE,SAAS,GAAG,IAAIxiE,GAAG,IAAIA,EAAE,MAAM,GAAG,IAAIA,EAAE,CAAU,GAAG,OAAZA,EAAED,EAAErV,OAAiB,OAAOsV,GAAG,OAAOA,EAAE,MAAM,GAAG,OAAOA,EAAE,OAAO,IAAK,CAAC,QAAOD,CAAE,CAClY,SAASwsI,GAAGxsI,GAAGA,EAAEA,EAAEysI,gBAAgB,IAAI,IAAIxsI,EAAE,EAAED,GAAG,CAAC,GAAG,IAAIA,EAAEyiE,SAAS,CAAC,IAAI1wE,EAAEiO,EAAErV,KAAK,GAAG,MAAMoH,GAAG,OAAOA,GAAG,OAAOA,EAAE,CAAC,GAAG,IAAIkO,EAAE,OAAOD,EAAEC,GAAI,KAAI,OAAOlO,GAAGkO,GAAI,CAAAD,EAAEA,EAAEysI,eAAgB,QAAO,IAAK,KAAIC,GAAGn1I,KAAK8jB,SAASvjB,SAAS,IAAI7O,MAAM,GAAG0jJ,GAAG,gBAAgBD,GAAGE,GAAG,gBAAgBF,GAAG5B,GAAG,oBAAoB4B,GAAGpC,GAAG,iBAAiBoC,GAAGG,GAAG,oBAAoBH,GAAGI,GAAG,kBAAkBJ,GAClX,SAASjO,GAAGz+H,GAAG,IAAIC,EAAED,EAAE2sI,IAAI,GAAG1sI,EAAE,OAAOA,EAAE,IAAI,IAAIlO,EAAEiO,EAAE0K,WAAW3Y,GAAG,CAAC,GAAGkO,EAAElO,EAAE+4I,KAAK/4I,EAAE46I,IAAI,CAAe,GAAd56I,EAAEkO,EAAEy5H,UAAa,OAAOz5H,EAAEmK,OAAO,OAAOrY,GAAG,OAAOA,EAAEqY,MAAM,IAAIpK,EAAEwsI,GAAGxsI,GAAG,OAAOA,GAAG,CAAC,GAAGjO,EAAEiO,EAAE2sI,IAAI,OAAO56I,EAAEiO,EAAEwsI,GAAGxsI,EAAG,QAAOC,CAAE,CAAIlO,GAAJiO,EAAEjO,GAAM2Y,UAAW,QAAO,IAAK,UAAS4tH,GAAGt4H,GAAkB,QAAfA,EAAEA,EAAE2sI,KAAK3sI,EAAE8qI,MAAc,IAAI9qI,EAAE6J,KAAK,IAAI7J,EAAE6J,KAAK,KAAK7J,EAAE6J,KAAK,IAAI7J,EAAE6J,IAAI,KAAK7J,CAAE,UAASy3F,GAAGz3F,GAAG,GAAG,IAAIA,EAAE6J,KAAK,IAAI7J,EAAE6J,IAAI,OAAO7J,EAAEu4H,UAAU,MAAM5zI,MAAM6oB,EAAE,IAAM,UAASgrH,GAAGx4H,GAAG,OAAOA,EAAE4sI,KAAK,IAAK,KAAIG,GAAG,GAAGC,IAAI,EAAE,SAASC,GAAGjtI,GAAG,MAAM,CAACkgB,QAAQlgB,EAAG,CACxe,SAAS88E,GAAE98E,GAAG,EAAEgtI,KAAKhtI,EAAEkgB,QAAQ6sH,GAAGC,IAAID,GAAGC,IAAI,KAAKA,KAAM,UAASE,GAAEltI,EAAEC,GAAG+sI,KAAKD,GAAGC,IAAIhtI,EAAEkgB,QAAQlgB,EAAEkgB,QAAQjgB,CAAE,KAAIktI,GAAG,CAAC,EAAEp2C,GAAEk2C,GAAGE,IAAIC,GAAGH,IAAG,GAAII,GAAGF,GAAG,SAASG,GAAGttI,EAAEC,GAAG,IAAIlO,EAAEiO,EAAEjR,KAAKk0G,aAAa,IAAIlxG,EAAE,OAAOo7I,GAAG,IAAInsF,EAAEhhD,EAAEu4H,UAAU,GAAGv3E,GAAGA,EAAEusF,8CAA8CttI,EAAE,OAAO+gD,EAAEwsF,0CAA0C,IAAS9rI,EAALpI,EAAE,CAAC,EAAI,IAAIoI,KAAK3P,EAAEuH,EAAEoI,GAAGzB,EAAEyB,GAAoH,OAAjHs/C,KAAIhhD,EAAEA,EAAEu4H,WAAYgV,4CAA4CttI,EAAED,EAAEwtI,0CAA0Cl0I,GAAUA,CAAE,CAC/d,SAASm0I,GAAGztI,GAAyB,OAAO,QAA7BA,EAAEA,EAAE+iG,yBAAmC,IAAS/iG,CAAE,UAAS0tI,KAAK5wD,GAAEswD,IAAItwD,GAAEia,GAAG,UAAS42C,GAAG3tI,EAAEC,EAAElO,GAAG,GAAGglG,GAAE72E,UAAUitH,GAAG,MAAMxoJ,MAAM6oB,EAAE,MAAM0/H,GAAEn2C,GAAE92F,GAAGitI,GAAEE,GAAGr7I,EAAG,UAAS67I,GAAG5tI,EAAEC,EAAElO,GAAG,IAAIivD,EAAEhhD,EAAEu4H,UAAgC,GAAtBt4H,EAAEA,EAAE8iG,kBAAqB,oBAAoB/hD,EAAE6sF,gBAAgB,OAAO97I,EAAwB,IAAI,IAAIuH,KAA9B0nD,EAAEA,EAAE6sF,kBAAiC,KAAKv0I,KAAK2G,GAAG,MAAMtb,MAAM6oB,EAAE,IAAI0kH,EAAGlyH,IAAI,UAAU1G,IAAI,OAAO0rG,EAAE,CAAC,EAAEjzG,EAAEivD,EAAG,CACzX,SAAS8sF,GAAG9tI,GAA2G,OAAxGA,GAAGA,EAAEA,EAAEu4H,YAAYv4H,EAAE+tI,2CAA2CZ,GAAGE,GAAGt2C,GAAE72E,QAAQgtH,GAAEn2C,GAAE/2F,GAAGktI,GAAEE,GAAGA,GAAGltH,UAAe,CAAG,UAAS8tH,GAAGhuI,EAAEC,EAAElO,GAAG,IAAIivD,EAAEhhD,EAAEu4H,UAAU,IAAIv3E,EAAE,MAAMr8D,MAAM6oB,EAAE,MAAMzb,GAAGiO,EAAE4tI,GAAG5tI,EAAEC,EAAEotI,IAAIrsF,EAAE+sF,0CAA0C/tI,EAAE88E,GAAEswD,IAAItwD,GAAEia,IAAGm2C,GAAEn2C,GAAE/2F,IAAI88E,GAAEswD,IAAIF,GAAEE,GAAGr7I,EAAG,KAAIk8I,GAAG,KAAKC,IAAG,EAAGC,IAAG,EAAG,SAASC,GAAGpuI,GAAG,OAAOiuI,GAAGA,GAAG,CAACjuI,GAAGiuI,GAAGt8I,KAAKqO,EAAG,CACjW,SAASquI,KAAK,IAAIF,IAAI,OAAOF,GAAG,CAACE,IAAG,EAAG,IAAInuI,EAAE,EAAEC,EAAE+8H,GAAE,IAAI,IAAIjrI,EAAEk8I,GAAG,IAAIjR,GAAE,EAAEh9H,EAAEjO,EAAE5M,OAAO6a,IAAI,CAAC,IAAIghD,EAAEjvD,EAAEiO,GAAG,GAAGghD,EAAEA,GAAE,SAAU,OAAOA,EAAG,CAAAitF,GAAG,KAAKC,IAAG,CAA+E,CAA5E,MAAM50I,GAAG,MAAM,OAAO20I,KAAKA,GAAGA,GAAGhlJ,MAAM+W,EAAE,IAAIm6H,GAAGY,GAAGsT,IAAI/0I,CAAG,CAAnJ,QAA2J0jI,GAAE/8H,EAAEkuI,IAAG,CAAG,CAAC,QAAO,IAAK,KAAIG,GAAG,GAAGC,GAAG,EAAEC,GAAG,KAAKC,GAAG,EAAEC,GAAG,GAAGC,GAAG,EAAEC,GAAG,KAAKC,GAAG,EAAEC,GAAG,GAAG,SAASC,GAAG/uI,EAAEC,GAAGquI,GAAGC,MAAME,GAAGH,GAAGC,MAAMC,GAAGA,GAAGxuI,EAAEyuI,GAAGxuI,CAAE,CAClV,SAAS+uI,GAAGhvI,EAAEC,EAAElO,GAAG28I,GAAGC,MAAME,GAAGH,GAAGC,MAAMG,GAAGJ,GAAGC,MAAMC,GAAGA,GAAG5uI,EAAE,IAAIghD,EAAE6tF,GAAG7uI,EAAE8uI,GAAG,IAAIx1I,EAAE,GAAGqiI,GAAG36E,GAAG,EAAEA,KAAK,GAAG1nD,GAAGvH,GAAG,EAAE,IAAI2P,EAAE,GAAGi6H,GAAG17H,GAAG3G,EAAE,GAAG,GAAGoI,EAAE,CAAC,IAAIugD,EAAE3oD,EAAEA,EAAE,EAAEoI,GAAGs/C,GAAG,GAAGiB,GAAG,GAAGnqD,SAAS,IAAIkpD,IAAIiB,EAAE3oD,GAAG2oD,EAAE4sF,GAAG,GAAG,GAAGlT,GAAG17H,GAAG3G,EAAEvH,GAAGuH,EAAE0nD,EAAE8tF,GAAGptI,EAAE1B,CAAE,MAAK6uI,GAAG,GAAGntI,EAAE3P,GAAGuH,EAAE0nD,EAAE8tF,GAAG9uI,CAAE,UAASivI,GAAGjvI,GAAG,OAAOA,EAAEic,SAAS8yH,GAAG/uI,EAAE,GAAGgvI,GAAGhvI,EAAE,EAAE,GAAI,UAASkvI,GAAGlvI,GAAG,KAAKA,IAAIwuI,IAAIA,GAAGF,KAAKC,IAAID,GAAGC,IAAI,KAAKE,GAAGH,KAAKC,IAAID,GAAGC,IAAI,KAAK,KAAKvuI,IAAI4uI,IAAIA,GAAGF,KAAKC,IAAID,GAAGC,IAAI,KAAKG,GAAGJ,KAAKC,IAAID,GAAGC,IAAI,KAAKE,GAAGH,KAAKC,IAAID,GAAGC,IAAI,IAAK,KAAIQ,GAAG,KAAKC,GAAG,KAAKC,IAAE,EAAGC,GAAG,KACje,SAASC,GAAGvvI,EAAEC,GAAG,IAAIlO,EAAEy9I,GAAG,EAAE,KAAK,KAAK,GAAGz9I,EAAE25G,YAAY,UAAU35G,EAAEwmI,UAAUt4H,EAAElO,EAAEkqB,OAAOjc,EAAgB,QAAdC,EAAED,EAAEyvI,YAAoBzvI,EAAEyvI,UAAU,CAAC19I,GAAGiO,EAAE8B,OAAO,IAAI7B,EAAEtO,KAAKI,EAAG,CACzJ,SAAS29I,GAAG1vI,EAAEC,GAAG,OAAOD,EAAE6J,KAAK,KAAK,EAAE,IAAI9X,EAAEiO,EAAEjR,KAAyE,OAAO,QAA3EkR,EAAE,IAAIA,EAAEwiE,UAAU1wE,EAAExD,gBAAgB0R,EAAEg0C,SAAS1lD,cAAc,KAAK0R,KAAmBD,EAAEu4H,UAAUt4H,EAAEkvI,GAAGnvI,EAAEovI,GAAG7C,GAAGtsI,EAAEm0H,aAAY,GAAO,KAAK,EAAE,OAAoD,QAA7Cn0H,EAAE,KAAKD,EAAE2vI,cAAc,IAAI1vI,EAAEwiE,SAAS,KAAKxiE,KAAYD,EAAEu4H,UAAUt4H,EAAEkvI,GAAGnvI,EAAEovI,GAAG,MAAK,GAAO,KAAK,GAAG,OAA+B,QAAxBnvI,EAAE,IAAIA,EAAEwiE,SAAS,KAAKxiE,KAAYlO,EAAE,OAAO68I,GAAG,CAACl5I,GAAGm5I,GAAGjlG,SAASklG,IAAI,KAAK9uI,EAAE45H,cAAc,CAACC,WAAW55H,EAAE2vI,YAAY79I,EAAE89I,UAAU,aAAY99I,EAAEy9I,GAAG,GAAG,KAAK,KAAK,IAAKjX,UAAUt4H,EAAElO,EAAEkqB,OAAOjc,EAAEA,EAAEoK,MAAMrY,EAAEo9I,GAAGnvI,EAAEovI,GAClf,MAAK,GAAO,QAAQ,OAAM,EAAI,UAASU,GAAG9vI,GAAG,OAAO,KAAY,EAAPA,EAAEkhD,OAAS,KAAa,IAARlhD,EAAE8B,MAAW,UAASiuI,GAAG/vI,GAAG,GAAGqvI,GAAE,CAAC,IAAIpvI,EAAEmvI,GAAG,GAAGnvI,EAAE,CAAC,IAAIlO,EAAEkO,EAAE,IAAIyvI,GAAG1vI,EAAEC,GAAG,CAAC,GAAG6vI,GAAG9vI,GAAG,MAAMrb,MAAM6oB,EAAE,MAAMvN,EAAEssI,GAAGx6I,EAAE6kB,aAAa,IAAIoqC,EAAEmuF,GAAGlvI,GAAGyvI,GAAG1vI,EAAEC,GAAGsvI,GAAGvuF,EAAEjvD,IAAIiO,EAAE8B,OAAe,KAAT9B,EAAE8B,MAAY,EAAEutI,IAAE,EAAGF,GAAGnvI,EAAG,CAAC,KAAI,CAAC,GAAG8vI,GAAG9vI,GAAG,MAAMrb,MAAM6oB,EAAE,MAAMxN,EAAE8B,OAAe,KAAT9B,EAAE8B,MAAY,EAAEutI,IAAE,EAAGF,GAAGnvI,CAAE,CAAC,CAAC,UAASgwI,GAAGhwI,GAAG,IAAIA,EAAEA,EAAEic,OAAO,OAAOjc,GAAG,IAAIA,EAAE6J,KAAK,IAAI7J,EAAE6J,KAAK,KAAK7J,EAAE6J,KAAK7J,EAAEA,EAAEic,OAAOkzH,GAAGnvI,CAAE,CACja,SAASiwI,GAAGjwI,GAAG,GAAGA,IAAImvI,GAAG,OAAM,EAAG,IAAIE,GAAE,OAAOW,GAAGhwI,GAAGqvI,IAAE,GAAG,EAAG,IAAIpvI,EAAkG,IAA/FA,EAAE,IAAID,EAAE6J,QAAQ5J,EAAE,IAAID,EAAE6J,OAAgB5J,EAAE,UAAXA,EAAED,EAAEjR,OAAmB,SAASkR,IAAI6rI,GAAG9rI,EAAEjR,KAAKiR,EAAEkwI,gBAAmBjwI,IAAIA,EAAEmvI,IAAI,CAAC,GAAGU,GAAG9vI,GAAG,MAAMmwI,KAAKxrJ,MAAM6oB,EAAE,MAAM,KAAKvN,GAAGsvI,GAAGvvI,EAAEC,GAAGA,EAAEssI,GAAGtsI,EAAE2W,YAAa,CAAM,GAANo5H,GAAGhwI,GAAM,KAAKA,EAAE6J,IAAI,CAAgD,KAA7B7J,EAAE,QAApBA,EAAEA,EAAE45H,eAAyB55H,EAAE65H,WAAW,MAAW,MAAMl1I,MAAM6oB,EAAE,MAAMxN,EAAE,CAAiB,IAAhBA,EAAEA,EAAE4W,YAAgB3W,EAAE,EAAED,GAAG,CAAC,GAAG,IAAIA,EAAEyiE,SAAS,CAAC,IAAI1wE,EAAEiO,EAAErV,KAAK,GAAG,OAAOoH,EAAE,CAAC,GAAG,IAAIkO,EAAE,CAACmvI,GAAG7C,GAAGvsI,EAAE4W,aAAa,MAAM5W,CAAE,CAAAC,GAAI,KAAI,MAAMlO,GAAG,OAAOA,GAAG,OAAOA,GAAGkO,GAAI,CAAAD,EAAEA,EAAE4W,WAAY,CAAAw4H,GACjgB,IAAK,CAAC,MAAKA,GAAGD,GAAG5C,GAAGvsI,EAAEu4H,UAAU3hH,aAAa,KAAK,OAAM,CAAG,UAASu5H,KAAK,IAAI,IAAInwI,EAAEovI,GAAGpvI,GAAGA,EAAEusI,GAAGvsI,EAAE4W,YAAa,UAASw5H,KAAKhB,GAAGD,GAAG,KAAKE,IAAE,CAAG,UAASgB,GAAGrwI,GAAG,OAAOsvI,GAAGA,GAAG,CAACtvI,GAAGsvI,GAAG39I,KAAKqO,EAAG,KAAIswI,GAAG/f,EAAG4O,wBAAwB,SAASoR,GAAGvwI,EAAEC,GAAG,GAAGD,GAAGA,EAAEkjG,aAAa,CAA4B,IAAI,IAAInxG,KAAnCkO,EAAE+kG,EAAE,CAAC,EAAE/kG,GAAGD,EAAEA,EAAEkjG,kBAA4B,IAASjjG,EAAElO,KAAKkO,EAAElO,GAAGiO,EAAEjO,IAAI,OAAOkO,CAAE,QAAOA,CAAE,KAAIuwI,GAAGvD,GAAG,MAAMwD,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAK,SAASC,KAAKD,GAAGD,GAAGD,GAAG,IAAK,UAASI,GAAG7wI,GAAG,IAAIC,EAAEuwI,GAAGtwH,QAAQ48D,GAAE0zD,IAAIxwI,EAAE8wI,cAAc7wI,CAAE,CACld,SAAS8wI,GAAG/wI,EAAEC,EAAElO,GAAG,KAAK,OAAOiO,GAAG,CAAC,IAAIghD,EAAEhhD,EAAE05H,UAA+H,IAApH15H,EAAEgxI,WAAW/wI,KAAKA,GAAGD,EAAEgxI,YAAY/wI,EAAE,OAAO+gD,IAAIA,EAAEgwF,YAAY/wI,IAAI,OAAO+gD,IAAIA,EAAEgwF,WAAW/wI,KAAKA,IAAI+gD,EAAEgwF,YAAY/wI,GAAMD,IAAIjO,EAAE,MAAMiO,EAAEA,EAAEic,MAAO,CAAC,UAASg1H,GAAGjxI,EAAEC,GAAGwwI,GAAGzwI,EAAE2wI,GAAGD,GAAG,KAAsB,QAAjB1wI,EAAEA,EAAEy5D,eAAuB,OAAOz5D,EAAEkxI,eAAe,KAAKlxI,EAAEmxI,MAAMlxI,KAAKmxI,IAAG,GAAIpxI,EAAEkxI,aAAa,KAAM,CACvU,SAASG,GAAGrxI,GAAG,IAAIC,EAAED,EAAE8wI,cAAc,GAAGH,KAAK3wI,EAAE,GAAGA,EAAE,CAACpQ,QAAQoQ,EAAEsxI,cAAcrxI,EAAE4b,KAAK,MAAM,OAAO60H,GAAG,CAAC,GAAG,OAAOD,GAAG,MAAM9rJ,MAAM6oB,EAAE,MAAMkjI,GAAG1wI,EAAEywI,GAAGh3E,aAAa,CAAC03E,MAAM,EAAED,aAAalxI,EAAG,MAAK0wI,GAAGA,GAAG70H,KAAK7b,EAAE,OAAOC,CAAE,KAAIsxI,GAAG,KAAK,SAASC,GAAGxxI,GAAG,OAAOuxI,GAAGA,GAAG,CAACvxI,GAAGuxI,GAAG5/I,KAAKqO,EAAG,UAASyxI,GAAGzxI,EAAEC,EAAElO,EAAEivD,GAAG,IAAI1nD,EAAE2G,EAAEyxI,YAA+E,OAAnE,OAAOp4I,GAAGvH,EAAE8pB,KAAK9pB,EAAEy/I,GAAGvxI,KAAKlO,EAAE8pB,KAAKviB,EAAEuiB,KAAKviB,EAAEuiB,KAAK9pB,GAAGkO,EAAEyxI,YAAY3/I,EAAS4/I,GAAG3xI,EAAEghD,EAAG,CACjY,SAAS2wF,GAAG3xI,EAAEC,GAAGD,EAAEmxI,OAAOlxI,EAAE,IAAIlO,EAAEiO,EAAE05H,UAAqC,IAA3B,OAAO3nI,IAAIA,EAAEo/I,OAAOlxI,GAAGlO,EAAEiO,EAAMA,EAAEA,EAAEic,OAAO,OAAOjc,GAAGA,EAAEgxI,YAAY/wI,EAAgB,QAAdlO,EAAEiO,EAAE05H,aAAqB3nI,EAAEi/I,YAAY/wI,GAAGlO,EAAEiO,EAAEA,EAAEA,EAAEic,OAAO,OAAO,IAAIlqB,EAAE8X,IAAI9X,EAAEwmI,UAAU,IAAK,KAAIqZ,IAAG,EAAG,SAASC,GAAG7xI,GAAGA,EAAE8xI,YAAY,CAACC,UAAU/xI,EAAE45H,cAAcoY,gBAAgB,KAAKC,eAAe,KAAKC,OAAO,CAACC,QAAQ,KAAKT,YAAY,KAAKP,MAAM,GAAGiB,QAAQ,KAAM,CACrX,SAASC,GAAGryI,EAAEC,GAAGD,EAAEA,EAAE8xI,YAAY7xI,EAAE6xI,cAAc9xI,IAAIC,EAAE6xI,YAAY,CAACC,UAAU/xI,EAAE+xI,UAAUC,gBAAgBhyI,EAAEgyI,gBAAgBC,eAAejyI,EAAEiyI,eAAeC,OAAOlyI,EAAEkyI,OAAOE,QAAQpyI,EAAEoyI,SAAU,UAAS79D,GAAGv0E,EAAEC,GAAG,MAAM,CAACqyI,UAAUtyI,EAAEuyI,KAAKtyI,EAAE4J,IAAI,EAAErO,QAAQ,KAAK0B,SAAS,KAAK2e,KAAK,KAAM,CACvR,SAAS22H,GAAGxyI,EAAEC,EAAElO,GAAG,IAAIivD,EAAEhhD,EAAE8xI,YAAY,GAAG,OAAO9wF,EAAE,OAAO,KAAgB,GAAXA,EAAEA,EAAEkxF,OAAU,KAAO,EAAFO,IAAK,CAAC,IAAIn5I,EAAE0nD,EAAEmxF,QAA+D,OAAvD,OAAO74I,EAAE2G,EAAE4b,KAAK5b,GAAGA,EAAE4b,KAAKviB,EAAEuiB,KAAKviB,EAAEuiB,KAAK5b,GAAG+gD,EAAEmxF,QAAQlyI,EAAS0xI,GAAG3xI,EAAEjO,EAAG,CAAmF,OAAnE,QAAhBuH,EAAE0nD,EAAE0wF,cAAsBzxI,EAAE4b,KAAK5b,EAAEuxI,GAAGxwF,KAAK/gD,EAAE4b,KAAKviB,EAAEuiB,KAAKviB,EAAEuiB,KAAK5b,GAAG+gD,EAAE0wF,YAAYzxI,EAAS0xI,GAAG3xI,EAAEjO,EAAG,UAAS2gJ,GAAG1yI,EAAEC,EAAElO,GAAmB,GAAG,QAAnBkO,EAAEA,EAAE6xI,eAA0B7xI,EAAEA,EAAEiyI,OAAO,KAAO,QAAFngJ,IAAY,CAAC,IAAIivD,EAAE/gD,EAAEkxI,MAAwBp/I,GAAlBivD,GAAGhhD,EAAEo8H,aAAkBn8H,EAAEkxI,MAAMp/I,EAAEgrI,GAAG/8H,EAAEjO,EAAG,CAAC,CACtZ,SAAS4gJ,GAAG3yI,EAAEC,GAAG,IAAIlO,EAAEiO,EAAE8xI,YAAY9wF,EAAEhhD,EAAE05H,UAAU,GAAG,OAAO14E,GAAoBjvD,KAAhBivD,EAAEA,EAAE8wF,aAAmB,CAAC,IAAIx4I,EAAE,KAAKoI,EAAE,KAAyB,GAAG,QAAvB3P,EAAEA,EAAEigJ,iBAA4B,CAAC,EAAE,CAAC,IAAI/vF,EAAE,CAACqwF,UAAUvgJ,EAAEugJ,UAAUC,KAAKxgJ,EAAEwgJ,KAAK1oI,IAAI9X,EAAE8X,IAAIrO,QAAQzJ,EAAEyJ,QAAQ0B,SAASnL,EAAEmL,SAAS2e,KAAK,MAAM,OAAOna,EAAEpI,EAAEoI,EAAEugD,EAAEvgD,EAAEA,EAAEma,KAAKomC,EAAElwD,EAAEA,EAAE8pB,IAAK,OAAM,OAAO9pB,GAAG,OAAO2P,EAAEpI,EAAEoI,EAAEzB,EAAEyB,EAAEA,EAAEma,KAAK5b,CAAE,MAAK3G,EAAEoI,EAAEzB,EAAiH,OAA/GlO,EAAE,CAACggJ,UAAU/wF,EAAE+wF,UAAUC,gBAAgB14I,EAAE24I,eAAevwI,EAAEwwI,OAAOlxF,EAAEkxF,OAAOE,QAAQpxF,EAAEoxF,cAASpyI,EAAE8xI,YAAY//I,EAAS,CAAmB,QAAnBiO,EAAEjO,EAAEkgJ,gBAAwBlgJ,EAAEigJ,gBAAgB/xI,EAAED,EAAE6b,KACnf5b,EAAElO,EAAEkgJ,eAAehyI,CAAE,CACrB,SAAS2yI,GAAG5yI,EAAEC,EAAElO,EAAEivD,GAAG,IAAI1nD,EAAE0G,EAAE8xI,YAAYF,IAAG,EAAG,IAAIlwI,EAAEpI,EAAE04I,gBAAgB/vF,EAAE3oD,EAAE24I,eAAer8I,EAAE0D,EAAE44I,OAAOC,QAAQ,GAAG,OAAOv8I,EAAE,CAAC0D,EAAE44I,OAAOC,QAAQ,KAAK,IAAIpuF,EAAEnuD,EAAExE,EAAE2yD,EAAEloC,KAAKkoC,EAAEloC,KAAK,KAAK,OAAOomC,EAAEvgD,EAAEtQ,EAAE6wD,EAAEpmC,KAAKzqB,EAAE6wD,EAAE8B,EAAE,IAAIhD,EAAE/gD,EAAE05H,UAAU,OAAO34E,KAAoBnrD,GAAhBmrD,EAAEA,EAAE+wF,aAAgBG,kBAAmBhwF,IAAI,OAAOrsD,EAAEmrD,EAAEixF,gBAAgB5gJ,EAAEwE,EAAEimB,KAAKzqB,EAAE2vD,EAAEkxF,eAAeluF,GAAI,IAAG,OAAOriD,EAAE,CAAC,IAAI86C,EAAEljD,EAAEy4I,UAA6B,IAAnB9vF,EAAE,EAAElB,EAAE3vD,EAAE2yD,EAAE,KAAKnuD,EAAE8L,IAAI,CAAC,IAAIF,EAAE5L,EAAE28I,KAAKt4G,EAAErkC,EAAE08I,UAAU,IAAItxF,EAAEx/C,KAAKA,EAAE,CAAC,OAAOu/C,IAAIA,EAAEA,EAAEllC,KAAK,CAACy2H,UAAUr4G,EAAEs4G,KAAK,EAAE1oI,IAAIjU,EAAEiU,IAAIrO,QAAQ5F,EAAE4F,QAAQ0B,SAAStH,EAAEsH,SACvf2e,KAAK,OAAO7b,EAAE,CAAC,IAAI2B,EAAE3B,EAAEyB,EAAE7L,EAAU,OAAR4L,EAAEvB,EAAEg6B,EAAEloC,EAAS0P,EAAEoI,KAAK,KAAK,EAAc,GAAG,oBAAflI,EAAEF,EAAEjG,SAAiC,CAACghD,EAAE76C,EAAE3P,KAAKioC,EAAEuiB,EAAEh7C,GAAG,MAAMxB,CAAE,CAAAw8C,EAAE76C,EAAE,MAAM3B,EAAE,KAAK,EAAE2B,EAAEG,OAAe,MAATH,EAAEG,MAAa,IAAI,KAAK,EAAsD,GAAG,QAA3CN,EAAE,oBAAdG,EAAEF,EAAEjG,SAAgCmG,EAAE3P,KAAKioC,EAAEuiB,EAAEh7C,GAAGG,SAAe,IAASH,EAAE,MAAMxB,EAAEw8C,EAAEwoD,EAAE,CAAC,EAAExoD,EAAEh7C,GAAG,MAAMxB,EAAE,KAAK,EAAE4xI,IAAG,EAAI,QAAOh8I,EAAEsH,UAAU,IAAItH,EAAE28I,OAAOvyI,EAAE8B,OAAO,GAAe,QAAZN,EAAElI,EAAE84I,SAAiB94I,EAAE84I,QAAQ,CAACx8I,GAAG4L,EAAE7P,KAAKiE,GAAI,MAAKqkC,EAAE,CAACq4G,UAAUr4G,EAAEs4G,KAAK/wI,EAAEqI,IAAIjU,EAAEiU,IAAIrO,QAAQ5F,EAAE4F,QAAQ0B,SAAStH,EAAEsH,SAAS2e,KAAK,MAAM,OAAOklC,GAAG3vD,EAAE2vD,EAAE9mB,EAAE8pB,EAAEvH,GAAGuE,EAAEA,EAAEllC,KAAKoe,EAAEgoB,GAAGzgD,EAC3e,GAAG,QAAZ5L,EAAEA,EAAEimB,MAAiB,IAAsB,QAAnBjmB,EAAE0D,EAAE44I,OAAOC,SAAiB,MAAev8I,GAAJ4L,EAAE5L,GAAMimB,KAAKra,EAAEqa,KAAK,KAAKviB,EAAE24I,eAAezwI,EAAElI,EAAE44I,OAAOC,QAAQ,IAA7D,CAAkE,CAAqG,GAA5F,OAAOpxF,IAAIgD,EAAEvH,GAAGljD,EAAEy4I,UAAUhuF,EAAEzqD,EAAE04I,gBAAgB5gJ,EAAEkI,EAAE24I,eAAelxF,EAA4B,QAA1B9gD,EAAE3G,EAAE44I,OAAOR,aAAwB,CAACp4I,EAAE2G,EAAE,GAAGgiD,GAAG3oD,EAAEi5I,KAAKj5I,EAAEA,EAAEuiB,WAAWviB,IAAI2G,EAAG,MAAK,OAAOyB,IAAIpI,EAAE44I,OAAOf,MAAM,GAAG0B,IAAI5wF,EAAEjiD,EAAEmxI,MAAMlvF,EAAEjiD,EAAE45H,cAAcp9E,CAAE,CAAC,CAC/V,SAASs2F,GAAG9yI,EAAEC,EAAElO,GAA8B,GAA3BiO,EAAEC,EAAEmyI,QAAQnyI,EAAEmyI,QAAQ,KAAQ,OAAOpyI,EAAE,IAAIC,EAAE,EAAEA,EAAED,EAAE7a,OAAO8a,IAAI,CAAC,IAAI+gD,EAAEhhD,EAAEC,GAAG3G,EAAE0nD,EAAE9jD,SAAS,GAAG,OAAO5D,EAAE,CAAqB,GAApB0nD,EAAE9jD,SAAS,KAAK8jD,EAAEjvD,EAAK,oBAAoBuH,EAAE,MAAM3U,MAAM6oB,EAAE,IAAIlU,IAAIA,EAAEtH,KAAKgvD,EAAG,CAAC,CAAC,KAAI+xF,IAAI,IAAI/jB,EAAG9V,WAAW85B,KAAK,SAASC,GAAGjzI,EAAEC,EAAElO,EAAEivD,GAA8BjvD,EAAE,QAAXA,EAAEA,EAAEivD,EAAtB/gD,EAAED,EAAE45H,sBAAmC,IAAS7nI,EAAEkO,EAAE+kG,EAAE,CAAC,EAAE/kG,EAAElO,GAAGiO,EAAE45H,cAAc7nI,EAAE,IAAIiO,EAAEmxI,QAAQnxI,EAAE8xI,YAAYC,UAAUhgJ,EAAG,CACnX,IAAImhJ,GAAG,CAACC,UAAU,SAASnzI,GAAG,SAAOA,EAAEA,EAAEozI,kBAAiB3Z,GAAGz5H,KAAKA,CAAK,EAACqzI,gBAAgB,SAASrzI,EAAEC,EAAElO,GAAGiO,EAAEA,EAAEozI,gBAAgB,IAAIpyF,EAAEg1B,KAAI18E,EAAEg6I,GAAGtzI,GAAG0B,EAAE6yE,GAAGvzB,EAAE1nD,GAAGoI,EAAElG,QAAQyE,OAAE,IAASlO,GAAG,OAAOA,IAAI2P,EAAExE,SAASnL,GAAe,QAAZkO,EAAEuyI,GAAGxyI,EAAE0B,EAAEpI,MAAci6I,GAAGtzI,EAAED,EAAE1G,EAAE0nD,GAAG0xF,GAAGzyI,EAAED,EAAE1G,GAAI,EAACk6I,oBAAoB,SAASxzI,EAAEC,EAAElO,GAAGiO,EAAEA,EAAEozI,gBAAgB,IAAIpyF,EAAEg1B,KAAI18E,EAAEg6I,GAAGtzI,GAAG0B,EAAE6yE,GAAGvzB,EAAE1nD,GAAGoI,EAAEmI,IAAI,EAAEnI,EAAElG,QAAQyE,OAAE,IAASlO,GAAG,OAAOA,IAAI2P,EAAExE,SAASnL,GAAe,QAAZkO,EAAEuyI,GAAGxyI,EAAE0B,EAAEpI,MAAci6I,GAAGtzI,EAAED,EAAE1G,EAAE0nD,GAAG0xF,GAAGzyI,EAAED,EAAE1G,GAAI,EAACm6I,mBAAmB,SAASzzI,EAAEC,GAAGD,EAAEA,EAAEozI,gBAAgB,IAAIrhJ,EAAEikF,KAAIh1B,EACnfsyF,GAAGtzI,GAAG1G,EAAEi7E,GAAGxiF,EAAEivD,GAAG1nD,EAAEuQ,IAAI,OAAE,IAAS5J,GAAG,OAAOA,IAAI3G,EAAE4D,SAAS+C,GAAe,QAAZA,EAAEuyI,GAAGxyI,EAAE1G,EAAE0nD,MAAcuyF,GAAGtzI,EAAED,EAAEghD,EAAEjvD,GAAG2gJ,GAAGzyI,EAAED,EAAEghD,GAAI,GAAE,SAAS0yF,GAAG1zI,EAAEC,EAAElO,EAAEivD,EAAE1nD,EAAEoI,EAAEugD,GAAiB,MAAM,oBAApBjiD,EAAEA,EAAEu4H,WAAsCob,sBAAsB3zI,EAAE2zI,sBAAsB3yF,EAAEt/C,EAAEugD,IAAGhiD,EAAEnQ,YAAWmQ,EAAEnQ,UAAU8jJ,wBAAsBxM,GAAGr1I,EAAEivD,KAAKomF,GAAG9tI,EAAEoI,GAAM,CAC3S,SAASmyI,GAAG7zI,EAAEC,EAAElO,GAAG,IAAIivD,GAAE,EAAG1nD,EAAE6zI,GAAOzrI,EAAEzB,EAAE+iG,YAA2W,MAA/V,kBAAkBthG,GAAG,OAAOA,EAAEA,EAAE2vI,GAAG3vI,IAAIpI,EAAEm0I,GAAGxtI,GAAGotI,GAAGt2C,GAAE72E,QAAyBxe,GAAGs/C,EAAE,QAAtBA,EAAE/gD,EAAEgjG,oBAA4B,IAASjiD,GAAGssF,GAAGttI,EAAE1G,GAAG6zI,IAAIltI,EAAE,IAAIA,EAAElO,EAAE2P,GAAG1B,EAAE45H,cAAc,OAAO35H,EAAEkI,YAAO,IAASlI,EAAEkI,MAAMlI,EAAEkI,MAAM,KAAKlI,EAAE6zI,QAAQZ,GAAGlzI,EAAEu4H,UAAUt4H,EAAEA,EAAEmzI,gBAAgBpzI,EAAEghD,KAAIhhD,EAAEA,EAAEu4H,WAAYgV,4CAA4Cj0I,EAAE0G,EAAEwtI,0CAA0C9rI,GAAUzB,CAAE,CAC7Z,SAAS8zI,GAAG/zI,EAAEC,EAAElO,EAAEivD,GAAGhhD,EAAEC,EAAEkI,MAAM,oBAAoBlI,EAAE+zI,2BAA2B/zI,EAAE+zI,0BAA0BjiJ,EAAEivD,GAAG,oBAAoB/gD,EAAEg0I,kCAAkCh0I,EAAEg0I,iCAAiCliJ,EAAEivD,GAAG/gD,EAAEkI,QAAQnI,GAAGkzI,GAAGM,oBAAoBvzI,EAAEA,EAAEkI,MAAM,KAAM,CACrQ,SAAS+rI,GAAGl0I,EAAEC,EAAElO,EAAEivD,GAAG,IAAI1nD,EAAE0G,EAAEu4H,UAAUj/H,EAAEgH,MAAMvO,EAAEuH,EAAE6O,MAAMnI,EAAE45H,cAActgI,EAAE05I,KAAKD,GAAGlB,GAAG7xI,GAAG,IAAI0B,EAAEzB,EAAE+iG,YAAY,kBAAkBthG,GAAG,OAAOA,EAAEpI,EAAE1J,QAAQyhJ,GAAG3vI,IAAIA,EAAE+rI,GAAGxtI,GAAGotI,GAAGt2C,GAAE72E,QAAQ5mB,EAAE1J,QAAQ09I,GAAGttI,EAAE0B,IAAIpI,EAAE6O,MAAMnI,EAAE45H,cAA2C,oBAA7Bl4H,EAAEzB,EAAEqjG,4BAAiD2vC,GAAGjzI,EAAEC,EAAEyB,EAAE3P,GAAGuH,EAAE6O,MAAMnI,EAAE45H,eAAe,oBAAoB35H,EAAEqjG,0BAA0B,oBAAoBhqG,EAAE66I,yBAAyB,oBAAoB76I,EAAE86I,2BAA2B,oBAAoB96I,EAAE+6I,qBAAqBp0I,EAAE3G,EAAE6O,MACrf,oBAAoB7O,EAAE+6I,oBAAoB/6I,EAAE+6I,qBAAqB,oBAAoB/6I,EAAE86I,2BAA2B96I,EAAE86I,4BAA4Bn0I,IAAI3G,EAAE6O,OAAO+qI,GAAGM,oBAAoBl6I,EAAEA,EAAE6O,MAAM,MAAMyqI,GAAG5yI,EAAEjO,EAAEuH,EAAE0nD,GAAG1nD,EAAE6O,MAAMnI,EAAE45H,eAAe,oBAAoBtgI,EAAEg7I,oBAAoBt0I,EAAE8B,OAAO,QAAS,CACrS,SAASyyI,GAAGv0I,EAAEC,EAAElO,GAAW,GAAG,QAAXiO,EAAEjO,EAAE0S,MAAiB,oBAAoBzE,GAAG,kBAAkBA,EAAE,CAAC,GAAGjO,EAAEyiJ,OAAO,CAAY,GAAXziJ,EAAEA,EAAEyiJ,OAAY,CAAC,GAAG,IAAIziJ,EAAE8X,IAAI,MAAMllB,MAAM6oB,EAAE,MAAM,IAAIwzC,EAAEjvD,EAAEwmI,SAAU,KAAIv3E,EAAE,MAAMr8D,MAAM6oB,EAAE,IAAIxN,IAAI,IAAI1G,EAAE0nD,EAAEt/C,EAAE,GAAG1B,EAAE,OAAG,OAAOC,GAAG,OAAOA,EAAEwE,KAAK,oBAAoBxE,EAAEwE,KAAKxE,EAAEwE,IAAIgwI,aAAa/yI,EAASzB,EAAEwE,KAAIxE,EAAE,SAASD,GAAG,IAAIC,EAAE3G,EAAE05I,KAAK/yI,IAAI8yI,KAAK9yI,EAAE3G,EAAE05I,KAAK,CAAC,GAAG,OAAOhzI,SAASC,EAAEyB,GAAGzB,EAAEyB,GAAG1B,CAAE,EAACC,EAAEw0I,WAAW/yI,EAASzB,EAAE,IAAG,kBAAkBD,EAAE,MAAMrb,MAAM6oB,EAAE,MAAM,IAAIzb,EAAEyiJ,OAAO,MAAM7vJ,MAAM6oB,EAAE,IAAIxN,GAAK,QAAOA,CAAE,CACte,SAAS00I,GAAG10I,EAAEC,GAAuC,MAApCD,EAAEnL,OAAO/E,UAAUgI,SAAS9F,KAAKiO,GAAStb,MAAM6oB,EAAE,GAAG,oBAAoBxN,EAAE,qBAAqBnL,OAAOsC,KAAK8I,GAAG3F,KAAK,MAAM,IAAI0F,GAAK,UAAS20I,GAAG30I,GAAiB,OAAOC,EAAfD,EAAEiyH,OAAejyH,EAAEgyH,SAAU,CACtM,SAAS4iB,GAAG50I,GAAG,SAASC,EAAEA,EAAElO,GAAG,GAAGiO,EAAE,CAAC,IAAIghD,EAAE/gD,EAAEwvI,UAAU,OAAOzuF,GAAG/gD,EAAEwvI,UAAU,CAAC19I,GAAGkO,EAAE6B,OAAO,IAAIk/C,EAAErvD,KAAKI,EAAG,CAAC,UAASA,EAAEA,EAAEivD,GAAG,IAAIhhD,EAAE,OAAO,KAAK,KAAK,OAAOghD,GAAG/gD,EAAElO,EAAEivD,GAAGA,EAAEA,EAAEg5E,QAAQ,OAAO,IAAK,UAASh5E,EAAEhhD,EAAEC,GAAG,IAAID,EAAE,IAAIwkE,IAAI,OAAOvkE,GAAG,OAAOA,EAAE3R,IAAI0R,EAAEoN,IAAInN,EAAE3R,IAAI2R,GAAGD,EAAEoN,IAAInN,EAAErO,MAAMqO,GAAGA,EAAEA,EAAE+5H,QAAQ,OAAOh6H,CAAE,UAAS1G,EAAE0G,EAAEC,GAAsC,OAAnCD,EAAE60I,GAAG70I,EAAEC,IAAKrO,MAAM,EAAEoO,EAAEg6H,QAAQ,KAAYh6H,CAAE,UAAS0B,EAAEzB,EAAElO,EAAEivD,GAAa,OAAV/gD,EAAErO,MAAMovD,EAAMhhD,EAA6C,QAAjBghD,EAAE/gD,EAAEy5H,YAA6B14E,EAAEA,EAAEpvD,OAAQG,GAAGkO,EAAE6B,OAAO,EAAE/P,GAAGivD,GAAE/gD,EAAE6B,OAAO,EAAS/P,IAArGkO,EAAE6B,OAAO,QAAQ/P,EAAsF,UAASkwD,EAAEhiD,GACzd,OAD4dD,GAC7f,OAAOC,EAAEy5H,YAAYz5H,EAAE6B,OAAO,GAAU7B,CAAE,UAASrK,EAAEoK,EAAEC,EAAElO,EAAEivD,GAAG,OAAG,OAAO/gD,GAAG,IAAIA,EAAE4J,MAAW5J,EAAE60I,GAAG/iJ,EAAEiO,EAAEkhD,KAAKF,IAAK/kC,OAAOjc,EAAEC,KAAEA,EAAE3G,EAAE2G,EAAElO,IAAKkqB,OAAOjc,EAASC,EAAE,UAAS8jD,EAAE/jD,EAAEC,EAAElO,EAAEivD,GAAG,IAAIt/C,EAAE3P,EAAEhD,KAAK,OAAG2S,IAAIivH,EAAU5vE,EAAE/gD,EAAEC,EAAElO,EAAEuO,MAAM+J,SAAS22C,EAAEjvD,EAAEzD,KAAQ,OAAO2R,IAAIA,EAAEyrG,cAAchqG,GAAG,kBAAkBA,GAAG,OAAOA,GAAGA,EAAEqjG,WAAWqsB,GAAIujB,GAAGjzI,KAAKzB,EAAElR,QAAaiyD,EAAE1nD,EAAE2G,EAAElO,EAAEuO,QAASmE,IAAI8vI,GAAGv0I,EAAEC,EAAElO,GAAGivD,EAAE/kC,OAAOjc,EAAEghD,KAAEA,EAAE+zF,GAAGhjJ,EAAEhD,KAAKgD,EAAEzD,IAAIyD,EAAEuO,MAAM,KAAKN,EAAEkhD,KAAKF,IAAKv8C,IAAI8vI,GAAGv0I,EAAEC,EAAElO,GAAGivD,EAAE/kC,OAAOjc,EAASghD,EAAE,UAAS5vD,EAAE4O,EAAEC,EAAElO,EAAEivD,GAAG,OAAG,OAAO/gD,GAAG,IAAIA,EAAE4J,KACjf5J,EAAEs4H,UAAUoG,gBAAgB5sI,EAAE4sI,eAAe1+H,EAAEs4H,UAAUyc,iBAAiBjjJ,EAAEijJ,iBAAsB/0I,EAAEg1I,GAAGljJ,EAAEiO,EAAEkhD,KAAKF,IAAK/kC,OAAOjc,EAAEC,KAAEA,EAAE3G,EAAE2G,EAAElO,EAAEsY,UAAU,KAAM4R,OAAOjc,EAASC,EAAE,UAAS8gD,EAAE/gD,EAAEC,EAAElO,EAAEivD,EAAEt/C,GAAG,OAAG,OAAOzB,GAAG,IAAIA,EAAE4J,MAAW5J,EAAEi1I,GAAGnjJ,EAAEiO,EAAEkhD,KAAKF,EAAEt/C,IAAKua,OAAOjc,EAAEC,KAAEA,EAAE3G,EAAE2G,EAAElO,IAAKkqB,OAAOjc,EAASC,EAAE,UAASu8C,EAAEx8C,EAAEC,EAAElO,GAAG,GAAG,kBAAkBkO,GAAG,KAAKA,GAAG,kBAAkBA,EAAE,OAAOA,EAAE60I,GAAG,GAAG70I,EAAED,EAAEkhD,KAAKnvD,IAAKkqB,OAAOjc,EAAEC,EAAE,GAAG,kBAAkBA,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAE8kG,UAAU,KAAK0rB,EAAG,OAAO1+H,EAAEgjJ,GAAG90I,EAAElR,KAAKkR,EAAE3R,IAAI2R,EAAEK,MAAM,KAAKN,EAAEkhD,KAAKnvD,IACjf0S,IAAI8vI,GAAGv0I,EAAE,KAAKC,GAAGlO,EAAEkqB,OAAOjc,EAAEjO,EAAE,KAAK2+H,EAAG,OAAOzwH,EAAEg1I,GAAGh1I,EAAED,EAAEkhD,KAAKnvD,IAAKkqB,OAAOjc,EAAEC,EAAE,KAAKmxH,EAAiB,OAAO50E,EAAEx8C,GAAEghD,EAAnB/gD,EAAEgyH,OAAmBhyH,EAAE+xH,UAAUjgI,GAAG,GAAGuhI,GAAGrzH,IAAIsxH,EAAGtxH,GAAG,OAAOA,EAAEi1I,GAAGj1I,EAAED,EAAEkhD,KAAKnvD,EAAE,OAAQkqB,OAAOjc,EAAEC,EAAEy0I,GAAG10I,EAAEC,EAAG,QAAO,IAAK,UAASuB,EAAExB,EAAEC,EAAElO,EAAEivD,GAAG,IAAI1nD,EAAE,OAAO2G,EAAEA,EAAE3R,IAAI,KAAK,GAAG,kBAAkByD,GAAG,KAAKA,GAAG,kBAAkBA,EAAE,OAAO,OAAOuH,EAAE,KAAK1D,EAAEoK,EAAEC,EAAE,GAAGlO,EAAEivD,GAAG,GAAG,kBAAkBjvD,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAEgzG,UAAU,KAAK0rB,EAAG,OAAO1+H,EAAEzD,MAAMgL,EAAEyqD,EAAE/jD,EAAEC,EAAElO,EAAEivD,GAAG,KAAK,KAAK0vE,EAAG,OAAO3+H,EAAEzD,MAAMgL,EAAElI,EAAE4O,EAAEC,EAAElO,EAAEivD,GAAG,KAAK,KAAKowE,EAAG,OAAiB5vH,EAAExB,EACpfC,GADwe3G,EAAEvH,EAAEkgI,OACxelgI,EAAEigI,UAAUhxE,GAAG,GAAGsyE,GAAGvhI,IAAIw/H,EAAGx/H,GAAG,OAAO,OAAOuH,EAAE,KAAKynD,EAAE/gD,EAAEC,EAAElO,EAAEivD,EAAE,MAAM0zF,GAAG10I,EAAEjO,EAAG,QAAO,IAAK,UAASkoC,EAAEj6B,EAAEC,EAAElO,EAAEivD,EAAE1nD,GAAG,GAAG,kBAAkB0nD,GAAG,KAAKA,GAAG,kBAAkBA,EAAE,OAAwBprD,EAAEqK,EAAnBD,EAAEA,EAAEqN,IAAItb,IAAI,KAAW,GAAGivD,EAAE1nD,GAAG,GAAG,kBAAkB0nD,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAE+jD,UAAU,KAAK0rB,EAAG,OAA2C1sE,EAAE9jD,EAAtCD,EAAEA,EAAEqN,IAAI,OAAO2zC,EAAE1yD,IAAIyD,EAAEivD,EAAE1yD,MAAM,KAAW0yD,EAAE1nD,GAAG,KAAKo3H,EAAG,OAA2Ct/H,EAAE6O,EAAtCD,EAAEA,EAAEqN,IAAI,OAAO2zC,EAAE1yD,IAAIyD,EAAEivD,EAAE1yD,MAAM,KAAW0yD,EAAE1nD,GAAG,KAAK83H,EAAiB,OAAOn3F,EAAEj6B,EAAEC,EAAElO,GAAE2P,EAAvBs/C,EAAEixE,OAAuBjxE,EAAEgxE,UAAU14H,GAAG,GAAGg6H,GAAGtyE,IAAIuwE,EAAGvwE,GAAG,OAAwBD,EAAE9gD,EAAnBD,EAAEA,EAAEqN,IAAItb,IAAI,KAAWivD,EAAE1nD,EAAE,MAAMo7I,GAAGz0I,EAAE+gD,EAAG,QAAO,IAAK,CAC/f,SAASr/C,EAAErI,EAAE2oD,EAAErsD,EAAEmuD,GAAG,IAAI,IAAI3yD,EAAE,KAAK2vD,EAAE,KAAKkV,EAAEhU,EAAEoC,EAAEpC,EAAE,EAAEloB,EAAE,KAAK,OAAOk8B,GAAG5R,EAAEzuD,EAAEzQ,OAAOk/D,IAAI,CAAC4R,EAAErkE,MAAMyyD,GAAGtqB,EAAEk8B,EAAEA,EAAE,MAAMl8B,EAAEk8B,EAAE+jE,QAAQ,IAAIr4H,EAAEH,EAAElI,EAAE28D,EAAErgE,EAAEyuD,GAAGN,GAAG,GAAG,OAAOpiD,EAAE,CAAC,OAAOs0D,IAAIA,EAAEl8B,GAAG,KAAM,CAAA/5B,GAAGi2D,GAAG,OAAOt0D,EAAE+3H,WAAWz5H,EAAE3G,EAAE28D,GAAGhU,EAAEvgD,EAAEC,EAAEsgD,EAAEoC,GAAG,OAAOtD,EAAE3vD,EAAEuQ,EAAEo/C,EAAEi5E,QAAQr4H,EAAEo/C,EAAEp/C,EAAEs0D,EAAEl8B,CAAE,IAAGsqB,IAAIzuD,EAAEzQ,OAAO,OAAO4M,EAAEuH,EAAE28D,GAAGo5E,IAAGN,GAAGz1I,EAAE+qD,GAAGjzD,EAAE,GAAG,OAAO6kE,EAAE,CAAC,KAAK5R,EAAEzuD,EAAEzQ,OAAOk/D,IAAkB,QAAd4R,EAAEzZ,EAAEljD,EAAE1D,EAAEyuD,GAAGN,MAAc9B,EAAEvgD,EAAEu0D,EAAEhU,EAAEoC,GAAG,OAAOtD,EAAE3vD,EAAE6kE,EAAElV,EAAEi5E,QAAQ/jE,EAAElV,EAAEkV,GAAc,OAAXo5E,IAAGN,GAAGz1I,EAAE+qD,GAAUjzD,CAAE,KAAI6kE,EAAEjV,EAAE1nD,EAAE28D,GAAG5R,EAAEzuD,EAAEzQ,OAAOk/D,IAAsB,QAAlBtqB,EAAEE,EAAEg8B,EAAE38D,EAAE+qD,EAAEzuD,EAAEyuD,GAAGN,MAAc/jD,GAAG,OAAO+5B,EAAE2/F,WAAWzjE,EAAEuT,OAAO,OACvfzvC,EAAEzrC,IAAI+1D,EAAEtqB,EAAEzrC,KAAK2zD,EAAEvgD,EAAEq4B,EAAEkoB,EAAEoC,GAAG,OAAOtD,EAAE3vD,EAAE2oC,EAAEgnB,EAAEi5E,QAAQjgG,EAAEgnB,EAAEhnB,GAAuD,OAApD/5B,GAAGi2D,EAAE5nE,SAAQ,SAAS2R,GAAG,OAAOC,EAAE3G,EAAE0G,EAAG,IAAEqvI,IAAGN,GAAGz1I,EAAE+qD,GAAUjzD,CAAE,UAASqQ,EAAEnI,EAAE2oD,EAAErsD,EAAEmuD,GAAG,IAAI3yD,EAAEmgI,EAAG37H,GAAG,GAAG,oBAAoBxE,EAAE,MAAMzM,MAAM6oB,EAAE,MAAkB,GAAG,OAAf5X,EAAExE,EAAEY,KAAK4D,IAAc,MAAMjR,MAAM6oB,EAAE,MAAM,IAAI,IAAIyoD,EAAE7kE,EAAE,KAAK2vD,EAAEkB,EAAEoC,EAAEpC,EAAE,EAAEloB,EAAE,KAAKp4B,EAAE/L,EAAEimB,OAAO,OAAOklC,IAAIp/C,EAAE5W,KAAKs5D,IAAI1iD,EAAE/L,EAAEimB,OAAO,CAACklC,EAAEnvD,MAAMyyD,GAAGtqB,EAAEgnB,EAAEA,EAAE,MAAMhnB,EAAEgnB,EAAEi5E,QAAQ,IAAIv4H,EAAED,EAAElI,EAAEynD,EAAEp/C,EAAElV,MAAMs3D,GAAG,GAAG,OAAOtiD,EAAE,CAAC,OAAOs/C,IAAIA,EAAEhnB,GAAG,KAAM,CAAA/5B,GAAG+gD,GAAG,OAAOt/C,EAAEi4H,WAAWz5H,EAAE3G,EAAEynD,GAAGkB,EAAEvgD,EAAED,EAAEwgD,EAAEoC,GAAG,OAAO4R,EAAE7kE,EAAEqQ,EAAEw0D,EAAE+jE,QAAQv4H,EAAEw0D,EAAEx0D,EAAEs/C,EAAEhnB,CAAE,IAAGp4B,EAAE5W,KAAK,OAAOgH,EAAEuH,EACzfynD,GAAGsuF,IAAGN,GAAGz1I,EAAE+qD,GAAGjzD,EAAE,GAAG,OAAO2vD,EAAE,CAAC,MAAMp/C,EAAE5W,KAAKs5D,IAAI1iD,EAAE/L,EAAEimB,OAAwB,QAAjBla,EAAE66C,EAAEljD,EAAEqI,EAAElV,MAAMs3D,MAAc9B,EAAEvgD,EAAEC,EAAEsgD,EAAEoC,GAAG,OAAO4R,EAAE7kE,EAAEuQ,EAAEs0D,EAAE+jE,QAAQr4H,EAAEs0D,EAAEt0D,GAAc,OAAX0tI,IAAGN,GAAGz1I,EAAE+qD,GAAUjzD,CAAE,KAAI2vD,EAAEC,EAAE1nD,EAAEynD,IAAIp/C,EAAE5W,KAAKs5D,IAAI1iD,EAAE/L,EAAEimB,OAA4B,QAArBla,EAAEs4B,EAAE8mB,EAAEznD,EAAE+qD,EAAE1iD,EAAElV,MAAMs3D,MAAc/jD,GAAG,OAAO2B,EAAE+3H,WAAW34E,EAAEyoB,OAAO,OAAO7nE,EAAErT,IAAI+1D,EAAE1iD,EAAErT,KAAK2zD,EAAEvgD,EAAEC,EAAEsgD,EAAEoC,GAAG,OAAO4R,EAAE7kE,EAAEuQ,EAAEs0D,EAAE+jE,QAAQr4H,EAAEs0D,EAAEt0D,GAAuD,OAApD3B,GAAG+gD,EAAE1yD,SAAQ,SAAS2R,GAAG,OAAOC,EAAE3G,EAAE0G,EAAG,IAAEqvI,IAAGN,GAAGz1I,EAAE+qD,GAAUjzD,CAAE,CAG5T,OAH4T,SAAS27F,EAAE/sF,EAAEghD,EAAEt/C,EAAE9L,GAAkF,GAA/E,kBAAkB8L,GAAG,OAAOA,GAAGA,EAAE3S,OAAO4hI,GAAI,OAAOjvH,EAAEpT,MAAMoT,EAAEA,EAAEpB,MAAM+J,UAAa,kBAAkB3I,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAEqjG,UAAU,KAAK0rB,EAAGzwH,EAAE,CAAC,IAAI,IAAI+jD,EAC7hBriD,EAAEpT,IAAI8C,EAAE4vD,EAAE,OAAO5vD,GAAG,CAAC,GAAGA,EAAE9C,MAAMy1D,EAAE,CAAU,IAATA,EAAEriD,EAAE3S,QAAY4hI,GAAI,GAAG,IAAIv/H,EAAEyY,IAAI,CAAC9X,EAAEiO,EAAE5O,EAAE4oI,UAASh5E,EAAE1nD,EAAElI,EAAEsQ,EAAEpB,MAAM+J,WAAY4R,OAAOjc,EAAEA,EAAEghD,EAAE,MAAMhhD,CAAE,OAAM,GAAG5O,EAAEs6G,cAAc3nD,GAAG,kBAAkBA,GAAG,OAAOA,GAAGA,EAAEghD,WAAWqsB,GAAIujB,GAAG5wF,KAAK3yD,EAAErC,KAAK,CAACgD,EAAEiO,EAAE5O,EAAE4oI,UAASh5E,EAAE1nD,EAAElI,EAAEsQ,EAAEpB,QAASmE,IAAI8vI,GAAGv0I,EAAE5O,EAAEsQ,GAAGs/C,EAAE/kC,OAAOjc,EAAEA,EAAEghD,EAAE,MAAMhhD,CAAE,CAAAjO,EAAEiO,EAAE5O,GAAG,KAAM,CAAK6O,EAAED,EAAE5O,GAAGA,EAAEA,EAAE4oI,OAAQ,CAAAt4H,EAAE3S,OAAO4hI,IAAI3vE,EAAEk0F,GAAGxzI,EAAEpB,MAAM+J,SAASrK,EAAEkhD,KAAKtrD,EAAE8L,EAAEpT,MAAO2tB,OAAOjc,EAAEA,EAAEghD,KAAIprD,EAAEm/I,GAAGrzI,EAAE3S,KAAK2S,EAAEpT,IAAIoT,EAAEpB,MAAM,KAAKN,EAAEkhD,KAAKtrD,IAAK6O,IAAI8vI,GAAGv0I,EAAEghD,EAAEt/C,GAAG9L,EAAEqmB,OAAOjc,EAAEA,EAAEpK,EAAG,QAAOqsD,EAAEjiD,GAAG,KAAK0wH,EAAG1wH,EAAE,CAAC,IAAI5O,EAAEsQ,EAAEpT,IAAI,OACzf0yD,GAAG,CAAC,GAAGA,EAAE1yD,MAAM8C,EAAX,CAAa,GAAG,IAAI4vD,EAAEn3C,KAAKm3C,EAAEu3E,UAAUoG,gBAAgBj9H,EAAEi9H,eAAe39E,EAAEu3E,UAAUyc,iBAAiBtzI,EAAEszI,eAAe,CAACjjJ,EAAEiO,EAAEghD,EAAEg5E,UAASh5E,EAAE1nD,EAAE0nD,EAAEt/C,EAAE2I,UAAU,KAAM4R,OAAOjc,EAAEA,EAAEghD,EAAE,MAAMhhD,CAAE,CAAKjO,EAAEiO,EAAEghD,GAAG,KAA/L,CAA0M/gD,EAAED,EAAEghD,GAAGA,EAAEA,EAAEg5E,OAAQ,EAAAh5E,EAAEi0F,GAAGvzI,EAAE1B,EAAEkhD,KAAKtrD,IAAKqmB,OAAOjc,EAAEA,EAAEghD,CAAE,QAAOiB,EAAEjiD,GAAG,KAAKoxH,EAAG,OAAiBrkC,EAAE/sF,EAAEghD,GAAd5vD,EAAEsQ,EAAEuwH,OAAcvwH,EAAEswH,UAAUp8H,GAAG,GAAG09H,GAAG5xH,GAAG,OAAOC,EAAE3B,EAAEghD,EAAEt/C,EAAE9L,GAAG,GAAG27H,EAAG7vH,GAAG,OAAOD,EAAEzB,EAAEghD,EAAEt/C,EAAE9L,GAAG8+I,GAAG10I,EAAE0B,EAAG,OAAM,kBAAkBA,GAAG,KAAKA,GAAG,kBAAkBA,GAAGA,EAAE,GAAGA,EAAE,OAAOs/C,GAAG,IAAIA,EAAEn3C,KAAK9X,EAAEiO,EAAEghD,EAAEg5E,UAASh5E,EAAE1nD,EAAE0nD,EAAEt/C,IAAKua,OAAOjc,EAAEA,EAAEghD,IACnfjvD,EAAEiO,EAAEghD,IAAGA,EAAE8zF,GAAGpzI,EAAE1B,EAAEkhD,KAAKtrD,IAAKqmB,OAAOjc,EAAEA,EAAEghD,GAAGiB,EAAEjiD,IAAIjO,EAAEiO,EAAEghD,EAAG,CAAS,KAAIm0F,GAAGP,IAAG,GAAIQ,GAAGR,IAAG,GAAIS,GAAG,CAAC,EAAEC,GAAGrI,GAAGoI,IAAIE,GAAGtI,GAAGoI,IAAIG,GAAGvI,GAAGoI,IAAI,SAASI,GAAGz1I,GAAG,GAAGA,IAAIq1I,GAAG,MAAM1wJ,MAAM6oB,EAAE,MAAM,OAAOxN,CAAE,UAAS01I,GAAG11I,EAAEC,GAAyC,OAAtCitI,GAAEsI,GAAGv1I,GAAGitI,GAAEqI,GAAGv1I,GAAGktI,GAAEoI,GAAGD,IAAIr1I,EAAEC,EAAEwiE,UAAmB,KAAK,EAAE,KAAK,GAAGxiE,GAAGA,EAAEA,EAAEozC,iBAAiBpzC,EAAEk0H,aAAaH,GAAG,KAAK,IAAI,MAAM,QAAkE/zH,EAAE+zH,GAArC/zH,GAAvBD,EAAE,IAAIA,EAAEC,EAAEyK,WAAWzK,GAAMk0H,cAAc,KAAKn0H,EAAEA,EAAEm5B,SAAkB2jD,GAAEw4D,IAAIpI,GAAEoI,GAAGr1I,EAAG,UAAS01I,KAAK74D,GAAEw4D,IAAIx4D,GAAEy4D,IAAIz4D,GAAE04D,GAAI,CACpb,SAASI,GAAG51I,GAAGy1I,GAAGD,GAAGt1H,SAAS,IAAIjgB,EAAEw1I,GAAGH,GAAGp1H,SAAanuB,EAAEiiI,GAAG/zH,EAAED,EAAEjR,MAAMkR,IAAIlO,IAAIm7I,GAAEqI,GAAGv1I,GAAGktI,GAAEoI,GAAGvjJ,GAAI,UAAS8jJ,GAAG71I,GAAGu1I,GAAGr1H,UAAUlgB,IAAI88E,GAAEw4D,IAAIx4D,GAAEy4D,IAAK,KAAI50C,GAAEssC,GAAG,GACrJ,SAAS6I,GAAG91I,GAAG,IAAI,IAAIC,EAAED,EAAE,OAAOC,GAAG,CAAC,GAAG,KAAKA,EAAE4J,IAAI,CAAC,IAAI9X,EAAEkO,EAAE25H,cAAc,GAAG,OAAO7nI,IAAmB,QAAfA,EAAEA,EAAE8nI,aAAqB,OAAO9nI,EAAEpH,MAAM,OAAOoH,EAAEpH,MAAM,OAAOsV,CAAE,MAAK,GAAG,KAAKA,EAAE4J,UAAK,IAAS5J,EAAEiwI,cAAc6F,aAAa,GAAG,KAAa,IAAR91I,EAAE6B,OAAW,OAAO7B,OAAO,GAAG,OAAOA,EAAEmK,MAAM,CAACnK,EAAEmK,MAAM6R,OAAOhc,EAAEA,EAAEA,EAAEmK,MAAM,QAAS,IAAGnK,IAAID,EAAE,MAAM,KAAK,OAAOC,EAAE+5H,SAAS,CAAC,GAAG,OAAO/5H,EAAEgc,QAAQhc,EAAEgc,SAASjc,EAAE,OAAO,KAAKC,EAAEA,EAAEgc,MAAO,CAAAhc,EAAE+5H,QAAQ/9G,OAAOhc,EAAEgc,OAAOhc,EAAEA,EAAE+5H,OAAQ,QAAO,IAAK,KAAIgc,GAAG,GACrc,SAASC,KAAK,IAAI,IAAIj2I,EAAE,EAAEA,EAAEg2I,GAAG7wJ,OAAO6a,IAAIg2I,GAAGh2I,GAAGk2I,8BAA8B,KAAKF,GAAG7wJ,OAAO,CAAE,KAAIgxJ,GAAG5lB,EAAG6lB,uBAAuBC,GAAG9lB,EAAG4O,wBAAwBmX,GAAG,EAAEz1C,GAAE,KAAK01C,GAAE,KAAK10F,GAAE,KAAK20F,IAAG,EAAGC,IAAG,EAAGC,GAAG,EAAEC,GAAG,EAAE,SAASC,KAAI,MAAMjyJ,MAAM6oB,EAAE,KAAO,UAASqpI,GAAG72I,EAAEC,GAAG,GAAG,OAAOA,EAAE,OAAM,EAAG,IAAI,IAAIlO,EAAE,EAAEA,EAAEkO,EAAE9a,QAAQ4M,EAAEiO,EAAE7a,OAAO4M,IAAI,IAAIo1I,GAAGnnI,EAAEjO,GAAGkO,EAAElO,IAAI,OAAM,EAAG,OAAM,CAAG,CACjW,SAAS+kJ,GAAG92I,EAAEC,EAAElO,EAAEivD,EAAE1nD,EAAEoI,GAAyH,GAAtH40I,GAAG50I,EAAEm/F,GAAE5gG,EAAEA,EAAE25H,cAAc,KAAK35H,EAAE6xI,YAAY,KAAK7xI,EAAEkxI,MAAM,EAAEgF,GAAGj2H,QAAQ,OAAOlgB,GAAG,OAAOA,EAAE45H,cAAcmd,GAAGC,GAAGh3I,EAAEjO,EAAEivD,EAAE1nD,GAAMm9I,GAAG,CAAC/0I,EAAE,EAAE,EAAE,CAAY,GAAX+0I,IAAG,EAAGC,GAAG,EAAK,IAAIh1I,EAAE,MAAM/c,MAAM6oB,EAAE,MAAM9L,GAAG,EAAEmgD,GAAE00F,GAAE,KAAKt2I,EAAE6xI,YAAY,KAAKqE,GAAGj2H,QAAQ+2H,GAAGj3I,EAAEjO,EAAEivD,EAAE1nD,EAAG,OAAMm9I,GAAI,CAA8D,GAA9DN,GAAGj2H,QAAQg3H,GAAGj3I,EAAE,OAAOs2I,IAAG,OAAOA,GAAE16H,KAAKy6H,GAAG,EAAEz0F,GAAE00F,GAAE11C,GAAE,KAAK21C,IAAG,EAAMv2I,EAAE,MAAMtb,MAAM6oB,EAAE,MAAM,OAAOxN,CAAE,UAASm3I,KAAK,IAAIn3I,EAAE,IAAI02I,GAAQ,OAALA,GAAG,EAAS12I,CAAE,CAChZ,SAASo3I,KAAK,IAAIp3I,EAAE,CAAC45H,cAAc,KAAKmY,UAAU,KAAKsF,UAAU,KAAK9uI,MAAM,KAAKsT,KAAK,MAA8C,OAAxC,OAAOgmC,GAAEg/C,GAAE+4B,cAAc/3E,GAAE7hD,EAAE6hD,GAAEA,GAAEhmC,KAAK7b,EAAS6hD,EAAE,UAASy1F,KAAK,GAAG,OAAOf,GAAE,CAAC,IAAIv2I,EAAE6gG,GAAE64B,UAAU15H,EAAE,OAAOA,EAAEA,EAAE45H,cAAc,IAAK,MAAK55H,EAAEu2I,GAAE16H,KAAK,IAAI5b,EAAE,OAAO4hD,GAAEg/C,GAAE+4B,cAAc/3E,GAAEhmC,KAAK,GAAG,OAAO5b,EAAE4hD,GAAE5hD,EAAEs2I,GAAEv2I,MAAM,CAAC,GAAG,OAAOA,EAAE,MAAMrb,MAAM6oB,EAAE,MAAUxN,EAAE,CAAC45H,eAAP2c,GAAEv2I,GAAqB45H,cAAcmY,UAAUwE,GAAExE,UAAUsF,UAAUd,GAAEc,UAAU9uI,MAAMguI,GAAEhuI,MAAMsT,KAAK,MAAM,OAAOgmC,GAAEg/C,GAAE+4B,cAAc/3E,GAAE7hD,EAAE6hD,GAAEA,GAAEhmC,KAAK7b,CAAE,QAAO6hD,EAAE,CACle,SAAS01F,GAAGv3I,EAAEC,GAAG,MAAM,oBAAoBA,EAAEA,EAAED,GAAGC,CAAE,CACpD,SAASu3I,GAAGx3I,GAAG,IAAIC,EAAEq3I,KAAKvlJ,EAAEkO,EAAEsI,MAAM,GAAG,OAAOxW,EAAE,MAAMpN,MAAM6oB,EAAE,MAAMzb,EAAE0lJ,oBAAoBz3I,EAAE,IAAIghD,EAAEu1F,GAAEj9I,EAAE0nD,EAAEq2F,UAAU31I,EAAE3P,EAAEogJ,QAAQ,GAAG,OAAOzwI,EAAE,CAAC,GAAG,OAAOpI,EAAE,CAAC,IAAI2oD,EAAE3oD,EAAEuiB,KAAKviB,EAAEuiB,KAAKna,EAAEma,KAAKna,EAAEma,KAAKomC,CAAE,CAAAjB,EAAEq2F,UAAU/9I,EAAEoI,EAAE3P,EAAEogJ,QAAQ,IAAK,IAAG,OAAO74I,EAAE,CAACoI,EAAEpI,EAAEuiB,KAAKmlC,EAAEA,EAAE+wF,UAAU,IAAIn8I,EAAEqsD,EAAE,KAAK8B,EAAE,KAAK3yD,EAAEsQ,EAAE,EAAE,CAAC,IAAIq/C,EAAE3vD,EAAEmhJ,KAAK,IAAI+D,GAAGv1F,KAAKA,EAAE,OAAOgD,IAAIA,EAAEA,EAAEloC,KAAK,CAAC02H,KAAK,EAAEhuI,OAAOnT,EAAEmT,OAAOmzI,cAActmJ,EAAEsmJ,cAAcC,WAAWvmJ,EAAEumJ,WAAW97H,KAAK,OAAOmlC,EAAE5vD,EAAEsmJ,cAActmJ,EAAEumJ,WAAW33I,EAAEghD,EAAE5vD,EAAEmT,YAAY,CAAC,IAAIi4C,EAAE,CAAC+1F,KAAKxxF,EAAEx8C,OAAOnT,EAAEmT,OAAOmzI,cAActmJ,EAAEsmJ,cACngBC,WAAWvmJ,EAAEumJ,WAAW97H,KAAK,MAAM,OAAOkoC,GAAGnuD,EAAEmuD,EAAEvH,EAAEyF,EAAEjB,GAAG+C,EAAEA,EAAEloC,KAAK2gC,EAAEqkD,GAAEswC,OAAOpwF,EAAE8xF,IAAI9xF,CAAE,CAAA3vD,EAAEA,EAAEyqB,IAAK,OAAM,OAAOzqB,GAAGA,IAAIsQ,GAAG,OAAOqiD,EAAE9B,EAAEjB,EAAE+C,EAAEloC,KAAKjmB,EAAEuxI,GAAGnmF,EAAE/gD,EAAE25H,iBAAiBwX,IAAG,GAAInxI,EAAE25H,cAAc54E,EAAE/gD,EAAE8xI,UAAU9vF,EAAEhiD,EAAEo3I,UAAUtzF,EAAEhyD,EAAE6lJ,kBAAkB52F,CAAE,CAAgB,GAAG,QAAnBhhD,EAAEjO,EAAE2/I,aAAwB,CAACp4I,EAAE0G,EAAE,GAAG0B,EAAEpI,EAAEi5I,KAAK1xC,GAAEswC,OAAOzvI,EAAEmxI,IAAInxI,EAAEpI,EAAEA,EAAEuiB,WAAWviB,IAAI0G,EAAG,MAAK,OAAO1G,IAAIvH,EAAEo/I,MAAM,GAAG,MAAM,CAAClxI,EAAE25H,cAAc7nI,EAAE2S,SAAU,CAC/X,SAASmzI,GAAG73I,GAAG,IAAIC,EAAEq3I,KAAKvlJ,EAAEkO,EAAEsI,MAAM,GAAG,OAAOxW,EAAE,MAAMpN,MAAM6oB,EAAE,MAAMzb,EAAE0lJ,oBAAoBz3I,EAAE,IAAIghD,EAAEjvD,EAAE2S,SAASpL,EAAEvH,EAAEogJ,QAAQzwI,EAAEzB,EAAE25H,cAAc,GAAG,OAAOtgI,EAAE,CAACvH,EAAEogJ,QAAQ,KAAK,IAAIlwF,EAAE3oD,EAAEA,EAAEuiB,KAAK,GAAGna,EAAE1B,EAAE0B,EAAEugD,EAAE19C,QAAQ09C,EAAEA,EAAEpmC,WAAWomC,IAAI3oD,GAAG6tI,GAAGzlI,EAAEzB,EAAE25H,iBAAiBwX,IAAG,GAAInxI,EAAE25H,cAAcl4H,EAAE,OAAOzB,EAAEo3I,YAAYp3I,EAAE8xI,UAAUrwI,GAAG3P,EAAE6lJ,kBAAkBl2I,CAAE,OAAM,CAACA,EAAEs/C,EAAG,UAASuc,KAAM,CACrW,SAASu6E,GAAG93I,EAAEC,GAAG,IAAIlO,EAAE8uG,GAAE7/C,EAAEs2F,KAAKh+I,EAAE2G,IAAIyB,GAAGylI,GAAGnmF,EAAE44E,cAActgI,GAAsE,GAAnEoI,IAAIs/C,EAAE44E,cAActgI,EAAE83I,IAAG,GAAIpwF,EAAEA,EAAEz4C,MAAMwvI,GAAGC,GAAG1oJ,KAAK,KAAKyC,EAAEivD,EAAEhhD,GAAG,CAACA,IAAOghD,EAAEi3F,cAAch4I,GAAGyB,GAAG,OAAOmgD,IAAuB,EAApBA,GAAE+3E,cAAc/vH,IAAM,CAAuD,GAAtD9X,EAAE+P,OAAO,KAAKo2I,GAAG,EAAEC,GAAG7oJ,KAAK,KAAKyC,EAAEivD,EAAE1nD,EAAE2G,QAAG,EAAO,MAAS,OAAOm4I,GAAE,MAAMzzJ,MAAM6oB,EAAE,MAAM,KAAQ,GAAH8oI,KAAQ+B,GAAGtmJ,EAAEkO,EAAE3G,EAAG,QAAOA,CAAE,UAAS++I,GAAGr4I,EAAEC,EAAElO,GAAGiO,EAAE8B,OAAO,MAAM9B,EAAE,CAACi4I,YAAYh4I,EAAExT,MAAMsF,GAAmB,QAAhBkO,EAAE4gG,GAAEixC,cAAsB7xI,EAAE,CAACq4I,WAAW,KAAKC,OAAO,MAAM13C,GAAEixC,YAAY7xI,EAAEA,EAAEs4I,OAAO,CAACv4I,IAAgB,QAAXjO,EAAEkO,EAAEs4I,QAAgBt4I,EAAEs4I,OAAO,CAACv4I,GAAGjO,EAAEJ,KAAKqO,EAAI,CACnf,SAASm4I,GAAGn4I,EAAEC,EAAElO,EAAEivD,GAAG/gD,EAAExT,MAAMsF,EAAEkO,EAAEg4I,YAAYj3F,EAAEw3F,GAAGv4I,IAAIw4I,GAAGz4I,EAAG,UAASg4I,GAAGh4I,EAAEC,EAAElO,GAAG,OAAOA,GAAE,WAAWymJ,GAAGv4I,IAAIw4I,GAAGz4I,EAAG,GAAE,UAASw4I,GAAGx4I,GAAG,IAAIC,EAAED,EAAEi4I,YAAYj4I,EAAEA,EAAEvT,MAAM,IAAI,IAAIsF,EAAEkO,IAAI,OAAOknI,GAAGnnI,EAAEjO,EAAqB,CAAlB,MAAMivD,GAAG,OAAM,CAAG,CAAC,UAASy3F,GAAGz4I,GAAG,IAAIC,EAAE0xI,GAAG3xI,EAAE,GAAG,OAAOC,GAAGszI,GAAGtzI,EAAED,EAAE,GAAG,EAAG,CACnQ,SAAS04I,GAAG14I,GAAG,IAAIC,EAAEm3I,KAA8M,MAAzM,oBAAoBp3I,IAAIA,EAAEA,KAAKC,EAAE25H,cAAc35H,EAAE8xI,UAAU/xI,EAAEA,EAAE,CAACmyI,QAAQ,KAAKT,YAAY,KAAKP,MAAM,EAAEzsI,SAAS,KAAK+yI,oBAAoBF,GAAGK,kBAAkB53I,GAAGC,EAAEsI,MAAMvI,EAAEA,EAAEA,EAAE0E,SAASi0I,GAAGrpJ,KAAK,KAAKuxG,GAAE7gG,GAAS,CAACC,EAAE25H,cAAc55H,EAAG,CAC7P,SAASk4I,GAAGl4I,EAAEC,EAAElO,EAAEivD,GAA8O,OAA3OhhD,EAAE,CAAC6J,IAAI7J,EAAEhQ,OAAOiQ,EAAEgP,QAAQld,EAAE6mJ,KAAK53F,EAAEnlC,KAAK,MAAsB,QAAhB5b,EAAE4gG,GAAEixC,cAAsB7xI,EAAE,CAACq4I,WAAW,KAAKC,OAAO,MAAM13C,GAAEixC,YAAY7xI,EAAEA,EAAEq4I,WAAWt4I,EAAE6b,KAAK7b,GAAmB,QAAfjO,EAAEkO,EAAEq4I,YAAoBr4I,EAAEq4I,WAAWt4I,EAAE6b,KAAK7b,GAAGghD,EAAEjvD,EAAE8pB,KAAK9pB,EAAE8pB,KAAK7b,EAAEA,EAAE6b,KAAKmlC,EAAE/gD,EAAEq4I,WAAWt4I,GAAWA,CAAE,UAAS64I,KAAK,OAAOvB,KAAK1d,aAAc,UAASkf,GAAG94I,EAAEC,EAAElO,EAAEivD,GAAG,IAAI1nD,EAAE89I,KAAKv2C,GAAE/+F,OAAO9B,EAAE1G,EAAEsgI,cAAcse,GAAG,EAAEj4I,EAAElO,OAAE,OAAO,IAASivD,EAAE,KAAKA,EAAG,CAC/Y,SAAS+3F,GAAG/4I,EAAEC,EAAElO,EAAEivD,GAAG,IAAI1nD,EAAEg+I,KAAKt2F,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAIt/C,OAAE,EAAO,GAAG,OAAO60I,GAAE,CAAC,IAAIt0F,EAAEs0F,GAAE3c,cAA0B,GAAZl4H,EAAEugD,EAAEhzC,QAAW,OAAO+xC,GAAG61F,GAAG71F,EAAEiB,EAAE22F,MAAmC,YAA5Bt/I,EAAEsgI,cAAcse,GAAGj4I,EAAElO,EAAE2P,EAAEs/C,GAAW,CAAA6/C,GAAE/+F,OAAO9B,EAAE1G,EAAEsgI,cAAcse,GAAG,EAAEj4I,EAAElO,EAAE2P,EAAEs/C,EAAG,UAASg4F,GAAGh5I,EAAEC,GAAG,OAAO64I,GAAG,QAAQ,EAAE94I,EAAEC,EAAG,UAAS83I,GAAG/3I,EAAEC,GAAG,OAAO84I,GAAG,KAAK,EAAE/4I,EAAEC,EAAG,UAASg5I,GAAGj5I,EAAEC,GAAG,OAAO84I,GAAG,EAAE,EAAE/4I,EAAEC,EAAG,UAASi5I,GAAGl5I,EAAEC,GAAG,OAAO84I,GAAG,EAAE,EAAE/4I,EAAEC,EAAG,CACjX,SAASk5I,GAAGn5I,EAAEC,GAAG,MAAG,oBAAoBA,GAASD,EAAEA,IAAIC,EAAED,GAAG,WAAWC,EAAE,KAAM,GAAI,OAAOA,QAAG,IAASA,GAASD,EAAEA,IAAIC,EAAEigB,QAAQlgB,EAAE,WAAWC,EAAEigB,QAAQ,IAAK,QAA3E,CAA4E,UAASk5H,GAAGp5I,EAAEC,EAAElO,GAA6C,OAA1CA,EAAE,OAAOA,QAAG,IAASA,EAAEA,EAAEnN,OAAO,CAACob,IAAI,KAAY+4I,GAAG,EAAE,EAAEI,GAAG7pJ,KAAK,KAAK2Q,EAAED,GAAGjO,EAAG,UAASsnJ,KAAM,UAASC,GAAGt5I,EAAEC,GAAG,IAAIlO,EAAEulJ,KAAKr3I,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAI+gD,EAAEjvD,EAAE6nI,cAAc,OAAG,OAAO54E,GAAG,OAAO/gD,GAAG42I,GAAG52I,EAAE+gD,EAAE,IAAWA,EAAE,IAAGjvD,EAAE6nI,cAAc,CAAC55H,EAAEC,GAAUD,EAAE,CAC9Z,SAASu5I,GAAGv5I,EAAEC,GAAG,IAAIlO,EAAEulJ,KAAKr3I,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAI+gD,EAAEjvD,EAAE6nI,cAAc,OAAG,OAAO54E,GAAG,OAAO/gD,GAAG42I,GAAG52I,EAAE+gD,EAAE,IAAWA,EAAE,IAAGhhD,EAAEA,IAAIjO,EAAE6nI,cAAc,CAAC55H,EAAEC,GAAUD,EAAE,UAASw5I,GAAGx5I,EAAEC,EAAElO,GAAG,OAAG,KAAQ,GAAHukJ,KAAct2I,EAAE+xI,YAAY/xI,EAAE+xI,WAAU,EAAGX,IAAG,GAAIpxI,EAAE45H,cAAc7nI,IAAEo1I,GAAGp1I,EAAEkO,KAAKlO,EAAE4qI,KAAK97B,GAAEswC,OAAOp/I,EAAE8gJ,IAAI9gJ,EAAEiO,EAAE+xI,WAAU,GAAW9xI,EAAE,UAASw5I,GAAGz5I,EAAEC,GAAG,IAAIlO,EAAEirI,GAAEA,GAAE,IAAIjrI,GAAG,EAAEA,EAAEA,EAAE,EAAEiO,GAAE,GAAI,IAAIghD,EAAEq1F,GAAG/W,WAAW+W,GAAG/W,WAAW,CAAC,EAAE,IAAIt/H,GAAE,GAAIC,GAAgC,CAA1C,QAAsB+8H,GAAEjrI,EAAEskJ,GAAG/W,WAAWt+E,CAAE,CAAC,UAAS04F,KAAK,OAAOpC,KAAK1d,aAAc,CAC3d,SAAS+f,GAAG35I,EAAEC,EAAElO,GAAG,IAAIivD,EAAEsyF,GAAGtzI,GAAkE,GAA/DjO,EAAE,CAACwgJ,KAAKvxF,EAAEz8C,OAAOxS,EAAE2lJ,eAAc,EAAGC,WAAW,KAAK97H,KAAK,MAAS+9H,GAAG55I,GAAG65I,GAAG55I,EAAElO,QAAQ,GAAiB,QAAdA,EAAE0/I,GAAGzxI,EAAEC,EAAElO,EAAEivD,IAAY,CAAWuyF,GAAGxhJ,EAAEiO,EAAEghD,EAAXg1B,MAAgB8jE,GAAG/nJ,EAAEkO,EAAE+gD,EAAG,CAAC,CAChL,SAAS23F,GAAG34I,EAAEC,EAAElO,GAAG,IAAIivD,EAAEsyF,GAAGtzI,GAAG1G,EAAE,CAACi5I,KAAKvxF,EAAEz8C,OAAOxS,EAAE2lJ,eAAc,EAAGC,WAAW,KAAK97H,KAAK,MAAM,GAAG+9H,GAAG55I,GAAG65I,GAAG55I,EAAE3G,OAAO,CAAC,IAAIoI,EAAE1B,EAAE05H,UAAU,GAAG,IAAI15H,EAAEmxI,QAAQ,OAAOzvI,GAAG,IAAIA,EAAEyvI,QAAiC,QAAxBzvI,EAAEzB,EAAEw3I,qBAA8B,IAAI,IAAIx1F,EAAEhiD,EAAE23I,kBAAkBhiJ,EAAE8L,EAAEugD,EAAElwD,GAAqC,GAAlCuH,EAAEo+I,eAAc,EAAGp+I,EAAEq+I,WAAW/hJ,EAAKuxI,GAAGvxI,EAAEqsD,GAAG,CAAC,IAAI8B,EAAE9jD,EAAEyxI,YAA+E,OAAnE,OAAO3tF,GAAGzqD,EAAEuiB,KAAKviB,EAAEk4I,GAAGvxI,KAAK3G,EAAEuiB,KAAKkoC,EAAEloC,KAAKkoC,EAAEloC,KAAKviB,QAAG2G,EAAEyxI,YAAYp4I,EAAS,CAAoB,CAAnB,MAAMlI,GAAI,CAAuB,QAAdW,EAAE0/I,GAAGzxI,EAAEC,EAAE3G,EAAE0nD,MAAoBuyF,GAAGxhJ,EAAEiO,EAAEghD,EAAb1nD,EAAE08E,MAAgB8jE,GAAG/nJ,EAAEkO,EAAE+gD,GAAI,CAAC,CAChd,SAAS44F,GAAG55I,GAAG,IAAIC,EAAED,EAAE05H,UAAU,OAAO15H,IAAI6gG,IAAG,OAAO5gG,GAAGA,IAAI4gG,EAAE,UAASg5C,GAAG75I,EAAEC,GAAGw2I,GAAGD,IAAG,EAAG,IAAIzkJ,EAAEiO,EAAEmyI,QAAQ,OAAOpgJ,EAAEkO,EAAE4b,KAAK5b,GAAGA,EAAE4b,KAAK9pB,EAAE8pB,KAAK9pB,EAAE8pB,KAAK5b,GAAGD,EAAEmyI,QAAQlyI,CAAE,UAAS65I,GAAG95I,EAAEC,EAAElO,GAAG,GAAG,KAAO,QAAFA,GAAW,CAAC,IAAIivD,EAAE/gD,EAAEkxI,MAAwBp/I,GAAlBivD,GAAGhhD,EAAEo8H,aAAkBn8H,EAAEkxI,MAAMp/I,EAAEgrI,GAAG/8H,EAAEjO,EAAG,CAAC,CAC/P,IAAImlJ,GAAG,CAAC6C,YAAY1I,GAAG2I,YAAYpD,GAAEqD,WAAWrD,GAAE/tB,UAAU+tB,GAAEsD,oBAAoBtD,GAAEuD,mBAAmBvD,GAAEhuB,gBAAgBguB,GAAEwD,QAAQxD,GAAEyD,WAAWzD,GAAE0D,OAAO1D,GAAE2D,SAAS3D,GAAE4D,cAAc5D,GAAE6D,iBAAiB7D,GAAE8D,cAAc9D,GAAE+D,iBAAiB/D,GAAEgE,qBAAqBhE,GAAEiE,MAAMjE,GAAEkE,0BAAyB,GAAI/D,GAAG,CAACgD,YAAY1I,GAAG2I,YAAY,SAASh6I,EAAEC,GAA4C,OAAzCm3I,KAAKxd,cAAc,CAAC55H,OAAE,IAASC,EAAE,KAAKA,GAAUD,CAAE,EAACi6I,WAAW5I,GAAGxoB,UAAUmwB,GAAGkB,oBAAoB,SAASl6I,EAAEC,EAAElO,GAA6C,OAA1CA,EAAE,OAAOA,QAAG,IAASA,EAAEA,EAAEnN,OAAO,CAACob,IAAI,KAAY84I,GAAG,QAC3f,EAAEK,GAAG7pJ,KAAK,KAAK2Q,EAAED,GAAGjO,EAAG,EAAC62H,gBAAgB,SAAS5oH,EAAEC,GAAG,OAAO64I,GAAG,QAAQ,EAAE94I,EAAEC,EAAG,EAACk6I,mBAAmB,SAASn6I,EAAEC,GAAG,OAAO64I,GAAG,EAAE,EAAE94I,EAAEC,EAAG,EAACm6I,QAAQ,SAASp6I,EAAEC,GAAG,IAAIlO,EAAEqlJ,KAAqD,OAAhDn3I,OAAE,IAASA,EAAE,KAAKA,EAAED,EAAEA,IAAIjO,EAAE6nI,cAAc,CAAC55H,EAAEC,GAAUD,CAAE,EAACq6I,WAAW,SAASr6I,EAAEC,EAAElO,GAAG,IAAIivD,EAAEo2F,KAAkM,OAA7Ln3I,OAAE,IAASlO,EAAEA,EAAEkO,GAAGA,EAAE+gD,EAAE44E,cAAc54E,EAAE+wF,UAAU9xI,EAAED,EAAE,CAACmyI,QAAQ,KAAKT,YAAY,KAAKP,MAAM,EAAEzsI,SAAS,KAAK+yI,oBAAoBz3I,EAAE43I,kBAAkB33I,GAAG+gD,EAAEz4C,MAAMvI,EAAEA,EAAEA,EAAE0E,SAASi1I,GAAGrqJ,KAAK,KAAKuxG,GAAE7gG,GAAS,CAACghD,EAAE44E,cAAc55H,EAAG,EAACs6I,OAAO,SAASt6I,GAC3d,OAAdA,EAAE,CAACkgB,QAAQlgB,GAAhBo3I,KAA4Bxd,cAAc55H,CAAE,EAACu6I,SAAS7B,GAAG8B,cAAcnB,GAAGoB,iBAAiB,SAASz6I,GAAG,OAAOo3I,KAAKxd,cAAc55H,CAAE,EAAC06I,cAAc,WAAW,IAAI16I,EAAE04I,IAAG,GAAIz4I,EAAED,EAAE,GAA6C,OAA1CA,EAAEy5I,GAAGnqJ,KAAK,KAAK0Q,EAAE,IAAIo3I,KAAKxd,cAAc55H,EAAQ,CAACC,EAAED,EAAG,EAAC26I,iBAAiB,WAAY,EAACC,qBAAqB,SAAS56I,EAAEC,EAAElO,GAAG,IAAIivD,EAAE6/C,GAAEvnG,EAAE89I,KAAK,GAAG/H,GAAE,CAAC,QAAG,IAASt9I,EAAE,MAAMpN,MAAM6oB,EAAE,MAAMzb,EAAEA,GAAI,KAAI,CAAO,GAANA,EAAEkO,IAAO,OAAOm4I,GAAE,MAAMzzJ,MAAM6oB,EAAE,MAAM,KAAQ,GAAH8oI,KAAQ+B,GAAGr3F,EAAE/gD,EAAElO,EAAG,CAAAuH,EAAEsgI,cAAc7nI,EAAE,IAAI2P,EAAE,CAACjV,MAAMsF,EAAEkmJ,YAAYh4I,GACvZ,OAD0Z3G,EAAEiP,MAAM7G,EAAEs3I,GAAGhB,GAAG1oJ,KAAK,KAAK0xD,EACpft/C,EAAE1B,GAAG,CAACA,IAAIghD,EAAEl/C,OAAO,KAAKo2I,GAAG,EAAEC,GAAG7oJ,KAAK,KAAK0xD,EAAEt/C,EAAE3P,EAAEkO,QAAG,EAAO,MAAalO,CAAE,EAAC8oJ,MAAM,WAAW,IAAI76I,EAAEo3I,KAAKn3I,EAAEm4I,GAAE2C,iBAAiB,GAAG1L,GAAE,CAAC,IAAIt9I,EAAE+8I,GAAkD7uI,EAAE,IAAIA,EAAE,KAA9ClO,GAAH88I,KAAU,GAAG,GAAGlT,GAAhBkT,IAAsB,IAAI/2I,SAAS,IAAI/F,GAAuB,GAAPA,EAAE2kJ,QAAWz2I,GAAG,IAAIlO,EAAE+F,SAAS,KAAKmI,GAAG,GAAI,MAAYA,EAAE,IAAIA,EAAE,KAAflO,EAAE4kJ,MAAmB7+I,SAAS,IAAI,IAAI,OAAOkI,EAAE45H,cAAc35H,CAAE,EAAC66I,0BAAyB,GAAI9D,GAAG,CAAC+C,YAAY1I,GAAG2I,YAAYV,GAAGW,WAAW5I,GAAGxoB,UAAUkvB,GAAGmC,oBAAoBd,GAAGe,mBAAmBlB,GAAGrwB,gBAAgBswB,GAAGkB,QAAQb,GAAGc,WAAW7C,GAAG8C,OAAOzB,GAAG0B,SAAS,WAAW,OAAO/C,GAAGD,GAAI,EACthBiD,cAAcnB,GAAGoB,iBAAiB,SAASz6I,GAAc,OAAOw5I,GAAZlC,KAAiBf,GAAE3c,cAAc55H,EAAG,EAAC06I,cAAc,WAAgD,MAAM,CAArClD,GAAGD,IAAI,GAAKD,KAAK1d,cAA0B,EAAC+gB,iBAAiBp9E,GAAGq9E,qBAAqB9C,GAAG+C,MAAMnB,GAAGoB,0BAAyB,GAAI7D,GAAG,CAAC8C,YAAY1I,GAAG2I,YAAYV,GAAGW,WAAW5I,GAAGxoB,UAAUkvB,GAAGmC,oBAAoBd,GAAGe,mBAAmBlB,GAAGrwB,gBAAgBswB,GAAGkB,QAAQb,GAAGc,WAAWxC,GAAGyC,OAAOzB,GAAG0B,SAAS,WAAW,OAAO1C,GAAGN,GAAI,EAACiD,cAAcnB,GAAGoB,iBAAiB,SAASz6I,GAAG,IAAIC,EAAEq3I,KAAK,OAAO,OACzff,GAAEt2I,EAAE25H,cAAc55H,EAAEw5I,GAAGv5I,EAAEs2I,GAAE3c,cAAc55H,EAAG,EAAC06I,cAAc,WAAgD,MAAM,CAArC7C,GAAGN,IAAI,GAAKD,KAAK1d,cAA0B,EAAC+gB,iBAAiBp9E,GAAGq9E,qBAAqB9C,GAAG+C,MAAMnB,GAAGoB,0BAAyB,GAAI,SAASE,GAAGh7I,EAAEC,GAAG,IAAI,IAAIlO,EAAE,GAAGivD,EAAE/gD,EAAE,GAAGlO,GAAG8/H,EAAG7wE,GAAGA,EAAEA,EAAE/kC,aAAa+kC,GAAG,IAAI1nD,EAAEvH,CAAiE,CAA/D,MAAM2P,GAAGpI,EAAE,6BAA6BoI,EAAEnQ,QAAQ,KAAKmQ,EAAE/M,KAAM,OAAM,CAAClI,MAAMuT,EAAElO,OAAOmO,EAAEtL,MAAM2E,EAAE2hJ,OAAO,KAAM,UAASC,GAAGl7I,EAAEC,EAAElO,GAAG,MAAM,CAACtF,MAAMuT,EAAElO,OAAO,KAAK6C,MAAM,MAAM5C,EAAEA,EAAE,KAAKkpJ,OAAO,MAAMh7I,EAAEA,EAAE,KAAM,CAC1d,SAASk7I,GAAGn7I,EAAEC,GAAG,IAAIxB,QAAQzK,MAAMiM,EAAExT,MAAiD,CAA1C,MAAMsF,GAAG1E,YAAW,WAAW,MAAM0E,CAAG,GAAE,CAAC,KAAIqpJ,GAAG,oBAAoB12E,QAAQA,QAAQF,IAAI,SAAS62E,GAAGr7I,EAAEC,EAAElO,IAAGA,EAAEwiF,IAAI,EAAExiF,IAAK8X,IAAI,EAAE9X,EAAEyJ,QAAQ,CAACwO,QAAQ,MAAM,IAAIg3C,EAAE/gD,EAAExT,MAAsD,OAAhDsF,EAAEmL,SAAS,WAAWo+I,KAAKA,IAAG,EAAGC,GAAGv6F,GAAGm6F,GAAGn7I,EAAEC,EAAG,EAAQlO,CAAE,CAC5Q,SAASypJ,GAAGx7I,EAAEC,EAAElO,IAAGA,EAAEwiF,IAAI,EAAExiF,IAAK8X,IAAI,EAAE,IAAIm3C,EAAEhhD,EAAEjR,KAAKs0G,yBAAyB,GAAG,oBAAoBriD,EAAE,CAAC,IAAI1nD,EAAE2G,EAAExT,MAAMsF,EAAEyJ,QAAQ,WAAW,OAAOwlD,EAAE1nD,EAAG,EAACvH,EAAEmL,SAAS,WAAWi+I,GAAGn7I,EAAEC,EAAG,CAAC,KAAIyB,EAAE1B,EAAEu4H,UAA8O,OAApO,OAAO72H,GAAG,oBAAoBA,EAAE+5I,oBAAoB1pJ,EAAEmL,SAAS,WAAWi+I,GAAGn7I,EAAEC,GAAG,oBAAoB+gD,IAAI,OAAO06F,GAAGA,GAAG,IAAIj3E,IAAI,CAAC3zE,OAAO4qJ,GAAGnsI,IAAIze,OAAO,IAAIiB,EAAEkO,EAAEtL,MAAM7D,KAAK2qJ,kBAAkBx7I,EAAExT,MAAM,CAACkvJ,eAAe,OAAO5pJ,EAAEA,EAAE,IAAK,GAASA,CAAE,CACpb,SAAS6pJ,GAAG57I,EAAEC,EAAElO,GAAG,IAAIivD,EAAEhhD,EAAE67I,UAAU,GAAG,OAAO76F,EAAE,CAACA,EAAEhhD,EAAE67I,UAAU,IAAIT,GAAG,IAAI9hJ,EAAE,IAAImrE,IAAIzjB,EAAE5zC,IAAInN,EAAE3G,EAAG,WAAgB,KAAXA,EAAE0nD,EAAE3zC,IAAIpN,MAAgB3G,EAAE,IAAImrE,IAAIzjB,EAAE5zC,IAAInN,EAAE3G,IAAIA,EAAEkvD,IAAIz2D,KAAKuH,EAAEiW,IAAIxd,GAAGiO,EAAE87I,GAAGxsJ,KAAK,KAAK0Q,EAAEC,EAAElO,GAAGkO,EAAEhP,KAAK+O,EAAEA,GAAI,UAAS+7I,GAAG/7I,GAAG,EAAE,CAAC,IAAIC,EAA4E,IAAvEA,EAAE,KAAKD,EAAE6J,OAAsB5J,EAAE,QAApBA,EAAED,EAAE45H,gBAAyB,OAAO35H,EAAE45H,YAAuB55H,EAAE,OAAOD,EAAEA,EAAEA,EAAEic,MAAO,OAAM,OAAOjc,GAAG,OAAO,IAAK,CACjW,SAASg8I,GAAGh8I,EAAEC,EAAElO,EAAEivD,EAAE1nD,GAAG,OAAG,KAAY,EAAP0G,EAAEkhD,OAAelhD,IAAIC,EAAED,EAAE8B,OAAO,OAAO9B,EAAE8B,OAAO,IAAI/P,EAAE+P,OAAO,OAAO/P,EAAE+P,QAAQ,MAAM,IAAI/P,EAAE8X,MAAM,OAAO9X,EAAE2nI,UAAU3nI,EAAE8X,IAAI,KAAI5J,EAAEs0E,IAAI,EAAE,IAAK1qE,IAAI,EAAE2oI,GAAGzgJ,EAAEkO,EAAE,KAAKlO,EAAEo/I,OAAO,GAAGnxI,IAAEA,EAAE8B,OAAO,MAAM9B,EAAEmxI,MAAM73I,EAAS0G,EAAE,KAAIi8I,GAAG1rB,EAAG2rB,kBAAkB9K,IAAG,EAAG,SAAS+K,GAAGn8I,EAAEC,EAAElO,EAAEivD,GAAG/gD,EAAEmK,MAAM,OAAOpK,EAAEo1I,GAAGn1I,EAAE,KAAKlO,EAAEivD,GAAGm0F,GAAGl1I,EAAED,EAAEoK,MAAMrY,EAAEivD,EAAG,CACpV,SAASo7F,GAAGp8I,EAAEC,EAAElO,EAAEivD,EAAE1nD,GAAGvH,EAAEA,EAAEmyG,OAAO,IAAIxiG,EAAEzB,EAAEwE,IAAqC,OAAjCwsI,GAAGhxI,EAAE3G,GAAG0nD,EAAE81F,GAAG92I,EAAEC,EAAElO,EAAEivD,EAAEt/C,EAAEpI,GAAGvH,EAAEolJ,KAAQ,OAAOn3I,GAAIoxI,IAA2E/B,IAAGt9I,GAAGk9I,GAAGhvI,GAAGA,EAAE6B,OAAO,EAAEq6I,GAAGn8I,EAAEC,EAAE+gD,EAAE1nD,GAAU2G,EAAEmK,QAA7GnK,EAAE6xI,YAAY9xI,EAAE8xI,YAAY7xI,EAAE6B,QAAQ,KAAK9B,EAAEmxI,QAAQ73I,EAAE+iJ,GAAGr8I,EAAEC,EAAE3G,GAAqD,CAC1N,SAASgjJ,GAAGt8I,EAAEC,EAAElO,EAAEivD,EAAE1nD,GAAG,GAAG,OAAO0G,EAAE,CAAC,IAAI0B,EAAE3P,EAAEhD,KAAK,MAAG,oBAAoB2S,GAAI66I,GAAG76I,SAAI,IAASA,EAAEwhG,cAAc,OAAOnxG,EAAE8iC,cAAS,IAAS9iC,EAAEmxG,eAAoDljG,EAAE+0I,GAAGhjJ,EAAEhD,KAAK,KAAKiyD,EAAE/gD,EAAEA,EAAEihD,KAAK5nD,IAAKmL,IAAIxE,EAAEwE,IAAIzE,EAAEic,OAAOhc,EAASA,EAAEmK,MAAMpK,IAArGC,EAAE4J,IAAI,GAAG5J,EAAElR,KAAK2S,EAAE86I,GAAGx8I,EAAEC,EAAEyB,EAAEs/C,EAAE1nD,GAA0E,CAAU,GAAVoI,EAAE1B,EAAEoK,MAAS,KAAKpK,EAAEmxI,MAAM73I,GAAG,CAAC,IAAI2oD,EAAEvgD,EAAEwuI,cAA0C,IAAhBn+I,EAAE,QAAdA,EAAEA,EAAE8iC,SAAmB9iC,EAAEq1I,IAAQnlF,EAAEjB,IAAIhhD,EAAEyE,MAAMxE,EAAEwE,IAAI,OAAO43I,GAAGr8I,EAAEC,EAAE3G,EAAG,CAA4C,OAA5C2G,EAAE6B,OAAO,GAAE9B,EAAE60I,GAAGnzI,EAAEs/C,IAAKv8C,IAAIxE,EAAEwE,IAAIzE,EAAEic,OAAOhc,EAASA,EAAEmK,MAAMpK,CAAE,CAC3b,SAASw8I,GAAGx8I,EAAEC,EAAElO,EAAEivD,EAAE1nD,GAAG,GAAG,OAAO0G,EAAE,CAAC,IAAI0B,EAAE1B,EAAEkwI,cAAc,GAAG9I,GAAG1lI,EAAEs/C,IAAIhhD,EAAEyE,MAAMxE,EAAEwE,IAAI,IAAG2sI,IAAG,EAAGnxI,EAAE0vI,aAAa3uF,EAAEt/C,EAAE,KAAK1B,EAAEmxI,MAAM73I,GAAsC,OAAO2G,EAAEkxI,MAAMnxI,EAAEmxI,MAAMkL,GAAGr8I,EAAEC,EAAE3G,GAAjE,KAAa,OAAR0G,EAAE8B,SAAgBsvI,IAAG,EAAS,CAAiC,QAAOqL,GAAGz8I,EAAEC,EAAElO,EAAEivD,EAAE1nD,EAAG,CACzN,SAASojJ,GAAG18I,EAAEC,EAAElO,GAAG,IAAIivD,EAAE/gD,EAAE0vI,aAAar2I,EAAE0nD,EAAE32C,SAAS3I,EAAE,OAAO1B,EAAEA,EAAE45H,cAAc,KAAK,GAAG,WAAW54E,EAAEE,KAAK,GAAG,KAAY,EAAPjhD,EAAEihD,MAAQjhD,EAAE25H,cAAc,CAAC+iB,UAAU,EAAEC,UAAU,KAAKC,YAAY,MAAM3P,GAAE4P,GAAGC,IAAIA,IAAIhrJ,MAAM,CAAC,GAAG,KAAO,WAAFA,GAAc,OAAOiO,EAAE,OAAO0B,EAAEA,EAAEi7I,UAAU5qJ,EAAEA,EAAEkO,EAAEkxI,MAAMlxI,EAAE+wI,WAAW,WAAW/wI,EAAE25H,cAAc,CAAC+iB,UAAU38I,EAAE48I,UAAU,KAAKC,YAAY,MAAM58I,EAAE6xI,YAAY,KAAK5E,GAAE4P,GAAGC,IAAIA,IAAI/8I,EAAE,KAAKC,EAAE25H,cAAc,CAAC+iB,UAAU,EAAEC,UAAU,KAAKC,YAAY,MAAM77F,EAAE,OAAOt/C,EAAEA,EAAEi7I,UAAU5qJ,EAAEm7I,GAAE4P,GAAGC,IAAIA,IAAI/7F,CAAE,MAAK,OACtft/C,GAAGs/C,EAAEt/C,EAAEi7I,UAAU5qJ,EAAEkO,EAAE25H,cAAc,MAAM54E,EAAEjvD,EAAEm7I,GAAE4P,GAAGC,IAAIA,IAAI/7F,EAAc,OAAZm7F,GAAGn8I,EAAEC,EAAE3G,EAAEvH,GAAUkO,EAAEmK,KAAM,UAAS4yI,GAAGh9I,EAAEC,GAAG,IAAIlO,EAAEkO,EAAEwE,KAAO,OAAOzE,GAAG,OAAOjO,GAAG,OAAOiO,GAAGA,EAAEyE,MAAM1S,KAAEkO,EAAE6B,OAAO,IAAI7B,EAAE6B,OAAO,QAAQ,UAAS26I,GAAGz8I,EAAEC,EAAElO,EAAEivD,EAAE1nD,GAAG,IAAIoI,EAAE+rI,GAAG17I,GAAGs7I,GAAGt2C,GAAE72E,QAAmD,OAA3Cxe,EAAE4rI,GAAGrtI,EAAEyB,GAAGuvI,GAAGhxI,EAAE3G,GAAGvH,EAAE+kJ,GAAG92I,EAAEC,EAAElO,EAAEivD,EAAEt/C,EAAEpI,GAAG0nD,EAAEm2F,KAAQ,OAAOn3I,GAAIoxI,IAA2E/B,IAAGruF,GAAGiuF,GAAGhvI,GAAGA,EAAE6B,OAAO,EAAEq6I,GAAGn8I,EAAEC,EAAElO,EAAEuH,GAAU2G,EAAEmK,QAA7GnK,EAAE6xI,YAAY9xI,EAAE8xI,YAAY7xI,EAAE6B,QAAQ,KAAK9B,EAAEmxI,QAAQ73I,EAAE+iJ,GAAGr8I,EAAEC,EAAE3G,GAAqD,CACna,SAAS2jJ,GAAGj9I,EAAEC,EAAElO,EAAEivD,EAAE1nD,GAAG,GAAGm0I,GAAG17I,GAAG,CAAC,IAAI2P,GAAE,EAAGosI,GAAG7tI,EAAG,MAAKyB,GAAE,EAAW,GAARuvI,GAAGhxI,EAAE3G,GAAM,OAAO2G,EAAEs4H,UAAU2kB,GAAGl9I,EAAEC,GAAG4zI,GAAG5zI,EAAElO,EAAEivD,GAAGkzF,GAAGj0I,EAAElO,EAAEivD,EAAE1nD,GAAG0nD,GAAE,OAAQ,GAAG,OAAOhhD,EAAE,CAAC,IAAIiiD,EAAEhiD,EAAEs4H,UAAU3iI,EAAEqK,EAAEiwI,cAAcjuF,EAAE3hD,MAAM1K,EAAE,IAAImuD,EAAE9B,EAAEryD,QAAQwB,EAAEW,EAAEixG,YAAY,kBAAkB5xG,GAAG,OAAOA,EAAEA,EAAEigJ,GAAGjgJ,GAAyBA,EAAEk8I,GAAGrtI,EAA1B7O,EAAEq8I,GAAG17I,GAAGs7I,GAAGt2C,GAAE72E,SAAmB,IAAI6gC,EAAEhvD,EAAEuxG,yBAAyB9mD,EAAE,oBAAoBuE,GAAG,oBAAoBkB,EAAEkyF,wBAAwB33F,GAAG,oBAAoByF,EAAEgyF,kCAAkC,oBAAoBhyF,EAAE+xF,4BAC1dp+I,IAAIorD,GAAG+C,IAAI3yD,IAAI2iJ,GAAG9zI,EAAEgiD,EAAEjB,EAAE5vD,GAAGwgJ,IAAG,EAAG,IAAIpwI,EAAEvB,EAAE25H,cAAc33E,EAAE95C,MAAM3G,EAAEoxI,GAAG3yI,EAAE+gD,EAAEiB,EAAE3oD,GAAGyqD,EAAE9jD,EAAE25H,cAAchkI,IAAIorD,GAAGx/C,IAAIuiD,GAAGqpF,GAAGltH,SAAS0xH,IAAI,oBAAoB7wF,IAAIkyF,GAAGhzI,EAAElO,EAAEgvD,EAAEC,GAAG+C,EAAE9jD,EAAE25H,gBAAgBhkI,EAAEg8I,IAAI8B,GAAGzzI,EAAElO,EAAE6D,EAAEorD,EAAEx/C,EAAEuiD,EAAE3yD,KAAKorD,GAAG,oBAAoByF,EAAEmyF,2BAA2B,oBAAoBnyF,EAAEoyF,qBAAqB,oBAAoBpyF,EAAEoyF,oBAAoBpyF,EAAEoyF,qBAAqB,oBAAoBpyF,EAAEmyF,2BAA2BnyF,EAAEmyF,6BAA6B,oBAAoBnyF,EAAEqyF,oBAAoBr0I,EAAE6B,OAAO,WAClf,oBAAoBmgD,EAAEqyF,oBAAoBr0I,EAAE6B,OAAO,SAAS7B,EAAEiwI,cAAclvF,EAAE/gD,EAAE25H,cAAc71E,GAAG9B,EAAE3hD,MAAM0gD,EAAEiB,EAAE95C,MAAM47C,EAAE9B,EAAEryD,QAAQwB,EAAE4vD,EAAEprD,IAAI,oBAAoBqsD,EAAEqyF,oBAAoBr0I,EAAE6B,OAAO,SAASk/C,GAAE,EAAI,KAAI,CAACiB,EAAEhiD,EAAEs4H,UAAU8Z,GAAGryI,EAAEC,GAAGrK,EAAEqK,EAAEiwI,cAAc9+I,EAAE6O,EAAElR,OAAOkR,EAAEyrG,YAAY91G,EAAE26I,GAAGtwI,EAAElR,KAAK6G,GAAGqsD,EAAE3hD,MAAMlP,EAAEorD,EAAEv8C,EAAE0vI,aAAanuI,EAAEygD,EAAEryD,QAAwB,kBAAhBm0D,EAAEhyD,EAAEixG,cAAiC,OAAOj/C,EAAEA,EAAEstF,GAAGttF,GAAyBA,EAAEupF,GAAGrtI,EAA1B8jD,EAAE0pF,GAAG17I,GAAGs7I,GAAGt2C,GAAE72E,SAAmB,IAAI+Z,EAAEloC,EAAEuxG,0BAA0BviD,EAAE,oBAAoB9mB,GAAG,oBAAoBgoB,EAAEkyF,0BAC9e,oBAAoBlyF,EAAEgyF,kCAAkC,oBAAoBhyF,EAAE+xF,4BAA4Bp+I,IAAI4mD,GAAGh7C,IAAIuiD,IAAIgwF,GAAG9zI,EAAEgiD,EAAEjB,EAAE+C,GAAG6tF,IAAG,EAAGpwI,EAAEvB,EAAE25H,cAAc33E,EAAE95C,MAAM3G,EAAEoxI,GAAG3yI,EAAE+gD,EAAEiB,EAAE3oD,GAAG,IAAIqI,EAAE1B,EAAE25H,cAAchkI,IAAI4mD,GAAGh7C,IAAIG,GAAGyrI,GAAGltH,SAAS0xH,IAAI,oBAAoB33G,IAAIg5G,GAAGhzI,EAAElO,EAAEkoC,EAAE+mB,GAAGr/C,EAAE1B,EAAE25H,gBAAgBxoI,EAAEwgJ,IAAI8B,GAAGzzI,EAAElO,EAAEX,EAAE4vD,EAAEx/C,EAAEG,EAAEoiD,KAAI,IAAKhD,GAAG,oBAAoBkB,EAAEk7F,4BAA4B,oBAAoBl7F,EAAEm7F,sBAAsB,oBAAoBn7F,EAAEm7F,qBAAqBn7F,EAAEm7F,oBAAoBp8F,EAAEr/C,EAAEoiD,GAAG,oBAAoB9B,EAAEk7F,4BAC5fl7F,EAAEk7F,2BAA2Bn8F,EAAEr/C,EAAEoiD,IAAI,oBAAoB9B,EAAEo7F,qBAAqBp9I,EAAE6B,OAAO,GAAG,oBAAoBmgD,EAAEkyF,0BAA0Bl0I,EAAE6B,OAAO,QAAQ,oBAAoBmgD,EAAEo7F,oBAAoBznJ,IAAIoK,EAAEkwI,eAAe1uI,IAAIxB,EAAE45H,gBAAgB35H,EAAE6B,OAAO,GAAG,oBAAoBmgD,EAAEkyF,yBAAyBv+I,IAAIoK,EAAEkwI,eAAe1uI,IAAIxB,EAAE45H,gBAAgB35H,EAAE6B,OAAO,MAAM7B,EAAEiwI,cAAclvF,EAAE/gD,EAAE25H,cAAcj4H,GAAGsgD,EAAE3hD,MAAM0gD,EAAEiB,EAAE95C,MAAMxG,EAAEsgD,EAAEryD,QAAQm0D,EAAE/C,EAAE5vD,IAAI,oBAAoB6wD,EAAEo7F,oBAAoBznJ,IAAIoK,EAAEkwI,eAAe1uI,IACjfxB,EAAE45H,gBAAgB35H,EAAE6B,OAAO,GAAG,oBAAoBmgD,EAAEkyF,yBAAyBv+I,IAAIoK,EAAEkwI,eAAe1uI,IAAIxB,EAAE45H,gBAAgB35H,EAAE6B,OAAO,MAAMk/C,GAAE,EAAI,QAAOs8F,GAAGt9I,EAAEC,EAAElO,EAAEivD,EAAEt/C,EAAEpI,EAAG,CACpK,SAASgkJ,GAAGt9I,EAAEC,EAAElO,EAAEivD,EAAE1nD,EAAEoI,GAAGs7I,GAAGh9I,EAAEC,GAAG,IAAIgiD,EAAE,KAAa,IAARhiD,EAAE6B,OAAW,IAAIk/C,IAAIiB,EAAE,OAAO3oD,GAAG00I,GAAG/tI,EAAElO,GAAE,GAAIsqJ,GAAGr8I,EAAEC,EAAEyB,GAAGs/C,EAAE/gD,EAAEs4H,UAAU0jB,GAAG/7H,QAAQjgB,EAAE,IAAIrK,EAAEqsD,GAAG,oBAAoBlwD,EAAEsxG,yBAAyB,KAAKriD,EAAEkjD,SAAwI,OAA/HjkG,EAAE6B,OAAO,EAAE,OAAO9B,GAAGiiD,GAAGhiD,EAAEmK,MAAM+qI,GAAGl1I,EAAED,EAAEoK,MAAM,KAAK1I,GAAGzB,EAAEmK,MAAM+qI,GAAGl1I,EAAE,KAAKrK,EAAE8L,IAAIy6I,GAAGn8I,EAAEC,EAAErK,EAAE8L,GAAGzB,EAAE25H,cAAc54E,EAAE74C,MAAM7O,GAAG00I,GAAG/tI,EAAElO,GAAE,GAAWkO,EAAEmK,KAAM,UAASmzI,GAAGv9I,GAAG,IAAIC,EAAED,EAAEu4H,UAAUt4H,EAAEu9I,eAAe7P,GAAG3tI,EAAEC,EAAEu9I,eAAev9I,EAAEu9I,iBAAiBv9I,EAAErQ,SAASqQ,EAAErQ,SAAS+9I,GAAG3tI,EAAEC,EAAErQ,SAAQ,GAAI8lJ,GAAG11I,EAAEC,EAAE0+H,cAAe,CAC7e,SAAS8e,GAAGz9I,EAAEC,EAAElO,EAAEivD,EAAE1nD,GAAuC,OAApC82I,KAAKC,GAAG/2I,GAAG2G,EAAE6B,OAAO,IAAIq6I,GAAGn8I,EAAEC,EAAElO,EAAEivD,GAAU/gD,EAAEmK,KAAM,KAaqLszI,GAAMC,GAAGC,GAb1LC,GAAG,CAAChkB,WAAW,KAAK+V,YAAY,KAAKC,UAAU,GAAG,SAASiO,GAAG99I,GAAG,MAAM,CAAC28I,UAAU38I,EAAE48I,UAAU,KAAKC,YAAY,KAAM,CACnM,SAASkB,GAAG/9I,EAAEC,EAAElO,GAAG,IAA0D6D,EAAtDorD,EAAE/gD,EAAE0vI,aAAar2I,EAAEqnG,GAAEzgF,QAAQxe,GAAE,EAAGugD,EAAE,KAAa,IAARhiD,EAAE6B,OAAqJ,IAAvIlM,EAAEqsD,KAAKrsD,GAAE,OAAOoK,GAAG,OAAOA,EAAE45H,gBAAiB,KAAO,EAAFtgI,IAAS1D,GAAE8L,GAAE,EAAGzB,EAAE6B,QAAQ,KAAY,OAAO9B,GAAG,OAAOA,EAAE45H,gBAActgI,GAAG,GAAE4zI,GAAEvsC,GAAI,EAAFrnG,GAAQ,OAAO0G,EAA2B,OAAxB+vI,GAAG9vI,GAAwB,QAArBD,EAAEC,EAAE25H,gBAA2C,QAAf55H,EAAEA,EAAE65H,aAA4B,KAAY,EAAP55H,EAAEihD,MAAQjhD,EAAEkxI,MAAM,EAAE,OAAOnxI,EAAErV,KAAKsV,EAAEkxI,MAAM,EAAElxI,EAAEkxI,MAAM,WAAW,OAAKlvF,EAAEjB,EAAE32C,SAASrK,EAAEghD,EAAEgnC,SAAgBtmF,GAAGs/C,EAAE/gD,EAAEihD,KAAKx/C,EAAEzB,EAAEmK,MAAM63C,EAAE,CAACf,KAAK,SAAS72C,SAAS43C,GAAG,KAAO,EAAFjB,IAAM,OAAOt/C,GAAGA,EAAEsvI,WAAW,EAAEtvI,EAAEiuI,aAC7e1tF,GAAGvgD,EAAEs8I,GAAG/7F,EAAEjB,EAAE,EAAE,MAAMhhD,EAAEk1I,GAAGl1I,EAAEghD,EAAEjvD,EAAE,MAAM2P,EAAEua,OAAOhc,EAAED,EAAEic,OAAOhc,EAAEyB,EAAEs4H,QAAQh6H,EAAEC,EAAEmK,MAAM1I,EAAEzB,EAAEmK,MAAMwvH,cAAckkB,GAAG/rJ,GAAGkO,EAAE25H,cAAcikB,GAAG79I,GAAGi+I,GAAGh+I,EAAEgiD,IAAqB,GAAG,QAArB3oD,EAAE0G,EAAE45H,gBAA2C,QAAfhkI,EAAE0D,EAAEugI,YAAqB,OAGpM,SAAY75H,EAAEC,EAAElO,EAAEivD,EAAE1nD,EAAEoI,EAAEugD,GAAG,GAAGlwD,EAAG,OAAW,IAARkO,EAAE6B,OAAiB7B,EAAE6B,QAAQ,IAAwBo8I,GAAGl+I,EAAEC,EAAEgiD,EAA3BjB,EAAEk6F,GAAGv2J,MAAM6oB,EAAE,SAAsB,OAAOvN,EAAE25H,eAAqB35H,EAAEmK,MAAMpK,EAAEoK,MAAMnK,EAAE6B,OAAO,IAAI,OAAKJ,EAAEs/C,EAAEgnC,SAAS1uF,EAAE2G,EAAEihD,KAAKF,EAAEg9F,GAAG,CAAC98F,KAAK,UAAU72C,SAAS22C,EAAE32C,UAAU/Q,EAAE,EAAE,OAAMoI,EAAEwzI,GAAGxzI,EAAEpI,EAAE2oD,EAAE,OAAQngD,OAAO,EAAEk/C,EAAE/kC,OAAOhc,EAAEyB,EAAEua,OAAOhc,EAAE+gD,EAAEg5E,QAAQt4H,EAAEzB,EAAEmK,MAAM42C,EAAE,KAAY,EAAP/gD,EAAEihD,OAASi0F,GAAGl1I,EAAED,EAAEoK,MAAM,KAAK63C,GAAGhiD,EAAEmK,MAAMwvH,cAAckkB,GAAG77F,GAAGhiD,EAAE25H,cAAcikB,GAAUn8I,GAAE,GAAG,KAAY,EAAPzB,EAAEihD,MAAQ,OAAOg9F,GAAGl+I,EAAEC,EAAEgiD,EAAE,MAAM,GAAG,OAAO3oD,EAAE3O,KAAK,CAChd,GADidq2D,EAAE1nD,EAAEsd,aAAatd,EAAEsd,YAAYikB,QAC3e,IAAIjlC,EAAEorD,EAAEm9F,KAA0C,OAArCn9F,EAAEprD,EAA0CsoJ,GAAGl+I,EAAEC,EAAEgiD,EAA/BjB,EAAEk6F,GAAlBx5I,EAAE/c,MAAM6oB,EAAE,MAAawzC,OAAE,GAA2B,CAAuB,GAAvBprD,EAAE,KAAKqsD,EAAEjiD,EAAEgxI,YAAeI,IAAIx7I,EAAE,CAAK,GAAG,QAAPorD,EAAEo3F,IAAc,CAAC,OAAOn2F,GAAGA,GAAG,KAAK,EAAE3oD,EAAE,EAAE,MAAM,KAAK,GAAGA,EAAE,EAAE,MAAM,KAAK,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,OAAO,KAAK,OAAO,KAAK,OAAO,KAAK,QAAQ,KAAK,QAAQ,KAAK,QAAQ,KAAK,QAAQ,KAAK,SAAS,KAAK,SAAS,KAAK,SAASA,EAAE,GAAG,MAAM,KAAK,UAAUA,EAAE,UAAU,MAAM,QAAQA,EAAE,EAChd,KADkdA,EAAE,KAAKA,GAAG0nD,EAAEq7E,eAAep6E,IAAI,EAAE3oD,IAC5eA,IAAIoI,EAAEmuI,YAAYnuI,EAAEmuI,UAAUv2I,EAAEq4I,GAAG3xI,EAAE1G,GAAGi6I,GAAGvyF,EAAEhhD,EAAE1G,GAAG,GAAI,CAAyB,OAAzB8kJ,KAAgCF,GAAGl+I,EAAEC,EAAEgiD,EAAlCjB,EAAEk6F,GAAGv2J,MAAM6oB,EAAE,OAA0B,OAAG,OAAOlU,EAAE3O,MAAYsV,EAAE6B,OAAO,IAAI7B,EAAEmK,MAAMpK,EAAEoK,MAAMnK,EAAEo+I,GAAG/uJ,KAAK,KAAK0Q,GAAG1G,EAAEglJ,YAAYr+I,EAAE,OAAKD,EAAE0B,EAAEkuI,YAAYR,GAAG7C,GAAGjzI,EAAEsd,aAAau4H,GAAGlvI,EAAEovI,IAAE,EAAGC,GAAG,KAAK,OAAOtvI,IAAI0uI,GAAGC,MAAME,GAAGH,GAAGC,MAAMG,GAAGJ,GAAGC,MAAMC,GAAGC,GAAG7uI,EAAEtK,GAAGo5I,GAAG9uI,EAAE4pC,SAASglG,GAAG3uI,IAAGA,EAAEg+I,GAAGh+I,EAAE+gD,EAAE32C,WAAYvI,OAAO,KAAY7B,EAAE,CALtKs+I,CAAGv+I,EAAEC,EAAEgiD,EAAEjB,EAAEprD,EAAE0D,EAAEvH,GAAG,GAAG2P,EAAE,CAACA,EAAEs/C,EAAEgnC,SAAS/lC,EAAEhiD,EAAEihD,KAAetrD,GAAV0D,EAAE0G,EAAEoK,OAAU4vH,QAAQ,IAAIj2E,EAAE,CAAC7C,KAAK,SAAS72C,SAAS22C,EAAE32C,UAChF,OAD0F,KAAO,EAAF43C,IAAMhiD,EAAEmK,QAAQ9Q,IAAG0nD,EAAE/gD,EAAEmK,OAAQ4mI,WAAW,EAAEhwF,EAAE2uF,aAAa5rF,EAAE9jD,EAAEwvI,UAAU,OAAOzuF,EAAE6zF,GAAGv7I,EAAEyqD,IAAKy6F,aAA4B,SAAfllJ,EAAEklJ,aAAuB,OAAO5oJ,EAAE8L,EAAEmzI,GAAGj/I,EAAE8L,IAAIA,EAAEwzI,GAAGxzI,EAAEugD,EAAElwD,EAAE,OAAQ+P,OAAO,EAAGJ,EAAEua,OACnfhc,EAAE+gD,EAAE/kC,OAAOhc,EAAE+gD,EAAEg5E,QAAQt4H,EAAEzB,EAAEmK,MAAM42C,EAAEA,EAAEt/C,EAAEA,EAAEzB,EAAEmK,MAA8B63C,EAAE,QAA1BA,EAAEjiD,EAAEoK,MAAMwvH,eAAyBkkB,GAAG/rJ,GAAG,CAAC4qJ,UAAU16F,EAAE06F,UAAU5qJ,EAAE6qJ,UAAU,KAAKC,YAAY56F,EAAE46F,aAAan7I,EAAEk4H,cAAc33E,EAAEvgD,EAAEsvI,WAAWhxI,EAAEgxI,YAAYj/I,EAAEkO,EAAE25H,cAAcikB,GAAU78F,CAAE,CAAmO,OAAzNhhD,GAAV0B,EAAE1B,EAAEoK,OAAU4vH,QAAQh5E,EAAE6zF,GAAGnzI,EAAE,CAACw/C,KAAK,UAAU72C,SAAS22C,EAAE32C,WAAW,KAAY,EAAPpK,EAAEihD,QAAUF,EAAEmwF,MAAMp/I,GAAGivD,EAAE/kC,OAAOhc,EAAE+gD,EAAEg5E,QAAQ,KAAK,OAAOh6H,IAAkB,QAAdjO,EAAEkO,EAAEwvI,YAAoBxvI,EAAEwvI,UAAU,CAACzvI,GAAGC,EAAE6B,OAAO,IAAI/P,EAAEJ,KAAKqO,IAAIC,EAAEmK,MAAM42C,EAAE/gD,EAAE25H,cAAc,KAAY54E,CAAE,CACpd,SAASi9F,GAAGj+I,EAAEC,GAA8D,OAA3DA,EAAE+9I,GAAG,CAAC98F,KAAK,UAAU72C,SAASpK,GAAGD,EAAEkhD,KAAK,EAAE,OAAQjlC,OAAOjc,EAASA,EAAEoK,MAAMnK,CAAE,UAASi+I,GAAGl+I,EAAEC,EAAElO,EAAEivD,GAAwG,OAArG,OAAOA,GAAGqvF,GAAGrvF,GAAGm0F,GAAGl1I,EAAED,EAAEoK,MAAM,KAAKrY,IAAGiO,EAAEi+I,GAAGh+I,EAAEA,EAAE0vI,aAAatlI,WAAYvI,OAAO,EAAE7B,EAAE25H,cAAc,KAAY55H,CAAE,CAGiJ,SAASy+I,GAAGz+I,EAAEC,EAAElO,GAAGiO,EAAEmxI,OAAOlxI,EAAE,IAAI+gD,EAAEhhD,EAAE05H,UAAU,OAAO14E,IAAIA,EAAEmwF,OAAOlxI,GAAG8wI,GAAG/wI,EAAEic,OAAOhc,EAAElO,EAAG,CACzc,SAAS2sJ,GAAG1+I,EAAEC,EAAElO,EAAEivD,EAAE1nD,GAAG,IAAIoI,EAAE1B,EAAE45H,cAAc,OAAOl4H,EAAE1B,EAAE45H,cAAc,CAAC+kB,YAAY1+I,EAAE2+I,UAAU,KAAKC,mBAAmB,EAAEjpI,KAAKorC,EAAEoc,KAAKrrE,EAAE+sJ,SAASxlJ,IAAIoI,EAAEi9I,YAAY1+I,EAAEyB,EAAEk9I,UAAU,KAAKl9I,EAAEm9I,mBAAmB,EAAEn9I,EAAEkU,KAAKorC,EAAEt/C,EAAE07D,KAAKrrE,EAAE2P,EAAEo9I,SAASxlJ,EAAG,CAC5O,SAASylJ,GAAG/+I,EAAEC,EAAElO,GAAG,IAAIivD,EAAE/gD,EAAE0vI,aAAar2I,EAAE0nD,EAAE+0F,YAAYr0I,EAAEs/C,EAAEoc,KAAsC,GAAjC++E,GAAGn8I,EAAEC,EAAE+gD,EAAE32C,SAAStY,GAAkB,KAAO,GAAtBivD,EAAE2/C,GAAEzgF,UAAqB8gC,EAAI,EAAFA,EAAI,EAAE/gD,EAAE6B,OAAO,QAAQ,CAAC,GAAG,OAAO9B,GAAG,KAAa,IAARA,EAAE8B,OAAW9B,EAAE,IAAIA,EAAEC,EAAEmK,MAAM,OAAOpK,GAAG,CAAC,GAAG,KAAKA,EAAE6J,IAAI,OAAO7J,EAAE45H,eAAe6kB,GAAGz+I,EAAEjO,EAAEkO,QAAQ,GAAG,KAAKD,EAAE6J,IAAI40I,GAAGz+I,EAAEjO,EAAEkO,QAAQ,GAAG,OAAOD,EAAEoK,MAAM,CAACpK,EAAEoK,MAAM6R,OAAOjc,EAAEA,EAAEA,EAAEoK,MAAM,QAAS,IAAGpK,IAAIC,EAAE,MAAMD,EAAE,KAAK,OAAOA,EAAEg6H,SAAS,CAAC,GAAG,OAAOh6H,EAAEic,QAAQjc,EAAEic,SAAShc,EAAE,MAAMD,EAAEA,EAAEA,EAAEic,MAAO,CAAAjc,EAAEg6H,QAAQ/9G,OAAOjc,EAAEic,OAAOjc,EAAEA,EAAEg6H,OAAQ,CAAAh5E,GAAG,CAAE,CAAO,GAAPksF,GAAEvsC,GAAE3/C,GAAM,KAAY,EAAP/gD,EAAEihD,MAAQjhD,EAAE25H,cAC/e,UAAU,OAAOtgI,GAAG,IAAK,WAAqB,IAAVvH,EAAEkO,EAAEmK,MAAU9Q,EAAE,KAAK,OAAOvH,GAAiB,QAAdiO,EAAEjO,EAAE2nI,YAAoB,OAAOoc,GAAG91I,KAAK1G,EAAEvH,GAAGA,EAAEA,EAAEioI,QAAY,QAAJjoI,EAAEuH,IAAYA,EAAE2G,EAAEmK,MAAMnK,EAAEmK,MAAM,OAAO9Q,EAAEvH,EAAEioI,QAAQjoI,EAAEioI,QAAQ,MAAM0kB,GAAGz+I,GAAE,EAAG3G,EAAEvH,EAAE2P,GAAG,MAAM,IAAK,YAA6B,IAAjB3P,EAAE,KAAKuH,EAAE2G,EAAEmK,MAAUnK,EAAEmK,MAAM,KAAK,OAAO9Q,GAAG,CAAe,GAAG,QAAjB0G,EAAE1G,EAAEogI,YAAuB,OAAOoc,GAAG91I,GAAG,CAACC,EAAEmK,MAAM9Q,EAAE,KAAM,CAAA0G,EAAE1G,EAAE0gI,QAAQ1gI,EAAE0gI,QAAQjoI,EAAEA,EAAEuH,EAAEA,EAAE0G,CAAE,CAAA0+I,GAAGz+I,GAAE,EAAGlO,EAAE,KAAK2P,GAAG,MAAM,IAAK,WAAWg9I,GAAGz+I,GAAE,EAAG,KAAK,UAAK,GAAQ,MAAM,QAAQA,EAAE25H,cAAc,KAAK,OAAO35H,EAAEmK,KAAM,CAC9d,SAAS8yI,GAAGl9I,EAAEC,GAAG,KAAY,EAAPA,EAAEihD,OAAS,OAAOlhD,IAAIA,EAAE05H,UAAU,KAAKz5H,EAAEy5H,UAAU,KAAKz5H,EAAE6B,OAAO,EAAG,UAASu6I,GAAGr8I,EAAEC,EAAElO,GAAyD,GAAtD,OAAOiO,IAAIC,EAAEw5D,aAAaz5D,EAAEy5D,cAAco5E,IAAI5yI,EAAEkxI,MAAS,KAAKp/I,EAAEkO,EAAE+wI,YAAY,OAAO,KAAK,GAAG,OAAOhxI,GAAGC,EAAEmK,QAAQpK,EAAEoK,MAAM,MAAMzlB,MAAM6oB,EAAE,MAAM,GAAG,OAAOvN,EAAEmK,MAAM,CAA4C,IAAjCrY,EAAE8iJ,GAAZ70I,EAAEC,EAAEmK,MAAapK,EAAE2vI,cAAc1vI,EAAEmK,MAAMrY,EAAMA,EAAEkqB,OAAOhc,EAAE,OAAOD,EAAEg6H,SAASh6H,EAAEA,EAAEg6H,SAAQjoI,EAAEA,EAAEioI,QAAQ6a,GAAG70I,EAAEA,EAAE2vI,eAAgB1zH,OAAOhc,EAAElO,EAAEioI,QAAQ,IAAK,QAAO/5H,EAAEmK,KAAM,CAO/a,SAAS40I,GAAGh/I,EAAEC,GAAG,IAAIovI,GAAE,OAAOrvI,EAAE8+I,UAAU,IAAK,SAAS7+I,EAAED,EAAEo9D,KAAK,IAAI,IAAIrrE,EAAE,KAAK,OAAOkO,GAAG,OAAOA,EAAEy5H,YAAY3nI,EAAEkO,GAAGA,EAAEA,EAAE+5H,QAAQ,OAAOjoI,EAAEiO,EAAEo9D,KAAK,KAAKrrE,EAAEioI,QAAQ,KAAK,MAAM,IAAK,YAAYjoI,EAAEiO,EAAEo9D,KAAK,IAAI,IAAIpc,EAAE,KAAK,OAAOjvD,GAAG,OAAOA,EAAE2nI,YAAY14E,EAAEjvD,GAAGA,EAAEA,EAAEioI,QAAQ,OAAOh5E,EAAE/gD,GAAG,OAAOD,EAAEo9D,KAAKp9D,EAAEo9D,KAAK,KAAKp9D,EAAEo9D,KAAK48D,QAAQ,KAAKh5E,EAAEg5E,QAAQ,KAAM,CAC7U,SAAS39C,GAAEr8E,GAAG,IAAIC,EAAE,OAAOD,EAAE05H,WAAW15H,EAAE05H,UAAUtvH,QAAQpK,EAAEoK,MAAMrY,EAAE,EAAEivD,EAAE,EAAE,GAAG/gD,EAAE,IAAI,IAAI3G,EAAE0G,EAAEoK,MAAM,OAAO9Q,GAAGvH,GAAGuH,EAAE63I,MAAM73I,EAAE03I,WAAWhwF,GAAkB,SAAf1nD,EAAEklJ,aAAsBx9F,GAAW,SAAR1nD,EAAEwI,MAAexI,EAAE2iB,OAAOjc,EAAE1G,EAAEA,EAAE0gI,aAAa,IAAI1gI,EAAE0G,EAAEoK,MAAM,OAAO9Q,GAAGvH,GAAGuH,EAAE63I,MAAM73I,EAAE03I,WAAWhwF,GAAG1nD,EAAEklJ,aAAax9F,GAAG1nD,EAAEwI,MAAMxI,EAAE2iB,OAAOjc,EAAE1G,EAAEA,EAAE0gI,QAAyC,OAAjCh6H,EAAEw+I,cAAcx9F,EAAEhhD,EAAEgxI,WAAWj/I,EAASkO,CAAE,CAC9V,SAASg/I,GAAGj/I,EAAEC,EAAElO,GAAG,IAAIivD,EAAE/gD,EAAE0vI,aAAmB,OAANT,GAAGjvI,GAAUA,EAAE4J,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,OAAOwyE,GAAEp8E,GAAG,KAAK,KAAK,EAUtD,KAAK,GAAG,OAAOwtI,GAAGxtI,EAAElR,OAAO2+I,KAAKrxD,GAAEp8E,GAAG,KAVqD,KAAK,EAA2Q,OAAzQ+gD,EAAE/gD,EAAEs4H,UAAUod,KAAK74D,GAAEswD,IAAItwD,GAAEia,IAAGk/C,KAAKj1F,EAAEw8F,iBAAiBx8F,EAAEpxD,QAAQoxD,EAAEw8F,eAAex8F,EAAEw8F,eAAe,MAAS,OAAOx9I,GAAG,OAAOA,EAAEoK,QAAM6lI,GAAGhwI,GAAGA,EAAE6B,OAAO,EAAE,OAAO9B,GAAGA,EAAE45H,cAAc8E,cAAc,KAAa,IAARz+H,EAAE6B,SAAa7B,EAAE6B,OAAO,KAAK,OAAOwtI,KAAK4P,GAAG5P,IAAIA,GAAG,QAAejzD,GAAEp8E,GAAU,KAAK,KAAK,EAAE41I,GAAG51I,GAAG,IAAI3G,EAAEm8I,GAAGD,GAAGt1H,SAC7e,GAATnuB,EAAEkO,EAAElR,KAAQ,OAAOiR,GAAG,MAAMC,EAAEs4H,UAAUolB,GAAG39I,EAAEC,EAAElO,EAAEivD,GAAKhhD,EAAEyE,MAAMxE,EAAEwE,MAAMxE,EAAE6B,OAAO,IAAI7B,EAAE6B,OAAO,aAAa,CAAC,IAAIk/C,EAAE,CAAC,GAAG,OAAO/gD,EAAEs4H,UAAU,MAAM5zI,MAAM6oB,EAAE,MAAW,OAAL6uE,GAAEp8E,GAAU,IAAK,CAAiB,GAAjBD,EAAEy1I,GAAGH,GAAGp1H,SAAY+vH,GAAGhwI,GAAG,CAAC+gD,EAAE/gD,EAAEs4H,UAAUxmI,EAAEkO,EAAElR,KAAK,IAAI2S,EAAEzB,EAAEiwI,cAA+C,OAAjClvF,EAAE2rF,IAAI1sI,EAAE+gD,EAAE4rF,IAAIlrI,EAAE1B,EAAE,KAAY,EAAPC,EAAEihD,MAAenvD,GAAG,IAAK,SAASw3F,GAAE,SAASvoC,GAAGuoC,GAAE,QAAQvoC,GAAG,MAAM,IAAK,SAAS,IAAK,SAAS,IAAK,QAAQuoC,GAAE,OAAOvoC,GAAG,MAAM,IAAK,QAAQ,IAAK,QAAQ,IAAI1nD,EAAE,EAAEA,EAAE4wI,GAAG/kJ,OAAOmU,IAAIiwF,GAAE2gD,GAAG5wI,GAAG0nD,GAAG,MAAM,IAAK,SAASuoC,GAAE,QAAQvoC,GAAG,MAAM,IAAK,MAAM,IAAK,QAAQ,IAAK,OAAOuoC,GAAE,QACnhBvoC,GAAGuoC,GAAE,OAAOvoC,GAAG,MAAM,IAAK,UAAUuoC,GAAE,SAASvoC,GAAG,MAAM,IAAK,QAAQiyE,EAAGjyE,EAAEt/C,GAAG6nF,GAAE,UAAUvoC,GAAG,MAAM,IAAK,SAASA,EAAE+xE,cAAc,CAACosB,cAAcz9I,EAAE09I,UAAU71D,GAAE,UAAUvoC,GAAG,MAAM,IAAK,WAAW4yE,GAAG5yE,EAAEt/C,GAAG6nF,GAAE,UAAUvoC,GAAkB,IAAI,IAAIiB,KAAvB41E,GAAG9lI,EAAE2P,GAAGpI,EAAE,KAAkBoI,EAAE,GAAGA,EAAEpC,eAAe2iD,GAAG,CAAC,IAAIrsD,EAAE8L,EAAEugD,GAAG,aAAaA,EAAE,kBAAkBrsD,EAAEorD,EAAEpM,cAAch/C,KAAI,IAAK8L,EAAE29I,0BAA0B3T,GAAG1qF,EAAEpM,YAAYh/C,EAAEoK,GAAG1G,EAAE,CAAC,WAAW1D,IAAI,kBAAkBA,GAAGorD,EAAEpM,cAAc,GAAGh/C,KAAI,IAAK8L,EAAE29I,0BAA0B3T,GAAG1qF,EAAEpM,YAC1eh/C,EAAEoK,GAAG1G,EAAE,CAAC,WAAW,GAAG1D,IAAIu5H,EAAG7vH,eAAe2iD,IAAI,MAAMrsD,GAAG,aAAaqsD,GAAGsnC,GAAE,SAASvoC,EAAG,QAAOjvD,GAAG,IAAK,QAAQsgI,EAAGrxE,GAAGoyE,EAAGpyE,EAAEt/C,GAAE,GAAI,MAAM,IAAK,WAAW2wH,EAAGrxE,GAAG8yE,GAAG9yE,GAAG,MAAM,IAAK,SAAS,IAAK,SAAS,MAAM,QAAQ,oBAAoBt/C,EAAEswF,UAAUhxC,EAAEs+F,QAAQ3T,IAAI3qF,EAAE1nD,EAAE2G,EAAE6xI,YAAY9wF,EAAE,OAAOA,IAAI/gD,EAAE6B,OAAO,EAAG,KAAI,CAACmgD,EAAE,IAAI3oD,EAAEmpE,SAASnpE,EAAEA,EAAE+5H,cAAc,iCAAiCrzH,IAAIA,EAAE+zH,GAAGhiI,IAAI,iCAAiCiO,EAAE,WAAWjO,IAAGiO,EAAEiiD,EAAEnmD,cAAc,QAASs/B,UAAU,qBAAuBp7B,EAAEA,EAAE2K,YAAY3K,EAAEo0H,aAC/f,kBAAkBpzE,EAAE/8C,GAAGjE,EAAEiiD,EAAEnmD,cAAc/J,EAAE,CAACkS,GAAG+8C,EAAE/8C,MAAMjE,EAAEiiD,EAAEnmD,cAAc/J,GAAG,WAAWA,IAAIkwD,EAAEjiD,EAAEghD,EAAEo+F,SAASn9F,EAAEm9F,UAAS,EAAGp+F,EAAEx8C,OAAOy9C,EAAEz9C,KAAKw8C,EAAEx8C,QAAQxE,EAAEiiD,EAAEh4C,gBAAgBjK,EAAEjO,GAAGiO,EAAE2sI,IAAI1sI,EAAED,EAAE4sI,IAAI5rF,EAAE08F,GAAG19I,EAAEC,GAASA,EAAEs4H,UAAUv4H,EAAEA,EAAE,CAAW,OAAViiD,EAAE61E,GAAG/lI,EAAEivD,GAAUjvD,GAAG,IAAK,SAASw3F,GAAE,SAASvpF,GAAGupF,GAAE,QAAQvpF,GAAG1G,EAAE0nD,EAAE,MAAM,IAAK,SAAS,IAAK,SAAS,IAAK,QAAQuoC,GAAE,OAAOvpF,GAAG1G,EAAE0nD,EAAE,MAAM,IAAK,QAAQ,IAAK,QAAQ,IAAI1nD,EAAE,EAAEA,EAAE4wI,GAAG/kJ,OAAOmU,IAAIiwF,GAAE2gD,GAAG5wI,GAAG0G,GAAG1G,EAAE0nD,EAAE,MAAM,IAAK,SAASuoC,GAAE,QAAQvpF,GAAG1G,EAAE0nD,EAAE,MAAM,IAAK,MAAM,IAAK,QAAQ,IAAK,OAAOuoC,GAAE,QAClfvpF,GAAGupF,GAAE,OAAOvpF,GAAG1G,EAAE0nD,EAAE,MAAM,IAAK,UAAUuoC,GAAE,SAASvpF,GAAG1G,EAAE0nD,EAAE,MAAM,IAAK,QAAQiyE,EAAGjzH,EAAEghD,GAAG1nD,EAAEu5H,EAAG7yH,EAAEghD,GAAGuoC,GAAE,UAAUvpF,GAAG,MAAM,IAAK,SAAiL,QAAQ1G,EAAE0nD,QAAxK,IAAK,SAAShhD,EAAE+yH,cAAc,CAACosB,cAAcn+F,EAAEo+F,UAAU9lJ,EAAE0rG,EAAE,CAAC,EAAEhkD,EAAE,CAACv0D,WAAM,IAAS88F,GAAE,UAAUvpF,GAAG,MAAM,IAAK,WAAW4zH,GAAG5zH,EAAEghD,GAAG1nD,EAAEo6H,GAAG1zH,EAAEghD,GAAGuoC,GAAE,UAAUvpF,GAAiC,IAAI0B,KAAhBm2H,GAAG9lI,EAAEuH,GAAG1D,EAAE0D,EAAa,GAAG1D,EAAE0J,eAAeoC,GAAG,CAAC,IAAIqiD,EAAEnuD,EAAE8L,GAAG,UAAUA,EAAEu1H,GAAGj3H,EAAE+jD,GAAG,4BAA4BriD,EAAuB,OAApBqiD,EAAEA,EAAEA,EAAEgoF,YAAO,IAAgB7X,GAAGl0H,EAAE+jD,GAAI,aAAariD,EAAE,kBAAkBqiD,GAAG,aAC7ehyD,GAAG,KAAKgyD,IAAIwwE,GAAGv0H,EAAE+jD,GAAG,kBAAkBA,GAAGwwE,GAAGv0H,EAAE,GAAG+jD,GAAG,mCAAmCriD,GAAG,6BAA6BA,GAAG,cAAcA,IAAIytH,EAAG7vH,eAAeoC,GAAG,MAAMqiD,GAAG,aAAariD,GAAG6nF,GAAE,SAASvpF,GAAG,MAAM+jD,GAAGksE,EAAGjwH,EAAE0B,EAAEqiD,EAAE9B,GAAI,QAAOlwD,GAAG,IAAK,QAAQsgI,EAAGryH,GAAGozH,EAAGpzH,EAAEghD,GAAE,GAAI,MAAM,IAAK,WAAWqxE,EAAGryH,GAAG8zH,GAAG9zH,GAAG,MAAM,IAAK,SAAS,MAAMghD,EAAEv0D,OAAOuT,EAAE/D,aAAa,QAAQ,GAAGk2H,EAAGnxE,EAAEv0D,QAAQ,MAAM,IAAK,SAASuT,EAAEo/I,WAAWp+F,EAAEo+F,SAAmB,OAAV19I,EAAEs/C,EAAEv0D,OAAc8mI,GAAGvzH,IAAIghD,EAAEo+F,SAAS19I,GAAE,GAAI,MAAMs/C,EAAEvnC,cAAc85G,GAAGvzH,IAAIghD,EAAEo+F,SAASp+F,EAAEvnC,cAClf,GAAI,MAAM,QAAQ,oBAAoBngB,EAAE04F,UAAUhyF,EAAEs/I,QAAQ3T,IAAI,OAAO55I,GAAG,IAAK,SAAS,IAAK,QAAQ,IAAK,SAAS,IAAK,WAAWivD,IAAIA,EAAEukE,UAAU,MAAMvlH,EAAE,IAAK,MAAMghD,GAAE,EAAG,MAAMhhD,EAAE,QAAQghD,GAAE,EAAI,CAAAA,IAAI/gD,EAAE6B,OAAO,EAAG,QAAO7B,EAAEwE,MAAMxE,EAAE6B,OAAO,IAAI7B,EAAE6B,OAAO,QAAS,CAAK,OAALu6E,GAAEp8E,GAAU,KAAK,KAAK,EAAE,GAAGD,GAAG,MAAMC,EAAEs4H,UAAUqlB,GAAG59I,EAAEC,EAAED,EAAEkwI,cAAclvF,OAAO,CAAC,GAAG,kBAAkBA,GAAG,OAAO/gD,EAAEs4H,UAAU,MAAM5zI,MAAM6oB,EAAE,MAAsC,GAAhCzb,EAAE0jJ,GAAGD,GAAGt1H,SAASu1H,GAAGH,GAAGp1H,SAAY+vH,GAAGhwI,GAAG,CAAyC,GAAxC+gD,EAAE/gD,EAAEs4H,UAAUxmI,EAAEkO,EAAEiwI,cAAclvF,EAAE2rF,IAAI1sI,GAAKyB,EAAEs/C,EAAE1nB,YAAYvnC,IAC/e,QADofiO,EACvfmvI,IAAY,OAAOnvI,EAAE6J,KAAK,KAAK,EAAE6hI,GAAG1qF,EAAE1nB,UAAUvnC,EAAE,KAAY,EAAPiO,EAAEkhD,OAAS,MAAM,KAAK,GAAE,IAAKlhD,EAAEkwI,cAAcmP,0BAA0B3T,GAAG1qF,EAAE1nB,UAAUvnC,EAAE,KAAY,EAAPiO,EAAEkhD,OAASx/C,IAAIzB,EAAE6B,OAAO,EAAG,MAAKk/C,GAAG,IAAIjvD,EAAE0wE,SAAS1wE,EAAEA,EAAEshI,eAAe95F,eAAeynB,IAAK2rF,IAAI1sI,EAAEA,EAAEs4H,UAAUv3E,CAAE,CAAK,OAALq7B,GAAEp8E,GAAU,KAAK,KAAK,GAA0B,GAAvB68E,GAAE6jB,IAAG3/C,EAAE/gD,EAAE25H,cAAiB,OAAO55H,GAAG,OAAOA,EAAE45H,eAAe,OAAO55H,EAAE45H,cAAcC,WAAW,CAAC,GAAGwV,IAAG,OAAOD,IAAI,KAAY,EAAPnvI,EAAEihD,OAAS,KAAa,IAARjhD,EAAE6B,OAAWquI,KAAKC,KAAKnwI,EAAE6B,OAAO,MAAMJ,GAAE,OAAQ,GAAGA,EAAEuuI,GAAGhwI,GAAG,OAAO+gD,GAAG,OAAOA,EAAE64E,WAAW,CAAC,GAAG,OAC5f75H,EAAE,CAAC,IAAI0B,EAAE,MAAM/c,MAAM6oB,EAAE,MAAqD,KAA7B9L,EAAE,QAApBA,EAAEzB,EAAE25H,eAAyBl4H,EAAEm4H,WAAW,MAAW,MAAMl1I,MAAM6oB,EAAE,MAAM9L,EAAEirI,IAAI1sI,CAAE,MAAKmwI,KAAK,KAAa,IAARnwI,EAAE6B,SAAa7B,EAAE25H,cAAc,MAAM35H,EAAE6B,OAAO,EAAEu6E,GAAEp8E,GAAGyB,GAAE,CAAG,MAAK,OAAO4tI,KAAK4P,GAAG5P,IAAIA,GAAG,MAAM5tI,GAAE,EAAG,IAAIA,EAAE,OAAe,MAARzB,EAAE6B,MAAY7B,EAAE,IAAK,QAAG,KAAa,IAARA,EAAE6B,QAAkB7B,EAAEkxI,MAAMp/I,EAAEkO,KAAE+gD,EAAE,OAAOA,MAAO,OAAOhhD,GAAG,OAAOA,EAAE45H,gBAAgB54E,IAAI/gD,EAAEmK,MAAMtI,OAAO,KAAK,KAAY,EAAP7B,EAAEihD,QAAU,OAAOlhD,GAAG,KAAe,EAAV2gG,GAAEzgF,SAAW,IAAIq/H,KAAIA,GAAE,GAAGnB,OAAO,OAAOn+I,EAAE6xI,cAAc7xI,EAAE6B,OAAO,GAAGu6E,GAAEp8E,GAAU,MAAK,KAAK,EAAE,OAAO01I,KAC7e,OAAO31I,GAAG0qI,GAAGzqI,EAAEs4H,UAAUoG,eAAetiD,GAAEp8E,GAAG,KAAK,KAAK,GAAG,OAAO4wI,GAAG5wI,EAAElR,KAAKgjI,UAAU11C,GAAEp8E,GAAG,KAA+C,KAAK,GAA0B,GAAvB68E,GAAE6jB,IAAwB,QAArBj/F,EAAEzB,EAAE25H,eAA0B,OAAOv9C,GAAEp8E,GAAG,KAAuC,GAAlC+gD,EAAE,KAAa,IAAR/gD,EAAE6B,OAA4B,QAAjBmgD,EAAEvgD,EAAEk9I,WAAsB,GAAG59F,EAAEg+F,GAAGt9I,GAAE,OAAQ,CAAC,GAAG,IAAI69I,IAAG,OAAOv/I,GAAG,KAAa,IAARA,EAAE8B,OAAW,IAAI9B,EAAEC,EAAEmK,MAAM,OAAOpK,GAAG,CAAS,GAAG,QAAXiiD,EAAE6zF,GAAG91I,IAAe,CAAmG,IAAlGC,EAAE6B,OAAO,IAAIk9I,GAAGt9I,GAAE,GAAoB,QAAhBs/C,EAAEiB,EAAE6vF,eAAuB7xI,EAAE6xI,YAAY9wF,EAAE/gD,EAAE6B,OAAO,GAAG7B,EAAEu+I,aAAa,EAAEx9F,EAAEjvD,EAAMA,EAAEkO,EAAEmK,MAAM,OAAOrY,GAAOiO,EAAEghD,GAANt/C,EAAE3P,GAAQ+P,OAAO,SAC/d,QAAdmgD,EAAEvgD,EAAEg4H,YAAoBh4H,EAAEsvI,WAAW,EAAEtvI,EAAEyvI,MAAMnxI,EAAE0B,EAAE0I,MAAM,KAAK1I,EAAE88I,aAAa,EAAE98I,EAAEwuI,cAAc,KAAKxuI,EAAEk4H,cAAc,KAAKl4H,EAAEowI,YAAY,KAAKpwI,EAAE+3D,aAAa,KAAK/3D,EAAE62H,UAAU,OAAO72H,EAAEsvI,WAAW/uF,EAAE+uF,WAAWtvI,EAAEyvI,MAAMlvF,EAAEkvF,MAAMzvI,EAAE0I,MAAM63C,EAAE73C,MAAM1I,EAAE88I,aAAa,EAAE98I,EAAE+tI,UAAU,KAAK/tI,EAAEwuI,cAAcjuF,EAAEiuF,cAAcxuI,EAAEk4H,cAAc33E,EAAE23E,cAAcl4H,EAAEowI,YAAY7vF,EAAE6vF,YAAYpwI,EAAE3S,KAAKkzD,EAAElzD,KAAKiR,EAAEiiD,EAAEwX,aAAa/3D,EAAE+3D,aAAa,OAAOz5D,EAAE,KAAK,CAACmxI,MAAMnxI,EAAEmxI,MAAMD,aAAalxI,EAAEkxI,eAAen/I,EAAEA,EAAEioI,QAA2B,OAAnBkT,GAAEvsC,GAAY,EAAVA,GAAEzgF,QAAU,GAAUjgB,EAAEmK,KAAM,CAAApK,EAClgBA,EAAEg6H,OAAQ,QAAOt4H,EAAE07D,MAAMu9D,KAAI6kB,KAAKv/I,EAAE6B,OAAO,IAAIk/C,GAAE,EAAGg+F,GAAGt9I,GAAE,GAAIzB,EAAEkxI,MAAM,QAAS,KAAI,CAAC,IAAInwF,EAAE,GAAW,QAARhhD,EAAE81I,GAAG7zF,KAAa,GAAGhiD,EAAE6B,OAAO,IAAIk/C,GAAE,EAAmB,QAAhBjvD,EAAEiO,EAAE8xI,eAAuB7xI,EAAE6xI,YAAY//I,EAAEkO,EAAE6B,OAAO,GAAGk9I,GAAGt9I,GAAE,GAAI,OAAOA,EAAE07D,MAAM,WAAW17D,EAAEo9I,WAAW78F,EAAEy3E,YAAY2V,GAAE,OAAOhzD,GAAEp8E,GAAG,UAAU,EAAE06H,KAAIj5H,EAAEm9I,mBAAmBW,IAAI,aAAaztJ,IAAIkO,EAAE6B,OAAO,IAAIk/C,GAAE,EAAGg+F,GAAGt9I,GAAE,GAAIzB,EAAEkxI,MAAM,SAASzvI,EAAEi9I,aAAa18F,EAAE+3E,QAAQ/5H,EAAEmK,MAAMnK,EAAEmK,MAAM63C,IAAa,QAATlwD,EAAE2P,EAAEkU,MAAc7jB,EAAEioI,QAAQ/3E,EAAEhiD,EAAEmK,MAAM63C,EAAEvgD,EAAEkU,KAAKqsC,EAAG,QAAG,OAAOvgD,EAAE07D,MAAYn9D,EAAEyB,EAAE07D,KAAK17D,EAAEk9I,UAC9e3+I,EAAEyB,EAAE07D,KAAKn9D,EAAE+5H,QAAQt4H,EAAEm9I,mBAAmBlkB,KAAI16H,EAAE+5H,QAAQ,KAAKjoI,EAAE4uG,GAAEzgF,QAAQgtH,GAAEvsC,GAAE3/C,EAAI,EAAFjvD,EAAI,EAAI,EAAFA,GAAKkO,IAAEo8E,GAAEp8E,GAAU,MAAK,KAAK,GAAG,KAAK,GAAG,OAAOw/I,KAAKz+F,EAAE,OAAO/gD,EAAE25H,cAAc,OAAO55H,GAAG,OAAOA,EAAE45H,gBAAgB54E,IAAI/gD,EAAE6B,OAAO,MAAMk/C,GAAG,KAAY,EAAP/gD,EAAEihD,MAAQ,KAAQ,WAAH67F,MAAiB1gE,GAAEp8E,GAAkB,EAAfA,EAAEu+I,eAAiBv+I,EAAE6B,OAAO,OAAOu6E,GAAEp8E,GAAG,KAAK,KAAK,GAAe,KAAK,GAAG,OAAO,KAAK,MAAMtb,MAAM6oB,EAAE,IAAIvN,EAAE4J,KAAO,CACnX,SAAS61I,GAAG1/I,EAAEC,GAAS,OAANivI,GAAGjvI,GAAUA,EAAE4J,KAAK,KAAK,EAAE,OAAO4jI,GAAGxtI,EAAElR,OAAO2+I,KAAiB,OAAZ1tI,EAAEC,EAAE6B,QAAe7B,EAAE6B,OAAS,MAAH9B,EAAS,IAAIC,GAAG,KAAK,KAAK,EAAE,OAAO01I,KAAK74D,GAAEswD,IAAItwD,GAAEia,IAAGk/C,KAAe,KAAO,OAAjBj2I,EAAEC,EAAE6B,SAAqB,KAAO,IAAF9B,IAAQC,EAAE6B,OAAS,MAAH9B,EAAS,IAAIC,GAAG,KAAK,KAAK,EAAE,OAAO41I,GAAG51I,GAAG,KAAK,KAAK,GAA0B,GAAvB68E,GAAE6jB,IAAwB,QAArB3gG,EAAEC,EAAE25H,gBAA2B,OAAO55H,EAAE65H,WAAW,CAAC,GAAG,OAAO55H,EAAEy5H,UAAU,MAAM/0I,MAAM6oB,EAAE,MAAM4iI,IAAK,CAAU,OAAS,OAAnBpwI,EAAEC,EAAE6B,QAAsB7B,EAAE6B,OAAS,MAAH9B,EAAS,IAAIC,GAAG,KAAK,KAAK,GAAG,OAAO68E,GAAE6jB,IAAG,KAAK,KAAK,EAAE,OAAOg1C,KAAK,KAAK,KAAK,GAAG,OAAO9E,GAAG5wI,EAAElR,KAAKgjI,UAAU,KAAK,KAAK,GAAG,KAAK,GAAG,OAAO0tB,KAC1gB,KAAyB,QAAQ,OAAO,KAAM,CArB9C/B,GAAG,SAAS19I,EAAEC,GAAG,IAAI,IAAIlO,EAAEkO,EAAEmK,MAAM,OAAOrY,GAAG,CAAC,GAAG,IAAIA,EAAE8X,KAAK,IAAI9X,EAAE8X,IAAI7J,EAAEkK,YAAYnY,EAAEwmI,gBAAgB,GAAG,IAAIxmI,EAAE8X,KAAK,OAAO9X,EAAEqY,MAAM,CAACrY,EAAEqY,MAAM6R,OAAOlqB,EAAEA,EAAEA,EAAEqY,MAAM,QAAS,IAAGrY,IAAIkO,EAAE,MAAM,KAAK,OAAOlO,EAAEioI,SAAS,CAAC,GAAG,OAAOjoI,EAAEkqB,QAAQlqB,EAAEkqB,SAAShc,EAAE,OAAOlO,EAAEA,EAAEkqB,MAAO,CAAAlqB,EAAEioI,QAAQ/9G,OAAOlqB,EAAEkqB,OAAOlqB,EAAEA,EAAEioI,OAAQ,CAAC,EACzS2jB,GAAG,SAAS39I,EAAEC,EAAElO,EAAEivD,GAAG,IAAI1nD,EAAE0G,EAAEkwI,cAAc,GAAG52I,IAAI0nD,EAAE,CAAChhD,EAAEC,EAAEs4H,UAAUkd,GAAGH,GAAGp1H,SAAS,IAA4R+hC,EAAxRvgD,EAAE,KAAK,OAAO3P,GAAG,IAAK,QAAQuH,EAAEu5H,EAAG7yH,EAAE1G,GAAG0nD,EAAE6xE,EAAG7yH,EAAEghD,GAAGt/C,EAAE,GAAG,MAAM,IAAK,SAASpI,EAAE0rG,EAAE,CAAC,EAAE1rG,EAAE,CAAC7M,WAAM,IAASu0D,EAAEgkD,EAAE,CAAC,EAAEhkD,EAAE,CAACv0D,WAAM,IAASiV,EAAE,GAAG,MAAM,IAAK,WAAWpI,EAAEo6H,GAAG1zH,EAAE1G,GAAG0nD,EAAE0yE,GAAG1zH,EAAEghD,GAAGt/C,EAAE,GAAG,MAAM,QAAQ,oBAAoBpI,EAAE04F,SAAS,oBAAoBhxC,EAAEgxC,UAAUhyF,EAAEs/I,QAAQ3T,IAAyB,IAAIv6I,KAAzBymI,GAAG9lI,EAAEivD,GAASjvD,EAAE,KAAcuH,EAAE,IAAI0nD,EAAE1hD,eAAelO,IAAIkI,EAAEgG,eAAelO,IAAI,MAAMkI,EAAElI,GAAG,GAAG,UAAUA,EAAE,CAAC,IAAIwE,EAAE0D,EAAElI,GAAG,IAAI6wD,KAAKrsD,EAAEA,EAAE0J,eAAe2iD,KACjflwD,IAAIA,EAAE,CAAC,GAAGA,EAAEkwD,GAAG,GAAI,KAAI,4BAA4B7wD,GAAG,aAAaA,GAAG,mCAAmCA,GAAG,6BAA6BA,GAAG,cAAcA,IAAI+9H,EAAG7vH,eAAelO,GAAGsQ,IAAIA,EAAE,KAAKA,EAAEA,GAAG,IAAI/P,KAAKP,EAAE,OAAO,IAAIA,KAAK4vD,EAAE,CAAC,IAAI+C,EAAE/C,EAAE5vD,GAAyB,GAAtBwE,EAAE,MAAM0D,EAAEA,EAAElI,QAAG,EAAU4vD,EAAE1hD,eAAelO,IAAI2yD,IAAInuD,IAAI,MAAMmuD,GAAG,MAAMnuD,GAAG,GAAG,UAAUxE,EAAE,GAAGwE,EAAE,CAAC,IAAIqsD,KAAKrsD,GAAGA,EAAE0J,eAAe2iD,IAAI8B,GAAGA,EAAEzkD,eAAe2iD,KAAKlwD,IAAIA,EAAE,CAAC,GAAGA,EAAEkwD,GAAG,IAAI,IAAIA,KAAK8B,EAAEA,EAAEzkD,eAAe2iD,IAAIrsD,EAAEqsD,KAAK8B,EAAE9B,KAAKlwD,IAAIA,EAAE,CAAC,GAAGA,EAAEkwD,GAAG8B,EAAE9B,GAAI,MAAKlwD,IAAI2P,IAAIA,EAAE,IAAIA,EAAE/P,KAAKP,EACpfW,IAAIA,EAAEgyD,MAAM,4BAA4B3yD,GAAG2yD,EAAEA,EAAEA,EAAEgoF,YAAO,EAAOn2I,EAAEA,EAAEA,EAAEm2I,YAAO,EAAO,MAAMhoF,GAAGnuD,IAAImuD,IAAIriD,EAAEA,GAAG,IAAI/P,KAAKP,EAAE2yD,IAAI,aAAa3yD,EAAE,kBAAkB2yD,GAAG,kBAAkBA,IAAIriD,EAAEA,GAAG,IAAI/P,KAAKP,EAAE,GAAG2yD,GAAG,mCAAmC3yD,GAAG,6BAA6BA,IAAI+9H,EAAG7vH,eAAelO,IAAI,MAAM2yD,GAAG,aAAa3yD,GAAGm4F,GAAE,SAASvpF,GAAG0B,GAAG9L,IAAImuD,IAAIriD,EAAE,MAAMA,EAAEA,GAAG,IAAI/P,KAAKP,EAAE2yD,GAAI,CAAAhyD,IAAI2P,EAAEA,GAAG,IAAI/P,KAAK,QAAQI,GAAG,IAAIX,EAAEsQ,GAAKzB,EAAE6xI,YAAY1gJ,KAAE6O,EAAE6B,OAAO,EAAE,CAAC,EAAC87I,GAAG,SAAS59I,EAAEC,EAAElO,EAAEivD,GAAGjvD,IAAIivD,IAAI/gD,EAAE6B,OAAO,EAAG,EAkBnb,IAAI69I,IAAG,EAAGC,IAAE,EAAGC,GAAG,oBAAoBv2E,QAAQA,QAAQ7E,IAAIglB,GAAE,KAAK,SAASq2D,GAAG9/I,EAAEC,GAAG,IAAIlO,EAAEiO,EAAEyE,IAAI,GAAG,OAAO1S,EAAE,GAAG,oBAAoBA,EAAE,IAAIA,EAAE,KAAwB,CAAlB,MAAMivD,GAAG++F,GAAE//I,EAAEC,EAAE+gD,EAAG,MAAKjvD,EAAEmuB,QAAQ,IAAK,UAAS8/H,GAAGhgJ,EAAEC,EAAElO,GAAG,IAAIA,GAAsB,CAAlB,MAAMivD,GAAG++F,GAAE//I,EAAEC,EAAE+gD,EAAG,CAAC,KAAIi/F,IAAG,EAIxR,SAASC,GAAGlgJ,EAAEC,EAAElO,GAAG,IAAIivD,EAAE/gD,EAAE6xI,YAAyC,GAAG,QAAhC9wF,EAAE,OAAOA,EAAEA,EAAEs3F,WAAW,MAAiB,CAAC,IAAIh/I,EAAE0nD,EAAEA,EAAEnlC,KAAK,EAAE,CAAC,IAAIviB,EAAEuQ,IAAI7J,KAAKA,EAAE,CAAC,IAAI0B,EAAEpI,EAAE2V,QAAQ3V,EAAE2V,aAAQ,OAAO,IAASvN,GAAGs+I,GAAG//I,EAAElO,EAAE2P,EAAG,CAAApI,EAAEA,EAAEuiB,IAAK,OAAMviB,IAAI0nD,EAAG,CAAC,UAASm/F,GAAGngJ,EAAEC,GAAgD,GAAG,QAAhCA,EAAE,QAAlBA,EAAEA,EAAE6xI,aAAuB7xI,EAAEq4I,WAAW,MAAiB,CAAC,IAAIvmJ,EAAEkO,EAAEA,EAAE4b,KAAK,EAAE,CAAC,IAAI9pB,EAAE8X,IAAI7J,KAAKA,EAAE,CAAC,IAAIghD,EAAEjvD,EAAE/B,OAAO+B,EAAEkd,QAAQ+xC,GAAI,CAAAjvD,EAAEA,EAAE8pB,IAAK,OAAM9pB,IAAIkO,EAAG,CAAC,UAASmgJ,GAAGpgJ,GAAG,IAAIC,EAAED,EAAEyE,IAAI,GAAG,OAAOxE,EAAE,CAAC,IAAIlO,EAAEiO,EAAEu4H,UAAiBv4H,EAAE6J,IAA8B7J,EAAEjO,EAAE,oBAAoBkO,EAAEA,EAAED,GAAGC,EAAEigB,QAAQlgB,CAAE,CAAC,CACnf,SAASqgJ,GAAGrgJ,GAAG,IAAIC,EAAED,EAAE05H,UAAU,OAAOz5H,IAAID,EAAE05H,UAAU,KAAK2mB,GAAGpgJ,IAAID,EAAEoK,MAAM,KAAKpK,EAAEyvI,UAAU,KAAKzvI,EAAEg6H,QAAQ,KAAK,IAAIh6H,EAAE6J,MAAoB,QAAd5J,EAAED,EAAEu4H,oBAA4Bt4H,EAAE0sI,WAAW1sI,EAAE2sI,WAAW3sI,EAAEqqI,WAAWrqI,EAAE4sI,WAAW5sI,EAAE6sI,MAAM9sI,EAAEu4H,UAAU,KAAKv4H,EAAEic,OAAO,KAAKjc,EAAEy5D,aAAa,KAAKz5D,EAAEkwI,cAAc,KAAKlwI,EAAE45H,cAAc,KAAK55H,EAAE2vI,aAAa,KAAK3vI,EAAEu4H,UAAU,KAAKv4H,EAAE8xI,YAAY,IAAK,UAASwO,GAAGtgJ,GAAG,OAAO,IAAIA,EAAE6J,KAAK,IAAI7J,EAAE6J,KAAK,IAAI7J,EAAE6J,GAAI,CACpa,SAAS02I,GAAGvgJ,GAAGA,EAAE,OAAO,CAAC,KAAK,OAAOA,EAAEg6H,SAAS,CAAC,GAAG,OAAOh6H,EAAEic,QAAQqkI,GAAGtgJ,EAAEic,QAAQ,OAAO,KAAKjc,EAAEA,EAAEic,MAAO,CAA0B,IAA1Bjc,EAAEg6H,QAAQ/9G,OAAOjc,EAAEic,OAAWjc,EAAEA,EAAEg6H,QAAQ,IAAIh6H,EAAE6J,KAAK,IAAI7J,EAAE6J,KAAK,KAAK7J,EAAE6J,KAAK,CAAC,GAAW,EAAR7J,EAAE8B,MAAQ,SAAS9B,EAAE,GAAG,OAAOA,EAAEoK,OAAO,IAAIpK,EAAE6J,IAAI,SAAS7J,EAAOA,EAAEoK,MAAM6R,OAAOjc,EAAEA,EAAEA,EAAEoK,KAAM,MAAa,EAARpK,EAAE8B,OAAS,OAAO9B,EAAEu4H,SAAU,CAAC,CAC1T,SAASioB,GAAGxgJ,EAAEC,EAAElO,GAAG,IAAIivD,EAAEhhD,EAAE6J,IAAI,GAAG,IAAIm3C,GAAG,IAAIA,EAAEhhD,EAAEA,EAAEu4H,UAAUt4H,EAAE,IAAIlO,EAAE0wE,SAAS1wE,EAAE2Y,WAAWJ,aAAatK,EAAEC,GAAGlO,EAAEuY,aAAatK,EAAEC,IAAI,IAAIlO,EAAE0wE,UAAUxiE,EAAElO,EAAE2Y,YAAaJ,aAAatK,EAAEjO,IAAKkO,EAAElO,GAAImY,YAAYlK,GAA4B,QAAxBjO,EAAEA,EAAE0uJ,2BAA8B,IAAS1uJ,GAAG,OAAOkO,EAAEq/I,UAAUr/I,EAAEq/I,QAAQ3T,UAAU,GAAG,IAAI3qF,GAAc,QAAVhhD,EAAEA,EAAEoK,OAAgB,IAAIo2I,GAAGxgJ,EAAEC,EAAElO,GAAGiO,EAAEA,EAAEg6H,QAAQ,OAAOh6H,GAAGwgJ,GAAGxgJ,EAAEC,EAAElO,GAAGiO,EAAEA,EAAEg6H,OAAQ,CAC3X,SAAS0mB,GAAG1gJ,EAAEC,EAAElO,GAAG,IAAIivD,EAAEhhD,EAAE6J,IAAI,GAAG,IAAIm3C,GAAG,IAAIA,EAAEhhD,EAAEA,EAAEu4H,UAAUt4H,EAAElO,EAAEuY,aAAatK,EAAEC,GAAGlO,EAAEmY,YAAYlK,QAAQ,GAAG,IAAIghD,GAAc,QAAVhhD,EAAEA,EAAEoK,OAAgB,IAAIs2I,GAAG1gJ,EAAEC,EAAElO,GAAGiO,EAAEA,EAAEg6H,QAAQ,OAAOh6H,GAAG0gJ,GAAG1gJ,EAAEC,EAAElO,GAAGiO,EAAEA,EAAEg6H,OAAQ,KAAI2mB,GAAE,KAAKC,IAAG,EAAG,SAASC,GAAG7gJ,EAAEC,EAAElO,GAAG,IAAIA,EAAEA,EAAEqY,MAAM,OAAOrY,GAAG+uJ,GAAG9gJ,EAAEC,EAAElO,GAAGA,EAAEA,EAAEioI,OAAQ,CACpR,SAAS8mB,GAAG9gJ,EAAEC,EAAElO,GAAG,GAAG2pI,IAAI,oBAAoBA,GAAGqlB,qBAAqB,IAAIrlB,GAAGqlB,qBAAqBtlB,GAAG1pI,EAAa,CAAV,MAAM6D,GAAI,QAAO7D,EAAE8X,KAAK,KAAK,EAAE+1I,IAAGE,GAAG/tJ,EAAEkO,GAAG,KAAK,EAAE,IAAI+gD,EAAE2/F,GAAErnJ,EAAEsnJ,GAAGD,GAAE,KAAKE,GAAG7gJ,EAAEC,EAAElO,GAAO6uJ,GAAGtnJ,EAAE,QAATqnJ,GAAE3/F,KAAkB4/F,IAAI5gJ,EAAE2gJ,GAAE5uJ,EAAEA,EAAEwmI,UAAU,IAAIv4H,EAAEyiE,SAASziE,EAAE0K,WAAWC,YAAY5Y,GAAGiO,EAAE2K,YAAY5Y,IAAI4uJ,GAAEh2I,YAAY5Y,EAAEwmI,YAAY,MAAM,KAAK,GAAG,OAAOooB,KAAIC,IAAI5gJ,EAAE2gJ,GAAE5uJ,EAAEA,EAAEwmI,UAAU,IAAIv4H,EAAEyiE,SAAS6pE,GAAGtsI,EAAE0K,WAAW3Y,GAAG,IAAIiO,EAAEyiE,UAAU6pE,GAAGtsI,EAAEjO,GAAGktI,GAAGj/H,IAAIssI,GAAGqU,GAAE5uJ,EAAEwmI,YAAY,MAAM,KAAK,EAAEv3E,EAAE2/F,GAAErnJ,EAAEsnJ,GAAGD,GAAE5uJ,EAAEwmI,UAAUoG,cAAciiB,IAAG,EAClfC,GAAG7gJ,EAAEC,EAAElO,GAAG4uJ,GAAE3/F,EAAE4/F,GAAGtnJ,EAAE,MAAM,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAIsmJ,KAAoB,QAAhB5+F,EAAEjvD,EAAE+/I,cAAsC,QAAf9wF,EAAEA,EAAEs3F,aAAsB,CAACh/I,EAAE0nD,EAAEA,EAAEnlC,KAAK,EAAE,CAAC,IAAIna,EAAEpI,EAAE2oD,EAAEvgD,EAAEuN,QAAQvN,EAAEA,EAAEmI,SAAI,IAASo4C,IAAI,KAAO,EAAFvgD,IAAe,KAAO,EAAFA,KAAfs+I,GAAGjuJ,EAAEkO,EAAEgiD,GAAyB3oD,EAAEA,EAAEuiB,IAAK,OAAMviB,IAAI0nD,EAAG,CAAA6/F,GAAG7gJ,EAAEC,EAAElO,GAAG,MAAM,KAAK,EAAE,IAAI6tJ,KAAIE,GAAG/tJ,EAAEkO,GAAiB,oBAAd+gD,EAAEjvD,EAAEwmI,WAAgCyoB,sBAAsB,IAAIhgG,EAAE1gD,MAAMvO,EAAEm+I,cAAclvF,EAAE74C,MAAMpW,EAAE6nI,cAAc54E,EAAEggG,sBAAyC,CAAlB,MAAMprJ,GAAGmqJ,GAAEhuJ,EAAEkO,EAAErK,EAAG,CAAAirJ,GAAG7gJ,EAAEC,EAAElO,GAAG,MAAM,KAAK,GAAG8uJ,GAAG7gJ,EAAEC,EAAElO,GAAG,MAAM,KAAK,GAAU,EAAPA,EAAEmvD,MAAQ0+F,IAAG5+F,EAAE4+F,KAAI,OAChf7tJ,EAAE6nI,cAAcinB,GAAG7gJ,EAAEC,EAAElO,GAAG6tJ,GAAE5+F,GAAG6/F,GAAG7gJ,EAAEC,EAAElO,GAAG,MAAM,QAAQ8uJ,GAAG7gJ,EAAEC,EAAElO,GAAI,UAASkvJ,GAAGjhJ,GAAG,IAAIC,EAAED,EAAE8xI,YAAY,GAAG,OAAO7xI,EAAE,CAACD,EAAE8xI,YAAY,KAAK,IAAI//I,EAAEiO,EAAEu4H,UAAU,OAAOxmI,IAAIA,EAAEiO,EAAEu4H,UAAU,IAAIsnB,IAAI5/I,EAAE5R,SAAQ,SAAS4R,GAAG,IAAI+gD,EAAEkgG,GAAG5xJ,KAAK,KAAK0Q,EAAEC,GAAGlO,EAAEy2D,IAAIvoD,KAAKlO,EAAEwd,IAAItP,GAAGA,EAAEhP,KAAK+vD,EAAEA,GAAI,GAAE,CAAC,CAC1Q,SAASmgG,GAAGnhJ,EAAEC,GAAG,IAAIlO,EAAEkO,EAAEwvI,UAAU,GAAG,OAAO19I,EAAE,IAAI,IAAIivD,EAAE,EAAEA,EAAEjvD,EAAE5M,OAAO67D,IAAI,CAAC,IAAI1nD,EAAEvH,EAAEivD,GAAG,IAAI,IAAIt/C,EAAE1B,EAAEiiD,EAAEhiD,EAAErK,EAAEqsD,EAAEjiD,EAAE,KAAK,OAAOpK,GAAG,CAAC,OAAOA,EAAEiU,KAAK,KAAK,EAAE82I,GAAE/qJ,EAAE2iI,UAAUqoB,IAAG,EAAG,MAAM5gJ,EAAE,KAAK,EAA4C,KAAK,EAAE2gJ,GAAE/qJ,EAAE2iI,UAAUoG,cAAciiB,IAAG,EAAG,MAAM5gJ,EAAEpK,EAAEA,EAAEqmB,MAAO,IAAG,OAAO0kI,GAAE,MAAMh8J,MAAM6oB,EAAE,MAAMszI,GAAGp/I,EAAEugD,EAAE3oD,GAAGqnJ,GAAE,KAAKC,IAAG,EAAG,IAAI78F,EAAEzqD,EAAEogI,UAAU,OAAO31E,IAAIA,EAAE9nC,OAAO,MAAM3iB,EAAE2iB,OAAO,IAAuB,CAAlB,MAAM7qB,GAAG2uJ,GAAEzmJ,EAAE2G,EAAE7O,EAAG,CAAC,IAAkB,MAAf6O,EAAEu+I,aAAmB,IAAIv+I,EAAEA,EAAEmK,MAAM,OAAOnK,GAAGmhJ,GAAGnhJ,EAAED,GAAGC,EAAEA,EAAE+5H,OAAQ,CACle,SAASonB,GAAGphJ,EAAEC,GAAG,IAAIlO,EAAEiO,EAAE05H,UAAU14E,EAAEhhD,EAAE8B,MAAM,OAAO9B,EAAE6J,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAiB,GAAds3I,GAAGlhJ,EAAED,GAAGqhJ,GAAGrhJ,GAAQ,EAAFghD,EAAI,CAAC,IAAIk/F,GAAG,EAAElgJ,EAAEA,EAAEic,QAAQkkI,GAAG,EAAEngJ,EAA4B,CAAzB,MAAMyB,GAAGs+I,GAAE//I,EAAEA,EAAEic,OAAOxa,EAAG,KAAIy+I,GAAG,EAAElgJ,EAAEA,EAAEic,OAAiC,CAAzB,MAAMxa,GAAGs+I,GAAE//I,EAAEA,EAAEic,OAAOxa,EAAG,CAAC,OAAM,KAAK,EAAE0/I,GAAGlhJ,EAAED,GAAGqhJ,GAAGrhJ,GAAK,IAAFghD,GAAO,OAAOjvD,GAAG+tJ,GAAG/tJ,EAAEA,EAAEkqB,QAAQ,MAAM,KAAK,EAAgD,GAA9CklI,GAAGlhJ,EAAED,GAAGqhJ,GAAGrhJ,GAAK,IAAFghD,GAAO,OAAOjvD,GAAG+tJ,GAAG/tJ,EAAEA,EAAEkqB,QAAmB,GAARjc,EAAE8B,MAAS,CAAC,IAAIxI,EAAE0G,EAAEu4H,UAAU,IAAIhE,GAAGj7H,EAAE,GAA6B,CAAzB,MAAMmI,GAAGs+I,GAAE//I,EAAEA,EAAEic,OAAOxa,EAAG,CAAC,IAAK,EAAFu/C,GAAoB,OAAd1nD,EAAE0G,EAAEu4H,WAAmB,CAAC,IAAI72H,EAAE1B,EAAEkwI,cAAcjuF,EAAE,OAAOlwD,EAAEA,EAAEm+I,cAAcxuI,EAAE9L,EAAEoK,EAAEjR,KAAKg1D,EAAE/jD,EAAE8xI,YACje,GAAnB9xI,EAAE8xI,YAAY,KAAQ,OAAO/tF,EAAE,IAAI,UAAUnuD,GAAG,UAAU8L,EAAE3S,MAAM,MAAM2S,EAAExP,MAAMs5B,EAAGlyB,EAAEoI,GAAGo2H,GAAGliI,EAAEqsD,GAAG,IAAI7wD,EAAE0mI,GAAGliI,EAAE8L,GAAG,IAAIugD,EAAE,EAAEA,EAAE8B,EAAE5+D,OAAO88D,GAAG,EAAE,CAAC,IAAIlB,EAAEgD,EAAE9B,GAAGzF,EAAEuH,EAAE9B,EAAE,GAAG,UAAUlB,EAAEk2E,GAAG39H,EAAEkjD,GAAG,4BAA4BuE,EAAEmzE,GAAG56H,EAAEkjD,GAAG,aAAauE,EAAEwzE,GAAGj7H,EAAEkjD,GAAGyzE,EAAG32H,EAAEynD,EAAEvE,EAAEprD,EAAG,QAAOwE,GAAG,IAAK,QAAQw1B,EAAG9xB,EAAEoI,GAAG,MAAM,IAAK,WAAWmyH,GAAGv6H,EAAEoI,GAAG,MAAM,IAAK,SAAS,IAAIF,EAAElI,EAAEy5H,cAAcosB,YAAY7lJ,EAAEy5H,cAAcosB,cAAcz9I,EAAE09I,SAAS,IAAInlH,EAAEv4B,EAAEjV,MAAM,MAAMwtC,EAAEs5F,GAAGj6H,IAAIoI,EAAE09I,SAASnlH,GAAE,GAAIz4B,MAAME,EAAE09I,WAAW,MAAM19I,EAAE+X,aAAa85G,GAAGj6H,IAAIoI,EAAE09I,SACnf19I,EAAE+X,cAAa,GAAI85G,GAAGj6H,IAAIoI,EAAE09I,SAAS19I,EAAE09I,SAAS,GAAG,IAAG,IAAK9lJ,EAAEszI,IAAIlrI,CAA2B,CAAzB,MAAMD,GAAGs+I,GAAE//I,EAAEA,EAAEic,OAAOxa,EAAG,CAAC,OAAM,KAAK,EAAgB,GAAd0/I,GAAGlhJ,EAAED,GAAGqhJ,GAAGrhJ,GAAQ,EAAFghD,EAAI,CAAC,GAAG,OAAOhhD,EAAEu4H,UAAU,MAAM5zI,MAAM6oB,EAAE,MAAMlU,EAAE0G,EAAEu4H,UAAU72H,EAAE1B,EAAEkwI,cAAc,IAAI52I,EAAEggC,UAAU53B,CAA2B,CAAzB,MAAMD,GAAGs+I,GAAE//I,EAAEA,EAAEic,OAAOxa,EAAG,CAAC,OAAM,KAAK,EAAgB,GAAd0/I,GAAGlhJ,EAAED,GAAGqhJ,GAAGrhJ,GAAQ,EAAFghD,GAAK,OAAOjvD,GAAGA,EAAE6nI,cAAc8E,aAAa,IAAIO,GAAGh/H,EAAE0+H,cAAwC,CAAzB,MAAMl9H,GAAGs+I,GAAE//I,EAAEA,EAAEic,OAAOxa,EAAG,OAAM,KAAK,EAG4G,QAAQ0/I,GAAGlhJ,EACnfD,GAAGqhJ,GAAGrhJ,SAJ4Y,KAAK,GAAGmhJ,GAAGlhJ,EAAED,GAAGqhJ,GAAGrhJ,GAAqB,MAAlB1G,EAAE0G,EAAEoK,OAAQtI,QAAaJ,EAAE,OAAOpI,EAAEsgI,cAActgI,EAAEi/H,UAAUj+E,SAAS54C,GAAGA,GAClf,OAAOpI,EAAEogI,WAAW,OAAOpgI,EAAEogI,UAAUE,gBAAgB0nB,GAAG3mB,OAAQ,EAAF35E,GAAKigG,GAAGjhJ,GAAG,MAAM,KAAK,GAAsF,GAAnF+gD,EAAE,OAAOhvD,GAAG,OAAOA,EAAE6nI,cAAqB,EAAP55H,EAAEkhD,MAAQ0+F,IAAGxuJ,EAAEwuJ,KAAI7+F,EAAEogG,GAAGlhJ,EAAED,GAAG4/I,GAAExuJ,GAAG+vJ,GAAGlhJ,EAAED,GAAGqhJ,GAAGrhJ,GAAQ,KAAFghD,EAAO,CAA0B,GAAzB5vD,EAAE,OAAO4O,EAAE45H,eAAkB55H,EAAEu4H,UAAUj+E,SAASlpD,KAAK2vD,GAAG,KAAY,EAAP/gD,EAAEkhD,MAAQ,IAAIuoC,GAAEzpF,EAAE+gD,EAAE/gD,EAAEoK,MAAM,OAAO22C,GAAG,CAAC,IAAIvE,EAAEitC,GAAE1oC,EAAE,OAAO0oC,IAAG,CAAe,OAAVxvD,GAAJz4B,EAAEioF,IAAMr/E,MAAa5I,EAAEqI,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAGq2I,GAAG,EAAE1+I,EAAEA,EAAEya,QAAQ,MAAM,KAAK,EAAE6jI,GAAGt+I,EAAEA,EAAEya,QAAQ,IAAIta,EAAEH,EAAE+2H,UAAU,GAAG,oBAAoB52H,EAAEq/I,qBAAqB,CAAChgG,EAAEx/C,EAAEzP,EAAEyP,EAAEya,OAAO,IAAIhc,EAAE+gD,EAAEr/C,EAAErB,MACpfL,EAAEiwI,cAAcvuI,EAAEwG,MAAMlI,EAAE25H,cAAcj4H,EAAEq/I,sBAAyC,CAAlB,MAAMv/I,GAAGs+I,GAAE/+F,EAAEjvD,EAAE0P,EAAG,CAAC,OAAM,KAAK,EAAEq+I,GAAGt+I,EAAEA,EAAEya,QAAQ,MAAM,KAAK,GAAG,GAAG,OAAOza,EAAEo4H,cAAc,CAAC2nB,GAAG/kG,GAAG,QAAS,EAAC,OAAOviB,GAAGA,EAAEhe,OAAOza,EAAEioF,GAAExvD,GAAGsnH,GAAG/kG,EAAG,CAAAuE,EAAEA,EAAEi5E,OAAQ,CAAAh6H,EAAE,IAAI+gD,EAAE,KAAKvE,EAAEx8C,IAAI,CAAC,GAAG,IAAIw8C,EAAE3yC,KAAK,GAAG,OAAOk3C,EAAE,CAACA,EAAEvE,EAAE,IAAIljD,EAAEkjD,EAAE+7E,UAAUnnI,EAAa,oBAAVsQ,EAAEpI,EAAE4X,OAA4BgmH,YAAYx1H,EAAEw1H,YAAY,UAAU,OAAO,aAAax1H,EAAEizG,QAAQ,QAAS/+G,EAAE4mD,EAAE+7E,UAAkCt2E,OAAE,KAA1B8B,EAAEvH,EAAE0zF,cAAch/H,QAAoB,OAAO6yC,GAAGA,EAAEzkD,eAAe,WAAWykD,EAAE4wD,QAAQ,KAAK/+G,EAAEsb,MAAMyjG,QACzfqiB,GAAG,UAAU/0E,GAA6B,CAAzB,MAAMxgD,GAAGs+I,GAAE//I,EAAEA,EAAEic,OAAOxa,EAAG,CAAC,OAAM,GAAG,IAAI+6C,EAAE3yC,KAAK,GAAG,OAAOk3C,EAAE,IAAIvE,EAAE+7E,UAAUj/F,UAAUloC,EAAE,GAAGorD,EAAE0zF,aAAuC,CAAzB,MAAMzuI,GAAGs+I,GAAE//I,EAAEA,EAAEic,OAAOxa,EAAG,OAAM,IAAI,KAAK+6C,EAAE3yC,KAAK,KAAK2yC,EAAE3yC,KAAK,OAAO2yC,EAAEo9E,eAAep9E,IAAIx8C,IAAI,OAAOw8C,EAAEpyC,MAAM,CAACoyC,EAAEpyC,MAAM6R,OAAOugC,EAAEA,EAAEA,EAAEpyC,MAAM,QAAS,IAAGoyC,IAAIx8C,EAAE,MAAMA,EAAE,KAAK,OAAOw8C,EAAEw9E,SAAS,CAAC,GAAG,OAAOx9E,EAAEvgC,QAAQugC,EAAEvgC,SAASjc,EAAE,MAAMA,EAAE+gD,IAAIvE,IAAIuE,EAAE,MAAMvE,EAAEA,EAAEvgC,MAAO,CAAA8kC,IAAIvE,IAAIuE,EAAE,MAAMvE,EAAEw9E,QAAQ/9G,OAAOugC,EAAEvgC,OAAOugC,EAAEA,EAAEw9E,OAAQ,CAAC,OAAM,KAAK,GAAGmnB,GAAGlhJ,EAAED,GAAGqhJ,GAAGrhJ,GAAK,EAAFghD,GAAKigG,GAAGjhJ,GAAS,KAAK,IACrd,UAASqhJ,GAAGrhJ,GAAG,IAAIC,EAAED,EAAE8B,MAAM,GAAK,EAAF7B,EAAI,CAAC,IAAID,EAAE,CAAC,IAAI,IAAIjO,EAAEiO,EAAEic,OAAO,OAAOlqB,GAAG,CAAC,GAAGuuJ,GAAGvuJ,GAAG,CAAC,IAAIivD,EAAEjvD,EAAE,MAAMiO,CAAE,CAAAjO,EAAEA,EAAEkqB,MAAO,OAAMt3B,MAAM6oB,EAAE,KAAO,QAAOwzC,EAAEn3C,KAAK,KAAK,EAAE,IAAIvQ,EAAE0nD,EAAEu3E,UAAkB,GAARv3E,EAAEl/C,QAAWyyH,GAAGj7H,EAAE,IAAI0nD,EAAEl/C,QAAQ,IAAgB4+I,GAAG1gJ,EAATugJ,GAAGvgJ,GAAU1G,GAAG,MAAM,KAAK,EAAE,KAAK,EAAE,IAAI2oD,EAAEjB,EAAEu3E,UAAUoG,cAAsB6hB,GAAGxgJ,EAATugJ,GAAGvgJ,GAAUiiD,GAAG,MAAM,QAAQ,MAAMt9D,MAAM6oB,EAAE,MAAiC,CAAzB,MAAMu2C,GAAGg8F,GAAE//I,EAAEA,EAAEic,OAAO8nC,EAAG,CAAA/jD,EAAE8B,QAAQ,CAAE,CAAE,KAAF7B,IAASD,EAAE8B,QAAQ,KAAM,UAAS0/I,GAAGxhJ,EAAEC,EAAElO,GAAG03F,GAAEzpF,EAAEyhJ,GAAGzhJ,EAAEC,EAAElO,EAAG,CACxb,SAAS0vJ,GAAGzhJ,EAAEC,EAAElO,GAAG,IAAI,IAAIivD,EAAE,KAAY,EAAPhhD,EAAEkhD,MAAQ,OAAOuoC,IAAG,CAAC,IAAInwF,EAAEmwF,GAAE/nF,EAAEpI,EAAE8Q,MAAM,GAAG,KAAK9Q,EAAEuQ,KAAKm3C,EAAE,CAAC,IAAIiB,EAAE,OAAO3oD,EAAEsgI,eAAe+lB,GAAG,IAAI19F,EAAE,CAAC,IAAIrsD,EAAE0D,EAAEogI,UAAU31E,EAAE,OAAOnuD,GAAG,OAAOA,EAAEgkI,eAAegmB,GAAEhqJ,EAAE+pJ,GAAG,IAAIvuJ,EAAEwuJ,GAAO,GAALD,GAAG19F,GAAM29F,GAAE77F,KAAK3yD,EAAE,IAAIq4F,GAAEnwF,EAAE,OAAOmwF,IAAO1lC,GAAJ9B,EAAEwnC,IAAMr/E,MAAM,KAAK63C,EAAEp4C,KAAK,OAAOo4C,EAAE23E,cAAc8nB,GAAGpoJ,GAAG,OAAOyqD,GAAGA,EAAE9nC,OAAOgmC,EAAEwnC,GAAE1lC,GAAG29F,GAAGpoJ,GAAG,KAAK,OAAOoI,GAAG+nF,GAAE/nF,EAAE+/I,GAAG//I,EAAEzB,EAAElO,GAAG2P,EAAEA,EAAEs4H,QAAQvwC,GAAEnwF,EAAEqmJ,GAAG/pJ,EAAEgqJ,GAAExuJ,CAAE,CAAAuwJ,GAAG3hJ,EAAO,MAAK,KAAoB,KAAf1G,EAAEklJ,eAAoB,OAAO98I,GAAGA,EAAEua,OAAO3iB,EAAEmwF,GAAE/nF,GAAGigJ,GAAG3hJ,EAAO,CAAC,CACxc,SAAS2hJ,GAAG3hJ,GAAG,KAAK,OAAOypF,IAAG,CAAC,IAAIxpF,EAAEwpF,GAAE,GAAG,KAAa,KAARxpF,EAAE6B,OAAY,CAAC,IAAI/P,EAAEkO,EAAEy5H,UAAU,IAAI,GAAG,KAAa,KAARz5H,EAAE6B,OAAY,OAAO7B,EAAE4J,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG+1I,IAAGO,GAAG,EAAElgJ,GAAG,MAAM,KAAK,EAAE,IAAI+gD,EAAE/gD,EAAEs4H,UAAU,GAAW,EAARt4H,EAAE6B,QAAU89I,GAAE,GAAG,OAAO7tJ,EAAEivD,EAAEszF,wBAAwB,CAAC,IAAIh7I,EAAE2G,EAAEyrG,cAAczrG,EAAElR,KAAKgD,EAAEm+I,cAAcK,GAAGtwI,EAAElR,KAAKgD,EAAEm+I,eAAelvF,EAAEq8F,mBAAmB/jJ,EAAEvH,EAAE6nI,cAAc54E,EAAE4gG,oCAAqC,KAAIlgJ,EAAEzB,EAAE6xI,YAAY,OAAOpwI,GAAGoxI,GAAG7yI,EAAEyB,EAAEs/C,GAAG,MAAM,KAAK,EAAE,IAAIiB,EAAEhiD,EAAE6xI,YAAY,GAAG,OAAO7vF,EAAE,CAAQ,GAAPlwD,EAAE,KAAQ,OAAOkO,EAAEmK,MAAM,OAAOnK,EAAEmK,MAAMP,KAAK,KAAK,EACvf,KAAK,EAAE9X,EAAEkO,EAAEmK,MAAMmuH,UAAUua,GAAG7yI,EAAEgiD,EAAElwD,EAAG,OAAM,KAAK,EAAE,IAAI6D,EAAEqK,EAAEs4H,UAAU,GAAG,OAAOxmI,GAAW,EAARkO,EAAE6B,MAAQ,CAAC/P,EAAE6D,EAAE,IAAImuD,EAAE9jD,EAAEiwI,cAAc,OAAOjwI,EAAElR,MAAM,IAAK,SAAS,IAAK,QAAQ,IAAK,SAAS,IAAK,WAAWg1D,EAAEwhE,WAAWxzH,EAAEqyH,QAAQ,MAAM,IAAK,MAAMrgE,EAAEjmC,MAAM/rB,EAAE+rB,IAAIimC,EAAEjmC,KAAM,OAAM,KAAK,EAAQ,KAAK,EAAQ,KAAK,GAAyJ,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAhM,KAAK,GAAG,GAAG,OAAO7d,EAAE25H,cAAc,CAAC,IAAIxoI,EAAE6O,EAAEy5H,UAAU,GAAG,OAAOtoI,EAAE,CAAC,IAAI2vD,EAAE3vD,EAAEwoI,cAAc,GAAG,OAAO74E,EAAE,CAAC,IAAIvE,EAAEuE,EAAE84E,WAAW,OAAOr9E,GAAGyiF,GAAGziF,EAAG,CAAC,CAAC,OAC5c,QAAQ,MAAM73D,MAAM6oB,EAAE,MAAOoyI,IAAW,IAAR3/I,EAAE6B,OAAWs+I,GAAGngJ,EAA4B,CAAzB,MAAMuB,GAAGu+I,GAAE9/I,EAAEA,EAAEgc,OAAOza,EAAG,CAAC,IAAGvB,IAAID,EAAE,CAACypF,GAAE,KAAK,KAAM,CAAY,GAAG,QAAf13F,EAAEkO,EAAE+5H,SAAoB,CAACjoI,EAAEkqB,OAAOhc,EAAEgc,OAAOwtE,GAAE13F,EAAE,KAAM,CAAA03F,GAAExpF,EAAEgc,MAAO,CAAC,UAASslI,GAAGvhJ,GAAG,KAAK,OAAOypF,IAAG,CAAC,IAAIxpF,EAAEwpF,GAAE,GAAGxpF,IAAID,EAAE,CAACypF,GAAE,KAAK,KAAM,KAAI13F,EAAEkO,EAAE+5H,QAAQ,GAAG,OAAOjoI,EAAE,CAACA,EAAEkqB,OAAOhc,EAAEgc,OAAOwtE,GAAE13F,EAAE,KAAM,CAAA03F,GAAExpF,EAAEgc,MAAO,CAAC,CACxS,SAASylI,GAAG1hJ,GAAG,KAAK,OAAOypF,IAAG,CAAC,IAAIxpF,EAAEwpF,GAAE,IAAI,OAAOxpF,EAAE4J,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI9X,EAAEkO,EAAEgc,OAAO,IAAIkkI,GAAG,EAAElgJ,EAAqB,CAAlB,MAAM8jD,GAAGg8F,GAAE9/I,EAAElO,EAAEgyD,EAAG,OAAM,KAAK,EAAE,IAAI/C,EAAE/gD,EAAEs4H,UAAU,GAAG,oBAAoBv3E,EAAEszF,kBAAkB,CAAC,IAAIh7I,EAAE2G,EAAEgc,OAAO,IAAI+kC,EAAEszF,mBAAsC,CAAlB,MAAMvwF,GAAGg8F,GAAE9/I,EAAE3G,EAAEyqD,EAAG,CAAC,KAAIriD,EAAEzB,EAAEgc,OAAO,IAAImkI,GAAGngJ,EAAqB,CAAlB,MAAM8jD,GAAGg8F,GAAE9/I,EAAEyB,EAAEqiD,EAAG,OAAM,KAAK,EAAE,IAAI9B,EAAEhiD,EAAEgc,OAAO,IAAImkI,GAAGngJ,EAAqB,CAAlB,MAAM8jD,GAAGg8F,GAAE9/I,EAAEgiD,EAAE8B,EAAG,EAA2B,CAAzB,MAAMA,GAAGg8F,GAAE9/I,EAAEA,EAAEgc,OAAO8nC,EAAG,IAAG9jD,IAAID,EAAE,CAACypF,GAAE,KAAK,KAAM,KAAI7zF,EAAEqK,EAAE+5H,QAAQ,GAAG,OAAOpkI,EAAE,CAACA,EAAEqmB,OAAOhc,EAAEgc,OAAOwtE,GAAE7zF,EAAE,KAAM,CAAA6zF,GAAExpF,EAAEgc,MAAO,CAAC,CAC9d,IAwBkN4lI,GAxB9MC,GAAGvqJ,KAAKshD,KAAKkpG,GAAGxxB,EAAG6lB,uBAAuB4L,GAAGzxB,EAAG2rB,kBAAkB+F,GAAG1xB,EAAG4O,wBAAwBsT,GAAE,EAAE2F,GAAE,KAAK8J,GAAE,KAAKt3D,GAAE,EAAEmyD,GAAG,EAAED,GAAG7P,GAAG,GAAGsS,GAAE,EAAE4C,GAAG,KAAKtP,GAAG,EAAEl7E,GAAG,EAAEyqF,GAAG,EAAE5qF,GAAG,KAAK6qF,GAAG,KAAKf,GAAG,EAAE9B,GAAG5/E,IAAS0iF,GAAG,KAAKhH,IAAG,EAAGC,GAAG,KAAKG,GAAG,KAAK6G,IAAG,EAAGC,GAAG,KAAKC,GAAG,EAAEC,GAAG,EAAEC,GAAG,KAAKC,IAAI,EAAEC,GAAG,EAAE,SAAS7sE,KAAI,OAAO,KAAO,EAAFy8D,IAAK9X,MAAK,IAAIioB,GAAGA,GAAGA,GAAGjoB,IAAI,CACjU,SAAS2Y,GAAGtzI,GAAG,OAAG,KAAY,EAAPA,EAAEkhD,MAAe,EAAK,KAAO,EAAFuxF,KAAM,IAAI7nD,GAASA,IAAGA,GAAK,OAAO0lD,GAAGhR,YAAkB,IAAIujB,KAAKA,GAAGlmB,MAAMkmB,IAAU,KAAP7iJ,EAAEg9H,IAAkBh9H,EAAiBA,OAAE,KAAjBA,EAAEvD,OAAOkT,OAAmB,GAAG+vH,GAAG1/H,EAAEjR,KAAe,UAASwkJ,GAAGvzI,EAAEC,EAAElO,EAAEivD,GAAG,GAAG,GAAG0hG,GAAG,MAAMA,GAAG,EAAEC,GAAG,KAAKh+J,MAAM6oB,EAAE,MAAMqvH,GAAG78H,EAAEjO,EAAEivD,GAAM,KAAO,EAAFyxF,KAAMzyI,IAAIo4I,KAAEp4I,IAAIo4I,KAAI,KAAO,EAAF3F,MAAO96E,IAAI5lE,GAAG,IAAIwtJ,IAAGuD,GAAG9iJ,EAAE4qF,KAAIm4D,GAAG/iJ,EAAEghD,GAAG,IAAIjvD,GAAG,IAAI0gJ,IAAG,KAAY,EAAPxyI,EAAEihD,QAAUs+F,GAAG7kB,KAAI,IAAIuT,IAAIG,MAAM,CAC3Y,SAAS0U,GAAG/iJ,EAAEC,GAAG,IAAIlO,EAAEiO,EAAEgjJ,cA5MzB,SAAYhjJ,EAAEC,GAAG,IAAI,IAAIlO,EAAEiO,EAAEq8H,eAAer7E,EAAEhhD,EAAEs8H,YAAYhjI,EAAE0G,EAAEijJ,gBAAgBvhJ,EAAE1B,EAAEo8H,aAAa,EAAE16H,GAAG,CAAC,IAAIugD,EAAE,GAAG05E,GAAGj6H,GAAG9L,EAAE,GAAGqsD,EAAE8B,EAAEzqD,EAAE2oD,IAAO,IAAI8B,EAAM,KAAKnuD,EAAE7D,IAAI,KAAK6D,EAAEorD,KAAG1nD,EAAE2oD,GAAGw6E,GAAG7mI,EAAEqK,IAAQ8jD,GAAG9jD,IAAID,EAAEkjJ,cAActtJ,GAAG8L,IAAI9L,CAAE,CAAC,CA4MpLutJ,CAAGnjJ,EAAEC,GAAG,IAAI+gD,EAAEm7E,GAAGn8H,EAAEA,IAAIo4I,GAAExtD,GAAE,GAAG,GAAG,IAAI5pC,EAAE,OAAOjvD,GAAGsoI,GAAGtoI,GAAGiO,EAAEgjJ,aAAa,KAAKhjJ,EAAEojJ,iBAAiB,OAAO,GAAGnjJ,EAAE+gD,GAAGA,EAAEhhD,EAAEojJ,mBAAmBnjJ,EAAE,CAAgB,GAAf,MAAMlO,GAAGsoI,GAAGtoI,GAAM,IAAIkO,EAAE,IAAID,EAAE6J,IA7IsJ,SAAY7J,GAAGkuI,IAAG,EAAGE,GAAGpuI,EAAG,CA6I7KqjJ,CAAGC,GAAGh0J,KAAK,KAAK0Q,IAAIouI,GAAGkV,GAAGh0J,KAAK,KAAK0Q,IAAImsI,IAAG,WAAW,KAAO,EAAFsG,KAAMpE,IAAK,IAAEt8I,EAAE,SAAS,CAAC,OAAOkrI,GAAGj8E,IAAI,KAAK,EAAEjvD,EAAEgpI,GAAG,MAAM,KAAK,EAAEhpI,EAAEkpI,GAAG,MAAM,KAAK,GAAwC,QAAQlpI,EAAEopI,SAApC,KAAK,UAAUppI,EAAEwpI,GAAsBxpI,EAAEwxJ,GAAGxxJ,EAAEyxJ,GAAGl0J,KAAK,KAAK0Q,GAAI,CAAAA,EAAEojJ,iBAAiBnjJ,EAAED,EAAEgjJ,aAAajxJ,CAAE,CAAC,CAC9c,SAASyxJ,GAAGxjJ,EAAEC,GAAc,GAAX2iJ,IAAI,EAAEC,GAAG,EAAK,KAAO,EAAFpQ,IAAK,MAAM9tJ,MAAM6oB,EAAE,MAAM,IAAIzb,EAAEiO,EAAEgjJ,aAAa,GAAGS,MAAMzjJ,EAAEgjJ,eAAejxJ,EAAE,OAAO,KAAK,IAAIivD,EAAEm7E,GAAGn8H,EAAEA,IAAIo4I,GAAExtD,GAAE,GAAG,GAAG,IAAI5pC,EAAE,OAAO,KAAK,GAAG,KAAO,GAAFA,IAAO,KAAKA,EAAEhhD,EAAEkjJ,eAAejjJ,EAAEA,EAAEyjJ,GAAG1jJ,EAAEghD,OAAO,CAAC/gD,EAAE+gD,EAAE,IAAI1nD,EAAEm5I,GAAEA,IAAG,EAAE,IAAI/wI,EAAEiiJ,KAAgD,IAAxCvL,KAAIp4I,GAAG4qF,KAAI3qF,IAAEqiJ,GAAG,KAAK9C,GAAG7kB,KAAI,IAAIipB,GAAG5jJ,EAAEC,MAAM,IAAI4jJ,KAAK,KAAuB,CAAjB,MAAMjuJ,GAAGkuJ,GAAG9jJ,EAAEpK,EAAG,CAASg7I,KAAKmR,GAAG7hI,QAAQxe,EAAE+wI,GAAEn5I,EAAE,OAAO4oJ,GAAEjiJ,EAAE,GAAGm4I,GAAE,KAAKxtD,GAAE,EAAE3qF,EAAEs/I,GAAG,IAAG,IAAIt/I,EAAE,CAAyC,GAAxC,IAAIA,IAAY,KAAR3G,EAAEojI,GAAG18H,MAAWghD,EAAE1nD,EAAE2G,EAAE+3E,GAAGh4E,EAAE1G,KAAQ,IAAI2G,EAAE,MAAMlO,EAAEowJ,GAAGyB,GAAG5jJ,EAAE,GAAG8iJ,GAAG9iJ,EAAEghD,GAAG+hG,GAAG/iJ,EAAE26H,MAAK5oI,EAAE,GAAG,IAAIkO,EAAE6iJ,GAAG9iJ,EAAEghD,OAChf,CAAuB,GAAtB1nD,EAAE0G,EAAEkgB,QAAQw5G,UAAa,KAAO,GAAF14E,KAGnC,SAAYhhD,GAAG,IAAI,IAAIC,EAAED,IAAI,CAAC,GAAW,MAARC,EAAE6B,MAAY,CAAC,IAAI/P,EAAEkO,EAAE6xI,YAAY,GAAG,OAAO//I,GAAe,QAAXA,EAAEA,EAAEwmJ,QAAiB,IAAI,IAAIv3F,EAAE,EAAEA,EAAEjvD,EAAE5M,OAAO67D,IAAI,CAAC,IAAI1nD,EAAEvH,EAAEivD,GAAGt/C,EAAEpI,EAAE2+I,YAAY3+I,EAAEA,EAAE7M,MAAM,IAAI,IAAI06I,GAAGzlI,IAAIpI,GAAG,OAAM,CAAqB,CAAlB,MAAM2oD,GAAG,OAAM,CAAG,CAAC,CAAC,CAAU,GAAVlwD,EAAEkO,EAAEmK,MAAwB,MAAfnK,EAAEu+I,cAAoB,OAAOzsJ,EAAEA,EAAEkqB,OAAOhc,EAAEA,EAAElO,MAAM,CAAC,GAAGkO,IAAID,EAAE,MAAM,KAAK,OAAOC,EAAE+5H,SAAS,CAAC,GAAG,OAAO/5H,EAAEgc,QAAQhc,EAAEgc,SAASjc,EAAE,OAAM,EAAGC,EAAEA,EAAEgc,MAAO,CAAAhc,EAAE+5H,QAAQ/9G,OAAOhc,EAAEgc,OAAOhc,EAAEA,EAAE+5H,OAAQ,CAAC,QAAM,CAAG,CAHxX+pB,CAAGzqJ,KAAe,KAAV2G,EAAEyjJ,GAAG1jJ,EAAEghD,MAAmB,KAARt/C,EAAEg7H,GAAG18H,MAAWghD,EAAEt/C,EAAEzB,EAAE+3E,GAAGh4E,EAAE0B,KAAK,IAAIzB,GAAG,MAAMlO,EAAEowJ,GAAGyB,GAAG5jJ,EAAE,GAAG8iJ,GAAG9iJ,EAAEghD,GAAG+hG,GAAG/iJ,EAAE26H,MAAK5oI,EAAqC,OAAnCiO,EAAEgkJ,aAAa1qJ,EAAE0G,EAAEikJ,cAAcjjG,EAAS/gD,GAAG,KAAK,EAAE,KAAK,EAAE,MAAMtb,MAAM6oB,EAAE,MAAM,KAAK,EAC8B,KAAK,EAAE02I,GAAGlkJ,EAAEqiJ,GAAGC,IAAI,MAD7B,KAAK,EAAU,GAARQ,GAAG9iJ,EAAEghD,IAAS,UAAFA,KAAeA,GAAiB,IAAb/gD,EAAEqhJ,GAAG,IAAI3mB,MAAU,CAAC,GAAG,IAAIwB,GAAGn8H,EAAE,GAAG,MAAyB,KAAnB1G,EAAE0G,EAAEq8H,gBAAqBr7E,KAAKA,EAAE,CAACg1B,KAAIh2E,EAAEs8H,aAAat8H,EAAEq8H,eAAe/iI,EAAE,KAAM,CAAA0G,EAAEmkJ,cAAcnY,GAAGkY,GAAG50J,KAAK,KAAK0Q,EAAEqiJ,GAAGC,IAAIriJ,GAAG,KAAM,CAAAikJ,GAAGlkJ,EAAEqiJ,GAAGC,IAAI,MAAM,KAAK,EAAU,GAARQ,GAAG9iJ,EAAEghD,IAAS,QAAFA,KAC9eA,EAAE,MAAqB,IAAf/gD,EAAED,EAAE88H,WAAexjI,GAAG,EAAE,EAAE0nD,GAAG,CAAC,IAAIiB,EAAE,GAAG05E,GAAG36E,GAAGt/C,EAAE,GAAGugD,GAAEA,EAAEhiD,EAAEgiD,IAAK3oD,IAAIA,EAAE2oD,GAAGjB,IAAIt/C,CAAE,CAAoG,GAApGs/C,EAAE1nD,EAAqG,IAA3F0nD,GAAG,KAAXA,EAAE25E,KAAI35E,GAAW,IAAI,IAAIA,EAAE,IAAI,KAAKA,EAAE,KAAK,KAAKA,EAAE,KAAK,IAAIA,EAAE,IAAI,KAAKA,EAAE,KAAK,KAAK8gG,GAAG9gG,EAAE,OAAOA,GAAU,CAAChhD,EAAEmkJ,cAAcnY,GAAGkY,GAAG50J,KAAK,KAAK0Q,EAAEqiJ,GAAGC,IAAIthG,GAAG,KAAM,CAAAkjG,GAAGlkJ,EAAEqiJ,GAAGC,IAAI,MAA+B,QAAQ,MAAM39J,MAAM6oB,EAAE,MAAQ,CAAC,CAAU,OAAVu1I,GAAG/iJ,EAAE26H,MAAY36H,EAAEgjJ,eAAejxJ,EAAEyxJ,GAAGl0J,KAAK,KAAK0Q,GAAG,IAAK,CACtX,SAASg4E,GAAGh4E,EAAEC,GAAG,IAAIlO,EAAEylE,GAA2G,OAAxGx3D,EAAEkgB,QAAQ05G,cAAc8E,eAAeklB,GAAG5jJ,EAAEC,GAAG6B,OAAO,KAAe,KAAV9B,EAAE0jJ,GAAG1jJ,EAAEC,MAAWA,EAAEoiJ,GAAGA,GAAGtwJ,EAAE,OAAOkO,GAAGi/I,GAAGj/I,IAAWD,CAAE,UAASk/I,GAAGl/I,GAAG,OAAOqiJ,GAAGA,GAAGriJ,EAAEqiJ,GAAG1wJ,KAAKgC,MAAM0uJ,GAAGriJ,EAAG,CAE7L,SAAS8iJ,GAAG9iJ,EAAEC,GAAuD,IAApDA,IAAImiJ,GAAGniJ,IAAI03D,GAAG33D,EAAEq8H,gBAAgBp8H,EAAED,EAAEs8H,cAAcr8H,EAAMD,EAAEA,EAAEijJ,gBAAgB,EAAEhjJ,GAAG,CAAC,IAAIlO,EAAE,GAAG4pI,GAAG17H,GAAG+gD,EAAE,GAAGjvD,EAAEiO,EAAEjO,IAAI,EAAEkO,IAAI+gD,CAAE,CAAC,UAASsiG,GAAGtjJ,GAAG,GAAG,KAAO,EAAFyyI,IAAK,MAAM9tJ,MAAM6oB,EAAE,MAAMi2I,KAAK,IAAIxjJ,EAAEk8H,GAAGn8H,EAAE,GAAG,GAAG,KAAO,EAAFC,GAAK,OAAO8iJ,GAAG/iJ,EAAE26H,MAAK,KAAK,IAAI5oI,EAAE2xJ,GAAG1jJ,EAAEC,GAAG,GAAG,IAAID,EAAE6J,KAAK,IAAI9X,EAAE,CAAC,IAAIivD,EAAE07E,GAAG18H,GAAG,IAAIghD,IAAI/gD,EAAE+gD,EAAEjvD,EAAEimF,GAAGh4E,EAAEghD,GAAI,IAAG,IAAIjvD,EAAE,MAAMA,EAAEowJ,GAAGyB,GAAG5jJ,EAAE,GAAG8iJ,GAAG9iJ,EAAEC,GAAG8iJ,GAAG/iJ,EAAE26H,MAAK5oI,EAAE,GAAG,IAAIA,EAAE,MAAMpN,MAAM6oB,EAAE,MAAiF,OAA3ExN,EAAEgkJ,aAAahkJ,EAAEkgB,QAAQw5G,UAAU15H,EAAEikJ,cAAchkJ,EAAEikJ,GAAGlkJ,EAAEqiJ,GAAGC,IAAIS,GAAG/iJ,EAAE26H,MAAY,IAAK,CACxd,SAASypB,GAAGpkJ,EAAEC,GAAG,IAAIlO,EAAE0gJ,GAAEA,IAAG,EAAE,IAAI,OAAOzyI,EAAEC,EAA4C,CAAzD,QAA4B,KAAJwyI,GAAE1gJ,KAAUytJ,GAAG7kB,KAAI,IAAIuT,IAAIG,KAAM,CAAC,UAASgW,GAAGrkJ,GAAG,OAAOwiJ,IAAI,IAAIA,GAAG34I,KAAK,KAAO,EAAF4oI,KAAMgR,KAAK,IAAIxjJ,EAAEwyI,GAAEA,IAAG,EAAE,IAAI1gJ,EAAEkwJ,GAAG3iB,WAAWt+E,EAAEg8E,GAAE,IAAI,GAAGilB,GAAG3iB,WAAW,KAAKtC,GAAE,EAAEh9H,EAAE,OAAOA,GAAoD,CAA3F,QAAmDg9H,GAAEh8E,EAAEihG,GAAG3iB,WAAWvtI,EAAM,KAAO,GAAX0gJ,GAAExyI,KAAaouI,IAAK,CAAC,UAASoR,KAAK1C,GAAGD,GAAG58H,QAAQ48D,GAAEggE,GAAI,CACjT,SAAS8G,GAAG5jJ,EAAEC,GAAGD,EAAEgkJ,aAAa,KAAKhkJ,EAAEikJ,cAAc,EAAE,IAAIlyJ,EAAEiO,EAAEmkJ,cAAiD,IAAlC,IAAIpyJ,IAAIiO,EAAEmkJ,eAAe,EAAElY,GAAGl6I,IAAO,OAAOmwJ,GAAE,IAAInwJ,EAAEmwJ,GAAEjmI,OAAO,OAAOlqB,GAAG,CAAC,IAAIivD,EAAEjvD,EAAQ,OAANm9I,GAAGluF,GAAUA,EAAEn3C,KAAK,KAAK,EAA6B,QAA3Bm3C,EAAEA,EAAEjyD,KAAKg0G,yBAA4B,IAAS/hD,GAAG0sF,KAAK,MAAM,KAAK,EAAEiI,KAAK74D,GAAEswD,IAAItwD,GAAEia,IAAGk/C,KAAK,MAAM,KAAK,EAAEJ,GAAG70F,GAAG,MAAM,KAAK,EAAE20F,KAAK,MAAM,KAAK,GAAc,KAAK,GAAG74D,GAAE6jB,IAAG,MAAM,KAAK,GAAGkwC,GAAG7vF,EAAEjyD,KAAKgjI,UAAU,MAAM,KAAK,GAAG,KAAK,GAAG0tB,KAAK1tJ,EAAEA,EAAEkqB,MAAO,CAAoE,GAApEm8H,GAAEp4I,EAAEkiJ,GAAEliJ,EAAE60I,GAAG70I,EAAEkgB,QAAQ,MAAM0qE,GAAEmyD,GAAG98I,EAAEs/I,GAAE,EAAE4C,GAAG,KAAKC,GAAGzqF,GAAGk7E,GAAG,EAAEwP,GAAG7qF,GAAG,KAAQ,OAAO+5E,GAAG,CAAC,IAAItxI,EAC1f,EAAEA,EAAEsxI,GAAGpsJ,OAAO8a,IAAI,GAA2B,QAAhB+gD,GAARjvD,EAAEw/I,GAAGtxI,IAAOyxI,aAAqB,CAAC3/I,EAAE2/I,YAAY,KAAK,IAAIp4I,EAAE0nD,EAAEnlC,KAAKna,EAAE3P,EAAEogJ,QAAQ,GAAG,OAAOzwI,EAAE,CAAC,IAAIugD,EAAEvgD,EAAEma,KAAKna,EAAEma,KAAKviB,EAAE0nD,EAAEnlC,KAAKomC,CAAE,CAAAlwD,EAAEogJ,QAAQnxF,CAAE,CAAAuwF,GAAG,IAAK,QAAOvxI,CAAE,CAC5K,SAAS8jJ,GAAG9jJ,EAAEC,GAAG,OAAE,CAAC,IAAIlO,EAAEmwJ,GAAE,IAAuB,GAAnBtR,KAAKuF,GAAGj2H,QAAQg3H,GAAMV,GAAG,CAAC,IAAI,IAAIx1F,EAAE6/C,GAAE+4B,cAAc,OAAO54E,GAAG,CAAC,IAAI1nD,EAAE0nD,EAAEz4C,MAAM,OAAOjP,IAAIA,EAAE64I,QAAQ,MAAMnxF,EAAEA,EAAEnlC,IAAK,CAAA26H,IAAG,CAAG,CAA2C,GAA3CF,GAAG,EAAEz0F,GAAE00F,GAAE11C,GAAE,KAAK41C,IAAG,EAAGC,GAAG,EAAEsL,GAAG9hI,QAAQ,KAAQ,OAAOnuB,GAAG,OAAOA,EAAEkqB,OAAO,CAACsjI,GAAE,EAAE4C,GAAGliJ,EAAEiiJ,GAAE,KAAK,KAAM,CAAAliJ,EAAE,CAAC,IAAI0B,EAAE1B,EAAEiiD,EAAElwD,EAAEkqB,OAAOrmB,EAAE7D,EAAEgyD,EAAE9jD,EAAqB,GAAnBA,EAAE2qF,GAAEh1F,EAAEkM,OAAO,MAAS,OAAOiiD,GAAG,kBAAkBA,GAAG,oBAAoBA,EAAE9yD,KAAK,CAAC,IAAIG,EAAE2yD,EAAEhD,EAAEnrD,EAAE4mD,EAAEuE,EAAEl3C,IAAI,GAAG,KAAY,EAAPk3C,EAAEG,QAAU,IAAI1E,GAAG,KAAKA,GAAG,KAAKA,GAAG,CAAC,IAAIh7C,EAAEu/C,EAAE24E,UAAUl4H,GAAGu/C,EAAE+wF,YAAYtwI,EAAEswI,YAAY/wF,EAAE64E,cAAcp4H,EAAEo4H,cACxe74E,EAAEowF,MAAM3vI,EAAE2vI,QAAQpwF,EAAE+wF,YAAY,KAAK/wF,EAAE64E,cAAc,KAAM,KAAI3/F,EAAE8hH,GAAG95F,GAAG,GAAG,OAAOhoB,EAAE,CAACA,EAAEn4B,QAAQ,IAAIk6I,GAAG/hH,EAAEgoB,EAAErsD,EAAE8L,EAAEzB,GAAU,EAAPg6B,EAAEinB,MAAQ06F,GAAGl6I,EAAEtQ,EAAE6O,GAAO8jD,EAAE3yD,EAAE,IAAIuQ,GAAZ1B,EAAEg6B,GAAc63G,YAAY,GAAG,OAAOnwI,EAAE,CAAC,IAAIF,EAAE,IAAIgjE,IAAIhjE,EAAE8N,IAAIw0C,GAAG9jD,EAAE6xI,YAAYrwI,CAAE,MAAKE,EAAE4N,IAAIw0C,GAAG,MAAM/jD,CAAE,CAAK,GAAG,KAAO,EAAFC,GAAK,CAAC27I,GAAGl6I,EAAEtQ,EAAE6O,GAAGm+I,KAAK,MAAMp+I,CAAE,CAAA+jD,EAAEp/D,MAAM6oB,EAAE,KAAO,MAAK,GAAG6hI,IAAU,EAAPz5I,EAAEsrD,KAAO,CAAC,IAAI6rC,EAAEgvD,GAAG95F,GAAG,GAAG,OAAO8qC,EAAE,CAAC,KAAa,MAARA,EAAEjrF,SAAeirF,EAAEjrF,OAAO,KAAKk6I,GAAGjvD,EAAE9qC,EAAErsD,EAAE8L,EAAEzB,GAAGowI,GAAG2K,GAAGj3F,EAAEnuD,IAAI,MAAMoK,CAAE,CAAC,CAAA0B,EAAEqiD,EAAEi3F,GAAGj3F,EAAEnuD,GAAG,IAAI2pJ,KAAIA,GAAE,GAAG,OAAO/nF,GAAGA,GAAG,CAAC91D,GAAG81D,GAAG7lE,KAAK+P,GAAGA,EAAEugD,EAAE,EAAE,CAAC,OAAOvgD,EAAEmI,KAAK,KAAK,EAAEnI,EAAEI,OAAO,MACpf7B,IAAIA,EAAEyB,EAAEyvI,OAAOlxI,EAAkB0yI,GAAGjxI,EAAb25I,GAAG35I,EAAEqiD,EAAE9jD,IAAW,MAAMD,EAAE,KAAK,EAAEpK,EAAEmuD,EAAE,IAAIM,EAAE3iD,EAAE3S,KAAKknE,EAAEv0D,EAAE62H,UAAU,GAAG,KAAa,IAAR72H,EAAEI,SAAa,oBAAoBuiD,EAAEg/C,0BAA0B,OAAOptC,GAAG,oBAAoBA,EAAEwlF,oBAAoB,OAAOC,KAAKA,GAAGlzF,IAAIyN,KAAK,CAACv0D,EAAEI,OAAO,MAAM7B,IAAIA,EAAEyB,EAAEyvI,OAAOlxI,EAAkB0yI,GAAGjxI,EAAb85I,GAAG95I,EAAE9L,EAAEqK,IAAW,MAAMD,CAAE,EAAC0B,EAAEA,EAAEua,MAAO,OAAM,OAAOva,EAAG,CAAA4iJ,GAAGvyJ,EAA2D,CAAxD,MAAMm5I,GAAIjrI,EAAEirI,EAAGgX,KAAInwJ,GAAG,OAAOA,IAAImwJ,GAAEnwJ,EAAEA,EAAEkqB,QAAQ,QAAS,MAAM,CAAS,UAAS0nI,KAAK,IAAI3jJ,EAAE+hJ,GAAG7hI,QAAsB,OAAd6hI,GAAG7hI,QAAQg3H,GAAU,OAAOl3I,EAAEk3I,GAAGl3I,CAAE,CACtd,SAASo+I,KAAQ,IAAImB,IAAG,IAAIA,IAAG,IAAIA,KAAEA,GAAE,GAAE,OAAOnH,IAAG,KAAQ,UAAHvF,KAAe,KAAQ,UAAHl7E,KAAemrF,GAAG1K,GAAExtD,GAAG,UAAS84D,GAAG1jJ,EAAEC,GAAG,IAAIlO,EAAE0gJ,GAAEA,IAAG,EAAE,IAAIzxF,EAAE2iG,KAAqC,IAA7BvL,KAAIp4I,GAAG4qF,KAAI3qF,IAAEqiJ,GAAG,KAAKsB,GAAG5jJ,EAAEC,MAAM,IAAIskJ,KAAK,KAAuB,CAAjB,MAAMjrJ,GAAGwqJ,GAAG9jJ,EAAE1G,EAAG,CAA+B,GAAtBs3I,KAAK6B,GAAE1gJ,EAAEgwJ,GAAG7hI,QAAQ8gC,EAAK,OAAOkhG,GAAE,MAAMv9J,MAAM6oB,EAAE,MAAiB,OAAX4qI,GAAE,KAAKxtD,GAAE,EAAS20D,EAAE,UAASgF,KAAK,KAAK,OAAOrC,IAAGsC,GAAGtC,GAAG,UAAS2B,KAAK,KAAK,OAAO3B,KAAI3nB,MAAMiqB,GAAGtC,GAAG,UAASsC,GAAGxkJ,GAAG,IAAIC,EAAE4hJ,GAAG7hJ,EAAE05H,UAAU15H,EAAE+8I,IAAI/8I,EAAEkwI,cAAclwI,EAAE2vI,aAAa,OAAO1vI,EAAEqkJ,GAAGtkJ,GAAGkiJ,GAAEjiJ,EAAE+hJ,GAAG9hI,QAAQ,IAAK,CAC3d,SAASokI,GAAGtkJ,GAAG,IAAIC,EAAED,EAAE,EAAE,CAAC,IAAIjO,EAAEkO,EAAEy5H,UAAqB,GAAX15H,EAAEC,EAAEgc,OAAU,KAAa,MAARhc,EAAE6B,QAAc,GAAgB,QAAb/P,EAAEktJ,GAAGltJ,EAAEkO,EAAE88I,KAAkB,YAAJmF,GAAEnwJ,OAAc,CAAW,GAAG,QAAbA,EAAE2tJ,GAAG3tJ,EAAEkO,IAAmC,OAAnBlO,EAAE+P,OAAO,WAAMogJ,GAAEnwJ,GAAS,GAAG,OAAOiO,EAAmE,OAAXu/I,GAAE,OAAE2C,GAAE,MAA5DliJ,EAAE8B,OAAO,MAAM9B,EAAEw+I,aAAa,EAAEx+I,EAAEyvI,UAAU,IAA6B,CAAY,GAAG,QAAfxvI,EAAEA,EAAE+5H,SAAyB,YAAJkoB,GAAEjiJ,GAASiiJ,GAAEjiJ,EAAED,CAAE,OAAM,OAAOC,GAAG,IAAIs/I,KAAIA,GAAE,EAAG,UAAS2E,GAAGlkJ,EAAEC,EAAElO,GAAG,IAAIivD,EAAEg8E,GAAE1jI,EAAE2oJ,GAAG3iB,WAAW,IAAI2iB,GAAG3iB,WAAW,KAAKtC,GAAE,EAC3Y,SAAYh9H,EAAEC,EAAElO,EAAEivD,GAAG,GAAGyiG,WAAW,OAAOjB,IAAI,GAAG,KAAO,EAAF/P,IAAK,MAAM9tJ,MAAM6oB,EAAE,MAAMzb,EAAEiO,EAAEgkJ,aAAa,IAAI1qJ,EAAE0G,EAAEikJ,cAAc,GAAG,OAAOlyJ,EAAE,OAAO,KAA2C,GAAtCiO,EAAEgkJ,aAAa,KAAKhkJ,EAAEikJ,cAAc,EAAKlyJ,IAAIiO,EAAEkgB,QAAQ,MAAMv7B,MAAM6oB,EAAE,MAAMxN,EAAEgjJ,aAAa,KAAKhjJ,EAAEojJ,iBAAiB,EAAE,IAAI1hJ,EAAE3P,EAAEo/I,MAAMp/I,EAAEi/I,WAA8J,GA1NtT,SAAYhxI,EAAEC,GAAG,IAAIlO,EAAEiO,EAAEo8H,cAAcn8H,EAAED,EAAEo8H,aAAan8H,EAAED,EAAEq8H,eAAe,EAAEr8H,EAAEs8H,YAAY,EAAEt8H,EAAEkjJ,cAAcjjJ,EAAED,EAAEykJ,kBAAkBxkJ,EAAED,EAAEu8H,gBAAgBt8H,EAAEA,EAAED,EAAEw8H,cAAc,IAAIx7E,EAAEhhD,EAAE88H,WAAW,IAAI98H,EAAEA,EAAEijJ,gBAAgB,EAAElxJ,GAAG,CAAC,IAAIuH,EAAE,GAAGqiI,GAAG5pI,GAAG2P,EAAE,GAAGpI,EAAE2G,EAAE3G,GAAG,EAAE0nD,EAAE1nD,IAAI,EAAE0G,EAAE1G,IAAI,EAAEvH,IAAI2P,CAAE,CAAC,CA0N7GgjJ,CAAG1kJ,EAAE0B,GAAG1B,IAAIo4I,KAAI8J,GAAE9J,GAAE,KAAKxtD,GAAE,GAAG,KAAoB,KAAf74F,EAAEysJ,eAAoB,KAAa,KAARzsJ,EAAE+P,QAAaygJ,KAAKA,IAAG,EAAGgB,GAAGpoB,IAAG,WAAgB,OAALsoB,KAAY,IAAK,KAAG/hJ,EAAE,KAAa,MAAR3P,EAAE+P,OAAgB,KAAoB,MAAf/P,EAAEysJ,eAAqB98I,EAAE,CAACA,EAAEugJ,GAAG3iB,WAAW2iB,GAAG3iB,WAAW,KAChf,IAAIr9E,EAAE+6E,GAAEA,GAAE,EAAE,IAAIpnI,EAAE68I,GAAEA,IAAG,EAAEuP,GAAG9hI,QAAQ,KA1CpC,SAAYlgB,EAAEC,GAAgB,GAAb2rI,GAAGxM,GAAawI,GAAV5nI,EAAEynI,MAAc,CAAC,GAAG,mBAAmBznI,EAAE,IAAIjO,EAAE,CAACgc,MAAM/N,EAAEopH,eAAe7uF,IAAIv6B,EAAEqpH,mBAAmBrpH,EAAE,CAA8C,IAAIghD,GAAjDjvD,GAAGA,EAAEiO,EAAEqzH,gBAAgBthI,EAAEosH,aAAa1hH,QAAe6sH,cAAcv3H,EAAEu3H,eAAe,GAAGtoE,GAAG,IAAIA,EAAEgnF,WAAW,CAACj2I,EAAEivD,EAAEinF,WAAW,IAAI3uI,EAAE0nD,EAAEknF,aAAaxmI,EAAEs/C,EAAEmnF,UAAUnnF,EAAEA,EAAEonF,YAAY,IAAIr2I,EAAE0wE,SAAS/gE,EAAE+gE,QAAiC,CAAxB,MAAMmoE,GAAG74I,EAAE,KAAK,MAAMiO,CAAE,KAAIiiD,EAAE,EAAErsD,GAAG,EAAEmuD,GAAG,EAAE3yD,EAAE,EAAE2vD,EAAE,EAAEvE,EAAEx8C,EAAEwB,EAAE,KAAKvB,EAAE,OAAO,CAAC,IAAI,IAAIg6B,EAAKuiB,IAAIzqD,GAAG,IAAIuH,GAAG,IAAIkjD,EAAEimB,WAAW7sE,EAAEqsD,EAAE3oD,GAAGkjD,IAAI96C,GAAG,IAAIs/C,GAAG,IAAIxE,EAAEimB,WAAW1e,EAAE9B,EAAEjB,GAAG,IAAIxE,EAAEimB,WAAWxgB,GACnfzF,EAAEljB,UAAUn0C,QAAW,QAAQ80C,EAAEuiB,EAAE43E,aAAkB5yH,EAAEg7C,EAAEA,EAAEviB,EAAE,OAAO,CAAC,GAAGuiB,IAAIx8C,EAAE,MAAMC,EAA8C,GAA5CuB,IAAIzP,KAAKX,IAAIkI,IAAI1D,EAAEqsD,GAAGzgD,IAAIE,KAAKq/C,IAAIC,IAAI+C,EAAE9B,GAAM,QAAQhoB,EAAEuiB,EAAE5lC,aAAa,MAAUpV,GAAJg7C,EAAEh7C,GAAMkJ,UAAW,CAAA8xC,EAAEviB,CAAE,CAAAloC,GAAG,IAAI6D,IAAI,IAAImuD,EAAE,KAAK,CAACh2C,MAAMnY,EAAE2kC,IAAIwpB,EAAG,MAAKhyD,EAAE,IAAK,CAAAA,EAAEA,GAAG,CAACgc,MAAM,EAAEwsB,IAAI,EAAG,MAAKxoC,EAAE,KAA+C,IAA1C85I,GAAG,CAAC/D,YAAY9nI,EAAE+nI,eAAeh2I,GAAGqtI,IAAG,EAAO31C,GAAExpF,EAAE,OAAOwpF,IAAG,GAAOzpF,GAAJC,EAAEwpF,IAAMr/E,MAAM,KAAoB,KAAfnK,EAAEu+I,eAAoB,OAAOx+I,EAAEA,EAAEic,OAAOhc,EAAEwpF,GAAEzpF,OAAO,KAAK,OAAOypF,IAAG,CAACxpF,EAAEwpF,GAAE,IAAI,IAAI9nF,EAAE1B,EAAEy5H,UAAU,GAAG,KAAa,KAARz5H,EAAE6B,OAAY,OAAO7B,EAAE4J,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GACvK,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,MAA3W,KAAK,EAAE,GAAG,OAAOlI,EAAE,CAAC,IAAIF,EAAEE,EAAEuuI,cAAcnjD,EAAEprF,EAAEi4H,cAAc7/F,EAAE95B,EAAEs4H,UAAUl0E,EAAEtqB,EAAEo6G,wBAAwBl0I,EAAEyrG,cAAczrG,EAAElR,KAAK0S,EAAE8uI,GAAGtwI,EAAElR,KAAK0S,GAAGsrF,GAAGhzD,EAAE6nH,oCAAoCv9F,CAAE,OAAM,KAAK,EAAE,IAAI4R,EAAEh2D,EAAEs4H,UAAUoG,cAAc,IAAI1oE,EAAEwM,SAASxM,EAAErhB,YAAY,GAAG,IAAIqhB,EAAEwM,UAAUxM,EAAE5iB,iBAAiB4iB,EAAEtrD,YAAYsrD,EAAE5iB,iBAAiB,MAAyC,QAAQ,MAAM1uD,MAAM6oB,EAAE,MAAiC,CAAzB,MAAMo9H,GAAGmV,GAAE9/I,EAAEA,EAAEgc,OAAO2uH,EAAG,CAAY,GAAG,QAAf5qI,EAAEC,EAAE+5H,SAAoB,CAACh6H,EAAEic,OAAOhc,EAAEgc,OAAOwtE,GAAEzpF,EAAE,KAAM,CAAAypF,GAAExpF,EAAEgc,MAAO,CAAAta,EAAEs+I,GAAGA,IAAG,CAAY,CAwCnd0E,CAAG3kJ,EAAEjO,GAAGqvJ,GAAGrvJ,EAAEiO,GAAG6+F,GAAGgtC,IAAIzM,KAAKwM,GAAGC,GAAGD,GAAG,KAAK5rI,EAAEkgB,QAAQnuB,EAAEyvJ,GAAGzvJ,EAAEiO,EAAE1G,GAAGmhI,KAAKgY,GAAE78I,EAAEonI,GAAE/6E,EAAEggG,GAAG3iB,WAAW59H,CAAE,MAAK1B,EAAEkgB,QAAQnuB,EAAsF,GAApFwwJ,KAAKA,IAAG,EAAGC,GAAGxiJ,EAAEyiJ,GAAGnpJ,GAAoB,KAAjBoI,EAAE1B,EAAEo8H,gBAAqBsf,GAAG,MAjOmJ,SAAY17I,GAAG,GAAG07H,IAAI,oBAAoBA,GAAGkpB,kBAAkB,IAAIlpB,GAAGkpB,kBAAkBnpB,GAAGz7H,OAAE,EAAO,OAAuB,IAAhBA,EAAEkgB,QAAQpe,OAAsB,CAAV,MAAM7B,GAAI,CAAC,CAiOzR4kJ,CAAG9yJ,EAAEwmI,WAAawqB,GAAG/iJ,EAAE26H,MAAQ,OAAO16H,EAAE,IAAI+gD,EAAEhhD,EAAE8kJ,mBAAmB/yJ,EAAE,EAAEA,EAAEkO,EAAE9a,OAAO4M,IAAWivD,GAAP1nD,EAAE2G,EAAElO,IAAOtF,MAAM,CAACkvJ,eAAeriJ,EAAE3E,MAAMsmJ,OAAO3hJ,EAAE2hJ,SAAS,GAAGK,GAAG,MAAMA,IAAG,EAAGt7I,EAAEu7I,GAAGA,GAAG,KAAKv7I,EAAE,KAAQ,EAAHyiJ,KAAO,IAAIziJ,EAAE6J,KAAK45I,KAAsB,KAAO,GAAxB/hJ,EAAE1B,EAAEo8H,eAAuBp8H,IAAI2iJ,GAAGD,MAAMA,GAAG,EAAEC,GAAG3iJ,GAAG0iJ,GAAG,EAAErU,IAAiB,CAFzF0W,CAAG/kJ,EAAEC,EAAElO,EAAEivD,EAA+B,CAAnE,QAA+CihG,GAAG3iB,WAAWhmI,EAAE0jI,GAAEh8E,CAAE,QAAO,IAAK,CAGjc,SAASyiG,KAAK,GAAG,OAAOjB,GAAG,CAAC,IAAIxiJ,EAAEi9H,GAAGwlB,IAAIxiJ,EAAEgiJ,GAAG3iB,WAAWvtI,EAAEirI,GAAE,IAAmC,GAA/BilB,GAAG3iB,WAAW,KAAKtC,GAAE,GAAGh9H,EAAE,GAAGA,EAAK,OAAOwiJ,GAAG,IAAIxhG,GAAE,MAAO,CAAmB,GAAlBhhD,EAAEwiJ,GAAGA,GAAG,KAAKC,GAAG,EAAK,KAAO,EAAFhQ,IAAK,MAAM9tJ,MAAM6oB,EAAE,MAAM,IAAIlU,EAAEm5I,GAAO,IAALA,IAAG,EAAMhpD,GAAEzpF,EAAEkgB,QAAQ,OAAOupE,IAAG,CAAC,IAAI/nF,EAAE+nF,GAAExnC,EAAEvgD,EAAE0I,MAAM,GAAG,KAAa,GAARq/E,GAAE3nF,OAAU,CAAC,IAAIlM,EAAE8L,EAAE+tI,UAAU,GAAG,OAAO75I,EAAE,CAAC,IAAI,IAAImuD,EAAE,EAAEA,EAAEnuD,EAAEzQ,OAAO4+D,IAAI,CAAC,IAAI3yD,EAAEwE,EAAEmuD,GAAG,IAAI0lC,GAAEr4F,EAAE,OAAOq4F,IAAG,CAAC,IAAI1oC,EAAE0oC,GAAE,OAAO1oC,EAAEl3C,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAGq2I,GAAG,EAAEn/F,EAAEr/C,GAAG,IAAI86C,EAAEuE,EAAE32C,MAAM,GAAG,OAAOoyC,EAAEA,EAAEvgC,OAAO8kC,EAAE0oC,GAAEjtC,OAAO,KAAK,OAAOitC,IAAG,CAAK,IAAIjoF,GAARu/C,EAAE0oC,IAAUuwC,QAAQ//F,EAAE8mB,EAAE9kC,OAAa,GAANokI,GAAGt/F,GAAMA,IACnf3vD,EAAE,CAACq4F,GAAE,KAAK,KAAM,IAAG,OAAOjoF,EAAE,CAACA,EAAEya,OAAOge,EAAEwvD,GAAEjoF,EAAE,KAAM,CAAAioF,GAAExvD,CAAE,CAAC,CAAC,KAAIt4B,EAAED,EAAEg4H,UAAU,GAAG,OAAO/3H,EAAE,CAAC,IAAIF,EAAEE,EAAEyI,MAAM,GAAG,OAAO3I,EAAE,CAACE,EAAEyI,MAAM,KAAK,EAAE,CAAC,IAAI2iF,EAAEtrF,EAAEu4H,QAAQv4H,EAAEu4H,QAAQ,KAAKv4H,EAAEsrF,CAAE,OAAM,OAAOtrF,EAAG,CAAC,CAAAgoF,GAAE/nF,CAAE,CAAC,IAAG,KAAoB,KAAfA,EAAE88I,eAAoB,OAAOv8F,EAAEA,EAAEhmC,OAAOva,EAAE+nF,GAAExnC,OAAOhiD,EAAE,KAAK,OAAOwpF,IAAG,CAAK,GAAG,KAAa,MAApB/nF,EAAE+nF,IAAY3nF,OAAY,OAAOJ,EAAEmI,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAGq2I,GAAG,EAAEx+I,EAAEA,EAAEua,QAAQ,IAAI8d,EAAEr4B,EAAEs4H,QAAQ,GAAG,OAAOjgG,EAAE,CAACA,EAAE9d,OAAOva,EAAEua,OAAOwtE,GAAE1vD,EAAE,MAAM95B,CAAE,CAAAwpF,GAAE/nF,EAAEua,MAAO,CAAC,KAAIooC,EAAErkD,EAAEkgB,QAAQ,IAAIupE,GAAEplC,EAAE,OAAOolC,IAAG,CAAK,IAAIxzB,GAARhU,EAAEwnC,IAAUr/E,MAAM,GAAG,KAAoB,KAAf63C,EAAEu8F,eAAoB,OAClfvoF,EAAEA,EAAEh6C,OAAOgmC,EAAEwnC,GAAExzB,OAAOh2D,EAAE,IAAIgiD,EAAEoC,EAAE,OAAOolC,IAAG,CAAK,GAAG,KAAa,MAApB7zF,EAAE6zF,IAAY3nF,OAAY,IAAI,OAAOlM,EAAEiU,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAGs2I,GAAG,EAAEvqJ,GAA+B,CAA3B,MAAMs1I,GAAI6U,GAAEnqJ,EAAEA,EAAEqmB,OAAOivH,EAAI,IAAGt1I,IAAIqsD,EAAE,CAACwnC,GAAE,KAAK,MAAMxpF,CAAE,KAAI2qI,EAAEh1I,EAAEokI,QAAQ,GAAG,OAAO4Q,EAAE,CAACA,EAAE3uH,OAAOrmB,EAAEqmB,OAAOwtE,GAAEmhD,EAAE,MAAM3qI,CAAE,CAAAwpF,GAAE7zF,EAAEqmB,MAAO,CAAC,CAAS,GAATw2H,GAAEn5I,EAAE+0I,KAAQ3S,IAAI,oBAAoBA,GAAGspB,sBAAsB,IAAItpB,GAAGspB,sBAAsBvpB,GAAGz7H,EAAc,CAAX,MAAMkrI,GAAK,CAAAlqF,GAAE,CAAG,QAAOA,CAA8B,CAF1U,QAEsTg8E,GAAEjrI,EAAEkwJ,GAAG3iB,WAAWr/H,CAAE,CAAC,QAAM,CAAG,UAASglJ,GAAGjlJ,EAAEC,EAAElO,GAAyBiO,EAAEwyI,GAAGxyI,EAAjBC,EAAEo7I,GAAGr7I,EAAfC,EAAE+6I,GAAGjpJ,EAAEkO,GAAY,GAAY,GAAGA,EAAE+1E,KAAI,OAAOh2E,IAAI68H,GAAG78H,EAAE,EAAEC,GAAG8iJ,GAAG/iJ,EAAEC,GAAI,CAC1e,SAAS8/I,GAAE//I,EAAEC,EAAElO,GAAG,GAAG,IAAIiO,EAAE6J,IAAIo7I,GAAGjlJ,EAAEA,EAAEjO,QAAQ,KAAK,OAAOkO,GAAG,CAAC,GAAG,IAAIA,EAAE4J,IAAI,CAACo7I,GAAGhlJ,EAAED,EAAEjO,GAAG,KAAM,CAAK,GAAG,IAAIkO,EAAE4J,IAAI,CAAC,IAAIm3C,EAAE/gD,EAAEs4H,UAAU,GAAG,oBAAoBt4H,EAAElR,KAAKs0G,0BAA0B,oBAAoBriD,EAAEy6F,oBAAoB,OAAOC,KAAKA,GAAGlzF,IAAIxH,IAAI,CAAuB/gD,EAAEuyI,GAAGvyI,EAAjBD,EAAEw7I,GAAGv7I,EAAfD,EAAEg7I,GAAGjpJ,EAAEiO,GAAY,GAAY,GAAGA,EAAEg2E,KAAI,OAAO/1E,IAAI48H,GAAG58H,EAAE,EAAED,GAAG+iJ,GAAG9iJ,EAAED,IAAI,KAAM,CAAC,CAAAC,EAAEA,EAAEgc,MAAO,CAAC,CACpV,SAAS6/H,GAAG97I,EAAEC,EAAElO,GAAG,IAAIivD,EAAEhhD,EAAE67I,UAAU,OAAO76F,GAAGA,EAAEwoB,OAAOvpE,GAAGA,EAAE+1E,KAAIh2E,EAAEs8H,aAAat8H,EAAEq8H,eAAetqI,EAAEqmJ,KAAIp4I,IAAI4qF,GAAE74F,KAAKA,IAAI,IAAIwtJ,IAAG,IAAIA,KAAM,UAAF30D,MAAeA,IAAG,IAAI+vC,KAAI2mB,GAAGsC,GAAG5jJ,EAAE,GAAGoiJ,IAAIrwJ,GAAGgxJ,GAAG/iJ,EAAEC,EAAG,UAASilJ,GAAGllJ,EAAEC,GAAG,IAAIA,IAAI,KAAY,EAAPD,EAAEkhD,MAAQjhD,EAAE,GAAGA,EAAEg8H,GAAU,KAAQ,WAAfA,KAAK,MAAuBA,GAAG,WAAW,IAAIlqI,EAAEikF,KAAc,QAAVh2E,EAAE2xI,GAAG3xI,EAAEC,MAAc48H,GAAG78H,EAAEC,EAAElO,GAAGgxJ,GAAG/iJ,EAAEjO,GAAI,UAASssJ,GAAGr+I,GAAG,IAAIC,EAAED,EAAE45H,cAAc7nI,EAAE,EAAE,OAAOkO,IAAIlO,EAAEkO,EAAE4vI,WAAWqV,GAAGllJ,EAAEjO,EAAG,CAClZ,SAASmvJ,GAAGlhJ,EAAEC,GAAG,IAAIlO,EAAE,EAAE,OAAOiO,EAAE6J,KAAK,KAAK,GAAG,IAAIm3C,EAAEhhD,EAAEu4H,UAAcj/H,EAAE0G,EAAE45H,cAAc,OAAOtgI,IAAIvH,EAAEuH,EAAEu2I,WAAW,MAAM,KAAK,GAAG7uF,EAAEhhD,EAAEu4H,UAAU,MAAM,QAAQ,MAAM5zI,MAAM6oB,EAAE,MAAO,OAAOwzC,GAAGA,EAAEwoB,OAAOvpE,GAAGilJ,GAAGllJ,EAAEjO,EAAG,CAQoK,SAASwxJ,GAAGvjJ,EAAEC,GAAG,OAAOk6H,GAAGn6H,EAAEC,EAAG,CAClZ,SAASklJ,GAAGnlJ,EAAEC,EAAElO,EAAEivD,GAAGlwD,KAAK+Y,IAAI7J,EAAElP,KAAKxC,IAAIyD,EAAEjB,KAAKkpI,QAAQlpI,KAAKsZ,MAAMtZ,KAAKmrB,OAAOnrB,KAAKynI,UAAUznI,KAAK/B,KAAK+B,KAAK46G,YAAY,KAAK56G,KAAKc,MAAM,EAAEd,KAAK2T,IAAI,KAAK3T,KAAK6+I,aAAa1vI,EAAEnP,KAAK2oE,aAAa3oE,KAAK8oI,cAAc9oI,KAAKghJ,YAAYhhJ,KAAKo/I,cAAc,KAAKp/I,KAAKowD,KAAKF,EAAElwD,KAAK0tJ,aAAa1tJ,KAAKgR,MAAM,EAAEhR,KAAK2+I,UAAU,KAAK3+I,KAAKkgJ,WAAWlgJ,KAAKqgJ,MAAM,EAAErgJ,KAAK4oI,UAAU,IAAK,UAAS8V,GAAGxvI,EAAEC,EAAElO,EAAEivD,GAAG,OAAO,IAAImkG,GAAGnlJ,EAAEC,EAAElO,EAAEivD,EAAG,UAASu7F,GAAGv8I,GAAiB,UAAdA,EAAEA,EAAElQ,aAAuBkQ,EAAEolJ,iBAAkB,CAErd,SAASvQ,GAAG70I,EAAEC,GAAG,IAAIlO,EAAEiO,EAAE05H,UACuB,OADb,OAAO3nI,IAAGA,EAAEy9I,GAAGxvI,EAAE6J,IAAI5J,EAAED,EAAE1R,IAAI0R,EAAEkhD,OAAQwqD,YAAY1rG,EAAE0rG,YAAY35G,EAAEhD,KAAKiR,EAAEjR,KAAKgD,EAAEwmI,UAAUv4H,EAAEu4H,UAAUxmI,EAAE2nI,UAAU15H,EAAEA,EAAE05H,UAAU3nI,IAAIA,EAAE49I,aAAa1vI,EAAElO,EAAEhD,KAAKiR,EAAEjR,KAAKgD,EAAE+P,MAAM,EAAE/P,EAAEysJ,aAAa,EAAEzsJ,EAAE09I,UAAU,MAAM19I,EAAE+P,MAAc,SAAR9B,EAAE8B,MAAe/P,EAAEi/I,WAAWhxI,EAAEgxI,WAAWj/I,EAAEo/I,MAAMnxI,EAAEmxI,MAAMp/I,EAAEqY,MAAMpK,EAAEoK,MAAMrY,EAAEm+I,cAAclwI,EAAEkwI,cAAcn+I,EAAE6nI,cAAc55H,EAAE45H,cAAc7nI,EAAE+/I,YAAY9xI,EAAE8xI,YAAY7xI,EAAED,EAAEy5D,aAAa1nE,EAAE0nE,aAAa,OAAOx5D,EAAE,KAAK,CAACkxI,MAAMlxI,EAAEkxI,MAAMD,aAAajxI,EAAEixI,cAC/en/I,EAAEioI,QAAQh6H,EAAEg6H,QAAQjoI,EAAEH,MAAMoO,EAAEpO,MAAMG,EAAE0S,IAAIzE,EAAEyE,IAAW1S,CAAE,CACzD,SAASgjJ,GAAG/0I,EAAEC,EAAElO,EAAEivD,EAAE1nD,EAAEoI,GAAG,IAAIugD,EAAE,EAAM,GAAJjB,EAAEhhD,EAAK,oBAAoBA,EAAEu8I,GAAGv8I,KAAKiiD,EAAE,QAAQ,GAAG,kBAAkBjiD,EAAEiiD,EAAE,OAAOjiD,EAAE,OAAOA,GAAG,KAAK2wH,EAAG,OAAOukB,GAAGnjJ,EAAEsY,SAAS/Q,EAAEoI,EAAEzB,GAAG,KAAK2wH,EAAG3uE,EAAE,EAAE3oD,GAAG,EAAE,MAAM,KAAKu3H,EAAG,OAAO7wH,EAAEwvI,GAAG,GAAGz9I,EAAEkO,EAAI,EAAF3G,IAAOoyG,YAAYmlB,EAAG7wH,EAAEmxI,MAAMzvI,EAAE1B,EAAE,KAAKixH,EAAG,OAAOjxH,EAAEwvI,GAAG,GAAGz9I,EAAEkO,EAAE3G,IAAKoyG,YAAYulB,EAAGjxH,EAAEmxI,MAAMzvI,EAAE1B,EAAE,KAAKkxH,EAAG,OAAOlxH,EAAEwvI,GAAG,GAAGz9I,EAAEkO,EAAE3G,IAAKoyG,YAAYwlB,EAAGlxH,EAAEmxI,MAAMzvI,EAAE1B,EAAE,KAAKqxH,EAAG,OAAO2sB,GAAGjsJ,EAAEuH,EAAEoI,EAAEzB,GAAG,QAAQ,GAAG,kBAAkBD,GAAG,OAAOA,EAAE,OAAOA,EAAE+kG,UAAU,KAAK+rB,EAAG7uE,EAAE,GAAG,MAAMjiD,EAAE,KAAK+wH,EAAG9uE,EAAE,EAAE,MAAMjiD,EAAE,KAAKgxH,EAAG/uE,EAAE,GACpf,MAAMjiD,EAAE,KAAKmxH,EAAGlvE,EAAE,GAAG,MAAMjiD,EAAE,KAAKoxH,EAAGnvE,EAAE,GAAGjB,EAAE,KAAK,MAAMhhD,EAAE,MAAMrb,MAAM6oB,EAAE,IAAI,MAAMxN,EAAEA,SAASA,EAAE,KAAuD,OAAjDC,EAAEuvI,GAAGvtF,EAAElwD,EAAEkO,EAAE3G,IAAKoyG,YAAY1rG,EAAEC,EAAElR,KAAKiyD,EAAE/gD,EAAEkxI,MAAMzvI,EAASzB,CAAE,UAASi1I,GAAGl1I,EAAEC,EAAElO,EAAEivD,GAA2B,OAAxBhhD,EAAEwvI,GAAG,EAAExvI,EAAEghD,EAAE/gD,IAAKkxI,MAAMp/I,EAASiO,CAAE,UAASg+I,GAAGh+I,EAAEC,EAAElO,EAAEivD,GAAuE,OAApEhhD,EAAEwvI,GAAG,GAAGxvI,EAAEghD,EAAE/gD,IAAKyrG,YAAY2lB,EAAGrxH,EAAEmxI,MAAMp/I,EAAEiO,EAAEu4H,UAAU,CAACj+E,UAAS,GAAWt6C,CAAE,UAAS80I,GAAG90I,EAAEC,EAAElO,GAA8B,OAA3BiO,EAAEwvI,GAAG,EAAExvI,EAAE,KAAKC,IAAKkxI,MAAMp/I,EAASiO,CAAE,CAC7W,SAASi1I,GAAGj1I,EAAEC,EAAElO,GAA8J,OAA3JkO,EAAEuvI,GAAG,EAAE,OAAOxvI,EAAEqK,SAASrK,EAAEqK,SAAS,GAAGrK,EAAE1R,IAAI2R,IAAKkxI,MAAMp/I,EAAEkO,EAAEs4H,UAAU,CAACoG,cAAc3+H,EAAE2+H,cAAc0mB,gBAAgB,KAAKrQ,eAAeh1I,EAAEg1I,gBAAuB/0I,CAAE,CACvL,SAASqlJ,GAAGtlJ,EAAEC,EAAElO,EAAEivD,EAAE1nD,GAAGxI,KAAK+Y,IAAI5J,EAAEnP,KAAK6tI,cAAc3+H,EAAElP,KAAKkzJ,aAAalzJ,KAAK+qJ,UAAU/qJ,KAAKovB,QAAQpvB,KAAKu0J,gBAAgB,KAAKv0J,KAAKqzJ,eAAe,EAAErzJ,KAAKkyJ,aAAalyJ,KAAK0sJ,eAAe1sJ,KAAKlB,QAAQ,KAAKkB,KAAKsyJ,iBAAiB,EAAEtyJ,KAAKgsI,WAAWF,GAAG,GAAG9rI,KAAKmyJ,gBAAgBrmB,IAAI,GAAG9rI,KAAKyrI,eAAezrI,KAAKmzJ,cAAcnzJ,KAAK2zJ,iBAAiB3zJ,KAAKoyJ,aAAapyJ,KAAKwrI,YAAYxrI,KAAKurI,eAAevrI,KAAKsrI,aAAa,EAAEtrI,KAAK0rI,cAAcI,GAAG,GAAG9rI,KAAKiqJ,iBAAiB/5F,EAAElwD,KAAKg0J,mBAAmBxrJ,EAAExI,KAAKy0J,gCAC/e,IAAK,UAASC,GAAGxlJ,EAAEC,EAAElO,EAAEivD,EAAE1nD,EAAEoI,EAAEugD,EAAErsD,EAAEmuD,GAAgN,OAA7M/jD,EAAE,IAAIslJ,GAAGtlJ,EAAEC,EAAElO,EAAE6D,EAAEmuD,GAAG,IAAI9jD,GAAGA,EAAE,GAAE,IAAKyB,IAAIzB,GAAG,IAAIA,EAAE,EAAEyB,EAAE8tI,GAAG,EAAE,KAAK,KAAKvvI,GAAGD,EAAEkgB,QAAQxe,EAAEA,EAAE62H,UAAUv4H,EAAE0B,EAAEk4H,cAAc,CAAC5vH,QAAQg3C,EAAE09E,aAAa3sI,EAAEiN,MAAM,KAAK69I,YAAY,KAAK4I,0BAA0B,MAAM5T,GAAGnwI,GAAU1B,CAAE,UAASozF,GAAGpzF,EAAEC,EAAElO,GAAG,IAAIivD,EAAE,EAAElnD,UAAU3U,aAAQ,IAAS2U,UAAU,GAAGA,UAAU,GAAG,KAAK,MAAM,CAACirG,SAAS2rB,EAAGpiI,IAAI,MAAM0yD,EAAE,KAAK,GAAGA,EAAE32C,SAASrK,EAAE2+H,cAAc1+H,EAAE+0I,eAAejjJ,EAAG,CACra,SAAS+L,GAAGkC,GAAG,IAAIA,EAAE,OAAOmtI,GAAuBntI,EAAE,CAAC,GAAGy5H,GAA1Bz5H,EAAEA,EAAEozI,mBAA8BpzI,GAAG,IAAIA,EAAE6J,IAAI,MAAMllB,MAAM6oB,EAAE,MAAM,IAAIvN,EAAED,EAAE,EAAE,CAAC,OAAOC,EAAE4J,KAAK,KAAK,EAAE5J,EAAEA,EAAEs4H,UAAU3oI,QAAQ,MAAMoQ,EAAE,KAAK,EAAE,GAAGytI,GAAGxtI,EAAElR,MAAM,CAACkR,EAAEA,EAAEs4H,UAAUwV,0CAA0C,MAAM/tI,CAAE,EAACC,EAAEA,EAAEgc,MAAO,OAAM,OAAOhc,GAAG,MAAMtb,MAAM6oB,EAAE,KAAO,IAAG,IAAIxN,EAAE6J,IAAI,CAAC,IAAI9X,EAAEiO,EAAEjR,KAAK,GAAG0+I,GAAG17I,GAAG,OAAO67I,GAAG5tI,EAAEjO,EAAEkO,EAAG,QAAOA,CAAE,CACrW,SAASwgG,GAAGzgG,EAAEC,EAAElO,EAAEivD,EAAE1nD,EAAEoI,EAAEugD,EAAErsD,EAAEmuD,GAAwK,OAArK/jD,EAAEwlJ,GAAGzzJ,EAAEivD,GAAE,EAAGhhD,EAAE1G,EAAEoI,EAAEugD,EAAErsD,EAAEmuD,IAAKn0D,QAAQkO,GAAG,MAAM/L,EAAEiO,EAAEkgB,SAAsBxe,EAAE6yE,GAAhBvzB,EAAEg1B,KAAI18E,EAAEg6I,GAAGvhJ,KAAemL,cAAS,IAAS+C,GAAG,OAAOA,EAAEA,EAAE,KAAKuyI,GAAGzgJ,EAAE2P,EAAEpI,GAAG0G,EAAEkgB,QAAQixH,MAAM73I,EAAEujI,GAAG78H,EAAE1G,EAAE0nD,GAAG+hG,GAAG/iJ,EAAEghD,GAAUhhD,CAAE,UAAS0lJ,GAAG1lJ,EAAEC,EAAElO,EAAEivD,GAAG,IAAI1nD,EAAE2G,EAAEigB,QAAQxe,EAAEs0E,KAAI/zB,EAAEqxF,GAAGh6I,GAAsL,OAAnLvH,EAAE+L,GAAG/L,GAAG,OAAOkO,EAAErQ,QAAQqQ,EAAErQ,QAAQmC,EAAEkO,EAAEu9I,eAAezrJ,GAAEkO,EAAEs0E,GAAG7yE,EAAEugD,IAAKzmD,QAAQ,CAACwO,QAAQhK,GAAuB,QAApBghD,OAAE,IAASA,EAAE,KAAKA,KAAa/gD,EAAE/C,SAAS8jD,GAAe,QAAZhhD,EAAEwyI,GAAGl5I,EAAE2G,EAAEgiD,MAAcsxF,GAAGvzI,EAAE1G,EAAE2oD,EAAEvgD,GAAGgxI,GAAG1yI,EAAE1G,EAAE2oD,IAAWA,CAAE,CAC5b,SAAS0jG,GAAG3lJ,GAAe,OAAZA,EAAEA,EAAEkgB,SAAc9V,OAAyBpK,EAAEoK,MAAMP,IAAoD7J,EAAEoK,MAAMmuH,WAAhF,IAA2F,UAASqtB,GAAG5lJ,EAAEC,GAAqB,GAAG,QAArBD,EAAEA,EAAE45H,gBAA2B,OAAO55H,EAAE65H,WAAW,CAAC,IAAI9nI,EAAEiO,EAAE6vI,UAAU7vI,EAAE6vI,UAAU,IAAI99I,GAAGA,EAAEkO,EAAElO,EAAEkO,CAAE,CAAC,UAAS4lJ,GAAG7lJ,EAAEC,GAAG2lJ,GAAG5lJ,EAAEC,IAAID,EAAEA,EAAE05H,YAAYksB,GAAG5lJ,EAAEC,EAAG,CAnB9S4hJ,GAAG,SAAS7hJ,EAAEC,EAAElO,GAAG,GAAG,OAAOiO,EAAE,GAAGA,EAAEkwI,gBAAgBjwI,EAAE0vI,cAAcvC,GAAGltH,QAAQkxH,IAAG,MAAO,CAAC,GAAG,KAAKpxI,EAAEmxI,MAAMp/I,IAAI,KAAa,IAARkO,EAAE6B,OAAW,OAAOsvI,IAAG,EAzE1I,SAAYpxI,EAAEC,EAAElO,GAAG,OAAOkO,EAAE4J,KAAK,KAAK,EAAE0zI,GAAGt9I,GAAGmwI,KAAK,MAAM,KAAK,EAAEwF,GAAG31I,GAAG,MAAM,KAAK,EAAEwtI,GAAGxtI,EAAElR,OAAO++I,GAAG7tI,GAAG,MAAM,KAAK,EAAEy1I,GAAGz1I,EAAEA,EAAEs4H,UAAUoG,eAAe,MAAM,KAAK,GAAG,IAAI39E,EAAE/gD,EAAElR,KAAKgjI,SAASz4H,EAAE2G,EAAEiwI,cAAczjJ,MAAMygJ,GAAEsD,GAAGxvF,EAAE8vF,eAAe9vF,EAAE8vF,cAAcx3I,EAAE,MAAM,KAAK,GAAqB,GAAG,QAArB0nD,EAAE/gD,EAAE25H,eAA2B,OAAG,OAAO54E,EAAE64E,YAAkBqT,GAAEvsC,GAAY,EAAVA,GAAEzgF,SAAWjgB,EAAE6B,OAAO,IAAI,MAAQ,KAAK/P,EAAEkO,EAAEmK,MAAM4mI,YAAmB+M,GAAG/9I,EAAEC,EAAElO,IAAGm7I,GAAEvsC,GAAY,EAAVA,GAAEzgF,SAA8B,QAAnBlgB,EAAEq8I,GAAGr8I,EAAEC,EAAElO,IAAmBiO,EAAEg6H,QAAQ,MAAKkT,GAAEvsC,GAAY,EAAVA,GAAEzgF,SAAW,MAAM,KAAK,GAC7d,GADge8gC,EAAE,KAAKjvD,EACrfkO,EAAE+wI,YAAe,KAAa,IAARhxI,EAAE8B,OAAW,CAAC,GAAGk/C,EAAE,OAAO+9F,GAAG/+I,EAAEC,EAAElO,GAAGkO,EAAE6B,OAAO,GAAI,CAA4F,GAA1E,QAAlBxI,EAAE2G,EAAE25H,iBAAyBtgI,EAAEslJ,UAAU,KAAKtlJ,EAAE8jE,KAAK,KAAK9jE,EAAEg/I,WAAW,MAAMpL,GAAEvsC,GAAEA,GAAEzgF,SAAY8gC,EAAE,MAAW,OAAO,KAAK,KAAK,GAAG,KAAK,GAAG,OAAO/gD,EAAEkxI,MAAM,EAAEuL,GAAG18I,EAAEC,EAAElO,GAAG,OAAOsqJ,GAAGr8I,EAAEC,EAAElO,EAAG,CAwE9G+zJ,CAAG9lJ,EAAEC,EAAElO,GAAGq/I,GAAG,KAAa,OAARpxI,EAAE8B,MAAoB,MAAKsvI,IAAG,EAAG/B,IAAG,KAAa,QAARpvI,EAAE6B,QAAgBktI,GAAG/uI,EAAEwuI,GAAGxuI,EAAErO,OAAiB,OAAVqO,EAAEkxI,MAAM,EAASlxI,EAAE4J,KAAK,KAAK,EAAE,IAAIm3C,EAAE/gD,EAAElR,KAAKmuJ,GAAGl9I,EAAEC,GAAGD,EAAEC,EAAE0vI,aAAa,IAAIr2I,EAAEg0I,GAAGrtI,EAAE82F,GAAE72E,SAAS+wH,GAAGhxI,EAAElO,GAAGuH,EAAEw9I,GAAG,KAAK72I,EAAE+gD,EAAEhhD,EAAE1G,EAAEvH,GAAG,IAAI2P,EAAEy1I,KACvI,OAD4Il3I,EAAE6B,OAAO,EAAE,kBAAkBxI,GAAG,OAAOA,GAAG,oBAAoBA,EAAE4qG,aAAQ,IAAS5qG,EAAEyrG,UAAU9kG,EAAE4J,IAAI,EAAE5J,EAAE25H,cAAc,KAAK35H,EAAE6xI,YAC1e,KAAKrE,GAAGzsF,IAAIt/C,GAAE,EAAGosI,GAAG7tI,IAAIyB,GAAE,EAAGzB,EAAE25H,cAAc,OAAOtgI,EAAE6O,YAAO,IAAS7O,EAAE6O,MAAM7O,EAAE6O,MAAM,KAAK0pI,GAAG5xI,GAAG3G,EAAEw6I,QAAQZ,GAAGjzI,EAAEs4H,UAAUj/H,EAAEA,EAAE85I,gBAAgBnzI,EAAEi0I,GAAGj0I,EAAE+gD,EAAEhhD,EAAEjO,GAAGkO,EAAEq9I,GAAG,KAAKr9I,EAAE+gD,GAAE,EAAGt/C,EAAE3P,KAAKkO,EAAE4J,IAAI,EAAEwlI,IAAG3tI,GAAGutI,GAAGhvI,GAAGk8I,GAAG,KAAKl8I,EAAE3G,EAAEvH,GAAGkO,EAAEA,EAAEmK,OAAcnK,EAAE,KAAK,GAAG+gD,EAAE/gD,EAAEyrG,YAAY1rG,EAAE,CAAqF,OAApFk9I,GAAGl9I,EAAEC,GAAGD,EAAEC,EAAE0vI,aAAuB3uF,GAAV1nD,EAAE0nD,EAAEixE,OAAUjxE,EAAEgxE,UAAU/xH,EAAElR,KAAKiyD,EAAE1nD,EAAE2G,EAAE4J,IAQtU,SAAY7J,GAAG,GAAG,oBAAoBA,EAAE,OAAOu8I,GAAGv8I,GAAG,EAAE,EAAE,QAAG,IAASA,GAAG,OAAOA,EAAE,CAAc,IAAbA,EAAEA,EAAE+kG,YAAgBisB,EAAG,OAAO,GAAG,GAAGhxH,IAAImxH,EAAG,OAAO,EAAG,QAAO,CAAE,CAR0L40B,CAAG/kG,GAAGhhD,EAAEuwI,GAAGvvF,EAAEhhD,GAAU1G,GAAG,KAAK,EAAE2G,EAAEw8I,GAAG,KAAKx8I,EAAE+gD,EAAEhhD,EAAEjO,GAAG,MAAMiO,EAAE,KAAK,EAAEC,EAAEg9I,GAAG,KAAKh9I,EAAE+gD,EAAEhhD,EAAEjO,GAAG,MAAMiO,EAAE,KAAK,GAAGC,EAAEm8I,GAAG,KAAKn8I,EAAE+gD,EAAEhhD,EAAEjO,GAAG,MAAMiO,EAAE,KAAK,GAAGC,EAAEq8I,GAAG,KAAKr8I,EAAE+gD,EAAEuvF,GAAGvvF,EAAEjyD,KAAKiR,GAAGjO,GAAG,MAAMiO,EAAE,MAAMrb,MAAM6oB,EAAE,IACvgBwzC,EAAE,IAAM,QAAO/gD,EAAE,KAAK,EAAE,OAAO+gD,EAAE/gD,EAAElR,KAAKuK,EAAE2G,EAAE0vI,aAA2C8M,GAAGz8I,EAAEC,EAAE+gD,EAArC1nD,EAAE2G,EAAEyrG,cAAc1qD,EAAE1nD,EAAEi3I,GAAGvvF,EAAE1nD,GAAcvH,GAAG,KAAK,EAAE,OAAOivD,EAAE/gD,EAAElR,KAAKuK,EAAE2G,EAAE0vI,aAA2CsN,GAAGj9I,EAAEC,EAAE+gD,EAArC1nD,EAAE2G,EAAEyrG,cAAc1qD,EAAE1nD,EAAEi3I,GAAGvvF,EAAE1nD,GAAcvH,GAAG,KAAK,EAAEiO,EAAE,CAAO,GAANu9I,GAAGt9I,GAAM,OAAOD,EAAE,MAAMrb,MAAM6oB,EAAE,MAAMwzC,EAAE/gD,EAAE0vI,aAA+Br2I,GAAlBoI,EAAEzB,EAAE25H,eAAkB5vH,QAAQqoI,GAAGryI,EAAEC,GAAG2yI,GAAG3yI,EAAE+gD,EAAE,KAAKjvD,GAAG,IAAIkwD,EAAEhiD,EAAE25H,cAA0B,GAAZ54E,EAAEiB,EAAEj4C,QAAWtI,EAAEg9H,aAAL,CAAkB,GAAGh9H,EAAE,CAACsI,QAAQg3C,EAAE09E,cAAa,EAAG1/H,MAAMijD,EAAEjjD,MAAMymJ,0BAA0BxjG,EAAEwjG,0BAA0B5I,YAAY56F,EAAE46F,aAAa58I,EAAE6xI,YAAYC,UAChfrwI,EAAEzB,EAAE25H,cAAcl4H,EAAU,IAARzB,EAAE6B,MAAU,CAAuB7B,EAAEw9I,GAAGz9I,EAAEC,EAAE+gD,EAAEjvD,EAAjCuH,EAAE0hJ,GAAGr2J,MAAM6oB,EAAE,MAAMvN,IAAmB,MAAMD,CAAE,CAAK,GAAGghD,IAAI1nD,EAAE,CAAuB2G,EAAEw9I,GAAGz9I,EAAEC,EAAE+gD,EAAEjvD,EAAjCuH,EAAE0hJ,GAAGr2J,MAAM6oB,EAAE,MAAMvN,IAAmB,MAAMD,CAAE,CAAK,IAAIovI,GAAG7C,GAAGtsI,EAAEs4H,UAAUoG,cAAcvK,YAAY+a,GAAGlvI,EAAEovI,IAAE,EAAGC,GAAG,KAAKv9I,EAAEqjJ,GAAGn1I,EAAE,KAAK+gD,EAAEjvD,GAAGkO,EAAEmK,MAAMrY,EAAEA,GAAGA,EAAE+P,OAAe,EAAT/P,EAAE+P,MAAS,KAAK/P,EAAEA,EAAEioI,OADoE,KACxD,CAAM,GAALoW,KAAQpvF,IAAI1nD,EAAE,CAAC2G,EAAEo8I,GAAGr8I,EAAEC,EAAElO,GAAG,MAAMiO,CAAE,CAAAm8I,GAAGn8I,EAAEC,EAAE+gD,EAAEjvD,EAAG,CAAAkO,EAAEA,EAAEmK,KAAM,QAAOnK,EAAE,KAAK,EAAE,OAAO21I,GAAG31I,GAAG,OAAOD,GAAG+vI,GAAG9vI,GAAG+gD,EAAE/gD,EAAElR,KAAKuK,EAAE2G,EAAE0vI,aAAajuI,EAAE,OAAO1B,EAAEA,EAAEkwI,cAAc,KAAKjuF,EAAE3oD,EAAE+Q,SAASyhI,GAAG9qF,EAAE1nD,GAAG2oD,EAAE,KAAK,OAAOvgD,GAAGoqI,GAAG9qF,EAAEt/C,KAAKzB,EAAE6B,OAAO,IACnfk7I,GAAGh9I,EAAEC,GAAGk8I,GAAGn8I,EAAEC,EAAEgiD,EAAElwD,GAAGkO,EAAEmK,MAAM,KAAK,EAAE,OAAO,OAAOpK,GAAG+vI,GAAG9vI,GAAG,KAAK,KAAK,GAAG,OAAO89I,GAAG/9I,EAAEC,EAAElO,GAAG,KAAK,EAAE,OAAO2jJ,GAAGz1I,EAAEA,EAAEs4H,UAAUoG,eAAe39E,EAAE/gD,EAAE0vI,aAAa,OAAO3vI,EAAEC,EAAEmK,MAAM+qI,GAAGl1I,EAAE,KAAK+gD,EAAEjvD,GAAGoqJ,GAAGn8I,EAAEC,EAAE+gD,EAAEjvD,GAAGkO,EAAEmK,MAAM,KAAK,GAAG,OAAO42C,EAAE/gD,EAAElR,KAAKuK,EAAE2G,EAAE0vI,aAA2CyM,GAAGp8I,EAAEC,EAAE+gD,EAArC1nD,EAAE2G,EAAEyrG,cAAc1qD,EAAE1nD,EAAEi3I,GAAGvvF,EAAE1nD,GAAcvH,GAAG,KAAK,EAAE,OAAOoqJ,GAAGn8I,EAAEC,EAAEA,EAAE0vI,aAAa59I,GAAGkO,EAAEmK,MAAM,KAAK,EAAmD,KAAK,GAAG,OAAO+xI,GAAGn8I,EAAEC,EAAEA,EAAE0vI,aAAatlI,SAAStY,GAAGkO,EAAEmK,MAAM,KAAK,GAAGpK,EAAE,CACxZ,GADyZghD,EAAE/gD,EAAElR,KAAKgjI,SAASz4H,EAAE2G,EAAE0vI,aAAajuI,EAAEzB,EAAEiwI,cAClfjuF,EAAE3oD,EAAE7M,MAAMygJ,GAAEsD,GAAGxvF,EAAE8vF,eAAe9vF,EAAE8vF,cAAc7uF,EAAK,OAAOvgD,EAAE,GAAGylI,GAAGzlI,EAAEjV,MAAMw1D,IAAI,GAAGvgD,EAAE2I,WAAW/Q,EAAE+Q,WAAW+iI,GAAGltH,QAAQ,CAACjgB,EAAEo8I,GAAGr8I,EAAEC,EAAElO,GAAG,MAAMiO,CAAE,OAAM,IAAc,QAAV0B,EAAEzB,EAAEmK,SAAiB1I,EAAEua,OAAOhc,GAAG,OAAOyB,GAAG,CAAC,IAAI9L,EAAE8L,EAAE+3D,aAAa,GAAG,OAAO7jE,EAAE,CAACqsD,EAAEvgD,EAAE0I,MAAM,IAAI,IAAI25C,EAAEnuD,EAAEs7I,aAAa,OAAOntF,GAAG,CAAC,GAAGA,EAAEn0D,UAAUoxD,EAAE,CAAC,GAAG,IAAIt/C,EAAEmI,IAAI,EAACk6C,EAAEwwB,IAAI,EAAExiF,GAAGA,IAAK8X,IAAI,EAAE,IAAIzY,EAAEsQ,EAAEowI,YAAY,GAAG,OAAO1gJ,EAAE,CAAY,IAAI2vD,GAAf3vD,EAAEA,EAAE8gJ,QAAeC,QAAQ,OAAOpxF,EAAEgD,EAAEloC,KAAKkoC,GAAGA,EAAEloC,KAAKklC,EAAEllC,KAAKklC,EAAEllC,KAAKkoC,GAAG3yD,EAAE+gJ,QAAQpuF,CAAE,CAAC,CAAAriD,EAAEyvI,OAAOp/I,EAAgB,QAAdgyD,EAAEriD,EAAEg4H,aAAqB31E,EAAEotF,OAAOp/I,GAAGg/I,GAAGrvI,EAAEua,OAClflqB,EAAEkO,GAAGrK,EAAEu7I,OAAOp/I,EAAE,KAAM,CAAAgyD,EAAEA,EAAEloC,IAAK,CAAC,MAAK,GAAG,KAAKna,EAAEmI,IAAIo4C,EAAEvgD,EAAE3S,OAAOkR,EAAElR,KAAK,KAAK2S,EAAE0I,WAAW,GAAG,KAAK1I,EAAEmI,IAAI,CAAY,GAAG,QAAdo4C,EAAEvgD,EAAEua,QAAmB,MAAMt3B,MAAM6oB,EAAE,MAAMy0C,EAAEkvF,OAAOp/I,EAAgB,QAAd6D,EAAEqsD,EAAEy3E,aAAqB9jI,EAAEu7I,OAAOp/I,GAAGg/I,GAAG9uF,EAAElwD,EAAEkO,GAAGgiD,EAAEvgD,EAAEs4H,OAAQ,MAAK/3E,EAAEvgD,EAAE0I,MAAM,GAAG,OAAO63C,EAAEA,EAAEhmC,OAAOva,OAAO,IAAIugD,EAAEvgD,EAAE,OAAOugD,GAAG,CAAC,GAAGA,IAAIhiD,EAAE,CAACgiD,EAAE,KAAK,KAAM,CAAY,GAAG,QAAfvgD,EAAEugD,EAAE+3E,SAAoB,CAACt4H,EAAEua,OAAOgmC,EAAEhmC,OAAOgmC,EAAEvgD,EAAE,KAAM,CAAAugD,EAAEA,EAAEhmC,MAAO,CAAAva,EAAEugD,CAAE,CAAAk6F,GAAGn8I,EAAEC,EAAE3G,EAAE+Q,SAAStY,GAAGkO,EAAEA,EAAEmK,KAAM,QAAOnK,EAAE,KAAK,EAAE,OAAO3G,EAAE2G,EAAElR,KAAKiyD,EAAE/gD,EAAE0vI,aAAatlI,SAAS4mI,GAAGhxI,EAAElO,GAAWivD,EAAEA,EAAV1nD,EAAE+3I,GAAG/3I,IAAU2G,EAAE6B,OAAO,EAAEq6I,GAAGn8I,EAAEC,EAAE+gD,EAAEjvD,GACpfkO,EAAEmK,MAAM,KAAK,GAAG,OAAgB9Q,EAAEi3I,GAAXvvF,EAAE/gD,EAAElR,KAAYkR,EAAE0vI,cAA6B2M,GAAGt8I,EAAEC,EAAE+gD,EAAtB1nD,EAAEi3I,GAAGvvF,EAAEjyD,KAAKuK,GAAcvH,GAAG,KAAK,GAAG,OAAOyqJ,GAAGx8I,EAAEC,EAAEA,EAAElR,KAAKkR,EAAE0vI,aAAa59I,GAAG,KAAK,GAAG,OAAOivD,EAAE/gD,EAAElR,KAAKuK,EAAE2G,EAAE0vI,aAAar2I,EAAE2G,EAAEyrG,cAAc1qD,EAAE1nD,EAAEi3I,GAAGvvF,EAAE1nD,GAAG4jJ,GAAGl9I,EAAEC,GAAGA,EAAE4J,IAAI,EAAE4jI,GAAGzsF,IAAIhhD,GAAE,EAAG8tI,GAAG7tI,IAAID,GAAE,EAAGixI,GAAGhxI,EAAElO,GAAG8hJ,GAAG5zI,EAAE+gD,EAAE1nD,GAAG46I,GAAGj0I,EAAE+gD,EAAE1nD,EAAEvH,GAAGurJ,GAAG,KAAKr9I,EAAE+gD,GAAE,EAAGhhD,EAAEjO,GAAG,KAAK,GAAG,OAAOgtJ,GAAG/+I,EAAEC,EAAElO,GAAG,KAAK,GAAG,OAAO2qJ,GAAG18I,EAAEC,EAAElO,GAAG,MAAMpN,MAAM6oB,EAAE,IAAIvN,EAAE4J,KAAO,EAYzC,IAAIohD,GAAG,oBAAoB+6F,YAAYA,YAAY,SAAShmJ,GAAGvB,QAAQzK,MAAMgM,EAAG,EAAC,SAASimJ,GAAGjmJ,GAAGlP,KAAKo1J,cAAclmJ,CAAE,CAClI,SAASmmJ,GAAGnmJ,GAAGlP,KAAKo1J,cAAclmJ,CAAE,CAC7J,SAASomJ,GAAGpmJ,GAAG,SAASA,GAAG,IAAIA,EAAEyiE,UAAU,IAAIziE,EAAEyiE,UAAU,KAAKziE,EAAEyiE,SAAU,UAAS4jF,GAAGrmJ,GAAG,SAASA,GAAG,IAAIA,EAAEyiE,UAAU,IAAIziE,EAAEyiE,UAAU,KAAKziE,EAAEyiE,WAAW,IAAIziE,EAAEyiE,UAAU,iCAAiCziE,EAAEs5B,WAAY,UAASgtH,KAAM,CAEza,SAASC,GAAGvmJ,EAAEC,EAAElO,EAAEivD,EAAE1nD,GAAG,IAAIoI,EAAE3P,EAAE0uJ,oBAAoB,GAAG/+I,EAAE,CAAC,IAAIugD,EAAEvgD,EAAE,GAAG,oBAAoBpI,EAAE,CAAC,IAAI1D,EAAE0D,EAAEA,EAAE,WAAW,IAAI0G,EAAE2lJ,GAAG1jG,GAAGrsD,EAAE5D,KAAKgO,EAAG,CAAC,CAAA0lJ,GAAGzlJ,EAAEgiD,EAAEjiD,EAAE1G,EAAG,MAAK2oD,EADxJ,SAAYjiD,EAAEC,EAAElO,EAAEivD,EAAE1nD,GAAG,GAAGA,EAAE,CAAC,GAAG,oBAAoB0nD,EAAE,CAAC,IAAIt/C,EAAEs/C,EAAEA,EAAE,WAAW,IAAIhhD,EAAE2lJ,GAAG1jG,GAAGvgD,EAAE1P,KAAKgO,EAAG,CAAC,KAAIiiD,EAAEw+C,GAAGxgG,EAAE+gD,EAAEhhD,EAAE,EAAE,MAAK,EAAG,EAAG,GAAGsmJ,IAAmF,OAA/EtmJ,EAAEygJ,oBAAoBx+F,EAAEjiD,EAAE8qI,IAAI7oF,EAAE/hC,QAAQwqH,GAAG,IAAI1qI,EAAEyiE,SAASziE,EAAE0K,WAAW1K,GAAGqkJ,KAAYpiG,CAAE,MAAK3oD,EAAE0G,EAAEw0H,WAAWx0H,EAAE2K,YAAYrR,GAAG,GAAG,oBAAoB0nD,EAAE,CAAC,IAAIprD,EAAEorD,EAAEA,EAAE,WAAW,IAAIhhD,EAAE2lJ,GAAG5hG,GAAGnuD,EAAE5D,KAAKgO,EAAG,CAAC,KAAI+jD,EAAEyhG,GAAGxlJ,EAAE,GAAE,EAAG,KAAK,GAAK,EAAG,EAAG,GAAGsmJ,IAA0G,OAAtGtmJ,EAAEygJ,oBAAoB18F,EAAE/jD,EAAE8qI,IAAI/mF,EAAE7jC,QAAQwqH,GAAG,IAAI1qI,EAAEyiE,SAASziE,EAAE0K,WAAW1K,GAAGqkJ,IAAG,WAAWqB,GAAGzlJ,EAAE8jD,EAAEhyD,EAAEivD,EAAG,IAAS+C,CAAE,CACrUyiG,CAAGz0J,EAAEkO,EAAED,EAAE1G,EAAE0nD,GAAG,OAAO2kG,GAAG1jG,EAAG,CAHrLkkG,GAAGr2J,UAAUo0G,OAAO+hD,GAAGn2J,UAAUo0G,OAAO,SAASlkG,GAAG,IAAIC,EAAEnP,KAAKo1J,cAAc,GAAG,OAAOjmJ,EAAE,MAAMtb,MAAM6oB,EAAE,MAAMk4I,GAAG1lJ,EAAEC,EAAE,KAAK,KAAM,EAACkmJ,GAAGr2J,UAAU22J,QAAQR,GAAGn2J,UAAU22J,QAAQ,WAAW,IAAIzmJ,EAAElP,KAAKo1J,cAAc,GAAG,OAAOlmJ,EAAE,CAAClP,KAAKo1J,cAAc,KAAK,IAAIjmJ,EAAED,EAAE2+H,cAAc0lB,IAAG,WAAWqB,GAAG,KAAK1lJ,EAAE,KAAK,KAAM,IAAEC,EAAE6qI,IAAI,IAAK,CAAC,EAC1Tqb,GAAGr2J,UAAU42J,2BAA2B,SAAS1mJ,GAAG,GAAGA,EAAE,CAAC,IAAIC,EAAEo9H,KAAKr9H,EAAE,CAACo+H,UAAU,KAAK1nI,OAAOsJ,EAAEq/D,SAASp/D,GAAG,IAAI,IAAIlO,EAAE,EAAEA,EAAE+rI,GAAG34I,QAAQ,IAAI8a,GAAGA,EAAE69H,GAAG/rI,GAAGstE,SAASttE,KAAK+rI,GAAGjsI,OAAOE,EAAE,EAAEiO,GAAG,IAAIjO,GAAGysI,GAAGx+H,EAAG,CAAC,EAEZk9H,GAAG,SAASl9H,GAAG,OAAOA,EAAE6J,KAAK,KAAK,EAAE,IAAI5J,EAAED,EAAEu4H,UAAU,GAAGt4H,EAAEigB,QAAQ05G,cAAc8E,aAAa,CAAC,IAAI3sI,EAAEmqI,GAAGj8H,EAAEm8H,cAAc,IAAIrqI,IAAIgrI,GAAG98H,EAAI,EAAFlO,GAAKgxJ,GAAG9iJ,EAAE06H,MAAK,KAAO,EAAF8X,MAAO+M,GAAG7kB,KAAI,IAAI0T,MAAO,OAAM,KAAK,GAAGgW,IAAG,WAAW,IAAIpkJ,EAAE0xI,GAAG3xI,EAAE,GAAG,GAAG,OAAOC,EAAE,CAAC,IAAIlO,EAAEikF,KAAIu9D,GAAGtzI,EAAED,EAAE,EAAEjO,EAAG,CAAC,IAAE8zJ,GAAG7lJ,EAAE,GAAI,EAChcm9H,GAAG,SAASn9H,GAAG,GAAG,KAAKA,EAAE6J,IAAI,CAAC,IAAI5J,EAAE0xI,GAAG3xI,EAAE,WAAW,GAAG,OAAOC,EAAaszI,GAAGtzI,EAAED,EAAE,UAAXg2E,MAAwB6vE,GAAG7lJ,EAAE,UAAW,CAAC,EAACo9H,GAAG,SAASp9H,GAAG,GAAG,KAAKA,EAAE6J,IAAI,CAAC,IAAI5J,EAAEqzI,GAAGtzI,GAAGjO,EAAE4/I,GAAG3xI,EAAEC,GAAG,GAAG,OAAOlO,EAAawhJ,GAAGxhJ,EAAEiO,EAAEC,EAAX+1E,MAAgB6vE,GAAG7lJ,EAAEC,EAAG,CAAC,EAACo9H,GAAG,WAAW,OAAOL,EAAE,EAACM,GAAG,SAASt9H,EAAEC,GAAG,IAAIlO,EAAEirI,GAAE,IAAI,OAAOA,GAAEh9H,EAAEC,GAAgB,CAA/B,QAA2B+8H,GAAEjrI,CAAE,CAAC,EACnSmmI,GAAG,SAASl4H,EAAEC,EAAElO,GAAG,OAAOkO,GAAG,IAAK,QAAyB,GAAjBmrB,EAAGprB,EAAEjO,GAAGkO,EAAElO,EAAEG,KAAQ,UAAUH,EAAEhD,MAAM,MAAMkR,EAAE,CAAC,IAAIlO,EAAEiO,EAAEjO,EAAE2Y,YAAY3Y,EAAEA,EAAE2Y,WAAsF,IAA3E3Y,EAAEA,EAAEgsD,iBAAiB,cAAc5kD,KAAKI,UAAU,GAAG0G,GAAG,mBAAuBA,EAAE,EAAEA,EAAElO,EAAE5M,OAAO8a,IAAI,CAAC,IAAI+gD,EAAEjvD,EAAEkO,GAAG,GAAG+gD,IAAIhhD,GAAGghD,EAAE9W,OAAOlqC,EAAEkqC,KAAK,CAAC,IAAI5wC,EAAEk/H,GAAGx3E,GAAG,IAAI1nD,EAAE,MAAM3U,MAAM6oB,EAAE,KAAKklH,EAAG1xE,GAAG51B,EAAG41B,EAAE1nD,EAAG,CAAC,CAAC,OAAM,IAAK,WAAWu6H,GAAG7zH,EAAEjO,GAAG,MAAM,IAAK,SAAmB,OAAVkO,EAAElO,EAAEtF,QAAe8mI,GAAGvzH,IAAIjO,EAAEqtJ,SAASn/I,GAAE,GAAK,EAAC04H,GAAGyrB,GAAGxrB,GAAGyrB,GACpa,IAAIsC,GAAG,CAACC,uBAAsB,EAAGl+F,OAAO,CAAC4vE,GAAG7gC,GAAG+gC,GAAGC,GAAGC,GAAG0rB,KAAKyC,GAAG,CAACC,wBAAwBroB,GAAGsoB,WAAW,EAAE5oJ,QAAQ,SAAS6oJ,oBAAoB,aAC1IC,GAAG,CAACF,WAAWF,GAAGE,WAAW5oJ,QAAQ0oJ,GAAG1oJ,QAAQ6oJ,oBAAoBH,GAAGG,oBAAoBE,eAAeL,GAAGK,eAAeC,kBAAkB,KAAKC,4BAA4B,KAAKC,4BAA4B,KAAKC,cAAc,KAAKC,wBAAwB,KAAKC,wBAAwB,KAAKC,gBAAgB,KAAKC,mBAAmB,KAAKC,eAAe,KAAKC,qBAAqBr3B,EAAG6lB,uBAAuByR,wBAAwB,SAAS7nJ,GAAW,OAAO,QAAfA,EAAE+5H,GAAG/5H,IAAmB,KAAKA,EAAEu4H,SAAU,EAACuuB,wBAAwBD,GAAGC,yBARjN,WAAc,OAAO,IAAK,EASrUgB,4BAA4B,KAAKC,gBAAgB,KAAKC,aAAa,KAAKC,kBAAkB,KAAKC,gBAAgB,KAAKC,kBAAkB,kCAAkC,GAAG,qBAAqBC,+BAA+B,CAAC,IAAIC,GAAGD,+BAA+B,IAAIC,GAAG/sH,YAAY+sH,GAAGC,cAAc,IAAI7sB,GAAG4sB,GAAGE,OAAOtB,IAAIvrB,GAAG2sB,EAAa,CAAV,MAAMroJ,IAAI,CAAC,CAAAxW,EAAQgnI,mDAAmDm2B,GAC9Yn9J,EAAQkkI,aAAa,SAAS1tH,EAAEC,GAAG,IAAIlO,EAAE,EAAE+H,UAAU3U,aAAQ,IAAS2U,UAAU,GAAGA,UAAU,GAAG,KAAK,IAAIssJ,GAAGnmJ,GAAG,MAAMtb,MAAM6oB,EAAE,MAAM,OAAO4lF,GAAGpzF,EAAEC,EAAE,KAAKlO,EAAG,EAACvI,EAAQg/J,WAAW,SAASxoJ,EAAEC,GAAG,IAAImmJ,GAAGpmJ,GAAG,MAAMrb,MAAM6oB,EAAE,MAAM,IAAIzb,GAAE,EAAGivD,EAAE,GAAG1nD,EAAE2xD,GAA4P,OAAzP,OAAOhrD,QAAG,IAASA,KAAI,IAAKA,EAAEwoJ,sBAAsB12J,GAAE,QAAI,IAASkO,EAAE86I,mBAAmB/5F,EAAE/gD,EAAE86I,uBAAkB,IAAS96I,EAAE6kJ,qBAAqBxrJ,EAAE2G,EAAE6kJ,qBAAqB7kJ,EAAEulJ,GAAGxlJ,EAAE,GAAE,EAAG,KAAK,EAAKjO,EAAE,EAAGivD,EAAE1nD,GAAG0G,EAAE8qI,IAAI7qI,EAAEigB,QAAQwqH,GAAG,IAAI1qI,EAAEyiE,SAASziE,EAAE0K,WAAW1K,GAAU,IAAIimJ,GAAGhmJ,EAAG,EACtfzW,EAAQk/J,YAAY,SAAS1oJ,GAAG,GAAG,MAAMA,EAAE,OAAO,KAAK,GAAG,IAAIA,EAAEyiE,SAAS,OAAOziE,EAAE,IAAIC,EAAED,EAAEozI,gBAAgB,QAAG,IAASnzI,EAAE,CAAC,GAAG,oBAAoBD,EAAEkkG,OAAO,MAAMv/G,MAAM6oB,EAAE,MAAiC,MAA3BxN,EAAEnL,OAAOsC,KAAK6I,GAAG1F,KAAK,KAAW3V,MAAM6oB,EAAE,IAAIxN,GAAK,CAAoC,OAA5BA,EAAE,QAAVA,EAAE+5H,GAAG95H,IAAc,KAAKD,EAAEu4H,SAAmB,EAAC/uI,EAAQm/J,UAAU,SAAS3oJ,GAAG,OAAOqkJ,GAAGrkJ,EAAG,EAACxW,EAAQo/J,QAAQ,SAAS5oJ,EAAEC,EAAElO,GAAG,IAAIs0J,GAAGpmJ,GAAG,MAAMtb,MAAM6oB,EAAE,MAAM,OAAO+4I,GAAG,KAAKvmJ,EAAEC,GAAE,EAAGlO,EAAG,EAChZvI,EAAQq/J,YAAY,SAAS7oJ,EAAEC,EAAElO,GAAG,IAAIq0J,GAAGpmJ,GAAG,MAAMrb,MAAM6oB,EAAE,MAAM,IAAIwzC,EAAE,MAAMjvD,GAAGA,EAAE+2J,iBAAiB,KAAKxvJ,GAAE,EAAGoI,EAAE,GAAGugD,EAAEgJ,GAAyO,GAAtO,OAAOl5D,QAAG,IAASA,KAAI,IAAKA,EAAE02J,sBAAsBnvJ,GAAE,QAAI,IAASvH,EAAEgpJ,mBAAmBr5I,EAAE3P,EAAEgpJ,uBAAkB,IAAShpJ,EAAE+yJ,qBAAqB7iG,EAAElwD,EAAE+yJ,qBAAqB7kJ,EAAEwgG,GAAGxgG,EAAE,KAAKD,EAAE,EAAE,MAAMjO,EAAEA,EAAE,KAAKuH,EAAE,EAAGoI,EAAEugD,GAAGjiD,EAAE8qI,IAAI7qI,EAAEigB,QAAQwqH,GAAG1qI,GAAMghD,EAAE,IAAIhhD,EAAE,EAAEA,EAAEghD,EAAE77D,OAAO6a,IAA2B1G,GAAhBA,GAAPvH,EAAEivD,EAAEhhD,IAAO+oJ,aAAgBh3J,EAAEi3J,SAAS,MAAM/oJ,EAAEslJ,gCAAgCtlJ,EAAEslJ,gCAAgC,CAACxzJ,EAAEuH,GAAG2G,EAAEslJ,gCAAgC5zJ,KAAKI,EACvhBuH,GAAG,OAAO,IAAI6sJ,GAAGlmJ,EAAG,EAACzW,EAAQ06G,OAAO,SAASlkG,EAAEC,EAAElO,GAAG,IAAIs0J,GAAGpmJ,GAAG,MAAMtb,MAAM6oB,EAAE,MAAM,OAAO+4I,GAAG,KAAKvmJ,EAAEC,GAAE,EAAGlO,EAAG,EAACvI,EAAQy/J,uBAAuB,SAASjpJ,GAAG,IAAIqmJ,GAAGrmJ,GAAG,MAAMrb,MAAM6oB,EAAE,KAAK,QAAOxN,EAAEygJ,sBAAqB4D,IAAG,WAAWkC,GAAG,KAAK,KAAKvmJ,GAAE,GAAG,WAAWA,EAAEygJ,oBAAoB,KAAKzgJ,EAAE8qI,IAAI,IAAK,GAAE,KAAE,EAAO,EAACthJ,EAAQ0/J,wBAAwB9E,GAC/U56J,EAAQ2/J,oCAAoC,SAASnpJ,EAAEC,EAAElO,EAAEivD,GAAG,IAAIqlG,GAAGt0J,GAAG,MAAMpN,MAAM6oB,EAAE,MAAM,GAAG,MAAMxN,QAAG,IAASA,EAAEozI,gBAAgB,MAAMzuJ,MAAM6oB,EAAE,KAAK,OAAO+4I,GAAGvmJ,EAAEC,EAAElO,GAAE,EAAGivD,EAAG,EAACx3D,EAAQ2U,QAAQ,oEChU7L,IAAI4iD,EAAIr3D,EAAQ,MAEdF,EAAQg/J,WAAaznG,EAAEynG,WACvBh/J,EAAQq/J,YAAc9nG,EAAE8nG,gDCH1B,SAASO,IAEP,GAC4C,qBAAnChB,gCAC4C,oBAA5CA,+BAA+BgB,SAcxC,IAEEhB,+BAA+BgB,SAASA,EAKzC,CAJC,MAAO18J,GAGP+R,QAAQzK,MAAMtH,EACf,CACF,CAKC08J,GACA7/J,EAAOC,QAAU,EAAjBD,yWChCFsL,OAAOE,eAAevL,EAAS,aAAc,CAC3CiD,OAAO,IAEToI,OAAOE,eAAevL,EAAS,gBAAiB,CAC9CwwB,YAAY,EACZ3M,IAAK,WACH,OAAOg8I,EAAe9nJ,OACvB,IAEH/X,EAAAA,aAAkB,EAClB,IAAIkqH,EAWJ,SAAiCt+G,EAAKysH,GAAe,IAAKA,GAAezsH,GAAOA,EAAI+rD,WAAc,OAAO/rD,EAAO,GAAY,OAARA,GAA+B,kBAARA,GAAmC,oBAARA,EAAsB,MAAO,CAAEmM,QAASnM,GAAS,IAAI4J,EAAQ8iH,EAAyBD,GAAc,GAAI7iH,GAASA,EAAMwpD,IAAIpzD,GAAQ,OAAO4J,EAAMqO,IAAIjY,GAAQ,IAAI0uD,EAAS,CAAC,EAAOi+D,EAAwBltH,OAAOE,gBAAkBF,OAAOkpB,yBAA0B,IAAK,IAAIzvB,KAAO8G,EAAO,GAAY,YAAR9G,GAAqBuG,OAAO/E,UAAUwP,eAAetN,KAAKoD,EAAK9G,GAAM,CAAE,IAAIgQ,EAAOyjH,EAAwBltH,OAAOkpB,yBAAyB3oB,EAAK9G,GAAO,KAAUgQ,IAASA,EAAK+O,KAAO/O,EAAK8O,KAAQvY,OAAOE,eAAe+uD,EAAQx1D,EAAKgQ,GAAgBwlD,EAAOx1D,GAAO8G,EAAI9G,EAAS,CAAGw1D,EAAOviD,QAAUnM,EAAS4J,GAASA,EAAMoO,IAAIhY,EAAK0uD,GAAW,OAAOA,CAAS,CAXxxBk+D,CAAwBt4H,EAAQ,OACxCu4H,EAAaC,EAAuBx4H,EAAQ,OAC5C0hI,EAAYlJ,EAAuBx4H,EAAQ,OAC3C++H,EAAQvG,EAAuBx4H,EAAQ,OACvC4/J,EAAU5/J,EAAQ,MAClB6/J,EAAe7/J,EAAQ,KACvB8/J,EAAS9/J,EAAQ,MACjB2/J,EAAiBnnC,EAAuBx4H,EAAQ,OAChD+/J,EAAOvnC,EAAuBx4H,EAAQ,OAC1C,SAASw4H,EAAuB9sH,GAAO,OAAOA,GAAOA,EAAI+rD,WAAa/rD,EAAM,CAAEmM,QAASnM,EAAQ,CAC/F,SAAS0sH,EAAyBD,GAAe,GAAuB,oBAAZn9C,QAAwB,OAAO,KAAM,IAAIo+C,EAAoB,IAAIp+C,QAAeq+C,EAAmB,IAAIr+C,QAAW,OAAQo9C,EAA2B,SAAUD,GAAe,OAAOA,EAAckB,EAAmBD,CAAoB,GAAEjB,EAAe,CAEvT,SAAS9N,IAAiS,OAApRA,EAAWl/G,OAAOQ,OAASR,OAAOQ,OAAO/F,OAAS,SAAUoH,GAAU,IAAK,IAAIvF,EAAI,EAAGA,EAAI2I,UAAU3U,OAAQgM,IAAK,CAAE,IAAIW,EAASgI,UAAU3I,GAAI,IAAK,IAAI7C,KAAOwD,EAAc+C,OAAO/E,UAAUwP,eAAetN,KAAKF,EAAQxD,KAAQoI,EAAOpI,GAAOwD,EAAOxD,GAAW,CAAC,OAAOoI,CAAS,EAASq9G,EAASpgH,MAAM7C,KAAMgJ,UAAa,CACnV,SAASsyG,EAAgBh3G,EAAK9G,EAAK7B,GAA4L,OAAnL6B,EAC5C,SAAwB6S,GAAO,IAAI7S,EACnC,SAAsB27C,EAAOyxC,GAAQ,GAAqB,kBAAVzxC,GAAgC,OAAVA,EAAgB,OAAOA,EAAO,IAAI25E,EAAO35E,EAAMltB,OAAO8mG,aAAc,QAAa11H,IAATy1H,EAAoB,CAAE,IAAIl8F,EAAMk8F,EAAK5xH,KAAKi4C,EAAOyxC,GAAQ,WAAY,GAAmB,kBAARh0D,EAAkB,OAAOA,EAAK,MAAM,IAAI92B,UAAU,+CAAkD,CAAC,OAAiB,WAAT8qF,EAAoB56E,OAASsuD,QAAQnlB,EAAS,CADhV65E,CAAa3iH,EAAK,UAAW,MAAsB,kBAAR7S,EAAmBA,EAAMwS,OAAOxS,EAAO,CADzEq1H,CAAer1H,MAAiB8G,EAAOP,OAAOE,eAAeK,EAAK9G,EAAK,CAAE7B,MAAOA,EAAOutB,YAAY,EAAMqyF,cAAc,EAAMC,UAAU,IAAkBl3G,EAAI9G,GAAO7B,EAAgB2I,CAAM,KAgCtOs0J,EAAAA,SAAAA,qBA0BJ,WAAYppJ,GAA4B,uBACtC,cAAMA,GACN8rG,EAAgB,EAAD,GAAO,eAAe,SAAC9yG,EAAGqwJ,GAMvC,IALA,EAAIF,EAAKloJ,SAAS,6BAA8BooJ,IAK5B,IAFA,EAAKrpJ,MAAMspJ,QAAQtwJ,GAAG,EAAIiwJ,EAAaM,qBAAjB,KAA4CF,IAE3D,OAAO,EAClC,EAAKhrF,SAAS,CACZmrF,UAAU,EACVC,SAAS,GAEZ,IACD39C,EAAgB,EAAD,GAAO,UAAU,SAAC9yG,EAAGqwJ,GAClC,IAAK,EAAKxhJ,MAAM2hJ,SAAU,OAAO,GACjC,EAAIL,EAAKloJ,SAAS,wBAAyBooJ,GAC3C,IAAMK,GAAS,EAAIT,EAAaM,qBAAjB,KAA4CF,GACrDM,EAAW,CACflwH,EAAGiwH,EAAOjwH,EACVE,EAAG+vH,EAAO/vH,EACViwH,OAAQ,EACRC,OAAQ,GAIV,GAAI,EAAK7pJ,MAAMw1C,OAAQ,CAErB,IACE/b,EAEEkwH,EAFFlwH,EACAE,EACEgwH,EADFhwH,EAMFgwH,EAASlwH,GAAK,EAAK5xB,MAAM+hJ,OACzBD,EAAShwH,GAAK,EAAK9xB,MAAMgiJ,OAGzB,OAA+B,EAAIZ,EAAaa,kBAAjB,KAAyCH,EAASlwH,EAAGkwH,EAAShwH,GAA7F,SAAOowH,EAAP,KAAkBC,EAAlB,KACAL,EAASlwH,EAAIswH,EACbJ,EAAShwH,EAAIqwH,EAGbL,EAASC,OAAS,EAAK/hJ,MAAM+hJ,QAAUnwH,EAAIkwH,EAASlwH,GACpDkwH,EAASE,OAAS,EAAKhiJ,MAAMgiJ,QAAUlwH,EAAIgwH,EAAShwH,GAGpD+vH,EAAOjwH,EAAIkwH,EAASlwH,EACpBiwH,EAAO/vH,EAAIgwH,EAAShwH,EACpB+vH,EAAO3kB,OAAS4kB,EAASlwH,EAAI,EAAK5xB,MAAM4xB,EACxCiwH,EAAOzkB,OAAS0kB,EAAShwH,EAAI,EAAK9xB,MAAM8xB,CACzC,CAID,IAAqB,IADA,EAAK35B,MAAMiqJ,OAAOjxJ,EAAG0wJ,GACd,OAAO,EACnC,EAAKrrF,SAASsrF,EACf,IACD79C,EAAgB,EAAD,GAAO,cAAc,SAAC9yG,EAAGqwJ,GACtC,IAAK,EAAKxhJ,MAAM2hJ,SAAU,OAAO,EAIjC,IAAuB,IADA,EAAKxpJ,MAAMkqJ,OAAOlxJ,GAAG,EAAIiwJ,EAAaM,qBAAjB,KAA4CF,IAC1D,OAAO,GACrC,EAAIF,EAAKloJ,SAAS,4BAA6BooJ,GAC/C,IAAMM,EAAyC,CAC7CH,UAAU,EACVI,OAAQ,EACRC,OAAQ,GAMV,GADmB5iG,QAAQ,EAAKjnD,MAAMO,UACtB,CACd,MAGI,EAAKP,MAAMO,SAFbk5B,EADF,EACEA,EACAE,EAFF,EAEEA,EAEFgwH,EAASlwH,EAAIA,EACbkwH,EAAShwH,EAAIA,CACd,CACD,EAAK0kC,SAASsrF,EACf,IACD,EAAK9hJ,MAAQ,CAEX2hJ,UAAU,EAEVC,SAAS,EAEThwH,EAAGz5B,EAAMO,SAAWP,EAAMO,SAASk5B,EAAIz5B,EAAMmqJ,gBAAgB1wH,EAC7DE,EAAG35B,EAAMO,SAAWP,EAAMO,SAASo5B,EAAI35B,EAAMmqJ,gBAAgBxwH,EAC7DywH,kBAAmB,EAAF,GACZpqJ,EAAMO,UAGXqpJ,OAAQ,EACRC,OAAQ,EAERQ,cAAc,IAEZrqJ,EAAMO,UAAcP,EAAMiqJ,QAAUjqJ,EAAMkqJ,QAE5C/rJ,QAAQC,KAAK,6NAzGuB,CA2GvC,4CACD,WAEmC,qBAAtBjC,OAAOmuJ,YAA8B95J,KAAK43J,wBAAyBjsJ,OAAOmuJ,YACnF95J,KAAK6tE,SAAS,CACZgsF,cAAc,GAGnB,qCACD,WACE75J,KAAK6tE,SAAS,CACZmrF,UAAU,GAEb,4BAID,WACE,IAAIe,EAAuBjyC,EAC3B,OAA4M,QAApMiyC,EAAuD,QAA9BjyC,EAAc9nH,KAAKwP,aAAmC,IAAhBs4G,GAAkE,QAAvCA,EAAcA,EAAYkyC,eAAqC,IAAhBlyC,OAAyB,EAASA,EAAY14F,eAA+C,IAA1B2qI,EAAmCA,EAAwBz/B,EAAU7pH,QAAQmnJ,YAAY53J,KAC9S,uBACD,WAAgC,MAC9B,EAYIA,KAAKwP,MATP+J,GAHF,EACE0gJ,KADF,EAEEj1G,OAFF,EAGEzrC,UACAogJ,EAJF,EAIEA,gBACAO,EALF,EAKEA,iBACAC,EANF,EAMEA,yBACAC,EAPF,EAOEA,wBACArqJ,EARF,EAQEA,SACAsqJ,EATF,EASEA,eAEGC,GAXL,EAUElgJ,MAVF,QAaIgG,EAAQ,CAAC,EACTm6I,EAAe,KAIbC,GADa/jG,QAAQ1mD,IACM/P,KAAKqX,MAAM2hJ,SACtCyB,EAAgB1qJ,GAAY4pJ,EAC5Be,EAAgB,CAEpBzxH,GAAG,EAAIwvH,EAAakC,UAAU36J,OAASw6J,EAAYx6J,KAAKqX,MAAM4xB,EAAIwxH,EAAcxxH,EAEhFE,GAAG,EAAIsvH,EAAamC,UAAU56J,OAASw6J,EAAYx6J,KAAKqX,MAAM8xB,EAAIsxH,EAActxH,GAI9EnpC,KAAKqX,MAAMwiJ,aACbU,GAAe,EAAI/B,EAAQqC,oBAAoBH,EAAeL,GAM9Dj6I,GAAQ,EAAIo4I,EAAQsC,oBAAoBJ,EAAeL,GAIzD,IAAMrhJ,GAAY,EAAI2+G,EAAMlnH,SAAS8I,EAAS/J,MAAMwJ,WAAa,GAAIkhJ,GAAnD,OACfC,EAA2Bn6J,KAAKqX,MAAM2hJ,UADvB,IAEfoB,EAA0Bp6J,KAAKqX,MAAM4hJ,SAFtB,IAOlB,OAAoBr2C,EAAM53G,cAAcutJ,EAAe9nJ,QAASwyG,EAAS,CAAC,EAAGq3C,EAAoB,CAC/FxB,QAAS94J,KAAK+6J,YACdtB,OAAQz5J,KAAKy5J,OACbC,OAAQ15J,KAAKg7J,aACEp4C,EAAMq4C,aAAar4C,EAAMs4C,SAASC,KAAK5hJ,GAAW,CACjEP,UAAWA,EACXoH,MAAO,EAAF,KACA7G,EAAS/J,MAAM4Q,OACfA,GAELqnC,UAAW8yG,IAEd,2CAlND,SAAgC1oJ,EAAcK,GAC5C,IACEnC,EACuB8B,EADvB9B,SAGA6pJ,EACuB1nJ,EADvB0nJ,kBAGF,OAAI7pJ,GAAc6pJ,GAAqB7pJ,EAASk5B,IAAM2wH,EAAkB3wH,GAAKl5B,EAASo5B,IAAMywH,EAAkBzwH,EAavG,OAZL,EAAIwvH,EAAKloJ,SAAS,yCAA0C,CAC1DV,SAAAA,EACA6pJ,kBAAAA,IAEK,CACL3wH,EAAGl5B,EAASk5B,EACZE,EAAGp5B,EAASo5B,EACZywH,kBAAmB,EAAF,GACZ7pJ,IAKV,OAzBG6oJ,CAAkBh2C,EAAMwF,WAuN9B1vH,EAAAA,QAAkBkgK,EAClBt9C,EAAgBs9C,EAAW,cAAe,aAC1Ct9C,EAAgBs9C,EAAW,YAAZ,OAEVL,EAAe9nJ,QAAQgiG,WAFb,IAgBbwnD,KAAM9oC,EAAW1gH,QAAQs4D,MAAM,CAAC,OAAQ,IAAK,IAAK,SA2BlD/jB,OAAQmsE,EAAW1gH,QAAQsqG,UAAU,CAACoW,EAAW1gH,QAAQuqG,MAAM,CAC7D3gG,KAAM82G,EAAW1gH,QAAQhN,OACzB8W,MAAO42G,EAAW1gH,QAAQhN,OAC1B6W,IAAK62G,EAAW1gH,QAAQhN,OACxBgX,OAAQ02G,EAAW1gH,QAAQhN,SACzB0tH,EAAW1gH,QAAQoW,OAAQsqG,EAAW1gH,QAAQs4D,MAAM,EAAC,MACzDmxF,iBAAkB/oC,EAAW1gH,QAAQoW,OACrCszI,yBAA0BhpC,EAAW1gH,QAAQoW,OAC7CuzI,wBAAyBjpC,EAAW1gH,QAAQoW,OAkB5C8yI,gBAAiBxoC,EAAW1gH,QAAQuqG,MAAM,CACxC/xE,EAAGkoF,EAAW1gH,QAAQhN,OACtB0lC,EAAGgoF,EAAW1gH,QAAQhN,SAExB42J,eAAgBlpC,EAAW1gH,QAAQuqG,MAAM,CACvC/xE,EAAGkoF,EAAW1gH,QAAQsqG,UAAU,CAACoW,EAAW1gH,QAAQhN,OAAQ0tH,EAAW1gH,QAAQoW,SAC/EsiB,EAAGgoF,EAAW1gH,QAAQsqG,UAAU,CAACoW,EAAW1gH,QAAQhN,OAAQ0tH,EAAW1gH,QAAQoW,WAsBjF9W,SAAUohH,EAAW1gH,QAAQuqG,MAAM,CACjC/xE,EAAGkoF,EAAW1gH,QAAQhN,OACtB0lC,EAAGgoF,EAAW1gH,QAAQhN,SAKxBuV,UAAW0/I,EAAO0C,UAClBh7I,MAAOs4I,EAAO0C,UACd3zG,UAAWixG,EAAO0C,aAEpB9/C,EAAgBs9C,EAAW,eAAZ,OACVL,EAAe9nJ,QAAQ2hG,cADb,IAEb6nD,KAAM,OACNj1G,QAAQ,EACRk1G,iBAAkB,kBAClBC,yBAA0B,2BAC1BC,wBAAyB,0BACzBT,gBAAiB,CACf1wH,EAAG,EACHE,EAAG,GAEL/uB,MAAO,wJCvYTrW,OAAOE,eAAevL,EAAS,aAAc,CAC3CiD,OAAO,IAETjD,EAAAA,aAAkB,EAClB,IAAIkqH,EASJ,SAAiCt+G,EAAKysH,GAAe,IAAKA,GAAezsH,GAAOA,EAAI+rD,WAAc,OAAO/rD,EAAO,GAAY,OAARA,GAA+B,kBAARA,GAAmC,oBAARA,EAAsB,MAAO,CAAEmM,QAASnM,GAAS,IAAI4J,EAAQ8iH,EAAyBD,GAAc,GAAI7iH,GAASA,EAAMwpD,IAAIpzD,GAAQ,OAAO4J,EAAMqO,IAAIjY,GAAQ,IAAI0uD,EAAS,CAAC,EAAOi+D,EAAwBltH,OAAOE,gBAAkBF,OAAOkpB,yBAA0B,IAAK,IAAIzvB,KAAO8G,EAAO,GAAY,YAAR9G,GAAqBuG,OAAO/E,UAAUwP,eAAetN,KAAKoD,EAAK9G,GAAM,CAAE,IAAIgQ,EAAOyjH,EAAwBltH,OAAOkpB,yBAAyB3oB,EAAK9G,GAAO,KAAUgQ,IAASA,EAAK+O,KAAO/O,EAAK8O,KAAQvY,OAAOE,eAAe+uD,EAAQx1D,EAAKgQ,GAAgBwlD,EAAOx1D,GAAO8G,EAAI9G,EAAS,CAAGw1D,EAAOviD,QAAUnM,EAAS4J,GAASA,EAAMoO,IAAIhY,EAAK0uD,GAAW,OAAOA,CAAS,CATxxBk+D,CAAwBt4H,EAAQ,OACxCu4H,EAAaC,EAAuBx4H,EAAQ,OAC5C0hI,EAAYlJ,EAAuBx4H,EAAQ,OAC3C4/J,EAAU5/J,EAAQ,MAClB6/J,EAAe7/J,EAAQ,KACvB8/J,EAAS9/J,EAAQ,MACjB+/J,EAAOvnC,EAAuBx4H,EAAQ,OAC1C,SAASw4H,EAAuB9sH,GAAO,OAAOA,GAAOA,EAAI+rD,WAAa/rD,EAAM,CAAEmM,QAASnM,EAAQ,CAC/F,SAAS0sH,EAAyBD,GAAe,GAAuB,oBAAZn9C,QAAwB,OAAO,KAAM,IAAIo+C,EAAoB,IAAIp+C,QAAeq+C,EAAmB,IAAIr+C,QAAW,OAAQo9C,EAA2B,SAAUD,GAAe,OAAOA,EAAckB,EAAmBD,CAAoB,GAAEjB,EAAe,CAEvT,SAASzV,EAAgBh3G,EAAK9G,EAAK7B,GAA4L,OAAnL6B,EAC5C,SAAwB6S,GAAO,IAAI7S,EACnC,SAAsB27C,EAAOyxC,GAAQ,GAAqB,kBAAVzxC,GAAgC,OAAVA,EAAgB,OAAOA,EAAO,IAAI25E,EAAO35E,EAAMltB,OAAO8mG,aAAc,QAAa11H,IAATy1H,EAAoB,CAAE,IAAIl8F,EAAMk8F,EAAK5xH,KAAKi4C,EAAOyxC,GAAQ,WAAY,GAAmB,kBAARh0D,EAAkB,OAAOA,EAAK,MAAM,IAAI92B,UAAU,+CAAkD,CAAC,OAAiB,WAAT8qF,EAAoB56E,OAASsuD,QAAQnlB,EAAS,CADhV65E,CAAa3iH,EAAK,UAAW,MAAsB,kBAAR7S,EAAmBA,EAAMwS,OAAOxS,EAAO,CADzEq1H,CAAer1H,MAAiB8G,EAAOP,OAAOE,eAAeK,EAAK9G,EAAK,CAAE7B,MAAOA,EAAOutB,YAAY,EAAMqyF,cAAc,EAAMC,UAAU,IAAkBl3G,EAAI9G,GAAO7B,EAAgB2I,CAAM,CAM5O,IAAM+2J,EACG,CACLp+I,MAAO,aACPq+I,KAAM,YACNC,KAAM,YAJJF,EAMG,CACLp+I,MAAO,YACPq+I,KAAM,YACNC,KAAM,WAKNC,EAAeH,EAoCbI,EAAAA,SAAAA,qBACJ,aAAc,uBACZ,eAASzyJ,WACTsyG,EAAgB,EAAD,GAAO,YAAY,GAElCA,EAAgB,EAAD,GAAO,QAASogD,KAC/BpgD,EAAgB,EAAD,GAAO,QAASogD,KAC/BpgD,EAAgB,EAAD,GAAO,kBAAmB,MACzCA,EAAgB,EAAD,GAAO,WAAW,GACjCA,EAAgB,EAAD,GAAO,mBAAmB,SAAA9yG,GAKvC,GAHA,EAAKgH,MAAMmsJ,YAAYnzJ,IAGlB,EAAKgH,MAAMosJ,eAAqC,kBAAbpzJ,EAAE0oI,QAAoC,IAAb1oI,EAAE0oI,OAAc,OAAO,EAGxF,IAAM2qB,EAAW,EAAKjE,cACtB,IAAKiE,IAAaA,EAASt5B,gBAAkBs5B,EAASt5B,cAAcjmG,KAClE,MAAM,IAAIzoC,MAAM,6CAElB,IACE0uI,EACEs5B,EADFt5B,cAIF,KAAI,EAAK/yH,MAAMmgB,YAAcnnB,EAAE5C,kBAAkB28H,EAAclV,YAAYyuC,OAAS,EAAKtsJ,MAAMgjD,UAAW,EAAIgmG,EAAQuD,6BAA6BvzJ,EAAE5C,OAAQ,EAAK4J,MAAMgjD,OAAQqpG,IAAa,EAAKrsJ,MAAMxR,SAAU,EAAIw6J,EAAQuD,6BAA6BvzJ,EAAE5C,OAAQ,EAAK4J,MAAMxR,OAAQ69J,IAAxR,CAMe,eAAXrzJ,EAAEvK,MAAuBuK,EAAE8qC,iBAK/B,IAAM0oH,GAAkB,EAAIxD,EAAQyD,oBAAoBzzJ,GACxD,EAAKwzJ,gBAAkBA,EAGvB,IAAMjsJ,GAAW,EAAI0oJ,EAAayD,oBAAoB1zJ,EAAGwzJ,EAAxC,MACjB,GAAgB,MAAZjsJ,EAAJ,CACA,IACEk5B,EAEEl5B,EAFFk5B,EACAE,EACEp5B,EADFo5B,EAIIgzH,GAAY,EAAI1D,EAAa2D,gBAAjB,KAAuCnzH,EAAGE,IAC5D,EAAIwvH,EAAKloJ,SAAS,qCAAsC0rJ,IAGxD,EAAIxD,EAAKloJ,SAAS,UAAW,EAAKjB,MAAMspJ,UAEnB,IADA,EAAKtpJ,MAAMspJ,QAAQtwJ,EAAG2zJ,KACI,IAAjB,EAAKE,UAI/B,EAAK7sJ,MAAM8sJ,uBAAsB,EAAI9D,EAAQ+D,qBAAqBh6B,GAKtE,EAAKy2B,UAAW,EAChB,EAAKwD,MAAQvzH,EACb,EAAKwzH,MAAQtzH,GAKb,EAAIqvH,EAAQp6I,UAAUmkH,EAAei5B,EAAaF,KAAM,EAAKoB,aAC7D,EAAIlE,EAAQp6I,UAAUmkH,EAAei5B,EAAaD,KAAM,EAAKoB,gBA9BjC,CAd3B,CA6CF,IACDrhD,EAAgB,EAAD,GAAO,cAAc,SAAA9yG,GAElC,IAAMuH,GAAW,EAAI0oJ,EAAayD,oBAAoB1zJ,EAAG,EAAKwzJ,gBAA7C,MACjB,GAAgB,MAAZjsJ,EAAJ,CACA,IACEk5B,EAEEl5B,EAFFk5B,EACAE,EACEp5B,EADFo5B,EAIF,GAAIvmC,MAAMkD,QAAQ,EAAK0J,MAAMotJ,MAAO,CAClC,IAAIroB,EAAStrG,EAAI,EAAKuzH,MACpB/nB,EAAStrG,EAAI,EAAKszH,MAFc,GAGf,EAAIhE,EAAaoE,YAAY,EAAKrtJ,MAAMotJ,KAAMroB,EAAQE,GAHvC,SAIlC,GADCF,EAHiC,KAGzBE,EAHyB,MAI7BF,IAAWE,EAAQ,OACxBxrG,EAAI,EAAKuzH,MAAQjoB,EAAQprG,EAAI,EAAKszH,MAAQhoB,CAC3C,CACD,IAAM0nB,GAAY,EAAI1D,EAAa2D,gBAAjB,KAAuCnzH,EAAGE,GAK5D,IAJA,EAAIwvH,EAAKloJ,SAAS,gCAAiC0rJ,IAI9B,IADA,EAAK3sJ,MAAMiqJ,OAAOjxJ,EAAG2zJ,KACK,IAAjB,EAAKE,QAcnC,EAAKG,MAAQvzH,EACb,EAAKwzH,MAAQtzH,OAdX,IAEE,EAAKwzH,eAAe,IAAIG,WAAW,WAQpC,CAPC,MAAOlhK,GAEP,IAAMijB,EAAU1U,SAASy/C,YAAY,eAGrC/qC,EAAMk+I,eAAe,WAAW,GAAM,EAAMpxJ,OAAQ,EAAG,EAAG,EAAG,EAAG,GAAG,GAAO,GAAO,GAAO,EAAO,EAAG,MAClG,EAAKgxJ,eAAe99I,EACrB,CA9ByB,CAmC7B,IACDy8F,EAAgB,EAAD,GAAO,kBAAkB,SAAA9yG,GACtC,GAAK,EAAKwwJ,SAAV,CACA,IAAMjpJ,GAAW,EAAI0oJ,EAAayD,oBAAoB1zJ,EAAG,EAAKwzJ,gBAA7C,MACjB,GAAgB,MAAZjsJ,EAAJ,CACA,IACEk5B,EAEEl5B,EAFFk5B,EACAE,EACEp5B,EADFo5B,EAIF,GAAIvmC,MAAMkD,QAAQ,EAAK0J,MAAMotJ,MAAO,CAClC,IAAIroB,EAAStrG,EAAI,EAAKuzH,OAAS,EAC3B/nB,EAAStrG,EAAI,EAAKszH,OAAS,EAFG,GAGf,EAAIhE,EAAaoE,YAAY,EAAKrtJ,MAAMotJ,KAAMroB,EAAQE,GAHvC,SAGjCF,EAHiC,KAGzBE,EAHyB,KAIlCxrG,EAAI,EAAKuzH,MAAQjoB,EAAQprG,EAAI,EAAKszH,MAAQhoB,CAC3C,CACD,IAAM0nB,GAAY,EAAI1D,EAAa2D,gBAAjB,KAAuCnzH,EAAGE,GAI5D,IAAuB,IADA,EAAK35B,MAAMkqJ,OAAOlxJ,EAAG2zJ,KACK,IAAjB,EAAKE,QAAmB,OAAO,EAC/D,IAAMR,EAAW,EAAKjE,cAClBiE,GAEE,EAAKrsJ,MAAM8sJ,uBAAsB,EAAI9D,EAAQwE,wBAAwBnB,EAASt5B,gBAEpF,EAAIo2B,EAAKloJ,SAAS,oCAAqC0rJ,GAGvD,EAAKnD,UAAW,EAChB,EAAKwD,MAAQd,IACb,EAAKe,MAAQf,IACTG,KAEF,EAAIlD,EAAKloJ,SAAS,qCAClB,EAAI+nJ,EAAQn6I,aAAaw9I,EAASt5B,cAAei5B,EAAaF,KAAM,EAAKoB,aACzE,EAAIlE,EAAQn6I,aAAaw9I,EAASt5B,cAAei5B,EAAaD,KAAM,EAAKoB,gBAjC/C,CAFF,CAqC3B,IACDrhD,EAAgB,EAAD,GAAO,eAAe,SAAA9yG,GAGnC,OAFAgzJ,EAAeH,EAER,EAAK4B,gBAAgBz0J,EAC7B,IACD8yG,EAAgB,EAAD,GAAO,aAAa,SAAA9yG,GAEjC,OADAgzJ,EAAeH,EACR,EAAKsB,eAAen0J,EAC5B,IAED8yG,EAAgB,EAAD,GAAO,gBAAgB,SAAA9yG,GAGpC,OADAgzJ,EAAeH,EACR,EAAK4B,gBAAgBz0J,EAC7B,IACD8yG,EAAgB,EAAD,GAAO,cAAc,SAAA9yG,GAGlC,OADAgzJ,EAAeH,EACR,EAAKsB,eAAen0J,EAC5B,IA1KW,CA2Kb,4CACD,WACExI,KAAKq8J,SAAU,EAGf,IAAMR,EAAW77J,KAAK43J,cAClBiE,IACF,EAAIrD,EAAQp6I,UAAUy9I,EAAUR,EAAgBp+I,MAAOjd,KAAKk9J,aAAc,CACxE13G,SAAS,GAGd,qCACD,WACExlD,KAAKq8J,SAAU,EAGf,IAAMR,EAAW77J,KAAK43J,cACtB,GAAIiE,EAAU,CACZ,IACEt5B,EACEs5B,EADFt5B,eAEF,EAAIi2B,EAAQn6I,aAAakkH,EAAe84B,EAAgBC,KAAMt7J,KAAK08J,aACnE,EAAIlE,EAAQn6I,aAAakkH,EAAe84B,EAAgBC,KAAMt7J,KAAK08J,aACnE,EAAIlE,EAAQn6I,aAAakkH,EAAe84B,EAAgBE,KAAMv7J,KAAK28J,iBACnE,EAAInE,EAAQn6I,aAAakkH,EAAe84B,EAAgBE,KAAMv7J,KAAK28J,iBACnE,EAAInE,EAAQn6I,aAAaw9I,EAAUR,EAAgBp+I,MAAOjd,KAAKk9J,aAAc,CAC3E13G,SAAS,IAEPxlD,KAAKwP,MAAM8sJ,uBAAsB,EAAI9D,EAAQwE,wBAAwBz6B,EAC1E,CACF,4BAID,WACE,IAAIza,EAAa0G,EACjB,OAAsC,QAA9B1G,EAAc9nH,KAAKwP,aAAmC,IAAhBs4G,GAA0BA,EAAYkyC,QAA0C,QAA/BxrC,EAAexuH,KAAKwP,aAAoC,IAAjBg/G,GAAqE,QAAzCA,EAAeA,EAAawrC,eAAsC,IAAjBxrC,OAA0B,EAASA,EAAap/F,QAAUkrG,EAAU7pH,QAAQmnJ,YAAY53J,KAC5S,uBACD,WAGE,OAAoB4iH,EAAMq4C,aAAar4C,EAAMs4C,SAASC,KAAKn7J,KAAKwP,MAAM+J,UAAW,CAG/EoiJ,YAAa37J,KAAK27J,YAClBwB,UAAWn9J,KAAKm9J,UAIhBC,WAAYp9J,KAAKo9J,YAEpB,OA/NG3B,CAAsB74C,EAAMwF,WAiOlC1vH,EAAAA,QAAkB+iK,EAClBngD,EAAgBmgD,EAAe,cAAe,iBAC9CngD,EAAgBmgD,EAAe,YAAa,CAO1CG,cAAezqC,EAAW1gH,QAAQiqG,KAClCnhG,SAAU43G,EAAW1gH,QAAQgI,KAAKkhG,WAKlChqF,SAAUwhG,EAAW1gH,QAAQiqG,KAM7B4hD,qBAAsBnrC,EAAW1gH,QAAQiqG,KAKzCx5F,aAAc,SAAU1R,EAAgCoqG,GACtD,GAAIpqG,EAAMoqG,IAA0C,IAA7BpqG,EAAMoqG,GAAUjoC,SACrC,MAAM,IAAI99E,MAAM,+CAEnB,EAID+oK,KAAMzrC,EAAW1gH,QAAQkqG,QAAQwW,EAAW1gH,QAAQhN,QAqBpD+uD,OAAQ2+D,EAAW1gH,QAAQoW,OAqB3B7oB,OAAQmzH,EAAW1gH,QAAQoW,OAkB3BmzI,QAAS7oC,EAAW1gH,QAAQ8X,OAK5BuwI,QAAS3nC,EAAW1gH,QAAQi0C,KAK5B+0G,OAAQtoC,EAAW1gH,QAAQi0C,KAK3Bg1G,OAAQvoC,EAAW1gH,QAAQi0C,KAK3Bi3G,YAAaxqC,EAAW1gH,QAAQi0C,KAIhCtqC,MAAO+2G,EAAW1gH,QAAQhN,OAI1BuV,UAAW0/I,EAAO0C,UAClBh7I,MAAOs4I,EAAO0C,UACd3zG,UAAWixG,EAAO0C,YAEpB9/C,EAAgBmgD,EAAe,eAAgB,CAC7CG,eAAe,EAEfjsI,UAAU,EACV2sI,sBAAsB,EACtBxD,QAAS,WAAc,EACvBW,OAAQ,WAAc,EACtBC,OAAQ,WAAc,EACtBiC,YAAa,WAAc,EAC3BvhJ,MAAO,uCC9aT,MAGIxhB,EAAQ,IAFDggK,EADX,EACEnoJ,QACAgrJ,EAFF,EAEEA,cAMFhjK,EAAOC,QAAUkgK,EACjBngK,EAAOC,QAAPD,QAAyBmgK,EACzBngK,EAAOC,QAAQ+iK,cAAgBA,6ECV/B13J,OAAOE,eAAevL,EAAS,aAAc,CAC3CiD,OAAO,IAETjD,EAAQ2kK,aAAeA,EACvB3kK,EAAQ0lB,SAkDR,SAAkBpR,EAAgB6R,EAAoBkkB,EAAwBu6H,GAC5E,IAAKtwJ,EAAI,OACT,IAAMtI,EAAU,EAAH,CACXm1I,SAAS,GACNyjB,GAGDtwJ,EAAGnP,iBACLmP,EAAGnP,iBAAiBghB,EAAOkkB,EAASr+B,GAC3BsI,EAAGk5E,YACZl5E,EAAGk5E,YAAY,KAAOrnE,EAAOkkB,GAG7B/1B,EAAG,KAAO6R,GAASkkB,CAEtB,EAhEDrqC,EAAQ6jK,oBAsKR,SAA6BgB,GAC3B,IAAKA,EAAK,OACV,IAAIC,EAAUD,EAAIjuD,eAAe,4BAC5BkuD,KACHA,EAAUD,EAAIvyJ,cAAc,UACpB/M,KAAO,WACfu/J,EAAQ54J,GAAK,2BACb44J,EAAQlzH,UAAY,6EACpBkzH,EAAQlzH,WAAa,wEACrBizH,EAAIj3E,qBAAqB,QAAQ,GAAGltE,YAAYokJ,IAE9CD,EAAIjhI,MAAM+gI,EAAaE,EAAIjhI,KAAM,wCACtC,EAjLD5jC,EAAQoiK,mBAiIR,SAA4B2C,EAAkCpD,GAC5D,IAAMqD,EAAcC,EAAeF,EAAYpD,EAAgB,MAC/D,OAAO,EAAP,IACG,EAAIuD,EAAWC,oBAAoB,YAAaD,EAAWntJ,SAAWitJ,EAE1E,EArIDhlK,EAAQmiK,mBAsIR,SAA4B4C,EAAkCpD,GAE5D,OADoBsD,EAAeF,EAAYpD,EAAgB,GAEhE,EAxID3hK,EAAQolK,SAsJR,SAAkBt1J,EAAyBu1J,GACzC,OAAOv1J,EAAE2rI,gBAAiB,EAAIukB,EAAOsF,aAAax1J,EAAE2rI,eAAe,SAAAxjI,GAAC,OAAIotJ,IAAeptJ,EAAEotJ,UAArB,KAAoCv1J,EAAE4rI,iBAAkB,EAAIskB,EAAOsF,aAAax1J,EAAE4rI,gBAAgB,SAAAzjI,GAAC,OAAIotJ,IAAeptJ,EAAEotJ,UAArB,GACxK,EAvJDrlK,EAAQujK,mBAwJR,SAA4BzzJ,GAC1B,GAAIA,EAAE2rI,eAAiB3rI,EAAE2rI,cAAc,GAAI,OAAO3rI,EAAE2rI,cAAc,GAAG4pB,WACrE,GAAIv1J,EAAE4rI,gBAAkB5rI,EAAE4rI,eAAe,GAAI,OAAO5rI,EAAE4rI,eAAe,GAAG2pB,UACzE,EA1JDrlK,EAAQilK,eAAiBA,EACzBjlK,EAAQulK,YA6FR,SAAqBxlJ,GACnB,IAAIiC,EAASjC,EAAKylJ,aACZC,EAAgB1lJ,EAAK8pH,cAAclV,YAAY7qG,iBAAiB/J,GAGtE,OAFAiC,IAAU,EAAIg+I,EAAOxwI,KAAKi2I,EAAcz9I,YACxChG,IAAU,EAAIg+I,EAAOxwI,KAAKi2I,EAAcC,cAEzC,EAlGD1lK,EAAQgxD,WAmGR,SAAoBjxC,GAClB,IAAI+B,EAAQ/B,EAAK4lJ,YACXF,EAAgB1lJ,EAAK8pH,cAAclV,YAAY7qG,iBAAiB/J,GAGtE,OAFA+B,IAAS,EAAIk+I,EAAOxwI,KAAKi2I,EAAcG,aACvC9jJ,IAAS,EAAIk+I,EAAOxwI,KAAKi2I,EAAcI,aAExC,EAxGD7lK,EAAQ8lK,gBAAkBA,EAC1B9lK,EAAQqjK,4BA8BR,SAAqC/uJ,EAAew/C,EAAuBiyG,GACzE,IAAIhmJ,EAAOzL,EACX,EAAG,CACD,GAAIwxJ,EAAgB/lJ,EAAM+zC,GAAW,OAAO,EAC5C,GAAI/zC,IAASgmJ,EAAU,OAAO,EAE9BhmJ,EAAOA,EAAKmB,UACb,OAAQnB,GACT,OAAO,CACR,EAtCD/f,EAAQgmK,mBA2GR,SAA4B1mG,EAA2B92C,EAAgC9G,GACrF,IACMukJ,EADSz9I,IAAiBA,EAAaqhH,cAAcjmG,KACzB,CAChCjiB,KAAM,EACNC,IAAK,GACH4G,EAAa09I,wBACX31H,GAAK+uB,EAAI04E,QAAUxvH,EAAa02H,WAAa+mB,EAAiBtkJ,MAAQD,EACtE+uB,GAAK6uB,EAAI24E,QAAUzvH,EAAaD,UAAY09I,EAAiBrkJ,KAAOF,EAC1E,MAAO,CACL6uB,EAAAA,EACAE,EAAAA,EAEH,EAtHDzwC,EAAQmmK,YAsER,SAAqBpmJ,GAGnB,IAAIiC,EAASjC,EAAKylJ,aACZC,EAAgB1lJ,EAAK8pH,cAAclV,YAAY7qG,iBAAiB/J,GAGtE,OAFAiC,IAAU,EAAIg+I,EAAOxwI,KAAKi2I,EAAcW,gBACxCpkJ,IAAU,EAAIg+I,EAAOxwI,KAAKi2I,EAAcY,kBAEzC,EA7EDrmK,EAAQsmK,WA8ER,SAAoBvmJ,GAGlB,IAAI+B,EAAQ/B,EAAK4lJ,YACXF,EAAgB1lJ,EAAK8pH,cAAclV,YAAY7qG,iBAAiB/J,GAGtE,OAFA+B,IAAS,EAAIk+I,EAAOxwI,KAAKi2I,EAAcc,iBACvCzkJ,IAAS,EAAIk+I,EAAOxwI,KAAKi2I,EAAce,iBAExC,EArFDxmK,EAAQymK,gBAAkBA,EAC1BzmK,EAAQ2lB,YAmDR,SAAqBrR,EAAgB6R,EAAoBkkB,EAAwBu6H,GAC/E,IAAKtwJ,EAAI,OACT,IAAMtI,EAAU,EAAH,CACXm1I,SAAS,GACNyjB,GAGDtwJ,EAAG3S,oBACL2S,EAAG3S,oBAAoBwkB,EAAOkkB,EAASr+B,GAC9BsI,EAAGw4E,YACZx4E,EAAGw4E,YAAY,KAAO3mE,EAAOkkB,GAG7B/1B,EAAG,KAAO6R,GAAS,IAEtB,EAjEDnmB,EAAQskK,uBAoKR,SAAgCO,GAC9B,IAAKA,EAAK,OACV,IAGE,GAFIA,EAAIjhI,MAAM6iI,EAAgB5B,EAAIjhI,KAAM,yCAEpCihI,EAAIllC,UAENklC,EAAIllC,UAAU+mC,YACT,CAGL,IAAM/mC,GAAaklC,EAAIlwC,aAAe1hH,QAAQ6sH,eAC1CH,GAAgC,UAAnBA,EAAUp6H,MACzBo6H,EAAUof,iBAEb,CAGF,CAFC,MAAOjvI,GAER,CACF,EAtLD,IAAIkwJ,EAAS9/J,EAAQ,MACjBglK,EAEJ,SAAiCt5J,EAAKysH,GAAe,IAAKA,GAAezsH,GAAOA,EAAI+rD,WAAc,OAAO/rD,EAAO,GAAY,OAARA,GAA+B,kBAARA,GAAmC,oBAARA,EAAsB,MAAO,CAAEmM,QAASnM,GAAS,IAAI4J,EAAQ8iH,EAAyBD,GAAc,GAAI7iH,GAASA,EAAMwpD,IAAIpzD,GAAQ,OAAO4J,EAAMqO,IAAIjY,GAAQ,IAAI0uD,EAAS,CAAC,EAAOi+D,EAAwBltH,OAAOE,gBAAkBF,OAAOkpB,yBAA0B,IAAK,IAAIzvB,KAAO8G,EAAO,GAAY,YAAR9G,GAAqBuG,OAAO/E,UAAUwP,eAAetN,KAAKoD,EAAK9G,GAAM,CAAE,IAAIgQ,EAAOyjH,EAAwBltH,OAAOkpB,yBAAyB3oB,EAAK9G,GAAO,KAAUgQ,IAASA,EAAK+O,KAAO/O,EAAK8O,KAAQvY,OAAOE,eAAe+uD,EAAQx1D,EAAKgQ,GAAgBwlD,EAAOx1D,GAAO8G,EAAI9G,EAAS,CAAGw1D,EAAOviD,QAAUnM,EAAS4J,GAASA,EAAMoO,IAAIhY,EAAK0uD,GAAW,OAAOA,CAAS,CAFnxBk+D,CAAwBt4H,EAAQ,OACjD,SAASo4H,EAAyBD,GAAe,GAAuB,oBAAZn9C,QAAwB,OAAO,KAAM,IAAIo+C,EAAoB,IAAIp+C,QAAeq+C,EAAmB,IAAIr+C,QAAW,OAAQo9C,EAA2B,SAAUD,GAAe,OAAOA,EAAckB,EAAmBD,CAAoB,GAAEjB,EAAe,CAGvT,IAAIsuC,EAAsB,GAC1B,SAASb,EAAgBxxJ,EAAew/C,GAUtC,OATK6yG,IACHA,GAAsB,EAAI3G,EAAOsF,aAAa,CAAC,UAAW,wBAAyB,qBAAsB,oBAAqB,qBAAqB,SAAUliK,GAE3J,OAAO,EAAI48J,EAAOnqJ,YAAYvB,EAAGlR,GAClC,QAKE,EAAI48J,EAAOnqJ,YAAYvB,EAAGqyJ,KAGxBryJ,EAAGqyJ,GAAqB7yG,EAChC,CAwGD,SAASmxG,EAAe9rJ,EAAcwoJ,EAAoDiF,GACxF,IACEr2H,EAEwBp3B,EAFxBo3B,EACAE,EACwBt3B,EADxBs3B,EAEEu0H,EAAc,aAAa5pK,OAAOm1C,GAAGn1C,OAAOwrK,EAAY,KAAKxrK,OAAOq1C,GAAGr1C,OAAOwrK,EAAY,KAC9F,GAAIjF,EAAgB,CAClB,IAAMkF,EAAW,GAAGzrK,OAAmC,kBAArBumK,EAAepxH,EAAiBoxH,EAAepxH,EAAIoxH,EAAepxH,EAAIq2H,GAClGE,EAAW,GAAG1rK,OAAmC,kBAArBumK,EAAelxH,EAAiBkxH,EAAelxH,EAAIkxH,EAAelxH,EAAIm2H,GACxG5B,EAAc,aAAa5pK,OAAOyrK,EAAU,MAAMzrK,OAAO0rK,EAAU,KAAO9B,CAC3E,CACD,OAAOA,CACR,CA+CD,SAASL,EAAarwJ,EAAsBgM,GACtChM,EAAGgjC,UACLhjC,EAAGgjC,UAAUvxB,IAAIzF,GAEZhM,EAAGgM,UAAU5O,MAAM,IAAIC,OAAO,YAAYvW,OAAOklB,EAAW,eAC/DhM,EAAGgM,WAAa,IAAIllB,OAAOklB,GAGhC,CACD,SAASmmJ,EAAgBnyJ,EAAsBgM,GACzChM,EAAGgjC,UACLhjC,EAAGgjC,UAAUzlC,OAAOyO,GAEpBhM,EAAGgM,UAAYhM,EAAGgM,UAAU9P,QAAQ,IAAImB,OAAO,YAAYvW,OAAOklB,EAAW,WAAY,KAAM,GAElG,mCC3NDjV,OAAOE,eAAevL,EAAS,aAAc,CAC3CiD,OAAO,IAETjD,EAAQmlK,mBAAqBA,EAC7BnlK,EAAQ+mK,qBAwBR,SAA8Bz5J,EAAmB2xD,GAC/C,OAAOA,EAAS,IAAI7jE,OAAO6jE,EAAOl6D,cAAe,KAAK3J,OAAOkS,GAAQA,CACtE,EAzBDtN,EAAAA,aAAkB,EAClBA,EAAQgnK,UAAYA,EACpB,IAAMC,EAAW,CAAC,MAAO,SAAU,IAAK,MACxC,SAASD,IACP,IAAIE,EACA55J,EAAoBgD,UAAU3U,OAAS,QAAsBgJ,IAAjB2L,UAAU,GAAmBA,UAAU,GAAK,YAG5F,GAAsB,qBAAX2C,OAAwB,MAAO,GAI1C,IAAMyU,EAAiD,QAAxCw/I,EAAmBj0J,OAAOxB,gBAA2C,IAArBy1J,GAAyF,QAAzDA,EAAmBA,EAAiBr9G,uBAAkD,IAArBq9G,OAA8B,EAASA,EAAiBx/I,MACxN,IAAKA,EAAO,MAAO,GACnB,GAAIpa,KAAQoa,EAAO,MAAO,GAC1B,IAAK,IAAI/f,EAAI,EAAGA,EAAIs/J,EAAStrK,OAAQgM,IACnC,GAAIw9J,EAAmB73J,EAAM25J,EAASt/J,MAAO+f,EAAO,OAAOu/I,EAASt/J,GAEtE,MAAO,EACR,CACD,SAASw9J,EAAmB73J,EAAmB2xD,GAC7C,OAAOA,EAAS,GAAG7jE,OAAO6jE,GAAQ7jE,OAKpC,SAA0Bsa,GAGxB,IAFA,IAAI07D,EAAM,GACN+1F,GAAmB,EACdx/J,EAAI,EAAGA,EAAI+N,EAAI/Z,OAAQgM,IAC1Bw/J,GACF/1F,GAAO17D,EAAI/N,GAAGtE,cACd8jK,GAAmB,GACC,MAAXzxJ,EAAI/N,GACbw/J,GAAmB,EAEnB/1F,GAAO17D,EAAI/N,GAGf,OAAOypE,CACR,CAnB0Cg2F,CAAiB95J,IAASA,CACpE,CAuBctN,EAAAA,QAAmBgnK,qCClDlC37J,OAAOE,eAAevL,EAAS,aAAc,CAC3CiD,OAAO,IAETjD,EAAAA,QAEA,WACM2E,CACL,oCCPD0G,OAAOE,eAAevL,EAAS,aAAc,CAC3CiD,OAAO,IAETjD,EAAQiiK,SA8DR,SAAkBH,GAChB,MAAgC,SAAzBA,EAAUhrJ,MAAMyqJ,MAA4C,MAAzBO,EAAUhrJ,MAAMyqJ,IAC3D,EA/DDvhK,EAAQkiK,SAgER,SAAkBJ,GAChB,MAAgC,SAAzBA,EAAUhrJ,MAAMyqJ,MAA4C,MAAzBO,EAAUhrJ,MAAMyqJ,IAC3D,EAjEDvhK,EAAQ0jK,eA8ER,SAAwB5B,EAA+BvxH,EAAgBE,GACrE,IAAM42H,IAAW,EAAIrH,EAAOsH,OAAOxF,EAAUgC,OACvC/jJ,EAAOm/I,EAAY4C,GACzB,OAAIuF,EAEK,CACLtnJ,KAAAA,EACA87H,OAAQ,EACRE,OAAQ,EACR+nB,MAAOvzH,EACPwzH,MAAOtzH,EACPF,EAAAA,EACAE,EAAAA,GAIK,CACL1wB,KAAAA,EACA87H,OAAQtrG,EAAIuxH,EAAUgC,MACtB/nB,OAAQtrG,EAAIqxH,EAAUiC,MACtBD,MAAOhC,EAAUgC,MACjBC,MAAOjC,EAAUiC,MACjBxzH,EAAAA,EACAE,EAAAA,EAGL,EAvGDzwC,EAAQqgK,oBA0GR,SAA6ByB,EAA2B3B,GACtD,IAAMz+I,EAAQogJ,EAAUhrJ,MAAM4K,MAC9B,MAAO,CACL3B,KAAMogJ,EAASpgJ,KACfwwB,EAAGuxH,EAAUnjJ,MAAM4xB,EAAI4vH,EAAStkB,OAASn6H,EACzC+uB,EAAGqxH,EAAUnjJ,MAAM8xB,EAAI0vH,EAASpkB,OAASr6H,EACzCm6H,OAAQskB,EAAStkB,OAASn6H,EAC1Bq6H,OAAQokB,EAASpkB,OAASr6H,EAC1BoiJ,MAAOhC,EAAUnjJ,MAAM4xB,EACvBwzH,MAAOjC,EAAUnjJ,MAAM8xB,EAE1B,EApHDzwC,EAAQ4gK,iBAQR,SAA0BkB,EAA2BvxH,EAAgBE,GAEnE,IAAKqxH,EAAUhrJ,MAAMw1C,OAAQ,MAAO,CAAC/b,EAAGE,GAGxC,IACE6b,EACEw1G,EAAUhrJ,MADZw1C,OAEFA,EAA2B,kBAAXA,EAAsBA,EAuGxC,SAAqBA,GACnB,MAAO,CACL3qC,KAAM2qC,EAAO3qC,KACbC,IAAK0qC,EAAO1qC,IACZC,MAAOyqC,EAAOzqC,MACdE,OAAQuqC,EAAOvqC,OAElB,CA9GgDwlJ,CAAYj7G,GAC3D,IAAMvsC,EAAOm/I,EAAY4C,GACzB,GAAsB,kBAAXx1G,EAAqB,CAC9B,IAIIk7G,EAHF39B,EACE9pH,EADF8pH,cAEI49B,EAAc59B,EAAclV,YAOlC,MAJE6yC,EADa,WAAXl7G,EACUvsC,EAAKmB,WAEL2oH,EAAcjnF,cAAc0J,cAEfm7G,EAAYnpJ,aACrC,MAAM,IAAInjB,MAAM,oBAAsBmxD,EAAS,gCAEjD,IAAMo7G,EAAgCF,EAChCG,EAAYF,EAAY39I,iBAAiB/J,GACzC6nJ,EAAiBH,EAAY39I,iBAAiB49I,GAEpDp7G,EAAS,CACP3qC,MAAO5B,EAAKoI,YAAa,EAAI63I,EAAOxwI,KAAKo4I,EAAehC,cAAe,EAAI5F,EAAOxwI,KAAKm4I,EAAUz/I,YACjGtG,KAAM7B,EAAKqI,WAAY,EAAI43I,EAAOxwI,KAAKo4I,EAAe5/I,aAAc,EAAIg4I,EAAOxwI,KAAKm4I,EAAU1/I,WAC9FpG,OAAO,EAAIi+I,EAAQ9uG,YAAY02G,IAAe,EAAI5H,EAAQwG,YAAYvmJ,GAAQA,EAAKoI,YAAa,EAAI63I,EAAOxwI,KAAKo4I,EAAe/B,eAAgB,EAAI7F,EAAOxwI,KAAKm4I,EAAUllJ,aACzKV,QAAQ,EAAI+9I,EAAQyF,aAAamC,IAAe,EAAI5H,EAAQqG,aAAapmJ,GAAQA,EAAKqI,WAAY,EAAI43I,EAAOxwI,KAAKo4I,EAAelC,gBAAiB,EAAI1F,EAAOxwI,KAAKm4I,EAAUnlJ,cAE/K,EAGG,EAAIw9I,EAAOsH,OAAOh7G,EAAOzqC,SAAQ0uB,EAAIxiC,KAAKuyB,IAAIiQ,EAAG+b,EAAOzqC,SACxD,EAAIm+I,EAAOsH,OAAOh7G,EAAOvqC,UAAS0uB,EAAI1iC,KAAKuyB,IAAImQ,EAAG6b,EAAOvqC,UAGzD,EAAIi+I,EAAOsH,OAAOh7G,EAAO3qC,QAAO4uB,EAAIxiC,KAAKwyB,IAAIgQ,EAAG+b,EAAO3qC,QACvD,EAAIq+I,EAAOsH,OAAOh7G,EAAO1qC,OAAM6uB,EAAI1iC,KAAKwyB,IAAIkQ,EAAG6b,EAAO1qC,MAC1D,MAAO,CAAC2uB,EAAGE,EACZ,EAnDDzwC,EAAQwjK,mBAiER,SAA4B1zJ,EAAyBwzJ,EAA+BuE,GAClF,IAAMC,EAAsC,kBAApBxE,GAA+B,EAAIxD,EAAQsF,UAAUt1J,EAAGwzJ,GAAmB,KACnG,GAA+B,kBAApBA,IAAiCwE,EAAU,OAAO,KAC7D,IAAM/nJ,EAAOm/I,EAAY2I,GAEnBr/I,EAAeq/I,EAAc/wJ,MAAM0R,cAAgBzI,EAAKyI,cAAgBzI,EAAK8pH,cAAcjmG,KACjG,OAAO,EAAIk8H,EAAQkG,oBAAoB8B,GAAYh4J,EAAG0Y,EAAcq/I,EAAc/wJ,MAAM4K,MACzF,EAvED1hB,EAAQmkK,WAmDR,SAAoBD,EAA6B6D,EAAuBC,GACtE,IAAMz3H,EAAIxiC,KAAK4kC,MAAMo1H,EAAW7D,EAAK,IAAMA,EAAK,GAC1CzzH,EAAI1iC,KAAK4kC,MAAMq1H,EAAW9D,EAAK,IAAMA,EAAK,GAChD,MAAO,CAAC3zH,EAAGE,EACZ,EAtDD,IAAIuvH,EAAS9/J,EAAQ,MACjB4/J,EAAU5/J,EAAQ,MA2HtB,SAASg/J,EAAY4C,GACnB,IAAM/hJ,EAAO+hJ,EAAU5C,cACvB,IAAKn/I,EACH,MAAM,IAAI5kB,MAAM,4CAGlB,OAAO4kB,CACR,mCC7ID1U,OAAOE,eAAevL,EAAS,aAAc,CAC3CiD,OAAO,IAETjD,EAAQ0iK,UAqBR,SAAmB5rJ,EAAoBoqG,EAAuBC,GAC5D,GAAIrqG,EAAMoqG,GACR,OAAO,IAAI/lH,MAAM,gBAAgBC,OAAO8lH,EAAU,eAAe9lH,OAAO+lH,EAAe,4CAE1F,EAxBDnhH,EAAQslK,YAKR,SAAqB/1I,EAAoC7b,GACvD,IAAK,IAAI/L,EAAI,EAAGhM,EAAS4zB,EAAM5zB,OAAQgM,EAAIhM,EAAQgM,IACjD,GAAI+L,EAASvJ,MAAMuJ,EAAU,CAAC6b,EAAM5nB,GAAIA,EAAG4nB,IAAS,OAAOA,EAAM5nB,EAEpE,EARD3H,EAAQwvB,IAgBR,SAAahZ,GACX,OAAOvb,SAASub,EAAG,GACpB,EAjBDxW,EAAQ6V,WAQR,SAAoBm2C,GAElB,MAAuB,oBAATA,GAAgE,sBAAzC3gD,OAAO/E,UAAUgI,SAAS9F,KAAKwjD,EACrE,EAVDhsD,EAAQsnK,MAWR,SAAehoK,GACb,MAAsB,kBAARA,IAAqBpE,MAAMoE,EAC1C,kBCpBD,IAAI2oK,EAAoC,qBAAZrqG,QACxBsqG,EAAwB,oBAARltF,IAChBmtF,EAAwB,oBAARltF,IAChBmtF,EAAwC,oBAAhBjyJ,eAAgCA,YAAYC,OAIxE,SAASiC,EAAM7B,EAAGC,GAEhB,GAAID,IAAMC,EAAG,OAAO,EAEpB,GAAID,GAAKC,GAAiB,iBAALD,GAA6B,iBAALC,EAAe,CAC1D,GAAID,EAAEP,cAAgBQ,EAAER,YAAa,OAAO,EAE5C,IAAIta,EAAQgM,EAAGgG,EA6BXooE,EA5BJ,GAAI7rE,MAAMkD,QAAQoJ,GAAI,CAEpB,IADA7a,EAAS6a,EAAE7a,SACG8a,EAAE9a,OAAQ,OAAO,EAC/B,IAAKgM,EAAIhM,EAAgB,IAARgM,KACf,IAAK0Q,EAAM7B,EAAE7O,GAAI8O,EAAE9O,IAAK,OAAO,EACjC,OAAO,CACR,CAuBD,GAAIugK,GAAW1xJ,aAAawkE,KAASvkE,aAAaukE,IAAM,CACtD,GAAIxkE,EAAEwE,OAASvE,EAAEuE,KAAM,OAAO,EAE9B,IADA+6D,EAAKv/D,EAAEkwC,YACE/+C,EAAIouE,EAAG1jD,QAAQ9wB,MACtB,IAAKkV,EAAEuoD,IAAIr3D,EAAE1E,MAAM,IAAK,OAAO,EAEjC,IADA8yE,EAAKv/D,EAAEkwC,YACE/+C,EAAIouE,EAAG1jD,QAAQ9wB,MACtB,IAAK8W,EAAM1Q,EAAE1E,MAAM,GAAIwT,EAAEoN,IAAIlc,EAAE1E,MAAM,KAAM,OAAO,EACpD,OAAO,CACR,CAED,GAAIklK,GAAW3xJ,aAAaykE,KAASxkE,aAAawkE,IAAM,CACtD,GAAIzkE,EAAEwE,OAASvE,EAAEuE,KAAM,OAAO,EAE9B,IADA+6D,EAAKv/D,EAAEkwC,YACE/+C,EAAIouE,EAAG1jD,QAAQ9wB,MACtB,IAAKkV,EAAEuoD,IAAIr3D,EAAE1E,MAAM,IAAK,OAAO,EACjC,OAAO,CACR,CAGD,GAAImlK,GAAkBjyJ,YAAYC,OAAOI,IAAML,YAAYC,OAAOK,GAAI,CAEpE,IADA9a,EAAS6a,EAAE7a,SACG8a,EAAE9a,OAAQ,OAAO,EAC/B,IAAKgM,EAAIhM,EAAgB,IAARgM,KACf,GAAI6O,EAAE7O,KAAO8O,EAAE9O,GAAI,OAAO,EAC5B,OAAO,CACR,CAED,GAAI6O,EAAEP,cAAgBtE,OAAQ,OAAO6E,EAAElO,SAAWmO,EAAEnO,QAAUkO,EAAE8B,QAAU7B,EAAE6B,MAC5E,GAAI9B,EAAE+B,UAAYlN,OAAO/E,UAAUiS,QAAS,OAAO/B,EAAE+B,YAAc9B,EAAE8B,UACrE,GAAI/B,EAAElI,WAAajD,OAAO/E,UAAUgI,SAAU,OAAOkI,EAAElI,aAAemI,EAAEnI,WAIxE,IADA3S,GADAgS,EAAOtC,OAAOsC,KAAK6I,IACL7a,UACC0P,OAAOsC,KAAK8I,GAAG9a,OAAQ,OAAO,EAE7C,IAAKgM,EAAIhM,EAAgB,IAARgM,KACf,IAAK0D,OAAO/E,UAAUwP,eAAetN,KAAKiO,EAAG9I,EAAKhG,IAAK,OAAO,EAKhE,GAAIsgK,GAAkBzxJ,aAAaonD,QAAS,OAAO,EAGnD,IAAKj2D,EAAIhM,EAAgB,IAARgM,KACf,IAAiB,WAAZgG,EAAKhG,IAA+B,QAAZgG,EAAKhG,IAA4B,QAAZgG,EAAKhG,KAAiB6O,EAAE+kG,YAarEljG,EAAM7B,EAAE7I,EAAKhG,IAAK8O,EAAE9I,EAAKhG,KAAM,OAAO,EAK7C,OAAO,CACR,CAED,OAAO6O,IAAMA,GAAKC,IAAMA,CACzB,CAGD1W,EAAOC,QAAU,SAAiBwW,EAAGC,GACnC,IACE,OAAO4B,EAAM7B,EAAGC,EAajB,CAZC,MAAOjM,GACP,IAAMA,EAAMzC,SAAW,IAAI2J,MAAM,oBAO/B,OADAuD,QAAQC,KAAK,mDACN,EAGT,MAAM1K,CACP,CACF,qCCtHDxK,EAAQ,GAAgCA,EAAQ,QAAiB2E,EAEjE,IAQgCiH,EAR5By8J,EAAe,WAAc,SAAS/8J,EAAiB4B,EAAQ4J,GAAS,IAAK,IAAInP,EAAI,EAAGA,EAAImP,EAAMnb,OAAQgM,IAAK,CAAE,IAAIyzG,EAAatkG,EAAMnP,GAAIyzG,EAAW5qF,WAAa4qF,EAAW5qF,aAAc,EAAO4qF,EAAWyH,cAAe,EAAU,UAAWzH,IAAYA,EAAW0H,UAAW,GAAMz3G,OAAOE,eAAe2B,EAAQkuG,EAAWt2G,IAAKs2G,EAAc,CAAE,CAAC,OAAO,SAAUgS,EAAauB,EAAYC,GAAiJ,OAA9HD,GAAYrjH,EAAiB8hH,EAAY9mH,UAAWqoH,GAAiBC,GAAatjH,EAAiB8hH,EAAawB,GAAqBxB,CAAc,CAAG,CAA9hB,GAEfgL,EAASl4H,EAAQ,MAEjBooK,GAI4B18J,EAJKwsH,IAIgBxsH,EAAI+rD,WAAa/rD,EAAM,CAAEmM,QAASnM,GAFnF28J,EAAYroK,EAAQ,MAcxBF,EAAQ,GAAiBuoK,EAAU1xG,eACd0xG,EAAU5xG,WAI/B,IAAIF,GAAc,EAAI8xG,EAAU/xG,aAG5BgyG,EAAkB,CAAC,aAAc,KAAM,MAAO,SAAU,WAAY,cAAe,eAAgB,eAAgB,iBAAkB,iBAAkB,WAI5IxoK,EAAQ,GAAW,SAAUyoK,GAG1C,SAASC,EAAS5xJ,IAzBpB,SAAyBzQ,EAAU+mH,GAAe,KAAM/mH,aAAoB+mH,GAAgB,MAAM,IAAIhmH,UAAU,oCAAyC,CA0BrJ+lH,CAAgB7lH,KAAMohK,GAEtB,IAAI55C,EA1BR,SAAoCr2G,EAAMjQ,GAAQ,IAAKiQ,EAAQ,MAAM,IAAI21G,eAAe,6DAAgE,OAAO5lH,GAAyB,kBAATA,GAAqC,oBAATA,EAA8BiQ,EAAPjQ,CAAc,CA0BhO0lH,CAA2B5mH,MAAOohK,EAAS3wG,WAAa1sD,OAAOuK,eAAe8yJ,IAAWlgK,KAAKlB,KAAMwP,IAGhH,OADAg4G,EAAM65C,gBAAiB,EAChB75C,CACR,CA0HD,OAtJF,SAAmBN,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIrnH,UAAU,kEAAoEqnH,GAAeD,EAASloH,UAAY+E,OAAO7E,OAAOioH,GAAcA,EAAWnoH,UAAW,CAAE2P,YAAa,CAAEhT,MAAOurH,EAAUh+F,YAAY,EAAOsyF,UAAU,EAAMD,cAAc,KAAe4L,IAAYpjH,OAAOysD,eAAiBzsD,OAAOysD,eAAe02D,EAAUC,GAAcD,EAASz2D,UAAY02D,EAAa,CAmB5eC,CAAUg6C,EAAUD,GAcpBJ,EAAaK,EAAU,CAAC,CACtB5jK,IAAK,oBACL7B,MAAO,WACL,IAAIggI,EAAS37H,KAOb,GAJAA,KAAKshK,OAASthK,KAAKuhK,SAASjmH,cAAc,sBAC1Ct7C,KAAKwhK,YAAcxhK,KAAKshK,OAAOG,YAG1BtyG,EAAL,CAEA,IAAIzqD,EAAUX,OAAOQ,OAAO,CAAC,EAAGvE,KAAKwP,OAGrC,GAAI9K,EAAQuwB,cAAe,CACzB,IAAI1jB,EAAK7M,EAAQuwB,cACjBvwB,EAAQuwB,cAAgB,SAAU3L,GAChCqyG,EAAO0lC,gBAAiB,EACxB9vJ,EAAG+X,EACJ,CACF,CAGDtpB,KAAK0hK,OAAQ,EAAIT,EAAU/hK,QAAQc,KAAKshK,OAAQ58J,GAGhDX,OAAOsC,KAAKrG,KAAK0hK,OAAO/xJ,QAAO,SAAUnS,GACvC,OAAQ0jK,EAAgB1wJ,SAAShT,EAClC,IAAED,SAAQ,SAAUC,GACnBm+H,EAAOn+H,GAAOm+H,EAAO+lC,MAAMlkK,EAC5B,GArBuB,CAsBzB,GAIA,CACDA,IAAK,uBACL7B,MAAO,WAEL,GAAKqE,KAAK0hK,MAAV,CAKA,IAAIC,EAAMx3J,SAASa,cAAc,OACjC22J,EAAI10J,OAAOjN,KAAK0hK,MAAMxoJ,SACtByoJ,EAAI/8J,GAAK,MAGT5E,KAAK0hK,MAAMvjJ,UACXne,KAAK0hK,WAAQrkK,EAGb2C,KAAKuhK,SAASt0J,OAAOjN,KAAKwhK,YAdH,CAexB,GACA,CACDhkK,IAAK,wBACL7B,MAAO,WACL,QAAKqE,KAAKqhK,iBACRrhK,KAAKqhK,gBAAiB,GACf,EAGV,GAIA,CACD7jK,IAAK,qBACL7B,MAAO,WAEL,GAAKqE,KAAK0hK,MAAV,CAEA,IAAIh9J,EAAUX,OAAOQ,OAAO,CAAC,EAAGvE,KAAKwP,cAG9B9K,EAAQuwB,cAGfj1B,KAAK0hK,MAAMhyI,WAAWhrB,EARC,CASxB,GAIA,CACDlH,IAAK,SACL7B,MAAO,WACL,IAAI4gI,EAASv8H,KAET4hK,EAAS5hK,KAAKwP,MACd5K,EAAKg9J,EAAOh9J,GACZxD,EAAOwgK,EAAOxgK,KACd4X,EAAY4oJ,EAAO5oJ,UACnBkX,EAAgB0xI,EAAO1xI,cACvBN,EAAWgyI,EAAOhyI,SAClBC,EAAgB+xI,EAAO/xI,cACvBxa,EAAoBusJ,EAAOvsJ,kBAE/B,OAAO,EAAIy7G,EAAO9lH,eAAe,MAAO,CACtCgO,UAAW,oBACXrF,IAAK,SAAauF,GAChB,OAAOqjH,EAAOglC,SAAWroJ,CAC1B,IACA,EAAI43G,EAAO9lH,eAAe,QAAS,CACpC/M,KAAM,OACNmD,KAAMA,EACNwD,GAAIA,EACJ+Q,OAAQN,EACRi5I,SAAUp+H,EACVN,SAAUA,EACV5W,UAAWA,EACX6gI,QAAShqH,IAEZ,KAGIuxI,CACR,CArIiC,CAqIhCJ,EAAQvwJ,QAAQ23G,+JCtLlB,SAASvoG,EAAQ3G,GACb,OAAOA,EAAQ0lJ,uBAClB,CACc,SAASiD,EAAsB3oJ,EAASu5B,GACnD,MAAO,CACCqvH,kBACA,OAAOjiJ,EAAQ3G,GAASoB,IAAMuF,EAAQ4yB,GAAWn4B,GACpD,EACGynJ,qBACA,OAAOliJ,EAAQ3G,GAASuB,OAASoF,EAAQ4yB,GAAWh4B,MACvD,EACGunJ,mBACA,OAAOniJ,EAAQ3G,GAASmB,KAAOwF,EAAQ4yB,GAAWp4B,IACrD,EACG4nJ,oBACA,OAAOpiJ,EAAQ3G,GAASqB,MAAQsF,EAAQ4yB,GAAWl4B,KACtD,EACG2nJ,kBACA,OAAOriJ,EAAQ4yB,GAAWn4B,IAAMuF,EAAQ3G,GAASoB,GACpD,EACG6nJ,qBACA,OAAOtiJ,EAAQ3G,GAASuB,OAASoF,EAAQ4yB,GAAWh4B,MACvD,EACG2nJ,mBACA,OAAOviJ,EAAQ4yB,GAAWp4B,KAAOwF,EAAQ3G,GAASmB,IACrD,EACGgoJ,oBACA,OAAOxiJ,EAAQ3G,GAASqB,MAAQsF,EAAQ4yB,GAAWl4B,KACtD,EAER,CCXD,MAlBA,SAAiBm7F,EAAWj1G,GAgB3B,ECjBGiwD,EAAyC,WACzC,IAAIH,EAAgB,SAAUL,EAAG/gD,GAI7B,OAHAohD,EAAgBxsD,OAAOysD,gBAClB,CAAEC,UAAW,cAAgB7tD,OAAS,SAAUstD,EAAG/gD,GAAK+gD,EAAEO,UAAYthD,CAAI,GAC3E,SAAU+gD,EAAG/gD,GAAK,IAAK,IAAIuN,KAAKvN,EAAOpL,OAAO/E,UAAUwP,eAAetN,KAAKiO,EAAGuN,KAAIwzC,EAAExzC,GAAKvN,EAAEuN,GAAK,EAC9F6zC,EAAcL,EAAG/gD,EAC3B,EACD,OAAO,SAAU+gD,EAAG/gD,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIrP,UAAU,uBAAyBkQ,OAAOb,GAAK,iCAE7D,SAASwhD,IAAO3wD,KAAK2O,YAAcuhD,CAAI,CADvCK,EAAcL,EAAG/gD,GAEjB+gD,EAAElxD,UAAkB,OAANmQ,EAAapL,OAAO7E,OAAOiQ,IAAMwhD,EAAG3xD,UAAYmQ,EAAEnQ,UAAW,IAAI2xD,EAClF,CACJ,CAd4C,GAezCC,EAAsC,WAStC,OARAA,EAAW7sD,OAAOQ,QAAU,SAASoM,GACjC,IAAK,IAAI2/C,EAAGjwD,EAAI,EAAGwQ,EAAI7H,UAAU3U,OAAQgM,EAAIwQ,EAAGxQ,IAE5C,IAAK,IAAIqc,KADT4zC,EAAItnD,UAAU3I,GACO0D,OAAO/E,UAAUwP,eAAetN,KAAKovD,EAAG5zC,KACzD/L,EAAE+L,GAAK4zC,EAAE5zC,IAEjB,OAAO/L,CACV,EACMigD,EAAS/tD,MAAM7C,KAAMgJ,UAC/B,EACGs5J,EAAkC,SAAUhyG,EAAG9nD,GAC/C,IAAImI,EAAI,CAAC,EACT,IAAK,IAAI+L,KAAK4zC,EAAOvsD,OAAO/E,UAAUwP,eAAetN,KAAKovD,EAAG5zC,IAAMlU,EAAElM,QAAQogB,GAAK,IAC9E/L,EAAE+L,GAAK4zC,EAAE5zC,IACb,GAAS,MAAL4zC,GAAqD,oBAAjCvsD,OAAOynB,sBACtB,KAAInrB,EAAI,EAAb,IAAgBqc,EAAI3Y,OAAOynB,sBAAsB8kC,GAAIjwD,EAAIqc,EAAEroB,OAAQgM,IAC3DmI,EAAElM,QAAQogB,EAAErc,IAAM,GAAK0D,OAAO/E,UAAU0sB,qBAAqBxqB,KAAKovD,EAAG5zC,EAAErc,MACvEsQ,EAAE+L,EAAErc,IAAMiwD,EAAE5zC,EAAErc,IAFF,CAIxB,OAAOsQ,CACV,EAMGoJ,EAAgC,qBAAb5P,SACnBo4J,EAA6BxoJ,GAAa,QAASpO,QAAU,aAAcA,OAAOqjD,KAAOA,IAAIwzG,SAAS,UAAW,YACjHC,EAA8B1oJ,GAAa,qBAAsBpO,OACrE,SAAS+2J,EAAW77I,GAChB,OAAQA,EAAOnb,OAAO,GAAG3P,cAAgB8qB,EAAO1uB,MAAM,EACzD,CACD,SAASwqK,EAAoBzpJ,GAEzB,IADA,IAAIG,EAASH,EAAQ0pJ,cACdvpJ,GAAQ,CAEX,GADe1N,OAAO6W,iBAAiBnJ,GAAQy/B,SAClC1kD,MAAM,KAAK8qC,OAAM,SAAUzhB,GAAK,MAAa,SAANA,GAAsB,WAANA,CAAiB,IACjF,OAAOpE,EAEXA,EAASA,EAAOupJ,aACnB,CACD,OAAOz4J,SAASo4C,eACnB,CACD,SAASsgH,EAAUj9D,GACf,IAAIq0D,EAAOr0D,EAAGq0D,KAAMxnH,EAAYmzD,EAAGnzD,UAAWv5B,EAAU0sF,EAAG1sF,QAAS4pJ,EAAal9D,EAAGk9D,WAAYC,EAAYn9D,EAAGm9D,UAAWC,EAAkBp9D,EAAGo9D,gBAAiBC,EAAUr9D,EAAGq9D,QACzK7iJ,EAAQzU,OAAO6W,iBAAiBtJ,GAChCG,EAASo5B,EAAUmwH,cACvB,GAAKvpJ,EAAL,CAGA,IAAI6pJ,EAA4BrB,EAAsBxoJ,EAAQ2pJ,GAC1DG,EAAqBtB,EAAsBxoJ,EAAQlP,SAASo4C,iBAC5D6gH,EAAe,MAATnJ,EACNoJ,EAAgBD,EAAM,OAAS,MAC/BE,EAAcF,EAAM,QAAU,SAC9BG,EAAeH,EAAM,QAAU,SAC/BI,EAAwB,WAAW1vK,OAAO4uK,EAAWW,IACrDI,EAAsB,WAAW3vK,OAAO4uK,EAAWY,IACnDI,EAAiB,SAAS5vK,OAAO4uK,EAAWW,IAC5CM,EAAyBjB,EAAWa,GACpCK,EAAqB,SAAS9vK,OAAO6vK,GACrCE,EAAqB,SAAS/vK,OAAO6vK,GACrCG,EAAkB,OAAOhwK,OAAOyvK,GAChCQ,EAAiBf,EAAgBY,GAAsBZ,EAAgBa,GACvEG,EAAkC,kBAAZf,EAAuBA,EAAQI,GAAiBJ,EACtEgB,GAAuBx9J,KAAKwyB,IAAIiqI,EAA0BM,GAAwBL,EAAmBK,GAAyBr5J,SAASo4C,gBAAgBmhH,IAAmBM,EAC1KE,EAAgC,kBAAZjB,EAAuBA,EAAQK,GAAeL,EAClEkB,GAAqB19J,KAAKwyB,IAAIiqI,EAA0BO,GAAsBN,EAAmBM,GAAuBt5J,SAASo4C,gBAAgBmhH,IACjJQ,EACAH,EACAhB,IACAkB,GAAuB5qJ,EAAOwqJ,GAC9BM,GAAqB9qJ,EAAOwqJ,IAEhC,IAAIO,EAAalrJ,EAAQ0qJ,IA0CrBd,EACOuB,KAAwBC,IAGxBA,KAAsBD,MAxBjC,WACI,IAAIE,EAAiBN,EAAsBE,EACvCK,EAAapkJ,EAAMqkJ,iBAAiBX,GACpCY,EAAUF,EAAa7wK,SAAS6wK,EAAY,IAAM,KACtD,SAASG,EAAajxJ,GAClBkxJ,GAASF,GAAWhxJ,GAAQgxJ,EAAS,0DAA0D5wK,OAAOgwK,EAAiB,QAAQhwK,OAAO4wK,EAAS,QAC/I,IAAIG,EAAUp+J,KAAKwyB,IAAIvlB,EAAMgxJ,GAAW,GACxCE,GAAQ,EAAO,sCAAsC9wK,OAAOyvK,EAAc,kBAAkBzvK,OAAO+wK,EAAS,QAC5G3rJ,EAAQkH,MAAMmjJ,GAAgB,GAAGzvK,OAAO+wK,EAAS,KACpD,CACGN,GACAI,EAAaV,GACba,MAGAH,EAAaR,GACbY,IAEP,CASGC,EA1EH,CA0BD,SAASF,IACL5rJ,EAAQkH,MAAMijJ,GAAiB,OAC/BnqJ,EAAQkH,MAAMkjJ,GAAeP,EAAY,IAAM,MAClD,CACD,SAASgC,IACL7rJ,EAAQkH,MAAMijJ,GAAiBN,EAAY,IAAM,OACjD7pJ,EAAQkH,MAAMkjJ,GAAe,MAChC,CACD,SAAS2B,EAAcC,EAAgBrhD,GACnC,IAAIshD,EAAOf,GAAcc,EAIzB,OAHIC,GACAthD,IAEGshD,CACV,CACD,SAASd,IACL,OAAOY,EAAchB,EAAqBa,EAC7C,CACD,SAASR,IACL,OAAOW,EAAcd,EAAmBY,EAC3C,CA8BJ,CAOD,SAASK,EAAcr8J,GACnB,IAAI+5J,EAAa/5J,EAAK+5J,WAAYuC,EAAsBt8J,EAAKs8J,oBAAqBC,EAAahD,EAAOv5J,EAAM,CAAC,aAAc,yBAP/H,SAAuBA,GACnB85J,EAAU95J,EACb,CAMGw8J,CAAc30G,EAASA,EAAS,CAAC,EAAG00G,GAAa,CAAExC,WAAYA,KALnE,SAA4B/5J,GACxB85J,EAAUjyG,EAASA,EAAS,CAAC,EAAG7nD,GAAO,CAAEkxJ,KAAoB,MAAdlxJ,EAAKkxJ,KAAe,IAAM,IAAK8I,WAAW,IAC5F,CAIGyC,CAAmB50G,EAASA,EAAS,CAAC,EAAG00G,GAAa,CAAExC,WAAYuC,IACvE,CACD,IAAII,EAAqB,SAAUl+C,GAE/B,SAASk+C,IACL,IAAIj+C,EAAmB,OAAXD,GAAmBA,EAAO1kH,MAAM7C,KAAMgJ,YAAchJ,KAiDhE,OAhDAwnH,EAAMn2B,IAAM,WACR,IAAIuU,EAAK4hB,EAAOw7C,EAAkBp9D,EAAGo9D,gBAAiBvwH,EAAYmzD,EAAGnzD,UAAWv5B,EAAU0sF,EAAG1sF,QAC7F,GAAK8pJ,GAAoBvwH,GAAcv5B,EAAvC,CAGA,IAAIwsJ,EAAexsJ,EAAQmlJ,YACvBsH,EAAgBzsJ,EAAQglJ,aAE5B,GAAI12C,EAAMk+C,eAAiBA,GAAgBl+C,EAAMm+C,gBAAkBA,EAAnE,CAIAn+C,EAAMk+C,aAAeA,EACrBl+C,EAAMm+C,cAAgBA,EACtB,IAAItsJ,EAASo5B,EAAUmwH,cAEvB,GAAKvpJ,EAAL,CASiB,aAFL1N,OAAO6W,iBAAiBtJ,GACfnJ,WAEjBmJ,EAAQkH,MAAMrQ,SAAW,YAM7B,IACI61J,EADcj6J,OAAO6W,iBAAiBnJ,GACTtJ,SACV,aAAnB61J,GAAoD,aAAnBA,IACjCvsJ,EAAO+G,MAAMrQ,SAAW,YAE5B,IAAIi2F,EAAKwhB,EAAMh4G,MAAOszJ,EAAa98D,EAAG88D,WAAYuC,EAAsBr/D,EAAGq/D,oBAAqBQ,EAAK7/D,EAAG8/D,SAAUA,OAAkB,IAAPD,EAAgB,IAAMA,EAAInzC,EAAK1sB,EAAGi9D,QAC/JmC,EAAc,CACV3yH,UAAWA,EACXv5B,QAASA,EACT4pJ,WAAYA,EACZuC,oBAAqBA,EACrBpL,KAAM6L,EACN9C,gBAAiBA,EACjBC,aARqL,IAAPvwC,EAAgB,EAAIA,GAnBrM,CARA,CANA,CA2CJ,EACMlL,CACV,CAyDD,OA7GA92D,EAAU+0G,EAAKl+C,GAqDfk+C,EAAIzmK,UAAUwkJ,kBAAoB,WAC9B,IAAIh8B,EAAQxnH,KACZ,IAAKuiK,EAA4B,CAE7B,IAAIrpJ,GAAU0+I,EAAAA,EAAAA,aAAY53J,MAC1B,IAAKkZ,KAAaA,aAAmBlC,aACjC,OAEJhX,KAAKyyC,UAAYv5B,EACjBlZ,KAAKkZ,QAAUA,EACflZ,KAAKgjK,gBAAkBL,EAAoBzpJ,EAC9C,CACDlZ,KAAKqxF,MAIDoxE,GAA+BziK,KAAKkZ,SACb,IAAI6sJ,kBAJd,WACbv+C,EAAMn2B,KACT,IAGoB20E,QAAQhmK,KAAKkZ,QAAS,CACnCD,YAAY,EACZgtJ,gBAAiB,CAAC,QAAS,UAGtC,EACDR,EAAIzmK,UAAUo0G,OAAS,WACnB,IAAIoU,EAAQxnH,KACRuZ,EAAWvZ,KAAKwP,MAAM+J,SACtBD,EAAQspG,EAAAA,SAAAA,KAAoBrpG,GAChC,OAAIgpJ,EACQ3/C,EAAAA,cAAoB,OAAQ,CAAEjvG,IAAK,SAAU8+B,GAC7C+0E,EAAM/0E,UAAYA,EAClB,IAAIv5B,EAAUu5B,GAAaA,EAAUyzH,kBAChChtJ,GAAaA,aAAmBlC,cAGrCwwG,EAAMtuG,QAAUA,EAChBsuG,EAAMw7C,gBAAkBL,EAAoBzpJ,GAC/C,EAAEkH,MAAO,CAAEyjG,QAAS,aAAgBvqG,GAEtCA,CACV,EACDmsJ,EAAIhzD,UAAY,CACZl5F,SAAU4hG,IAAAA,KAAAA,WACV2nD,WAAY3nD,IAAAA,KACZkqD,oBAAqBlqD,IAAAA,KACrB2qD,SAAU3qD,IAAAA,MAAgB,CAAC,IAAK,MAChC8nD,QAAS9nD,IAAAA,UAAoB,CACzBA,IAAAA,OACAA,IAAAA,MAAgB,CACZ1gG,OAAQ0gG,IAAAA,OAAAA,WACR9gG,KAAM8gG,IAAAA,OAAAA,WACN5gG,MAAO4gG,IAAAA,OAAAA,WACP7gG,IAAK6gG,IAAAA,OAAAA,gBAIVsqD,CACV,CA/GwB,CA+GvBr9C,EAAAA,WACF,ICvQA,EDuQA,yBErQS,SAAU1vH,EAASytK,GAAS,aAEnC,IAAIC,EAAiB,YAAaD,EAAQA,EAAK,QAAcA,EAE7D,SAASjjD,EAAQ36F,EAAQ46F,GACvB,IAAI98G,EAAOtC,OAAOsC,KAAKkiB,GAEvB,GAAIxkB,OAAOynB,sBAAuB,CAChC,IAAI43F,EAAUr/G,OAAOynB,sBAAsBjD,GAC3C46F,IAAmBC,EAAUA,EAAQzzG,QAAO,SAAU0zG,GACpD,OAAOt/G,OAAOkpB,yBAAyB1E,EAAQ86F,GAAKn6F,UACrD,KAAI7iB,EAAKxF,KAAKgC,MAAMwD,EAAM+8G,EAC5B,CAED,OAAO/8G,CACR,CAED,SAASggK,EAAezgK,GACtB,IAAK,IAAIvF,EAAI,EAAGA,EAAI2I,UAAU3U,OAAQgM,IAAK,CACzC,IAAIW,EAAS,MAAQgI,UAAU3I,GAAK2I,UAAU3I,GAAK,CAAC,EACpDA,EAAI,EAAI6iH,EAAQn/G,OAAO/C,IAAS,GAAIzD,SAAQ,SAAUC,GACpD89G,EAAgB11G,EAAQpI,EAAKwD,EAAOxD,GACrC,IAAIuG,OAAOw/G,0BAA4Bx/G,OAAOC,iBAAiB4B,EAAQ7B,OAAOw/G,0BAA0BviH,IAAWkiH,EAAQn/G,OAAO/C,IAASzD,SAAQ,SAAUC,GAC5JuG,OAAOE,eAAe2B,EAAQpI,EAAKuG,OAAOkpB,yBAAyBjsB,EAAQxD,GAC5E,GACF,CAED,OAAOoI,CACR,CAED,SAAS01G,EAAgBh3G,EAAK9G,EAAK7B,GAYjC,OAXI6B,KAAO8G,EACTP,OAAOE,eAAeK,EAAK9G,EAAK,CAC9B7B,MAAOA,EACPutB,YAAY,EACZqyF,cAAc,EACdC,UAAU,IAGZl3G,EAAI9G,GAAO7B,EAGN2I,CACR,CAED,SAAS8mB,EAA8BpqB,EAAQqqB,GAC7C,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAC5B,IAEIxD,EAAK6C,EAFLuF,EAAS,CAAC,EACV0lB,EAAavnB,OAAOsC,KAAKrF,GAG7B,IAAKX,EAAI,EAAGA,EAAIirB,EAAWj3B,OAAQgM,IACjC7C,EAAM8tB,EAAWjrB,GACbgrB,EAAS/uB,QAAQkB,IAAQ,IAC7BoI,EAAOpI,GAAOwD,EAAOxD,IAGvB,OAAOoI,CACR,CAED,SAAS2lB,EAAyBvqB,EAAQqqB,GACxC,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAE5B,IAEIxD,EAAK6C,EAFLuF,EAASwlB,EAA8BpqB,EAAQqqB,GAInD,GAAItnB,OAAOynB,sBAAuB,CAChC,IAAIC,EAAmB1nB,OAAOynB,sBAAsBxqB,GAEpD,IAAKX,EAAI,EAAGA,EAAIorB,EAAiBp3B,OAAQgM,IACvC7C,EAAMiuB,EAAiBprB,GACnBgrB,EAAS/uB,QAAQkB,IAAQ,GACxBuG,OAAO/E,UAAU0sB,qBAAqBxqB,KAAKF,EAAQxD,KACxDoI,EAAOpI,GAAOwD,EAAOxD,GAExB,CAED,OAAOoI,CACR,CAED,SAASssH,EAAe7lH,EAAKhM,GAC3B,OAAO8xH,EAAgB9lH,IAAQsmH,EAAsBtmH,EAAKhM,IAAM47G,EAA4B5vG,EAAKhM,IAAMuyH,GACxG,CAED,SAAST,EAAgB9lH,GACvB,GAAIzJ,MAAMkD,QAAQuG,GAAM,OAAOA,CAChC,CAED,SAASsmH,EAAsBtmH,EAAKhM,GAClC,IAAI+xH,EAAY,MAAP/lH,EAAc,KAAyB,qBAAX4f,QAA0B5f,EAAI4f,OAAOC,WAAa7f,EAAI,cAE3F,GAAU,MAAN+lH,EAAJ,CACA,IAIIC,EAAI17D,EAJJ67D,EAAO,GACPC,GAAK,EACLC,GAAK,EAIT,IACE,IAAKN,EAAKA,EAAGlxH,KAAKmL,KAAQomH,GAAMJ,EAAKD,EAAGrnG,QAAQ9wB,QAC9Cu4H,EAAK3xH,KAAKwxH,EAAG12H,QAET0E,GAAKmyH,EAAKn+H,SAAWgM,GAH4BoyH,GAAK,GAc7D,CATC,MAAO72H,GACP82H,GAAK,EACL/7D,EAAK/6D,CACN,CATD,QAUE,IACO62H,GAAsB,MAAhBL,EAAE,QAAoBA,EAAE,QAGpC,CAJD,QAGE,GAAIM,EAAI,MAAM/7D,CACf,CACF,CAED,OAAO67D,CAxBe,CAyBvB,CAED,SAASvW,EAA4Bx+F,EAAGu+F,GACtC,GAAKv+F,EAAL,CACA,GAAiB,kBAANA,EAAgB,OAAO49F,EAAkB59F,EAAGu+F,GACvD,IAAInrG,EAAI9M,OAAO/E,UAAUgI,SAAS9F,KAAKuc,GAAGtlB,MAAM,GAAI,GAEpD,MADU,WAAN0Y,GAAkB4M,EAAE9O,cAAakC,EAAI4M,EAAE9O,YAAYvN,MAC7C,QAANyP,GAAqB,QAANA,EAAoBjO,MAAMsB,KAAKuZ,GACxC,cAAN5M,GAAqB,2CAA2CpG,KAAKoG,GAAWwqG,EAAkB59F,EAAGu+F,QAAzG,CALc,CAMf,CAED,SAASX,EAAkBhvG,EAAKgnD,IACnB,MAAPA,GAAeA,EAAMhnD,EAAIhY,UAAQg/D,EAAMhnD,EAAIhY,QAE/C,IAAK,IAAIgM,EAAI,EAAG0rB,EAAO,IAAInpB,MAAMywD,GAAMhzD,EAAIgzD,EAAKhzD,IAAK0rB,EAAK1rB,GAAKgM,EAAIhM,GAEnE,OAAO0rB,CACR,CAED,SAAS6mG,IACP,MAAM,IAAI9yH,UAAU,4IACrB,CAED,IAAIwmK,EAAuC,qBAAfC,WAA6BA,WAA+B,qBAAX56J,OAAyBA,OAA2B,qBAAXytD,EAAAA,EAAyBA,EAAAA,EAAyB,qBAATjoD,KAAuBA,KAAO,CAAC,EAE9L,SAASq1J,EAAev9H,GACvB,OAAOA,GAAKA,EAAEonB,YAActsD,OAAO/E,UAAUwP,eAAetN,KAAK+nC,EAAG,WAAaA,EAAC,QAAcA,CAChG,CAED,SAASw9H,EAAqB5hK,EAAIpM,GACjC,OAAiCoM,EAA1BpM,EAAS,CAAEC,QAAS,CAAC,GAAgBD,EAAOC,SAAUD,EAAOC,OACpE,CAED,IAAIguK,EAAcD,GAAqB,SAAUhuK,EAAQC,GAEzD,IAAI4pK,EAASgE,GAAkBA,EAAehE,QAAU,SAAUhyG,EAAG9nD,GACnE,IAAImI,EAAI,CAAC,EAET,IAAK,IAAI+L,KAAK4zC,EAAOvsD,OAAO/E,UAAUwP,eAAetN,KAAKovD,EAAG5zC,IAAMlU,EAAElM,QAAQogB,GAAK,IAAG/L,EAAE+L,GAAK4zC,EAAE5zC,IAE9F,GAAS,MAAL4zC,GAAqD,oBAAjCvsD,OAAOynB,sBAA2C,KAAInrB,EAAI,EAAb,IAAgBqc,EAAI3Y,OAAOynB,sBAAsB8kC,GAAIjwD,EAAIqc,EAAEroB,OAAQgM,IAClImI,EAAElM,QAAQogB,EAAErc,IAAM,GAAK0D,OAAO/E,UAAU0sB,qBAAqBxqB,KAAKovD,EAAG5zC,EAAErc,MAAKsQ,EAAE+L,EAAErc,IAAMiwD,EAAE5zC,EAAErc,IADP,CAGzF,OAAOsQ,CACR,EAED5M,OAAOE,eAAevL,EAAS,aAAc,CAC3CiD,OAAO,IAETjD,EAAQiuK,aAAU,EAKlBjuK,EAAQiuK,QAAU,CAAC,EAGnB,IAAIC,EAAgB,SAAU55I,GAC5B,IAAI65I,EAAW18J,SAASmxC,cAAc,eAAkBtuB,EAAM,MAE9D,GAAI65I,EAGF,OAAOnuK,EAAQiuK,QAAQ35I,GAAO,CAC5B85I,SAAS,EACT5jK,MAAO,KACP6jK,SAAUF,EAKf,EAED,SAASG,EAAUphE,GACjB,IAAI54E,EAAM44E,EAAG54E,IACTg5E,EAAKJ,EAAGqhE,iBACRA,OAA0B,IAAPjhE,GAAwBA,EAC3C/sF,EAAaqpJ,EAAO18D,EAAI,CAAC,MAAO,qBAGhCnqG,EAASuxB,EAAMt0B,EAAQiuK,QAAQ35I,QAAO3vB,GAGrC5B,GAAUwrK,GAAoBj6I,GAAOjT,IACxCte,EAASmrK,EAAc55I,IAGzB,IAAI64I,GAAK,EAAIO,EAAe3c,UAAUhuJ,EAASA,EAAOqrK,QAAUrwG,QAAQzpC,IACpE85I,EAAUjB,EAAG,GACbqB,EAAarB,EAAG,GAEhBnzC,GAAK,EAAI0zC,EAAe3c,UAAUhuJ,EAASA,EAAOyH,MAAQ,MAC1DA,EAAQwvH,EAAG,GACXy0C,EAAWz0C,EAAG,GAyDlB,OAvDA,EAAI0zC,EAAeruC,YAAW,WAG5B,GAAKh+G,GAAciT,GAAQ85I,IAAW5jK,EAAtC,CAWA,IAAI6jK,IAPJtrK,EAAS/C,EAAQiuK,QAAQ35I,KAEVi6I,IACbxrK,EAASmrK,EAAc55I,IAMrBvxB,EACFsrK,EAAWtrK,EAAOsrK,WAElBA,EAAW58J,SAASa,cAAc,WACzBgiB,IAAMA,EACfjpB,OAAOsC,KAAK4S,GAAY1b,SAAQ,SAAUC,QAClBH,IAAlB0pK,EAASvpK,GACXupK,EAAS57J,aAAa3N,EAAKyb,EAAWzb,IAEtCupK,EAASvpK,GAAOyb,EAAWzb,EAE9B,IACD/B,EAAS/C,EAAQiuK,QAAQ35I,GAAO,CAC9B85I,SAAS,EACT5jK,MAAO,KACP6jK,SAAUA,IAMd,IAAIK,EAAa,WACX3rK,IAAQA,EAAOqrK,SAAU,GAC7BI,GAAW,EACZ,EAEGG,EAAc,SAAUnkK,GACtBzH,IAAQA,EAAOyH,MAAQA,GAC3BikK,EAASjkK,EACV,EAKD,OAHA6jK,EAASlpK,iBAAiB,OAAQupK,GAClCL,EAASlpK,iBAAiB,QAASwpK,GACnCl9J,SAASmyB,KAAKljB,YAAY2tJ,GACnB,WACLA,EAAS1sK,oBAAoB,OAAQ+sK,GACrCL,EAAS1sK,oBAAoB,QAASgtK,EACvC,CAlDkD,CAmDpD,GAAE,CAACr6I,IACG,CAAC85I,EAAS5jK,EAClB,CAEDxK,EAAQ+X,QAAUu2J,EAClB,IAAIjtJ,EAA8B,qBAAXpO,QAAqD,qBAApBA,OAAOxB,QAC9D,IAEDq8J,EAAcE,GACIA,EAAYC,QAA9B,IAuOWW,EArOPC,EAAMd,GAAqB,SAAUhuK,EAAQC,GAEjD,IAAI8uK,EAAkBlB,GAAkBA,EAAekB,iBAAmB,SAAU9oG,GAClF,OAAOA,GAAOA,EAAIrO,WAAaqO,EAAM,CACnC,QAAWA,EAEd,EAED36D,OAAOE,eAAevL,EAAS,aAAc,CAC3CiD,OAAO,IAETjD,EAAQiuK,QAAUjuK,EAAQ+X,aAAU,EAIpC1M,OAAOE,eAAevL,EAAS,UAAW,CACxCwwB,YAAY,EACZ3M,IAAK,WACH,OAAOirJ,EAAgBd,GAAaj2J,OACrC,IAEH1M,OAAOE,eAAevL,EAAS,UAAW,CACxCwwB,YAAY,EACZ3M,IAAK,WACH,OAAOmqJ,EAAYC,OACpB,GAEF,IAEGK,EAAYR,EAAce,GAG1BE,GAFQF,EAAIZ,QAEQ,SAA2BlpJ,EAAGiqJ,EAAQxjE,GAC5D,IAAIyjE,EAAY,CAAC,EAEjB,cADO5jK,OAAOQ,OAAOojK,EAAWlqJ,EAAG69F,EAAgB,CAAC,EAAGpX,EAAQzmF,EAAEiqJ,KAAUA,GACpEC,CACR,GAMGC,EAAc,SAAqBljK,GACrC,IAAI2S,EAAQ,CACVwwJ,MAAO,KACPhsK,MAAM,EACNisK,eAAgB,MAGlB,GAAsB,qBAAXn8J,SAA2BA,OAAOo8J,MAC3C,MAAM,IAAIl0K,MAAM,oBAGlB,IAAI0F,EAASkuK,EAAkB/iK,EAAS,YAAa,OA0CrD,OAzCA2S,EAAMwwJ,MAAQl8J,OAAOo8J,MAAM7oK,OAAOmnK,EAAeA,EAAe,CAAC,EAAG9sK,GAAS,CAAC,EAAG,CAC/EyuK,OAAQ,SAAgB9kK,EAAO4P,GAC7BuE,EAAMxb,MAAO,EACbtC,EAAOyuK,QAAUzuK,EAAOyuK,OAAO9kK,EAAO4P,GACtCuE,EAAMywJ,gBAAkBzwJ,EAAMywJ,gBAC/B,KAoCI,CACLjsK,KAlCS,WACJwb,EAAMwwJ,QAIXxwJ,EAAMxb,MAAO,EACbwb,EAAMywJ,eAAiB,KACvBzwJ,EAAMwwJ,MAAMhsK,OACb,EA2BCosK,KAzBS,SAAcC,EAAa97J,GAC/BiL,EAAMxb,MAASwb,EAAMwwJ,OAK1BxwJ,EAAMywJ,eAAiB17J,EACvBiL,EAAMwwJ,MAAMI,KAAKC,GAEbA,GAAeA,EAAYhzE,QAC7B79E,EAAMxb,MAAO,IARbuQ,GAAYA,GAUf,EAcC+R,QAZY,WACP9G,EAAMwwJ,QAIXxwJ,EAAMwwJ,MAAM1pJ,UACZ9G,EAAMwwJ,MAAQ,KACf,EAOF,EAEGM,EAAwB,0DAExBnhI,EAAO,WAAkB,EAazBohI,EAAe,SAAsB1jK,GAEvC,IAII2jK,EAAcn2C,EAJD80C,EAAU,CACzBh6I,IAAKm7I,EACLlB,kBAAkB,IAEyB,GACzCH,EAAUuB,EAAY,GACtBnlK,EAAQmlK,EAAY,GAIpBC,EAAap2C,EADDi0C,EAAM1c,SAAS,MACY,GACvCoe,EAAQS,EAAW,GACnBC,EAAWD,EAAW,GAGtBE,EAAat2C,EADAi0C,EAAM1c,UAAS,GACY,GACxCgf,EAAeD,EAAW,GAC1BE,EAAkBF,EAAW,GAE7BG,GAAYjkK,EAAQsK,SAAW,IAAI7W,QAAQosB,OAAO/a,KAAK,KAC3D28J,EAAMpuC,WAAU,WAEd,IAAI+uC,IAKCpiK,EAAQxE,OAAUwE,EAAQkkK,WAA/B,CAIA,IAAI1lK,GAAUyI,OAAOo8J,MAArB,CAQa,MAATF,GACFA,EAAMI,KAAK,CACT/yE,OAAO,IACN,WACD,OAAO2yE,EAAM1pJ,SACd,IAGH,IAAI4M,EAAO68I,EAAYvB,EAAeA,EAAe,CAAC,EAAG3hK,GAAU,CAAC,EAAG,CACrEmkK,OAAQ,WACNH,GAAgB,GAChBhkK,EAAQmkK,QAAUnkK,EAAQmkK,QAC3B,KAIH,OAFAN,EAASx9I,GAEF,WACL,OAAOA,EAAKk9I,KAAK,CACf/yE,OAAO,IACN,WACD,OAAOnqE,EAAK5M,SACb,GACF,CA1BA,CAFCxQ,QAAQzK,MAAM,sBAAuBA,EAJtC,CAiCF,GAAE,CAAC4jK,EAAS5jK,EAAOwB,EAAQkkK,UAAWlkK,EAAQxE,MAAOyoK,IACtD,IAEIG,EAAW,WACRpkK,EAAQxE,OACXyN,QAAQC,KAAK,4GAEhB,EAED,MAAO,CACL1K,MAAOA,EACP6lK,MAVmB,MAATlB,KAAmBf,GAAW2B,GAWxCR,KAAMJ,EAAQA,EAAMI,KAAOjhI,EAC3BnrC,KAAMgsK,EAAQA,EAAMhsK,KAAOitK,EAE9B,EAEG9lD,EAAY,CAAC,WAAY,QAAS,aAClCgmD,EAAY,SAAmBx5J,GACjC,IAAI+J,EAAW/J,EAAM+J,SACjB6G,EAAQ5Q,EAAM4Q,MACdpH,EAAYxJ,EAAMwJ,UAClBzf,EAASgyB,EAAyB/b,EAAOwzG,GAEzCimD,EAAgBb,EAAa/B,EAAe,CAAC,EAAG9sK,IAChD2J,EAAQ+lK,EAAc/lK,MACtBrH,EAAOotK,EAAcptK,KAEzB,OAAoBuqK,EAAep7J,cAAc,SAAU,CACzD2kB,SAAU8mC,QAAQvzD,GAClBjF,KAAM,SACN+a,UAAWA,EACXoH,MAAOimJ,EAAe,CACpB7sI,QAAS,UACTjS,QAAS,OACT+pE,WAAY,UACZyB,OAAQ,oBACRm2E,aAAc,OACb9oJ,GACH8gF,QAAS,WACP,OAAOrlG,GACR,GACA0d,EACJ,EACDyvJ,EAAU32D,YAAc,aAIbi1D,EAMR5uK,EAAQ4uK,uBAAyB5uK,EAAQ4uK,qBAAuB,CAAC,IAL9C,KAAW,OAC/BA,EAAoB,KAAW,OAC/BA,EAAoB,QAAc,UAClCA,EAAoB,mBAAyB,qBAC7CA,EAAoB,MAAY,QAGlC5uK,EAAQswK,UAAYA,EACpBtwK,EAAQ0vK,aAAeA,EAEvBrkK,OAAOE,eAAevL,EAAS,aAAc,CAAEiD,OAAO,GAEvD,CA1gBgEyY,CAAQ1b,EAASE,EAAQ,0CCQ7E,IAAIgY,EAAEhY,EAAQ,MAASq6D,EAAEhnC,OAAO8nF,IAAI,iBAAiBzzG,EAAE2rB,OAAO8nF,IAAI,kBAAkB9jD,EAAElsD,OAAO/E,UAAUwP,eAAeqC,EAAED,EAAE8uH,mDAAmD0rB,kBAAkB1uI,EAAE,CAAClf,KAAI,EAAGmW,KAAI,EAAGw1J,QAAO,EAAGC,UAAS,GAChP,SAAS19G,EAAEzqD,EAAEiO,EAAEiiD,GAAG,IAAIhiD,EAAE+gD,EAAE,CAAC,EAAE1nD,EAAE,KAAK1D,EAAE,KAAiF,IAAIqK,UAAhF,IAASgiD,IAAI3oD,EAAE,GAAG2oD,QAAG,IAASjiD,EAAE1R,MAAMgL,EAAE,GAAG0G,EAAE1R,UAAK,IAAS0R,EAAEyE,MAAM7O,EAAEoK,EAAEyE,KAAczE,EAAE+gD,EAAE/uD,KAAKgO,EAAEC,KAAKuN,EAAElO,eAAeW,KAAK+gD,EAAE/gD,GAAGD,EAAEC,IAAI,GAAGlO,GAAGA,EAAEmxG,aAAa,IAAIjjG,KAAKD,EAAEjO,EAAEmxG,kBAAe,IAASliD,EAAE/gD,KAAK+gD,EAAE/gD,GAAGD,EAAEC,IAAI,MAAM,CAAC8kG,SAAShhD,EAAEh1D,KAAKgD,EAAEzD,IAAIgL,EAAEmL,IAAI7O,EAAE0K,MAAM0gD,EAAEwzF,OAAO7yI,EAAEue,QAAS,CAAA12B,EAAQ67G,SAASj0G,EAAE5H,EAAQ2wK,IAAI39G,EAAEhzD,EAAQ4wK,KAAK59G,mCCD7V,IAAIprD,EAAE2rB,OAAO8nF,IAAI,iBAAiBljG,EAAEob,OAAO8nF,IAAI,gBAAgBr3F,EAAEuP,OAAO8nF,IAAI,kBAAkBroD,EAAEz/B,OAAO8nF,IAAI,qBAAqBrjG,EAAEub,OAAO8nF,IAAI,kBAAkBpjG,EAAEsb,OAAO8nF,IAAI,kBAAkB5uC,EAAEl5C,OAAO8nF,IAAI,iBAAiB1qG,EAAE4iB,OAAO8nF,IAAI,qBAAqBxgD,EAAEtnC,OAAO8nF,IAAI,kBAAkB9qE,EAAEhd,OAAO8nF,IAAI,cAAc5qE,EAAEld,OAAO8nF,IAAI,cAAcC,EAAE/nF,OAAOC,SACzW,IAAI29G,EAAE,CAACwY,UAAU,WAAW,OAAM,CAAG,EAACM,mBAAmB,WAAY,EAACD,oBAAoB,WAAY,EAACH,gBAAgB,WAAY,GAAErW,EAAEnoI,OAAOQ,OAAOk0F,EAAE,CAAC,EAAE,SAASzM,EAAE98E,EAAEC,EAAE3G,GAAGxI,KAAKwP,MAAMN,EAAElP,KAAKlB,QAAQqQ,EAAEnP,KAAKkiJ,KAAKzpD,EAAEz4F,KAAKgjJ,QAAQx6I,GAAGqhI,CAAE,CACuI,SAASiQ,IAAK,CAAwB,SAASsC,EAAEltI,EAAEC,EAAE3G,GAAGxI,KAAKwP,MAAMN,EAAElP,KAAKlB,QAAQqQ,EAAEnP,KAAKkiJ,KAAKzpD,EAAEz4F,KAAKgjJ,QAAQx6I,GAAGqhI,CAAE,CADzP79C,EAAEhtF,UAAUs1J,iBAAiB,CAAC,EACpQtoE,EAAEhtF,UAAU6uE,SAAS,SAAS3+D,EAAEC,GAAG,GAAG,kBAAkBD,GAAG,oBAAoBA,GAAG,MAAMA,EAAE,MAAMrb,MAAM,yHAAyHmM,KAAKgjJ,QAAQT,gBAAgBviJ,KAAKkP,EAAEC,EAAE,WAAY,EAAC68E,EAAEhtF,UAAUuqK,YAAY,SAASr6J,GAAGlP,KAAKgjJ,QAAQL,mBAAmB3iJ,KAAKkP,EAAE,cAAe,EAAe4qI,EAAE96I,UAAUgtF,EAAEhtF,UAAsF,IAAIinG,EAAEm2C,EAAEp9I,UAAU,IAAI86I,EACrf7zC,EAAEt3F,YAAYytI,EAAElQ,EAAEjmC,EAAEja,EAAEhtF,WAAWinG,EAAE68C,sBAAqB,EAAG,IAAIvE,EAAE37I,MAAMkD,QAAQm2F,EAAEl4F,OAAO/E,UAAUwP,eAAemzI,EAAE,CAACvyH,QAAQ,MAAM81D,EAAE,CAAC1nF,KAAI,EAAGmW,KAAI,EAAGw1J,QAAO,EAAGC,UAAS,GACtK,SAASv5D,EAAE3gG,EAAEC,EAAE3G,GAAG,IAAI0nD,EAAEjvD,EAAE,CAAC,EAAEgyD,EAAE,KAAKnuD,EAAE,KAAK,GAAG,MAAMqK,EAAE,IAAI+gD,UAAK,IAAS/gD,EAAEwE,MAAM7O,EAAEqK,EAAEwE,UAAK,IAASxE,EAAE3R,MAAMy1D,EAAE,GAAG9jD,EAAE3R,KAAK2R,EAAE8sF,EAAE/6F,KAAKiO,EAAE+gD,KAAKg1B,EAAE12E,eAAe0hD,KAAKjvD,EAAEivD,GAAG/gD,EAAE+gD,IAAI,IAAIiB,EAAEnoD,UAAU3U,OAAO,EAAE,GAAG,IAAI88D,EAAElwD,EAAEsY,SAAS/Q,OAAO,GAAG,EAAE2oD,EAAE,CAAC,IAAI,IAAIvgD,EAAEhO,MAAMuuD,GAAGlB,EAAE,EAAEA,EAAEkB,EAAElB,IAAIr/C,EAAEq/C,GAAGjnD,UAAUinD,EAAE,GAAGhvD,EAAEsY,SAAS3I,CAAE,IAAG1B,GAAGA,EAAEkjG,aAAa,IAAIliD,KAAKiB,EAAEjiD,EAAEkjG,kBAAe,IAASnxG,EAAEivD,KAAKjvD,EAAEivD,GAAGiB,EAAEjB,IAAI,MAAM,CAAC+jD,SAAS3zG,EAAErC,KAAKiR,EAAE1R,IAAIy1D,EAAEt/C,IAAI7O,EAAE0K,MAAMvO,EAAEyiJ,OAAO/B,EAAEvyH,QAAS,CACjV,SAASq2H,EAAEv2I,GAAG,MAAM,kBAAkBA,GAAG,OAAOA,GAAGA,EAAE+kG,WAAW3zG,CAAE,CAAmG,IAAIywD,EAAE,OAAO,SAAS+0F,EAAE52I,EAAEC,GAAG,MAAM,kBAAkBD,GAAG,OAAOA,GAAG,MAAMA,EAAE1R,IAA7K,SAAgB0R,GAAG,IAAIC,EAAE,CAAC,IAAI,KAAK,IAAI,MAAM,MAAM,IAAID,EAAEhG,QAAQ,SAAQ,SAASgG,GAAG,OAAOC,EAAED,EAAG,GAAE,CAA8Eq3D,CAAO,GAAGr3D,EAAE1R,KAAK2R,EAAEnI,SAAS,GAAI,CAChX,SAASsgJ,EAAEp4I,EAAEC,EAAE3G,EAAE0nD,EAAEjvD,GAAG,IAAIgyD,SAAS/jD,EAAK,cAAc+jD,GAAG,YAAYA,IAAE/jD,EAAE,MAAK,IAAIpK,GAAE,EAAG,GAAG,OAAOoK,EAAEpK,GAAE,OAAQ,OAAOmuD,GAAG,IAAK,SAAS,IAAK,SAASnuD,GAAE,EAAG,MAAM,IAAK,SAAS,OAAOoK,EAAE+kG,UAAU,KAAK3zG,EAAE,KAAKuQ,EAAE/L,GAAE,GAAI,GAAGA,EAAE,OAAW7D,EAAEA,EAAN6D,EAAEoK,GAASA,EAAE,KAAKghD,EAAE,IAAI41F,EAAEhhJ,EAAE,GAAGorD,EAAEquF,EAAEt9I,IAAIuH,EAAE,GAAG,MAAM0G,IAAI1G,EAAE0G,EAAEhG,QAAQ6nD,EAAE,OAAO,KAAKu2F,EAAErmJ,EAAEkO,EAAE3G,EAAE,IAAG,SAAS0G,GAAG,OAAOA,CAAE,KAAG,MAAMjO,IAAIwkJ,EAAExkJ,KAAKA,EADnW,SAAWiO,EAAEC,GAAG,MAAM,CAAC8kG,SAAS3zG,EAAErC,KAAKiR,EAAEjR,KAAKT,IAAI2R,EAAEwE,IAAIzE,EAAEyE,IAAInE,MAAMN,EAAEM,MAAMk0I,OAAOx0I,EAAEw0I,OAAQ,CACwQ3zC,CAAE9uG,EAAEuH,IAAIvH,EAAEzD,KAAKsH,GAAGA,EAAEtH,MAAMyD,EAAEzD,IAAI,IAAI,GAAGyD,EAAEzD,KAAK0L,QAAQ6nD,EAAE,OAAO,KAAK7hD,IAAIC,EAAEtO,KAAKI,IAAI,EAAyB,GAAvB6D,EAAE,EAAEorD,EAAE,KAAKA,EAAE,IAAIA,EAAE,IAAOquF,EAAErvI,GAAG,IAAI,IAAIiiD,EAAE,EAAEA,EAAEjiD,EAAE7a,OAAO88D,IAAI,CAC/e,IAAIvgD,EAAEs/C,EAAE41F,EADwe7yF,EACrf/jD,EAAEiiD,GAAeA,GAAGrsD,GAAGwiJ,EAAEr0F,EAAE9jD,EAAE3G,EAAEoI,EAAE3P,EAAG,MAAK,GAAG2P,EAPsU,SAAW1B,GAAG,OAAG,OAAOA,GAAG,kBAAkBA,EAAS,KAAsC,oBAAjCA,EAAE8kG,GAAG9kG,EAAE8kG,IAAI9kG,EAAE,eAA0CA,EAAE,IAAK,CAO7bglG,CAAEhlG,GAAG,oBAAoB0B,EAAE,IAAI1B,EAAE0B,EAAE1P,KAAKgO,GAAGiiD,EAAE,IAAI8B,EAAE/jD,EAAE6b,QAAQ9wB,MAA6B6K,GAAGwiJ,EAA1Br0F,EAAEA,EAAEt3D,MAA0BwT,EAAE3G,EAAtBoI,EAAEs/C,EAAE41F,EAAE7yF,EAAE9B,KAAkBlwD,QAAQ,GAAG,WAAWgyD,EAAE,MAAM9jD,EAAEa,OAAOd,GAAGrb,MAAM,mDAAmD,oBAAoBsb,EAAE,qBAAqBpL,OAAOsC,KAAK6I,GAAG1F,KAAK,MAAM,IAAI2F,GAAG,6EAA6E,OAAOrK,CAAE,CAC1Z,SAASymF,EAAEr8E,EAAEC,EAAE3G,GAAG,GAAG,MAAM0G,EAAE,OAAOA,EAAE,IAAIghD,EAAE,GAAGjvD,EAAE,EAAmD,OAAjDqmJ,EAAEp4I,EAAEghD,EAAE,GAAG,IAAG,SAAShhD,GAAG,OAAOC,EAAEjO,KAAKsH,EAAE0G,EAAEjO,IAAK,IAASivD,CAAE,UAASu+F,EAAEv/I,GAAG,IAAI,IAAIA,EAAEs6J,QAAQ,CAAC,IAAIr6J,EAAED,EAAEu6J,SAAQt6J,EAAEA,KAAMhP,MAAK,SAASgP,GAAM,IAAID,EAAEs6J,UAAU,IAAIt6J,EAAEs6J,UAAQt6J,EAAEs6J,QAAQ,EAAEt6J,EAAEu6J,QAAQt6J,EAAE,IAAC,SAASA,GAAM,IAAID,EAAEs6J,UAAU,IAAIt6J,EAAEs6J,UAAQt6J,EAAEs6J,QAAQ,EAAEt6J,EAAEu6J,QAAQt6J,EAAE,KAAG,IAAID,EAAEs6J,UAAUt6J,EAAEs6J,QAAQ,EAAEt6J,EAAEu6J,QAAQt6J,EAAG,IAAG,IAAID,EAAEs6J,QAAQ,OAAOt6J,EAAEu6J,QAAQh5J,QAAQ,MAAMvB,EAAEu6J,OAAS,CAC7Z,IAAI3a,EAAE,CAAC1/H,QAAQ,MAAMupE,EAAE,CAAC61C,WAAW,MAAMygB,EAAE,CAAC3J,uBAAuBwJ,EAAEzgB,wBAAwB11C,EAAEyyD,kBAAkBzJ,GAAGjpJ,EAAQwiK,SAAS,CAACloJ,IAAIu4E,EAAEhuF,QAAQ,SAAS2R,EAAEC,EAAE3G,GAAG+iF,EAAEr8E,GAAE,WAAWC,EAAEtM,MAAM7C,KAAKgJ,UAAW,GAACR,EAAG,EAACqwB,MAAM,SAAS3pB,GAAG,IAAIC,EAAE,EAAuB,OAArBo8E,EAAEr8E,GAAE,WAAWC,GAAI,IAASA,CAAE,EAACpC,QAAQ,SAASmC,GAAG,OAAOq8E,EAAEr8E,GAAE,SAASA,GAAG,OAAOA,CAAE,KAAG,EAAG,EAACisJ,KAAK,SAASjsJ,GAAG,IAAIu2I,EAAEv2I,GAAG,MAAMrb,MAAM,yEAAyE,OAAOqb,CAAE,GAAExW,EAAQ0vH,UAAUp8B,EAAEtzF,EAAQ67G,SAAS73F,EACnehkB,EAAQg8G,SAAShkG,EAAEhY,EAAQu+H,cAAcmlB,EAAE1jJ,EAAQi8G,WAAWjpD,EAAEhzD,EAAQk8G,SAASrhD,EAAE76D,EAAQgnI,mDAAmDuvB,EAC9Iv2J,EAAQuiK,aAAa,SAAS/rJ,EAAEC,EAAE3G,GAAG,GAAG,OAAO0G,QAAG,IAASA,EAAE,MAAMrb,MAAM,iFAAiFqb,EAAE,KAAK,IAAIghD,EAAEg8E,EAAE,CAAC,EAAEh9H,EAAEM,OAAOvO,EAAEiO,EAAE1R,IAAIy1D,EAAE/jD,EAAEyE,IAAI7O,EAAEoK,EAAEw0I,OAAO,GAAG,MAAMv0I,EAAE,CAAoE,QAAnE,IAASA,EAAEwE,MAAMs/C,EAAE9jD,EAAEwE,IAAI7O,EAAE68I,EAAEvyH,cAAS,IAASjgB,EAAE3R,MAAMyD,EAAE,GAAGkO,EAAE3R,KAAQ0R,EAAEjR,MAAMiR,EAAEjR,KAAKm0G,aAAa,IAAIjhD,EAAEjiD,EAAEjR,KAAKm0G,aAAa,IAAIxhG,KAAKzB,EAAE8sF,EAAE/6F,KAAKiO,EAAEyB,KAAKs0E,EAAE12E,eAAeoC,KAAKs/C,EAAEt/C,QAAG,IAASzB,EAAEyB,SAAI,IAASugD,EAAEA,EAAEvgD,GAAGzB,EAAEyB,GAAI,KAAIA,EAAE5H,UAAU3U,OAAO,EAAE,GAAG,IAAIuc,EAAEs/C,EAAE32C,SAAS/Q,OAAO,GAAG,EAAEoI,EAAE,CAACugD,EAAEvuD,MAAMgO,GACrf,IAAI,IAAIq/C,EAAE,EAAEA,EAAEr/C,EAAEq/C,IAAIkB,EAAElB,GAAGjnD,UAAUinD,EAAE,GAAGC,EAAE32C,SAAS43C,CAAE,OAAM,CAAC8iD,SAAS3zG,EAAErC,KAAKiR,EAAEjR,KAAKT,IAAIyD,EAAE0S,IAAIs/C,EAAEzjD,MAAM0gD,EAAEwzF,OAAO5+I,EAAG,EAACpM,EAAQgxK,cAAc,SAASx6J,GAAqK,OAAlKA,EAAE,CAAC+kG,SAAS9uC,EAAE66E,cAAc9wI,EAAEy6J,eAAez6J,EAAE06J,aAAa,EAAEC,SAAS,KAAKC,SAAS,KAAKC,cAAc,KAAKC,YAAY,OAAQH,SAAS,CAAC51D,SAAStjG,EAAEswH,SAAS/xH,GAAUA,EAAE46J,SAAS56J,CAAE,EAACxW,EAAQsS,cAAc6kG,EAAEn3G,EAAQuxK,cAAc,SAAS/6J,GAAG,IAAIC,EAAE0gG,EAAErxG,KAAK,KAAK0Q,GAAY,OAATC,EAAElR,KAAKiR,EAASC,CAAE,EAACzW,EAAQ+6H,UAAU,WAAW,MAAM,CAACrkG,QAAQ,KAAM,EAC/d12B,EAAQwxK,WAAW,SAASh7J,GAAG,MAAM,CAAC+kG,SAAS5qG,EAAE+pG,OAAOlkG,EAAG,EAACxW,EAAQyxK,eAAe1kB,EAAE/sJ,EAAQ0xK,KAAK,SAASl7J,GAAG,MAAM,CAAC+kG,SAAS9qE,EAAE+3F,SAAS,CAACsoC,SAAS,EAAEC,QAAQv6J,GAAGiyH,MAAMstB,EAAG,EAAC/1J,EAAQ2xK,KAAK,SAASn7J,EAAEC,GAAG,MAAM,CAAC8kG,SAAShrE,EAAEhrC,KAAKiR,EAAE60B,aAAQ,IAAS50B,EAAE,KAAKA,EAAG,EAACzW,EAAQ4xK,gBAAgB,SAASp7J,GAAG,IAAIC,EAAEwpF,EAAE61C,WAAW71C,EAAE61C,WAAW,CAAC,EAAE,IAAIt/H,GAA2B,CAA/B,QAAgBypF,EAAE61C,WAAWr/H,CAAE,CAAC,EAACzW,EAAQ6xK,aAAa,WAAW,MAAM12K,MAAM,2DAA6D,EAC3c6E,EAAQwwJ,YAAY,SAASh6I,EAAEC,GAAG,OAAO2/I,EAAE1/H,QAAQ85H,YAAYh6I,EAAEC,EAAG,EAACzW,EAAQywJ,WAAW,SAASj6I,GAAG,OAAO4/I,EAAE1/H,QAAQ+5H,WAAWj6I,EAAG,EAACxW,EAAQgxJ,cAAc,WAAY,EAAChxJ,EAAQixJ,iBAAiB,SAASz6I,GAAG,OAAO4/I,EAAE1/H,QAAQu6H,iBAAiBz6I,EAAG,EAACxW,EAAQq/H,UAAU,SAAS7oH,EAAEC,GAAG,OAAO2/I,EAAE1/H,QAAQ2oG,UAAU7oH,EAAEC,EAAG,EAACzW,EAAQqxJ,MAAM,WAAW,OAAO+E,EAAE1/H,QAAQ26H,OAAQ,EAACrxJ,EAAQ0wJ,oBAAoB,SAASl6I,EAAEC,EAAE3G,GAAG,OAAOsmJ,EAAE1/H,QAAQg6H,oBAAoBl6I,EAAEC,EAAE3G,EAAG,EAC9b9P,EAAQ2wJ,mBAAmB,SAASn6I,EAAEC,GAAG,OAAO2/I,EAAE1/H,QAAQi6H,mBAAmBn6I,EAAEC,EAAG,EAACzW,EAAQo/H,gBAAgB,SAAS5oH,EAAEC,GAAG,OAAO2/I,EAAE1/H,QAAQ0oG,gBAAgB5oH,EAAEC,EAAG,EAACzW,EAAQ4wJ,QAAQ,SAASp6I,EAAEC,GAAG,OAAO2/I,EAAE1/H,QAAQk6H,QAAQp6I,EAAEC,EAAG,EAACzW,EAAQ6wJ,WAAW,SAASr6I,EAAEC,EAAE3G,GAAG,OAAOsmJ,EAAE1/H,QAAQm6H,WAAWr6I,EAAEC,EAAE3G,EAAG,EAAC9P,EAAQ8wJ,OAAO,SAASt6I,GAAG,OAAO4/I,EAAE1/H,QAAQo6H,OAAOt6I,EAAG,EAACxW,EAAQ+wJ,SAAS,SAASv6I,GAAG,OAAO4/I,EAAE1/H,QAAQq6H,SAASv6I,EAAG,EAACxW,EAAQoxJ,qBAAqB,SAAS56I,EAAEC,EAAE3G,GAAG,OAAOsmJ,EAAE1/H,QAAQ06H,qBAAqB56I,EAAEC,EAAE3G,EAAG,EAChf9P,EAAQkxJ,cAAc,WAAW,OAAOkF,EAAE1/H,QAAQw6H,eAAgB,EAAClxJ,EAAQ2U,QAAQ,4CCtBjF5U,EAAOC,QAAU,EAAjBD,wCCAAA,EAAOC,QAAU,EAAjBD,uCCMW,SAASmY,EAAE1B,EAAEC,GAAG,IAAIlO,EAAEiO,EAAE7a,OAAO6a,EAAErO,KAAKsO,GAAGD,EAAE,KAAK,EAAEjO,GAAG,CAAC,IAAIivD,EAAEjvD,EAAE,IAAI,EAAEuH,EAAE0G,EAAEghD,GAAG,KAAG,EAAEiB,EAAE3oD,EAAE2G,IAA0B,MAAMD,EAA7BA,EAAEghD,GAAG/gD,EAAED,EAAEjO,GAAGuH,EAAEvH,EAAEivD,CAAe,CAAC,UAASprD,EAAEoK,GAAG,OAAO,IAAIA,EAAE7a,OAAO,KAAK6a,EAAE,EAAG,UAAS+jD,EAAE/jD,GAAG,GAAG,IAAIA,EAAE7a,OAAO,OAAO,KAAK,IAAI8a,EAAED,EAAE,GAAGjO,EAAEiO,EAAEhC,MAAM,GAAGjM,IAAIkO,EAAE,CAACD,EAAE,GAAGjO,EAAEiO,EAAE,IAAI,IAAIghD,EAAE,EAAE1nD,EAAE0G,EAAE7a,OAAOk/D,EAAE/qD,IAAI,EAAE0nD,EAAEqD,GAAG,CAAC,IAAItD,EAAE,GAAGC,EAAE,GAAG,EAAEg8E,EAAEh9H,EAAE+gD,GAAGp/C,EAAEo/C,EAAE,EAAEhnB,EAAE/5B,EAAE2B,GAAG,GAAG,EAAEsgD,EAAE+6E,EAAEjrI,GAAG4P,EAAErI,GAAG,EAAE2oD,EAAEloB,EAAEijG,IAAIh9H,EAAEghD,GAAGjnB,EAAE/5B,EAAE2B,GAAG5P,EAAEivD,EAAEr/C,IAAI3B,EAAEghD,GAAGg8E,EAAEh9H,EAAE+gD,GAAGhvD,EAAEivD,EAAED,OAAQ,MAAGp/C,EAAErI,GAAG,EAAE2oD,EAAEloB,EAAEhoC,IAA0B,MAAMiO,EAA7BA,EAAEghD,GAAGjnB,EAAE/5B,EAAE2B,GAAG5P,EAAEivD,EAAEr/C,CAAO,CAAQ,CAAC,QAAO1B,CAAE,CAC5c,SAASgiD,EAAEjiD,EAAEC,GAAG,IAAIlO,EAAEiO,EAAEs7J,UAAUr7J,EAAEq7J,UAAU,OAAO,IAAIvpK,EAAEA,EAAEiO,EAAEtK,GAAGuK,EAAEvK,EAAG,IAAG,kBAAkBugB,aAAa,oBAAoBA,YAAY3a,IAAI,CAAC,IAAIlK,EAAE6kB,YAAYzsB,EAAQoxI,aAAa,WAAW,OAAOxpI,EAAEkK,KAAM,CAAC,KAAI,CAAC,IAAIkS,EAAEvpB,KAAKu4D,EAAEhvC,EAAElS,MAAM9R,EAAQoxI,aAAa,WAAW,OAAOptH,EAAElS,MAAMkhD,CAAE,CAAC,KAAIh7C,EAAE,GAAGC,EAAE,GAAGw0D,EAAE,EAAE97D,EAAE,KAAK8/B,EAAE,EAAE6qE,GAAE,EAAGE,GAAE,EAAG21B,GAAE,EAAGpxC,EAAE,oBAAoBl8F,WAAWA,WAAW,KAAKyvF,EAAE,oBAAoB5mE,aAAaA,aAAa,KAAK00H,EAAE,qBAAqB2wB,aAAaA,aAAa,KACnT,SAASruB,EAAEltI,GAAG,IAAI,IAAIC,EAAErK,EAAE6L,GAAG,OAAOxB,GAAG,CAAC,GAAG,OAAOA,EAAE/C,SAAS6mD,EAAEtiD,OAAQ,MAAGxB,EAAEu7J,WAAWx7J,GAAgD,MAA9C+jD,EAAEtiD,GAAGxB,EAAEq7J,UAAUr7J,EAAEw7J,eAAe/5J,EAAEF,EAAEvB,EAAa,CAACA,EAAErK,EAAE6L,EAAG,CAAC,UAASs1F,EAAE/2F,GAAa,GAAV26H,GAAE,EAAGuS,EAAEltI,IAAOglG,EAAE,GAAG,OAAOpvG,EAAE4L,GAAGwjG,GAAE,EAAGqqC,EAAEtiD,OAAO,CAAC,IAAI9sF,EAAErK,EAAE6L,GAAG,OAAOxB,GAAGwyI,EAAE17C,EAAE92F,EAAEu7J,UAAUx7J,EAAG,CAAC,CACta,SAAS+sF,EAAE/sF,EAAEC,GAAG+kG,GAAE,EAAG21B,IAAIA,GAAE,EAAG79C,EAAE9G,GAAGA,GAAG,GAAG8uB,GAAE,EAAG,IAAI/yG,EAAEkoC,EAAE,IAAS,IAALizG,EAAEjtI,GAAO9F,EAAEvE,EAAE4L,GAAG,OAAOrH,MAAMA,EAAEshK,eAAex7J,IAAID,IAAI2gG,MAAM,CAAC,IAAI3/C,EAAE7mD,EAAE+C,SAAS,GAAG,oBAAoB8jD,EAAE,CAAC7mD,EAAE+C,SAAS,KAAK+8B,EAAE9/B,EAAEuhK,cAAc,IAAIpiK,EAAE0nD,EAAE7mD,EAAEshK,gBAAgBx7J,GAAGA,EAAEzW,EAAQoxI,eAAe,oBAAoBthI,EAAEa,EAAE+C,SAAS5D,EAAEa,IAAIvE,EAAE4L,IAAIuiD,EAAEviD,GAAG0rI,EAAEjtI,EAAG,MAAK8jD,EAAEviD,GAAGrH,EAAEvE,EAAE4L,EAAG,IAAG,OAAOrH,EAAE,IAAIkqD,GAAE,MAAO,CAAC,IAAItD,EAAEnrD,EAAE6L,GAAG,OAAOs/C,GAAG0xF,EAAE17C,EAAEh2C,EAAEy6G,UAAUv7J,GAAGokD,GAAE,CAAG,QAAOA,CAA0B,CAApX,QAAoWlqD,EAAE,KAAK8/B,EAAEloC,EAAE+yG,GAAE,CAAG,CAAC,CAD3a,qBAAqBnpG,gBAAW,IAASA,UAAUggK,iBAAY,IAAShgK,UAAUggK,WAAWC,gBAAgBjgK,UAAUggK,WAAWC,eAAetsK,KAAKqM,UAAUggK,YAC2Q,IACzPt/E,EAD6PwkB,GAAE,EAAG01C,EAAE,KAAKvgE,GAAG,EAAEn0B,EAAE,EAAE+0F,GAAG,EACvc,SAASj2C,IAAI,QAAOn3G,EAAQoxI,eAAegc,EAAE/0F,EAAQ,UAASu2F,IAAI,GAAG,OAAO7B,EAAE,CAAC,IAAIv2I,EAAExW,EAAQoxI,eAAegc,EAAE52I,EAAE,IAAIC,GAAE,EAAG,IAAIA,EAAEs2I,GAAE,EAAGv2I,EAA+B,CAA1C,QAAsBC,EAAEo8E,KAAKwkB,GAAE,EAAG01C,EAAE,KAAM,CAAC,MAAK11C,GAAE,CAAG,CAAM,GAAG,oBAAoB+pC,EAAEvuD,EAAE,WAAWuuD,EAAEwN,EAAG,OAAM,GAAG,qBAAqByjB,eAAe,CAAC,IAAItc,EAAE,IAAIsc,eAAejc,EAAEL,EAAEuc,MAAMvc,EAAEwc,MAAM75J,UAAUk2I,EAAE/7D,EAAE,WAAWujE,EAAEx9I,YAAY,KAAM,CAAC,MAAKi6E,EAAE,WAAWkN,EAAE6uD,EAAE,EAAG,EAAC,SAAS/I,EAAErvI,GAAGu2I,EAAEv2I,EAAE6gG,IAAIA,GAAE,EAAGxkB,IAAK,UAASo2D,EAAEzyI,EAAEC,GAAG+1E,EAAEuT,GAAE,WAAWvpF,EAAExW,EAAQoxI,eAAgB,GAAC36H,EAAG,CAC7dzW,EAAQgyI,sBAAsB,EAAEhyI,EAAQwxI,2BAA2B,EAAExxI,EAAQ8xI,qBAAqB,EAAE9xI,EAAQ4xI,wBAAwB,EAAE5xI,EAAQwyK,mBAAmB,KAAKxyK,EAAQ0xI,8BAA8B,EAAE1xI,EAAQ8wI,wBAAwB,SAASt6H,GAAGA,EAAE9C,SAAS,IAAK,EAAC1T,EAAQyyK,2BAA2B,WAAWj3D,GAAGF,IAAIE,GAAE,EAAGqqC,EAAEtiD,GAAI,EAC3UvjG,EAAQ0yK,wBAAwB,SAASl8J,GAAG,EAAEA,GAAG,IAAIA,EAAEvB,QAAQzK,MAAM,mHAAmH6tD,EAAE,EAAE7hD,EAAEzI,KAAKC,MAAM,IAAIwI,GAAG,CAAE,EAACxW,EAAQsxI,iCAAiC,WAAW,OAAO7gG,CAAE,EAACzwC,EAAQ2yK,8BAA8B,WAAW,OAAOvmK,EAAE4L,EAAG,EAAChY,EAAQ4yK,cAAc,SAASp8J,GAAG,OAAOi6B,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAIh6B,EAAE,EAAE,MAAM,QAAQA,EAAEg6B,EAAE,IAAIloC,EAAEkoC,EAAEA,EAAEh6B,EAAE,IAAI,OAAOD,GAAgB,CAA3B,QAAuBi6B,EAAEloC,CAAE,CAAC,EAACvI,EAAQ6yK,wBAAwB,WAAY,EAC/f7yK,EAAQkxI,sBAAsB,WAAY,EAAClxI,EAAQ8yK,yBAAyB,SAASt8J,EAAEC,GAAG,OAAOD,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQA,EAAE,EAAE,IAAIjO,EAAEkoC,EAAEA,EAAEj6B,EAAE,IAAI,OAAOC,GAAgB,CAA3B,QAAuBg6B,EAAEloC,CAAE,CAAC,EACjMvI,EAAQ4wI,0BAA0B,SAASp6H,EAAEC,EAAElO,GAAG,IAAIivD,EAAEx3D,EAAQoxI,eAA8F,OAA/E,kBAAkB7oI,GAAG,OAAOA,EAAaA,EAAE,kBAAZA,EAAEA,EAAE+b,QAA6B,EAAE/b,EAAEivD,EAAEjvD,EAAEivD,EAAGjvD,EAAEivD,EAAShhD,GAAG,KAAK,EAAE,IAAI1G,GAAG,EAAE,MAAM,KAAK,EAAEA,EAAE,IAAI,MAAM,KAAK,EAAEA,EAAE,WAAW,MAAM,KAAK,EAAEA,EAAE,IAAI,MAAM,QAAQA,EAAE,IAAmN,OAAzM0G,EAAE,CAACtK,GAAGugE,IAAI/4D,SAAS+C,EAAEy7J,cAAc17J,EAAEw7J,UAAUzpK,EAAE0pK,eAAvDniK,EAAEvH,EAAEuH,EAAoEgiK,WAAW,GAAGvpK,EAAEivD,GAAGhhD,EAAEs7J,UAAUvpK,EAAE2P,EAAED,EAAEzB,GAAG,OAAOpK,EAAE4L,IAAIxB,IAAIpK,EAAE6L,KAAKk5H,GAAG79C,EAAE9G,GAAGA,GAAG,GAAG2kD,GAAE,EAAG8X,EAAE17C,EAAEhlG,EAAEivD,MAAMhhD,EAAEs7J,UAAUhiK,EAAEoI,EAAEF,EAAExB,GAAGglG,GAAGF,IAAIE,GAAE,EAAGqqC,EAAEtiD,KAAY/sF,CAAE,EACpexW,EAAQgxI,qBAAqB75B,EAAEn3G,EAAQ+yK,sBAAsB,SAASv8J,GAAG,IAAIC,EAAEg6B,EAAE,OAAO,WAAW,IAAIloC,EAAEkoC,EAAEA,EAAEh6B,EAAE,IAAI,OAAOD,EAAErM,MAAM7C,KAAKgJ,UAAuB,CAA/C,QAA2CmgC,EAAEloC,CAAE,CAAC,CAAC,qCCf9JxI,EAAOC,QAAU,EAAjBD,sKCHF,IAqBIizK,EArBAC,EAAkB,CAAC,SAAU,cAM1B,SAAS5yC,EAAiB7/G,GAC7B,IAAKA,EACD,MAAO,GAEX,IAAIkH,EAAQzU,OAAO6W,iBAAiBtJ,GACpC,GAAIkH,EAAM04G,KACN,OAAO14G,EAAM04G,KAGjB,KADyC,KAArB14G,EAAMwrJ,YAEtB,MAAO,GAEX,IAAIC,EAAcF,EAAgBn7J,SAAS4P,EAAMyrJ,aAAezrJ,EAAMyrJ,YAAc,SACpF,MAAO,GAAG/3K,OAAOssB,EAAM0rJ,UAAW,KAAKh4K,OAAO+3K,EAAa,KAAK/3K,OAAOssB,EAAM8kH,WAAY,KAAKpxI,OAAOssB,EAAM2rJ,SAAU,OAAOj4K,OAAOssB,EAAMglH,WAAY,KAAKtxI,OAAOssB,EAAMwrJ,WAC1K,CAQM,SAASI,EAAY1jI,EAAMwwF,GAC9B,IACIh6H,GADS4sK,IAAiBA,EAAevhK,SAASa,cAAc,YAC/CihK,WAAW,MAEhC,IAAKntK,EACD,OAAO,KAEXA,EAAQg6H,KAAOA,EACf,IAAIt+G,EAAQ1b,EAAQktK,YAAY1jI,GAAM9tB,MACtC,OAAO/T,KAAKshD,KAAKvtC,EACpB,CAKM,SAAS0xJ,EAAiBhzJ,GAC7B,GAAwB,qBAAb/O,WAA6B+O,EACpC,OAAO,KAEX,IAAI4/G,EAAOC,EAAiB7/G,GAExBsB,EAAQwxJ,EADD9yJ,EAAQvd,OAASud,EAAQ87G,YACN8D,GAC9B,OAAc,OAAVt+G,EACO,MAEXtB,EAAQkH,MAAM5F,MAAQ,GAAG1mB,OAAO0mB,EAAO,MAChCA,EACV,CACD,2CCxCA,IAEIoqJ,EAAU,WAAa,EA2C3BnsK,EAAOC,QAAUksK,2CC5DjB,WAAiB,4CCAjB,WAAiB,oBCSjBnsK,EAAOC,QAVP,SAA2B2T,EAAKgnD,IACnB,MAAPA,GAAeA,EAAMhnD,EAAIhY,UAAQg/D,EAAMhnD,EAAIhY,QAE/C,IAAK,IAAIgM,EAAI,EAAG0rB,EAAO,IAAInpB,MAAMywD,GAAMhzD,EAAIgzD,EAAKhzD,IAC9C0rB,EAAK1rB,GAAKgM,EAAIhM,GAGhB,OAAO0rB,CACT,EAEoCtzB,EAAOC,QAAQ23D,YAAa,EAAM53D,EAAOC,QAAiB,QAAID,EAAOC,0BCNzGD,EAAOC,QAJP,SAAyB2T,GACvB,GAAIzJ,MAAMkD,QAAQuG,GAAM,OAAOA,CACjC,EAEkC5T,EAAOC,QAAQ23D,YAAa,EAAM53D,EAAOC,QAAiB,QAAID,EAAOC,0BCIvGD,EAAOC,QARP,SAAgCyY,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI21G,eAAe,6DAG3B,OAAO31G,CACT,EAEyC1Y,EAAOC,QAAQ23D,YAAa,EAAM53D,EAAOC,QAAiB,QAAID,EAAOC,0BCF9GD,EAAOC,QANP,SAAyBqG,EAAU+mH,GACjC,KAAM/mH,aAAoB+mH,GACxB,MAAM,IAAIhmH,UAAU,oCAExB,EAEkCrH,EAAOC,QAAQ23D,YAAa,EAAM53D,EAAOC,QAAiB,QAAID,EAAOC,0BCNvG,SAASqtH,EAAkBngH,EAAQ4J,GACjC,IAAK,IAAInP,EAAI,EAAGA,EAAImP,EAAMnb,OAAQgM,IAAK,CACrC,IAAIyzG,EAAatkG,EAAMnP,GACvByzG,EAAW5qF,WAAa4qF,EAAW5qF,aAAc,EACjD4qF,EAAWyH,cAAe,EACtB,UAAWzH,IAAYA,EAAW0H,UAAW,GACjDz3G,OAAOE,eAAe2B,EAAQkuG,EAAWt2G,IAAKs2G,EAChD,CACF,CAWAr7G,EAAOC,QATP,SAAsBotH,EAAauB,EAAYC,GAM7C,OALID,GAAYtB,EAAkBD,EAAY9mH,UAAWqoH,GACrDC,GAAavB,EAAkBD,EAAawB,GAChDvjH,OAAOE,eAAe6hH,EAAa,YAAa,CAC9CtK,UAAU,IAELsK,CACT,EAE+BrtH,EAAOC,QAAQ23D,YAAa,EAAM53D,EAAOC,QAAiB,QAAID,EAAOC,8BCnBpG,IAAI4V,EAAiB,EAAQ,MAEzB69J,EAA2B,EAAQ,MAEnCC,EAA4B,EAAQ,MAmBxC3zK,EAAOC,QAjBP,SAAsBwtH,GACpB,IAAIC,EAA4BgmD,IAChC,OAAO,WACL,IACIn+J,EADAy4G,EAAQn4G,EAAe43G,GAG3B,GAAIC,EAA2B,CAC7B,IAAIQ,EAAYr4G,EAAetO,MAAM2O,YACrCX,EAASo4G,QAAQC,UAAUI,EAAOz9G,UAAW29G,EAC/C,MACE34G,EAASy4G,EAAM5jH,MAAM7C,KAAMgJ,WAG7B,OAAOojK,EAA0BpsK,KAAMgO,EACzC,CACF,EAE+BvV,EAAOC,QAAQ23D,YAAa,EAAM53D,EAAOC,QAAiB,QAAID,EAAOC,0BCRpGD,EAAOC,QAfP,SAAyB4L,EAAK9G,EAAK7B,GAYjC,OAXI6B,KAAO8G,EACTP,OAAOE,eAAeK,EAAK9G,EAAK,CAC9B7B,MAAOA,EACPutB,YAAY,EACZqyF,cAAc,EACdC,UAAU,IAGZl3G,EAAI9G,GAAO7B,EAGN2I,CACT,EAEkC7L,EAAOC,QAAQ23D,YAAa,EAAM53D,EAAOC,QAAiB,QAAID,EAAOC,0BCfvG,SAASguH,EAAgBjpG,GAIvB,OAHAhlB,EAAOC,QAAUguH,EAAkB3iH,OAAOysD,eAAiBzsD,OAAOuK,eAAe9P,OAAS,SAAyBif,GACjH,OAAOA,EAAEgzC,WAAa1sD,OAAOuK,eAAemP,EAC9C,EAAGhlB,EAAOC,QAAQ23D,YAAa,EAAM53D,EAAOC,QAAiB,QAAID,EAAOC,QACjEguH,EAAgBjpG,EACzB,CAEAhlB,EAAOC,QAAUguH,EAAiBjuH,EAAOC,QAAQ23D,YAAa,EAAM53D,EAAOC,QAAiB,QAAID,EAAOC,8BCPvG,IAAI83D,EAAiB,EAAQ,MAoB7B/3D,EAAOC,QAlBP,SAAmBwuH,EAAUC,GAC3B,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIrnH,UAAU,sDAGtBonH,EAASloH,UAAY+E,OAAO7E,OAAOioH,GAAcA,EAAWnoH,UAAW,CACrE2P,YAAa,CACXhT,MAAOurH,EACP1L,UAAU,EACVD,cAAc,KAGlBx3G,OAAOE,eAAeijH,EAAU,YAAa,CAC3C1L,UAAU,IAER2L,GAAY32D,EAAe02D,EAAUC,EAC3C,EAE4B1uH,EAAOC,QAAQ23D,YAAa,EAAM53D,EAAOC,QAAiB,QAAID,EAAOC,0BCPjGD,EAAOC,QAbP,WACE,GAAuB,qBAAZ0tH,UAA4BA,QAAQC,UAAW,OAAO,EACjE,GAAID,QAAQC,UAAUC,KAAM,OAAO,EACnC,GAAqB,oBAAVC,MAAsB,OAAO,EAExC,IAEE,OADA9vD,QAAQz3D,UAAUiS,QAAQ/P,KAAKklH,QAAQC,UAAU5vD,QAAS,IAAI,WAAa,MACpE,CAGT,CAFE,MAAOjuD,GACP,OAAO,CACT,CACF,EAE4C/P,EAAOC,QAAQ23D,YAAa,EAAM53D,EAAOC,QAAiB,QAAID,EAAOC,0BCiBjHD,EAAOC,QA9BP,SAA+B2T,EAAKhM,GAClC,IAAI+xH,EAAY,MAAP/lH,EAAc,KAAyB,qBAAX4f,QAA0B5f,EAAI4f,OAAOC,WAAa7f,EAAI,cAE3F,GAAU,MAAN+lH,EAAJ,CACA,IAIIC,EAAI17D,EAJJ67D,EAAO,GACPC,GAAK,EACLC,GAAK,EAIT,IACE,IAAKN,EAAKA,EAAGlxH,KAAKmL,KAAQomH,GAAMJ,EAAKD,EAAGrnG,QAAQ9wB,QAC9Cu4H,EAAK3xH,KAAKwxH,EAAG12H,QAET0E,GAAKmyH,EAAKn+H,SAAWgM,GAH4BoyH,GAAK,GAc9D,CATE,MAAO72H,GACP82H,GAAK,EACL/7D,EAAK/6D,CACP,CAAE,QACA,IACO62H,GAAsB,MAAhBL,EAAW,QAAWA,EAAW,QAG9C,CAFE,QACA,GAAIM,EAAI,MAAM/7D,CAChB,CACF,CAEA,OAAO67D,CAxBe,CAyBxB,EAEwC/5H,EAAOC,QAAQ23D,YAAa,EAAM53D,EAAOC,QAAiB,QAAID,EAAOC,0BC1B7GD,EAAOC,QAJP,WACE,MAAM,IAAIoH,UAAU,4IACtB,EAEmCrH,EAAOC,QAAQ23D,YAAa,EAAM53D,EAAOC,QAAiB,QAAID,EAAOC,8BCJxG,IAAIuL,EAAiB,EAAQ,MAE7B,SAASi/G,EAAQ36F,EAAQ46F,GACvB,IAAI98G,EAAOtC,OAAOsC,KAAKkiB,GAEvB,GAAIxkB,OAAOynB,sBAAuB,CAChC,IAAI43F,EAAUr/G,OAAOynB,sBAAsBjD,GAC3C46F,IAAmBC,EAAUA,EAAQzzG,QAAO,SAAU0zG,GACpD,OAAOt/G,OAAOkpB,yBAAyB1E,EAAQ86F,GAAKn6F,UACtD,KAAK7iB,EAAKxF,KAAKgC,MAAMwD,EAAM+8G,EAC7B,CAEA,OAAO/8G,CACT,CAeA5N,EAAOC,QAbP,SAAwBkN,GACtB,IAAK,IAAIvF,EAAI,EAAGA,EAAI2I,UAAU3U,OAAQgM,IAAK,CACzC,IAAIW,EAAS,MAAQgI,UAAU3I,GAAK2I,UAAU3I,GAAK,CAAC,EACpDA,EAAI,EAAI6iH,EAAQn/G,OAAO/C,IAAS,GAAIzD,SAAQ,SAAUC,GACpDyG,EAAe2B,EAAQpI,EAAKwD,EAAOxD,GACrC,IAAKuG,OAAOw/G,0BAA4Bx/G,OAAOC,iBAAiB4B,EAAQ7B,OAAOw/G,0BAA0BviH,IAAWkiH,EAAQn/G,OAAO/C,IAASzD,SAAQ,SAAUC,GAC5JuG,OAAOE,eAAe2B,EAAQpI,EAAKuG,OAAOkpB,yBAAyBjsB,EAAQxD,GAC7E,GACF,CAEA,OAAOoI,CACT,EAEiCnN,EAAOC,QAAQ23D,YAAa,EAAM53D,EAAOC,QAAiB,QAAID,EAAOC,6BC5BtG,IAAI2zK,EAA+B,EAAQ,MAqB3C5zK,EAAOC,QAnBP,SAAkCsI,EAAQqqB,GACxC,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAC5B,IACIxD,EAAK6C,EADLuF,EAASymK,EAA6BrrK,EAAQqqB,GAGlD,GAAItnB,OAAOynB,sBAAuB,CAChC,IAAIC,EAAmB1nB,OAAOynB,sBAAsBxqB,GAEpD,IAAKX,EAAI,EAAGA,EAAIorB,EAAiBp3B,OAAQgM,IACvC7C,EAAMiuB,EAAiBprB,GACnBgrB,EAAS/uB,QAAQkB,IAAQ,GACxBuG,OAAO/E,UAAU0sB,qBAAqBxqB,KAAKF,EAAQxD,KACxDoI,EAAOpI,GAAOwD,EAAOxD,GAEzB,CAEA,OAAOoI,CACT,EAE2CnN,EAAOC,QAAQ23D,YAAa,EAAM53D,EAAOC,QAAiB,QAAID,EAAOC,0BCNhHD,EAAOC,QAfP,SAAuCsI,EAAQqqB,GAC7C,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAC5B,IAEIxD,EAAK6C,EAFLuF,EAAS,CAAC,EACV0lB,EAAavnB,OAAOsC,KAAKrF,GAG7B,IAAKX,EAAI,EAAGA,EAAIirB,EAAWj3B,OAAQgM,IACjC7C,EAAM8tB,EAAWjrB,GACbgrB,EAAS/uB,QAAQkB,IAAQ,IAC7BoI,EAAOpI,GAAOwD,EAAOxD,IAGvB,OAAOoI,CACT,EAEgDnN,EAAOC,QAAQ23D,YAAa,EAAM53D,EAAOC,QAAiB,QAAID,EAAOC,8BCfrH,IAAIgmH,EAAU,gBAEV4tD,EAAwB,EAAQ,MAYpC7zK,EAAOC,QAVP,SAAoCyY,EAAMjQ,GACxC,GAAIA,IAA2B,WAAlBw9G,EAAQx9G,IAAsC,oBAATA,GAChD,OAAOA,EACF,QAAa,IAATA,EACT,MAAM,IAAIpB,UAAU,4DAGtB,OAAOwsK,EAAsBn7J,EAC/B,EAE6C1Y,EAAOC,QAAQ23D,YAAa,EAAM53D,EAAOC,QAAiB,QAAID,EAAOC,0BCdlH,SAASstH,EAAgBvoG,EAAGf,GAK1B,OAJAjkB,EAAOC,QAAUstH,EAAkBjiH,OAAOysD,eAAiBzsD,OAAOysD,eAAehyD,OAAS,SAAyBif,EAAGf,GAEpH,OADAe,EAAEgzC,UAAY/zC,EACPe,CACT,EAAGhlB,EAAOC,QAAQ23D,YAAa,EAAM53D,EAAOC,QAAiB,QAAID,EAAOC,QACjEstH,EAAgBvoG,EAAGf,EAC5B,CAEAjkB,EAAOC,QAAUstH,EAAiBvtH,EAAOC,QAAQ23D,YAAa,EAAM53D,EAAOC,QAAiB,QAAID,EAAOC,8BCRvG,IAAI6zK,EAAiB,EAAQ,MAEzBC,EAAuB,EAAQ,MAE/BC,EAA6B,EAAQ,MAErCC,EAAkB,EAAQ,MAM9Bj0K,EAAOC,QAJP,SAAwB2T,EAAKhM,GAC3B,OAAOksK,EAAelgK,IAAQmgK,EAAqBngK,EAAKhM,IAAMosK,EAA2BpgK,EAAKhM,IAAMqsK,GACtG,EAEiCj0K,EAAOC,QAAQ23D,YAAa,EAAM53D,EAAOC,QAAiB,QAAID,EAAOC,0BCZtG,SAASgmH,EAAQp6G,GAGf,OAAQ7L,EAAOC,QAAUgmH,EAAU,mBAAqBzyF,QAAU,iBAAmBA,OAAOC,SAAW,SAAU5nB,GAC/G,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAO,mBAAqB2nB,QAAU3nB,EAAIqK,cAAgBsd,QAAU3nB,IAAQ2nB,OAAOjtB,UAAY,gBAAkBsF,CAC1H,EAAG7L,EAAOC,QAAQ23D,YAAa,EAAM53D,EAAOC,QAAiB,QAAID,EAAOC,QAAUgmH,EAAQp6G,EAC5F,CAEA7L,EAAOC,QAAUgmH,EAASjmH,EAAOC,QAAQ23D,YAAa,EAAM53D,EAAOC,QAAiB,QAAID,EAAOC,8BCV/F,IAAIi0K,EAAmB,EAAQ,MAW/Bl0K,EAAOC,QATP,SAAqC+kB,EAAGu+F,GACtC,GAAKv+F,EAAL,CACA,GAAiB,kBAANA,EAAgB,OAAOkvJ,EAAiBlvJ,EAAGu+F,GACtD,IAAInrG,EAAI9M,OAAO/E,UAAUgI,SAAS9F,KAAKuc,GAAGtlB,MAAM,GAAI,GAEpD,MADU,WAAN0Y,GAAkB4M,EAAE9O,cAAakC,EAAI4M,EAAE9O,YAAYvN,MAC7C,QAANyP,GAAqB,QAANA,EAAoBjO,MAAMsB,KAAKuZ,GACxC,cAAN5M,GAAqB,2CAA2CpG,KAAKoG,GAAW87J,EAAiBlvJ,EAAGu+F,QAAxG,CALc,CAMhB,EAE8CvjH,EAAOC,QAAQ23D,YAAa,EAAM53D,EAAOC,QAAiB,QAAID,EAAOC,UCV/Gk0K,yBAA2B,CAAC,EAGhC,SAAS98G,oBAAoBC,GAE5B,IAAI88G,EAAeD,yBAAyB78G,GAC5C,QAAqB1yD,IAAjBwvK,EACH,OAAOA,EAAan0K,QAGrB,IAAID,EAASm0K,yBAAyB78G,GAAY,CAGjDr3D,QAAS,CAAC,GAOX,OAHAo0K,oBAAoB/8G,GAAU7uD,KAAKzI,EAAOC,QAASD,EAAQA,EAAOC,QAASo3D,qBAGpEr3D,EAAOC,OACf,CAGAo3D,oBAAoBG,EAAI68G,oBCzBxBh9G,oBAAoBi9G,KAAO,CAAC,ECC5Bj9G,oBAAoBj/C,EAAI,SAASpY,GAChC,IAAIilB,EAASjlB,GAAUA,EAAO43D,WAC7B,WAAa,OAAO53D,EAAgB,OAAG,EACvC,WAAa,OAAOA,CAAQ,EAE7B,OADAq3D,oBAAoBI,EAAExyC,EAAQ,CAAExO,EAAGwO,IAC5BA,CACR,ECNAoyC,oBAAoBI,EAAI,SAASx3D,EAAS2f,GACzC,IAAI,IAAI7a,KAAO6a,EACXy3C,oBAAoBryC,EAAEpF,EAAY7a,KAASsyD,oBAAoBryC,EAAE/kB,EAAS8E,IAC5EuG,OAAOE,eAAevL,EAAS8E,EAAK,CAAE0rB,YAAY,EAAM3M,IAAKlE,EAAW7a,IAG3E,ECPAsyD,oBAAoBl/C,EAAI,CAAC,EAGzBk/C,oBAAoBtnD,EAAI,SAASwkK,GAChC,OAAOxzK,QAAQiG,IAAIsE,OAAOsC,KAAKypD,oBAAoBl/C,GAAGue,QAAO,SAASzvB,EAAUlC,GAE/E,OADAsyD,oBAAoBl/C,EAAEpT,GAAKwvK,EAASttK,GAC7BA,CACR,GAAG,IACJ,ECPAowD,oBAAoBqV,EAAI,SAAS6nG,GAEhC,MAAO,aAAeA,EAAf,oBACR,ECHAl9G,oBAAoBm9G,SAAW,SAASD,GAGxC,ECJAl9G,oBAAoBqB,EAAI,WACvB,GAA0B,kBAAfo1G,WAAyB,OAAOA,WAC3C,IACC,OAAOvmK,MAAQ,IAAI2+D,SAAS,cAAb,EAGhB,CAFE,MAAOn2D,GACR,GAAsB,kBAAXmD,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCAxBmkD,oBAAoBryC,EAAI,SAASnZ,EAAK0B,GAAQ,OAAOjC,OAAO/E,UAAUwP,eAAetN,KAAKoD,EAAK0B,EAAO,aCAtG,IAAIknK,EAAa,CAAC,EACdC,EAAoB,4BAExBr9G,oBAAoBxvD,EAAI,SAASnF,EAAKlB,EAAMuD,EAAKwvK,GAChD,GAAGE,EAAW/xK,GAAQ+xK,EAAW/xK,GAAK0F,KAAK5G,OAA3C,CACA,IAAIgsF,EAAQmnF,EACZ,QAAW/vK,IAARG,EAEF,IADA,IAAImpK,EAAUx8J,SAASm8E,qBAAqB,UACpCjmF,EAAI,EAAGA,EAAIsmK,EAAQtyK,OAAQgM,IAAK,CACvC,IAAIiwD,EAAIq2G,EAAQtmK,GAChB,GAAGiwD,EAAE53C,aAAa,QAAUvd,GAAOm1D,EAAE53C,aAAa,iBAAmBy0J,EAAoB3vK,EAAK,CAAEyoF,EAAS31B,EAAG,KAAO,CACpH,CAEG21B,IACHmnF,GAAa,GACbnnF,EAAS97E,SAASa,cAAc,WAEzBqiK,QAAU,QACjBpnF,EAAO/pF,QAAU,IACb4zD,oBAAoBw9G,IACvBrnF,EAAO96E,aAAa,QAAS2kD,oBAAoBw9G,IAElDrnF,EAAO96E,aAAa,eAAgBgiK,EAAoB3vK,GACxDyoF,EAAOj5D,IAAM7xB,GAEd+xK,EAAW/xK,GAAO,CAAClB,GACnB,IAAIszK,EAAmB,SAAS79H,EAAM7wB,GAErConE,EAAOvpF,QAAUupF,EAAOx+D,OAAS,KACjCrC,aAAalpB,GACb,IAAIsxK,EAAUN,EAAW/xK,GAIzB,UAHO+xK,EAAW/xK,GAClB8qF,EAAOrsE,YAAcqsE,EAAOrsE,WAAWC,YAAYosE,GACnDunF,GAAWA,EAAQjwK,SAAQ,SAASsH,GAAM,OAAOA,EAAGga,EAAQ,IACzD6wB,EAAM,OAAOA,EAAK7wB,EACtB,EAEI3iB,EAAUK,WAAWgxK,EAAiB/uK,KAAK,UAAMnB,EAAW,CAAEY,KAAM,UAAW2H,OAAQqgF,IAAW,MACtGA,EAAOvpF,QAAU6wK,EAAiB/uK,KAAK,KAAMynF,EAAOvpF,SACpDupF,EAAOx+D,OAAS8lJ,EAAiB/uK,KAAK,KAAMynF,EAAOx+D,QACnD2lJ,GAAcjjK,SAASk8E,KAAKjtE,YAAY6sE,EApCkB,CAqC3D,KCxCAn2B,oBAAoBp/C,EAAI,SAAShY,GACX,qBAAXuzB,QAA0BA,OAAOkkC,aAC1CpsD,OAAOE,eAAevL,EAASuzB,OAAOkkC,YAAa,CAAEx0D,MAAO,WAE7DoI,OAAOE,eAAevL,EAAS,aAAc,CAAEiD,OAAO,GACvD,ECNAm0D,oBAAoBpzC,EAAI,eCKxB,IAAI+wJ,EAAkB,CACrB,IAAK,GAGN39G,oBAAoBl/C,EAAEqjD,EAAI,SAAS+4G,EAASttK,GAE1C,IAAIguK,EAAqB59G,oBAAoBryC,EAAEgwJ,EAAiBT,GAAWS,EAAgBT,QAAW3vK,EACtG,GAA0B,IAAvBqwK,EAGF,GAAGA,EACFhuK,EAASmB,KAAK6sK,EAAmB,QAC3B,CAGL,IAAIztK,EAAU,IAAIzG,SAAQ,SAASC,EAASC,GAAUg0K,EAAqBD,EAAgBT,GAAW,CAACvzK,EAASC,EAAS,IACzHgG,EAASmB,KAAK6sK,EAAmB,GAAKztK,GAGtC,IAAI9E,EAAM20D,oBAAoBpzC,EAAIozC,oBAAoBqV,EAAE6nG,GAEpD9pK,EAAQ,IAAIrP,MAgBhBi8D,oBAAoBxvD,EAAEnF,GAfH,SAAS0jB,GAC3B,GAAGixC,oBAAoBryC,EAAEgwJ,EAAiBT,KAEf,KAD1BU,EAAqBD,EAAgBT,MACRS,EAAgBT,QAAW3vK,GACrDqwK,GAAoB,CACtB,IAAIC,EAAY9uJ,IAAyB,SAAfA,EAAM5gB,KAAkB,UAAY4gB,EAAM5gB,MAChE2vK,EAAU/uJ,GAASA,EAAMjZ,QAAUiZ,EAAMjZ,OAAOonB,IACpD9pB,EAAMzC,QAAU,iBAAmBusK,EAAU,cAAgBW,EAAY,KAAOC,EAAU,IAC1F1qK,EAAM9B,KAAO,iBACb8B,EAAMjF,KAAO0vK,EACbzqK,EAAM1I,QAAUozK,EAChBF,EAAmB,GAAGxqK,EACvB,CAEF,GACyC,SAAW8pK,EAASA,EAE/D,CAEH,EAaA,IAAIa,EAAuB,SAASC,EAA4Bj0K,GAC/D,IAKIk2D,EAAUi9G,EALVe,EAAWl0K,EAAK,GAChBm0K,EAAcn0K,EAAK,GACnBomC,EAAUpmC,EAAK,GAGIwG,EAAI,EAC3B,GAAG0tK,EAASh5J,MAAK,SAASnQ,GAAM,OAA+B,IAAxB6oK,EAAgB7oK,EAAW,IAAI,CACrE,IAAImrD,KAAYi+G,EACZl+G,oBAAoBryC,EAAEuwJ,EAAaj+G,KACrCD,oBAAoBG,EAAEF,GAAYi+G,EAAYj+G,IAGhD,GAAG9vB,EAAsBA,EAAQ6vB,oBAClC,CAEA,IADGg+G,GAA4BA,EAA2Bj0K,GACrDwG,EAAI0tK,EAAS15K,OAAQgM,IACzB2sK,EAAUe,EAAS1tK,GAChByvD,oBAAoBryC,EAAEgwJ,EAAiBT,IAAYS,EAAgBT,IACrES,EAAgBT,GAAS,KAE1BS,EAAgBT,GAAW,CAG7B,EAEIiB,EAAqB98J,KAA2C,qCAAIA,KAA2C,sCAAK,GACxH88J,EAAmB1wK,QAAQswK,EAAqBrvK,KAAK,KAAM,IAC3DyvK,EAAmBptK,KAAOgtK,EAAqBrvK,KAAK,KAAMyvK,EAAmBptK,KAAKrC,KAAKyvK,uHCvFxE,SAAS,EAAgBlvK,EAAU+mH,GAChD,KAAM/mH,aAAoB+mH,GACxB,MAAM,IAAIhmH,UAAU,oCAExB,CCJA,SAASimH,EAAkBngH,EAAQ4J,GACjC,IAAK,IAAInP,EAAI,EAAGA,EAAImP,EAAMnb,OAAQgM,IAAK,CACrC,IAAIyzG,EAAatkG,EAAMnP,GACvByzG,EAAW5qF,WAAa4qF,EAAW5qF,aAAc,EACjD4qF,EAAWyH,cAAe,EACtB,UAAWzH,IAAYA,EAAW0H,UAAW,GACjDz3G,OAAOE,eAAe2B,EAAQkuG,EAAWt2G,IAAKs2G,EAChD,CACF,CAEe,SAAS,EAAagS,EAAauB,EAAYC,GAM5D,OALID,GAAYtB,EAAkBD,EAAY9mH,UAAWqoH,GACrDC,GAAavB,EAAkBD,EAAawB,GAChDvjH,OAAOE,eAAe6hH,EAAa,YAAa,CAC9CtK,UAAU,IAELsK,CACT,CCjBe,SAASE,EAAgBvoG,EAAGf,GAKzC,OAJAspG,EAAkBjiH,OAAOysD,eAAiBzsD,OAAOysD,eAAehyD,OAAS,SAAyBif,EAAGf,GAEnG,OADAe,EAAEgzC,UAAY/zC,EACPe,CACT,EACOuoG,EAAgBvoG,EAAGf,EAC5B,CCLe,SAAS,EAAUwqG,EAAUC,GAC1C,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIrnH,UAAU,sDAGtBonH,EAASloH,UAAY+E,OAAO7E,OAAOioH,GAAcA,EAAWnoH,UAAW,CACrE2P,YAAa,CACXhT,MAAOurH,EACP1L,UAAU,EACVD,cAAc,KAGlBx3G,OAAOE,eAAeijH,EAAU,YAAa,CAC3C1L,UAAU,IAER2L,GAAY,EAAeD,EAAUC,EAC3C,CCjBe,SAAST,EAAgBjpG,GAItC,OAHAipG,EAAkB3iH,OAAOysD,eAAiBzsD,OAAOuK,eAAe9P,OAAS,SAAyBif,GAChG,OAAOA,EAAEgzC,WAAa1sD,OAAOuK,eAAemP,EAC9C,EACOipG,EAAgBjpG,EACzB,CCLe,SAASihG,EAAQp6G,GAG9B,OAAOo6G,EAAU,mBAAqBzyF,QAAU,iBAAmBA,OAAOC,SAAW,SAAU5nB,GAC7F,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAO,mBAAqB2nB,QAAU3nB,EAAIqK,cAAgBsd,QAAU3nB,IAAQ2nB,OAAOjtB,UAAY,gBAAkBsF,CAC1H,EAAGo6G,EAAQp6G,EACb,CCRe,SAAS,EAAuB6M,GAC7C,QAAa,IAATA,EACF,MAAM,IAAI21G,eAAe,6DAG3B,OAAO31G,CACT,CCJe,SAASy1G,EAA2Bz1G,EAAMjQ,GACvD,GAAIA,IAA2B,WAAlBw9G,EAAQx9G,IAAsC,oBAATA,GAChD,OAAOA,EACF,QAAa,IAATA,EACT,MAAM,IAAIpB,UAAU,4DAGtB,OAAO,EAAsBqR,EAC/B,CCPe,SAAS,EAAa+0G,GACnC,IAAIC,ECJS,WACb,GAAuB,qBAAZC,UAA4BA,QAAQC,UAAW,OAAO,EACjE,GAAID,QAAQC,UAAUC,KAAM,OAAO,EACnC,GAAqB,oBAAVC,MAAsB,OAAO,EAExC,IAEE,OADA9vD,QAAQz3D,UAAUiS,QAAQ/P,KAAKklH,QAAQC,UAAU5vD,QAAS,IAAI,WAAa,MACpE,CAGT,CAFE,MAAOjuD,IACP,OAAO,CACT,CACF,CDPkC,GAChC,OAAO,WACL,IACIwF,EADAy4G,EAAQ,EAAeP,GAG3B,GAAIC,EAA2B,CAC7B,IAAIQ,EAAY,EAAe3mH,MAAM2O,YACrCX,EAASo4G,QAAQC,UAAUI,EAAOz9G,UAAW29G,EAC/C,MACE34G,EAASy4G,EAAM5jH,MAAM7C,KAAMgJ,WAG7B,OAAO,EAA0BhJ,KAAMgO,EACzC,CACF,CElBe,SAAS,EAAgB1J,EAAK9G,EAAK7B,GAYhD,OAXI6B,KAAO8G,EACTP,OAAOE,eAAeK,EAAK9G,EAAK,CAC9B7B,MAAOA,EACPutB,YAAY,EACZqyF,cAAc,EACdC,UAAU,IAGZl3G,EAAI9G,GAAO7B,EAGN2I,CACT,CCXA,SAAS4+G,EAAQ36F,EAAQ46F,GACvB,IAAI98G,EAAOtC,OAAOsC,KAAKkiB,GAEvB,GAAIxkB,OAAOynB,sBAAuB,CAChC,IAAI43F,EAAUr/G,OAAOynB,sBAAsBjD,GAC3C46F,IAAmBC,EAAUA,EAAQzzG,QAAO,SAAU0zG,GACpD,OAAOt/G,OAAOkpB,yBAAyB1E,EAAQ86F,GAAKn6F,UACtD,KAAK7iB,EAAKxF,KAAKgC,MAAMwD,EAAM+8G,EAC7B,CAEA,OAAO/8G,CACT,CAEe,SAASggK,EAAezgK,GACrC,IAAK,IAAIvF,EAAI,EAAGA,EAAI2I,UAAU3U,OAAQgM,IAAK,CACzC,IAAIW,EAAS,MAAQgI,UAAU3I,GAAK2I,UAAU3I,GAAK,CAAC,EACpDA,EAAI,EAAI6iH,EAAQn/G,OAAO/C,IAAS,GAAIzD,SAAQ,SAAUC,GACpD,EAAeoI,EAAQpI,EAAKwD,EAAOxD,GACrC,IAAKuG,OAAOw/G,0BAA4Bx/G,OAAOC,iBAAiB4B,EAAQ7B,OAAOw/G,0BAA0BviH,IAAWkiH,EAAQn/G,OAAO/C,IAASzD,SAAQ,SAAUC,GAC5JuG,OAAOE,eAAe2B,EAAQpI,EAAKuG,OAAOkpB,yBAAyBjsB,EAAQxD,GAC7E,GACF,CAEA,OAAOoI,CACT,CC1Be,SAAS,EAA8B5E,EAAQqqB,GAC5D,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAC5B,IAEIxD,EAAK6C,EAFLuF,EAAS,CAAC,EACV0lB,EAAavnB,OAAOsC,KAAKrF,GAG7B,IAAKX,EAAI,EAAGA,EAAIirB,EAAWj3B,OAAQgM,IACjC7C,EAAM8tB,EAAWjrB,GACbgrB,EAAS/uB,QAAQkB,IAAQ,IAC7BoI,EAAOpI,GAAOwD,EAAOxD,IAGvB,OAAOoI,CACT,CCZe,SAAS2lB,EAAyBvqB,EAAQqqB,GACvD,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAC5B,IACIxD,EAAK6C,EADLuF,EAAS,EAA6B5E,EAAQqqB,GAGlD,GAAItnB,OAAOynB,sBAAuB,CAChC,IAAIC,EAAmB1nB,OAAOynB,sBAAsBxqB,GAEpD,IAAKX,EAAI,EAAGA,EAAIorB,EAAiBp3B,OAAQgM,IACvC7C,EAAMiuB,EAAiBprB,GACnBgrB,EAAS/uB,QAAQkB,IAAQ,GACxBuG,OAAO/E,UAAU0sB,qBAAqBxqB,KAAKF,EAAQxD,KACxDoI,EAAOpI,GAAOwD,EAAOxD,GAEzB,CAEA,OAAOoI,CACT,4DClBIsoK,EAAU,uCCGDC,EAAsB,CAAC,MAAO,KAAM,KAAM,KAAM,KAAM,MACtDC,EAAyB,KAChCC,EAA4BzrD,EAAAA,cAAoB,CACpD+8C,SAAU,CAAC,EACX2O,YAAaH,EACbI,cAAeH,IAKbC,EAFFvE,SAEEuE,EADFxE,SAuBK,SAAS2E,EAAmB72G,EAAQ82G,GACzC,IACE9O,GACExW,EAAAA,EAAAA,YAAWklB,GADb1O,SAEF,OAAOhoG,GAAUgoG,EAAS8O,IAAkBA,CAC7C,CACM,SAASC,IAId,OADIvlB,EAAAA,EAAAA,YAAWklB,GADbC,WAGH,CACM,SAASK,IAId,OADIxlB,EAAAA,EAAAA,YAAWklB,GADbE,aAGH,CACM,SAASK,IAId,MAAe,SADXzlB,EAAAA,EAAAA,YAAWklB,GADbviG,GAGH,CAyBD,oCC7EM+iG,EAAa,SAAAzgK,GAAG,OAAIA,EAAI,GAAGrS,eFLA8qB,EEKyBzY,EFJjDyY,EAAO3d,QAAQglK,GAAS,SAAU98G,EAAG09G,GAC1C,OAAOA,EAAI/yK,aACZ,KEE4D5D,MAAM,GFLtD,IAAkB0uB,CEKX,EAGP,SAASkoJ,EAAmBp3G,GAInC,6DAAJ,CAAC,EAAG,IAHN06C,YAAAA,OAGM,MAHQw8D,EAAWl3G,GAGnB,EAFNywD,EAEM,EAFNA,UACAhW,EACM,EADNA,aAEM48D,EAA2BpsD,EAAAA,YAAiB,WAK/CjvG,GAAQ,IAJTqF,EAIS,EAJTA,UACAi2J,EAGS,EAHTA,SAGS,IAFTC,GAAIC,OAEK,MAFC/mD,GAAa,MAEd,EADN54G,EACM,OACH4/J,EAAiBZ,EAAmBS,EAAUt3G,GACpD,OAAoB03G,EAAAA,EAAAA,KAAKF,EAAD,GACtBx7J,IAAKA,EACLqF,UAAW7I,IAAW6I,EAAWo2J,IAC9B5/J,GAEN,IAGD,OAFAw/J,EAAY58D,aAAeA,EAC3B48D,EAAY38D,YAAcA,EACnB28D,CACR,CC7BD,MAAeD,EAAmB,YCCrBO,EAAe,SAACC,GAA0B,IAAhBrkK,EAAgB,uDAAT,KAC5C,OAAgB,MAAZqkK,EAAyBv/J,OAAOu/J,GAC7BrkK,GAAQ,IAChB,EACD,EALuC03G,EAAAA,cAAoB,MCD5C,SAAS,IActB,OAbA,EAAW7+G,OAAOQ,OAASR,OAAOQ,OAAO/F,OAAS,SAAUoH,GAC1D,IAAK,IAAIvF,EAAI,EAAGA,EAAI2I,UAAU3U,OAAQgM,IAAK,CACzC,IAAIW,EAASgI,UAAU3I,GAEvB,IAAK,IAAI7C,KAAOwD,EACV+C,OAAO/E,UAAUwP,eAAetN,KAAKF,EAAQxD,KAC/CoI,EAAOpI,GAAOwD,EAAOxD,GAG3B,CAEA,OAAOoI,CACT,EACO,EAAS/C,MAAM7C,KAAMgJ,UAC9B,4DCgBO,SAASwmK,EAAWhyK,GACzB,MAAO,UAAYA,EAAIkO,OAAO,GAAG3P,cAAgByB,EAAI0O,OAAO,EAC7D,CC9BD,SAAS2mH,EAAexiH,GAAO,IAAI7S,EAEnC,SAAsB27C,EAAOyxC,GAAQ,GAAqB,kBAAVzxC,GAAgC,OAAVA,EAAgB,OAAOA,EAAO,IAAI25E,EAAO35E,EAAMltB,OAAO8mG,aAAc,QAAa11H,IAATy1H,EAAoB,CAAE,IAAIl8F,EAAMk8F,EAAK5xH,KAAKi4C,EAAOyxC,GAAQ,WAAY,GAAmB,kBAARh0D,EAAkB,OAAOA,EAAK,MAAM,IAAI92B,UAAU,+CAAkD,CAAC,OAAiB,WAAT8qF,EAAoB56E,OAASsuD,QAAQnlB,EAAS,CAFhV65E,CAAa3iH,EAAK,UAAW,MAAsB,kBAAR7S,EAAmBA,EAAMwS,OAAOxS,EAAO,CAO3H,SAASiyK,EAAoBC,EAAW/mJ,EAAcoa,GACpD,IAAI4sI,GAAanmB,EAAAA,EAAAA,aAAqBnsJ,IAAdqyK,GAEpBE,GAAYnmB,EAAAA,EAAAA,UAAS9gI,GACrBknJ,EAAaD,EAAU,GACvB/hG,EAAW+hG,EAAU,GAErBE,OAAuBzyK,IAAdqyK,EACTK,EAAUJ,EAAWvgJ,QAWzB,OAVAugJ,EAAWvgJ,QAAU0gJ,GAMhBA,GAAUC,GAAWF,IAAelnJ,GACvCklD,EAASllD,GAGJ,CAACmnJ,EAASJ,EAAYG,GAAY3mB,EAAAA,EAAAA,cAAY,SAAUvtJ,GAC7D,IAAK,IAAImc,EAAO9O,UAAU3U,OAAQ0U,EAAO,IAAInG,MAAMkV,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IAClGhP,EAAKgP,EAAO,GAAK/O,UAAU+O,GAGzBgrB,GAASA,EAAQlgC,WAAM,EAAQ,CAAClH,GAAO7H,OAAOiV,IAClD8kE,EAASlyE,EACV,GAAE,CAAConC,IACL,CAGc,SAASitI,EAAgBxgK,EAAOjW,GAC7C,OAAOwK,OAAOsC,KAAK9M,GAAQ41B,QAAO,SAAUnhB,EAAQiiK,GAClD,IAAIC,EAEAr+J,EAAO7D,EACP2a,EAAe9W,EAAKs+J,EAAiBF,IACrCG,EAAav+J,EAAKo+J,GAClB3qG,EAAOl6C,EAA8BvZ,EAAM,CAACs+J,EAAiBF,GAAYA,GAAWj9J,IAAI6/G,IAExFw9C,EAAc92K,EAAO02K,GAErBK,EAAuBb,EAAoBW,EAAYznJ,EAAcnZ,EAAM6gK,IAC3E10K,EAAQ20K,EAAqB,GAC7BvtI,EAAUutI,EAAqB,GAEnC,OAAOrtD,EAAS,CAAC,EAAG39C,IAAO4qG,EAAY,CAAC,GAAaD,GAAat0K,EAAOu0K,EAAUG,GAAettI,EAASmtI,GAC5G,GAAE1gK,EACJ,CClDD,SAAS+zI,IAEP,IAAIlsI,EAAQrX,KAAK2O,YAAY6jG,yBAAyBxyG,KAAKwP,MAAOxP,KAAKqX,OACzD,OAAVA,QAA4Bha,IAAVga,GACpBrX,KAAK6tE,SAASx2D,EAEjB,CAED,SAAS6rI,EAA0Bl8B,GAQjChnH,KAAK6tE,SALL,SAAiB45C,GACf,IAAIpwG,EAAQrX,KAAK2O,YAAY6jG,yBAAyBwU,EAAWS,GACjE,OAAiB,OAAVpwG,QAA4Bha,IAAVga,EAAsBA,EAAQ,IACxD,EAEqB7Y,KAAKwB,MAC5B,CAED,SAASssJ,EAAoBtlC,EAAWU,GACtC,IACE,IAAI6T,EAAYv7H,KAAKwP,MACjBi4G,EAAYznH,KAAKqX,MACrBrX,KAAKwP,MAAQw3G,EACbhnH,KAAKqX,MAAQqwG,EACb1nH,KAAKuwK,6BAA8B,EACnCvwK,KAAKwwK,wBAA0BxwK,KAAKqjJ,wBAClC9nB,EACA9T,EAKH,CAbD,QAWEznH,KAAKwP,MAAQ+rH,EACbv7H,KAAKqX,MAAQowG,CACd,CACF,CAID87B,EAAmBktB,8BAA+B,EAClDvtB,EAA0ButB,8BAA+B,EACzDnkB,EAAoBmkB,8BAA+B,sCC3C7CC,EAA2B9tD,EAAAA,YAAiB,WAK/CjvG,GAAQ,IAJTs7J,EAIS,EAJTA,SACAj2J,EAGS,EAHTA,UACAk2J,EAES,EAFTA,GACG1/J,EACM,OACTy/J,EAAWT,EAAmBS,EAAU,gBACxC,IAAM7mD,EAAY8mD,IAAO1/J,EAAMtE,KAAO,IAAM,QAC5C,OAAoBmkK,EAAAA,EAAAA,KAAKjnD,EAAD,EAAC,KAAgB54G,GAAjB,IACtBmE,IAAKA,EACLqF,UAAW7I,IAAW6I,EAAWi2J,KAEpC,IACDyB,EAAYr+D,YAAc,cAC1B,QCbe,SAASkwB,EAAc9pH,GACpC,OAAOA,GAAQA,EAAK8pH,eAAiBp4H,QACtC,CCCc,SAASqY,EAAiB/J,EAAMk4J,GAC7C,OCFa,SAAqBl4J,GAClC,IAAI8kJ,EAAMh7B,EAAc9pH,GACxB,OAAO8kJ,GAAOA,EAAIlwC,aAAe1hH,MAClC,CDDQw0J,CAAY1nJ,GAAM+J,iBAAiB/J,EAAMk4J,EACjD,CEVD,IAAIC,EAAS,WCMb,IAAIC,EAAY,OACD,SAASC,EAAmBjqJ,GACzC,ODPa,SAAmBA,GAChC,OAAOA,EAAO3d,QAAQ0nK,EAAQ,OAAOnzK,aACtC,CCKQszK,CAAUlqJ,GAAQ3d,QAAQ2nK,EAAW,OAC7C,CCTD,IAAIG,EAAsB,8EC+B1B,MA3BA,SAAev4J,EAAML,GACnB,IAAIykF,EAAM,GACN38E,EAAa,GAEjB,GAAwB,kBAAb9H,EACT,OAAOK,EAAK2H,MAAMqkJ,iBAAiBsM,EAAU34J,KAAcoK,EAAiB/J,GAAMgsJ,iBAAiBsM,EAAU34J,IAG/GrU,OAAOsC,KAAK+R,GAAU7a,SAAQ,SAAUC,GACtC,IAAI7B,EAAQyc,EAAS5a,GAEhB7B,GAAmB,IAAVA,GDdH,SAAqBA,GAClC,SAAUA,IAASq1K,EAAoBvmK,KAAK9O,GAC7C,CCccs1K,CAAYzzK,GAGrBq/F,GAAOk0E,EAAUvzK,GAAO,KAAO7B,EAAQ,IAFvCukB,GAAc1iB,EAAM,IAAM7B,EAAQ,KAFlC8c,EAAK2H,MAAM8wJ,eAAeH,EAAUvzK,GAMvC,IAEG0iB,IACF28E,GAAO,cAAgB38E,EAAa,KAGtCzH,EAAK2H,MAAMC,SAAW,IAAMw8E,CAC7B,EC5Bc,SAAS,GAAeqqB,EAAUC,GAC/CD,EAASloH,UAAY+E,OAAO7E,OAAOioH,EAAWnoH,WAC9CkoH,EAASloH,UAAU2P,YAAcu4G,EACjC,EAAeA,EAAUC,EAC3B,kCCLA,IACY,ECAZ,GAAevE,EAAAA,cAAoB,MCDxBuuD,GAAc,SAAqB14J,GAC5C,OAAOA,EAAKwI,SACb,ECOUmwJ,GAAY,YACZC,GAAS,SACTC,GAAW,WACXC,GAAU,UACVC,GAAU,UA6FjBC,GAA0B,SAAUtQ,GAGtC,SAASsQ,EAAWjiK,EAAO1Q,GACzB,IAAI0oH,EAEJA,EAAQ25C,EAAiBjgK,KAAKlB,KAAMwP,EAAO1Q,IAAYkB,KACvD,IAGI0xK,EADAC,EAFc7yK,MAEuB8yK,WAAapiK,EAAMqiK,MAAQriK,EAAMmiK,OAuB1E,OArBAnqD,EAAMsqD,aAAe,KAEjBtiK,EAAMuiK,GACJJ,GACFD,EAAgBL,GAChB7pD,EAAMsqD,aAAeR,IAErBI,EAAgBH,GAIhBG,EADEliK,EAAMwiK,eAAiBxiK,EAAMyiK,aACfb,GAEAC,GAIpB7pD,EAAMnwG,MAAQ,CACZ5b,OAAQi2K,GAEVlqD,EAAM0qD,aAAe,KACd1qD,CACR,CAhCD2qD,GAAeV,EAAYtQ,GAkC3BsQ,EAAWj/D,yBAA2B,SAAkC3gG,EAAM41G,GAG5E,OAFa51G,EAAKkgK,IAEJtqD,EAAUhsH,SAAW21K,GAC1B,CACL31K,OAAQ41K,IAIL,IACR,EAkBD,IAAIe,EAASX,EAAWzyK,UAkPxB,OAhPAozK,EAAO5uB,kBAAoB,WACzBxjJ,KAAKqyK,cAAa,EAAMryK,KAAK8xK,aAC9B,EAEDM,EAAO7lB,mBAAqB,SAA4BhxB,GACtD,IAAI+2C,EAAa,KAEjB,GAAI/2C,IAAcv7H,KAAKwP,MAAO,CAC5B,IAAI/T,EAASuE,KAAKqX,MAAM5b,OAEpBuE,KAAKwP,MAAMuiK,GACTt2K,IAAW61K,IAAY71K,IAAW81K,KACpCe,EAAahB,IAGX71K,IAAW61K,IAAY71K,IAAW81K,KACpCe,EAAad,GAGlB,CAEDxxK,KAAKqyK,cAAa,EAAOC,EAC1B,EAEDF,EAAOliB,qBAAuB,WAC5BlwJ,KAAKuyK,oBACN,EAEDH,EAAOI,YAAc,WACnB,IACIvK,EAAM4J,EAAOF,EADbz1K,EAAU8D,KAAKwP,MAAMtT,QAWzB,OATA+rK,EAAO4J,EAAQF,EAASz1K,EAET,MAAXA,GAAsC,kBAAZA,IAC5B+rK,EAAO/rK,EAAQ+rK,KACf4J,EAAQ31K,EAAQ21K,MAEhBF,OAA4Bt0K,IAAnBnB,EAAQy1K,OAAuBz1K,EAAQy1K,OAASE,GAGpD,CACL5J,KAAMA,EACN4J,MAAOA,EACPF,OAAQA,EAEX,EAEDS,EAAOC,aAAe,SAAsBI,EAAUH,GAKpD,QAJiB,IAAbG,IACFA,GAAW,GAGM,OAAfH,EAIF,GAFAtyK,KAAKuyK,qBAEDD,IAAehB,GAAU,CAC3B,GAAItxK,KAAKwP,MAAMwiK,eAAiBhyK,KAAKwP,MAAMyiK,aAAc,CACvD,IAAIx5J,EAAOzY,KAAKwP,MAAMwqJ,QAAUh6J,KAAKwP,MAAMwqJ,QAAQ5qI,QAAUsjJ,GAAAA,YAAqB1yK,MAI9EyY,GAAM04J,GAAY14J,EACvB,CAEDzY,KAAK2yK,aAAaF,EACnB,MACCzyK,KAAK4yK,mBAEE5yK,KAAKwP,MAAMwiK,eAAiBhyK,KAAKqX,MAAM5b,SAAW41K,IAC3DrxK,KAAK6tE,SAAS,CACZpyE,OAAQ21K,IAGb,EAEDgB,EAAOO,aAAe,SAAsBF,GAC1C,IAAI92C,EAAS37H,KAET6xK,EAAQ7xK,KAAKwP,MAAMqiK,MACnBgB,EAAY7yK,KAAKlB,QAAUkB,KAAKlB,QAAQ8yK,WAAaa,EAErDvgK,EAAQlS,KAAKwP,MAAMwqJ,QAAU,CAAC6Y,GAAa,CAACH,GAAAA,YAAqB1yK,MAAO6yK,GACxEC,EAAY5gK,EAAM,GAClB6gK,EAAiB7gK,EAAM,GAEvB8gK,EAAWhzK,KAAKwyK,cAChBS,EAAeJ,EAAYG,EAASrB,OAASqB,EAASnB,OAGrDY,IAAaZ,GAASt4K,GACzByG,KAAKkzK,aAAa,CAChBz3K,OAAQ81K,KACP,WACD51C,EAAOnsH,MAAM2jK,UAAUL,EACxB,KAIH9yK,KAAKwP,MAAM4jK,QAAQN,EAAWC,GAC9B/yK,KAAKkzK,aAAa,CAChBz3K,OAAQ61K,KACP,WACD31C,EAAOnsH,MAAM6jK,WAAWP,EAAWC,GAEnCp3C,EAAO23C,gBAAgBL,GAAc,WACnCt3C,EAAOu3C,aAAa,CAClBz3K,OAAQ81K,KACP,WACD51C,EAAOnsH,MAAM2jK,UAAUL,EAAWC,EACnC,GACF,GACF,IACF,EAEDX,EAAOQ,YAAc,WACnB,IAAIr2C,EAASv8H,KAETioK,EAAOjoK,KAAKwP,MAAMy4J,KAClB+K,EAAWhzK,KAAKwyK,cAChBM,EAAY9yK,KAAKwP,MAAMwqJ,aAAU38J,EAAYq1K,GAAAA,YAAqB1yK,MAEjEioK,IAAQ1uK,IASbyG,KAAKwP,MAAMw4J,OAAO8K,GAClB9yK,KAAKkzK,aAAa,CAChBz3K,OAAQ+1K,KACP,WACDj1C,EAAO/sH,MAAM+jK,UAAUT,GAEvBv2C,EAAO+2C,gBAAgBN,EAAS/K,MAAM,WACpC1rC,EAAO22C,aAAa,CAClBz3K,OAAQ41K,KACP,WACD90C,EAAO/sH,MAAMgkK,SAASV,EACvB,GACF,GACF,KArBC9yK,KAAKkzK,aAAa,CAChBz3K,OAAQ41K,KACP,WACD90C,EAAO/sH,MAAMgkK,SAASV,EACvB,GAkBJ,EAEDV,EAAOG,mBAAqB,WACA,OAAtBvyK,KAAKkyK,eACPlyK,KAAKkyK,aAAal0K,SAClBgC,KAAKkyK,aAAe,KAEvB,EAEDE,EAAOc,aAAe,SAAsBxrD,EAAWt7G,GAIrDA,EAAWpM,KAAKyzK,gBAAgBrnK,GAChCpM,KAAK6tE,SAAS65C,EAAWt7G,EAC1B,EAEDgmK,EAAOqB,gBAAkB,SAAyBrnK,GAChD,IAAIsnK,EAAS1zK,KAETqvF,GAAS,EAcb,OAZArvF,KAAKkyK,aAAe,SAAUrzJ,GACxBwwE,IACFA,GAAS,EACTqkF,EAAOxB,aAAe,KACtB9lK,EAASyS,GAEZ,EAED7e,KAAKkyK,aAAal0K,OAAS,WACzBqxF,GAAS,CACV,EAEMrvF,KAAKkyK,YACb,EAEDE,EAAOkB,gBAAkB,SAAyBp3K,EAAS6mC,GACzD/iC,KAAKyzK,gBAAgB1wI,GACrB,IAAItqB,EAAOzY,KAAKwP,MAAMwqJ,QAAUh6J,KAAKwP,MAAMwqJ,QAAQ5qI,QAAUsjJ,GAAAA,YAAqB1yK,MAC9E2zK,EAA0C,MAAXz3K,IAAoB8D,KAAKwP,MAAMokK,eAElE,GAAKn7J,IAAQk7J,EAAb,CAKA,GAAI3zK,KAAKwP,MAAMokK,eAAgB,CAC7B,IAAIphK,EAAQxS,KAAKwP,MAAMwqJ,QAAU,CAACh6J,KAAKkyK,cAAgB,CAACz5J,EAAMzY,KAAKkyK,cAC/DY,EAAYtgK,EAAM,GAClBqhK,EAAoBrhK,EAAM,GAE9BxS,KAAKwP,MAAMokK,eAAed,EAAWe,EACtC,CAEc,MAAX33K,GACFK,WAAWyD,KAAKkyK,aAAch2K,EAX/B,MAFCK,WAAWyD,KAAKkyK,aAAc,EAejC,EAEDE,EAAOh/D,OAAS,WACd,IAAI33G,EAASuE,KAAKqX,MAAM5b,OAExB,GAAIA,IAAW21K,GACb,OAAO,KAGT,IAAItpD,EAAc9nH,KAAKwP,MACnB+J,EAAWuuG,EAAYvuG,SAgBvBsyG,GAfM/D,EAAYiqD,GACFjqD,EAAYmqD,aACXnqD,EAAYkqD,cACnBlqD,EAAY6pD,OACb7pD,EAAY+pD,MACb/pD,EAAYmgD,KACTngD,EAAY5rH,QACL4rH,EAAY8rD,eACnB9rD,EAAYsrD,QACTtrD,EAAYurD,WACbvrD,EAAYqrD,UACfrrD,EAAYkgD,OACTlgD,EAAYyrD,UACbzrD,EAAY0rD,SACb1rD,EAAYkyC,QACV5uI,EAA8B08F,EAAa,CAAC,WAAY,KAAM,eAAgB,gBAAiB,SAAU,QAAS,OAAQ,UAAW,iBAAkB,UAAW,aAAc,YAAa,SAAU,YAAa,WAAY,aAEjP,OAGElF,EAAAA,cAAoBkxD,GAAuBjK,SAAU,CACnDluK,MAAO,MACc,oBAAb4d,EAA0BA,EAAS9d,EAAQowH,GAAcjJ,EAAAA,aAAmBA,EAAAA,SAAAA,KAAoBrpG,GAAWsyG,GAExH,EAEM4lD,CACR,CAlT6B,CAkT5B7uD,EAAAA,WA+LF,SAAS57E,KAAS,CA7LlByqI,GAAWv/D,YAAc4hE,GACzBrC,GAAWh/D,UA0LP,CAAC,EAILg/D,GAAWr/D,aAAe,CACxB2/D,IAAI,EACJE,cAAc,EACdD,eAAe,EACfL,QAAQ,EACRE,OAAO,EACP5J,MAAM,EACNmL,QAASpsI,GACTqsI,WAAYrsI,GACZmsI,UAAWnsI,GACXghI,OAAQhhI,GACRusI,UAAWvsI,GACXwsI,SAAUxsI,IAEZyqI,GAAWL,UAAYA,GACvBK,GAAWJ,OAASA,GACpBI,GAAWH,SAAWA,GACtBG,GAAWF,QAAUA,GACrBE,GAAWD,QAAUA,GACrB,UChnBA,KAAoC,qBAAX7lK,SAA0BA,OAAOxB,WAAYwB,OAAOxB,SAASa,eCE3E+oK,IAAmB,EACnBC,IAAgB,EAE3B,IACE,IAAItvK,GAAU,CACR8gD,cACF,OAAOuuH,IAAmB,CAC3B,EAEGj8G,WAEF,OAAOk8G,GAAgBD,IAAmB,CAC3C,GAICE,KACFtoK,OAAO9N,iBAAiB,OAAQ6G,GAASA,IACzCiH,OAAOtR,oBAAoB,OAAQqK,IAAS,GAI/C,CAFC,MAAO8D,IAER,CA+BD,OArBA,SAA0BiQ,EAAM4gG,EAAWt2E,EAASr+B,GAClD,GAAIA,GAA8B,mBAAZA,IAA0BsvK,GAAe,CAC7D,IAAIl8G,EAAOpzD,EAAQozD,KACf+hF,EAAUn1I,EAAQm1I,QAClBq6B,EAAiBnxI,GAEhBixI,IAAiBl8G,IACpBo8G,EAAiBnxI,EAAQoxI,QAAU,SAASC,EAAYv1J,GACtD7e,KAAK3F,oBAAoBg/G,EAAW+6D,EAAav6B,GACjD92G,EAAQ7hC,KAAKlB,KAAM6e,EACpB,EAEDkkB,EAAQoxI,OAASD,GAGnBz7J,EAAK5a,iBAAiBw7G,EAAW66D,EAAgBH,GAAmBrvK,EAAUm1I,EAC/E,CAEDphI,EAAK5a,iBAAiBw7G,EAAWt2E,EAASr+B,EAC3C,ECpCD,OATA,SAA6B+T,EAAM4gG,EAAWt2E,EAASr+B,GACrD,IAAIm1I,EAAUn1I,GAA8B,mBAAZA,EAAwBA,EAAQm1I,QAAUn1I,EAC1E+T,EAAKpe,oBAAoBg/G,EAAWt2E,EAAS82G,GAEzC92G,EAAQoxI,QACV17J,EAAKpe,oBAAoBg/G,EAAWt2E,EAAQoxI,OAAQt6B,EAEvD,ECLD,OAPA,SAAgBphI,EAAM4gG,EAAWt2E,EAASr+B,GAExC,OADA7G,GAAiB4a,EAAM4gG,EAAWt2E,EAASr+B,GACpC,WACLrK,GAAoBoe,EAAM4gG,EAAWt2E,EAASr+B,EAC/C,CACF,ECED,SAAS2vK,GAAqBn7J,EAAS0D,EAAU4c,QAC/B,IAAZA,IACFA,EAAU,GAGZ,IAAI86I,GAAS,EACT9hH,EAASj2D,YAAW,WACjB+3K,GCTM,SAAsB77J,EAAM4gG,EAAW9uD,EAASC,GAS7D,QARgB,IAAZD,IACFA,GAAU,QAGO,IAAfC,IACFA,GAAa,GAGX/xC,EAAM,CACR,IAAIoG,EAAQ1U,SAASy/C,YAAY,cACjC/qC,EAAM01J,UAAUl7D,EAAW9uD,EAASC,GACpC/xC,EAAKxE,cAAc4K,EACpB,CACF,CDLgB21J,CAAat7J,EAAS,iBAAiB,EACrD,GAAE0D,EAAW4c,GACVjvB,EAAS+4C,GAAOpqC,EAAS,iBAAiB,WAC5Co7J,GAAS,CACV,GAAE,CACDx8G,MAAM,IAER,OAAO,WACL1yC,aAAaotC,GACbjoD,GACD,CACF,CAEc,SAASkqK,GAAcv7J,EAAS6pB,EAASnmB,EAAU4c,GAChD,MAAZ5c,IAAkBA,EA3BxB,SAAuBnE,GACrB,IAAIrK,EAAMyuF,EAAIpkF,EAAM,uBAAyB,GACzCi8J,GAA8B,IAAvBtmK,EAAI9R,QAAQ,MAAe,IAAO,EAC7C,OAAOgqB,WAAWlY,GAAOsmK,CAC1B,CAuBkCC,CAAcz7J,IAAY,GAC3D,IAAI07J,EAAgBP,GAAqBn7J,EAAS0D,EAAU4c,GACxDjvB,EAAS+4C,GAAOpqC,EAAS,gBAAiB6pB,GAC9C,OAAO,WACL6xI,IACArqK,GACD,CACF,CEnCD,SAASoqK,GAAcl8J,EAAML,GAC3B,IAAMhK,EAAMyuF,EAAIpkF,EAAML,IAAa,GAC7Bs8J,GAA8B,IAAvBtmK,EAAI9R,QAAQ,MAAe,IAAO,EAC/C,OAAOgqB,WAAWlY,GAAOsmK,CAC1B,CAEc,SAASG,GAAsB37J,EAAS6pB,GACrD,IAAMnmB,EAAW+3J,GAAcz7J,EAAS,sBAClC8D,EAAQ23J,GAAcz7J,EAAS,mBAC/B3O,EAASkqK,GAAcv7J,GAAS,SAAA1Q,GAChCA,EAAE5C,SAAWsT,IACf3O,IACAw4B,EAAQv6B,GAEX,GAAEoU,EAAWI,EACf,CCOD,OAhBA,WAAyC,2BAAP83J,EAAO,yBAAPA,EAAO,gBACvC,OAAOA,EAAMnlK,QAAO,SAAAiB,GAAC,OAAS,MAALA,CAAJ,IAAeue,QAAO,SAAC4lJ,EAAKnkK,GAC/C,GAAiB,oBAANA,EACT,MAAM,IAAI/c,MAAM,2EAGlB,OAAY,OAARkhL,EAAqBnkK,EAClB,WAAkC,2BAAN7H,EAAM,yBAANA,EAAM,gBAEvCgsK,EAAIlyK,MAAM7C,KAAM+I,GAEhB6H,EAAE/N,MAAM7C,KAAM+I,EACf,CACF,GAAE,KACJ,ECrBc,SAASisK,GAAqBv8J,GAE3CA,EAAKuI,YACN,CCHD,IAAIi0J,GAAU,SAAiBthK,GAC7B,OAAQA,GAAsB,oBAARA,EAA2B,SAAUhY,GACzDgY,EAAIyb,QAAUzzB,CACf,EAF0CgY,CAG5C,EAiCD,OANA,SAAuBuhK,EAAMC,GAC3B,OAAO7rB,EAAAA,EAAAA,UAAQ,WACb,OA3BG,SAAmB4rB,EAAMC,GAC9B,IAAIjmK,EAAI+lK,GAAQC,GACZ/lK,EAAI8lK,GAAQE,GAChB,OAAO,SAAUx5K,GACXuT,GAAGA,EAAEvT,GACLwT,GAAGA,EAAExT,EACV,CACF,CAoBUy5K,CAAUF,EAAMC,EACxB,GAAE,CAACD,EAAMC,GACX,ECpCc,SAASE,GAAgBC,GACtC,OAAIA,GAAsB,aAAcA,EAC/B5C,GAAAA,YAAqB4C,GAGD,MAAtBA,EAA6BA,EAAqB,IAC1D,uHCDKC,GAAiC3yD,EAAAA,YAAiB,WAWrDjvG,GAAQ,IAVTy/J,EAUS,EAVTA,QACAC,EASS,EATTA,WACAF,EAQS,EARTA,UACAnL,EAOS,EAPTA,OACAuL,EAMS,EANTA,UACAC,EAKS,EALTA,SACAI,EAIS,EAJTA,eACAr6J,EAGS,EAHTA,SACAi8J,EAES,EAFTA,SACGhmK,EACM,QACHwqJ,GAAUxQ,EAAAA,EAAAA,QAAO,MACjBisB,EAAYC,GAAc1b,EAASwb,GAEnCG,EAAY,SAAAjlK,GAChB+kK,EAAUJ,GAAgB3kK,GAC3B,EAEKklK,EAAY,SAAAxpK,GAAQ,OAAI,SAAA0hG,GACxB1hG,GAAY4tJ,EAAQ5qI,SACtBhjB,EAAS4tJ,EAAQ5qI,QAAS0+E,EAE7B,CAJyB,EAQpB+nE,GAAc3sB,EAAAA,EAAAA,aAAY0sB,EAAUxC,GAAU,CAACA,IAC/C0C,GAAiB5sB,EAAAA,EAAAA,aAAY0sB,EAAUvC,GAAa,CAACA,IACrD0C,GAAgB7sB,EAAAA,EAAAA,aAAY0sB,EAAUzC,GAAY,CAACA,IACnD6C,GAAa9sB,EAAAA,EAAAA,aAAY0sB,EAAU5N,GAAS,CAACA,IAC7CiO,GAAgB/sB,EAAAA,EAAAA,aAAY0sB,EAAUrC,GAAY,CAACA,IACnD2C,GAAehtB,EAAAA,EAAAA,aAAY0sB,EAAUpC,GAAW,CAACA,IACjD2C,GAAuBjtB,EAAAA,EAAAA,aAAY0sB,EAAUhC,GAAiB,CAACA,IAGrE,OAAoBvE,EAAAA,EAAAA,KAAKoC,GAAD,EAAC,GACvB99J,IAAKA,GACFnE,GAFmB,IAGtB4jK,QAASyC,EACT1C,UAAW4C,EACX1C,WAAYyC,EACZ9N,OAAQgO,EACRxC,SAAU0C,EACV3C,UAAW0C,EACXrC,eAAgBuC,EAChBnc,QAASA,EACTzgJ,SAA8B,oBAAbA,EAA0B,SAAC9d,EAAQ26K,GAAT,OAAwB78J,EAAS9d,EAAD,EAAC,KAAa26K,GAAd,IACzEziK,IAAKgiK,IADoC,EAEzB/yD,EAAAA,aAAmBrpG,EAAU,CAC7C5F,IAAKgiK,MAGV,IACD,0HCnDMU,GAAU,CACd37J,OAAQ,CAAC,YAAa,gBACtBF,MAAO,CAAC,aAAc,gBAGxB,SAAS87J,GAAyBC,EAAW3sG,GAC3C,IACMjuE,EAAQiuE,EADC,SAAH,OAAY2sG,EAAU,GAAGx6K,eAAzB,OAAyCw6K,EAAUp+K,MAAM,KAE/Dq+K,EAAUH,GAAQE,GACxB,OAAO56K,EACPhI,SAASkpG,EAAIjzB,EAAM4sG,EAAQ,IAAK,IAChC7iL,SAASkpG,EAAIjzB,EAAM4sG,EAAQ,IAAK,GACjC,CAED,IAAMC,IAAc,QACjBpF,GAAS,YADQ,KAEjBG,GAAU,cAFO,KAGjBF,GAAW,cAHM,KAIjBC,GAAU,iBAJO,IAMdn/D,GAAe,CACnB2/D,IAAI,EACJ71K,QAAS,IACT+1K,cAAc,EACdD,eAAe,EACfL,QAAQ,EACR+E,kBAAmBJ,IAEfK,GAAwB/zD,EAAAA,YAAiB,WAW5CjvG,GAAQ,IAVTy/J,EAUS,EAVTA,QACAC,EASS,EATTA,WACAF,EAQS,EARTA,UACAnL,EAOS,EAPTA,OACAuL,EAMS,EANTA,UACAv6J,EAKS,EALTA,UACAO,EAIS,EAJTA,SAIS,IAHTg9J,UAAAA,OAGS,MAHG,SAGH,MAFTG,kBAAAA,OAES,MAFWJ,GAEX,EADN9mK,EACM,QAEHonK,EAAyC,oBAAdL,EAA2BA,IAAcA,EAGpEV,GAAcvsB,EAAAA,EAAAA,UAAQ,kBAAMutB,IAAsB,SAAAjtG,GACtDA,EAAKxpD,MAAMw2J,GAAqB,GACjC,GAAExD,EAFyB,GAEf,CAACwD,EAAmBxD,IAC3B0C,GAAiBxsB,EAAAA,EAAAA,UAAQ,kBAAMutB,IAAsB,SAAAjtG,GACzD,IAAMktG,EAAS,SAAH,OAAYF,EAAkB,GAAG76K,eAAjC,OAAiD66K,EAAkBz+K,MAAM,IACrFyxE,EAAKxpD,MAAMw2J,GAAX,UAAmChtG,EAAKktG,GAAxC,KACD,GAAEzD,EAH4B,GAGf,CAACuD,EAAmBvD,IAC9B0C,GAAgBzsB,EAAAA,EAAAA,UAAQ,kBAAMutB,IAAsB,SAAAjtG,GACxDA,EAAKxpD,MAAMw2J,GAAqB,IACjC,GAAEzD,EAF2B,GAEf,CAACyD,EAAmBzD,IAG7B6C,GAAa1sB,EAAAA,EAAAA,UAAQ,kBAAMutB,IAAsB,SAAAjtG,GACrDA,EAAKxpD,MAAMw2J,GAAX,UAAmCF,EAAkBE,EAAmBhtG,GAAxE,MACAorG,GAAqBprG,EACtB,GAAEo+F,EAHwB,GAGf,CAACA,EAAQ0O,EAAmBE,IAClCX,GAAgB3sB,EAAAA,EAAAA,UAAQ,kBAAMutB,IAAsB,SAAAjtG,GACxDA,EAAKxpD,MAAMw2J,GAAqB,IACjC,GAAErD,EAF2B,GAEf,CAACqD,EAAmBrD,IACnC,OAAoBlE,EAAAA,EAAAA,KAAKkG,GAAD,EAAC,GACvB5hK,IAAKA,EACLigK,eAAgBiB,IACbrlK,GAHmB,IAItB,gBAAiBA,EAAMunK,KAAOvnK,EAAMuiK,GAAK,KACzCqB,QAASyC,EACTxC,WAAYyC,EACZ3C,UAAW4C,EACX/N,OAAQgO,EACRzC,UAAW0C,EACXT,SAAUj8J,EAAS5F,IACnB4F,SAAU,SAAClC,EAAO++J,GAAR,OAAoCxzD,EAAAA,aAAmBrpG,EAAnB,OAAkC68J,GAAlC,IAC5Cp9J,UAAW7I,IAAW6I,EAAWO,EAAS/J,MAAMwJ,UAAWy9J,GAAep/J,GAA8B,UAAtBu/J,GAAiC,yBAD3G,IAIb,IAGDD,GAASvkE,aAAeA,GACxB,UCzFMtzG,GAAuB8jH,EAAAA,cAAoB,MACjD9jH,GAAQuzG,YAAc,gBACtB,qCCEM2kE,GAA8Bp0D,EAAAA,YAAiB,WAIlDjvG,GAAQ,IAHT4F,EAGS,EAHTA,SACA01J,EAES,EAFTA,SACGz/J,EACM,QACTy/J,EAAWT,EAAmBS,EAAU,mBACxC,IAAMnwK,GAAUqqJ,EAAAA,EAAAA,YAAW8tB,IAC3B,OAAoB5H,EAAAA,EAAAA,KAAKsH,GAAD,EAAC,GACvB5E,MAAOjzK,IAAWA,EAAQo4K,WACvB1nK,GAFmB,IAGtB+J,UAAuB81J,EAAAA,EAAAA,KAAK,MAAO,CACjC17J,IAAKA,EACLqF,UAAWi2J,EACX11J,SAAUA,MAGf,IACDy9J,GAAe3kE,YAAc,iBAC7B,UCLA,OARA,SAAyB12G,GACvB,IAAIgY,GAAM61I,EAAAA,EAAAA,QAAO7tJ,GAIjB,OAHAo8H,EAAAA,EAAAA,YAAU,WACRpkH,EAAIyb,QAAUzzB,CACf,GAAE,CAACA,IACGgY,CACR,ECfc,SAASwjK,GAAiBtyK,GACvC,IAAI8O,EAAMyjK,GAAgBvyK,GAC1B,OAAOqkJ,EAAAA,EAAAA,cAAY,WACjB,OAAOv1I,EAAIyb,SAAWzb,EAAIyb,QAAQvsB,MAAM8Q,EAAK3K,UAC9C,GAAE,CAAC2K,GACL,mECGK0jK,GAA4Bz0D,EAAAA,YAAiB,WAShDjvG,GAAQ,IARTs7J,EAQS,EARTA,SACAj2J,EAOS,EAPTA,UACAO,EAMS,EANTA,SACAxD,EAKS,EALTA,MAKS,IAHTm5J,GAAI9mD,OAGK,MAHO,SAGP,EAFTlnB,EAES,EAFTA,QACG1xF,EACM,QACTy/J,EAAWT,EAAmBS,EAAU,kBACxC,OAGI9lB,EAAAA,EAAAA,YAAW8tB,KAAkB,CAAC,EAFhCK,EADF,EACEA,SACAJ,EAFF,EAEEA,SAEI1kI,EAAc2kI,IAAiB,SAAA3uK,GAC/B04F,GAASA,EAAQ14F,GACjB8uK,GAAUA,GACf,IAMD,MAJkB,WAAdlvD,IACF54G,EAAMvR,KAAO,WAGKoxK,EAAAA,EAAAA,KAAKjnD,EAAD,EAAC,KAAgB54G,GAAjB,IACtBmE,IAAKA,EACLutF,QAAS1uD,EACT,aAAcz8B,EACdiD,UAAW7I,IAAW6I,EAAWi2J,GAAWiI,GAAY,aACxD39J,SAAUA,IAAyB81J,EAAAA,EAAAA,KAAK,OAAQ,CAC9Cr2J,UAAW,GAAF,OAAKi2J,EAAL,aAGd,IACDoI,GAAahlE,YAAc,eAC3BglE,GAAajlE,aAtCQ,CACnBr8F,MAAO,qBAsCT,UC9Ce,SAASslG,GAAkBhvG,EAAKgnD,IAClC,MAAPA,GAAeA,EAAMhnD,EAAIhY,UAAQg/D,EAAMhnD,EAAIhY,QAE/C,IAAK,IAAIgM,EAAI,EAAG0rB,EAAO,IAAInpB,MAAMywD,GAAMhzD,EAAIgzD,EAAKhzD,IAC9C0rB,EAAK1rB,GAAKgM,EAAIhM,GAGhB,OAAO0rB,CACT,CCPe,SAASkwF,GAA4Bx+F,EAAGu+F,GACrD,GAAKv+F,EAAL,CACA,GAAiB,kBAANA,EAAgB,OAAO,GAAiBA,EAAGu+F,GACtD,IAAInrG,EAAI9M,OAAO/E,UAAUgI,SAAS9F,KAAKuc,GAAGtlB,MAAM,GAAI,GAEpD,MADU,WAAN0Y,GAAkB4M,EAAE9O,cAAakC,EAAI4M,EAAE9O,YAAYvN,MAC7C,QAANyP,GAAqB,QAANA,EAAoBjO,MAAMsB,KAAKuZ,GACxC,cAAN5M,GAAqB,2CAA2CpG,KAAKoG,GAAW,GAAiB4M,EAAGu+F,QAAxG,CALc,CAMhB,CCJe,SAAS,GAAe3vG,EAAKhM,GAC1C,OCLa,SAAyBgM,GACtC,GAAIzJ,MAAMkD,QAAQuG,GAAM,OAAOA,CACjC,CDGS,CAAeA,IELT,SAA+BA,EAAKhM,GACjD,IAAI+xH,EAAY,MAAP/lH,EAAc,KAAyB,qBAAX4f,QAA0B5f,EAAI4f,OAAOC,WAAa7f,EAAI,cAE3F,GAAU,MAAN+lH,EAAJ,CACA,IAIIC,EAAI17D,EAJJ67D,EAAO,GACPC,GAAK,EACLC,GAAK,EAIT,IACE,IAAKN,EAAKA,EAAGlxH,KAAKmL,KAAQomH,GAAMJ,EAAKD,EAAGrnG,QAAQ9wB,QAC9Cu4H,EAAK3xH,KAAKwxH,EAAG12H,QAET0E,GAAKmyH,EAAKn+H,SAAWgM,GAH4BoyH,GAAK,GAc9D,CATE,MAAO72H,GACP82H,GAAK,EACL/7D,EAAK/6D,CACP,CAAE,QACA,IACO62H,GAAsB,MAAhBL,EAAW,QAAWA,EAAW,QAG9C,CAFE,QACA,GAAIM,EAAI,MAAM/7D,CAChB,CACF,CAEA,OAAO67D,CAxBe,CAyBxB,CFvBgC,CAAqBnmH,EAAKhM,IAAM,GAA2BgM,EAAKhM,IGLjF,WACb,MAAM,IAAIP,UAAU,4IACtB,CHGsG,EACtG,CILA,IAAIy3K,GAAkC,qBAAXn+G,oBAAAA,GAC3BA,oBAAAA,EAAOvuD,WACsB,gBAA7BuuD,oBAAAA,EAAOvuD,UAAUmE,QAWjB,GAVgC,qBAAb7E,UAUKotK,GAAgBz/C,EAAAA,gBAAkBC,EAAAA,UCZtDy/C,GAAmB,IAAI5jG,QAEvB6jG,GAAa,SAAoBhlK,EAAOilK,GAC1C,GAAKjlK,GAAUilK,EAAf,CACA,IAAIC,EAAWH,GAAiBj7J,IAAIm7J,IAAiB,IAAIhkG,IACzD8jG,GAAiBl7J,IAAIo7J,EAAcC,GACnC,IAAIC,EAAMD,EAASp7J,IAAI9J,GAQvB,OANKmlK,KACHA,EAAMF,EAAapyH,WAAW7yC,IAC1BolK,SAAW,EACfF,EAASr7J,IAAIs7J,EAAIE,MAAOF,IAGnBA,CAXsB,CAY9B,EAsBc,SAASG,GAActlK,EAAOilK,QACtB,IAAjBA,IACFA,EAAiC,qBAAX/rK,YAAyBtO,EAAYsO,QAG7D,IAAIisK,EAAMH,GAAWhlK,EAAOilK,GAExB9H,GAAYnmB,EAAAA,EAAAA,WAAS,WACvB,QAAOmuB,GAAMA,EAAIx8I,OAClB,IACGA,EAAUw0I,EAAU,GACpBoI,EAAapI,EAAU,GA6B3B,OA3BA73C,IAAU,WACR,IAAI6/C,EAAMH,GAAWhlK,EAAOilK,GAE5B,IAAKE,EACH,OAAOI,GAAW,GAGpB,IAAIL,EAAWH,GAAiBj7J,IAAIm7J,GAEhC99H,EAAe,WACjBo+H,EAAWJ,EAAIx8I,QAChB,EAKD,OAHAw8I,EAAIC,WACJD,EAAIh3H,YAAYhH,GAChBA,IACO,WACLg+H,EAAI7+G,eAAenf,GACnBg+H,EAAIC,WAEAD,EAAIC,UAAY,IACN,MAAZF,GAA4BA,EAASj/F,OAAOk/F,EAAIE,QAGlDF,OAAMv6K,CACP,CACF,GAAE,CAACoV,IACG2oB,CACR,CC4BD,IAQA,GA3FO,SAA8B68I,GACnC,IAAI3/G,EAAQv0D,OAAOsC,KAAK4xK,GAExB,SAASC,EAAIzlK,EAAOsY,GAClB,OAAItY,IAAUsY,EACLA,EAGFtY,EAAQA,EAAQ,QAAUsY,EAAOA,CACzC,CAMD,SAASotJ,EAAYC,GACnB,IAAIrtJ,EALN,SAAiBqtJ,GACf,OAAO9/G,EAAM7xD,KAAKuyB,IAAIs/B,EAAMh8D,QAAQ87K,GAAc,EAAG9/G,EAAMjkE,OAAS,GACrE,CAGYgkL,CAAQD,GACfz8K,EAAQs8K,EAAiBltJ,GAE7B,MAAO,gBADwBpvB,EAAV,kBAAVA,EAA4BA,EAAQ,GAAM,KAAkB,QAAUA,EAAQ,aACzD,GACjC,CA6DD,OAjCA,SAAuB28K,EAAiB50D,EAAW/3G,GACjD,IAAI4sK,EAOEC,EALyB,kBAApBF,GACTC,EAAgBD,EAChB3sK,EAAS+3G,EACTA,GAAY,KAKK80D,EAAiB,CAAC,GAAkBF,GADrD50D,EAAYA,IAAa,EACzB60D,EAAmFC,GAGrF,IAAI/lK,GAAQ62I,EAAAA,EAAAA,UAAQ,WAClB,OAAOvlJ,OAAOq7C,QAAQm5H,GAAeppJ,QAAO,SAAU1c,EAAOZ,GAC3D,IAAIrU,EAAMqU,EAAK,GACX6xG,EAAY7xG,EAAK,GAUrB,MARkB,OAAd6xG,IAAoC,IAAdA,IACxBjxG,EAAQylK,EAAIzlK,EA9CpB,SAAqB2lK,GACnB,IAAIz8K,EAAQs8K,EAAiBG,GAM7B,MAJqB,kBAAVz8K,IACTA,GAAgB,MAGX,eAAiBA,EAAQ,GACjC,CAsC0B88K,CAAYj7K,KAGf,SAAdkmH,IAAsC,IAAdA,IAC1BjxG,EAAQylK,EAAIzlK,EAAO0lK,EAAY36K,KAG1BiV,CACR,GAAE,GACJ,GAAE,CAACpK,KAAKI,UAAU8vK,KACnB,OAAOR,GAActlK,EAAO9G,EAC7B,CAGF,CACmB+sK,CAAqB,CACvC77F,GAAI,EACJ87F,GAAI,IACJ5pC,GAAI,IACJ0O,GAAI,IACJm7B,GAAI,KACJC,IAAK,OC3GQ,SAAS31H,GAAcq6G,QACxB,IAARA,IACFA,EAAMh7B,KAKR,IACE,IAAIlzC,EAASkuE,EAAIr6G,cAGjB,OAAKmsC,GAAWA,EAAOlsC,SAChBksC,EADiC,IAKzC,CAHC,MAAO7mF,IAEP,OAAO+0J,EAAIjhI,IACZ,CACF,CChBc,SAAS4e,GAASp8C,EAAS2Z,GAGxC,OAAI3Z,EAAQo8C,SAAiBp8C,EAAQo8C,SAASziC,GAC1C3Z,EAAQ43I,wBAAgC53I,IAAY2Z,MAAmD,GAAxC3Z,EAAQ43I,wBAAwBj+H,SAAnG,CACD,CCSc,SAASqgK,KACtB,IAAIzc,GAAU7S,EAAAA,EAAAA,SAAO,GACjBnH,GAAYmH,EAAAA,EAAAA,SAAO,WACrB,OAAO6S,EAAQjtI,OAChB,IAOD,OANA2oG,EAAAA,EAAAA,YAAU,WAER,OADAskC,EAAQjtI,SAAU,EACX,WACLitI,EAAQjtI,SAAU,CACnB,CACF,GAAE,IACIizH,EAAUjzH,OAClB,CCzBc,SAAS2pJ,GAAel0K,GACrC,IAAIm0K,ECFS,SAAuBr9K,GACpC,IAAIs9K,GAAWzvB,EAAAA,EAAAA,QAAO7tJ,GAEtB,OADAs9K,EAAS7pJ,QAAUzzB,EACZs9K,CACR,CDFiBC,CAAcr0K,IAC9BkzH,EAAAA,EAAAA,YAAU,WACR,OAAO,WACL,OAAOihD,EAAU5pJ,SAClB,CACF,GAAE,GACJ,CEGc,SAAS+pJ,GAAYx9K,GAClC,IAAIgY,GAAM61I,EAAAA,EAAAA,QAAO,MAIjB,OAHAzxB,EAAAA,EAAAA,YAAU,WACRpkH,EAAIyb,QAAUzzB,CACf,IACMgY,EAAIyb,OACZ,CCrBc,SAASzD,GAAmBtf,GACzC,OCJa,SAA4BA,GACzC,GAAIzJ,MAAMkD,QAAQuG,GAAM,OAAO,GAAiBA,EAClD,CDES,CAAkBA,IELZ,SAA0B2f,GACvC,GAAsB,qBAAXC,QAAmD,MAAzBD,EAAKC,OAAOC,WAA2C,MAAtBF,EAAK,cAAuB,OAAOppB,MAAMsB,KAAK8nB,EACtH,CFGmC,CAAgB3f,IAAQ,GAA2BA,IGLvE,WACb,MAAM,IAAIvM,UAAU,uIACtB,CHG8F,EAC9F,CIJO,SAASs5K,GAAShhK,GACvB,MAAO,GAAP,OAH8B,eAG9B,OAA6BA,EAC9B,CCDM,IAAMihK,GAAsBD,GAAS,cAMtCE,GAAAA,WACJ,aAIQ,6DAAJ,CAAC,EAHH/2C,EAGM,EAHNA,cAGM,IAFNg3C,wBAAAA,OAEM,aADNC,MAAAA,OACM,mBACNx5K,KAAKu5K,wBAA0BA,EAC/Bv5K,KAAKw5K,MAAQA,EACbx5K,KAAKy5K,OAAS,GACdz5K,KAAKuiI,cAAgBA,CACtB,4CAED,WACE,OCnBW,WAAyD,IAA1BA,EAA0B,uDAAVp4H,SACtDwB,EAAS42H,EAAclV,YAC7B,OAAO5mH,KAAK+U,IAAI7P,EAAO+9C,WAAa64E,EAAchgF,gBAAgB87G,YACnE,CDgBUqb,CAAsB15K,KAAKuiI,cACnC,2BAED,WACE,OAAQviI,KAAKuiI,eAAiBp4H,UAAUmyB,IACzC,mCAED,SAAmBq9I,GAClB,sCAED,SAAsBA,GACrB,kCAED,SAAkBC,GAChB,IAAMx5J,EAAQ,CACZ04B,SAAU,UAIN+gI,EAAc75K,KAAKw5K,MAAQ,cAAgB,eAC3C/mI,EAAYzyC,KAAK+iB,aACvB62J,EAAex5J,MAAf,GACE04B,SAAUrG,EAAUryB,MAAM04B,UACzB+gI,EAAcpnI,EAAUryB,MAAMy5J,IAG7BD,EAAeE,iBAGjB15J,EAAMy5J,GAAN,UAAwBlmL,SAASkpG,EAAIpqD,EAAWonI,IAAgB,IAAK,IAAMD,EAAeE,eAA1F,OAGFrnI,EAAUtnC,aAAakuK,GAAqB,IAC5Cx8E,EAAIpqD,EAAWryB,EAChB,sBAED,WAAQ,WACN,GAAIpgB,KAAKy5K,QAAQl8K,SAAQ,SAAA0yD,GAAC,OAAI,EAAK1lD,OAAO0lD,EAAhB,GAC3B,qCAED,SAAqB2pH,GACnB,IAAMnnI,EAAYzyC,KAAK+iB,aACvB0vB,EAAU9H,gBAAgB0uI,IAC1Bt1K,OAAOQ,OAAOkuC,EAAUryB,MAAOw5J,EAAex5J,MAC/C,oBAED,SAAI25J,GACF,IAAIC,EAAWh6K,KAAKy5K,OAAOn9K,QAAQy9K,GAEnC,OAAkB,IAAdC,EACKA,GAGTA,EAAWh6K,KAAKy5K,OAAOplL,OACvB2L,KAAKy5K,OAAO54K,KAAKk5K,GACjB/5K,KAAKi6K,mBAAmBF,GAEP,IAAbC,IAIJh6K,KAAKqX,MAAQ,CACXyiK,eAAgB95K,KAAKk6K,oBACrB95J,MAAO,CAAC,GAGNpgB,KAAKu5K,yBACPv5K,KAAKm6K,kBAAkBn6K,KAAKqX,QATrB2iK,EAaV,uBAED,SAAOD,GACL,IAAMC,EAAWh6K,KAAKy5K,OAAOn9K,QAAQy9K,IAEnB,IAAdC,IAIJh6K,KAAKy5K,OAAO14K,OAAOi5K,EAAU,IAGxBh6K,KAAKy5K,OAAOplL,QAAU2L,KAAKu5K,yBAC9Bv5K,KAAKo6K,qBAAqBp6K,KAAKqX,OAGjCrX,KAAKq6K,sBAAsBN,GAC5B,2BAED,SAAWA,GACT,QAAS/5K,KAAKy5K,OAAOplL,QAAU2L,KAAKy5K,OAAOz5K,KAAKy5K,OAAOplL,OAAS,KAAO0lL,CACxE,OAzGGT,GA6GN,MEpHMgB,IAAuB5Q,EAAAA,EAAAA,eAAcuK,GAAYtoK,YAAStO,GAClCi9K,GAAQzQ,SAQvB,SAAS0Q,KACtB,OAAOpxB,EAAAA,EAAAA,YAAWmxB,GACnB,CCTM,IAAME,GAAsB,SAAC7mK,EAAKxJ,GACvC,OAAK8pK,GACM,MAAPtgK,GAAqBxJ,GAAYo4H,KAAiBjmG,MACnC,oBAAR3oB,IAAoBA,EAAMA,KACjCA,GAAO,YAAaA,IAAKA,EAAMA,EAAIyb,SACnCzb,IAAQ,aAAcA,GAAOA,EAAIirJ,uBAA+BjrJ,EAC7D,MALgB,IAMxB,EACc,SAAS8mK,GAAiB9mK,EAAK+mK,GAC5C,IAAM/uK,EAAS4uK,KACf,MAA8B9wB,EAAAA,EAAAA,WAAS,kBAAM+wB,GAAoB7mK,EAAe,MAAVhI,OAAiB,EAASA,EAAOxB,SAAhE,IAAvC,GAAOwwK,EAAP,KAAoBC,EAApB,KAEA,IAAKD,EAAa,CAChB,IAAME,EAAWL,GAAoB7mK,GACjCknK,GAAUD,EAAOC,EACtB,CAcD,OAZA9iD,EAAAA,EAAAA,YAAU,WACJ2iD,GAAcC,GAChBD,EAAWC,EAEd,GAAE,CAACD,EAAYC,KAChB5iD,EAAAA,EAAAA,YAAU,WACR,IAAM+iD,EAAUN,GAAoB7mK,GAEhCmnK,IAAYH,GACdC,EAAOE,EAEV,GAAE,CAACnnK,EAAKgnK,IACFA,CACR,CClCD,IAsBII,GAtBE/3D,GAAY,CAAC,OAAQ,OAAQ,YAAa,QAAS,WAAY,WAAY,WAAY,kBAAmB,kBAAmB,aAAc,qBAAsB,YAAa,eAAgB,eAAgB,sBAAuB,eAAgB,iBAAkB,UAAW,YAAa,SAAU,SAAU,SAAU,WAAY,YAAa,UAAW,aAAc,aA+BrX,SAASg4D,GAAgBC,GACvB,IAAMtvK,EAAS4uK,KACTW,EAAeD,GATvB,SAAoBtvK,GAIlB,OAHKovK,KAASA,GAAU,IAAIzB,GAAa,CACvC/2C,cAAyB,MAAV52H,OAAiB,EAASA,EAAOxB,YAE3C4wK,EACR,CAIkCI,CAAWxvK,GACtCouK,GAAQvwB,EAAAA,EAAAA,QAAO,CACnB4xB,OAAQ,KACRC,SAAU,OAEZ,OAAOt3K,OAAOQ,OAAOw1K,EAAM3qJ,QAAS,CAClC3Q,IAAK,kBAAMy8J,EAAaz8J,IAAIs7J,EAAM3qJ,QAA7B,EACL7kB,OAAQ,kBAAM2wK,EAAa3wK,OAAOwvK,EAAM3qJ,QAAhC,EACRksJ,WAAY,kBAAMJ,EAAaI,WAAWvB,EAAM3qJ,QAApC,EACZmsJ,cAAcryB,EAAAA,EAAAA,cAAY,SAAAv1I,GACxBomK,EAAM3qJ,QAAQgsJ,OAASznK,CACxB,GAAE,IACH6nK,gBAAgBtyB,EAAAA,EAAAA,cAAY,SAAAv1I,GAC1BomK,EAAM3qJ,QAAQisJ,SAAW1nK,CAC1B,GAAE,KAEN,CAED,IAAM8nK,IAAqBvR,EAAAA,EAAAA,aAAW,SAACr4J,EAAM8B,GAC3C,MA4BI9B,EA3BF6pK,KAAAA,OADF,WA4BI7pK,EA1BFklK,KAAAA,OAFF,MAES,SAFT,EAGE/9J,EAyBEnH,EAzBFmH,UACAoH,EAwBEvO,EAxBFuO,MACA7G,EAuBE1H,EAvBF0H,SALF,EA4BI1H,EAtBFwpK,SAAAA,OANF,WA4BIxpK,EArBF8pK,SAAAA,OAPF,SAQEC,EAoBE/pK,EApBF+pK,gBACAC,EAmBEhqK,EAnBFgqK,gBACArtC,EAkBE38H,EAlBF28H,WACAstC,EAiBEjqK,EAjBFiqK,mBAXF,EA4BIjqK,EAhBF4iH,UAAAA,OAZF,WA4BI5iH,EAfFkqK,aAAAA,OAbF,WA4BIlqK,EAdFmqK,aAAAA,OAdF,SAeEC,EAaEpqK,EAbFoqK,oBACAC,EAYErqK,EAZFqqK,aAhBF,EA4BIrqK,EAXFsqK,eAAAA,OAjBF,MAiBmB,SAAA3sK,GAAK,OAAiB6/J,EAAAA,EAAAA,KAAK,MAAOtrK,OAAOQ,OAAO,CAAC,EAAGiL,GAA/C,EAjBxB,EAkBW4sK,EAUPvqK,EAVFkpK,QACWsB,EASTxqK,EATF4gC,UACA6pI,EAQEzqK,EARFyqK,OApBF,EA4BIzqK,EAPF0qK,OAAAA,OArBF,MAqBW,WAAQ,EArBnB,EAsBEvU,EAMEn2J,EANFm2J,OACAwL,EAKE3hK,EALF2hK,SACAD,EAIE1hK,EAJF0hK,UACAH,EAGEvhK,EAHFuhK,QACAC,EAEExhK,EAFFwhK,WACAF,EACEthK,EADFshK,UAEE7tG,EA/EN,SAAuCtkE,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAA2DxD,EAAK6C,EAA5DuF,EAAS,CAAC,EAAO0lB,EAAavnB,OAAOsC,KAAKrF,GAAqB,IAAKX,EAAI,EAAGA,EAAIirB,EAAWj3B,OAAQgM,IAAO7C,EAAM8tB,EAAWjrB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,IAAaoI,EAAOpI,GAAOwD,EAAOxD,IAAQ,OAAOoI,CAAS,CA+EtSwlB,CAA8BvZ,EAAMmxG,IAEzCvwE,EAAYgoI,GAAiB4B,GAC7BtC,EAAQiB,GAAgBoB,GACxB/5B,EAAYy2B,KACZ0D,EAAWrD,GAAYuC,GAC7B,MAA4BjyB,EAAAA,EAAAA,WAAUiyB,GAAtC,GAAOe,EAAP,KAAeC,EAAf,KACMC,GAAenzB,EAAAA,EAAAA,QAAO,OAC5BJ,EAAAA,EAAAA,qBAAoBz1I,GAAK,kBAAMomK,CAAN,GAAa,CAACA,IAEnC9F,KAAcuI,GAAYd,IAC5BiB,EAAavtJ,QAAU8zB,MAGpBsrF,GAAektC,GAASe,EAElBf,GAAQe,GACjBC,GAAU,GAFVA,GAAU,GAKZ,IAAME,EAAazF,IAAiB,WAalC,GAZA4C,EAAMt7J,MACNo+J,GAAyBztJ,QAAUk0B,GAAOn5C,SAAU,UAAW2yK,GAC/DC,GAAuB3tJ,QAAUk0B,GAAOn5C,SAAU,SAElD,kBAAM5N,WAAWygL,EAAjB,IAAsC,GAElCV,GACFA,IAKE7nD,EAAW,CACb,IAAMwoD,EAAuB/5H,GAAc/4C,UAEvC4vK,EAAMqB,QAAU6B,IAAyB/hI,GAAS6+H,EAAMqB,OAAQ6B,KAClEN,EAAavtJ,QAAU6tJ,EACvBlD,EAAMqB,OAAO9nD,QAEhB,CACF,IACK4pD,EAAa/F,IAAiB,WAMhC,IAAIgG,GALNpD,EAAMxvK,SAC8B,MAApCsyK,GAAyBztJ,SAA2BytJ,GAAyBztJ,UAC3C,MAAlC2tJ,GAAuB3tJ,SAA2B2tJ,GAAuB3tJ,UAErE4sJ,KAIgD,OAAjDmB,EAAwBR,EAAavtJ,UAA2D,MAA/B+tJ,EAAsB7pD,OAAyB6pD,EAAsB7pD,MAAM2oD,GAC7IU,EAAavtJ,QAAU,KAE1B,KAID2oG,EAAAA,EAAAA,YAAU,WACH2jD,GAASjpI,GACdmqI,GACD,GAAE,CAAClB,EAAMjpI,EAEVmqI,KAIA7kD,EAAAA,EAAAA,YAAU,WACH0kD,GACLS,GACD,GAAE,CAACT,EAAQS,IACZnE,IAAe,WACbmE,GACD,IAED,IAAMF,EAAqB7F,IAAiB,WAC1C,GAAK4E,GAAiB15B,KAAgB03B,EAAMuB,aAA5C,CAIA,IAAM2B,EAAuB/5H,KAEzB62H,EAAMqB,QAAU6B,IAAyB/hI,GAAS6+H,EAAMqB,OAAQ6B,IAClElD,EAAMqB,OAAO9nD,OALd,CAOF,IACK8pD,EAAsBjG,IAAiB,SAAA3uK,GACvCA,EAAE5C,SAAW4C,EAAEu9E,gBAIA,MAAnB61F,GAAmCA,EAAgBpzK,IAElC,IAAb6yK,GACFkB,IAEH,IACKO,EAAwB3F,IAAiB,SAAA3uK,GACzCmzK,GAA0B,KAAdnzK,EAAEwyC,SAAkB++H,EAAMuB,eACrB,MAAnBO,GAAmCA,EAAgBrzK,GAE9CA,EAAEinI,kBACL8sC,IAGL,IACKQ,IAAyBvzB,EAAAA,EAAAA,UACzBqzB,IAA2BrzB,EAAAA,EAAAA,UAO3BioB,GAAajjC,EAEnB,IAAK/7F,KAAeipI,GAAQjK,KAAegL,GACzC,OAAO,KAGT,IAAMY,GAAct5K,OAAOQ,OAAO,CAChCwyK,KAAAA,EACApjK,IAAKomK,EAAMwB,aAEX,aAAuB,WAATxE,QAA2B15K,GACxCioE,EAAM,CACPllD,MAAAA,EACApH,UAAAA,EACAskK,UAAW,IAETlC,GAASc,EAAeA,EAAamB,KAA4BhO,EAAAA,EAAAA,KAAK,MAAOtrK,OAAOQ,OAAO,CAAC,EAAG84K,GAAa,CAC9G9jK,SAAuBqpG,EAAAA,aAAmBrpG,EAAU,CAClDw9J,KAAM,gBAINtF,KACF2J,IAAsB/L,EAAAA,EAAAA,KAAKoC,GAAY,CACrCE,QAAQ,EACRK,eAAe,EACfD,KAAM2J,EACN1T,OAAQA,EACRuL,UAAWA,EACXC,SAlCiB,WACnBkJ,GAAU,GACE,MAAZlJ,GAA4BA,EAAQ,WAAR,YAC7B,EAgCGJ,QAASA,EACTC,WAAYA,EACZF,UAAWA,EACX55J,SAAU6hK,MAId,IAAImC,GAAkB,KAEtB,GAAIlC,EAAU,CACZ,IAAMmC,GAAqB1B,EAC3ByB,GAAkBpB,EAAe,CAC/BxoK,IAAKomK,EAAMyB,eACXt6E,QAASk8E,IAGPI,KACFD,IAA+BlO,EAAAA,EAAAA,KAAKmO,GAAoB,CACtD7L,QAAQ,EACRI,KAAM2J,EACNniK,SAAUgkK,KAGf,CAED,OAAoBlO,EAAAA,EAAAA,KAAKoO,EAAAA,SAAW,CAClClkK,SAAuBm5J,GAAAA,cAAoCgL,EAAAA,EAAAA,MAAMD,EAAAA,SAAW,CAC1ElkK,SAAU,CAACgkK,GAAiBnC,MAC1B3oI,IAEP,IACDgpI,GAAMppE,YAAc,QACpB,UAAetuG,OAAOQ,OAAOk3K,GAAO,CAClCkC,QAASrE,qDCnPLsE,IAAU,QACbtM,GAAW,QADE,KAEbC,GAAU,QAFG,IAIVsM,GAAoBj7D,EAAAA,YAAiB,WAKxCjvG,GAAQ,IAJTqF,EAIS,EAJTA,UACAO,EAGS,EAHTA,SAGS,IAFTukK,kBAAAA,OAES,MAFW,CAAC,EAEZ,EADNtuK,EACM,QACHqmK,GAAc3sB,EAAAA,EAAAA,cAAY,SAACzwI,EAAMslK,GACrC/I,GAAqBv8J,GACJ,MAAjBjJ,EAAM4jK,SAA2B5jK,EAAM4jK,QAAQ36J,EAAMslK,EACtD,GAAE,CAACvuK,IACJ,OAAoB6/J,EAAAA,EAAAA,KAAKkG,GAAD,EAAC,GACvB5hK,IAAKA,EACLigK,eAAgBiB,IACbrlK,GAHmB,IAItB4jK,QAASyC,EACTL,SAAUj8J,EAAS5F,IACnB4F,SAAU,SAAC9d,EAAQ26K,GAAT,OAAqCxzD,EAAAA,aAAmBrpG,EAAnB,OAAkC68J,GAAlC,IAC7Cp9J,UAAW7I,IAAW,OAAQ6I,EAAWO,EAAS/J,MAAMwJ,UAAW4kK,GAAWniL,GAASqiL,EAAkBriL,MADjG,IAIb,IACDoiL,GAAKzrE,aAhCgB,CACnB2/D,IAAI,EACJ71K,QAAS,IACT+1K,cAAc,EACdD,eAAe,EACfL,QAAQ,GA4BVkM,GAAKxrE,YAAc,OACnB,aCzCA,GAAe08D,EAAmB,yDCY5BiP,IAAgB,QACnB1M,GAAW,QADQ,KAEnBC,GAAU,QAFS,IAIhB0M,GAAiCr7D,EAAAA,YAAiB,WAKrDjvG,GAAQ,IAJTs7J,EAIS,EAJTA,SACAj2J,EAGS,EAHTA,UACAO,EAES,EAFTA,SACG/J,EACM,QAET,OADAy/J,EAAWT,EAAmBS,EAAU,cACpBI,EAAAA,EAAAA,KAAKkG,GAAD,EAAC,GACvB5hK,IAAKA,EACLigK,eAAgBiB,IACbrlK,GAHmB,IAItBgmK,SAAUj8J,EAAS5F,IACnB4F,SAAU,SAAC9d,EAAQ26K,GAAT,OAAqCxzD,EAAAA,aAAmBrpG,EAAnB,OAAkC68J,GAAlC,IAC7Cp9J,UAAW7I,IAAW6I,EAAWO,EAAS/J,MAAMwJ,WAAYvd,IAAW61K,IAAY71K,IAAW+1K,KAAnC,UAAkDvC,EAAlD,aAAuE+O,GAAiBviL,MAD3I,IAIb,IACDwiL,GAAkB7rE,aA3BG,CACnB2/D,IAAI,EACJE,cAAc,EACdD,eAAe,EACfL,QAAQ,GAwBVsM,GAAkB5rE,YAAc,oBAChC,UC9BA,GALkCuQ,EAAAA,cAAoB,CAEpD25D,OAFoD,WAEzC,yFCCP9pE,GAAY,CAChB,aAAc0I,KAAAA,OACdja,QAASia,KAAAA,KAOT+iE,QAAS/iE,KAAAA,MAAgB,CAAC,WAKtBgjE,GAA2Bv7D,EAAAA,YAAiB,WAI/CjvG,GAJ+C,IAChDqF,EADgD,EAChDA,UACAklK,EAFgD,EAEhDA,QACG1uK,EAH6C,eAI1B6/J,EAAAA,EAAAA,KAAK,SAAD,GAC1B17J,IAAKA,EACL1V,KAAM,SACN+a,UAAW7I,IAAW,YAAa+tK,GAAW,aAAJ,OAAiBA,GAAWllK,IACnExJ,GAR6C,IAUlD2uK,GAAY9rE,YAAc,cAC1B8rE,GAAY1rE,UAAYA,GACxB0rE,GAAY/rE,aAfS,CACnB,aAAc,SAehB,6ECpBMgsE,GAAmCx7D,EAAAA,YAAiB,WAOvDjvG,GAAQ,IANT0qK,EAMS,EANTA,WACAC,EAKS,EALTA,aACAC,EAIS,EAJTA,YACAhC,EAGS,EAHTA,OACAhjK,EAES,EAFTA,SACG/J,EACM,QACH1Q,GAAUqqJ,EAAAA,EAAAA,YAAWq1B,IACrBhsI,EAAc2kI,IAAiB,WACxB,MAAXr4K,GAA2BA,EAAQy9K,SACzB,MAAVA,GAA0BA,GAC3B,IACD,OAAoBmB,EAAAA,EAAAA,MAAM,MAAD,EAAC,GACxB/pK,IAAKA,GACFnE,GAFoB,IAGvB+J,SAAU,CAACA,EAAUglK,IAA4BlP,EAAAA,EAAAA,KAAK8O,GAAa,CACjE,aAAcE,EACdH,QAASI,EACTp9E,QAAS1uD,OAGd,IACD4rI,GAAoBhsE,aA3BC,CACnBisE,WAAY,QACZE,aAAa,GA0Bf,sCC1BME,GAA+B77D,EAAAA,YAAiB,WAInDjvG,GAAQ,IAHTs7J,EAGS,EAHTA,SACAj2J,EAES,EAFTA,UACGxJ,EACM,QAET,OADAy/J,EAAWT,EAAmBS,EAAU,qBACpBI,EAAAA,EAAAA,KAAK+O,GAAD,EAAC,GACvBzqK,IAAKA,GACFnE,GAFmB,IAGtBwJ,UAAW7I,IAAW6I,EAAWi2J,KAEpC,IACDwP,GAAgBpsE,YAAc,kBAC9BosE,GAAgBrsE,aAjBK,CACnBisE,WAAY,QACZE,aAAa,GAgBf,UCpBA,YAAgBvlK,GAAS,OAAiB4pG,EAAAA,YAAiB,SAAClmG,EAAG/I,GAAJ,OAAyB07J,EAAAA,EAAAA,KAAK,MAAD,EAAC,KAAY3yJ,GAAb,IACtF/I,IAAKA,EACLqF,UAAW7I,IAAWuM,EAAE1D,UAAWA,KAFsB,GAA3D,ECAA,GAAe+1J,EAAmB,kBAAmB,CACnD3mD,UAFoBs2D,GAAiB,QCDxB,SAASC,GAAep2J,EAAQnQ,GAC7C,MAAQrU,OAAO/E,UAAUwP,eAAetN,KAAKqnB,EAAQnQ,IAEpC,QADfmQ,EAAS,EAAeA,MAI1B,OAAOA,CACT,CCPe,SAASq2J,KAiBtB,OAfEA,GADqB,qBAAZx4D,SAA2BA,QAAQ7pG,IACrC6pG,QAAQ7pG,IAAI/d,OAEZ,SAAcoH,EAAQwS,EAAUymK,GACrC,IAAIn4J,EAAO,GAAc9gB,EAAQwS,GACjC,GAAKsO,EAAL,CACA,IAAIlZ,EAAOzJ,OAAOkpB,yBAAyBvG,EAAMtO,GAEjD,OAAI5K,EAAK+O,IACA/O,EAAK+O,IAAIrb,KAAK8H,UAAU3U,OAAS,EAAIuR,EAASi5K,GAGhDrxK,EAAK7R,KAPK,CAQnB,EAGKijL,GAAK/7K,MAAM7C,KAAMgJ,UAC1B,CCbe,SAAS81K,GAAS5lK,EAASF,GACxC,OAAIE,EAAQ82B,YAAoBh3B,GAAaE,EAAQ82B,UAAUkL,SAASliC,IACkC,KAAlG,KAAOE,EAAQF,UAAU+lK,SAAW7lK,EAAQF,WAAa,KAAK1c,QAAQ,IAAM0c,EAAY,IACjG,CCDc,SAASgmK,GAAS9lK,EAASF,GACpCE,EAAQ82B,UAAW92B,EAAQ82B,UAAUvxB,IAAIzF,GAAqB8lK,GAAS5lK,EAASF,KAA6C,kBAAtBE,EAAQF,UAAwBE,EAAQF,UAAYE,EAAQF,UAAY,IAAMA,EAAeE,EAAQ/N,aAAa,SAAU+N,EAAQF,WAAaE,EAAQF,UAAU+lK,SAAW,IAAM,IAAM/lK,GACtS,CCVD,IAAIjM,GAAU4xD,SAAS3/D,UAAUR,KAAK0C,KAAKy9D,SAAS3/D,UAAUkC,KAAM,GAAG/I,OAQxD,SAAS8mL,GAAI/lK,EAASszC,GACnC,OAAOz/C,GAAQmM,EAAQ+zC,iBAAiBT,GACzC,CCVD,SAAS0yH,GAAiBC,EAAWC,GACnC,OAAOD,EAAUj2K,QAAQ,IAAImB,OAAO,UAAY+0K,EAAgB,YAAa,KAAM,MAAMl2K,QAAQ,OAAQ,KAAKA,QAAQ,aAAc,GACrI,CASc,SAASm2K,GAAYnmK,EAASF,GACvCE,EAAQ82B,UACV92B,EAAQ82B,UAAUzlC,OAAOyO,GACa,kBAAtBE,EAAQF,UACxBE,EAAQF,UAAYkmK,GAAiBhmK,EAAQF,UAAWA,GAExDE,EAAQ/N,aAAa,QAAS+zK,GAAiBhmK,EAAQF,WAAaE,EAAQF,UAAU+lK,SAAW,GAAI/lK,GAExG,CCdD,IAqDIsmK,GArDEC,GACW,oDADXA,GAEY,cAFZA,GAGY,kBAGZC,GAAAA,SAAAA,mHACJ,SAAex5K,EAAMkT,EAASumK,GAC5B,IAAMC,EAASxmK,EAAQkH,MAAMpa,GAG7BkT,EAAQ6wB,QAAQ/jC,GAAQ05K,EACxB7iF,EAAI3jF,EAAD,KACAlT,EADA,UACUsgB,WAAWu2E,EAAI3jF,EAASlT,IAASy5K,EAD3C,OAGJ,wBAED,SAAQz5K,EAAMkT,GACZ,IAAMvd,EAAQud,EAAQ6wB,QAAQ/jC,QAEhB3I,IAAV1B,WACKud,EAAQ6wB,QAAQ/jC,GACvB62F,EAAI3jF,EAAD,KACAlT,EAAOrK,IAGb,kCAED,SAAkBi+K,GAAgB,WAChC,sDAAwBA,GACxB,IAAMnnI,EAAYzyC,KAAK+iB,aAEvB,GADAi8J,GAASvsI,EAAW,cACfmnI,EAAeE,eAApB,CACA,IAAMD,EAAc75K,KAAKw5K,MAAQ,cAAgB,eAC3CmG,EAAa3/K,KAAKw5K,MAAQ,aAAe,cAC/CyF,GAAIxsI,EAAW8sI,IAAwBhiL,SAAQ,SAAAyP,GAAE,OAAI,EAAK4yK,eAAe/F,EAAa7sK,EAAI4sK,EAAeE,eAAxD,IACjDmF,GAAIxsI,EAAW8sI,IAAyBhiL,SAAQ,SAAAyP,GAAE,OAAI,EAAK4yK,eAAeD,EAAY3yK,GAAK4sK,EAAeE,eAAxD,IAClDmF,GAAIxsI,EAAW8sI,IAAyBhiL,SAAQ,SAAAyP,GAAE,OAAI,EAAK4yK,eAAeD,EAAY3yK,EAAI4sK,EAAeE,eAAvD,GALR,CAM3C,qCAED,SAAqBF,GAAgB,WACnC,yDAA2BA,GAC3B,IAAMnnI,EAAYzyC,KAAK+iB,aACvBs8J,GAAY5sI,EAAW,cACvB,IAAMonI,EAAc75K,KAAKw5K,MAAQ,cAAgB,eAC3CmG,EAAa3/K,KAAKw5K,MAAQ,aAAe,cAC/CyF,GAAIxsI,EAAW8sI,IAAwBhiL,SAAQ,SAAAyP,GAAE,OAAI,EAAKoa,QAAQyyJ,EAAa7sK,EAA9B,IACjDiyK,GAAIxsI,EAAW8sI,IAAyBhiL,SAAQ,SAAAyP,GAAE,OAAI,EAAKoa,QAAQu4J,EAAY3yK,EAA7B,IAClDiyK,GAAIxsI,EAAW8sI,IAAyBhiL,SAAQ,SAAAyP,GAAE,OAAI,EAAKoa,QAAQu4J,EAAY3yK,EAA7B,GACnD,OA3CGwyK,CAA8BlG,IAgD7B,SAASuG,GAAiBn7K,GAE/B,OADK46K,KAAeA,GAAgB,IAAIE,GAAsB96K,IACvD46K,EACR,CACD,sWCjCA,SAASQ,GAAiBtwK,GACxB,OAAoB6/J,EAAAA,EAAAA,KAAK4O,GAAD,KAAyBzuK,GAElD,CAED,SAASguK,GAAmBhuK,GAC1B,OAAoB6/J,EAAAA,EAAAA,KAAKwO,GAAD,KAAYruK,GAErC,CAED,IAAMuwK,GAAyBn9D,EAAAA,YAAiB,WA+B7CjvG,GAAQ,IA9BTs7J,EA8BS,EA9BTA,SACAj2J,EA6BS,EA7BTA,UACAO,EA4BS,EA5BTA,SACmBymK,EA2BV,EA3BT,mBACAC,EA0BS,EA1BTA,UACAC,EAyBS,EAzBTA,WAGAxE,EAsBS,EAtBTA,KACAL,EAqBS,EArBTA,SACAM,EAoBS,EApBTA,SACA7E,EAmBS,EAnBTA,OACA+E,EAkBS,EAlBTA,gBACAS,EAiBS,EAjBTA,OACAC,EAgBS,EAhBTA,OACA9pI,EAeS,EAfTA,UACAgiF,EAcS,EAdTA,UACAsnD,EAaS,EAbTA,aACAC,EAYS,EAZTA,aACAC,EAWS,EAXTA,oBACA9I,EAUS,EAVTA,UACAnL,EASS,EATTA,OACAuL,EAQS,EARTA,UACAH,EAOS,EAPTA,QACAC,EAMS,EANTA,WACAG,EAKS,EALTA,SACA2M,EAIS,EAJTA,kBACSC,EAGA,EAHTrF,QACAsF,EAES,EAFTA,iBACG7wK,EACM,QACH0rK,GAAe1xB,EAAAA,EAAAA,UACrBylB,EAAWT,EAAmBS,EAAU,aACxC,IACEqI,IACEnuB,EAAAA,EAAAA,YAAW8tB,KAAkB,CAAC,GADhCK,SAEF,MAA0C7tB,EAAAA,EAAAA,WAAS,GAAnD,GAAO62B,EAAP,KAAsBC,EAAtB,KACMC,EAA0BC,GAAcP,GAAc,KAAM,OAClEnoD,EAAAA,EAAAA,YAAU,WAGRwoD,EAAiBL,EAAaxE,IAAS8E,EAA0B9E,EAClE,GAAE,CAACA,EAAMwE,EAAYM,IACtB,IAAMtD,EAAa/F,IAAiB,WACtB,MAAZG,GAA4BA,IAClB,MAAViF,GAA0BA,GAC3B,IACKmE,GAAep3B,EAAAA,EAAAA,UAAQ,iBAAO,CAClCizB,OAAQW,EADmB,GAEzB,CAACA,IAiBL,IAUMf,GAAiBjzB,EAAAA,EAAAA,cAAY,SAAAy3B,GAAa,OAAiBtR,EAAAA,EAAAA,KAAK,MAAD,EAAC,KAAYsR,GAAb,IACnE3nK,UAAW7I,IAAW,GAAD,OAAI8+J,EAAJ,aAAyBkR,KADA,GAE5C,CAACA,EAAmBlR,IAElBiN,EAAe,SAAAmB,GAAW,OAAiBhO,EAAAA,EAAAA,KAAK,MAAD,EAAC,OAAYgO,GAC7D7tK,GADgD,IAEnDwJ,UAAW7I,IAAW6I,EAAWknK,EAAa,GAAH,OAAMjR,EAAN,YAAkBiR,GAAejR,EAAvD,UAAoEA,EAApE,YAAgFgR,IACrG,kBAAmBD,EACnBzmK,SAAUA,IAJoB,EAOhC,OAAoBmkK,EAAAA,EAAAA,MAAMD,EAAAA,SAAW,CACnClkK,SAAU,EAAE+mK,IAAkBJ,GAAcG,IAAqBnE,EAAa,CAAC,IAAiB7M,EAAAA,EAAAA,KAAKmP,GAAAA,SAAuB,CAC1H7iL,MAAO+kL,EACPnnK,UAAuB81J,EAAAA,EAAAA,KAAKuR,GAAW,CACrClF,KAAM4E,EACN3sK,IAAKA,EACL0nK,SAAUA,EACV5oI,UAAWA,EACXkpI,SAAUA,EACVlnD,UAAWA,EACXsnD,aAAcA,IAAiBjF,EAC/BkF,aAAcA,EACdC,oBAAqBA,EACrBJ,gBAAiBA,EACjBS,OAAQA,EACRC,OAAQW,EACR9J,QArCc,SAAC36J,GACfA,IAAMA,EAAK2H,MAAM25G,WAAa,WADG,2BAAThxH,EAAS,iCAATA,EAAS,kBAE1B,MAAXqqK,GAA2BA,EAAO,WAAP,GAAQ36J,GAAR,OAAiB1P,GAC7C,EAmCKsqK,WAAYA,EACZF,UAAWA,EACXnL,OAAQA,EACRuL,UAAWA,EACXC,SArCe,SAAC/6J,GAChBA,IAAMA,EAAK2H,MAAM25G,WAAa,IADI,2BAAThxH,EAAS,iCAATA,EAAS,kBAE1B,MAAZyqK,GAA4BA,EAAQ,WAAR,EAAYzqK,EACzC,EAmCKgyK,QAzDAqF,IAEAtJ,GAGGoE,EAAa9rJ,UAAS8rJ,EAAa9rJ,QAAU,IAAIowJ,GAAsB,CAC1EjG,yBAAyB,KAEpB2B,EAAa9rJ,SAGfywJ,MA+CHrxC,WAAYsxC,GACZhE,mBAAoB0B,GACpBrB,eAAgBA,EAChBD,aAAcA,QAIrB,IACD6D,GAAU1tE,YAAc,YACxB0tE,GAAU3tE,aA9IW,CACnBspE,MAAM,EACNL,UAAU,EACVM,UAAU,EACV7E,QAAQ,EACRriD,WAAW,EACXsnD,cAAc,EACdC,cAAc,EACdiE,UAAW,QACXI,kBAAkB,GAsIpB,OAAet8K,OAAOQ,OAAOw7K,GAAW,CACtCc,KAAMC,GACNC,OAAQtC,GACRuC,MAAOC,KC/JHC,GAA+Bt+D,EAAAA,YAAiB,SAACpzG,EAAOmE,GAC5D,IAAM7U,GAAUqqJ,EAAAA,EAAAA,YAAW8tB,IAC3B,OAAoB5H,EAAAA,EAAAA,KAAK0Q,GAAD,EAAC,GACvBpsK,IAAKA,EACL+nK,OAAoB,MAAX58K,IAAmBA,EAAQo4K,WACjC1nK,GAHmB,IAItB6wK,kBAAkB,IAErB,IACDa,GAAgB7uE,YAAc,kBAC9B,wICFM8uE,GAAapS,EAAmB,cAAe,CACnD3mD,UAAW,SAOPg5D,GAAsBx+D,EAAAA,YAAiB,SAACpzG,EAAOmE,GACnD,MAeIq8J,EAAgBxgK,EAAO,CACzB0nK,SAAU,aAfAmK,EADZ,EACEpS,SACAqS,EAFF,EAEEA,OACApD,EAHF,EAGEA,QACAphC,EAJF,EAIEA,GACAykC,EALF,EAKEA,MACAC,EANF,EAMEA,OACAxoK,EAPF,EAOEA,UAPF,IASEk2J,GAAI9mD,OATN,MASkB,MATlB,EAUE8uD,EAVF,EAUEA,SACAI,EAXF,EAWEA,SACAmK,EAZF,EAYEA,SACAC,EAbF,EAaEA,iBACGC,EAdL,QAkBM1S,EAAWT,EAAmB6S,EAAiB,UAC/CO,GAAiB14B,EAAAA,EAAAA,cAAY,WACrB,MAAZu4B,GAA4BA,EAAQ,WAAR,aAExBC,GAAoBxK,IACV,MAAZI,GAA4BA,GAAS,GAExC,GAAE,CAACmK,EAAUC,EAAkBxK,EAAUI,SAIbj6K,IAAzBskL,EAAgB5K,MAAoC,QAAd3uD,IACxCu5D,EAAgB5K,KAAO,cAGzB,IAAI8K,EAAc,GAAH,OAAM5S,EAAN,WACO,kBAAXqS,IAAqBO,EAAc,GAAH,OAAMA,EAAN,YAAqBP,IAChE,IAAMQ,GAAgBx4B,EAAAA,EAAAA,UAAQ,iBAAO,CACnCguB,SAAU,kBAAkB,MAAZA,OAAmB,EAASA,GAAUJ,EAA5C,EACVjI,SAAAA,EACAiI,WAAYA,EACZoK,OAAAA,EAJ4B,GAK1B,CAACrS,EAAUiI,EAAUoK,EAAQhK,IACjC,OAAoBjI,EAAAA,EAAAA,KAAK4H,GAAcpN,SAAU,CAC/CluK,MAAOmmL,EACPvoK,UAAuB81J,EAAAA,EAAAA,KAAK0S,EAAAA,SAA4B,CACtDpmL,MAAOimL,EACProK,UAAuB81J,EAAAA,EAAAA,KAAKjnD,EAAD,EAAC,GAC1Bz0G,IAAKA,GACFguK,GAFsB,IAGzB3oK,UAAW7I,IAAW6I,EAAWi2J,EAAUqS,GAAUO,EAAa3D,GAAW,GAAJ,OAAOjP,EAAP,YAAmBiP,GAAWphC,GAAM,MAAJ,OAAUA,GAAM0kC,GAAU,UAAJ,OAAcA,GAAUD,GAAS,SAAJ,OAAaA,UAIhL,IACDH,GAAOhvE,aA3Dc,CACnBkvE,QAAQ,EACRpD,QAAS,QACTwD,kBAAkB,GAyDpBN,GAAO/uE,YAAc,SACrB,OAAetuG,OAAOQ,OAAO68K,GAAQ,CACnCY,MAAOtR,EACPiG,SAAUK,GACV+I,UAAWmB,GACXe,KAAMd,GACNe,OAAQ7K,KChEK,SAAS8K,KAQtB,OALkB54B,EAAAA,EAAAA,aAAW,SAAUlyI,GACrC,OAAQA,CACT,IAAE,GACwB,EAG5B,CC1BD,IACA,GADqCurG,EAAAA,cAAoB,MCyB1C,SAASw/D,KACtB,OAAO34B,EAAAA,EAAAA,UAAS,KACjB,CC3Bc,SAAS,GAA2BhsI,EAAG4kK,GACpD,IAAI5zG,EAAuB,qBAAXxiD,QAA0BxO,EAAEwO,OAAOC,WAAazO,EAAE,cAElE,IAAKgxD,EAAI,CACP,GAAI7rE,MAAMkD,QAAQ2X,KAAOgxD,EAAK,GAA2BhxD,KAAO4kK,GAAkB5kK,GAAyB,kBAAbA,EAAEppB,OAAqB,CAC/Go6E,IAAIhxD,EAAIgxD,GACZ,IAAIpuE,EAAI,EAEJy5I,EAAI,WAAc,EAEtB,MAAO,CACLxpF,EAAGwpF,EACHjpI,EAAG,WACD,OAAIxQ,GAAKod,EAAEppB,OAAe,CACxB4F,MAAM,GAED,CACLA,MAAM,EACN0B,MAAO8hB,EAAEpd,KAEb,EACAmI,EAAG,SAAWmuD,GACZ,MAAMA,CACR,EACA/lD,EAAGkpI,EAEP,CAEA,MAAM,IAAIh6I,UAAU,wIACtB,CAEA,IAEIlE,EAFA0mL,GAAmB,EACnBC,GAAS,EAEb,MAAO,CACLjyH,EAAG,WACDme,EAAKA,EAAGvtE,KAAKuc,EACf,EACA5M,EAAG,WACD,IAAIogD,EAAOwd,EAAG1jD,OAEd,OADAu3J,EAAmBrxH,EAAKh3D,KACjBg3D,CACT,EACAzoD,EAAG,SAAWg6K,GACZD,GAAS,EACT3mL,EAAM4mL,CACR,EACA5xK,EAAG,WACD,IACO0xK,GAAoC,MAAhB7zG,EAAW,QAAWA,EAAW,QAG5D,CAFE,QACA,GAAI8zG,EAAQ,MAAM3mL,CACpB,CACF,EAEJ,CCxDA,IAAI87D,GAAM3zD,OAAO/E,UAAUwP,eAE3B,SAAS0nB,GAAKlK,EAAMy2J,EAAKjlL,GAAK,WACjBwuB,EAAK3lB,QADY,IAC7B,IAAK,EAAL,qBACC,GAAIq8K,GADAllL,EAAoB,QACRilL,GAAM,OAAOjlL,CAFD,+BAI7B,CAEM,SAASklL,GAAOC,EAAKC,GAC3B,IAAIC,EAAMxvH,EAAKkZ,EACf,GAAIo2G,IAAQC,EAAK,OAAO,EAExB,GAAID,GAAOC,IAAQC,EAAKF,EAAIh0K,eAAiBi0K,EAAIj0K,YAAa,CAC7D,GAAIk0K,IAAS1vL,KAAM,OAAOwvL,EAAIvvL,YAAcwvL,EAAIxvL,UAChD,GAAIyvL,IAASx4K,OAAQ,OAAOs4K,EAAI37K,aAAe47K,EAAI57K,WAEnD,GAAI67K,IAASjgL,MAAO,CACnB,IAAKywD,EAAIsvH,EAAItuL,UAAYuuL,EAAIvuL,OAC5B,KAAOg/D,KAASqvH,GAAOC,EAAItvH,GAAMuvH,EAAIvvH,MAEtC,OAAgB,IAATA,CACP,CAED,GAAIwvH,IAASlvG,IAAK,CACjB,GAAIgvG,EAAIjvK,OAASkvK,EAAIlvK,KACpB,OAAO,EAFS,WAILivK,GAJK,IAIjB,IAAK,EAAL,qBAAiB,CAEhB,IADAp2G,EADIlZ,EAAY,UAEU,kBAARkZ,KACjBA,EAAMr2C,GAAK0sJ,EAAKr2G,IACN,OAAO,EAElB,IAAKq2G,EAAIlrH,IAAI6U,GAAM,OAAO,CAC1B,CAXgB,+BAYjB,OAAO,CACP,CAED,GAAIs2G,IAASnvG,IAAK,CACjB,GAAIivG,EAAIjvK,OAASkvK,EAAIlvK,KACpB,OAAO,EAFS,WAILivK,GAJK,IAIjB,IAAK,EAAL,qBAAiB,CAEhB,IADAp2G,GADIlZ,EAAY,SACN,KACgB,kBAARkZ,KACjBA,EAAMr2C,GAAK0sJ,EAAKr2G,IACN,OAAO,EAElB,IAAKm2G,GAAOrvH,EAAI,GAAIuvH,EAAIrmK,IAAIgwD,IAC3B,OAAO,CAER,CAbgB,+BAcjB,OAAO,CACP,CAED,GAAIs2G,IAASh0K,YACZ8zK,EAAM,IAAIj0K,WAAWi0K,GACrBC,EAAM,IAAIl0K,WAAWk0K,QACf,GAAIC,IAASrvG,SAAU,CAC7B,IAAKngB,EAAIsvH,EAAIz1G,cAAgB01G,EAAI11G,WAChC,KAAO7Z,KAASsvH,EAAIG,QAAQzvH,KAASuvH,EAAIE,QAAQzvH,KAElD,OAAgB,IAATA,CACP,CAED,GAAIxkD,YAAYC,OAAO6zK,GAAM,CAC5B,IAAKtvH,EAAIsvH,EAAIz1G,cAAgB01G,EAAI11G,WAChC,KAAO7Z,KAASsvH,EAAItvH,KAASuvH,EAAIvvH,KAElC,OAAgB,IAATA,CACP,CAED,IAAKwvH,GAAuB,kBAARF,EAAkB,CAErC,IAAKE,KADLxvH,EAAM,EACOsvH,EAAK,CACjB,GAAIjrH,GAAIx2D,KAAKyhL,EAAKE,MAAWxvH,IAAQqE,GAAIx2D,KAAK0hL,EAAKC,GAAO,OAAO,EACjE,KAAMA,KAAQD,KAASF,GAAOC,EAAIE,GAAOD,EAAIC,IAAQ,OAAO,CAC5D,CACD,OAAO9+K,OAAOsC,KAAKu8K,GAAKvuL,SAAWg/D,CACnC,CACD,CAED,OAAOsvH,IAAQA,GAAOC,IAAQA,CAC9B,CCxED,OARA,SAAsBvrK,GACpB,IAAIgrI,EAAYy2B,KAChB,MAAO,CAACzhK,EAAM,IAAI6xI,EAAAA,EAAAA,cAAY,SAAUxhC,GACtC,GAAK26B,IACL,OAAOhrI,EAAM,GAAGqwG,EACjB,GAAE,CAAC26B,EAAWhrI,EAAM,KACtB,ECRc,SAAS0rK,GAAiB9C,GACvC,OAAOA,EAAU7rL,MAAM,KAAK,EAC7B,CCHc,SAAS4uL,GAAUvqK,GAChC,GAAY,MAARA,EACF,OAAO9M,OAGT,GAAwB,oBAApB8M,EAAKzR,WAAkC,CACzC,IAAIu7H,EAAgB9pH,EAAK8pH,cACzB,OAAOA,GAAgBA,EAAclV,aAAwB1hH,MAC9D,CAED,OAAO8M,CACR,CCTD,SAAS49C,GAAU59C,GAEjB,OAAOA,aADUuqK,GAAUvqK,GAAM69C,SACI79C,aAAgB69C,OACtD,CAED,SAAS2sH,GAAcxqK,GAErB,OAAOA,aADUuqK,GAAUvqK,GAAMzB,aACIyB,aAAgBzB,WACtD,CAED,SAASksK,GAAazqK,GAEpB,MAA0B,qBAAf0qK,aAKJ1qK,aADUuqK,GAAUvqK,GAAM0qK,YACI1qK,aAAgB0qK,WACtD,CCpBM,IAAIlqJ,GAAMxyB,KAAKwyB,IACXD,GAAMvyB,KAAKuyB,IACXqS,GAAQ5kC,KAAK4kC,MCFT,SAAS+3I,KACtB,IAAIC,EAASx4K,UAAUy4K,cAEvB,OAAc,MAAVD,GAAkBA,EAAOE,OACpBF,EAAOE,OAAOvwK,KAAI,SAAUT,GACjC,OAAOA,EAAKixK,MAAQ,IAAMjxK,EAAKlF,OAChC,IAAE7D,KAAK,KAGHqB,UAAUC,SAClB,CCTc,SAAS24K,KACtB,OAAQ,iCAAiCh5K,KAAK24K,KAC/C,CCCc,SAASxkB,GAAsB1lJ,EAASwqK,EAAcC,QAC9C,IAAjBD,IACFA,GAAe,QAGO,IAApBC,IACFA,GAAkB,GAGpB,IAAIC,EAAa1qK,EAAQ0lJ,wBACrB5/I,EAAS,EACTC,EAAS,EAETykK,GAAgBT,GAAc/pK,KAChC8F,EAAS9F,EAAQ6H,YAAc,GAAIsqB,GAAMu4I,EAAWppK,OAAStB,EAAQ6H,aAAmB,EACxF9B,EAAS/F,EAAQ8H,aAAe,GAAIqqB,GAAMu4I,EAAWlpK,QAAUxB,EAAQ8H,cAAoB,GAG7F,IACI6iK,GADOxtH,GAAUn9C,GAAW8pK,GAAU9pK,GAAWvN,QAC3Bk4K,eAEtBC,GAAoBL,MAAsBE,EAC1C16I,GAAK26I,EAAWvpK,MAAQypK,GAAoBD,EAAiBA,EAAehjK,WAAa,IAAM7B,EAC/FmqB,GAAKy6I,EAAWtpK,KAAOwpK,GAAoBD,EAAiBA,EAAe/iK,UAAY,IAAM7B,EAC7FzE,EAAQopK,EAAWppK,MAAQwE,EAC3BtE,EAASkpK,EAAWlpK,OAASuE,EACjC,MAAO,CACLzE,MAAOA,EACPE,OAAQA,EACRJ,IAAK6uB,EACL5uB,MAAO0uB,EAAIzuB,EACXC,OAAQ0uB,EAAIzuB,EACZL,KAAM4uB,EACNA,EAAGA,EACHE,EAAGA,EAEN,CCrCc,SAAS46I,GAAc7qK,GACpC,IAAI0qK,EAAahlB,GAAsB1lJ,GAGnCsB,EAAQtB,EAAQ6H,YAChBrG,EAASxB,EAAQ8H,aAUrB,OARIva,KAAK+U,IAAIooK,EAAWppK,MAAQA,IAAU,IACxCA,EAAQopK,EAAWppK,OAGjB/T,KAAK+U,IAAIooK,EAAWlpK,OAASA,IAAW,IAC1CA,EAASkpK,EAAWlpK,QAGf,CACLuuB,EAAG/vB,EAAQ2H,WACXsoB,EAAGjwB,EAAQ4H,UACXtG,MAAOA,EACPE,OAAQA,EAEX,CCvBc,SAASwgC,GAAS7hC,EAAQC,GACvC,IAAI0qK,EAAW1qK,EAAM+jC,aAAe/jC,EAAM+jC,cAE1C,GAAIhkC,EAAO6hC,SAAS5hC,GAClB,OAAO,EAEJ,GAAI0qK,GAAYd,GAAac,GAAW,CACzC,IAAIj5J,EAAOzR,EAEX,EAAG,CACD,GAAIyR,GAAQ1R,EAAO4qK,WAAWl5J,GAC5B,OAAO,EAITA,EAAOA,EAAKnR,YAAcmR,EAAK3f,IAChC,OAAQ2f,EACV,CAGH,OAAO,CACR,CCtBc,SAASm5J,GAAYhrK,GAClC,OAAOA,GAAWA,EAAQiqC,UAAY,IAAI1lD,cAAgB,IAC3D,CCDc,SAAS+kB,GAAiBtJ,GACvC,OAAO8pK,GAAU9pK,GAASsJ,iBAAiBtJ,EAC5C,CCFc,SAASirK,GAAejrK,GACrC,MAAO,CAAC,QAAS,KAAM,MAAM5c,QAAQ4nL,GAAYhrK,KAAa,CAC/D,CCFc,SAASkrK,GAAmBlrK,GAEzC,QAASm9C,GAAUn9C,GAAWA,EAAQqpH,cACtCrpH,EAAQ/O,WAAawB,OAAOxB,UAAUo4C,eACvC,CCFc,SAAS8hI,GAAcnrK,GACpC,MAA6B,SAAzBgrK,GAAYhrK,GACPA,EAMPA,EAAQorK,cACRprK,EAAQU,aACRspK,GAAahqK,GAAWA,EAAQ9N,KAAO,OAEvCg5K,GAAmBlrK,EAGtB,CCVD,SAASqrK,GAAoBrrK,GAC3B,OAAK+pK,GAAc/pK,IACoB,UAAvCsJ,GAAiBtJ,GAASnJ,SAInBmJ,EAAQgI,aAHN,IAIV,CAwCc,SAASsjK,GAAgBtrK,GAItC,IAHA,IAAIvN,EAASq3K,GAAU9pK,GACnBgI,EAAeqjK,GAAoBrrK,GAEhCgI,GAAgBijK,GAAejjK,IAA6D,WAA5CsB,GAAiBtB,GAAcnR,UACpFmR,EAAeqjK,GAAoBrjK,GAGrC,OAAIA,IAA+C,SAA9BgjK,GAAYhjK,IAA0D,SAA9BgjK,GAAYhjK,IAAwE,WAA5CsB,GAAiBtB,GAAcnR,UAC3HpE,EAGFuV,GAhDT,SAA4BhI,GAC1B,IAAI++G,EAAY,WAAWxtH,KAAK24K,MAGhC,GAFW,WAAW34K,KAAK24K,OAEfH,GAAc/pK,IAII,UAFXsJ,GAAiBtJ,GAEnBnJ,SACb,OAAO,KAIX,IAAIgxD,EAAcsjH,GAAcnrK,GAMhC,IAJIgqK,GAAaniH,KACfA,EAAcA,EAAY31D,MAGrB63K,GAAcliH,IAAgB,CAAC,OAAQ,QAAQzkE,QAAQ4nL,GAAYnjH,IAAgB,GAAG,CAC3F,IAAI87B,EAAMr6E,GAAiBu+C,GAI3B,GAAsB,SAAlB87B,EAAIp1C,WAA4C,SAApBo1C,EAAI58E,aAA0C,UAAhB48E,EAAI4nF,UAAiF,IAA1D,CAAC,YAAa,eAAenoL,QAAQugG,EAAI6nF,aAAsBzsD,GAAgC,WAAnBp7B,EAAI6nF,YAA2BzsD,GAAap7B,EAAIltF,QAAyB,SAAfktF,EAAIltF,OACjO,OAAOoxD,EAEPA,EAAcA,EAAYnnD,UAE7B,CAED,OAAO,IACR,CAgBwB+qK,CAAmBzrK,IAAYvN,CACvD,CCpEc,SAASi5K,GAAyB3E,GAC/C,MAAO,CAAC,MAAO,UAAU3jL,QAAQ2jL,IAAc,EAAI,IAAM,GAC1D,CCDM,SAAS4E,GAAO7rJ,EAAKr9B,EAAOs9B,GACjC,OAAO6rJ,GAAQ9rJ,EAAK+rJ,GAAQppL,EAAOs9B,GACpC,CCFc,SAAS+rJ,GAAmBC,GACzC,OAAOlhL,OAAOQ,OAAO,CAAC,ECDf,CACL+V,IAAK,EACLC,MAAO,EACPE,OAAQ,EACRJ,KAAM,GDHuC4qK,EAChD,CEHc,SAASC,GAAgBvpL,EAAO0K,GAC7C,OAAOA,EAAK8oB,QAAO,SAAUg2J,EAAS3nL,GAEpC,OADA2nL,EAAQ3nL,GAAO7B,EACRwpL,CACR,GAAE,CAAC,EACL,CCLM,IAAI7qK,GAAM,MACNG,GAAS,SACTF,GAAQ,QACRF,GAAO,OACP+qK,GAAO,OACPC,GAAiB,CAAC/qK,GAAKG,GAAQF,GAAOF,IACtC4C,GAAQ,QACRwsB,GAAM,MAEN67I,GAAW,WACXC,GAAS,SAETC,GAAmCH,GAAel2J,QAAO,SAAU4lJ,EAAKkL,GACjF,OAAOlL,EAAIjhL,OAAO,CAACmsL,EAAY,IAAMhjK,GAAOgjK,EAAY,IAAMx2I,IAC/D,GAAE,IACQg8I,GAA0B,GAAG3xL,OAAOuxL,GAAgB,CAACD,KAAOj2J,QAAO,SAAU4lJ,EAAKkL,GAC3F,OAAOlL,EAAIjhL,OAAO,CAACmsL,EAAWA,EAAY,IAAMhjK,GAAOgjK,EAAY,IAAMx2I,IAC1E,GAAE,IAaQi8I,GAAiB,CAXJ,aACN,OACK,YAEC,aACN,OACK,YAEE,cACN,QACK,cC+DxB,QACEtkL,KAAM,QACNonD,SAAS,EACTm9H,MAAO,OACP9gL,GA9EF,SAAegN,GACb,IAAI+zK,EAEAvuK,EAAQxF,EAAKwF,MACbjW,EAAOyQ,EAAKzQ,KACZsD,EAAUmN,EAAKnN,QACfmhL,EAAexuK,EAAMyuK,SAASC,MAC9BC,EAAgB3uK,EAAM4uK,cAAcD,cACpCE,EAAgBnD,GAAiB1rK,EAAM4oK,WACvChmB,EAAO2qB,GAAyBsB,GAEhC7yH,EADa,CAACh5C,GAAME,IAAOje,QAAQ4pL,IAAkB,EAClC,SAAW,QAElC,GAAKL,GAAiBG,EAAtB,CAIA,IAAIf,EAxBgB,SAAyBzrJ,EAASniB,GAItD,OAAO2tK,GAAsC,kBAH7CxrJ,EAA6B,oBAAZA,EAAyBA,EAAQz1B,OAAOQ,OAAO,CAAC,EAAG8S,EAAM8uK,MAAO,CAC/ElG,UAAW5oK,EAAM4oK,aACbzmJ,GACkDA,EAAU0rJ,GAAgB1rJ,EAAS6rJ,IAC5F,CAmBqBe,CAAgB1hL,EAAQ80B,QAASniB,GACjDgvK,EAAYtC,GAAc8B,GAC1BS,EAAmB,MAATrsB,EAAe3/I,GAAMD,GAC/BksK,EAAmB,MAATtsB,EAAex/I,GAASF,GAClCisK,EAAUnvK,EAAM8uK,MAAMM,UAAUpzH,GAAOh8C,EAAM8uK,MAAMM,UAAUxsB,GAAQ+rB,EAAc/rB,GAAQ5iJ,EAAM8uK,MAAMZ,OAAOlyH,GAC9GqzH,EAAYV,EAAc/rB,GAAQ5iJ,EAAM8uK,MAAMM,UAAUxsB,GACxD0sB,EAAoBnC,GAAgBqB,GACpCe,EAAaD,EAA6B,MAAT1sB,EAAe0sB,EAAkBzoB,cAAgB,EAAIyoB,EAAkBtoB,aAAe,EAAI,EAC3HwoB,EAAoBL,EAAU,EAAIE,EAAY,EAG9C1tJ,EAAMisJ,EAAcqB,GACpBrtJ,EAAM2tJ,EAAaP,EAAUhzH,GAAO4xH,EAAcsB,GAClD50I,EAASi1I,EAAa,EAAIP,EAAUhzH,GAAO,EAAIwzH,EAC/C9zL,EAAS8xL,GAAO7rJ,EAAK2Y,EAAQ1Y,GAE7B6tJ,EAAW7sB,EACf5iJ,EAAM4uK,cAAc7kL,KAASwkL,EAAwB,CAAC,GAAyBkB,GAAY/zL,EAAQ6yL,EAAsBmB,aAAeh0L,EAAS4+C,EAAQi0I,EAnBxJ,CAoBF,EA4CChkI,OA1CF,SAAgB1vC,GACd,IAAImF,EAAQnF,EAAMmF,MAEd2vK,EADU90K,EAAMxN,QACWwU,QAC3B2sK,OAAoC,IAArBmB,EAA8B,sBAAwBA,EAErD,MAAhBnB,IAKwB,kBAAjBA,IACTA,EAAexuK,EAAMyuK,SAASP,OAAOjqI,cAAcuqI,MAahD3qI,GAAS7jC,EAAMyuK,SAASP,OAAQM,KAQrCxuK,EAAMyuK,SAASC,MAAQF,EACxB,EASCoB,SAAU,CAAC,iBACXC,iBAAkB,CAAC,oBCnGN,SAASC,GAAalH,GACnC,OAAOA,EAAU7rL,MAAM,KAAK,EAC7B,CCOD,IAAIgzL,GAAa,CACf9sK,IAAK,OACLC,MAAO,OACPE,OAAQ,OACRJ,KAAM,QAgBD,SAASgtK,GAAYn1K,GAC1B,IAAIo1K,EAEA/B,EAASrzK,EAAMqzK,OACfgC,EAAar1K,EAAMq1K,WACnBtH,EAAY/tK,EAAM+tK,UAClBuH,EAAYt1K,EAAMs1K,UAClBC,EAAUv1K,EAAMu1K,QAChB13K,EAAWmC,EAAMnC,SACjB23K,EAAkBx1K,EAAMw1K,gBACxBC,EAAWz1K,EAAMy1K,SACjBC,EAAe11K,EAAM01K,aACrBC,EAAU31K,EAAM21K,QAChBC,EAAaL,EAAQx+I,EACrBA,OAAmB,IAAf6+I,EAAwB,EAAIA,EAChCC,EAAaN,EAAQt+I,EACrBA,OAAmB,IAAf4+I,EAAwB,EAAIA,EAEhCv1K,EAAgC,oBAAjBo1K,EAA8BA,EAAa,CAC5D3+I,EAAGA,EACHE,EAAGA,IACA,CACHF,EAAGA,EACHE,EAAGA,GAGLF,EAAIz2B,EAAMy2B,EACVE,EAAI32B,EAAM22B,EACV,IAAI6+I,EAAOP,EAAQj5K,eAAe,KAC9By5K,EAAOR,EAAQj5K,eAAe,KAC9B05K,EAAQ7tK,GACR8tK,EAAQ7tK,GACR8tK,EAAMz8K,OAEV,GAAIg8K,EAAU,CACZ,IAAIzmK,EAAesjK,GAAgBe,GAC/B8C,EAAa,eACbC,EAAY,cAchB,GAZIpnK,IAAiB8hK,GAAUuC,IAGmB,WAA5C/iK,GAFJtB,EAAekjK,GAAmBmB,IAECx1K,UAAsC,aAAbA,IAC1Ds4K,EAAa,eACbC,EAAY,eAOZrI,IAAc3lK,KAAQ2lK,IAAc5lK,IAAQ4lK,IAAc1lK,KAAUitK,IAAc/9I,GACpF0+I,EAAQ1tK,GAGR0uB,IAFc0+I,GAAW3mK,IAAiBknK,GAAOA,EAAIvE,eAAiBuE,EAAIvE,eAAenpK,OACzFwG,EAAamnK,IACEd,EAAW7sK,OAC1ByuB,GAAKu+I,EAAkB,GAAK,EAG9B,GAAIzH,IAAc5lK,KAAS4lK,IAAc3lK,IAAO2lK,IAAcxlK,KAAW+sK,IAAc/9I,GACrFy+I,EAAQ3tK,GAGR0uB,IAFc4+I,GAAW3mK,IAAiBknK,GAAOA,EAAIvE,eAAiBuE,EAAIvE,eAAerpK,MACzF0G,EAAaonK,IACEf,EAAW/sK,MAC1ByuB,GAAKy+I,EAAkB,GAAK,CAE/B,CAED,IAgBMa,EAhBFC,EAAezkL,OAAOQ,OAAO,CAC/BwL,SAAUA,GACT43K,GAAYP,IAEXx0K,GAAyB,IAAjBg1K,EAnFd,SAA2B/1K,GACzB,IAAIo3B,EAAIp3B,EAAKo3B,EACTE,EAAIt3B,EAAKs3B,EAETs/I,EADM98K,OACI+8K,kBAAoB,EAClC,MAAO,CACLz/I,EAAGoC,GAAMpC,EAAIw/I,GAAOA,GAAO,EAC3Bt/I,EAAGkC,GAAMlC,EAAIs/I,GAAOA,GAAO,EAE9B,CA0EqCE,CAAkB,CACpD1/I,EAAGA,EACHE,EAAGA,IACA,CACHF,EAAGA,EACHE,EAAGA,GAML,OAHAF,EAAIr2B,EAAMq2B,EACVE,EAAIv2B,EAAMu2B,EAENu+I,EAGK3jL,OAAOQ,OAAO,CAAC,EAAGikL,IAAeD,EAAiB,CAAC,GAAkBJ,GAASF,EAAO,IAAM,GAAIM,EAAeL,GAASF,EAAO,IAAM,GAAIO,EAAe9gI,WAAa2gI,EAAIM,kBAAoB,IAAM,EAAI,aAAez/I,EAAI,OAASE,EAAI,MAAQ,eAAiBF,EAAI,OAASE,EAAI,SAAUo/I,IAG5RxkL,OAAOQ,OAAO,CAAC,EAAGikL,IAAelB,EAAkB,CAAC,GAAmBa,GAASF,EAAO9+I,EAAI,KAAO,GAAIm+I,EAAgBY,GAASF,EAAO/+I,EAAI,KAAO,GAAIq+I,EAAgB7/H,UAAY,GAAI6/H,GAC7L,CAuDD,QACElmL,KAAM,gBACNonD,SAAS,EACTm9H,MAAO,cACP9gL,GAzDF,SAAuBgO,GACrB,IAAIwE,EAAQxE,EAAMwE,MACd3S,EAAUmO,EAAMnO,QAChBkkL,EAAwBlkL,EAAQgjL,gBAChCA,OAA4C,IAA1BkB,GAA0CA,EAC5DC,EAAoBnkL,EAAQijL,SAC5BA,OAAiC,IAAtBkB,GAAsCA,EACjDC,EAAwBpkL,EAAQkjL,aAChCA,OAAyC,IAA1BkB,GAA0CA,EAYzDN,EAAe,CACjBvI,UAAW8C,GAAiB1rK,EAAM4oK,WAClCuH,UAAWL,GAAa9vK,EAAM4oK,WAC9BsF,OAAQluK,EAAMyuK,SAASP,OACvBgC,WAAYlwK,EAAM8uK,MAAMZ,OACxBmC,gBAAiBA,EACjBG,QAAoC,UAA3BxwK,EAAM3S,QAAQqkL,UAGgB,MAArC1xK,EAAM4uK,cAAcD,gBACtB3uK,EAAMoI,OAAO8lK,OAASxhL,OAAOQ,OAAO,CAAC,EAAG8S,EAAMoI,OAAO8lK,OAAQ8B,GAAYtjL,OAAOQ,OAAO,CAAC,EAAGikL,EAAc,CACvGf,QAASpwK,EAAM4uK,cAAcD,cAC7Bj2K,SAAUsH,EAAM3S,QAAQqkL,SACxBpB,SAAUA,EACVC,aAAcA,OAIe,MAA7BvwK,EAAM4uK,cAAcF,QACtB1uK,EAAMoI,OAAOsmK,MAAQhiL,OAAOQ,OAAO,CAAC,EAAG8S,EAAMoI,OAAOsmK,MAAOsB,GAAYtjL,OAAOQ,OAAO,CAAC,EAAGikL,EAAc,CACrGf,QAASpwK,EAAM4uK,cAAcF,MAC7Bh2K,SAAU,WACV43K,UAAU,EACVC,aAAcA,OAIlBvwK,EAAM4B,WAAWssK,OAASxhL,OAAOQ,OAAO,CAAC,EAAG8S,EAAM4B,WAAWssK,OAAQ,CACnE,wBAAyBluK,EAAM4oK,WAElC,EAQCpmL,KAAM,CAAC,GCjLL2rD,GAAU,CACZA,SAAS,GAsCX,QACEpkD,KAAM,iBACNonD,SAAS,EACTm9H,MAAO,QACP9gL,GAAI,WAAgB,EACpB+8C,OAxCF,SAAgB/vC,GACd,IAAIwF,EAAQxF,EAAKwF,MACbtY,EAAW8S,EAAK9S,SAChB2F,EAAUmN,EAAKnN,QACfskL,EAAkBtkL,EAAQoyK,OAC1BA,OAA6B,IAApBkS,GAAoCA,EAC7CC,EAAkBvkL,EAAQ6sF,OAC1BA,OAA6B,IAApB03F,GAAoCA,EAC7Ct9K,EAASq3K,GAAU3rK,EAAMyuK,SAASP,QAClC2D,EAAgB,GAAGp1L,OAAOujB,EAAM6xK,cAAczC,UAAWpvK,EAAM6xK,cAAc3D,QAYjF,OAVIzO,GACFoS,EAAc3rL,SAAQ,SAAU4rL,GAC9BA,EAAatrL,iBAAiB,SAAUkB,EAAS6qF,OAAQpkC,GAC1D,IAGC+rC,GACF5lF,EAAO9N,iBAAiB,SAAUkB,EAAS6qF,OAAQpkC,IAG9C,WACDsxH,GACFoS,EAAc3rL,SAAQ,SAAU4rL,GAC9BA,EAAa9uL,oBAAoB,SAAU0E,EAAS6qF,OAAQpkC,GAC7D,IAGC+rC,GACF5lF,EAAOtR,oBAAoB,SAAU0E,EAAS6qF,OAAQpkC,GAEzD,CACF,EASC3rD,KAAM,CAAC,GC/CLyR,GAAO,CACT+O,KAAM,QACNE,MAAO,OACPE,OAAQ,MACRH,IAAK,UAEQ,SAAS8uK,GAAqBnJ,GAC3C,OAAOA,EAAU/2K,QAAQ,0BAA0B,SAAUmgL,GAC3D,OAAO/9K,GAAK+9K,EACb,GACF,CCVD,IAAI/9K,GAAO,CACT2R,MAAO,MACPwsB,IAAK,SAEQ,SAAS6/I,GAA8BrJ,GACpD,OAAOA,EAAU/2K,QAAQ,cAAc,SAAUmgL,GAC/C,OAAO/9K,GAAK+9K,EACb,GACF,CCPc,SAASE,GAAgB9wK,GACtC,IAAI2vK,EAAMpF,GAAUvqK,GAGpB,MAAO,CACLm/H,WAHewwC,EAAI5mI,YAInBvgC,UAHcmnK,EAAI3mI,YAKrB,CCNc,SAAS+nI,GAAoBtwK,GAQ1C,OAAO0lJ,GAAsBwlB,GAAmBlrK,IAAUmB,KAAOkvK,GAAgBrwK,GAAS0+H,UAC3F,CCXc,SAAS6xC,GAAevwK,GAErC,IAAIwwK,EAAoBlnK,GAAiBtJ,GACrC4/B,EAAW4wI,EAAkB5wI,SAC7B6wI,EAAYD,EAAkBC,UAC9BC,EAAYF,EAAkBE,UAElC,MAAO,6BAA6Bn/K,KAAKquC,EAAW8wI,EAAYD,EACjE,CCLc,SAASE,GAAgBpxK,GACtC,MAAI,CAAC,OAAQ,OAAQ,aAAanc,QAAQ4nL,GAAYzrK,KAAU,EAEvDA,EAAK8pH,cAAcjmG,KAGxB2mJ,GAAcxqK,IAASgxK,GAAehxK,GACjCA,EAGFoxK,GAAgBxF,GAAc5rK,GACtC,CCJc,SAASqxK,GAAkB5wK,EAASk/B,GACjD,IAAI2xI,OAES,IAAT3xI,IACFA,EAAO,IAGT,IAAI+wI,EAAeU,GAAgB3wK,GAC/B8wK,EAASb,KAAqE,OAAlDY,EAAwB7wK,EAAQqpH,oBAAyB,EAASwnD,EAAsBztJ,MACpH8rJ,EAAMpF,GAAUmG,GAChBvjL,EAASokL,EAAS,CAAC5B,GAAKt0L,OAAOs0L,EAAIvE,gBAAkB,GAAI4F,GAAeN,GAAgBA,EAAe,IAAMA,EAC7Gc,EAAc7xI,EAAKtkD,OAAO8R,GAC9B,OAAOokL,EAASC,EAChBA,EAAYn2L,OAAOg2L,GAAkBzF,GAAcz+K,IACpD,CCzBc,SAASskL,GAAiBvvK,GACvC,OAAO5W,OAAOQ,OAAO,CAAC,EAAGoW,EAAM,CAC7BN,KAAMM,EAAKsuB,EACX3uB,IAAKK,EAAKwuB,EACV5uB,MAAOI,EAAKsuB,EAAItuB,EAAKH,MACrBC,OAAQE,EAAKwuB,EAAIxuB,EAAKD,QAEzB,CCqBD,SAASyvK,GAA2BjxK,EAASkxK,EAAgBrB,GAC3D,OAAOqB,IAAmB9E,GAAW4E,GCzBxB,SAAyBhxK,EAAS6vK,GAC/C,IAAIX,EAAMpF,GAAU9pK,GAChBmxK,EAAOjG,GAAmBlrK,GAC1B2qK,EAAiBuE,EAAIvE,eACrBrpK,EAAQ6vK,EAAKhsB,YACb3jJ,EAAS2vK,EAAKnsB,aACdj1H,EAAI,EACJE,EAAI,EAER,GAAI06I,EAAgB,CAClBrpK,EAAQqpK,EAAerpK,MACvBE,EAASmpK,EAAenpK,OACxB,IAAI4vK,EAAiB7G,MAEjB6G,IAAmBA,GAA+B,UAAbvB,KACvC9/I,EAAI46I,EAAehjK,WACnBsoB,EAAI06I,EAAe/iK,UAEtB,CAED,MAAO,CACLtG,MAAOA,EACPE,OAAQA,EACRuuB,EAAGA,EAAIugJ,GAAoBtwK,GAC3BiwB,EAAGA,EAEN,CDDuDohJ,CAAgBrxK,EAAS6vK,IAAa1yH,GAAU+zH,GAdxG,SAAoClxK,EAAS6vK,GAC3C,IAAIpuK,EAAOikJ,GAAsB1lJ,GAAS,EAAoB,UAAb6vK,GASjD,OARApuK,EAAKL,IAAMK,EAAKL,IAAMpB,EAAQsxK,UAC9B7vK,EAAKN,KAAOM,EAAKN,KAAOnB,EAAQuxK,WAChC9vK,EAAKF,OAASE,EAAKL,IAAMpB,EAAQglJ,aACjCvjJ,EAAKJ,MAAQI,EAAKN,KAAOnB,EAAQmlJ,YACjC1jJ,EAAKH,MAAQtB,EAAQmlJ,YACrB1jJ,EAAKD,OAASxB,EAAQglJ,aACtBvjJ,EAAKsuB,EAAItuB,EAAKN,KACdM,EAAKwuB,EAAIxuB,EAAKL,IACPK,CACR,CAGyH+vK,CAA2BN,EAAgBrB,GAAYmB,GEtBlK,SAAyBhxK,GACtC,IAAI6wK,EAEAM,EAAOjG,GAAmBlrK,GAC1ByxK,EAAYpB,GAAgBrwK,GAC5BojB,EAA0D,OAAlDytJ,EAAwB7wK,EAAQqpH,oBAAyB,EAASwnD,EAAsBztJ,KAChG9hB,EAAQye,GAAIoxJ,EAAKO,YAAaP,EAAKhsB,YAAa/hI,EAAOA,EAAKsuJ,YAAc,EAAGtuJ,EAAOA,EAAK+hI,YAAc,GACvG3jJ,EAASue,GAAIoxJ,EAAKQ,aAAcR,EAAKnsB,aAAc5hI,EAAOA,EAAKuuJ,aAAe,EAAGvuJ,EAAOA,EAAK4hI,aAAe,GAC5Gj1H,GAAK0hJ,EAAU/yC,WAAa4xC,GAAoBtwK,GAChDiwB,GAAKwhJ,EAAU1pK,UAMnB,MAJiD,QAA7CuB,GAAiB8Z,GAAQ+tJ,GAAM3mE,YACjCz6E,GAAKhQ,GAAIoxJ,EAAKhsB,YAAa/hI,EAAOA,EAAK+hI,YAAc,GAAK7jJ,GAGrD,CACLA,MAAOA,EACPE,OAAQA,EACRuuB,EAAGA,EACHE,EAAGA,EAEN,CFCiM2hJ,CAAgB1G,GAAmBlrK,IACpO,CAsBc,SAAS6xK,GAAgB7xK,EAAS8xK,EAAUC,EAAclC,GACvE,IAAImC,EAAmC,oBAAbF,EAlB5B,SAA4B9xK,GAC1B,IAAIiyK,EAAkBrB,GAAkBzF,GAAcnrK,IAElDkyK,EADoB,CAAC,WAAY,SAAS9uL,QAAQkmB,GAAiBtJ,GAASnJ,WAAa,GACnDkzK,GAAc/pK,GAAWsrK,GAAgBtrK,GAAWA,EAE9F,OAAKm9C,GAAU+0H,GAKRD,EAAgBx7K,QAAO,SAAUy6K,GACtC,OAAO/zH,GAAU+zH,IAAmBlvI,GAASkvI,EAAgBgB,IAAmD,SAAhClH,GAAYkG,EAC7F,IANQ,EAOV,CAK4DiB,CAAmBnyK,GAAW,GAAGplB,OAAOk3L,GAC/FG,EAAkB,GAAGr3L,OAAOo3L,EAAqB,CAACD,IAClDK,EAAsBH,EAAgB,GACtCI,EAAeJ,EAAgBh8J,QAAO,SAAUq8J,EAASpB,GAC3D,IAAIzvK,EAAOwvK,GAA2BjxK,EAASkxK,EAAgBrB,GAK/D,OAJAyC,EAAQlxK,IAAM2e,GAAIte,EAAKL,IAAKkxK,EAAQlxK,KACpCkxK,EAAQjxK,MAAQye,GAAIre,EAAKJ,MAAOixK,EAAQjxK,OACxCixK,EAAQ/wK,OAASue,GAAIre,EAAKF,OAAQ+wK,EAAQ/wK,QAC1C+wK,EAAQnxK,KAAO4e,GAAIte,EAAKN,KAAMmxK,EAAQnxK,MAC/BmxK,CACR,GAAErB,GAA2BjxK,EAASoyK,EAAqBvC,IAK5D,OAJAwC,EAAa/wK,MAAQ+wK,EAAahxK,MAAQgxK,EAAalxK,KACvDkxK,EAAa7wK,OAAS6wK,EAAa9wK,OAAS8wK,EAAajxK,IACzDixK,EAAatiJ,EAAIsiJ,EAAalxK,KAC9BkxK,EAAapiJ,EAAIoiJ,EAAajxK,IACvBixK,CACR,CGjEc,SAASE,GAAe55K,GACrC,IAOI41K,EAPAhB,EAAY50K,EAAK40K,UACjBvtK,EAAUrH,EAAKqH,QACf+mK,EAAYpuK,EAAKouK,UACjBiG,EAAgBjG,EAAY8C,GAAiB9C,GAAa,KAC1DuH,EAAYvH,EAAYkH,GAAalH,GAAa,KAClDyL,EAAUjF,EAAUx9I,EAAIw9I,EAAUjsK,MAAQ,EAAItB,EAAQsB,MAAQ,EAC9DmxK,EAAUlF,EAAUt9I,EAAIs9I,EAAU/rK,OAAS,EAAIxB,EAAQwB,OAAS,EAGpE,OAAQwrK,GACN,KAAK5rK,GACHmtK,EAAU,CACRx+I,EAAGyiJ,EACHviJ,EAAGs9I,EAAUt9I,EAAIjwB,EAAQwB,QAE3B,MAEF,KAAKD,GACHgtK,EAAU,CACRx+I,EAAGyiJ,EACHviJ,EAAGs9I,EAAUt9I,EAAIs9I,EAAU/rK,QAE7B,MAEF,KAAKH,GACHktK,EAAU,CACRx+I,EAAGw9I,EAAUx9I,EAAIw9I,EAAUjsK,MAC3B2uB,EAAGwiJ,GAEL,MAEF,KAAKtxK,GACHotK,EAAU,CACRx+I,EAAGw9I,EAAUx9I,EAAI/vB,EAAQsB,MACzB2uB,EAAGwiJ,GAEL,MAEF,QACElE,EAAU,CACRx+I,EAAGw9I,EAAUx9I,EACbE,EAAGs9I,EAAUt9I,GAInB,IAAI28H,EAAWogB,EAAgBtB,GAAyBsB,GAAiB,KAEzE,GAAgB,MAAZpgB,EAAkB,CACpB,IAAIzyG,EAAmB,MAAbyyG,EAAmB,SAAW,QAExC,OAAQ0hB,GACN,KAAKvqK,GACHwqK,EAAQ3hB,GAAY2hB,EAAQ3hB,IAAa2gB,EAAUpzH,GAAO,EAAIn6C,EAAQm6C,GAAO,GAC7E,MAEF,KAAK5pB,GACHg+I,EAAQ3hB,GAAY2hB,EAAQ3hB,IAAa2gB,EAAUpzH,GAAO,EAAIn6C,EAAQm6C,GAAO,GAKlF,CAED,OAAOo0H,CACR,CC3Dc,SAASmE,GAAev0K,EAAO3S,QAC5B,IAAZA,IACFA,EAAU,CAAC,GAGb,IAAImnL,EAAWnnL,EACXonL,EAAqBD,EAAS5L,UAC9BA,OAAmC,IAAvB6L,EAAgCz0K,EAAM4oK,UAAY6L,EAC9DC,EAAoBF,EAAS9C,SAC7BA,OAAiC,IAAtBgD,EAA+B10K,EAAM0xK,SAAWgD,EAC3DC,EAAoBH,EAASb,SAC7BA,OAAiC,IAAtBgB,EjBbY,kBiBaqCA,EAC5DC,EAAwBJ,EAASZ,aACjCA,OAAyC,IAA1BgB,EAAmC3G,GAAW2G,EAC7DC,EAAwBL,EAASM,eACjCA,OAA2C,IAA1BD,EAAmC3G,GAAS2G,EAC7DE,EAAuBP,EAASQ,YAChCA,OAAuC,IAAzBD,GAA0CA,EACxDE,EAAmBT,EAASryJ,QAC5BA,OAA+B,IAArB8yJ,EAA8B,EAAIA,EAC5CrH,EAAgBD,GAAsC,kBAAZxrJ,EAAuBA,EAAU0rJ,GAAgB1rJ,EAAS6rJ,KACpGkH,EAAaJ,IAAmB5G,GjBpBf,YiBoBoCA,GACrDgC,EAAalwK,EAAM8uK,MAAMZ,OACzBrsK,EAAU7B,EAAMyuK,SAASuG,EAAcE,EAAaJ,GACpDK,EAAqBzB,GAAgB10H,GAAUn9C,GAAWA,EAAUA,EAAQuzK,gBAAkBrI,GAAmB/sK,EAAMyuK,SAASP,QAASyF,EAAUC,EAAclC,GACjK2D,EAAsB9tB,GAAsBvnJ,EAAMyuK,SAASW,WAC3DT,EAAgByF,GAAe,CACjChF,UAAWiG,EACXxzK,QAASquK,EACTwB,SAAU,WACV9I,UAAWA,IAET0M,EAAmBzC,GAAiBnmL,OAAOQ,OAAO,CAAC,EAAGgjL,EAAYvB,IAClE4G,EAAoBT,IAAmB5G,GAASoH,EAAmBD,EAGnEG,EAAkB,CACpBvyK,IAAKkyK,EAAmBlyK,IAAMsyK,EAAkBtyK,IAAM2qK,EAAc3qK,IACpEG,OAAQmyK,EAAkBnyK,OAAS+xK,EAAmB/xK,OAASwqK,EAAcxqK,OAC7EJ,KAAMmyK,EAAmBnyK,KAAOuyK,EAAkBvyK,KAAO4qK,EAAc5qK,KACvEE,MAAOqyK,EAAkBryK,MAAQiyK,EAAmBjyK,MAAQ0qK,EAAc1qK,OAExEuyK,EAAaz1K,EAAM4uK,cAAclzL,OAErC,GAAIo5L,IAAmB5G,IAAUuH,EAAY,CAC3C,IAAI/5L,EAAS+5L,EAAW7M,GACxBl8K,OAAOsC,KAAKwmL,GAAiBtvL,SAAQ,SAAUC,GAC7C,IAAIuvL,EAAW,CAACxyK,GAAOE,IAAQne,QAAQkB,IAAQ,EAAI,GAAK,EACpDy8J,EAAO,CAAC3/I,GAAKG,IAAQne,QAAQkB,IAAQ,EAAI,IAAM,IACnDqvL,EAAgBrvL,IAAQzK,EAAOknK,GAAQ8yB,CACxC,GACF,CAED,OAAOF,CACR,CCyED,QACEzrL,KAAM,OACNonD,SAAS,EACTm9H,MAAO,OACP9gL,GA5HF,SAAcgN,GACZ,IAAIwF,EAAQxF,EAAKwF,MACb3S,EAAUmN,EAAKnN,QACftD,EAAOyQ,EAAKzQ,KAEhB,IAAIiW,EAAM4uK,cAAc7kL,GAAM4rL,MAA9B,CAoCA,IAhCA,IAAIC,EAAoBvoL,EAAQohK,SAC5BonB,OAAsC,IAAtBD,GAAsCA,EACtDE,EAAmBzoL,EAAQ0oL,QAC3BC,OAAoC,IAArBF,GAAqCA,EACpDG,EAA8B5oL,EAAQ6oL,mBACtC/zJ,EAAU90B,EAAQ80B,QAClBwxJ,EAAWtmL,EAAQsmL,SACnBC,EAAevmL,EAAQumL,aACvBoB,EAAc3nL,EAAQ2nL,YACtBmB,EAAwB9oL,EAAQ+oL,eAChCA,OAA2C,IAA1BD,GAA0CA,EAC3DE,EAAwBhpL,EAAQgpL,sBAChCC,EAAqBt2K,EAAM3S,QAAQu7K,UACnCiG,EAAgBnD,GAAiB4K,GAEjCJ,EAAqBD,IADHpH,IAAkByH,IACqCF,EAAiB,CAACrE,GAAqBuE,IAjCtH,SAAuC1N,GACrC,GAAI8C,GAAiB9C,KAAemF,GAClC,MAAO,GAGT,IAAIwI,EAAoBxE,GAAqBnJ,GAC7C,MAAO,CAACqJ,GAA8BrJ,GAAY2N,EAAmBtE,GAA8BsE,GACpG,CA0B4IC,CAA8BF,IACrKlI,EAAa,CAACkI,GAAoB75L,OAAOy5L,GAAoBp+J,QAAO,SAAU4lJ,EAAKkL,GACrF,OAAOlL,EAAIjhL,OAAOivL,GAAiB9C,KAAemF,GCvCvC,SAA8B/tK,EAAO3S,QAClC,IAAZA,IACFA,EAAU,CAAC,GAGb,IAAImnL,EAAWnnL,EACXu7K,EAAY4L,EAAS5L,UACrB+K,EAAWa,EAASb,SACpBC,EAAeY,EAASZ,aACxBzxJ,EAAUqyJ,EAASryJ,QACnBi0J,EAAiB5B,EAAS4B,eAC1BK,EAAwBjC,EAAS6B,sBACjCA,OAAkD,IAA1BI,EAAmCC,GAAgBD,EAC3EtG,EAAYL,GAAalH,GACzBwF,EAAa+B,EAAYiG,EAAiBjI,GAAsBA,GAAoB71K,QAAO,SAAUswK,GACvG,OAAOkH,GAAalH,KAAeuH,CACpC,IAAInC,GACD2I,EAAoBvI,EAAW91K,QAAO,SAAUswK,GAClD,OAAOyN,EAAsBpxL,QAAQ2jL,IAAc,CACpD,IAEgC,IAA7B+N,EAAkB35L,SACpB25L,EAAoBvI,GAQtB,IAAIwI,EAAYD,EAAkB7+J,QAAO,SAAU4lJ,EAAKkL,GAOtD,OANAlL,EAAIkL,GAAa2L,GAAev0K,EAAO,CACrC4oK,UAAWA,EACX+K,SAAUA,EACVC,aAAcA,EACdzxJ,QAASA,IACRupJ,GAAiB9C,IACblL,CACR,GAAE,CAAC,GACJ,OAAOhxK,OAAOsC,KAAK4nL,GAAW1pK,MAAK,SAAUrV,EAAGC,GAC9C,OAAO8+K,EAAU/+K,GAAK++K,EAAU9+K,EACjC,GACF,CDH4D++K,CAAqB72K,EAAO,CACnF4oK,UAAWA,EACX+K,SAAUA,EACVC,aAAcA,EACdzxJ,QAASA,EACTi0J,eAAgBA,EAChBC,sBAAuBA,IACpBzN,EACN,GAAE,IACCkO,EAAgB92K,EAAM8uK,MAAMM,UAC5Bc,EAAalwK,EAAM8uK,MAAMZ,OACzB6I,EAAY,IAAI16G,IAChB26G,GAAqB,EACrBC,EAAwB7I,EAAW,GAE9BplL,EAAI,EAAGA,EAAIolL,EAAWpxL,OAAQgM,IAAK,CAC1C,IAAI4/K,EAAYwF,EAAWplL,GAEvBkuL,EAAiBxL,GAAiB9C,GAElCuO,EAAmBrH,GAAalH,KAAehjK,GAC/CwxK,EAAa,CAACn0K,GAAKG,IAAQne,QAAQiyL,IAAmB,EACtDl7H,EAAMo7H,EAAa,QAAU,SAC7B31I,EAAW8yI,GAAev0K,EAAO,CACnC4oK,UAAWA,EACX+K,SAAUA,EACVC,aAAcA,EACdoB,YAAaA,EACb7yJ,QAASA,IAEPk1J,EAAoBD,EAAaD,EAAmBj0K,GAAQF,GAAOm0K,EAAmB/zK,GAASH,GAE/F6zK,EAAc96H,GAAOk0H,EAAWl0H,KAClCq7H,EAAoBtF,GAAqBsF,IAG3C,IAAIC,EAAmBvF,GAAqBsF,GACxCE,EAAS,GAUb,GARI1B,GACF0B,EAAO/tL,KAAKi4C,EAASy1I,IAAmB,GAGtClB,GACFuB,EAAO/tL,KAAKi4C,EAAS41I,IAAsB,EAAG51I,EAAS61I,IAAqB,GAG1EC,EAAO1vJ,OAAM,SAAUgjC,GACzB,OAAOA,CACR,IAAG,CACFosH,EAAwBrO,EACxBoO,GAAqB,EACrB,KACD,CAEDD,EAAU9xK,IAAI2jK,EAAW2O,EAC1B,CAED,GAAIP,EAqBF,IAnBA,IAEIQ,EAAQ,SAAez8D,GACzB,IAAI08D,EAAmBrJ,EAAWvvJ,MAAK,SAAU+pJ,GAC/C,IAAI2O,EAASR,EAAU7xK,IAAI0jK,GAE3B,GAAI2O,EACF,OAAOA,EAAOz2L,MAAM,EAAGi6H,GAAIlzF,OAAM,SAAUgjC,GACzC,OAAOA,CACR,GAEJ,IAED,GAAI4sH,EAEF,OADAR,EAAwBQ,EACjB,OAEV,EAEQ18D,EAnBYq7D,EAAiB,EAAI,EAmBZr7D,EAAK,EAAGA,IAAM,CAG1C,GAAa,UAFFy8D,EAAMz8D,GAEK,KACvB,CAGC/6G,EAAM4oK,YAAcqO,IACtBj3K,EAAM4uK,cAAc7kL,GAAM4rL,OAAQ,EAClC31K,EAAM4oK,UAAYqO,EAClBj3K,EAAMspB,OAAQ,EA5Gf,CA8GF,EAQCumJ,iBAAkB,CAAC,UACnBrtL,KAAM,CACJmzL,OAAO,IE7IX,SAAS+B,GAAej2I,EAAUn+B,EAAMq0K,GAQtC,YAPyB,IAArBA,IACFA,EAAmB,CACjB/lJ,EAAG,EACHE,EAAG,IAIA,CACL7uB,IAAKw+B,EAASx+B,IAAMK,EAAKD,OAASs0K,EAAiB7lJ,EACnD5uB,MAAOu+B,EAASv+B,MAAQI,EAAKH,MAAQw0K,EAAiB/lJ,EACtDxuB,OAAQq+B,EAASr+B,OAASE,EAAKD,OAASs0K,EAAiB7lJ,EACzD9uB,KAAMy+B,EAASz+B,KAAOM,EAAKH,MAAQw0K,EAAiB/lJ,EAEvD,CAED,SAASgmJ,GAAsBn2I,GAC7B,MAAO,CAACx+B,GAAKC,GAAOE,GAAQJ,IAAMtF,MAAK,SAAUm6K,GAC/C,OAAOp2I,EAASo2I,IAAS,CAC1B,GACF,CA+BD,QACE9tL,KAAM,OACNonD,SAAS,EACTm9H,MAAO,OACPuB,iBAAkB,CAAC,mBACnBriL,GAlCF,SAAcgN,GACZ,IAAIwF,EAAQxF,EAAKwF,MACbjW,EAAOyQ,EAAKzQ,KACZ+sL,EAAgB92K,EAAM8uK,MAAMM,UAC5Bc,EAAalwK,EAAM8uK,MAAMZ,OACzByJ,EAAmB33K,EAAM4uK,cAAckJ,gBACvCC,EAAoBxD,GAAev0K,EAAO,CAC5C80K,eAAgB,cAEdkD,EAAoBzD,GAAev0K,EAAO,CAC5Cg1K,aAAa,IAEXiD,EAA2BP,GAAeK,EAAmBjB,GAC7DoB,EAAsBR,GAAeM,EAAmB9H,EAAYyH,GACpEQ,EAAoBP,GAAsBK,GAC1CG,EAAmBR,GAAsBM,GAC7Cl4K,EAAM4uK,cAAc7kL,GAAQ,CAC1BkuL,yBAA0BA,EAC1BC,oBAAqBA,EACrBC,kBAAmBA,EACnBC,iBAAkBA,GAEpBp4K,EAAM4B,WAAWssK,OAASxhL,OAAOQ,OAAO,CAAC,EAAG8S,EAAM4B,WAAWssK,OAAQ,CACnE,+BAAgCiK,EAChC,sBAAuBC,GAE1B,GCJD,QACEruL,KAAM,SACNonD,SAAS,EACTm9H,MAAO,OACPsB,SAAU,CAAC,iBACXpiL,GA5BF,SAAgBqN,GACd,IAAImF,EAAQnF,EAAMmF,MACd3S,EAAUwN,EAAMxN,QAChBtD,EAAO8Q,EAAM9Q,KACbsuL,EAAkBhrL,EAAQ3R,OAC1BA,OAA6B,IAApB28L,EAA6B,CAAC,EAAG,GAAKA,EAC/C71L,EAAO4rL,GAAAA,QAAkB,SAAU1Q,EAAKkL,GAE1C,OADAlL,EAAIkL,GA5BD,SAAiCA,EAAWkG,EAAOpzL,GACxD,IAAImzL,EAAgBnD,GAAiB9C,GACjC0P,EAAiB,CAACt1K,GAAMC,IAAKhe,QAAQ4pL,IAAkB,GAAK,EAAI,EAEhEr0K,EAAyB,oBAAX9e,EAAwBA,EAAOgR,OAAOQ,OAAO,CAAC,EAAG4hL,EAAO,CACxElG,UAAWA,KACPltL,EACF68L,EAAW/9K,EAAK,GAChBg+K,EAAWh+K,EAAK,GAIpB,OAFA+9K,EAAWA,GAAY,EACvBC,GAAYA,GAAY,GAAKF,EACtB,CAACt1K,GAAME,IAAOje,QAAQ4pL,IAAkB,EAAI,CACjDj9I,EAAG4mJ,EACH1mJ,EAAGymJ,GACD,CACF3mJ,EAAG2mJ,EACHzmJ,EAAG0mJ,EAEN,CASoBC,CAAwB7P,EAAW5oK,EAAM8uK,MAAOpzL,GAC1DgiL,CACR,GAAE,CAAC,GACAgb,EAAwBl2L,EAAKwd,EAAM4oK,WACnCh3I,EAAI8mJ,EAAsB9mJ,EAC1BE,EAAI4mJ,EAAsB5mJ,EAEW,MAArC9xB,EAAM4uK,cAAcD,gBACtB3uK,EAAM4uK,cAAcD,cAAc/8I,GAAKA,EACvC5xB,EAAM4uK,cAAcD,cAAc78I,GAAKA,GAGzC9xB,EAAM4uK,cAAc7kL,GAAQvH,CAC7B,GC1BD,QACEuH,KAAM,gBACNonD,SAAS,EACTm9H,MAAO,OACP9gL,GApBF,SAAuBgN,GACrB,IAAIwF,EAAQxF,EAAKwF,MACbjW,EAAOyQ,EAAKzQ,KAKhBiW,EAAM4uK,cAAc7kL,GAAQqqL,GAAe,CACzChF,UAAWpvK,EAAM8uK,MAAMM,UACvBvtK,QAAS7B,EAAM8uK,MAAMZ,OACrBwD,SAAU,WACV9I,UAAW5oK,EAAM4oK,WAEpB,EAQCpmL,KAAM,CAAC,GCgHT,QACEuH,KAAM,kBACNonD,SAAS,EACTm9H,MAAO,OACP9gL,GA/HF,SAAyBgN,GACvB,IAAIwF,EAAQxF,EAAKwF,MACb3S,EAAUmN,EAAKnN,QACftD,EAAOyQ,EAAKzQ,KACZ6rL,EAAoBvoL,EAAQohK,SAC5BonB,OAAsC,IAAtBD,GAAsCA,EACtDE,EAAmBzoL,EAAQ0oL,QAC3BC,OAAoC,IAArBF,GAAsCA,EACrDnC,EAAWtmL,EAAQsmL,SACnBC,EAAevmL,EAAQumL,aACvBoB,EAAc3nL,EAAQ2nL,YACtB7yJ,EAAU90B,EAAQ80B,QAClBw2J,EAAkBtrL,EAAQurL,OAC1BA,OAA6B,IAApBD,GAAoCA,EAC7CE,EAAwBxrL,EAAQyrL,aAChCA,OAAyC,IAA1BD,EAAmC,EAAIA,EACtDp3I,EAAW8yI,GAAev0K,EAAO,CACnC2zK,SAAUA,EACVC,aAAcA,EACdzxJ,QAASA,EACT6yJ,YAAaA,IAEXnG,EAAgBnD,GAAiB1rK,EAAM4oK,WACvCuH,EAAYL,GAAa9vK,EAAM4oK,WAC/BmQ,GAAmB5I,EACnB1hB,EAAW8e,GAAyBsB,GACpCkH,ECrCY,MDqCStnB,ECrCH,IAAM,IDsCxBkgB,EAAgB3uK,EAAM4uK,cAAcD,cACpCmI,EAAgB92K,EAAM8uK,MAAMM,UAC5Bc,EAAalwK,EAAM8uK,MAAMZ,OACzB8K,EAA4C,oBAAjBF,EAA8BA,EAAapsL,OAAOQ,OAAO,CAAC,EAAG8S,EAAM8uK,MAAO,CACvGlG,UAAW5oK,EAAM4oK,aACbkQ,EACFG,EAA2D,kBAAtBD,EAAiC,CACxEvqB,SAAUuqB,EACVjD,QAASiD,GACPtsL,OAAOQ,OAAO,CAChBuhK,SAAU,EACVsnB,QAAS,GACRiD,GACCE,EAAsBl5K,EAAM4uK,cAAclzL,OAASskB,EAAM4uK,cAAclzL,OAAOskB,EAAM4oK,WAAa,KACjGpmL,EAAO,CACTovC,EAAG,EACHE,EAAG,GAGL,GAAK68I,EAAL,CAIA,GAAIkH,EAAe,CACjB,IAAIsD,EAEAC,EAAwB,MAAb3qB,EAAmBxrJ,GAAMD,GACpCq2K,EAAuB,MAAb5qB,EAAmBrrJ,GAASF,GACtC84C,EAAmB,MAAbyyG,EAAmB,SAAW,QACpC/yK,EAASizL,EAAclgB,GACvB9sI,EAAMjmC,EAAS+lD,EAAS23I,GACxBx3J,EAAMlmC,EAAS+lD,EAAS43I,GACxBC,EAAWV,GAAU1I,EAAWl0H,GAAO,EAAI,EAC3C2oD,EAASwrE,IAAcvqK,GAAQkxK,EAAc96H,GAAOk0H,EAAWl0H,GAC/Du9H,EAASpJ,IAAcvqK,IAASsqK,EAAWl0H,IAAQ86H,EAAc96H,GAGjEwyH,EAAexuK,EAAMyuK,SAASC,MAC9BM,EAAY4J,GAAUpK,EAAe9B,GAAc8B,GAAgB,CACrErrK,MAAO,EACPE,OAAQ,GAENm2K,EAAqBx5K,EAAM4uK,cAAc,oBAAsB5uK,EAAM4uK,cAAc,oBAAoBzsJ,QzBhFtG,CACLlf,IAAK,EACLC,MAAO,EACPE,OAAQ,EACRJ,KAAM,GyB6EFy2K,EAAkBD,EAAmBJ,GACrCM,EAAkBF,EAAmBH,GAMrCM,EAAWnM,GAAO,EAAGsJ,EAAc96H,GAAMgzH,EAAUhzH,IACnD49H,EAAYb,EAAkBjC,EAAc96H,GAAO,EAAIs9H,EAAWK,EAAWF,EAAkBR,EAA4BxqB,SAAW9pD,EAASg1E,EAAWF,EAAkBR,EAA4BxqB,SACxMorB,EAAYd,GAAmBjC,EAAc96H,GAAO,EAAIs9H,EAAWK,EAAWD,EAAkBT,EAA4BxqB,SAAW8qB,EAASI,EAAWD,EAAkBT,EAA4BxqB,SACzM6gB,EAAoBtvK,EAAMyuK,SAASC,OAASvB,GAAgBntK,EAAMyuK,SAASC,OAC3EoL,EAAexK,EAAiC,MAAb7gB,EAAmB6gB,EAAkB6D,WAAa,EAAI7D,EAAkB8D,YAAc,EAAI,EAC7H2G,EAAwH,OAAjGZ,EAA+C,MAAvBD,OAA8B,EAASA,EAAoBzqB,IAAqB0qB,EAAwB,EAEvJa,EAAYt+L,EAASm+L,EAAYE,EACjCE,EAAkBzM,GAAOoL,EAASlL,GAAQ/rJ,EAF9BjmC,EAASk+L,EAAYG,EAAsBD,GAEKn4J,EAAKjmC,EAAQk9L,EAASnL,GAAQ7rJ,EAAKo4J,GAAap4J,GAChH+sJ,EAAclgB,GAAYwrB,EAC1Bz3L,EAAKisK,GAAYwrB,EAAkBv+L,CACpC,CAED,GAAIs6L,EAAc,CAChB,IAAIkE,EAEAC,EAAyB,MAAb1rB,EAAmBxrJ,GAAMD,GAErCo3K,GAAwB,MAAb3rB,EAAmBrrJ,GAASF,GAEvCm3K,GAAU1L,EAAcoH,GAExBt1K,GAAmB,MAAZs1K,EAAkB,SAAW,QAEpCuE,GAAOD,GAAU54I,EAAS04I,GAE1BI,GAAOF,GAAU54I,EAAS24I,IAE1BI,IAAuD,IAAxC,CAACv3K,GAAKD,IAAM/d,QAAQ4pL,GAEnC4L,GAAyH,OAAjGP,EAAgD,MAAvBhB,OAA8B,EAASA,EAAoBnD,IAAoBmE,EAAyB,EAEzJQ,GAAaF,GAAeF,GAAOD,GAAUvD,EAAcr2K,IAAQyvK,EAAWzvK,IAAQg6K,GAAuBxB,EAA4BlD,QAEzI4E,GAAaH,GAAeH,GAAUvD,EAAcr2K,IAAQyvK,EAAWzvK,IAAQg6K,GAAuBxB,EAA4BlD,QAAUwE,GAE5IK,GAAmBhC,GAAU4B,G3BzH9B,SAAwB74J,EAAKr9B,EAAOs9B,GACzC,IAAI5vB,EAAIw7K,GAAO7rJ,EAAKr9B,EAAOs9B,GAC3B,OAAO5vB,EAAI4vB,EAAMA,EAAM5vB,CACxB,C2BsHmD6oL,CAAeH,GAAYL,GAASM,IAAcnN,GAAOoL,EAAS8B,GAAaJ,GAAMD,GAASzB,EAAS+B,GAAaJ,IAEpK5L,EAAcoH,GAAW6E,GACzBp4L,EAAKuzL,GAAW6E,GAAmBP,EACpC,CAEDr6K,EAAM4uK,cAAc7kL,GAAQvH,CAvE3B,CAwEF,EAQCqtL,iBAAkB,CAAC,WE1HN,SAASiL,GAAiBC,EAAyBlxK,EAAc2mK,QAC9D,IAAZA,IACFA,GAAU,GAGZ,IAAIwK,EAA0BpP,GAAc/hK,GACxCoxK,EAAuBrP,GAAc/hK,IAf3C,SAAyBhI,GACvB,IAAIyB,EAAOzB,EAAQ0lJ,wBACf5/I,EAASqsB,GAAM1wB,EAAKH,OAAStB,EAAQ6H,aAAe,EACpD9B,EAASosB,GAAM1wB,EAAKD,QAAUxB,EAAQ8H,cAAgB,EAC1D,OAAkB,IAAXhC,GAA2B,IAAXC,CACxB,CAU2DszK,CAAgBrxK,GACtEqhC,EAAkB6hI,GAAmBljK,GACrCvG,EAAOikJ,GAAsBwzB,EAAyBE,EAAsBzK,GAC5E/Q,EAAS,CACXl/B,WAAY,EACZ32H,UAAW,GAETwmK,EAAU,CACZx+I,EAAG,EACHE,EAAG,GAkBL,OAfIkpJ,IAA4BA,IAA4BxK,MACxB,SAA9B3D,GAAYhjK,IAChBuoK,GAAelnI,MACbu0H,ECnCS,SAAuBr+J,GACpC,OAAIA,IAASuqK,GAAUvqK,IAAUwqK,GAAcxqK,GCJxC,CACLm/H,YAFyC1+H,EDQbT,GCNRm/H,WACpB32H,UAAW/H,EAAQ+H,WDGZsoK,GAAgB9wK,GCNZ,IAA8BS,CDU5C,CD6Bcs5K,CAActxK,IAGrB+hK,GAAc/hK,KAChBumK,EAAU7oB,GAAsB19I,GAAc,IACtC+nB,GAAK/nB,EAAaupK,WAC1BhD,EAAQt+I,GAAKjoB,EAAaspK,WACjBjoI,IACTklI,EAAQx+I,EAAIugJ,GAAoBjnI,KAI7B,CACLtZ,EAAGtuB,EAAKN,KAAOy8J,EAAOl/B,WAAa6vC,EAAQx+I,EAC3CE,EAAGxuB,EAAKL,IAAMw8J,EAAO71J,UAAYwmK,EAAQt+I,EACzC3uB,MAAOG,EAAKH,MACZE,OAAQC,EAAKD,OAEhB,CGvDD,SAAS2qH,GAAMotD,GACb,IAAIz/K,EAAM,IAAI0gE,IACVg/G,EAAU,IAAI/+G,IACd3lE,EAAS,GAKb,SAASuW,EAAKouK,GACZD,EAAQj0K,IAAIk0K,EAASvxL,MACN,GAAGtN,OAAO6+L,EAAS1L,UAAY,GAAI0L,EAASzL,kBAAoB,IACtE3pL,SAAQ,SAAUshF,GACzB,IAAK6zG,EAAQh7H,IAAImnB,GAAM,CACrB,IAAI+zG,EAAc5/K,EAAIuJ,IAAIsiE,GAEtB+zG,GACFruK,EAAKquK,EAER,CACF,IACD5kL,EAAOnN,KAAK8xL,EACb,CAQD,OAzBAF,EAAUl1L,SAAQ,SAAUo1L,GAC1B3/K,EAAIsJ,IAAIq2K,EAASvxL,KAAMuxL,EACxB,IAiBDF,EAAUl1L,SAAQ,SAAUo1L,GACrBD,EAAQh7H,IAAIi7H,EAASvxL,OAExBmjB,EAAKouK,EAER,IACM3kL,CACR,CChCc,SAASy2C,GAAS5/C,GAC/B,IAAIw8I,EACJ,OAAO,WAUL,OATKA,IACHA,EAAU,IAAI7nJ,SAAQ,SAAUC,GAC9BD,QAAQC,UAAU0G,MAAK,WACrBkhJ,OAAUhkJ,EACV5D,EAAQoL,IACT,GACF,KAGIw8I,CACR,CACF,CCAD,IAEIwxC,GAAkB,CACpB5S,UAAW,SACXwS,UAAW,GACX1J,SAAU,YAGZ,SAAS+J,KACP,IAAK,IAAIh7K,EAAO9O,UAAU3U,OAAQ0U,EAAO,IAAInG,MAAMkV,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/EhP,EAAKgP,GAAQ/O,UAAU+O,GAGzB,OAAQhP,EAAKgM,MAAK,SAAUmE,GAC1B,QAASA,GAAoD,oBAAlCA,EAAQ0lJ,sBACpC,GACF,CAEM,SAASm0B,GAAgBC,QACL,IAArBA,IACFA,EAAmB,CAAC,GAGtB,IAAIC,EAAoBD,EACpBE,EAAwBD,EAAkBE,iBAC1CA,OAA6C,IAA1BD,EAAmC,GAAKA,EAC3DE,EAAyBH,EAAkBzjK,eAC3CA,OAA4C,IAA3B4jK,EAAoCP,GAAkBO,EAC3E,OAAO,SAAsB3M,EAAWlB,EAAQ7gL,QAC9B,IAAZA,IACFA,EAAU8qB,GAGZ,IAAInY,EAAQ,CACV4oK,UAAW,SACXoT,iBAAkB,GAClB3uL,QAASX,OAAOQ,OAAO,CAAC,EAAGsuL,GAAiBrjK,GAC5Cy2J,cAAe,CAAC,EAChBH,SAAU,CACRW,UAAWA,EACXlB,OAAQA,GAEVtsK,WAAY,CAAC,EACbwG,OAAQ,CAAC,GAEP6zK,EAAmB,GACnBC,GAAc,EACdx0L,EAAW,CACbsY,MAAOA,EACPqY,WAAY,SAAoB8jK,GAC9B,IAAI9uL,EAAsC,oBAArB8uL,EAAkCA,EAAiBn8K,EAAM3S,SAAW8uL,EACzFC,IACAp8K,EAAM3S,QAAUX,OAAOQ,OAAO,CAAC,EAAGirB,EAAgBnY,EAAM3S,QAASA,GACjE2S,EAAM6xK,cAAgB,CACpBzC,UAAWpwH,GAAUowH,GAAaqD,GAAkBrD,GAAaA,EAAUgG,eAAiB3C,GAAkBrD,EAAUgG,gBAAkB,GAC1IlH,OAAQuE,GAAkBvE,IAI5B,IAAI8N,EFvCG,SAAwBZ,GAErC,IAAIY,EAAmBhuD,GAAMotD,GAE7B,OAAO/M,GAAev2J,QAAO,SAAU4lJ,EAAK4Q,GAC1C,OAAO5Q,EAAIjhL,OAAOu/L,EAAiB1jL,QAAO,SAAUgjL,GAClD,OAAOA,EAAShN,QAAUA,CAC3B,IACF,GAAE,GACJ,CE8B8B+N,CCzEhB,SAAqBjB,GAClC,IAAI7iL,EAAS6iL,EAAUtjK,QAAO,SAAUvf,EAAQwf,GAC9C,IAAIy3I,EAAWj3J,EAAOwf,EAAQhuB,MAK9B,OAJAwO,EAAOwf,EAAQhuB,MAAQylK,EAAW9iK,OAAOQ,OAAO,CAAC,EAAGsiK,EAAUz3I,EAAS,CACrE1qB,QAASX,OAAOQ,OAAO,CAAC,EAAGsiK,EAASniK,QAAS0qB,EAAQ1qB,SACrD7K,KAAMkK,OAAOQ,OAAO,CAAC,EAAGsiK,EAAShtK,KAAMu1B,EAAQv1B,QAC5Cu1B,EACExf,CACR,GAAE,CAAC,GAEJ,OAAO7L,OAAOsC,KAAKuJ,GAAQoD,KAAI,SAAUxV,GACvC,OAAOoS,EAAOpS,EACf,GACF,CD4D6Cm2L,CAAY,GAAG7/L,OAAOq/L,EAAkB97K,EAAM3S,QAAQ+tL,aAyC5F,OAvCAp7K,EAAMg8K,iBAAmBA,EAAiB1jL,QAAO,SAAUsgD,GACzD,OAAOA,EAAEzH,OACV,IAoJHnxC,EAAMg8K,iBAAiB91L,SAAQ,SAAUiV,GACvC,IAAIpR,EAAOoR,EAAMpR,KACbwyL,EAAgBphL,EAAM9N,QACtBA,OAA4B,IAAlBkvL,EAA2B,CAAC,EAAIA,EAC1ChyI,EAASpvC,EAAMovC,OAEnB,GAAsB,oBAAXA,EAAuB,CAChC,IAAIiyI,EAAYjyI,EAAO,CACrBvqC,MAAOA,EACPjW,KAAMA,EACNrC,SAAUA,EACV2F,QAASA,IAGPovL,EAAS,WAAoB,EAEjCR,EAAiBzyL,KAAKgzL,GAAaC,EACpC,CACF,IAjIQ/0L,EAAS6qF,QACjB,EAMD2/E,YAAa,WACX,IAAIgqB,EAAJ,CAIA,IAAIQ,EAAkB18K,EAAMyuK,SACxBW,EAAYsN,EAAgBtN,UAC5BlB,EAASwO,EAAgBxO,OAG7B,GAAKuN,GAAiBrM,EAAWlB,GAAjC,CASAluK,EAAM8uK,MAAQ,CACZM,UAAW0L,GAAiB1L,EAAWjC,GAAgBe,GAAoC,UAA3BluK,EAAM3S,QAAQqkL,UAC9ExD,OAAQxB,GAAcwB,IAOxBluK,EAAMspB,OAAQ,EACdtpB,EAAM4oK,UAAY5oK,EAAM3S,QAAQu7K,UAKhC5oK,EAAMg8K,iBAAiB91L,SAAQ,SAAUo1L,GACvC,OAAOt7K,EAAM4uK,cAAc0M,EAASvxL,MAAQ2C,OAAOQ,OAAO,CAAC,EAAGouL,EAAS94L,KACxE,IAGD,IAFA,IAESiH,EAAQ,EAAGA,EAAQuW,EAAMg8K,iBAAiBh/L,OAAQyM,IAUzD,IAAoB,IAAhBuW,EAAMspB,MAAV,CAMA,IAAIqzJ,EAAwB38K,EAAMg8K,iBAAiBvyL,GAC/C+D,EAAKmvL,EAAsBnvL,GAC3BovL,EAAyBD,EAAsBtvL,QAC/CmnL,OAAsC,IAA3BoI,EAAoC,CAAC,EAAIA,EACpD7yL,EAAO4yL,EAAsB5yL,KAEf,oBAAPyD,IACTwS,EAAQxS,EAAG,CACTwS,MAAOA,EACP3S,QAASmnL,EACTzqL,KAAMA,EACNrC,SAAUA,KACNsY,EAdP,MAHCA,EAAMspB,OAAQ,EACd7/B,GAAS,CAnCZ,CAbA,CAmEF,EAGD8oF,OAAQnlC,IAAS,WACf,OAAO,IAAIjrD,SAAQ,SAAUC,GAC3BsF,EAASwqK,cACT9vK,EAAQ4d,EACT,GACF,IACD8G,QAAS,WACPs1K,IACAF,GAAc,CACf,GAGH,IAAKT,GAAiBrM,EAAWlB,GAK/B,OAAOxmL,EAmCT,SAAS00L,IACPH,EAAiB/1L,SAAQ,SAAUsH,GACjC,OAAOA,GACR,IACDyuL,EAAmB,EACpB,CAED,OAvCAv0L,EAAS2wB,WAAWhrB,GAASvE,MAAK,SAAUkX,IACrCk8K,GAAe7uL,EAAQwvL,eAC1BxvL,EAAQwvL,cAAc78K,EAEzB,IAmCMtY,CACR,CACF,CACM,IEpPMo1L,GAAepB,GAAgB,CAC1CI,iBAAkB,CAACiB,GAAMpO,GAAeqO,GAAeC,GAAgBvhM,GAAQu9F,GAAM6+F,GAAiBpJ,MCblG/iE,GAAY,CAAC,UAAW,YAAa,WAAY,aAEvD,SAAS53F,GAA8BpqB,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAA2DxD,EAAK6C,EAA5DuF,EAAS,CAAC,EAAO0lB,EAAavnB,OAAOsC,KAAKrF,GAAqB,IAAKX,EAAI,EAAGA,EAAIirB,EAAWj3B,OAAQgM,IAAO7C,EAAM8tB,EAAWjrB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,IAAaoI,EAAOpI,GAAOwD,EAAOxD,IAAQ,OAAOoI,CAAS,CAMnT,IAAM2uL,GAA8B,CAClCnzL,KAAM,cACNonD,SAAS,EACTm9H,MAAO,aACP9gL,GAAI,cAGA2vL,GAA0B,CAC9BpzL,KAAM,kBACNonD,SAAS,EACTm9H,MAAO,aACP/jI,OAAQ,gBACNvqC,EADM,EACNA,MADM,OAEF,WACJ,MAGIA,EAAMyuK,SAFRW,EADF,EACEA,UACAlB,EAFF,EAEEA,OAGF,GAAI,oBAAqBkB,EAAW,CAClC,IAAMgO,GAAOhO,EAAU/tK,aAAa,qBAAuB,IAAItkB,MAAM,KAAKub,QAAO,SAAA/K,GAAE,OAAIA,EAAG2D,SAAWg9K,EAAO3gL,EAAzB,IAC9E6vL,EAAIpgM,OAA2DoyL,EAAUt7K,aAAa,mBAAoBspL,EAAIjrL,KAAK,MAAvGi9K,EAAU97I,gBAAgB,mBAC5C,CACF,CAZO,EAaR9lC,GAAI,YAEE,IACA6vL,EAEJ,EAHI,EADJr9K,MAOUyuK,SAFRP,EADF,EACEA,OACAkB,EAFF,EAEEA,UAEI1P,EAA+D,OAAvD2d,EAAuBnP,EAAO7sK,aAAa,cAAmB,EAASg8K,EAAqBj3L,cAE1G,GAAI8nL,EAAO3gL,IAAe,YAATmyK,GAAsB,iBAAkB0P,EAAW,CAClE,IAAMgO,EAAMhO,EAAU/tK,aAAa,oBAEnC,GAAI+7K,IAA8C,IAAvCA,EAAIrgM,MAAM,KAAKkI,QAAQipL,EAAO3gL,IACvC,OAGF6hL,EAAUt7K,aAAa,mBAAoBspL,EAAM,GAAH,OAAMA,EAAN,YAAalP,EAAO3gL,IAAO2gL,EAAO3gL,GACjF,CACF,GAEG+vL,GAAkB,GAkHxB,OAjGA,SAAmBC,EAAkBC,GAA0B,IAAXhjL,EAAW,uDAAJ,CAAC,EAC1D,EAKIA,EAJF22C,QAAAA,OADF,WAKI32C,EAHFouK,UAAAA,OAFF,MAEc,SAFd,IAKIpuK,EAFFk3K,SAAAA,OAHF,MAGa,WAHb,IAKIl3K,EADF4gL,UAAAA,OAJF,MAIckC,GAJd,EAMIp7L,EAAS6xB,GAA8BvZ,EAAMmxG,IAE3C8xE,GAAgBtrC,EAAAA,EAAAA,QAAOipC,GACvBsC,GAAoBvrC,EAAAA,EAAAA,UACpB5/D,GAASs/D,EAAAA,EAAAA,cAAY,WACzB,IAAI8rC,EAEmD,OAAtDA,EAAwBD,EAAkB3lK,UAA4B4lK,EAAsBprG,QAC9F,GAAE,IACG2/E,GAAcrgB,EAAAA,EAAAA,cAAY,WAC9B,IAAI+rC,EAEoD,OAAvDA,EAAyBF,EAAkB3lK,UAA4B6lK,EAAuB1rB,aAChG,GAAE,IACH,EAAgC2rB,IAAazrC,EAAAA,EAAAA,UAAS,CACpDw2B,UAAAA,EACAr2F,OAAAA,EACA2/E,YAAAA,EACAtwJ,WAAY,CAAC,EACbwG,OAAQ,CACN8lK,OAAQ,CAAC,EACTQ,MAAO,CAAC,MAPZ,UAAOoP,EAAP,KAAoBtnH,EAApB,KAUMunH,GAAiB9rC,EAAAA,EAAAA,UAAQ,iBAAO,CACpCloJ,KAAM,sBACNonD,SAAS,EACTm9H,MAAO,QACPsB,SAAU,CAAC,iBACXpiL,GAAI,YAEE,IADJwS,EACI,EADJA,MAEMoI,EAAS,CAAC,EACVxG,EAAa,CAAC,EACpBlV,OAAOsC,KAAKgR,EAAMyuK,UAAUvoL,SAAQ,SAAA2b,GAClCuG,EAAOvG,GAAW7B,EAAMoI,OAAOvG,GAC/BD,EAAWC,GAAW7B,EAAM4B,WAAWC,EACxC,IACD20D,EAAS,CACPx2D,MAAAA,EACAoI,OAAAA,EACAxG,WAAAA,EACA2wE,OAAAA,EACA2/E,YAAAA,EACA0W,UAAW5oK,EAAM4oK,WAEpB,EAtB4B,GAuB3B,CAACr2F,EAAQ2/E,EAAa17F,IACpBwnH,GAAgB/rC,EAAAA,EAAAA,UAAQ,WAK5B,OAJKo5B,GAAOoS,EAAc1lK,QAASqjK,KACjCqC,EAAc1lK,QAAUqjK,GAGnBqC,EAAc1lK,OACtB,GAAE,CAACqjK,IAiCJ,OAhCA16D,EAAAA,EAAAA,YAAU,WACHg9D,EAAkB3lK,SAAYo5B,GACnCusI,EAAkB3lK,QAAQM,WAAW,CACnCuwJ,UAAAA,EACA8I,SAAAA,EACA0J,UAAW,GAAF,UAAM4C,GAAN,CAAqBD,EAAgBb,MAEjD,GAAE,CAACxL,EAAU9I,EAAWmV,EAAgB5sI,EAAS6sI,KAClDt9D,EAAAA,EAAAA,YAAU,WACR,GAAKvvE,GAA+B,MAApBosI,GAA6C,MAAjBC,EAS5C,OALAE,EAAkB3lK,QAAU+kK,GAAaS,EAAkBC,EAAe9wL,OAAOQ,OAAO,CAAC,EAAGhL,EAAQ,CAClG0mL,UAAAA,EACA8I,SAAAA,EACA0J,UAAW,GAAF,UAAM4C,GAAN,CAAqBb,GAAyBY,OAElD,WAC4B,MAA7BL,EAAkB3lK,UACpB2lK,EAAkB3lK,QAAQjR,UAC1B42K,EAAkB3lK,aAAU/xB,EAC5BwwE,GAAS,SAAAvd,GAAC,OAAIvsD,OAAOQ,OAAO,CAAC,EAAG+rD,EAAG,CACjCr3C,WAAY,CAAC,EACbwG,OAAQ,CACN8lK,OAAQ,CAAC,IAHH,IAOb,CAEF,GAAE,CAAC/8H,EAASosI,EAAkBC,IACxBM,CACR,4DC/JKnuJ,GAAO,WAAQ,EAErB,SAASsuJ,GAAiBz2K,GACxB,OAAwB,IAAjBA,EAAMqyH,MACd,CAED,SAASqkD,GAAgB12K,GACvB,SAAUA,EAAMkyH,SAAWlyH,EAAMiyH,QAAUjyH,EAAM+xH,SAAW/xH,EAAMgyH,SACnE,CAEM,IAAM2kD,GAAe,SAAA7hL,GAAG,OAAIA,IAAQ,YAAaA,EAAMA,EAAIyb,QAAUzb,EAA7C,EACzB8hL,GAAuB,CAC3Bx6I,MAAO,YACPy6I,QAAS,YACTC,UAAW,eA6Eb,OAhEA,SAAyBhiL,GAGjB,IAHsBiiL,EAGtB,uDAHuC5uJ,GAGvC,yDAAJ,CAAC,EAFHrX,EAEM,EAFNA,SAEM,IADNkmK,aAAAA,OACM,MADS,QACT,EACAC,GAA8BtsC,EAAAA,EAAAA,SAAO,GACrCusC,GAAoBvsC,EAAAA,EAAAA,SAAO,GAC3BwsC,GAAqB9sC,EAAAA,EAAAA,cAAY,SAAA1gJ,GACrC,IAAMu9E,EAAgByvG,GAAa7hL,GACnCixJ,OAAU7+E,EAAe,uJACzB+vG,EAA4B1mK,SAAW22D,GAAiBwvG,GAAgB/sL,KAAO8sL,GAAiB9sL,MAAQ0yC,GAAS6qC,EAAev9E,EAAE5C,SAAWmwL,EAAkB3mK,QAC/J2mK,EAAkB3mK,SAAU,CAC7B,GAAE,CAACzb,IACEsiL,EAAqB9e,IAAiB,SAAA3uK,GAC1C,IAAMu9E,EAAgByvG,GAAa7hL,GAE/BoyE,GAAiB7qC,GAAS6qC,EAAev9E,EAAE5C,UAC7CmwL,EAAkB3mK,SAAU,EAE/B,IACK8mK,EAAc/e,IAAiB,SAAA3uK,GAC9BstL,EAA4B1mK,SAC/BwmK,EAAeptL,EAElB,KACDuvH,EAAAA,EAAAA,YAAU,WACR,IAAIpoG,GAAmB,MAAPhc,EAAhB,CACA,IAAM4pJ,EAAMh7B,EAAcizD,GAAa7hL,IAGnCwiL,GAAgB54B,EAAIlwC,aAAe1hH,QAAQkT,MAC3Cu3K,EAA+B,KAE/BX,GAAqBI,KACvBO,EAA+B9yI,GAAOi6G,EAAKk4B,GAAqBI,GAAeI,GAAoB,IAMrG,IAAMI,EAA6B/yI,GAAOi6G,EAAKs4B,EAAcG,GAAoB,GAC3EM,EAAsBhzI,GAAOi6G,EAAKs4B,GAAc,SAAArtL,GAEhDA,IAAM2tL,EAKVD,EAAY1tL,GAJV2tL,OAAe94L,CAKlB,IACGk5L,EAA4B,GAMhC,MAJI,iBAAkBh5B,EAAIh7G,kBACxBg0I,EAA4B,GAAGp+L,MAAM+I,KAAKq8J,EAAIjhI,KAAK/iB,UAAUvG,KAAI,SAAAhG,GAAE,OAAIs2C,GAAOt2C,EAAI,YAAag6B,GAA5B,KAG9D,WAC2B,MAAhCovJ,GAAgDA,IAChDC,IACAC,IACAC,EAA0Bh5L,SAAQ,SAAAgN,GAAM,OAAIA,GAAJ,GACzC,CAnC4B,CAoC9B,GAAE,CAACoJ,EAAKgc,EAAUkmK,EAAcG,EAAoBC,EAAoBC,GAC1E,ECnFM,SAASM,KAA0B,IAAVxjL,EAAU,uDAAJ,CAAC,EACrC,OAAIpQ,MAAMkD,QAAQkN,GAAaA,EACxBjP,OAAOsC,KAAK2M,GAAKA,KAAI,SAAAigD,GAE1B,OADAjgD,EAAIigD,GAAG7xD,KAAO6xD,EACPjgD,EAAIigD,EACZ,GACF,CACc,SAASwjI,GAAT,GAUZ,IACGC,EAAuBC,EAAwBC,EAAmBC,EAVtEruI,EASC,EATDA,QACAsuI,EAQC,EARDA,aACA7W,EAOC,EAPDA,UACA3vF,EAMC,EANDA,KACAv9F,EAKC,EALDA,OACAwuL,EAIC,EAJDA,MACAwV,EAGC,EAHDA,iBACAlR,EAEC,EAFDA,aAEC,IADDmR,aAAAA,OACC,MADc,CAAC,EACf,EAGKvE,EAjCD,SAAuBA,GAC5B,IAAMzkL,EAAS,CAAC,EAEhB,OAAKpL,MAAMkD,QAAQ2sL,IAKN,MAAbA,GAA6BA,EAAUl1L,SAAQ,SAAA0yD,GAC7CjiD,EAAOiiD,EAAE7uD,MAAQ6uD,CAClB,IACMjiD,GAPEykL,GAAazkL,CAQvB,CAqBmBipL,CAAcD,EAAavE,WAC7C,OAAO1uL,OAAOQ,OAAO,CAAC,EAAGyyL,EAAc,CACrC/W,UAAAA,EACAz3H,QAAAA,EACAugI,SAAUxH,EAAQ,QAAUyV,EAAajO,SACzC0J,UAAW+D,GAAgBzyL,OAAOQ,OAAO,CAAC,EAAGkuL,EAAW,CACtD6B,eAAgB,CACd9rI,QAASsuI,GAEX3H,gBAAiBprL,OAAOQ,OAAO,CAAC,EAAGkuL,EAAUtD,gBAAiB,CAC5DzqL,QAASqyL,EAAmBhzL,OAAOQ,OAAO,CACxCi1B,QAASu9J,GAC+C,OAAtDL,EAAwBjE,EAAUtD,sBAA2B,EAASuH,EAAsBhyL,SAAmE,OAAvDiyL,EAAyBlE,EAAUtD,sBAA2B,EAASwH,EAAuBjyL,UAE5M3R,OAAQ,CACN2R,QAASX,OAAOQ,OAAO,CACrBxR,OAAAA,GAC2C,OAAzC6jM,EAAoBnE,EAAU1/L,aAAkB,EAAS6jM,EAAkBlyL,UAEjFqhL,MAAOhiL,OAAOQ,OAAO,CAAC,EAAGkuL,EAAU1M,MAAO,CACxCv9H,UAAWq9H,EACXnhL,QAASX,OAAOQ,OAAO,CAAC,EAA2C,OAAvCsyL,EAAmBpE,EAAU1M,YAAiB,EAAS8Q,EAAiBnyL,QAAS,CAC3GwU,QAAS2sK,MAGbv1F,KAAMvsF,OAAOQ,OAAO,CAClBikD,UAAW8nC,GACVmiG,EAAUniG,UAGlB,CC/DD,IAAM0yB,GAAY,CAAC,YAcnB,IAAMh8E,GAAO,WAAQ,EAad,SAASkwJ,KAA8B,IAAdxyL,EAAc,uDAAJ,CAAC,EACnC5F,GAAUqqJ,EAAAA,EAAAA,YAAWguC,IAC3B,EAAuC/U,KAAvC,UAAOyD,EAAP,KAAqBuR,EAArB,KACMC,GAAc7tC,EAAAA,EAAAA,SAAO,GAEzBl5D,EAQE5rF,EARF4rF,KACAv9F,EAOE2R,EAPF3R,OACAukM,EAME5yL,EANF4yL,eAHF,EASI5yL,EALF68K,MAAAA,OAJF,SAKagW,EAIT7yL,EAJFu7K,UALF,EASIv7K,EAHFsyL,aAAAA,OANF,MAMiB,CAAC,EANlB,IASItyL,EAFF8yL,qBAAAA,OAPF,WASI9yL,EADF+yL,UAAWC,OARb,QAQiC54L,EARjC,EAUM48K,EAAoD,OAAjC,MAAX58K,OAAkB,EAASA,EAAQ48K,QAAkBh3K,EAAQg3K,KAAO58K,EAAQ48K,KAEtFA,IAAS2b,EAAYjoK,UACvBioK,EAAYjoK,SAAU,GAGxB,IAAMuoK,EAAc,SAAAnvL,GACP,MAAX1J,GAA2BA,EAAQ84L,QAAO,EAAOpvL,EAClD,EAED,EAKI1J,GAAW,CAAC,EAJdmhL,EADF,EACEA,UACA4X,EAFF,EAEEA,QACAC,EAHF,EAGEA,YACAC,EAJF,EAIEA,cAEIxS,EAASkS,GAAUM,EAAeD,EAAarB,GAA6B,CAChFxW,UAAWsX,GAAqBtX,GAAa,eAC7Cz3H,QAASkvI,EACTZ,aAAsC,MAAxBU,EAA+B9b,EAAO8b,EACpDzkM,OAAAA,EACAu9F,KAAAA,EACAixF,MAAAA,EACAsE,aAAAA,EACAmR,aAAAA,KAEIgB,EAAYj0L,OAAOQ,OAAO,CAC9BoP,IAAKkkL,GAAW7wJ,GAChB,kBAAoC,MAAjB+wJ,OAAwB,EAASA,EAAcnzL,IACjE2gL,EAAOtsK,WAAWssK,OAAQ,CAC3BnlK,MAAOmlK,EAAO9lK,OAAO8lK,SAEjBzyK,EAAW,CACf4oK,KAAAA,EACAuE,UAAAA,EACAgY,SAAUZ,EAAYjoK,QACtBwoK,OAAmB,MAAX94L,OAAkB,EAASA,EAAQ84L,OAC3CrS,OAAQmS,EAAkBnS,EAAS,KACnC2S,WAAYR,EAAkB3zL,OAAOQ,OAAO,CAC1CoP,IAAKyjL,GACJ7R,EAAOtsK,WAAW8sK,MAAO,CAC1B3lK,MAAOmlK,EAAO9lK,OAAOsmK,QAClB,CAAC,GAMR,OAJAoS,GAAgBL,EAAaH,EAAa,CACxC9B,aAAcyB,EACd3nK,UAAW+rJ,IAEN,CAACsc,EAAWllL,EACpB,CAWD,SAASslL,GAAavmL,GAChB,IACF0H,EACE1H,EADF0H,SAEE7U,EAvGN,SAAuC1D,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAA2DxD,EAAK6C,EAA5DuF,EAAS,CAAC,EAAO0lB,EAAavnB,OAAOsC,KAAKrF,GAAqB,IAAKX,EAAI,EAAGA,EAAIirB,EAAWj3B,OAAQgM,IAAO7C,EAAM8tB,EAAWjrB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,IAAaoI,EAAOpI,GAAOwD,EAAOxD,IAAQ,OAAOoI,CAAS,CAuGnSwlB,CAA8BvZ,EAAMmxG,IAElD,KAAsBk0E,GAAgBxyL,GAAtC,GAAO8K,EAAP,KAAcuyB,EAAd,KACA,OAAoBstI,EAAAA,EAAAA,KAAKoO,EAAAA,SAAW,CAClClkK,SAAUA,EAAS/J,EAAOuyB,IAE7B,CAEDq2J,GAAa/lF,YAAc,eAC3B+lF,GAAahmF,aAvBQ,CACnBqlF,WAAW,GAyBb,UCpFMY,GAAkC,CACtC1gI,OAAQ3nD,OAAOvJ,KAAK4kC,MAAsB,KAAhB5kC,KAAK8jB,WAC/B6E,QAAS,GAGLkpK,GAAaC,EAAAA,cAAqCF,IA2BxD,IAAIG,GAAY/hI,QACI,qBAAX9qD,QACPA,OAAOxB,UACPwB,OAAOxB,SAASa,eC9DX,IAAMytL,GAAa,SAAAzrL,GACxB,IAAI0rL,EAEJ,MAA4G,UAApD,OAA/CA,EAAmB1rL,EAAG0L,aAAa,cAAmB,EAASggL,EAAiBj7L,cAC1F,EAEKupC,GAAO,WAAQ,EASd,SAAS2xJ,KACd,IAAM/zL,WDkDqBg0L,GAC3B,IAAI98H,GAAM+8H,EAAAA,EAAAA,YAAWP,IAQrB,OAJIx8H,IAAQu8H,IAAmBG,IAC7B7qL,QAAQC,KAAK,oJAGRkrL,EAAAA,EAAAA,UAAQ,WAAD,OAAOF,GAAa,aAAJ,OAAiB98H,EAAInE,OAArB,cAAiCmE,EAAI1sC,QAArD,GAAgE,CAACwpK,GAChF,CC5DYG,GACX,GAKI5vC,EAAAA,EAAAA,YAAWguC,KAAoB,CAAC,EALpC,IACEzb,KAAAA,OADF,aAEEkc,OAAAA,OAFF,MAEW5wJ,GAFX,EAGEgyJ,EAHF,EAGEA,UACAlB,EAJF,EAIEA,YAEItlJ,GAAc02G,EAAAA,EAAAA,cAAY,SAAA1gJ,GAC9BovL,GAAQlc,EAAMlzK,EACf,GAAE,CAACkzK,EAAMkc,IACJpoL,EAAQ,CACZ5K,GAAAA,EACA+O,IAAKqlL,GAAahyJ,GAClBk6D,QAAS1uD,EACT,kBAAmBkpI,GASrB,OAJIoc,GAAeW,GAAWX,KAC5BtoL,EAAM,kBAAmB,GAGpB,CAACA,EAAO,CACbksK,KAAAA,EACAkc,OAAAA,GAEH,CAQD,SAASqB,GAAT,GAEG,IADD1/K,EACC,EADDA,SAEA,KAAsBo/K,KAAtB,GAAOnpL,EAAP,KAAcuyB,EAAd,KACA,OAAoBstI,EAAAA,EAAAA,KAAKoO,EAAAA,SAAW,CAClClkK,SAAUA,EAAS/J,EAAOuyB,IAE7B,CAEDk3J,GAAe5mF,YAAc,iBAG7B,UCpEM6mF,GAA0Bt2E,EAAAA,cAAoB,MACpDs2E,GAAW7mF,YAAc,aACzB,UCHM2Q,GAAY,CAAC,KAAM,YASlB,SAASm2E,GAAT,GAUJ,IATD9wJ,EASC,EATDA,QACA1Y,EAQC,EARDA,SACAzkB,EAOC,EAPDA,KACAtF,EAMC,EANDA,OACA+/C,EAKC,EALDA,IACAoxH,EAIC,EAJDA,KACA71E,EAGC,EAHDA,QAGC,IAFDo8E,SAAAA,OAEC,MAFU,EAEV,EADDr/K,EACC,EADDA,KAEKoqC,IAEDA,EADU,MAARn9B,GAA0B,MAAVtF,GAAyB,MAAP+/C,EAC1B,IAEA,UAId,IAAM5jB,EAAO,CACXsG,QAAAA,GAGF,GAAgB,WAAZA,EACF,MAAO,CAAC,CACNpqC,KAAMA,GAAQ,SACd0xB,SAAAA,GACCoS,GAGL,IAAMyQ,EAAc,SAAA3zB,IACd8Q,GAAwB,MAAZ0Y,GAlCb,SAAuBn9B,GAC5B,OAAQA,GAAwB,MAAhBA,EAAK3C,MACtB,CAgCsC6wL,CAAcluL,KAC/C2T,EAAMy0B,iBAGJ3jB,EACF9Q,EAAMoxB,kBAIG,MAAXixD,GAA2BA,EAAQriF,EACpC,EAkBD,MATgB,MAAZwpB,IAEFn9B,IAASA,EAAO,KAEZykB,IACFzkB,OAAO7N,IAIJ,CAAC,CACN05K,KAAc,MAARA,EAAeA,EAAO,SAG5BpnJ,cAAUtyB,EACVigL,SAAU3tJ,OAAWtyB,EAAYigL,EACjCpyK,KAAAA,EACAtF,OAAoB,MAAZyiC,EAAkBziC,OAASvI,EACnC,gBAAkBsyB,QAAWtyB,EAC7BsoD,IAAiB,MAAZtd,EAAkBsd,OAAMtoD,EAC7B6jG,QAAS1uD,EACT0jF,UA3BoB,SAAAr3G,GACF,MAAdA,EAAMrhB,MACRqhB,EAAMy0B,iBACNd,EAAY3zB,GAEf,GAuBEkjB,EACJ,CACD,IAAMs3J,GAAsBz2E,EAAAA,YAAiB,SAAC/wG,EAAM8B,GAClD,IACM2lL,EAEFznL,EAFFq9J,GACAv/I,EACE9d,EADF8d,SAEEngB,EArFN,SAAuCxO,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAA2DxD,EAAK6C,EAA5DuF,EAAS,CAAC,EAAO0lB,EAAavnB,OAAOsC,KAAKrF,GAAqB,IAAKX,EAAI,EAAGA,EAAIirB,EAAWj3B,OAAQgM,IAAO7C,EAAM8tB,EAAWjrB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,IAAaoI,EAAOpI,GAAOwD,EAAOxD,IAAQ,OAAOoI,CAAS,CAqFrSwlB,CAA8BvZ,EAAMmxG,IAEhD,KAEKm2E,GAAep1L,OAAOQ,OAAO,CAChC8jC,QAASixJ,EACT3pK,SAAAA,GACCngB,IALH,GAAO+pL,EAAP,KACWnxE,EADX,KACE//E,QAKF,OAAoBgnI,EAAAA,EAAAA,KAAKjnD,EAAWrkH,OAAOQ,OAAO,CAAC,EAAGiL,EAAO+pL,EAAa,CACxE5lL,IAAKA,IAER,IACD0lL,GAAOhnF,YAAc,SACrB,UCpGM2Q,GAAY,CAAC,WAAY,WAAY,UAAW,SAAU,MAiBzD,SAASw2E,GAAT,GAMJ,IALDh8L,EAKC,EALDA,IACA0N,EAIC,EAJDA,KACAmkF,EAGC,EAHDA,OACA1/D,EAEC,EAFDA,SACAuxE,EACC,EADDA,QAEMu4F,GAActwC,EAAAA,EAAAA,YAAW44B,GAG7B2X,IAFiBvwC,EAAAA,EAAAA,YAAW+vC,KAGZ,CAAC,GADjBQ,UAEInqB,EAAWD,EAAa9xK,EAAK0N,GAC7ByuL,EAAqB,MAAVtqG,GAAyB,MAAP7xF,EAAc8xK,EAAaoqB,KAAenqB,EAAWlgF,EASxF,MAAO,CAAC,GACN6R,QATkBi2E,IAAiB,SAAAt4J,GAC/B8Q,IACO,MAAXuxE,GAA2BA,EAAQriF,GAE/B46K,IAAgB56K,EAAM6wH,wBACxB+pD,EAAYlqB,EAAU1wJ,GAEzB,IAGC,gBAAiB8Q,QAAYtyB,EAC7B,gBAAiBs8L,GAChBvgB,GAAS,iBAAmB,IAC5B,CACDugB,SAAAA,GAEH,CACD,IAAMC,GAA4Bh3E,EAAAA,YAAiB,SAAC/wG,EAAM8B,GACxD,IACE47J,EAKE19J,EALF09J,SACA5/I,EAIE9d,EAJF8d,SACAuxE,EAGErvF,EAHFqvF,QACA7R,EAEEx9E,EAFFw9E,OAJF,EAMIx9E,EADFq9J,GAAI9mD,OALN,MAKkBixE,GALlB,EAOI7pL,EAtDN,SAAuCxO,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAA2DxD,EAAK6C,EAA5DuF,EAAS,CAAC,EAAO0lB,EAAavnB,OAAOsC,KAAKrF,GAAqB,IAAKX,EAAI,EAAGA,EAAIirB,EAAWj3B,OAAQgM,IAAO7C,EAAM8tB,EAAWjrB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,IAAaoI,EAAOpI,GAAOwD,EAAOxD,IAAQ,OAAOoI,CAAS,CAsDrSwlB,CAA8BvZ,EAAMmxG,IAEzC62E,EAAP,GAA4BL,GAAgB,CAC1Ch8L,IAAK+xK,EACLrkK,KAAMsE,EAAMtE,KACZykB,SAAAA,EACAuxE,QAAAA,EACA7R,OAAAA,IALF,MAOA,OAAoBggF,EAAAA,EAAAA,KAAKjnD,EAAWrkH,OAAOQ,OAAO,CAAC,EAAGiL,EAAO,CAC3DmE,IAAKA,GACJkmL,GACJ,IACDD,GAAavnF,YAAc,eAC3B,UCpDA,SAASynF,KACP,IAAMvwB,EAAc4Y,KACdxuK,GAAM61I,EAAAA,EAAAA,QAAO,MACbmsB,GAAYzsB,EAAAA,EAAAA,cAAY,SAAAhwI,GAC5BvF,EAAIyb,QAAUlW,EAEdqwJ,GACD,GAAE,CAACA,IACJ,MAAO,CAAC51J,EAAKgiK,EACd,CAOD,SAASokB,GAAT,GASG,IARDC,EAQC,EARDA,YACMC,EAOL,EAPDve,KACA+F,EAMC,EANDA,SACUyY,EAKT,EALD5iB,SAKC,IAJD6iB,aAAAA,OAIC,mBAJoB/gB,GAAS,iBAI7B,OAHDghB,EAGC,EAHDA,qBAGC,IAFDna,UAAAA,OAEC,MAFW,eAEX,EADD1mK,EACC,EADDA,SAEM5N,EAAS4uK,KACf,KAAyB9K,EAAoBwqB,EAASD,EAAaE,GAAnE,GAAOxe,EAAP,KAAapE,EAAb,KAIA,KAA2BwiB,KAA3B,GAAOO,EAAP,KAAgBxC,EAAhB,KACMC,EAAcuC,EAAQjrK,QAC5B,KAA+B0qK,KAA/B,GAAOQ,EAAP,KAAkBtB,EAAlB,KACMjB,EAAgBuC,EAAUlrK,QAC1BmrK,EAAWphB,GAAYuC,GACvB8e,GAAkBhxC,EAAAA,EAAAA,QAAO,MACzBixC,GAAkBjxC,EAAAA,EAAAA,SAAO,GACzBiwC,GAActwC,EAAAA,EAAAA,YAAW44B,GACzB6V,GAAS1uC,EAAAA,EAAAA,cAAY,SAACwxC,EAAU77K,GAAwD,IAAjD7d,EAAiD,uDAA/B,MAAT6d,OAAgB,EAASA,EAAM5gB,KACnFq5K,EAASojB,EAAU,CACjBC,cAAe97K,EACf7d,OAAAA,GAEH,GAAE,CAACs2K,IACEsjB,EAAezjB,IAAiB,SAAC35K,EAAKqhB,GAC9B,MAAZ4iK,GAA4BA,EAASjkL,EAAKqhB,GAC1C+4K,GAAO,EAAO/4K,EAAO,UAEhBA,EAAM6wH,wBACM,MAAf+pD,GAA+BA,EAAYj8L,EAAKqhB,EAEnD,IACK/f,GAAUwqJ,EAAAA,EAAAA,UAAQ,iBAAO,CAC7BsuC,OAAAA,EACA3X,UAAAA,EACAvE,KAAAA,EACAoc,YAAAA,EACAC,cAAAA,EACAF,QAAAA,EACAmB,UAAAA,EAPsB,GAQpB,CAACpB,EAAQ3X,EAAWvE,EAAMoc,EAAaC,EAAeF,EAASmB,IAE/DlB,GAAeyC,IAAa7e,IAC9B+e,EAAgBrrK,QAAU0oK,EAAY58I,SAAS48I,EAAYv1D,cAAcr/E,gBAG3E,IAAM23I,EAAc1jB,IAAiB,WAC/B4gB,GAAiBA,EAAczkE,OACjCykE,EAAczkE,OAEjB,IACKwnE,EAAkB3jB,IAAiB,WACvC,IAAMl5K,EAAOu8L,EAAgBprK,QACzB2rK,EAAYX,EAMhB,GAJiB,MAAbW,IACFA,KAAYV,EAAQjrK,UAAWqpK,GAAW4B,EAAQjrK,WAAW,aAG7C,IAAd2rK,IAAqC,aAAdA,GAA6B,UAAUtwL,KAAKxM,IAAvE,CAIA,IAAM8vE,EAAQkxG,GAAIob,EAAQjrK,QAAS+qK,GAAc,GAC7CpsH,GAASA,EAAMulD,OAAOvlD,EAAMulD,OAH/B,CAIF,KACDyE,EAAAA,EAAAA,YAAU,WACJ2jD,EAAMof,IAA2BL,EAAgBrrK,UACnDqrK,EAAgBrrK,SAAU,EAC1ByrK,IAEH,GAAE,CAACnf,EAAM+e,EAAiBI,EAAaC,KACxC/iE,EAAAA,EAAAA,YAAU,WACRyiE,EAAgBprK,QAAU,IAC3B,IAED,IAAM4rK,EAAsB,SAAC5rK,EAASr8B,GACpC,IAAKsnM,EAAQjrK,QAAS,OAAO,KAC7B,IAAM9F,EAAQ21J,GAAIob,EAAQjrK,QAAS+qK,GAC/Br5L,EAAQwoB,EAAMhtB,QAAQ8yB,GAAWr8B,EAErC,OAAOu2B,EADPxoB,EAAQ2F,KAAKwyB,IAAI,EAAGxyB,KAAKuyB,IAAIl4B,EAAOwoB,EAAMj1B,SAE3C,EAkFD,OC/La,SAA0B4mM,EAAap8K,EAAOje,EAAUi5I,QACrD,IAAZA,IACFA,GAAU,GAGZ,IAAI92G,EAAUo0I,GAAiBv2K,IAC/Bm3H,EAAAA,EAAAA,YAAU,WACR,IAAInyH,EAAgC,oBAAhBq1L,EAA6BA,IAAgBA,EAEjE,OADAr1L,EAAO/H,iBAAiBghB,EAAOkkB,EAAS82G,GACjC,WACL,OAAOj0I,EAAOvL,oBAAoBwkB,EAAOkkB,EAAS82G,EACnD,CACF,GAAE,CAACohD,GACL,CDkGCC,EAAiBhyC,EAAAA,EAAAA,cAAY,kBAAMv9I,EAAOxB,QAAb,GAAuB,CAACwB,IAAU,WAAW,SAAAkT,GACxE,IAAIs8K,EAAkBC,EAGpB59L,EACEqhB,EADFrhB,IAEIoI,EAASiZ,EAAMjZ,OACfy1L,EAAmD,OAAvCF,EAAmBd,EAAQjrK,cAAmB,EAAS+rK,EAAiBjgJ,SAASt1C,GAC7F01L,EAAyD,OAA3CF,EAAqBd,EAAUlrK,cAAmB,EAASgsK,EAAmBlgJ,SAASt1C,GAK3G,KAFgB,kBAAkB6E,KAAK7E,EAAOyiC,YAEtB,MAAR7qC,GAAuB,WAARA,GAAoB69L,GAAoB,WAAR79L,GAAoC,WAAhBoI,EAAO3H,SAIrFo9L,GAAaC,KAIN,QAAR99L,GAAmB68L,EAAQjrK,SAAYssJ,GAA3C,CAIA8e,EAAgBprK,QAAUvQ,EAAM5gB,KAChC,IAAM8jC,EAAO,CACX44J,cAAe97K,EACf7d,OAAQ6d,EAAM5gB,MAGhB,OAAQT,GACN,IAAK,UAED,IAAMutB,EAAOiwK,EAAoBp1L,GAAS,GAG1C,OAFImlB,GAAQA,EAAKuoG,OAAOvoG,EAAKuoG,aAC7Bz0G,EAAMy0B,iBAIV,IAAK,YAGH,GAFAz0B,EAAMy0B,iBAEDooI,EAEE,CACL,IAAM3wJ,EAAOiwK,EAAoBp1L,EAAQ,GACrCmlB,GAAQA,EAAKuoG,OAAOvoG,EAAKuoG,OAC9B,MAJCgkD,GAAS,EAAMv1I,GAMjB,OAEF,IAAK,MAKHlkC,GAAiB+H,EAAO28H,cAAe,SAAS,SAAA/5H,GAC9C,IAAI+yL,GAEU,QAAV/yL,EAAEhL,KAAkBgL,EAAE5C,SAAqD,OAAxC21L,EAAoBlB,EAAQjrK,UAAoBmsK,EAAkBrgJ,SAAS1yC,EAAE5C,SAClH0xK,GAAS,EAAOv1I,EAEnB,GAAE,CACD+1B,MAAM,IAER,MAEF,IAAK,SACS,WAARt6D,IACFqhB,EAAMy0B,iBACNz0B,EAAMoxB,mBAGRqnI,GAAS,EAAOv1I,GAnDnB,CAwDF,KACmBstI,EAAAA,EAAAA,KAAK0S,EAAAA,SAA4B,CACnDpmL,MAAOi/L,EACPrhL,UAAuB81J,EAAAA,EAAAA,KAAK8nB,GAAAA,SAA0B,CACpDx7L,MAAOmD,EACPya,SAAUA,KAGf,CAEDwgL,GAAS1nF,YAAc,WACvB0nF,GAASnnD,KAAOwlD,GAChB2B,GAAS7X,OAAS+W,GAClBc,GAAS1uH,KAAOuuH,GAChB,UEvNMzC,GAA+Bv0E,EAAAA,cAAoB,CAAC,GAC1Du0E,GAAgB9kF,YAAc,kBAC9B,UCDgB,IAAIz+B,QCFpB,IAAMovC,GAAY,CAAC,aAmBnB,IAAMw4E,GAAsB54E,EAAAA,YAAiB,SAAC/wG,EAAM8B,GAC9C,IATwBzI,EAU1BgrH,EACErkH,EADFqkH,UAEE1mH,EArBN,SAAuCxO,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAA2DxD,EAAK6C,EAA5DuF,EAAS,CAAC,EAAO0lB,EAAavnB,OAAOsC,KAAKrF,GAAqB,IAAKX,EAAI,EAAGA,EAAIirB,EAAWj3B,OAAQgM,IAAO7C,EAAM8tB,EAAWjrB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,IAAaoI,EAAOpI,GAAOwD,EAAOxD,IAAQ,OAAOoI,CAAS,CAqBrSwlB,CAA8BvZ,EAAMmxG,IAEzCu2E,EAAP,GAAsBJ,GAAep1L,OAAOQ,OAAO,CACjD8jC,QAAS,KACR74B,IAFH,MAGMurC,EAAgBo8H,IAAiB,SAAA3uK,GACrC+wL,EAAYrjE,UAAU1tH,GACT,MAAb0tH,GAA6BA,EAAU1tH,EACxC,IAED,OAtB4B0C,EAsBVsE,EAAMtE,OArBQ,MAAhBA,EAAK3C,QAqB2B,WAAfiH,EAAMunK,MAQnB1H,EAAAA,EAAAA,KAAK,IAAKtrK,OAAOQ,OAAO,CAC1CoP,IAAKA,GACJnE,EAAO,CACR0mH,UAAWA,MAVSm5C,EAAAA,EAAAA,KAAK,IAAKtrK,OAAOQ,OAAO,CAC1CoP,IAAKA,GACJnE,EAAO+pL,EAAa,CACrBrjE,UAAWn7E,IAShB,IACDygJ,GAAOnpF,YAAc,SACrB,oFC1CMunF,GAA4Bh3E,EAAAA,YAAiB,WAShDjvG,GAAQ,IARTs7J,EAQS,EARTA,SACAj2J,EAOS,EAPTA,UACAu2J,EAMS,EANTA,SAMS,IALT5/I,SAAAA,OAKS,SAJTuxE,EAIS,EAJTA,QACA7R,EAGS,EAHTA,OAGS,IAFT6/E,GAAI9mD,OAEK,MAFOozE,GAEP,EADNhsL,EACM,QACHmoD,EAAS62G,EAAmBS,EAAU,iBAC5C,KAAkCuqB,GAAgB,CAChDh8L,IAAK+xK,EACLrkK,KAAMsE,EAAMtE,KACZykB,SAAAA,EACAuxE,QAAAA,EACA7R,OAAAA,IALF,GAAOwqG,EAAP,KAA0B93J,EAA1B,KAOA,OAAoBstI,EAAAA,EAAAA,KAAKjnD,EAAD,EAAC,OAAgB54G,GACpCqqL,GADmB,IAEtBlmL,IAAKA,EACLqF,UAAW7I,IAAW6I,EAAW2+C,EAAQ51B,EAAK43J,UAAY,SAAUhqK,GAAY,cAEnF,IACDiqK,GAAavnF,YAAc,eAC3B,UC9BMvzG,GAAuB8jH,EAAAA,cAAoB,MACjD9jH,GAAQuzG,YAAc,oBACtB,UCAe,SAASopF,GAAyB9nL,EAAKkmG,GAEN,OAAOlmG,CAOtD,sHCKM,SAAS+nL,GAAyBC,EAAUC,EAAepiB,GAChE,IAQIyG,EAAY0b,EALEniB,EAAQ,eAAiB,aADvBA,EAAQ,aAAe,eAQ3C,MADsB,OAAlBoiB,EAAwB3b,EAAY0b,EARzBniB,EAAQ,YAAc,UADpBA,EAAQ,UAAY,YAS2D,QAAlBoiB,EAAyB3b,EAAY0b,EAFlGniB,EAAQ,WAAa,YADnBA,EAAQ,aAAe,cAGqI,UAAlBoiB,IAA2B3b,EAAY0b,EAJpLniB,EAAQ,YAAc,WADpBA,EAAQ,cAAgB,cAMnCyG,CACR,CACD,IAAMmY,GAA4Bx1E,EAAAA,YAAiB,WAahDjvG,GAAQ,IAZTs7J,EAYS,EAZTA,SACAj2J,EAWS,EAXTA,UACA8wB,EAUS,EAVTA,MACAwtJ,EASS,EATTA,eACAhnG,EAQS,EARTA,KACMurG,EAOG,EAPTngB,KACAogB,EAMS,EANTA,cAMS,IAJT5sB,GAAI9mD,OAIK,MAJO,MAIP,EAHT4uE,EAGS,EAHTA,aACA9Y,EAES,EAFTA,QACG1uK,EACM,QACLmsL,GAAW,EACTI,GAAW5yC,EAAAA,EAAAA,YAAW8tB,IACtBt/G,EAAS62G,EAAmBS,EAAU,iBAC5C,GAII9lB,EAAAA,EAAAA,YAAWguC,IAHN6E,EADT,EACElyJ,MACA0J,EAFF,EAEEA,KACAgmI,EAHF,EAGEA,MAEF1vI,EAAQA,GAASkyJ,EACjB,IAAMC,GAAe9yC,EAAAA,EAAAA,YAAW+yC,IAC1BC,EAAe,GAErB,GAAIryJ,EACF,GAAqB,kBAAVA,EAAoB,CAC7B,IAAMzjC,EAAOtC,OAAOsC,KAAKyjC,GAGzB,GAAIzjC,EAAKhS,OAAQ,CACf,IAAM+nM,EAAW/1L,EAAK,GAChBq9G,EAAY55E,EAAMsyJ,GAGxBT,EAAyB,UAAdj4E,EACXy4E,EAAat7L,KAAb,UAAqB82D,EAArB,YAA+BykI,EAA/B,YAA2C14E,GAC5C,CACF,KAAoB,QAAV55E,IACT6xJ,GAAW,GAIf,IAAM1b,EAAYyb,GAAyBC,EAAUnoJ,EAAMgmI,GAC3D,KAKK0d,GAAgB,CACnB5mG,KAAAA,EACAgnG,eAAAA,EACA5b,KAAMmgB,EACNpE,WAAYsE,GAAoC,IAAxBI,EAAa9nM,OACrCtB,OAAQ,CAAC,EAAG,GACZikM,aAAAA,EACA/W,UAAAA,IAZF,GAAO+X,EAAP,YACEC,EADF,EACEA,SACA1S,EAFF,EAEEA,OACA7J,EAHF,EAGEA,KACAkc,EAJF,EAIEA,OAgBF,GANAI,EAAUrkL,IAAM+hK,GAAc+lB,GAAyB9nL,GAAsBqkL,EAAUrkL,KACvF0oL,IAAoB,WAGd3gB,IAAgB,MAAV6J,GAA0BA,EAAO37F,SAC5C,GAAE,CAAC8xF,KACCuc,IAAa6D,IAAkBG,EAAc,OAAO,KAEhC,kBAAd7zE,IACT4vE,EAAUtc,KAAOA,EAEjBsc,EAAU5pG,MAAQ,kBAAgB,MAAVwpG,OAAiB,EAASA,GAAO,EAAvC,EAElBI,EAAUluJ,MAAQA,GAGpB,IAAI1pB,EAAQ5Q,EAAM4Q,MAWlB,OATc,MAAVmlK,GAAkBA,EAAOtF,YAG3B7/J,EAAQ,OAAK5Q,EAAM4Q,OACd43K,EAAU53K,OAEf5Q,EAAM,eAAiB+1K,EAAOtF,YAGZ5Q,EAAAA,EAAAA,KAAKjnD,EAAD,EAAC,SAAgB54G,GACpCwoL,GADmB,IAEtB53K,MAAOA,IAEF+7K,EAAa9nM,QAAU0nM,IAAa,CACvC,iBAAkB,WALE,IAOtB/iL,UAAW7I,IAAAA,WAAA,GAAW6I,EAAW2+C,EAAQ+jH,GAAQ,OAAQigB,GAAY,GAAJ,OAAOhkI,EAAP,QAAqBumH,GAAW,GAAJ,OAAOvmH,EAAP,YAAiBumH,IAAnG,OAAiHie,MAE/H,IACD/D,GAAa/lF,YAAc,eAC3B+lF,GAAahmF,aAjHQ,CACnB9hB,MAAM,GAiHR,qECtHM+oG,GAAsBz2E,EAAAA,YAAiB,WAQ1CjvG,GAAQ,IAPTu7J,EAOS,EAPTA,GACAD,EAMS,EANTA,SACAiP,EAKS,EALTA,QACAxqK,EAIS,EAJTA,KACA27E,EAGS,EAHTA,OACAr2E,EAES,EAFTA,UACGxJ,EACM,QACHmoD,EAAS62G,EAAmBS,EAAU,OAC5C,KAEKkqB,GAAe,GAClB9wJ,QAAS6mI,GACN1/J,IAJL,GAAO+pL,EAAP,KAMMnxE,EANN,KACE//E,QAMF,OAAoBgnI,EAAAA,EAAAA,KAAKjnD,EAAD,EAAC,OAAgBmxE,GACpC/pL,GADmB,IAEtBmE,IAAKA,EACLqF,UAAW7I,IAAW6I,EAAW2+C,EAAQ03B,GAAU,SAAU6uF,GAAW,GAAJ,OAAOvmH,EAAP,YAAiBumH,GAAWxqK,GAAQ,GAAJ,OAAOikD,EAAP,YAAiBjkD,GAAQlE,EAAMtE,MAAQsE,EAAMmgB,UAAY,cAEhK,IACD0pK,GAAOhnF,YAAc,SACrBgnF,GAAOjnF,aA7Bc,CACnB8rE,QAAS,UACT7uF,QAAQ,EACR1/D,UAAU,GA2BZ,mECxBMspK,GAA8Br2E,EAAAA,YAAiB,WAQlDjvG,GAAQ,IAPTs7J,EAOS,EAPTA,SACA76K,EAMS,EANTA,MACA4kB,EAKS,EALTA,UACAsjL,EAIS,EAJTA,cAIS,IAFTptB,GAAI9mD,OAEK,MAFOixE,GAEP,EADN7pL,EACM,QACHmoD,EAAS62G,EAAmBS,EAAU,mBACtCstB,GAAkBpzC,EAAAA,EAAAA,YAAWguC,IAC7B8E,GAAe9yC,EAAAA,EAAAA,YAAW+yC,SAEV7+L,IAAlBi/L,IACF9sL,EAAMy/J,SAAWqtB,GAGnB,IAAOE,EAAP,GAAsB7D,KAAtB,MAIA,OAHA6D,EAAY7oL,IAAM+hK,GAAc8mB,EAAY7oL,IAAK8nL,GAAyB9nL,KAGtD07J,EAAAA,EAAAA,KAAKjnD,EAAD,EAAC,GACvBpvG,UAAW7I,IAAW6I,EAAW2+C,EAAQvjE,GAAS,GAAJ,OAAOujE,EAAP,YAAyBskI,IAAoC,MAAnBM,OAA0B,EAASA,EAAgB7gB,OAAS,SACjJ8gB,GACAhtL,GAEN,IACDypL,GAAe5mF,YAAc,iBAC7B,mICxBMoqF,GAAiB1tB,EAAmB,kBAAmB,CAC3D38D,aAAc,CACZ2kE,KAAM,aAGJ2lB,GAAkB3tB,EAAmB,mBAAoB,CAC7D3mD,UAAW,KACXhW,aAAc,CACZ2kE,KAAM,eAGJ4lB,GAAmB5tB,EAAmB,qBAAsB,CAChE3mD,UAAW,SAOP2xE,GAAwBn3E,EAAAA,YAAiB,SAACg6E,EAAQjpL,GACtD,MAcIq8J,EAAgB4sB,EAAQ,CAC1BlhB,KAAM,aAdNzM,EADF,EACEA,SACAz7H,EAFF,EAEEA,KACAkoI,EAHF,EAGEA,KACA1iK,EAJF,EAIEA,UACA8wB,EALF,EAKEA,MACA23I,EANF,EAMEA,SACAnK,EAPF,EAOEA,SACA8iB,EARF,EAQEA,qBARF,IAUElrB,GAAI9mD,OAVN,MAUkB,MAVlB,EAYEy0E,GAZF,EAWEC,OAXF,EAYED,WACGrtL,EAbL,QAiBMysL,GAAe9yC,EAAAA,EAAAA,YAAW+yC,IAC1BvkI,EAAS62G,EAAmBS,EAAU,YACtCuK,EAAQ5K,IAYRmuB,EAAe5lB,IAAiB,SAACujB,EAAU34J,GAVtB,IAAA/gC,EAWrB+gC,EAAK44J,cAAc50G,gBAAkB57E,UAA6B,YAAhB43B,EAAK/gC,QAAmD,WAA3B+gC,EAAK44J,cAAcn9L,MAAmBukC,EAAK/gC,OAAS,aAX9GA,EAYF+gC,EAAK/gC,SAVV,IAAd67L,EAAuC,UAAX77L,EAEd,WAAd67L,EAA0C,cAAX77L,EAEjB,YAAd67L,GAA2C,WAAX77L,KAMa,MAAZs2K,GAA4BA,EAASojB,EAAU34J,GACrF,IAEKk+I,EAAYyb,GADS,QAAV5xJ,EACoC0J,EAAMgmI,GACrDwjB,GAAe1zC,EAAAA,EAAAA,UAAQ,iBAAO,CAClCx/G,MAAAA,EACA0J,KAAAA,EACAgmI,MAAAA,EAH2B,GAIzB,CAAC1vI,EAAO0J,EAAMgmI,IAClB,OAAoBnK,EAAAA,EAAAA,KAAK8nB,GAAAA,SAA0B,CACjDx7L,MAAOqhM,EACPzjL,UAAuB81J,EAAAA,EAAAA,KAAK4tB,GAAc,CACxChd,UAAWA,EACXvE,KAAMA,EACN+F,SAAUA,EACVnK,SAAUylB,EACV3C,qBAAsBA,EACtBD,aAAc,IAAF,OAAMxiI,EAAN,uCACZp+C,SAAU0iL,EAAezsL,EAAM+J,UAAwB81J,EAAAA,EAAAA,KAAKjnD,EAAD,EAAC,KAAgB54G,GAAjB,IACzDmE,IAAKA,EACLqF,UAAW7I,IAAW6I,EAAW0iK,GAAQ,SAAUloI,GAAiB,SAATA,IAAoBmkB,EAAiB,OAATnkB,GAAiB,SAAmB,QAATA,GAAkB,UAAoB,UAATA,GAAoB,mBAI1K,IACDumJ,GAAS1nF,YAAc,WACvB0nF,GAAS3nF,aAjEY,CACnB0qF,QAAQ,EACRhzJ,MAAO,QACP+yJ,WAAW,GA+Db,OAAe94L,OAAOQ,OAAOw1L,GAAU,CACrC7X,OAAQ+W,GACRrmD,KAAMwlD,GACN/sH,KAAMuuH,GACNsD,SAAUP,GACV9+D,QAAS6+D,GACT3b,OAAQ0b,KCnGV,GADgC75E,EAAAA,cAAoB,MCD9CI,GAAY,CAAC,KAAM,SAAU,YAa5B,SAASm6E,GAAT,GAOJ,IAND3/L,EAMC,EANDA,IACA0jG,EAKC,EALDA,QACA7R,EAIC,EAJDA,OACAzqF,EAGC,EAHDA,GACAmyK,EAEC,EAFDA,KACApnJ,EACC,EADDA,SAEMytK,GAAiBj0C,EAAAA,EAAAA,YAAW44B,GAC5Bsb,GAAal0C,EAAAA,EAAAA,YAAW+vC,IACxBoE,GAAan0C,EAAAA,EAAAA,YAAWo0C,IAC1B5D,EAAWtqG,EACT7/E,EAAQ,CACZunK,KAAAA,GAGF,GAAIsmB,EAAY,CACTtmB,GAA4B,YAApBsmB,EAAWtmB,OAAoBvnK,EAAMunK,KAAO,OACzD,IAAMymB,EAAsBH,EAAWI,gBAAuB,MAAPjgM,EAAcA,EAAM,MACrEkgM,EAAsBL,EAAWM,gBAAuB,MAAPngM,EAAcA,EAAM,MAE3EgS,EAAM4pK,GAAS,cAAgB57K,EAC/BgS,EAAM5K,GAAK44L,GAAuB54L,IAClC+0L,EAAqB,MAAVtqG,GAAyB,MAAP7xF,EAAc6/L,EAAW3D,YAAcl8L,EAAM6xF,KAW1C,MAAdiuG,GAAsBA,EAAWtrB,eAAkC,MAAdsrB,GAAsBA,EAAWrrB,gBAAeziK,EAAM,iBAAmBkuL,EACjJ,CA2BD,MAzBmB,QAAfluL,EAAMunK,OACRvnK,EAAM,iBAAmBmqL,EAEpBA,IACHnqL,EAAM8tK,UAAY,GAGhB3tJ,IACFngB,EAAM8tK,UAAY,EAClB9tK,EAAM,kBAAmB,IAI7BA,EAAM0xF,QAAUi2E,IAAiB,SAAA3uK,GAC3BmnB,IACO,MAAXuxE,GAA2BA,EAAQ14F,GAExB,MAAPhL,GAIA4/L,IAAmB50L,EAAEknI,wBACvB0tD,EAAe5/L,EAAKgL,GAEvB,IACM,CAACgH,EAAO,CACbmqL,SAAAA,GAEH,CACD,IAAMiE,GAAuBh7E,EAAAA,YAAiB,SAAC/wG,EAAM8B,GACnD,MAII9B,EAHFq9J,GAAI9mD,OADN,MACkBixE,GADlB,EAEEhqG,EAEEx9E,EAFFw9E,OACAkgF,EACE19J,EADF09J,SAEE7qK,EAnFN,SAAuC1D,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAA2DxD,EAAK6C,EAA5DuF,EAAS,CAAC,EAAO0lB,EAAavnB,OAAOsC,KAAKrF,GAAqB,IAAKX,EAAI,EAAGA,EAAIirB,EAAWj3B,OAAQgM,IAAO7C,EAAM8tB,EAAWjrB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,IAAaoI,EAAOpI,GAAOwD,EAAOxD,IAAQ,OAAOoI,CAAS,CAmFnSwlB,CAA8BvZ,EAAMmxG,IAElD,KAAsBm6E,GAAWp5L,OAAOQ,OAAO,CAC7C/G,IAAK8xK,EAAaC,EAAU7qK,EAAQwG,MACpCmkF,OAAAA,GACC3qF,IAHH,GAAO8K,EAAP,KAAcuyB,EAAd,KAMA,OADAvyB,EAAM4pK,GAAS,WAAar3I,EAAK43J,UACbtqB,EAAAA,EAAAA,KAAKjnD,EAAWrkH,OAAOQ,OAAO,CAAC,EAAGG,EAAS8K,EAAO,CACpEmE,IAAKA,IAER,IACDiqL,GAAQvrF,YAAc,UACtB,+DCxFMwrF,GAAuBj7E,EAAAA,YAAiB,WAO3CjvG,GAAQ,IANTs7J,EAMS,EANTA,SACAj2J,EAKS,EALTA,UAKS,IAJTk2J,GAAI9mD,OAIK,MAJOozE,GAIP,EAHTnsG,EAGS,EAHTA,OACAkgF,EAES,EAFTA,SACG//J,EACM,QACTy/J,EAAWT,EAAmBS,EAAU,YACxC,SAA6BkuB,GAAW,GACtC3/L,IAAK8xK,EAAaC,EAAU//J,EAAMtE,MAClCmkF,OAAAA,GACG7/E,IAHL,GAAOsuL,EAAP,KAAqB/7J,EAArB,KAKA,OAAoBstI,EAAAA,EAAAA,KAAKjnD,EAAD,EAAC,OAAgB54G,GACpCsuL,GADmB,IAEtBnqL,IAAKA,EACLqF,UAAW7I,IAAW6I,EAAWi2J,EAAUz/J,EAAMmgB,UAAY,WAAYoS,EAAK43J,UAAY,YAE7F,IACDkE,GAAQxrF,YAAc,UACtBwrF,GAAQzrF,aAxBa,CACnBziF,UAAU,GAwBZ,gJCzBMouK,GAA2Bn7E,EAAAA,YAAiB,WAa/CjvG,GAAQ,IAZT/O,EAYS,EAZTA,GACAwnC,EAWS,EAXTA,MACA7yB,EAUS,EAVTA,SACA01J,EASS,EATTA,SACAj2J,EAQS,EARTA,UACAs+K,EAOS,EAPTA,eACA0G,EAMS,EANTA,SACAruK,EAKS,EALTA,SACA0/D,EAIS,EAJTA,OACA4uG,EAGS,EAHTA,kBACAC,EAES,EAFTA,YACG1uL,EACM,QAEH2uL,EAAgB3vB,OAAmBnxK,EAAW,YACpD,OAAoBqgL,EAAAA,EAAAA,MAAMqc,GAAD,EAAC,GACxBpmL,IAAKA,GACFnE,GAFoB,IAGvBwJ,UAAW7I,IAAW6I,EAAWmlL,GACjC5kL,SAAU,EAAc81J,EAAAA,EAAAA,KAAK0qB,GAAAA,OAAiB,CAC5Cn1L,GAAIA,EACJ2qK,SAAU,KACVlgF,OAAQA,EACR1/D,SAAUA,EACV2sK,cAAertB,EACfC,GAAI2uB,GACJtkL,SAAU6yB,KACKijI,EAAAA,EAAAA,KAAK0qB,GAAAA,KAAe,CACnChjB,KAAMinB,EACNlC,cAAemC,EACf3G,eAAgBA,EAChBpZ,QAASggB,EACT3kL,SAAUA,OAGf,IACDwkL,GAAY1rF,YAAc,cAC1B,OAAetuG,OAAOQ,OAAOw5L,GAAa,CACxC1yH,KAAM0uH,GAAAA,KACNmD,SAAUnD,GAAAA,SACVl8D,QAASk8D,GAAAA,QACThZ,OAAQgZ,GAAAA,4yIC5CG,IA8DDqE,GAWAC,GAaAC,GASAC,GAsDAC,GArJCC,GAAY,CACrBC,aAAc,UACdC,IAAK,iBAELC,aAAc,OAEdC,kBAAmB,4CACnBC,uBAAwB,4BACxBC,sBAAuB,SAEvBC,KAAM,OAENC,6BAA8B,sGAE9BC,eAAgB,IAEhBC,WAAY,aAEZC,OAAQ,SAERC,cAAe,uCAEfC,aAAc,SACdC,cAAe,UACfC,qBAAsB,iBACtBC,YAAa,QAEbC,mBAAoB,OACpBC,gBAAiB,qBACjBC,cAAe,gBACfC,uBAAwB,WACxBC,2BAA4B,OAC5BC,sBAAuB,kDACvBC,sBAAuB,wBACvBC,YAAa,cACbC,aAAc,GACdC,cAAe,IACfC,cAAe,4DACfC,aAAc,aACdC,aAAc,IACdC,gCAAiC,gBACjCC,kCAAmC,sBACnCC,oBAAqB,CAAC,4BAA6B,oBAAqB,sBAAuB,mBAC/FC,oBAAqB,QACrBC,uBAAwB,WACxBC,mBAAoB,KAGX,GAAsB,CAC/BnC,GAAUa,aACVb,GAAUc,cACVd,GAAUe,sBAGDqB,GAAc,GACpBC,GAAmB,CACtBrC,GAAUgB,eAMd,SAAYrB,GACRA,EAAAA,aAAAA,eACAA,EAAAA,YAAAA,cACAA,EAAAA,WAAAA,kBACAA,EAAAA,gBAAAA,mBACAA,EAAAA,mBAAAA,qBALJ,EAAYA,KAAAA,GAMX,KAKD,SAAYC,GACRA,EAAAA,SAAAA,UACAA,EAAAA,YAAAA,cACAA,EAAAA,cAAAA,eACAA,EAAAA,MAAAA,QACAA,EAAAA,WAAAA,oBACAA,EAAAA,eAAAA,iBACAA,EAAiD,+CAPrD,EAAYA,KAAAA,GAQX,KAKD,SAAYC,GACRA,EAAAA,OAAAA,SACAA,EAAAA,cAAAA,gBACAA,EAAAA,UAAAA,WAHJ,EAAYA,KAAAA,GAIX,KAKD,SAAYC,GACRA,EAAAA,UAAAA,YACAA,EAAAA,aAAAA,eACAA,EAAAA,cAAAA,gBACAA,EAAAA,cAAAA,gBACAA,EAAAA,WAAAA,aACAA,EAAAA,OAAAA,SACAA,EAAAA,MAAAA,QACAA,EAAAA,MAAAA,QACAA,EAAAA,kBAAAA,oBACAA,EAAAA,aAAAA,eACAA,EAAAA,SAAAA,WACAA,EAAAA,cAAAA,gBACAA,EAAAA,WAAAA,aACAA,EAAAA,MAAAA,QACAA,EAAAA,MAAAA,QACAA,EAAAA,OAAAA,SACAA,EAAAA,cAAAA,gBACAA,EAAAA,YAAAA,cACAA,EAAAA,KAAAA,OACAA,EAAAA,eAAAA,iBACAA,EAAAA,sBAAAA,wBACAA,EAAAA,cAAAA,gBACAA,EAAAA,kBAAAA,oBACAA,EAAAA,aAAAA,eACAA,EAAAA,aAAAA,eACAA,EAAAA,YAAAA,cACAA,EAAAA,aAAAA,eACAA,EAAAA,oBAAAA,6BACAA,EAAAA,oBAAAA,0BACAA,EAAAA,oBAAAA,sBACAA,EAAAA,WAAAA,aACAA,EAAAA,UAAAA,YACAA,EAAAA,gBAAAA,2BACAA,EAAAA,cAAAA,gBACAA,EAAAA,YAAAA,cACAA,EAAAA,cAAAA,gBACAA,EAAAA,iBAAAA,mBACAA,EAAAA,sBAAAA,wBACAA,EAAAA,WAAAA,aACAA,EAAAA,QAAAA,UACAA,EAAAA,cAAAA,YACAA,EAAAA,oBAAAA,sBACAA,EAAAA,aAAAA,eACAA,EAAAA,KAAAA,OACAA,EAAAA,WAAAA,kBACAA,EAAAA,gBAAAA,kBACAA,EAAAA,cAAAA,eACAA,EAAAA,YAAAA,aAhDJ,EAAYA,KAAAA,GAiDX,KAKD,SAAYC,GACRA,EAAAA,aAAAA,eACAA,EAAAA,OAAAA,QAFJ,EAAYA,KAAAA,GAGX,KAOY,IAWDuC,GAXCC,GAAc,CACvBC,MAAO,QACPC,eAAgB,iBAChBC,QAAS,UACT92K,KAAM,OACN+2K,OAAQ,WAMZ,SAAYL,GACRA,EAAAA,QAAAA,UACAA,EAAAA,IAAAA,MACAA,EAAAA,WAAAA,aACAA,EAAAA,SAAAA,WACAA,EAAAA,YAAAA,cACAA,EAAAA,cAAAA,gBACAA,EAAAA,UAAAA,YACAA,EAAAA,WAAAA,oBACAA,EAAAA,eAAAA,uBATJ,EAAYA,KAAAA,GAUX,KAaY,IAkBDM,GASAC,GAaAC,GAUAC,GAQAC,GAUAC,GAgBAC,GApFCC,GAA4B,CACrCC,MAAO,QACPC,KAAM,SAgBV,SAAYT,GACRA,EAAAA,MAAAA,QACAA,EAAAA,SAAAA,WACAA,EAAAA,UAAAA,WAHJ,EAAYA,KAAAA,GAIX,KAKD,SAAYC,GACRA,EAAAA,eAAAA,WACAA,EAAAA,yBAAAA,qBACAA,EAAAA,yBAAAA,qBACAA,EAAAA,8BAAAA,WACAA,EAAAA,oBAAAA,gBACAA,EAAAA,kBAAAA,cACAA,EAAAA,WAAAA,6CAPJ,EAAYA,KAAAA,GAQX,KAKD,SAAYC,GACRA,EAAAA,mBAAAA,QACAA,EAAAA,kBAAAA,OACAA,EAAAA,mBAAAA,MACAA,EAAgC,8BAJpC,EAAYA,KAAAA,GAKX,KAKD,SAAYC,GACRA,EAAAA,oBAAAA,IACAA,EAAAA,sBAAAA,GAFJ,EAAYA,KAAAA,GAGX,KAKD,SAAYC,GACRA,EAAAA,SAAAA,UACAA,EAAAA,aAAAA,cACAA,EAAAA,8BAAAA,8BACAA,EAAAA,cAAAA,cAJJ,EAAYA,KAAAA,GAKX,KAKD,SAAYC,GACRA,EAAAA,QAAAA,UACAA,EAAAA,WAAAA,aACAA,EAAAA,SAAAA,UACAA,EAAAA,aAAAA,cACAA,EAAAA,cAAAA,eACAA,EAAAA,aAAAA,cACAA,EAAAA,UAAAA,YACAA,EAAAA,UAAAA,YACAA,EAAAA,UAAAA,YACAA,EAAAA,WAAAA,YAVJ,EAAYA,KAAAA,GAWX,KAKD,SAAYC,GACRA,EAAAA,EAAAA,KAAAA,MAAAA,OACAA,EAAAA,EAAAA,IAAAA,MAAAA,MACAA,EAAAA,EAAAA,MAAAA,MAAAA,QACAA,EAAAA,EAAAA,QAAAA,MAAAA,UACAA,EAAAA,EAAAA,aAAAA,MAAAA,eACAA,EAAAA,EAAAA,cAAAA,MAAAA,gBACAA,EAAAA,EAAAA,SAAAA,MAAAA,WACAA,EAAAA,EAAAA,aAAAA,MAAAA,eACAA,EAAAA,EAAAA,UAAAA,MAAAA,WATJ,EAAYA,KAAAA,GAUX,KAKM,IASKI,GATCC,GAAe,cAEfC,GAAgB,IAEhBC,GACE,qBADFA,GAEa,OAG1B,SAAYH,GACRA,EAAAA,OAAAA,SACAA,EAAAA,MAAAA,QACAA,EAAAA,QAAAA,UACAA,EAAAA,iBAAAA,kBAJJ,EAAYA,KAAAA,GAKX,KAEY,IAgBDI,GAhBCC,GAAyB,CAClCC,eAAgB,EAChBC,qBAAsB,GACtBC,sBAAuB,IACvBC,kBAAmB,GACnBC,UAAW,mBACXC,mBAAoB,IACpBC,gBAAiB,IACjBC,cAAe,IACfC,eAAgB,IAChBC,cAAe,kBAMnB,SAAYX,GACRA,EAAAA,OAAAA,SACAA,EAAAA,IAAAA,MACAA,EAAAA,IAAAA,UAHJ,EAAYA,KAAAA,GAIX,KAKY,IAmBDY,GAQCC,GAQDC,GAUAC,GAQAC,GAQAC,GA7DCC,GAEsB,GAFtBA,GAI0B,KAJ1BA,GAMU,aANVA,GAQkB,oBAGlBC,GACY,gBADZA,GAEc,mBAM3B,SAAYP,GACRA,EAAAA,SAAAA,WACAA,EAAAA,SAAAA,UAFJ,EAAYA,KAAAA,GAGX,KAKD,SAAaC,GACTA,EAAAA,EAAAA,YAAAA,KAAAA,cACAA,EAAAA,EAAAA,eAAAA,KAAAA,gBAFJ,EAAaA,KAAAA,GAGZ,KAKD,SAAYC,GACRA,EAAAA,sBAAAA,IACAA,EAAAA,eAAAA,IACAA,EAAAA,qBAAAA,IACAA,EAAAA,KAAAA,GAJJ,EAAYA,KAAAA,GAKX,KAKD,SAAYC,GACRA,EAAAA,4BAAAA,IACAA,EAAAA,6BAAAA,IACAA,EAAAA,wBAAAA,IACAA,EAAAA,oCAAAA,IACAA,EAAAA,gCAAAA,GALJ,EAAYA,KAAAA,GAMX,KAED,SAAYC,GACRA,EAAAA,aAAAA,IACAA,EAAAA,cAAAA,IACAA,EAAAA,uBAAAA,IACAA,EAAAA,4BAAAA,IACAA,EAAAA,4BAAAA,GALJ,EAAYA,KAAAA,GAMX,KAED,SAAYC,GACRA,EAAAA,IAAAA,MACAA,EAAAA,IAAAA,KAFJ,EAAYA,KAAAA,GAGX,KCxYY,ICuCDG,GAOAC,GASAC,GAQAC,GAoBAC,GAWAC,GAeAC,GAWAC,GDxHCC,GACQ,CACbzgM,KAAM,mBACNkK,KAAM,uCAHDu2L,GAKU,CACfzgM,KAAM,sBACNkK,KAAM,wIAOd,eAsBI,WAAYw2L,EAAoBjmH,EAAuBkmH,GAAvD,IASCz8E,EAAAA,KARS08E,EAAcnmH,EAAkBimH,EAAS,KAAKjmH,EAAiBimH,SACrEx8E,EAAAA,EAAAA,KAAAA,KAAM08E,IAAa,KACnBngM,OAAOysD,eAAeg3D,EAAM28E,EAAUnlM,WAEtCwoH,EAAKw8E,UAAYA,GAAavF,GAAUyB,aACxC14E,EAAKzpC,aAAeA,GAAgB0gH,GAAUyB,aAC9C14E,EAAK48E,SAAWH,GAAYxF,GAAUyB,aACtC14E,EAAKpmH,KAAO,aACf,CAsBL,OArD+BsvD,GAAK,KAiChCyzI,EAAgB,UAAAE,iBAAhB,SAAiBC,GACbtkM,KAAKskM,cAAgBA,CACxB,EAMMH,EAAqB,sBAA5B,SAA6BI,GACzB,OAAO,IAAIJ,EAAUJ,GAAiCzgM,KAASygM,GAAiCv2L,KAAS,KAAA+2L,EAC5G,EAOMJ,EAAuB,wBAA9B,SAA+BI,GAC3B,OAAO,IAAIJ,EAAUJ,GAAmCzgM,KAASygM,GAAmCv2L,KAAS,KAAA+2L,EAChH,EACJJ,CArDD,EAA+BtwM,OEdlB2wM,GACU,CACflhM,KAAM,qBACNkK,KAAM,oEAHDg3L,GAKY,CACjBlhM,KAAM,wBACNkK,KAAM,4CAPDg3L,GASiB,CACtBlhM,KAAM,wBACNkK,KAAM,yDAXDg3L,GAae,CACpBlhM,KAAM,wBACNkK,KAAM,+PAfDg3L,GAuBc,CACnBlhM,KAAM,2CACNkK,KAAM,kLAzBDg3L,GA2BiB,CACtBlhM,KAAM,8BACNkK,KAAM,wSASV,WAAYw2L,EAAmBjmH,GAA/B,MACIwpC,EAAAA,KAAAA,KAAMy8E,EAAWjmH,IAAa,YAC9BypC,EAAKpmH,KAAO,gCAEZ2C,OAAOysD,eAAeg3D,EAAMi9E,EAA8BzlM,YAC7D,CAgDL,OAvDmD0xD,GAAAA,EAAAA,GAYxC+zI,EAAAA,4BAAP,WACI,OAAO,IAAIA,EAA8BD,GAAuDlhM,KAC5FkhM,GAAuDh3L,KAC9D,EAKMi3L,EAAAA,sCAAP,WACI,OAAO,IAAIA,EAA8BD,GAAyDlhM,KAC9FkhM,GAAyDh3L,KAChE,EAMMi3L,EAAAA,+BAAP,SAAsCC,GAClC,OAAO,IAAID,EAA8BD,GAA8DlhM,KAASkhM,GAA8Dh3L,KAAI,oBAAoBk3L,EACzM,EAKMD,EAAAA,mCAAP,WACI,OAAO,IAAIA,EAA8BD,GAA4DlhM,KACjGkhM,GAA4Dh3L,KACnE,EAKMi3L,EAAAA,iCAAP,WACI,OAAO,IAAIA,EAA8BD,GAA2DlhM,KAChGkhM,GAA2Dh3L,KAClE,EAKMi3L,EAAAA,uCAAP,WACI,OAAO,IAAIA,EAA8BD,GAA8DlhM,KAAMkhM,GAA8Dh3L,KAC9K,EACL,CAvDA,EAAmD22L,ICMtCQ,GAA2D,CACpEC,WAAY,WACR,OAAOprM,QAAQE,OAAO+qM,GAA8BI,mCACvD,EACDC,kBAAmB,WACf,OAAOtrM,QAAQE,OAAO+qM,GAA8BI,mCACvD,EACDE,qBAAsB,WAClB,OAAOvrM,QAAQE,OAAO+qM,GAA8BI,mCACvD,EACDG,mBAAoB,WAChB,OAAOxrM,QAAQE,OAAO+qM,GAA8BI,mCACvD,EACDI,mBAAoB,WAChB,OAAOzrM,QAAQE,OAAO+qM,GAA8BI,mCACvD,EACDK,eAAgB,WACZ,MAAO,EACV,EACDC,mBAAoB,WAChB,OAAO,IACV,EACDC,qBAAsB,WAClB,OAAO,IACV,EACDC,oBAAqB,WACjB,OAAO,IACV,EACDC,sBAAuB,WACnB,OAAO9rM,QAAQE,OAAO+qM,GAA8BI,mCACvD,EACDU,WAAY,WACR,OAAO/rM,QAAQE,OAAO+qM,GAA8BI,mCACvD,EACDW,cAAe,WACX,OAAOhsM,QAAQE,OAAO+qM,GAA8BI,mCACvD,EACD/1F,OAAQ,WACJ,OAAOt1G,QAAQE,OAAO+qM,GAA8BI,mCACvD,EACDY,eAAgB,WACZ,OAAOjsM,QAAQE,OAAO+qM,GAA8BI,mCACvD,EACDa,YAAa,WACT,OAAOlsM,QAAQE,OAAO+qM,GAA8BI,mCACvD,EACDc,UAAW,WACP,OAAOnsM,QAAQE,OAAO+qM,GAA8BI,mCACvD,EACDe,iBAAkB,WACd,OAAO,IACV,EACDC,oBAAqB,WAEpB,EACDC,uBAAwB,WACpB,MAAO,EACV,EACDC,0BAA2B,WACvB,OAAO,CACV,EACDC,2BAA4B,WAE3B,EACDC,4BAA6B,WAE5B,EACDC,cAAe,WACX,MAAMzB,GAA8BI,kCACvC,EACDsB,UAAW,WACP,MAAM1B,GAA8BI,kCACvC,EACDuB,UAAW,WAEV,EACDC,iBAAkB,WAEjB,EACDC,iBAAkB,WACd,OAAO,IACV,EACDC,yBAA0B,WAEzB,EACDC,oBAAqB,WAEpB,EACDC,iBAAkB,WACd,MAAMhC,GAA8BI,kCACvC,GFlIQ6B,GAQY,gBARZA,GAYI,IAZJA,GAgBK,IAhBLA,GAoBU,OApBVA,GAwBS,GAxBTA,GA4BC,kBAGDC,GACG,uCADHA,GAEe,mCAFfA,GAGO,QAGpB,SAAYpD,GACRA,EAAAA,iBAAAA,YACAA,EAAAA,kBAAAA,oBACAA,EAAAA,SAAAA,WACAA,EAAAA,SAAAA,UAJJ,EAAYA,KAAAA,GAAqB,KAOjC,SAAYC,GACRA,EAAAA,aAAAA,eACAA,EAAAA,eAAAA,iBACAA,EAAAA,cAAAA,eAHJ,EAAYA,KAAAA,GAAoB,KAShC,SAAYC,GACRA,EAAAA,IAAAA,MACAA,EAAAA,KAAAA,MAFJ,EAAYA,KAAAA,GAAiB,KAQ7B,SAAYC,GACRA,EAAAA,UAAAA,YACAA,EAAAA,sBAAAA,uBACAA,EAAAA,cAAAA,gBACAA,EAAAA,cAAAA,gBACAA,EAAAA,cAAAA,iBACAA,EAAAA,WAAAA,iBACAA,EAAAA,aAAAA,qBACAA,EAAAA,SAAAA,UACAA,EAAAA,eAAAA,iBACAA,EAAAA,OAAAA,SACAA,EAAAA,uBAAAA,qBACAA,EAAAA,eAAAA,iBACAA,EAAAA,eAAAA,wBACAA,EAAAA,eAAAA,gBAdJ,EAAYA,KAAAA,GAAkB,KAoB9B,SAAYC,GACRA,EAAAA,YAAAA,cACAA,EAAAA,YAAAA,iBAFJ,EAAYA,KAAAA,GAAiB,KAW7B,SAAYC,GACRA,EAAAA,EAAAA,qBAAAA,KAAAA,uBACAA,EAAAA,EAAAA,kBAAAA,KAAAA,oBACAA,EAAAA,EAAAA,UAAAA,KAAAA,YACAA,EAAAA,EAAAA,4BAAAA,KAAAA,8BACAA,EAAAA,EAAAA,sBAAAA,KAAAA,wBACAA,EAAAA,EAAAA,mBAAAA,KAAAA,qBACAA,EAAAA,EAAAA,8BAAAA,IAAAA,gCACAA,EAAAA,EAAAA,OAAAA,KAAAA,SACAA,EAAAA,EAAAA,YAAAA,KAAAA,aATJ,EAAYA,KAAAA,GAAK,KAejB,SAAYC,GACRA,EAAAA,SAAAA,WACAA,EAAAA,MAAAA,QACAA,EAAAA,OAAAA,SACAA,EAAAA,KAAAA,MAJJ,EAAYA,KAAAA,GAAe,KAW3B,SAAYC,GAIRA,EAAAA,QAAAA,UAIAA,EAAAA,MAAAA,QAIAA,EAAAA,OAAAA,SAIAA,EAAAA,aAAAA,eAIAA,EAAAA,UAAAA,YAIAA,EAAAA,eAAAA,iBAIAA,EAAAA,KAAAA,MA5BJ,EAAYA,KAAAA,GAAiB,SAyCjB8C,GAVCC,GAAgD,CACzDC,OAAQhG,IAMCiG,GAAiB,OAG9B,SAAYH,GACRA,EAAAA,MAAAA,oBACAA,EAAAA,QAAAA,qBAFJ,EAAYA,KAAAA,GAAU,SGrJVI,GH2JCC,GAAU,UIvKVC,GACgB,CACrB5jM,KAAM,6BACNkK,KAAM,+GAHD05L,GAKa,CAClB5jM,KAAM,0BACNkK,KAAM,mFAPD05L,GASU,CACf5jM,KAAM,sBACNkK,KAAM,8EAXD05L,GAaS,CACd5jM,KAAM,sBACNkK,KAAM,oFAfD05L,GAiBgB,CACrB5jM,KAAM,6BACNkK,KAAM,2EAnBD05L,GAqBK,CACV5jM,KAAM,gBACNkK,KAAM,+EAvBD05L,GAyBqB,CAC1B5jM,KAAM,sBACNkK,KAAM,+IA3BD05L,GA6BY,CACjB5jM,KAAM,wBACNkK,KAAM,uGA/BD05L,GAqCU,CACf5jM,KAAM,gBACNkK,KAAM,6IAvCD05L,GAyCW,CAChB5jM,KAAM,iBACNkK,KAAM,iGA3CD05L,GA6CW,CAChB5jM,KAAM,kBACNkK,KAAM,mBA/CD05L,GAiDW,CAChB5jM,KAAM,iBACNkK,KAAM,wFAnDD05L,GAqDW,CAChB5jM,KAAM,kBACNkK,KAAM,mBAvDD05L,GA6De,CACpB5jM,KAAM,2BACNkK,KAAM,qJA/DD05L,GAkEiB,CACtB5jM,KAAM,6BACNkK,KAAM,6HApED05L,GAsEoB,CACzB5jM,KAAM,gCACNkK,KAAM,oIAxED05L,GA0EiB,CACtB5jM,KAAM,yBACNkK,KAAM,6EA5ED05L,GA8Ec,CACnB5jM,KAAM,4BACNkK,KAAM,8FAhFD05L,GAkFc,CACnB5jM,KAAM,4BACNkK,KAAM,gGApFD05L,GAsFY,CACjB5jM,KAAM,yBACNkK,KAAM,wCAxFD05L,GA0FgB,CACrB5jM,KAAM,uBACNkK,KAAM,6CA5FD05L,GA8FmB,CACxB5jM,KAAM,gCACNkK,KAAM,mHAhGD05L,GAkGU,CACf5jM,KAAM,sBACNkK,KAAM,2BApGD05L,GAsGe,CACpB5jM,KAAM,4BACNkK,KAAM,oDAxGD05L,GA0GiB,CACtB5jM,KAAM,+BACNkK,KAAM,2FA5GD05L,GA8GW,CAChB5jM,KAAM,uBACNkK,KAAM,8CAhHD05L,GAkHgB,CACrB5jM,KAAM,4BACNkK,KAAM,6DApHD05L,GAsHO,CACZ5jM,KAAM,mBACNkK,KAAM,4CAxHD05L,GA0HS,CACd5jM,KAAM,sCACNkK,KAAM,iFA5HD05L,GA8HI,CACT5jM,KAAM,mBACNkK,KAAM,6EAhID05L,GAkIS,CACd5jM,KAAM,qBACNkK,KAAM,sBApID05L,GAsIc,CACnB5jM,KAAM,0BACNkK,KAAM,4BAxID05L,GA0IiB,CACtB5jM,KAAM,6BACNkK,KAAM,+BA5ID05L,GA8IS,CACd5jM,KAAM,oBACNkK,KAAM,4FAhJD05L,GAkJgB,CACrB5jM,KAAM,4BACNkK,KAAM,kKApJD05L,GAsJa,CAClB5jM,KAAM,yBACNkK,KAAM,sOAxJD05L,GA0JW,CAChB5jM,KAAM,uBACNkK,KAAM,wDA5JD05L,GA8JY,CACjB5jM,KAAM,0CACNkK,KAAM,mEAhKD05L,GAkKsB,CAC3B5jM,KAAM,kDACNkK,KAAM,qEApKD05L,GA8KkB,CACvB5jM,KAAM,0BACNkK,KAAM,+DAhLD05L,GAkLW,CAChB5jM,KAAM,qCACNkK,KAAM,+CApLD05L,GAsLK,CACV5jM,KAAM,iBACNkK,KAAM,yIAOd,eAEI,SAAY25L,EAAAnD,EAAmBjmH,GAA/B,MACIwpC,EAAM,UAAAy8E,EAAWjmH,IAIpB,YAHGypC,EAAKpmH,KAAO,kBAEZ2C,OAAOysD,eAAeg3D,EAAM2/E,EAAgBnoM,YAC/C,CAiUL,OAxUqC0xD,GAAS,KAanCy2I,EAA6B,8BAApC,SAAqCC,GACjC,OAAO,IAAID,EAAgBD,GAA+C5jM,KACnE4jM,GAA+C15L,KAA2B,uBAAA45L,EACpF,EAMMD,EAAAA,2BAAP,WACI,OAAO,IAAIA,EAAgBD,GAA4C5jM,KACnE,GAAG4jM,GAA4C15L,KACtD,EAMM25L,EAAuB,wBAA9B,SAA+BE,GAC3B,OAAO,IAAIF,EAAgBD,GAAyC5jM,KAC7D4jM,GAAyC15L,KAA2B,uBAAA65L,EAC9E,EAMMF,EAA2B,4BAAlC,SAAmCG,GAC/B,OAAO,IAAIH,EAAgBD,GAAwC5jM,KAC5D4jM,GAAwC15L,KAAyB,qBAAA85L,EAC3E,EAKMH,EAAsC,uCAA7C,SAA8CI,GAC1C,OAAO,IAAIJ,EAAgBD,GAA+C5jM,KACnE4jM,GAA+C15L,KAAgB,YAAA+5L,EACzE,EAKMJ,EAAAA,mBAAP,SAA0BK,EAAkBD,GACxC,OAAO,IAAIJ,EAAgBD,GAAoC5jM,KACxD4jM,GAAoC15L,KAAI,0BAA0B+5L,EAAS,0BAA0BC,EAASpzM,MAAM,KAAK,GACnI,EAKM+yM,EAAkC,mCAAzC,SAA0CI,GACtC,OAAO,IAAIJ,EAAgBD,GAAoD5jM,KACxE4jM,GAAoD15L,KAA8C,0CAAA+5L,EAC5G,EAMMJ,EAA8B,+BAArC,SAAsCM,GAClC,OAAO,IAAIN,EAAgBD,GAA2C5jM,KAC/D4jM,GAA2C15L,KAAsB,kBAAAi6L,EAC3E,EAMMN,EAAAA,wBAAP,SAA+BO,EAAsBxD,GACjD,OAAO,IAAIiD,EAAgBD,GAAyC5jM,KAC7D4jM,GAAyC15L,KAAI,mBAAmBk6L,EAA2B,eAAAxD,EACrG,EAKMiD,EAAAA,yBAAP,WACI,OAAO,IAAIA,EAAgBD,GAA0C5jM,KACjE4jM,GAA0C15L,KACjD,EAMM25L,EAAwB,yBAA/B,SAAgCQ,GAC5B,OAAO,IAAIR,EAAgBD,GAA0C5jM,KAC9D4jM,GAA0C15L,KAAU,MAAAm6L,EAC9D,EAKMR,EAAAA,yBAAP,WACI,OAAO,IAAIA,EAAgBD,GAA0C5jM,KACjE4jM,GAA0C15L,KACjD,EAMM25L,EAAwB,yBAA/B,SAAgCS,GAC5B,OAAO,IAAIT,EAAgBD,GAA0C5jM,KAC9D4jM,GAA0C15L,KAAU,MAAAo6L,EAC9D,EAKMT,EAAAA,yCAAP,WACI,OAAO,IAAIA,EAAgBD,GAA8C5jM,KAClE4jM,GAA8C15L,KAAI,IAC5D,EAKM25L,EAAAA,2CAAP,WACI,OAAO,IAAIA,EAAgBD,GAAgD5jM,KACvE4jM,GAAgD15L,KACvD,EAKM25L,EAAAA,8CAAP,WACI,OAAO,IAAIA,EAAgBD,GAAmD5jM,KAC1E4jM,GAAmD15L,KAC1D,EAKM25L,EAAAA,oCAAP,WACI,OAAO,IAAIA,EAAgBD,GAAgD5jM,KAAM4jM,GAAgD15L,KACpI,EAMM25L,EAAgC,iCAAvC,SAAwCU,GACpC,OAAO,IAAIV,EAAgBD,GAA6C5jM,KAAS4jM,GAA6C15L,KAAqB,iBAAAq6L,EACtJ,EAMMV,EAAkC,mCAAzC,SAA0CU,GACtC,OAAO,IAAIV,EAAgBD,GAA6C5jM,KAAS4jM,GAA6C15L,KAAqB,iBAAAq6L,EACtJ,EAMMV,EAAyB,0BAAhC,SAAiCW,GAC7B,OAAO,IAAIX,EAAgBD,GAA2C5jM,KAAS4jM,GAA2C15L,KAAsB,kBAAAs6L,EACnJ,EAMMX,EAAAA,8BAAP,WACI,OAAO,IAAIA,EAAgBD,GAA+C5jM,KAAM,GAAG4jM,GAA+C15L,KACrI,EAKM25L,EAAAA,+BAAP,WACI,OAAO,IAAIA,EAAgBD,GAAkD5jM,KAAM,GAAG4jM,GAAkD15L,KAC3I,EAKM25L,EAAAA,6BAAP,WACI,OAAO,IAAIA,EAAgBD,GAAyC5jM,KAAM,GAAG4jM,GAAyC15L,KACzH,EAKM25L,EAAAA,6BAAP,WACI,OAAO,IAAIA,EAAgBD,GAA8C5jM,KAAM,GAAG4jM,GAA8C15L,KACnI,EAKM25L,EAAAA,oCAAP,WACI,OAAO,IAAIA,EAAgBD,GAAgD5jM,KAAM,GAAG4jM,GAAgD15L,KACvI,EAKM25L,EAAAA,iCAAP,WACI,OAAO,IAAIA,EAAgBD,GAA0C5jM,KAAM4jM,GAA0C15L,KACxH,EAKM25L,EAAAA,mCAAP,WACI,OAAO,IAAIA,EAAgBD,GAA+C5jM,KAAM4jM,GAA+C15L,KAClI,EAKM25L,EAAAA,0BAAP,WACI,OAAO,IAAIA,EAAgBD,GAAsC5jM,KAAM4jM,GAAsC15L,KAChH,EAKM25L,EAAAA,uBAAP,WACI,OAAO,IAAIA,EAAgBD,GAAwC5jM,KAAM,GAAG4jM,GAAwC15L,KACvH,EAMM25L,EAAyB,0BAAhC,SAAiCY,GAC7B,OAAO,IAAIZ,EAAgBD,GAAmC5jM,KAAM,GAAG4jM,GAAmC15L,KAAOu6L,EACpH,EAKMZ,EAAAA,4BAAP,WACI,OAAO,IAAIA,EAAgBD,GAAwC5jM,KAAM,GAAG4jM,GAAwC15L,KACvH,EAKM25L,EAAAA,iCAAP,WACI,OAAO,IAAIA,EAAgBD,GAA6C5jM,KAAM,GAAG4jM,GAA6C15L,KACjI,EAKM25L,EAAAA,oCAAP,WACI,OAAO,IAAIA,EAAgBD,GAAgD5jM,KAAM,GAAG4jM,GAAgD15L,KACvI,EAKM25L,EAAAA,4BAAP,WACI,OAAO,IAAIA,EAAgBD,GAAwC5jM,KAAM,GAAG4jM,GAAwC15L,KACvH,EAKM25L,EAAAA,6BAAP,WACI,OAAO,IAAIA,EAAgBD,GAA+C5jM,KAAM,GAAG4jM,GAA+C15L,KACrI,EAKM25L,EAAAA,2BAAP,WACI,OAAO,IAAIA,EAAgBD,GAA4C5jM,KAAM4jM,GAA4C15L,KAC5H,EAKM25L,EAAAA,8BAAP,WACI,OAAO,IAAIA,EAAgBD,GAA0C5jM,KAAM4jM,GAA0C15L,KACxH,EAKM25L,EAAAA,+BAAP,WACI,OAAO,IAAIA,EAAgBD,GAA2C5jM,KAAM4jM,GAA2C15L,KAC1H,EAKM25L,EAAAA,sCAAP,WACI,OAAO,IAAIA,EAAgBD,GAAqD5jM,KAAM4jM,GAAqD15L,KAC9I,EAEM25L,EAAAA,gCAAP,WACI,OAAO,IAAIA,EAAgBD,GAAiD5jM,KAAM4jM,GAAiD15L,KACtI,EAKM25L,EAAAA,8BAAP,WACI,OAAO,IAAIA,EAAgBD,GAA0C5jM,KAAM4jM,GAA0C15L,KACxH,EAKM25L,EAAAA,wBAAP,WACI,OAAO,IAAIA,EAAgBD,GAAoC5jM,KAAM4jM,GAAoC15L,KAC5G,EACJ25L,CAxUD,EAAqChD,IC9LrC,2BAwHC,CAAD,OAjHW6D,EAAe,gBAAtB,SAAuBC,GACnB,GAAID,EAAYjiL,QAAQkiL,GACpB,MAAMd,GAAgBe,4BAA4BD,GAEtD,IACM7sK,EADkB,uCACQjvB,KAAK87L,GACrC,IAAK7sK,GAAWA,EAAQ/mC,OAAS,EAC7B,MAAM8yM,GAAgBgB,wBAAwB,6BAA6B9/L,KAAKI,UAAUw/L,IAO9F,MALuC,CACnCtgL,OAAQyT,EAAQ,GAChBgtK,WAAYhtK,EAAQ,GACpBitK,OAAQjtK,EAAQ,GAGvB,EAOM4sK,EAAO,QAAd,SAAe55L,GACX,MAAuB,qBAARA,IAAwBA,GAAO,IAAMA,EAAI/Z,MAC3D,EAMM2zM,EAAU,WAAjB,SAAkBM,GACd,GAAIA,IAAWN,EAAYjiL,QAAQuiL,GAC/B,IACI,IAAMhkM,EAAM+D,KAAKC,MAAMggM,GACvB,OAAmC,IAA5BvkM,OAAOsC,KAAK/B,GAAKjQ,MACd,CAAZ,MAAOmU,IAAK,CAElB,OAAO,CACV,EAEMw/L,EAAAA,WAAP,SAAkB55L,EAAa/C,GAC3B,OAA+B,IAAxB+C,EAAI9R,QAAQ+O,EACtB,EAEM28L,EAAAA,SAAP,SAAgB55L,EAAa/C,GACzB,OAAQ+C,EAAI/Z,QAAUgX,EAAOhX,QAAY+Z,EAAI0yB,YAAYz1B,KAAa+C,EAAI/Z,OAASgX,EAAOhX,MAC7F,EAOM2zM,EAAmB,oBAA1B,SAA8Bv1L,GAC1B,IAAMnO,EAAU,CAAC,EACXtI,EAASyW,EAAMre,MAAM,KACrBunF,EAAS,SAACrrB,GAAc,OAAAhmD,mBAAmBgmD,EAAEpnD,QAAQ,MAAO,KAAK,EASvE,OARAlN,EAAOuB,SAAQ,SAACw0E,GACZ,GAAIA,EAAKxpE,OAAQ,CACP,MAAewpE,EAAK39E,MAAM,SAAU,GAAnCoJ,EAAG,KAAE7B,EAAgCiqG,EAAAA,GACxCpoG,GAAO7B,IACP2I,EAAIq3E,EAAOn+E,IAAQm+E,EAAOhgF,GAEjC,CACJ,IACM2I,CACV,EAOM0jM,EAAgB,iBAAvB,SAAwB37L,GACpB,OAAOA,EAAI2G,KAAI,SAAAqrC,GAAS,OAAAA,EAAM91C,MAAM,GACvC,EAMMy/L,EAA2B,4BAAlC,SAAmC37L,GAC/B,OAAOA,EAAIsD,QAAO,SAAA0uC,GACd,OAAQ2pJ,EAAYjiL,QAAQs4B,EAC/B,GACJ,EAMM2pJ,EAAe,gBAAtB,SAA0B55L,GACtB,IACI,OAAO/F,KAAKC,MAAM8F,EAGrB,CAFC,MAAO5F,IACL,OAAO,IACV,CACJ,EAOMw/L,EAAAA,aAAP,SAAoBp5L,EAAiBuqC,GAOjC,OAFsB,IAAI9uC,OAAOuE,EAAQ1F,QAAQ,MAAO,QAAQA,QAAQ,MAAO,SAASA,QAAQ,MAAO,QAE1FuB,KAAK0uC,EACrB,EACJ6uJ,CAAA,CAxHD,IFWA,SAAYhB,GACRA,EAAAA,EAAAA,MAAAA,GAAAA,QACAA,EAAAA,EAAAA,QAAAA,GAAAA,UACAA,EAAAA,EAAAA,KAAAA,GAAAA,OACAA,EAAAA,EAAAA,QAAAA,GAAAA,UACAA,EAAAA,EAAAA,MAAAA,GAAAA,OALJ,EAAYA,KAAAA,GAMX,KAYD,IGnCYuB,GHmCZ,cAoBI,WAAYC,EAA8BC,EAAsBC,GAdxD,KAAA3hL,MAAkBigL,GAAS2B,KAkB/B3oM,KAAK4oM,cAAgBJ,EAAcK,gBAHL,WAE7B,EAED7oM,KAAK8oM,kBAAoBN,EAAcM,oBAAqB,EAC5D9oM,KAAK+mB,MAA2C,kBAA5ByhL,EAAcO,SAAyBP,EAAcO,SAAW/B,GAAS2B,KAC7F3oM,KAAKskM,cAAgBkE,EAAclE,eAAiB7F,GAAUyB,aAE9DlgM,KAAKyoM,YAAcA,GAAehK,GAAUyB,aAC5ClgM,KAAK0oM,eAAiBA,GAAkBjK,GAAUyB,YACrD,CA8JL,OAzJW8I,EAAAA,UAAAA,MAAP,SAAaP,EAAqBC,EAAwBpE,GACtD,OAAO,IAAI0E,EAAO,CAACH,eAAgB7oM,KAAK4oM,cAAeE,kBAAmB9oM,KAAK8oM,kBAAmBC,SAAU/oM,KAAK+mB,MAAOu9K,cAAeA,GAAiBtkM,KAAKskM,eAAgBmE,EAAaC,EAC7L,EAKOM,EAAAA,UAAAA,WAAR,SAAmBC,EAAoBvkM,GACnC,KAAKA,EAAQqkM,SAAW/oM,KAAK+mB,QAAY/mB,KAAK8oM,mBAAqBpkM,EAAQwkM,aAA3E,CAGA,IAAMzlL,GAAY,IAAItwB,MAAOg2M,cAYvB70I,GARD0zI,GAAYjiL,QAAQrhB,EAAQ4/L,eAErB0D,GAAYjiL,QAAQ/lB,KAAKskM,eAGrB,IAAI7gL,EAAS,IAFb,IAAIA,EAAS,QAAQzjB,KAAKskM,cAAa,IAFvC,IAAI7gL,EAAS,QAAQ/e,EAAQ4/L,cAAa,KAOlC,MAAMtkM,KAAKyoM,YAAW,IAAIzoM,KAAK0oM,eAAoB,MAAA1B,GAAStiM,EAAQqkM,UAAS,MAAME,EAE3GjpM,KAAKopM,gBAAgB1kM,EAAQqkM,SAAUz0I,EAAK5vD,EAAQwkM,cAAe,EAflE,CAgBJ,EAKDF,EAAAA,UAAAA,gBAAAA,SAAgBjiL,EAAiBtmB,EAAiByoM,GAC1ClpM,KAAK4oM,eACL5oM,KAAK4oM,cAAc7hL,EAAOtmB,EAASyoM,EAE1C,EAKDF,EAAAA,UAAAA,MAAAA,SAAMvoM,EAAiB6jM,GACnBtkM,KAAKipM,WAAWxoM,EAAS,CACrBsoM,SAAU/B,GAASnzM,MACnBq1M,aAAa,EACb5E,cAAeA,GAAiB7F,GAAUyB,cAEjD,EAKD8I,EAAAA,UAAAA,SAAAA,SAASvoM,EAAiB6jM,GACtBtkM,KAAKipM,WAAWxoM,EAAS,CACrBsoM,SAAU/B,GAASnzM,MACnBq1M,aAAa,EACb5E,cAAeA,GAAiB7F,GAAUyB,cAEjD,EAKD8I,EAAAA,UAAAA,QAAAA,SAAQvoM,EAAiB6jM,GACrBtkM,KAAKipM,WAAWxoM,EAAS,CACrBsoM,SAAU/B,GAASqC,QACnBH,aAAa,EACb5E,cAAeA,GAAiB7F,GAAUyB,cAEjD,EAKD8I,EAAAA,UAAAA,WAAAA,SAAWvoM,EAAiB6jM,GACxBtkM,KAAKipM,WAAWxoM,EAAS,CACrBsoM,SAAU/B,GAASqC,QACnBH,aAAa,EACb5E,cAAeA,GAAiB7F,GAAUyB,cAEjD,EAKD8I,EAAAA,UAAAA,KAAAA,SAAKvoM,EAAiB6jM,GAClBtkM,KAAKipM,WAAWxoM,EAAS,CACrBsoM,SAAU/B,GAAS2B,KACnBO,aAAa,EACb5E,cAAeA,GAAiB7F,GAAUyB,cAEjD,EAKD8I,EAAAA,UAAAA,QAAAA,SAAQvoM,EAAiB6jM,GACrBtkM,KAAKipM,WAAWxoM,EAAS,CACrBsoM,SAAU/B,GAAS2B,KACnBO,aAAa,EACb5E,cAAeA,GAAiB7F,GAAUyB,cAEjD,EAKD8I,EAAAA,UAAAA,QAAAA,SAAQvoM,EAAiB6jM,GACrBtkM,KAAKipM,WAAWxoM,EAAS,CACrBsoM,SAAU/B,GAASsC,QACnBJ,aAAa,EACb5E,cAAeA,GAAiB7F,GAAUyB,cAEjD,EAKD8I,EAAAA,UAAAA,WAAAA,SAAWvoM,EAAiB6jM,GACxBtkM,KAAKipM,WAAWxoM,EAAS,CACrBsoM,SAAU/B,GAASsC,QACnBJ,aAAa,EACb5E,cAAeA,GAAiB7F,GAAUyB,cAEjD,EAKD8I,EAAAA,UAAAA,MAAAA,SAAMvoM,EAAiB6jM,GACnBtkM,KAAKipM,WAAWxoM,EAAS,CACrBsoM,SAAU/B,GAASuC,MACnBL,aAAa,EACb5E,cAAeA,GAAiB7F,GAAUyB,cAEjD,EAKD8I,EAAAA,UAAAA,SAAAA,SAASvoM,EAAiB6jM,GACtBtkM,KAAKipM,WAAWxoM,EAAS,CACrBsoM,SAAU/B,GAASuC,MACnBL,aAAa,EACb5E,cAAeA,GAAiB7F,GAAUyB,cAEjD,EAKD8I,EAAAA,UAAAA,oBAAAA,WACI,OAAOhpM,KAAK8oM,oBAAqB,CACpC,EACJE,CAAA,CA7LD,IGnCA,SAAYT,GACRA,EAAAA,iBAAAA,uBACAA,EAAAA,eAAAA,qBACAA,EAAAA,cAAAA,oBACAA,EAAAA,gBAAAA,sBACAA,EAAAA,YAAAA,kBACAA,EAAAA,cAAAA,oBACAA,EAAAA,cAAAA,oBACAA,EAAAA,oBAAAA,yBACAA,EAAAA,sBAAAA,2BACAA,EAAAA,sBAAAA,2BACAA,EAAAA,4BAAAA,oCACAA,EAAAA,iBAAAA,sBACAA,EAAAA,mBAAAA,wBACAA,EAAAA,mBAAAA,wBACAA,EAAAA,4BAAAA,+BACAA,EAAAA,8BAAAA,iCACAA,EAAAA,8BAAAA,iCACAA,EAAAA,sBAAAA,2BACAA,EAAAA,oBAAAA,yBACAA,EAAAA,aAAAA,mBACAA,EAAAA,aAAAA,mBACAA,EAAAA,eAAAA,qBACAA,EAAAA,eAAAA,qBACAA,EAAAA,WAAAA,gBAxBJ,EAAYA,KAAAA,GAAS,SCGTiB,iBCoBZ,aA0DC,CAAD,OAnDWC,EAAAA,8BAAP,SAAqChpM,EAAuBipM,GACxD,OAAQjpM,EAAQkpM,WACZ,KAAKpB,GAAAA,YACD,OAAOzE,GAAAA,MACX,KAAKyE,GAAAA,iBACD,OAAOzE,GAAAA,UACX,KAAKyE,GAAAA,oBACD,GAAI9nM,EAAQmpM,kBAAoB/F,GAAAA,UAA4BpjM,EAAQmpM,kBAAoB/F,GAAAA,MACpF,OAAOC,GAAAA,aAEX,MACJ,KAAKyE,GAAAA,sBACD,OAAOzE,GAAAA,eACX,KAAKyE,GAAAA,aACD,OAAOzE,GAAAA,OACX,KAAKyE,GAAAA,mBACL,KAAKA,GAAAA,mBACD,GAAImB,GAAiBA,IAAkB5F,GAAAA,UAEnC,MAEJ,OAAOA,GAAAA,KACX,KAAKyE,GAAAA,WACD,GAAImB,GAAiBA,IAAkB5F,GAAAA,OAEnC,MAEJ,OAAOA,GAAAA,KACX,KAAKyE,GAAAA,oBACD,GAAImB,GAAiBA,IAAkB5F,GAAAA,eAEnC,MAEJ,OAAOA,GAAAA,KACX,KAAKyE,GAAAA,cACL,KAAKA,GAAAA,cACL,KAAKA,GAAAA,sBACL,KAAKA,GAAAA,sBACD,GAAI9nM,EAAQmpM,kBAAoB/F,GAAAA,UAA4BpjM,EAAQmpM,kBAAoB/F,GAAAA,MAAuB,CAC3G,GAAI6F,GAAiBA,IAAkB5F,GAAAA,OAA2B4F,IAAkB5F,GAAAA,aAEhF,MAEJ,OAAOA,GAAAA,IACV,EAKT,OAAO,IACV,EACL,CAAC,IC/De,SAAA+F,GAAgBC,EAAuBxwI,GACnD,GAAI0uI,GAAYjiL,QAAQ+jL,GACpB,MAAM3C,GAAgB4C,6BAG1B,IACI,IAAMC,EAA4B1wI,EAAO2wI,aAAaH,GACtD,OAAOzhM,KAAKC,MAAM0hM,EAGrB,CAFC,MAAOxhM,IACL,MAAM2+L,GAAgB+C,8BAA+B1hM,GAAsB/H,QAC9E,CACJ,CAMK,SAAU0pM,GAAiCC,GAC7C,GAAIpC,GAAYjiL,QAAQqkL,GACpB,MAAMjD,GAAgB+C,8BAA8B,8BAExD,IAAMG,EAA4BD,EAAch2M,MAAMotM,GAAW8I,sBAAuB,GACxF,MAAO,CACH73H,IAAK43H,EAAgB,GACrBE,KAAMF,EAAgBh2M,OAAS,EAAIoqM,GAAUyB,aAAemK,EAAgB,GAEpF,EFzCA,SAAYb,GACRA,EAAAA,EAAAA,QAAAA,GAAAA,UACAA,EAAAA,EAAAA,KAAAA,GAAAA,MAFJ,EAAYA,KAAAA,GAGX,KGkCD,+BA0QC,CAAD,OAvPIgB,EAAAA,UAAAA,kBAAAA,WAEI,MADiC,CAACxqM,KAAKoqM,cAAepqM,KAAK8rF,aAC1CtiF,KAAKg4L,GAAWiJ,qBAAqBhtM,aACzD,EAKD+sM,EAAAA,UAAAA,mBAAAA,WACI,OAAOA,EAAcE,wBAAwB,CACzCN,cAAepqM,KAAKoqM,cACpBt+G,YAAa9rF,KAAK8rF,YAClB6+G,SAAU3qM,KAAK4qM,MACfjwM,SAAUqF,KAAKrF,SACfkwM,eAAgB7qM,KAAK6qM,gBAE5B,EAKDL,EAAAA,UAAAA,aAAAA,WACI,OAAQxqM,KAAK8qM,eACT,KAAKvJ,GAAiBwJ,kBAClB,OAAOpJ,GAAU3C,KACrB,KAAKuC,GAAiByJ,mBAClB,OAAOrJ,GAAUsJ,IACrB,KAAK1J,GAAiB2J,mBAClB,OAAOvJ,GAAUwJ,MACrB,KAAK5J,GAAiB6J,qBAClB,OAAOzJ,GAAU0J,QACrB,QACI,MAAMlE,GAAgBmE,mCAGjC,EAKDd,EAAAA,UAAAA,eAAAA,WACI,MAAO,CACHJ,cAAepqM,KAAKoqM,cACpBt+G,YAAa9rF,KAAK8rF,YAClB6+G,SAAU3qM,KAAK4qM,MACfjwM,SAAUqF,KAAKrF,SACfkwM,eAAgB7qM,KAAK6qM,eACrBzpM,KAAMpB,KAAKoB,KACXmqM,cAAevrM,KAAKurM,cACpBC,gBAAiBxrM,KAAKwrM,gBAE7B,EAMMhB,EAAuB,wBAA9B,SAA+BiB,GAO3B,MANmB,CACfA,EAAiBrB,cACjBqB,EAAiB3/G,aAAe2yG,GAAUyB,aAC1CuL,EAAiBd,UAAYlM,GAAUyB,cAGzB12L,KAAKg4L,GAAWiJ,qBAAqBhtM,aAC1D,EASM+sM,EAAAA,cAAP,SACIkB,EACAtB,EACAuB,EACAC,EACAC,EACAC,EACAhgH,EACA0/G,mBAEMO,EAAyB,IAAIvB,EAEnCuB,EAAQjB,cAAgBvJ,GAAiB2J,mBACzCa,EAAQL,WAAaA,EACrBK,EAAQ3B,cAAgBA,EACxB2B,EAAQP,gBAAkBA,EAE1B,IAAMzjM,EAAM+jF,GAAgB8/G,GAAaA,EAAUI,oBAEnD,IAAKjkM,EACD,MAAMo/L,GAAgB8E,qCAwB1B,OArBAF,EAAQjgH,YAAc/jF,EAEtBgkM,EAAQnB,OAAyB,QAAjB,EAAO,OAAPe,QAAO,IAAPA,OAAO,EAAPA,EAASO,cAAQtmG,IAAAA,OAAA,EAAAA,EAAAA,MAAO64F,GAAUyB,aAE9CyL,IACAI,EAAQR,cAAgBI,EAAQO,OAGhCH,EAAQlB,gBAAgC,QAAf,EAAO,OAAPc,QAAO,IAAPA,OAAO,EAAPA,EAASO,cAAMlmG,IAAAA,OAAA,EAAAA,EAAEmmG,OAAsB,QAAnB,EAAW,OAAPR,QAAO,IAAPA,OAAO,EAAPA,EAASO,cAAMrmC,IAAAA,OAAA,EAAAA,EAAE3vJ,MAAOuoL,GAAUyB,aAMnF6L,EAAQpxM,UAA0B,QAAf,EAAO,OAAPgxM,QAAA,IAAAA,OAAA,EAAAA,EAASO,cAAMx5E,IAAAA,OAAA,EAAAA,EAAE05E,uBAAsC,QAAf,EAAO,OAAPT,QAAA,IAAAA,OAAA,EAAAA,EAASO,cAAMv1I,IAAAA,OAAA,EAAAA,EAAE01I,QAAQV,EAAQO,OAAOG,OAAO,GAAI5N,GAAUyB,cACxH6L,EAAQ3qM,KAAwB,QAAjB,SAAAuqM,QAAA,IAAAA,OAAA,EAAAA,EAASO,cAAQI,IAAAA,OAAA,EAAAA,EAAAA,MAGpCP,EAAQF,mBAAqBA,EAC7BE,EAAQD,YAAcA,EAEfC,CACV,EAOMvB,EAAAA,qBAAP,SACIJ,EACAuB,EACAC,EACAC,EACAC,EACAhgH,eAEMigH,EAAyB,IAAIvB,EAEnCuB,EAAQjB,cAAiBc,GAAaA,EAAUd,gBAAkBtB,GAAc+C,KAAQhL,GAAiBwJ,kBAAoBxJ,GAAiB6J,qBAC9IW,EAAQ3B,cAAgBA,EAExB2B,EAAQnB,MAAQnM,GAAUyB,aAE1B,IAAMn4L,EAAM+jF,GAAe8/G,GAAaA,EAAUI,oBAElD,IAAKjkM,EACD,MAAMo/L,GAAgB8E,qCAsB1B,OAnBIN,IAEAI,EAAQlB,gBAAgC,QAAf,EAAO,OAAPc,QAAO,IAAPA,OAAO,EAAPA,EAASO,cAAMtmG,IAAAA,OAAA,EAAAA,EAAEumG,OAAsB,QAAnB,EAAW,OAAPR,QAAO,IAAPA,OAAO,EAAPA,EAASO,cAAMlmG,IAAAA,OAAA,EAAAA,EAAE9vF,MAAOuoL,GAAUyB,aAEnF6L,EAAQpxM,UAA4B,QAAjB,EAAO,OAAPgxM,QAAO,IAAPA,OAAO,EAAPA,EAASO,cAAQrmC,IAAAA,OAAA,EAAAA,EAAAA,MAAO44B,GAAUyB,aACrD6L,EAAQ3qM,MAAwB,QAAjB,EAAO,OAAPuqM,QAAO,IAAPA,OAAO,EAAPA,EAASO,cAAQx5E,IAAAA,OAAA,EAAAA,EAAAA,OAAQ+rE,GAAUyB,aAClD6L,EAAQR,cAAuB,OAAPI,QAAA,IAAAA,OAAA,EAAAA,EAASO,QAGrCH,EAAQjgH,YAAc/jF,EAEtBgkM,EAAQF,mBAAqBA,EAC7BE,EAAQD,YAAcA,EAOfC,CACV,EAOMvB,EAAqB,sBAA5B,SAA6BgC,EAA0BC,EAAyB/kH,EAAgBglH,EAAoBf,SAE1GgB,GAA2B,QAAf,EAAO,OAAPhB,QAAO,IAAPA,OAAO,EAAPA,EAASO,cAAMtmG,IAAAA,OAAA,EAAAA,EAAE1vF,KAAMy1L,EAAQO,OAAOh2L,IAAMuoL,GAAUyB,aAGxE,GAAIuM,IAAajD,GAAc+C,KAC3B,OAAOI,EAIX,GAAIH,EACA,IACI,IAAMd,EAAa7B,GAAgB2C,EAAkBE,GACrD,IAAK1E,GAAYjiL,QAAQ2lL,EAAWj5H,OAASu1H,GAAYjiL,QAAQ2lL,EAAWnB,MACxE,MAAO,GAAGmB,EAAWj5H,IAAM+uH,GAAW8I,sBAAwBoB,EAAWnB,IAEnE,CAAZ,MAAO/hM,IAAK,CAKlB,OADAk/E,EAAOklH,QAAQ,8BACRD,CACV,EAMMnC,EAAe,gBAAtB,SAAuBqC,GAEnB,QAAKA,IAKDA,EAAOr+L,eAAe,kBACtBq+L,EAAOr+L,eAAe,gBACtBq+L,EAAOr+L,eAAe,UACtBq+L,EAAOr+L,eAAe,mBACtBq+L,EAAOr+L,eAAe,aACtBq+L,EAAOr+L,eAAe,iBAE7B,EAQMg8L,EAAAA,mBAAP,SAA0BsC,EAA8BC,EAA8BC,GAClF,IAAKF,IAAaC,EACd,OAAO,EAGX,IAAIE,GAAc,EAClB,GAAID,EAAe,CACf,IAAME,EAAkBJ,EAASvB,eAAiB,CAAC,EAC7C4B,EAAkBJ,EAASxB,eAAiB,CAAC,EAGnD0B,EAAeC,EAAeE,MAAQD,EAAeC,KACpDF,EAAeG,QAAUF,EAAeE,KAC5C,CAED,OAAQP,EAAS1C,gBAAkB2C,EAAS3C,eACvC0C,EAASjC,iBAAmBkC,EAASlC,gBACrCiC,EAASnyM,WAAaoyM,EAASpyM,UAC/BmyM,EAASnC,WAAaoC,EAASpC,UAC/BmC,EAAShhH,cAAgBihH,EAASjhH,aAClCghH,EAAStB,kBAAoBuB,EAASvB,iBACvCyB,CACP,EACJzC,CAAA,CA1QD,GC1BM8C,GAAmC,CACrCvuM,SAAU4lM,GACVz3B,WAAY42B,GAAAA,KACZyJ,SAAU,GACV7lH,OAAQ,IAAIshH,GAAO,CAAC,IAGXwE,IAAc5qF,EAAAA,EAAAA,eACvB0qF,IAEwBE,GAAY1jC,SCnBxC,SAAgB2jC,GACZl0L,EACAxQ,GAEA,MAAwB,oBAAbwQ,EACAA,EAASxQ,GAEbwQ,CACV,CAgBD,SAAgBm0L,GAAsBC,EAAmCC,GACrE,GAAID,EAAOt5M,SAAWu5M,EAAOv5M,OACzB,OAAO,EAGX,IAAMw5M,EAAkB,GAAID,GAE5B,OAAOD,EAAOzuK,OAAO4uK,SAAAA,GACjB,IAAMC,EAAWF,EAAgB/qM,QACjC,SAAKgrM,IAAaC,KAIVD,EAAS1D,gBAAkB2D,EAAS3D,eACpC0D,EAASjD,iBAAmBkD,EAASlD,gBACrCiD,EAASnzM,WAAaozM,EAASpzM,SARpC,GAUV,CAED,SAAgBqzM,GAAwBC,EAA4BC,GAChE,OAAID,EAAY55M,OAAS,IAAM65M,EAAmB9D,eAAiB8D,EAAmBrD,gBAAkBqD,EAAmBvzM,WAC/FszM,EAAYt+L,QAAOw+L,SAAAA,GACvC,QAAID,EAAmBvzM,UAAYuzM,EAAmBvzM,SAAS8C,gBAAkB0wM,EAAWxzM,SAAS8C,mBAGjGywM,EAAmB9D,eAAiB8D,EAAmB9D,cAAc3sM,gBAAkB0wM,EAAW/D,cAAc3sM,kBAGhHywM,EAAmBrD,gBAAkBqD,EAAmBrD,eAAeptM,gBAAkB0wM,EAAWtD,eAAeptM,eAPnG,IAcD,IAEhB,IAEd,CCxED,IC2BK2wM,GD1BQ/gM,GAAU,SC0BvB,SAAK+gM,GACDA,EAAAA,mBAAAA,qBACAA,EAAAA,MAAAA,OAFJ,EAAKA,KAAAA,GAAsB,KAmB3B,IAAMC,GAAU,SAACC,EAA0B76L,GACvC,IAAQxV,EAAkBwV,EAAlBxV,KAAMyM,EAAY+I,EAAZ/I,QACV6jM,EAAgBD,EAAcphC,WAElC,OAAQjvK,GACJ,KAAKmwM,GAAuBI,mBACpBF,EAAcphC,aAAe42B,GAAAA,UAC7ByK,EAAgBzK,GAAAA,KAChBp5L,EAAQg9E,OAAOjsD,KAAK,gFAExB,MACJ,KAAK2yK,GAAuBK,MACxB,IAAMhuM,EAAUiK,EAAQjK,QAClBhF,EAASguM,GAAkBiF,8BAA8BjuM,EAAS6tM,EAAcphC,YAClFzxK,IACAiP,EAAQg9E,OAAOjsD,KAAf/wB,kBAAAA,OAAsCjK,EAAQkpM,UAA9Cj/L,wCAAAA,OAA8F4jM,EAAcphC,WAA5GxiK,QAAAA,OAA6HjP,IAC7H8yM,EAAgB9yM,GAEpB,MACJ,QACI,MAAM,IAAI5H,MAAJ,+BAAkCoK,IAGhD,IAAM0wM,EAAkBjkM,EAAQ3L,SAASmmM,iBACzC,OAAIqJ,IAAkBD,EAAcphC,YAC/BwgC,GAAsBiB,EAAiBL,EAAcf,UAO/CgB,IAAkBD,EAAcphC,WAEhC,OACAohC,GADP,IAEIphC,WAAYqhC,IAERb,GAAsBiB,EAAiBL,EAAcf,UAQtDe,EANA,OACAA,GADP,IAEIf,SAAUoB,IAfP,OACAL,GADP,IAEIphC,WAAYqhC,EACZhB,SAAUoB,GA9BtB,EAqDA,SAAgBC,GAAAA,OAAc7vM,EAAD8S,EAAC9S,SAAUwa,EAAX1H,EAAW0H,UACpCw+G,EAAAA,EAAAA,YAAU,WACNh5H,EAASwnM,yBAAyBK,GAAWhkF,MAAOv1G,GAD/C,GAEN,CAACtO,IAEJ,IAAM2oF,GAAS4hE,EAAAA,EAAAA,UAAQ,WACnB,OAAOvqJ,EAASonM,YAAY75G,MDzGhB,oBCyG2Bj/E,GADrB,GAEnB,CAACtO,IAEJ,MAA6BwqJ,EAAAA,EAAAA,YAAW8kD,QAAShxM,GAAW,WAExD,MAAO,CACH6vK,WAAY42B,GAAAA,QACZyJ,SAAUxuM,EAASmmM,iBAJY,IAAvC,GAAO7tL,EAAP,KAAcw3L,EAAd,MAQA92E,EAAAA,EAAAA,YAAU,WACN,IAAM+2E,EAAa/vM,EAAS6mM,kBAAkBnlM,SAAAA,GAC1CouM,EAAY,CACRnkM,QAAS,CACL3L,SAAAA,EACA2oF,OAAAA,EACAjnF,QAAAA,GAEJxC,KAAMmwM,GAAuBK,OAPlB,IA+BnB,OArBA/mH,EAAOklH,QAAPllH,qDAAAA,OAAoEonH,IAEpE/vM,EAAS6lM,aAAazkM,MAAK,WACvBpB,EAASumM,wBAAwB9vL,OAAM,WAAvC,IAGGu5L,SAAQ,WAKPF,EAAY,CACRnkM,QAAS,CACL3L,SAAAA,EACA2oF,OAAAA,GAEJzpF,KAAMmwM,GAAuBI,oBAbrC,GADJ,IAmBO,WAECM,IACApnH,EAAOklH,QAAPllH,0CAAAA,OAAyDonH,IACzD/vM,EAAS8mM,oBAAoBiJ,GAJrC,CAhCK,GAuCN,CAAC/vM,EAAU2oF,IAEd,IAAMs1G,EAA6B,CAC/Bj+L,SAAAA,EACAmuK,WAAY71J,EAAM61J,WAClBqgC,SAAUl2L,EAAMk2L,SAChB7lH,OAAAA,GAGJ,OACIk7B,EAAAA,cAAC4qF,GAAY3jC,SAAbjnD,CAAsBjnH,MAAOqhM,GACxBzjL,EAGZ,CC/JD,IAAay1L,GAAU,kBAAoB7lD,EAAAA,EAAAA,YAAWqkD,GAA/B,ECAvB,SAASyB,GAAgBhB,EAA4BiB,GACjD,OAAGA,IAAiBA,EAAav0M,UAAYu0M,EAAa9E,eAAiB8E,EAAarE,kBAC3EmD,GAAwBC,EAAaiB,GAG3CjB,EAAY55M,OAAS,CAC/B,CAMD,SAAgB86M,GAAmBD,GAC/B,IAAkBjB,EAAgBe,KAA1BzB,SAER,MAAgD9jD,EAAAA,EAAAA,WAAkB,kBAAMwlD,GAAgBhB,EAAaiB,EAAnC,IAAlE,GAAOE,EAAP,KAAyBC,EAAzB,KAMA,OAJAt3E,EAAAA,EAAAA,YAAU,WACNs3E,EAAoBJ,GAAgBhB,EAAaiB,GAD5C,GAEN,CAACjB,EAAaiB,IAEVE,CACV,CCfD,SAAgBE,GAAAA,OAAwB30M,EAAFkX,EAAElX,SAAUyvM,EAAZv4L,EAAYu4L,cAAeS,EAA3Bh5L,EAA2Bg5L,eAAgBtxL,EAA3C1H,EAA2C0H,SACvEza,EAAUkwM,KAUhB,OAFwBG,IAPsB7lD,EAAAA,EAAAA,UAAQ,WAClD,MAAO,CACH3uJ,SAAAA,EACAyvM,cAAAA,EACAS,eAAAA,EAJ6C,GAMlD,CAAClwM,EAAUyvM,EAAeS,MAGN/rM,EAAQouK,aAAe42B,GAAAA,QAEtClhF,EAAAA,cAACA,EAAAA,SAADA,KACK6qF,GAAsBl0L,EAAUza,IAItC,IACV,CCnBD,SAAgBywM,GAAAA,OAA0B50M,EAAFkX,EAAElX,SAAUyvM,EAAZv4L,EAAYu4L,cAAeS,EAA3Bh5L,EAA2Bg5L,eAAgBtxL,EAA3C1H,EAA2C0H,SACzEza,EAAUkwM,KAUhB,OAFwBG,IAPsB7lD,EAAAA,EAAAA,UAAQ,WAClD,MAAO,CACH3uJ,SAAAA,EACAyvM,cAAAA,EACAS,eAAAA,EAJ6C,GAMlD,CAAClwM,EAAUyvM,EAAeS,MAGL/rM,EAAQouK,aAAe42B,GAAAA,SAA6BhlM,EAAQouK,aAAe42B,GAAAA,eAO5F,KALClhF,EAAAA,cAACA,EAAAA,SAADA,KACK6qF,GAAsBl0L,EAAUza,GAKhD,CC1BD,SAAS0wM,GAAWzwM,EAAoCmvM,GACpD,OAAKA,IAAwBA,EAAmB9D,eAAkB8D,EAAmBrD,gBAAmBqD,EAAmBvzM,UAKpHqzM,GAAwBjvM,EAASmmM,iBAAkBgJ,GAH/CnvM,EAASunM,kBAIvB,CAMD,SAAgBmJ,GAAWvB,GACvB,MAAyCc,KAAjCjwM,EAAR,EAAQA,SAAUmuK,EAAlB,EAAkBA,WAAYxlF,EAA9B,EAA8BA,OAE9B,MAA8B+hE,EAAAA,EAAAA,WAA2B,kBAAM+lD,GAAWzwM,EAAUmvM,EAA3B,IAAzD,GAAOnC,EAAP,KAAgB2D,EAAhB,KAcA,OAZA33E,EAAAA,EAAAA,YAAU,WACN23E,GAAYC,SAAAA,GACR,IAAMC,EAAcJ,GAAWzwM,EAAUmvM,GACzC,OAAK1D,GAAcqF,mBAAmBF,EAAgBC,GAAa,GAK5DD,GAJHjoH,EAAOjsD,KAAK,iCACLm0K,EAJL,GADL,GAUN,CAAC1iC,EAAYghC,EAAoBnvM,EAAU2oF,IAEvCqkH,CACV,CCpCD,SAAS+D,GAAapzL,GAElB,YAAYrf,GAALqf,EAAiB,GAAKA,CAChC,CAEM,OAAMqzL,GAAc,CACvBz3I,MAAO,CACH03I,aAAcF,GAAa/oM,uBAC3BkpM,eAAgBH,GAAa/oM,uBAC7BmpM,YAAaJ,GAAa/oM,uBAE9BopM,YAAa,CACTH,aAAc,CACVpE,UAAWkE,GAAa/oM,oFAE5BkpM,eAAgB,CACZrE,UAAWkE,GAAa/oM,oFAE5BmpM,YAAa,CACTtE,UAAWkE,GAAa/oM,oFAGhCqpM,gBAAiBN,GAAa/oM,iCASrBspM,GAAa,CACtB31M,KAAM,CACF41M,SAAUR,GAAa/oM,wCACvB6kM,UAAWmE,GAAYI,YAAYH,aAAapE,UAChD2E,iBAAkB,CAACR,GAAYK,iBAC/BI,YAAa,IACbC,sBAAuB,IACvBC,2BAA2B,GAE/BxiM,MAAO,CACHyiM,cAAe,iBACfC,wBAAwB,IA4CnBC,IAVIf,GAAa/oM,6DAUC,CAC3B+/L,OAAQ,CAACgJ,GAAa/oM,gECzFb+pM,GAAe,WACxB,IAAQ/xM,EAAaiwM,KAAbjwM,SAMR,OAAO,mBAAQia,UAAU,4CAA4CkoF,QAJjD,WAChBniG,EAASymM,cAAcqL,IAAiBr7L,OAAM,SAAChN,GAC9C,GACJ,EACM,oBACV,ECVYuoM,GAAgB,WACzB,IAAQhyM,EAAaiwM,KAAbjwM,SASR,OAAO,eAAGia,UAAU,iBAAiBkoF,QAPhB,WACjB8K,eAAe9rE,QACfnhC,EAAS+vG,QAIZ,EACM,WAAqD,cAAG91F,UAAU,gDAAlE,cACV,ECNY45H,GAAO,WAEhB,OACI,iBAAK55H,UAAU,kBAAf,WACI,SAACu2L,GAAD,WACI,SAAC3R,EAAD,WACI,SAACkT,GAAD,SAGR,SAACxB,GAAD,WACI,SAAC,GAAD,WACI,SAAC,GAAD,CAAaljK,OAAO,cAAGpzB,UAAU,qBAAjC,UACI,SAAC4kL,EAAD,CAAS5kL,UAAU,QAAnB,UACI,SAAC+3L,GAAD,cAO3B,+0BCVD,SAASC,GAAUC,EAAWxwM,GAC5B,IAAKwwM,EAAM,MAAM,IAAIp9M,MAAM4M,EAC5B,KAgDKywM,IAAoBtuF,EAAAA,EAAAA,eAA6C,UAWjEuuF,IAAkBvuF,EAAAA,EAAAA,eAA2C,UAW7DwuF,IAAexuF,EAAAA,EAAAA,eAAwC,CAC3DyuF,OAAQ,KACRj2K,QAAS,KAoEJ,SAASk2K,GAAT,GAA+D,IAA3C3nK,EAA2C,EAA3CA,GAAIzgC,EAAuC,EAAvCA,QAASmO,EAA8B,EAA9BA,MAEpCk6L,MADF,IAAU,GAcV,IAAIC,EAAWC,KAKf,OAJA7uF,EAAAA,EAAAA,YAAgB,WACd4uF,EAAS7nK,EAAI,CAAEzgC,QAAAA,EAASmO,MAAAA,GAD1B,IAIO,IACR,CAWM,SAASq6L,GAAOliM,GACrB,OAmYK,SAAmB1Q,GACxB,IAAIuyM,GAASzuF,EAAAA,EAAAA,YAAiBwuF,IAAcC,OAC5C,GAAIA,EACF,OACEM,EAAAA,EAAAA,eAACC,GAAc/nC,SAAf8nC,CAAwBh2M,MAAOmD,GAAUuyM,GAG7C,OAAOA,CACR,CA3YQQ,CAAUriM,EAAM1Q,QACxB,CAiCM,SAASgzM,GACdlwC,GAEA,IAAU,EAKX,CAoBM,SAASmwC,GAAT,GAOoC,QANzCC,SAAUC,OAM+B,MANhB,IAMgB,MALzC14L,SAAAA,OAKyC,MAL9B,KAK8B,EAJ/B24L,EAI+B,EAJzCtmM,SAIyC,IAHzCumM,eAAAA,OAGyC,MAHxBC,GAAAA,IAGwB,EAFzCvnM,EAEyC,EAFzCA,UAEyC,IADzCwnM,OAAQC,OACiC,SAEtCf,MADH,IAAU,GAMV,IAAIS,EAAWO,GAAkBN,GAC7BO,GAAoB5vF,EAAAA,EAAAA,UACtB,iBAAO,CAAEovF,SAAAA,EAAUnnM,UAAAA,EAAWwnM,OAAQC,EAAtC,GACA,CAACN,EAAUnnM,EAAWynM,IAGI,kBAAjBJ,IACTA,EAAeO,GAAUP,IAG3B,MAMIA,EANJ,IACEzmM,SAAAA,OADF,MACa,IADb,MAEEJ,OAAAA,OAFF,MAEW,GAFX,MAGEC,KAAAA,OAHF,MAGS,GAHT,MAIE+L,MAAAA,OAJF,MAIU,KAJV,MAKE7Z,IAAAA,OALF,MAKQ,UALR,EAQIoO,GAAWg3G,EAAAA,EAAAA,UAAc,WAC3B,IAAI8vF,EAAmBC,GAAclnM,EAAUumM,GAE/C,OAAwB,MAApBU,EACK,KAGF,CACLjnM,SAAUinM,EACVrnM,OAAAA,EACAC,KAAAA,EACA+L,MAAAA,EACA7Z,IAAAA,EAZW,GAcZ,CAACw0M,EAAUvmM,EAAUJ,EAAQC,EAAM+L,EAAO7Z,IAS7C,OAAgB,MAAZoO,EACK,MAIP+lM,EAAAA,EAAAA,eAACT,GAAkBrnC,SAAnB8nC,CAA4Bh2M,MAAO62M,IACjCb,EAAAA,EAAAA,eAACR,GAAgBtnC,SAAjB8nC,CACEp4L,SAAUA,EACV5d,MAAO,CAAEiQ,SAAAA,EAAUumM,eAAAA,KAI1B,CAaM,SAASS,GAAT,GAGoC,IAFzCr5L,EAEyC,EAFzCA,SACA3N,EACyC,EADzCA,SAEA,OAsSK,SACL6Z,EACAotL,GAGEtB,MADF,IAAU,GAOV,IAAeuB,GAAkBlwF,EAAAA,EAAAA,YAAiBwuF,IAA5Ch2K,QACF23K,EAAaD,EAAcA,EAAcz+M,OAAS,GAClD2+M,EAAeD,EAAaA,EAAW/2M,OAAS,CAAC,EAEjDi3M,GADiBF,GAAaA,EAAWtnM,SACpBsnM,EAAaA,EAAWG,aAAe,KAC9CH,GAAcA,EAAWziK,MAEvC,EAmCJ,IAEI1kC,EAFAunM,EAAsBC,KAG1B,GAAIP,EAAa,OACXQ,EACqB,kBAAhBR,EAA2BJ,GAAUI,GAAeA,EAGpC,MAAvBI,IAAA,OAAAA,EACEI,EAAkB5nM,eADpB,EACE6nM,EAA4BxuH,WAAWmuH,KAF3C,IAAU,GASVrnM,EAAWynM,CAbb,MAeEznM,EAAWunM,EAGb,IAAI1nM,EAAWG,EAASH,UAAY,IAChC8nM,EACqB,MAAvBN,EACIxnM,EACAA,EAAStT,MAAM86M,EAAmB5+M,SAAW,IAC/C+mC,EAsJC,SACL3V,EACAotL,EACAb,QACqB,IADrBA,IAAAA,EAAW,KAEX,IAGIvmM,EAAWknM,IAFU,kBAAhBE,EAA2BJ,GAAUI,GAAeA,GAEvBpnM,UAAY,IAAKumM,GAEvD,GAAgB,MAAZvmM,EACF,OAAO,KAGT,IAAI+nM,EAAWC,GAAchuL,IA6E/B,SAA2B+tL,GACzBA,EAASjvL,MAAK,SAACrV,EAAGC,GAAJ,OACZD,EAAEwkM,QAAUvkM,EAAEukM,MACVvkM,EAAEukM,MAAQxkM,EAAEwkM,MAyCpB,SAAwBxkM,EAAaC,GACnC,IAAIwkM,EACFzkM,EAAE7a,SAAW8a,EAAE9a,QAAU6a,EAAE/W,MAAM,GAAI,GAAG+mC,OAAM,SAACruB,EAAGxQ,GAAJ,OAAUwQ,IAAM1B,EAAE9O,EAAlB,IAEhD,OAAOszM,EAKHzkM,EAAEA,EAAE7a,OAAS,GAAK8a,EAAEA,EAAE9a,OAAS,GAG/B,CACL,CArDOu/M,CACE1kM,EAAE2kM,WAAW7gM,KAAI+uB,SAAAA,GAAI,OAAIA,EAAK+xK,aAAT,IACrB3kM,EAAE0kM,WAAW7gM,KAAI+uB,SAAAA,GAAI,OAAIA,EAAK+xK,aAAT,IALf,GAQf,CArFCC,CAAkBP,GAGlB,IADA,IAAIp4K,EAAU,KACL/6B,EAAI,EAAc,MAAX+6B,GAAmB/6B,EAAImzM,EAASn/M,SAAUgM,EACxD+6B,EAAU44K,GAAiBR,EAASnzM,GAAIoL,GAG1C,OAAO2vB,CACR,CA7Ke64K,CAAYxuL,EAAQ,CAAEha,SAAU8nM,IAE1C,EAcJ,OAAOW,GACL94K,GACEA,EAAQpoB,KAAI5I,SAAAA,GAAK,OACfrG,OAAOQ,OAAO,CAAC,EAAG6F,EAAO,CACvBpO,OAAQ+H,OAAOQ,OAAO,CAAC,EAAGyuM,EAAc5oM,EAAMpO,QAC9CyP,SAAU0oM,GAAU,CAAClB,EAAoB7oM,EAAMqB,WAC/CynM,aACyB,MAAvB9oM,EAAM8oM,aACFD,EACAkB,GAAU,CAAClB,EAAoB7oM,EAAM8oM,gBAP9B,IAUnBJ,EAEH,CAnZQsB,CAAUC,GAAyB96L,GAAW3N,EACtD,CAYM,SAAS0oM,GAAQ3qK,GAEpB4nK,MADF,IAAU,GAOV,OAA8B3uF,EAAAA,EAAAA,YAAiBsuF,IAAzCc,EAAN,EAAMA,SAAUnnM,EAAhB,EAAgBA,UAChB,EAAiC0pM,GAAgB5qK,GAA3Cr+B,EAAN,EAAMA,KAAMG,EAAZ,EAAYA,SAAUJ,EAAtB,EAAsBA,OAElBmpM,EAAiB/oM,EACrB,GAAiB,MAAbumM,EAAkB,CACpB,IAAIyC,EAm9BR,SAAuB9qK,GAErB,MAAc,KAAPA,GAAuC,KAAzBA,EAAYl+B,SAC7B,IACc,kBAAPk+B,EACP8oK,GAAU9oK,GAAIl+B,SACdk+B,EAAGl+B,QACR,CA19BoBipM,CAAc/qK,GAC3BgrK,EAA8B,MAAdF,GAAsBA,EAAW3nM,SAAS,KAC9D0nM,EACe,MAAb/oM,EACIumM,GAAY2C,EAAgB,IAAM,IAClCR,GAAU,CAACnC,EAAUvmM,GAC5B,CAED,OAAOZ,EAAU+pM,WAAW,CAAEnpM,SAAU+oM,EAAgBnpM,OAAAA,EAAQC,KAAAA,GACjE,CAOM,SAASimM,KACd,OAA4C,OAArC3uF,EAAAA,EAAAA,YAAiBuuF,GACzB,CAYM,SAASiC,KAQd,OANE7B,MADF,IAAU,IAOH3uF,EAAAA,EAAAA,YAAiBuuF,IAAiBvlM,QAC1C,CAsGM,SAAS6lM,KAEZF,MADF,IAAU,GAOV,OAA8B3uF,EAAAA,EAAAA,YAAiBsuF,IAAzCc,EAAN,EAAMA,SAAUnnM,EAAhB,EAAgBA,UACVuwB,GAAYwnF,EAAAA,EAAAA,YAAiBwuF,IAA7Bh2K,QACUy5K,EAAqBzB,KAA/B3nM,SAEFqpM,EAAqBzsM,KAAKI,UAC5B2yB,EAAQpoB,KAAI5I,SAAAA,GAAK,OAAIA,EAAM8oM,YAAV,KAGf6B,GAAYnyF,EAAAA,EAAAA,SAAa,IAC7BA,EAAAA,EAAAA,YAAgB,WACdmyF,EAAU3lL,SAAU,CADtB,IAIA,IAAIoiL,GAA6B5uF,EAAAA,EAAAA,cAC/B,SAACj5E,EAAiBjlC,GAOhB,QAPkD,IAAlCA,IAAAA,EAA2B,CAAC,GAOvCqwM,EAAU3lL,QAEf,GAAkB,kBAAPua,EAAX,CAKA,IAAI9/B,EAAOmrM,GACTrrK,EACAthC,KAAKC,MAAMwsM,GACXD,GAGe,MAAb7C,IACFnoM,EAAK4B,SAAW0oM,GAAU,CAACnC,EAAUnoM,EAAK4B,aAGzC/G,EAAQwE,QAAU2B,EAAU3B,QAAU2B,EAAUhK,MACjDgJ,EACAnF,EAAQ2S,MAdT,MAFCxM,EAAUoqM,GAAGtrK,EAXc,GA8B/B,CAACqoK,EAAUnnM,EAAWiqM,EAAoBD,IAG5C,OAAOrD,CACR,CAED,IAAMI,IAAgBhvF,EAAAA,EAAAA,eAA6B,MAgD5C,SAAS2xF,GAAgB5qK,GAC9B,IAAMvO,GAAYwnF,EAAAA,EAAAA,YAAiBwuF,IAA7Bh2K,QACUy5K,EAAqBzB,KAA/B3nM,SAEFqpM,EAAqBzsM,KAAKI,UAC5B2yB,EAAQpoB,KAAI5I,SAAAA,GAAK,OAAIA,EAAM8oM,YAAV,KAGnB,OAAOtwF,EAAAA,EAAAA,UACL,kBAAMoyF,GAAUrrK,EAAIthC,KAAKC,MAAMwsM,GAAqBD,EAApD,GACA,CAAClrK,EAAImrK,EAAoBD,GAE5B,CAoIM,SAASR,GACd96L,GAEA,IAAIkM,EAAwB,GAuC5B,OArCAm9F,EAAAA,SAAAA,QAAuBrpG,GAAUL,SAAAA,GAC/B,IAAK0pG,EAAAA,EAAAA,gBAAqB1pG,GAM1B,GAAIA,EAAQjb,OAAS2kH,EAAAA,SAArB,CAUE1pG,EAAQjb,OAAS6zM,IADnB,IAAU,GAOV,IAAIxhK,EAAqB,CACvB4kK,cAAeh8L,EAAQ1J,MAAM0lM,cAC7Bh8L,QAASA,EAAQ1J,MAAM0J,QACvBpY,MAAOoY,EAAQ1J,MAAM1O,MACrB+I,KAAMqP,EAAQ1J,MAAM3F,MAGlBqP,EAAQ1J,MAAM+J,WAChB+2B,EAAM/2B,SAAW86L,GAAyBn7L,EAAQ1J,MAAM+J,WAG1DkM,EAAO5kB,KAAKyvC,EApBX,MALC7qB,EAAO5kB,KAAKgC,MACV4iB,EACA4uL,GAAyBn7L,EAAQ1J,MAAM+J,UAX7C,IAqCOkM,CACR,CAsGD,SAASguL,GACPhuL,EACA+tL,EACA2B,EACAC,GA8CA,YA7Ce,IAHf5B,IAAAA,EAA0B,SAGX,IAFf2B,IAAAA,EAA2B,SAEZ,IADfC,IAAAA,EAAa,IAEb3vL,EAAOloB,SAAQ,SAAC+yC,EAAOxvC,GACrB,IAAIihC,EAAkB,CACpBc,aAAcyN,EAAMzmC,MAAQ,GAC5BqrM,eAAuC,IAAxB5kK,EAAM4kK,cACrBpB,cAAehzM,EACfwvC,MAAAA,GAGEvO,EAAKc,aAAaiiD,WAAW,OAE7B/iD,EAAKc,aAAaiiD,WAAWswH,IAD/B,IAAU,GAOVrzK,EAAKc,aAAed,EAAKc,aAAa1qC,MAAMi9M,EAAW/gN,SAGzD,IAAIwV,EAAOsqM,GAAU,CAACiB,EAAYrzK,EAAKc,eACnCgxK,EAAasB,EAAYrhN,OAAOiuC,GAKhCuO,EAAM/2B,UAAY+2B,EAAM/2B,SAASllB,OAAS,KAE1B,IAAhBi8C,EAAMxvC,OADR,IAAU,GAMV2yM,GAAcnjK,EAAM/2B,SAAUi6L,EAAUK,EAAYhqM,KAKpC,MAAdymC,EAAMzmC,MAAiBymC,EAAMxvC,QAIjC0yM,EAAS3yM,KAAK,CAAEgJ,KAAAA,EAAM6pM,MAAO2B,GAAaxrM,EAAMymC,EAAMxvC,OAAQ+yM,WAAAA,GAzChE,IA4COL,CACR,CAaD,IAAM8B,GAAU,SAMVC,GAAWjlJ,SAAAA,GAAD,MAAqB,MAANA,CAAf,EAEhB,SAAS+kJ,GAAaxrM,EAAc/I,GAClC,IAAI00M,EAAW3rM,EAAKzV,MAAM,KACtBqhN,EAAeD,EAASnhN,OAS5B,OARImhN,EAASzgM,KAAKwgM,MAChBE,IAPiB,GAUf30M,IACF20M,GAdoB,GAiBfD,EACJ7lM,QAAO2gD,SAAAA,GAAC,OAAKilJ,GAAQjlJ,EAAb,IACRnhC,QACC,SAACukL,EAAOgC,GAAR,OACEhC,GACC4B,GAAQ7qM,KAAKirM,GAvBM,EAyBJ,KAAZA,EAvBc,EACC,GAkBrB,GAOAD,EAEL,CAiBD,SAASzB,GACP2B,EACAlqM,GAOA,IALA,IAAMooM,EAAe8B,EAAf9B,WAEF+B,EAAgB,CAAC,EACjBC,EAAkB,IAClBz6K,EAAwB,GACnB/6B,EAAI,EAAGA,EAAIwzM,EAAWx/M,SAAUgM,EAAG,CAC1C,IAAI0hC,EAAO8xK,EAAWxzM,GAClBopC,EAAMppC,IAAMwzM,EAAWx/M,OAAS,EAChCk/M,EACkB,MAApBsC,EACIpqM,EACAA,EAAStT,MAAM09M,EAAgBxhN,SAAW,IAC5C+V,EAAQ0rM,GACV,CAAEjsM,KAAMk4B,EAAKc,aAAcqyK,cAAenzK,EAAKmzK,cAAezrK,IAAAA,GAC9D8pK,GAGF,IAAKnpM,EAAO,OAAO,KAEnBrG,OAAOQ,OAAOqxM,EAAexrM,EAAMpO,QAEnC,IAAIs0C,EAAQvO,EAAKuO,MAEjBlV,EAAQv6B,KAAK,CACX7E,OAAQ45M,EACRnqM,SAAU0oM,GAAU,CAAC0B,EAAiBzrM,EAAMqB,WAC5CynM,aAAciB,GAAU,CAAC0B,EAAiBzrM,EAAM8oM,eAChD5iK,MAAAA,IAGyB,MAAvBlmC,EAAM8oM,eACR2C,EAAkB1B,GAAU,CAAC0B,EAAiBzrM,EAAM8oM,eAEvD,CAED,OAAO93K,CACR,CAWD,SAAS84K,GACP94K,EACA03K,GAEA,YAD2B,IAD3BA,IAAAA,EAA8B,IAEf,MAAX13K,EAAwB,KAErBA,EAAQ26K,aAAY,SAAC1E,EAAQjnM,EAAOtJ,GACzC,OACE6wM,EAAAA,EAAAA,eAACP,GAAavnC,SAAd8nC,CACEp4L,cAC0Blc,IAAxB+M,EAAMkmC,MAAMp3B,QAAwB9O,EAAMkmC,MAAMp3B,SAAUy4L,EAAAA,EAAAA,eAACD,GAADC,MAE5Dh2M,MAAO,CACL01M,OAAAA,EACAj2K,QAAS03K,EAAch/M,OAAOsnC,EAAQjjC,MAAM,EAAG2I,EAAQ,MARxD,GAYJ,KACJ,CAuDM,SAASg1M,GAIdlnM,EACAnD,GAEuB,kBAAZmD,IACTA,EAAU,CAAE/E,KAAM+E,EAASsmM,eAAe,EAAOzrK,KAAK,IAGxD,MAwCF,SACE5/B,EACAqrM,EACAzrK,QACoB,IAFpByrK,IAAAA,GAAgB,QAEI,IADpBzrK,IAAAA,GAAM,GAUN,IAAIusK,EAAuB,GACvBC,EACF,IACApsM,EACGX,QAAQ,UAAW,IACnBA,QAAQ,OAAQ,KAChBA,QAAQ,sBAAuB,QAC/BA,QAAQ,WAAW,SAACkoD,EAAW8kJ,GAE9B,OADAF,EAAWn1M,KAAKq1M,GACT,WANX,IASErsM,EAAKiD,SAAS,MAChBkpM,EAAWn1M,KAAK,KAChBo1M,GACW,MAATpsM,GAAyB,OAATA,EACZ,QACA,qBAENosM,GAAgBxsK,EACZ,QAIA,gBAKN,MAAO,CAFO,IAAIp/B,OAAO4rM,EAAcf,OAAgB73M,EAAY,KAElD24M,EAClB,CAnF6BG,CAC1BvnM,EAAQ/E,KACR+E,EAAQsmM,cACRtmM,EAAQ66B,KAHV,UAAK2sK,EAAL,KAAcJ,EAAd,KAMI5rM,EAAQqB,EAASrB,MAAMgsM,GAC3B,IAAKhsM,EAAO,OAAO,KAEnB,IAAIyrM,EAAkBzrM,EAAM,GACxB8oM,EAAe2C,EAAgB3sM,QAAQ,UAAW,MAClDmtM,EAAgBjsM,EAAMjS,MAAM,GAqBhC,MAAO,CACL6D,OArBmBg6M,EAAW7mL,QAC9B,SAACk7I,EAAM6rC,EAAWp1M,GAGhB,GAAkB,MAAdo1M,EAAmB,CACrB,IAAII,EAAaD,EAAcv1M,IAAU,GACzCoyM,EAAe2C,EACZ19M,MAAM,EAAG09M,EAAgBxhN,OAASiiN,EAAWjiN,QAC7C6U,QAAQ,UAAW,KACvB,CAMD,OAJAmhK,EAAK6rC,GA8DX,SAAkCv6M,EAAeu6M,GAC/C,IACE,OAAO5rM,mBAAmB3O,EAU3B,CATC,MAAOuH,GAQP,OAAOvH,CACR,CACF,CA3EuB46M,CAChBF,EAAcv1M,IAAU,IAGnBupK,CAfU,GAiBnB,CAAC,GAKD5+J,SAAUoqM,EACV3C,aAAAA,EACAtkM,QAAAA,EAEH,CAuGD,SAASomM,GACPwB,EACAC,EACA5B,GAEA,IAUI3wM,EAVAylC,EAAsB,kBAAV6sK,EAAqB/D,GAAU+D,GAASA,EACpD/B,EAAuB,KAAV+B,GAAgC,KAAhB7sK,EAAGl+B,SAAkB,IAAMk+B,EAAGl+B,SAU/D,GAAkB,MAAdgpM,EACFvwM,EAAO2wM,MACF,CACL,IAAI6B,EAAqBD,EAAepiN,OAAS,EAEjD,GAAIogN,EAAW3vH,WAAW,MAAO,CAM/B,IALA,IAAI6xH,EAAalC,EAAWrgN,MAAM,KAKT,OAAlBuiN,EAAW,IAChBA,EAAW7zM,QACX4zM,GAAsB,EAGxB/sK,EAAGl+B,SAAWkrM,EAAWntM,KAAK,IAd3B,CAmBLtF,EAAOwyM,GAAsB,EAAID,EAAeC,GAAsB,GACvE,CAED,IAAI7sM,EA5EC,SAAqB8/B,EAAQitK,QAA0B,IAA1BA,IAAAA,EAAe,KACjD,MAIkB,kBAAPjtK,EAAkB8oK,GAAU9oK,GAAMA,EAHjC8qK,EADZ,EACEhpM,SADF,IAEEJ,OAAAA,OAFF,MAEW,GAFX,MAGEC,KAAAA,OAHF,MAGS,GAHT,EAMIG,EAAWgpM,EACXA,EAAW3vH,WAAW,KACpB2vH,EAWR,SAAyB5xK,EAAsB+zK,GAC7C,IAAIpB,EAAWoB,EAAa1tM,QAAQ,OAAQ,IAAI9U,MAAM,KAYtD,OAXuByuC,EAAazuC,MAAM,KAEzBmJ,SAAQm4M,SAAAA,GACP,OAAZA,EAEEF,EAASnhN,OAAS,GAAGmhN,EAAStoM,MACb,MAAZwoM,GACTF,EAAS30M,KAAK60M,EALlB,IASOF,EAASnhN,OAAS,EAAImhN,EAAShsM,KAAK,KAAO,GACnD,CAxBOqtM,CAAgBpC,EAAYmC,GAC9BA,EAEJ,MAAO,CACLnrM,SAAAA,EACAJ,OAAQyrM,GAAgBzrM,GACxBC,KAAMyrM,GAAczrM,GAEvB,CA0DY0rM,CAAYrtK,EAAIzlC,GAY3B,OAREuwM,GACe,MAAfA,GACAA,EAAW3nM,SAAS,OACnBjD,EAAK4B,SAASqB,SAAS,OAExBjD,EAAK4B,UAAY,KAGZ5B,CACR,CAWD,SAAS8oM,GAAclnM,EAAkBumM,GACvC,GAAiB,MAAbA,EAAkB,OAAOvmM,EAE7B,IAAKA,EAAShO,cAAcqnF,WAAWktH,EAASv0M,eAC9C,OAAO,KAGT,IAAIw5M,EAAWxrM,EAASC,OAAOsmM,EAAS39M,QACxC,OAAI4iN,GAAyB,MAAbA,EAEP,KAGFxrM,EAAStT,MAAM65M,EAAS39M,SAAW,GAC3C,CAED,IAAM8/M,GAAa7pI,SAAAA,GAAD,OAChBA,EAAM9gE,KAAK,KAAKN,QAAQ,SAAU,IADlB,EAGZqpM,GAAqB9mM,SAAAA,GAAD,OACxBA,EAASvC,QAAQ,OAAQ,IAAIA,QAAQ,OAAQ,IADrB,EAGpB4tM,GAAmBzrM,SAAAA,GAAD,OACrBA,GAAqB,MAAXA,EAEPA,EAAOy5E,WAAW,KAClBz5E,EACA,IAAMA,EAHN,EAFkB,EAOlB0rM,GAAiBzrM,SAAAA,GAAD,OACnBA,GAAiB,MAATA,EAAoBA,EAAKw5E,WAAW,KAAOx5E,EAAO,IAAMA,EAAzC,EADJ,gaC/tCf,SAAS4rM,GAAT,GAIgB,IAHrBlF,EAGqB,EAHrBA,SACAz4L,EAEqB,EAFrBA,SACA5N,EACqB,EADrBA,OAEIwrM,GAAav0F,EAAAA,EAAAA,UACS,MAAtBu0F,EAAW/nL,UACb+nL,EAAW/nL,0kDAAUgoL,CAAqB,CAAEzrM,OAAAA,KAG9C,IAAIm7C,EAAUqwJ,EAAW/nL,QACzB,MAAwBwzF,EAAAA,EAAAA,UAAe,CACrCnvG,OAAQqzC,EAAQrzC,OAChB7H,SAAUk7C,EAAQl7C,WAFpB,GAAKyL,EAAL,KAAYw2D,EAAZ,KAOA,OAFA+0C,EAAAA,EAAAA,kBAAsB,kBAAM97D,EAAQxD,OAAOuqB,EAArB,GAAgC,CAAC/mB,KAGrD6qJ,EAAAA,EAAAA,eAACI,GAADJ,CACEK,SAAUA,EACVz4L,SAAUA,EACV3N,SAAUyL,EAAMzL,SAChBumM,eAAgB96L,EAAM5D,OACtB5I,UAAWi8C,GAGhB,KAyFYuwJ,IAAOz0F,EAAAA,EAAAA,aAClB,WAEEjvG,GACA,IAFEutF,EAEF,EAFEA,QAASo2G,EAEX,EAFWA,eAEX,IAF2BpuM,QAAAA,OAE3B,SAF4CmO,EAE5C,EAF4CA,MAAOzR,EAEnD,EAFmDA,OAAQ+jC,EAE3D,EAF2DA,GAAO27B,EAElE,SACIp6D,EAAOopM,GAAQ3qK,GACf4tK,EAwHD,SACL5tK,EADK,GAW6C,iBAD9C,CAAC,EAC6C,EARhD/jC,EAQgD,EARhDA,OACS4xM,EAOuC,EAPhDtuM,QACAmO,EAMgD,EANhDA,MAOEm6L,EAAWC,KACX7lM,EAAWwnM,KACXvpM,EAAO0qM,GAAgB5qK,GAE3B,OAAOi5E,EAAAA,EAAAA,cACJ/jG,SAAAA,GACC,GACmB,IAAjBA,EAAMqyH,UACJtrI,GAAqB,UAAXA,KAjKpB,SAAyBiZ,GACvB,SAAUA,EAAMkyH,SAAWlyH,EAAMiyH,QAAUjyH,EAAM+xH,SAAW/xH,EAAMgyH,SACnE,CAgKQ0kD,CAAgB12K,GACjB,CACAA,EAAMy0B,iBAIN,IAAIpqC,IACAsuM,GAAeC,GAAW7rM,KAAc6rM,GAAW5tM,GAEvD2nM,EAAS7nK,EAAI,CAAEzgC,QAAAA,EAASmO,MAAAA,GACzB,CAfE,GAiBL,CAACzL,EAAU4lM,EAAU3nM,EAAM2tM,EAAangM,EAAOzR,EAAQ+jC,GAE1D,CA3JyB+tK,CAAoB/tK,EAAI,CAAEzgC,QAAAA,EAASmO,MAAAA,EAAOzR,OAAAA,IAUhE,OAEEoF,EAAAA,EAAAA,eAAAA,IAAAA,GAAAA,CAAAA,EACMs6D,EADN,CAEEp6D,KAAMA,EACNg2F,QAdJ,SACEriF,GAEIqiF,GAASA,EAAQriF,GAChBA,EAAM4wH,kBAAqB6nE,GAC9BC,EAAgB14L,EAEnB,EAQGlL,IAAKA,EACL/N,OAAQA,IAvBI,ICzPL,SAAS,KAItB,GAAsB,WACpB,OAAOlN,CACT,EAEA,IAAIA,EAAU,CAAC,EACXi/M,EAAK5zM,OAAO/E,UACZkR,EAASynM,EAAGnpM,eACZopM,EAAU,mBAAqB3rL,OAASA,OAAS,CAAC,EAClD4rL,EAAiBD,EAAQ1rL,UAAY,aACrC4rL,EAAsBF,EAAQzrL,eAAiB,kBAC/C4rL,EAAoBH,EAAQznJ,aAAe,gBAE/C,SAASie,EAAO9pE,EAAK9G,EAAK7B,GACxB,OAAOoI,OAAOE,eAAeK,EAAK9G,EAAK,CACrC7B,MAAOA,EACPutB,YAAY,EACZqyF,cAAc,EACdC,UAAU,IACRl3G,EAAI9G,EACV,CAEA,IACE4wE,EAAO,CAAC,EAAG,GAKb,CAJE,MAAOxyE,GACPwyE,EAAS,SAAgB9pE,EAAK9G,EAAK7B,GACjC,OAAO2I,EAAI9G,GAAO7B,CACpB,CACF,CAEA,SAASgoH,EAAKq0F,EAASC,EAAS9mM,EAAM+mM,GACpC,IAAIC,EAAiBF,GAAWA,EAAQj5M,qBAAqBo5M,EAAYH,EAAUG,EAC/EpnJ,EAAYjtD,OAAO7E,OAAOi5M,EAAen5M,WACzCF,EAAU,IAAIw7K,EAAQ49B,GAAe,IACzC,OAAOlnJ,EAAU9lC,QAAU,SAAU8sL,EAAS7mM,EAAMrS,GAClD,IAAIuY,EAAQ,iBACZ,OAAO,SAAUvb,EAAQuU,GACvB,GAAI,cAAgBgH,EAAO,MAAM,IAAIxjB,MAAM,gCAE3C,GAAI,cAAgBwjB,EAAO,CACzB,GAAI,UAAYvb,EAAQ,MAAMuU,EAC9B,OAAOgoM,GACT,CAEA,IAAKv5M,EAAQhD,OAASA,EAAQgD,EAAQuR,IAAMA,IAAO,CACjD,IAAIioM,EAAWx5M,EAAQw5M,SAEvB,GAAIA,EAAU,CACZ,IAAIC,EAAiBC,EAAoBF,EAAUx5M,GAEnD,GAAIy5M,EAAgB,CAClB,GAAIA,IAAmBE,EAAkB,SACzC,OAAOF,CACT,CACF,CAEA,GAAI,SAAWz5M,EAAQhD,OAAQgD,EAAQuyD,KAAOvyD,EAAQ45M,MAAQ55M,EAAQuR,SAAS,GAAI,UAAYvR,EAAQhD,OAAQ,CAC7G,GAAI,mBAAqBub,EAAO,MAAMA,EAAQ,YAAavY,EAAQuR,IACnEvR,EAAQ65M,kBAAkB75M,EAAQuR,IACpC,KAAO,WAAavR,EAAQhD,QAAUgD,EAAQ85M,OAAO,SAAU95M,EAAQuR,KACvEgH,EAAQ,YACR,IAAIwhM,EAASC,EAASd,EAAS7mM,EAAMrS,GAErC,GAAI,WAAa+5M,EAAO56M,KAAM,CAC5B,GAAIoZ,EAAQvY,EAAQ7E,KAAO,YAAc,iBAAkB4+M,EAAOxoM,MAAQooM,EAAkB,SAC5F,MAAO,CACL98M,MAAOk9M,EAAOxoM,IACdpW,KAAM6E,EAAQ7E,KAElB,CAEA,UAAY4+M,EAAO56M,OAASoZ,EAAQ,YAAavY,EAAQhD,OAAS,QAASgD,EAAQuR,IAAMwoM,EAAOxoM,IAClG,CACF,CACF,CAxC2B,CAwCzB2nM,EAAS7mM,EAAMrS,GAAUkyD,CAC7B,CAEA,SAAS8nJ,EAASj0M,EAAIP,EAAK+L,GACzB,IACE,MAAO,CACLpS,KAAM,SACNoS,IAAKxL,EAAG3D,KAAKoD,EAAK+L,GAOtB,CALE,MAAOzU,GACP,MAAO,CACLqC,KAAM,QACNoS,IAAKzU,EAET,CACF,CAEAlD,EAAQirH,KAAOA,EACf,IAAI80F,EAAmB,CAAC,EAExB,SAASL,IAAa,CAEtB,SAASW,IAAqB,CAE9B,SAASC,IAA8B,CAEvC,IAAIC,EAAoB,CAAC,EACzB7qI,EAAO6qI,EAAmBpB,GAAgB,WACxC,OAAO73M,IACT,IACA,IAAIk5M,EAAWn1M,OAAOuK,eAClB6qM,EAA0BD,GAAYA,EAASA,EAASniI,EAAO,MACnEoiI,GAA2BA,IAA4BxB,GAAMznM,EAAOhP,KAAKi4M,EAAyBtB,KAAoBoB,EAAoBE,GAC1I,IAAIC,EAAKJ,EAA2Bh6M,UAAYo5M,EAAUp5M,UAAY+E,OAAO7E,OAAO+5M,GAEpF,SAASI,EAAsBr6M,GAC7B,CAAC,OAAQ,QAAS,UAAUzB,SAAQ,SAAUzB,GAC5CsyE,EAAOpvE,EAAWlD,GAAQ,SAAUuU,GAClC,OAAOrQ,KAAKkrB,QAAQpvB,EAAQuU,EAC9B,GACF,GACF,CAEA,SAASipM,EAActoJ,EAAWuoJ,GAChC,SAASC,EAAO19M,EAAQuU,EAAK5W,EAASC,GACpC,IAAIm/M,EAASC,EAAS9nJ,EAAUl1D,GAASk1D,EAAW3gD,GAEpD,GAAI,UAAYwoM,EAAO56M,KAAM,CAC3B,IAAI+P,EAAS6qM,EAAOxoM,IAChB1U,EAAQqS,EAAOrS,MACnB,OAAOA,GAAS,UAAY+iH,EAAQ/iH,IAAUuU,EAAOhP,KAAKvF,EAAO,WAAa49M,EAAY9/M,QAAQkC,EAAM89M,SAASt5M,MAAK,SAAUxE,GAC9H69M,EAAO,OAAQ79M,EAAOlC,EAASC,EACjC,IAAG,SAAUkC,GACX49M,EAAO,QAAS59M,EAAKnC,EAASC,EAChC,IAAK6/M,EAAY9/M,QAAQkC,GAAOwE,MAAK,SAAUu5M,GAC7C1rM,EAAOrS,MAAQ+9M,EAAWjgN,EAAQuU,EACpC,IAAG,SAAU9K,GACX,OAAOs2M,EAAO,QAASt2M,EAAOzJ,EAASC,EACzC,GACF,CAEAA,EAAOm/M,EAAOxoM,IAChB,CAEA,IAAIspM,EAEJ35M,KAAKkrB,QAAU,SAAUpvB,EAAQuU,GAC/B,SAASupM,IACP,OAAO,IAAIL,GAAY,SAAU9/M,EAASC,GACxC8/M,EAAO19M,EAAQuU,EAAK5W,EAASC,EAC/B,GACF,CAEA,OAAOigN,EAAkBA,EAAkBA,EAAgBx5M,KAAKy5M,EAA4BA,GAA8BA,GAC5H,CACF,CAEA,SAASpB,EAAoBF,EAAUx5M,GACrC,IAAIhD,EAASw8M,EAASpsL,SAASptB,EAAQhD,QAEvC,QAAIuB,IAAcvB,EAAQ,CACxB,GAAIgD,EAAQw5M,SAAW,KAAM,UAAYx5M,EAAQhD,OAAQ,CACvD,GAAIw8M,EAASpsL,SAAiB,SAAMptB,EAAQhD,OAAS,SAAUgD,EAAQuR,SAAMhT,EAAWm7M,EAAoBF,EAAUx5M,GAAU,UAAYA,EAAQhD,QAAS,OAAO28M,EACpK35M,EAAQhD,OAAS,QAASgD,EAAQuR,IAAM,IAAIvQ,UAAU,iDACxD,CAEA,OAAO24M,CACT,CAEA,IAAII,EAASC,EAASh9M,EAAQw8M,EAASpsL,SAAUptB,EAAQuR,KACzD,GAAI,UAAYwoM,EAAO56M,KAAM,OAAOa,EAAQhD,OAAS,QAASgD,EAAQuR,IAAMwoM,EAAOxoM,IAAKvR,EAAQw5M,SAAW,KAAMG,EACjH,IAAIh9K,EAAOo9K,EAAOxoM,IAClB,OAAOorB,EAAOA,EAAKxhC,MAAQ6E,EAAQw5M,EAASuB,YAAcp+K,EAAK9/B,MAAOmD,EAAQisB,KAAOutL,EAASwB,QAAS,WAAah7M,EAAQhD,SAAWgD,EAAQhD,OAAS,OAAQgD,EAAQuR,SAAMhT,GAAYyB,EAAQw5M,SAAW,KAAMG,GAAoBh9K,GAAQ38B,EAAQhD,OAAS,QAASgD,EAAQuR,IAAM,IAAIvQ,UAAU,oCAAqChB,EAAQw5M,SAAW,KAAMG,EACrW,CAEA,SAASsB,EAAaC,GACpB,IAAI37J,EAAQ,CACV47J,OAAQD,EAAK,IAEf,KAAKA,IAAS37J,EAAM67J,SAAWF,EAAK,IAAK,KAAKA,IAAS37J,EAAM87J,WAAaH,EAAK,GAAI37J,EAAM+7J,SAAWJ,EAAK,IAAKh6M,KAAKq6M,WAAWx5M,KAAKw9C,EACrI,CAEA,SAASi8J,EAAcj8J,GACrB,IAAIw6J,EAASx6J,EAAMk8J,YAAc,CAAC,EAClC1B,EAAO56M,KAAO,gBAAiB46M,EAAOxoM,IAAKguC,EAAMk8J,WAAa1B,CAChE,CAEA,SAASv+B,EAAQ49B,GACfl4M,KAAKq6M,WAAa,CAAC,CACjBJ,OAAQ,SACN/B,EAAY36M,QAAQw8M,EAAc/5M,MAAOA,KAAK2gC,OAAM,EAC1D,CAEA,SAASo2C,EAAOyjI,GACd,GAAIA,EAAU,CACZ,IAAIC,EAAiBD,EAAS3C,GAC9B,GAAI4C,EAAgB,OAAOA,EAAev5M,KAAKs5M,GAC/C,GAAI,mBAAqBA,EAASzvL,KAAM,OAAOyvL,EAE/C,IAAK5mN,MAAM4mN,EAASnmN,QAAS,CAC3B,IAAIgM,GAAK,EACL0qB,EAAO,SAASA,IAClB,OAAS1qB,EAAIm6M,EAASnmN,QACpB,GAAI6b,EAAOhP,KAAKs5M,EAAUn6M,GAAI,OAAO0qB,EAAKpvB,MAAQ6+M,EAASn6M,GAAI0qB,EAAK9wB,MAAO,EAAI8wB,EAGjF,OAAOA,EAAKpvB,WAAQ0B,EAAW0tB,EAAK9wB,MAAO,EAAI8wB,CACjD,EAEA,OAAOA,EAAKA,KAAOA,CACrB,CACF,CAEA,MAAO,CACLA,KAAMstL,EAEV,CAEA,SAASA,IACP,MAAO,CACL18M,WAAO0B,EACPpD,MAAM,EAEV,CAEA,OAAO8+M,EAAkB/5M,UAAYg6M,EAA4B5qI,EAAOgrI,EAAI,cAAeJ,GAA6B5qI,EAAO4qI,EAA4B,cAAeD,GAAoBA,EAAkB1mG,YAAcjkC,EAAO4qI,EAA4BjB,EAAmB,qBAAsBr/M,EAAQgiN,oBAAsB,SAAUC,GAChV,IAAI93B,EAAO,mBAAqB83B,GAAUA,EAAOhsM,YACjD,QAASk0K,IAASA,IAASk2B,GAAqB,uBAAyBl2B,EAAKxwE,aAAewwE,EAAKzhL,MACpG,EAAG1I,EAAQkiN,KAAO,SAAUD,GAC1B,OAAO52M,OAAOysD,eAAiBzsD,OAAOysD,eAAemqJ,EAAQ3B,IAA+B2B,EAAOlqJ,UAAYuoJ,EAA4B5qI,EAAOusI,EAAQ5C,EAAmB,sBAAuB4C,EAAO37M,UAAY+E,OAAO7E,OAAOk6M,GAAKuB,CAC5O,EAAGjiN,EAAQmiN,MAAQ,SAAUxqM,GAC3B,MAAO,CACLopM,QAASppM,EAEb,EAAGgpM,EAAsBC,EAAct6M,WAAYovE,EAAOkrI,EAAct6M,UAAW84M,GAAqB,WACtG,OAAO93M,IACT,IAAItH,EAAQ4gN,cAAgBA,EAAe5gN,EAAQoiN,MAAQ,SAAU9C,EAASC,EAAS9mM,EAAM+mM,EAAaqB,QACxG,IAAWA,IAAgBA,EAAc//M,SACzC,IAAIwyB,EAAO,IAAIstL,EAAc31F,EAAKq0F,EAASC,EAAS9mM,EAAM+mM,GAAcqB,GACxE,OAAO7gN,EAAQgiN,oBAAoBzC,GAAWjsL,EAAOA,EAAKjB,OAAO5qB,MAAK,SAAU6N,GAC9E,OAAOA,EAAO/T,KAAO+T,EAAOrS,MAAQqwB,EAAKjB,MAC3C,GACF,EAAGsuL,EAAsBD,GAAKhrI,EAAOgrI,EAAIrB,EAAmB,aAAc3pI,EAAOgrI,EAAIvB,GAAgB,WACnG,OAAO73M,IACT,IAAIouE,EAAOgrI,EAAI,YAAY,WACzB,MAAO,oBACT,IAAI1gN,EAAQ2N,KAAO,SAAUkiB,GAC3B,IAAIliB,EAAO,GAEX,IAAK,IAAI7I,KAAO+qB,EACdliB,EAAKxF,KAAKrD,GAGZ,OAAO6I,EAAK6W,UAAW,SAAS6N,IAC9B,KAAO1kB,EAAKhS,QAAS,CACnB,IAAImJ,EAAM6I,EAAK6G,MACf,GAAI1P,KAAO+qB,EAAQ,OAAOwC,EAAKpvB,MAAQ6B,EAAKutB,EAAK9wB,MAAO,EAAI8wB,CAC9D,CAEA,OAAOA,EAAK9wB,MAAO,EAAI8wB,CACzB,CACF,EAAGryB,EAAQq+E,OAASA,EAAQujG,EAAQt7K,UAAY,CAC9C2P,YAAa2rK,EACb35I,MAAO,SAAeo6K,GACpB,GAAI/6M,KAAK0vC,KAAO,EAAG1vC,KAAK+qB,KAAO,EAAG/qB,KAAKqxD,KAAOrxD,KAAK04M,WAAQr7M,EAAW2C,KAAK/F,MAAO,EAAI+F,KAAKs4M,SAAW,KAAMt4M,KAAKlE,OAAS,OAAQkE,KAAKqQ,SAAMhT,EAAW2C,KAAKq6M,WAAW98M,QAAQ+8M,IAAiBS,EAAe,IAAK,IAAI35M,KAAQpB,KAC/N,MAAQoB,EAAKsK,OAAO,IAAMwE,EAAOhP,KAAKlB,KAAMoB,KAAUxN,OAAOwN,EAAKjJ,MAAM,MAAQ6H,KAAKoB,QAAQ/D,EAEjG,EACAk+J,KAAM,WACJv7J,KAAK/F,MAAO,EACZ,IAAI+gN,EAAah7M,KAAKq6M,WAAW,GAAGE,WACpC,GAAI,UAAYS,EAAW/8M,KAAM,MAAM+8M,EAAW3qM,IAClD,OAAOrQ,KAAKi7M,IACd,EACAtC,kBAAmB,SAA2BnjJ,GAC5C,GAAIx1D,KAAK/F,KAAM,MAAMu7D,EACrB,IAAI12D,EAAUkB,KAEd,SAASwyD,EAAO0oJ,EAAKC,GACnB,OAAOtC,EAAO56M,KAAO,QAAS46M,EAAOxoM,IAAMmlD,EAAW12D,EAAQisB,KAAOmwL,EAAKC,IAAWr8M,EAAQhD,OAAS,OAAQgD,EAAQuR,SAAMhT,KAAc89M,CAC5I,CAEA,IAAK,IAAI96M,EAAIL,KAAKq6M,WAAWhmN,OAAS,EAAGgM,GAAK,IAAKA,EAAG,CACpD,IAAIg+C,EAAQr+C,KAAKq6M,WAAWh6M,GACxBw4M,EAASx6J,EAAMk8J,WACnB,GAAI,SAAWl8J,EAAM47J,OAAQ,OAAOznJ,EAAO,OAE3C,GAAInU,EAAM47J,QAAUj6M,KAAK0vC,KAAM,CAC7B,IAAI0rK,EAAWlrM,EAAOhP,KAAKm9C,EAAO,YAC9Bg9J,EAAanrM,EAAOhP,KAAKm9C,EAAO,cAEpC,GAAI+8J,GAAYC,EAAY,CAC1B,GAAIr7M,KAAK0vC,KAAO2O,EAAM67J,SAAU,OAAO1nJ,EAAOnU,EAAM67J,UAAU,GAC9D,GAAIl6M,KAAK0vC,KAAO2O,EAAM87J,WAAY,OAAO3nJ,EAAOnU,EAAM87J,WACxD,MAAO,GAAIiB,GACT,GAAIp7M,KAAK0vC,KAAO2O,EAAM67J,SAAU,OAAO1nJ,EAAOnU,EAAM67J,UAAU,OACzD,CACL,IAAKmB,EAAY,MAAM,IAAIxnN,MAAM,0CACjC,GAAImM,KAAK0vC,KAAO2O,EAAM87J,WAAY,OAAO3nJ,EAAOnU,EAAM87J,WACxD,CACF,CACF,CACF,EACAvB,OAAQ,SAAgB36M,EAAMoS,GAC5B,IAAK,IAAIhQ,EAAIL,KAAKq6M,WAAWhmN,OAAS,EAAGgM,GAAK,IAAKA,EAAG,CACpD,IAAIg+C,EAAQr+C,KAAKq6M,WAAWh6M,GAE5B,GAAIg+C,EAAM47J,QAAUj6M,KAAK0vC,MAAQx/B,EAAOhP,KAAKm9C,EAAO,eAAiBr+C,KAAK0vC,KAAO2O,EAAM87J,WAAY,CACjG,IAAImB,EAAej9J,EACnB,KACF,CACF,CAEAi9J,IAAiB,UAAYr9M,GAAQ,aAAeA,IAASq9M,EAAarB,QAAU5pM,GAAOA,GAAOirM,EAAanB,aAAemB,EAAe,MAC7I,IAAIzC,EAASyC,EAAeA,EAAaf,WAAa,CAAC,EACvD,OAAO1B,EAAO56M,KAAOA,EAAM46M,EAAOxoM,IAAMA,EAAKirM,GAAgBt7M,KAAKlE,OAAS,OAAQkE,KAAK+qB,KAAOuwL,EAAanB,WAAY1B,GAAoBz4M,KAAKk8B,SAAS28K,EAC5J,EACA38K,SAAU,SAAkB28K,EAAQuB,GAClC,GAAI,UAAYvB,EAAO56M,KAAM,MAAM46M,EAAOxoM,IAC1C,MAAO,UAAYwoM,EAAO56M,MAAQ,aAAe46M,EAAO56M,KAAO+B,KAAK+qB,KAAO8tL,EAAOxoM,IAAM,WAAawoM,EAAO56M,MAAQ+B,KAAKi7M,KAAOj7M,KAAKqQ,IAAMwoM,EAAOxoM,IAAKrQ,KAAKlE,OAAS,SAAUkE,KAAK+qB,KAAO,OAAS,WAAa8tL,EAAO56M,MAAQm8M,IAAap6M,KAAK+qB,KAAOqvL,GAAW3B,CACtQ,EACA8C,OAAQ,SAAgBpB,GACtB,IAAK,IAAI95M,EAAIL,KAAKq6M,WAAWhmN,OAAS,EAAGgM,GAAK,IAAKA,EAAG,CACpD,IAAIg+C,EAAQr+C,KAAKq6M,WAAWh6M,GAC5B,GAAIg+C,EAAM87J,aAAeA,EAAY,OAAOn6M,KAAKk8B,SAASmiB,EAAMk8J,WAAYl8J,EAAM+7J,UAAWE,EAAcj8J,GAAQo6J,CACrH,CACF,EACA,MAAS,SAAgBwB,GACvB,IAAK,IAAI55M,EAAIL,KAAKq6M,WAAWhmN,OAAS,EAAGgM,GAAK,IAAKA,EAAG,CACpD,IAAIg+C,EAAQr+C,KAAKq6M,WAAWh6M,GAE5B,GAAIg+C,EAAM47J,SAAWA,EAAQ,CAC3B,IAAIpB,EAASx6J,EAAMk8J,WAEnB,GAAI,UAAY1B,EAAO56M,KAAM,CAC3B,IAAIu9M,EAAS3C,EAAOxoM,IACpBiqM,EAAcj8J,EAChB,CAEA,OAAOm9J,CACT,CACF,CAEA,MAAM,IAAI3nN,MAAM,wBAClB,EACA4nN,cAAe,SAAuBjB,EAAUX,EAAYC,GAC1D,OAAO95M,KAAKs4M,SAAW,CACrBpsL,SAAU6qD,EAAOyjI,GACjBX,WAAYA,EACZC,QAASA,GACR,SAAW95M,KAAKlE,SAAWkE,KAAKqQ,SAAMhT,GAAYo7M,CACvD,GACC//M,CACL,CC/VA,SAASgjN,GAAmB9wL,EAAKnxB,EAASC,EAAQm3E,EAAO8qI,EAAQn+M,EAAK6S,GACpE,IACE,IAAIorB,EAAO7Q,EAAIptB,GAAK6S,GAChB1U,EAAQ8/B,EAAK9/B,KAInB,CAHE,MAAOuH,GAEP,YADAxJ,EAAOwJ,EAET,CAEIu4B,EAAKxhC,KACPR,EAAQkC,GAERnC,QAAQC,QAAQkC,GAAOwE,KAAK0wE,EAAO8qI,EAEvC,CAEe,SAAS,GAAkB92M,GACxC,OAAO,WACL,IAAIsM,EAAOnR,KACP+I,EAAOC,UACX,OAAO,IAAIxP,SAAQ,SAAUC,EAASC,GACpC,IAAIkxB,EAAM/lB,EAAGhC,MAAMsO,EAAMpI,GAEzB,SAAS8nE,EAAMl1E,GACb+/M,GAAmB9wL,EAAKnxB,EAASC,EAAQm3E,EAAO8qI,EAAQ,OAAQhgN,EAClE,CAEA,SAASggN,EAAO//M,GACd8/M,GAAmB9wL,EAAKnxB,EAASC,EAAQm3E,EAAO8qI,EAAQ,QAAS//M,EACnE,CAEAi1E,OAAMxzE,EACR,GACF,CACF,KC/BYu+M,GAcAC,GAWAC,GAMAC,GAMAC,GAMAC,GAmBAC,GAMAC,8DApEZ,SAAYP,GAAAA,EAAAA,EAAAA,IAAAA,SAAAA,MAAAA,EAAAA,EAAAA,QAAAA,WAAAA,UAAAA,EAAAA,EAAAA,cAAAA,WAAAA,gBAAAA,EAAAA,EAAAA,eAAAA,WAAAA,iBAAAA,EAAAA,EAAAA,aAAAA,WAAAA,eAAAA,EAAAA,EAAAA,kBAAAA,WAAAA,oBAAAA,EAAAA,EAAAA,aAAAA,WAAAA,eAAAA,EAAAA,EAAAA,YAAAA,WAAAA,cAAAA,EAAAA,EAAAA,WAAAA,WAAAA,aAAAA,EAAAA,EAAAA,QAAAA,WAAAA,UAAAA,EAAAA,EAAAA,KAAAA,WAAAA,MAAAA,CAAZ,CAAYA,KAAAA,GAAAA,CAAAA,IAcZ,SAAYC,GAAAA,EAAAA,EAAAA,eAAAA,WAAAA,iBAAAA,EAAAA,EAAAA,UAAAA,WAAAA,YAAAA,EAAAA,EAAAA,mBAAAA,WAAAA,qBAAAA,EAAAA,EAAAA,YAAAA,WAAAA,cAAAA,EAAAA,EAAAA,mBAAAA,WAAAA,qBAAAA,EAAAA,EAAAA,uBAAAA,SAAAA,yBAAAA,EAAAA,EAAAA,qBAAAA,WAAAA,uBAAAA,EAAAA,EAAAA,gBAAAA,WAAAA,iBAAAA,CAAZ,CAAYA,KAAAA,GAAAA,CAAAA,IAWZ,SAAYC,GAAAA,EAAAA,EAAAA,mBAAAA,SAAAA,qBAAAA,EAAAA,EAAAA,yBAAAA,WAAAA,0BAAAA,CAAZ,CAAYA,KAAAA,GAAAA,CAAAA,IAMZ,SAAYC,GAAAA,EAAAA,EAAAA,SAAAA,SAAAA,WAAAA,EAAAA,EAAAA,UAAAA,WAAAA,YAAAA,EAAAA,EAAAA,WAAAA,WAAAA,YAAAA,CAAZ,CAAYA,KAAAA,GAAAA,CAAAA,IAMZ,SAAYC,GAAAA,EAAAA,EAAAA,IAAAA,SAAAA,MAAAA,EAAAA,EAAAA,GAAAA,WAAAA,IAAAA,CAAZ,CAAYA,KAAAA,GAAAA,CAAAA,IAMZ,SAAYC,GAAAA,EAAAA,EAAAA,QAAAA,SAAAA,UAAAA,EAAAA,EAAAA,gBAAAA,WAAAA,kBAAAA,EAAAA,EAAAA,YAAAA,WAAAA,cAAAA,EAAAA,EAAAA,YAAAA,WAAAA,cAAAA,EAAAA,EAAAA,qBAAAA,WAAAA,uBAAAA,EAAAA,EAAAA,aAAAA,WAAAA,eAAAA,EAAAA,EAAAA,oBAAAA,WAAAA,sBAAAA,EAAAA,EAAAA,YAAAA,WAAAA,cAAAA,EAAAA,EAAAA,mBAAAA,WAAAA,qBAAAA,EAAAA,EAAAA,0BAAAA,WAAAA,4BAAAA,EAAAA,EAAAA,kBAAAA,WAAAA,oBAAAA,EAAAA,EAAAA,YAAAA,WAAAA,cAAAA,EAAAA,EAAAA,OAAAA,WAAAA,SAAAA,EAAAA,EAAAA,cAAAA,WAAAA,gBAAAA,EAAAA,EAAAA,OAAAA,WAAAA,SAAAA,EAAAA,EAAAA,YAAAA,WAAAA,aAAAA,CAAZ,CAAYA,KAAAA,GAAAA,CAAAA,IAmBZ,SAAYC,GAAAA,EAAAA,EAAAA,GAAAA,WAAAA,KAAAA,EAAAA,EAAAA,IAAAA,SAAAA,KAAAA,CAAZ,CAAYA,KAAAA,GAAAA,CAAAA,IAMZ,SAAYC,GAAAA,EAAAA,EAAAA,UAAAA,SAAAA,YAAAA,EAAAA,EAAAA,SAAAA,WAAAA,UAAAA,CAAZ,CAAYA,KAAAA,GAAAA,CAAAA,ICvEL,IAAMC,GAAb,GAcI,WAAYx3M,EAAYwnC,EAAe5oC,EAAqBoZ,EAAey/L,EAAsBC,EAAgBngL,EAAiBogL,EAAsBphN,EAAkBqhN,EAAeC,EAAsBlyK,GAAW,eAb1N3lC,QAayN,OAZzNwnC,WAYyN,OAXzN5oC,iBAWyN,OAVzNoZ,cAUyN,OATzNy/L,mBASyN,OARzNC,aAQyN,OAPzNngL,cAOyN,OANzNogL,mBAMyN,OALzNphN,SAKyN,OAJzNqhN,cAIyN,OAHzNC,mBAGyN,OAFzNlyK,UAEyN,EACrNvqC,KAAK4E,GAAKA,EACV5E,KAAKosC,MAAQA,EACbpsC,KAAKwD,YAAcA,EACnBxD,KAAK4c,SAAWA,EAChB5c,KAAKq8M,cAAgBA,EACrBr8M,KAAKs8M,QAAL,OAAeA,QAAf,IAAeA,EAAAA,EAAW,KAC1Bt8M,KAAKm8B,SAAWA,EAChBn8B,KAAKu8M,cAAgBA,EACrBv8M,KAAK7E,IAAMA,EACX6E,KAAKw8M,SAAWA,EAChBx8M,KAAKy8M,cAAgBA,EACrBz8M,KAAKuqC,KAAOA,CACf,ICfU,SAASmyK,GAAuBC,GAA0F,IAA3EruC,EAA2E,uDAA7DH,EAAqBI,EAAwC,uDAAxBH,EACzGh+J,EAAU,GAiBhB,OAhBArM,OAAOq7C,QAAQu9J,GAAep/M,SAAQ,YAA2B,cAAzBq/M,EAAyB,KAAfC,EAAe,KAC9C,MAAbA,IACuB,kBAAdA,EACTvuC,EAAY/wK,SAAQ,SAAA6+L,GAClB,IAAM0gB,EAAUD,EAAUzgB,GAE1B,GAAe,MAAX0gB,EAAiB,CACnB,IAAMC,EAAQ3gB,IAAa7tB,EAAb,WAAiC6tB,GAAa,GAC5DhsL,EAAQvP,KAAR,UAAgB+7M,GAAhB,OAA2BG,EAA3B,YAAoCD,GACrC,CACF,IAED1sM,EAAQvP,KAAR,UAAgB+7M,EAAhB,YAA4BC,IAGjC,IACMzsM,CACR,wDC1BKqkE,GAAqBmuC,EAAAA,YAAiB,WAOzCjvG,GAAQ,QANTu7J,GAAI9mD,OAMK,MANO,MAMP,EALT6mD,EAKS,EALTA,SACAj2J,EAIS,EAJTA,UACA0qG,EAGS,EAHTA,UACAs5F,EAES,EAFTA,IACGxtM,EACM,QACTy/J,EAAWT,EAAmBS,EAAwB,eAAdvrD,EAA6B,SAAW,UAChF,IAAM4qD,EAAcI,IACdH,EAAgBI,IACtB,OAAoBU,EAAAA,EAAAA,KAAKjnD,EAAD,EAAC,KAAgB54G,GAAjB,IACtBmE,IAAKA,EACLqF,UAAW7I,IAAAA,WAAA,GAAW6I,EAAWi2J,GAAtB,UAAmCytC,GAAuB,CACnEM,IAAAA,EACA1uC,YAAAA,EACAC,cAAAA,SAGL,IACD95F,GAAM49B,YAAc,QACpB,2CCtBM4qG,GAAmBr6F,EAAAA,YAAiB,WAMvCjvG,GAAQ,IALTs7J,EAKS,EALTA,SACAj2J,EAIS,EAJTA,UAIS,IAFTk2J,GAAI9mD,OAEK,MAFO,MAEP,EADN54G,EACM,QACH0tM,EAAoB1uC,EAAmBS,EAAU,OACjDX,EAAcI,IACdH,EAAgBI,IAChBwuC,EAAa,GAAH,OAAMD,EAAN,SACV9sM,EAAU,GAiBhB,OAhBAk+J,EAAY/wK,SAAQ,SAAA6+L,GAClB,IAEI1lJ,EAFEg5H,EAAYlgK,EAAM4sL,UACjB5sL,EAAM4sL,GAKT1lJ,EAFa,MAAbg5H,GAA0C,kBAAdA,EAG1BA,EADFh5H,KAGKg5H,EAGT,IAAMqtC,EAAQ3gB,IAAa7tB,EAAb,WAAiC6tB,GAAa,GAChD,MAAR1lJ,GAActmC,EAAQvP,KAAR,UAAgBs8M,GAAhB,OAA6BJ,EAA7B,YAAsCrmK,GACzD,KACmB24H,EAAAA,EAAAA,KAAKjnD,EAAD,EAAC,GACvBz0G,IAAKA,GACFnE,GAFmB,IAGtBwJ,UAAW7I,IAAAA,WAAA,GAAW6I,EAAWkkM,GAAtB,OAA4C9sM,MAE1D,IACD6sM,GAAI5qG,YAAc,MAClB,4DCMA,IAAM+qG,GAAmBx6F,EAAAA,YACzB,SAACpzG,EAAOmE,GACN,MA3CK,YAKJ,IAJDu7J,EAIC,EAJDA,GACAD,EAGC,EAHDA,SACAj2J,EAEC,EAFDA,UACGxJ,EACF,QACDy/J,EAAWT,EAAmBS,EAAU,OACxC,IAAMX,EAAcI,IACdH,EAAgBI,IAChBtkF,EAAQ,GACRj6E,EAAU,GAuBhB,OAtBAk+J,EAAY/wK,SAAQ,SAAA6+L,GAClB,IAEInyG,EACAl3F,EACAsyI,EAJEqqC,EAAYlgK,EAAM4sL,UACjB5sL,EAAM4sL,GAKY,kBAAd1sB,GAAuC,MAAbA,GAEjCzlF,EAGEylF,EAHFzlF,KACAl3F,EAEE28K,EAFF38K,OACAsyI,EACEqqC,EADFrqC,OAGFp7C,EAAOylF,EAGT,IAAMqtC,EAAQ3gB,IAAa7tB,EAAb,WAAiC6tB,GAAa,GACxDnyG,GAAMI,EAAMxpF,MAAc,IAATopF,EAAA,UAAmBglF,GAAnB,OAA8B8tC,GAA9B,UAA2C9tC,GAA3C,OAAsD8tC,EAAtD,YAA+D9yH,IACvE,MAATo7C,GAAej1H,EAAQvP,KAAR,eAAqBk8M,EAArB,YAA8B13E,IACnC,MAAVtyI,GAAgBqd,EAAQvP,KAAR,gBAAsBk8M,EAAtB,YAA+BhqN,GACpD,IACM,CAAC,OAAKyc,GAAN,IACLwJ,UAAW7I,IAAAA,WAAA,GAAW6I,GAAX,OAAyBqxE,EAAUj6E,MAC7C,CACD8+J,GAAAA,EACAD,SAAAA,EACA5kF,MAAAA,GAEH,CAUMgzH,CAAO7tM,GAPZ,iBACEwJ,EADF,EACEA,UACGskM,EAFL,mBAIEpuC,GAAI9mD,OAJN,MAIkB,MAJlB,EAKE6mD,EALF,EAKEA,SACA5kF,EANF,EAMEA,MAEF,OAAoBglF,EAAAA,EAAAA,KAAKjnD,EAAD,EAAC,KAAgBk1F,GAAjB,IACtB3pM,IAAKA,EACLqF,UAAW7I,IAAW6I,GAAYqxE,EAAMh2F,QAAU46K,KAErD,IACDmuC,GAAI/qG,YAAc,MAClB,mDCtDMkrG,GAAyB36F,EAAAA,YAAiB,WAO7CjvG,GAAQ,IANTs7J,EAMS,EANTA,SACAuuC,EAKS,EALTA,MAKS,IAHTtuC,GAAI9mD,OAGK,MAHO,MAGP,EAFTpvG,EAES,EAFTA,UACGxJ,EACM,QACHmoD,EAAS62G,EAAmBS,EAAU,aACtCwuC,EAA0B,kBAAVD,EAAP,WAAgCA,GAAU,SACzD,OAAoBnuC,EAAAA,EAAAA,KAAKjnD,EAAD,EAAC,GACvBz0G,IAAKA,GACFnE,GAFmB,IAGtBwJ,UAAW7I,IAAW6I,EAAWwkM,EAAQ,GAAH,OAAM7lJ,GAAN,OAAe8lJ,GAAW9lJ,KAEnE,IACD4lJ,GAAUlrG,YAAc,YACxBkrG,GAAUnrG,aApBW,CACnBorG,OAAO,GAoBT,ICoBYE,GAMAC,GAOAC,GAMAC,GASAC,GASAC,GDzDZ,MEoBaC,IAAct0C,EAAAA,EAAAA,eAAuC,CAChEu0C,QAAS,KACTC,SAAU,KACVC,SAAU,KACVC,eAAgB,WAAQ,EACxBC,SAAS,EACTC,WAAY,SAACC,GAAqB,EAClCC,mBAAoB,SAACC,GAAwB,EAC7CC,eAAgB,KAChBC,iBAAkB,WAAQ,EAC1BC,qBAAsB,GACtBC,qBAAsB,WAAQ,EAC9BC,OAAQ,SAACvhD,GAAe,EACxBwhD,UAAW,SAACxhD,GAAe,EAC3ByhD,UAAW,SAACzhD,GAAe,EAC3B0hD,SAAU,SAACC,EAAeC,GAAoB,EAC9CC,aAAc,GACdC,YAAa,KACbxyG,SAAU,KACVyyG,cAAc,EACdvpL,MAAO,GACPwpL,gBAAiB,CAAC,EAClBC,sBAAuB,SAACD,GAAuC,EAC/DE,uBAAwB,SAAC7+M,GAAoB,EAC7C8+M,wBAAyB,WAAQ,IClEtBC,GAAb,oHAGI,WAAU,IAAD,MACC7gN,EAAUkB,KAAKlB,QAErB,GAAI,UAACA,EAAQm/M,eAAT,QAAC,EAAiB2B,aAAc,OAAO,8BAAG5/M,KAAKwP,MAAM+J,WAEzD,IAAIsmM,EAAiB11M,SAASa,cAAc,UACxCi7E,EAAS97E,SAASa,cAAc,UAWpC,OATA60M,EAAev1K,UAAY,0qBAC3Bu1K,EAAe10M,aAAa,OAAQ,mBAEpC86E,EAAO37C,UAAY,4GAAmGxrC,EAAQm/M,eAA3G,aAAmG,EAAiB6B,UAAW,eAA/H,UAA+IhhN,EAAQm/M,eAAvJ,aAA+I,EAAiB2B,cAAe,OAClM35H,EAAO96E,aAAa,OAAQ,mBAE5BhB,SAASk8E,KAAKjtE,YAAY6sE,GAC1B97E,SAASk8E,KAAKjtE,YAAYymM,IAElB,8BACH7/M,KAAKwP,MAAM+J,UAGnB,KAxBL,GAA8BqpG,EAAAA,WAAjB+8F,GACFztG,YAAc8rG,GFyCzB,SAAYN,GAAAA,EAAAA,EAAAA,GAAAA,WAAAA,KAAAA,EAAAA,EAAAA,IAAAA,SAAAA,KAAAA,CAAZ,CAAYA,KAAAA,GAAAA,CAAAA,IAMZ,SAAYC,GAAAA,EAAAA,EAAAA,SAAAA,SAAAA,WAAAA,EAAAA,EAAAA,SAAAA,WAAAA,WAAAA,EAAAA,EAAAA,MAAAA,WAAAA,QAAAA,EAAAA,EAAAA,YAAAA,WAAAA,aAAAA,CAAZ,CAAYA,KAAAA,GAAAA,CAAAA,IAOZ,SAAYC,GAAAA,EAAAA,EAAAA,QAAAA,SAAAA,UAAAA,EAAAA,EAAAA,UAAAA,WAAAA,YAAAA,EAAAA,EAAAA,OAAAA,WAAAA,QAAAA,CAAZ,CAAYA,KAAAA,GAAAA,CAAAA,IAMZ,SAAYC,GAAAA,EAAAA,EAAAA,OAAAA,GAAAA,SAAAA,EAAAA,EAAAA,SAAAA,GAAAA,WAAAA,EAAAA,EAAAA,SAAAA,WAAAA,WAAAA,EAAAA,EAAAA,YAAAA,WAAAA,cAAAA,EAAAA,EAAAA,SAAAA,WAAAA,WAAAA,EAAAA,EAAAA,WAAAA,WAAAA,YAAAA,CAAZ,CAAYA,KAAAA,GAAAA,CAAAA,IASZ,SAAYC,GAAAA,EAAAA,EAAAA,IAAAA,SAAAA,MAAAA,EAAAA,EAAAA,SAAAA,WAAAA,WAAAA,EAAAA,EAAAA,gBAAAA,WAAAA,kBAAAA,EAAAA,EAAAA,SAAAA,WAAAA,WAAAA,EAAAA,EAAAA,MAAAA,WAAAA,OAAAA,CAAZ,CAAYA,KAAAA,GAAAA,CAAAA,IASZ,SAAYC,GAAAA,EAAAA,EAAAA,YAAAA,QAAAA,cAAAA,EAAAA,EAAAA,mBAAAA,WAAAA,oBAAAA,CAAZ,CAAYA,KAAAA,GAAAA,CAAAA,IG7EL,IAAMgC,GAAb,wHAGE,WAEE,OADgB//M,KAAKlB,OAEtB,GANH,gCAQE,WACE,IAAIA,EAAUkB,KAAKisK,aACfntK,EAAQ6/M,kBACV7/M,EAAQ6/M,kBAEX,GAbH,+BAeE,WACE,IACIT,EADUl+M,KAAKisK,aACIiyC,SACvB,OAAgB,MAAZA,EAAyB,GACS,MAA/BA,EAAS8B,mBACZ9B,EAAS+B,iBAAiBC,UAC1BhC,EAAS+B,iBAAiBC,UACxB,QACAhC,EAAS8B,mBAAmBE,SACnC,GAxBH,6BA0BE,WAEE,OAA+B,IADjBlgN,KAAKisK,aACJozC,YACXzB,GAAauC,QACbvC,GAAawC,SAClB,KA/BH,GAAgDh4F,EAAAA,WAAnC23F,GACJ7tG,YAAc8rG,GCIhB,ICRHp4G,GDQSy6G,GAAb,8BAEI,WAAY7wM,GAAY,IAAD,oBACnB,cAAMA,IACD6H,MAAQ,CAACipM,aAAa,EAAOC,eAAe,GAF9B,CAGtB,CALL,gCAOI,WAAU,IAAD,SAECzhN,EAAUkB,KAAKlB,QACrB,OAAKA,EAAQm/M,QAKT,UAACn/M,EAAQm/M,eAAT,OAAC,EAAiBuC,QAClBxgN,KAAKqX,MAAMipM,aAAoB,SAAChP,GAAD,CAAU3nK,GAAG,mBACzC,eAAG3wB,UAAU,YAAYkoF,QAAS,kBAAM,EAAKrzB,SAAS,CAACyyI,aAAa,GAAlC,EAAlC,WAA4E,cAAGtnM,UAAU,qBAAzF,QAF+B,yBAJlCzc,YAAW,kBAAM,EAAKsxE,SAAS,CAAC0yI,eAAgB,EAAKlpM,MAAMkpM,eAAhD,GAAiE,MACrE,wBAMd,KAlBL,GAA8CR,IELjCU,GAAb,oHACE,WAAU,IAAD,QACP,OACE,SAACd,GAAD,WACE,SAAC,GAAD,CACE3mM,UAAS,yCAA0BhZ,KAAKwP,MAAMwJ,iBAArC,QAAkD,IAD7D,UAGE,iBACEA,UAAS,0CACPhZ,KAAKwP,MAAMkxM,0BADJ,QAC0B,IAFrC,WAKE,iBACE1nM,UAAS,uDACPhZ,KAAKwP,MAAMmxM,sBADJ,QACsB,IAFjC,WAKE,eACE3nM,UACE,gCACChZ,KAAKwP,MAAMoxM,WAAa,SAAW,KACnC5gN,KAAKwP,MAAMqxM,eACR,cACA,mBANR,SASG7gN,KAAKwP,MAAM48B,SAEd,eAAIpzB,UAAU,4CAAd,mBACGhZ,KAAKwP,MAAMsxM,mBADd,QAC6B9gN,KAAKwP,MAAM48B,SAExC,UAAC,GAAD,CAAKpzB,UAAU,GAAf,WAEE,UAAC,GAAD,CAAK6jE,GAAI,GAAI7jE,UAAW,UAAxB,WACE,iBACEA,UACE,WACChZ,KAAKwP,MAAMqxM,eACR,cACA,mBALR,SAQG7gN,KAAKwP,MAAMhM,cAEbxD,KAAKwP,MAAMuxM,WACV,gBAAK/nM,UAAU,sBAAf,SACGhZ,KAAKwP,MAAMuxM,eAIlB,SAAC,GAAD,CAAK/nM,UAAU,gBAGlBhZ,KAAKwP,MAAM+J,UACZ,SAAC8mM,GAAD,UAKT,KA3DH,GAAgCz9F,EAAAA,WDD5Bo+F,GAAY,YAKZl7F,GAAc,cAKdm7F,GAAY,YAKZC,GAAc,WAedC,GAAe,YAwBfC,GAAe,YASfC,GAAoB,gBAmBpBC,GAAMv9M,OAKNw9M,GAAqBD,GAAG,eAIxBE,GAAkBF,GAAG,oBAuBzB,IAAIG,GAlBJ,WACI,IAAIzzM,EAaJ,cAZWu4J,aAAey6C,KACtBhzM,EAASu4J,YAERv4J,UAAiBmD,OAAS6vM,KAC3BhzM,EAASmD,MAERnD,UAAiBrC,SAAWq1M,KAC7BhzM,EAASrC,QAERqC,UAAiBorD,oBAAAA,IAAW4nJ,KAC7BhzM,EAASorD,oBAAAA,GAENprD,GAAU,CAAC,CACrB,CAGU0zM,GACPC,GAAWF,GAAI,iBAA6BA,GAAI,eAA2B,CAC3EhkM,GAAImoF,GAAK,CAAC,EACNA,GAAE,cAAoB,EACtBA,GAAE,aAAmB,EACrBA,IACJ/0F,EAAG,MAMP,SAAS+wM,GAAgBt9M,EAAK0B,GAC1B,OAAO1B,GAAOg9M,GAAG,UAAY9yM,eAAetN,KAAKoD,EAAK0B,EACzD,CAKD,SAAS67M,GAA0Bj8M,GAC/B,OAAOA,IAAWA,IAAW07M,GAAG,WAAe17M,IAAWhD,MAAK,UAClE,CAKD,SAASk/M,GAAkCl8M,GACvC,OAAOi8M,GAA0Bj8M,IAAWA,IAAW+4D,SAAQ,SAClE,CAKD,SAASojJ,GAAan8M,GAClB,IAAIo8M,EACJ,GAAIp8M,EAAQ,CAER,GAAI27M,GACA,OAAOA,GAAmB37M,GAE9B,IAAIq8M,EAAWr8M,EAAM,WAAgBA,EAAM,YAAgBA,EAAM,YAAgBA,EAAM,YAAN,UAAiC,MAElHo8M,EAAWp8M,EAAM,eAAuBq8M,EACnCL,GAAgBh8M,EAAQy7M,aAGlBz7M,EAAM,cACbo8M,EAAWp8M,EAAM,cAAsBA,EAAM,eAAqBA,EAAM,cACxEA,EAAM,cAAoBq8M,EAEjC,CACD,OAAOD,CACV,CAMD,SAASE,GAAat8M,EAAQ8+C,GAC1B,IAAIl1C,EAAQ,GACZ,GAAIgyM,GACAhyM,EAAQgyM,GAAgB57M,QAGxB,IAAK,IAAIu8M,KAAUv8M,EACO,kBAAXu8M,GAAuBP,GAAgBh8M,EAAQu8M,IACtD3yM,EAAM3O,KAAKshN,GAIvB,GAAI3yM,GAASA,EAAMnb,OAAS,EACxB,IAAK,IAAI+tN,EAAK,EAAGA,EAAK5yM,EAAMnb,OAAQ+tN,IAChC19J,EAAKl1C,EAAM4yM,GAGtB,CASD,SAASC,GAAoBz8M,EAAQ08M,EAAUC,GAC3C,OAAQD,IAAax8F,WAAsBlgH,EAAO08M,KAAcpB,KAAgBqB,GAAWX,GAAgBh8M,EAAQ08M,GACtH,CAMD,SAASE,GAAgB/hN,GACrB,MAAM,IAAIX,UAAU,iBAAmBW,EAC1C,CAyBD,SAASgiN,GAAY1rI,EAAQp7E,GACzB,IAAK,IAAIymN,EAAKrrI,EAAO1iF,OAAS,EAAG+tN,GAAM,EAAGA,IACtC,GAAIrrI,EAAOqrI,KAAQzmN,EACf,OAAO,EAGf,OAAO,CACV,CAoDD,SAAS+mN,GAAa98M,EAAQ08M,EAAU98I,EAAOm9I,GAC3C,IAAIC,EAAW,KAGf,GAAIh9M,GAAUg8M,GAAgBp8I,EAAO27I,IAAe,CAChD,IAAI0B,EAAgBj9M,EAAM,eAAsB,CAAC,EAQjD,IAPAg9M,GAAYC,EAAcr9I,EAAK,YAAmB,CAAC,GAAG88I,KAGlDE,GAAgB,YAAcF,EAAW,KAAOpB,KAI/C0B,EAAQ,cAAyD,IAAtCC,EAAa,YAAgC,CAQzE,IANA,IAAIC,GAAclB,GAAgBh8M,EAAQ08M,GAEtCS,EAAWhB,GAAan8M,GACxB8sL,EAAU,GAGPowB,GAAcC,IAAajB,GAAkCiB,KAAcN,GAAY/vB,EAASqwB,IAAW,CAC9G,IAAIC,EAAYD,EAAST,GACzB,GAAIU,EAAW,CACXF,EAAcE,IAAcL,EAC5B,KACH,CAEDjwB,EAAQ7xL,KAAKkiN,GACbA,EAAWhB,GAAagB,EAC3B,CACD,IACQD,IAGAl9M,EAAO08M,GAAYM,GAGvBA,EAAQ,YAAkB,CAM7B,CAJD,MAAOp6M,IAGHq6M,EAAa,aAAuB,CACvC,CACJ,CACJ,CACD,OAAOD,CACV,CACD,SAASK,GAAcX,EAAU98I,EAAOm9I,GACpC,IAAIK,EAAYx9I,EAAM88I,GAStB,OAPIU,IAAcL,IAEdK,EAAYjB,GAAav8I,GAAO88I,WAEzBU,IAAc9B,IACrBsB,GAAgB,IAAMF,EAAW,cAAgBpB,IAE9C8B,CACV,CAUD,SAASE,GAAmB19I,EAAOxsD,EAAWpT,EAAQu9M,EAAeC,GAajE,IAAKvB,GAA0Br8I,GAAQ,CACnC,IAAIq9I,EAAgBj9M,EAAM,cAAqBA,EAAM,eAAsB,CAAC,EACxEy9M,EAAcR,EAAc7pM,GAAc6pM,EAAc7pM,IAAc,CAAC,GAEjC,IAAtC6pM,EAAa,cACbA,EAAa,cAAyBO,GAE1ClB,GAAat8M,GAAQ,SAAUxE,GAEvBihN,GAAoBz8M,EAAQxE,GAAM,IAAUwE,EAAOxE,KAAU+hN,EAAc/hN,KAE3EiiN,EAAYjiN,GAAQwE,EAAOxE,UACpBwE,EAAOxE,KAETwgN,GAAgBp8I,EAAOpkE,IAAUokE,EAAMpkE,KAAUokE,EAAMpkE,GAAN,eAClDokE,EAAMpkE,GA3BtB,SAAiCokE,EAAO88I,GACpC,IAAIgB,EAAgB,SAAhBA,IAIA,OAFeZ,GAAa1iN,KAAMsiN,EAAU98I,EAAO89I,IAAkBL,GAAcX,EAAU98I,EAAO89I,IAEpFzgN,MAAM7C,KAAMgJ,UAC/B,EAID,OADAs6M,EAAa,YAAgB,EACtBA,CACV,CAgB6BC,CAAwB/9I,EAAOpkE,IAGxD,GACJ,CACJ,CAkCD,SAASoiN,GAAY59M,EAAQ69M,GACzB,OAAI7B,GAAgBh8M,EAAQq7M,IAEjBr7M,EAAOxE,MAAQqiN,GAAgBrC,KAEhCx7M,GAAU,CAAC,GAAZ,aAAgC,CAAC,GAAGxE,MAAQqiN,GAAgBrC,EACxE,CAqDc,SAASsC,GAAaC,EAAU/9M,EAAQg+M,EAAcl/M,GAE5Dk9M,GAAgB+B,EAAU1C,KAC3BuB,GAAgB,4CAGpB,IAAIqB,EAAaF,EAAQ,WA5F7B,SAAyBE,EAAYC,GAEjC,GAAIvC,GAAoB,CAIpB,IAFA,IAAI7uB,EAAU,GACVqxB,EAAYhC,GAAa+B,GACtBC,IAAcjC,GAAkCiC,KAAetB,GAAY/vB,EAASqxB,IAAY,CACnG,GAAIA,IAAcF,EACd,OAAO,EAIXnxB,EAAQ7xL,KAAKkjN,GACbA,EAAYhC,GAAagC,EAC5B,CACD,OAAO,CACV,CAED,OAAO,CACV,EA0EQC,CAAgBH,EAAYj+M,IAC7B48M,GAAgB,IAAMgB,GAAYG,GAAY,0BAA4BH,GAAY59M,GAAU,KAEpG,IAAIoT,EAAY,KACZ4oM,GAAgBiC,EAAY1C,IAE5BnoM,EAAY6qM,EAAU,WAMtB7qM,EAxdiB,WAwdgBwqM,GAAYG,EAAU,KAAO,IAAMhC,GAAS9wM,EAC7E8wM,GAAS9wM,IACTgzM,EAAU,UAAiB7qM,GAE/B,IAAIirM,EAAcP,GAAY,QAC1BQ,IAAgBD,EAAW,YAC3BC,GAAex/M,QAAuCrH,IAA5BqH,EAAO,cACjCw/M,IAAgBx/M,EAAO,aAG3B,IAAIy/M,EA9SR,SAA2BL,GAEvB,IAAIK,EAAY,CAAC,EASjB,OAPAjC,GAAa4B,GAAY,SAAU1iN,IAE1B+iN,EAAU/iN,IAASihN,GAAoByB,EAAY1iN,GAAM,KAE1D+iN,EAAU/iN,GAAQ0iN,EAAW1iN,GAEpC,IACM+iN,CACV,CAkSmBC,CAAkBx+M,GAE9By+M,EAhRR,SAAuBR,EAAYC,EAAYK,EAAWD,GACtD,SAASI,EAAe1+M,EAAQ2+M,EAAUjC,GACtC,IAAIkC,EAAUD,EAASjC,GACvB,GAAIkC,EAAO,aAAiBN,EAAa,CAErC,IAAIrB,EAAgBj9M,EAAM,eAAsB,CAAC,GACP,IAAtCi9M,EAAa,cACb2B,GAAW3B,EAAc0B,EAAQ,YAAmB,CAAC,GAAGjC,IAAakC,EAE5E,CACD,OAAO,WAEH,OAAOA,EAAQ3hN,MAAM+C,EAAQoD,UAChC,CACJ,CAED,IAAIq7M,EAAY,CAAC,EACjBnC,GAAaiC,GAAW,SAAU/iN,GAE9BijN,EAAUjjN,GAAQkjN,EAAeR,EAAYK,EAAW/iN,EAC3D,IAKD,IAHA,IAAIqjN,EAAY1C,GAAa8B,GACzBnxB,EAAU,GAEP+xB,IAAc3C,GAAkC2C,KAAehC,GAAY/vB,EAAS+xB,IAEvFvC,GAAauC,GAAW,SAAUrjN,IAKzBijN,EAAUjjN,IAASihN,GAAoBoC,EAAWrjN,GAAOmgN,MAE1D8C,EAAUjjN,GAAQkjN,EAAeR,EAAYW,EAAWrjN,GAE/D,IAIDsxL,EAAQ7xL,KAAK4jN,GACbA,EAAY1C,GAAa0C,GAE7B,OAAOJ,CACV,CAoOmBK,CAAcb,EAAYj+M,EAAQu+M,EAAWD,GAG7DN,EAAah+M,EAAQy+M,GAErB,IAAIjB,IAAoB7B,MAAwB0C,EAAW,aACvDb,GAAmB1+M,IACnB0+M,IAAoB1+M,EAAO,cAG/Bw+M,GAAmBW,EAAY7qM,EAAWpT,EAAQu+M,GAA+B,IAApBf,EAChE,CAMDM,GAAY,QAA2B/B,GAASlkM,EEzhBzC,IAAMknM,GAAkB,WAClBC,GAAgB,SAChBC,GAAmB,YAKnBC,GAAW/gN,OACXghN,GAAWD,GAAQ,UACnBE,GAAYF,GAAQ,OACpBG,GAAYH,GAAQ,OACpBI,GAAoBJ,GAAQ,eAC5BK,GAAoBJ,GAAQ,eCPrCK,GAAwB,KAcrB,SAAUC,GAAUC,GAoBvB,YApBuB,IAAAA,IAAAA,GAAAA,GAClBF,IAAkBE,WAER/+C,aAAes+C,IAAoBt+C,aAC1C6+C,GAAgB7+C,mBAGTp1J,OAAS0zM,IAAoB1zM,OACpCi0M,GAAgBj0M,aAGTxF,SAAWk5M,IAAoBl5M,SACtCy5M,GAAgBz5M,eAGTytD,oBAAAA,IAAWyrJ,IAAoBzrJ,oBAAAA,IACtCgsJ,GAAgBhsJ,oBAAAA,IAIjBgsJ,EACV,CAEK,SAAUG,GAAe9kN,GAC3B,MAAM,IAAIX,UAAUW,EACvB,CAQK,SAAU+kN,GAAYlhN,GAGxB,GAFW2gN,GAIP,OAJOA,GAIK3gN,GAEhB,GAAW,MAAPA,EACA,MAAO,CAAC,EAEZ,IAAIrG,SAAcqG,EAKlB,SAASmhN,IAAY,CAGrB,OAPIxnN,IAAS2mN,IAAiB3mN,IAAS0mN,IACnCY,GAAe,0CAA4CjhN,GAI/DmhN,EAAO,UAAqBnhN,EAErB,IAAKmhN,CACf,EC3DyBJ,MAAa,CAAC,GAAf,QACEA,MAAa,CAAC,GAAf,QADnB,IAyBIK,GAA4BV,IAbO,SAASr0M,GAEnD,IAAK,IAAI2/C,EAAGjwD,EAAI,EAAGwQ,EAAI7H,UAAU3U,OAAQgM,EAAIwQ,EAAGxQ,IAE5C,IAAK,IAAIqc,KADT4zC,EAAItnD,UAAU3I,GAEN0kN,GAAQ,eAAwB7jN,KAAKovD,EAAG5zC,KACvC/L,EAAU+L,GAAK4zC,EAAE5zC,IAI9B,OAAO/L,CACV,EAKGg1M,GAAkB,SAASz1J,EAAQ/gD,GAYnC,OAXAw2M,GAAkBb,GAAAA,gBAEb,CAAEr0J,UAAW,cAAgB7tD,OAAS,SAAUstD,EAAQ/gD,GAAU+gD,EAAEO,UAAYthD,CAAI,GAErF,SAAU+gD,EAAQ/gD,GACd,IAAK,IAAIuN,KAAKvN,EACNA,EAAC,eAAwBuN,KACzBwzC,EAAExzC,GAAKvN,EAAEuN,GAGpB,EACEipM,GAAgBz1J,EAAG/gD,EAC7B,EAEK,SAAUy2M,GAAY11J,EAAQ/gD,GAKhC,SAASwhD,IAAO3wD,KAAK2O,YAAcuhD,CAAI,QAJ5B/gD,IAAMw1M,IAAyB,OAANx1M,GAChCo2M,GAAe,uBAAyBv1M,OAAOb,GAAK,iCAExDw2M,GAAgBz1J,EAAG/gD,GAGnB+gD,EAAC,UAA2B,OAAN/gD,EAAaq2M,GAAYr2M,IAAMwhD,EAAE,UAAqBxhD,EAAC,UAAoB,IAAKwhD,EACzG,CA8IK,SAAUk1J,GAAgBl8K,EAASzlC,GACrC,IAAK,IAAI7D,EAAI,EAAGy0J,EAAK5wJ,EAAK7P,OAAQ4/D,EAAItqB,EAAGt1C,OAAQgM,EAAIy0J,EAAIz0J,IAAK4zD,IAC1DtqB,EAAGsqB,GAAK/vD,EAAK7D,GAGjB,OAAOspC,CACV,CC7MM,ICJI,GAAY,GACZm8K,GAAe,WAEfC,GAAsB,gBAEtBC,GAAuB,kBAIvBC,GAAkB,aAClBC,GAAuB,kBACvBC,GAA0B,oBAC1BC,GAAiB,YACjBC,GAAuB,iBACvBC,GAAsB,gBCK7BC,GAAiB,cACjBC,GAAqB,GACrBC,GAAa,UAEbC,IADW,QACA,SACXC,GAAc32M,OAAuB,UACrC42M,GAAWD,GAAoB,KAC/BE,GAAeF,GAAwB,SAGvCG,IAFiBH,GAA0B,WAC/BxzN,KAAqB,UACU,aAC3C4zN,GAAWnkN,MAAMkD,QACjBkhN,GAAe,GAAoB,SACnCC,GAAc,GAA6B,SAE3CC,GAAqBD,GAAzB,SACIE,GAAa,YACbC,GAAoB,eACpBC,GAAkB,iBAKlB,GAAqBtjN,OAAuB,eAKzC,SAAS,GAAa6B,GAC7B,MAEA,MACA,aAGA,8CACA,KACA,QAEA,CACA,WACA,CAOO,SAASjI,GAAYhC,GAC5B,gCACA,CAIO,SAAS2rE,GAAkB3rE,GAClC,sBACA,CACO,SAAS2rN,GAAqB3rN,GACrC,YACA,CACO,SAAS,GAAe2I,EAAK0B,GACpC,0BACA,CACO,SAAS4B,GAASjM,GAEzB,0BACA,CACO,SAAS,GAAWA,GAE3B,0BACA,CAWO,SAAS4rN,GAAgBnmN,GAChC,QAWA,OAVA,WAMAzF,GADAA,GAHAA,EAAAA,EAAA,0BACA,sBACA,KACA,iBACA,0BACA,WACA,KAEA,CACA,CAOO,SAAS,GAAciK,EAAQ4hN,GACtC,KACA,eACA,cACAA,EAAA,cAIA,CAOO,SAASC,GAAY9rN,EAAO0P,GACnC,SAKA,OAJA,mBAEA2C,EAAAA,GAAAA,EAAAA,SAAAA,GAUO,SAA0BrS,EAAO0P,GACxC,SACA,eACA,eACA,2BAEA,IADA,UACA,gBACA,cACA,SAEAq8M,GACA,CACA15M,GAAAA,CACA,CACA,QACA,CAzBAA,CAAAA,EAAAA,IAEA,CACA,CA8DO,SAAS25M,GAAYhsN,EAAO0P,GACnC,kBACA,gBAGA,CAWO,IAAI,GAAU07M,IACrB,SAAsBziN,GACtB,0CACA,EAIO,SAASyxD,GAAQzxD,GACxB,0CACA,CAMO,SAAS,GAAS3I,GAEzB,yBACA,CAMO,SAASsO,GAAStO,GAEzB,yBACA,CAMO,SAASsqB,GAAUtqB,GAE1B,0BACA,CAcO,SAASkK,GAAclK,GAC9B,SACA,2BAEA,qBACA,GAMA,+BACA6pE,EAAAA,EAAAA,aAEAx3D,SAAAA,IAAAA,IAAAA,GAAA,cAPAA,GAAAA,CASA,CACA,QACA,CAIO,SAASzE,GAAYzW,GAC5B,KAEA,0BAMO,SAA0BA,GACjC,wBACA,kBACA,gBAIA,OAHA,eACA4d,EAAAA,IAAAA,GAEA,CACA,EACA,0BACA,IAAAgpD,EAAAA,EAAAA,cAAAA,GACA,IAAAA,EAAAA,EAAAA,cACA,IAAAA,EAAAA,EAAAA,eACA,IAAAA,EAAAA,EAAAA,iBACA,IAAAA,EAAAA,EAAAA,iBACA,IAAA1pD,QAAAA,EAAAA,qBAAAA,KAAAA,QAAAA,IAAAA,MAAAA,EAAAA,GACA,GACA,CACA,CAxBA,GAEA,CA+BO,SAAS,GAAW3D,EAAKm7M,EAAY1+M,GAC5C,eACA,IACA,oBACA,UACA,2BAFA,KAUA,CAFA,UAEA,CACA,CASO,SAAS8+M,GAAWv7M,EAAKw7M,EAAeC,GAC/C,MAEA,aACA,sBAEA,eACA,OACA,IACA,mDACA,oBACA,QAMA,CAFA,UAEA,CACA,CACA,QACA,CASO,SAASC,GAAO17M,EAAKm7M,EAAY1+M,GACxC,MACA,MAEA,SACA,kBAEA,eACA,OACAk/M,EAAAA,IAAAA,MAAAA,GACA,IACA,oBACA,SACAA,EAAAA,GAAAA,EAAA,eAMA,CAFA,UAEA,CACA,CACA,QACA,CASO,SAASC,GAAU57M,EAAKm7M,EAAYplF,GAC3C,MACA,MAEA,YACA,qBAEA,eACA,IAEA,uBACAzmI,EAAAA,UAAAA,OAEA,CACA,qBACAymN,IAEAzmN,EAAAA,EAAAA,IACA,CACA,UACA,SACAA,EAAAA,EAAAA,EAAAA,EAAAA,GAAAA,EAAAA,IAEAymN,GAEA,CACA,QACA,CAIO,SAAS,GAAQh0M,GAKxB,OAJA,IAEAA,EAAAA,IAAAA,EAAAA,KAAAA,EAAAA,OAAAA,EAAA,sCAEA,CACA,CACA,IAAI85M,IAA0B,CAA9BlhN,SAAAA,MAAA,iCACImhN,GAAoB,CACxB,WACA,iBACA,UACA,iBACA,gBACA,uBACA,eAQO,SAASC,GAAQ9jN,GACxB,eAKA,GAJA,0BACAihN,GAAAA,iCAGA,OACA,aAEA,SACA,eACA,iBACAv3M,EAAA,QAGA,MAEA,IADA,gBACA,YACA,qBACAA,EAAA,YAIA,QACA,CAWO,SAASq6M,GAAmBziN,EAAQI,EAAMsiN,EAASC,GAC1D,MACA,IACA,OACAr/L,YAAAA,EACAqyF,cAAAA,GASA,OAPA,IACAzH,EAAAA,IAAAA,GAEA,IACAA,EAAAA,IAAAA,GAEA0yG,GAAAA,EAAAA,EAAAA,IACA,CAKA,CAHA,UAGA,CAEA,QACA,CACA,SAASgC,GAAW7sN,GACpB,QACA,CACO,SAAS,GAAW2I,GAQ3B,OAPA,IACAmkN,GAAAA,GAAAA,SAAAA,EAAAA,IACA,eACAhC,GAAAA,EAEA,IAEA,KACA,CACO,IAAIiC,GAAYjC,IAAc+B,GAM9B,SAASG,KAChB,WACA,sCACA,CAIO,SAASC,GAAiBrgM,GACjC,aACA,OAEA,EACA,CAWO,SAASk5G,GAAS77H,EAAQ+2C,EAAOhhD,EAAOktN,EAAQC,GACvD,QAQA,OAPA,KACAC,EAAAA,EAAAA,MACA,wBACAA,EAAAA,EACAnjN,EAAAA,GAAAA,IAGA,CACA,CAOO,SAASojN,GAAYpjN,EAAQ+2C,EAAOssK,GAC3C,MAaA,OAZA,IACAF,EAAAA,EAAAA,KACA,QAEAA,EAAAA,GAAAA,GAAAA,CAAAA,EAAAA,EACAnjN,EAAAA,GAAAA,GAKAmjN,EAAAA,GAAAA,GAAAA,CAAAA,EAAAA,EAEA,CACA,CAMO,SAASG,GAAYH,EAAUpgM,GACtC,gBACA,CAIO,SAASwgM,GAASxtN,GACzB,SACA,CACO,SAASqgE,GAAWv7D,GAC3B,kBACA,CACA,SAAS2oN,GAAqBpoN,EAAQshN,GACtC,WACA,OAOA,OANA,MACA+G,EAAAA,EAGAr8L,EAAAA,EAEA,WAEA,gBAIA,GAHA,IACAA,EAAAA,KAEA,EACA,sBAEA,CACA,CA6DO,SAASs8L,GAAgB1jN,EAAQxE,EAAMJ,EAAQwjN,EAAS+E,GAC/D,WACA,mBACA3jN,EAAAA,GAAAA,GAAAA,EAAAA,GAGA,CASO,SAAS4jN,GAAe5jN,EAAQ5E,EAAQyoN,EAAkBF,GAQjE,OAPA,oBACAG,GAAAA,GAAAA,SAAAA,GACA,OACAJ,GAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAEA,IAEA,CACA,CA0BO,SAASK,GAAeC,GAM/B,OAHA,QACAA,EAAAA,GAAAA,GAAAA,CAAAA,EAAAA,KAEA,CACA,CACO,SAASC,GAAUC,EAAMC,EAAMC,EAAMC,EAAMC,EAAMC,GAExD,gBACA,WACA,WACA,KACA,IAYA,IAVA,aACAC,EAAAA,EACAC,EAAAA,EAAAA,IAAAA,CAAAA,EACAvzK,KAGA,QACAuzK,EAAAA,CAAAA,GAGA,SACA,WACA,QACA,QACA,gBACA,iCACA,MAGA,WACA,SAEA,6BAEA,WACA,EACA,QAEA/9H,EAAAA,IAGA,QAEAA,EAAAA,CAAAA,GAGA5jE,EAAAA,GAAAA,EAAAA,EAAAA,EACA,MAEA,QACA2hM,EAAAA,GAAAA,EAtBA,CAwBA,CACA,CACA,QACA,CClyBO,IAQIC,GAA6B,mCCZjC,SAASC,GAAsBn8M,EAAKua,GAE3C,YADA,QAAAA,GAAAA,QACA,gBACA,EAEA,mCACA,CAIO,SAAS6hM,GAAaC,IAC7B,iBACAA,EAAAA,GAGA,MAhBe,IAefA,EAAAA,KAAAA,MAAAA,IACA,IACA,EAjBe,GAiBf,qBACA,EAlBe,GAkBf,qBACA,EAnBe,GAmBf,sBACA,sBAKA,OAJAnrI,EAAA,IAAAA,EAAA,mCACAorI,EAAAA,EAAA,iBACA1xL,EAAAA,EAAA,kBAEA,UAzBe,KAwBf2xL,EAAAA,EAAA,kBACA,iBACA,CAWO,SAASC,GAAmBnqN,EAAStF,EAAKwI,EAAYC,EAAcV,GAC3E,0DACA,CC9BA,IAAI2nN,GAAY,SAQZC,GAAU,OAIVC,GAAU,OACVC,GAAa,WACbC,GAAoB,iBACpBC,GAAa,KACbC,GAAqB,KACrBC,IAAe,EACfC,GAAqB,KACrBC,GAAoB,KACxB,SAASC,GAAa5H,EAAUvrM,GAChC,SACA,MACA,IAEA,KADA82C,EAAAA,KAAAA,GACA,CACA,kBACA,IACAA,EAAAA,KAAAA,EAEA,CAIA,CAFA,UAEA,CACA,MACA,IAEAA,GAAAA,IADA,OACAA,GAIA,CAFA,UAEA,CAEA,CACA,QACA,CAYO,SAASs8J,GAAcpqN,GAC9B,WACA,eACA,KAGA,aAEA,OAEA,IACA,CAQO,SAASqqN,KAChB,0CACA,CAMO,SAAS,KAChB,YACA,OAGA,MACA,CAQO,SAASC,KAChB,8CACA,CAMO,SAAS,KAChB,YACA,SAEA,GA9GkB,WA+GlB,CAQO,SAASC,KAChB,gDACA,CAMO,SAASC,KAChB,YACA,UAEA,GAjImB,YAkInB,CAQO,SAASC,KAChB,4CACA,CAiBO,SAASC,GAAYC,GAC5B,UACA,2BACA,KACA,QAEA,CACA,sCACA,SAEA,GArKkB,WAsKlB,CAeO,SAASC,KAChB,UApLqB,cAqLrB,CAQO,SAASC,KAChB,qDACA,CAMO,SAASC,KAChB,YACA,aAEA,IACA,CA+BO,SAASC,KAChB,WACA,qCAGA,QADAhB,GAAAA,EAAA,YACA,kBACAD,GAAAA,GAAAA,EAAAA,KAAAA,GAAAA,EAAAA,GACA,CACA,SACA,CAIO,SAASkB,GAAaC,GAE7B,QADA,QAAAA,EAAAA,OACA,GACA,eACAA,EAAAA,GAAAA,EAAA,+BACA,CACA,4BAEA,aACA,eACA,2DACA,CACA,aACA,+BACA,KACA,UAEA,CACA,WACA,CAIO,SAASC,GAAQ/jM,GACxB,wCACA,KAOA,MANA,qBACAgkM,EAAAA,aAAAA,EAAAA,MAAAA,gBAAAA,EAAAA,QAAAA,aAAAA,EAAA,SAEA,OACAA,EAAAA,KAAAA,UAAAA,IAEA,GACA,CAaO,SAASC,KAIhB,OAHA,YACAlB,GAAAA,MAAAA,QAAAA,KAAAA,aAEA,EACA,CAMO,SAASmB,GAAiBC,GACjC,SACA,IACAv9J,IAAAA,GAAAA,SACA,oBACA,UACAA,EAAAA,GAAAA,EAAAA,aAKA,CAFA,UAEA,CACA,QACA,CACO,SAASw9J,KAOhB,OANA,YACAtB,UAAAA,iBAAAA,KACA,OACAA,GAAAA,KAAAA,GAAAA,GAAAA,IAAAA,oBAGA,EACA,CAKO,SAASuB,KAChB,SACA,IAEAz9J,IADA,MAKA,CAFA,UAEA,CACA,QACA,CCpWA,IAEI09J,GAFAC,GAAgB,CAAC,aAAc,kBAAmB,oBAAqB,aACvEC,GAAe,KAEnB,SAASC,GAAmB5rN,EAAM7H,GAClC,kBACA,gBACA,QACA,MACA,iBACA,SACAqH,EAAAA,GAAA,UAEA,CACA,CACA,CASO,SAASqsN,GAAY1zN,GAC5B,SAIA,OAHA,0BACAqf,EAAAA,IAXA,WAEA,sBAIA,OAHA,IACAm0M,GAAAA,EAAAA,qBAEA,EACA,CAIAn0M,IAEA,qBACA,CACO,SAASs0M,GAAiB3zN,GACjC,QACAszN,GAAAA,CAAAA,EACA,4BACAA,GAAAA,GAAAA,IAAAA,GAAAA,GAAAA,GAAAA,EAEA,CACA,SACA,CCrBA,SAASM,GAAwB7kL,GACjC,SACA,4BAEA,EACA,CACA,SAAS8kL,GAAc1oK,EAAMjkD,GAC7B,aFiKA,aACA,QAEA,GA7KiB,WEUjB,MACA,YACA,OACA4sN,EAAAA,GAEA,UACAC,EAAAA,GAAAA,EAEA,CACA,CACA,IAAIC,GAAJ,WACA,yBACA,QAAAC,GAAAA,GACA,WACAC,EAAA,YACAA,EAAA,SACA,EA7B6B,OAJG,mBAkChCC,EACA,SACA,OACAC,EAAAA,KAAAA,UAAAA,IAEA,gCACAplJ,EAAAA,UAAAA,GAAAA,GAAAA,IACAklJ,EAAA,UACA,CAEA,OADAF,EAAAA,SAAAA,cACA,CACA,CAlBA,GAoBO,SAASK,GAAcC,EAAMt0N,GACpC,+BACA,CACA,IAAIu0N,GAAJ,WACA,cACA,mCAIA,cAIA,IAKA,EACA,EACA,EACA,EARA,IAIA,KAKApK,GAAAA,EAAAA,MAAAA,SAAAA,GAuEA,gBACA,KAyCA,MAzCA,CAIA,SACA,EA1I8B,QA0I9B,YAQA,GANA,KACAza,GAAAA,EAGA8kB,EAAAA,IAAAA,EAEA,IAEA,OACAN,EAAAA,MAAA,QACAO,IACAC,EAAAA,IAAAA,EAAA,mBAGA,QACA,0EACA,kBACAR,EAAAA,MAAA,QACA,MACAA,EAAA,kBAGAA,EAAA,gBAEA,CA7BA,CA+BA,CAUA,gBACA,gBACA,cACAS,EAAA,YAEA,EAdA,YACAC,EAAAA,GAAAA,EAAAA,oBAAAA,GACAC,EAAAA,GAAAA,EAAAA,sBAAAA,GACAC,EAAAA,GAAAA,EAAAA,gBAAAA,IACAC,EAAAA,GAAAA,EAAA,yBACA,CA9GAC,CAAAA,GAAAA,CAAAA,GACAd,EAAAA,oBAAAA,WAAA,UACAA,EAAAA,sBAAAA,WAAA,UACAA,EAAAA,wBAAAA,WAAA,UACAA,EAAA,2CAMAA,EAAAA,cAAAA,SAAAA,EAAAA,EAAAA,EAAAA,EAAAA,QACA,QAAAD,GAAAA,GACA,sBACA,KACA,YAIA,kBACA,iBAkBAS,EAAAA,SAAAA,IAAAA,EAAA,6BAlBA,CACA,MAEA,oBACA,aACAR,EAAAA,GAAAA,EAAA,SACAM,EAAAA,IAAAA,EAEA,MAGA,MACAN,EAAAA,GAAAA,EAAA,SAGAe,EAAAA,EAAAA,EACA,CAKA,EAKAf,EAAA,0BACAL,GAAAA,OAAAA,GACAa,EAAAA,UAAAA,EACA,EAKAR,EAAA,2BACAL,GAAAA,QAAAA,GACAa,EAAAA,QAAAA,EACA,EAIAR,EAAAA,0BAAAA,WACAO,EAAAA,EACAD,EAAAA,CAAAA,CACA,EAMAN,EAAA,oBAmDA,GACA,qBAuEA,CApNA,GAsNA,SAASgB,GAAW/mI,GACpB,gBACA,CAUO,SAASgnI,GAAehnI,EAAQinI,EAAUjB,EAAOnxJ,EAAKgM,EAAYilJ,QACzE,QAAAA,GAAAA,GACAiB,GAAAA,GAAAA,cAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EACA,CAMO,SAASG,GAAelnI,EAAQjnF,GACvCguN,GAAAA,GAAA,gBACA,CCnSO,SAASI,GAAgB93I,GAChC,SAKA,OAJA0xI,GAAAA,GAAAA,SAAAA,EAAAA,GACAqG,EAAAA,GAAAA,EACAA,EAAAA,GAAAA,CACA,IACA,KACA,CCZO,IAAIC,GAAcF,GAAgB,CACzCG,aAAAA,EACAC,eAAAA,ICAIC,IDEiCL,GAAgB,CACrDM,GAAAA,EACAC,WAAAA,EACAC,IAAAA,SCL0BhyN,GACtBiyN,QAAwBjyN,EAK5B,SAASkyN,KACT,YACA,oBAEA,IACA,CAOA,SAASC,GAA0BC,GACnC,IACA,YACA,YAEA,4BACA,0DACAz6J,EAAAA,QAAAA,EAAAA,GACA,uBAEA,GADAA,EAAA,eACA,EACA,QAKA,CAFA,SAEA,CACA,WACA,CAKA,SAAS06J,KACT,YACA,sBAEA,IACA,CAIO,SAASC,KAChBT,IAAAA,EACAI,IAAAA,CACA,CAaO,SAASM,GAAsBjvL,GAItC,OAHA,kBACAuuL,KAAAA,GAAAA,GAAAA,eAEA,EACA,CACO,SAASW,GAAmBnoI,EAAQtmF,GAC3C,WACA,YACA,IACA,mBAKA,CAHA,UACA8tN,IAAAA,EACAR,GAAAA,EAAAA,EAAA,mDAAAl5J,UAAAA,GAAAA,KACA,CAEA,WACA,CACO,SAASs6J,GAAmBpoI,EAAQtmF,EAAMvH,GACjD,WACA,YACA,IAEA,OADAm7D,EAAAA,QAAAA,EAAAA,IACA,CAKA,CAHA,UACAk6J,IAAAA,EACAR,GAAAA,EAAAA,EAAA,oDAAAl5J,UAAAA,GAAAA,KACA,CAEA,QACA,CACO,SAASu6J,GAAiBroI,EAAQtmF,GACzC,WACA,YACA,IAEA,OADA4zD,EAAA,eACA,CAKA,CAHA,UACAk6J,IAAAA,EACAR,GAAAA,EAAAA,EAAA,2DAAAl5J,UAAAA,GAAAA,KACA,CAEA,QACA,CACO,SAASw6J,GAAwBrvL,GAIxC,OAHA,kBACA2uL,KAAAA,GAAAA,GAAAA,iBAEA,EACA,CAUO,SAASW,GAAqBvoI,EAAQtmF,GAC7C,WACA,YACA,IACA,mBAKA,CAHA,UACAkuN,IAAAA,EACAZ,GAAAA,EAAAA,EAAA,qDAAAl5J,UAAAA,GAAAA,KACA,CAEA,WACA,CACO,SAAS06J,GAAqBxoI,EAAQtmF,EAAMvH,GACnD,WACA,YACA,IAEA,OADAm7D,EAAAA,QAAAA,EAAAA,IACA,CAKA,CAHA,UACAs6J,IAAAA,EACAZ,GAAAA,EAAAA,EAAA,sDAAAl5J,UAAAA,GAAAA,KACA,CAEA,QACA,CACO,SAAS26J,GAAwBzoI,EAAQtmF,GAChD,WACA,YACA,IAEA,OADA4zD,EAAA,eACA,CAKA,CAHA,UACAs6J,IAAAA,EACAZ,GAAAA,EAAAA,EAAA,6DAAAl5J,UAAAA,GAAAA,KACA,CAEA,QACA,CClJO,ICzBH,GDyBO46J,GAA6B,8BAC7BC,GAA0B,2BAC1BC,GAA4B,+BEpB5BC,GAAuB,0DAGvBC,GAAa,cACbC,GAA0B,uCAC1BC,GAAsB,YACtBC,GAAkB,gBDVtB,SAASC,GAAgClpI,EAAQlqF,EAAKwV,GAC7D,eACA,UAEA,iBAGA,IAFA,QACA,SACA,UACA3S,IACAwwN,EAAAA,EAAA,uBAEAl0K,EAAAA,CACA,CACA,QACA,CACO,SAASm0K,GAAgBppI,EAAQtmF,GACxC,MAUA,OATA,IAEAA,EAAAA,GAAAA,EAAA,aAEA,aACA2vN,EAAAA,EAAA,iBACArC,GAAAA,EAAAA,EAAA,kEAAAttN,KAAAA,IAAA,IAGA,IACA,CACO,SAAS4vN,GAAmBtpI,EAAQ/rF,EAAO+iF,GAElD,MASA,YAVA,QAAAA,EAAAA,MAEA,IACAA,EAAAA,GAAAA,MACA/iF,EAAAA,GAAAA,IACA,sBACAs1N,EAAAA,EAAA,0BACAvC,GAAAA,EAAAA,EAAA,2EAAA/yN,MAAAA,IAAA,KAGA,IACA,CACO,SAASu1N,GAAgBxpI,EAAQvsF,GACxC,sBACA,CACO,SAASg2N,GAAoBzpI,EAAQjnF,GAC5C,MAOA,OANA,GACA,iBACA2wN,EAAAA,EAAA,mBACA1C,GAAAA,EAAAA,EAAA,sEAAAjuN,QAAAA,IAAA,IAGA,IACA,CACO,SAAS4wN,GAAsB3pI,EAAQlyB,GAC9C,MACA,MAEA,WACA,iBACA87J,EAAAA,EAAA,mBACA5C,GAAAA,EAAAA,EAAA,wEAAAl5J,UAAAA,IAAA,GAEA,CACA,WACA,CACO,SAAS+7J,GAAuB7pI,EAAQnf,GAC/C,MACA,SACAkgJ,GAAAA,GAAAA,SAAAA,EAAAA,GACA,eAEA,IACA9sN,EAAAA,KAAA,YAIA,CAFA,UACA+yN,GAAAA,EAAAA,EAAA,mCAAAl5J,UAAAA,KAAA,EACA,CAEA75D,EAAAA,GAAAA,EAAAA,EAAAA,MACAqK,EAAAA,GAAAA,EAAAA,EAAAA,GACAwrN,EAAAA,GAAAA,CACA,IACAjpJ,EAAAA,CACA,CACA,QACA,CACO,SAASkpJ,GAAyB/pI,EAAQgqI,GACjD,MACA,SACAjJ,GAAAA,GAAAA,SAAAA,EAAAA,GACA1jK,EAAAA,GAAAA,EAAAA,EAAAA,GACA4sK,EAAAA,GAAAA,CACA,IACAD,EAAAA,CACA,CACA,QACA,CACO,SAASE,GAAelqI,EAAQ9iF,GACvC,oCACA,CACO,SAASitN,GAAkBnqI,EAAQvuC,EAAOulC,EAAWozI,GAC5D,MAQA,OAPA,IACA34K,EAAAA,GAAAA,IACA,WACA44K,EAAAA,EAAA,eACArD,GAAAA,EAAAA,EAAA,mEAAA70N,KAAAA,IAAA,IAGA,IACA,CACO,SAASm4N,GAAYh6N,GAC5B,aACA,2BACA,EAI4B,GAAK,CACjCi6N,gBAAAA,IACAC,cAAAA,IACAC,oBAAAA,KACAC,kBAAAA,KACAC,eAAAA,KACAC,mBAAAA,MACAC,qBAAAA,QAEA,+BACA3sH,GAAAA,YAAAA,GACAA,GAAAA,eAAAA,GACAA,GAAAA,YAAAA,GACAA,GAAAA,gBAAAA,GACAA,GAAA,qBACAA,GAAA,sBACAA,GAAA,wBACAA,GAAAA,WAAAA,GACAA,GAAAA,cAAAA,GACAA,GAAAA,UAAAA,GACAA,GAAAA,KAAAA,GEjIO,SAAS4sH,GAAoBjgN,EAAMkgN,EAAUC,EAAchrI,EAAQirI,EAAkBC,GAC5F,MACAF,EAAAA,GAAAA,EAAAA,IAAAA,IACA,OACAprJ,GAAAA,IACAA,GAAAA,KACAtL,GAAAA,6CAEA,SACA,SACA62J,EAAAA,EAAAA,YACA,QAEA,cACA,OACAjtH,EAAAA,KAAAA,GAAAA,IAAAA,MACAA,EAAAA,KAAAA,EACAA,EAAAA,IAAAA,GAAAA,CAAAA,EACAA,EAAAA,KAAAA,GACAA,EAAAA,KAAAA,CAAAA,EACAA,EAAAA,SAAAA,EACAA,EAAAA,SAAAA,EAEAA,GAOA,OALA,OACA6iH,GAAAA,GAAAA,SAAAA,EAAAA,GACAqK,EAAAA,KAAAA,GAAAA,CACA,IAEA,CACA,EACA,WACA,aACA,CAUAC,EAAAA,OAAAA,EAEA,CAdA,OC1CI,GAAJ,WAIA,oBACA,qBACAC,IAAAA,EACA5xN,KAAAA,EACAmnE,WAAAA,EACAmpJ,aAAAA,GAEA,WACAjE,EAAAA,IAAAA,EACAA,EAAA,iBACAA,EAAA,mBACAA,EAAA,oBACA,CAGA,OAFAr3J,EAAAA,aAAAA,0CACAA,EAAAA,SAAAA,YACA,CACA,CApBA,GCAImzI,GAAJ,WAIA,sBACA,qBACAypB,IAAAA,EACAvyN,QAAAA,EACAwyN,cAAAA,EACA1qJ,WAAAA,GAEA,WACAklJ,EAAAA,IAAAA,EACAhtN,EAAAA,GAAAA,GACAgtN,EAAA,gBACAA,EAAA,mBACAA,EAAA,qBACA,IACAA,EAAA,gBAEA,CAGA,OAFAlkB,EAAAA,aAAAA,4CACAA,EAAAA,SAAAA,cACA,CACA,CAxBA,GCHI2pB,GACJ,WAIA,qBACA9xN,KAAAA,EACAo9C,KAAAA,EACA7iD,MAAAA,EACAk9B,MAAAA,EACAG,IAAAA,EACAC,IAAAA,EACAk6L,OAAAA,GAKA,WACA,ECdIC,GAAJ,WAIA,8BACA,qBACAJ,IAAAA,EACAK,QAAAA,EACA9qJ,WAAAA,GAEA,WACAklJ,EAAAA,IAAAA,EACA,aACA6F,EAAAA,MAAAA,EAAAA,EAAAA,OAAAA,EACAA,EAAAA,IAAAA,MAAAA,IAAAA,OAAAA,OAAAA,EAAAA,EACAA,EAAAA,IAAAA,MAAAA,IAAAA,OAAAA,OAAAA,EAAAA,EACAA,EAAA,iBACAA,EAAAA,MAAAA,EACAA,EAAAA,OAAAA,MAAAA,IAAAA,OAAAA,OAAAA,EAAAA,EACA7F,EAAAA,QAAAA,CAAAA,GACAA,EAAA,mBACAA,EAAA,oBACA,CAGA,OAFA2F,EAAAA,aAAAA,2CACAA,EAAAA,SAAAA,aACA,CACA,CA1BA,GCAIG,GAAJ,WAIA,0BACA,qBACAP,IAAAA,EACA5xN,KAAAA,EACAjG,IAAAA,EACAyhB,SAAAA,EACA2rD,WAAAA,EACAmpJ,aAAAA,EACA9sN,GAAAA,GAEA,WACA6oN,EAAAA,IAAAA,EACAA,EAAAA,GAAAA,GAAAA,EAAAA,GACAA,EAAAA,IAAAA,GAAAA,EAAAA,GACAA,EAAA,iBACA,WACAA,EAAA,gBAEAA,EAAA,mBACAA,EAAA,oBACA,CAGA,OAFA8F,EAAAA,aAAAA,6CACAA,EAAAA,SAAAA,eACA,CACA,CA5BA,GCDIC,GAAJ,WAIA,0BACA,qBACAR,IAAAA,EACA5xN,KAAAA,EACAjG,IAAAA,EACAyhB,SAAAA,EACA62M,UAAAA,EACAC,eAAAA,EACAC,YAAAA,EACAC,iBAAAA,EACAC,cAAAA,EACAtrJ,WAAAA,EACAmpJ,aAAAA,GAEA,WACAjE,EAAAA,IAAAA,EACAA,EAAAA,IAAAA,GAAAA,EAAAA,GACAA,EAAA,iBACAA,EAAA,mBACAA,EAAA,qBACA,IACAA,EAAAA,cAAAA,EAAAA,cACAA,EAAA,oBACAA,EAAAA,eAAAA,EAAAA,eACAA,EAAAA,UAAAA,EAAAA,UACAA,EAAA,oCACAA,EAAAA,YAAAA,EAAAA,YAEA,CAGA,OAFA+F,EAAAA,aAAAA,wDACAA,EAAAA,SAAAA,0BACA,CACA,CApCA,GCSA,SAASM,GAAWn4N,EAAOo4N,GAC3B,QAiBA,OAhBA,YACA,sBACA/lN,EAAAA,KAAA,cACA,iBAEAA,EADA,eACAA,EAAA,WAGAA,GAAAA,IAKAA,EAAAA,EAAAA,+BAGA,KACA,CACA,SAASgmN,GAAeC,EAAUtmD,GAClC,QAmBA,OAlBA,IACA,YACAumD,EAAAA,EAAAA,SAAAA,EAAAA,aAAAA,GAGA,YAEAA,EAAAA,GAAAA,GAAAA,IAEA,aAEAA,EAAAA,EAAAA,MAAAA,EAAAA,UAAAA,IAAAA,KAAAA,EAAAA,QAAAA,KAAAA,KAAAA,EAAAA,OAAAA,OAIA,sEACAA,EAAAA,EAAAA,KAAAA,GAEA,KACA,CAuBA,SAASC,GAAgBhkI,GACzB,4CACA,CACA,SAASikI,GAAiBC,GAC1B,YACA,QAEArnM,EADA,YACAA,EAAAA,MAGAA,GAAAA,GAGA,oBACA,OACAA,IAAAA,EACA1oB,IAAAA,EAEA,CAiBA,SAASgwN,GAAsBC,GAC/B,WACA,KACA,IAGA,WAEApkI,EAAAA,GAAAA,EAAAA,YAEA,0BAEAA,EAAAA,GAAAA,EAAAA,MAAAA,YAEA,kCACAA,EAAAA,GAAAA,EAAAA,UAAAA,YAEA,SACAA,EAAAA,OAEA,sBACAA,EAAAA,EAAAA,kBAEA,mCAEAA,EAzCA,SAAwBpS,GAGxB,IAFA,SACA,gBACA,oBACA,WACA,SACA1/B,GAAAA,IAAAA,EAAAA,EAAAA,GACA+jK,KAEAv+M,EAAAA,KAAAA,EACA,CACA,OACAmpB,IAAAA,EACA1oB,IAAAA,EAEA,CA0BA6rF,CAAAA,EAAA,cAEA,4BAEAA,EAAAA,GAAAA,EAAAA,OAAAA,YAEA,SACAA,EAAAA,GAAAA,OAEA,CACA,mCACA,iBACA,IACA+jI,GAAAA,MAEAA,GAAAA,SAAAA,EAAAA,UAEA,IACA/jI,EAAAA,GAAAA,GAEA,CAMA,CAJA,UAGAA,EAAAA,GAAAA,GACA,CAEA,WACAnjE,IAAAA,GACA1oB,IAAAA,KAEA,CA4DA,SAASkwN,GAAc7mD,GAEvB,SACA,QACA8mD,EAAAA,EAAAA,UAAAA,EAAA,UAEA,IACA,IACA,EADA,wBACA,+BACAA,EAAAA,GAAAA,EAAA,gBAIA,CAFA,UAEA,CAGA,QACA,CAKO,SAASC,GAAiBH,GACjC,KACA,IACA,WACA,YACA,WASA,OARA,cACA,UAGA5mD,EAAAA,GADA4mD,EAAAA,EAAAA,QAGAvmN,EAAAA,GAAAA,GAAAA,IAEA,+BACA,QAEA,CACA,CAIA,CAFA,UAEA,CAGA,gBACA,CACA,IAAI2mN,GAAJ,WAIA,wBACA,qBACA3B,IAAAA,EACA4B,WAAAA,EACA3B,cAAAA,EACA1qJ,WAAAA,EACAmpJ,aAAAA,GAEA,WACAjE,EAAAA,IAAAA,GAjOA,SAA8B9xN,GAC9B,IACA,SACA,mDAKA,CAFA,UAEA,CACA,QACA,CAwNA,KACA,IACA4sE,EAAAA,CAAAA,GAEAklJ,EAAA,2BACAA,EAAA,mBACAA,EAAA,qBACA,IACAA,EAAA,iBAEA,IACAA,EAAAA,GAAAA,KAIAA,EAAA,4BACAA,EAAA,wBACAA,EAAA,4BACA,kBACAA,EAAA,+BAEA,OACAA,EAAAA,GAAAA,EAAAA,IAEA,iBACAA,EAAA,6BAGA,iBACAA,EAAA,qBAGA,CA2DA,OA1DAkH,EAAAA,oBAAAA,SAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,GACA,MACA,cACA,aACA,gBACA/uH,EAAAA,IAAAA,EACAA,EAAAA,WAAAA,EACAA,EAAAA,aAAAA,EACAA,EAAAA,MAAAA,GAAAA,GAAAA,GAAAA,GACAA,EAAAA,IAAAA,GAAAA,GAAAA,GACAA,EAAA,WACAA,EAAAA,aAAAA,GAAAA,GAAAA,GAAAA,GACAA,EAAAA,SAAAA,EACAA,CACA,EACA+uH,EAAAA,oBAAAA,SAAAA,EAAAA,EAAAA,EAAAA,GACA,oBACA5M,GAAAA,EAAA,8DAEA,OADA,qBAAA6M,WAAAA,IAAA,IAEA,EACAD,EAAAA,UAAAA,YAAAA,WACA,MACA,OAAI,EAAJ,aAAI,EAAJ,aAAI,EAAJ,eAAI,EAAJ,gBAAI,EAAJ,eAAI,EAAJ,KAAI,EAAJ,WACA,sBACA5M,GAAAA,GAAAA,SAAAA,GAAA,gCACA1qN,EACA,UACA21N,IAAAA,QAEA,aACAptH,EAAAA,cAAAA,EACAA,EAAAA,WAAAA,EACAA,EAAAA,aAAAA,EACAA,EAAAA,aAAAA,EACAA,EAAAA,GAAAA,EACAA,EAAAA,SAAAA,EACAA,CACA,EAIA+uH,EAAAA,sBAAAA,SAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,GACA,MACA,OACAC,WAAAA,EACAhvH,EAAAA,CAAAA,EACAA,EAAA,gBACAA,EAAAA,QAAAA,EACAA,EAAAA,MAAAA,EACAA,EAAAA,SAAAA,EACAA,IAGA,EACA+uH,EAAAA,aAAAA,8CACAA,EAAAA,SAAAA,gBACAA,EAAAA,YAAAA,GACA,CACA,CA1GA,GA4GIE,GAAJ,WACA,kBACA,qBACAjwN,GAAAA,EACAkwN,QAAAA,EACAL,SAAAA,EACAh0N,QAAAA,EACAs0N,aAAAA,EACAlxN,MAAAA,EACAmxN,YAAAA,GAEA,WACA,GAvVA,SAAqCr5N,GACrC,IACA,SACA,wCAKA,CAFA,UAEA,CACA,QACA,CA6UA,IAiBA8xN,EAAA,oBACAA,EAAA,kBACAA,EAAAA,MAAAA,EAAAA,MACAA,EAAA,8BACAA,EAAA,gCArBA,CACA,QACA,WACA,QACAvqN,EAAAA,EAAAA,OAAAA,GAAAA,GAEAuqN,EAAA,yBACAA,EAAA,sCACA,4BACAA,EAAA,YA/NA,SAAqB5pN,GACrB,MACA,QACA,kBACAmxN,EAAAA,GACA,QACA,IAYA,GAXAtL,GAAAA,GAAAA,SAAAA,GACA,mBACA,qBACA,oBACAuL,GAAAA,EAAA,YACAD,EAAAA,KAAAA,EACA,CACA,IAIA,EADA,MAOA,IALA,QACA,aACA,IACA,IACA,IACA,MAKA,IADAthN,GAFA,iBACA,kBAVA,MAYA,CAEA,YACAshN,EAAAA,OAAAA,EAAAA,GACA,KACA,CAEAE,EAAAA,EACAC,EAAAA,EACA96M,IACAE,GACA,CAEA,CACA,QACA,CAmLA,IACAkzM,EAAAA,MAAAA,GAAAA,EA9OA,SAA2B2H,GAC3B,SAWA,OAVA,IACA,MACA1L,GAAAA,EAAAA,KAAAA,SAAAA,GACA7lN,GAAAA,EAAAA,IACA,IAGAA,EAAAA,EAAAA,KAAAA,IAGA,CACA,CAiOA4pN,CAAAA,IACAA,EAAAA,aAAAA,GAAAA,EAAAA,cAAAA,EAAAA,YAAA,SACA,IACAllJ,EAAA,gCAEA,CAQA,CAyBA,OAxBAssJ,EAAAA,UAAAA,YAAAA,WACA,MACA,OACA,kCACA9M,GAAAA,EAAA,mDAWA,OAVA,GACAnjN,GAAAA,EAAAA,GACAkwN,QAAAA,EAAAA,QACAL,SAAAA,EAAA,SACAh0N,QAAAA,EAAA,QACAs0N,aAAAA,EAAA,aACAlxN,MAAAA,EAAAA,QAEA,sBACA+hG,CAEA,EACAivH,EAAAA,oBAAAA,SAAAA,EAAAA,GACA,sCACA9M,GAAAA,EAAA,8DACAvyJ,EAAA,YAEA,OADA,qBAAAw/J,YAAAA,IAEA,EACA,CACA,CA7DA,GA+DIK,GAAJ,WACA,gBACA,qBACAtuM,MAAAA,EACAjrB,OAAAA,EACAw5N,SAAAA,EACA5xN,SAAAA,EACAuI,KAAAA,GAEA,WAIA,GAHAwhN,EAAA,cAGA,qBACA,QACAA,EAAA,QACAA,EAAA,OA3ce,cA4cfA,EAAA,eACAA,EAAA,YACAA,EAAA,OACA,uBACA,iBACAA,EAAA,0BACAA,EAAA,kBACAA,EAAA,uBAEA,MAEAA,EAAA,cACAA,EAAA,gBACAA,EAAA,oBACAA,EAAA,oBACAA,EAAA,YACAA,EAAA,cAEAA,EAAAA,aAAAA,EAAAA,OAAA,OACAA,EAAAA,aAAAA,EAAAA,SAAA,OACAA,EAAAA,aAAAA,EAAAA,SAAA,OAEAA,EAAA,wBACAA,EAAAA,aAAAA,EAAAA,MAAAA,WAAA,OACAA,EAAAA,aAAAA,EAAAA,KAAAA,WAAA,MACA,CAkBA,OAjBA4H,EAAAA,oBAAAA,SAAAA,GACA,oBACA,EACAA,EAAAA,UAAAA,YAAAA,WACA,WACA,OACAtuM,MAAAA,EAAA,MACAjrB,OAAAA,EAAA,OACAw5N,SAAAA,EAAA,SACA5xN,SAAAA,EAAA,SACAuI,KAAAA,EAAA,KAEA,EAGAopN,EAAAA,MAAAA,uFACAA,EAAAA,SAAAA,GACA,CACA,CA7DA,GC7bIE,GAAiB,cACjBC,GAAiB,cAEjBC,GAAa,UAKbC,GAAmB,KACnBC,GAAmB,KACnBC,GAAqB,KACrBC,GAAO,KACPC,GAAe,CAAC,EAChBC,GAAsB,CAAC,EAUpB,SAASC,GAAcz8N,EAAQmuF,GAEtC,2BAOA,OANA,IAGAuuI,EAAAA,GAAAA,OAAAA,GAAAA,EAAAA,GACAF,GAAAA,OAAAA,GAEA,CACA,CACA,SAASG,GAAcC,GACvB,UACA,aAGA,CAmBA,SAASC,GAAiBC,EAAcj1N,GACxC,sCACA,8BAGA,CAgBO,SAASk1N,GAAiBzI,EAAMt0N,GACvC,MACA,KAEA48N,EAAAA,EAAAA,oBAEA,MACA,kBAEAA,EADA,SACAA,EAAAA,OAGAA,GAAAA,EAEA,CAKA,OAJA,IAEAA,EAAAA,GAAAA,GAAAA,GAAAA,CAAAA,GAAA,SAEA,CACA,CACO,SAASI,GAAgBC,EAAY9uI,GAC5C,MACA,EA9DA,SAAgC8uI,GAChC,kCAIA,GAFA/0F,GAAAA,EAAAA,SAAAA,EAAAA,aAAAA,GAAAA,IACAA,GAAAA,EAAAA,OAAAA,EAAAA,YAAAA,IAAAA,KAAAA,IACA,eAEA,aACA,4BACAg1F,GAAAA,EAAAA,qBAEA,4BACAA,GAAAA,EAAAA,qBAEAJ,EAAAA,QAAAA,CACA,CACA,QACA,CA6CA,QACA,cACA,WAEA,iBACA,OACAK,UAAAA,WACA,eAGA,YAMA,OALA,cAGAluK,EAAAA,GAAAA,IAEA,CACA,IAEA,uBAEA++B,GAAAA,IAAAA,CACA,EACAqe,EAAAA,IAAAA,SAAAA,EAAAA,EAAAA,EAAAA,EAAAA,GACA,SACA,WA/DA,SAA0BywH,EAAcj1N,GACxC,sCACA,kCAIA,OACA,CAwDA,OACA,SACA,YACA,iBAOA,IANA,QACA2nN,EAAAA,GAAAA,EAAA,gBACAhyI,EAAAA,GAAAA,EAAA,iBAGA0qD,GAAAA,EAAAA,SAAAA,GAAAA,EAAAA,GAAAA,KACA,OACA,WACA,kBACA,IAEA,EAFA,KAEA,MAEA,QACA,eACAzsC,EAAAA,QAAAA,GACAysC,GAAAA,EAAAA,GAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,GACA,CACA,CACA,GAEAA,GAAAA,EAAAA,UAAAA,GAAAA,EAAAA,KAAAA,GAEA,CACA,WACA,2BACAA,GAAAA,EAAAA,SAAAA,KAAAA,KAAAA,IAEA,YACAk0F,IAAAA,IAAAA,MAAAA,CAAAA,GAAA,YAEA,IACAl0F,GAAAA,EAAAA,WAAAA,OAAAA,KAAAA,KAGAA,GAAAA,EAAAA,OAAAA,GAAAA,EAAAA,KAAAA,KACA,iBACAk1F,EAAAA,GAAAA,EAAAA,IACA3oN,GAAAA,CACA,CACA,QACA,EACA43F,EAAAA,IAAAA,SAAAA,GACA,SAIA,OAHA,kBACAjqG,GAAAA,EAAAA,WAAAA,IAAAA,IAEA,CACA,EACAiqG,EAAAA,IAAAA,SAAAA,EAAAA,GACA,SAKA,OAJA,QAEA53F,EAAAA,EAAAA,MAAAA,EAAAA,IAEA,CACA,EACA43F,EAAAA,MAAAA,SAAAA,EAAAA,GACA,MACA,KACA,UAEA,cACAA,KAAAA,GAAAA,IACAA,EAAAA,QAAAA,gCACAA,GACA,OAEA7uB,EAAAA,WAAAA,MAEA,iBACA6/I,EAAAA,GAAAA,GAAAA,IACA5oN,GAAAA,CACA,CACA,QACA,EACA43F,GAGA,OADAuwH,EAAAA,OAAAA,EACA,CACA,CAIO,SAASU,GAAoBnvI,GACpC,cACAguI,IAAAA,EACA,IAEAA,QAAAA,KADA,QACAA,MAIA,CAFA,UACAhH,GAAAA,EAAAA,EAAA,8CAAAl5J,UAAAA,GAAAA,KACA,CACA,CACA,SACA,CACA,SAASshK,GAAc/N,GACvB,SACA,aAEAW,GADA,kBACAA,SAAAA,GAEA,GADAqN,EAAAA,GAAAA,GAAAA,IACA,CACA,sBACA,MACAhgJ,EAAAA,GAAAA,KAGAA,EAAAA,GAAAA,EAAA,qCAEA,CACA,IAEA,QACA,CACA,SAASigJ,GAAYC,EAASvyK,GAC9B,gBACA,OAEA,IACA,CACA,SAASwyK,GAAmBv7N,EAAOo7E,GACnC,YAIA,OAHA0xI,GAAAA,GAAAA,SAAAA,EAAAA,GACA0O,GAAAA,KAAAA,GAAAA,GAAAA,GAAAA,GAAAA,IAAAA,EACA,IACA,CACA,CACA,SAASC,GAAgBh2N,GACzB,SACA,OACA,oBACA,SACA00N,GAAAA,GAAAA,GACAF,GAAAA,GAEAuB,EAAAA,GAAAA,GAAAA,IAAAA,GACA,CACA,QACA,CACA,SAASE,GAAgBj2N,EAAM+1N,GAC/B,KACAtB,GAAAA,OAAAA,EAAAA,IAAAA,EAEA,CACO,SAASyB,GAAwBxsN,GACxC,mBAQA,yDAUA,gFAUA,iGAMA,0CAKA,0CAMA,iDAIA,CCtUA,IAAIysN,GAAa,WACbC,GAAY,WAEZC,IAAa,EACbC,GAAQ,UACRC,GAAQ,UAEZ,SAASC,GAASC,GAClB,MAEAA,KAAAA,GAEAH,GAAAA,UAAAA,EAAAA,GACAC,GAAAA,UAAAA,EAAAA,GACAF,IAAAA,CACA,CACA,SAASK,KAGT,IACA,sBACAF,IAAAA,KAAAA,SAAAA,GAAAA,GAAAA,EAIA,CAFA,UAEA,CACA,CAgBO,SAAS,GAASG,GACzB,QACA,ElBmLA,GA/MgB,WAuNhB,GAtNkB,YkBkDlB,OAtBA,uBAEAp8N,EAAAA,EAAAA,gBAAAA,IAAAA,YAAAA,IAAAA,GAAAA,IAEA,cAEA,IAEAm8N,KAIAn8N,EAAAA,KAAAA,IAEA,QAEAA,EAAAA,KAAAA,MAAAA,GAAAA,KAAAA,SAAAA,IAEA,IAEAA,KAAAA,GAEA,CACA,CAmBO,SAASq8N,GAAYD,GAG5B,QAFAJ,GAAAA,OAAAA,MAAAA,KAAAA,IAAAA,IAAAA,KAEA,YADAD,GAAAA,MAAAA,MAAAA,KAAAA,IAAAA,IAAAA,OACA,OAKA,OAJA,IAEA/7N,KAAAA,GAEA,CACA,CAMO,SAASwjN,GAAMzgI,QACtB,QAAAA,EAAAA,IAMA,IALA,IAEA,WACA,IACA,KACA,YACA4D,IACAt0E,GAPA,mEAOAA,OAAAA,GAAAA,GACAvK,KAAAA,EACA,QAGAA,GAAAA,MAAAA,EAAAA,WAAAA,EAAAA,KAAAA,EACA6+E,EAAAA,GAGA,QACA,CCxHA,IAAI,GAAqB,GACrB,GAAU,QACV21I,GAAe,IAAM9Y,GAAM,GAC3B+Y,GAAW,EAwBf,SAASC,GAAevyN,GACxB,mDACA,CACA,SAASwyN,GAAUv+N,EAAM+L,GACzB,cACA,OACAyyN,EAAAA,CAAAA,EACA,IACA,QA/BA,SAAyBzyN,EAAQI,EAAMrK,GACvC,MACA,IAMA,OALA6qN,GAAAA,EAAAA,EAAAA,CACA7qN,MAAAA,EACAutB,YAAAA,EACAqyF,cAAAA,KAEA,CAKA,CAHA,UAGA,CAEA,QACA,CAgBA,aAEA31G,EAAAA,EAAAA,IAAAA,GAMA,CAFA,UAEA,CACA,CACA,QACA,CACO,SAAS0yN,GAAsBl3N,EAAMm3N,GAE5C,YADA,QAAAA,GAAAA,GACA,6BACA,CACO,SAASC,GAAkBp3N,GAClC,OACAwD,GAAAA,GAAAA,YAAAA,GAAAA,IAAAA,IAAAA,IACA+Q,OAAAA,SAAAA,GACA,YACA,EACA4G,IAAAA,SAAAA,EAAAA,EAAAA,EAAAA,GACA,cACA,SAQA,UAPA,KAEA87M,EAAAA,GAAAA,EAAAA,IACAA,GAAAA,IAAAA,GAEA,EAGA,EACAI,KAAAA,SAAAA,EAAAA,GACA,WACA,WACA,IAIA,CAFA,UAEA,CAEA,GAEA,QACA,CCjFA,IAKIC,GAAY,SACZC,GAAyB,mBACzBC,GAAc,WAEdC,GAAY,SACZC,GAAkB,eAClBC,GAAuBT,GAAsB,iBAE7CU,IADuBV,GAAsB,iBAC5B,YACjBW,GAAyB,SACzBC,GAAQ,EACRC,GAAcX,GAAkB,UAChCY,GAAiB,sBACrB,SAASC,GAAoBj4N,GAC7B,oBACA,iCAEA,CACA,CACA,SAASk4N,GAAiBjgH,EAAWkgH,GACrC,MACA,MACA,SACA,OACAC,EAAAA,GACA9P,GAAAA,GAAAA,SAAAA,IACAtoN,EAAAA,GAAAA,MAEA,aACAA,EAAAA,IAAAA,GAEAo4N,GAAAA,EAEA,KAGAA,EAAAA,GAAAA,GAEA,IACA,aACAA,EAAAA,IAAAA,GAGAngH,GAAAA,GAAAA,IAAAA,EAEA,CACA,yBACA,aACA,UACAzT,EAAAA,IAAAA,EAAAA,IAAAA,IAAAA,QAAAA,GAAAA,KAAAA,QAAAA,GAAAA,IAAA,4BACAA,CACA,CA6BA,SAAS6zH,GAAqB7zN,EAAQ8zN,EAASC,QAC/C,QAAAA,GAAAA,GACA,wBACA,OAIA,OAHA,IACAC,EAAAA,EAAAA,GAAAA,IAEA,CACA,CACA,SAASC,GAAUv1N,EAAKo1N,EAASI,EAAYC,GAC7C,eACA,sBACAz1N,EAAAA,oBAAAA,EAAA,UAEA,eACAA,EAAAA,YApGkB,KAoGlBA,EAAA,QAGA,CAiBA,SAAS01N,GAAcp0N,EAAQ4Y,EAAQk7M,EAASO,GAEhD,IADA,eACA,MACA,WACA,IACA,2BACA,WACAJ,GAAAA,EAAAA,EAAAA,QAAAA,EAAA,mBAEAr7M,EAAA,aAIA,CACA,CAgBO,SAAS07M,GAAkBC,EAAcplK,GAehD,OAbA,EAQAqlK,GAAAA,KAPA,MACAA,CAAAA,GAAAA,OAAAA,GAGAA,CAAAA,EAAAA,IAGAA,GAAA,WAGAA,CAGA,CAYO,SAASC,GAAQz0N,EAAQyzG,EAAWygH,EAAYP,EAAcQ,GACrE,WACA,QAAAA,GAAAA,GACA,SACA,KACA,IACA,cAEA,GADA/rN,EAjFA,SAAmB1J,EAAKo1N,EAASI,EAAYC,GAC7C,SAaA,OAZA,kBACA,oBAEAz1N,EAAAA,iBAAAA,EAAA,UACA0J,GAAAA,GAEA,gBAEA1J,EAAAA,YAlHkB,KAkHlBA,EAAA,QACA0J,GAAAA,IAGA,CACA,CAkEAA,CAAAA,EAAAA,EAAAA,EAAAA,GACA,iBACA,WACAssN,KAAAA,KACAZ,QAAAA,IAEA,UACA9zH,EAAAA,QAAAA,EACAA,GACA6zH,GAAAA,EAAAA,EAAAA,MAAA,OACA,CAIA,CAFA,UAEA,CAEA,QACA,CAaO,SAASc,GAAS30N,EAAQyzG,EAAWygH,EAAYP,EAAcQ,GAEtE,QADA,QAAAA,GAAAA,GACA,EACA,IACA,cACA,MArFA,SAA2Bn0N,EAAQ8zN,EAASO,GAC5C,UACAD,GAAAA,EAAAA,GAAAA,EAAAA,EAAA,eAEA,CACA,sBACAvR,GAAAA,GAAAA,SAAAA,EAAAA,GACAuR,GAAAA,EAAAA,EAAAA,EAAAA,EACA,IAEA,kBACAb,GAAAA,KAAAA,EAAAA,GAEA,CACA,CAwEAqB,CAAAA,EAAAA,GAAAA,SAAAA,GACA,qCACAC,GAAAA,GACA,EAGA,IACA,GAEAZ,GAAAA,EAAAA,EAAAA,EAAAA,EAKA,CAFA,UAEA,CAEA,CAkCO,SAASa,GAAgBrhH,EAAWjtG,EAAUmtN,GACrD,SACA,OACA,IACAvrN,EAAAA,GAAAA,EAAAA,EAAAA,EAAAA,GACAA,EAAAA,GAAAA,EAAAA,KAAAA,EAAAA,EAAAA,IAAAA,GAEA,WAIA,OAHA,IACAA,EAAAA,GAAAA,EAAAA,EAAAA,EAAAA,IAAAA,GAEA,CACA,CA6BA,SAAS2sN,GAAmBn8M,EAAQ5d,EAAUg6N,EAAerB,GAC7D,SAUA,OATA,kBACA7P,GAAAA,GAAAA,SAAAA,GACA,IACA,kBACAmR,EAAAA,GAAAA,EAAAA,EAAAA,IAAAA,GAGA,IAEA,CACA,CA0BO,SAASC,GAAqBt8M,EAAQ5d,EAAU24N,GACvD,UACA7P,GAAAA,GAAAA,SAAAA,GACA,GA5DO,SAA4BrwG,EAAWjtG,EAAUmtN,GACxD,WACA,IACAgB,GAAAA,EAAAA,EAAAA,EAAAA,GACAA,GAAAA,EAAAA,KAAAA,EAAAA,EAAAA,IAEA,WACA,GACAA,GAAAA,EAAAA,EAAAA,EAAAA,EAEA,CAmDAQ,CAAAA,EAAAA,EAAAA,EAEA,GAEA,CAYO,SAASC,GAA2Bp6N,EAAUg6N,EAAerB,GAGpE,OAxCO,SAA2B/6M,EAAQ5d,EAAUg6N,EAAerB,GACnE,SAQA,OAPA,eACAsB,EAAAA,GAAAA,EAAAA,EAAAA,EAAAA,KACA,gBAEAA,EAAAA,GAAAA,EAAAA,EAAAA,KAAAA,IAGA,CACA,CA8BA,kBACA,CAuBO,SAASI,GAAyBr6N,EAAUg6N,EAAerB,GAQlE,eACA,iBAQA,OAPA,mBACA2B,EAAAA,GAAAA,CAAAA,KAVA,YACA,WACA,oCACAt6N,EAAAA,EAEA,GAKAs6N,EAAAA,IAAAA,IAEA,OAEAA,EAAAA,GAAAA,EAAAA,KAAAA,IAEA,CACA,CCxXO,SAASC,KAIhB,IAHA,IAEI,EAFJ,oEAEA,KACA,YAEAC,GACAC,EAAAA,IAFA9uJ,EAAAA,OAGA8uJ,EAAAA,GAAAA,EAAAA,IACAA,EAAAA,GAAAA,EAAAA,IACAA,EAAAA,GAAAA,GAAAA,IACAA,EAAAA,GAAAA,GAAAA,IACAA,EAAAA,GAAAA,GAAAA,IACAA,EAAAA,GAAAA,GAAAA,IACAA,EAAAA,GAAAA,GAAAA,IAGA,sBACA,sFACA,CC7DA,IACIC,GAAkB,KAClBC,GAAkB,KAClBC,GAAmB,mCACnBC,GAAkB,mBAEtB,SAASC,GAAS//N,EAAO03D,EAAKsoK,GAC9B,oCACA,qBAGA,CACA,SAASC,GAAajgO,EAAO03D,EAAK41J,GAClC,eACA,EAEA,CACA,CACA,SAAS4S,GAAalgO,IACtB,wBACAA,EAAAA,GAGA,IADA,qBACA,YACAqS,EAAAA,IAAAA,EAEA,QACA,CASO,SAAS8tN,GAAkBC,EAASC,EAAQhrN,EAAO3D,GAC1D,MACA,aACA,wBACAu4F,EAAA,qBACAA,EAAAA,OAAAA,GAAAA,GAAAA,EAAAA,KAAA,aACAA,EAAAA,WAAAA,GAAAA,GAAAA,GAAAA,IAAAA,EAAAA,EACAA,CACA,CA2CO,SAASq2H,GAAetgO,GAC/B,kBACA,CAQO,SAASugO,GAAcvgO,GAC9B,kBACA,CAoCO,SAASwgO,GAAkBxgO,GAClC,MAGA,uBACA,UACAqV,EAAAA,MAEA,oBAMA,MALA,qBAEA3D,EAAAA,IAGA,yFACA,CACA,QACA,CC1JO,SAAS+uN,GAAe/iH,GAC/B,WACA,aACAx6F,EAAAA,IAAAA,MAAAA,OAEA,CACA,WACA,mBACAA,EAAAA,EAAAA,YAAAA,UACAA,UAAAA,GAAAA,GAAAA,EAEA,CACA,QACA,CCbO,IAAIw9M,GrBmCJ,SAAwBtlJ,GAC/B,SAKA,OAJA0xI,GAAAA,GAAAA,SAAAA,EAAAA,GACA6T,EAAAA,GAAAA,EAAAA,GACAA,EAAAA,EAAAA,IAAAA,EAAAA,EACA,IACA,KACA,CqB1C4BC,CAAe,CAC3CC,qBAAAA,CAAAA,EAAA,mBACAC,wBAAAA,CAAAA,EAAA,SACAC,0BAAAA,CAAAA,EAAA,iBACAC,gBAAAA,CAAAA,EAAA,cACAC,kBAAAA,CAAAA,EAAA,eACAC,iBAAAA,CAAAA,EAAA,cACAC,iBAAAA,CAAAA,EAAA,eACAC,6BAAAA,CAAAA,EAAA,SACAC,8BAAAA,CAAAA,EAAA,qBCRIC,GAAY,MAAiB,CAAC,EAC9BC,GAAiB,EAGjBC,GAAqB,CAAC,KAAM,KAAM,KAAM,KAAM,MAC3C,SAASC,GAAYjiO,GAC5B,SACA,KACA,OAgBA,OAfA,iBAIA,OAEAkiO,EAAAA,EAAAA,GAAAA,GAAAA,cAAAA,MAJAA,EAAAA,CAAAjyN,KAAAA,GAAAA,GAAAA,IAMAiyN,EAAAA,KAAAA,IAEAC,GACA,WACAA,EAAAA,GAEAJ,GAAAA,EACA,CACA,CACO,SAASK,GAAkBpiO,GAClC,MACA,QAIA,OAHA,IACA6S,EAAAA,EAAAA,MAEA,CACA,CASO,SAASwvN,GAAkB1hO,EAAQ2hO,GAC1C,SACA,sBAEA,CACA,CAEO,SAASC,GAAaviO,EAAKwiO,GAClC,kBACA,MACA,oDACA,gDACA,sBAEA,CACA,QACA,CACO,SAASC,GAAiBziO,EAAKwiO,GACtC,WACA,MACA,gDACA,kDACA3vN,EAAAA,EAAAA,IAAAA,GACA,gBACA,+BACA,YAEA,uBAGA,2BAFAxC,EAAAA,IAKAwC,GAAAA,CACA,CAEA,CACA,QACA,CCxEA,IAAI6vN,GAAqB,CACzBpN,GAAAA,GACA,uDACA,qDAEO,SAASqN,GAAsCC,GACtD,iCACA,CACO,IAgDIC,GAAsB,CACjCC,oBAAAA,UAQAC,4BAAAA,SAAAA,EAAAA,EAAAA,GACA,sCACA,SAEA,YACA,4DACA,oBACA,SAIA,+BAMA,IALA,mDAGAC,GAAAA,GAAAA,GAAAA,IAAAA,IAAA,iBAEA,uCACA,SAEA,IAEA,EAFA,gCACA,OAEAzU,GAAAA,GAAAA,SAAAA,GACA,iGACA0U,EAAAA,GAAAA,EAAAA,KAAAA,EACA,KACA,GACA,SAGA,4CACA,oBACA,SAEA,wBAEA,GADA,8FACA,QACA,QAEA,CAGA,oBACA,EAIAC,sBAAAA,SAAAA,GACA,MACA,6CACA,iCACA,QAEA,CACA,EAIAC,2BAAAA,SAAAA,EAAAA,GACA,KAEA,IADA,mBACA,oBACA,sBACA,0BACA,WAEA,CAEA,GA+BO,SAASC,KAEhB,WACA,uBACA,uCAEA,OACA,QAEA,CACA,WACA,CACO,SAASC,GAAsBvhN,EAAOwsB,GAC7C,WAIA,OAHA,6BACAz7B,EAAAA,EAAAA,GAEA,CACA,CAcO,SAASywN,GAAuCC,EAAgBC,GACvE,YACA,OACAC,QAAAA,WACA,aACA,EACAC,QAAAA,SAAAA,GACAF,GAAAA,EAAAA,QAAAA,GACA9zI,EAAA,MACA,EACAi0I,WAAAA,WACA,gBACA,EACAC,WAAAA,SAAAA,GACAJ,GAAAA,EAAAA,WAAAA,GACA,QACA9zI,EAAAA,QAAAA,EAEA,EACAm0I,UAAAA,WACA,iBACA,EACAC,UAAAA,SAAAA,GACAN,GAAAA,EAAAA,UAAAA,GACA,QACA9zI,EAAAA,SAAAA,EAEA,EACAq0I,cAAAA,WACA,mBACA,EACAC,cAAAA,SAAAA,GACAR,GAAAA,EAAAA,cAAAA,GACA9zI,EAAAA,WAAAA,CACA,EAEA,CC/OA,IAAIu0I,GAAJ,WAIA,yCACA,QAAAC,EAAAA,QACA,qBACAz6N,GAAAA,EACAouN,IAAAA,EACA5xN,KAAAA,EACAk+N,WAAAA,EACA1iN,SAAAA,EACAolB,QAAAA,EACAnoC,KAAAA,EACA+L,OAAAA,EACA3H,KAAAA,EACAsqE,WAAAA,EACAmpJ,aAAAA,EACAlzK,KAAAA,EACA7iD,MAAAA,EACAk9B,MAAAA,EACAG,IAAAA,EACAC,IAAAA,EACAk6L,OAAAA,EACAoM,eAAAA,EACAC,iBAAAA,EACAC,YAAAA,EACAC,mBAAAA,GAEA,WACAjS,EAAAA,IAAAA,EACAA,EAAAA,GAAAA,EACAA,EAAA,eACAA,EAAAA,QAAAA,EACAA,EAAAA,WAAAA,EAAAA,GACAA,EAAAA,KAAAA,GAAAA,EAAAA,GACA,MD0GO,SAAuC/lI,EAAQ+1I,EAAa3hO,EAAQ2jO,GAC3E,MAAI,EAAJ,EAAI,EAAJ,EACA,kBACA,YAEA,GADA75N,EAAAA,EAAAA,MACA,EACA,qBACA,2CACA,oBACA+5N,EAAAA,IAAAA,GAEA9lO,EAAAA,EAAA,SACAuH,EAAAA,GAAAA,EAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EACA,MAEAA,EAAAA,GAAAA,EAAAA,EAGA,MAEAwE,EAAAA,EACAxE,EAAAA,EAEA,OACAwE,OAAAA,EACAxE,KAAAA,EACAvH,KAAAA,EAEA,CCtIA,UACA4zN,EAAAA,KAAAA,GAAAA,EAAAA,IAAAA,EAAAA,KACAA,EAAAA,OAAAA,GAAAA,EAAAA,EAAAA,QACA,IACAA,EAAAA,OAAAA,GAAAA,OAAAA,EAAAA,OAAAA,OAAAA,OAAAA,IAEAA,EAAA,kBACAA,EAAA,mBACAA,EAAA,oBACA,CAGA,OAFA2R,EAAAA,aAAAA,qDACAA,EAAAA,SAAAA,uBACA,CACA,CAjDA,GCGIQ,GAAsB,KACtBC,GAAJ,WACA,kBACA,IAQA,EARA,OACA,MACApS,EAAAA,MAAAA,KACAA,EAAA,OACAA,EAAA,UACAA,EAAA,gCACA,SAGAqS,EAAAA,GAAAA,EAAAA,WAAAA,WAOA,OALA,WACAC,EAAAA,IAEAC,EAAAA,MAEA,CACA,KAEAvS,EAAA,mBACA,SAEA,iDACA,MAEA,cAEA,IACA,EACAA,EAAA,qBACA,KAEA,0BAEA,OACAA,EAAA,iCAEAA,EAAAA,GAAAA,OAEA,4BACAA,EAAAA,GAAAA,MAEA,EACA,iBACA3xJ,GAAAA,CACA,CAEA,EACA2xJ,EAAA,oBACA,QACA,iCACA,SACA,4BACA,WACA,IACAwS,GAAAA,EAAA,KAEA,CAEAxS,EAAA,kBACAA,EAAAA,OAAAA,EAAA,OACAA,EAAA,uBACA,WAEAA,EAAAA,QAAAA,IAEA,CACA,CAGA,OAFAoS,EAAAA,iBAAAA,SACAA,EAAAA,mBAAAA,YACA,CACA,CAzEA,GA2EIK,GAAJ,WACA,cAKA,YACAxc,GAAAA,EAAAA,MAAAA,SAAAA,GACA+J,EAAAA,OAAAA,SAAAA,EAAAA,EAAAA,GAGA,oBACA,EACAA,EAAAA,KAAAA,SAAAA,GACA,IACA0S,EAAA,WACA,oBACAplD,EAAA,aAGA,EACA0yC,EAAA,qBACA,KACA,iBACA3xJ,GAAAA,EAEA,EACA2xJ,EAAA,mBACA,oBACA,CACA,GACA,qBAmCA,CAlEA,GAoEI2S,GAAkB,mBASf,SAASC,GAAOC,EAAWC,EAAW77K,EAAMyrC,EAAS54D,GAC5D,MACA,QAKA,GAJA,eAEAipM,EAAAA,EAAAA,cAEA,GACA,aACA,eACA,IAEA,GADAC,EAAAA,EAAAA,OAAAA,IAAAA,EAAAA,GACA,CACA,iBACAA,EAAA,8BACA,qBACA,sCACA,IACAlnN,EAAAA,GACAmnN,EAAA,iCAEAnnN,EAAA,OACA,CAIA,OADAinN,EAAA,aACA,IACA,CAcA,CAZA,SACA,aACAC,EAAA,qBAEA,CAvBC,QA0BD,GACAD,EAAAA,KAAAA,GAGAA,EAAA,YACA,CACA,CACA,CACA,UACA,CCvMA,IAAIG,GAAkBnI,GAAkB,UACjC,SAASoI,GAAgBhvN,GAChC,8BACA,CAQO,SAASivN,GAAkBC,EAAgBlyI,GAMlD,IAJA,IAGA,EAHA,KACA,OACA,cAEA,IACA,oBACA,MACA,GACArgF,GAAAA,EAAA,gBACAA,GAAAA,EAAA,mBAEAwyN,EAAA,kBAGA,oBACAC,EAAA,iBAGAC,EAAAA,GAAAA,IACA,gBAGAC,EAAA,QAEAH,EAAAA,EACAI,EAAAA,EAAA,SACA,CACA,CAEAzX,GAAAA,GAAAA,SAAAA,GACA,eACA0X,EAAA,uCACAH,EAAAA,GAAAA,GAEA,iBACAA,EAAAA,KAAAA,GAEAA,EAAA,wBACA,UACA,GACA,CACO,SAASI,GAAYzxK,GAE5B,6BACA,QACA,MACA,6BACA,uBACA5hD,EAAAA,EAAAA,EAAAA,SAAAA,EAAAA,SAAAA,EAEA,IACAA,GAAAA,EAEA,MAEAA,EAAAA,EAAAA,GAAAA,EAEA,QACA,GAEA,CCvEA,IAAIszN,GAA0B,uBAG1BC,GAAW,EAmBf,SAASC,GAAuBC,EAAgBloO,EAAQ,EAAxD,GAGA,WACA,KACA,WAEAmoO,EAAAA,EAzBA,SAA4BP,EAAOtT,EAAMvrJ,GACzC,SACA,qBACA,SAEA6+J,EAAAA,EAAA,SACA,CAEA,6BACA,CAgBAO,CAAAA,EAAAA,EAAAA,GAAAA,GAEA,OACA7wJ,MAuCA,WACA,QAGA,GADA6wJ,EAAAA,EAAAA,EAAA,gBACA,GACA,QACA,gBACAhY,GAAAA,GAAAA,SAAAA,GACA,IACAiY,EAAAA,KAAA,mBAIA,CAFA,UACAjT,GAAAA,EAAA,+DACA,CACA,IACAkT,EAAAA,GAEA,CACA,QACA,EAzDA9lK,IAAAA,CACA+xJ,KAAAA,WACA,QACA,EACAgU,QAAAA,WACA,cACA,EACAC,OAAAA,WACA,QACA,EACAC,UAAAA,EACAlzH,UAmFA,qBACA,QAAAlmF,GAAAA,GACA,MACA,YACA,aACAogM,EAAAA,EAAAA,GAEA,eACAA,EAAAA,EAAAA,IAEA,gBACA,EA7FAiZ,QAAAA,WACA,SACA,EACA3pD,QAAAA,WACA,QACA,EACA4pD,QAAAA,SAAAA,GACAP,EAAAA,CACA,EACAQ,QAqFA,YAEA,MACA,mBACA,oBACA,GAEA3wN,EAAAA,EAEA,CACA,EA9FA4wN,WAGA,cAEA,IADA,SACA,2BACAp5N,EAAAA,EAAAA,GAAAA,UAAAA,GAEA,GACA64N,EAAA,MACAl9K,KAAAA,EACAvzC,KAAAA,GAAAA,GAAAA,EAAAA,IAAAA,EACApI,KAAAA,GAGA,IAqBA,kBAGA,MACA,QAHA,QAAA4f,EAAAA,CAAAA,QACA,QAAAy5M,EAAAA,GAEA,GACA,wBACA,OACAC,EAAAA,EAAAA,GAEA,CACA,MAIA,UACA,OAEA,iBACA,UAGA5Z,GAAAA,GAAAA,SAAAA,GAEA,aACA,WACA,QACA6Z,EAAAA,GAAAA,EAEA,CACA,IAEAD,EAAAA,CACA,OApBAA,EAAAA,EAsBA,QACA,CAwBA,QACA,CAQO,SAASE,GAA8Bd,EAAgBloO,EAAQs0N,EAAMvrJ,GAC5E,kBACA,QAgBA,OAFAxjE,EAAA,YAbA,YACA,gBAGA,OADA0jO,GAAAA,EAAA,uBACA,CACA,EASA1jO,EAAA,UARA,cAKA,YAJA,QAAA8wD,EAAAA,MACA,QACAA,EAAAA,GAAAA,EAAAA,EAAAA,EAAAA,IAEA,wBACA,EAGA,CACA,CAQO,SAAS6yK,GAAoChB,EAAgB5T,EAAMvrJ,GAC1E,mBACA,cACA,QAeA,OAFAxjE,EAAA,YAZA,YACA,gBAEA,OADA0jO,GAAAA,EAAAA,OAAAA,EAAAA,IACA,CACA,EASA1jO,EAAA,UARA,cAKA,YAJA,QAAA8wD,EAAAA,MACA,QACAA,EAAAA,GAAAA,EAAAA,EAAAA,EAAAA,IAEA,sBACA,EAGA,CACA,CAQO,SAAS8yK,GAAoCjB,EAAgB5T,EAAMvrJ,GAC1E,mBAEA,EADA,YACA,IAiBA,OAFAxjE,EAAA,YAdA,YACA,8BACA,cACA8S,EAAA,WAEA,GACA,EASA9S,EAAA,UARA,cAKA,YAJA,QAAA8wD,EAAAA,MACA,QACAA,EAAAA,GAAAA,EAAAA,EAAAA,EAAAA,IAEA,sBACA,EAGA,CACA,CAQO,SAAS+yK,GAA0B/yK,EAASr2D,EAAQs0N,EAAMvrJ,GACjE,WACA,KACA,sBAEA,WACAonJ,GAAAA,GAAAA,SAAAA,GAIA,GAHA,WACAjrM,GAAAA,GAEA,8BAEA,MA6BO,SAAoC7M,EAAQrY,EAAQs0N,GAC3D,IAGA,EAHA,OACA,yBACA,sBAGA+U,EADA,EACAA,EAAA,mCAGAA,aAAAA,KAEA,OACAC,UAAAA,WACA,QACA,EACAxqD,QAAAA,WACA,QACA,EACAyqD,iBAAAA,EACAC,OAAAA,EACAn5I,OAAAA,EACAo5I,IAAAA,EACAC,SAAAA,SAAAA,GACAC,EAAAA,CACA,GAEA,aACA,MAUA,OARA,sBAEAC,EAAAA,EAAAA,cAEA,IAEAA,EAAAA,GAAAA,EAAAA,EAAAA,IAEA,CACA,CACA,sBACA,SACA,oBACA,YAiCA,OAhCA,IAEAC,EAAAA,EAAAA,QAAAA,CAAAA,GAGAD,EAAAA,QAAAA,GACA,GACA9C,GAAAA,EAAA,gDAEA+C,EAAAA,IAAAA,EACA,IAEA,iBACA,IACAA,EAAAA,IAAAA,GAEAC,EAAAA,EAAAA,EAaA,CAXA,SACA,mBACA,IAEAA,GAAAA,GAEA,MAGA3U,GAAAA,EAAA,mFAEA,CACA,GAAAv+H,EAAA54D,GAEA,CACA,CACA,gBAEA,cACA,UACA,SAEA,YACA,iCAMA,GAEA3lB,EAAA,iBAEAA,EAAA,uBAEA,EACA,CACA,EApBAuxN,EAAAA,GAAAA,IAoBA,wCAAA5wN,KAAAA,EAAA,aAGA4wN,EAAA,cAEA,CACA,gBACA,aAEA,SACA,MACA,YACA,kBAEA,iCAEAlC,EAAA,UACAA,EAAA,YACAA,EAAA,iBACA,mCAEAoC,GAAAA,GAGA,CACA,QACA,CACA,0CAEAC,EAAA,cAEA,CACA,gBACA,aAEA,SACA,MACA,YACA,kBAEA,gCACA,+BAEAD,GAAAA,EAGA,CACA,QACA,CACA,mCAEAE,EAAA,cAEA,CACA,YACA,CAtLA,QACA,IACAC,EAAAA,GAEA,GAEAC,EAAAA,SAAAA,GAEAA,EAAAA,CACA,CACA,GACA,CACA,aAEA,YAEA,CACA,CA0KA,IC5bIC,GAAU,CACd,6BAGA,SAASC,GAASt3N,EAAKxH,GACvB,KACA,yBACA,UADA,KAMA,CAEA,SAAS++N,GAAaC,EAAOC,EAAaC,EAAQC,EAAS/lO,GAC3D,YACA0lO,GAAAA,GAAAA,SAAAA,EAAAA,GACA,aACA,WACA,MAEAG,EAAAA,IAAAA,WAEA,OADA,aAEA,EACA,IACAvyN,EAAA,eAmBA,CAjBA,SACA,YACA,IAEA,eACA,IACAuyN,EAAAA,IAAAA,EACAG,EAAA,gBASA,CANA,UAEA,CAVC,QAaDH,EAAAA,IAAAA,CACA,CACA,CACA,CACA,GAEA,CAoDA,SAASI,GAAUt+N,EAAQxE,EAAM+iO,GACjC,WASA,OARA,IACA,QACAC,EAAAA,EAEA,IACAA,EAAAA,GAAAA,GAAAA,GAAAA,GAAAA,KAGA,CACA,CAyBA,SAASC,GAAsBD,EAAO9hB,EAAUz9M,EAAIy/N,GACpD,oBACA,OASA,MAjGA,SAA6BC,GAE7B,kBACA,MACA,OAEA,YACA,MACA,UACA,SACA3+H,EAAAA,KAAAA,EACAA,EAAAA,IAAAA,KACAA,EAAAA,IAAAA,EACAA,GACA,KACA,WAEA,gBAIA,OAHA+9H,GAAAA,GAAAA,SAAAA,GACA/9N,EAAA,OACA,IACA,CACA,CACA,iBACA4+N,EAAAA,EAAAA,GAAAA,IACAA,GAAAA,EACAT,EAAAA,EAAAA,CAAAA,GAAAA,EACA,CAXAU,EAAAA,IAAAA,GAAAA,SAaAb,GAAAA,EAAAA,EAAAA,EAAAA,EAAAA,GAEA,UACA,KACA,IACAa,EAAAA,KAAAA,EAAA,UAQA,CANA,SAKA,MAHAA,EAAAA,IAAAA,EACAb,GAAAA,EAAAA,EAAAA,EAAAA,EAAAA,GAEA,CACA,CAIA,OADAA,GAAAA,EAAAA,EAAAA,EAAAA,EAAAA,GACA,MACA,CACA,CAiDA,CAPAW,EAAAA,CACAlkO,EAAAA,EACAwQ,EAAAA,EACAD,EAAAA,EACA9L,EAAAA,KAIA4/N,EAAAA,SAAAA,EACAN,EAAAA,GAAAA,CACA,CACA,OAEAx/N,GAAAA,EAAAA,EACA+/N,KAAAA,EACAC,GAAAA,WAGA,cACAjB,GAAAA,EAAAA,GAAAA,SAAAA,EAAAA,GACA,YAEA,OADAY,EAAAA,EAAA,YACA,CAEA,GACA,GAKA,OAFAA,EAAAA,IACAA,EAAAA,EAAA,QACA,CACA,CAQO,SAASM,GAAej/N,EAAQ08M,EAAUgiB,EAAWH,GAE5D,QADA,QAAAA,GAAAA,GACA,SACA,gBACA,MACA,WACA,iBACA,kBAEA,CACA,CACA,WACA,CA8BO,SAASW,GAAgBl/N,EAAQ8zN,EAAS4K,EAAWH,GAC5D,YACA,mBACA,KACA,qBAEA,CACA,WACA,CCvOO,SAASY,KAChB,SAiBA,OACAtmN,IAjBA,YACA,GACAja,EAAA,OAEA,EAcA8nB,IAbA,cACAo9L,GAAAA,GAAAA,SAAAA,GACA,IACA3mL,EAAAA,EAAAA,EAIA,CAFA,UACA2rL,GAAAA,EAAA,mEACA,CACA,IACAlqN,EAAAA,EACA,EAKA,CCnBA,IAMIwgO,GAAJ,WACA,aACA,IAEA,EACA,EACA,EACA,EACA,EANA,OA4HA,mBACA,QAAAC,EAAAA,MACA,QACA,OACA,4BAIA9B,EAFA,eAEAA,EAAA,4BAGAA,EAAA,iBAEA,CACA,QACA,CACA,kBACA,GAEA1hG,GAAAA,EAAAA,GAAAA,GAAAA,KAAAA,KAEA,OAEAyjG,EAAAA,EAAA,kCAEA,QACA,iBAEA1C,EAAAA,EAAAA,aAGA/U,EAAA,OACA0X,EAAAA,GAAAA,EAAAA,EAAAA,EAAAA,EACA,CACA,aACAC,GAAAA,EACA3X,EAAA,UACA0X,EAAAA,KACAE,EAAAA,KACAC,EAAAA,GACAC,EAAAA,IACA,CA9JAC,IACA9hB,GAAAA,EAAAA,GAAAA,SAAAA,GACA+J,EAAA,6BACAgY,EAAAA,EAAAA,EAAAA,GACAL,GAAAA,CACA,EACA3X,EAAA,uBACA,MAGA,SACA,0BAIA,MACA,KACA,+CACA,UACA/sN,OAAAA,IAEA,WACAklG,GAwBA,OAPA,yCAKA53F,GAAAA,EAJA03N,IAMA,CAhCA,CASA,aACA,OACAC,GAAAA,EACAJ,EAAAA,IAAAA,EAAAA,GACA,QACAD,EAAAA,GAEA5b,GAAAA,GAAAA,SAAAA,GACA7kN,EAAAA,IACA,KACA,OACA+gO,EAAA,eAEAJ,GACA,CACA,CASA,EACA/X,EAAA,qBAGA,aACA,0BAIA,MACA,KACA,+CACA,MACA/sN,OAAAA,GAcA,OANA,qCAIAsN,GAAAA,EAHA63N,IAKA,CAnBA,CAOA,aACA,IACAC,GAAAA,EACAL,EAAAA,EAAAA,SAAAA,EAAAA,OAAAA,EAAA,WAEA,CAQA,EACAhY,EAAAA,SAAAA,SAAAA,GACA,IACA,MACA6X,EAAAA,EAAAA,OAAAA,GAGAA,EAAA,QAGA,EACAhc,GAAAA,EAAAA,gBAAAA,WAAA,iBACA,IAEAmE,EAAA,oBACA,qBACA,EACAA,EAAA,yBACA,QACA,EACAA,EAAAA,eAAAA,SAAAA,GACA2X,EAAAA,CACA,EAKA3X,EAAA,0BACA4X,EAAAA,CACA,EACA5X,EAAA,0BACA,EAEA0V,EAAA,eAEA,2BAGAkC,EAAA,wBAEA,EACA5X,EAAAA,WAAAA,CA2CA,qBAwCA,CAhNA,GCFWsY,GAA6B,0CAG7BC,GAA6B,+BAa7BC,GAA8B,kCAC9BC,GAA8B,mCCrBrCC,GAAJ,WACA,oBACAziB,GAAAA,EAAAA,MAAAA,SAAAA,GACA,IAGA,EAHA,OACA,KACA,KAKA,cACA,GACAmK,EAAAA,MAAAA,EAEA,CAPA,IACAuY,EAAAA,EAAAA,QAkCA3Y,EAAA,4BACA,aACA,+BACA,WACArsN,EAAAA,EAAAA,KAAAA,GAAAA,EAAAA,OAAAA,EACA,CACA,YACA,+BACA,WACAq6D,EAAAA,EAAAA,IAAAA,GAAAA,EAAA,QACA,CAIA,qCAKA,OAJA4qK,EAAA,0BACAC,GAAAA,QAEA5X,GAAAA,EAAAA,EAAA,sLAGA,IACA,EAWA,EAZA,KAGA,2CACA,MACA6X,EAAAA,GAAAA,GAAAA,IAAAA,MACA,6BACAA,OAAAA,IAMA,OACA,iBACA3pN,EAAAA,EAAA,WAEA,cACA,WAEA,IACA+1M,EAAAA,CAAAA,GAEAA,EAAA,YAGA0T,EAAA,0BACAC,GAAAA,GACAE,GAAAA,GAGA,IA/EA,EAgFA,IACA7T,EAAAA,CAAAA,GAjFA,EAoFA8T,WACA,SACA,IACA,qCACAC,GAAAA,EACA,OACAtlO,KAAAA,EACAq6D,IAAAA,GAEAkrK,EAAAA,IAAA,GACA,cAOA,IACAhU,EAAA,sBACA0T,EAAA,2BAEA,IACAA,EAAAA,IAAA,KACAO,GAAAA,KAVAjU,EAAA,WACA0T,EAAA,0BAYA,MACA,qBAhCA,MAmCAK,GAAAA,EACA,IACA/T,EAAA,SArCA,IAsCA0T,EAAA,2BAMA,CAFA,UACA3X,GAAAA,EAAAA,EAAA,6DAAAl5J,UAAAA,GAAAA,KACA,CACA,QACA,EA5HAqxK,EAAAA,KAAAA,GACA,IACAC,EAAAA,aAAAA,WACA,iBACA,KACAD,EAAAA,GACAnd,GAAAA,GAAAA,SAAAA,GACA,IAKAqd,GAAAA,EAHAF,EAAAA,KAAAA,EAKA,IACA,eACAz2J,cAAAA,GACA02J,EAAAA,MAEA,GAEAR,GAAAA,EAEA,QAsGA,EACA7Y,EAAAA,SAAAA,SAAAA,EAAAA,GACA,MACAr9I,cAAAA,GACA02J,EAAAA,KACA,iBAEAD,EAAAA,GACAnd,GAAAA,GAAAA,SAAAA,GACA,MACAsd,CAEA,GACA,CACA,CACA,GACA,qBAkBA,CA/KA,GCHIC,GAAuB,KACvBC,GAAgB,CAAC,YAAa,gBAAiB,cAAe,wBAClE,SAASC,KACT,WACA,oBACA,CAKA,SAASC,KACT,WACA,eACA,UACA12H,EAAAA,kBAAAA,GACAA,EAAA,mBACAA,EAAA,iBACAA,EAAA,gBACAA,EAAA,gBACAA,EAAA,eACAA,EAAA,cACAA,EAAAA,WAAAA,CACA,CACA,SAAS22H,KACT,YACA,YAEA,IACA,CACA,SAASC,KACT,OAxBA,WACA,WACA,uEACA,CAqBA,GACA,uCAEA,IACA,CAIA,SAASC,KAET,IADA,SACA,2BACAC,EAAAA,GAAAA,UAAAA,GAEA,eAEA,cACA,KACA,KACA,4BACAC,EAAAA,IAAAA,IAAAA,EAAAA,cAAAA,QAAAA,GAAAA,IAGA,KAEA,SAIA,uBACA,oBACA,SAIA,QACA,CAIA,IAAIC,GAAJ,WACA,cACA,WACA,QACAhkB,GAAAA,EAAAA,MAAAA,SAAAA,GACA+J,EAAAA,IAAA,YACAka,EAAAA,SAAAA,EAqBA,WACA,OACA,IACA,IACA,IACA,IACA,KACA,QACA,GACAnrM,EAAAA,EAAA,SAMAorM,EAAAA,IAAAA,EAAAA,UAAAA,EAAA,wCACAptO,EAAAA,GAAAA,EAAAA,aAAAA,EAAA,eACAe,EAAAA,GAAAA,EAAA,6BACAssO,EAAAA,GAAAA,EAAAA,YAAAA,EAAA,gBAGArrM,EAAAA,GAAAA,EAAA,gCACAorM,EAAAA,GAAAA,EAAA,8BACAptO,EAAAA,GAAAA,EAAAA,aAAAA,EAAA,eACAe,EAAAA,GAAAA,EAAA,6BACAssO,EAAAA,GAAAA,EAAAA,YAAAA,EAAA,eAEA,MACAnZ,GAAAA,EAAAA,EAAA,+CAAAlyL,MAAAA,EAAAorM,QAAAA,EAAAptO,QAAAA,EAAAe,SAAAA,EAAAssO,IAAAA,IAEA,mCAGA,0DAGAnZ,GAAAA,EAAAA,EAAA,oCAAAlyL,MAAAA,EAAAorM,QAAAA,EAAAptO,QAAAA,EAAAe,SAAAA,EAAAssO,IAAAA,KAGAF,EAAAA,WAAAA,EAEAA,EAAAA,UAAAA,EAAA,eACAA,EAAAA,eAAAA,GAAAA,GACAA,EAAAA,YAAAA,GAAAA,GACAA,EAAAA,iBAAAA,GAAAA,GACAA,EAAAA,cAAAA,GAAAA,GACAA,EAAAA,SAAAA,GAfAjZ,GAAAA,EAAAA,EAAA,yEAAAlyL,MAAAA,EAAAorM,QAAAA,EAAAptO,QAAAA,EAAAe,SAAAA,EAAAssO,IAAAA,IAkBA,EACApa,EAAA,wBACAA,EAAA,gCACAA,EAAA,gCACAA,EAAA,wBACA,GACA,qBAmCA,CArHA,GClEIqa,GAAJ,WAMA,gBACA,0BACApkB,GAAAA,EAAAA,MAAAA,SAAAA,GACA+J,EAAA,qCACA,IAEA,MAeA,cACA,WACA,IACAsa,EAkCA,WACA,WACA,IACA,SAEA,WAEA,UACA,WAEAA,EAAAA,KAAAA,MAAAA,IACAA,cAAAA,EAAAA,EAAA,mBAEA5X,GAAAA,EAAAA,GAEA,CAKA,CAHA,UACAvB,GAAAA,EAAAA,iCAAAA,GAAAA,KACAmZ,EAAAA,IACA,CACA,QACA,CAxDAA,GAcA,cACA,IACA,SACA,eACA/rK,GAAAA,gFAEA,kBACA,oBACAk0J,GAAAA,EAAAA,EAAAA,EACA,CAKA,CAHA,UAEAtB,GAAAA,EAAAA,yBAAAA,GAAAA,IACA,CACA,CA5BAoZ,CAAAA,EAAAA,EAKA,CAHA,UACApZ,GAAAA,EAAAA,2BAAAA,GAAAA,KACAmZ,EAAAA,IACA,CACA,QACA,CA1BA,MAEA,GACAE,EAAAA,EAAAA,SAAAA,EAAAA,QAAAA,EAAAA,cAKA,CAFA,UACArZ,GAAAA,EAAAA,oEAAAA,GAAAA,IACA,CACA,EAmEAvG,GAAAA,EAAAA,WAAAA,WAAA,YACAA,GAAAA,EAAAA,gCAAAA,WAAA,WACA,GACA,qBAUA,CArGA,GAuGI6f,GACJ,cACA,6BACA,gBACA,cACA,EC9GIC,GACJ,cACA,WACA,KACA1a,EAAAA,MAAAA,SAAAA,GACA,2BACAiB,GAAAA,EAAAA,EAAA,2EAAAttN,KAAAA,EAAA5D,IAAAA,IAAA,GAEAy6D,EAAAA,IAAAA,IAAAA,IACA,EACAw1J,EAAAA,KAAAA,SAAAA,EAAAA,EAAAA,EAAAA,GACA,WACA,YACAiB,GAAAA,EAAAA,EAAA,qDAAAttN,KAAAA,EAAA5D,IAAAA,IAAA,OAEA,CACA,IACA,QADA,UAEAiwN,EAAAA,OAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EACA,QACA,KACAx1J,EAAAA,QAAAA,CACA,CACA,EChBA,SAASmwK,GAAexiO,EAAQyiO,GAChC,uBACAziO,EAAAA,cAAAA,EAEA,CAaA,SAAS0iO,GAAoB3sO,EAAOstN,GAKpC,OAJAttN,EAAAA,GAAAA,GAFsB,MAItBA,EAJsB,KAMtB,CACA,CACA,SAAS4sO,GAAkBhvO,GAqB3B,OApBA,IACAA,EAAAA,CAAAA,GAGAA,EAAAA,iBAAAA,GAAAA,EAAAA,iBAAAA,MACAA,EAAAA,oBAAAA,GAAAA,EAAAA,oBAAAA,OACAA,EAAA,wDACAA,EAAA,oDACAA,EAAA,wDACAA,EAAAA,IAAA,WACA,mFACAA,EAAA,wBAEAA,EAAA,gDACAA,EAAAA,IAAA,UACAA,EAAA,sDACAA,EAAA,4BACAA,EAAAA,YAAAA,GAAAA,EAAAA,aACAA,EAAA,4DACAA,EAAAA,qBAAAA,GAAAA,EAAAA,qBAAAA,EAAA,4BACA,CACA,CACA,SAASivO,GAAoBC,GAG7B,6BACA,uBACA9Y,MlCHAT,GAAAA,IAAAA,GACAI,GAAAA,IAAAA,IkCQA,CACA,IAAIoZ,GAAJ,YAEA,aACA,IAIA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EAjBA,qBACAlhH,EAAAA,WAAAA,GACAA,EAAAA,SAAAA,IACAA,EAAAA,iBAAAA,IAmBA,IAEA,EACA,EACA,EA+iBA,OA9iBAk8F,GAAAA,EAAAA,GAAAA,SAAAA,EAAAA,GACA,iBA0gBA,sBACA+J,EAAA,kCACA,CACA,aACAkb,EAAAA,KACAC,EAAAA,KACAC,EAAAA,KACAC,EAAAA,KACAC,EAAAA,KACAC,EAAAA,KACAC,GAAAA,EACAC,GAAAA,EACAC,GAAAA,EACAC,GAAAA,EACAC,GAAAA,EACAC,GAAAA,EACAC,GAAAA,EACAC,GAAAA,EAKAC,EAEA,aACAC,EAAAA,GAAAA,EAAA,SACAC,EAAAA,KACAC,EAAAA,IACA,CAriBApE,IACA/X,EAAAA,aAAAA,WACA,iBACA,EACAA,EAAAA,iBAAAA,SAAAA,EAAAA,GACAA,EAAAA,YAAAA,EAAAA,EACA,EACAA,EAAAA,WAAAA,SAAAA,EAAAA,GACA,IACA,sDACAA,EAAA,aAIA,CAFA,UACAiB,EAAAA,EAAA,8DAAAl5J,UAAAA,GAAAA,KACA,CACA,EAKAi4J,EAAAA,gBAAAA,SAAAA,GACA,IACAkb,EAAAA,MAAAA,EAIA,CAFA,UACAja,EAAAA,EAAA,mEAAAl5J,UAAAA,GAAAA,KACA,CACA,EAOAi4J,EAAAA,eAAAA,SAAAA,EAAAA,EAAAA,GACA,IACAkb,EAAAA,KAAAA,OAAAA,EAAAA,EAAAA,EAIA,CAFA,UACAja,EAAAA,EAAA,kEAAAl5J,UAAAA,GAAAA,KACA,CACA,EAOAi4J,EAAAA,WAAAA,SAAAA,EAAAA,GACA,IACA,sDACAA,EAAA,aAIA,CAFA,UACAiB,EAAAA,EAAA,8DAAAl5J,UAAAA,GAAAA,KACA,CACA,EAYAi4J,EAAAA,YAAAA,SAAAA,EAAAA,GACA,IACA,sDACAA,EAAA,aAIA,CAFA,UACAiB,EAAAA,EAAA,gEAAAl5J,UAAAA,GAAAA,KACA,CACA,EAOAi4J,EAAA,4BACA,IACA,YACAob,EAAA,8DACA,iCACAE,EAAA,oCAKA,CAFA,UACAra,EAAAA,EAAA,qEAAAl5J,UAAAA,GAAAA,KACA,CACA,EAOAi4J,EAAA,qCACA,WACA,IACAoc,EAAAA,YAAAA,IAAAA,EAAAA,OAAAA,EAAAA,SAAAA,EAAAA,QAEA,wDACApc,EAAA,cAEAgc,CACA,EAMAhc,EAAAA,IAAA,gBACA,wDACAA,EAAA,aACA,EAMAA,EAAAA,yBAAAA,SAAAA,EAAAA,GACA,YACA,IACAqb,EAAAA,IAAA,GACArb,EAAAA,IAAA,IAIA,CAFA,UACAiB,EAAAA,EAAA,gFAAAl5J,UAAAA,GAAAA,KACA,CACA,EAOAi4J,EAAAA,eAAAA,SAAAA,GACA,IACA,wBACA,WACArsN,EAAAA,GAAAA,EAAAA,OAAAA,EACA,CACAwnO,EAAAA,MAAAA,EAIA,CAFA,UACAla,EAAAA,EAAA,qEAAAl5J,UAAAA,GAAAA,KACA,CACA,EASAi4J,EAAAA,cAAAA,SAAAA,EAAAA,EAAAA,EAAAA,GACA,IACA,wBACA,WACArsN,EAAAA,GAAAA,EAAAA,OAAAA,EACA,CACA,wBACA,WACAjG,EAAAA,GAAAA,EAAA,QACA,CACAytO,EAAAA,KAAAA,EAAAA,EAAAA,EAAAA,GACA,iCACAG,EAAA,2BAKA,CAFA,UACAra,EAAAA,EAAA,qEAAAl5J,UAAAA,GAAAA,KACA,CACA,EAOAi4J,EAAA,sCACA,0CAEA,KADA,wFACA,6CACAA,EAAA,aACA,EAUAA,EAAAA,eAAAA,SAAAA,EAAAA,GACA,2BACAj4J,EAAA,mBAEA,IACAi4J,EAAA,0BAIA,CAFA,UACAiB,EAAAA,EAAA,sEAAAl5J,UAAAA,GAAAA,KACA,CACA,EAMAi4J,EAAA,qBACA,iBACA,WACA,IACA,OACA,WACA,IACAz1J,EAAAA,EAAAA,MAEA,CACA,+BAEA,gFACA,GACA8xK,SAAAA,EACA3uO,IAAAA,EACAwI,WAAAA,EAAA,cACAC,aAAAA,EAAA,gBACAnD,QAAAA,EAAA,SAEA,wDAsJA,cACA,sDACAgtN,EAAA,aACA,CAxJAsc,CAAAA,GAAA,6NAGA,aACAv0K,EAAA,YAEAi4J,EAAAA,eAAAA,CAAAj4J,UAAAA,EAAAy9J,cAAAA,GAAA,GAOA,CAJA,UACA,qCACAvE,EAAAA,EAAA,iFACA9F,GAAAA,IAAA,CAAApzJ,UAAAA,GAAAA,IAAA0uI,YAAAA,GACA,CACA,EACAupB,EAAA,oCACA,UAEA,yCAGA,IACAub,EAAAA,IAEAA,EAAAA,KAAAA,EACA,EACAvb,EAAAA,WAAAA,SAAAA,EAAAA,EAAAA,EAAAA,GACA,uBAGA,OACAzxJ,GAAAA,sBAEAguK,EAAAA,WAAAA,EAAAA,EAAAA,EAAAA,GACA,IACAJ,EAAAA,GAAAA,GAAAA,EAAAA,YAAAA,EAAAA,cAAAA,EAAAA,gBACA,IACAlgB,GAAAA,GAAAA,SAAAA,GACAmE,EAAA,0BACA,IACAmb,EAAAA,MAEA,MAmDA,YACA,wBACA,eAEA,QACA,+BACA,OACAvgB,GAAAA,GAAAA,SAAAA,EAAAA,GAEAggB,EAAAA,GAAAA,EAAAA,UAAAA,EAAAA,EAAAA,QACA,WACAA,EAAAA,EAEA,IAEA,QACA,CAnEA,IACAD,GAAAA,GACAM,EAAAA,IAAAA,GAAAA,EAAA,MACAD,EAAAA,IAAAA,GAAAA,EAAAA,EAAA,mCACAE,EAAAA,IAAAA,GAAAA,EAAA,kCAyEA,gBACA,OAAAkB,SAAAA,EAAAC,QAAAA,GACAzc,EAAAA,YAAAA,CACArsN,KAAAA,gBACA+oO,QAAAA,EACAlxM,IAAAA,EACAD,IAAAA,EACAoxM,YAAAA,GACA7hK,EACA,CAlFA,WAgEA,cACA0gK,EAAAA,EAAAA,KAAA,MAkBA,WACA,UACA,iDACA,cACA,gCACA,iBACA,KACA,2BACA,uCACA,QAIA,CACA,QACA,EACAxb,EAAA,2BACAyb,GAAAA,CACA,CACA,CApCAmB,EACA,CAlEAC,CAAAA,EAAAA,IACA3B,EAAAA,IAAAA,GAAAA,EAAA,yBACAA,OACA,oBACA,IACApgK,EAAAA,CAAAA,GAEA,IACAmpJ,EAAAA,CAAAA,GAEAnpJ,EAAAA,SAAAA,EAAA,WACAklJ,EAAAA,WAAAA,CAAArsN,KAAAA,EAAAmnE,WAAAA,EAAAmpJ,aAAAA,GACA,GAEAkX,EAAAA,IAAAA,GAAAA,EAAA,4BACAA,OAAAA,SAAAA,EAAAA,EAAAA,EAAAA,EAAAA,GAEA,QACArgK,EAAAA,CAAAA,GAEAA,EAAAA,SAAAA,EAAA,WACA,OACAnnE,KAAAA,EACAq6D,IAAAA,EACA8M,WAAAA,EACAmpJ,aAAAA,GAEAjE,EAAA,yBACA,EACA,OA6EA,YACA,WACA,UACA4b,EAAAA,EAAA,2BACA,iCAEAkB,EAAAA,GAAAA,EAAAA,UAAAA,CACA3xN,GAAAA,EACA4xN,IAAAA,SAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,GACA,gBACA/c,EAAA,iDAEA,IACA,IACA6b,GAAAA,IA+FA,iBACAC,GAAA,IAAAA,EAAAA,OACA,IAEAgB,EAAAA,GAAAA,EAAAA,uBAAAA,CACA3xN,GAAAA,EACA4xN,IAAAA,SAAAA,EAAAA,GACA,gBACA/c,EAAA,gCAllBA,SAAoBvqN,GACpB,gBACA,eACA,6BACA,aAEA,KACA,CAEA,YACA,CAwkBA,6BAEA,IACA,IACAsmO,GAAAA,EACAf,EAAAA,iCAAAA,EAEA,CA5GAgC,CAAAA,EAAAA,EAAAA,EACA,CA7FAC,CAAAA,GA8FA,YACA,WACA,SAKA,GAJAvB,GAAA,IAAAA,EAAA,wBAIA,YACA,MvCvWA,KACA,QAEA,GArJiB,WuC0fjB,wDAyBA,kBACA,uBACA,aACA,GACAf,GAAAA,EAAAA,GAAAA,EAAAA,kBAEA,CACA,aASA,GAPA,GACAsB,EAAAA,EACAC,EAAAA,GAAAA,EAAA,UAGAA,EAAAA,GAAAA,EAAA,SAEA,GACA,MArCA,WACA,WACA,6BACAgB,EAAAA,EAAA,sBAEA,OAEA,2BACA,MACA,uBACA,IACAA,EAAAA,GAAAA,EAAAA,gBAEA,CACA,CACA,QACA,CAqBA,GACA,MACAA,EAAAA,WAAAA,MACA,kBACA,gBACAC,EAAAA,EAAAA,UAAAA,EAAAA,MAAAA,KAGAD,EAAAA,QAAAA,GAAAA,EAAA,aACA,CACApuO,WAAAA,SAAAA,GAEAkxN,EAAA,eAAAod,OAAAA,EAAAtiK,WAAAA,CAAA3rD,SAAAA,IACA,EAAApe,KAAA,KAAAkrO,GAAAjc,EAAAA,iBACA,CACA,CACA,IACA8c,EAAAA,GAAAA,EAAAA,YAAAA,CACA3xN,GAAAA,EACA4xN,IAAAA,WACA,IACApC,GAAAA,EAAAA,GAAAA,EAAAA,cACAA,GAAAA,EAAAA,GAAAA,EAAAA,mBAEA,IACA,IACAmC,EAAAA,GAAAA,EAAAA,eAAAA,CACA3xN,GAAAA,EACA4xN,IAAAA,WACA,IACApC,GAAAA,EAAAA,GAAAA,EAAAA,iBACAA,GAAAA,EAAAA,GAAAA,EAAAA,mBAEA,IACA,IACA/N,GAAAA,EAAAA,EAAAA,WAAAA,EAAAA,GACAA,GAAAA,EAAAA,EAAAA,iBAAAA,EAAAA,GACA+O,GAAAA,EAEA,CAhFA0B,CAAAA,EAAAA,EAAAA,EAAAA,EAEA,CACA,CA1GAC,CAAAA,GAOA,CAJA,UAGA,MADAtd,EAAAA,gBAAAA,GACA,EACA,CAxDA,CAyDA,EACAA,EAAAA,YAAAA,SAAAA,EAAAA,GACAob,GAAAA,EAAAA,SAAAA,EAAAA,GAEAtO,GAAAA,OAAAA,KAAAA,KAAAA,GACAiL,GACA,EA6NAnd,GAAAA,EAAAA,oBAAAA,WAAA,YACAA,GAAAA,EAAAA,+BAAAA,WAAA,YACAA,GAAAA,EAAAA,yBAAAA,WAAA,YACAA,GAAAA,EAAAA,iBAAAA,WAAA,cACA,IACA,CACA,CAgJA,OA5tBA33J,GAAAA,EAAAA,GA0tBAg4K,EAAAA,QAAAA,QACAA,EAAAA,iBAAAA,GACA,CACA,CA9tBA,CA8tBA1D,ICnyBA,SAASgG,GAAYC,GACrB,kBACA,mBACA,UACA,CACA,CACA,I3CgtByCtpO,G2ChtBrCupO,GAAiBF,GAAY,eAC7BG,GAAYH,GAAY,UACxBI,GAAcJ,GAAY,YAC1BK,GAAeL,GAAY,aAC3BM,GAAaN,GAAY,WACzBO,GAAUP,GAAY,QACtBQ,GAAWR,GAAY,SACvBS,GAAcT,GAAY,YAC1BU,GAAJ,YAEA,aACA,yBACA,CACA,OAJAh7K,GAAAA,EAAAA,GAIA,CACA,CANA,E3CwsByC/uD,G2ClsBzCgqO,CACAC,mBAAAA,GAAAA,OACAC,iBAAAA,GAAAA,SACAC,kBAAAA,GAAAA,UACAC,cAAAA,GAAAA,iBACAC,iBAAAA,GAAAA,SACAC,SAAAA,GAAAA,MACAC,SAAAA,GAAAA,MACAC,eAAAA,GAAAA,YACAC,aAAAA,GAAAA,UACAC,YAAAA,GAAAA,SACAC,mBAAAA,GAAAA,gBACAC,cAAAA,GAAAA,WACAC,kBAAAA,GAAAA,eACAC,cAAAA,GAAAA,WACAC,SAAAA,GAAAA,MACAC,gBAAAA,GAAAA,aACAC,mBAAAA,GAAAA,gBACAC,eAAAA,GAAAA,YACAC,uBAAAA,GAAAA,oBACAC,WAAAA,GAAAA,QACAC,kBAAAA,GAAAA,eACAC,aAAAA,GAAAA,UACAC,cAAAA,GAAAA,WACAC,qBAAAA,GAAAA,kBACAC,WAAAA,GAAAA,MACAC,gBAAAA,GAAAA,WACAC,iBAAAA,GAAAA,YACAC,aAAAA,GAAAA,QACAC,YAAAA,GAAAA,MACAzlC,cAAAA,GAAAA,QACA0lC,kBAAAA,GAAAA,YACAC,gBAAAA,GAAAA,UACAC,yBAAAA,GAAAA,mBACAC,2BAAAA,GAAAA,qBACArgI,UAAAA,GAAAA,MACAsgI,eAAAA,GAAAA,WACAC,aAAAA,GAAAA,SACAC,2BAAAA,GAAAA,0BACAC,cAAAA,GAAAA,aACAljO,UAAAA,GAAAA,aACAmjO,OAAAA,GAAAA,MACAC,gBAAAA,GAAAA,eACAC,eAAAA,GAAAA,cACAC,iCAAAA,GAAAA,2BACAC,qCAAAA,GAAAA,2BACAC,UAAAA,GAAAA,QACAC,UAAAA,GAAAA,QACAC,aAAAA,GAAAA,WACAC,kBAAAA,GAAAA,gBACAC,iBAAAA,GAAAA,eACAC,cAAAA,GAAAA,YACAC,oBAAAA,GAAAA,kBACAC,iBAAAA,GAAAA,YACAC,mBAAAA,GAAAA,cACAC,qBAAAA,GAAAA,gBACAC,gBAAAA,GAAAA,WACAC,eAAAA,GAAAA,W3C2oBA,WACA,WACA,IACAxmB,GAAAA,IAAAA,SAAAA,EAAAA,GACAymB,EAAAA,GAAAA,CACA,GAEA,I4CluBWC,GAAa,CACxBC,QAAAA,OACAC,UAAAA,SACAC,SAAAA,QACAC,OAAAA,MACAC,OAAAA,MACAC,MAAAA,KACAC,WAAAA,MACAC,OAAAA,OAEWC,GAAa,IAAIlE,GCLxBmE,GAIJ,gBACA,WACA,OACApiB,EAAAA,IAAAA,EACAA,EAAAA,WAAAA,IACAA,EAAAA,KAAAA,CAAAA,EACAA,EAAA,iBACAA,EAAAA,KAAAA,EACAA,EAAAA,KAAAA,GAAAA,IAAAA,MACAA,EAAAA,eAAAA,CACAt6J,KAAAA,EACA0/J,KAAAA,EACAzxN,KAAAA,EACA0uO,WAAAA,WACA,6BACA,EACAzvK,KAAAA,EACAxmE,KAAAA,EAEA,EC3BIk2O,GAIJ,cAIA,qBACAtd,SAAAA,EACAud,SAAAA,GAEA,gBACA,eACA,EC8CWC,GAA6B,sCCrDpCC,GAAU,OACd,SAASC,GAAYvqO,EAAQ+2C,EAAOhhD,GACpC,mBACA,CAqFA,SAASy0O,GAA6Bv2O,EAAM0uE,EAAYmpJ,GACxD,OACAjJ,GAAAA,GAAAA,SAAAA,EAAAA,GACA,MACAiJ,EAAAA,GAAAA,EAEA,MACAnpJ,EAAAA,GAAAA,EAEA,OACAA,EAAAA,GAAAA,KAAA,aAEA,GAEA,CACA,SAAS8nK,GAA2C9nK,EAAY+nK,GAChE,OACA7nB,GAAAA,GAAAA,SAAAA,EAAAA,GACAlgJ,EAAAA,GAAAA,GAAAA,CACA,GAEA,CAEA,SAASgoK,GAAgB7oJ,EAAQ8oJ,EAAc1d,EAAej5N,GAC9D,oBACAs2O,GAAAA,EAAAA,aAAAA,EAAAA,aACA,4BACAM,EAAAA,KAAAA,GAAAA,EAAAA,SAAAA,YAEAA,EAAAA,KAAAA,EAAAA,KACA,8BAMA,OALAA,EAAA,6BAhHA,SAAiC/oJ,EAAQn1E,EAAMxK,GAE/C,wBACA,kBACA,oBACA,SACA,IACAooO,GAAAA,EAAAA,GAAAA,eAAAA,EAAAA,QACAA,GAAAA,EAAAA,GAAAA,OAAAA,EAAAA,IAAAA,EAAAA,UAEA,YACA,GACAA,GAAAA,EAAAA,GAAAA,UAAAA,EAAAA,OAEA,eACA,IACAA,GAAAA,EAAAA,GAAAA,SAAAA,EAAAA,IAAAA,EAAAA,SACAA,GAAAA,EAAAA,GAAA,0BACAA,GAAAA,EAAAA,GAAAA,SAAAA,EAAAA,IACAA,GAAAA,EAAAA,GAAAA,YAAAA,EAAAA,OACAA,GAAAA,EAAAA,GAAA,0BAEA,gBACA,MACAA,GAAAA,EAAAA,GAAAA,eAAAA,EAAAA,aACAA,GAAAA,EAAAA,GAAAA,qBAAAA,EAAAA,YACAA,GAAAA,EAAAA,GAAAA,cAAAA,EAAAA,SACA,wBACA,4BACA,gCACAA,GAAAA,EAAAA,SAAAA,EAAAA,QACAA,GAAAA,EAAAA,WAAAA,EAAAA,SAAAA,GAAAA,MACAA,GAAAA,EAAAA,YAAAA,EAAAA,WACAA,GAAAA,EAAAA,cAAAA,EAAAA,YAAAA,GAAAA,KACA,CACA,WACA,GACAA,GAAAA,EAAAA,GAAAA,SAAAA,EAAA,MAGA,cACA,IACAA,GAAAA,EAAAA,GAAAA,kBAAAA,EAAAA,UACAA,GAAAA,EAAAA,GAAAA,cAAAA,GAAAA,EAAAA,EAAA,OACAA,GAAAA,EAAAA,GAAAA,YAAAA,EAAA,UAmBA,IAFA,SAEA,sBAEA1nB,GADA,MACAA,SAAAA,EAAAA,GACAioB,EAAAA,GAAAA,CACA,IACAC,EAAAA,OAAAA,EAAAA,GAGAloB,GAAAA,GAAAA,SAAAA,EAAAA,GACAioB,EAAAA,GAAAA,CACA,IACA,qBACA,2BAEAE,EAAAA,GAAAA,oBAAAA,cAAAA,OAAAA,GAAAA,UAEA7oO,EAAA,UACA,CAkCA8oO,CAAAA,EAAAA,EAAAA,GAEA/d,EAAA,gBACA,KACA,CACA,SAASge,GAAoBppJ,EAAQorI,GACrC,gBACApE,GAAAA,EAAAA,EAAA,4CAEA,CACO,IAAIqiB,GAAkB,CAC7BC,QAAAA,SAoBO,SAASC,GAAqBvpJ,EAAQorI,EAAewd,GAC5DQ,GAAAA,EAAAA,GACA,SACA,KACA,2BACAne,EAAAA,eAAAA,EAAAA,UAEA,0BACAA,EAAAA,EAAAA,SAAAA,YAAAA,CAAAA,EACAue,EAAAA,EAAAA,SAAA,kBAGA,YACAd,GAAAA,EAAAA,SAAAA,EAAAA,GAIAA,GAAAA,EAAA,UACA,OACAC,GAAAA,EAAAA,GAEA,sBACA,kBACA,wBACA,gCACA,CCxLA,SAASc,GAAevrO,EAAQ2zN,GAChCgB,GAAAA,EAAAA,KAAAA,KAAAA,EACA,CCCA,ICLI,GDKA6W,GAAJ,WACA,gBACA,SACA,KACA,qBACA,QACA,EACA,sBAEA,OADAC,EAAAA,CAEA,EACA3tB,GAAAA,EAAAA,MAAAA,SAAAA,GACA+J,EAAA,oBACA,gCAEA,IACAiB,GAAAA,EAAAA,EAAA,4DACA4iB,GAAAA,GAIAD,EAAA,OACA,EACA5jB,EAAA,iBACA,eACA,EACAA,EAAAA,KAAAA,WAEA,IADA,eACA,mBACA/5M,GAAAA,EAAAA,GAAA,OAKA,OAHA,4BACAA,GAAAA,GAEA,CACA,EACA+5M,EAAA,iBACA4jB,EAAAA,GACAC,GAAAA,CACA,EACA7jB,EAAAA,SAAAA,WACA,iBACA,EACAA,EAAA,0BACA,qBACA,0BACA/iN,EAAAA,KAAAA,MACA,oBAGA,IACA,CACA,GACA,qBAwBA,CA7EA,GAiFI6mO,GAAJ,YAEA,gBACA,6BASA,OARA7tB,GAAAA,EAAAA,GAAAA,SAAAA,EAAAA,GACA+J,EAAA,uBACAuc,EAAA,OACA,EACAvc,EAAA,sBAEA,CACA,IACA,CACA,QAZA/8J,GAAAA,EAAAA,gBAoBA,CArBA,CAqBA0gL,IAKII,GAAJ,YAEA,gBACA,6BACA,KA6FA,OA5FA9tB,GAAAA,EAAAA,GAAAA,SAAAA,EAAAA,GACA,sBACA,uBACA,sBA4CA,gBACA,SAMA,OALAgG,GAAAA,GAAAA,SAAAA,GACA,qBACA+nB,EAAA,OAEA,IACA,CACA,CACA,cACA,QACA,IACAC,EAAAA,EAAA,kDACA,cACA,MACA,oBAKA,GAJA,QAEAC,EAAAA,KAAAA,MAAAA,IAEA,SACA,QAEA,CAIA,CAFA,UACAjjB,GAAAA,EAAAA,EAAA,mCAAAl5J,UAAAA,GAAAA,KACA,CACA,QACA,CACA,gBACA,QACA,IACAk8K,EAAAA,EAAA,kDACA,wBACAxhB,GAAAA,EAAAA,EAAAA,EAOA,CALA,UAGAA,GAAAA,EAAAA,EAAAA,KAAA,eACAxB,GAAAA,EAAAA,EAAA,sDAAAl5J,UAAAA,GAAAA,KACA,CACA,CArFA,6BACAhuD,EAAA,0BAEAoqO,EAAAA,EAAA,oBACAA,EAAAA,EAAA,cACAnkB,EAAA,oBACA,6BAEA,IACAiB,GAAAA,EAAAA,EAAA,iDACA4iB,GAAAA,IAIAtH,EAAA,WACA4H,EAAAA,EAAA,qBACA,EACAnkB,EAAA,iBACAuc,EAAA,QACA4H,EAAAA,EAAA,qBACAA,EAAAA,EAAA,oBACAN,GAAAA,CACA,EACA7jB,EAAA,uBACAmkB,EAAAA,EAAA,kCACA,2BACA,0CACAC,EAAAA,EAAAA,OAAAA,IACA,2BAGAnjB,GAAAA,EAAAA,EAAA,yDACAmjB,EAAA,0BAEAD,EAAAA,EAAA,mBAEA,EACAnkB,EAAA,sBACA,2BACAokB,EAAAA,EAAAA,EAAAA,GACAD,EAAAA,EAAA,kBACA,CA6CA,IACA,CACA,CAiBA,OAlHAlhL,GAAAA,EAAAA,GA8GA8gL,EAAAA,WAAAA,YACAA,EAAAA,gBAAAA,gBAEAA,EAAAA,gBAAAA,IACA,CACA,CApHA,CAoHAJ,IEjOIU,GAAJ,WACA,cACApuB,GAAAA,EAAAA,MAAAA,SAAAA,GAcA,gBACA,IACA,KACA,MAEA,OADAgL,GAAAA,EAAAA,EAAA,8DAAAttN,KAAAA,IAAA,GACA,EAEA,0BAEA,OADAstN,GAAAA,EAAAA,EAAA,2DAAAttN,KAAAA,IAAA,GACA,EAEA,sBAEA,sBACAqlC,EAAAA,EAAAA,EAAAA,SAAAA,QAEA,oBACAA,EAAAA,EAAAA,EAAAA,SAAAA,QAEA,cACAA,EAAAA,EAAAA,EAAAA,SAAAA,QAEA,SACAA,EAAAA,EAAAA,EAAAA,OAEA,CACAioL,GAAAA,EAAAA,EAAA,+EAAAttN,KAAAA,IAAA,GACA,IAEA8qN,KAAA,aACAzlL,EAAAA,CAKA,CAHA,UAEAioL,GAAAA,EAAAA,EAAA,wEACA,CACA,CACA,QACA,CAmCA,OAlCA1tN,EAAAA,sBAAAA,EACAynN,GAAAA,EAAAA,gBAAAA,SAAAA,EAAAA,GACA,sBACA,kBACA,MACA,gBACA,wBACA,aAIA,OACA,kBAgBA,KAZA9sN,EAHA,EACA,EAEAA,EAAAA,EAAAA,GAAAA,GAIAA,EAAAA,EAAAA,GAAAA,GAKAA,EAAAA,MAIA8qC,EAAAA,GAAAA,EAEA,OAvBAioL,GAAAA,EAAAA,EAAA,4FAAA/xK,MAAAA,EAAAv7C,KAAAA,GAwBA,WACA,uBACA,CACA,CACA,gBACA,MACA,KACA,SAGA,CACAqlC,EAAAA,GACA,4BACA,IACA,IADA,KACA,aACAA,EAAA,OACA,CACA,MATAioL,GAAAA,EAAAA,EAAA,6FAAAttN,KAAAA,IAAA,GAWA,QACA,CACA,kBACA,MAyCA,OAxCA,IACAqlC,EAAAA,CAAAA,EACAgiL,GAAAA,GAAAA,SAAAA,EAAAA,GACA,qBACA,MACAhiL,EAAAA,GAAAA,YAEA,SACAA,EAAAA,GAAAA,OAEA,WAIAA,EAAAA,GAAAA,EAAA,WAHAA,EAAAA,GAAAA,iDAMA,gBACA,cACAA,EAAAA,GAAAA,iBAEA,YACAA,EAAAA,GAAAA,WAEA,CACA,oBACA,SACAA,EAAAA,GAAAA,MAGAA,EAAAA,GAAAA,CAEA,MAGAA,EAAAA,GAAAA,kBAAAA,EAAAA,uBACAioL,GAAAA,EAAAA,EAAA,aAEA,KAEA,CACA,CAjJAjB,EAAAA,UAAAA,SAAAA,GACA,kBACA,IACA,wBAKA,CAHA,UAEAiB,GAAAA,EAAAA,EAAA,wEACA,CACA,CAyIA,GACA,qBASA,CAlKA,GCEIqjB,GAAJ,WACA,aACA,CAwBA,OAvBAA,EAAAA,UAAAA,iBAAAA,SAAAA,GAEA,YADA,oCAEA,EACAA,EAAAA,UAAAA,YAAAA,SAAAA,GACA,UACA,SAEA,cAZuB,GAavB54L,EAAAA,EAAAA,OAAAA,GAIA,IADA,WACA,mBACA7tC,GAAAA,GAAAA,GAAAA,EAAAA,EAAAA,WAAAA,GAGAA,GAAAA,EAEA,kBACA,EAEAymO,EAAAA,cAAAA,WACA,CACA,CA3BA,GCAIC,GACJ,WACA,IACA,SACA,SAFA,KAGA,6BAkBA,OAhBA,yBACAt+B,EAAAA,iBAAAA,EAAA,gBAEA,iCACAA,EAAA,gCAEA,8BACAA,EAAAA,iBAAAA,EAAA,qBAEA,0DACAA,EAAAA,iBAAAA,EAAAA,IAAAA,eAAA,SAIAA,IAAAA,KAAAA,QAGA,CACA,ECxBIu+B,GAAJ,WACA,gBAEA,8BACA,mBACA,cACA7L,EAAAA,cAAAA,EAAA,kJAAA8L,aAAAA,IAAA,GACApC,EAAAA,KAEA,kBACA,kCACA,CAiBA,OAbAmC,EAAAA,UAAAA,YAAAA,SAAAA,GACA,sBAEA,sCAGA,0BAIAE,KAAAA,uBAAA,sBAEA,EACA,CACA,CA7BA,GJMA,SAASC,GAAiBr1M,GAC1B,IACA,qBAIA,CAFA,UAEA,CACA,WACA,CACA,SAASs1M,KACT,MACA,EAGA,UACAtU,YAAAA,WAAA,gBAEA,2CACAn4H,EAAA,yCACAA,EAAA,8CACAA,EAAA,sCACAA,EAAA,gDACAA,EAAA,qCACAA,EAAA,yCACAA,EAAA,gCACAA,EAAA,0CACAA,EAAA,2CACAA,EAAA,wCACAA,EAAA,gCACAA,EAAA,0CACAA,EAAA,2BACAA,EAAA,sCACAA,EAAAA,iBAAAA,WAAA,YACAA,CACA,CACA,IAAI0sI,KAAuB,GAAK,CAAC,GACjC1sI,GAAAA,UAAAA,GACAA,GAAAA,GAAAA,UH0OO,SAA8Ble,EAAQorI,EAAewd,GAC5DQ,GAAAA,EAAAA,GACA,yBACA,2BACA,4BACA,8BACAV,GAAAA,EAAA,UACA,OACAC,GAAAA,EAAAA,GAEA,wBACA,wBACA,gCACA,EGtPAzqI,GAAAA,GAAAA,UHoKO,SAAiCle,EAAQorI,EAAewd,GAG/D,MAFAQ,GAAAA,EAAAA,GAGA,iBACA,OACA,kBACA,0BAIA,YACA,sBACAl0N,EAAAA,EAAA,qBACA,kBANAA,EAAAA,EAAAA,WAAAA,gBACA,uBAOA,IAEA,EAFA,eAGA,gCACA21N,EAAAA,EAAAA,IAAAA,MAAA,SAEA,cACA,SACA,QACA,mBACA,qBAEA,eACAhqK,EAAAA,OAAAA,EAAAA,QAGA,iBACAA,EAAAA,SAAAA,EAAAA,UAGA,mBACAA,EAAAA,WAAAA,EAAAA,WAAA,YAGA,kBAEAkgJ,GADA,cACAA,SAAAA,EAAAA,GACAlgJ,EAAAA,GAAAA,CACA,IAEA6nK,GAAAA,EAAA,UACA,OACAC,GAAAA,EAAAA,GAEA,4BACA,wBACA,gCACA,EGxNAzqI,GAAAA,GAAAA,UHyNO,SAA4Cle,EAAQorI,EAAewd,GAC1EQ,GAAAA,EAAAA,GACA,iBACA,SACA,eACA,mBACA,qBACAV,GAAAA,EAAA,UACA,OACAC,GAAAA,EAAAA,GAEA,iCACA,wBACA,gCACA,EGtOAzqI,GAAAA,GAAAA,UHuIO,SAAkCle,EAAQorI,EAAewd,GAChEQ,GAAAA,EAAAA,GAEA,kCACA,4BACAV,GAAAA,EAAA,UACA,OACAC,GAAAA,EAAAA,GAEA,iBACA,kCACA,wBACA,gCACA,EGnJAzqI,GAAAA,GAAAA,UHoJO,SAA+Ble,EAAQorI,EAAewd,GAC7DQ,GAAAA,EAAAA,GACA,iBACA,mBACA,qBACAV,GAAAA,EAAA,UACA,OACAC,GAAAA,EAAAA,GAEA,wEACA,wBACA,gCACA,EG/JAzqI,GAAAA,GAAAA,UHyFO,SAAmCle,EAAQorI,EAAewd,GACjEQ,GAAAA,EAAAA,GACA,kCACA,4BACAV,GAAAA,EAAA,UACA,OACAC,GAAAA,EAAAA,GAEA,iBACA,SAEA,OADAzhB,GAAAA,EAAAA,qCACA,KAEA,4DACA,uGACA,wBACA,gCACA,EGzGAhpH,IACI4sI,GAAJ,YAEA,aACA,IAQA,EACA,EAEA,EACA,EACA,EACA,EACA,EAfA,qBACAhrH,EAAAA,SAAAA,KACAA,EAAAA,WAAAA,GAIAA,EAAAA,cAAAA,KAUA,IACA,EACA,EACA,EACA,EAJA,IAiyBA,OA5xBAk8F,GAAAA,EAAAA,GAAAA,SAAAA,EAAAA,GA0UA,wBACA,WAOA,GANA,WACAnoN,EAAAA,EAAAA,KACA,UACAkyN,EAAAA,OAAAA,EAAAA,QAGA,uBAGA,iCACA,KAEA,YADAA,EAAA,eAIA,yCACAglB,EAAAA,GACA/jB,GAAAA,EAAA,kCACAjzN,EAAA,wBAAAiP,EAAA,mBAGA+iN,EAAA,aAEA,MACA,qBAEA,uCAEAglB,EAAAA,EADA,IAEA/jB,GAAAA,EAAA,qJACA,OAKAgkB,EAAAA,GACA,SACA,IACAn3O,EAAAA,EAAAA,IAEA,sCACAkyN,EAAA,uBAGAA,EAAA,gBAIAklB,EAAAA,EACAllB,EAAA,gBAGA,CACA,cAEA,kBAKA,eACA,oCACAA,EAAA,iDACA,GACA,GAIA,CACA,gBACA,EAEAmlB,EAAAA,GAAAA,GAIAC,EAAAA,EAAAA,EAEA,CACA,cACA,WACA,YACA,gCACA,6BAGA,gBAAA50O,KAAAA,6BAEA,oBAMA,OALA,IACAuJ,EAAA,cAEAimN,EAAAA,WAAAA,EAAAA,EAAA,SAEA,CACA,CAQA,gBACA,uBAEA,MAGA,IADA,SACA,oBACA,WACA,QAEAqlB,EAAA,OAEA,CACA,aACAC,GAAAA,EAAAA,GAAAA,GACArkB,GAAAA,EAAA,0FAEA,CAEA,CAMA,gBACA,yBACA,gCACA,IACA3xL,EAAAA,KAAAA,CAKA,CAHA,UAGA,CACAA,EAAAA,KAAAA,OAAAA,EAAAA,GACAA,EAAA,oDAEA,OACAA,EAAA,8BAEA2sL,GAAAA,GAAAA,IAAAA,SAAAA,GACA3sL,EAAA,wBACA,IACAA,EAAAA,mBAAAA,WAAA,6CACAA,EAAAA,QAAAA,SAAAA,GAAA,6BAEA,iCACAA,EAAAA,KAAAA,GACA0wL,EAAAA,QAAA,aACA,CACA,gBACA,UAEA,IADA,eACA,mBACAulB,GAAAA,EAAAA,GAAA,OAEA,KAjjBqC,KAkjBrCC,EAAAA,GAAAA,GAEA,KAEAJ,EAAAA,IAIAE,GAAAA,EAAAA,GAAAA,GACArkB,GAAAA,EAAA,sFAEA,CACA,CAMA,gBACAukB,EAAAA,GAAAA,EACA,CAMA,gBACA,MACA,gCACA,6BACA,gBAAAh1O,KAAAA,qBACA,cACA,WACA,KACA,KAEA,OACAnE,EAAAA,OAAAA,GAAAA,GAAA,OAEA4vN,GAAAA,GAAAA,IAAAA,SAAAA,GACA5vN,EAAAA,OAAAA,EAAAA,EAAAA,GACA,IACA,WACAgC,OAAAA,OACA/B,QAAAA,EACAuiC,KAAAA,IAEAspE,KAAAA,EAEAA,GACA,IACAlmB,EAAAA,WAAAA,EAGAwzJ,GAAAA,EACAC,GAAAA,GAEA,uBACA,IAEA34O,EAAAA,KAAAA,CAKA,CAHA,UAGA,CACAizN,EAAAA,QAAA,cACA,IACAtmM,MAAAA,GAAAA,MAAAA,SAAAA,GACA,IACAgsN,GAAAA,EACAC,EAAAA,GAEA,IACAC,GAAAA,EAMA,KAIA93O,EAAAA,OAAAA,MAAAA,SAAAA,GACA+3O,EAAAA,EAAAA,OAAAA,EAAAA,EAAAA,IAAAA,EAAA,sBACA,IALA7lB,EAAA,yBAQA,IArBA,OAqBA,YACA,IACA0lB,GAAAA,EACAC,EAAAA,GAEA,IACAC,GAAAA,EACA5lB,EAAA,sBAEA,GAMA,CAJA,UACA,GACAA,EAAA,kBAEA,CACA,QAEA4lB,GAAAA,EACA5lB,EAAAA,WAAAA,EAAAA,EAAA,QAEA,CAKA,cACA,IACA,cACA,oBACA,yDACAz/M,EAAAA,cAAAA,EAAAA,gBAAAA,EAAAA,OAAA,OACA,QAEA,CAMA,CAJA,UACA0gN,GAAAA,EAAA,qDACAnzN,SAAAA,GAEA,CACA,WACA,CAKA,gBAEA,QADA,QAAAg4O,EAAAA,GACA,iBAGA,gBACA/rO,EAAA,aACAmrO,IACA,gCACA,WACAnrO,EAAA,UACA,EASA,YACA,IACA,EADA,KAEA,QACAgsO,EAAAA,MAEA,CACA,0BAEA,kCACAC,GAAAA,EACAD,EAAAA,KAAAA,IAAAA,KAAAA,IAAAA,EAAAA,MAAAA,EACA,CAEA,iBAEAE,EAAAA,CACA,CAxBAC,CAAAA,GACAC,GAVA,CAWA,CA0BA,aACA,WACA,6BACA,iDACAC,EAAAA,YAAAA,WACAA,EAAAA,KACApmB,EAAA,sBACA,GAAAqmB,EACA,CACA,CACA,aACA1uN,aAAAA,GACAyuN,EAAAA,KACAH,EAAAA,IACA,CAKA,cACA,gBACAK,MAAAA,GACAA,MAAAA,GACAA,MAAAA,GACAA,MAAAA,GACAA,MAAAA,GACAA,MAAAA,GACAA,MAAAA,CACA,CACA,gBACA,SACA,wDAEA,CACA,CAWA,gBACA,gBACA,OACA,qBACAC,EAAAA,OAAAA,WAAA,0BACAA,EAAAA,QAAAA,SAAAA,GAAA,6BAGA,6CACA,sDAIA,OAHAtlB,GAAAA,EAAA,yHAEAlnN,EAAA,QAGA,6DACAwsO,EAAAA,KAAAA,OAAAA,GAEA,yBACAA,EAAAA,KAAAA,GACAxsO,EAAA,aACA,CACA,gBACA,SACA,oCAEA,CACA,CAkCA,aACAimN,EAAA,aACAA,EAAA,aACAA,EAAAA,OAAAA,KACAA,EAAAA,QAAAA,KACAwmB,EAAAA,CAAAA,EACAC,EAAAA,KACAvB,EAAAA,EACAe,EAAAA,KACAS,KACAC,GAAAA,EACAP,EAAAA,KACAQ,EAAAA,KACAC,EAAAA,EACAnB,EAAAA,EACAJ,EAAAA,KACAH,EAAAA,KACAhJ,EAAAA,IACA,CAzxBApE,IACA/X,EAAAA,MAAAA,WACA8mB,IACAH,GAAAA,CACA,EACA3mB,EAAAA,OAAAA,WACA,IACA2mB,GAAAA,EACAV,EAAAA,KAEA,wDACAjmB,EAAA,wBAEAmmB,IAEA,EACAnmB,EAAAA,MAAAA,SAAAA,EAAAA,EAAAA,GAEA,QADA,QAAAl2L,GAAAA,IACA,GAEAg9M,IACA,IACA9mB,EAAA,wBAIA,CAFA,UACAiB,GAAAA,EAAA,yEAAAl5J,UAAAA,GAAAA,KACA,CACA,CACA,EACAi4J,EAAAA,cAAAA,WACA,MACA,mGASAA,EAAAA,aARA,IACAA,EAAA,mBAIA,CAFA,UACAiB,GAAAA,EAAA,8GAAAl5J,UAAAA,GAAAA,KACA,CAMA,EACAi4J,EAAAA,UAAAA,SAAAA,EAAAA,GACAwmB,EAAAA,GAAAA,CACA,EACAxmB,EAAAA,WAAAA,SAAAA,EAAAA,EAAAA,EAAAA,GACA,mBACAiB,GAAAA,EAAA,gDAEAsb,EAAAA,WAAAA,EAAAA,EAAAA,EAAAA,GACA,qBACA,eACAqK,EAAAA,IAAAA,GAAAA,EAAAA,QACA1B,EAAAA,EACAe,EAAAA,KACAS,EACA1mB,EAAA,aACA6mB,EAAAA,EACA,kBACA1K,EAAAA,GAAAA,GAAAA,UAAAA,EAAAA,cAAAA,EAAAA,gBACAsK,EFtIO,SAA+BM,GACtC,WACA,OACA,KACA,KACA,8BACA,IAIA,GAHA,UACAC,GAAAA,GAEA,GAEA,gBACA,YACA,OACAA,GAAAA,EAGA,CACA,GAEA,mBACAC,EAAAA,EAAA,OAOA,CAHA,UAEAD,GAAAA,CACA,CACA,cACA,SAOA,OANA,IACAjsL,EAAAA,GAAAA,EAAAA,SAAAA,EAAAA,KAEA6xK,GAAAA,EAAAA,UAAAA,EAAAA,GAGA,CACA,CACA,aACAqa,GAAAA,CACA,CACA,aACAA,GAAAA,CACA,CAyBA,OACAC,SAzBA,WACA,SAOA,OANA,EACA3mO,EAAAA,EAEA,mBACAA,EAAAA,EAAA,QAEA,CACA,EAiBA4mO,YAAAA,WAAA,UACA7R,OAjBA,WACA,WACA,SAEA,GADAoO,GAAAA,EAAAA,GACA,GAEA,gBACA,gBACAA,GAAAA,EAAAA,EAEA,CACAsD,GAAAA,CACA,CACA,EAMA,CE2DAP,CAAAA,GAGAzrB,GADA,MACAA,SAAAA,EAAAA,GACAgF,EAAA,4BACA,2BAKA,OAJA,uBAEA1E,EAAAA,KAEA,CACA,CACA,IACA0E,EAAAA,QAAAA,EAAA,iDACA,oDACAA,EAAAA,QAAAA,IAAAA,GAAAA,EAAA,sCAirBA,YAEA,IADA,iBAEA,SAIA,OADA,WADA,kEAEA,0BACA,CAxrBA,KACAiB,GAAAA,EAAAA,EAAA,0DAEA,8GACAhF,GAAAA,EAAA,2CACAliG,EAAAA,UAAAA,EAAAA,OAAAA,EAAAA,MACA,IAEA,sBACA,QACA,qBACAqtH,EAAAA,GAEA,uBACAA,EAAAA,IAEA,UACAA,EAAAA,GAGA9B,EAAAA,GAAAA,GACA,gCAEA8B,EAAAA,GAEApnB,EAAA,aAGAmlB,GAFA,iCAEAA,EAEA,KAEAA,GAEA,qBACAA,GAEA,qBACAA,EAGAA,CAEA,EACAnlB,EAAAA,iBAAAA,SAAAA,EAAAA,GAEA,IA0MA,EA1MA,GADA0V,EAAAA,EAAAA,WAAAA,IACA,UACA,IAEA,sCAEA,OAGA,MAEA,YADAzU,GAAAA,EAAAA,EAAA,iCAIA,2BAEA,YADAA,GAAAA,EAAAA,EAAA,0DAQA,GALA,aAEAoE,EAAA,uBAGA,UAEA,YADApE,GAAAA,EAAAA,EAAA,iCAIA,GA+KA,EA/KA,GAgLA,yBA7KA,YADAA,GAAAA,EAAAA,EAAA,kDAAAomB,WAAAA,EAAAA,QAAA,aAIAhiB,EAAAA,WAAAA,EAAAA,QAAA,WAEA,iDAGA,+CACA,+BACA,MAEA,YADApE,GAAAA,EAAAA,EAAA,+CAGA,SAkBA,GAhBA,+BACAhF,GAAAA,EAAA,gCACA,IACA,eACAqrB,GAAAA,EACAnmB,GAAAA,EAAAA,2CAOA,CAJA,UAGAF,GAAAA,EAAAA,EAAA,qFAAAl5J,UAAAA,GAAAA,MAAA,EACA,CACA,WACA,sBAEA,EACA,OAGA,qBAEA,YACA,SACA,gDACAi4J,EAAA,wBAGAjmN,EAAA,WAEAosO,GAIA,CAFA,UACAllB,GAAAA,EAAAA,EAAA,2FAAAl5J,UAAAA,GAAAA,KACA,CAEAi4J,EAAAA,YAAAA,EAAAA,EACA,EAIAA,EAAA,qCACA,kBACA6lB,EAAAA,EAAAA,OAAAA,EAAAA,EAAAA,YAAAA,EAAAA,EAAAA,GAAAA,GAAAA,IAAAA,EAAAA,SAEA,EAMA7lB,EAAA,4BAEA,QADA,QAAA3S,GAAAA,IACA,EACA,IACA,gBAEA,sCAgBAtzM,EAAA,YAhBA,CACA,gBACA,oBA0gBA,cACA,MATA,WACA,qBACA,aACA,mBAGA,kCACA,CAEA,GACA,0BACA,IACAuzK,EAAA,sBAIA,CAFA,UACA2zC,GAAAA,EAAA,4DAAAl5J,UAAAA,GAAAA,KACA,CAEA,CAnhBAw/K,CAAAA,GAAAA,EAAA,GAEA,EACAC,EAAAA,KAAAA,EAAAA,EAAAA,GAGAxnB,EAAA,YAEA,EAEA0mB,IAAAA,IACA,CAIAI,GAQA,CANA,UAEA,aACA,SACA7lB,GAAAA,EAAA,sFAAAl5J,UAAAA,GAAAA,KAEA,CAEA,EACAi4J,EAAAA,YAAAA,SAAAA,EAAAA,GACAA,EAAAA,gBACAymB,EAAAA,SACA1O,GACA,EAIA/X,EAAA,yBACAiB,GAAAA,EAAA,4CAAAjuN,QAAAA,IACAgtN,EAAAA,QAAA,YACA,EAIAA,EAAA,gCAKA,IAJA,SACA,KAGA,MADA,mBACA,gBACA,WACA,yBACA,gBACAxwH,EAAA,QAIAi4I,EAAA,OAEA,CACA,YACAznB,EAAA,8BAEA,YACAA,EAAA,uFAEA,aACAglB,EAAAA,GACA/jB,GAAAA,EAAA,8CACAhkN,EAAA,oBAAAwqO,EAAA,OACA,wBAAAj4I,EAAA,kBAAA+qH,EAAA,wBAEA,EAIAyF,EAAA,yBACAA,EAAAA,QAAA,YACA,EAIAA,EAAAA,WAAAA,SAAAA,EAAAA,GACA,YACA,4BAIA,CACA,WACA,sDACA,kCACAA,EAAA,uBAGAA,EAAA,gBAEA,MAZAklB,EAAAA,EACAllB,EAAA,eAYA,CAqdA,IACA,CACA,CA+FA,OAn5BA/8J,GAAAA,EAAAA,GAqzBA8hL,EAAAA,kBAAAA,SAAAA,EAAAA,EAAAA,EAAAA,GACA,MAQA,OAHA/B,EAJA,kBAIAA,EAHAA,GAAAA,GAAAA,CAAAA,EAAAA,GAAAA,CAAA5d,KAAAA,KAKA,oBACA,MACA,EAoFA,CACA,CAr5BA,CAq5BAmS,IKt8BO,SAASmQ,GAAsBC,GACtC,MACA,SAEA,IACA,KADA,QANwB,MAOxB,cACA,cAPiC,KAQjC,iBACA,yBACA,OACAj5L,EAAAA,GAAAA,CACA,CACA,QACA,OACA,mBAEA,qBAEA,mCACAnuC,EAAA,0EACA,CAEAA,EAAA,yCACA,CACA,QACA,CC1B2B6gN,GAAgB,CAC3CvlB,QAAAA,EACA+rC,YAAAA,EACAhsC,QAAAA,EACAx1M,MAAAA,EACAyhP,SAAAA,ICPA,WACA,aACA,CACAC,EAAAA,UAAAA,SAAAA,EAAAA,EAAAA,EAAAA,GAEA,MAOA,YARA,QAAA5sN,GAAAA,GAGAriB,EADA,yEACAA,EAAA,sBAGAA,EAAAA,GAEA,SACA,CAEA,CAfA,GF6BO,IG1BIkvO,GAA4B,IAEvC,SAASC,GAAiBC,EAAcj+N,EAAOo2M,GAC/C,uBACAp2M,EAAAA,EAAAA,MAAAA,SAAAA,EAAAA,GACA,4BACA,IACAiyM,GAAAA,GAAAA,SAAAA,GACA,eACA1tJ,GAR+B,kCAQ/BA,EAAA,WAEA,IACA05K,EAAA,MACAj+N,MAAAA,GAAAA,GACA9U,MAAAA,GAAAA,EAAAA,EAAA,YAGA,CCdA,IAAIgzO,GAAJ,YAEA,aACA,IAIA,EACA,EALA,qBAqDA,aACA3S,EAAAA,EACA4S,EAAAA,EACA,CACA,OAxDApuH,EAAAA,WAAAA,6BACAA,EAAAA,SAAAA,IAIAg+G,IACA9hB,GAAAA,EAAAA,GAAAA,SAAAA,EAAAA,GACA+J,EAAAA,wBAAAA,SAAAA,GACA,OACA7oN,GAAAA,IACAC,GAAAA,GAaA,OAXA+wO,EAAA,QACA,CACArrO,OAAAA,WACAm/M,GAAAA,GAAAA,SAAAA,EAAAA,GACA,eAEA,OADAksB,EAAA,aACA,CAEA,GACA,EAGA,EACAnoB,EAAA,+BAGA,IAFA,SACA,WACA,aACA,WACA,KACA,IACA,8BACAooB,GAAAA,EACA,KACA,CAMA,CAJA,UAGAnnB,GAAAA,EAAA,iGAAAl5J,UAAAA,GAAAA,MAAA,EACA,CAEA,CACA,GACAi4J,EAAA,gBAEA,EACAA,EAAA,uBACA+X,GACA,CACA,IAKA,CACA,QA5DA90K,GAAAA,EAAAA,gBA0EA,CA3EA,CA2EAs0K,IClEI8Q,GAAqB,yCAErBC,GAAuB,4BAGvBC,GAAoB,CAExBC,oBAAAA,GAOA,SAASC,GAAmBroB,EAAMsoB,GAClC,gBACA,CAqCA,SAASC,GAAiBhV,EAAWxxK,GACrC,SAOA,OANA85J,GAAAA,GAAAA,SAAAA,GACA,SAEA,OADA2sB,GAAAA,GACA,CAEA,IACA,CACA,CAWA,IAAIC,GAAJ,WACA,aAEA,MACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EAIA,IACA5yB,GAAAA,EAAAA,MAAAA,SAAAA,GAgQA,aACA6yB,GAAAA,EAEAC,EAAAA,IAAAA,EAAAA,CAAAA,EAAAA,IACA/oB,EAAA,SACAA,EAAA,iBACAA,EAAA,eACAgpB,EAAAA,IAAAA,GACAC,EAAAA,GACAC,EAAAA,KACAC,EAAAA,KACAC,EAAAA,KACAC,EAAAA,KACAC,EAAAA,KACAC,EAAAA,KACAC,EAAAA,GACAC,EAAAA,KACAC,EAAAA,KACAC,EAAAA,KACAC,GAAAA,EACAC,EAAAA,KACA1N,EAAAA,GAAAA,cAAAA,GACA2N,EAAAA,KACAC,EAAAA,IACA,CACA,aACA,kBACA,CAEA,cAEA,MAlXA,SAA6B9vJ,EAAQ+vJ,EAAiBC,GACtD,MAEA,KAGA,KAwBA,OAtBAhuB,GAAAA,GAAAA,SAAAA,IAEA,0BACA1tJ,GAAAA,IAEA,iBACA,eACA,OACA,SAKA27K,EAAAA,GAAAA,EAJA/oB,GAAAA,EAAAA,sCAAAA,EAAAA,MAAAA,EAAAA,GAAAA,KAAAA,MAQA,SAEAgpB,EAAA,OAEA,KACA,GACAn4O,IAAAA,IAEA,OACAmmG,CACA,CA+UA,gBACAoxI,EAAAA,EAAA,KACAD,EAAAA,KAEA,YAGA,GADAK,EAAAA,GFxNO,SAA6BS,EAAUjpJ,EAAYi/H,GAC1D,SAKA,GAJA,GAEAnE,GAAAA,GAAAA,SAAAA,GAAA,oBAEA,GAEA,SACAA,GAAAA,GAAAA,SAAAA,GACA,eACAouB,EAAA,OAEA,IACArC,GAAAA,EAAAA,EAAAA,EACA,CACA,QACA,CEuMA2B,CAAAA,EAAAA,EAAAA,IACA,GAKA,eACA,OACAM,EAAA,aAGA,KADA5gM,EAAAA,GAAAA,EAAAA,KAEAkgM,EAAA,YAEAE,EAAAA,UAAAA,EACA,MAEAA,EFpZO,SAAuCxB,EAAc7nB,GAC5D,aACA,+BACA,CACA,oBACA,qBACA,aAEA,MADAkqB,IAEA5V,GAAAA,IACAA,EAAAA,KAEA,CACA,KACAzY,GAAAA,GAAAA,SAAAA,GAEA,wBACA,cACA,iBACAsuB,EAAA,cAEA53M,EAAAA,EACA,MAEA23M,GAEA,IAEAE,GACA,CA+CA,SACA,GACAl6E,WAAAA,0BACAxvF,SAAAA,GACAq2H,WAAAA,SAAAA,EAAAA,EAAAA,EAAAA,GACAo8B,GAAAA,EACAtX,GAAAA,GAAAA,SAAAA,GACA,qBACAmX,GAAAA,GAAAA,EAAAA,MAAAA,EAAAA,GAAAA,EAEA,GACA,EACAG,cAAAA,WACA,QACA,EACA8B,iBAAAA,SAAAA,EAAAA,GACAoV,EAAAA,EAAAA,GAAAA,KAAAA,SAAAA,GACAF,EAAA,cACA,eACA7U,EAAA,cACA,GACA,EACAv5I,OApEA,cACA,UACAlpF,OAAAA,GAOA,OALAw3O,EAAAA,EAAAA,GAAAA,SAAAA,GACAF,EAAA,cACA,eACAzU,EAAA,cACA,KACA,CACA,EA2DA/9M,MAAAA,WACA0yN,EAAAA,EAAAA,KAAAA,SAAAA,GACAF,EAAAA,SAAAA,SAAAA,GACApmO,EAAAA,OAAAA,EAAAA,OACA,GACA,QACA,EACAoZ,OAAAA,WACAktN,EAAAA,EAAAA,KAAAA,SAAAA,GACAF,EAAAA,SAAAA,SAAAA,GACApmO,EAAAA,QAAAA,EAAAA,QACA,GACA,QACA,EACAumO,SAxEA,cACA,UACAz3O,OAAAA,EACA62B,SAAAA,GAQA,OANA2gN,EAAAA,EAAAA,GAAAA,SAAAA,GACAF,EAAA,cACA,eACA1U,EAAA,eACAtC,GAAAA,CACA,KACA,CACA,EA6DAoX,WA5DA,YACA,WAmBA,OAlBA,eACA1uB,GAAAA,GAAAA,SAAAA,GAEA,yBACAA,GAAAA,EAAAA,OAAAA,SAAAA,GACA,oBAGA,OAFA0X,EAAAA,GAEA,CAEA,IACA,GAEA,QAGA,IAEA,CACA,EAwCA3pH,MAAAA,SAAAA,EAAAA,EAAAA,EAAAA,GAEA,QACA,KACA,OAEA,aACAsgI,IACA,WACA,IACA3yN,aAAAA,GACAizN,EAAAA,MAEAC,GAAAA,EAAAA,GACAA,EAAAA,KAEA,CAgCA,OA3CAC,EAAAA,GAAAA,IAYAL,EAAAA,EAAAA,KAAAA,SAAAA,GACAF,EAAAA,SAAAA,SAAAA,GACA,YACAD,IACA,SAEA,sBACAS,GAAAA,EACAC,GACA,GAAAC,IACA,IAIA,WACAL,EAAAA,YAAAA,WACAA,EAAAA,KACAI,GACA,GAAAF,GAGAE,IAIA,CACA,GACA,eACAE,GAAAA,EACAF,GACA,KACA,CACA,EACAG,UAAAA,SAAAA,GACAlD,EAAAA,CACA,GAEA,QACA,CE0OAwB,CAAAA,EAAAA,GAGAQ,EAAA,QACAV,EAAA,QAEAvpB,EAAA,kBAEAypB,EAAA,kBACArW,GAAAA,IAAAA,GAEApT,EAAA,kCACA,GA8JA,YACA,gBACA,wCACA8V,EAAA,cAEA,CAlKAsV,CAAAA,EAEA,CACA,cACA,MACA,OACA,OA4CA,OA3CAnvB,GAAAA,EAAA,yBACA,kCAEA,OADA0X,EAAAA,GACA,CAEA,KACA,OAEAA,EAAAA,EAAAA,WAAAA,IAEA,KACA0X,EAAAA,CACAlnO,OAAAA,IAEA,uBACAgvN,GAAAA,GAAAA,UAAAA,CACA,EACAh7H,EAAAA,UAAAA,WACA,YACA,8BACA,EACAA,EAAAA,OAAAA,SAAAA,EAAAA,GACA,WACA,QAAAruE,GAAAA,GACA,UACA,OACA72B,OAAAA,IAEA,UACAklG,GACAmzI,EAAAA,EAAAA,GAAAA,SAAAA,GACA,GAEAC,EAAAA,CACAt4O,OAAAA,GACAu4O,QAAAA,IAGAC,GAAAA,EAAAA,EACA,GACA,EA7BAJ,EA8BAlzI,GAEA,CACA,CACA,aACA,OAEA,uBAEA,aACAhX,EAAA,QAEAmoJ,EAAAA,GAAAA,GAAAA,GAAAA,EAAAA,EACA,CACA,QACA,CACA,kBACA,kBACA,IACA,KADA,UACA,GACAzT,EAAA,uBACA,SAEA,KACA5Z,GAAAA,GAAAA,SAAAA,EAAAA,GACA,QAIAuvB,GAAAA,EAHAE,EAAA,OAKA,IACAlC,EAAAA,EAEA,SACA,IACAvtB,GAAAA,GAAAA,SAAAA,EAAAA,GACA,SACAA,GAAAA,GAAAA,SAAAA,GACA,QAIAuvB,GAAAA,EAHAG,EAAA,OAKA,IACAC,EAAA,OACA,IACAlC,EAAAA,GAEAmC,GAAAA,EAAAA,EACA,IACAhW,EAAA,cACA,MAEAgW,GAAAA,EAEA,CACA,aACA,iCACA,IACA5vB,GAAAA,GAAAA,SAAAA,GACA,MACA,UACA,0CACA9jH,EAAAA,KAAAA,GAAAA,EAAA,oBACAA,EAAAA,KAAAA,GAAAA,IAAAA,MACAA,EAAAA,SAAAA,GAAAA,SACAA,EAAAA,SAAAA,CAAAnlG,QAAAA,EAAA,SACAmlG,GACA6nH,EAAAA,MAAAA,EACA,IACAh2M,EAAA,SAEA,CACA,oBACA,SACA,qBAEA6gO,GAAAA,GAAAA,IACA,EACA,CAkCA,cACA,eACA,EAEA5pB,GAAAA,EAAAA,EAAA,MAGA1yJ,GAAAA,EAEA,CA7eAwpK,IACA/X,EAAA,mCAEAA,EAAA,6BACA,GACAzxJ,GAAAA,IAGA,mBACAA,GAAAA,iDAEAw6K,EAAAA,GAAAA,CAAAA,EACA/oB,EAAA,SACA,0BACAzxJ,GAAAA,sCAEA26K,EAAAA,EAEAlpB,EAAAA,qBAAAA,EAibA,WACA,2BACA,WAEAkpB,EAAA,8BACA9pB,EAAAA,MAEA,gBACAA,EAAAA,GAAAA,GACA8pB,EAAA,2BAEA,CA3bA4C,GA4bA,WACA,2BACA,OAEA1C,EAAAA,MAEA,GAEA7tB,GAAAA,EAAAA,GAAAA,GAEA,CArcAwwB,GAucA,YACA/Q,oBAAAA,EArcA,IACAhb,EAAA,UAEA,W9DxI4B,a8DwI5B,KAEAwpB,EAAAA,IACA,6BACAE,EAAAA,GAAAA,EAAAA,GAAAA,IACA6B,EAAAA,MACA,iBACAh9K,GAAAA,yBAEAu6K,GAAAA,EACA9oB,EAAAA,cACA,EACAA,EAAAA,wBAAAA,WACA,SAMA,OALA,GACA/D,GAAAA,GAAAA,SAAAA,GACA+vB,EAAA,aACA,IAEA,KACA,EACAhsB,EAAAA,MAAAA,SAAAA,GAEAqF,EAAAA,KAAAA,EAAAA,MAAAA,EAAA,mBAEAA,EAAA,0BAEAA,EAAAA,IAAAA,EAAAA,KAAAA,OACA,qBAEA4mB,IAAA,eAIAhD,EAAA,OAEA,EACAjpB,EAAA,uBACAA,EAAA,wBAOA,OANA,IAEAkpB,EA1GA,WACA,MACA,kBACA,sCACA/wI,EAAA,yCACAA,EAAA,yBACAA,EAAA,gCACAA,EAAA,kCACAA,GACA,CAiGA+wI,GAEAlpB,EAAAA,qBAAAA,GAEA,CACA,EAOAA,EAAA,oCACA,GACAkpB,EAAA,0BAEA,EAKAlpB,EAAA,uCACA,GACAkpB,EAAA,6BAEA,EACAlpB,EAAAA,aAAAA,WAIA,OAHA,IACAqpB,EAAAA,GAAAA,EAAAA,EAAA,SAEA,CACA,EACArpB,EAAAA,aAAAA,SAAAA,GACAqpB,EAAAA,CACA,EACArpB,EAAA,sBACA,WACA,qBACA,0BACA,QACAopB,EAAAA,EAAAA,EAAAA,EAAA,gBAEA,CAEA,a9BZA,E8BaA,EACAppB,EAAAA,WAAAA,SAAAA,GACAmpB,EAAAA,CACA,EACAnpB,EAAAA,SAAAA,WACA,eACA,EACAA,EAAAA,aAAAA,WACA,kBACA,QACAipB,EAAAA,GACAhtB,GAAAA,GAAAA,SAAAA,GACAgwB,IAAA,cACA,GACA,CACA,EAIAjsB,EAAAA,iBAAAA,SAAAA,GACA6pB,EAAAA,GAAAA,KACA,kCAUA,OATA,SACAzyN,EAAAA,KAEA,GACAurD,cAAAA,GAEAupK,EAAAA,aAAAA,WACAC,GACA,GAAA/0N,EAEA,EAIA4oM,EAAA,mCACA,IACAr9I,cAAAA,GACAupK,EAAAA,EACAC,IAEA,EAEApwB,GAAAA,GAAAA,WAAA,wCACAiE,EAAAA,OAAAA,SAAAA,EAAAA,EAAAA,GACA,WACA,QAAAl2L,GAAAA,GACA,GAEAykC,GArQ2B,0BAwQ3B,GAEAA,GAAAA,IAEA,WACAt7D,OAAAA,KAEA,UACAklG,EAAAA,eAAAA,EACAA,GACA,YAKA,cACAi0I,EAAAA,cAAAA,EACAxC,GAAAA,EAEAE,EAAAA,IAAAA,EAAAA,GAEA9pB,EAAA,0BAEAqsB,EAAA,cACA,CAbAA,EAAA,uBACAtU,IACAuU,GAAAA,EAAAA,EACA,GAAAtsB,GAWA,YACAusB,GAAAA,EAEA,EACAvsB,EAAA,YACAA,EAAAA,UAAAA,SAAAA,EAAAA,EAAAA,EAAAA,GACA,MAGA,OAFAwsB,GAAAA,GAAAA,QACAC,EAAAA,IAGA,sBACA,SAGA,OAFAD,GAAAA,GAAAA,QACAC,EAAAA,WAAAA,EAAA,mCAGA,OACAx5O,OAAAA,IAEA,cACAu2O,EAAA,QACApoC,EAAAA,MAAAA,CAAAA,GAEAmqC,EAAAA,GACAiB,GAAAA,GAAAA,EACA,CACA,MACA,iBAKAlB,EAAAA,EAJA,CACAr4O,OAAAA,EACA62B,UAAAA,IAEAwhN,SAAAA,GACA,GAKAlqC,EAAAA,QAAAA,EACAA,EAAAA,QAAAA,GACAsrC,KALAF,GAAAA,GAAAA,EAOA,GACA,MAEAE,GAEA,EACA1sB,EAAAA,aAAAA,WACA,QACA,EACAA,EAAA,QACAA,EAAAA,YAAAA,SAAAA,GAIA,OAHA,IACA+pB,E7B7PO,SAAuC7Y,GAC9C,SACA,OACAC,QAAAA,WACA,aACA,EACAC,QAAAA,SAAAA,GACAF,GAAAA,EAAAA,QAAAA,GACA9zI,EAAA,MACA,EACAi0I,WAAAA,WACA,gBACA,EACAC,WAAAA,SAAAA,GACAJ,GAAAA,EAAAA,WAAAA,GACA,QACA9zI,EAAA,UAEA,EACAm0I,UAAAA,WACA,eACA,EACAC,UAAAA,SAAAA,GACAN,GAAAA,EAAAA,UAAAA,GACA,QACA9zI,EAAA,SAEA,EACAq0I,cAAAA,WACA,mBACA,EACAC,cAAAA,SAAAA,GACAR,GAAAA,EAAAA,cAAAA,GACA9zI,EAAA,YACA,EAEA,C6ByNA2sJ,IAEA,CACA,EACA/pB,EAAAA,YAAAA,SAAAA,GACA+pB,EAAAA,GAAAA,IACA,EAEAluB,GAAAA,EAAAA,eAAAA,WAAA,iBAiPA,GACA,qBAkKA,CA9qBA,GCtFA,SAAS8wB,GAAc97N,EAAWld,EAAMm2B,EAASnrB,GACjDs9M,GAAAA,GAAAA,SAAAA,GACA,WACA,KACAntN,YAAAA,WAAA,sBAGA,IACA6P,EAAAA,EAIA,CAFA,UAEA,CAGA,GACA,CAIA,IAAIiuO,GAAJ,WACA,cACA,kBACA,gCACA32B,GAAAA,EAAAA,MAAAA,SAAAA,GACA+J,EAAA,oCACAA,EAAAA,UAAA,OACA,EAKAA,EAAA,uCAEA,IADA,wBACA,MACAA,EAAAA,UAAA,YACA3sN,EAAAA,GAAAA,EAAA,YAEA,EAKA2sN,EAAA,uBACA2sB,GAAAA,EAAA,6BACAx5O,EAAA,aACA,GACA,EAOA6sN,EAAA,8BACA2sB,GAAAA,EAAA,6BACAx5O,EAAA,oBACA,GACA,EAMA6sN,EAAA,gCACA2sB,GAAAA,EAAA,4BACAx5O,EAAA,sBACA,GACA,EACA6sN,EAAA,sBACA,KAEA,mBACA2sB,GAAAA,EAAA,6BACA,UACA79O,YAAAA,WAAA,2BAGAqE,EAAA,YAEA,IAGA,CACA,GACA,qBAwCA,CAzGA,GCfI05O,GAAJ,YAEA,aACA,yBA8BA,OA7BA52B,GAAAA,EAAAA,GAAAA,SAAAA,EAAAA,GAsBA,cACA,uBACA,GACA3oC,EAAA,sBAEA,CA1BA0yC,EAAA,6BACAuc,EAAA,yCACA,EACAvc,EAAAA,MAAAA,SAAAA,GACA4S,GAAAA,EAAA,qEACA,WACAka,EAAAA,GAEAv+K,GAAAA,2BAOA,YACA,aACAu+K,EAAAA,GACAv+K,GAAAA,2BAEA,CATAw+K,CAAAA,GACAxQ,EAAAA,MAAAA,EACA,sBAAAz3N,KAAAA,EAAA,WACA,CAaA,IACA,CACA,QAjCAm+C,GAAAA,EAAAA,gBAyCA,CA1CA,CA0CA4lL,IC9CW,GAAe,WC4BfmE,GAA8B,yCC3BzC,SAASC,GAAkBC,EAAe19N,EAAOwsB,GACjD,QACA,OACA,OAIA,OAHA,OACAz7B,EAAAA,GAAAA,EAAAA,IAEA,CACA,CAEA,SAAS4sO,GAAiBprO,EAAOpO,EAAMu5O,EAAe19N,EAAOwsB,GAC7D,QACA,YAIA,OAHA,IACAz7B,EAAAA,GAAAA,EAAAA,EAAAA,GAAAA,KAEA,CACA,CAEA,SAAS6sO,GAAcrrO,EAAOpO,EAAMzF,GACpC,IACA,IACA,WACA,2BACAm/O,GAAAA,EACA9sO,EAAAA,GAEA,QACA,CAyGA,IAAI+sO,GACJ,WACA,WACA5pO,EAAA,YACAA,EAAAA,sBAAAA,EACAA,EAAA,YACAA,EAAA,aAEAA,EAAA,sBACA,EAII6pO,GAAJ,WACA,oBACA,MACA,OACA,IAIA7pO,EAAA,cACAA,EAAAA,WAAAA,EACAA,EAAAA,mBAAAA,KACAA,EAAA,oBACAA,EAAAA,0BAAAA,KACAA,EAAAA,iBAAAA,KACAA,EAAA,uBACAA,EAAAA,QAAAA,EACAA,EAAAA,QAAAA,KACAA,EAAA,gBACAA,EAAAA,YAAAA,EACAA,EAAA,YACAA,EAAA,YACAA,EAAA,qBACAA,EAAAA,oBAAAA,KACAA,EAAA,0BACAA,EAAAA,qBAAAA,KACAA,EAAAA,QAAAA,KACAA,EAAAA,mBAAAA,IAAAA,GACAA,EAAAA,cAAAA,EACAA,EAAA,UACAA,EAAA,SACAA,EAAA,yDAEAA,EAAA,cADA,IACA,MACA,uBACAy0F,EAAA,qBACAA,EAAA,6BACAA,GAGA,KAEA89G,GAAAA,EAAAA,GAAAA,SAAAA,GACAvyM,EAAAA,eAAAA,WACA,yCACA,EACAA,EAAAA,YAAAA,WACA,wDACA,EACAA,EAAA,gCACA,MAGA,GADAA,EAAAA,kBAAAA,KAAAA,MAAAA,IAAAA,GAAAA,EAAAA,gBAAAA,EAAAA,uBAAAA,IACA,sBACA,YAEA,WACAvM,GAAAA,IAAAA,EAAA,qBACAgB,OAAAA,EAAA,mBAEA,qBACAggG,EAAAA,KAAAA,EACAA,EAAA,eACAA,EAAAA,SAAAA,EAAA,kBACAA,EAAAA,SAAAA,EAAA,2BACAA,EAAAA,cAAAA,EAAA,OACAA,EAAAA,OAAAA,EAAA,OACAA,EAAAA,WAAAA,CAAA4qH,WAAAA,EAAA,QACA5qH,IACA,oBAEAq1I,EAAA,mBACAA,EAAA,sCA3LA,SAA2BC,EAAUD,GAqBrC,mBACA,mBACA,IACA,SAGA,iBACA,YACA,aACA,YACA,aACA,cAIA,eACA,iBAGA,gBACA,IAhBA,QAiBA,IAhBA,MAiBA,iBACA,oBACA,oBACA,iBACA,MAEAE,GAAAA,GAAAA,EAAAA,EAAAA,EAAAA,EAAAA,GAEAA,GAAAA,GAAAA,EAAAA,EAAAA,EAlBA,oBACA,mBAmBAA,GAAAA,GAAAA,EAAAA,EAAAA,EAlBA,eAkBAA,GAEAA,GAAAA,GAAAA,EAAAA,EAAAA,EAAAA,EAjBA,cAmBAA,GAAAA,GAAAA,EAAAA,EAAAA,EAlBA,gBAkBAA,GAEAA,GAAAA,GAAAA,EAAAA,iBAAAA,EAAAA,EAAAA,GAEAA,GAAAA,GAAAA,EAAAA,cAAAA,EAAAA,EAAAA,GAEA,iBACA,IACAv+N,EAAAA,GAAAA,EAAAA,EAAAA,IAAAA,GAEAu+N,GAAAA,GAAAA,EAAAA,GAAAA,GACAA,GAAAA,GAAAA,EAAAA,YAAAA,GACA,qBACA,MACA,SACAzxB,GAAAA,GAAAA,SAAAA,EAAAA,GACA,uBACA,WACAjB,GAAAA,GAAAA,SAAAA,EAAAA,IACA,uBACA,OACAxwN,EAAAA,EAAAA,GAAAA,IAAAA,IAEA,WAEAywB,EAAAA,GAAAA,GAGA,IACA0yN,EAAAA,GAAAA,CACA,IACAD,GAAAA,GAAAA,EAAAA,EAAAA,EACA,CACAA,GAAAA,GAAAA,EAAAA,EAAAA,EAAAA,cACAA,GAAAA,GAAAA,EAAAA,EAAAA,EAAAA,iBACAA,GAAAA,GAAAA,EAAAA,EAAAA,EAAAA,gBACA,MAEA,aACAA,GAAAA,GAAAA,EAAAA,UAAAA,EAAAA,eAGA,IACAF,EAAA,aAEA,CAwFAI,CAAAA,EAAAA,GACA,KACA,iCACA,iCACA,kCAGA,MACA,UACA,MAEA,2BAIA,GAHA,IACAJ,EAAAA,mBAAAK,GAEA,YACA,6BACA,iCACA9rO,gBAAAA,EAAA,UAGA,qCACA,aACA,gCACA,qBACAA,EAAAA,aAAAA,EAAAA,aAAAA,EAAA,8CAEA,aACAA,EAAAA,aAAAA,EAAAA,SAAAA,EAAA,yDAEA,CACA,CACA,CACA,QACA,EACA2B,EAAA,yBACA,MACA,OACA,kBACA,6BAEA,OADAoqO,EAAAA,CAAAA,GACA,qBACA,kBACA31I,EAAAA,SAAAA,EAAA,OACAA,GACA,mBACA41I,EAAA,wBAEA,CACA,QACA,CACA,GACA,qBAkBA,CAhJA,GCjJIC,GAAsB,YAGtBC,GAAW,QACXC,GAAe,mCACfC,GAAe,wCACfC,GAAgBD,GAAe,oBAC/BE,GAAiBF,GAAe,iBAChCG,GAA2B,gHAC3BC,GAA+B,iGAC/BC,GAAqC,2CAErCC,GAAa,EAkDjB,SAASC,GAAiCp/M,GAC1C,SACA,IACA,uCACA/uB,GAAAA,UAAAA,EAAAA,SAAA,gBAKA,CAFA,UAEA,CACA,QACA,CAEA,SAASouO,GAAuBC,EAAqB3uB,EAAOjtN,EAAS8nE,EAAYilJ,GACjFkB,GAAAA,EAAAA,UAAAA,EAAA,QACA,CAEA,SAAS4tB,GAAsBD,EAAqB3uB,EAAOjtN,EAAS8nE,EAAYilJ,GAChFkB,GAAAA,EAAAA,UAAAA,EAAA,QACA,CAEA,SAAS6tB,GAAyBF,EAAqBG,EAAiB/7O,GAExE,mBACA27O,GAAAA,EAAAA,EAAAA,EAAAA,CACAK,uBAAAA,GAAAA,EAAA,MACAjnL,UAAAA,GAAAA,EAAAA,MAEA,CACA,CACA,SAASknL,GAAS/gP,EAAOyO,GACzB,YACA,cAEA,CACA,CACA,SAASuyO,GAAYlqM,EAAW7tC,EAAI4/M,GACpC,OACA5/M,GAAAA,EACAC,GAAAA,GAGA,OADA4tC,EAAAA,KAAAA,GACA,CACAloC,OAAAA,WACAm/M,GAAAA,GAAAA,SAAAA,EAAAA,GACA,eAEA,OADAj3K,EAAAA,OAAAA,EAAAA,IACA,CAEA,GACA,EAEA,CACA,SAASmqM,GAA4B/uB,EAAMp7K,EAAW09C,EAAS1vF,GAC/D,SAWA,OAVAipN,GAAAA,GAAAA,SAAAA,EAAAA,GACA,KACA,wBACA17M,GAAAA,EAKA,CAFA,UACA0gN,GAAAA,GAAAA,EAAAA,OAAAA,EAAA,gDAAAl5J,UAAAA,GAAAA,MAAA,EACA,CACA,IACA,CACA,CAsBA,IAAIqnL,GAAY,eACLC,GAAqC,GAAW,CAC3DD,GAAAA,cACAA,GAAAA,mBACAA,GAAAA,cACAA,GAAAA,sBAEIE,GAA4B,CAChC,uHAEA,SAAS,KACT,MA2BA,OA1BA,MACA,wBACAn3I,EAAA,uBACAA,EAAA,wBACAA,EAAAA,SAAA,EACAA,EAAAA,2BAAAA,EACAA,EAAAA,uBAAAA,EACAA,EAAAA,iCAAAA,GACAA,EAAAA,8BAAAA,EACAA,EAAAA,sCAAAA,EACAA,EAAA,aACAA,EAAAA,uBAAAA,EACAA,EAAA,+BACAA,EAAA,gCACAA,EAAA,6BACAA,EAAA,0BACAA,EAAAA,0BAAAA,EACAA,EAAA,uBACAA,EAAAA,cAAAA,CACA,gBACA,YACA,oBAEAA,EAAA,yBACAA,EAAAA,iBAAAA,EACAA,CAEA,CACA,SAASo3I,KACT,WAIA,OAHAv0B,GAAAA,GAAAA,SAAAA,GACAw0B,EAAAA,QAAAA,CACA,IACA,CACA,CACA,IAAIC,GAAJ,YAEA,aACA,IAGA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EAzBA,qBAsyBA,OAryBA11H,EAAAA,WAAAA,EAAAA,WACAA,EAAAA,SAAAA,IAwBAk8F,GAAAA,EAAAA,GAAAA,SAAAA,EAAAA,GACA,iBAuHA,aACA,WACAy5B,GAAAA,EACAC,GAAAA,EACAC,EAAAA,GAAAA,EAAAA,MAAAA,EAAAA,KAAA,cACA7G,EAAAA,EAAAA,iBACA8G,GAAAA,EACAC,GAAAA,EACA9T,EAAAA,EACAxoG,EAAAA,KACAu8G,GAAAA,EACAC,GAAAA,EACAC,EAAAA,KACAC,GAAAA,EACAC,EAAAA,EACAC,GAAAA,EACAC,EAAAA,CAAAA,EACAC,GAAAA,EACAC,GAAAA,EACAC,EAAAA,KACAC,EAAAA,KACAtU,EAAAA,KACAuU,EAAAA,EACAC,EAAAA,GACAC,EAAAA,EACA,CAsCA,cACA,SASA,OARA,qBACA30B,GAAAA,EAAAA,eAAAA,SAAAA,GACA,qCAEA,OADA40B,GAAAA,GACA,CAEA,IAEA,CACA,CAuFA,kBACA/T,EjCvYO,SAAyB3kO,EAAQ08M,EAAUgiB,GAClD,SACA,uBAEA,IACA,CiCkYAiG,CAAAA,EAAAA,EAAAA,GACA,CAsEA,kBACA,SACA,gDAYA,GAVA7gB,GAAAA,GAAAA,SAAAA,GACA,QACA,QACA60B,EAAAA,IAAAA,OAAAA,IAEA,IACA/zM,EAAAA,EAAAA,KAAAA,GAEA,IAEA,EACA,SAEA,gBACA,YAkCA,QAjCA,sBACAsM,EAAAA,IAEA,QAEA0nM,EAAAA,EAAAA,UAAAA,EAAAA,IAGA,MAIA,QAEAh0M,EAAAA,kBAAAA,IAAAA,IAAAA,EAAAA,OACAk1C,IAAAA,IAAAA,EAAAA,KALAl1C,GAAAA,IAAAA,EAAAA,MAAAA,IAAAA,EAAAA,KAQA,cACAA,GAAAA,GAEA,EAEA,OACAszM,EAAAA,GAAAA,GAKA,OACAtzM,GAAAA,GAGA,CACA,CAIA,gBACA,SACA,IAKA,OAJA,QACAi0M,GAAAA,IAAAA,IAAAA,GAAAA,EAAAA,WAGA,GAEAA,CACA,CACA,aACA,WAQA,OAPA,6BACA9T,EAAAA,EAAA,uBAGA,yBACAA,EAAAA,GAAAA,EAAAA,iBAEA,CACA,CAqJA,gBACA,uBACA,WACA,kBACAuR,KACA,iBACAwC,EAAAA,KAAAA,GACA,4BACA,kBACAxD,EAAA,cAEA,CACA,CACA,CACA,oBACA,iBACA,OACA,8BACA,wBACA,eACA,KACA,aACA,IACA,SACAyD,IAGA,IAFA,WACA,iBACA,uBACA,WACA,MACA,4BACA,sBACA,IAAAjC,GAAAA,EAAA,6BACAkC,EAAAA,QAGA,0CAEA1D,EAAA,aACA,KACA,CACA,+BAEA,KAEA,CACA,CACA,EACA,GACAA,EAAA,YACAyD,GAAAA,IACAzD,IAAAA,EAAAA,OACA,qBAEA/1N,EAAAA,WAAAA,EAAA,MAEA+1N,EAAAA,aAAAA,EAEA2D,KAMAtiP,WAAAA,EAAAA,EAKA,CAFA,UACA24J,EAAAA,GACA,CAhDA,GAkDA,CAqCA,cACA,SACA,IACA,QAEAlnJ,GAAAA,UAAAA,OADA,oBACAA,EAGAA,EAAAA,IAHAA,MASA,CAFA,UACAouO,GAAAA,EAAAA,GAAA,mDAAA5mL,UAAAA,GAAAA,KACA,CACA,QACA,CACA,0BAIA,kBACA,YACAspL,EAAAA,wBAAAA,EAAAA,GACA,IACAA,EAAAA,UAAAA,GAAAA,IAEAxC,GAAAA,EAAAA,EAAAA,GAAAA,aAAAA,GAAAA,EACA,CAVA,IAWApB,EAAA,0BACAA,EAAA,SACA6D,EAAAA,QAAAA,GAAAA,WACA,IACA,EADA,iCAEA,IACA,IACAx2K,EAAAA,EAAAA,CAAA9sE,OAAAA,EAAAjB,QAAAA,EAAAe,SAAAA,IAKA,CAFA,UACA+gP,GAAAA,EAAAA,IAAA,GACA,CACA,WACA,QACArB,EAAA,sCAEA,wBACA+D,EAAAA,EAAAA,EAAA,gBACA,MAEAC,EAAAA,GAAA,MACAC,gBAAAA,EAAA,gBACAC,qBAAAA,EAAA,sBAGA,gBACAF,EAAAA,GAAA,OACA,IACA,CAeA,wBACA,MACA,KACA,SACA,IAQAjxO,EAAAA,GAAAA,EAAAA,IAPA,GACAuE,KAAAA,IAEA,aACAqzF,EAAAA,cAAAA,EACAA,EAAAA,QAAAA,EAAAA,EAAA,aACAA,GACA53F,gBAEA,GACAy/M,EAAA,kCAEA,CAxwBA+X,IACA/X,EAAAA,WAAAA,SAAAA,EAAAA,EAAAA,EAAAA,GACA,oBACAuc,EAAAA,WAAAA,EAAAA,EAAAA,EAAAA,GACAJ,EAAAA,GAAAA,GAAAA,QAAAA,GAAAA,EAAAA,cAAAA,EAAAA,gBA4IA,YACA,wBAEA4M,EAAAA,KAEA/tB,GADA,MACAA,SAAAA,EAAAA,GACA+tB,EAAAA,GAAAA,EAAAA,UAAAA,EAAAA,WAAAA,EAAAA,EACA,IACA,+BAUA,GATA8G,EAAAA,EAAA,4BACAC,EAAAA,EAAA,0BACAI,EAAAA,EAAA,uBACAC,EAAAA,EAAA,oBACAC,EAAAA,EAAA,6BACAI,EAAAA,GAAAA,OAAAA,EAAAA,KAAA,iCACAC,EAAAA,EAAA,kBACAT,EAAAA,IAAAA,GAAA,MACAD,EAAAA,IAAAA,GAAA,MACA,GACA,oCAEAE,EADA,WACAA,GAAAA,EAAAA,UAAAA,EAAA,cAGAA,GAAAA,EAAAA,GAEA,CACAK,IAAAA,EAAA,oBACAC,IAAAA,EAAA,oBACA,CAxKAoB,CAAAA,IA5MA,SAAiC/C,GACjC,SACA,SACA,+BACAruO,GAAAA,GAAAA,KACA,aACA,aACA,WACA,CACA,WAIA,GAHA,SACAA,GAAAA,GAEA,EAEA,KACA,oBACA+uB,SAAAA,CAAAA,EAEA,oCACAtiC,eAAAA,UAAAA,KAAAA,CAQA,CANA,UAEAuT,GAAAA,EACAouO,GAAAA,EAAAA,GAAA,0EACA5mL,UAAAA,GAAAA,KAEA,CAEA,QACA,CAmcA,YAEA6pL,EAAAA,eAAAA,OAAAA,CACAzmO,GAAAA,EACA0mO,IAAAA,SAAAA,EAAAA,EAAAA,EAAAA,GACA,OACA,aACA,cACA,kBACA,kCA0IA,kBACA,MACA,MACA,0BACA,oBACA,+EACApE,EAAA,gCACAA,EAAA,SACAA,EAAA,aACAA,EAAAA,mBAAA,YACAA,EAAA,kBACAA,EAAAA,MAAAA,EACAA,EAAA,kBACAn+M,EAAAA,SAAAA,CACA,CAtJAwiN,CAAAA,EAAAA,EAAAA,EAAAA,GAuJA,YACAxiN,EAAAA,SAAAA,mBAAA,wDACA,MACA,IACA,2BA6BA,YACA,iBAGA,gBACA,YACA+hN,EAAAA,uBAAAA,GAAAA,GACA,IACAA,EAAAA,UAAAA,GAAAA,IAEAxC,GAAAA,EAAAA,GAAA,oBACA,CATApB,EAAA,0BACAA,EAAA,gBASA6D,EAAAA,iBAAAA,GAAAA,WACA,IACA,6CACA,MACA,OACArjP,WAAAA,EAAA,aAEA,eACAkqG,EAAA,mBA6DA,YACA,MACA,IACA,gCACA,cAEA,IADA,0BACA,CACA,iCACA,kCACA,CAQA,CALA,UACA02I,GAAAA,EAAAA,GAAA,WACA,6BACA12I,EAAAA,UAAAA,GAAAA,IACAA,GACA,CACA,CA/EA,IACAA,EAAAA,KAAAA,EAAAA,aACAA,EAAA,aAnCA,YACA,IACA,qBACA,sBAEA,qBAKA,CAFA,UAEA,CACA,WACA,CAuBA,IACAA,EAAAA,SAAAA,EAAA,SACAA,GACA,MACA,gCACA,MAGA,6BACA,KACA8jH,GAAAA,GAAAA,SAAAA,GACA,oBACA,YACA,eACA,OACA81B,EAAAA,GAAAA,EAEA,IACAC,EAAA,WACA,CACA,CACA,QACA,IACA,SACA,IACA,IACAl3K,EAAAA,EAAAA,CAAA9sE,OAAAA,EAAA,OAAAshC,IAAAA,IAKA,CAFA,UACAu/M,GAAAA,EAAAA,IAAA,GACA,CACA,WACA,QACArB,EAAA,sCAEA,wBACA+D,EAAAA,EAAAA,EAAA,gBACA,MAEAU,EAAAA,KAAAA,CACAR,gBAAAA,EAAA,gBACAC,qBAAAA,EAAA,sBAYA,CA/DC,QAyDD,IACApiN,EAAAA,SAAAA,IAIA,CAFA,UAEA,CACA,CACA,gBACA2iN,EAAAA,EAAAA,KACA,GACA,CA5GAC,CAAAA,EAYA,CATA,UACA,aAEA,wCACAvD,GAAAA,EAAAA,GAAA,kDACA,6BACAx2I,EAAAA,UAAAA,EACAA,GAEA,CACA,GAAAgkI,EACA,CAvKAgW,CAAAA,GAEA,CACA,EACAC,MAAAA,GAAAA,EAAAA,GAAA,iBAGAR,EAAAA,eAAAA,OAAAA,CACAzmO,GAAAA,EACA0mO,IAAAA,SAAAA,EAAAA,GACA,OACA,aACA,aACA,uCACAQ,EAAAA,MAAAA,GACA5E,EAAA,qBACAztB,EAAA,6CACAytB,EAAAA,mBAAA,YAEA,CACA,EACA2E,MAAAA,GAAAA,EAAAA,GAAA,SAGAR,EAAAA,eAAAA,QAAAA,CACAzmO,GAAAA,EACA0mO,IAAAA,SAAAA,GACA,OACA,aACA,aACA,wCACApE,EAAAA,QAAAA,EACAA,EAAAA,mBAAA,aAEA,CACA,EACA2E,MAAAA,GAAAA,EAAAA,GAAA,kBAGAR,EAAAA,eAAAA,mBAAAA,CACAzmO,GAAAA,EACA0mO,IAAAA,SAAAA,EAAAA,EAAAA,GACA,UACA,aACA,aACAviN,EAAAA,SAAA,oBAEA,CACA,EACA8iN,MAAAA,GAAAA,EAAAA,GAAA,6BAEAzC,GAAAA,GA1JA,WACA,MAzZA,WACA,WACA,UACA91K,GAAAA,EAAAA,UACAA,GAAAA,EAAAA,QAAAA,YACAA,GAAAA,EAAAA,OACA,KAEA,OACA,CAgZA,GACA,MACA,OAEA,WACA,aACA,KAyDA,GAOAijK,EAAAA,GAAAA,EAAAA,GAAAA,CACA3xN,GAAAA,EACA0mO,IAAAA,SAAAA,EAAAA,EAAAA,GAEAS,EAAAA,KAAAA,EAAAA,EACA,MApEAxV,EAAAA,GAAAA,EAAAA,GAAAA,CACA3xN,GAAAA,EAEA0mO,IAAAA,SAAAA,EAAAA,EAAAA,GACA,MACA,WACA,eAEA,QACA,cACAU,EAsbA,cACA,MACA,MACA,0BACA,oBACA,+EACA9E,EAAA,gCACAA,EAAA,qBACAA,EAAA,kBACA,qBACAA,EAAA,sBAGAA,EAAA,aAEA,YACA,YACAp/O,EAAAA,EAAA,OAEA,0BACAA,EAAAA,EAAA,QAEAo/O,EAAA,SACA,SACA,MACA,kEACAnhP,SAAAA,SAAAA,EAAAA,GACA,OACAD,EAAAA,GAAAA,EAEA,GACA,CAGA,OAFAohP,EAAA,iBACA4E,EAAAA,QAAAA,GACA,CACA,CAzdAE,CAAAA,EAAAA,GACA,yCACA,OACAlc,EAAAA,IAAAA,EAAAA,GAEAhoK,EAAAA,KAAAA,CACA,CACA,EACA0uK,IAAAA,SAAAA,EAAAA,GACA,OACA,mBACA,IAEA1G,EAAAA,KAAAA,EAAAA,KAAAA,MAAAA,SAAAA,GAoBA,OAnBAmc,EAAAA,GAAAA,GAAAA,CAAAA,GAAA,yBACA,MACA,OACAvkP,WAAAA,EAAA,aAEA,eACAkqG,EAAA,mBAigBA,YACA,gBACA,IACA,2BACA,kCAOA,CALA,UACA02I,GAAAA,EAAAA,GAAA,IACA4D,wBAAAA,EAAAA,GACA1qL,UAAAA,GAAAA,KAEA,CAEA,CA9gBA,IACAowC,GACA,MACA,SACArqG,EAAAA,QAAAA,SAAAA,SAAAA,EAAAA,GACA,OACA4kP,EAAAA,GAAAA,EAEA,IACAV,EAAA,WACA,CACA,QACA,IACA,CACA,IArBA,OAqBA,YAEA,MADAQ,EAAAA,EAAAA,EAAAA,EAAAA,KAAAA,EAAAA,KAAAA,CAAA/8O,MAAAA,EAAAA,UACA,CACA,IAEA,CACA,EAEA28O,MAAAA,GAAAA,EAAAA,GAAA,wCAEA1C,GAAAA,GAiBA,IAGA/jL,EAAAA,MAAAA,SAAAA,EAEA,CA/QAgnL,GAuKA,WACA,2BACA,IACAn/G,EAAAA,EAAAA,OAAA,QAEA,CA3KAo/G,GAEA,EACA5yB,EAAAA,YAAAA,WACA+X,GACA,EACA/X,EAAAA,oBAAAA,SAAAA,EAAAA,GACAuxB,EAAAA,EAAAA,EAAA,cACA,EACAvxB,EAAA,4CAEA,8BAEA,GAxHA,SAAqCnvM,EAAWuvM,EAAMqtB,EAAUn+M,EAAKoc,EAAOumC,GAC5E,MAEA,GADA,SACA,GACA,cACA,OACAkmB,EAAAA,IAAAA,EACAA,EAAAA,MAAAA,EACAA,EAAAA,KAAAA,EACAA,EAAAA,QAAAA,EAAA,QACAA,EAAAA,OAAAA,EAAA,OACAA,EAAAA,WAAAA,EAAA,WACAA,EAAAA,QAAAA,EAAA,YACAA,GACAg3I,GAAAA,EAAAA,EAAAA,EAAAA,YACA1B,EAAA,kBACAA,EAAA,gBACAA,EAAA,wBACAA,EAAA,iBACA,CACA,CAmGAoF,CAAAA,EAAAA,EAAA,cACA,GACA,2DACA,IACA5gK,EAAAA,CAAAA,GAKA,kEACA,MACA,iCACA3lF,EAAAA,IAAAA,GAAAA,GAAA,GACA,IACAmhP,EAAA,wBAEA,CAQA,IAPA,2BAEAnhP,EAAAA,IAAAA,GAAAA,GAAA,SACA,IACAmhP,EAAA,gCAGA,GAEA,GADA,kBAEAqF,EAAAA,GAEA,mCACAxmP,EAAAA,IAAAA,GAAAA,GAAA,GACA,IACAmhP,EAAA,wBAEA,CACAx7J,EAAA,SACA,CACA,QACA,CACA,MACA,2DACA,MACA,6BACA3iD,EAAA,0BACA,IACAm+M,EAAA,wBAEA,CACA,MAOA,IAPA,2BAEAn+M,EAAA,gCACA,IACAm+M,EAAA,gCAGA,GACA,MACA,GADA,kBAEAqF,EAAAA,GAEA,+BACAxjN,EAAA,0BACA,IACAm+M,EAAA,wBAEA,CACA,CACA,QACA,CAEA,EACAztB,EAAA,4CACA,gBAIA,8BACA,IAAA+oB,EAAA,wBACA,8BAAAyE,EAAAA,GAAAA,EAAAA,GAAA,YACAA,EAAAA,IAAAA,KAEA,kBACAA,EAAA,oBAEA,wDACAxtB,EAAA,aACA,MACA,OACA2uB,GAAAA,EAAAA,GAAA,gMAEA,CACA,EACA3uB,EAAAA,sBAAAA,SAAAA,GACA,kBACA,EACAA,EAAAA,yBAAAA,SAAAA,GACA,kBACA,CAopBA,IACA,CACA,CAiDA,OA11BA/8J,GAAAA,EAAAA,GA6yBAwsL,EAAAA,UAAAA,iBAAAA,SAAAA,EAAAA,GACA,qBACA,EA4BAA,EAAAA,UAAAA,yBAAAA,SAAAA,GACA,WACA,EAEAA,EAAAA,WAAAA,uBASAA,EAAAA,iBAAAA,GACAA,EAAAA,eAAAA,GACA,CACA,CA51BA,CA41BAlY,ICxiCIwb,GACJ,WACA,ECFIC,GAIJ,WAEA,kBAGA,0BACA,ECRIC,GAIJ,YACA,6FACA,ECRIC,GACJ,WACA,ECGIC,GACJ,WACA,EAIIC,GAAJ,WACA,gBACA,IACA,EACA,EACA,QACA,QACAn9B,GAAAA,EALA,MAKAA,SAAAA,GACA,IACAnqN,EAAAA,CAAAA,GAEA,4BACAA,EAAA,0DAEA,yBACAA,EAAA,mDAEAk0N,EAAA,SAEA,qEACAA,EAAAA,OAAA,uBACAA,EAAAA,OAAA,2DAwEA,gBACA,SACA,4BACA,eACA,eACA,IACA,eACA,WACA,eACAiB,GAAAA,EAAAA,EAAA,yCAEA,eACAA,GAAAA,EAAAA,EAAA,qCAEA,OAEAn8J,EAAAA,GAAAA,EAAAA,GACAA,EAAA,kBACAA,EAAA,cACAovB,GAAAA,EAKA,CAFA,UACA+sI,GAAAA,EAAAA,EAAA,iEAAAl5J,UAAAA,GAAAA,KACA,CAEA,QACA,CAYA,gBACA,wBACAjD,EAAA,cACA,eACA,uBAGA,8BACA,aACA,IAEAuuL,EADA,IACAA,EAAAA,IAGAA,EAAAA,IAEA,2CAIAhK,EAAAA,IAAAA,IAAAA,EAAAA,KAAAA,KAAAA,EAAA,kCACAiK,EAAAA,CACA,CApIAC,EAAAA,WAAA,MA7BsB,aA6BtB,GACAvzB,EAAA,wBACAA,EAAA,kBAGA,WACA,KACA,qBACA,OACAwzB,GAqCA,cACA,SACA,aACA,kBACAt/J,EAAAA,EAAAA,EAAAA,OAEA,CAKA,gBACA,IACAA,EAAAA,EAAAA,EAAAA,GAEA,CACA,gBACA,CAtDAs/J,CAAAA,IAEA,qCACA,YACA,kCACA,sBACA,kBAGAA,GADAA,GADAA,EAAAA,EAAAA,GAAAA,EAAAA,IACAA,EAAAA,IACAA,EAAAA,CACA,CAEA,EA8EA,YACA,mBACA,qCACAxzB,EAAAA,iBAAAA,GAAAA,EAAAA,EAAA,0BACAA,EAAA,mCACAyzB,EAAAA,EAAA,oBAEA,MACAxyB,GAAAA,EAAAA,EAAA,kFAEA,CAtFAyyB,CAAAA,KAIA,gCACAD,EAAAA,EAAAA,EAGA,EAMAzzB,EAAAA,OAAAA,WACA,IA+FA,MA/FA,qBA+FA,EA9FA2zB,EAAAA,GA8FA,EA9FAA,EAAA,gBA8FA,EA9FA,cAkGAtxB,GAAAA,EAAAA,IAAAA,CAAAA,EAAAA,EAAAA,GAAA,UAjGA,CAmGA,GACA,CAeA,OAHA+wB,EAAAA,gBAAAA,MACAA,EAAAA,YAAAA,KACAA,EAAAA,qBAAAA,IACA,CACA,CAlLA,GCTIQ,GACJ,kBACA,WACA5zB,EAAAA,QAAAA,GAAAA,KACAA,EAAAA,SAAAA,EACA,YACA,mBACArsN,EAAAA,EAAAA,UAEAqsN,EAAAA,KAAAA,GAAAA,EAAAA,EACA,ECRA,SAAS6zB,GAAmB18O,GAI5B,8BACA,GACAA,EAAAA,MAAAA,cAIA,CACA,IAAI28O,GAAJ,WACA,gBAIA,kBAIA,wBACA,IAEA,EAFA,QACA,QAEA79B,GAAAA,EAAAA,MAAAA,SAAAA,GACA+J,EAAA,SACA,+FACAuzB,EAAAA,WAAA,2BAEA,iBACA,MACAvzB,EAAA,aACA,iCACA,aACAA,EAAAA,GAAAA,EAAAA,GAEAA,EAAA,uBAEA,CACA,aACA,YAGA,QAFA,mCACA,2BAEA,CACA,cACA,mBAIA,OAHAA,EAAAA,uBAAAA,EACAA,EAAA,aACA,KAEA,CACA,cAKAA,EAAA,4BADA,QAEA,CACA,UACAA,EAAAA,GAAAA,IAEA+zB,EADA,QACA,yBAGA,4EACAzxB,GAAAA,EAAAA,EACA,CAGAtC,EAAA,2CAGA,kCACA,MAEA,OADAg0B,EAAAA,UAAAA,IACA,yBACA,OACAh0B,EAAA,sBAEA,mBACAA,EAAA,eAEA,CACAA,EAAAA,4BAAAA,SAAAA,EAAAA,EAAAA,GAIA,QAHA,QAAAi0B,GAAAA,IAEA,iBAEAhzB,GAAAA,EAAAA,EAAA,mKACA,OAFA,CAMAjB,EAAA,kBACA,wBACA,IACAA,EAAA,YACAg0B,EAAAA,CAAAA,EAAA,sDAEA,GAGA3K,EAAAA,IAAAA,EAAA,gCAXA,CAaA,EAKArpB,EAAAA,8BAAAA,WACAA,EAAA,qBACAA,EAAA,eACAqpB,EAAAA,IAAAA,EAAA,mBACA,EACArpB,EAAA,mBAEA,6BAGA+zB,EADA,EADA,QAEA,wBAEA,CACA,GACA,CA6BA,OAHAD,EAAAA,gBAAAA,IACAA,EAAAA,eAAAA,UACAA,EAAAA,mBAAAA,cACA,CACA,CA/IA,GCFII,GAAS,MACTC,GAAU,OACd,SAASC,GAAaj8O,EAAQxE,GAC9B,qCACA,IAEA,CACA,ICVI0gP,GDUAC,GAAJ,WACA,kBACA,WACA,WACA,mCACA,0CACAr+B,GAAAA,EAAAA,MAAAA,SAAAA,GAGA,GAFA+J,EAAAA,YAAAA,IAAAA,GACAA,EAAAA,SAAAA,IAAAA,GAAAA,GACA,MACAA,EAAA,2BACAA,EAAAA,OAAAA,IAAAA,GACAA,EAAAA,SAAAA,IAAAA,GACAA,EAAAA,KAAAA,IAAAA,GAAAA,EAAAA,GACA,IAEA,EAFA,SACA,SAEA,IACAsO,EAAAA,EAAAA,aACAimB,EAAAA,EAAAA,YACA7/B,EAAAA,EAAAA,WAEAsL,EAAA,+BACAA,EAAAA,QAAAA,IAAAA,EACA,CACAA,EAAA,wBACA,gBACA,OAEA,eACAw0B,EAAAA,EAAAA,OAEA,CAEA,8CACAA,EAAAA,GAAAA,GAAAA,EAAAA,IAAAA,EAAAA,GAAAA,IACA,CACA,QACA,EACAx0B,EAAA,kCACAhsF,GAAAA,GAAAA,EAAAA,IAAAA,GAAAA,QAAAA,QAAAA,EAAA,kBACA,EACAgsF,EAAA,yCACAhsF,GAAAA,EAAAA,IAAAA,GAAAA,MAAAA,EAAAA,GACA,EACAgsF,EAAA,sCACA,oBACA,MAEA,eACAhsF,GAAAA,EAAAA,GAAAA,mBAAAA,EAAAA,IAAAA,IACAA,GAAAA,EAAAA,GAAAA,iBAAAA,EAAAA,MAAAA,GACA,CACA,EACAgsF,EAAA,iCACA,eACA,MAEA,gCACAhsF,GAAAA,EAAAA,UAAAA,EAAAA,GAAAA,IACAA,GAAAA,EAAAA,KAAAA,EAAAA,GAAAA,IACAA,GAAAA,EAAAA,QAAAA,EAAAA,MAAAA,IACAA,GAAAA,EAAAA,cAAAA,EAAAA,YAAAA,GACA,CACA,EACAgsF,EAAA,mCACA,iBACA,MACA,eACAhsF,GAAAA,EAAAA,GAAAA,qBAAAA,EAAAA,aAAAA,IACAA,GAAAA,EAAAA,GAAAA,mBAAAA,EAAAA,WAAAA,IACA,qDACAA,GAAAA,EAAAA,GAAAA,gBAAAA,EAAAA,WAAAA,IACAA,GAAAA,EAAAA,GAAAA,eAAAA,EAAAA,OAAAA,IAEA,CACA,EACAgsF,EAAA,mCACA,iBACA,GACAhsF,GAAAA,GAAAA,EAAAA,GAAAA,IAAAA,GAAAA,WAAAA,EAAAA,GAAAA,GAEA,EACAgsF,EAAA,oCACA,uBACA,MACA,+BAAAy0B,aAAAA,EAAAC,cAAAA,IACA1gH,GAAAA,EAAAA,UAAAA,EAAAA,QAAAA,GAAAA,IACAA,GAAAA,EAAAA,OAAAA,EAAAA,KAAAA,GAAAA,IACAA,GAAAA,EAAAA,WAAAA,EAAAA,SAAAA,GAAAA,GACA,CACA,EACAgsF,EAAAA,gBAAAA,SAAAA,EAAAA,GACA,YACA,GACAhsF,GAAAA,GAAAA,EAAAA,IAAAA,GAAAA,OAAAA,EAEA,EACAgsF,EAAA,+BACA,aACA,MAGAhsF,GAFA,YAEAA,GAAAA,cAAAA,EAAA,cAEA,8BACAA,GAAAA,EAAAA,KAAAA,EAAAA,GAAAA,IACAA,GAAAA,EAAAA,SAAAA,EAAA,mBACA,CACA,EACAgsF,EAAAA,QAAAA,SAAAA,EAAAA,GACA,YACA,IACAo0B,GAAAA,EAAAA,GAAAA,WACAA,GAAAA,EAAAA,GAAAA,SACAA,GAAAA,EAAAA,GAAAA,QACAA,GAAAA,EAAAA,GAAAA,OACAA,GAAAA,EAAAA,GAAAA,QACAA,GAAAA,EAAAA,GAAAA,UAEA,CACA,GACA,qBAgCA,CA1JA,GEZIO,GAAJ,YAEA,aACA,IAGA,EACA,EACA,EALA,qBAkGA,OAjGA56H,EAAAA,SAAAA,IACAA,EAAAA,WAAAA,GAIAk8F,GAAAA,EAAAA,GAAAA,SAAAA,EAAAA,GAkDA,aACA2+B,EAAAA,KACAC,EAAAA,KACAC,EAAAA,IACA,CArDA/c,IACA/X,EAAAA,WAAAA,SAAAA,EAAAA,EAAAA,EAAAA,GACAuc,EAAAA,WAAAA,EAAAA,EAAAA,EAAAA,GAoDA,YACA,mBACA,SACA,eACA,uBACAqY,EAAAA,GAAAA,CAAAA,EACA55B,GAAAA,GAAAA,SAAAA,EAAAA,GACA45B,EAAAA,GAAAA,WAAA,4BACA,IACAE,EAAAA,EAAA,gBACA90B,EAAAA,QAAAA,IAAAA,GAAAA,EAAAA,EAAAA,GACA60B,EAAAA,GAAAA,EAAAA,QAAA,kBACAz0B,EAAAA,YAAAA,GACAJ,EAAAA,QAAAA,MAAAA,WACA,sBACA,6BACA,EAEAA,EAAAA,WAAAA,CACA,CAtEA2xB,CAAAA,EACA,EAKA3xB,EAAAA,iBAAAA,SAAAA,EAAAA,GACA,cAGA,CACA0V,EAAAA,EAAAA,WAAAA,GAEA,0BACAA,EAAAA,UAAAA,4BAEA,oBACA,WAEA,0DACAqf,EAAA,wBAGA,aAKA,GAJA,uBACAC,EAAA,kBA8CA,cAEAz5B,GAAAA,EAAAA,OAAAA,IACAA,GAAAA,EAAAA,MAAAA,CAAAA,GACA,gBACAltJ,EAAA,yBACAA,EAAA,6BACAA,EAAA,wBACAA,EAAA,2BACAA,EAAA,sBACAA,EAAA,gCACAA,EAAAA,gBAAAA,EAAAA,GACAA,EAAA,0BACAA,EAAA,0BACAA,EAAAA,QAAAA,EAAAA,EACA,CA3DA4mL,CAAAA,EAAAA,GACA,gBACAD,EAAA,aACA,2CxE6PO,SAA6B/6J,EAAQinI,EAAUluN,GACtDguN,GAAAA,GAAA,uBACA,CwE9PAD,CAAAA,EAAAA,UAAAA,EAAA,EACA,CACAf,EAAAA,YAAAA,EAAAA,EACA,CACA,EACAA,EAAAA,YAAAA,SAAAA,EAAAA,GACA,qBACA,mBACA,oBACA,GACAI,EAAAA,YAAAA,IAGA2X,GACA,CA0CA,IACA,CACA,CAmCA,OAxIA90K,GAAAA,EAAAA,GAsGA0xL,EAAAA,iBAAAA,WACA,MACA,EACA,OAmBA,OAlBA,GACAO,mBAAAA,WAAA,YAEA,+BACA/8I,EAAAA,iBAAAA,WAAA,aACAA,EAAAA,mBAAAA,WAAA,YACAA,EAAAA,oBAAAA,WAAA,cACAA,EAAA,kCACAA,EAAA,kCACAA,EAAAA,6BAAAA,WAAA,UACAA,EAAAA,MAAAA,WAAA,UACAA,EAAA,kCACAA,EAAA,gCACAA,EAAA,0CACAA,EAAA,uCACAA,EAAA,+BACAA,EAAA,8BACAA,CAEA,EAWA,CACA,CA1IA,CA0IAo/H,IACA,MC3IW4d,GAAc,UAOdC,GAAgC,0BAEhCC,GAAyB,mBACzBC,GAAiB,YACjBC,GAAoB,eCmBpBC,GAA8B,gCHzBrCC,GAAiC,CACrCN,GAAA,iFAuDIO,GAAJ,WACA,cACA,IAEA,EACA,EACA,EACA,EACA,EACA,EACA,EARA,OASAz/B,GAAAA,EAAAA,MAAAA,SAAAA,GAiPAkmB,EAAAA,GAAAA,SACAwZ,EAAAA,KACAz6K,EAAAA,KACAJ,EAAAA,KACA86K,EAAAA,KACAC,EAAAA,KAnPAA,EAAAA,IAAAA,EAAAA,IAAAA,EAAA,aACAC,EAAA,kBACAA,EAAA,qBACA,mBACA,uBACA,6BACA,sBACAhqP,EAAA,iCACAA,EAAA,6DACA,CACAk0N,EAAA,mBACAllJ,EAAAA,IAAAA,GACAI,EAAAA,IAAAA,GACA06K,EAAAA,IAAAA,GACAG,EAAAA,IAAAA,GACA/1B,EAAAA,KAAAA,EACA,yBACA,uBACAiB,GAAAA,EAAAA,OAAAA,EAAA,yEAEAjB,EAAA,UACAA,EAAA,SAiNAA,EAAAA,OAAA,sBACAA,EAAAA,OAAA,2FAhNAA,EAAA,uBACA,QAAA3S,GAAAA,GACAulB,GAAAA,GAAAA,WAAA,kCACA3W,GAAAA,EAAA,uCACAA,GAAAA,GAAAA,SAAAA,GACA+5B,EAAA,QACA,GACA,GACA,QAAA3oC,EACA,EACA2S,EAAA,+BACA,QAAA3S,GAAAA,GACA4O,GAAAA,EAAA,uCACAA,GAAAA,GAAAA,SAAAA,GACA,gBACA+5B,EAAA,gBAGAA,EAAA,QAEA,GACA,GACA,EACAh2B,EAAA,gCA+CA,YA9CA,QAAAi2B,GAAAA,GAyBA,sDACA1nL,GAAAA,yCAEAqkK,GAAAA,EAAAA,MAAAA,WAAA,4CACA,SACAzxI,EAAA,QACAA,EAAA,QACAA,EAAA,QACAA,EAAA,oBAEA40J,EAAAA,WAAAA,EAAA,cACA/1B,EAAA,kBACA,gBACAA,EAAA,4BArCA,YACA,MACA,SACA,QACAk2B,GAAAA,GAEA,IACAA,GAAAA,OAEA,gCACAl2B,EAAA,oCAGAhF,GAAAA,GAAAA,SAAAA,EAAAA,GACA,QACA,OACA9rK,GAAAA,MAAAA,EAAAA,KACAirK,IAAAA,GAAAA,GAAAA,KACA27B,EAAAA,GAAAA,EAEA,GACA,CACA,CAiBAK,CAAAA,EAAA,SAEAn2B,EAAAA,aACAA,EAAA,mBACAA,EAAA,8BACA,IACA,CACA,EACAA,EAAA,sC5E2dO,SAAqB7nN,EAAQ5E,EAAQ6iP,GAC5C,uBACA,kBACA,UACA,WACA,MACA,kBAEAj+O,EAAAA,GAAAA,GAAAA,EAAAA,IAGA,kBACA,gBAEA,KAEA,mBACA,WACA,gBACA5E,EAAAA,GAAAA,CACA,MAIA4E,EAAAA,GAAAA,GAGA,CACA,EAEA,eACAk+O,EAAAA,EAEA,CAEA,C4E3fAC,CAAAA,EAAAA,GAAAA,SAAAA,GAEA,uBACA,GACA,EACAt2B,EAAAA,WAAAA,WAEA,IACA,wBAGA,IADA,6BACA,cAEAvsN,EADA,qBAEA,CACAusN,EAAAA,QAAA,oBACA,eACA,CAaA,CAXA,SAEA,mBACAu2B,EAAAA,UAQA,CACA,EACAv2B,EAAA,wCAEA,eACA,iBAWA,GAHAw2B,EAAA,kBAGA,sBACA,2BACA,MACA,eACA,yCACAC,EAAA,gCAEA,CACA,CACA,EACA,KACA,+CACA,IACAd,EAAAA,GAAAA,EAAAA,EAAA,iCAEA,kDAGA,YACAvoB,GAAAA,GAGA,YACAA,GAAAA,GAIA,GzEdO,WAEP,WACA,yBA7NqB,gBA8NrB,SAGA,CyEOA,IACAnM,GAAAA,EAAA,qFAGA,8CAEAuM,GAAAA,EAAAA,EAAAA,EAEA,CACA,EACAxN,EAAAA,UAAAA,WACA,QACA,EACAA,EAAAA,OAAAA,SAAAA,EAAAA,EAAAA,GACAA,EAAA,iBAEA,IrDuHAqN,GAAAA,CAAAA,GAAAA,GAAAA,IqDtHAqpB,KAAAA,GrD8JO,SAAqCvjP,EAAU24N,GAEtD,eACAuB,GAAAA,CAAAA,IAAAA,EAAAA,GACAA,GAAAA,CAAAA,IAAAA,KAAAA,EACA,CqDlKAspB,CAAAA,KAAAA,IAEAZ,EAAAA,QAAAA,EAAAA,OAAAA,EAAAA,EAAAA,EACA,EACAh6B,GAAAA,EAAAA,EAAA,aE3QgC,eAWH66B,aAGIA,gBFiQjC,2BEhQiCA,iBFkQjC,WErQ6BA,aACCA,cAZI,iBACD,gBAEE,kBACD,mBFoRlC76B,GAAAA,GA2BA,WACA,QACA,GA7BAA,CEzQuC66B,sBF2QvC,wBACA,6BAEA76B,GAAAA,EAAAA,EAAAA,CACAq5B,GACAC,GACA,0BACAC,GACA,YACAC,GACA,cACA,gBAEAx5B,GAAAA,GAAAA,WACA,gBACA,oBACA,IE1RgD,8BACE,iCF6SlD,GACA,CA8PA,OAJA25B,EAAAA,UAAAA,yBAAAA,SAAAA,GACA,WACA,EAEA,CAOA,CAzgBA,IA4gBA,WACA,WAEA,GACA,2BACA,8BAEA,IAGA,mCACA,IACAmB,EAAAA,EAAAA,IAWA,CAFA,UAEA,CACA,KACA,IACA,sBACA,KAEA,IADA,SACA,mBACA,yBACAt3N,EAAAA,OAAAA,EAAAA,IACA,8BACA,wBACAA,GAAAA,SAEA,0BACAA,GAAAA,UAGA80N,GAAAA,EAAAA,GACA,KACA,CAMA,CAFA,UAEA,CAhDA,II5kBA,ICDYyC,GDCRC,GAAJ,YAEA,aACA,IAGA,EACA,EACA,EACA,EANA,qBAuFA,OAtFAh9H,EAAAA,SAAAA,IACAA,EAAAA,WAAAA,cAKAk8F,GAAAA,EAAAA,GAAAA,SAAAA,EAAAA,GA8CA,aACA+gC,EAAAA,KACApC,EAAAA,KACAqC,EAAAA,KACAC,EAAAA,IACA,CACA,aAIA,OAHA,GACAj2B,GAAAA,EAAAA,UAAAA,EAAA,mFAEA,CACA,CAxDA8W,IACA/X,EAAAA,WAAAA,SAAAA,EAAAA,EAAAA,EAAAA,GAYA,GAXAlmG,EAAAA,UAAAA,WAAAA,KAAAA,EAAAA,EAAAA,EAAAA,EAAAA,GACA86H,EACA9oP,EAAAA,iBAAAA,EAAAA,gBAAAA,EAAAA,YACAA,EAAAA,gBAAAA,EAAAA,YACA,CAAAutD,QAAAA,MACA4iK,GAAAA,GAAAA,SAAAA,GAEA,iCADA,eAEA+6B,EAAAA,EAEA,IACA,YA4CA,YACA,kBAEA,WAGAG,EAFA,eAEAA,EAAAA,SAGAA,EAGAD,EAAAA,YAAAA,WACAA,EAAAA,KACA,OAAAlpL,IAAAA,EAAAA,UACAgyJ,EAAAA,cAAAA,EACA,OACA,EACAi3B,EAAAA,EAAAA,OAAAA,EACA,CA9DA5Z,CAAAA,EAAAA,SACA,OACArvK,IAAAA,EAAAA,QAAAA,SAAAA,UAEAgyJ,EAAAA,cAAAA,EACA,CACA,EACAA,EAAAA,aAAAA,WACA,iBACA,EACAA,EAAAA,eAAAA,EACAA,EAAAA,iBAAAA,SAAAA,EAAAA,GACAA,EAAAA,YAAAA,EAAAA,EACA,EACAA,EAAAA,YAAAA,SAAAA,EAAAA,EAAAA,GACA,OACAi3B,IAEA,GACAt/N,aAAAA,GAEAogN,GACA,EAEAhc,GAAAA,EAAAA,EAAAA,CACA,cACA,gBACA,aACA,iBACA,eAkCAnB,GAAAA,EAAAA,oBAAAA,WAAA,WACA,IACA,CACA,QA1FA33J,GAAAA,EAAAA,gBAmIA,CApIA,CAoIAs0K,IExIM6f,GAAc,IFyIpB,GExIMC,GAAoB,CACtBze,YAAa,KACb3mJ,KAFsB,WAGlB1/E,KAAKqmO,YAAc,IAAI0e,GAAqB,CACxCxrP,OAAQ,CACJ67O,iBAAkB,wMAClB4P,yBAAyB,EACzBp2J,WAAY,CAAEi2J,OAGtB7kP,KAAKqmO,YAAY4e,iBACpB,EACDC,cAZsB,SAYPrrP,GACc,MAApBmG,KAAKqmO,aACNrmO,KAAKqmO,YAAY6e,cAAerrP,EAEvC,IDdL,SAAY0qP,GAAAA,EAAAA,EAAAA,MAAAA,GAAAA,QAAAA,EAAAA,EAAAA,OAAAA,GAAAA,SAAAA,EAAAA,EAAAA,MAAAA,GAAAA,QAAAA,EAAAA,EAAAA,SAAAA,GAAAA,WAAAA,EAAAA,EAAAA,OAAAA,GAAAA,QAAAA,EAAZ,CAAYA,KAAAA,GAAAA,CAAAA,IAQL,IEbH7wO,GFaSyxO,GAAb,8BAKE,WAAY31O,GAAa,IAAD,sBACtB,cAAMA,IALR41O,4BAIwB,IAHxBC,0BAGwB,IAFxBC,wBAEwB,EAEtB,EAAKjuO,MAAQ,CAAEilM,QAAO,UAAE,EAAK9sM,MAAM8sM,eAAb,QAAwB,GAE1C,EAAK9sM,MAAM+1O,kBAAoBhB,GAAiBiB,QAClD,EAAKJ,uBAAyB,kCAC9B,EAAKC,qBAAuB,+BAC5B,EAAKC,mBAAqB,8BACjB,EAAK91O,MAAM+1O,kBAAoBhB,GAAiBkB,OACzD,EAAKL,uBAAyB,iCAC9B,EAAKC,qBAAuB,+BAC5B,EAAKC,mBAAqB,8BACjB,EAAK91O,MAAM+1O,kBAAoBhB,GAAiBmB,QACzD,EAAKN,uBAAyB,kCAC9B,EAAKC,qBAAuB,gCAC5B,EAAKC,mBAAqB,+BACjB,EAAK91O,MAAM+1O,kBAAoBhB,GAAiBoB,OACzD,EAAKP,uBAAyB,EAAK/tO,MAAMilM,SAAW,IAAM,sCAAwC,iCAElG,EAAK+oC,qBAAuB,+BAC5B,EAAKC,mBAAqB,8BACjB,EAAK91O,MAAM+1O,kBAAoBhB,GAAiBqB,WACzD,EAAKR,uBAAyB,oCAC9B,EAAKC,qBAAuB,kCAC5B,EAAKC,mBAAqB,iCAxBN,CA0BvB,CA/BH,4CAiCE,WAAsB,IAAD,OACftlP,KAAKqX,MAAMilM,SAAWt8M,KAAKwP,MAAM8sM,SACnC//M,YAAW,WAAQ,EAAKsxE,SAAS,CAAEyuI,QAAS,EAAK9sM,MAAM8sM,SAAY,GAAE,IAExE,GArCH,+BAuCE,WAAqB,IAAD,OACdt8M,KAAKqX,MAAMilM,SAAWt8M,KAAKwP,MAAM8sM,SACnC//M,YAAW,WAAQ,EAAKsxE,SAAS,CAAEyuI,QAAS,EAAK9sM,MAAM8sM,SAAY,GAAE,IAExE,GA3CH,oCA6CE,WACE,OAAIt8M,KAAKwP,MAAM+1O,kBAAoBhB,GAAiBiB,OAC3C,kCACExlP,KAAKwP,MAAM+1O,kBAAoBhB,GAAiBkB,MAClD,iCACEzlP,KAAKwP,MAAM+1O,kBAAoBhB,GAAiBmB,OAClD,kCACE1lP,KAAKwP,MAAM+1O,kBAAoBhB,GAAiBoB,MACjD3lP,KAAKqX,MAAMilM,SAAW,IAAM,sCAAgE,IAAvBt8M,KAAKqX,MAAMilM,QAAgB,4CAA8C,iCAEhJ,mCACT,GAxDH,sBA0DE,SAASp5M,GACP,OAAKlD,KAAKwP,MAAM+1O,kBAAoBhB,GAAiBiB,QAAUxlP,KAAKwP,MAAM+1O,kBAAoBhB,GAAiBkB,OAAWviP,EAEnHA,EAAQ,WAAqC,IAAvBlD,KAAKqX,MAAMilM,QAAgB,cAAgBt8M,KAAKqX,MAAMilM,QAAU,IAAM,cAAgB,oBAD1Gt8M,KAAKqX,MAAMilM,QAAU,IAAM,cAAgB,mBAErD,GA9DH,0BAgEE,SAAap5M,GAAyB,IAAD,EACnC,OAAIlD,KAAKwP,MAAM+1O,kBAAoBhB,GAAiBkB,OAAgC,IAAvBzlP,KAAKwP,MAAM8sM,SAEpEt8M,KAAKwP,MAAM+1O,kBAAoBhB,GAAiBkB,OAAgC,MAAvBzlP,KAAKwP,MAAM8sM,QAD/D,cAGFp5M,EAAQ,WAAsC,IAAvBlD,KAAKwP,MAAM8sM,UAA6D,KAA5C,UAACt8M,KAAKwP,MAAMq2O,2BAAZ,UAAqD,SAAU7lP,KAAKwP,MAAM8sM,QAAgB,cACrJ,GAtEH,0BAwEE,WACE,OAAIt8M,KAAKwP,MAAM+1O,kBAAoBhB,GAAiBiB,OAC3C,mBACLxlP,KAAKwP,MAAM+1O,kBAAoBhB,GAAiBkB,OAAgC,MAAvBzlP,KAAKwP,MAAM8sM,QAC/D,cACqB,IAAvBt8M,KAAKwP,MAAM8sM,QAAgB,cAAiBt8M,KAAKwP,MAAM8sM,SAAW,IAAM,oBAAsB,aACtG,GA9EH,wBAgFE,SAAW1nJ,GACU50D,KAAKwP,MAAM+1O,mBAAqBhB,GAAiBiB,SAAexlP,KAAKwP,MAAM+1O,iBAAqBhB,GAAiBoB,OAEpI,OACE,gBAAK3sO,UAAS,UAAKhZ,KAAK8lP,yBAAV,YAAsC9lP,KAAKwP,MAAMwJ,WAA/D,SAEIhZ,KAAKwP,MAAMyhD,OACX,gBAAKj4C,UAAS,0BAAqBhZ,KAAKqX,MAAMilM,SAAWt8M,KAAKwP,MAAMq2O,oBAA8C,MAAvB7lP,KAAKqX,MAAMilM,QAAkB,uBAAyB,iBAAoB,IAArK,SAA4Kt8M,KAAKwP,MAAMyhD,KAAMjqD,cAIpM,GA3FH,oBA6FE,WACE,MAA+BhH,KAAKwP,MAAftM,GAArB,EAAQolC,KAAR,EAAc8D,MAAd,EAAqBlpC,OAEjB6iP,GADQ/lP,KAAKgmP,SAAS9iP,GACVlD,KAAKimP,aAAa/iP,IAElC,OACE,SAAC,GAAD,CAAOkd,MAAO,CAAE0rG,WAAY,UAAY5qB,QAASlhG,KAAKwP,MAAM0xF,QAASloF,UAAS,2CAAsChZ,KAAKwP,MAAMkzH,SAAW,mBAAqB,IAA/J,UACI,0BACE,iBAAK1pH,UAAS,UAAKhZ,KAAK8lP,yBAAV,YAAsC9lP,KAAKwP,MAAMwJ,WAA/D,WACA,UAAC,GAAD,YACA,SAAC,GAAD,CAAK6jE,GAAI,EAAG7jE,UAAU,SAAtB,UACE,UAAC,GAAD,CAAOoH,MAAO,CAACw0C,MAAOmxL,GAAtB,WACE,gBAAI/sO,UAAS,UAA4B,IAAvBhZ,KAAKwP,MAAM8sM,QAAgB,aAAe,IAA5D,UAAmEt8M,KAAKwP,MAAM8sM,QAAU,IAAM,IAAMt8M,KAAKwP,MAAM8sM,QAA/G,QACA,uBAAIt8M,KAAKwP,MAAM48B,SACf,cAAGpzB,UAAS,2BAA6C,IAAvBhZ,KAAKwP,MAAM8sM,QAAgB,aAAgBt8M,KAAKwP,MAAM8sM,QAAU,IAAM,aAAe,IAAvH,SAA+Ht8M,KAAKwP,MAAMoN,iBAG9I,SAAC,GAAD,CAAKigE,GAAI,EAAG7jE,UAAU,SAASoH,MAAO,CAACQ,YAAa,IAApD,SACG5gB,KAAKwP,MAAM+6B,UAIZvqC,KAAKwP,MAAMyhD,OACX,gBAAKj4C,UAAS,0BAAqBhZ,KAAKqX,MAAMilM,SAAWt8M,KAAKwP,MAAMq2O,oBAA8C,MAAvB7lP,KAAKqX,MAAMilM,QAAkB,uBAAyB,iBAAoB,IAArK,SAA4Kt8M,KAAKwP,MAAMyhD,KAAMjqD,mBAMxM,KA1HH,GAAkC47G,EAAAA,WEZnB,SAASsjI,GAAcC,GACpC,KAAKzyO,IAAiB,IAATA,IAAcyyO,IACrBlyE,GAAW,CACb,IAAImyE,EAAYj8O,SAASa,cAAc,OACvCo7O,EAAUhmO,MAAMrQ,SAAW,WAC3Bq2O,EAAUhmO,MAAM9F,IAAM,UACtB8rO,EAAUhmO,MAAM5F,MAAQ,OACxB4rO,EAAUhmO,MAAM1F,OAAS,OACzB0rO,EAAUhmO,MAAM04B,SAAW,SAC3B3uC,SAASmyB,KAAKljB,YAAYgtO,GAC1B1yO,GAAO0yO,EAAUrlO,YAAcqlO,EAAU/nF,YACzCl0J,SAASmyB,KAAKziB,YAAYusO,EAC3B,CAGH,OAAO1yO,EACR,CCjBD,OAAeq7J,EAAmB,oHCG5Bs3E,GAA2BzjI,EAAAA,YAAiB,WAU/CjvG,GAAQ,IATTs7J,EASS,EATTA,SACAj2J,EAQS,EARTA,UACAstO,EAOS,EAPTA,iBACAC,EAMS,EANTA,SACA7yO,EAKS,EALTA,KACA8yO,EAIS,EAJTA,WACAjtO,EAGS,EAHTA,SACAktO,EAES,EAFTA,WACGj3O,EACM,QACTy/J,EAAWT,EAAmBS,EAAU,SACxC,IAAMy3E,EAAc,GAAH,OAAMz3E,EAAN,WACX03E,EAAwC,kBAAfH,EAAP,UAAoCv3E,EAApC,uBAA2Du3E,GAA3D,UAA6Ev3E,EAA7E,eACxB,OAAoBI,EAAAA,EAAAA,KAAK,MAAD,EAAC,KAAY7/J,GAAb,IACtBmE,IAAKA,EACLqF,UAAW7I,IAAWu2O,EAAa1tO,EAAWtF,GAAQ,GAAJ,OAAOu7J,EAAP,YAAmBv7J,GAAQ6yO,GAAY,GAAJ,OAAOG,EAAP,aAA+BD,GAAc,GAAJ,OAAOC,EAAP,eAAiCF,GAAcG,GAC7KptO,UAAuB81J,EAAAA,EAAAA,KAAK,MAAO,CACjCr2J,UAAW7I,IAAW,GAAD,OAAI8+J,EAAJ,YAAwBq3E,GAC7C/sO,SAAUA,MAGf,IACD8sO,GAAYh0I,YAAc,cAC1B,UC3BA,GAAe08D,EAAmB,4CCQ5B63E,GAA2BhkI,EAAAA,YAAiB,WAI/CjvG,GAAQ,IAHTs7J,EAGS,EAHTA,SACAj2J,EAES,EAFTA,UACGxJ,EACM,QAET,OADAy/J,EAAWT,EAAmBS,EAAU,iBACpBI,EAAAA,EAAAA,KAAK+O,GAAD,EAAC,GACvBzqK,IAAKA,GACFnE,GAFmB,IAGtBwJ,UAAW7I,IAAW6I,EAAWi2J,KAEpC,IACD23E,GAAYv0I,YAAc,cAC1Bu0I,GAAYx0I,aAjBS,CACnBisE,WAAY,QACZE,aAAa,GAgBf,UCpBA,GAAexP,EAAmB,cAAe,CAC/C3mD,UAFoBs2D,GAAiB,mZCsBjCtsE,GAAe,CACnBspE,MAAM,EACNL,UAAU,EACVM,UAAU,EACVlnD,WAAW,EACXsnD,cAAc,EACdC,cAAc,EACd99J,WAAW,EACX2oO,SAAUR,IAIZ,SAASvmE,GAAiBtwK,GACxB,OAAoB6/J,EAAAA,EAAAA,KAAKwO,GAAD,EAAC,KAAWruK,GAAZ,IACtBtT,QAAS,OAEZ,CAED,SAASshL,GAAmBhuK,GAC1B,OAAoB6/J,EAAAA,EAAAA,KAAKwO,GAAD,EAAC,KAAWruK,GAAZ,IACtBtT,QAAS,OAEZ,CAID,IAAMu/K,GAAqB74D,EAAAA,YAAiB,WAkCzCjvG,GAAQ,IAjCTs7J,EAiCS,EAjCTA,SACAj2J,EAgCS,EAhCTA,UACAoH,EA+BS,EA/BTA,MACA0mO,EA8BS,EA9BTA,gBACAR,EA6BS,EA7BTA,iBACA/sO,EA4BS,EA5BTA,SACUwtO,EA2BD,EA3BTF,SACmB7mE,EA0BV,EA1BT,mBACoBgnE,EAyBX,EAzBT,oBACcjyH,EAwBL,EAxBT,cAGA2mD,EAqBS,EArBTA,KACAx9J,EAoBS,EApBTA,UACAm9J,EAmBS,EAnBTA,SACAM,EAkBS,EAlBTA,SACAE,EAiBS,EAjBTA,gBACAS,EAgBS,EAhBTA,OACAC,EAeS,EAfTA,OACA9pI,EAcS,EAdTA,UACAgiF,EAaS,EAbTA,UACAsnD,EAYS,EAZTA,aACAC,EAWS,EAXTA,aACAC,EAUS,EAVTA,oBACA9I,EASS,EATTA,UACAnL,EAQS,EARTA,OACAuL,EAOS,EAPTA,UACAH,EAMS,EANTA,QACAC,EAKS,EALTA,WACAG,EAIS,EAJTA,SACA2M,EAGS,EAHTA,kBACSC,EAEA,EAFTrF,QACGvrK,EACM,QACT,MAA+Bi6I,EAAAA,EAAAA,UAAS,CAAC,GAAzC,GAAOw9F,EAAP,KAAmBC,EAAnB,KACA,MAAoDz9F,EAAAA,EAAAA,WAAS,GAA7D,GAAO09F,EAAP,KAA2BC,EAA3B,KACMC,GAAuB79F,EAAAA,EAAAA,SAAO,GAC9B89F,GAAyB99F,EAAAA,EAAAA,SAAO,GAChC+9F,GAAgC/9F,EAAAA,EAAAA,QAAO,MAC7C,KAA6B44B,KAA7B,GAAOrI,EAAP,KAAcytE,EAAd,KACM/xE,EAAYC,GAAc/hK,EAAK6zO,GAC/BtqE,GAAa/F,GAAiBoF,GAC9B/C,GAAQ5K,IACdK,EAAWT,EAAmBS,EAAU,SACxC,IAAMyR,IAAep3B,EAAAA,EAAAA,UAAQ,iBAAO,CAClCizB,OAAQW,GADmB,GAEzB,CAACA,KAEL,SAASuqE,KACP,OAAIrnE,GACGP,GAAiB,CACtBrG,MAAAA,IAEH,CAED,SAASkuE,GAAkBjvO,GACzB,GAAKw7J,GAAL,CACA,IAAM0zE,EAAyBF,KAAkBvtE,oBAAsB,EACjE0tE,EAAqBnvO,EAAKoyK,aAAetoD,EAAc9pH,GAAM8pC,gBAAgB27G,aACnFgpF,EAAS,CACP3oF,aAAcopF,IAA2BC,EAAqBC,UAAqBxqP,EACnFihK,aAAcqpF,GAA0BC,EAAqBC,UAAqBxqP,GAL9D,CAOvB,CAED,IAAMyqP,GAAqB3wE,IAAiB,WACtC4C,GACF2tE,GAAkB3tE,EAAMqB,OAE3B,IACDrC,IAAe,WACb1+K,GAAoBsR,OAAQ,SAAUm8O,IACG,MAAzCP,EAA8Bn4N,SAA2Bm4N,EAA8Bn4N,SACxF,IAID,IAAM24N,GAAwB,WAC5BV,EAAqBj4N,SAAU,CAChC,EAEK44N,GAAgB,SAAAx/O,GAChB6+O,EAAqBj4N,SAAW2qJ,GAASvxK,EAAE5C,SAAWm0K,EAAMqB,SAC9DksE,EAAuBl4N,SAAU,GAGnCi4N,EAAqBj4N,SAAU,CAChC,EAEK64N,GAA6B,WACjCb,GAAsB,GACtBG,EAA8Bn4N,QAAUqlJ,GAAcsF,EAAMqB,QAAQ,WAClEgsE,GAAsB,EACvB,GACF,EAUK50M,GAAc,SAAAhqC,GACD,WAAb6yK,EAKAisE,EAAuBl4N,SAAW5mB,EAAE5C,SAAW4C,EAAEu9E,cACnDuhK,EAAuBl4N,SAAU,EAIzB,MAAVmtJ,GAA0BA,IAnBM,SAAA/zK,GAC5BA,EAAE5C,SAAW4C,EAAEu9E,eAInBkiK,IACD,CAIGC,CAA0B1/O,EAU7B,EAwCK2zK,IAAiBjzB,EAAAA,EAAAA,cAAY,SAAAy3B,GAAa,OAAiBtR,EAAAA,EAAAA,KAAK,MAAD,EAAC,KAAYsR,GAAb,IACnE3nK,UAAW7I,IAAW,GAAD,OAAI8+J,EAAJ,aAAyBkR,GAAoBjiK,GAAa,UADjC,GAE5C,CAACA,EAAWiiK,EAAmBlR,IAC7Bk5E,GAAiB,OAAK/nO,GACvB6mO,GAILkB,GAAetkI,QAAU,QAoBzB,OAAoBwrD,EAAAA,EAAAA,KAAKmP,GAAAA,SAAuB,CAC9C7iL,MAAO+kL,GACPnnK,UAAuB81J,EAAAA,EAAAA,KAAKuR,GAAW,CACrClF,KAAMA,EACN/nK,IAAK8hK,EACL4F,SAAUA,EACV5oI,UAAWA,EACXkpI,UAAU,EAEVlnD,UAAWA,EACXsnD,aAAcA,EACdC,aAAcA,EACdC,oBAAqBA,EACrBJ,gBA/EwB,SAAArzK,GACrBmzK,GAAyB,WAAbN,EAKNM,GAAYE,GACrBA,EAAgBrzK,IAHhBA,EAAE8qC,iBACF20M,KAIH,EAuEG3rE,OAAQA,EACRC,OAAQA,EACRnJ,QAvEgB,SAAC36J,EAAMslK,GACrBtlK,GACFivO,GAAkBjvO,GAGT,MAAX26J,GAA2BA,EAAQ36J,EAAMslK,EAC1C,EAkEG1K,WA3DmB,SAAC56J,EAAMslK,GACd,MAAd1K,GAA8BA,EAAW56J,EAAMslK,GAE/ClgL,GAAiB8N,OAAQ,SAAUm8O,GACpC,EAwDG30E,UAAWA,EACXnL,OAlEe,SAAAvvJ,GACwB,MAAzC8uO,EAA8Bn4N,SAA2Bm4N,EAA8Bn4N,UAC7E,MAAV44I,GAA0BA,EAAOvvJ,EAClC,EAgEG86J,UAAWA,EACXC,SAzDiB,SAAA/6J,GACfA,IAAMA,EAAK2H,MAAMyjG,QAAU,IAEnB,MAAZ2vD,GAA4BA,EAAS/6J,GAErCpe,GAAoBsR,OAAQ,SAAUm8O,GACvC,EAoDG/sE,QAAS0sE,KACTj5G,WAAYtwH,EAAY4hK,QAAmBziL,EAC3Cy+K,mBAAoB59J,EAAYs/J,QAAqBngL,EACrD8+K,eAAgBA,GAChBD,aA5CiB,SAAAmB,GAAW,OAAiBhO,EAAAA,EAAAA,KAAK,MAAD,EAAC,GACpD0H,KAAM,UACHsG,GAFgD,IAGnDj9J,MAAO+nO,GACPnvO,UAAW7I,IAAW6I,EAAWi2J,EAAUk4E,GAAsB,GAAJ,OAAOl4E,EAAP,YAC7D/tE,QAASm6E,EAAW7oI,QAAcn1C,EAClC8/J,UAAW6qF,GACX,aAAcjzH,EACd,kBAAmBirD,EACnB,mBAAoBgnE,EACpBztO,UAAuB81J,EAAAA,EAAAA,KAAK03E,EAAD,EAAC,KAAav3O,GAAd,IACzBmsJ,YAAaosF,GACb/uO,UAAW8tO,EACXR,iBAAkBA,EAClB/sO,SAAUA,OAdkB,KA+CjC,IACDkiK,GAAMppE,YAAc,QACpBopE,GAAMrpE,aAAeA,GACrB,ICpMYg2I,GASAC,GD2LZ,GAAetkP,OAAOQ,OAAOk3K,GAAO,CAClCoF,KAAMynE,GACNvnE,OAAQ6lE,GACR5lE,MAAOunE,GACPC,OAAQC,GACR1B,OAAQV,GACRqC,oBAAqB,IACrBC,6BAA8B,OC3MhC,SAAYP,GAAAA,EAAAA,gBAAAA,YAAAA,EAAAA,OAAAA,SAAAA,EAAAA,OAAAA,SAAAA,EAAAA,KAAAA,OAAAA,EAAAA,QAAAA,SAAAA,CAAZ,CAAYA,KAAAA,GAAAA,CAAAA,IASZ,SAAYC,GAAAA,EAAAA,KAAAA,OAAAA,EAAAA,SAAAA,WAAAA,EAAAA,KAAAA,OAAAA,EAAAA,SAAAA,WAAAA,EAAAA,OAAAA,SAAAA,EAAAA,OAAAA,SAAAA,EAAAA,mBAAAA,qBAAAA,EAAAA,QAAAA,UAAAA,EAAAA,SAAAA,UAAAA,CAAZ,CAAYA,KAAAA,GAAAA,CAAAA,+CC5EN51I,GAAY,CAMhBx0G,KAAMk9G,KAAAA,OAGNytI,QAASztI,KAAAA,KACT+zD,GAAI/zD,KAAAA,aAEA0tI,GAAwBjmI,EAAAA,YAC9B,WAMGjvG,GANH,QACEu7J,GAAI9mD,OADN,MACkB,MADlB,EAEEpvG,EAFF,EAEEA,UAFF,IAGE/a,KAAAA,OAHF,MAGS,QAHT,MAIE2qP,QAAAA,OAJF,SAKKp5O,EALL,eAMwB6/J,EAAAA,EAAAA,KAAKjnD,EAAD,EAAC,KAAgB54G,GAAjB,IAC1BmE,IAAKA,EACLqF,UAAW7I,IAAW6I,EAAD,UAAe/a,EAAf,YAAuB2qP,EAAU,UAAY,eARpE,IAUAC,GAASx2I,YAAc,WACvBw2I,GAASp2I,UAAYA,GACrB,UC1BA,GADiCmQ,EAAAA,cAAoB,CAAC,sECIhDkmI,GAA8BlmI,EAAAA,YAAiB,WAUlDjvG,GAAQ,IATT/O,EASS,EATTA,GACAqqK,EAQS,EARTA,SACAj2J,EAOS,EAPTA,UAOS,IANT/a,KAAAA,OAMS,MANF,WAME,MALT0jF,QAAAA,OAKS,aAJTonK,UAAAA,OAIS,aAFT75E,GAAI9mD,OAEK,MAFO,QAEP,EADN54G,EACM,QAEPw5O,GACE7/F,EAAAA,EAAAA,YAAW8/F,IADbD,UAGF,OADA/5E,EAAWT,EAAmBS,EAAU,qBACpBI,EAAAA,EAAAA,KAAKjnD,EAAD,EAAC,KAAgB54G,GAAjB,IACtBmE,IAAKA,EACL1V,KAAMA,EACN2G,GAAIA,GAAMokP,EACVhwO,UAAW7I,IAAW6I,EAAWi2J,EAAUttF,GAAW,WAAYonK,GAAa,gBAElF,IACDD,GAAez2I,YAAc,iBAC7B,gDCvBM62I,GAA8BtmI,EAAAA,YAAiB,WAKlDjvG,GAAQ,IAJTs7J,EAIS,EAJTA,SACAj2J,EAGS,EAHTA,UACAmwO,EAES,EAFTA,QACG35O,EACM,QAEPw5O,GACE7/F,EAAAA,EAAAA,YAAW8/F,IADbD,UAGF,OADA/5E,EAAWT,EAAmBS,EAAU,qBACpBI,EAAAA,EAAAA,KAAK,QAAD,EAAC,KAAc7/J,GAAf,IACtBmE,IAAKA,EACLw1O,QAASA,GAAWH,EACpBhwO,UAAW7I,IAAW6I,EAAWi2J,KAEpC,IACDi6E,GAAe72I,YAAc,iBAC7B,+MCXM+2I,GAAyBxmI,EAAAA,YAAiB,WAqB7CjvG,GAAQ,IApBT/O,EAoBS,EApBTA,GACAqqK,EAmBS,EAnBTA,SACAo6E,EAkBS,EAlBTA,eAkBS,IAjBTC,OAAAA,OAiBS,aAhBTpsO,QAAAA,OAgBS,aAfTyS,SAAAA,OAeS,aAdTgyD,QAAAA,OAcS,aAbTonK,UAAAA,OAaS,aAZTQ,gBAAAA,OAYS,SAXTC,EAWS,EAXTA,SACAC,EAUS,EAVTA,aACAzwO,EASS,EATTA,UACAoH,EAQS,EARTA,MAQS,IAPTgsB,MAAAA,OAOS,MAPD,GAOC,MANTnuC,KAAAA,OAMS,MANF,WAME,EALT8X,EAKS,EALTA,MACAwD,EAIS,EAJTA,SAIS,IAFT21J,GAAAA,OAES,MAFJ,QAEI,EADN1/J,EACM,QACTy/J,EAAWT,EAAmBS,EAAU,cACxCo6E,EAAiB76E,EAAmB66E,EAAgB,eACpD,IACEL,GACE7/F,EAAAA,EAAAA,YAAW8/F,IADbD,UAEIU,GAAmBpgG,EAAAA,EAAAA,UAAQ,iBAAO,CACtC0/F,UAAWpkP,GAAMokP,EADc,GAE7B,CAACA,EAAWpkP,IACV+kP,GAAYpwO,GAAqB,MAATxD,IAA2B,IAAVA,GCRjD,SAAwBwD,EAAUtb,GAChC,OAAO2kH,EAAAA,SAAAA,QAAuBrpG,GAAUxE,MAAK,SAAAuE,GAAK,OAAiBspG,EAAAA,eAAqBtpG,IAAUA,EAAMrb,OAASA,CAA/D,GACnD,CDMmE2rP,CAAerwO,EAAU2vO,IAErF/vM,GAAqBk2H,EAAAA,EAAAA,KAAKy5E,GAAD,EAAC,KAAqBt5O,GAAtB,IAC7BvR,KAAe,WAATA,EAAoB,WAAaA,EACvC0V,IAAKA,EACLguE,QAASA,EACTonK,UAAWA,EACXp5N,SAAUA,EACVu/I,GAAIA,KAGN,OAAoBG,EAAAA,EAAAA,KAAK45E,GAAAA,SAAsB,CAC7CttP,MAAO+tP,EACPnwO,UAAuB81J,EAAAA,EAAAA,KAAK,MAAO,CACjCjvJ,MAAOA,EACPpH,UAAW7I,IAAW6I,EAAW2wO,GAAY16E,EAAUq6E,GAAU,GAAJ,OAAOr6E,EAAP,WAA0B/xJ,GAAW,GAAJ,OAAO+xJ,EAAP,YAAoC,WAAThxK,GAAqBorP,GAC9I9vO,SAAUA,IAAyBmkK,EAAAA,EAAAA,MAAMD,EAAAA,SAAW,CAClDlkK,SAAU,CAAC4/B,EAAOwwM,IAAyBt6E,EAAAA,EAAAA,KAAK65E,GAAgB,CAC9D98M,MAAOA,EACP7yB,SAAUxD,IACRyzO,IAAyBn6E,EAAAA,EAAAA,KAAKw5E,GAAU,CAC1C5qP,KAAMwrP,EACNb,QAASW,EACThwO,SAAUiwO,UAKnB,IACDJ,GAAU/2I,YAAc,YACxB,OAAetuG,OAAOQ,OAAO6kP,GAAW,CACtC1xH,MAAOoxH,GACPe,MAAOX,iHElEHY,GAA2BlnI,EAAAA,YAAiB,WAc/CjvG,GAAQ,IAKLvD,EAMG,EAxBP6+J,EAaS,EAbTA,SACAhxK,EAYS,EAZTA,KACAyV,EAWS,EAXTA,KACAq2O,EAUS,EAVTA,SACAnlP,EASS,EATTA,GACAoU,EAQS,EARTA,UAQS,IAPT2oE,QAAAA,OAOS,aANTonK,UAAAA,OAMS,SALTiB,EAKS,EALTA,UACAC,EAIS,EAJTA,SAIS,IAFT/6E,GAAI9mD,OAEK,MAFO,QAEP,EADN54G,EACM,QAEPw5O,GACE7/F,EAAAA,EAAAA,YAAW8/F,IADbD,WAEF/5E,EAAWT,EAAmBS,EAAU,gBAGpC+6E,GACF55O,EAAU,eACJ6+J,EADC,eACsB,IAGtB,OACJA,GAAW,GADP,cAEDA,EAFC,YAEWv7J,GAASA,GAF3BtD,EAAO,GAOT,OAAoBi/J,EAAAA,EAAAA,KAAKjnD,EAAD,EAAC,KAAgB54G,GAAjB,IACtBvR,KAAMA,EACNyV,KAAMq2O,EACNp2O,IAAKA,EACLs2O,SAAUA,EACVrlP,GAAIA,GAAMokP,EACVhwO,UAAW7I,IAAW6I,EAAW5I,EAASuxE,GAAW,WAAYonK,GAAa,aAAuB,UAAT9qP,GAAA,UAAuBgxK,EAAvB,aAE/F,IACD66E,GAAYz3I,YAAc,cAC1B,OAAetuG,OAAOQ,OAAOulP,GAAa,CACxCjB,SAAAA,KCnDF,GAAe95E,EAAmB,uCCG5Bm7E,GAAyBtnI,EAAAA,YAAiB,WAK7CjvG,GAAQ,IAJTq1O,EAIS,EAJTA,UAIS,IAFT95E,GAAI9mD,OAEK,MAFO,MAEP,EADN54G,EACM,QACH1Q,GAAUwqJ,EAAAA,EAAAA,UAAQ,iBAAO,CAC7B0/F,UAAAA,EADsB,GAEpB,CAACA,IACL,OAAoB35E,EAAAA,EAAAA,KAAK45E,GAAAA,SAAsB,CAC7CttP,MAAOmD,EACPya,UAAuB81J,EAAAA,EAAAA,KAAKjnD,EAAD,EAAC,KAAgB54G,GAAjB,IACzBmE,IAAKA,MAGV,IACDu2O,GAAU73I,YAAc,YACxB,+ECTM83I,GAAyBvnI,EAAAA,YAAiB,WAS7CjvG,GAAQ,QAPTu7J,GAAI9mD,OAOK,MAPO,QAOP,EANT6mD,EAMS,EANTA,SACAm7E,EAKS,EALTA,OACAC,EAIS,EAJTA,eACArxO,EAGS,EAHTA,UACAmwO,EAES,EAFTA,QACG35O,EACM,QAEPw5O,GACE7/F,EAAAA,EAAAA,YAAW8/F,IADbD,UAEF/5E,EAAWT,EAAmBS,EAAU,cACxC,IAAIq7E,EAAc,iBACI,kBAAXF,IAAqBE,EAAc,GAAH,OAAMA,EAAN,YAAqBA,EAArB,YAAoCF,IAC/E,IAAMh6O,EAAUD,IAAW6I,EAAWi2J,EAAUo7E,GAAkB,kBAAmBD,GAAUE,GAG/F,OADAnB,EAAUA,GAAWH,EACjBoB,GAA4B/6E,EAAAA,EAAAA,KAAK+tC,GAAD,GAClCzpM,IAAKA,EACLu7J,GAAI,QACJl2J,UAAW5I,EACX+4O,QAASA,GACN35O,KAKH6/J,EAAAA,EAAAA,KAAKjnD,EAAD,GACFz0G,IAAKA,EACLqF,UAAW5I,EACX+4O,QAASA,GACN35O,GAGR,IACD26O,GAAU93I,YAAc,YACxB83I,GAAU/3I,aA1CW,CACnBg4I,QAAQ,EACRC,gBAAgB,GAyClB,2CC7CME,GAAyB3nI,EAAAA,YAAiB,WAK7CjvG,GAAQ,IAJTs7J,EAIS,EAJTA,SACAj2J,EAGS,EAHTA,UACApU,EAES,EAFTA,GACG4K,EACM,QAEPw5O,GACE7/F,EAAAA,EAAAA,YAAW8/F,IADbD,UAGF,OADA/5E,EAAWT,EAAmBS,EAAU,eACpBI,EAAAA,EAAAA,KAAK,QAAD,EAAC,KAAc7/J,GAAf,IACtBvR,KAAM,QACN0V,IAAKA,EACLqF,UAAW7I,IAAW6I,EAAWi2J,GACjCrqK,GAAIA,GAAMokP,IAEb,IACDuB,GAAUl4I,YAAc,YACxB,mFClBMm4I,GAA0B5nI,EAAAA,YAAiB,WAS9CjvG,GAAQ,IARTs7J,EAQS,EARTA,SACAv7J,EAOS,EAPTA,KACAq2O,EAMS,EANTA,SACA/wO,EAKS,EALTA,UAKS,IAJT2oE,QAAAA,OAIS,aAHTonK,UAAAA,OAGS,SAFTnkP,EAES,EAFTA,GACG4K,EACM,QAEPw5O,GACE7/F,EAAAA,EAAAA,YAAW8/F,IADbD,UAGF,OADA/5E,EAAWT,EAAmBS,EAAU,gBACpBI,EAAAA,EAAAA,KAAK,SAAD,EAAC,KAAe7/J,GAAhB,IACtBkE,KAAMq2O,EACNp2O,IAAKA,EACLqF,UAAW7I,IAAW6I,EAAWi2J,EAAUv7J,GAAQ,GAAJ,OAAOu7J,EAAP,YAAmBv7J,GAAQiuE,GAAW,WAAYonK,GAAa,cAC9GnkP,GAAIA,GAAMokP,IAEb,IACDwB,GAAWn4I,YAAc,aACzB,mDCxBMo4I,GAAwB7nI,EAAAA,YAC9B,WAMGjvG,GAAQ,IALTs7J,EAKS,EALTA,SACAj2J,EAIS,EAJTA,UAIS,IAHTk2J,GAAI9mD,OAGK,MAHO,QAGP,EAFTsiI,EAES,EAFTA,MACGl7O,EACM,QAET,OADAy/J,EAAWT,EAAmBS,EAAU,cACpBI,EAAAA,EAAAA,KAAKjnD,EAAD,EAAC,KAAgB54G,GAAjB,IACtBmE,IAAKA,EACLqF,UAAW7I,IAAW6I,EAAWi2J,EAAUy7E,GAAS,gBAEvD,IACDD,GAASp4I,YAAc,WACvB,UChBMs4I,GAAsB/nI,EAAAA,YAAiB,SAACpzG,EAAOmE,GAAR,OAA6B07J,EAAAA,EAAAA,KAAK+5E,GAAD,EAAC,KAAgB55O,GAAjB,IAC5EmE,IAAKA,EACL1V,KAAM,WAFqC,IAI7C0sP,GAAOt4I,YAAc,SACrB,OAAetuG,OAAOQ,OAAOomP,GAAQ,CACnCjzH,MAAO0xH,GAAAA,MACPS,MAAOT,GAAAA,mECJHwB,GAA6BhoI,EAAAA,YAAiB,WAOjDjvG,GAAQ,IANTs7J,EAMS,EANTA,SACAj2J,EAKS,EALTA,UACAO,EAIS,EAJTA,SACAyvO,EAGS,EAHTA,UACAjzO,EAES,EAFTA,MACGvG,EACM,QAET,OADAy/J,EAAWT,EAAmBS,EAAU,kBACpByO,EAAAA,EAAAA,MAAMwsE,GAAD,EAAC,GACxBv2O,IAAKA,EACLqF,UAAW7I,IAAW6I,EAAWi2J,GACjC+5E,UAAWA,GACRx5O,GAJoB,IAKvB+J,SAAU,CAACA,GAAuB81J,EAAAA,EAAAA,KAAK,QAAS,CAC9C85E,QAASH,EACTzvO,SAAUxD,OAGf,IACD60O,GAAcv4I,YAAc,gBAC5B,4CCbMI,GAAY,CAShB5gG,KAAMspG,KAAAA,IAMN0vI,UAAW1vI,KAAAA,KACX+zD,GAAI/zD,KAAAA,aAEA2vI,GAAoBloI,EAAAA,YAAiB,WAMxCjvG,GANwC,IACzCqF,EADyC,EACzCA,UACA6xO,EAFyC,EAEzCA,UAFyC,IAIzC37E,GAAI9mD,OAJqC,MAIzB,OAJyB,EAKtC54G,EALsC,eAMnB6/J,EAAAA,EAAAA,KAAKjnD,EAAD,EAAC,KAAgB54G,GAAjB,IAC1BmE,IAAKA,EACLqF,UAAW7I,IAAW6I,EAAW6xO,GAAa,mBARL,IAU3CC,GAAKz4I,YAAc,OACnBy4I,GAAKr4I,UAAYA,GACjB,OAAe1uG,OAAOQ,OAAOumP,GAAM,CACjCC,MAAOb,GACP/2G,QAAS22G,GACTkB,SAAUC,GACVC,MAAO9B,GACPuB,OAAAA,GACAd,MAAOM,GACPloE,KAAMwoE,GACNU,MAAOZ,GACPa,OAAQZ,GACRI,cAAAA,6DC9CIS,GAAiBt8E,EAAmB,mBAAoB,CAC5D3mD,UAAW,SAuBPkjI,GAA0B1oI,EAAAA,YAAiB,WAQ9CjvG,GAAQ,IAPTs7J,EAOS,EAPTA,SACAv7J,EAMS,EANTA,KACA63O,EAKS,EALTA,cACAvyO,EAIS,EAJTA,UAIS,IAFTk2J,GAAI9mD,OAEK,MAFO,MAEP,EADN54G,EACM,QACTy/J,EAAWT,EAAmBS,EAAU,eAGxC,IAAM+tB,GAAe1zC,EAAAA,EAAAA,UAAQ,iBAAO,CAAC,CAAR,GAAY,IACzC,OAAoB+lB,EAAAA,EAAAA,KAAK6sB,GAAkBryB,SAAU,CACnDluK,MAAOqhM,EACPzjL,UAAuB81J,EAAAA,EAAAA,KAAKjnD,EAAD,EAAC,GAC1Bz0G,IAAKA,GACFnE,GAFsB,IAGzBwJ,UAAW7I,IAAW6I,EAAWi2J,EAAUv7J,GAAQ,GAAJ,OAAOu7J,EAAP,YAAmBv7J,GAAQ63O,GAAiB,sBAGhG,IACDD,GAAWj5I,YAAc,aACzB,OAAetuG,OAAOQ,OAAO+mP,GAAY,CACvCrpE,KAAMopE,GACNG,MAtCsB,SAAAh8O,GAAK,OAAiB6/J,EAAAA,EAAAA,KAAKg8E,GAAgB,CACjE9xO,UAAuB81J,EAAAA,EAAAA,KAAKy5E,GAAD,GACzB7qP,KAAM,SACHuR,KAHsB,EAuC3Bi8O,SA9CyB,SAAAj8O,GAAK,OAAiB6/J,EAAAA,EAAAA,KAAKg8E,GAAgB,CACpE9xO,UAAuB81J,EAAAA,EAAAA,KAAKy5E,GAAD,GACzB7qP,KAAM,YACHuR,KAHyB,ICA5Bk8O,GAAejlP,KAAKy0D,IAAI,EAAG,IAAM,EAErC,SAASywL,GAAkBC,EAAW/mP,EAAIgnP,GACxC,IAAIC,EAAUD,EAAc14P,KAAKqX,MACjCohP,EAAUx8N,QAAU08N,GAAWJ,GAAenvP,WAAWsI,EAAIinP,GAAWvvP,YAAW,WACjF,OAAOovP,GAAkBC,EAAW/mP,EAAIgnP,EACzC,GAAEH,GACJ,CAqBc,SAASK,KACtB,IAAI1pG,EAAYy2B,KAEZ8yE,GAAYpiG,EAAAA,EAAAA,UAIhB,OAHAuvB,IAAe,WACb,OAAO3zJ,aAAawmO,EAAUx8N,QAC/B,KACMk6H,EAAAA,EAAAA,UAAQ,WACb,IAAIppH,EAAQ,WACV,OAAO9a,aAAawmO,EAAUx8N,QAC/B,EAkBD,MAAO,CACL9S,IAjBF,SAAazX,EAAIinP,QACC,IAAZA,IACFA,EAAU,GAGPzpG,MACLniH,IAEI4rN,GAAWJ,GAEbE,EAAUx8N,QAAU7yB,WAAWsI,EAAIinP,GAEnCH,GAAkBC,EAAW/mP,EAAI1R,KAAKqX,MAAQshP,GAEjD,EAIC5rN,MAAOA,EAEV,GAAE,GACJ,CCpED,IAEM8G,GAAO,WAAQ,EAiDrB,OAnCA,SAAsBrzB,EAAKq4O,GAGnB,6DAAJ,CAAC,EAFHr8N,EAEM,EAFNA,SACAkmK,EACM,EADNA,aAEMt2F,EAAUysJ,GAAehlN,GAC/BmxJ,GAAgBxkL,EAAK4rF,EAAS,CAC5B5vE,SAAAA,EACAkmK,aAAAA,IAEF,IAAMo2D,EAAc90E,IAAiB,SAAA3uK,GAzBjB,KA0BdA,EAAEwyC,SACJukD,EAAQ/2F,EAEX,KACDuvH,EAAAA,EAAAA,YAAU,WACR,IAAIpoG,GAAmB,MAAPhc,EAAhB,CACA,IAAM4pJ,EAAMh7B,EAAcizD,GAAa7hL,IAGnCwiL,GAAgB54B,EAAIlwC,aAAe1hH,QAAQkT,MACzCqtO,EAAsB5oM,GAAOi6G,EAAK,SAAS,SAAA/0J,GAE3CA,IAAM2tL,EAKV81D,EAAYzjP,GAJV2tL,OAAe94L,CAKlB,IACD,OAAO,WACL6uP,GACD,CAhB4B,CAiB9B,GAAE,CAACv4O,EAAKgc,EAAUs8N,GACpB,ECvCKE,GAAuBvpI,EAAAA,YAAiB,SAACpzG,EAAO48O,GACpD,IACE97J,EAME9gF,EANF8gF,KACAv9F,EAKEyc,EALFzc,OACAktL,EAIEzwK,EAJFywK,UACA8W,EAGEvnL,EAHFunL,iBAJF,EAOIvnL,EAFFwnL,aAAAA,OALF,MAKiB,CAAC,EALlB,EAMcvlB,EACVjiK,EADFg/H,WAEF,KAAiC4zC,KAAjC,GAAOiqE,EAAP,KAAoB12E,EAApB,KACA,KAAuCyM,KAAvC,GAAOyD,EAAP,KAAqBuR,EAArB,KACM3hB,EAAYC,GAAcC,EAAWy2E,GACrC35M,EAAYgoI,GAAiBjrK,EAAMijC,WACnC7sC,EAAS60K,GAAiBjrK,EAAM5J,QACtC,MAA4B6jJ,EAAAA,EAAAA,WAAUj6I,EAAMksK,MAA5C,GAAOe,EAAP,KAAeC,EAAf,KACM6I,EAASkS,GAAU7xL,EAAQymP,EAAa51D,GAA6B,CACzExW,UAAAA,EACA6W,eAAgBtnL,EAAMksK,KACtBqb,iBAAkBA,GAAoB,EACtCzmG,KAAAA,EACAv9F,OAAAA,EACA8yL,aAAAA,EACAmR,aAAAA,KAGExnL,EAAMksK,KACJe,GAAQC,GAAU,GACZltK,EAAMg/H,YAAeiuC,GAC/BC,GAAU,GAGZ,IASM4vE,EAAe98O,EAAMksK,MAAQjK,IAAegL,EAMlD,GALA8vE,GAAaF,EAAa78O,EAAM+sK,OAAQ,CACtC5sJ,UAAWngB,EAAMg9O,WAAah9O,EAAMi9O,kBACpC52D,aAAcrmL,EAAM8nL,kBAGjBg1D,EAEH,OAAO,KAGT,IAAIhzO,EAAQ9J,EAAM+J,SAASxV,OAAOQ,OAAO,CAAC,EAAGghL,EAAOtsK,WAAWssK,OAAQ,CACrEnlK,MAAOmlK,EAAO9lK,OAAO8lK,OACrB5xK,IAAK8hK,IACH,CACF8P,OAAAA,EACAtF,UAAAA,EACAvE,OAAQlsK,EAAMksK,KACdwc,WAAYn0L,OAAOQ,OAAO,CAAC,EAAGghL,EAAOtsK,WAAW8sK,MAAO,CACrD3lK,MAAOmlK,EAAO9lK,OAAOsmK,MACrBpyK,IAAKyjL,MAIT,GAAI3lB,EAAY,CACd,IACEzJ,EAKEx4J,EALFw4J,OACAuL,EAIE/jK,EAJF+jK,UACAH,EAGE5jK,EAHF4jK,QACAC,EAEE7jK,EAFF6jK,WACAF,EACE3jK,EADF2jK,UAEF75J,GAAqB+1J,EAAAA,EAAAA,KAAKoC,EAAY,CACpCM,GAAIviK,EAAMksK,KACV/J,QAAQ,EACR3J,OAAQA,EACRuL,UAAWA,EACXC,SA9CiB,WACnBkJ,GAAU,GAENltK,EAAMgkK,UACRhkK,EAAMgkK,SAAN,MAAAhkK,EAAK,UAER,EAyCG4jK,QAASA,EACTC,WAAYA,EACZF,UAAWA,EACX55J,SAAUD,GAEb,CAED,OAAOm5B,EAAyBigI,GAAAA,aAAsBp5J,EAAOm5B,GAAa,IAC3E,IACD05M,GAAQ95I,YAAc,UACtB,UCtGA,GAAe08D,EAAmB,kBCAlC,GAAeA,EAAmB,gBCAKnsD,EAAAA,6GCUjC8pI,GAAuB9pI,EAAAA,YAAiB,WAW3CjvG,GAAQ,IAVTs7J,EAUS,EAVTA,SACAgR,EASS,EATTA,UACAjnK,EAQS,EARTA,UACAoH,EAOS,EAPTA,MACA7G,EAMS,EANTA,SACA+iB,EAKS,EALTA,KACA47J,EAIS,EAJTA,WAGG1oL,GACM,EAHT+1K,OAGS,EAFT7J,KAES,SACHwhC,EAAoB1uC,EAAmBS,EAAU,WACjDuK,EAAQ5K,IACP+9E,EAAP,IAAyC,MAAb1sE,OAAoB,EAASA,EAAU7rL,MAAM,OAAS,GAAlF,MACMw4P,EDvBD,SAA6B3sE,EAAWzG,GAC7C,IAAIozE,EAAc3sE,EAQlB,MANkB,SAAdA,EACF2sE,EAAcpzE,EAAQ,MAAQ,QACP,UAAdyG,IACT2sE,EAAcpzE,EAAQ,QAAU,OAG3BozE,CACR,CCaqBC,CAAoBF,EAAkBnzE,GAC1D,OAAoBkE,EAAAA,EAAAA,MAAM,MAAD,EAAC,GACxB/pK,IAAKA,EACLojK,KAAM,UACN32J,MAAOA,EACP,cAAeusO,EACf3zO,UAAW7I,IAAW6I,EAAWkkM,EAAmByvC,GAAoB,cAAJ,OAAkBC,KACnFp9O,GANoB,IAOvB+J,SAAU,EAAc81J,EAAAA,EAAAA,KAAK,MAAD,GAC1Br2J,UAAW,iBACRk/K,IACD57J,GAAoB+yI,EAAAA,EAAAA,KAAKy9E,GAAa,CACxCvzO,SAAUA,IACPA,KAER,IACDmzO,GAAQt6I,aAlCa,CACnB6tE,UAAW,SAkCb,OAAel8K,OAAOQ,OAAOmoP,GAAS,CACpC3rE,OAAQgsE,GACRlsE,KAAMisE,GAGNE,cAAe,CAAC,EAAG,qDCpCf56I,GAAe,CACnBo8B,WAAYqvC,GACZ2uE,WAAW,EACX9wE,MAAM,EACNuE,UAAW,OAgBb,IAAMksE,GAAuBvpI,EAAAA,YAAiB,WAK3CwpI,GAAa,IAJJ3rJ,EAII,EAJdlnF,SACAi1H,EAGc,EAHdA,WAGc,IAFdwoD,aAAAA,OAEc,MAFC,CAAC,EAEF,EADXi2D,EACW,QACRC,GAAY1jG,EAAAA,EAAAA,QAAO,CAAC,GAC1B,KAAoD44B,KAApD,GAAO+qE,EAAP,KAA2BC,EAA3B,KACA,EClCa,SAA0BC,GACvC,IAAMC,GAAa9jG,EAAAA,EAAAA,QAAO,MACpB+jG,EAAe/+E,OAAmBnxK,EAAW,WAC7CtK,GAASu2J,EAAAA,EAAAA,UAAQ,iBAAO,CAC5BloJ,KAAM,SACNsD,QAAS,CACP3R,OAAQ,WACN,OAAIu6P,EAAWl+N,SAAW0vJ,GAASwuE,EAAWl+N,QAASm+N,GAC9CF,GAAgBX,GAAAA,cAGlBW,GAAgB,CAAC,EAAG,EAC5B,GATkB,GAWnB,CAACA,EAAcE,IACnB,MAAO,CAACD,EAAY,CAACv6P,GACtB,CDkB0By6P,CAAiBP,EAAWl6P,QAArD,UAAO4gB,EAAP,KAAY8+K,EAAZ,KACMhd,EAAYC,GAAc02E,EAAUz4O,GACpC85O,GAAkC,IAAfj/G,EAAsBqvC,GAAOrvC,QAAcnxI,EAC9DqwP,EAAoBv2E,IAAiB,SAAA9/J,GACzC+1O,EAAsB/1O,GACN,MAAhB2/K,GAA8D,MAA9BA,EAAa9C,eAAiC8C,EAAa9C,cAAc78K,EAC1G,IAMD,OALAglL,IAAoB,WACd8wD,IACkC,MAApCD,EAAU99N,QAAQynI,gBAAkCq2F,EAAU99N,QAAQynI,iBAEzE,GAAE,CAACs2F,KACgB99E,EAAAA,EAAAA,KAAKs+E,GAAD,EAAC,KAAkBV,GAAnB,IACtBt5O,IAAK8hK,EACLuhB,aAAc,OAAKA,GAAP,IACVvE,UAAWA,EAAU3+L,OAAOkjM,EAAavE,WAAa,IACtDyB,cAAew5D,IAEjBl/G,WAAYi/G,EACZl0O,SAAU,SAACq0O,EAAD,GAIJ,IACAC,EAAkBC,EAJtB51D,EAGI,EAHJA,WACQ61D,EAEJ,EAFJxoE,OACA7J,EACI,EADJA,MA3CN,SAAkBlsK,EAAO0oL,GACvB,IACEvkL,EACEnE,EADFmE,IAGKq6O,EACH91D,EADFvkL,IAGFnE,EAAMmE,IAAMA,EAAIs6O,YAAct6O,EAAIs6O,UAAY,SAAAv9O,GAAC,OAAIiD,EAAI0hK,GAAgB3kK,GAAxB,GAE/CwnL,EAAWvkL,IAAMq6O,EAAKC,YAAcD,EAAKC,UAAY,SAAAv9O,GAAC,OAAIs9O,EAAK34E,GAAgB3kK,GAAzB,EACvD,CAoCKw9O,CAASN,EAAc11D,GAEvB,IAAMi2D,EAAgC,MAAbJ,OAAoB,EAASA,EAAU9tE,UAC1DsF,EAASxhL,OAAOQ,OAAO2oP,EAAU99N,QAAS,CAC9C/X,MAAoB,MAAb02O,OAAoB,EAASA,EAAU12O,MAC9Cw/I,eAA6B,MAAbk3F,OAAoB,EAASA,EAAUnkK,OACvDq2F,UAAWkuE,EACXC,iBAA+B,MAAbL,GAAqE,OAAvCF,EAAmBE,EAAU12O,QAA2F,OAAhEy2O,EAAwBD,EAAiB5nE,cAAcmO,WAAzH,EAAkJ05D,EAAsBt+D,qBAAsB,IAEtO,MAAuB,oBAAZ/uF,EAA+BA,EAAQ,SAAKmtJ,GAAN,IAC/C3tE,UAAWkuE,EACXzyE,KAAAA,IACKltC,GAAcktC,GAAQ,CACzB1iK,UAAW,SAJkC,IAM/CusK,OAAAA,EACA2S,WAAAA,KAEkBt1E,EAAAA,aAAmBniB,EAAnB,OAAiCmtJ,GAAjC,IAClB3tE,UAAWkuE,EACXj2D,WAAAA,EACA3S,OAAAA,EACAvsK,UAAW7I,IAAWswF,EAAQjxF,MAAMwJ,WAAYw1H,GAAcktC,GAAQ,QACtEt7J,MAAO,OAAKqgF,EAAQjxF,MAAM4Q,OACrBwtO,EAAaxtO,SAGrB,IAEJ,IACD+rO,GAAQ95I,YAAc,UACtB85I,GAAQ/5I,aAAeA,GACvB,wHE1EA,SAASi8I,GACTtrN,EAASh6B,EAAMulP,GACb,IAAO9lP,EAAP,GAAYO,EAAZ,MACMnD,EAAS4C,EAAEu9E,cACXwoK,EAAU/lP,EAAE4oI,eAAiB5oI,EAAE6kI,YAAYihH,GAE3CC,GAAWA,IAAY3oP,GAAYs1C,GAASt1C,EAAQ2oP,IACxDxrN,EAAO,WAAP,KAAWh6B,GAEd,CAOD,SAASylP,GAAT,GAYG,IAXDC,EAWC,EAXDA,QACAhuJ,EAUC,EAVDA,QACAlnF,EASC,EATDA,SASC,IARDy9K,aAAAA,OAQC,MARc,CAAC,EAQf,EAPK03D,EAOL,EAPDhzE,KAOC,IANDse,YAAAA,OAMC,SALD1iB,EAKC,EALDA,SACOq3E,EAIN,EAJD3xO,MACAijK,EAGC,EAHDA,UAGC,IAFD3vF,KAAAA,OAEC,MAFM2vF,IAA4C,IAA/BA,EAAU3jL,QAAQ,QAErC,EADEkT,EACF,QACKo/O,GAAiBplG,EAAAA,EAAAA,QAAO,MACxBisB,EAAYC,GAAck5E,EAAgBr1O,EAAS5F,KACnDzX,EAAU6vP,KACV8C,GAAgBrlG,EAAAA,EAAAA,QAAO,IAC7B,KAAwBimB,EAAoBi/E,EAAW10D,EAAa1iB,GAApE,GAAOoE,EAAP,KAAaozE,EAAb,KACM9xO,EA7CR,SAAwBA,GACtB,OAAOA,GAA0B,kBAAVA,EAAqBA,EAAQ,CAClD0+J,KAAM1+J,EACNo3K,KAAMp3K,EAET,CAwCe+xO,CAAeJ,GAC7B,EAIwB,oBAAbp1O,EAA0BqpG,EAAAA,SAAAA,KAAoBrpG,GAAU/J,MAAQ,CAAC,EAH1E24G,EADF,EACEA,QACAuI,EAFF,EAEEA,OACAxvB,EAHF,EAGEA,QAOI07E,GAAa1zB,EAAAA,EAAAA,cAAY,WAC7BhtJ,EAAQgkC,QACR2uN,EAAcz/N,QAAU,OAEnBpS,EAAM0+J,KAKXx/K,EAAQogB,KAAI,WACoB,SAA1BuyO,EAAcz/N,SAAoB0/N,GAAQ,EAC/C,GAAE9xO,EAAM0+J,MANPozE,GAAQ,EAOX,GAAE,CAAC9xO,EAAM0+J,KAAMozE,EAAS5yP,IACnBghL,GAAah0B,EAAAA,EAAAA,cAAY,WAC7BhtJ,EAAQgkC,QACR2uN,EAAcz/N,QAAU,OAEnBpS,EAAMo3K,KAKXl4L,EAAQogB,KAAI,WACoB,SAA1BuyO,EAAcz/N,SAAoB0/N,GAAQ,EAC/C,GAAE9xO,EAAMo3K,MANP06D,GAAQ,EAOX,GAAE,CAAC9xO,EAAMo3K,KAAM06D,EAAS5yP,IACnB8yP,GAAc9lG,EAAAA,EAAAA,cAAY,WAC9B0zB,IACW,MAAXz0D,GAA2BA,EAAO,WAAP,YAC5B,GAAE,CAACy0D,EAAYz0D,IACV8mI,GAAa/lG,EAAAA,EAAAA,cAAY,WAC7Bg0B,IACU,MAAVxsD,GAA0BA,EAAM,WAAN,YAC3B,GAAE,CAACwsD,EAAYxsD,IACVl+E,GAAc02G,EAAAA,EAAAA,cAAY,WAC9B4lG,GAASpzE,GACE,MAAXx6E,GAA2BA,EAAO,WAAP,YAC5B,GAAE,CAACA,EAAS4tJ,EAASpzE,IAChBwzE,GAAkBhmG,EAAAA,EAAAA,cAAY,WAAa,2BAATngJ,EAAS,yBAATA,EAAS,gBAC/CslP,GAAmBzxE,EAAY7zK,EAAM,cACtC,GAAE,CAAC6zK,IACEuyE,GAAiBjmG,EAAAA,EAAAA,cAAY,WAAa,2BAATngJ,EAAS,yBAATA,EAAS,gBAC9CslP,GAAmBnxE,EAAYn0K,EAAM,YACtC,GAAE,CAACm0K,IACEkyE,EAAsB,MAAXX,EAAkB,GAAK,GAAG36P,OAAO26P,GAC5CY,EAAe,CACnB17O,IAlDgB,SAAAjD,GAChB+kK,EAAUJ,GAAgB3kK,GAC3B,GAkED,OAfmC,IAA/B0+O,EAAS9yP,QAAQ,WACnB+yP,EAAanuJ,QAAU1uD,IAGU,IAA/B48M,EAAS9yP,QAAQ,WACnB+yP,EAAalnI,QAAU6mI,EACvBK,EAAa3+H,OAASu+H,IAGW,IAA/BG,EAAS9yP,QAAQ,WAEnB+yP,EAAa3vI,YAAcwvI,EAC3BG,EAAaC,WAAaH,IAGRzxE,EAAAA,EAAAA,MAAMD,EAAAA,SAAW,CACnClkK,SAAU,CAAqB,oBAAbA,EAA0BA,EAAS81O,IAA6Bp0F,EAAAA,EAAAA,cAAa1hJ,EAAU81O,IAA4BhgF,EAAAA,EAAAA,KAAK88E,GAAD,EAAC,KAAc38O,GAAf,IACvIksK,KAAMA,EACNa,OAAQW,EACR5sF,KAAMA,EACN2vF,UAAWA,EACX+W,aAAcA,EACdpxL,OAAQgpP,EAAex/N,QACvB7V,SAAUknF,OAGf,CAED+tJ,GAAep8I,aA/GM,CACnB4nF,aAAa,EACby0D,QAAS,CAAC,QAAS,UA8GrB,UC9Iac,GAAb,8BACI,WAAY//O,GAAa,6BACfA,EACT,CAHL,gCAKI,WAC0E,IAAD,MAArE,OAA2B,OAAvBxP,KAAKwP,MAAMo5O,cAA2CvrP,IAAvB2C,KAAKwP,MAAMo5O,SAEtC,SAAC,GAAD,CAEI5rO,MAAO,CAAE0+J,KAAM,IAAK0Y,KAAM,KAC1BnU,UAAU,MACVx/E,SACI,UAAC,GAAD,CAAS77F,GAAE,yBAAX,WACK,UAAA5E,KAAKwP,MAAMo5O,eAAX,eAAoBx8M,SAAS,SAAC,UAAD,CAAgB8iI,GAAG,KAAnB,mBAAyBlvK,KAAKwP,MAAMo5O,eAApC,aAAyB,EAAoBx8M,SAC3E,SAAC,QAAD,oBACKpsC,KAAKwP,MAAMo5O,eADhB,aACK,EAAoBv5O,aARrC,SAaKrP,KAAKwP,MAAM+J,UAZR,QAgBJ,8BAAGvZ,KAAKwP,MAAM+J,UAC7B,KA1BL,GAA6BqpG,EAAAA,WA6BtB,SAAS4sI,GAAWC,EAAgCC,GACvD,IAAK,IAAI5uP,EAAQ,EAAGA,EAAQ2uP,EAAMp7P,OAAQyM,IAAS,CAC/C,IAAMoY,EAAUu2O,EAAM3uP,GACtB,GAAIoY,EAAQ+2J,YAAcy/E,EACtB,OAAOx2O,CACd,CACD,OAAO,IACV,kCCbY4wO,GAAb,8BAIE,WAAYt6O,GAAa,IAAD,oBACtB,cAAMA,IACD6H,MAAQ,CAAEgnM,SAAS,EAAO1iN,MAAO6T,EAAM7T,MAAOg0P,aAAc,IAEjE,EAAK5G,UAAY,EAAKA,UAAUvqP,KAAf,MAJK,CAKvB,CATH,2CAWE,WACEwB,KAAK4vP,cAAgB5vP,KAAK4vP,cAAcpxP,KAAKwB,KAC9C,GAbH,2BAeE,SAAc6e,GACZ,GAAI7e,KAAKwP,MAAMmtC,MAAMkzM,cAAgBxH,GAAYv1P,KAC/CkN,KAAKwP,MAAMmtC,MAAMmzM,UAAY,IAAI38P,KAAK0rB,GACtC7e,KAAK6tE,SAAS,CAAEwwI,SAAS,EAAM1iN,MAAOkjB,IACtC7e,KAAKwP,MAAMmtC,MAAM0hK,SAAU,EAC3Br+M,KAAKwP,MAAMmtC,MAAMhhD,MAAQkjB,MACpB,CACL,IAAMjZ,EAASiZ,EAAMjZ,OACfjK,EAAwB,aAAhBiK,EAAO3H,KAAsB2H,EAAOi8H,QAAUj8H,EAAOjK,MAE/DqE,KAAKwP,MAAMmtC,MAAMozM,gBAAkBp0P,IACrCqE,KAAK6tE,SAAS,CAAEwwI,SAAS,EAAM1iN,MAAOA,IACtCqE,KAAKwP,MAAMmtC,MAAM0hK,SAAU,EAC3Br+M,KAAKwP,MAAMmtC,MAAMhhD,MAAQA,EAE5B,CACF,GA/BH,uBAiCE,WACE,OAAIqE,KAAKwP,MAAMu5O,UACN/oP,KAAKwP,MAAMu5O,UAAU/oP,KAAKwP,MAAMmtC,MAAMhhD,SAG7CqE,KAAKwP,MAAMmtC,MAAMkzM,cAAgBxH,GAAY2H,WAC7ChwP,KAAKwP,MAAMmtC,MAAMszM,WAET3pO,YACLtmB,KAAKwP,MAAMmtC,MAAMhhD,OAAS,IACxBqL,WACAkC,QAAQ,SAAK,IACbA,QAAQ,KAAM,KAERlJ,KAAKwP,MAAMmtC,MAAMszM,QAG/B,GAlDH,uBAoDE,WACE,IAAI5mP,EAAI,EAENA,EAD4B,MAA1BrJ,KAAKwP,MAAMmtC,MAAMhhD,MACf,EAEAqE,KAAKwP,MAAMmtC,MAAMhhD,MAEvB0N,IACIrJ,KAAKwP,MAAMmtC,MAAM/C,cACnB55C,KAAKwP,MAAMmtC,MAAM/C,aAAa,CAC5Bh0C,OAAQ,CAAExE,KAAMpB,KAAKwP,MAAMmtC,MAAMv7C,KAAMzF,MAAO0N,IAEnD,GAhEH,uBAkEE,WACE,IAAIA,EAAI,GAENA,EAD4B,MAA1BrJ,KAAKwP,MAAMmtC,MAAMhhD,MACf,EAEAqE,KAAKwP,MAAMmtC,MAAMhhD,OAEf,GAAG0N,IACPrJ,KAAKwP,MAAMmtC,MAAM/C,cACnB55C,KAAKwP,MAAMmtC,MAAM/C,aAAa,CAC5Bh0C,OAAQ,CAAExE,KAAMpB,KAAKwP,MAAMmtC,MAAMv7C,KAAMzF,MAAO0N,IAEnD,GA9EH,oBAgFE,WAAU,IAAD,6BACH6mP,EAAY,UAAGlwP,KAAKwP,MAAM0gP,oBAAd,QAA8B,GAC1ClwP,KAAKwP,MAAM2gP,YAAWD,GAAgB,cACtClwP,KAAKwP,MAAM+6B,OAAM2lN,GAAgB,aACjClwP,KAAKwP,MAAM4gP,QAAOF,GAAgB,kBAClClwP,KAAKwP,MAAM4gP,OAASpwP,KAAKwP,MAAMmtC,MAAMkzM,cAAgBxH,GAAYv1P,OACnEo9P,GAAgB,cAClB,IAAMj4P,GACJ,gCACG+H,KAAKwP,MAAMmtC,MAAMkzM,cAAgBxH,GAAY//M,OAC5C,SAAC,WAAD,CACE1jC,GAAI5E,KAAKwP,MAAMmtC,MAAMv7C,KACrB6oP,SAAUjqP,KAAKwP,MAAMy6O,SACrBjxO,UAAWk3O,EACXnG,SAAU,EACV3oP,KAAMpB,KAAKwP,MAAMmtC,MAAMv7C,KACvB4zH,YAAW,UAAEh1H,KAAKwP,MAAMmtC,MAAMq4E,mBAAnB,QAAkC,GAC7C/2H,KAAK,OACLtC,MAAOqE,KAAKwP,MAAMmtC,MAAMhhD,MACxB+iF,UAAW1+E,KAAKwP,MAAMmtC,MAAM+hC,UAC5BgvC,SAAU,SAACllH,GACT,EAAKonP,cAAcpnP,GACf,EAAKgH,MAAMmtC,MAAM/C,cACnB,EAAKpqC,MAAMmtC,MAAM/C,aAAapxC,GAC5B,EAAKgH,MAAM6gP,cACb,EAAK7gP,MAAM6gP,aAAa7nP,EAAE5C,OAAOjK,MACpC,EACDotP,UAAW/oP,KAAK+oP,cAGnB/oP,KAAKwP,MAAMmtC,MAAMkzM,cAAgBxH,GAAY2H,WAC5C,SAAC,WAAD,CACEprP,GAAI5E,KAAKwP,MAAMmtC,MAAMv7C,KACrB6oP,SAAUjqP,KAAKwP,MAAMy6O,SACrBjxO,UAAWk3O,EACXnG,SAAU,EACV3oP,KAAMpB,KAAKwP,MAAMmtC,MAAMv7C,KACvB4zH,YAAW,UAAEh1H,KAAKwP,MAAMmtC,MAAMq4E,mBAAnB,QAAkC,GAC7C/2H,KAAK,OACLtC,MAAOqE,KAAKwP,MAAMmtC,MAAMhhD,MACxB+iF,UAAW1+E,KAAKwP,MAAMmtC,MAAM+hC,UAC5BgvC,SAAU,SAACllH,GACT,EAAKonP,cAAcpnP,GACf,EAAKgH,MAAMmtC,MAAM/C,cACnB,EAAKpqC,MAAMmtC,MAAM/C,aAAapxC,GAC5B,EAAKgH,MAAM6gP,cACb,EAAK7gP,MAAM6gP,aAAa7nP,EAAE5C,OAAOjK,MACpC,EACDotP,UAAW/oP,KAAK+oP,cAGnB/oP,KAAKwP,MAAMmtC,MAAMkzM,cAAgBxH,GAAYiI,WAC5C,SAAC,WAAD,CACE1rP,GAAI5E,KAAKwP,MAAMmtC,MAAMv7C,KACrB6oP,SAAUjqP,KAAKwP,MAAMy6O,SACrBjxO,UAAWk3O,EACX9uP,KAAMpB,KAAKwP,MAAMmtC,MAAMv7C,KACvB8tK,GAAG,WACHl6C,YAAW,UAAEh1H,KAAKwP,MAAMmtC,MAAMq4E,mBAAnB,QAAkC,GAC7C/2H,KAAK,OACLtC,MAAOqE,KAAKwP,MAAMmtC,MAAMhhD,MACxB+iF,UAAW1+E,KAAKwP,MAAMmtC,MAAM+hC,UAC5BgvC,SAAU,SAACllH,GACT,EAAKonP,cAAcpnP,GACf,EAAKgH,MAAMmtC,MAAM/C,cACnB,EAAKpqC,MAAMmtC,MAAM/C,aAAapxC,EACjC,IAGJxI,KAAKwP,MAAMmtC,MAAMkzM,cAAgBxH,GAAYkI,WAC5C,gCACGvwP,KAAKwP,MAAMmtC,MAAM6zM,WAAapI,GAASpmP,UACtC,UAAC,UAAD,CACE4C,GAAI5E,KAAKwP,MAAMmtC,MAAMv7C,KACrB4X,UAAWk3O,EACX9uP,KAAMpB,KAAKwP,MAAMmtC,MAAMv7C,KACvB4zH,YAAW,UAAEh1H,KAAKwP,MAAMmtC,MAAMq4E,mBAAnB,QAAkC,GAC7Cr5H,MAAqBqE,KAAKwP,MAAMmtC,MAAMhhD,MACtC+xH,SAAU,SAACllH,GACT,EAAKonP,cAAcpnP,GACf,EAAKgH,MAAMmtC,MAAM/C,cACnB,EAAKpqC,MAAMmtC,MAAM/C,aAAapxC,EACjC,EAVH,WAYE,sBAC8B,OAA7BxI,KAAKwP,MAAMmtC,MAAMj4C,SAChB1E,KAAKwP,MAAMmtC,MAAMj4C,QAAQsO,KAAI,SAACzF,GAAD,OAC3B,mBAAwB5R,MAAO4R,EAAI5R,MAAnC,SACG4R,EAAI+6B,MADM/6B,EAAI5R,MADU,OAOlCqE,KAAKwP,MAAMmtC,MAAM6zM,WAAapI,GAASpmP,UACtC,UAAC,UAAD,CACE4C,GAAI5E,KAAKwP,MAAMmtC,MAAMv7C,KACrB4X,UAAWk3O,EACX9uP,KAAMpB,KAAKwP,MAAMmtC,MAAMv7C,KACvB4zH,YAAW,UAAEh1H,KAAKwP,MAAMmtC,MAAMq4E,mBAAnB,QAAkC,GAC7Cr5H,MAAOqE,KAAKwP,MAAMmtC,MAAMhhD,MACxB+xH,SAAU,SAACllH,GACT,EAAKonP,cAAcpnP,GACf,EAAKgH,MAAMmtC,MAAM/C,cACnB,EAAKpqC,MAAMmtC,MAAM/C,aAAapxC,EACjC,EAVH,WAYE,sBAC8B,OAA7BxI,KAAKwP,MAAMmtC,MAAMj4C,SAChB1E,KAAKwP,MAAMmtC,MAAMj4C,QAAQsO,KAAI,SAACzF,GAAD,OAC3B,mBAAwB5R,MAAO4R,EAAI5R,MAAnC,SACG4R,EAAI+6B,MADM/6B,EAAI5R,MADU,UAStCqE,KAAKwP,MAAMmtC,MAAMkzM,cAAgBxH,GAAYoI,SAC5C,UAAC,UAAD,CACEz3O,UAAWk3O,EACX9uP,KAAMpB,KAAKwP,MAAMmtC,MAAMv7C,KACvB4zH,YAAW,UAAEh1H,KAAKwP,MAAMmtC,MAAMq4E,mBAAnB,QAAkC,GAC7Cr5H,MAAOqE,KAAKwP,MAAMmtC,MAAMhhD,MACxB+xH,SAAU,SAACllH,GACT,EAAKonP,cAAcpnP,GACf,EAAKgH,MAAMmtC,MAAM/C,cACnB,EAAKpqC,MAAMmtC,MAAM/C,aAAapxC,EACjC,EATH,WAWE,mBAAQ7M,MAAO,MACoB,OAAlCqE,KAAKwP,MAAMmtC,MAAMgzM,cAChB3vP,KAAKwP,MAAMmtC,MAAMgzM,aAAa38O,KAAI,SAACzF,GAAD,OAChC,mBAAwB5R,MAAO4R,EAAI5R,MAAnC,SACG4R,EAAI+6B,MADM/6B,EAAI5R,MADe,OAOvCqE,KAAKwP,MAAMmtC,MAAMkzM,cAAgBxH,GAAYv1P,OAC5C,SAAC,KAAD,CACEkmB,UAAWk3O,EACX9uP,KAAMpB,KAAKwP,MAAMmtC,MAAMv7C,KACvBzF,MAAK,UAAEqE,KAAKwP,MAAMmtC,MAAMmzM,iBAAnB,aAAgCzyP,EACrCqwH,SAAU,SAACllH,GACT,EAAKonP,cAAcpnP,GACf,EAAKgH,MAAMmtC,MAAM/C,cACnB,EAAKpqC,MAAMmtC,MAAM/C,aAAa,CAC5Bh0C,OAAQ,CAAExE,KAAM,EAAKoO,MAAMmtC,MAAMv7C,KAAMzF,MAAO6M,IAEnD,EAEDw2G,QAASh/G,KAAKwP,MAAMmtC,MAAMszM,SAC1BhxI,QAASj/G,KAAKwP,MAAMmtC,MAAM+zM,SAC1Bz0H,UAAW,KACXF,aAAc,KACdx+D,OAAO,aAeTv9D,KAAKwP,MAAMmtC,MAAMkzM,cAAgBxH,GAAY5kP,SAC3C,SAAC,WAAD,CACEmB,GAAI5E,KAAKwP,MAAMmtC,MAAMv7C,KACrB6oP,SAAUjqP,KAAKwP,MAAMy6O,SACrBjxO,UAAWk3O,EACXnG,SAAU,EACV3oP,KAAMpB,KAAKwP,MAAMmtC,MAAMv7C,KACvB4zH,YAAW,UAAEh1H,KAAKwP,MAAMmtC,MAAMq4E,mBAAnB,QAAkC,GAC7C/2H,KAAK,SACLtC,MAAOqE,KAAKwP,MAAMmtC,MAAMhhD,MACxBq9B,IAAKh5B,KAAKwP,MAAMmtC,MAAMszM,SACtBh3N,IAAKj5B,KAAKwP,MAAMmtC,MAAM+zM,SACtBhyK,UAAW,EACXgvC,SAAU,SAACllH,GACT,EAAKonP,cAAcpnP,GACf,EAAKgH,MAAMmtC,MAAM/C,cACnB,EAAKpqC,MAAMmtC,MAAM/C,aAAapxC,EACjC,IAINxI,KAAKwP,MAAMmtC,MAAMkzM,cAAgBxH,GAAYsI,qBAC5C,iBAAK33O,UAAU,2BAAf,WACE,gBAAKA,UAAU,2BAA2BoH,MAAO,CAAE0iG,SAAU,KAA7D,UACE,cACE9pG,UAAU,6BACVkoF,QAAS,SAAC14F,GACR,EAAKooP,WACN,OAGL,gBACE53O,UAAU,2BACVoH,MAAO,CAAE0iG,SAAU,IAAK+tI,UAAW,UAFrC,UAIE,SAAC,WAAD,CACEjsP,GAAI5E,KAAKwP,MAAMmtC,MAAMv7C,KACrB4X,UAAWk3O,EACXnG,SAAU,EACV3oP,KAAMpB,KAAKwP,MAAMmtC,MAAMv7C,KACvB4zH,YAAW,UAAEh1H,KAAKwP,MAAMmtC,MAAMq4E,mBAAnB,QAAkC,GAC7C/2H,KAAK,SACLtC,MAAOqE,KAAKwP,MAAMmtC,MAAMhhD,MACxBq9B,IAAKh5B,KAAKwP,MAAMmtC,MAAMszM,SACtBh3N,IAAKj5B,KAAKwP,MAAMmtC,MAAM+zM,SACtBhyK,UAAW,EACXgvC,SAAU,SAACllH,GACT,EAAKonP,cAAcpnP,GACf,EAAKgH,MAAMmtC,MAAM/C,cACnB,EAAKpqC,MAAMmtC,MAAM/C,aAAapxC,EACjC,OAGL,gBAAKwQ,UAAU,2BAA2BoH,MAAO,CAAE0iG,SAAU,KAA7D,UACE,cACE9pG,UAAU,4BACVkoF,QAAS,SAAC14F,GACR,EAAKsoP,WACN,SAMP9wP,KAAKwP,MAAMmtC,MAAMkzM,cAAgBxH,GAAY0I,UAC3C,SAAC,WAAD,CACEnsP,GAAI5E,KAAKwP,MAAMmtC,MAAMv7C,KACrB6oP,SAAUjqP,KAAKwP,MAAMy6O,SACrBjxO,UAAWk3O,EACXnG,SAAU,EACV3oP,KAAMpB,KAAKwP,MAAMmtC,MAAMv7C,KACvB4zH,YAAW,UAAEh1H,KAAKwP,MAAMmtC,MAAMq4E,mBAAnB,QAAkC,GAC7C/2H,KAAK,SACLtC,MAAOqE,KAAKwP,MAAMmtC,MAAMhhD,MACxBq9B,IAAKh5B,KAAKwP,MAAMmtC,MAAMszM,SACtBh3N,IAAKj5B,KAAKwP,MAAMmtC,MAAM+zM,SACtBhjI,SAAU,SAACllH,GACT,EAAKonP,cAAcpnP,GACf,EAAKgH,MAAMmtC,MAAM/C,cACnB,EAAKpqC,MAAMmtC,MAAM/C,aAAapxC,EACjC,OAOX,OAA6B,IAAzBxI,KAAKwP,MAAMwhP,WAEX,gCACG/4P,EAC2B,OAA3B+H,KAAKwP,MAAMyhP,cACV,SAAC,oBAAD,CAAuBhzP,KAAK,UAA5B,SACG+B,KAAKwP,MAAMyhP,kBAOpB,SAAC,SAAD,CAAYj4O,UAAU,kBAAtB,UACE,SAACu2O,GAAD,CAAS3G,QAAS5oP,KAAKwP,MAAMmtC,MAAMisM,QAAnC,UACE,UAAC,GAAD,CACE5vO,UAAU,aACVuyO,eAAa,EACbnrO,MAAO,CAAEyjG,QAAS,SAHpB,UAKG7jH,KAAKwP,MAAM+6B,OACV,UAAC,QAAD,YACE,cACEnqB,MAAO,CAAEm+I,aAAc,QACvBvlJ,UAAS,UAAKhZ,KAAKwP,MAAM+6B,KAAhB,mBAEVvqC,KAAKwP,MAAM0hP,YACRlxP,KAAKwP,MAAM0hP,YACXlxP,KAAKwP,MAAMmtC,MAAM5mC,UAIvB/V,KAAKwP,MAAM+6B,OACX,SAAC,QAAD,UACGvqC,KAAKwP,MAAM0hP,YACRlxP,KAAKwP,MAAM0hP,YACXlxP,KAAKwP,MAAMmtC,MAAM5mC,QAIxB9d,EAC2B,OAA3B+H,KAAKwP,MAAMyhP,cACV,SAAC,oBAAD,CACEhzP,KAAK,UACLmiB,MAAO,CAAEg+I,cAAe,IAF1B,SAIGp+J,KAAKwP,MAAMyhP,oBAOzB,KAtYH,GAAiC7oI,EAAAA,WCtB1B,IAAM+oI,GAAb,8BACI,WAAY3hP,GAAoB,IAAD,oBAC3B,cAAMA,IACD6H,MAAQ,CAAC+5O,UAAU,EAAOl6E,UAAU,GACzC,EAAKm6E,YAAc,EAAKA,YAAY7yP,KAAjB,MAHQ,CAI9B,CALL,qCAOI,WACI,IAAI8yP,GAAYtxP,KAAKqX,MAAM+5O,SAC3BpxP,KAAK6tE,SAAS,CAACujL,SAAUE,EAAUp6E,UAAU,IAC1Cl3K,KAAKwP,MAAM0xF,SACVlhG,KAAKwP,MAAM0xF,SAElB,GAbL,oBAeI,WAAU,IAAD,EACDqwJ,EADC,OAEDC,EAAU,UAAIxxP,KAAKwP,MAAMgiP,kBAAf,QAA6B,GACvCC,EAA2BzxP,KAAKwP,MAAMkiP,iBAAmB1xP,KAAKqX,MAAM6/J,SACpEy6E,GAAkB3xP,KAAKwP,MAAM4vJ,OAASoyF,EAAWhhP,SAAS,mBAAqBxQ,KAAKqX,MAAM+5O,SAoC9F,OAnCKK,GAAmBE,EACpBJ,GACI,gBAAKv4O,UAAU,iBAAiBkoF,QAASlhG,KAAKqxP,YAA9C,UACI,gBAAoBr4O,UAAW,kBAAoBhZ,KAAKwP,MAAMgiP,WAClDpxO,MAAO,CACHwxO,gBAAiB,QACjBC,iBAAkB,QAClBC,gBAAiB,YACjBnxO,WAAY,GAL5B,SAMgB3gB,KAAKwP,MAAMuiP,WAAW,GAAG1iP,SAN/B,aASlBkiP,GACI,gBAAKv4O,UAAU,iBAAiBkoF,QAASlhG,KAAKwP,MAAM0xF,QAASwvB,OAAQ1wH,KAAKqxP,YAA1E,SAEQrxP,KAAKwP,MAAMuiP,WAAW/+O,KAAI,SAACigG,EAA8Bn8D,GAAiB,IAAD,EACrE,OAAO,gBAAyB99B,UAAW,kBAAoB,EAAKxJ,MAAMgiP,WACtEpxO,MAAO,CACHwxO,gBAAiB3+I,EAAU++I,WAAa,QAAU,OAClDH,iBAAkB5+I,EAAUg/I,YAAc,QAAU,OACpDH,gBAAiB7+I,EAAU6+I,gBAC3B/lF,SAAQ,UAAE94D,EAAU84D,gBAAZ,QAAwB,IALjC,SAMC94D,EAAU5jG,SAND,QAAUynC,EAO9B,MAGbv6C,YAAW,WACC,EAAK8a,MAAM+5O,UACR,EAAK5hP,MAAMuiP,WAAW,GAAGz+H,OACxB,EAAK9jH,MAAMuiP,WAAW,GAAGz+H,OAGpC,GAAE,OAIP,gCACKtzH,KAAKwP,MAAMo5O,UACR,SAAC2G,GAAD,CAAS3G,QAAS5oP,KAAKwP,MAAMo5O,QAA7B,UACI,gBAAK5vO,UAAU,iBAAiBkoF,QAASlhG,KAAKwP,MAAM0xF,QAASwvB,OAAQ1wH,KAAKqxP,YAA1E,SACKE,OAGXvxP,KAAKwP,MAAMo5O,UACT,gBAAK5vO,UAAU,iBAAiBkoF,QAASlhG,KAAKwP,MAAM0xF,QAASwvB,OAAQ1wH,KAAKqxP,YAA1E,SACKE,MAIpB,KArEL,GAA0BnpI,EAAAA,WCqBb8pI,GAAb,8BAEE,WAAY1iP,GAAyB,IAAD,oBAClC,cAAMA,IACD8jH,MAAQ,EAAKA,MAAM90H,KAAX,MACb,EAAK6Y,MAAQ,CAAE86O,aAAa,EAAOC,aAAa,GAHd,CAInC,CANH,4CAQE,WACMpyP,KAAKqX,MAAM86O,cAAgBnyP,KAAKwP,MAAM2iP,aACxCnyP,KAAK6tE,SAAS,CAAEskL,YAAanyP,KAAKwP,MAAM2iP,aAC3C,GAXH,+BAaE,WACMnyP,KAAKqX,MAAM86O,cAAgBnyP,KAAKwP,MAAM2iP,aACxCnyP,KAAK6tE,SAAS,CAAEskL,YAAanyP,KAAKwP,MAAM2iP,aAC3C,GAhBH,0BAkBE,WACE,MAAO,YACR,GApBH,mBAsBE,SAAMx1M,GACJ,GAAIA,EAAMkzM,cAAgBxH,GAAY//M,MAAQqU,EAAMkzM,cAAgBxH,GAAYiI,UAAY3zM,EAAMkzM,cAAgBxH,GAAY5kP,QAAUk5C,EAAMkzM,cAAgBxH,GAAY0I,SACrKp0M,EAAMkzM,cAAgBxH,GAAY2H,SAAU,CAC/C,IAAIqC,EAASloP,SAASmoP,kBAAkB31M,EAAMv7C,MAC/B,OAAXixP,GAAmBA,EAAO,IAC5BA,EAAO,GAAG/+H,OAEb,CACF,GA9BH,uBAgCE,WACE,IAAIi/H,GAAU,EACVF,EAASloP,SAASmoP,kBAAkBtyP,KAAKwP,MAAMmtC,MAAMv7C,MAIzD,OAHe,OAAXixP,GAAmBA,EAAO,IAAMA,EAAO,GAAGztP,KAAOuF,SAAS+4C,cAAet+C,KAC3E2tP,GAAU,GAELA,CACR,GAvCH,oBAyCE,WAAU,IAAD,eACP,GAAIvyP,KAAKqX,MAAM86O,cAAgBnyP,KAAKwP,MAAMmtC,MAAMhhD,OAASqE,KAAKwP,MAAMmtC,MAAM61M,YAAcxyP,KAAKyyP,YAC3F,MAAO,GAGT,IAAIV,EAAkC,GACtCA,EAAWlxP,KAAK,CACdmxP,YAAY,EACZC,YAAqE,MAAvD,UAACjyP,KAAKwP,MAAM0hP,mBAAZ,QAA2BlxP,KAAKwP,MAAMmtC,MAAM5mC,OAC1Du9G,MAAO,WAAO,EAAKA,MAAM,EAAK9jH,MAAMmtC,MAAQ,EAC5CttC,SAAS,SAACkgP,GAAD,CAAS3G,QAAS5oP,KAAKwP,MAAMmtC,MAAMisM,QAAnC,UAA4C,gBAAK1nJ,QAAS,kBAAM,EAAKoyB,MAAM,EAAK9jH,MAAMmtC,MAA5B,EAAd,mBAAmD38C,KAAKwP,MAAM0hP,mBAA9D,QAA6ElxP,KAAKwP,MAAMmtC,MAAM5mC,YAGrJ,IAAInF,EAAI5Q,KAAKwP,MAAMmtC,MACfrU,EAAO13B,EAAEi/O,cAAgBxH,GAAYv1P,KAAO,GAAK8d,EAAEjV,MACvD,GAAIiV,EAAEi/O,cAAgBxH,GAAYoI,OAAQ,CAAC,IAAD,EACpCl+O,EAAI,UAAG3B,EAAE++O,oBAAL,aAAG,EAAgBz5N,MAAK,SAAA+S,GAAO,OAAOA,EAAEttC,QAAUiV,EAAEjV,KAAO,IAC/D4W,IACF+1B,EAAO/1B,EAAK+1B,KACf,CAqBD,OAnBAypN,EAAWlxP,KAAK,CACdmxP,YAAY,EACZC,aAAa,EACb5iP,SAAS,iBAAKqhH,OAAQ,WAAO,EAAK7iD,SAAS,CAACukL,aAAc,EAAK/6O,MAAM+6O,aAAc,EAAEp5O,UAAWhZ,KAAKwP,MAAMmtC,MAAMkzM,cAAgBxH,GAAYv1P,KAAO,sBAAwB,GAAnK,WACP,SAAC,GAAD,CACEm3P,UAAkC,IAAxBjqP,KAAKwP,MAAMkjP,SACrB1B,WAAW,EACXr0M,MAAO38C,KAAKwP,MAAMmtC,MAClBosM,UAAW/oP,KAAKwP,MAAMu5O,UACtBkI,YAAajxP,KAAKwP,MAAMyhP,eAE1B,iBAAM7wO,MAAO,CAAE25G,WAAY,SAAUr/G,OAAQ,OAA7C,SAAuD4tB,IACtDtoC,KAAKwP,MAAMmjP,4BACR,iBAAMvyO,MAAO,CAAE25G,WAAY,SAAUr/G,OAAQ,OAA7C,SAAuD1a,KAAKwP,MAAMmtC,MAAMq4E,oBAO9E,SAAC,GAAD,CAAM08H,gBAAe,UAAE1xP,KAAKwP,MAAMkiP,uBAAb,QAAiC9gP,EAAEi/O,cAAcxH,GAAYv1P,KAAsBi/P,WAAYA,EAAY3yF,OAAQxuJ,EAAEjV,MAAO61P,WAAU,UAAOxxP,KAAKwP,MAAMmtC,MAAM61M,UAAaxyP,KAAKwP,MAAMmtC,MAAMhhD,MAAyB,GAAjB,eAA9D,sBAAuFqE,KAAKwP,MAAM0gP,oBAAlG,QAAkH,KAEhR,KApFH,GAA+B9nI,EAAAA,yECvBzBwqI,GAAuBhwI,EAAAA,YAAiB,WAS3CjvG,GAAQ,IARTs7J,EAQS,EARTA,SACAiP,EAOS,EAPTA,QACAhgK,EAMS,EANTA,UACAxK,EAKS,EALTA,KAKS,IAHTw7J,GAAI9mD,OAGK,MAHO,MAGP,EAFTpvG,EAES,EAFTA,UACGxJ,EACM,QACTy/J,EAAWT,EAAmBS,EAAU,WACxC,IAAM4jF,EAAkB,GAAH,OAAM5jF,EAAN,YAAkB/wJ,GACvC,OAAoBmxJ,EAAAA,EAAAA,KAAKjnD,EAAD,EAAC,GACvBz0G,IAAKA,GACFnE,GAFmB,IAGtBwJ,UAAW7I,IAAW6I,EAAW65O,EAAiBn/O,GAAQ,GAAJ,OAAOm/O,EAAP,YAA0Bn/O,GAAQwqK,GAAW,QAAJ,OAAYA,MAE9G,IACD00E,GAAQvgJ,YAAc,UACtB,UCvBe,SAASygJ,GAAkBn3P,GACtC,OAAG/H,MAAM+H,GACE,UACJ,kBAAOA,QAAP,IAAOA,OAAP,EAAOA,EAAO2yB,eAAe,QAAS,CAAEynG,aAAa,IAC/D,CACM,SAASg9H,GAAiBp3P,GAC7B,OAAO2qB,WAAW3qB,EAAMuN,QAAQ,UAAM,IAAIA,QAAQ,IAAI,IACzD,CCHM,IAAM8pP,GAAb,uCACI72M,OAAkB,EADtB,0CAGI,SAAgB/6C,EAAc21E,GAC1B,IAAInmE,EAAI5Q,KAAKizP,eAAe7xP,GACxBwP,IACAA,EAAE++O,aAAe54K,EAExB,GARL,kCAUI,SAAqB31E,EAAc2U,GAA2E,IAA5D2oE,EAA2D,uDAAvC,IAAK8zK,EAAkC,wDACrG5hP,EAAI5Q,KAAKkzP,SAAS9xP,EAAM2U,EAAOqyO,GAASvhO,OAAQwhO,GAAY5kP,OAAQ+uP,GAExE,OADA5hP,EAAE8tE,UAAYA,EACP9tE,CACV,GAdL,0BAgBI,SAAaxP,EAAc2U,GAA2E,IAA5D2oE,EAA2D,uDAAvC,IAAK8zK,EAAkC,wDAC7F5hP,EAAI5Q,KAAKkzP,SAAS9xP,EAAM2U,EAAOqyO,GAASvhO,OAAQwhO,GAAY//M,KAAMkqN,GAEtE,OADA5hP,EAAE8tE,UAAYA,EACP9tE,CACV,GApBL,6BAsBI,SAAgBxP,EAAc2U,GAAkD,IAAnCy8O,EAAkC,wDACvE5hP,EAAI5Q,KAAKkzP,SAAS9xP,EAAM2U,EAAOqyO,GAASpmP,QAASqmP,GAAYkI,SAAUiC,GAE3E,OADA5hP,EAAElM,QAAU,CAAC,CAAE4jC,KAAM,KAAM3sC,MAAO,GAAK,CAAE2sC,KAAM,MAAO3sC,MAAO,IACtDiV,CACV,GA1BL,+BA4BI,SAAkBxP,EAAc2U,GAAkD,IAAnCy8O,EAAkC,wDACzE5hP,EAAI5Q,KAAKkzP,SAAS9xP,EAAM2U,EAAOqyO,GAASvhO,OAAQwhO,GAAYiI,SAAUkC,GAE1E,OADA5hP,EAAE8tE,UAAY,IACP9tE,CACV,GAhCL,4BAkCI,SAAexP,EAAc2U,GAAkD,IAAnCy8O,EAAkC,wDACtE5hP,EAAI5Q,KAAKkzP,SAAS9xP,EAAM2U,EAAOqyO,GAAS+K,gBAAiB9K,GAAYoI,OAAQ+B,GAEjF,OADA5hP,EAAEqH,IAAM,GACDrH,CACV,GAtCL,4BAwCI,SAAexP,EAAc2U,EAAek6O,EAAkBS,GAAqD,IAAnC8B,EAAkC,wDAC1G5hP,EAAI5Q,KAAKkzP,SAAS9xP,EAAM2U,EAAOqyO,GAAS3kP,OAAQ4kP,GAAY5kP,OAAQ+uP,GAGxE,OAFA5hP,EAAEq/O,SAAWA,EACbr/O,EAAE8/O,SAAWA,EACN9/O,CACV,GA7CL,wCA+CI,SAA2BxP,EAAc2U,EAAek6O,EAAkBS,GAAqD,IAAnC8B,EAAkC,wDACtH5hP,EAAI5Q,KAAKkzP,SAAS9xP,EAAM2U,EAAOqyO,GAAS3kP,OAAQ4kP,GAAYsI,mBAAoB6B,GAGpF,OAFA5hP,EAAEq/O,SAAWA,EACbr/O,EAAE8/O,SAAWA,EACN9/O,CACV,GApDL,6BAsDI,SAAgBxP,EAAc2U,EAAek6O,EAAkBS,GAAqD,IAAnC8B,EAAkC,wDAC3G5hP,EAAI5Q,KAAKkzP,SAAS9xP,EAAM2U,EAAOqyO,GAAS3kP,OAAQ4kP,GAAY0I,QAASyB,GAGzE,OAFA5hP,EAAEq/O,SAAWA,EACbr/O,EAAE8/O,SAAWA,EACN9/O,CACV,GA3DL,8BA6DI,SAAiBxP,EAAc2U,EAAek6O,EAAkBS,GAAqD,IAAnC8B,EAAkC,wDAC5G5hP,EAAI5Q,KAAKkzP,SAAS9xP,EAAM2U,EAAOqyO,GAAS3kP,OAAQ4kP,GAAY2H,SAAUwC,GAG1E,OAFA5hP,EAAEq/O,SAAWA,EACbr/O,EAAE8/O,SAAWA,EACN9/O,CACV,GAlEL,8BAoEI,SAAiBxP,EAAc2U,EAAerR,GAAmD,IAAnC8tP,EAAkC,wDACxF5hP,EAAI5Q,KAAKkzP,SAAS9xP,EAAM2U,EAAOqyO,GAAS3kP,OAAQ4kP,GAAYkI,SAAUiC,GAE1E,OADA5hP,EAAElM,QAAUA,EACLkM,CACV,GAxEL,0BA0EI,SAAaxP,EAAc2U,GAA8G,IAA/Fk6O,EAA8F,uDAAtE,KAAMS,EAAgE,uDAAxC,KAAM8B,EAAkC,wDAChI5hP,EAAI5Q,KAAKkzP,SAAS9xP,EAAM2U,EAAOqyO,GAASt1P,KAAMu1P,GAAYv1P,KAAM0/P,GAOpE,OALI5hP,EAAEq/O,SADFA,GAGa,IAAI98P,KAAK,KAAM,EAAG,GAE/Bu9P,IAAU9/O,EAAE8/O,SAAWA,GACpB9/O,CACV,GAnFL,sBAqFI,SAASxP,EAAc2U,EAAey6O,EAAoBX,GAA6D,IAAnC2C,EAAkC,wDAC9G5hP,EAAI,CACJxP,KAAMA,EACN2U,MAAOA,EACPy6O,SAAUA,EACVX,YAAaA,EACbjH,QAAS,KACTmH,cAAe,GACfp0P,MAAO,GACPy3P,QAAQ,EACR/0C,SAAS,EACTpmM,IAAK,KACL03O,aAAc,KACdjrP,QAAS,KACTorP,UAAW,KACX0C,SAAUA,GAGd,OADAxyP,KAAKm8C,OAAOt7C,KAAK+P,GACVA,CACV,GAxGL,sBA0GI,SAASjV,GACL,OAAc,OAAVA,QAA4B0B,IAAV1B,GAAiC,KAAVA,IAGb,KAA5BA,EAAMqL,WAAWuB,SAGjB3U,MAAM0qE,OAAO3iE,IAIpB,GArHL,yBAuHI,SAAY03P,EAAqBC,EAAiBz6C,GAC9C,IAAI06C,EAAiB,CAAC,EACtBA,EAAUF,GAAeC,EAEzB,IADA,IAAIE,EAAqB,GAChBnzP,EAAI,EAAGA,EAAIL,KAAKm8C,OAAO9nD,OAAQgM,IAAK,CACzC,IAAIuQ,EAAI5Q,KAAKm8C,OAAO97C,GAChBuQ,EAAEytM,UACFm1C,EAAY3yP,KAAK+P,GACjB2iP,EAAU3iP,EAAExP,MAAQpB,KAAKyzP,uBAAuB7iP,EAAGioM,GAE1D,CAED,OADA06C,EAAS,cAAoBC,EAAYxgP,KAAI,SAAAT,GAAU,OAAOA,EAAKnR,IAAO,IAAEoI,KAAK,KAC1E+pP,CACV,GApIL,2BAsII,SAAc3iP,EAAU/W,GACpB,OAAI+W,EAAE4/O,WAAapI,GAASpmP,SACA,IAAjBnI,EAAK+W,EAAExP,MAAiB,IAAM,IAEhCwP,EAAE4/O,WAAapI,GAASt1P,KACtB+G,EAAK+W,EAAExP,MAAQ,IAAIjO,KAAK0G,EAAK+W,EAAExP,OAAS,KAE1CwP,EAAEi/O,cAAgBxH,GAAY2H,SAC5BhwP,KAAKiK,SAASpQ,EAAK+W,EAAExP,OAAS0xP,GAAkBn/P,SAASkG,EAAK+W,EAAExP,QAAU,GAE5EwP,EAAE4/O,WAAapI,GAAS3kP,OACtBzD,KAAKiK,SAASpQ,EAAK+W,EAAExP,OAASzN,SAASkG,EAAK+W,EAAExP,OAAS,GAE3DvH,EAAK+W,EAAExP,MAAQvH,EAAK+W,EAAExP,WAAQ/D,CACxC,GApJL,oCAsJI,SAAuBuT,EAAU/W,GAC7B,OAAI+W,EAAE4/O,WAAapI,GAASpmP,QACjBnI,EAAK+W,EAAExP,MAETwP,EAAE4/O,WAAapI,GAASt1P,KACtB+G,EAAK+W,EAAExP,MAAQ,IAAIjO,KAAK0G,EAAK+W,EAAExP,OAAS,KAE1CwP,EAAEi/O,cAAgBxH,GAAY2H,SAC5BhwP,KAAKiK,SAAL,UAAcpQ,EAAK+W,EAAExP,aAArB,aAAc,EAAc8H,QAAQ,IAAK,KAAOvV,SAAQ,UAACkG,EAAK+W,EAAExP,aAAR,aAAC,EAAc8H,QAAQ,IAAK,KAAO,KAE7F0H,EAAE4/O,WAAapI,GAAS3kP,OACtBzD,KAAKiK,SAASpQ,EAAK+W,EAAExP,OAASzN,SAASkG,EAAK+W,EAAExP,OAAS,KAE3DvH,EAAK+W,EAAExP,MAAQvH,EAAK+W,EAAExP,WAAQ/D,EANa,IAAD,GAOpD,GApKL,8BAsKI,SAAiB+D,EAAczF,GAC3B,IAAIiV,EAAI5Q,KAAKizP,eAAe7xP,GAC5BwP,EAAEjV,MAAQA,EACViV,EAAEytM,QAAUztM,EAAEjV,QAAUiV,EAAEm/O,cACtBn/O,EAAEi/O,cAAgBxH,GAAYoI,QAAoB,OAAV90P,IACxCiV,EAAEjV,MAAQ,IAEjB,GA7KL,yBA+KI,SAAY+3P,EAAYtyP,EAAczF,GAClC,IAAIiV,EAAI5Q,KAAKizP,eAAe7xP,GAExBwP,EAAEi/O,cAAgBxH,GAAY2H,UAAqB,MAATr0P,EAC1C+3P,EAAMtyP,GAAQzF,EAAMuN,QAAQ,SAAK,IAAIyqP,WAAW,IAAK,IAAIA,WAAW,IAAK,IAClE/iP,EAAE4/O,WAAapI,GAAS3kP,OAC3BzD,KAAKiK,SAAStO,GACd+3P,EAAMtyP,GAAQzN,SAASgI,GAEvB+3P,EAAMtyP,GAAQ,KAEbwP,EAAE4/O,WAAapI,GAASpmP,SAAoB,MAATrG,EACxC+3P,EAAMtyP,GAAkB,MAAVzF,EAETiV,EAAE4/O,WAAapI,GAASt1P,MAAiB,MAAT6I,EACrC+3P,EAAMtyP,GAAQ,IAAIjO,KAAKwI,GAEvB+3P,EAAMtyP,GAAQzF,CACrB,GAjML,sBAmMI,SAAgB9B,EAAWskN,EAAiBi1C,EAAwBx5M,EAAmBg6M,GAAyB,IAAD,OAC3G5zP,KAAKm8C,OAAO5+C,SAAQ,SAAAqT,GAChBA,EAAEm/O,cAAgB,EAAK8D,cAAcjjP,EAAG/W,GACxC+W,EAAEjV,MAAQ,EAAKk4P,cAAcjjP,EAAG/W,GAChC+W,EAAEg4O,QAAU4G,GAAWrxC,EAAUvtM,EAAExP,MACnCwP,EAAEwiP,OAASA,EACPxiP,EAAE4/O,WAAapI,GAASt1P,MACxB8d,EAAEgpC,aAAeg6M,EACjBhjP,EAAEk/O,UAAY,EAAK+D,cAAcjjP,EAAG/W,IAGpC+W,EAAEgpC,aAAeA,CACxB,GACJ,GAhNL,4BAkNI,SAAsBx4C,GAClB,IAAIwP,EAAI5Q,KAAKm8C,OAAOjmB,MAAK,SAACymB,GAAY,OAAOA,EAAMv7C,OAASA,CAAM,IAClE,YAAU/D,IAANuT,EACO5Q,KAAK8zP,aAAa1yP,EAAlB,iBAAkCA,EAAlC,gBACJwP,CACV,GAvNL,iCAyNI,SAA2BA,EAAW/W,GAClC,IAAI8iD,EAAQ38C,KAAKizP,eAAeriP,GAChC,OAAO5Q,KAAK6zP,cAAcl3M,EAAO9iD,EACpC,KA5NL,KCFak6P,GAAb,8BACI,aAAe,IAAD,oBACV,gBACKD,aAAa,iBAAkB,aAAc,IAClD,EAAKA,aAAa,gBAAiB,YAAa,IAChD,EAAKA,aAAa,oBAAqB,SAAU,KAJvC,CAKb,CANL,aAAqDd,ICgBxCgB,GAAb,8BAEI,WAAYxkP,GAAa,IAAD,aACpB,cAAMA,IA0BVykP,cAAgB,SAACl3L,GAEb,MADmB,mDACDtyD,KAAKsyD,EAC1B,EA5BG,EAAKjI,KAAO,EAAKA,KAAKt2D,KAAV,MACZ,EAAKo7C,aAAe,EAAKA,aAAap7C,KAAlB,MACpB,IAAI29C,EAAS,IAAI43M,GACjB,IAAK,IAAInjP,KAAKurC,EAAOA,OACjBA,EAAOA,OAAOvrC,GAAGgpC,aAAe,EAAKA,aANrB,OASpB,EAAKviC,MAAQ,CACT68O,QAAQ,EACRhxP,MAAO,GACPi5C,OAAQA,GAZQ,CAcvB,CAhBL,2CAkBI,WACkBn8C,KAAKisK,YACtB,GApBL,yBAsBI,WAAgB,IAAD,MACPi0C,EAAS,UAAGlgN,KAAKqX,MAAM8kC,OAAO82M,eAAe,kBAAkBt3P,aAAtD,QAA+D,GACxEw4P,EAAQ,UAAGn0P,KAAKqX,MAAM8kC,OAAO82M,eAAe,iBAAiBt3P,aAArD,QAA8D,GACtEohE,EAAK,UAAG/8D,KAAKqX,MAAM8kC,OAAO82M,eAAe,qBAAqBt3P,aAAzD,QAAkE,GAC3E,MAAqB,KAAdukN,GAAiC,KAAbi0C,GAA6B,KAAVp3L,CACjD,GA3BL,kBAkCI,WAAQ,IAAD,WACCj+D,EAAUkB,KAAKisK,aAEnB,GAAKjsK,KAAKo0P,cAAV,CAKA,IACIr3L,EADa/8D,KAAKqX,MAAM8kC,OAAO82M,eAAe,qBAC1Bt3P,MAAiB4M,OACzC,GAAKvI,KAAKi0P,cAAcl3L,GAKxB,GAAIA,EAAMx0D,OAAO9K,iBAAb,UAA+BqB,EAAQm/M,eAAvC,aAA+B,EAAiB2B,aAAar3M,OAAO9K,eAAxE,CAKAuC,KAAK6tE,SAAS,CAACqmL,QAAQ,IACvB,IAAIh0C,EAAYlgN,KAAKqX,MAAM8kC,OAAO82M,eAAe,kBAC7CkB,EAAWn0P,KAAKqX,MAAM8kC,OAAO82M,eAAe,iBAC5CoB,EAAiB,CAACC,WAAU,UAAEx1P,EAAQo/M,gBAAV,aAAE,EAAkBo2C,WAAYp0C,UAAWA,EAAUvkN,MAAOw4P,SAAUA,EAASx4P,MAAOikN,aAAc7iJ,GACpIp+D,KAAAA,KAAW,oCAAqC01P,GAC3Cl0P,MAAK,SAAC5E,GAEHoQ,OAAOC,SAAS2oP,SAChB,EAAK1mL,SAAS,CAACqmL,QAAQ,GAC1B,GAXJ,MAFGl0P,KAAK6tE,SAAS,CAAC3qE,MAAO,2EALtBlD,KAAK6tE,SAAS,CAAC3qE,MAAO,kEALzB,MAFGlD,KAAK6tE,SAAS,CAAC3qE,MAAO,iEA2B7B,GAjEL,0BAmEI,SAAa2b,GACT,IAAMjZ,EAASiZ,EAAMjZ,OACjBjK,EAAQiK,EAAOjK,MACbyF,EAAOwE,EAAOxE,MAAQwE,EAAO8S,aAAa,QAEhD,GAAKtX,EAAL,CAGA,IAAIwP,EAAI5Q,KAAKqX,MAAM8kC,OAAO82M,eAAe7xP,GAErCwP,EAAE4/O,WAAapI,GAASvhO,QAAUjW,EAAE8tE,WACtB,OAAV/iF,GAAkBA,EAAMtH,OAASuc,EAAE8tE,UACnC81K,MAAM,uBAAD,OAAwB5jP,EAAEmF,MAA1B,gBAAuCnF,EAAE8tE,aAItD9tE,EAAEjV,MAAQA,EAEVqE,KAAK6tE,SAAS,CAAE1xB,OAAQn8C,KAAKqX,MAAM8kC,SAZzB,CAab,GAtFL,oBAwFI,WACkBn8C,KAAKisK,aAEnB,OACI,+BACI,SAAC,GAAD,CAAWjzJ,UAAU,YAArB,UACI,iCACI,UAAC,GAAD,YACI,SAAC,GAAD,WACI,eAAIA,UAAU,SAAd,uCAEJ,SAAC,GAAD,WACI,UAAC,GAAD,CAAOgkM,IAAK,EAAGt5F,UAAU,aAAa1qG,UAAU,aAAhD,WACI,SAACk5O,GAAD,CAAWhC,aAAa,kBAAkBiC,aAAa,EAAOx1M,MAAO38C,KAAKqX,MAAM8kC,OAAO82M,eAAe,qBACtG,SAACf,GAAD,CAAWhC,aAAa,kBAAkBiC,aAAa,EAAOx1M,MAAO38C,KAAKqX,MAAM8kC,OAAO82M,eAAe,oBACtG,SAACf,GAAD,CAAWhC,aAAa,6BAA6BiC,aAAa,EAAOx1M,MAAO38C,KAAKqX,MAAM8kC,OAAO82M,eAAe,4BAGnG,KAArBjzP,KAAKqX,MAAMnU,QACZ,SAAC,GAAD,WACI,cAAG8V,UAAU,QAAb,SAAsBhZ,KAAKqX,MAAMnU,cAIzC,SAAC,GAAD,WACI,UAAC,GAAD,CAAK8V,UAAU,4BAAf,WACI,SAAC,GAAD,CAAK6jE,GAAI,MACT,UAAC,GAAD,WACC78E,KAAKqX,MAAM68O,SACR,mBAAQj2P,KAAK,SAAS+a,UAAU,oBAAhC,UAAoD,SAAC,GAAD,CAAetF,KAAK,KAAKwK,UAAU,SAAS64J,KAAK,cAEvG/2K,KAAKqX,MAAM68O,SACT,mBAAQj2P,KAAK,SAAS+a,UAAU,oBAAoBoH,MAAO,CAACM,WAAW,GAAI09I,cAAc,IAAKl9D,QAASlhG,KAAK80D,KAA5G,oCAS/B,KAjIL,GAAoCirJ,ICFvB00C,GAAb,8BAEI,WAAYjlP,GAAa,6BACfA,EACT,CAJL,gCAMI,WAAU,IAAD,EACD1Q,EAAUkB,KAAKisK,aAEnB,OACI,SAAC,GAAD,CAAOv4J,KAAK,KAAK8yO,WAAW,UAAU9qE,KAAM17K,KAAKwP,MAAMksK,KAAM6qE,UAAQ,EAArE,UACI,gBAAKvtO,UAAU,gBAAgBoH,MAAO,CAAC0xO,gBAAgB,oBAAqB4C,YAAY,GAAxF,UACA,SAAC,QAAD,CAAYt0O,MAAO,CAACkxE,WAAW,eAA/B,UACI,UAAC,GAAD,CAAWt4E,UAAU,6BAArB,WACI,iBAAKA,UAAU,kBAAf,WACI,gBAAIA,UAAU,OAAd,8CAA6Cla,EAAQm/M,eAArD,aAA6C,EAAiBiC,UAA9D,QACA,cAAGlnM,UAAU,OAAb,gKACA,sBAEJ,gBAAKA,UAAU,QACf,SAACg7O,GAAD,CAAgBW,SAAU30P,KAAKwP,MAAMmlP,mBAMxD,KA1BL,GAA0C50C,ICR7B60C,GAAb,8BAEI,WAAYplP,GAAa,6BACfA,EACT,CAJL,gCAMI,WACI,IAAI1Q,EAAUkB,KAAKisK,aAEnB,OACI,iBAAKjzJ,UAAU,kDAAf,WACI,eAAIA,UAAU,OAAd,6CACCla,EAAQo/M,SAAUjgN,OAAS69M,GAAa+4C,oBACnC,kHACA,yFAEN,eAAG77O,UAAU,OAAb,kEAAmE,qCAAnE,yCACA,SAACq+L,GAAD,CAAM1tK,GAAG,qBAAqB3wB,UAAU,SAAxC,UAAiD,mBAAQA,UAAU,gDAAlB,+BAG5D,KApBL,GAA0C+mM,ICyB7B+0C,GAAb,gFACE,SACE52C,GAEA,IAAI3iN,EAAiC,CACnCw5P,gBAAgB,EAChBC,mBAAmB,EACnBC,wBAAyB,GACzBC,wBAAyB,IAGvBC,EAAaj3C,EAAS+B,iBAW1B,GAV6B,OAAzBk1C,EAAWC,WACb75P,EAAS05P,wBAAwBp0P,KAAK,iBAEd,OAAtBs0P,EAAWE,QACb95P,EAAS05P,wBAAwBp0P,KAAK,UAEjB,OAAnBs0P,EAAWG,KACb/5P,EAAS05P,wBAAwBp0P,KAAK,UAGN,WAAtB,OAARq9M,QAAQ,IAARA,OAAA,EAAAA,EAAUq3C,iBACZ,GAAI,OAACr3C,QAAD,IAACA,GAAAA,EAAU8B,mBAER,CACL,IAAIw1C,EAAat3C,EAAS8B,mBACG,OAAzBw1C,EAAWJ,WACb75P,EAAS25P,wBAAwBr0P,KAAK,iBAEd,OAAtB20P,EAAWH,QACb95P,EAAS25P,wBAAwBr0P,KAAK,UAEjB,OAAnB20P,EAAWF,KACb/5P,EAAS25P,wBAAwBr0P,KAAK,SAEzC,MAZCtF,EAASy5P,mBAAoB,EAoBjC,OALAz5P,EAASw5P,eACPx5P,EAASy5P,mBACTz5P,EAAS05P,wBAAwB5gQ,OAC/BkH,EAAS25P,wBAAwB7gQ,OACjC,EACGkH,CACR,KA7CH,KAgDak6P,GAAb,8BAIE,WAAYjmP,GAAoC,IAAD,oBAC7C,cAAMA,IACDkmP,cAAgB,EAAKA,cAAcl3P,KAAnB,MACrB,EAAK6Y,MAAQ,CACXs+O,cAAc,EACd7zN,QAAQ,EACR8zN,aAAa,EACbb,gBAAgB,GAP2B,CAS9C,CAbH,uCAeE,WAAyB,IAAD,OAClBc,EAAyBf,GAAmBgB,gBAC9C91P,KAAKwP,MAAM0uM,UAET23C,EAAuBd,eACzB/0P,KAAK6tE,SAAS,CACZknL,gBAAgB,EAChBc,uBAAwBA,KAK5B71P,KAAK6tE,SAAS,CAAE/rC,QAAQ,IAExBnjC,KAAAA,KACQ,iCAAkC,KAAM,CAC5C3C,OAAQ,CAAEs4P,WAAYt0P,KAAKwP,MAAM0uM,SAASo2C,cAE3Cn0P,MAAK,SAAC5E,GACL,EAAKiU,MAAM0uM,SAAS63C,mBAAoB,EACxC,EAAKloL,SAAS,CAAE8nL,cAAc,EAAM7zN,QAAQ,GAC7C,IACJ,GArCH,oBAuCE,WAAU,IAAD,mBACP,OAAI9hC,KAAKqX,MAAMyqB,QAEX,mBAAQ9oB,UAAU,qBAAlB,UACE,SAAC,GAAD,CAAetF,KAAK,KAAKwK,UAAU,SAAS64J,KAAK,aAInD/2K,KAAKqX,MAAMs+O,aACN31P,KAAKwP,MAAMwmP,MAChB,gBAAKh9O,UAAU,6BAAf,mBAEA,gBAAKA,UAAU,YAAf,8EAMF,iCACIhZ,KAAKwP,MAAMwmP,OACX,gBAAKh9O,UAAU,UAAf,UACE,iBAAMA,UAAU,yBAAhB,+IAMHhZ,KAAKwP,MAAMymP,cACVj2P,KAAKwP,MAAMwmP,MACT,mBACEh9O,UAAU,wBACVkoF,QAAS,SAAC14F,GACR,EAAKqlE,SAAS,CAAE+nL,aAAa,GAC9B,EAJH,qBASA,mBACEjmO,UAAQ,EACR3W,UAAU,oBACVkoF,QAAS,SAAC14F,GACR,EAAKktP,eACN,EALH,6BAUA11P,KAAKwP,MAAMwmP,MACb,mBACEh9O,UAAU,wBACVkoF,QAAS,SAAC14F,GACR,EAAKktP,eACN,EAJH,oBASA,mBACE18O,UAAU,yBACVkoF,QAAS,SAAC14F,GACR,EAAKktP,eACN,EAJH,0BASF,UAAC,GAAD,CACEnP,UAAQ,EACR7yO,KAAK,KACL8yO,WAAW,UACX9qE,KAAM17K,KAAKqX,MAAMu+O,YACjBr5E,OAAQ,WACN,EAAK1uG,SAAS,CAAE+nL,aAAa,GAC9B,EAPH,WASE,SAAC,UAAD,CAAcr3E,aAAW,KACzB,UAAC,QAAD,YACE,iBAAKvlK,UAAU,6BAAf,WACE,eAAIA,UAAU,SAAd,yBACA,cAAGA,UAAU,GAAb,oKAMF,SAAC,GAAD,CACE0qG,UAAU,aACVs5F,IAAK,EACLhkM,UAAU,6BAHZ,UAKE,mBACEA,UAAU,uBACVkoF,QAAS,WACP,EAAKrzB,SAAS,CAAE+nL,aAAa,GAC9B,EAJH,yBAUJ,SAAC,UAAD,QAEF,UAAC,GAAD,CACErP,UAAQ,EACR7yO,KAAK,KACL8yO,WAAW,UACX9qE,KAAM17K,KAAKqX,MAAM09O,eACjBx4E,OAAQ,WACN,EAAK1uG,SAAS,CAAEknL,gBAAgB,GACjC,EAPH,WASE,SAAC,UAAD,CAAcx2E,aAAW,KACzB,UAAC,QAAD,YACE,iBAAKvlK,UAAU,6BAAf,WACE,eAAIA,UAAU,SAAd,mCACA,cAAGA,UAAU,GAAb,iFAIF,SAAC,GAAD,WACE,SAAC,GAAD,CAAKA,UAAU,iBAAf,UACE,gCACGhZ,KAAKqX,MAAMw+O,wBACV71P,KAAKqX,MAAMw+O,uBAAuBZ,wBAC/B5gQ,OAAS,IACV,SAAC,GAAD,CAAKwoF,GAAI,EAAT,UACE,iBAAK7jE,UAAU,6BAAf,WACE,iBAAKA,UAAU,0BAAf,WACE,oCACGhZ,KAAKwP,MAAM0uM,gBADd,aACG,EAAqB+B,iBAAiBC,UAAW,OAFtD,UAIGlgN,KAAKqX,MAAMw+O,8BAJd,aAIG,EAAmCZ,wBAAwBjiP,KAC1D,SAACT,EAAcukC,GACb,OACE,0BACE,cAAG99B,UAAU,qCAAwC,IACpDzG,IAFH,uBAAwBukC,GAK3B,QAGL,SAACugK,GAAD,CACE1tK,GAAI,aACJ3wB,UAAU,0DACVkoF,QAAS,SAAC14F,GACR,EAAKqlE,SAAS,CAAEknL,gBAAgB,GACjC,EALH,gCAYP/0P,KAAKqX,MAAMw+O,yBACT71P,KAAKqX,MAAMw+O,uBAAuBb,mBACjCh1P,KAAKqX,MAAMw+O,uBAAuBX,wBAC/B7gQ,OAAS,KACZ,SAAC,GAAD,CAAKwoF,GAAI,EAAT,UACE,iBAAK7jE,UAAU,6BAAf,WACE,iBAAKA,UAAU,0BAAf,WACE,8CACGhZ,KAAKwP,MAAM0uM,gBADd,iBACG,EAAqB8B,0BADxB,aACG,EACGE,iBAFN,QAEmB,oBAAqB,OAH1C,UAKGlgN,KAAKqX,MAAMw+O,8BALd,aAKG,EAAmCX,wBAAwBliP,KAC1D,SAACT,EAAcukC,GACb,OACE,0BACE,cAAG99B,UAAU,qCAAwC,IACpDzG,IAFH,uBAAwBukC,GAK3B,QAGL,SAACugK,GAAD,CACE1tK,GAAI,aACJ3wB,UAAU,0DACVkoF,QAAS,SAAC14F,GACR,EAAKqlE,SAAS,CAAEknL,gBAAgB,GACjC,EALH,2CAgBhB,SAAC,UAAD,SAIP,KA5OH,GAA0CnyI,EAAAA,WCvD7BszI,GAAb,8BAIE,WAAY1mP,GAAa,IAAD,oBACtB,cAAMA,IACDkmP,cAAgB,EAAKA,cAAcl3P,KAAnB,MACrB,EAAK6Y,MAAQ,CAAE8+O,QAAQ,EAAOC,aAAa,EAAOrB,gBAAgB,GAH5C,CAIvB,CARH,uCAUE,WAAiB,IAAD,SACRj2P,EAAUkB,KAAKisK,aACjB4pF,EAAyBf,GAAmBgB,gBAC9Ch3P,EAAQo/M,UAEN23C,EAAuBd,eACzB/0P,KAAK6tE,SAAS,CACZknL,gBAAgB,EAChBc,uBAAwBA,KAK5B71P,KAAK6tE,SAAS,CAAEuoL,aAAa,IAE7B,UAAIt3P,EAAQo/M,gBAAZ,OAAI,EAAkB63C,mBACpB/1P,KAAK6tE,SAAS,CAAEuoL,aAAa,EAAOD,QAAQ,IACxCn2P,KAAKwP,MAAM6mP,QAAQr2P,KAAKwP,MAAM6mP,UAElC13P,KAAAA,KACQ,iCAAkC,KAAM,CAC5C3C,OAAQ,CAAEs4P,WAAYx1P,EAAQo/M,SAAUo2C,cAEzCn0P,MAAK,SAAC5E,GACL,EAAKsyE,SAAS,CAAEuoL,aAAa,EAAOD,QAAQ,IAC5C,EAAK3mP,MAAM6mP,QACZ,IAEN,GAtCH,oBAwCE,WAAU,IAAD,mBACHv3P,EAAUkB,KAAKisK,aACfzyI,EAAO,UAAGx5B,KAAKwP,MAAMgqB,eAAd,SAEX,OACE,iCACE,iBACExgB,UAAS,sDACPwgB,EAAU,MAAQ,IAFtB,WAKE,gBAAIxgB,UAAU,OAAd,uBACW,kBADX,YAIA,cAAGA,UAAU,OAAb,iDACCla,EAAQo/M,SAAUjgN,OAAS69M,GAAa+4C,oBACvC,uIAKA,6GAEkB,OAGnB70P,KAAKqX,MAAM++O,cACV,gBAAKp9O,UAAU,kCAAf,UACE,SAAC,GAAD,CAAetF,KAAK,KAAKwK,UAAU,SAAS64J,KAAK,aAGpD/2K,KAAKqX,MAAM8+O,SACV,gBAAKn9O,UAAU,kCAAf,8BAIAhZ,KAAKqX,MAAM++O,cAAgBp2P,KAAKqX,MAAM8+O,SACtC,mBACEn9O,UAAU,sDACVkoF,QAAS,SAAC14F,GACR,EAAKktP,eACN,EAJH,6BAUJ,UAAC,GAAD,CACEnP,UAAQ,EACR7yO,KAAK,KACL8yO,WAAW,UACX9qE,KAAM17K,KAAKqX,MAAM09O,eACjBx4E,OAAQ,WACN,EAAK1uG,SAAS,CAAEknL,gBAAgB,GACjC,EAPH,WASE,SAAC,UAAD,CAAcx2E,aAAW,KACzB,UAAC,QAAD,YACE,iBAAKvlK,UAAU,6BAAf,WACE,eAAIA,UAAU,SAAd,mCACA,cAAGA,UAAU,GAAb,iFAIF,SAAC,GAAD,WACE,SAAC,GAAD,CAAKA,UAAU,iBAAf,UACE,gCACGhZ,KAAKqX,MAAMw+O,wBACV71P,KAAKqX,MAAMw+O,uBAAuBZ,wBAC/B5gQ,OAAS,IACV,SAAC,GAAD,CAAKwoF,GAAI,EAAT,UACE,iBAAK7jE,UAAU,6BAAf,WACE,iBAAKA,UAAU,0BAAf,WACE,oCACGla,EAAQo/M,gBADX,aACG,EAAkB+B,iBAAiBC,UAAW,OAFnD,UAIGlgN,KAAKqX,MAAMw+O,8BAJd,aAIG,EAAmCZ,wBAAwBjiP,KAC1D,SAACT,EAAcukC,GACb,OACE,0BACE,cAAG99B,UAAU,qCAAwC,IACpDzG,IAFH,uBAAwBukC,GAK3B,QAGL,SAACugK,GAAD,CACE1tK,GAAI,aACJ3wB,UAAU,0DACVkoF,QAAS,SAAC14F,GACR,EAAKqlE,SAAS,CAAEknL,gBAAgB,GACjC,EALH,gCAYP/0P,KAAKqX,MAAMw+O,yBACT71P,KAAKqX,MAAMw+O,uBAAuBb,mBACjCh1P,KAAKqX,MAAMw+O,uBAAuBX,wBAC/B7gQ,OAAS,KACZ,SAAC,GAAD,CAAKwoF,GAAI,EAAT,UACE,iBAAK7jE,UAAU,6BAAf,WACE,iBAAKA,UAAU,0BAAf,WACE,8CACGla,EAAQo/M,gBADX,aACG,EAAkB8B,mBAAmBE,iBADxC,QAEI,oBAAqB,OAH3B,UAKGlgN,KAAKqX,MAAMw+O,8BALd,aAKG,EAAmCX,wBAAwBliP,KAC1D,SAACT,EAAcukC,GACb,OACE,0BACE,cAAG99B,UAAU,qCAAwC,IACpDzG,IAFH,uBAAwBukC,GAK3B,QAGL,SAACugK,GAAD,CACE1tK,GAAI,aACJ3wB,UAAU,0DACVkoF,QAAS,SAAC14F,GACR,EAAKqlE,SAAS,CAAEknL,gBAAgB,GACjC,EALH,2CAgBhB,SAAC,UAAD,SAIP,KAtLH,GAAmCh1C,ICWtBu2C,GAAb,8BAOE,WAAY9mP,GAAa,IAAD,oBACtB,cAAMA,IACD6H,MAAQ,CACXyvJ,SAAS,EACTyvF,aAAa,EACbC,WAAY,GACZC,kBAAkB,GAEpB,EAAKC,cAAgB,EAAKA,cAAcl4P,KAAnB,MACrB,EAAKm4P,yBAA2B,EAAKA,yBAAyBn4P,KAA9B,MATV,CAUvB,CAjBH,2CAmBE,WAAqB,IAAD,IAClBsmP,GAAkBI,cAAc,CAAE9jP,KAAM,YAExC,IAAMtC,EAAUkB,KAAKlB,QACjBo/M,EAAWp/M,EAAQo/M,SAGiB,YAAtC,UAAAp/M,EAAQo/M,gBAAR,eAAkBq3C,kBAClB,UAACz2P,EAAQo/M,gBAAT,OAAC,EAAkB8B,qBACa,IAAhChgN,KAAKqX,MAAMo/O,iBAIXz2P,KAAK6tE,SAAS,CAAEi5F,SAAS,IAFzB9mK,KAAK6tE,SAAS,CAAEi5F,SAAS,EAAO2vF,kBAAkB,IAMpC,MAAZv4C,IAEqD,MAArDA,EAAS+B,iBAAiB22C,wBACO,OAAhC14C,EAAS8B,oBAC+C,MAAvD9B,EAAS8B,mBAAmB42C,wBACM,MAApC14C,EAAS04C,wBAET52P,KAAK6tE,SAAS,CAAE0oL,aAAa,IAClC,GA5CH,sCA8CE,WACE,IACIr4C,EADYl+M,KAAKisK,aACEiyC,SACN,OAAbA,IAEAA,EAAS+B,iBAAiB22C,uBAAyB,IACrD52P,KAAK6tE,SAAS,CAAE2oL,WAAY,eAEA,UAA5Bt4C,EAASq3C,iBACTr3C,EAAS8B,mBAAmB42C,uBAAyB,IAErD52P,KAAK6tE,SAAS,CAAE2oL,WAAY,eACnBt4C,EAAS24C,0BAA4B,IAC9C72P,KAAK6tE,SAAS,CAAE2oL,WAAY,YACnBt4C,EAAS44C,yBAA2B,KAC7C92P,KAAK6tE,SAAS,CAAE2oL,WAAY,eAE/B,GA/DH,0BAiEE,SAAal6C,GACX,OAAgB,IAAZA,EAAsB,cACtBA,GAAW,IAAY,cACpB,mBACR,GArEH,sCAuEE,WACEt8M,KAAK6tE,SAAS,CAAE4oL,kBAAkB,GACnC,GAzEH,oBA2EE,WAAU,IAAD,QACP,GAA8B,KAA1Bz2P,KAAKqX,MAAMm/O,WACb,OAAO,SAACllD,GAAD,CAAU3nK,GAAI3pC,KAAKqX,MAAMm/O,aAElC,GAAIx2P,KAAKqX,MAAMyvJ,QACb,OACE,wBACE,yCAIN,IAAMhoK,EAAUkB,KAAKisK,aACjBiyC,EAAuCp/M,EAAQo/M,SAEnD,GAAiB,OAAbA,EAAJ,CAEA,IAKI64C,EAAsB,EAExBA,GANA,UAAAj4P,EAAQo/M,gBAAR,eAAkBjgN,QAAS69M,GAAak7C,2BAAxC,UACAl4P,EAAQo/M,gBADR,aACA,EAAkB+4C,aAMfn4P,EAAQo/M,SAAU24C,0BACjB/3P,EAAQo/M,SAAUg5C,2BACpB,EACuBp4P,EAAQo/M,SAAU24C,0BAE7C,IAAIM,EAAa1wP,KAAK4kC,MACpB,GAAM,GAAK6yK,EAAS+B,iBAAiB22C,uBAA0B,KAE7DQ,EAAa3wP,KAAK4kC,MAAM,EAAK,EAAI0rN,EAAuB,KACxDM,EAAc5wP,KAAK4kC,MACrB,GAAM,GAAK6yK,EAAS44C,yBAA4B,KAI9CxtO,EAA4B,GAiChC,GAhCAA,EAAMzoB,KACJy1P,EAAQgB,kBACN,GACA,iCACE,iBAAMt+O,UAAU,SAAhB,UACE,4BAASklM,EAAS+B,iBAAiBC,eAErC,mBACA,iBAAMlnM,UAAU,SAAhB,SAA0BklM,EAAS+B,iBAAiBk0C,cAEtD,6CACEj2C,EAAS+B,iBAAiBC,UAC1B,0EACFhC,EAAS+B,iBAAiB22C,wBAC1B,kBAAM59O,UAAU,SAAhB,WACE,cAAGA,UAAU,sBACZm+O,EAFH,WAIA,aACAj5C,EAAS+B,iBAAiBC,UAAU11L,UAAU,EAAG,GAAGzuB,cAClDmiN,EAAS+B,iBAAiBk0C,SAAS3pO,UAAU,EAAG,GAAGzuB,eACrD,cACEid,UAAU,cACVoH,MAAO,CACL2rJ,SAAU,IACVn3G,MAAO50D,KAAKu3P,aACVr5C,EAAS+B,iBAAiB22C,6BAMJ,UAA5B14C,EAASq3C,iBAA+Br3C,EAAS8B,mBAAoB,CACvE,IAAIw3C,EAAa/wP,KAAK4kC,MACpB,GAAM,GAAK6yK,EAAS8B,mBAAmB42C,uBAA0B,KAEnEttO,EAAMzoB,KACJy1P,EAAQgB,kBACN,GACA,iCACE,iBAAMt+O,UAAU,SAAhB,UACE,4BAASklM,EAAS8B,mBAAmBE,eAEvC,mBACA,iBAAMlnM,UAAU,SAAhB,SACGklM,EAAS8B,mBAAmBm0C,cAGjC,6CACEj2C,EAAS8B,mBAAmBE,UAC5B,0EACFhC,EAAS8B,mBAAmB42C,wBAC5B,kBAAM59O,UAAU,SAAhB,WACE,cAAGA,UAAU,sBACZw+O,EAFH,WAIA,aACAt5C,EAAS8B,mBAAmBE,UAAU11L,UAAU,EAAG,GAAGzuB,cACpDmiN,EAAS8B,mBAAmBm0C,SAAS3pO,UAAU,EAAG,GAAGzuB,eACvD,cACEid,UAAU,cACVoH,MAAO,CACL2rJ,SAAU,IACVn3G,MAAO50D,KAAKu3P,aACVr5C,EAAS8B,mBAAmB42C,4BAMvC,CACDttO,EAAMzoB,KACJy1P,EAAQgB,kBACN,GACA,iCACE,0CACA,kBAFF,aAKA,8FACAP,GACA,kBAAM/9O,UAAU,SAAhB,WACE,cAAGA,UAAU,sBACZo+O,EAFH,WAIA,WACA,cAAGp+O,UAAU,0BACb,cACEA,UAAU,cACVoH,MAAO,CACL2rJ,SAAU,IACVn3G,MAAO50D,KAAKu3P,aAAaR,QAMjCztO,EAAMzoB,KACJy1P,EAAQgB,kBACN,GACA,wCAEE,mBACA,6CAEF,+BACAp5C,EAAS44C,0BACT,kBAAM99O,UAAU,SAAhB,WACE,cAAGA,UAAU,sBACZq+O,EAFH,WAIA,cACA,cAAGr+O,UAAU,wBACb,cACEA,UAAU,qBACVoH,MAAO,CACL2rJ,SAAU,IACVn3G,MAAO50D,KAAKu3P,aAAar5C,EAAS44C,+BAO1C,IA8BuD,EA9BnD9oP,EAASsb,EAAMtW,KAAI,SAACT,GAAD,OACrB,SAAC8kM,GAAD,CAEE1tK,GAAIp3B,EAAKpX,IACT6d,UAAU,iDAHZ,UAKE,SAAC,GAAD,CAAOA,UAAU,qBAAjB,UACE,SAAC,GAAD,CACEusO,iBAAkBhB,GAAiBoB,MAEnCr9M,KAAM/1B,EAAKiqM,SACXpwK,MAAO75B,EAAK65B,MACZkwK,QAAS/pM,EAAK+pM,QACd1/L,SAAUrK,EAAKqK,SACf2tB,KAAMh4B,EAAKg4B,MALN,kBAAoBh4B,EAAK3N,GAAGoC,eAPhCuL,EAAK3N,GAFS,IAqBnB65M,EAAoB3/M,EAAQm/M,QAASQ,UACrCg5C,EAAS,UAAGv5C,EAAS8B,0BAAZ,aAAG,EAA6BE,UACzCw3C,GACF,gCACG,IADH,MAEM,KACJ,iBAAM1+O,UAAU,YAAhB,SAA6BklM,EAAS+B,iBAAiBC,eAG3D,GAAIhC,EAAS+B,iBAAiBxB,YAAcA,EAC1Cg5C,EAAYv5C,EAAS+B,iBAAiBC,UACGw3C,EAAN,MAA/Bx5C,EAAS8B,oBAAwC,yBAGjD,gCACG,IADH,MAEM,KACJ,iBAAMhnM,UAAU,YAAhB,mBACGklM,EAAS8B,0BADZ,aACG,EAA6BE,eAMxC,OACE,iCACIlgN,KAAKwP,MAAMmoP,eACX,UAACl3C,GAAD,CACEI,gBAAgB,EAChB7nM,UAAU,qBACVozB,OACE,6BACE,iBAAMpzB,UAAU,YAAhB,gBADF,IACyCy+O,EACtCC,EAFH,OAKFl0P,aACE,0EAEE,kBAFF,sCAVJ,WAiBE,SAAC,GAAD,CAAKwV,UAAU,uBAAf,SACGhL,EAAOgF,KAAI,SAACT,EAAMukC,GACjB,OACE,SAAC,GAAD,CAAyBi4F,GAAI,EAAG6pC,GAAI,EAApC,SACGrmK,GADO,QAAUukC,EAIvB,OAGH,SAAC,GAAD,CAAK99B,UAAU,wBAAf,UACE,SAAC,GAAD,CAAKoH,MAAO,CAAEk+I,YAAa,GAAI59I,WAAY,IAA3C,UACE,cAAG1H,UAAU,aAAb,0GAQJ,UAAC,GAAD,YACE,SAAC,GAAD,CAAK6jE,GAAI,EAAT,UACE,SAAC+3K,GAAD,OAEF,SAAC,GAAD,CAAK/3K,GAAI,EAAT,WACG,UAAC/9E,EAAQo/M,gBAAT,OAAC,EAAkB63C,qBAAqB,SAACG,GAAD,OAE3C,SAAC,GAAD,QAEF,SAACzB,GAAD,CACE/4E,MAAsC,IAAhC17K,KAAKqX,MAAMo/O,iBACjBlQ,UAAQ,EACRoO,SAAU30P,KAAK43P,8BAIpB53P,KAAKwP,MAAMmoP,eACV,SAAC,GAAD,CAAK3+O,UAAU,iBAAf,SACGhL,EAAOgF,KAAI,SAACT,EAAMukC,GACjB,OACE,SAAC,GAAD,CAEEi4F,GAAI,EACJ6pC,GAAkC,YAAtB,OAARslC,QAAQ,IAARA,OAAA,EAAAA,EAAUq3C,iBAA+B,EAAI,EAHnD,SAKGhjP,GAJI,QAAUukC,EAOpB,QAtQoB,CA2Q9B,GApWH,yDAsWE,gGACQh4C,EAAUkB,KAAKlB,QACjBw1P,EAFN,UAEmBx1P,EAAQm/M,eAF3B,aAEmB,EAAiBq2C,WAClC31P,KAAAA,IACO,iDAAmD21P,GACvDn0P,MAAK,SAAC5E,GACL,EAAKsyE,SAAS,CAAEi5F,SAAS,IAEJ,MAAjBvrK,EAAS1B,MAEiD,MAA1D0B,EAAS1B,KAAKomN,iBAAiB22C,wBAC6B,MAA5Dr7P,EAAS1B,KAAKmmN,mBAAmB42C,wBACQ,MAAzCr7P,EAAS1B,KAAK+8P,wBAEd,EAAK/oL,SAAS,CAAE0oL,aAAa,GAClC,IACA/gP,OAAM,SAACtS,GAC4B,MAA9BA,EAAM3H,SAASw4O,YACjBygB,MAAM,eAET,IApBL,gDAtWF,iFA6XE,SAAc74P,GACZ,IAAIg8D,EAAS,SACb,OAAc,OAAVh8D,EAAuBg8D,UAErBh8D,GAAS,IACJg8D,EAASlxD,KAAK4kC,MAAM1vC,EAAQ,KAASqL,WAAa,IAClDrL,GAAS,IACTg8D,EAASlxD,KAAK4kC,MAAM1vC,EAAQ,KAAMqL,WAAa,IAC5C2wD,EAASh8D,EAAMqL,UAG9B,IAxYH,gCA0YE,SACEpC,EACAwnC,EACA5oC,EACA84M,EACA1/L,EACAzhB,EACAqhN,EACAjyK,GAEA,IAAIstN,EACFv7C,GAAW,KAAM,cAAGtjM,UAAU,qBAAwB4D,EACpDy/L,EAAgBC,GAAW,IAAM,mBAAqB,aACtDngL,EACFmgL,GAAW,IAAM,YAAc71M,KAAK4kC,MAAMixK,GAAW,aAevD,OAAO,IAAIF,GACTx3M,EACAwnC,EACA5oC,EACAq0P,EACAx7C,EACAC,EACAngL,EApBAmgL,GAAW,IACP,mBACY,IAAZA,EACA,kBACA,aAkBJnhN,EACAqhN,EAjBA,wBACa,IAAZF,EACG,aACY,MAAZA,EACA,mBACA,cAcJ/xK,EAEH,KArbH,GAA6Bw1K,IAAhBu2C,GAIJpkJ,YAAc8rG,GAJVs4C,GAKJjkJ,YAAcikJ,GAAQl1P,KClCxB,IAAM02P,GAAb,+HAGI,WACIhT,GAAkBI,cAAc,CAAE9jP,KAAM,oBAC3C,GALL,0BAOI,SAAqB88M,GACjB,OAAsC,MAA/BA,EAAS8B,mBACZ9B,EAAS+B,iBAAiBH,SAAW5B,EAAS+B,iBAAiBH,SAAW,MAAQ5B,EAAS8B,mBAAmBF,QACrH,GAVL,wBAYI,SAAmB5B,GACf,IAAI65C,EAAoB,GAMxB,OALAA,EAAQl3P,KAAKq9M,EAAS+B,iBAAiBo1C,OAAS,IAAM,KAEnB,MAA/Bn3C,EAAS8B,oBACT+3C,EAAQl3P,KAAKq9M,EAAS8B,mBAAmBq1C,OAAS,IAAM,KAErD0C,EAAQvuP,KAAK,IACvB,GApBL,iCAsBI,SAA4B00M,GACxB,IAAI85C,EAAqC,MAA/B95C,EAAS8B,mBACf,QAAU9B,EAAS+B,iBAAiB+3C,IAAM,MAAQ,SAAW95C,EAAS+B,iBAAiB+3C,IAAM,KAAO95C,EAAS8B,mBAAmBg4C,IAAM,IAEtIC,EAAwB,GAEK,MAA7B/5C,EAAS+B,kBAAoE,MAAxC/B,EAAS+B,iBAAiBi4C,YAC/DD,EAAYp3P,KAAKq9M,EAAS+B,iBAAiBi4C,YACZ,MAA/Bh6C,EAAS8B,oBAAwE,MAA1C9B,EAAS8B,mBAAmBk4C,YACnED,EAAYp3P,KAAKq9M,EAAS8B,mBAAmBk4C,YACjD,IAAIA,EAAaD,EAAYzuP,KAAK,KAClC,OAAqB,MAAd0uP,GAAqC,KAAfA,EAAoBF,EAAMA,EAAM,IAAME,CACtE,GAlCL,yBAoCI,WACI,IACIh6C,EADUl+M,KAAKisK,aACIiyC,SACvB,GAAgB,MAAZA,EAAJ,CAEA,IAAI5lJ,EAAQt4D,KAAKm4P,oBACbC,EAAYp4P,KAAKq4P,aAAan6C,GAC9Bo6C,EAAmBt4P,KAAKu4P,oBAAoBr6C,GAC5C65C,EAAU/3P,KAAKw4P,WAAWt6C,GAE9B,OACI,UAACuC,GAAD,CAAYr0K,MAAO,8BAA+B5oC,aAAa,sCAAM80D,EAAN,uEAA/D,WACI,UAAC,GAAD,YACI,SAAC,GAAD,CAAKt/C,UAAU,cAEf,SAAC,GAAD,CAAKA,UAAU,sBAAf,UACI,gBAAIA,UAAU,QAAd,WACI,2BAAI,cAAGA,UAAU,uCAA0CklM,EAASu6C,qBACpE,2BAAI,cAAGz/O,UAAU,uCAA0Co/O,MAC3D,2BAAI,cAAGp/O,UAAU,uCAA0Cs/O,MAC3D,2BAAI,cAAGt/O,UAAU,uCAAjB,uBAA+EklM,EAASw6C,8BACxF,2BAAI,cAAG1/O,UAAU,uCAAjB,oBAA4EklM,EAASy6C,iCACrF,2BAAI,cAAG3/O,UAAU,uCAAjB,YAAoE++O,WAG5E,SAAC,GAAD,CAAK/+O,UAAU,sBAAf,UACI,gBAAIA,UAAU,QAAd,WACI,2BAAI,cAAGA,UAAU,uCAAjB,sBAA8EklM,EAAS06C,2BACvF,2BAAI,cAAG5/O,UAAU,uCAAjB,sBAA8EklM,EAAS26C,oCACvF,2BAAI,cAAG7/O,UAAU,uCAAjB,gBAAwEklM,EAAS+4C,WAAa,MAAQ,SACtG,2BAAI,cAAGj+O,UAAU,uCAAjB,QAAgEklM,EAAS46C,uBACzE,2BAAI,cAAG9/O,UAAU,uCAAjB,qBAA0G,MAA7BklM,EAAS66C,iBAA2B,GAAK76C,EAAS66C,iBAAiBvvP,KAAK,SACrJ,2BAAI,cAAGwP,UAAU,uCAAjB,sBAA8EklM,EAAS86C,0BAG/F,SAAC,GAAD,CAAKhgP,UAAU,iBAGnB,mBACA,mBACA,mBACA,mBACA,UAAC,GAAD,YACI,SAAC,GAAD,CAAKA,UAAU,cACf,SAAC,GAAD,CAAKA,UAAU,sBAAf,UACI,oPAEJ,SAAC,GAAD,CAAKA,UAAU,iBAGnB,mBACA,mBACA,SAACq+L,GAAD,CAAM1tK,GAAG,WAAT,UAAoB,SAAC,GAAD,CAAQ3wB,UAAU,2DAAlB,uCAhDlB,CAmDb,GA3FL,oBA6FI,WACI,OAAOhZ,KAAKi5P,aACf,KA/FL,GAAqCl5C,IAAxB+3C,GACFzlJ,YAAcylJ,GAAgB12P,4DCDnC83P,GAA2Bt2I,EAAAA,YAAiB,WAQ/CjvG,GAAQ,IAPTs7J,EAOS,EAPTA,SACAv7J,EAMS,EANTA,KACAylP,EAKS,EALTA,SACAngP,EAIS,EAJTA,UAIS,IAFTk2J,GAAI9mD,OAEK,MAFO,MAEP,EADN9iD,EACM,QACH3N,EAAS62G,EAAmBS,EAAU,aACxCmqF,EAAYzhM,EAEhB,OADIwhM,IAAUC,EAAY,GAAH,OAAMzhM,EAAN,eACH03G,EAAAA,EAAAA,KAAKjnD,EAAD,EAAC,KAAgB9iD,GAAjB,IACtB3xD,IAAKA,EACLqF,UAAW7I,IAAW6I,EAAWogP,EAAW1lP,GAAQ,GAAJ,OAAOikD,EAAP,YAAiBjkD,MAEpE,IACDwlP,GAAY7mJ,YAAc,cAC1B6mJ,GAAY9mJ,aAtBS,CACnB+mJ,UAAU,EACVpiF,KAAM,SAqBR,UCzBIonC,GAAiB,GACd,SAASk7C,GAAYC,GACxB,IAAI39P,EACAitP,EAAczqC,GAASxuM,QAAO,SAACtP,GAAD,OAAWA,EAAE7C,MAAQ87P,CAArB,IAOlC,OANI1Q,EAAQv0P,OAAS,EACjBsH,EAAQitP,EAAQ,GAAGjtP,OAEnBA,EAAQgD,KAAAA,IAAU,sCAAsC26P,GACxDn7C,GAASt9M,KAAK,CAACrD,IAAI87P,EAAY39P,MAAOA,KAEnCA,CACV,CCXM,IAAM49P,GAAb,8BACI,aAAe,IAAD,oBACV,gBACKzF,aAAa,kBAAmB,oBACrC,EAAKA,aAAa,UAAW,oBAC7B,EAAK0F,iBAAiB,YAAa,aAC/B,CAAC,CAAElxN,KAAM,WAAY3sC,MAAO,SAAa,CAAE2sC,KAAM,SAAU3sC,MAAO,WAClE,CAAE2sC,KAAM,WAAY3sC,MAAO,WAAa,CAAE2sC,KAAM,OAAQ3sC,MAAO,WAAa,CAAE2sC,KAAM,WAAY3sC,MAAO,WACvG,CAAE2sC,KAAM,YAAa3sC,MAAO,WAAa,CAAE2sC,KAAM,SAAU3sC,MAAO,aACtE,EAAK69P,iBAAiB,eAAgB,gBAClC,CAAC,CAAElxN,KAAM,YAAa3sC,MAAO,SAAa,CAAE2sC,KAAM,aAAc3sC,MAAO,WACvE,CAAE2sC,KAAM,cAAe3sC,MAAO,aAClC,EAAKm4P,aAAa,qBAAsB,wBACxC,EAAK2F,gBAAgB,6BAA8B,uBAAwB,EAAG,KAC9E,EAAKC,eAAe,wBAAyB,qBAAsB,EAAG,KACtE,EAAKA,eAAe,qBAAsB,kBAAmB,EAAG,KAChE,EAAKF,iBAAiB,sBAAuB,qBACzC,CAAC,CAAElxN,KAAM,WAAY3sC,MAAO,SAAa,CAAE2sC,KAAM,YAAa3sC,MAAO,aAEzE,EAAK69P,iBAAiB,YAAa,aAC/B,CAAC,CAAElxN,KAAM,KAAM3sC,MAAO,SACtB,CAAE2sC,KAAM,KAAM3sC,MAAO,WACrB,CAAE2sC,KAAM,KAAM3sC,MAAO,WACrB,CAAE2sC,KAAM,KAAM3sC,MAAO,WACrB,CAAE2sC,KAAM,KAAM3sC,MAAO,WACrB,CAAE2sC,KAAM,KAAM3sC,MAAO,WACrB,CAAE2sC,KAAM,aAAc3sC,MAAO,WAC7B,CAAE2sC,KAAM,UAAW3sC,MAAO,WAC1B,CAAE2sC,KAAM,SAAU3sC,MAAO,aAC7B,EAAKg+P,gBAAgB,+BAAgC,wBACrD,EAAKC,iBAAiB,gBAAiB,mBAAoB,EAAG,KAC9D,EAAKJ,iBAAiB,gBAAiB,mBAAoB,CAAC,CAAElxN,KAAM,MAAO3sC,MAAO,SAAa,CAAE2sC,KAAM,KAAM3sC,MAAO,aACpH,EAAK69P,iBAAiB,wBAAyB,yBAA0B,CAAC,CAAClxN,KAAM,gBAAiB3sC,MAAO,SAAY,CAAC2sC,KAAM,WAAY3sC,MAAO,aAC/I,EAAKg+P,gBAAgB,4CAA6C,oBAClE,EAAKC,iBAAiB,0BAA2B,iBAAkB,EAAG,KACtE,EAAK9F,aAAa,sCAAuC,qBACzD,EAAK6F,gBAAgB,0CAA2C,iDAChE,EAAKA,gBAAgB,aAAc,gBApCzB,CAqCb,CAtCL,aAA8C3G,ICetC6G,GAAe,SAACp5P,GAA8C,EAGvDq5P,GAAb,WAmBE,WAAYp1P,GAAkC,IAAD,sBAlB7Cq1P,KAAY,GAkBiC,KAjBpCzlM,IAAa,SAAC7zD,GAA6C,IAAD,uBAA1Bu5P,EAA0B,iCAA1BA,EAA0B,kBACjE,EAAKD,KAAKl5P,KAAK,CAACovD,EAAExvD,EAAQyvD,EAAE8pM,IAC5B,EAAKC,YAAL,QAAI,CAAax5P,GAAb,OAAyBu5P,GAC9B,EAc4C,KAbpCpsP,KAAc,SAACnN,GAA6C,IAAD,uBAA1Bu5P,EAA0B,iCAA1BA,EAA0B,kBAClE,EAAKD,KAAKl5P,KAAK,CAACovD,EAAExvD,EAAQyvD,EAAE8pM,IAC5B,EAAKE,aAAL,QAAI,CAAcz5P,GAAd,OAA0Bu5P,GAC/B,EAU4C,KATpC92P,MAAe,SAACzC,GAA6C,IAAD,uBAA1Bu5P,EAA0B,iCAA1BA,EAA0B,kBACnE,EAAKD,KAAKl5P,KAAK,CAACovD,EAAExvD,EAAQyvD,EAAE8pM,IAC5B,EAAKG,cAAL,QAAI,CAAe15P,GAAf,OAA2Bu5P,GAChC,EAM4C,KAJpCC,iBAIoC,OAHpCC,kBAGoC,OAFpCC,mBAEoC,EAC3C,IAAQpzO,GAAUriB,GAAW,CAAC,GAAtBqiB,MAIR,GAFA/mB,KAAKm6P,cAAgBxsP,QAAQzK,MAAM1E,KAAKmP,SAE1B,UAAVoZ,EAIF,OAHA/mB,KAAK4N,KAAOisP,QACZ75P,KAAKs0D,IAAMulM,IAKb75P,KAAKk6P,aAAevsP,QAAQC,KAAKpP,KAAKmP,SAExB,SAAVoZ,EAMJ/mB,KAAKi6P,YAActsP,QAAQ2mD,IAAI91D,KAAKmP,SALlC3N,KAAKs0D,IAAMulM,EAMd,CAxCH,iCAyCE,WACE,OAAO75P,KAAK+5P,IACb,GA3CH,uBA4CE,WACE/5P,KAAK+5P,KAAK,EACX,KA9CH,KAmDaryK,GAAS,IAAIoyK,GAAc,CAAE/yO,MADoB,mBC9DnDqzO,GAAmB,+BAAG,WAAO9xN,EAAKilE,GAAZ,2FAC/B,IAAI/zG,SAAQ,SAACC,EAASC,GAClB,IAAK4uC,EACD,OAAO5uC,EAAO,yBAIlB,GAAsB,qBAAXiS,OACP,OAAOjS,EAAO,4BAalB,IAiBIiF,KAAAA,IAAU,wBAA0B2pC,EAAO,cAAgBilE,GAC1DptG,KAAK1G,GACL+b,OAAM,SAACtS,GACJ,GAAK2qE,SAAS,CAAEi5F,SAAS,GAC5B,GASJ,CAFC,MAAOt+J,IACL9O,EAAO8O,GACV,CACJ,KApD8B,2CAAH,wDAsDnB6xP,GAAgB,+BAAG,WAAOz1P,GAAP,2FAC5B,IAAIpL,SAAQ,SAACC,EAASC,GAClB,IAAKkL,EACD,OAAOlL,EAAO,iBAIlB,GAAsB,qBAAXiS,OACP,OAAOjS,EAAO,4BAGlB,IACIiF,KAAAA,IAAU,qBACV,CACI3C,OAAQ,CAAC,GAAK4I,KAEjBzE,KAAK1G,GACL+b,OAAM,SAACtS,GACJ,GAAK2qE,SAAS,CAAEi5F,SAAS,GAC5B,GASJ,CAFC,MAAOt+J,IACL9O,EAAO8O,GACV,CACJ,KA7B2B,2CAAH,sDA+BhB8xP,GAAe,+BAAG,WAAO11P,GAAP,2FAC3B,IAAIpL,SAAQ,SAACC,EAASC,GAClB,IAAKkL,EACD,OAAOlL,EAAO,4BAIlB,GAAsB,qBAAXiS,OACP,OAAOjS,EAAO,4BAGlB,IACIiF,KAAAA,IAAU,oBACN,CACI3C,OAAQ,CAAC,GAAK4I,KAErBzE,KAAK1G,GACL+b,OAAM,SAACtS,GACJ,GAAK2qE,SAAS,CAAEi5F,SAAS,GAC5B,GAGJ,CAFC,MAAOt+J,IACL9O,EAAO8O,GACV,CACJ,KAvB0B,2CAAH,sDC1CrB,IAAM+xP,GAAb,8BACE,WAAY/qP,GAAa,IAAD,eACtB,cAAMA,IA4RRgrP,0BAA4B,SAAChyP,EAAQiyP,GACnCjyP,EAAE8qC,iBACF,EAAKonN,kBAAiB,GAClBD,EAAWhoN,UACb,EAAKkoN,qBAAqBF,EAAW9+P,OAErC,EAAKi/P,cAAcH,EAEtB,EArSuB,EAuSxBG,cAAgB,SAACH,GACfH,GAAgBG,EAAW9+P,OAAOwE,MAAK,SAAC06P,GACtC,IAAIhiD,EAAS,EAAKxhM,MAAMwhM,OACxB,EAAKiiD,cAAc,EAAKtrP,MAAMqrP,QAASJ,EAAW1kP,OAE9C,EAAKvG,MAAMurP,SAAS,EAAKD,cAAc,EAAKtrP,MAAMurP,QAAS,IAC3D,EAAKvrP,MAAMwrP,QAAQ,EAAKF,cAAc,EAAKtrP,MAAMwrP,OAAQ,IACzD,EAAKxrP,MAAMyrP,MAAM,EAAKH,cAAc,EAAKtrP,MAAMyrP,KAAM,IACrD,EAAKzrP,MAAM0rP,SAAS,EAAKJ,cAAc,EAAKtrP,MAAM0rP,QAAS,IAC3D,EAAK1rP,MAAM2rP,cACb,EAAKL,cAAc,EAAKtrP,MAAM2rP,aAAc,IAC1C,EAAK3rP,MAAM4rP,cACb,EAAKN,cAAc,EAAKtrP,MAAM4rP,aAAc,IAC1C,EAAK5rP,MAAM6rP,cACb,EAAKP,cAAc,EAAKtrP,MAAM6rP,aAAc,IAI9C,IADA,IAAIC,EAAQT,EAAQhhQ,KAAKmU,OAAO6sP,QAAQS,MAC/Bj7P,EAAI,EAAGA,EAAIi7P,EAAMjnQ,OAAQgM,IAAK,CACrC,IAAIk7P,EAAOD,EAAMj7P,GACP,IAANA,GAAW,EAAKmP,MAAM2rP,aACxB,EAAKL,cAAc,EAAKtrP,MAAM2rP,aAAcI,GAC7B,IAANl7P,GAAW,EAAKmP,MAAM4rP,aAC/B,EAAKN,cAAc,EAAKtrP,MAAM4rP,aAAcG,GAC7B,IAANl7P,GAAW,EAAKmP,MAAM6rP,aAC/B,EAAKP,cAAc,EAAKtrP,MAAM6rP,aAAcE,GAC7B,IAANl7P,GAAW,EAAKmP,MAAMyrP,KAC/B,EAAKH,cAAc,EAAKtrP,MAAMyrP,KAAMM,GACrB,IAANl7P,GAAW,EAAKmP,MAAMwrP,OAC/B,EAAKF,cAAc,EAAKtrP,MAAMwrP,OAAQO,GACvB,IAANl7P,GAAW,EAAKmP,MAAMurP,SAC/B,EAAKD,cAAc,EAAKtrP,MAAMurP,QAASQ,EAE1C,CAED,EAAKC,sBAEL,EAAK3tL,SAAS,CACZgrI,OAAQA,EACR18J,OAAQ,EAAK9kC,MAAM8kC,OACnB0+M,QAASJ,EAAW1kP,MACpB0lP,mBAAoBZ,EACpBa,YAAa,GACbC,YAAa,GACbC,gBAAgB,IAGlB,EAAKpsP,MAAMoqC,aAAa,CACtBh0C,OAAQ,CAAExE,KAAM,EAAKoO,MAAMqrP,QAASl/P,MAAO8+P,EAAW1kP,QAEzD,GACF,EAvVC,EAAK8lP,kBAAoB,EAAKA,kBAAkBr9P,KAAvB,MACzB,EAAKs9P,oBAAsB,EAAKA,oBAAoBt9P,KAAzB,MAC3B,EAAKu9P,eAAiB,EAAKA,eAAev9P,KAApB,MACtB,EAAKg8P,0BAA4B,EAAKA,0BAA0Bh8P,KAA/B,MACjC,EAAKo8P,cAAgB,EAAKA,cAAcp8P,KAAnB,MAErB,IAAIq8P,EAAY,UAAG,EAAK5H,eAAe,EAAKzjP,MAAMqrP,gBAAlC,aAAG,EAAyCl/P,MATtC,OAUtB,EAAK6/P,oBAAsB,EAAKA,oBAAoBh9P,KAAzB,MAC3B,EAAKk8P,iBAAmB,EAAKA,iBAAiBl8P,KAAtB,MACxB,EAAKw9P,YAAc,EAAKA,YAAYx9P,KAAjB,MACnB,EAAKm8P,qBAAuB,EAAKA,qBAAqBn8P,KAA1B,MAE5B,EAAK6Y,MAAQ,CACXokP,mBAAoB,GACpBC,YAAa,GACbO,cAAc,EACdC,YAAa,GACbrjD,OAAQrpM,EAAMqpM,OACd18J,OAAQ3sC,EAAM2sC,OACd0+M,QAASA,EACTe,gBAAgB,EAChBruJ,UAAW,GACX4uJ,YAAa,IAzBO,CA2BvB,CA5BH,2CA8BE,WAE2B,IAAD,GADxBn8P,KAAK6tE,SAAS,CAAEouL,cAAc,IAC1Bj8P,KAAKwP,MAAMurP,SACb/6P,KAAK06P,iBACuD,MAA1D,UAAC16P,KAAKizP,eAAejzP,KAAKwP,MAAMurP,SAASp/P,aAAzC,QAAkD,KAGpDqE,KAAK06P,kBAAiB,EAEzB,GAvCH,iCAyCE,WACE16P,KAAK6tE,SAAS,CAAEouL,cAAc,IAC9Bj8P,KAAK06P,kBAAkB16P,KAAKqX,MAAMukP,eACnC,GA5CH,yBAmDE,SAAYjgQ,GACI,KAAVA,GACFqE,KAAK6tE,SAAS,CAAE4tL,mBAAoB,GAAIC,YAAa,IACxD,GAtDH,4BAwDE,SAAeC,GACb37P,KAAK6tE,SAAS,CAAE8tL,YAAaA,EAAad,QAASc,IACnD37P,KAAKo8P,kBAAkBT,EACxB,GA3DH,8BA6DE,SAAiBh6K,GACX3hF,KAAKwP,MAAMkrP,kBAAkB16P,KAAKwP,MAAMkrP,iBAAiB/4K,EAC9D,GA/DH,8DAiEE,WAAwBr5C,GAAxB,gFACEtoC,KAAK06P,kBAAiB,GACtB16P,KAAK6tE,SAAS,CAAE+tL,gBAAgB,IAC3BtzN,EAHP,yCAIW,IAJX,YAMMA,EAAKj0C,OAAS,GANpB,yCAOW,IAPX,OAcE+lQ,GAAoB9xN,EAAMtoC,KAAKqX,MAAMk2F,WAClCptG,MAAK,SAACu7P,GACL,EAAKK,eAAeL,EAAY7hQ,KAAKmuN,SACjC0zC,EAAY7hQ,KAAK4B,OAAOumC,QAC1B,EAAK6rC,SAAS,CAAE0/B,UAAWmuJ,EAAY7hQ,KAAKwiQ,YAE5C,EAAKxuL,SAAS,CAAEsuL,YAAaT,EAAY7hQ,KAAK4B,OAAOsiF,cASxD,IACAvoE,OAAM,SAAChN,GACN,EAAKqlE,SAAS,CACZsuL,YACE,wFAGL,IApCL,gDAjEF,wHAwGE,WAA2BxgQ,GAA3B,6EACEqE,KAAK06P,kBAAiB,GACtB16P,KAAK6tE,SAAS,CAAE+tL,gBAAgB,IAEhCvB,GAAiB1+P,GACdwE,MAAK,SAACu7P,GACL,EAAKK,eAAeL,EAAY7hQ,KAAKmuN,SACrC,EAAKn6I,SAAS,CAAE0/B,UAAWmuJ,EAAY7hQ,KAAKwiQ,WAQ7C,IACA7mP,OAAM,SAAChN,GAEP,IAlBL,gDAxGF,mFA6HE,SAAe8zP,GACbt8P,KAAK6tE,SAAS,CAAE6tL,YAAaY,GAC9B,GA/HH,uBAiIE,SAAUvB,GACR,IAmBIwB,EAAM,IAAIlyP,OAlBZ,gfAkB4B,KAG9B,OAAc,IADN2F,OAAO+qP,GAAS1vP,OAAOkxP,EAEhC,GAzJH,sBA2JE,SAASvB,GAmCP,QAlCe,CACb,SACA,SACA,QACA,QACA,UACA,OACA,YACA,WACA,SACA,SACA,UACA,OACA,YACA,QACA,SACA,SACA,UACA,WACA,QACA,WACA,QACA,QACA,SACA,YACA,UACA,UACA,QACA,OACA,QACA,WACA,YACA,aAEW9kO,MAAK,SAACj1B,GAAD,OAAO+5P,EAAOv9P,gBAAkBwD,CAAhC,GAEnB,GAhMH,uBAkME,SAAUi6P,GAER,MAAiC,YAA1BA,EAAQz9P,aAChB,GArMH,4BAuME,SAAe2D,GACb,OAAOpB,KAAKwP,MAAM2sC,OAAO82M,eAAe7xP,EACzC,GAzMH,2BA2ME,SAAc6uK,EAAmBt0K,GAC/B,IAAIwgD,EAASn8C,KAAKqX,MAAM8kC,OACpBA,IACFA,EAAOqgN,YAAYx8P,KAAKwP,MAAMqpM,OAAQ5oC,EAAWt0K,GACjDwgD,EAAOsgN,iBAAiBxsF,EAAWt0K,IAErCqE,KAAK6tE,SAAS,CAAE1xB,OAAQn8C,KAAKqX,MAAM8kC,OAAQ08J,OAAQ74M,KAAKqX,MAAMwhM,QAC/D,GAlNH,2BAoNE,SAAcvoJ,GACZ,OAAa,OAANA,QAAoBjzD,IAANizD,GAAyB,KAANA,CACzC,GAtNH,iCAwNE,WACE,IAAI6qM,EAAe,GACjBC,EAAe,GACfC,EAAe,GACbr7P,KAAKwP,MAAM2rP,eACbA,EAAen7P,KAAKizP,eAAejzP,KAAKwP,MAAM2rP,cAC3Cx/P,OACDqE,KAAKwP,MAAM4rP,eACbA,EAAep7P,KAAKizP,eAAejzP,KAAKwP,MAAM4rP,cAC3Cz/P,OACDqE,KAAKwP,MAAM6rP,eACbA,EAAer7P,KAAKizP,eAAejzP,KAAKwP,MAAM6rP,cAC3C1/P,OAEL,IAAIo/P,EAAU,GACZE,EAAO,GACPD,EAAS,GACTE,EAAU,GACRl7P,KAAKwP,MAAMurP,UACbA,EAAU/6P,KAAKizP,eAAejzP,KAAKwP,MAAMurP,SAASp/P,OAChDqE,KAAKwP,MAAMwrP,SACbA,EAASh7P,KAAKizP,eAAejzP,KAAKwP,MAAMwrP,QAAQr/P,OAC9CqE,KAAKwP,MAAM0rP,UACbA,EAAUl7P,KAAKizP,eAAejzP,KAAKwP,MAAM0rP,SAASv/P,OAChDqE,KAAKwP,MAAMyrP,OACbA,EAAOj7P,KAAKizP,eAAejzP,KAAKwP,MAAMyrP,MAAMt/P,OAE9C,IAAIk/P,EAAU,GAgCd,OA9BK76P,KAAK08P,cAAcvB,KACtBN,EAAUM,GAGPn7P,KAAK08P,cAActB,KACtBP,GAAW,KAAOO,GAGfp7P,KAAK08P,cAAcrB,KACtBR,GAAW,KAAOQ,GAGfr7P,KAAK08P,cAAc1B,KACtBH,GAAW,KAAOI,GAGfj7P,KAAK08P,cAAc1B,KACtBH,GAAW,KAAOG,GAGfh7P,KAAK08P,cAAc3B,KACtBF,GAAW,KAAOE,GAGf/6P,KAAK08P,cAAcxB,KACtBL,GAAW,KAAOK,GAGpBl7P,KAAK86P,cAAc96P,KAAKwP,MAAMqrP,QAASA,GAEhCA,CACR,GApRH,oCAsRE,WAA0B,IAAD,EACvB76P,KAAK6tE,SAAS,CAAEgtL,QAAS76P,KAAKw7P,wBAC1Bx7P,KAAKwP,MAAMurP,SACb/6P,KAAK06P,iBACuD,MAA1D,UAAC16P,KAAKizP,eAAejzP,KAAKwP,MAAMurP,SAASp/P,aAAzC,QAAkD,IAEvD,GA5RH,yBA6VE,SAAY6M,GACVxI,KAAK28P,YAAYn0P,EAAE5C,OAAOjK,YACU0B,IAAhC2C,KAAKwP,MAAMkrP,mBAEb16P,KAAK86P,cAAc96P,KAAKwP,MAAMqrP,QAASryP,EAAE5C,OAAOjK,OAChDqE,KAAKwP,MAAMoqC,aAAa,CACtBh0C,OAAQ,CAAExE,KAAMpB,KAAKwP,MAAMqrP,QAASl/P,MAAO6M,EAAE5C,OAAOjK,SAGzD,GAtWH,oBAwWE,WAAU,IAAD,eACP,OACE,+BACE,iBAAKqd,UAAU,oBAAf,UACGhZ,KAAKqX,MAAM4kP,eACV,UAAC,SAAD,CAAYjjP,UAAU,aAAtB,WACE,UAAC,GAAD,YACE,UAAC,GAAD,CAAK6jE,GAAI78E,KAAKwP,MAAMotP,UAAY,EAAI,GAApC,oBACG58P,KAAKwP,MAAMqtP,2BADd,SAEI,iBAAM7jP,UAAU,mBAAhB,mDAIF,SAAC,WAAD,CACE2W,SAAU3vB,KAAKwP,MAAMmgB,SACrBqlG,YACEh1H,KAAKwP,MAAMmgB,SACP,2CACA,GAEN3W,UAAU,gBACVrd,MAAOqE,KAAKqX,MAAMwjP,QAClB58P,KAAK,OACLyvH,SAAU,SAACllH,GACT,EAAKs0P,eAAet0P,EAAE5C,OAAOjK,MAC9B,EACD+0H,OAAQ1wH,KAAKg8P,eAEgB,IAA9Bh8P,KAAKqX,MAAMukP,qBACsBv+P,IAAhC2C,KAAKwP,MAAMkrP,mBACT,SAAC,oBAAD,CACEz8P,KAAK,UACLmiB,MAAO,CAAEyjG,QAAS,SAFpB,SAI8B,KAA3B7jH,KAAKqX,MAAM8kP,YACRn8P,KAAKqX,MAAM8kP,YACX,0CAIXn8P,KAAKwP,MAAMotP,YACV,UAAC,GAAD,CAAK//K,GAAI,EAAG7jE,UAAU,WAAtB,WACE,mBACA,mBACA,gBAAKA,UAAU,YAAYoH,MAAO,CAAEO,WAAY,IAAhD,UACE,gBACE3H,UAAU,oDACVkoF,QAASlhG,KAAK67P,kBAFhB,qCAUP,UAAA77P,KAAKqX,MAAMqkP,mBAAX,eAAwBrnQ,QAAS,IAChC,gBAAK2kB,UAAU,gBAAf,UACE,eAAIA,UAAU,WAAd,mBACGhZ,KAAKqX,MAAMqkP,mBADd,aACG,EAAwB1oP,KAAI,SAACynP,GAAD,OAC3B,gBAEEvkI,UAAW,SAAC1tH,GAAD,OACT,EAAKgyP,0BAA0BhyP,EAAGiyP,EADzB,EAGXv5J,QAAS,SAAC14F,GAAD,OACP,EAAKgyP,0BAA0BhyP,EAAGiyP,EAD3B,EALX,WASa,OAAVA,QAAU,IAAVA,OAAA,EAAAA,EAAY1kP,QAAS,aACX,OAAV0kP,QAAU,IAAVA,OAAA,EAAAA,EAAYhoN,aACX,iBAAKz5B,UAAU,iBAAf,iBACGyhP,QADH,IACGA,OADH,EACGA,EAAYnxO,MADf,cAXJ,OACOmxO,QADP,IACOA,OADP,EACOA,EAAY9+P,MAFQ,YAuBrCqE,KAAKqX,MAAM4kP,eACX,iCACE,UAAC,GAAD,YACE,SAAC,GAAD,CAAKp/K,GAAI,EAAT,SACG78E,KAAKwP,MAAM2rP,eACV,SAAC,GAAD,CACE/K,OAAK,EACLzzM,MAAO38C,KAAKizP,eAAejzP,KAAKwP,MAAM2rP,cACtC9K,aAAc,kBAAM,EAAK0M,wBAAX,OAIpB,UAAC,GAAD,CAAKlgL,GAAI,EAAG7jE,UAAU,WAAtB,WACE,mBACA,gBAAKA,UAAU,YAAYoH,MAAO,CAAEg+I,cAAe,IAAnD,UACE,gBACEplJ,UAAU,gDACVkoF,QAASlhG,KAAK87P,oBAFhB,4CASL97P,KAAKwP,MAAM4rP,eACV,SAAC,GAAD,CACEhL,OAAK,EACLzzM,MAAO38C,KAAKizP,eAAejzP,KAAKwP,MAAM4rP,cACtC/K,aAAc,kBAAM,EAAK0M,wBAAX,IAGjB/8P,KAAKwP,MAAM6rP,eACV,SAAC,GAAD,CACEjL,OAAK,EACLzzM,MAAO38C,KAAKizP,eAAejzP,KAAKwP,MAAM6rP,cACtChL,aAAc,kBAAM,EAAK0M,wBAAX,IAGjB/8P,KAAKwP,MAAMyrP,OACV,SAAC,GAAD,CACE7K,OAAK,EACLzzM,MAAO38C,KAAKizP,eAAejzP,KAAKwP,MAAMyrP,MACtC5K,aAAc,kBAAM,EAAK0M,wBAAX,KAGlB,UAAC,GAAD,YACE,SAAC,GAAD,CAAKhuH,GAAI,GAAI0O,GAAI,EAAjB,SACGz9I,KAAKwP,MAAMwrP,SACV,SAAC,GAAD,CACE5K,OAAK,EACLzzM,MAAO38C,KAAKizP,eAAejzP,KAAKwP,MAAMwrP,QACtC3K,aAAc,kBAAM,EAAK0M,wBAAX,OAIpB,SAAC,GAAD,CAAKhuH,GAAI,GAAI0O,GAAI,EAAjB,SACGz9I,KAAKwP,MAAMurP,UACV,iCACE,SAAC,GAAD,CACE3K,OAAK,EACLzzM,MAAO38C,KAAKizP,eAAejzP,KAAKwP,MAAMurP,SACtC1K,aAAc,kBAAM,EAAK0M,wBAAX,IAGd,MADD,UAAC/8P,KAAKizP,eAAejzP,KAAKwP,MAAMurP,SAASp/P,aAAzC,QAAkD,MAEjD,SAAC,oBAAD,CACEsC,KAAK,UACLmiB,MAAO,CAAEyjG,QAAS,QAASjjG,WAAY,IAFzC,yCAWT5gB,KAAKwP,MAAM0rP,UACV,SAAC,GAAD,CACE9K,OAAK,EACLzzM,MAAO38C,KAAKizP,eAAejzP,KAAKwP,MAAM0rP,SACtC7K,aAAc,kBAAM,EAAK0M,wBAAX,QAKtB,UAAC,GAAD,YACE,SAAC,GAAD,CAAKlgL,GAAI,EAAT,SACG78E,KAAKwP,MAAMwtP,cACV,SAAC,GAAD,CACE5M,OAAK,EACLzzM,MAAO38C,KAAKizP,eAAejzP,KAAKwP,MAAMwtP,iBAI3Ch9P,KAAKwP,MAAMytP,iBACV,SAAC,GAAD,CAAKpgL,GAAI,EAAT,SACG78E,KAAKwP,MAAMytP,iBACV,SAAC,GAAD,CACE7M,OAAK,EACLzzM,MAAO38C,KAAKizP,eAAejzP,KAAKwP,MAAMytP,2BASvD,KAriBH,GAA6B70I,EAAAA,WCxBhB80I,GAAb,8BACE,WAAY1tP,GAAwB,IAAD,oBACjC,cAAMA,IACD6H,MAAQ,CACX86O,aAAa,EACbgL,WAAW,EACXC,SAAgC,IAAvB,EAAK5tP,MAAM4tP,cAA2C//P,IAAvB,EAAKmS,MAAM4tP,SAErD,EAAKC,SAAW,EAAKA,SAAS7+P,KAAd,MAPiB,CAQlC,CATH,4CAWE,WACMwB,KAAKqX,MAAM86O,cAAgBnyP,KAAKwP,MAAM2iP,aACxCnyP,KAAK6tE,SAAS,CAAEskL,YAAanyP,KAAKwP,MAAM2iP,mBAEjB90P,IAAvB2C,KAAKwP,MAAM4tP,SACXp9P,KAAKqX,MAAM+lP,UAAYp9P,KAAKwP,MAAM4tP,SAElCp9P,KAAK6tE,SAAS,CAAEuvL,QAASp9P,KAAKwP,MAAM4tP,SACvC,GAnBH,+BAqBE,WACMp9P,KAAKqX,MAAM86O,cAAgBnyP,KAAKwP,MAAM2iP,aACxCnyP,KAAK6tE,SAAS,CAAEskL,YAAanyP,KAAKwP,MAAM2iP,aAC3C,GAxBH,sBA0BE,WACMnyP,KAAKwP,MAAM8tP,YACbt9P,KAAKwP,MAAM8tP,YAAW,GAExBt9P,KAAK6tE,SAAS,CAAEsvL,WAAW,GAC5B,GA/BH,0BAiCE,WACE,MAAO,YACR,GAnCH,oBAqCE,WAAU,IAAD,iBACP,GACEn9P,KAAKqX,MAAM86O,cACVnyP,KAAKwP,MAAMmtC,MAAMhhD,OAASqE,KAAKwP,MAAMmtC,MAAM61M,UAE5C,MAAO,GAET,IAAIT,EAAkC,GACtCA,EAAWlxP,KAAK,CACdmxP,YAAY,EACZC,aAAa,EACb5iP,SAAS,yBAAMrP,KAAKwP,MAAMmtC,MAAM5mC,UAGlCg8O,EAAWlxP,KAAK,CACdmxP,YAAY,EACZC,aAAa,EACb5iP,SACE,wCACGrP,KAAKwP,MAAM+tP,sBADd,QAEKv9P,KAAKwP,MAAMmtC,MAAMkzM,cAAgBxH,GAAYv1P,KAC1C,GACAkN,KAAKwP,MAAMmtC,MAAMhhD,UAK7B,IAAI61P,GAAqB,UACvBxxP,KAAKwP,MAAM+tP,sBADY,QAEtBv9P,KAAKwP,MAAMmtC,MAAMkzM,cAAgBxH,GAAYv1P,MAE1CkN,KAAKwP,MAAMmtC,MAAMhhD,OAGnB,GADA,eAIJ,OAFIqE,KAAKwP,MAAMgiP,aAAYA,EAAaxxP,KAAKwP,MAAMgiP,aAGjD,iCACE,SAAC,GAAD,CACEA,WAAYA,EACZtwJ,QAAS,kBAAM,EAAKrzB,SAAS,CAAEsvL,WAAW,GAAjC,EACTpL,WAAYA,EACZnJ,QAAO,UAAE5oP,KAAKwP,MAAMo5O,eAAb,aAAwBvrP,KAEjC,UAAC,GAAD,CACEmpP,WAAW,UACX9yO,KAAI,UAAE1T,KAAKwP,MAAMyvF,iBAAb,QAA0B,KAC9By8E,MAAO17K,KAAKqX,MAAM8lP,UAClB5gF,OAAQ,WACN,EAAK8gF,UACN,EACD9W,UAAQ,EAPV,WASE,SAAC,UAAD,CAAchoE,aAAW,KACzB,UAAC,QAAD,YACE,eAAIvlK,UAAU,qBAAd,mBACGhZ,KAAKwP,MAAMuG,aADd,QACuB/V,KAAKwP,MAAMmtC,MAAM5mC,QAEvC/V,KAAKwP,MAAMixF,YAEd,SAAC,UAAD,WACE,mBACE9wE,UAAW3vB,KAAKqX,MAAM+lP,QACtBpkP,UAAU,4BACVkoF,QAAS,WACP,EAAKm8J,UACN,EALH,yBAaT,KAhHH,GAA8Bj1I,EAAAA,WCJTo1I,GAAAA,SAAAA,GAAAA,EAAAA,EAAAA,GAAAA,IAAAA,EAAAA,EAAAA,GAGnB,WAAYhuP,GAAa,IAAD,oBACtB,cAAMA,IACD6H,MAAQ,CACXyvJ,SAAS,EACTo3C,SAAU,KACVjtJ,KAAM,EACNirM,YAAa,GACbuB,WAAY,KACZthN,OAAQ,KACRuhN,gBAAgB,GAElB,EAAK9jN,aAAe,EAAKA,aAAap7C,KAAlB,MACpB,EAAKm/P,aAAe,EAAKA,aAAan/P,KAAlB,MAEpB,EAAKkxC,KAAO,EAAKA,KAAKlxC,KAAV,MACZ,EAAKusB,KAAO,EAAKA,KAAKvsB,KAAV,MACZ,EAAKo/P,cAAgB,EAAKA,cAAcp/P,KAAnB,MAhBC,CAiBvB,CAghBD,OAhhBC,oCAED,WACEsmP,GAAkBI,cAAc,CAAE9jP,KAAM,aACxC,IAAItC,EAAUkB,KAAKisK,aACnBjsK,KAAK6tE,SAAS,CAAEqwI,SAAUp/M,EAAQo/M,WAClCl+M,KAAK69P,YAAY,WAClB,4BAED,SAAYvE,GAAqB,IAAD,OAC9BD,GAAYC,GACTn5P,MAAK,SAAC5E,GACL,IAAIuD,EAAU,EAAKmtK,aACfiwF,EAAc3gQ,EAAS1B,KAE3B,GAAyB,OAArBiF,EAAQo/M,SAAmB,CAC7B,IAAI/hK,EAAS,IAAIo9M,GACjBp9M,EAAO2hN,SACLh/P,EAAQo/M,SACRg+C,GACA,EACA,EAAKtiN,cAEP,EAAKi0B,SAAS,CACZ1xB,OAAQA,EACR2qH,SAAS,EACTo1F,YAAaA,GAEhB,CACF,IACA1mP,OAAM,SAACtS,GAC4B,MAA9BA,EAAM3H,SAASw4O,YACjBygB,MAAM,eAET,GACJ,8BAED,WAAyB,IAAD,EAClB11P,EAAUkB,KAAKisK,aACfgrF,EACuD,MAAzDj3P,KAAKqX,MAAM8kC,OAAO82M,eAAe,cAAct3P,MAE7CoiQ,EAAa,EA4BjB,OA7BgB,UAAAj/P,EAAQo/M,gBAAR,eAAkBjgN,QAAS69M,GAAa+4C,qBAEtCoC,EAChB8G,EAAa,EAET/9P,KAAKqX,MAAM6mM,SAASjgN,OAAS69M,GAAak7C,yBAE1C,CACEn7C,GAAgBmiD,mBAChBniD,GAAgBoiD,wBAChBztP,SAASxQ,KAAKqX,MAAM6mM,SAASggD,UAE3Bl+P,KAAKqX,MAAM6mM,SAASigD,yCACtBJ,IAIA/9P,KAAKqX,MAAM6mM,SAASkgD,eAAiBriD,GAAasiD,WAChDr+P,KAAKqX,MAAM6mM,SAASogD,gBAAkBtiD,GAAcuiD,MACtDR,GAAc,GAChBA,GAAc,GAEd/9P,KAAKqX,MAAM6mM,SAASkgD,eAAiBriD,GAAayiD,aAE9Cx+P,KAAKqX,MAAM6mM,SAASugD,6BAA8BV,GAAc,EAC/DA,GAAc,GAIlBA,CACR,8BACD,WAAyB,IAAD,EAClBW,EAAa,EACb5/P,EAAUkB,KAAKisK,aACfgrF,EACuD,MAAzDj3P,KAAKqX,MAAM8kC,OAAO82M,eAAe,cAAct3P,MA0EjD,OAzEgB,UAAAmD,EAAQo/M,gBAAR,eAAkBjgN,QAAS69M,GAAa+4C,qBACtCoC,EAChByH,EAAa,GAET1+P,KAAKqX,MAAM8kC,OAAO82M,eAAe,mBAAmBt3P,OACtD+iQ,IACE1+P,KAAKqX,MAAM8kC,OAAO82M,eAAe,yBAAyBt3P,MAAQ,GACpE+iQ,IAGE1+P,KAAKqX,MAAM6mM,SAASjgN,OAAS69M,GAAak7C,yBAE1C,CACEn7C,GAAgBmiD,mBAChBniD,GAAgBoiD,wBAChBztP,SAASxQ,KAAKqX,MAAM6mM,SAASggD,UAG7Bl+P,KAAKqX,MAAM8kC,OAAO82M,eAChB,2CACAt3P,OAEEqE,KAAKqX,MAAM8kC,OAAO82M,eAAe,iBAAiBt3P,OACpD+iQ,KAIF1+P,KAAKqX,MAAM8kC,OAAO82M,eAAe,gBAAgBt3P,OACnD+iQ,IACE1+P,KAAKqX,MAAM6mM,SAASkgD,eAAiBriD,GAAasiD,WAChDr+P,KAAKqX,MAAM8kC,OAAO82M,eAAe,iBAAiBt3P,OACpD+iQ,IACE1+P,KAAKqX,MAAM8kC,OAAO82M,eAAe,yBAAyBt3P,OAC5D+iQ,IAIY,OAFZ1+P,KAAKqX,MAAM8kC,OAAO82M,eAChB,6CACAt3P,OAEF+iQ,IAEA1+P,KAAKqX,MAAM8kC,OAAO82M,eAAe,2BAA2Bt3P,OAC5D2qB,WACEtmB,KAAKqX,MAAM8kC,OACR82M,eAAe,2BACft3P,MAAMg4P,WAAW,SAAK,KACvB,GAEJ+K,IACE1+P,KAAKqX,MAAM6mM,SAASogD,gBAAkBtiD,GAAc2iD,IAEpD3+P,KAAKqX,MAAM8kC,OAAO82M,eAChB,uCACAt3P,OAEF+iQ,KAGJ1+P,KAAKqX,MAAM6mM,SAASkgD,eAAiBriD,GAAayiD,aAE9Cx+P,KAAKqX,MAAM8kC,OAAO82M,eAAe,aAAat3P,OAAO+iQ,IAG1C,OADb1+P,KAAKqX,MAAM8kC,OAAO82M,eAAe,gCAC9Bt3P,OAEH+iQ,IACE1+P,KAAKqX,MAAM6mM,SAASugD,8BAClBz+P,KAAKqX,MAAM8kC,OAAO82M,eAAe,iBAAiBt3P,OACpD+iQ,OAKHA,CACR,8BAED,SAAcjB,GAA4B,IAAD,OACnCjK,EAAqB,GACzB,IAAK,IAAIvjF,KAAajwK,KAAKqX,MAAM8kC,OAAOA,OAAQ,CAC9C,IAAIvrC,EAAI5Q,KAAKqX,MAAM8kC,OAAOA,OAAO8zH,GAC7Br/J,EAAEytM,SAASm1C,EAAY3yP,KAAK+P,EACjC,CAGD,IAAI9R,EAAUkB,KAAKisK,aAKnB,GAJAntK,EAAQo/M,SAAUg5C,0BACQ,IAAvBl3P,KAAK4+P,gBAAyB5+P,KAAK6+P,gBACtC//P,EAAQ6/M,mBAEmB,IAAvB60C,EAAYn/P,OAAhB,CAMA,IAAIyqQ,EAAc9+P,KAAKqX,MAAM8kC,OAAO4iN,YAClC,aACA/+P,KAAKqX,MAAM6mM,SAASo2C,WACpBt0P,KAAKqX,MAAM6mM,UAIbv/M,KAAAA,KAAW,mBAAoBmgQ,GAAa3+P,MAAK,SAAC5E,GAChD,IAAK,IAAI8E,EAAI,EAAGA,EAAImzP,EAAYn/P,OAAQgM,IAAK,CAC3C,IAAIuQ,EAAI4iP,EAAYnzP,GACpBuQ,EAAEm/O,cAAgBn/O,EAAEjV,MACpBiV,EAAEytM,SAAU,CACb,CAED,EAAKxwI,SAAS,CAAE4vL,WAAYA,GAC7B,GAhBA,MAJKA,GACFz9P,KAAK6tE,SAAS,CAAE4vL,WAAYA,GAoBjC,6BAED,SAAa5+O,GACX,IAAMjZ,EAASiZ,EAAMjZ,OACfjK,GACa,aAAhBiK,EAAO3H,KAAsB2H,EAAOi8H,QAAUj8H,EAAOjK,QACtDiK,EAAOk+C,aACP,GACI1iD,EAAOwE,EAAOxE,MAAQwE,EAAO8S,aAAa,QAE5CwlM,EAAWl+M,KAAKqX,MAAM6mM,SAE1B,GAAK98M,EAAL,CAEA,IAAIwP,EAAI5Q,KAAKqX,MAAM8kC,OAAO82M,eAAe7xP,GAGrC+6C,EAASn8C,KAAKqX,MAAM8kC,OACpBA,IACEvrC,EAAEi/O,cAAgBxH,GAAY2H,UAChC7zM,EAAOqgN,YACLx8P,KAAKqX,MAAM6mM,SACX98M,EAFF,OAGEzF,QAHF,IAGEA,OAHF,EAGEA,EAAOg4P,WAAW,IAAK,IAAIA,WAAW,SAAK,KAE7Cx3M,EAAOsgN,iBACLr7P,EACA0xP,GACEx0L,OAAM,OAAC3iE,QAAD,IAACA,OAAD,EAACA,EAAOg4P,WAAW,IAAK,IAAIA,WAAW,SAAK,SAItDx3M,EAAOqgN,YAAYx8P,KAAKqX,MAAM6mM,SAAU98M,EAAMzF,GAC9CwgD,EAAOsgN,iBAAiBr7P,EAAMzF,KAGlCqE,KAAK6tE,SAAS,CAAE1xB,OAAQn8C,KAAKqX,MAAM8kC,OAAQ+hK,SAAUA,GAxBpC,CAyBlB,6BAED,SAAar/L,GACXA,EAAMy0B,iBACFtzC,KAAKwP,MAAMub,MACb/qB,KAAK49P,cAAc,MACnB59P,KAAKwP,MAAMub,QAEX/qB,KAAK49P,cAAc,WAGtB,qBAED,WACM59P,KAAKwP,MAAMkgC,MACb1vC,KAAK49P,cAAc,MACnB59P,KAAKwP,MAAMkgC,QAEX1vC,KAAK49P,cAAc,UAEtB,qBAED,WACM59P,KAAKwP,MAAMub,MACb/qB,KAAK49P,cAAc,MACnB59P,KAAKwP,MAAMub,QAEX/qB,KAAK49P,cAAc,qBAEtB,uBAED,WAAU,IAAD,qBACH9+P,EAAUkB,KAAKisK,aAEnB,GAAIjsK,KAAKqX,MAAMyvJ,QACb,OACE,+BACE,wBACE,2CAMR,GAAI9mK,KAAKqX,MAAMomP,WAGb,OAAO,SAACnsD,GAAD,CAAU3nK,GAAI3pC,KAAKqX,MAAMomP,aAGlC,IAAIxG,EACuD,MAAzDj3P,KAAKqX,MAAM8kC,OAAO82M,eAAe,cAAct3P,MAEjD,OAEE,+BACE,SAAC8kN,GAAD,CAAYznM,UAAU,aAAaozB,OAAO,mDAA1C,UACE,SAAC,GAAD,WACE,SAAC,GAAD,CAAKpzB,UAAU,SAAf,UACE,UAAC,GAAD,CAAMgmP,SAAUh/P,KAAK29P,aAArB,WACE,SAAC,GAAD,CAAK3kP,UAAU,gBAAf,UACE,iCACG,UAAAla,EAAQo/M,gBAAR,eAAkBjgN,QACjB69M,GAAak7C,2BACb,cAAGh+O,UAAU,UAAb,uCAED,UAAAla,EAAQo/M,gBAAR,eAAkBjgN,QACjB69M,GAAa+4C,oBACboC,IACE,cAAGj+O,UAAU,UAAb,6NAOH,UAAAla,EAAQo/M,gBAAR,eAAkBjgN,QACjB69M,GAAa+4C,sBACb,OAAEoC,QAAF,IAAEA,GAAAA,KACA,cAAGj+O,UAAU,UAAb,gGAOR,SAAC,GAAD,CAAWA,UAAU,YAArB,UACE,SAAC,GAAD,CAAKA,UAAU,WAAf,UACE,UAAC,GAAD,CACEgkM,IAAK,EACLt5F,UAAU,aACV1qG,UAAU,aAHZ,WAKG,UAAAla,EAAQo/M,gBAAR,eAAkBjgN,QACjB69M,GAAa+4C,qBACb,SAAC3C,GAAD,CACEC,YAAanyP,KAAKqX,MAAM4nP,UACxBtiN,MAAO38C,KAAKqX,MAAM8kC,OAAO82M,eAAe,kBAI1C,UAAAn0P,EAAQo/M,gBAAR,eAAkBjgN,QAClB69M,GAAa+4C,oBADb,OAECoC,QAFD,IAECA,GAAAA,KACD,iCACE,SAACiG,GAAD,CACE/K,YAAanyP,KAAKqX,MAAM4nP,UACxBtiN,MAAO38C,KAAKqX,MAAM8kC,OAAO82M,eACvB,mBAEFqK,WAAYt9P,KAAK49P,cACjBn9J,SACE,SAAC,GAAD,CACEy7J,YAAal8P,KAAKqX,MAAM6kP,YACxBrjD,OAAQ74M,KAAKqX,MAAM6mM,SACnB/hK,OAAQn8C,KAAKqX,MAAM8kC,OACnBvC,aAAc55C,KAAK45C,aACnBihN,QAAQ,kBACRE,QAAQ,UACR6B,WAAW,EACXC,qBACE,UAAA/9P,EAAQo/M,gBAAR,eAAkBjgN,QAClB69M,GAAa+4C,mBACT,oIACA,gDAKX,UAAA/1P,EAAQo/M,gBAAR,eAAkBjgN,QACjB69M,GAAa+4C,qBAEb,SAAC3C,GAAD,CACEC,YAAanyP,KAAKqX,MAAM4nP,UACxBtiN,MAAO38C,KAAKqX,MAAM8kC,OAAO82M,eACvB,mBAIN,SAACf,GAAD,CACEC,YAAanyP,KAAKqX,MAAM4nP,UACxBtiN,MAAO38C,KAAKqX,MAAM8kC,OAAO82M,eACvB,2BAI6B,YAAhCjzP,KAAKqX,MAAM6mM,SAASggD,SACa,cAAhCl+P,KAAKqX,MAAM6mM,SAASggD,UAElB,gCACGl+P,KAAKqX,MAAM6mM,SAASkgD,eACnBriD,GAAayiD,aAEb,iCACE,SAACtM,GAAD,CACEC,YAAanyP,KAAKqX,MAAM4nP,UACxBtiN,MAAO38C,KAAKqX,MAAM8kC,OAAO82M,eACvB,mCAGJ,SAACf,GAAD,CACEC,YAAanyP,KAAKqX,MAAM4nP,UACxBtiN,MAAO38C,KAAKqX,MAAM8kC,OAAO82M,eACvB,mBAO4B,IADnCjzP,KAAKqX,MAAM6mM,SACTugD,8BACDz+P,KAAKqX,MAAM6mM,SAASkgD,eAClBriD,GAAamjD,WAEb,SAAChN,GAAD,CACEC,YAAanyP,KAAKqX,MAAM4nP,UACxBtiN,MAAO38C,KAAKqX,MAAM8kC,OAAO82M,eACvB,mBAKPjzP,KAAKqX,MAAM6mM,SAASkgD,eACnBriD,GAAasiD,YAEb,iCACE,SAACnM,GAAD,CACEC,YAAanyP,KAAKqX,MAAM4nP,UACxBtiN,MAAO38C,KAAKqX,MAAM8kC,OAAO82M,eACvB,mBAGHjzP,KAAKqX,MAAM6mM,SAASogD,gBACnBtiD,GAAc2iD,KAEd,SAACzM,GAAD,CACEC,YAAanyP,KAAKqX,MAAM4nP,UACxBtiN,MAAO38C,KAAKqX,MAAM8kC,OAAO82M,eACvB,0CAIN,SAACf,GAAD,CACEC,YAAanyP,KAAKqX,MAAM4nP,UACxBtiN,MAAO38C,KAAKqX,MAAM8kC,OAAO82M,eACvB,4BAGJ,SAACf,GAAD,CACEC,YAAanyP,KAAKqX,MAAM4nP,UACxBtiN,MAAO38C,KAAKqX,MAAM8kC,OAAO82M,eACvB,gDAGJ,SAACf,GAAD,CACEC,YAAanyP,KAAKqX,MAAM4nP,UACxBtiN,MAAO38C,KAAKqX,MAAM8kC,OAAO82M,eACvB,mCAObjzP,KAAKqX,MAAM6mM,SAASjgN,OACnB69M,GAAak7C,0BACb,CACEn7C,GAAgBmiD,mBAChBniD,GAAgBoiD,wBAChBztP,SAASxQ,KAAKqX,MAAM6mM,SAASggD,WAE7B,iCACE,SAAChM,GAAD,CACEC,YAAanyP,KAAKqX,MAAM4nP,UACxBtiN,MAAO38C,KAAKqX,MAAM8kC,OAAO82M,eACvB,8CAMF,IAFDjzP,KAAKqX,MAAM6mM,SACTigD,0CAID,SAACjM,GAAD,CACEC,YAAanyP,KAAKqX,MAAM4nP,UACxBtiN,MAAO38C,KAAKqX,MAAM8kC,OAAO82M,eACvB,iCAWtB,UAAC,GAAD,YACE,SAAC,GAAD,WACE,SAAC,GAAD,CAAKj6O,UAAU,aAAf,UACE,SAAC,SAAD,CACE/a,KAAK,SACL2G,GAAG,sBACHmR,MAAM,oBACNmH,SAAO,EACPgkF,QAAS,kBACP,EAAKrzB,SAAS,CAAEoxL,WAAY,EAAK5nP,MAAM4nP,WADhC,SAMf,SAAC,GAAD,CACEv7I,UAAU,aACVs5F,IAAK,EACLhkM,UAAU,6BAHZ,UAKE,UAAC,GAAD,YACE,mBACE/a,KAAK,SACL+a,UAAU,oDACVkoF,QAASlhG,KAAK0vC,KAHhB,mBAOA,mBACEzxC,KAAK,SACL+a,UAAU,wBACVkoF,QAASlhG,KAAK+qB,KAHhB,oCAgBnB,2DAED,kGACQjsB,EAAUkB,KAAKlB,QACjB8F,EAFN,UAEW9F,EAAQm/M,eAFnB,aAEW,EAAiBq2C,WACtBn5P,EAHN,2CAGgDyJ,GAC9CjG,KAAAA,IACOxD,GACJgF,MAAK,SAAC5E,GACL,IAAI2iN,EAAW3iN,EAAS1B,KACxB,EAAKg0E,SAAS,CAAEqwI,SAAUA,EAAUp3C,SAAS,IAC7C,EAAK+2F,YAAY,WAClB,IACAroP,OAAM,SAACtS,GAC4B,MAA9BA,EAAM3H,SAASw4O,YACjBygB,MAAM,eAET,IAfL,kGAFC,MAED,EApiBmBgJ,CAAiBz9C,IAAjBy9C,GACZtrJ,YAAc8rG,GCMhB,IC1BKmhD,GD0BCC,GAAb,8BACI,WAAY5vP,GAAa,IAAD,YACpB,cAAMA,GAEN,IAAI6vP,EAAkC,GACtC7vP,EAAM6vP,WAAW9hQ,SAAQ,SAAC2b,GACtB,IAAIg3C,EAAI1gD,EAAM8vP,UAAU3vP,QAAO,SAAC4C,GAAkC,OAAOA,EAAK8K,WAAanE,CAAS,IAChGqmP,EAAkBrvM,EAAEvgD,QAAO,SAAC4C,GAAsC,OAAOA,EAAKitP,eAAiB3hD,GAA2B4hD,WAAa,IAC3IJ,EAAWx+P,KACP,CACIrD,IAAK0b,EACLovB,KAAMpvB,EACNwmP,MAAO,GACPC,gBAAiB,EACjBC,aAAc,CAAEz7H,YAAa,EAAG/3F,MAAO,4BAA8BlzB,EAAS2mP,OAAQ,GAAIznN,KAAM8X,GAChG4vM,YAAaP,EAAgBlrQ,OAAS,GAGjD,IAED,IAAI0rQ,EAAgC,CAAE57H,YAAa,EAAG/3F,MAAO,yBAA0ByzN,OAAQ,GAAIznN,KAAMinN,GAnBrF,OAqBpB,EAAKhoP,MAAQ,CAAEgC,OAAQ0mP,EAAWjhQ,QAASihQ,GArBvB,CAsBvB,CAvBL,iDAyBI,SAAwBJ,GACpB,OAAIA,EAAkB,GACX,sBACPA,EAAkB,GACX,uBACPA,EAAkB,GACX,uBACPA,EAAkB,IACX,uBACJ,uBACV,GAnCL,0BAqCI,SAAaptP,GACLA,EAAKqtP,cACL5/P,KAAK6tE,SAAS,CAAEx0D,OAAQrZ,KAAKqX,MAAMgC,OAAQva,QAASyT,EAAKqtP,cAEhE,GAzCL,kBA2CI,WACI5/P,KAAK6tE,SAAS,CAAEx0D,OAAQrZ,KAAKqX,MAAMgC,OAAQva,QAASkB,KAAKqX,MAAMgC,QAClE,GA7CL,oBA+CI,WAAU,IAAD,SACCA,EAASrZ,KAAKqX,MAAMgC,OACpBva,EAAUkB,KAAKqX,MAAMvY,QACrBs5C,EAAI,UAAGt5C,EAAQs5C,YAAX,QAAmB,GAIvB4nN,GAF2B,IADblhQ,EAAQqlI,aAAe,GACN,QAAU,UAAY,cAE5B,cAE/B,OACI,UAAC,GAAD,CAAWnrH,UAAU,eAArB,WACI,SAAC,GAAD,WACI,SAAC,GAAD,CAAKA,UAAWgnP,EAAhB,UACI,yBAAI,4BAAO3mP,EAAOwmP,OAAd,cAGZ,gBAAK7mP,UAAU,UACf,iBAAKA,UAAU,SAAf,WACI,gBAAKkoF,QAAS,SAAC14F,GAAD,OAAO,EAAKy3P,MAAZ,EAAd,UAAkC,cAAGjnP,UAAU,kCAAkCoH,MAAO,CAAC+H,MAAO,OAAQxH,UAAW,QACnH,eAAIP,MAAO,CAACwrJ,WAAY,SAAUh3G,MAAO,SAAzC,gCACCxc,EAAKplC,KAAI,SAACT,EAAW2tP,GAAZ,aACN,UAAC,GAAD,YACI,SAAC,GAAD,CAAKlnP,UAAU,YAAf,UACI,gBAAKA,UAAU,aAAf,kBAEJ,SAAC,GAAD,CAAKA,UAAU,6BAAf,UACI,iBAAKkoF,QAAS,SAAC14F,GAAD,OAAO,EAAKo3P,aAAartP,EAAzB,EAAgCyG,UAAU,aAAxD,WACI,iBAAMA,UAAgC,WAArBzG,EAAKitP,aAA4B,iBAAmB,GAArE,mBACKjtP,EAAK+1B,YADV,QACkB/1B,EAAK4tP,aAF3B,QAKI,4BACK5tP,EAAKitP,cAAgB3hD,GAA2BuiD,WAC7C,cAAGpnP,UAAU,qCAChBzG,EAAKutP,cACF,cAAG9mP,UAAU,0CAChBzG,EAAKitP,cAAgB3hD,GAA2B4hD,cAC7C,SAAClQ,GAAD,CAAS3G,QAAS,CAAE,UAAa,GAAI,MAAS,eAAgB,QAAWr2O,EAAK8tP,UAA9E,UACI,cAAGrnP,UAAU,sDAjB3BknP,EADJ,SA4BzB,KA/FL,GAAkCt9I,EAAAA,YC1BlC,SAAYu8I,GAAAA,EAAAA,EAAAA,SAAAA,GAAAA,WAAAA,EAAAA,EAAAA,SAAAA,GAAAA,UAAAA,CAAZ,CAAYA,KAAAA,GAAAA,CAAAA,IAcL,IAAMmB,GAAb,+HAEI,WAEC,GAJL,oBAMI,WAAU,IAAD,EACL,OACI,gCACKtgQ,KAAKwP,MAAMk0G,YAAcy7I,GAAiBoB,WAAY,+BACnD,SAAC,GAAD,CAAKngP,MAAO,CAAEO,UAAW,IAAM3H,UAAU,qBAAzC,UACI,SAAC,GAAD,CAAK+1H,GAAI,GAAI3uH,MAAO,CAAEoZ,QAAS,GAA/B,UACI,gBAAKxgB,UAAS,8FAA+EhZ,KAAKwP,MAAMgxP,gBAA1F,QAAsG,IAApH,SACKxgQ,KAAKwP,MAAM+J,iBAM3BvZ,KAAKwP,MAAMk0G,YAAcy7I,GAAiBsB,WACvC,SAAC,GAAD,WACI,UAAC,GAAD,CAAKrgP,MAAO,CAAEO,UAAW,IAAM3H,UAAU,qBAAzC,WACI,SAAC,GAAD,CAAK+1H,GAAI,EAAG3uH,MAAO,CAAEoZ,QAAS,GAA9B,UACI,gBAAKxgB,UAAU,eAAeoH,MAAO,CAAE5F,MAAO,QAA9C,UACI,gBAAKxB,UAAU,2BAAf,UAA0C,cAAGA,UAAU,uBAG/D,SAAC,GAAD,CAAK+1H,GAAI,GAAI3uH,MAAO,CAAEoZ,QAAS,EAAG8kI,YAAa,GAA/C,UACI,gBAAKtlJ,UAAU,8EAAf,SAA8FhZ,KAAKwP,MAAM+J,oBAOpI,KAnCL,GAAiCqpG,EAAAA,WCV1B,SAAS89I,GAAgBnnP,EAAUonP,GACxC,IAII3yP,EAASjK,OAAO7E,OAAO,MAO3B,OANIqa,GAAU2hJ,EAAAA,SAAAA,IAAa3hJ,GAAU,SAAUtY,GAC7C,OAAOA,CACR,IAAE1D,SAAQ,SAAU+b,GAEnBtL,EAAOsL,EAAM9b,KATF,SAAgB8b,GAC3B,OAAOqnP,IAASx2F,EAAAA,EAAAA,gBAAe7wJ,GAASqnP,EAAMrnP,GAASA,CACxD,CAOqBsnP,CAAOtnP,EAC5B,IACMtL,CACR,CAiED,SAASs6M,GAAQhvM,EAAOtT,EAAMwJ,GAC5B,OAAsB,MAAfA,EAAMxJ,GAAgBwJ,EAAMxJ,GAAQsT,EAAM9J,MAAMxJ,EACxD,CAaM,SAAS66P,GAAoB75I,EAAW85I,EAAkBttF,GAC/D,IAAIutF,EAAmBL,GAAgB15I,EAAUztG,UAC7CA,EA/DC,SAA4Bm2B,EAAM3kB,GAIvC,SAASi2O,EAAexjQ,GACtB,OAAOA,KAAOutB,EAAOA,EAAKvtB,GAAOkyC,EAAKlyC,EACvC,CALDkyC,EAAOA,GAAQ,CAAC,EAChB3kB,EAAOA,GAAQ,CAAC,EAQhB,IAcI1qB,EAdA4gQ,EAAkBl9P,OAAO7E,OAAO,MAChCgiQ,EAAc,GAElB,IAAK,IAAIC,KAAWzxN,EACdyxN,KAAWp2O,EACTm2O,EAAY7sQ,SACd4sQ,EAAgBE,GAAWD,EAC3BA,EAAc,IAGhBA,EAAYrgQ,KAAKsgQ,GAKrB,IAAIC,EAAe,CAAC,EAEpB,IAAK,IAAIC,KAAWt2O,EAAM,CACxB,GAAIk2O,EAAgBI,GAClB,IAAKhhQ,EAAI,EAAGA,EAAI4gQ,EAAgBI,GAAShtQ,OAAQgM,IAAK,CACpD,IAAIihQ,EAAiBL,EAAgBI,GAAShhQ,GAC9C+gQ,EAAaH,EAAgBI,GAAShhQ,IAAM2gQ,EAAeM,EAC5D,CAGHF,EAAaC,GAAWL,EAAeK,EACxC,CAGD,IAAKhhQ,EAAI,EAAGA,EAAI6gQ,EAAY7sQ,OAAQgM,IAClC+gQ,EAAaF,EAAY7gQ,IAAM2gQ,EAAeE,EAAY7gQ,IAG5D,OAAO+gQ,CACR,CAmBgBG,CAAmBT,EAAkBC,GAmCpD,OAlCAh9P,OAAOsC,KAAKkT,GAAUhc,SAAQ,SAAUC,GACtC,IAAI8b,EAAQC,EAAS/b,GACrB,IAAK2sK,EAAAA,EAAAA,gBAAe7wJ,GAApB,CACA,IAAIkoP,EAAWhkQ,KAAOsjQ,EAClB9+B,EAAWxkO,KAAOujQ,EAClBU,EAAYX,EAAiBtjQ,GAC7BkkQ,GAAYv3F,EAAAA,EAAAA,gBAAes3F,KAAeA,EAAUjyP,MAAMuiK,IAE1DiwD,GAAaw/B,IAAWE,EAQhB1/B,IAAWw/B,GAAYE,EAMxB1/B,GAAWw/B,IAAWr3F,EAAAA,EAAAA,gBAAes3F,KAI9CloP,EAAS/b,IAAOy9J,EAAAA,EAAAA,cAAa3hJ,EAAO,CAClCk6J,SAAUA,EAASh1K,KAAK,KAAM8a,GAC9By4J,GAAI0vF,EAAUjyP,MAAMuiK,GACpB9J,KAAMqgD,GAAQhvM,EAAO,OAAQ0tG,GAC7B6qD,MAAOy2C,GAAQhvM,EAAO,QAAS0tG,MAXjCztG,EAAS/b,IAAOy9J,EAAAA,EAAAA,cAAa3hJ,EAAO,CAClCy4J,IAAI,IAVNx4J,EAAS/b,IAAOy9J,EAAAA,EAAAA,cAAa3hJ,EAAO,CAClCk6J,SAAUA,EAASh1K,KAAK,KAAM8a,GAC9By4J,IAAI,EACJ9J,KAAMqgD,GAAQhvM,EAAO,OAAQ0tG,GAC7B6qD,MAAOy2C,GAAQhvM,EAAO,QAAS0tG,IAZD,CA+BnC,IACMztG,CACR,CClID,IAAIw9D,GAAShzE,OAAOgzE,QAAU,SAAUzyE,GACtC,OAAOP,OAAOsC,KAAK/B,GAAK0O,KAAI,SAAUigD,GACpC,OAAO3uD,EAAI2uD,EACZ,GACF,EAuBG0uM,GAA+B,SAAUxgG,GAG3C,SAASwgG,EAAgBnyP,EAAO1Q,GAC9B,IAAI0oH,EAIA0uD,GAFJ1uD,EAAQ25C,EAAiBjgK,KAAKlB,KAAMwP,EAAO1Q,IAAYkB,MAE9Bk2K,aAAa13K,KAAKqoH,EAAuBW,IAUlE,OAPAA,EAAMnwG,MAAQ,CACZ2lL,aAAc,CACZprB,YAAY,GAEdsE,aAAcA,EACd0rF,aAAa,GAERp6I,CACR,CAlBD2qD,GAAewvF,EAAiBxgG,GAoBhC,IAAIiR,EAASuvF,EAAgB3iQ,UAqE7B,OAnEAozK,EAAO5uB,kBAAoB,WACzBxjJ,KAAKq8J,SAAU,EACfr8J,KAAK6tE,SAAS,CACZmvH,aAAc,CACZprB,YAAY,IAGjB,EAEDQ,EAAOliB,qBAAuB,WAC5BlwJ,KAAKq8J,SAAU,CAChB,EAEDslG,EAAgBnvJ,yBAA2B,SAAkCwU,EAAWn1G,GACtF,IDiBmCrC,EAAOgkK,ECjBtCstF,EAAmBjvP,EAAK0H,SACxB28J,EAAerkK,EAAKqkK,aAExB,MAAO,CACL38J,SAFgB1H,EAAK+vP,aDeYpyP,ECbcw3G,EDaPwsD,ECbkB0C,EDcvDwqF,GAAgBlxP,EAAM+J,UAAU,SAAUD,GAC/C,OAAO2hJ,EAAAA,EAAAA,cAAa3hJ,EAAO,CACzBk6J,SAAUA,EAASh1K,KAAK,KAAM8a,GAC9By4J,IAAI,EACJJ,OAAQ22C,GAAQhvM,EAAO,SAAU9J,GACjCqiK,MAAOy2C,GAAQhvM,EAAO,QAAS9J,GAC/By4J,KAAMqgD,GAAQhvM,EAAO,OAAQ9J,IAEhC,KCtB6EqxP,GAAoB75I,EAAW85I,EAAkB5qF,GAC3H0rF,aAAa,EAEhB,EAGDxvF,EAAO8D,aAAe,SAAsB58J,EAAOb,GACjD,IAAIopP,EAAsBnB,GAAgB1gQ,KAAKwP,MAAM+J,UACjDD,EAAM9b,OAAOqkQ,IAEbvoP,EAAM9J,MAAMgkK,UACdl6J,EAAM9J,MAAMgkK,SAAS/6J,GAGnBzY,KAAKq8J,SACPr8J,KAAK6tE,UAAS,SAAUx2D,GACtB,IAAIkC,EAAW0pG,EAAS,CAAC,EAAG5rG,EAAMkC,UAGlC,cADOA,EAASD,EAAM9b,KACf,CACL+b,SAAUA,EAEb,IAEJ,EAED64J,EAAOh/D,OAAS,WACd,IAAI0U,EAAc9nH,KAAKwP,MACnB44G,EAAYN,EAAY7U,UACxB6uJ,EAAeh6I,EAAYg6I,aAC3BtyP,EAAQ4b,EAA8B08F,EAAa,CAAC,YAAa,iBAEjEk1E,EAAeh9L,KAAKqX,MAAM2lL,aAC1BzjL,EAAWw9D,GAAO/2E,KAAKqX,MAAMkC,UAAUvG,IAAI8uP,GAK/C,cAJOtyP,EAAMmiK,cACNniK,EAAMqiK,aACNriK,EAAMy4J,KAEK,OAAd7/C,EACkBxF,EAAAA,cAAoBkxD,GAAuBjK,SAAU,CACvEluK,MAAOqhM,GACNzjL,GAGeqpG,EAAAA,cAAoBkxD,GAAuBjK,SAAU,CACvEluK,MAAOqhM,GACOp6E,EAAAA,cAAoBwF,EAAW54G,EAAO+J,GACvD,EAEMooP,CACR,CA3FkC,CA2FjC/+I,EAAAA,WAEF++I,GAAgBlvJ,UAyDZ,CAAC,EACLkvJ,GAAgBvvJ,aA5KG,CACjBa,UAAW,MACX6uJ,aAAc,SAAsBxoP,GAClC,OAAOA,CACR,GAyKH,UC3KI+lK,GAAc,SAAqB5mK,EAAMrI,GAC3C,OAAOqI,GAAQrI,GAAWA,EAAQhc,MAAM,KAAKmJ,SAAQ,SAAU0D,GAC7D,OAAO8gQ,GAAetpP,EAAMxX,EAC7B,GACF,EAwEG+gQ,GAA6B,SAAU7gG,GAGzC,SAAS6gG,IAGP,IAFA,IAAIx6I,EAEK1vG,EAAO9O,UAAU3U,OAAQ0U,EAAO,IAAInG,MAAMkV,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/EhP,EAAKgP,GAAQ/O,UAAU+O,GAgHzB,OA7GAyvG,EAAQ25C,EAAiBjgK,KAAK2B,MAAMs+J,EAAkB,CAACnhK,MAAMlM,OAAOiV,KAAU/I,MACxEiiQ,eAAiB,CACrBtwF,OAAQ,CAAC,EACTE,MAAO,CAAC,EACR5J,KAAM,CAAC,GAGTzgD,EAAM4rD,QAAU,SAAUN,EAAWC,GACnC,IAAImvF,EAAwB16I,EAAM26I,iBAAiBrvF,EAAWC,GAC1Dt6J,EAAOypP,EAAsB,GAC7BrvF,EAAYqvF,EAAsB,GAEtC16I,EAAM46I,cAAc3pP,EAAM,QAE1B+uG,EAAMw3D,SAASvmK,EAAMo6J,EAAY,SAAW,QAAS,QAEjDrrD,EAAMh4G,MAAM4jK,SACd5rD,EAAMh4G,MAAM4jK,QAAQN,EAAWC,EAElC,EAEDvrD,EAAM6rD,WAAa,SAAUP,EAAWC,GACtC,IAAIsvF,EAAyB76I,EAAM26I,iBAAiBrvF,EAAWC,GAC3Dt6J,EAAO4pP,EAAuB,GAG9BpkQ,EAFYokQ,EAAuB,GAEhB,SAAW,QAElC76I,EAAMw3D,SAASvmK,EAAMxa,EAAM,UAEvBupH,EAAMh4G,MAAM6jK,YACd7rD,EAAMh4G,MAAM6jK,WAAWP,EAAWC,EAErC,EAEDvrD,EAAM2rD,UAAY,SAAUL,EAAWC,GACrC,IAAIuvF,EAAyB96I,EAAM26I,iBAAiBrvF,EAAWC,GAC3Dt6J,EAAO6pP,EAAuB,GAG9BrkQ,EAFYqkQ,EAAuB,GAEhB,SAAW,QAElC96I,EAAM46I,cAAc3pP,EAAMxa,GAE1BupH,EAAMw3D,SAASvmK,EAAMxa,EAAM,QAEvBupH,EAAMh4G,MAAM2jK,WACd3rD,EAAMh4G,MAAM2jK,UAAUL,EAAWC,EAEpC,EAEDvrD,EAAMwgD,OAAS,SAAU8K,GACvB,IACIr6J,EADyB+uG,EAAM26I,iBAAiBrvF,GAClB,GAElCtrD,EAAM46I,cAAc3pP,EAAM,UAE1B+uG,EAAM46I,cAAc3pP,EAAM,SAE1B+uG,EAAMw3D,SAASvmK,EAAM,OAAQ,QAEzB+uG,EAAMh4G,MAAMw4J,QACdxgD,EAAMh4G,MAAMw4J,OAAO8K,EAEtB,EAEDtrD,EAAM+rD,UAAY,SAAUT,GAC1B,IACIr6J,EADyB+uG,EAAM26I,iBAAiBrvF,GAClB,GAElCtrD,EAAMw3D,SAASvmK,EAAM,OAAQ,UAEzB+uG,EAAMh4G,MAAM+jK,WACd/rD,EAAMh4G,MAAM+jK,UAAUT,EAEzB,EAEDtrD,EAAMgsD,SAAW,SAAUV,GACzB,IACIr6J,EADyB+uG,EAAM26I,iBAAiBrvF,GAClB,GAElCtrD,EAAM46I,cAAc3pP,EAAM,QAE1B+uG,EAAMw3D,SAASvmK,EAAM,OAAQ,QAEzB+uG,EAAMh4G,MAAMgkK,UACdhsD,EAAMh4G,MAAMgkK,SAASV,EAExB,EAEDtrD,EAAM26I,iBAAmB,SAAUrvF,EAAWC,GAC5C,OAAOvrD,EAAMh4G,MAAMwqJ,QAAU,CAACxyC,EAAMh4G,MAAMwqJ,QAAQ5qI,QAAS0jJ,GACzD,CAACA,EAAWC,EACf,EAEDvrD,EAAM+6I,cAAgB,SAAUtkQ,GAC9B,IAAIkS,EAAaq3G,EAAMh4G,MAAMW,WACzBqyP,EAA2C,kBAAfryP,EAE5B00G,EAAgB29I,EAAqB,IAD5BA,GAAsBryP,EAAaA,EAAa,IAAM,IACZlS,EAAOkS,EAAWlS,GAGzE,MAAO,CACL4mH,cAAeA,EACf49I,gBAJoBD,EAAqB39I,EAAgB,UAAY10G,EAAWlS,EAAO,UAKvFykQ,cAJkBF,EAAqB39I,EAAgB,QAAU10G,EAAWlS,EAAO,QAMtF,EAEMupH,CACR,CAvHD2qD,GAAe6vF,EAAe7gG,GAyH9B,IAAIiR,EAAS4vF,EAAchjQ,UA4D3B,OA1DAozK,EAAO4M,SAAW,SAAkBvmK,EAAMxa,EAAM0nL,GAC9C,IAAI3sK,EAAYhZ,KAAKuiQ,cAActkQ,GAAM0nL,EAAQ,aAG7C+8E,EADsB1iQ,KAAKuiQ,cAAc,SACLG,cAE3B,WAATzkQ,GAA+B,SAAV0nL,GAAoB+8E,IAC3C1pP,GAAa,IAAM0pP,GAKP,WAAV/8E,GACEltK,GAAM04J,GAAY14J,GAGpBO,IACFhZ,KAAKiiQ,eAAehkQ,GAAM0nL,GAAS3sK,EA/NzB,SAAkBP,EAAMrI,GAC/BqI,GAAQrI,GAAWA,EAAQhc,MAAM,KAAKmJ,SAAQ,SAAU0D,GAC7D,OAAO0hQ,GAAYlqP,EAAMxX,EAC1B,GACF,CA6NK2hQ,CAAUnqP,EAAMO,GAEnB,EAEDo5J,EAAOgwF,cAAgB,SAAuB3pP,EAAMxa,GAClD,IAAI4kQ,EAAwB7iQ,KAAKiiQ,eAAehkQ,GAC5C4mH,EAAgBg+I,EAAsBn8O,KACtC+7O,EAAkBI,EAAsBxzK,OACxCqzK,EAAgBG,EAAsB5oQ,KAC1C+F,KAAKiiQ,eAAehkQ,GAAQ,CAAC,EAEzB4mH,GACFw6D,GAAY5mK,EAAMosG,GAGhB49I,GACFpjF,GAAY5mK,EAAMgqP,GAGhBC,GACFrjF,GAAY5mK,EAAMiqP,EAErB,EAEDtwF,EAAOh/D,OAAS,WACd,IAAI0U,EAAc9nH,KAAKwP,MAEnBA,GADIs4G,EAAY33G,WACRib,EAA8B08F,EAAa,CAAC,gBAExD,OAAoBlF,EAAAA,cAAoB6uD,GAAYxuD,EAAS,CAAC,EAAGzzG,EAAO,CACtE4jK,QAASpzK,KAAKozK,QACdD,UAAWnzK,KAAKmzK,UAChBE,WAAYrzK,KAAKqzK,WACjBrL,OAAQhoK,KAAKgoK,OACbuL,UAAWvzK,KAAKuzK,UAChBC,SAAUxzK,KAAKwzK,WAElB,EAEMwuF,CACR,CAvLgC,CAuL/Bp/I,EAAAA,WAEFo/I,GAAc5vJ,aAAe,CAC3BjiG,WAAY,IAEd6xP,GAAcvvJ,UAiIT,CAAC,EACN,IC3ZYqwJ,GD2ZZ,OC3ZA,SAAYA,GAAAA,EAAAA,EAAAA,UAAAA,SAAAA,YAAAA,EAAAA,EAAAA,SAAAA,WAAAA,WAAAA,EAAAA,EAAAA,OAAAA,WAAAA,SAAAA,EAAAA,EAAAA,iBAAAA,WAAAA,mBAAAA,EAAAA,EAAAA,YAAAA,WAAAA,cAAAA,EAAAA,EAAAA,OAAAA,WAAAA,QAAAA,CAAZ,CAAYA,KAAAA,GAAAA,CAAAA,ICGL,IAAMC,GAAb,WAIE,WAAYC,GAAiC,eAH7CA,eAG4C,OAF5CC,qBAE4C,EAC1CjjQ,KAAKgjQ,UAAYA,EACjBhjQ,KAAKijQ,gBAAkB,IACxB,CAPH,2CASE,SAAyBC,GACvB,OAAOljQ,KAAKgjQ,UAAU9sO,MAAK,SAACw1B,GAAQ,OAAOA,EAAEy3M,iBAAmBD,EAASE,gBAAmB,GAC7F,GAXH,4BAaE,SAAsBF,GACpB,IAAIpsN,EAAM92C,KAAKgjQ,UAAU1mQ,QAAQ4mQ,GAC7BpsN,GAAO,GACT92C,KAAKgjQ,UAAUjiQ,OAAO+1C,EAAK,EAE9B,GAlBH,+BAoBE,SAAyBosN,GACvB,IAAI3pP,EAAWvZ,KAAKgjQ,UAAU9sO,MAAK,SAACw1B,GAAQ,OAAOA,EAAE03M,mBAAqBF,EAASC,cAAiB,IACpG,YAAmB9lQ,GAAZkc,CACR,GAvBH,+BAyBE,SAAyB2pP,GACvB,IAAI3pP,EAAWvZ,KAAKgjQ,UAAUrzP,QAAO,SAAAs5B,GAAC,OAAIA,EAAEm6N,mBAAqBF,EAASC,cAApC,IACtC,OAAO5pP,CACR,GA5BH,8BA8BE,WACE,IAAImyC,EAAI1rD,KAAKgjQ,UAAU9sO,MAAK,SAAA+S,GAAC,OAA2B,OAAvBA,EAAEm6N,gBAAN,IAC7B,OAAO13M,CACR,GAjCH,6BAmCE,WACE,GAA4B,MAAxB1rD,KAAKijQ,gBAAyB,CAChC,IAAIv3M,EAAI1rD,KAAKqjQ,mBACb,GAAS,MAAL33M,EAEF,OADA1rD,KAAKijQ,gBAAkBv3M,EAChBA,CAEV,KACI,CACH,IAAIs3M,EAAYhjQ,KAAKsjQ,kBAAkBtjQ,KAAKijQ,iBAC5C,GAAID,EAAU3uQ,OAAS,EAErB,OADA2L,KAAKijQ,gBAAkBD,EAAU,GAC1BA,EAAU,EAEpB,CACF,KAlDH,KCHe,SAAShmP,GAAMsiE,GAC1B,OAAO,IAAI9lF,SAAQ,SAAAC,GAAO,OAAI8C,WAAW9C,EAAS6lF,EAAxB,GAC7B,CCcM,IAAMikL,GAAb,8BAEI,WAAY/zP,GAA6B,IAAD,EAKpC,GALoC,WACpC,cAAMA,IAEDg0P,SAAW,EAAKA,SAAShlQ,KAAd,MAEZgR,EAAMwzP,UAAU3uQ,OAAS,EAAG,CAC5B,IAAIovQ,EAAmBj0P,EAAMwzP,UAAUrzP,QAAO,SAAC+7C,EAAGrrD,GAAQ,OAAOA,EAAI,CAAG,IACpEqjQ,EAAqBl0P,EAAMwzP,UAAUrzP,QAAO,SAAC+7C,EAAGrrD,GAAQ,OAAOA,GAAK,CAAE,IAC1E,EAAKgX,MAAQ,CAAEosP,iBAAkBA,EAAkBC,mBAAoBA,EAAoBC,kBAAkB,EAAMC,mBAAmB,EACzI,MAEG,EAAKvsP,MAAQ,CAAEosP,iBAAkBj0P,EAAMwzP,UAAWU,mBAAoB,GAAIC,kBAAkB,EAAOC,mBAAmB,GAXtF,QAavC,CAfL,kCAiBI,WACI5jQ,KAAK6tE,SAAS,CAAE+1L,mBAAmB,GACtC,GAnBL,oBAqBI,WAAU,IAAD,OACDH,EAAmBzjQ,KAAKqX,MAAMosP,iBAAiBzwP,KAAI,SAAC04C,GACpD,OAAO,SAAC,GAAD,CAA+B1yC,UAAU,oBAAoBklK,QAAQ,QAAQh9E,QAAS,SAAA14F,GAAC,OAAI,EAAKgH,MAAMq0P,UAAUn4M,EAAG,CAAEtqD,KAAMsqD,EAAEpjB,KAAM3sC,MAAO+vD,EAAEy3M,gBAArD,EAAvF,SAAgKz3M,EAAEpjB,MAArJojB,EAAEy3M,eACzB,IACGO,EAAqB1jQ,KAAKqX,MAAMqsP,mBAAmB1wP,KAAI,SAAC04C,GACxD,OAAO,SAAC,GAAD,CAA+B1yC,UAAU,oBAAoBklK,QAAQ,QAAQh9E,QAAS,SAAA14F,GAAC,OAAI,EAAKgH,MAAMq0P,UAAUn4M,EAAG,CAAEtqD,KAAMsqD,EAAEpjB,KAAM3sC,MAAO+vD,EAAEy3M,gBAArD,EAAvF,SAAgKz3M,EAAEpjB,MAArJojB,EAAEy3M,eACzB,IACD,OAAInjQ,KAAKqX,MAAMusP,mBACJ,gCACFH,EACAzjQ,KAAKqX,MAAMusP,oBAAqB,SAAC,GAAD,CAAQ5qP,UAAU,oBAAoBklK,QAAQ,QAAQh9E,QAAS,SAAA14F,GAAO,EAAKg7P,UAAa,EAAxF,qBAG9B,gCACFC,EACAC,IAGZ,KAvCL,GAAoC9gJ,EAAAA,4JCLpCrzD,EAAAA,GAAAA,IAAeu0M,OACfv0M,EAAAA,GAAAA,IAAew0M,MAOR,IAAMC,GAAb,8BACI,WAAYx0P,GAAa,IAAD,oBACpB,cAAMA,IACD6H,MAAQ,CAAC4sP,WAAW,GACzB,EAAKC,cAAgB,EAAKA,cAAc1lQ,KAAnB,MACrB,EAAK2lQ,eAAiB,EAAKA,eAAe3lQ,KAApB,MAJF,CAKvB,CANL,uCAQI,WACIwB,KAAK6tE,SAAS,CAACo2L,WAAW,GAC7B,GAVL,4BAYI,WACIjkQ,KAAK6tE,SAAS,CAACo2L,WAAW,GAC7B,GAdL,oBAgBI,WAAU,IAAD,OACDE,EAAiBnkQ,KAAKmkQ,eAC1B,OAAO,iCACH,iBAAKnrP,UAAU,oBAAf,UACKhZ,KAAKqX,MAAM4sP,YACR,iBAAKjrP,UAAU,eAAf,4BAA4C,cAAGA,UAAU,+BAA+BoH,MAAO,CAACoZ,QAAS,SAE7G,SAAC,MAAD,CAAUtJ,eAAe,EAAM5Z,yBAAyB,EACpDI,mCAAoC,GAAIF,wBAAyB,gCACjEnB,kBAAmB,CAAC,YAAa,aAAc,YAAa,mBAAoBmf,UAAW,SAACtxB,EAAOsO,GAC/F,IAAItO,EAAJ,CAGA,EAAKghQ,gBACL,IAAI9qN,EAAO,IAAIpxC,SACfoxC,EAAKnsC,OAAO,OAAQuE,EAAKA,MAEzB7S,KAAAA,KAAW,iBAAkBy6C,EACzB,CAEIp9C,OAAQ,CAAE,UAAa,EAAKwT,MAAMivM,UAAW,SAAY,EAAKjvM,MAAM6N,SAAU,mBAAsB,EAAK7N,MAAM40P,mBAAoB,WAAc,EAAK50P,MAAM8kP,WAAY,SAAY9iP,EAAK5M,GAAI,IAAO,GAAI,SAAY4M,EAAK0D,UACzNrM,cAAe,WACf9O,QAAS,CAAE,eAAgB,yBAE9BoG,MAAK,SAAC5E,GACH4oQ,IACI,EAAK30P,MAAM60P,kBACX,EAAK70P,MAAM60P,iBAAiB9oQ,EAAS1B,KAAM2X,EAAK5M,GAEvD,IACA4Q,OAAM,SAACtS,GACJihQ,IACAz8K,GAAAA,IAAWxkF,EACd,GArBJ,CAsBJ,EACD6xB,aAAc,SAAC7xB,EAAOsO,GACdtO,IAGJ,EAAKghQ,gBACLvlQ,KAAAA,KAAW,iBAAkB,KACzB,CACI3C,OAAQ,CAAE,SAAYwV,EAAK0D,SAAU,WAAc,EAAK1F,MAAM8kP,WAAY,SAAY9iP,EAAK5M,MAE9FzE,MAAK,SAAC5E,GACH4oQ,IACI,EAAK30P,MAAM80P,kBACX,EAAK90P,MAAM80P,iBAAiB/oQ,EAAS1B,KAE5C,IACA2b,OAAM,SAACtS,GACJihQ,IACAz8K,GAAAA,IAAWxkF,EACd,IACR,QAGT,oBAEP,KA3EL,GAAsCklH,EAAAA,WCAzBm8I,ID8EaxgQ,OAAOk/B,OAAO,CACpCuhO,OAAQ,oBACRC,QAAS,8BChFb,8BAEI,WAAYj1P,GAAyB,IAAD,oBAChC,cAAMA,IACD60P,iBAAmB,EAAKA,iBAAiB7lQ,KAAtB,MACxB,EAAK6Y,MAAQ,CAAEqtP,cAAc,GAHG,CAInC,CANL,0CAQI,SAAyB7qQ,EAAWuqQ,GAEhCpkQ,KAAK6tE,SAAS,CAAE62L,cAAc,GAEjC,GAZL,oBAcI,WAAU,IAAD,OACL,OAAO,+BACH,iBAAK1rP,UAAU,iBAAiBoH,MAAO,CAAE5F,MAAO,OAAQmqP,SAAU,SAAlE,WACI,gBAAK3rP,UAAU,iBAAiBoH,MAAO,CAAEM,WAAY,OAArD,UACI,SAACsjP,GAAD,CAAkBvlD,UAAWz+M,KAAKwP,MAAMivM,UAAWphM,SAAUrd,KAAKwP,MAAM0zP,SAAS0B,iBAAkBR,mBAAoBpkQ,KAAKwP,MAAM0zP,SAASkB,mBAAoBC,iBAAkB,SAACxqQ,GAAD,OAAe,EAAKwqQ,iBAAiBxqQ,EAAM,EAAK2V,MAAM0zP,SAASkB,mBAA/D,OAErL,SAAC,GAAD,CAAQprP,UAAU,oBAAoBklK,QAAQ,QAAQ99J,MAAO,CAAEjF,YAAa,QAAU+lF,QAAS,SAAA14F,GAAO,EAAKgH,MAAMq1P,OAAO,EAAKr1P,MAAM0zP,SAAW,EAA9I,kBACCljQ,KAAKqX,MAAMqtP,eAAgB,SAAC,GAAD,CAAQ1rP,UAAU,oBAAoBklK,QAAQ,QAAQ99J,MAAO,CAAEjF,YAAa,QAAU+lF,QAAS,SAAA14F,GAAO,EAAKgH,MAAMs1P,cAAc,EAAKt1P,MAAM0zP,SAAY,EAAtJ,2BAGvC,KAxBL,GAAgCtgJ,EAAAA,YCMnBmiJ,GAAb,8BAIE,WAAYv1P,GAAa,IAAD,oBACtB,cAAMA,IAJAw1P,iBAGgB,IAFhBC,qBAEgB,EAEtB,EAAKpB,UAAY,EAAKA,UAAUrlQ,KAAf,MACjB,EAAK0mQ,UAAY,EAAKA,UAAU1mQ,KAAf,MACjB,EAAK2mQ,YAAc,EAAKA,YAAY3mQ,KAAjB,MACnB,EAAKqmQ,OAAS,EAAKA,OAAOrmQ,KAAZ,MAEd,EAAKsmQ,cAAgB,EAAKA,cAActmQ,KAAnB,MAErB,EAAKwmQ,YAAcpiJ,EAAAA,YACnB,EAAKvrG,MAAQ,CAAE+tP,SAAU,GAAIC,kBAAmB,IAV1B,CAWvB,CAfH,sCAiBE,SAAqB/Q,GACnB,IAAIn5P,EAAG,wDAAoDm5P,GAC3D,OAAO31P,KAAAA,IAAUxD,EAClB,GApBH,+BAsBE,WAA2B,IAAD,SAClB2D,EAAUkB,KAAKisK,aACrBjsK,KAAKslQ,aAAL,UAAkBxmQ,EAAQm/M,eAA1B,aAAkB,EAAiBq2C,YAAYn0P,MAAK,SAAC5E,GACnD,EAAK0pQ,gBAAkB,IAAIlC,GAAgBxnQ,EAAS1B,MACpDmjB,GAAM,KAAK7c,MAAK,WACd,EAAKolQ,iBACN,GACF,GACF,GA9BH,gCAgCE,WACEvlQ,KAAKwlQ,gBACN,GAlCH,4BAoCE,WAAgC,IAAD,EAC7B,QAAC,EAAAxlQ,KAAKglQ,YAAY51O,eAAlB,SAAmCq2O,eAAe,CAAEC,SAAU,UAC/D,GAtCH,yBAwCE,WAA+B,IAAD,IACtB5mQ,EAAUkB,KAAKisK,aAGrB,QAFW,UAAAntK,EAAQm/M,eAAR,eAAiBiC,UAAU11L,UAAU,EAAG,KAAM,MAC9C,UAAA1rB,EAAQm/M,eAAR,eAAiBk2C,SAAS3pO,UAAU,EAAG,KAAM,GAEzD,GA7CH,oBA+CE,SAAe04O,GACbljQ,KAAKklQ,UAAU,CAAE9jQ,KAAM,YAEvB,IAAIukQ,EAAe3lQ,KAAKilQ,gBAAgBW,kBAAkB1C,GACtC,MAAhByC,IACFA,EAAe3lQ,KAAKilQ,gBAAgBW,kBAAkBD,IAEpC,MAAhBA,GACF3lQ,KAAKmlQ,YAAYQ,EACpB,GAxDH,yBA0DE,SAAoBzC,GAClB,IAAIjzM,EAAsB,CACxBo1E,OAAQrlI,KAAKqX,MAAM+tP,SAAS/wQ,OAAS,GAAG2S,WACxC08G,UAAWy7I,GAAiBsB,SAC5BjkD,SAAUx8M,KAAK6lQ,cACfplQ,QAASyiQ,EAAS56N,KAClB46N,SAAUA,GAGZljQ,KAAK8lQ,cAAc71M,IAEP,OAARizM,QAAQ,IAARA,OAAA,EAAAA,EAAU6C,gBAAiBjD,GAAiBkD,WAC9ChmQ,KAAKimQ,kBAAkB/C,EAE1B,GAxEH,iCA0EE,SAA4BA,GAC1B,IAAIgD,GAAyB,EAEzBP,EAAe3lQ,KAAKilQ,gBAAgBW,kBAAkB1C,GAO1D,OANoB,MAAhByC,IACFA,EAAe3lQ,KAAKilQ,gBAAgBW,kBAAkBD,IAEpC,MAAhBA,GAAwBA,EAAaI,eAAiBjD,GAAiBkD,YACzEE,GAAgB,GAEXA,CACR,GArFH,iCAuFE,SAA4BlD,GAAiC,IAAD,OAC1DA,EAAUzlQ,SAAQ,SAACmuD,GACF,sBAAXA,EAAEpjB,MAA2C,wBAAXojB,EAAEpjB,MAClC,EAAK94B,MAAM22P,mBACbz6M,EAAEpjB,KAAO,EAAK94B,MAAM22P,kBAET,wBAAXz6M,EAAEpjB,MAA6C,0BAAXojB,EAAEpjB,MACpC,EAAK94B,MAAM42P,qBACb16M,EAAEpjB,KAAO,EAAK94B,MAAM42P,mBAEzB,GACF,GAlGH,+BAoGE,SAA0BlD,GAAoC,IAAD,OACvDgD,EAAgBlmQ,KAAKqmQ,oBAAoBnD,GAEzC74E,GAAkB,wBAClB24E,EAAYhjQ,KAAKilQ,gBAAgB3B,kBAAkBJ,GACvD,IAAa,OAATF,QAAS,IAATA,OAAA,EAAAA,EAAW3uQ,QAAS,IAAM2uQ,EAAU,GAAG+C,cAAgBjD,GAAiBzpE,QAAU2pE,EAAU,GAAG+C,cAAgBjD,GAAiBwD,kBAClItmQ,KAAKumQ,oBAAoBvD,GACzB34E,GAAO,SAACk5E,GAAD,CAAgBP,UAAWA,EAAWa,UAAW7jQ,KAAK6jQ,YAEzDqC,IACF77E,GAAO,iCAAE,SAAC,GAAD,CAAQrxK,UAAU,oBAAoBklK,QAAQ,QAAQh9E,QAAS,SAAA14F,GAAO,EAAKq8P,OAAO3B,EAAW,EAA7F,qBAAgH74E,UAExH,IAAI64E,EAAS6C,cAAgBjD,GAAiB0D,OAiBjD,OAjB0D,IAAD,EACnD1nQ,EAAUkB,KAAKisK,aAErB,GAAyB,MAArBi3F,EAASuD,SAAkB,CAC7B,IAAIC,EAAoC,CACtCrhI,OAAQrlI,KAAKqX,MAAM+tP,SAAS/wQ,OAAS,GAAG2S,WACxC08G,UAAWy7I,GAAiBsB,SAC5BjkD,SAAUx8M,KAAK6lQ,cACf3C,SAAUA,EACVziQ,QAASyiQ,EAASuD,UAGpBzmQ,KAAK8lQ,cAAcY,EACpB,CACDr8E,GAAO,SAACk6E,GAAD,CAAYrB,SAAUA,EAAUW,UAAW7jQ,KAAK6jQ,UAAWplD,UAAS,UAAE3/M,EAAQm/M,eAAV,aAAE,EAAiBQ,UAAWqmD,cAAe9kQ,KAAK8kQ,cAAeD,OAAQ7kQ,KAAK6kQ,QAI1J,CAED,IAAI50M,EAAsB,CACxBo1E,OAAQrlI,KAAKqX,MAAM+tP,SAAS/wQ,OAAS,GAAG2S,WACxC08G,UAAWy7I,GAAiBoB,SAC5B/jD,SAAUx8M,KAAK6lQ,cACf3C,SAAUA,EACVziQ,SAAS,8BAAG4pL,KAGdrtK,GAAM,KAAK7c,MAAK,WACd,EAAK2lQ,cAAc71M,EACpB,GACF,GA/IH,+BAiJE,WACE,IAAIm1M,EAAWplQ,KAAKqX,MAAM+tP,SAC1BA,EAASl4P,MACTlN,KAAK6tE,SAAS,CAAEu3L,SAAUA,GAC3B,GArJH,2BAuJE,SAAsB3kQ,GACpB,IAAI2kQ,EAAWplQ,KAAKqX,MAAM+tP,SAC1BA,EAASvkQ,KAAKJ,GACdT,KAAK6tE,SAAS,CAAEu3L,SAAUA,GAC3B,GA3JH,2BA6JE,SAAsBuB,GAA0C,IAAD,SACvD7nQ,EAAUkB,KAAKisK,aACrBttK,KAAAA,KAAW,oDAAqD,KAAM,CAAE3C,OAAQ,CAAEooQ,mBAAoBuC,EAAevC,mBAAoB9P,WAAU,UAAEx1P,EAAQo/M,gBAAV,aAAE,EAAkBo2C,cACpKn0P,MAAK,SAAA5E,GACqC,MAArCorQ,EAAevC,oBACjB,EAAK50P,MAAM60P,iBAAiBsC,EAAevC,mBAC9C,IAEHpkQ,KAAK4mQ,oBAEL5mQ,KAAKklQ,UAAU,CAAE9jQ,KAAM,kCAEvBpB,KAAKilQ,gBAAgB4B,eAAeF,GAEpC,IAAIG,EAAuB9mQ,KAAKilQ,gBAAgBW,kBAAkBe,GAClE,GAA4B,MAAxBG,EAA8B,CAChC9mQ,KAAKilQ,gBAAgB4B,eAAeC,GAEpC,IAAIC,EAA4B/mQ,KAAKilQ,gBAAgBW,kBAAkBkB,GACvE,GAAiC,MAA7BC,EAAmC,CACrC,GAAK/mQ,KAAKilQ,gBAAgB+B,kBAAkBD,GAI1C,YADA/mQ,KAAKmlQ,YAAY4B,GAFjB/mQ,KAAKilQ,gBAAgB4B,eAAeE,GAMtC,IAAIE,EAAoBjnQ,KAAKilQ,gBAAgBW,kBAAkBmB,GAC/D,GAAyB,MAArBE,EAA2B,CAC7B,IAAIC,EAAyBlnQ,KAAKilQ,gBAAgBW,kBAAkBqB,GAUpE,GATKjnQ,KAAKilQ,gBAAgB+B,kBAAkBC,KAC1CjnQ,KAAKilQ,gBAAgB4B,eAAeI,GAEN,MAA1BC,IACGlnQ,KAAKilQ,gBAAgB+B,kBAAkBE,IAC1ClnQ,KAAKilQ,gBAAgB4B,eAAeK,KAIZ,MAA1BA,EAAgC,CAClC,IAAIC,EAA2BnnQ,KAAKilQ,gBAAgBW,kBAAkBsB,GACtE,GAAgC,MAA5BC,EAAkC,CAE/BnnQ,KAAKilQ,gBAAgB+B,kBAAkBG,IAC1CnnQ,KAAKilQ,gBAAgB4B,eAAeM,GAEtC,IAAIC,EAAgCpnQ,KAAKilQ,gBAAgBW,kBAAkBuB,GAC3E,GAAqC,MAAjCC,EAAuC,CAEzC,IAAKpnQ,KAAKilQ,gBAAgB+B,kBAAkBI,GAAgC,CAC1E,IAAIC,EAAgC,CAClChiI,OAAQrlI,KAAKqX,MAAM+tP,SAAS/wQ,OAAS,GAAG2S,WACxCvG,QAAS,+FACTijH,UAAWy7I,GAAiBsB,SAC5ByC,SAAU,MAGZ,YADAljQ,KAAK8lQ,cAAcuB,EAEpB,CACDrnQ,KAAKmlQ,YAAYiC,EAClB,CACF,CACF,CACF,CACF,CACF,CACF,GA/NH,uBAiOE,SAAkBE,GAChBtnQ,KAAK4mQ,oBAEL,IAAI32M,EAAsB,CACxBo1E,OAAQrlI,KAAKqX,MAAM+tP,SAAS/wQ,OAAS,GAAG2S,WACxC08G,UAAWy7I,GAAiBoB,SAC5B/jD,SAAUx8M,KAAK6lQ,cACfplQ,QAAS6mQ,EAAOlmQ,KAChB8hQ,SAAU,KACV1C,SAAU,gBAGZxgQ,KAAK8lQ,cAAc71M,EACpB,GA9OH,uBAgPE,SAAUizM,EAA8BvnQ,GAAc,IAAD,OACN,OAAzCqE,KAAKilQ,gBAAgBhC,kBAEvBjjQ,KAAKklQ,UAAUvpQ,GACC,MAAZunQ,IACFljQ,KAAKilQ,gBAAgBhC,gBAAkBC,EACvCljQ,KAAKupK,cACLvsJ,GAAM,KAAK7c,MAAK,WACd,EAAKolQ,iBACN,KAGN,GA5PH,6BAoQE,WAAiC,IAAD,OAC1B75M,EAAI1rD,KAAKilQ,gBAAgBM,kBACpB,MAAL75M,IACF1rD,KAAKmlQ,YAAYz5M,GACjB1rD,KAAKupK,cAED79G,EAAEq6M,cAAgBjD,GAAiBkD,WACrChpP,GAAM,KAAK7c,MAAK,WACd,EAAKolQ,iBACN,IAGN,GAhRH,oBAkRE,WACE,OACE,oBAASnlP,MAAO,CAAE0xO,gBAAiB,QAAnC,UACE,gBAAK94O,UAAU,OAAOpU,GAAG,QAAzB,UACE,iBAAKoU,UAAU,YAAYoH,MAAO,CAAErQ,SAAU,WAAY2K,OAAQ,IAAKkvK,UAAW,QAAlF,WACE,SAAC,GAAD,CAAiB32E,UAAU,MAA3B,SACGjzG,KAAKqX,MAAM+tP,SAASpyP,KAAI,SAACvS,GAAD,OACvB,SAAC,GAAD,CAAmCvE,QAAS,IAAKiU,WAAW,eAA5D,UACE,SAACmwP,GAAD,OAAiB7/P,GAAjB,aAA4BA,EAAQA,YADlBA,EAAQ4kI,MADL,OAM3B,gBAAK1xH,IAAK3T,KAAKglQ,eAEf,gBAAKpgQ,GAAG,OAAOwb,MAAO,CAAE1F,OAAQ,YAKzC,KArSH,GAAiCqlM,+CCrB3BwnD,GAAuB3kJ,EAAAA,YAC7B,WAMGjvG,GAAQ,IALTs7J,EAKS,EALTA,SACAj2J,EAIS,EAJTA,UACAklK,EAGS,EAHTA,QAGS,IAFThP,GAAI9mD,OAEK,MAFO,MAEP,EADN54G,EACM,QACHmoD,EAAS62G,EAAmBS,EAAU,YAC5C,OAAoBI,EAAAA,EAAAA,KAAKjnD,EAAD,GACtBz0G,IAAKA,EACLqF,UAAW7I,IAAW+tK,EAAU,GAAH,OAAMvmH,EAAN,YAAgBumH,GAAYvmH,EAAQ3+C,IAC9DxJ,GAEN,IACD+3P,GAAQl1J,YAAc,UACtB,UCnBMvzG,GAAuB8jH,EAAAA,cAAoB,MACjD9jH,GAAQuzG,YAAc,oBACtB,2CCGMm1J,GAA0B5kJ,EAAAA,YAAiB,WAM9CjvG,GAAQ,IALTs7J,EAKS,EALTA,SACAj2J,EAIS,EAJTA,UAIS,IAFTk2J,GAAI9mD,OAEK,MAFO,MAEP,EADN54G,EACM,QACHmoD,EAAS62G,EAAmBS,EAAU,eACtC+tB,GAAe1zC,EAAAA,EAAAA,UAAQ,iBAAO,CAClCm+G,mBAAoB9vM,EADO,GAEzB,CAACA,IACL,OAAoB03G,EAAAA,EAAAA,KAAKq4F,GAAkB79F,SAAU,CACnDluK,MAAOqhM,EACPzjL,UAAuB81J,EAAAA,EAAAA,KAAKjnD,EAAD,EAAC,GAC1Bz0G,IAAKA,GACFnE,GAFsB,IAGzBwJ,UAAW7I,IAAW6I,EAAW2+C,OAGtC,IACD6vM,GAAWn1J,YAAc,aACzB,kFCnBMs1J,GAAgBjpF,GAAiB,MACjCkpF,GAAgBlpF,GAAiB,MACjCmpF,GAAW94F,EAAmB,aAC9B+4F,GAAY/4F,EAAmB,aAAc,CACjD3mD,UAAWu/I,KAEPI,GAAeh5F,EAAmB,gBAAiB,CACvD3mD,UAAWw/I,KAEPI,GAAWj5F,EAAmB,YAAa,CAC/C3mD,UAAW,MAEP6/I,GAAWl5F,EAAmB,YAAa,CAC/C3mD,UAAW,MAEP8/I,GAAan5F,EAAmB,eAChCo5F,GAAiBp5F,EAAmB,oBAIpCq5F,GAAoBxlJ,EAAAA,YAAiB,WAWxCjvG,GAAQ,IAVTs7J,EAUS,EAVTA,SACAj2J,EASS,EATTA,UACA8jI,EAQS,EARTA,GACAx0G,EAOS,EAPTA,KACAyqD,EAMS,EANTA,OACAz2D,EAKS,EALTA,KACA/iB,EAIS,EAJTA,SAIS,IAFT21J,GAAI9mD,OAEK,MAFO,MAEP,EADN54G,EACM,QACHmoD,EAAS62G,EAAmBS,EAAU,QAC5C,OAAoBI,EAAAA,EAAAA,KAAKjnD,EAAD,EAAC,GACvBz0G,IAAKA,GACFnE,GAFmB,IAGtBwJ,UAAW7I,IAAW6I,EAAW2+C,EAAQmlF,GAAM,MAAJ,OAAUA,GAAMx0G,GAAQ,QAAJ,OAAYA,GAAQyqD,GAAU,UAAJ,OAAcA,IACvGx5E,SAAU+iB,GAAoB+yI,EAAAA,EAAAA,KAAKw4F,GAAU,CAC3CtuP,SAAUA,IACPA,IAER,IACD6uP,GAAK/1J,YAAc,OACnB+1J,GAAKh2J,aA1BgB,CACnB91E,MAAM,GA0BR,OAAev4B,OAAOQ,OAAO6jQ,GAAM,CACjCC,IAAKd,GACLvmF,MAAO8mF,GACPQ,SAAUP,GACVlnF,KAAMgnF,GACNxwD,KAAM2wD,GACN/lF,KAAMgmF,GACNlnF,OAAQymF,GACRhf,OAAQ0f,GACRK,WAAYJ,KC5DP,SAASK,GAAwBC,EAAgBl5F,GACtD,OAAO3sK,MAAMkD,QAAQ2iQ,GAAkBA,EAAej4P,SAAS++J,GAAYk5F,IAAmBl5F,CAC/F,CACD,IAAMzwK,GAAuB8jH,EAAAA,cAAoB,CAAC,GAClD9jH,GAAQuzG,YAAc,mBACtB,iECKMq2J,GAAiC9lJ,EAAAA,YAAiB,WAOrDjvG,GAAQ,QANTu7J,GAAI9mD,OAMK,MANO,MAMP,EALT6mD,EAKS,EALTA,SACAj2J,EAIS,EAJTA,UACAO,EAGS,EAHTA,SACAg2J,EAES,EAFTA,SACG//J,EACM,QAEPi5P,GACEt/G,EAAAA,EAAAA,YAAWw/G,IADbF,eAGF,OADAx5F,EAAWT,EAAmBS,EAAU,uBACpBI,EAAAA,EAAAA,KAAKsH,GAAD,EAAC,GACvBhjK,IAAKA,EACLo+J,GAAIy2F,GAAwBC,EAAgBl5F,IACzC//J,GAHmB,IAItBwJ,UAAW7I,IAAW6I,EAAWi2J,GACjC11J,UAAuB81J,EAAAA,EAAAA,KAAKjnD,EAAW,CACrC7uG,SAAUqpG,EAAAA,SAAAA,KAAoBrpG,OAGnC,IACDmvP,GAAkBr2J,YAAc,oBAChC,UCjCMvzG,GAAuB8jH,EAAAA,cAAoB,CAC/C2sD,SAAU,KAEZzwK,GAAQuzG,YAAc,uBACtB,2CCEMu2J,GAA6BhmJ,EAAAA,YAAiB,WAMjDjvG,GAAQ,QAJTu7J,GAAI9mD,OAIK,MAJO,MAIP,EAHT6mD,EAGS,EAHTA,SACAj2J,EAES,EAFTA,UACGxJ,EACM,QACTy/J,EAAWT,EAAmBS,EAAU,kBACxC,IACEM,GACEpmB,EAAAA,EAAAA,YAAW0/G,IADbt5F,SAEF,OAAoBF,EAAAA,EAAAA,KAAKq5F,GAAmB,CAC1Cn5F,SAAUA,EACVh2J,UAAuB81J,EAAAA,EAAAA,KAAKjnD,EAAD,EAAC,GAC1Bz0G,IAAKA,GACFnE,GAFsB,IAGzBwJ,UAAW7I,IAAW6I,EAAWi2J,OAGtC,IACD25F,GAAcv2J,YAAc,gBAC5B,qDCSA,IAAMy2J,GAA+BlmJ,EAAAA,YAAiB,WAOnDjvG,GAAQ,QALTu7J,GAAI9mD,OAKK,MALO,SAKP,EAJT6mD,EAIS,EAJTA,SACAj2J,EAGS,EAHTA,UACAkoF,EAES,EAFTA,QACG1xF,EACM,QACTy/J,EAAWT,EAAmBS,EAAU,oBACxC,IACEM,GACEpmB,EAAAA,EAAAA,YAAW0/G,IADbt5F,SAEIw5F,EA1CD,SAA4Bx5F,EAAUruE,GAC3C,OAIIioD,EAAAA,EAAAA,YAAWw/G,IAHbF,EADF,EACEA,eACAhnF,EAFF,EAEEA,SACAunF,EAHF,EAGEA,WAEF,OAAO,SAAAxgQ,GAKL,IAAIygQ,EAAiB15F,IAAak5F,EAAiB,KAAOl5F,EAEtDy5F,IAGEC,EAFArmQ,MAAMkD,QAAQ2iQ,GACZA,EAAej4P,SAAS++J,GACTk5F,EAAe94P,QAAO,SAAAsjD,GAAC,OAAIA,IAAMs8G,CAAV,IAEvB,GAAH,UAAOk5F,GAAP,CAAuBl5F,IAItB,CAACA,IAIV,MAAZkS,GAA4BA,EAASwnF,EAAgBzgQ,GAC1C,MAAX04F,GAA2BA,EAAQ14F,EACpC,CACF,CAa0B0gQ,CAAmB35F,EAAUruE,GAEpDunK,GACEt/G,EAAAA,EAAAA,YAAWw/G,IADbF,eAOF,MAJkB,WAAdrgJ,IACF54G,EAAMvR,KAAO,WAGKoxK,EAAAA,EAAAA,KAAKjnD,EAAD,EAAC,GACvBz0G,IAAKA,EACLutF,QAAS6nK,GACNv5P,GAHmB,IAItB,gBAAiB+/J,IAAak5F,EAC9BzvP,UAAW7I,IAAW6I,EAAWi2J,GAAWu5F,GAAwBC,EAAgBl5F,IAAa,eAEpG,IACDu5F,GAAgBz2J,YAAc,kBAC9B,gEC9DM82J,GAA+BvmJ,EAAAA,YAAiB,WAQnDjvG,GAAQ,QANTu7J,GAAI9mD,OAMK,MANO,KAMP,EALT6mD,EAKS,EALTA,SACAj2J,EAIS,EAJTA,UACAO,EAGS,EAHTA,SACA2nF,EAES,EAFTA,QACG1xF,EACM,QAET,OADAy/J,EAAWT,EAAmBS,EAAU,qBACpBI,EAAAA,EAAAA,KAAKjnD,EAAD,EAAC,GACvBz0G,IAAKA,GACFnE,GAFmB,IAGtBwJ,UAAW7I,IAAW6I,EAAWi2J,GACjC11J,UAAuB81J,EAAAA,EAAAA,KAAKy5F,GAAiB,CAC3C5nK,QAASA,EACT3nF,SAAUA,MAGf,IACD4vP,GAAgB92J,YAAc,kBAC9B,sDCpBM+2J,GAA6BxmJ,EAAAA,YAAiB,WAOjDjvG,GAAQ,QALTu7J,GAAI9mD,OAKK,MALO,MAKP,EAJT6mD,EAIS,EAJTA,SACAj2J,EAGS,EAHTA,UACAu2J,EAES,EAFTA,SACG//J,EACM,QACTy/J,EAAWT,EAAmBS,EAAU,kBACxC,IAAM+tB,GAAe1zC,EAAAA,EAAAA,UAAQ,iBAAO,CAClCimB,SAAAA,EAD2B,GAEzB,CAACA,IACL,OAAoBF,EAAAA,EAAAA,KAAKw5F,GAAqBh/F,SAAU,CACtDluK,MAAOqhM,EACPzjL,UAAuB81J,EAAAA,EAAAA,KAAKjnD,EAAD,EAAC,GAC1Bz0G,IAAKA,GACFnE,GAFsB,IAGzBwJ,UAAW7I,IAAW6I,EAAWi2J,OAGtC,IACDm6F,GAAc/2J,YAAc,gBAC5B,uFChBMg3J,GAAyBzmJ,EAAAA,YAAiB,SAACpzG,EAAOmE,GACtD,MAUIq8J,EAAgBxgK,EAAO,CACzBkqL,UAAW,aAXb,IAEExqB,GAAI9mD,OAFN,MAEkB,MAFlB,EAGEsxE,EAHF,EAGEA,UACAzqB,EAJF,EAIEA,SACAj2J,EALF,EAKEA,UACAyoK,EANF,EAMEA,SACAhqE,EAPF,EAOEA,MACAuxJ,EARF,EAQEA,WACGrnF,EATL,QAaMhqH,EAAS62G,EAAmBS,EAAU,aACtC+tB,GAAe1zC,EAAAA,EAAAA,UAAQ,iBAAO,CAClCm/G,eAAgB/uE,EAChBjY,SAAAA,EACAunF,WAAAA,EAH2B,GAIzB,CAACtvE,EAAWjY,EAAUunF,IAC1B,OAAoB35F,EAAAA,EAAAA,KAAKs5F,GAAiB9+F,SAAU,CAClDluK,MAAOqhM,EACPzjL,UAAuB81J,EAAAA,EAAAA,KAAKjnD,EAAD,EAAC,GAC1Bz0G,IAAKA,GACFguK,GAFsB,IAGzB3oK,UAAW7I,IAAW6I,EAAW2+C,EAAQ8/C,GAAS,GAAJ,OAAO9/C,EAAP,eAGnD,IACD0xM,GAAUh3J,YAAc,YACxB,OAAetuG,OAAOQ,OAAO8kQ,GAAW,CACtChwE,OAAQyvE,GACRnyF,SAAU+xF,GACVr9L,KAAM+9L,GACNroF,OAAQooF,GACRtoF,KAAM+nF,mTCtCK,IAAIz5P,GAAE,oBAAoB8c,QAAQA,OAAO8nF,IAAI9yG,GAAEkO,GAAE8c,OAAO8nF,IAAI,iBAAiB,MAAM7jD,GAAE/gD,GAAE8c,OAAO8nF,IAAI,gBAAgB,MAAMvrG,GAAE2G,GAAE8c,OAAO8nF,IAAI,kBAAkB,MAAMnjG,GAAEzB,GAAE8c,OAAO8nF,IAAI,qBAAqB,MAAM5iD,GAAEhiD,GAAE8c,OAAO8nF,IAAI,kBAAkB,MAAMjvG,GAAEqK,GAAE8c,OAAO8nF,IAAI,kBAAkB,MAAM9gD,GAAE9jD,GAAE8c,OAAO8nF,IAAI,iBAAiB,MAAMzzG,GAAE6O,GAAE8c,OAAO8nF,IAAI,oBAAoB,MAAM9jD,GAAE9gD,GAAE8c,OAAO8nF,IAAI,yBAAyB,MAAMljG,GAAE1B,GAAE8c,OAAO8nF,IAAI,qBAAqB,MAAMr3F,GAAEvN,GAAE8c,OAAO8nF,IAAI,kBAAkB,MAAMroD,GAAEv8C,GACpf8c,OAAO8nF,IAAI,uBAAuB,MAAMrjG,GAAEvB,GAAE8c,OAAO8nF,IAAI,cAAc,MAAMpjG,GAAExB,GAAE8c,OAAO8nF,IAAI,cAAc,MAAM1qG,GAAE8F,GAAE8c,OAAO8nF,IAAI,eAAe,MAAMxgD,GAAEpkD,GAAE8c,OAAO8nF,IAAI,qBAAqB,MAAM9qE,GAAE95B,GAAE8c,OAAO8nF,IAAI,mBAAmB,MAAM5qE,GAAEh6B,GAAE8c,OAAO8nF,IAAI,eAAe,MAClQ,SAASC,GAAE9kG,GAAG,GAAG,kBAAkBA,GAAG,OAAOA,EAAE,CAAC,IAAIi2D,EAAEj2D,EAAE+kG,SAAS,OAAO9uC,GAAG,KAAKlkE,GAAE,OAAOiO,EAAEA,EAAEjR,MAAQ,KAAKqC,GAAE,KAAK2vD,GAAE,KAAKznD,GAAE,KAAK2oD,GAAE,KAAKvgD,GAAE,KAAK8L,GAAE,OAAOxN,EAAE,QAAQ,OAAOA,EAAEA,GAAGA,EAAE+kG,UAAY,KAAKhhD,GAAE,KAAKpiD,GAAE,KAAKF,GAAE,KAAKD,GAAE,KAAK5L,GAAE,OAAOoK,EAAE,QAAQ,OAAOi2D,GAAG,KAAKjV,GAAE,OAAOiV,EAAG,CAAC,UAAS+uC,GAAEhlG,GAAG,OAAO8kG,GAAE9kG,KAAK+gD,EAAE,mBAAkB3vD,kBAAyB2vD,mBAA0BgD,mBAA0BnuD,WAAkB7D,cAAqB4P,YAAmBrI,QAAemI,QAAeD,UAAiBw/C,YAC/diB,cAAqBvgD,YAAmB8L,eAAsB,SAASxN,GAAG,OAAOglG,GAAEhlG,IAAI8kG,GAAE9kG,KAAK5O,EAAE,mBAA0B4zG,qBAA4B,SAAShlG,GAAG,OAAO8kG,GAAE9kG,KAAK+jD,EAAE,oBAA2B,SAAS/jD,GAAG,OAAO8kG,GAAE9kG,KAAKpK,EAAE,YAAmB,SAASoK,GAAG,MAAM,kBAAkBA,GAAG,OAAOA,GAAGA,EAAE+kG,WAAWhzG,EAAE,eAAsB,SAASiO,GAAG,OAAO8kG,GAAE9kG,KAAK2B,EAAE,aAAoB,SAAS3B,GAAG,OAAO8kG,GAAE9kG,KAAK1G,EAAE,SAAgB,SAAS0G,GAAG,OAAO8kG,GAAE9kG,KAAKyB,EAAE,SAC5c,SAASzB,GAAG,OAAO8kG,GAAE9kG,KAAKwB,EAAE,WAAkB,SAASxB,GAAG,OAAO8kG,GAAE9kG,KAAKghD,EAAE,aAAoB,SAAShhD,GAAG,OAAO8kG,GAAE9kG,KAAKiiD,EAAE,eAAsB,SAASjiD,GAAG,OAAO8kG,GAAE9kG,KAAK0B,EAAE,aAAoB,SAAS1B,GAAG,OAAO8kG,GAAE9kG,KAAKwN,EAAE,qBAChN,SAASxN,GAAG,MAAM,kBAAkBA,GAAG,oBAAoBA,GAAGA,IAAI1G,IAAG0G,IAAI+gD,IAAG/gD,IAAIiiD,IAAGjiD,IAAI0B,IAAG1B,IAAIwN,IAAGxN,IAAIw8C,IAAG,kBAAkBx8C,GAAG,OAAOA,IAAIA,EAAE+kG,WAAWtjG,IAAGzB,EAAE+kG,WAAWvjG,IAAGxB,EAAE+kG,WAAWnvG,IAAGoK,EAAE+kG,WAAWhhD,IAAG/jD,EAAE+kG,WAAWpjG,IAAG3B,EAAE+kG,WAAW1gD,IAAGrkD,EAAE+kG,WAAWhrE,IAAG/5B,EAAE+kG,WAAW9qE,IAAGj6B,EAAE+kG,WAAW5qG,GAAG,SAAgB2qG,ICN/TxoF,sBCKAzkB,qBCVFtO,EAAOC,QAAU4wQ,MFKSvlQ,OAAOynB,uBAC/Bhd,GAAiBzK,OAAO/E,UAAUwP,eAClC+6P,GAAmBxlQ,OAAO/E,UAAU0sB,qBAExC,SAAS89O,GAASvxQ,GACjB,GAAY,OAARA,QAAwBoF,IAARpF,EACnB,MAAM,IAAI6H,UAAU,yDAGrB,OAAOiE,OAAO9L,EACd,EAED,WACC,IACC,IAAK8L,OAAOQ,OACX,OAAO,EAMR,IAAIklQ,EAAQ,IAAIz5P,OAAO,OAEvB,GADAy5P,EAAM,GAAK,KACkC,MAAzC1lQ,OAAO8L,oBAAoB45P,GAAO,GACrC,OAAO,EAKR,IADA,IAAIC,EAAQ,CAAC,EACJrpQ,EAAI,EAAGA,EAAI,GAAIA,IACvBqpQ,EAAM,IAAM15P,OAAOmrD,aAAa96D,IAAMA,EAEvC,IAAIspQ,EAAS5lQ,OAAO8L,oBAAoB65P,GAAO12P,KAAI,SAAUnC,GAC5D,OAAO64P,EAAM74P,EACb,IACD,GAAwB,eAApB84P,EAAOngQ,KAAK,IACf,OAAO,EAIR,IAAIogQ,EAAQ,CAAC,EAIb,MAHA,uBAAuBx1Q,MAAM,IAAImJ,SAAQ,SAAUssQ,GAClDD,EAAMC,GAAUA,CAChB,IAEC,yBADE9lQ,OAAOsC,KAAKtC,OAAOQ,OAAO,CAAC,EAAGqlQ,IAAQpgQ,KAAK,GAS/C,CAHC,MAAO5N,GAER,OAAO,CACP,CACD,EAEgBkuQ,IAAoB/lQ,OAAOQ,OAA5C,IGrDA,GAF2B,+CCgC3B,SAAS22G,GAAe6uJ,EAAWhzL,EAAQnrE,EAAUiuG,EAAertB,GA+CnE,CAOD0uB,GAAeb,kBAAoB,WAC7BtzG,CAGN,ECpFU43D,SAASz9D,KAAK1C,KAAKuF,OAAO/E,UAAUwP,gBCJ9C,SAAS2rG,KAAkB,CAC3B,SAASC,KAA2B,CACpCA,GAAuBC,kBAAoBF,GAE3C,uBCEE1hH,EAAOC,QDFQ,WACf,SAAS4hH,EAAK9qG,EAAOoqG,EAAUC,EAAejuG,EAAUkuG,EAAc/yB,GACpE,GAAIA,IAAWmzB,GAAf,CAIA,IAAIt+G,EAAM,IAAI/H,MACZ,mLAKF,MADA+H,EAAIwF,KAAO,sBACLxF,CAPL,CAQF,CAED,SAAS2+G,IACP,OAAOD,CACR,CAHDA,EAAKX,WAAaW,EAMlB,IAAIE,EAAiB,CACnBvyF,MAAOqyF,EACPI,KAAMJ,EACN51D,KAAM41D,EACN72G,OAAQ62G,EACR/xF,OAAQ+xF,EACRzzF,OAAQyzF,EACRtkC,OAAQskC,EAER9/B,IAAK8/B,EACLK,QAASJ,EACTrhG,QAASohG,EACTM,YAAaN,EACbO,WAAYN,EACZ9hG,KAAM6hG,EACNQ,SAAUP,EACVxxC,MAAOwxC,EACPQ,UAAWR,EACXS,MAAOT,EACPU,MAAOV,EAEPW,eAAgBd,GAChBC,kBAAmBF,IAKrB,OAFAK,EAAeW,UAAYX,EAEpBA,CACR,CC9CkBwvJ,MCfNC,GAAkB,CAC7Br3M,OAAQuoD,GAAUt0F,OAClBmnF,cAAemN,GAAU5yF,OACzB2hP,cAAe/uJ,GAAU5yF,OACzBy4E,UAAWma,GAAUz2D,KACrBs7C,aAAcmb,GAAUz2D,KACxBu8C,QAASka,GAAUz2D,MCLfylN,GAAoB,iBAAM,IAAM1jQ,KAAK8jB,SAASvjB,SAAS,IAAIkF,OAAO,EAAG,EAA3E,EAEMk+P,GAAY,SAAC,GAOb,IANJx3M,EAMI,EANJA,OAMI,IALJo7C,cAAAA,OAKI,MALY,CAAC,EAKb,MAJJk8J,cAAAA,OAII,MAJY,CAAC,EAIb,MAHJlpK,UAAAA,OAGI,MAHQrzF,QAAQ2mD,IAGhB,MAFJ0rC,aAAAA,OAEI,MAFWryF,QAAQ2mD,IAEnB,MADJ2sC,QAAAA,OACI,MADMtzF,QAAQzK,MACd,EACEmnQ,EAAW,SAACnnQ,GAChB+9F,EAAQ/9F,EADV,EAIMonQ,EAAgB,SAACt8P,GACrBgzF,EAAUhzF,GACVgyF,EAAahyF,EAFf,EAKMkxF,EAASirK,KACTI,EAAcJ,KAiBpB,OAhBApyI,EAAAA,EAAAA,YAAU,WACR,IAAMyyI,GAASC,EAAAA,GAAAA,IAAoB73M,EAAQs3M,GAAeM,OAA3CC,GAAAA,CACbvrK,OAAAA,EACAzsD,UAAW,IAAI83N,EACfvqK,aAAcsqK,GACXt8J,IAIL,OADAw8J,EAAO3uQ,OAAOsE,OAAdqqQ,MAA2BH,GACpB,WACDG,GACFA,EAAOp8K,OAFX,CATO,GAcN,CAAC8Q,EAAQqrK,EAAa33M,EAAQs3M,EAAel8J,EAAes8J,IAExD,CAAEC,YAAAA,EAnCX,ECAMG,GAAe,SAAC,GAQhB,IAPJ93M,EAOI,EAPJA,OACAo7C,EAMI,EANJA,cACAk8J,EAKI,EALJA,cACAlpK,EAII,EAJJA,UACAhB,EAGI,EAHJA,aACAiB,EAEI,EAFJA,QACA1nF,EACI,EADJA,SAEQgxP,EAAgBH,GAAU,CAChCx3M,OAAAA,EACAo7C,cAAe,IAAEhQ,YAAa6P,GAAAA,GAAAA,QAA6BG,GAC3Dk8J,cAAAA,EACAlpK,UAAAA,EACAhB,aAAAA,EACAiB,QAAAA,IANMspK,YAqBR,OAXMhxP,EACKqpG,EAAAA,aAAmBrpG,EAAU,CAAE3U,GAAI2lQ,IAG1C3nJ,EAAAA,cAAAA,MAAAA,CACE,cAAY,gBACZxiG,MAAO,CAAE1F,OAAQ,SACjB9V,GAAI2lQ,GA1BZ,EAiCAG,GAAaj4J,UAAYw3J,GCjCzB,ICQaU,GAAb,8BAEI,WAAYn7P,GAAa,IAAD,oBACpB,cAAMA,IACD6H,MAAQ,CAAC4sP,WAAW,GACzB,EAAKC,cAAgB,EAAKA,cAAc1lQ,KAAnB,MACrB,EAAK2lQ,eAAiB,EAAKA,eAAe3lQ,KAApB,MAJF,CAKvB,CAPL,uCASI,WACIwB,KAAK6tE,SAAS,CAACo2L,WAAW,GAC7B,GAXL,4BAaI,WACIjkQ,KAAK6tE,SAAS,CAACo2L,WAAW,GAC7B,GAfL,oBAiBI,WAAU,IAAD,OACDE,EAAiBnkQ,KAAKmkQ,eAC1B,OAAO,iCACP,iBAAKnrP,UAAU,oBAAf,UACKhZ,KAAKqX,MAAM4sP,YACR,iBAAKjrP,UAAU,eAAf,4BAA4C,cAAGA,UAAU,+BAA+BoH,MAAO,CAACoZ,QAAS,SAE7G,SAACkxO,GAAD,CACA93M,OA/BS,yBAgCTouC,UAAW,SAACpqE,GACR8wD,GAAAA,IAAW,WACXA,GAAAA,IAAW9wD,EACd,EACDopE,aAAc,SAACppE,GACX8wD,GAAAA,IAAW,UACXA,GAAAA,IAAW9wD,GACXA,EAAIg0O,cAAcrtQ,SAAQ,SAACiU,GACvB,IAAI4nC,EAAO,IAAIpxC,SACfoxC,EAAKnsC,OAAO,OAAQuE,EAAKq5P,cACzB,EAAK3G,gBACLvlQ,KAAAA,KAAW,sBAAwCtB,IAAtBmU,EAAKq5P,aAA6B,KAAOzxN,EAClE,CAEIp9C,OAAQ,CAAE,UAAa,EAAKwT,MAAMivM,UAAW,SAAY,EAAKjvM,MAAM6N,SAAU,mBAAsB,EAAK7N,MAAM40P,mBAAoB,WAAc,EAAK50P,MAAM8kP,WAAY,SAAY9iP,EAAKs5P,SAAU,IAAOt5P,EAAKrW,IAAK,SAAYqW,EAAK0D,UACrOrM,cAAe,WACf9O,QAAS,CAAE,eAAgB,yBAE9BoG,MAAK,SAAC5E,GACH4oQ,IACI,EAAK30P,MAAM60P,kBACX,EAAK70P,MAAM60P,iBAAiB9oQ,EAAS1B,KAAM2X,EAAKs5P,SAEvD,IACAt1P,OAAM,SAACtS,GACJihQ,IACAz8K,GAAAA,IAAWxkF,EACd,GACR,GACJ,EACD8qG,cAAe,CACXr4F,OAAQ,CAAC,YAAa,aAAc,YAAa,mBACjDioF,YAAa,CAAC,oBAAqB,cAAe,UAAW,eAAgB,WAAY,uBACzFsC,QAAS,CAAEt0F,SAAU,QAAS6mC,UAAW,aAEzCmtD,qBAAsB,SAAU1wF,GAAKw4E,GAAAA,IAAWx4E,GAAIw4E,GAAAA,IAAW,iBAAoB,EACnF/2D,SAAU,GACV4tE,oBAAoB,EACpBD,mBAAmB,EACnBD,oBAAoB,EACpBmB,OAAQ,SAAS9iF,GACbngB,WAAWouQ,EAAWI,gBAAgB,IACzC,GAELb,cAAe,CAAEz9J,cAAc,SAG/B,oBAEP,IA3EL,8BA6EI,WACI,IAAIu+J,EAAa7gQ,SAAS8gQ,uBAAuB,mBAC7CD,EAAW32Q,OAAS,EACpBs2Q,EAAWO,mBAAmBF,EAAW,IAEzCzuQ,WAAWouQ,EAAWI,gBAAgB,IAE7C,GApFL,gCAqFI,SAA0B7xP,GACtB,CAAC,YAAa,QAAS,WAAW3b,SAAQ,SAAA4tQ,GAAc,OACpDjyP,EAAQjF,cACR,IAAI6oJ,WAAWquG,EAAgB,CAC3B/3P,KAAMzH,OACN4+C,SAAS,EACTC,YAAY,EACZ2mF,QAAS,IANuC,GAU3D,KAhGL,GAAgC/oB,EAAAA,eAmGNrkH,OAAOk/B,OAAO,CACpCuhO,OAAQ,oBACRC,QAAS,6FC9GA2G,GAAgD,SAAA57P,GAC3D,IAAQ+J,EAA0C/J,EAA1C+J,SAAU6G,EAAgC5Q,EAAhC4Q,MAAOpH,EAAyBxJ,EAAzBwJ,UAAczf,EAAvC,EAAkDiW,EAAlD,IACA,GAAwB44J,EAAAA,GAAAA,cAAa,KAAK7uK,IAAlC2J,EAAR,EAAQA,MAAOrH,EAAf,EAAeA,KAEf,OACE,mBACE8zB,SAAU8mC,QAAQvzD,GAClBjF,KAAK,SACL+a,UAAWA,EACXoH,MAAK,KACAA,GAEL8gF,QAAS,kBAAMrlG,GAAN,EAPX,SASG0d,GAGN,EAED6xP,GAAgB/4J,YAAc,kBCGvB,IAAMg5J,GAAb,8BACE,WAAY77P,GAAe,IAAD,oBACxB,cAAMA,IAsBRwxF,UAvB0B,+BAuBM,WAAOsqK,EAAax4P,GAApB,+EAG9B,EAAK+6D,SAAS,CAAEy9L,YAAaA,IAHC,SAIC,EAAKC,gBAAgBD,GAJtB,OAI1BE,EAJ0B,OAK9B,EAAKh8P,MAAMwxF,UAAU,EAAKxxF,MAAM40P,mBAAoBoH,EAAmB5mQ,IALzC,2CAvBN,0DA+B1B6mQ,QAA4B,SAACpyJ,EAAWvmG,GACtC40E,GAAAA,IAAW2xB,EAAWvmG,EACvB,EAjCyB,EAmC1Bk1J,OAA0B,SAAC9kK,EAAO4P,GAChC40E,GAAAA,IAAWxkF,EAAO4P,EACnB,EAnCC,EAAKuE,MAAQ,CAAEq0P,UAAW,KAAMC,YAAa,KAAML,YAAa,KAAMM,aAAc,KAAM36M,KAAM,GAFxE,CAIzB,CALH,wEAOE,qGACyBtyD,KAAAA,IAAU,gCADnC,cACQpD,EADR,yBAESA,EAAS1B,MAFlB,2CAPF,oHAYE,qGAC0BmG,KAAK6rQ,kBAD/B,OACQH,EADR,OAEE1rQ,KAAK6tE,SAAS,CAAE69L,UAAWA,IAF7B,gDAZF,kHAkBE,WAAsBJ,GAAtB,mFACQxsQ,EAAUkB,KAAKisK,aADvB,SAEyBttK,KAAAA,IAAA,4DAAqDG,EAAQo/M,gBAA7D,aAAqD,EAAkBo2C,WAAvE,yBAAkGt0P,KAAKwP,MAAMs8P,aAA7G,wBAAyIR,IAFlK,cAEQ/vQ,EAFR,yBAGSA,EAAS1B,MAHlB,gDAlBF,2EAwCI,WAAU,IAAD,IACP,OACE,SAACuxQ,GAAD,CAAiBpyP,UAAS,UAAEhZ,KAAKwP,MAAMwJ,iBAAb,QAA0B,mBAAoB9Y,MAAOF,KAAKqX,MAAMq0P,UAAW1qK,UAAWhhG,KAAKghG,UAArH,mBAAiIhhG,KAAKwP,MAAMuG,aAA5I,QAAqJ,8BAE1J,KA5CH,GAAiCgqM,IC1B7B/8F,GAAY,CAAC,QAAS,OAAQ,SAElC,SAASC,KAA2Q,OAA9PA,GAAWl/G,OAAOQ,QAAU,SAAUqB,GAAU,IAAK,IAAIvF,EAAI,EAAGA,EAAI2I,UAAU3U,OAAQgM,IAAK,CAAE,IAAIW,EAASgI,UAAU3I,GAAI,IAAK,IAAI7C,KAAOwD,EAAc+C,OAAO/E,UAAUwP,eAAetN,KAAKF,EAAQxD,KAAQoI,EAAOpI,GAAOwD,EAAOxD,GAAW,CAAC,OAAOoI,CAAS,EAASq9G,GAASpgH,MAAM7C,KAAMgJ,UAAa,CAE7T,SAASuiB,GAAyBvqB,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAAkExD,EAAK6C,EAAnEuF,EAEzF,SAAuC5E,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAA2DxD,EAAK6C,EAA5DuF,EAAS,CAAC,EAAO0lB,EAAavnB,OAAOsC,KAAKrF,GAAqB,IAAKX,EAAI,EAAGA,EAAIirB,EAAWj3B,OAAQgM,IAAO7C,EAAM8tB,EAAWjrB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,IAAaoI,EAAOpI,GAAOwD,EAAOxD,IAAQ,OAAOoI,CAAS,CAFjNwlB,CAA8BpqB,EAAQqqB,GAAuB,GAAItnB,OAAOynB,sBAAuB,CAAE,IAAIC,EAAmB1nB,OAAOynB,sBAAsBxqB,GAAS,IAAKX,EAAI,EAAGA,EAAIorB,EAAiBp3B,OAAQgM,IAAO7C,EAAMiuB,EAAiBprB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,GAAkBuG,OAAO/E,UAAU0sB,qBAAqBxqB,KAAKF,EAAQxD,KAAgBoI,EAAOpI,GAAOwD,EAAOxD,GAAS,CAAC,OAAOoI,CAAS,CAM5e,IAAImmQ,IAAyB7hG,EAAAA,EAAAA,aAAW,SAAUr4J,EAAM8B,GACtD,IAAIihD,EAAQ/iD,EAAK+iD,MACblhD,EAAO7B,EAAK6B,KACZ04B,EAAQv6B,EAAKu6B,MACbk5B,EAAO/5C,GAAyB1Z,EAAMmxG,IAE1C,OAAoBJ,EAAAA,cAAoB,MAAOK,GAAS,CACtDtvG,IAAKA,EACLupH,MAAO,6BACPC,QAAS,YACT3iH,MAAO9G,EACPgH,OAAQhH,EACR6pH,KAAM3oE,GACL0Q,GAAOl5B,EAAqBw2E,EAAAA,cAAoB,QAAS,KAAMx2E,GAAS,KAAmBw2E,EAAAA,cAAoB,OAAQ,CACxHopJ,SAAU,UACV97M,EAAG,0GAEN,IACD67M,GAAUt5J,UAAY,CACpB79C,MAAOumD,KAAAA,OACPznG,KAAMynG,KAAAA,UAAoB,CAACA,KAAAA,OAAkBA,KAAAA,SAC7C/uE,MAAO+uE,KAAAA,QAET4wJ,GAAU35J,aAAe,CACvBx9C,MAAO,eACPlhD,KAAM,MACN04B,MAAO,MAET,ICnCY6/N,GAWAC,GAYAC,GDYZ,OCnCA,SAAYF,GAAAA,EAAAA,EAAAA,UAAAA,GAAAA,YAAAA,EAAAA,EAAAA,eAAAA,GAAAA,iBAAAA,EAAAA,EAAAA,SAAAA,GAAAA,WAAAA,EAAAA,EAAAA,QAAAA,GAAAA,UAAAA,EAAAA,EAAAA,UAAAA,GAAAA,YAAAA,EAAAA,EAAAA,IAAAA,GAAAA,MAAAA,EAAAA,EAAAA,SAAAA,GAAAA,UAAAA,CAAZ,CAAYA,KAAAA,GAAAA,CAAAA,IAWZ,SAAYC,GAAAA,EAAAA,EAAAA,iBAAAA,SAAAA,mBAAAA,EAAAA,EAAAA,iBAAAA,WAAAA,mBAAAA,EAAAA,EAAAA,UAAAA,WAAAA,YAAAA,EAAAA,EAAAA,WAAAA,WAAAA,aAAAA,EAAAA,EAAAA,QAAAA,WAAAA,UAAAA,EAAAA,EAAAA,cAAAA,WAAAA,gBAAAA,EAAAA,EAAAA,UAAAA,WAAAA,YAAAA,EAAAA,EAAAA,IAAAA,WAAAA,KAAAA,CAAZ,CAAYA,KAAAA,GAAAA,CAAAA,IAYZ,SAAYC,GAAAA,EAAAA,EAAAA,gBAAAA,SAAAA,kBAAAA,EAAAA,EAAAA,YAAAA,WAAAA,aAAAA,CAAZ,CAAYA,KAAAA,GAAAA,CAAAA,kECDZ,GAnBuB,SAAC,GAA2C,IAAzCzwF,EAAwC,EAAxCA,KAActvI,GAA0B,EAAlCmwI,OAAkC,EAA1BnwI,OAAO9P,EAAmB,EAAnBA,KAAM8vO,EAAa,EAAbA,OACjD,OAAK1wF,GAED,SAAC,KAAD,CAAWlpH,OAAQ,cAAnB,UACI,gBAAKx5C,UAAU,eACX8tO,gBAAgB,kBADpB,UAEI,iBAAK9tO,UAAU,WAAf,WACI,SAAC,UAAD,WACI,wBAAKozB,OAET,SAAC,QAAD,UAAa9P,KACb,SAAC,UAAD,UAAe8vO,YAVb,uBAgBrB,ECrBKC,GAAAA,SAAAA,GAAAA,EAAAA,EAAAA,GAAAA,IAAAA,EAAAA,EAAAA,GAAAA,SAAAA,IAAAA,OAAAA,EAAAA,KAAAA,GAAAA,EAAAA,MAAAA,KAAAA,UAAAA,CAsCD,OAtCCA,EAAAA,EAAAA,CAAAA,CAAAA,IAAAA,sBAAAA,MAEF,SAAoBC,GAChB,IAAIC,EAAU,EAEVC,EAAW,EACXC,EAAU,IACQ,MAAlBH,EAAW,KACXE,EAAW,EACXD,EAAU,EACVE,EAAU,KAEd,IAAMrjQ,EAAQkjQ,EAAWl4Q,MAAMq4Q,GACzBp1Q,EAAM1D,SAASyV,EAAMmjQ,GAAU,IAC/B51Q,EAAQhD,SAASyV,EAVP,GAUyB,IAAM,EACzC1V,EAAOC,SAASyV,EAAMojQ,GAAW,IAEvC,OAAO,IAAIr5Q,KAAKO,EAAMiD,EAAOU,EAChC,uBAED,WAAU,IAAD,EAEDvE,EADJ,IAAKkN,KAAKwP,MAAM1c,KAAM,MAAO,GAIzBA,EADoC,oBAA7BkN,KAAKwP,MAAM1c,KAAKiB,SAChBiM,KAAKwP,MAAM1c,KAEXkN,KAAK0sQ,oBAAoB1sQ,KAAKwP,MAAM1c,MAG/C,IAAI4R,EAAc,CAAErN,IAAK,UAAWV,MAAK,UAAEqJ,KAAKwP,MAAMm9P,mBAAb,QAA4B,QAChE3sQ,KAAKwP,MAAMo9P,cACZloQ,EAAQhR,KAAO,WAGnB,IAAM+hI,EAAgB3iI,EAAK+5Q,wBAAmBxvQ,EAAWqH,GAEzD,OAAO,8BAAG+wH,GACb,OAtCC42I,CAAsBzpJ,EAAAA,WAyC5B,MCpBakqJ,GAAb,8BAEI,WAAYt9P,GAAkC,IAAD,oBACzC,cAAMA,IAEDu9P,YAAc,EAAKA,YAAYvuQ,KAAjB,MACnB,EAAKwuQ,aAAe,EAAKA,aAAaxuQ,KAAlB,MACpB,EAAK6Y,MAAQ,CAACu0P,aAAc,MALa,CAM5C,CARL,qCAUI,WAAe,IAAD,WAEVjtQ,KAAAA,KAAW,wBAAyB,KAAM,CAAE3C,OAAQ,CAAEs4P,WAAYt0P,KAAKwP,MAAM8kP,WAAY2Y,cAAa,UAAEjtQ,KAAKqX,MAAM61P,0BAAb,aAAE,EAA+BD,cAAeE,gBAAe,UAAEntQ,KAAKqX,MAAM+1P,sBAAb,QAA+B,MAC/LjtQ,MAAK,SAAA5E,GAAa,IAAD,EACd,EAAKsyE,SAAS,CAAEw/L,WAAW,IAC3B,EAAKh2P,MAAM61P,mBAAoBC,gBAA/B,UAAiD,EAAK91P,MAAM+1P,sBAA5D,QAA8E,EACjF,IACA53P,OAAM,SAAChN,GACJk/E,GAAAA,IAAWl/E,EACd,GACR,GApBL,0BAsBI,WAAgB,IAAD,OACPxI,KAAKwP,MAAM+C,KAAK+6P,oBAChBttQ,KAAK6tE,SAAS,CAAC+9L,aAAc5rQ,KAAKwP,MAAM+C,KAAK+6P,sBAIjD3uQ,KAAAA,IAAU,wBAAyB,CAAE3C,OAAQ,CAAEs4P,WAAYt0P,KAAKwP,MAAM8kP,WAAY8P,mBAAoBpkQ,KAAKwP,MAAM+C,KAAK6xP,mBAAoB1gQ,SAAU1D,KAAKwP,MAAM+C,KAAKnR,QAC/JjB,MAAK,SAAA5E,GAAa,IAAD,EACd,EAAKsyE,SAAS,CAAE+9L,aAAY,UAAErwQ,EAAS1B,YAAX,QAAmB,KAC/C,EAAK2V,MAAM+C,KAAK+6P,oBAAsB/xQ,EAAS1B,IAClD,IACA2b,OAAM,SAAChN,GACJk/E,GAAAA,IAAWl/E,EACd,GAER,GArCL,oBAuCI,WAAc,IAAD,OACExI,KAAKwP,MAAM+C,KAGtB,IAAKvS,KAAKqX,MAAMu0P,aAEZ,OADA5rQ,KAAKgtQ,gBACE,yCAAe,SAAC,GAAD,CAAet5P,KAAK,KAAKwK,UAAU,SAAS64J,KAAK,cACpE,GAAuC,IAAnC/2K,KAAKqX,MAAMu0P,aAAav3Q,OAC/B,OAAO,wBAEX,IAAIgb,GAAU,wBAsCd,OArCIrP,KAAKqX,MAAMk2P,0BACXl+P,GAAU,gCACLrP,KAAKqX,MAAMu0P,aAAa54P,KAAI,SAAAm3E,GACzB,OAAO,iBAAKnxE,UAAU,sBAAf,WACP,2BAAI,SAAC,GAAD,CAAelmB,KAAMq3F,EAAYr3F,KAAM65Q,YAAa,YAAxD,MAAwExiL,EAAY3mF,gBACpF,wBAAK2mF,EAAYiI,UACjB,2BAAI,4BAASjI,EAAYk2K,YACzB,iBAAKrnP,UAAU,YAAYkoF,QAAS,kBAAM,EAAKrzB,SAAS,CAACw/L,WAAW,EAAMD,eAAejjL,EAAYgjL,gBAAiBD,mBAAmB/iL,GAArG,EAApC,WAAwJ,cAAGnxE,UAAU,sBAArK,iBAGH,KACD,SAAC,GAAD,CACI0iK,KAAM17K,KAAKqX,MAAMg2P,UACjB9wF,OAAQ,WAAQ,EAAK1uG,SAAS,CAACw/L,WAAW,GAAU,EACpDjhO,MAAO,GACP9P,MACI,SAAC,GAAD,WACI,UAAC,SAAD,CAAYtjB,UAAU,OAAtB,WACI,SAAC,SAAD,qBACA,SAAC,WAAD,CAAc2iJ,YAAa,SAACnzJ,GAAOA,EAAEynC,iBAAkB,EAAEi/H,GAAG,WAAWxzI,KAAM,EAAG/S,aAAc3oB,KAAKqX,MAAM+1P,eAAgB1/I,SAAU,SAAAllH,GAAC,OAAI,EAAKqlE,SAAS,CAAEu/L,eAAgB5kQ,EAAE5C,OAAOjK,OAA7C,EAAuD84H,WAAS,SAIhN23I,QACI,iCACA,mBAAQpzP,UAAU,gBAAgBkoF,QAAS,kBAAM,EAAKrzB,SAAS,CAACw/L,WAAW,GAAhC,EAA3C,oBAGA,mBAAQr0P,UAAU,mBAAmBkoF,QAAS,kBAAM,EAAK6rK,aAAX,EAA9C,4BAST,iCACP,gBAAK/zP,UAAU,OAAOkoF,QAAS,SAAC14F,GAAO,EAAKqlE,SAAS,CAAC0/L,yBAA0B,EAAKl2P,MAAMk2P,yBAA2B,EAAtH,UAAwH,wBAAKvtQ,KAAKqX,MAAMk2P,wBAA0B,2BAA6B,+BAC9Ll+P,IAEJ,KA3FL,GAAyC0wM,ICiC5BytD,GAAb,8BAGI,WAAYh+P,GAA4B,IAAD,oBACnC,cAAMA,IAHFi+P,kBAE+B,EAEnC,EAAKp2P,MAAQ,CACTq2P,aAAa,EACb33O,MAAO,EAAKvmB,MAAMumB,MAClB43O,gBAAiB,EAAKn+P,MAAMumB,MAAM1hC,OAAS,EAC3Cu5Q,eAAe,EACfT,gBAAiB,GACjBU,YAAa,GACbC,IAAK,GACLC,iBAAkB,GAClBC,aAAa,EACbC,qBAAsB,GACtBzX,WAAY,KACZ0X,gBAAgB,EAChBC,qBAAqB,EACrBZ,yBAAyB,GAE7B,EAAKa,aAAe,EAAKA,aAAa5vQ,KAAlB,MAEpB,EAAK2lQ,eAAiB,EAAKA,eAAe3lQ,KAApB,MACtB,EAAK6vQ,eAAiB,EAAKA,eAAe7vQ,KAApB,MACtB,EAAKsmQ,cAAgB,EAAKA,cAActmQ,KAAnB,MACrB,EAAK8vQ,aAAe,EAAKA,aAAa9vQ,KAAlB,MAGpB,EAAKivQ,aAAe,EAAKj+P,MAAMi+P,aAE/B,EAAKc,eAAiB,EAAKA,eAAe/vQ,KAApB,MACtB,EAAKgwQ,wBAA0B,EAAKA,wBAAwBhwQ,KAA7B,MAC/B,EAAKiwQ,kBAAoB,EAAKA,kBAAkBjwQ,KAAvB,MAEzB,EAAKwiG,UAAY,EAAKA,UAAUxiG,KAAf,MACjB,EAAKkwQ,aAAe,EAAKA,aAAalwQ,KAAlB,MAjCe,CAkCtC,CArCL,wCAuCI,WACIwB,KAAK6tE,SAAS,CAAE+/L,eAAe,GAClC,GAzCL,qCA2CI,SAAwB14P,EAAkB41P,EAAkB6D,EAAqBb,GAC7E9tQ,KAAK6tE,SAAS,CAAEkgM,iBAAkB74P,EAAUi4P,gBAAiBwB,EAAad,YAAaC,EAAKA,IAAKA,EAAKF,eAAe,EAAMK,qBAAsBnD,GACpJ,GA7CL,+BA+CI,WAAqB,IAAD,OAEhBnsQ,KAAAA,KAAW,uBAAwB,KAAM,CAAE3C,OAAQ,CAAEs4P,WAAYt0P,KAAKwP,MAAM8kP,WAAYp/O,SAAUlV,KAAKqX,MAAM02P,iBAAkBjD,SAAU9qQ,KAAKqX,MAAM42P,qBAAsBU,YAAa3uQ,KAAKqX,MAAM81P,gBAAiBW,IAAM9tQ,KAAKqX,MAAMy2P,KAAO9tQ,KAAKqX,MAAMw2P,YAAc,KAAO7tQ,KAAKqX,MAAMy2P,IAAM1J,mBAAoBpkQ,KAAKwP,MAAM40P,sBACtTjkQ,MAAK,SAAA5E,GACF,EAAKsyE,SAAS,CAAE+/L,eAAe,IAC/B,IACIr7P,EADqB,EAAK8E,MAAM0e,MACnBG,MAAK,SAAA+S,GAAC,OAAIA,EAAE7nC,OAAS,EAAKiW,MAAM02P,gBAA1B,IACnBx7P,IACAA,EAAK46P,gBAAkB,EAAK91P,MAAM81P,gBAClC56P,EAAKu7P,IAAM,EAAKz2P,MAAMy2P,IACtBv7P,EAAK9W,OAAS,0BACV,EAAK4b,MAAMy2P,KAAO,EAAKz2P,MAAMw2P,cAC7Bt7P,EAAKq8P,QAAU,IAG1B,IACAp5P,OAAM,SAAChN,GACJk/E,GAAAA,IAAWl/E,EACd,GACR,GAlEL,0BAoEI,WAAgB,IAAD,EACX,OAAIxI,KAAK8/P,eAAiB9/P,KAAKwP,MAAM/T,SAAWoiN,GAA2BuiD,SAChE,iBACPpgQ,KAAKwP,MAAM/T,SAAWoiN,GAA2BgxD,QAC1C,UAAA7uQ,KAAKqX,MAAM0e,aAAX,eAAkB1hC,QAAS,EAAI,aAAe,aACrD2L,KAAKwP,MAAM/T,SAAWoiN,GAA2BixD,SAC1C,OACP9uQ,KAAKwP,MAAM/T,SAAWoiN,GAA2BkxD,WAC1C,aACP/uQ,KAAKwP,MAAM/T,SAAWoiN,GAA2BuiD,SAC1C,WAEJ,YACV,GAjFL,yBAmFI,WACI,IAAI4O,EAAoBhvQ,KAAKwP,MAAMumB,MAAMpmB,QAAO,SAAAiB,GAAC,cACvB,MAAlB,UAACA,EAAEg+P,eAAH,QAAY,MACZ,UAACh+P,EAAE08P,2BAAH,QAAwB,IAAI39P,QAAO,SAAAgB,GAAC,OAAKA,EAAEw8P,eAAP,IAAwB94Q,OAAO,CAF1B,IAIjD,SAAI2L,KAAKwP,MAAM6wP,UACX2O,EAAkB36Q,OAAS,GAC3B2L,KAAKwP,MAAM/T,SAAWoiN,GAA2B4hD,YAGxD,GA7FL,4BA+FI,SAAuB5lQ,EAAsBwjB,EAAkB+mP,EAA4B3lD,EAAmBqsD,GAAgB,IAAD,EACrH9qQ,KAAKwP,MAAM60P,kBACXrkQ,KAAKwP,MAAM60P,iBAAiBxqQ,EAAKsB,KACrC,IAAImuB,EAAqBtpB,KAAKqX,MAAM0e,MAChCk5O,EAAgB,UAAG3lP,EAAM4M,MAAK,SAAA+S,GAAC,OAAIA,EAAEm7N,qBAAuBA,CAA7B,WAAf,aAAG,EAA8D6K,iBACjF18P,EAAkB,CAClB3N,GAAI0kB,EAAMj1B,OAAS,IACnBgpB,SAAUA,EACV4xP,iBAAkBA,EAClB7K,mBAAoBA,EACpBhjQ,KAAMvH,EAAKsB,IAAI/G,MAAM,KAAK8Y,MAC1BzR,OAAS5B,EAAKq1Q,SAAW,qBAAuB,WAChDN,QAAS/0Q,EAAK4G,SAAW,GACzB0sQ,gBAAiB,GACjBW,IAAK,GACLhD,SAAUA,GAEdxhP,EAAMzoB,KAAK0R,GACXvS,KAAK6tE,SAAS,CAAE93C,MAAOzM,GAC1B,GAlHL,4BAoHI,SAAuBzvB,EAAWuqQ,GAC9B,IAAI96O,EAAqBtpB,KAAKqX,MAAM0e,MAChCo5O,EAAY7lP,EAAM1K,WAAU,SAAAqqB,GAAC,OAAIA,EAAEm7N,qBAAuBA,GAAsBn7N,EAAE7nC,OAASvH,EAAKzF,MAAM,KAAK8Y,KAA9E,IAC7BiiQ,GAAa,GACb7lP,EAAMvoB,OAAOouQ,EAAW,GAC5BnvQ,KAAK6tE,SAAS,CAAE93C,MAAOzM,GAC1B,GA1HL,2BA4HI,SAAc86O,GAAmC,IAAD,SACtCtlQ,EAAUkB,KAAKisK,aACrBttK,KAAAA,KAAW,oDAAqD,KAAM,CAAE3C,OAAQ,CAAEooQ,mBAAoBA,EAAoB9P,WAAU,UAAEx1P,EAAQo/M,gBAAV,aAAE,EAAkBo2C,cACnJn0P,MAAK,SAAA5E,GACF,EAAKiU,MAAM6mP,OAAO+N,EAAoBvmD,GAA2BixD,SACpE,GACR,GAlIL,uBAoII,SAAU1K,GACNpkQ,KAAKwP,MAAM6mP,OAAO+N,EAAoBvmD,GAA2BixD,SACpE,GAtIL,0BAwII,SAAaxa,EAAgC5wP,EAAkBonQ,GACvDxW,GACA31P,KAAM,CACFxD,IAAI,+BAAD,OAAiCm5P,EAAjC,qBAAwDx5P,mBAAmB4I,GAA3E,qBAAiGonQ,GACpGhvQ,OAAQ,MACR9B,aAAc,SACfmG,MAAK,SAAA5E,GACJ,IAAMJ,EAAMwQ,OAAO8hD,IAAIC,gBAAgB,IAAIjhD,KAAK,CAAClR,EAAS1B,QACpD0sF,EAAOp8E,SAASa,cAAc,KACpCu7E,EAAKr7E,KAAO/P,EAC6B,oBAArCI,EAASxB,QAAQ,kBAAuE,IAA9B2J,EAASpH,QAAQ,UAC3EoH,GAAsB,QAE1B6iF,EAAKp7E,aAAa,WAAYzH,GAC9ByG,SAASmyB,KAAKljB,YAAYmtE,GAC1BA,EAAKtrC,QACkB,MAAnBsrC,EAAK3sE,YACL2sE,EAAK3sE,WAAWC,YAAY0sE,EACnC,GAER,GA5JL,sBA8JI,SAAS69K,GAAmC,IAAD,SACjCtlQ,EAAUkB,KAAKisK,aACrBjsK,KAAK6tE,SAAS,CAAEmgM,aAAa,IAC7BrvQ,KAAAA,KAAW,4DAA6D,KAAM,CAAE3C,OAAQ,CAAEooQ,mBAAoBA,EAAoB9P,WAAU,UAAEx1P,EAAQo/M,gBAAV,aAAE,EAAkBo2C,cAC3Jn0P,MAAK,SAAC5E,GACHoD,KAAAA,KAAW,0BAA2B,KAAM,CAAE3C,OAAQ,CAAEyiN,UAAW,EAAKjvM,MAAMivM,aAAet+M,MAAK,WAC9F,GAAI5E,EAAS1B,KACT,IAAK,IAAIwG,EAAI,EAAGA,EAAI9E,EAAS1B,KAAKxF,OAAQgM,IAAK,CAC3C,IAAIuE,EAAKrJ,EAAS1B,KAAKwG,GACvB,EAAKmP,MAAM6mP,OAAOzxP,EAAIi5M,GAA2BkxD,WACpD,CAGR,GACJ,GACR,GA7KL,iCA+KI,WAAuB,IAAD,EAElB,OAAI,UADY/uQ,KAAKisK,aACTiyC,gBAAR,eAAkBkxD,gBAAiBjD,GAAQkD,aACtCrvQ,KAAKwP,MAAM8/P,qBAAuBtvQ,KAAKqX,MAAMq2P,YACvC,aAEJ,gBAEJ,EACV,GAxLL,0BA0LI,WACQ1tQ,KAAKqX,MAAM0e,MAAM1hC,OAAS,GAAK2L,KAAKwP,MAAM/T,SAAWoiN,GAA2BuiD,UAChFpgQ,KAAK8kQ,cAAc9kQ,KAAKwP,MAAM40P,oBAElCpkQ,KAAK6tE,SAAS,CAAE6/L,aAAa,GAChC,GA/LL,oBAiMI,WAAU,IAAD,iBACC5uQ,EAAUkB,KAAKisK,aACjBsjG,EAAavvQ,KAAKsuQ,eAClBjO,EAAWrgQ,KAAKqX,MAAM0e,MAAMpmB,QAAO,SAAAiB,GAAC,OAAIA,EAAEg+P,SAAYh+P,EAAE08P,qBAAuB18P,EAAE08P,oBAAoBj5Q,OAAS,CAA1E,IAExC,GAAI2L,KAAKqX,MAAMm/O,WACX,OAAO,SAACllD,GAAD,CAAU3nK,GAAI3pC,KAAKqX,MAAMm/O,aAIpC,IAAIgZ,GAAmB,iCACjBxvQ,KAAKwP,MAAM6wP,UAAgC,IAApBA,EAAShsQ,QAA4C,IAA5B2L,KAAKqX,MAAM0e,MAAM1hC,SAC/D,+BACI,gBAAK2kB,UAAU,OAAf,UAAsB,6BAAM,8BAAShZ,KAAKqX,MAAM0e,MAAM1hC,OAA1B,WAAN,iBAG5B2L,KAAKwP,MAAM6wP,UAAgC,IAApBA,EAAShsQ,QAA4C,IAA5B2L,KAAKqX,MAAM0e,MAAM1hC,SAC/D,+BACI,gBAAK2kB,UAAU,OAAf,UAAsB,6BAAM,8BAAShZ,KAAKqX,MAAM0e,MAAM1hC,OAA1B,YAAN,iBAG5B2L,KAAKwP,MAAM6wP,UAAYA,EAAShsQ,OAAS,KACvC,iBAAK2kB,UAAU,qBAAf,WACI,cAAGA,UAAU,wDAChBhZ,KAAKwP,MAAM6wP,WACR,gBAAKrnP,UAAU,OAAf,UACI,SAAC,GAAD,WACI,UAAC,GAAD,YACI,eAAIA,UAAU,OAAd,UAAqB,8CACrB,eAAIA,UAAU,oBAAd,SAAmChZ,KAAKwP,MAAM6wP,kBAM7DA,EAAShsQ,OAAS,GAAKgsQ,EAASrtP,KAAI,SAACT,EAAMukC,GACxC,OAAO,gBAA8B99B,UAAU,OAAxC,UACH,SAAC,GAAD,WACI,UAAC,GAAD,YACI,eAAIA,UAAU,gBAAd,UAA8B,4BAASzG,EAAKnR,SAC3CmR,EAAKq8P,UACF,gBAAI51P,UAAU,oBAAd,UAAmCzG,EAAKq8P,QAAxC,KAAiD,iBAAM51P,UAAU,oBAAoBoH,MAAO,CAACQ,WAAY,GAAIsgF,QAAS,SAAA14F,GAAC,OAAI,EAAKgmQ,wBAAwBj8P,EAAKnR,KAAMmR,EAAKu4P,SAAUv4P,EAAK46P,gBAAiB56P,EAAKu7P,IAAtF,EAAtE,UAAkK,0BAAG,cAAG90P,UAAU,sBAAhB,kBAEvN,SAAC8zP,GAAD,CAAqBv6P,KAAMA,EAAM+hP,WAAY,EAAK9kP,MAAM8kP,mBAPnD,WAAW/hP,EAAK3N,GAWhC,OAKR5E,KAAKqX,MAAM0e,MAAM/iB,KAAI,SAACT,EAAMukC,GACzB,OAAO,gBAA6B99B,UAAS,wBAAmC,aAAhBzG,EAAK9W,OAAwB,WAAa,IAAnG,UACH,UAAC,GAAD,YACI,UAAC,GAAD,CAAKohF,GAAG,IAAR,UACqB,aAAhBtqE,EAAK9W,SACF,SAAC8zP,GAAD,CAAS3G,QAAS,CAAE,UAAa,GAAI,MAAS,GAAI,QAAW,8DAA7D,UACI,cAAG5vO,UAAU,+BAA+BoH,MAAO,CAACw0C,MAAO,mBAGlD,aAAhBriD,EAAK9W,SACF,SAAC8zP,GAAD,CAAS3G,QAAS,CAAE,UAAa,GAAI,MAAS,GAAI,QAAW,wCAA7D,UACI,cAAG5vO,UAAU,oEAGJ,aAAhBzG,EAAK9W,QAAyC,aAAhB8W,EAAK9W,SAChC,cAAGud,UAAU,+BAGrB,SAAC,GAAD,CAAK6jE,GAAG,IAAR,UACI,eAAI7jE,UAAU,WAAd,UACI,6BAAQ,iBAAMoH,MAAO,CAAEk+I,YAAa,GAAImxG,OAAQ,WAAavuK,QAAS,SAAA14F,GAAO,EAAK4lQ,aAAa,EAAK5+P,MAAM8kP,WAAY/hP,EAAKnR,KAAMmR,EAAKu4P,SAAY,EAA1I,SAA6Iv4P,EAAKnR,cAGlK,UAAC,GAAD,CAAKy7E,GAAG,IAAI7jE,UAAU,WAAtB,WACI,SAACu2O,GAAD,CAAS3G,QAAS,CAAE,UAAa,GAAI,MAAS,GAAI,QAAW,iBAA7D,UACI,cAAG5vO,UAAU,qCAAqCkoF,QAAS,SAAA14F,GAAO,EAAK4lQ,aAAa,EAAK5+P,MAAM8kP,WAAY/hP,EAAKnR,KAAMmR,EAAKu4P,SAAY,OAE3I,SAACvb,GAAD,CAAS3G,QAAS,CAAE,UAAa,GAAI,MAAS,GAAI,QAAW,yEAA7D,UACI,cAAG5vO,UAAU,6BAA6BkoF,QAAS,SAAA14F,GAAC,OAAI,EAAKgmQ,wBAAwBj8P,EAAKnR,KAAMmR,EAAKu4P,SAAUv4P,EAAK46P,gBAAiB56P,EAAKu7P,IAAtF,aA3BnD,QAAUv7P,EAAK3N,GAoCnC,OAKL,OAEI,UAAC,GAAD,CAAWoU,UAAS,wBAAmBu2P,EAAnB,YAAiCvvQ,KAAK0vQ,uBAA1D,WACI,gBAAKtjO,MAAOpsC,KAAKwP,MAAMpO,KAAM4X,UAAS,uBAAkBhZ,KAAKqX,MAAMq2P,aAAe,UAAYxsK,QAAS,kBAAM,EAAKrzB,SAAS,CAAE6/L,aAAc,EAAKr2P,MAAMq2P,aAA/C,EAAvG,UACI,UAAC,GAAD,YACI,SAAC,GAAD,CAAK7wL,GAAI78E,KAAKqX,MAAMq2P,aAA8B,eAAf6B,EAA8B,GAAK,GAAtE,UACI,gBAAKv2P,UAAS,oBAAehZ,KAAKwP,MAAMpO,KAAK/M,QAAU,GAAK,WAAa,IAAzE,SAAgF2L,KAAKwP,MAAMpO,SAE9FpB,KAAKqX,MAAMq2P,aAA8B,eAAf6B,IACvB,UAAC,GAAD,CAAK1yL,GAAI,EAAG7jE,UAAU,kBAAtB,UACKhZ,KAAKwP,MAAM/T,SAAWoiN,GAA2BuiD,WAAapgQ,KAAK8/P,gBAEhE,SAACvQ,GAAD,CAAS3G,QAAS,CAAE,UAAa,GAAI,MAAS,GAAI,QAAW,mDAA7D,UACI,cAAG5vO,UAAS,uCAAkChZ,KAAKwP,MAAM/T,SAAWoiN,GAA2BuiD,SAAW,gBAAiB,iBAIlIpgQ,KAAKwP,MAAM/T,SAAWoiN,GAA2BixD,WAAa9uQ,KAAK8/P,gBAChE,SAACvQ,GAAD,CAAS3G,QAAS,CAAE,UAAa,GAAI,MAAS,GAAI,QAAW,8DAA7D,UACI,cAAG5vO,UAAU,sCAGpBhZ,KAAK8/P,gBACF,SAACvQ,GAAD,CAAS3G,QAAS,CAAE,UAAa,GAAI,MAAS,GAAI,QAAW,qEAA7D,UACI,cAAG5vO,UAAU,yEAGpBhZ,KAAKqX,MAAM0e,MAAM1hC,OAAS,IAAM2L,KAAKwP,MAAM/T,SAAWoiN,GAA2BgxD,QAAU7uQ,KAAKwP,MAAM/T,SAAWoiN,GAA2BkxD,cAAgB/uQ,KAAK8/P,gBAC9J,SAACvQ,GAAD,CAAS3G,QAAS,CAAE,UAAa,GAAI,MAAS,GAAI,QAAW,oCAA7D,UACI,gBAAK5vO,UAAU,cAAf,SAA8BhZ,KAAKqX,MAAM0e,MAAM1hC,WAGtD2L,KAAKqX,MAAM0e,MAAM1hC,OAAS,GAAM2L,KAAKwP,MAAM/T,SAAWoiN,GAA2BixD,WAAa9uQ,KAAK8/P,gBAChG,SAACvQ,GAAD,CAAS3G,QAAS,CAAE,UAAa,GAAI,MAAS,GAAI,QAAW,oCAA7D,UACI,gBAAK5vO,UAAU,aAAf,SAA6BhZ,KAAKqX,MAAM0e,MAAM1hC,oBASlE,UAAC,GAAD,CAAOqf,KAAK,KAAKgoK,MAAO17K,KAAKqX,MAAMq2P,YAAanxF,OAAQv8K,KAAK0uQ,aAAcnoB,UAAQ,EAAnF,WACI,SAAC,UAAD,KAEA,SAAC,QAAD,CAAYvtO,UAAU,YAAtB,UACI,UAAC,GAAD,YACI,UAAC,GAAD,CAAK6jE,GAAI,GAAIkyD,GAAI,EAAG/1H,UAAU,uBAA9B,WACI,eAAIA,UAAU,OAAd,SAAsBhZ,KAAKwP,MAAMpO,QACjC,eAAIgf,OAAOpgB,KAAKwP,MAAM/T,OAAWoiN,GAA2BuiD,SAAW,CAAEhiG,cAAe,KAA8Bv7B,wBAAyB,CAAEoY,OAAM,UAAEj7I,KAAKwP,MAAMi3P,gBAAb,QAAyB,MAC9KzmQ,KAAK8/P,gBAA0C,KAAxB9/P,KAAKwP,MAAM6wP,UAA2C,OAAxBrgQ,KAAKwP,MAAM6wP,YAC9D,mBAEJ,gBAAKrnP,UAAU,cAAf,SACKw2P,KAEL,gBAAKpvP,MAAO,CAAEM,WAAY,MACzB1gB,KAAKwP,MAAM/T,SAAWoiN,GAA2BuiD,WAC9C,gCACKpgQ,KAAKytQ,eAAiB9vD,GAAmB0tD,aAAerrQ,KAAKwP,MAAM/T,SAAWoiN,GAA2BixD,WACtG,UAAC,GAAD,CAAOprJ,UAAU,aAAa1qG,UAAU,sBAAsBgkM,IAAK,EAAnE,WACI,SAACquD,GAAD,CAAajH,mBAAoBpkQ,KAAKwP,MAAM40P,mBAAqBpjK,UAAWhhG,KAAKghG,UAAW8qK,aAAc9rQ,KAAKwP,MAAMivM,aAAX,UAAyB3/M,EAAQo/M,gBAAjC,aAAyB,EAAkB+B,iBAAiBxB,WAAYb,GAAauC,QAAUvC,GAAawC,YACrNpgN,KAAKqX,MAAM62P,iBAAkB,mBAAQl1P,UAAU,oBAAoBkoF,QAAS,kBAAM,EAAKrzB,SAAS,CAAEqgM,gBAAiB,EAAK72P,MAAM62P,gBAAlD,EAA/C,gCAC5BluQ,KAAKqX,MAAM62P,iBAAkB,gBAAKl1P,UAAU,yBAAyBoH,MAAO,CAAE2rJ,SAAU,IAAM7qE,QAAS,kBAAM,EAAKrzB,SAAS,CAAEqgM,gBAAiB,EAAK72P,MAAM62P,gBAAlD,EAA1E,UAA+I,SAAC,GAAD,UAGxJ,IAA7BluQ,KAAKwP,MAAMmgQ,eAA0B3vQ,KAAKytQ,eAAiB9vD,GAAmBiyD,OAAS5vQ,KAAKwP,MAAM/T,SAAWoiN,GAA2BkxD,YAAc/uQ,KAAKqX,MAAM22P,cAC9J,SAAC,GAAD,CAAOtqJ,UAAU,aAAa1qG,UAAU,iBAAxC,UACI,SAAC,GAAD,CAAekF,UAAU,SAAS64J,KAAK,SAAS32J,MAAO,CAAElF,aAAc,QAG9Elb,KAAKytQ,eAAiB9vD,GAAmBiyD,OAAS5vQ,KAAKwP,MAAM/T,SAAWoiN,GAA2BkxD,YAAc/uQ,KAAKwP,MAAM/T,SAAWoiN,GAA2BixD,WAAa9uQ,KAAKqX,MAAM22P,cACvL,SAAC,GAAD,CAAOtqJ,UAAU,aAAa1qG,UAAU,iBAAxC,UACI,mBAAQA,UAAU,mBAAmBoH,MAAO,CAAElF,aAAc,IAAMgmF,QAAS,SAAA14F,GAAO,EAAKqnQ,SAAS,EAAKrgQ,MAAM40P,mBAAuB,EAAlI,0BAGPpkQ,KAAKytQ,eAAiB9vD,GAAmBiyD,OAAS5vQ,KAAKwP,MAAM/T,SAAWoiN,GAA2BkxD,aAChG,eAAI/1P,UAAU,aAAaoH,MAAO,CAAEQ,WAAY,EAAG1F,aAAc,IAAjE,0DAEHlb,KAAKytQ,eAAiB9vD,GAAmB0tD,aAAerrQ,KAAKwP,MAAM/T,SAAWoiN,GAA2BixD,WACtG,eAAI91P,UAAU,OAAOoH,MAAO,CAAEQ,WAAY,EAAG1F,aAAc,IAA3D,qCAGFlb,KAAKytQ,eAAiB9vD,GAAmBiyD,QAAsC,IAA7B5vQ,KAAKwP,MAAMmgQ,kBACzD3vQ,KAAKytQ,eAAiB9vD,GAAmBiyD,QAAsC,IAA7B5vQ,KAAKwP,MAAMmgQ,gBAA4B3vQ,KAAKwP,MAAM/T,SAAWoiN,GAA2BkxD,YAAc/uQ,KAAKwP,MAAM/T,SAAWoiN,GAA2BixD,aAC1M9uQ,KAAKytQ,eAAiB9vD,GAAmB0tD,cAAgBrrQ,KAAKqX,MAAM62P,kBAErE,8BACK,UAAApvQ,EAAQo/M,gBAAR,SAAkB4xD,mBAGf,SAAC9L,GAAD,CACI1P,WAAU,UAAEx1P,EAAQo/M,gBAAV,aAAE,EAAkBo2C,WAC9B71C,UAAWz+M,KAAKwP,MAAMivM,UACtBphM,SAAUrd,KAAKwP,MAAM6N,SACrB+mP,mBAAoBpkQ,KAAKwP,MAAM40P,mBAC/BC,iBAAkB,SAACn0M,EAAmB46M,GAAoB,EAAK3G,eAAej0M,EAAG,EAAK1gD,MAAM6N,SAAW,EAAK7N,MAAM40P,mBAAqB,EAAK50P,MAAMivM,UAAYqsD,EAAY,EAC1KxG,iBAAkB,SAACp0M,GAAa,EAAKm+M,eAAen+M,EAAG,EAAK1gD,MAAM40P,mBAAuB,KAG7F,SAAC,GAAD,CACI9P,WAAU,UAAEx1P,EAAQo/M,gBAAV,aAAE,EAAkBo2C,WAC9B71C,UAAWz+M,KAAKwP,MAAMivM,UACtBphM,SAAUrd,KAAKwP,MAAM6N,SACrB+mP,mBAAoBpkQ,KAAKwP,MAAM40P,mBAC/BC,iBAAkB,SAACn0M,EAAmB46M,GAAoB,EAAK3G,eAAej0M,EAAG,EAAK1gD,MAAM6N,SAAW,EAAK7N,MAAM40P,mBAAqB,EAAK50P,MAAMivM,UAAYqsD,EAAY,EAC1KxG,iBAAkB,SAACp0M,GAAa,EAAKm+M,eAAen+M,EAAG,EAAK1gD,MAAM40P,mBAAuB,aAQrH,UAAC,GAAD,CAAKvnL,GAAI,EAAT,WACI,SAAC,GAAD,CAAO6mC,UAAU,aAAas5F,IAAK,EAAGhkM,UAAU,qBAAhD,UACI,mBAAQA,UAAU,oBAAoBkoF,QAASlhG,KAAK0uQ,aAApD,sBAGJ,gBAAK11P,UAAU,eAAf,SACKw2P,aAMjB,SAAC,GAAD,CACI9zF,KAAM17K,KAAKqX,MAAMu2P,cACjBrxF,OAAQ,WAAQ,EAAKgyF,gBAAmB,EACxCniO,MAAO,GACP9P,MACI,UAAC,GAAD,YACI,UAAC,SAAD,CAAYtjB,UAAU,OAAtB,WACI,SAAC,SAAD,uBACA,SAAC,WAAD,CAAc2iJ,YAAa,SAACnzJ,GAAQA,EAAEynC,iBAAmB,EAAEtgB,SAAU3vB,KAAKwP,MAAM/T,SAAWoiN,GAA2BuiD,WAAapgQ,KAAK8/P,cAAe5wF,GAAG,WAAWxzI,KAAM,EAAG/S,aAAc3oB,KAAKqX,MAAM81P,gBAAiBz/I,SAAU,SAAAllH,GAAC,OAAI,EAAKqlE,SAAS,CAAEs/L,gBAAiB3kQ,EAAE5C,OAAOjK,OAA9C,EAAwD84H,WAAS,QAExS,UAAC,SAAD,CAAYz7G,UAAU,OAAtB,WACI,SAAC,SAAD,iDACA,SAAC,WAAD,CAAc2iJ,YAAa,SAACnzJ,GAAQA,EAAEynC,iBAAmB,EAAEtgB,SAAU3vB,KAAKwP,MAAM/T,SAAWoiN,GAA2BuiD,SAAUniQ,KAAK,WAAW0qB,aAAc3oB,KAAKqX,MAAMy2P,IAAKpgJ,SAAU,SAAAllH,GAAC,OAAI,EAAKqlE,SAAS,CAAEigM,IAAKtlQ,EAAE5C,OAAOjK,OAAlC,UAIrMywQ,QACI,iCACI,mBAAQpzP,UAAU,gBAAgBkoF,QAASlhG,KAAKuuQ,eAAhD,mBAGCvuQ,KAAKwP,MAAM/T,SAAWoiN,GAA2BuiD,WAC9C,mBAAQpnP,UAAU,mBAAmBkoF,QAASlhG,KAAKyuQ,kBAAnD,4BAUnC,KA9bL,GAAkC1uD,ICPrBgwD,GAAb,8BAeE,WAAYvgQ,GAA+B,IAAD,aACxC,cAAMA,IACDwgQ,eAAiB,EAAKA,eAAexxQ,KAApB,MAEtB,IAJwC,eAI/B6B,GACPmP,EAAM8Z,MAAMjpB,GAAG4uQ,iBAAmBz/P,EAAM8vP,UAAUppO,MAChD,SAAC+S,GAAD,OAAOA,EAAEm7N,qBAAuB50P,EAAM8Z,MAAMjpB,GAAG+jQ,kBAA/C,GANoC,EAI/B/jQ,EAAI,EAAGA,EAAImP,EAAM8Z,MAAMj1B,OAAQgM,IAAM,EAArCA,GAJ+B,OAUxC,EAAKgX,MAAQ,CACX44P,gBAAiB,KACjBC,YAAa,KACbC,YAAa,KACbC,cAAe,KACfC,gBAAiB,KACjBC,aAAc,MAhBwB,CAkBzC,CAjCH,iCAME,SAAQjkQ,EAAY7O,GAElB,OAAO6O,EAAI8iB,QAAO,SAAC4lJ,EAAKw7F,GACtB,IAAMC,EAAcD,EAAK/yQ,GAEzB,OADAu3K,EAAIy7F,GAAJ,aAAwBz7F,EAAIy7F,IAAgB,IAA5C,CAAiDD,IAC1Cx7F,CACR,GALoB,CAAC,EAMvB,GAbH,yBAoDE,SAAmB07F,GACjB,OAAOV,EAAgBW,iBAAiB1wQ,KAAKisK,aAAcwkG,EAC5D,GAtDH,4BAwDE,SACErM,EACA3oQ,GAEA,IAAI8hK,EACFv9J,KAAKwP,MAAM8vP,UAAUppO,MACnB,SAAC71B,GAAD,OAAOA,EAAE+jQ,qBAAuBA,CAAhC,IAEJ,GAAI7mG,EAAK,CACP,IAAIz+J,EAAUkB,KAAKisK,aACnB1O,EAAIiiG,aAAe/jQ,EACnBqD,EAAQo/M,SAAU44C,yBAA2B92P,KAAK2wQ,YAChD3wQ,KAAKwP,MAAM8vP,WAEbt/P,KAAK6tE,SAAS,CAAEsiM,YAAa5yG,GAC9B,CACF,GAxEH,6BA0EE,SAAgBqzG,EAAyBvzP,GACnCuzP,IAAchzD,GAAauC,SAC7BngN,KAAK6tE,SAAS,CACZuiM,cAAe/yP,IAAard,KAAKqX,MAAM+4P,cAAgB,KAAO/yP,IAE9DuzP,IAAchzD,GAAawC,WAC7BpgN,KAAK6tE,SAAS,CACZwiM,gBACEhzP,IAAard,KAAKqX,MAAMg5P,gBAAkB,KAAOhzP,IAEnDuzP,IAAchzD,GAAaizD,QAC7B7wQ,KAAK6tE,SAAS,CACZyiM,aAAcjzP,IAAard,KAAKqX,MAAMi5P,aAAe,KAAOjzP,GAEjE,GAxFH,0BA0FE,SAAauzP,EAAyBvzP,GAAmB,IAAD,EAOlDozP,EAEA16O,EARAj3B,EAAUkB,KAAKisK,aACf6kG,EACwB,OAA1B9wQ,KAAKwP,MAAMuhQ,iBACe1zQ,IAA1B2C,KAAKwP,MAAMuhQ,YACX/wQ,KAAKwP,MAAMuhQ,WAAW18Q,OAAS,GACF,OAA7B2L,KAAKwP,MAAMuhQ,WAAW,GAEpBC,EAAWhxQ,KAAKwP,MAAM8Z,MAEtBynP,EAA6B,CAACH,GAE9BA,IAAchzD,GAAauC,SAAY2wD,GACzCC,EAAWlwQ,KAAK+8M,GAAaizD,QAE/BJ,EAAOzwQ,KAAKwP,MAAM8vP,UAAU3vP,QAC1B,SAACtP,GAAD,OACE0wQ,EAAWvgQ,SAASnQ,EAAEyrQ,eACtBzrQ,EAAEgd,WAAaA,CAFjB,IAIF0Y,EAAQi7O,EAASrhQ,QACf,SAACtP,GAAD,YACyBhD,IAAvBgD,EAAE4uQ,kBACF8B,EAAWvgQ,SAASnQ,EAAE4uQ,iBAAiBnD,eACvCzrQ,EAAE4uQ,iBAAiB5xP,WAAaA,CAHlC,IAMF,IAAIm0O,EAAa,IACb,UAAA1yP,EAAQo/M,gBAAR,eAAkBkxD,gBAAiBjD,GAAQkD,cAE3C7d,EADuD,IAArDif,EAAK9gQ,QAAO,SAACT,GAAD,OAAOA,EAAEogQ,mBAAT,IAA8Bj7Q,OAC/B,kBAEA,sBAIjB,IAAI26Q,EAAoBj5O,EAAMpmB,QAC5B,SAACiB,GAAD,cACwB,MAAtB,UAACA,EAAEg+P,eAAH,QAAc,MACd,UAACh+P,EAAE08P,2BAAH,QAA0B,IAAI39P,QAAO,SAACgB,GAAD,OAAQA,EAAEw8P,eAAV,IAA2B94Q,OAC9D,CAHJ,IAKF,OACEo8Q,EAAK9gQ,QACH,SAACugD,GAAD,OAAOA,EAAEsvM,eAAiB3hD,GAA2B4hD,WAArD,IACAprQ,OAAS,GACX26Q,EAAkB36Q,OAAS,EAEpB,kBAAoBm9P,EAEtBA,CACR,GA7IH,gCA+IE,SAAmBof,EAAyBvzP,GAAmB,IAAD,EAOxDozP,EAEA16O,EARAj3B,EAAUkB,KAAKisK,aACf6kG,EACwB,OAA1B9wQ,KAAKwP,MAAMuhQ,iBACe1zQ,IAA1B2C,KAAKwP,MAAMuhQ,YACX/wQ,KAAKwP,MAAMuhQ,WAAW18Q,OAAS,GACF,OAA7B2L,KAAKwP,MAAMuhQ,WAAW,GAEpBC,EAAWhxQ,KAAKwP,MAAM8Z,MAEtBynP,EAA6B,CAACH,GAE9BA,IAAchzD,GAAauC,SAAY2wD,GACzCC,EAAWlwQ,KAAK+8M,GAAaizD,QAE/BJ,EAAOzwQ,KAAKwP,MAAM8vP,UAAU3vP,QAC1B,SAACtP,GAAD,OACE0wQ,EAAWvgQ,SAASnQ,EAAEyrQ,eACtBzrQ,EAAEgd,WAAaA,CAFjB,IAIF0Y,EAAQi7O,EAASrhQ,QACf,SAACtP,GAAD,YACyBhD,IAAvBgD,EAAE4uQ,kBACF8B,EAAWvgQ,SAASnQ,EAAE4uQ,iBAAiBnD,eACvCzrQ,EAAE4uQ,iBAAiB5xP,WAAaA,CAHlC,IAMF,IAAIm0O,EAAa,IACb,UAAA1yP,EAAQo/M,gBAAR,eAAkBkxD,gBAAiBjD,GAAQkD,cAE3C7d,EADuD,IAArDif,EAAK9gQ,QAAO,SAACT,GAAD,OAAOA,EAAEogQ,mBAAT,IAA8Bj7Q,OAC/B,kBAEA,IAIjB,IAAI26Q,EAAoBj5O,EAAMpmB,QAC5B,SAACiB,GAAD,cACwB,MAAtB,UAACA,EAAEg+P,eAAH,QAAc,MACd,UAACh+P,EAAE08P,2BAAH,QAA0B,IAAI39P,QAAO,SAACgB,GAAD,OAAQA,EAAEw8P,eAAV,IAA2B94Q,OAC9D,CAHJ,IAKF,OACEo8Q,EAAK9gQ,QACH,SAACugD,GAAD,OACEA,EAAEsvM,eAAiB3hD,GAA2B4hD,aAC9CvvM,EAAEmwM,QAFJ,IAGAhsQ,OAAS,GACX26Q,EAAkB36Q,OAAS,EAEpB,kBAAoBm9P,EAEtBA,CACR,GApMH,iCAsME,SAAoBof,EAAyBvzP,GAAmB,IAAD,EAOzDozP,EANA3xQ,EAAUkB,KAAKisK,aACf6kG,EACwB,OAA1B9wQ,KAAKwP,MAAMuhQ,iBACe1zQ,IAA1B2C,KAAKwP,MAAMuhQ,YACX/wQ,KAAKwP,MAAMuhQ,WAAW18Q,OAAS,GACF,OAA7B2L,KAAKwP,MAAMuhQ,WAAW,GAEpBA,EAA6B,CAACH,GAUlC,OARIA,IAAchzD,GAAauC,SAAY2wD,GACzCC,EAAWlwQ,KAAK+8M,GAAaizD,QAE/BJ,EAAOzwQ,KAAKwP,MAAM8vP,UAAU3vP,QAC1B,SAACtP,GAAD,OACE0wQ,EAAWvgQ,SAASnQ,EAAEyrQ,eACtBzrQ,EAAEgd,WAAaA,CAFjB,KAKA,UAAAve,EAAQo/M,gBAAR,eAAkBkxD,gBAAiBjD,GAAQkD,aACU,IAArDoB,EAAK9gQ,QAAO,SAACT,GAAD,OAAOA,EAAEogQ,mBAAT,IAA8Bj7Q,OAEnC,kBAEF,EACR,GA/NH,wCAiOE,SAA2Bu8Q,EAAyBvzP,GAAmB,IAAD,EAOhEozP,EANA3xQ,EAAUkB,KAAKisK,aACf6kG,EACwB,OAA1B9wQ,KAAKwP,MAAMuhQ,iBACe1zQ,IAA1B2C,KAAKwP,MAAMuhQ,YACX/wQ,KAAKwP,MAAMuhQ,WAAW18Q,OAAS,GACF,OAA7B2L,KAAKwP,MAAMuhQ,WAAW,GAEpBA,EAA6B,CAACH,GAUlC,OARIA,IAAchzD,GAAauC,SAAY2wD,GACzCC,EAAWlwQ,KAAK+8M,GAAaizD,QAE/BJ,EAAOzwQ,KAAKwP,MAAM8vP,UAAU3vP,QAC1B,SAACtP,GAAD,OACE0wQ,EAAWvgQ,SAASnQ,EAAEyrQ,eACtBzrQ,EAAEgd,WAAaA,CAFjB,KAKA,UAAAve,EAAQo/M,gBAAR,eAAkBkxD,gBAAiBjD,GAAQkD,aACU,IAArDoB,EAAK9gQ,QAAO,SAACT,GAAD,OAAOA,EAAEogQ,mBAAT,IAA8Bj7Q,OAEnC,cAEF,EACR,GA1PH,yBA4PE,WACE,OACE,UAAC,GAAD,CAAWmpN,OAAO,EAAlB,WACE,gBACEp9L,MAAO,CAAEO,WAAY,GAAIy9I,cAAe,GAAIyyF,UAAW,aAEzD,SAAC,GAAD,WACE,UAAC,GAAD,YACE,eAAI73O,UAAU,SAAd,2DAGA,iBAAMA,UAAU,UAAhB,sFAKJ,SAAC,GAAD,CAAKA,UAAU,OAAf,UACE,SAAC,GAAD,WACE,SAAC,GAAD,CAAekF,UAAU,SAAS64J,KAAK,iBAKhD,GAnRH,oBAqRE,WAAkC,IAAD,uBAC3Bi6F,EAAWhxQ,KAAKwP,MAAM8Z,MACtB2nP,EAAeD,EAASrhQ,QAC1B,SAACtP,GAAD,YACyBhD,IAAvBgD,EAAE4uQ,kBACF5uQ,EAAE4uQ,iBAAkBnD,eAAiBluD,GAAauC,OAFpD,IAIE+wD,EAAiBF,EAASrhQ,QAC5B,SAACtP,GAAD,YACyBhD,IAAvBgD,EAAE4uQ,kBACF5uQ,EAAE4uQ,iBAAkBnD,eAAiBluD,GAAawC,SAFpD,IAIE+wD,EAAcH,EAASrhQ,QACzB,SAACtP,GAAD,YACyBhD,IAAvBgD,EAAE4uQ,kBACF5uQ,EAAE4uQ,iBAAkBnD,eAAiBluD,GAAaizD,MAFpD,IAIEvR,EAAYt/P,KAAKwP,MAAM8vP,UAAU3vP,QACnC,SAACugD,GAAD,OACEA,EAAEsvM,eAAiB3hD,GAA2BuzD,UAC9ClhN,EAAEmhN,iBAFJ,IAKEC,EAAc7qQ,KAAK4kC,MAAMrrC,KAAK2wQ,YAAYrR,IAE1CiS,EAAcjS,EACf3vP,QACC,SAACtP,GAAD,OAAOA,EAAEyrQ,eAAiBluD,GAAauC,SAA0B,QAAf9/M,EAAEgd,QAApD,IAEDkH,MAAK,SAACrV,EAAGC,GAAO,IAAD,QACd,GAAIA,EAAEqwP,eAAiB3hD,GAA2BuiD,SAAU,OAAQ,EACpE,GAAIlxP,EAAEswP,eAAiB3hD,GAA2BuiD,SAAU,OAAO,EACnE,GAAIjxP,EAAEqwP,eAAiB3hD,GAA2BixD,SAAU,OAAQ,EACpE,GAAI5/P,EAAEswP,eAAiB3hD,GAA2BixD,SAAU,OAAO,EACnE,IAAI0C,EAAI,oBACN,EAAKhiQ,MAAM6vP,WAAWnpO,MAAK,SAACj1B,GAAD,OAAOA,EAAEoc,WAAanO,EAAEmO,QAAxB,WADrB,aACN,EAA8DgoH,aADxD,QAEN,EACEosI,EAAI,oBACN,EAAKjiQ,MAAM6vP,WAAWnpO,MAAK,SAACj1B,GAAD,OAAOA,EAAEoc,WAAalO,EAAEkO,QAAxB,WADrB,aACN,EAA8DgoH,aADxD,QAEN,EACF,OAAOmsI,EAAOC,GAAQ,EAAI,CAC3B,IAECX,EACwB,OAA1B9wQ,KAAKwP,MAAMuhQ,iBACe1zQ,IAA1B2C,KAAKwP,MAAMuhQ,YACX/wQ,KAAKwP,MAAMuhQ,WAAW18Q,OAAS,GACF,OAA7B2L,KAAKwP,MAAMuhQ,WAAW,IAEQ,IAA5BD,IACFG,EAAeD,EAASrhQ,QACtB,SAACtP,GAAD,YACyBhD,IAAvBgD,EAAE4uQ,mBACD5uQ,EAAE4uQ,iBAAkBnD,eAAiBluD,GAAauC,SACjD9/M,EAAE4uQ,iBAAkBnD,eAAiBluD,GAAaizD,OAHtD,IAMFU,EAAcjS,EACX3vP,QACC,SAACtP,GAAD,OACEA,EAAEyrQ,eAAiBluD,GAAauC,SAChC9/M,EAAEyrQ,eAAiBluD,GAAaizD,MAFlC,IAIDtsP,MAAK,SAACrV,EAAGC,GAAO,IAAD,QACd,GAAIA,EAAEqwP,eAAiB3hD,GAA2BuiD,SAAU,OAAQ,EACpE,GAAIlxP,EAAEswP,eAAiB3hD,GAA2BuiD,SAAU,OAAO,EACnE,GAAIjxP,EAAEqwP,eAAiB3hD,GAA2BixD,SAAU,OAAQ,EACpE,GAAI5/P,EAAEswP,eAAiB3hD,GAA2BixD,SAAU,OAAO,EACnE,IAAI0C,EAAI,oBACN,EAAKhiQ,MAAM6vP,WAAWnpO,MAAK,SAACj1B,GAAD,OAAOA,EAAEoc,WAAanO,EAAEmO,QAAxB,WADrB,aACN,EACIgoH,aAFE,QAEO,EACXosI,EAAI,oBACN,EAAKjiQ,MAAM6vP,WAAWnpO,MAAK,SAACj1B,GAAD,OAAOA,EAAEoc,WAAalO,EAAEkO,QAAxB,WADrB,aACN,EACIgoH,aAFE,QAEO,EACf,OAAOmsI,EAAOC,GAAQ,EAAI,CAC3B,KAGL,IAAIC,EAAgBpS,EACjB3vP,QAAO,SAACtP,GAAD,OAAOA,EAAEyrQ,eAAiBluD,GAAawC,SAAvC,IACP77L,MAAK,SAACrV,EAAGC,GAAO,IAAD,QACd,GAAIA,EAAEqwP,eAAiB3hD,GAA2BuiD,SAAU,OAAQ,EACpE,GAAIlxP,EAAEswP,eAAiB3hD,GAA2BuiD,SAAU,OAAO,EACnE,GAAIjxP,EAAEqwP,eAAiB3hD,GAA2BixD,SAAU,OAAQ,EACpE,GAAI5/P,EAAEswP,eAAiB3hD,GAA2BixD,SAAU,OAAO,EACnE,IAAI0C,EAAI,oBACN,EAAKhiQ,MAAM6vP,WAAWnpO,MAAK,SAACj1B,GAAD,OAAOA,EAAEoc,WAAanO,EAAEmO,QAAxB,WADrB,aACN,EAA8DgoH,aADxD,QAEN,EACEosI,EAAI,oBACN,EAAKjiQ,MAAM6vP,WAAWnpO,MAAK,SAACj1B,GAAD,OAAOA,EAAEoc,WAAalO,EAAEkO,QAAxB,WADrB,aACN,EAA8DgoH,aADxD,QAEN,EACF,OAAOmsI,EAAOC,GAAQ,EAAI,CAC3B,IAECE,EAAcb,EAEdxR,EACG3vP,QAAO,SAACtP,GAAD,OAAOA,EAAEyrQ,eAAiBluD,GAAaizD,MAAvC,IACPtsP,MAAK,SAACrV,EAAGC,GAAO,IAAD,QACd,GAAIA,EAAEqwP,eAAiB3hD,GAA2BuiD,SAChD,OAAQ,EACV,GAAIlxP,EAAEswP,eAAiB3hD,GAA2BuiD,SAChD,OAAO,EACT,GAAIjxP,EAAEqwP,eAAiB3hD,GAA2BixD,SAChD,OAAQ,EACV,GAAI5/P,EAAEswP,eAAiB3hD,GAA2BixD,SAChD,OAAO,EACT,IAAI0C,EAAS,oBACX,EAAKhiQ,MAAM6vP,WAAWnpO,MAAK,SAACj1B,GAAD,OAAOA,EAAEoc,WAAanO,EAAEmO,QAAxB,WADhB,aACX,EACIgoH,aAFO,QAEE,EACXosI,EAAS,oBACX,EAAKjiQ,MAAM6vP,WAAWnpO,MAAK,SAACj1B,GAAD,OAAOA,EAAEoc,WAAalO,EAAEkO,QAAxB,WADhB,aACX,EACIgoH,aAFO,QAEE,EACf,OAAOmsI,EAAOC,GAAQ,EAAI,CAC3B,IAnBH,GAuBE3yQ,EAAUkB,KAAKlB,QAKjB43C,EAAgB,CAAC,GAAI,GAAI,IACzBk7N,EAA+B,KACnC,IAAKd,EAAyB,CAC5B,IAAIrqI,EAAM,EACVzmI,KAAKwP,MAAM6vP,WACR1vP,QACC,SAAC1O,GAAD,OAAOswQ,EAAY5hQ,QAAO,SAACtP,GAAD,OAAOA,EAAEgd,WAAapc,EAAEoc,QAAxB,IAAkChpB,OAAS,CAArE,IAEDkJ,SAAQ,SAAC0D,GAAO,IAAD,EACd2wQ,EAAa,UAAGA,SAAH,QAAoB3wQ,EAAEoc,SACnCq5B,EAAK+vF,GAAK5lI,KAAKI,KACfwlI,EACU,IAAGA,EAAM,EACpB,GACJ,CACD,IAAIorI,EAAoB7xQ,KAAKwP,MAAM6vP,WAAW1vP,QAC5C,SAAC1O,GAAD,OAAOswQ,EAAY5hQ,QAAO,SAACtP,GAAD,OAAOA,EAAEgd,WAAapc,EAAEoc,QAAxB,IAAkChpB,OAAS,CAArE,IAEF,IAAKw9Q,GAAkD,IAA7BA,EAAkBx9Q,OAC1C,OAAO2L,KAAK8xQ,cAEd,IAAIC,GACF,UAAAjzQ,EAAQo/M,gBAAR,eAAkBkxD,gBAAiBjD,GAAQkD,aAC3CwC,EAAkBx9Q,OAAS,EACvBw9Q,EAAkB,GAAGx0P,SACrBw0P,EAAkB,GAAGx0P,SACvB20P,EAAyB,GAC7B,GAAIlB,EAAyB,CAC3B,IAAImB,EAIJ,GAHAA,EAAsBjyQ,KAAKwP,MAAM6vP,WAAW1vP,QAC1C,SAAC1O,GAAD,OAAOywQ,EAAc/hQ,QAAO,SAACtP,GAAD,OAAOA,EAAEgd,WAAapc,EAAEoc,QAAxB,IAAkChpB,OAAS,CAAvE,KAEG49Q,GAAsD,IAA/BA,EAAoB59Q,OAC9C,OAAO2L,KAAK8xQ,cAEdE,EAAyBC,EAAoB,GAAG50P,QACjD,CAED,OACE,UAAC,GAAD,YACG,UAAAve,EAAQo/M,gBAAR,eAAkBkxD,gBAAiBjD,GAAQkD,aAC1C,gBACEjvP,MAAO,CAAEO,WAAY,GAAIy9I,cAAe,GAAIyyF,UAAW,UADzD,UAGE,kBAAM73O,UAAU,UAAhB,2GAEgC,KAC9B,4DAHF,KAG+C,kBAH/C,8HASF,iBAAKA,UAAU,WAAWoH,MAAO,CAAEywO,UAAW,UAA9C,UACmB,IAAhBygB,IACC,kBAAMt4P,UAAU,UAAhB,mBACS,KACP,iBAAMA,UAAU,YAAhB,qCAFF,sDAMDs4P,EAAc,GAAKA,EAAc,KAChC,kBAAMt4P,UAAU,UAAhB,WACE,kBAAMA,UAAU,aAAhB,UAA8Bs4P,EAA9B,iBAA6D,IAD/D,yCAE+BxyQ,EAAQm/M,eAFvC,aAE+B,EAAiBiC,UAFhD,qGAODoxD,GAAe,IAAMA,EAAc,MAClC,kBAAMt4P,UAAU,UAAhB,WACE,kBAAMA,UAAU,aAAhB,UAA8Bs4P,EAA9B,iBAA6D,IAD/D,0BAEgBxyQ,EAAQm/M,eAFxB,aAEgB,EAAiBiC,UAFjC,gIAODoxD,GAAe,MACd,kBAAMt4P,UAAU,UAAhB,WACE,iBAAMA,UAAU,YAAhB,8BADF,cACiE,IADjE,UAEGla,EAAQm/M,eAFX,aAEG,EAAiBiC,UAFpB,4DAQN,UAAC,GAAD,YAEI4wD,IACA,iCACE,eAAI93P,UAAU,SAAd,mBAAwBhZ,KAAKwP,MAAMuhQ,WAAY,UAA/C,aAAwB,EAA2B7wD,YAElDxpK,EAAK1jC,KAAI,SAACqsP,EAAY54H,GAAb,OACR,SAAC,GAAD,CAEEsI,GAAI,GACJ0O,GAAI,EACJr9H,MAAO,CAAElF,aAAc,IAJzB,SAMGmkP,EAAWrsP,KACV,SAACk/P,EAAKp7N,GAAN,eACEy6N,EAAY5hQ,QAAO,SAACtP,GAAD,OAAOA,EAAEgd,WAAa60P,EAAI70P,QAA1B,IAChBhpB,OAAS,IAAM,4BAEhB,SAAC,GAAD,CACE2kB,UAAS,UAAK,EAAKm5P,aACjBv0D,GAAauC,QACb+xD,EAAI70P,WAHR,UAME,SAAC,GAAD,CACE+0P,iBACU,IAAR3rI,IACA,UAAA3nI,EAAQm/M,eAAR,eAAiBQ,cAAjB,UACE3/M,EAAQo/M,gBADV,aACE,EAAkB+B,iBAAiBxB,WACjCszD,EACA,GANR,UASE,UAAC,QAAD,CACExiG,SAAU2iG,EAAI70P,SACdrE,UAAW,EAAK02P,oBACd9xD,GAAauC,QACb+xD,EAAI70P,UAJR,WAOE,SAAC,UAAD,WACE,SAAC,GAAD,CAAK+C,MAAO,CAAE5F,MAAO,QAArB,UACE,SAAC,GAAD,CAAKxB,UAAU,mBAAf,UACE,eACEA,UAAS,YAAO,EAAKq5P,mBACnBz0D,GAAauC,QACb+xD,EAAI70P,WAHR,SAMG60P,EAAI70P,kBAKb,SAAC,QAAD,WACE,SAAC,GAAD,CAAO2/L,IAAK,EAAGhkM,UAAU,aAAzB,SACGu4P,EACE5hQ,QAAO,SAAC+M,GAAD,OAAOA,EAAEW,WAAa60P,EAAI70P,QAA1B,IACPrK,KAAI,SAACT,EAAM+/P,GAAP,aACH,SAAC9E,GAAD,CAEE/xQ,OAAQ8W,EAAKitP,aACbniP,SAAU9K,EAAK8K,SACfjc,KACsC,MAApC,UAACmR,EAAK/O,mBAAN,QAAqB,IAAI+E,OACrBgK,EAAKnR,KACLmR,EAAK/O,YAEX28P,WAAY5tP,EAAK4tP,WACjBsG,SAAUl0P,EAAKk0P,SACf1wO,MAAOk7O,EAAathQ,QAClB,SAACiB,GAAD,OAAOA,EAAEq+P,mBAAqB18P,CAA9B,IAEFksM,UACE,EAAKjvM,MAAMuhQ,WAAY,GAAGtyD,UAE5B2lD,mBACE7xP,EAAK6xP,mBAEP/N,OAAQ,EAAK2Z,eACb1b,WAAY,EAAK9kP,MAAM8kP,WACvBmZ,aAAcl7P,EAAKk7P,aACnBkC,cACEp9P,EAAKggQ,8BAEPlS,SAAU9tP,EAAK8tP,SACfiP,oBACE/8P,EAAK+8P,qBA3BF,QAAU/8P,EAAK6xP,mBAFnB,eA1CD,IAgFU,YAAjB8N,EAAI70P,WACnB,qCAAG,kBAAH,KAAS,gBAAKrE,UAAU,eAAf,UAA8B,SAACq+L,GAAD,CAAM1tK,GAAG,cAAT,4CAnFrC,KAPJ,iBACiB88F,GAFT,OAoGbqqI,IACC,UAAC,GAAD,CAAK/hI,GAAI,GAAI0O,GAAI,EAAGr9H,MAAO,CAAElF,aAAc,IAA3C,WACE,eAAIlC,UAAU,SAAd,mBAAwBhZ,KAAKwP,MAAMuhQ,WAAY,UAA/C,aAAwB,EAA2B7wD,YAElDlgN,KAAKwP,MAAM6vP,WAAWrsP,KACrB,SAACk/P,EAAKp7N,GAAN,eACEy6N,EAAY5hQ,QAAO,SAACtP,GAAD,OAAOA,EAAEgd,WAAa60P,EAAI70P,QAA1B,IAChBhpB,OAAS,IAAM,4BAEhB,SAAC,GAAD,CAEE2kB,UAAW,EAAKm5P,aACdv0D,GAAauC,QACb+xD,EAAI70P,UAJR,UAOE,SAAC,GAAD,CACE+0P,kBACE,UAAAtzQ,EAAQm/M,eAAR,eAAiBQ,cAAjB,UACA3/M,EAAQo/M,gBADR,aACA,EAAkB+B,iBAAiBxB,WAC/BszD,EACA,GALR,UAQE,UAAC,QAAD,CACExiG,SAAU2iG,EAAI70P,SACdrE,UAAW,EAAK02P,oBACd9xD,GAAauC,QACb+xD,EAAI70P,UAJR,WAOE,SAAC,UAAD,WACE,SAAC,GAAD,CAAK+C,MAAO,CAAE5F,MAAO,QAArB,UACE,SAAC,GAAD,CAAKxB,UAAU,mBAAf,UACE,eACEA,UAAS,YAAO,EAAKq5P,mBACnBz0D,GAAauC,QACb+xD,EAAI70P,WAHR,SAMG60P,EAAI70P,kBAKb,SAAC,QAAD,WACE,SAAC,GAAD,CAAO2/L,IAAK,EAAGhkM,UAAU,aAAzB,SACGu4P,EACE5hQ,QAAO,SAAC+M,GAAD,OAAOA,EAAEW,WAAa60P,EAAI70P,QAA1B,IACPrK,KAAI,SAACT,EAAM+/P,GAAP,aACH,SAAC9E,GAAD,CAEE/xQ,OAAQ8W,EAAKitP,aACbniP,SAAU9K,EAAK8K,SACfjc,KACsC,MAApC,UAACmR,EAAK/O,mBAAN,QAAqB,IAAI+E,OACrBgK,EAAKnR,KACLmR,EAAK/O,YAEX28P,WAAY5tP,EAAK4tP,WACjBsG,SAAUl0P,EAAKk0P,SACf1wO,MAAOk7O,EAAathQ,QAClB,SAACiB,GAAD,OAAOA,EAAEq+P,mBAAqB18P,CAA9B,IAEFksM,UACE,EAAKjvM,MAAMuhQ,WAAY,GAAGtyD,UAE5B2lD,mBAAoB7xP,EAAK6xP,mBACzB/N,OAAQ,EAAK2Z,eACb1b,WAAY,EAAK9kP,MAAM8kP,WACvBmZ,aAAcl7P,EAAKk7P,aACnBkC,cACEp9P,EAAKggQ,8BAEPlS,SAAU9tP,EAAK8tP,SACfiP,oBACE/8P,EAAK+8P,qBAzBF,QAAU/8P,EAAK6xP,mBAFnB,cAxCjB,sBACsBttN,IA2EG,YAAjBo7N,EAAI70P,WACd,qCAAG,mBAAK,gBAAKrE,UAAU,eAAf,UAA8B,SAACq+L,GAAD,CAAM1tK,GAAG,cAAT,4CAjFxC,OAwFLmnO,IACC,iCACE,UAAC,GAAD,CAAK/hI,GAAI,GAAI0O,GAAI,EAAGr9H,MAAO,CAAElF,aAAc,IAA3C,WACE,eAAIlC,UAAU,SAAd,mBACGhZ,KAAKwP,MAAMuhQ,WAAY,UAD1B,aACG,EAA2B7wD,YAE7BlgN,KAAKwP,MAAM6vP,WAAWrsP,KACrB,SAACk/P,EAAKp7N,GAAN,eACE46N,EAAc/hQ,QAAO,SAACtP,GAAD,OAAOA,EAAEgd,WAAa60P,EAAI70P,QAA1B,IAClBhpB,OAAS,IAAM,4BAChB,SAAC,GAAD,CAEE2kB,UAAW,EAAKm5P,aACdv0D,GAAawC,UACb8xD,EAAI70P,UAJR,UAOE,SAAC,GAAD,CACE+0P,kBACE,UAAAtzQ,EAAQm/M,eAAR,eAAiBQ,cAAjB,UACA3/M,EAAQo/M,gBADR,aACA,EAAkB8B,mBAAmBvB,WACjCuzD,EACA,GALR,UAQE,UAAC,QAAD,CACEziG,SAAU2iG,EAAI70P,SACdrE,UAAW,EAAK02P,oBACd9xD,GAAawC,UACb8xD,EAAI70P,UAJR,WAOE,SAAC,UAAD,WACE,SAAC,GAAD,CAAK+C,MAAO,CAAE5F,MAAO,QAArB,UACE,SAAC,GAAD,CAAKxB,UAAU,mBAAf,UACE,eACEA,UAAS,YAAO,EAAKq5P,mBACnBz0D,GAAawC,UACb8xD,EAAI70P,WAHR,SAMG60P,EAAI70P,kBAKb,SAAC,QAAD,WACE,SAAC,GAAD,CAAO2/L,IAAK,EAAGhkM,UAAU,aAAzB,SACG04P,EACE/hQ,QAAO,SAAC+M,GAAD,OAAOA,EAAEW,WAAa60P,EAAI70P,QAA1B,IACPrK,KAAI,SAACT,EAAM+/P,GAAP,aACH,SAAC9E,GAAD,CAEE/xQ,OAAQ8W,EAAKitP,aACbniP,SAAU9K,EAAK8K,SACfjc,KACsC,MAApC,UAACmR,EAAK/O,mBAAN,QAAqB,IAAI+E,OACrBgK,EAAKnR,KACLmR,EAAK/O,YAEX28P,WAAY5tP,EAAK4tP,WACjBsG,SAAUl0P,EAAKk0P,SACf1wO,MAAOm7O,EAAevhQ,QACpB,SAACiB,GAAD,OAAOA,EAAEq+P,mBAAqB18P,CAA9B,IAEFksM,UACE,EAAKjvM,MAAMuhQ,WAAY,GAAGtyD,UAE5B2lD,mBACE7xP,EAAK6xP,mBAEP/N,OAAQ,EAAK2Z,eACb1b,WAAY,EAAK9kP,MAAM8kP,WACvBmZ,aAAcl7P,EAAKk7P,aACnBkC,cACEp9P,EAAKigQ,gCAEPnS,SAAU9tP,EAAK8tP,SACfiP,oBACE/8P,EAAK+8P,qBA3BF,QAAU/8P,EAAK6xP,mBAFnB,cAxCjB,wBACwBttN,IA6EC,YAAjBo7N,EAAI70P,WAChB,qCAAG,kBAAH,KAAS,gBAAKrE,UAAU,eAAf,UAA8B,SAACq+L,GAAD,CAAM1tK,GAAG,cAAT,4CAlFvC,QAqFJ,UAAC,GAAD,CAAKolG,GAAI,GAAI0O,GAAI,EAAjB,WACE,eAAIzkI,UAAU,SAAd,oBACChZ,KAAKwP,MAAM6vP,WAAWrsP,KACrB,SAACk/P,EAAKp7N,GAAN,OACE66N,EAAWhiQ,QAAO,SAACtP,GAAD,OAAOA,EAAEgd,WAAa60P,EAAI70P,QAA1B,IACfhpB,OAAS,IACV,SAAC,GAAD,CAEE2kB,UAAW,EAAKm5P,aACdv0D,GAAaizD,OACbqB,EAAI70P,UAJR,UAOE,UAAC,GAAD,YACE,SAAC,UAAD,WACE,SAAC,GAAD,CAAK+C,MAAO,CAAE5F,MAAO,QAArB,UACE,SAAC,GAAD,CAAKxB,UAAU,mBAAf,UACE,eACEA,UAAS,YAAO,EAAKq5P,mBACnBz0D,GAAaizD,OACbqB,EAAI70P,WAHR,SAMG60P,EAAI70P,kBAKb,SAAC,QAAD,WACE,SAAC,GAAD,CAAO2/L,IAAK,EAAGhkM,UAAU,aAAzB,SACG24P,EACEhiQ,QAAO,SAAC+M,GAAD,OAAOA,EAAEW,WAAa60P,EAAI70P,QAA1B,IACPrK,KAAI,SAACT,EAAM+/P,GAAP,aACH,SAAC9E,GAAD,CAEE/xQ,OAAQ8W,EAAKitP,aACbniP,SAAU9K,EAAK8K,SACfjc,KACsC,MAApC,UAACmR,EAAK/O,mBAAN,QAAqB,IAAI+E,OACrBgK,EAAKnR,KACLmR,EAAK/O,YAEX28P,WAAY5tP,EAAK4tP,WACjBsG,SAAUl0P,EAAKk0P,SACf1wO,MAAOo7O,EAAYxhQ,QACjB,SAACiB,GAAD,OAAOA,EAAEq+P,mBAAqB18P,CAA9B,IAEFksM,UACE,EAAKjvM,MAAMuhQ,WAAY,GAAGtyD,UAE5B2lD,mBAAoB7xP,EAAK6xP,mBACzB/N,OAAQ,EAAK2Z,eACb1b,WAAY,EAAK9kP,MAAM8kP,WACvBmZ,aAAcl7P,EAAKk7P,aACnBkC,cACEp9P,EAAKggQ,8BAEPlS,SAAU9tP,EAAK8tP,SACfiP,oBACE/8P,EAAK+8P,qBAzBF,QAAU/8P,EAAK6xP,mBAFnB,YA1Bf,qBACqBttN,GAJzB,cAuEV,mBACA,oBAGL,IAv1BH,+BAmCE,SACEh4C,EACA2xQ,GAEA,IAAIgC,EAAWhC,EAAK9gQ,QAClB,SAACtP,GAAD,OACEA,EAAEm/P,eAAiB3hD,GAA2BixD,UAC9CzuQ,EAAEm/P,eAAiB3hD,GAA2BuiD,QAFhD,IAIEsS,EAAUjC,EAAKp8Q,OACfyK,EAAQo/M,SAAUkxD,eAAiBjD,GAAQkD,cAC7CoD,EAAWA,EAAS9iQ,QAAO,SAACtP,GAAD,OAAiC,IAA1BA,EAAEivQ,mBAAT,IAC3BoD,EAAUjC,EAAK9gQ,QAAO,SAACtP,GAAD,OAAiC,IAA1BA,EAAEivQ,mBAAT,IAAuCj7Q,QAE/D,IAAIs+Q,EAAgBF,EAASp+Q,OAC7B,OAAOoS,KAAK4kC,MAAOsnO,EAAgBD,EAAW,IAC/C,KAnDH,GAAqC3yD,IAAxBgwD,GAIJ79J,YAAc8rG,GCxBhB,IAAM40D,GAAb,8BACI,WAAYpjQ,GAAa,IAAD,oBACpB,cAAMA,IACD6H,MAAQ,CAAEyvJ,SAAS,EAAMw4F,UAAW,GAAIvpO,MAAO,GAAI88O,iBAAkB,KAAMC,iBAAkB,KAAM1O,mBAAoB,KAAM2O,iBAAkB,EAAGC,QAAQ,EAAO3T,WAAY,IAClL,EAAKgF,iBAAmB,EAAKA,iBAAiB7lQ,KAAtB,MACxB,EAAKy0Q,cAAgB,EAAKA,cAAcz0Q,KAAnB,MAJD,CAKvB,CANL,2CAQI,WACIsmP,GAAkBI,cAAc,CAAE9jP,KAAM,cACxCpB,KAAK89P,WACL99P,KAAKizQ,eACR,GAZL,iCAcI,SAAoBp0P,GAChBA,EAAMy0B,iBACN,IAAM1tC,EAASiZ,EAAMjZ,OACrB5F,KAAK6tE,SAAS,CAAEglM,iBAAkBjtQ,EAAO8S,aAAa,iBAAkBo6P,iBAAkB,KAAM1O,mBAAoB,MACvH,GAlBL,iCAoBI,SAAoBvlP,GAChBA,EAAMy0B,iBACN,IAAM1tC,EAASiZ,EAAMjZ,OACrB5F,KAAK6tE,SAAS,CAAEilM,iBAAkBltQ,EAAO8S,aAAa,iBAAkB0rP,mBAAoBx+P,EAAO8S,aAAa,YACnH,GAxBL,sBA0BI,WAA0B,IAAD,SAEjB47O,EAAU,UADEt0P,KAAKisK,aACIgyC,eAAX,aAAG,EAAiBq2C,WAC9Bn5P,EAAG,yEAAqEm5P,GAC5E31P,KAAAA,IAAUxD,GACLgF,MAAK,SAAC5E,GACH,IAAI+jQ,EAAY/jQ,EAAS1B,KACzB,EAAKq5Q,UAAU5T,EAClB,IACA9pP,OAAM,SAACtS,GACJ,EAAK2qE,SAAS,CAAEi5F,SAAS,GAC5B,GACR,GAtCL,uBAwCI,SAAkBw4F,GAAuB,IAAD,SAC9BxgQ,EAAUkB,KAAKisK,aACjB9wK,EAAG,4CAA8B2D,EAAQo/M,gBAAtC,aAA8B,EAAkBo2C,YACvD31P,KAAAA,IAAUxD,GACLgF,MAAK,SAAC5E,GACH,IAAIw6B,EAAQx6B,EAAS1B,KACrB,EAAKs5Q,+BAA+B7T,EAAWvpO,EAClD,IACAvgB,OAAM,SAACtS,GACJ,EAAK2qE,SAAS,CAAEi5F,SAAS,GAC5B,GACR,GAnDL,4CAqDI,SAAuCw4F,EAAgBvpO,GAA2B,IAAD,SACvEj3B,EAAUkB,KAAKisK,aACjB9wK,EAAG,sFAAwE2D,EAAQo/M,gBAAhF,aAAwE,EAAkBo2C,YACjG31P,KAAAA,IAAUxD,GACLgF,MAAK,SAAC5E,GACH,IAAI63Q,EAAmB73Q,EAAS1B,KAChCk8B,EAAMl1B,KAAN,MAAAk1B,EAAK,GAASq9O,IACd,EAAKvlM,SAAS,CAAEi5F,SAAS,EAAOw4F,UAAWA,EAAWvpO,MAAOA,GAChE,IACAvgB,OAAM,SAACtS,GACJ,EAAK2qE,SAAS,CAAEi5F,SAAS,GAC5B,GACR,GAjEL,8BAoEI,SAAwBs9F,GACpB,IAAIj6P,EAAWnK,KAAKqX,MAAMioP,UAAUppO,MAAK,SAACqnI,GAAU,OAAOA,EAAI6mG,qBAAuBA,CAAoB,IAC1F,MAAZj6P,IACAA,EAASq1P,aAAe,WAE5Bx/P,KAAK6tE,SAAS,CAAEklM,iBAAkB/yQ,KAAKqX,MAAM07P,iBAAmB,EAAGzT,UAAWt/P,KAAKqX,MAAMioP,WAC5F,GA1EL,0DA4EI,gGACQxgQ,EAAUkB,KAAKisK,aACfqoF,EAFR,UAEqBx1P,EAAQm/M,eAF7B,aAEqB,EAAiBq2C,WAClC31P,KAAAA,IACS,+CAAiD21P,GACrDn0P,MAAK,SAAC5E,GAEH,IADA,IAAI8jQ,EAAoC,GAC/Bh/P,EAAI,EAAGA,EAAI9E,EAAS1B,KAAKxF,OAAQgM,IACJ,QAA9B9E,EAAS1B,KAAKwG,GAAGgd,UACjBgiP,EAAWx+P,KAAKtF,EAAS1B,KAAKwG,IAGtC,EAAKwtE,SAAS,CAAEwxL,WAAYA,GAC/B,IACA7pP,OAAM,SAACtS,GAC8B,MAA9BA,EAAM3H,SAASw4O,YACfygB,MAAM,eAEb,IAlBT,gDA5EJ,+EAgGI,WACI,IAAI8c,EAAcvB,GAAgBW,iBAAiB1wQ,KAAKisK,aAAcjsK,KAAKqX,MAAMioP,WACjF,OAAoB,IAAhBgS,EAA0B,GAC1BA,GAAe,IAAY,WACxB,YACV,GArGL,oBAsGI,WAAU,IAAD,YACDxyQ,EAAUkB,KAAKisK,aAEkB,IAAjCjsK,KAAKqX,MAAMgoP,WAAWhrQ,QAAgD,OAAhC2L,KAAKqX,MAAMw7P,kBACjD7yQ,KAAK6tE,SAAS,CAAEglM,iBAAkB7yQ,KAAKqX,MAAMgoP,WAAW,GAAGhiP,SAAUy1P,iBAAkB,KAAM1O,mBAAoB,OAGrH,IAAI2M,EAAa,WAACjyQ,EAAQo/M,gBAAT,aAAC,EAAkB+B,iBAAnB,UAAqCnhN,EAAQo/M,gBAA7C,aAAqC,EAAkB8B,oBA6BxE,OA1BehgN,KAAKqX,MAAMyvJ,SACpB,+BAAE,wBAAG,4CAEH,+BACI,UAAC25C,GAAD,CAAYznM,UAAS,qBAAgBhZ,KAAKqzQ,eAAiB1yD,eAAe,aAAav0K,MAAO,iBAA9F,WACI,UAAC,GAAD,WACKpsC,KAAKqX,MAAM27P,SACR,SAAC,GAAD,CAAKh6P,UAAU,QAAf,UACI,SAAC,GAAD,CAAaqrP,iBAAkBrkQ,KAAKqkQ,iBAAkB8B,iBAAgB,UAAErnQ,EAAQo/M,gBAAV,aAAE,EAAkB+B,iBAAiBC,UAAWkmD,mBAAqB,UAAAtnQ,EAAQo/M,gBAAR,SAAkB8B,mBAAlB,UAAuClhN,EAAQo/M,gBAA/C,aAAuC,EAAkB8B,mBAAmBE,UAAY,OAG1OlgN,KAAKqX,MAAM27P,SACR,SAAC,GAAD,CAAKh6P,UAAU,QAAf,UACI,SAAComP,GAAD,CAAgDC,WAAYr/P,KAAKqX,MAAMgoP,WAAYC,UAAWt/P,KAAKqX,MAAMioP,WAAtFt/P,KAAKqX,MAAM07P,qBAGpC/yQ,KAAKqX,MAAM27P,SACT,SAAC,GAAD,CAAKh6P,UAAU,oBAAf,UACI,SAAC+2P,GAAD,CAAmD1Q,WAAYr/P,KAAKqX,MAAMgoP,WAAY/1O,MAAOtpB,KAAKqX,MAAM0e,MAAOupO,UAAWt/P,KAAKqX,MAAMioP,UAAWyR,WAAYA,EAAYzc,WAAU,UAAEx1P,EAAQo/M,gBAAV,aAAE,EAAkBo2C,YAAhLt0P,KAAKqX,MAAM07P,wBAI7C,sBAKnB,KA3IL,GAA+BhzD,IC1BlBuzD,GAAb,oHACI,WACI,MAAwBtzQ,KAAKwP,MAArB48B,EAAR,EAAQA,MAAO9D,EAAf,EAAeA,KAEf,OACE,SAAC,GAAD,CAAWtvB,UAAU,OAArB,UAEE,UAAC,GAAD,CAAMA,UAAU,MAAhB,WACE,UAAC,GAAD,CAAOgkM,IAAK,EAAZ,WACE,wBAAK5wK,KACL,uBAAI9D,OAEHtoC,KAAKwP,MAAM+J,aAIvB,KAhBL,GAA6BqpG,EAAAA,WCsBhB2wJ,GAAb,8BAME,WAAY/jQ,GAAa,IAAD,oBACtB,cAAMA,IACD6H,MAAQ,CACXyvJ,SAAS,EACTo3C,SAAU,KACV40D,iBAAkB,KAClBU,oBAAqB,KACrBlU,UAAW,IAEb,EAAKmU,oBAAsB,EAAKA,oBAAoBj1Q,KAAzB,MAC3B,EAAK6lQ,iBAAmB,EAAKA,iBAAiB7lQ,KAAtB,MAVF,CAWvB,CAjBH,2CAkBE,WACEsmP,GAAkBI,cAAc,CAAE9jP,KAAM,oBACxCpB,KAAK0zQ,cACN,GArBH,8BAuBE,SAAiB75Q,GAAY,IAAD,OAC1B8E,KAAAA,KACQ,oDAAqD,KAAM,CAC/D3C,OAAQ,CACNw3Q,oBAAqBxzQ,KAAKqX,MAAMm8P,oBAChCr4Q,IAAKtB,KAGRsG,MAAK,SAAC5E,GACL,IAAIo4Q,EAAoB,EAAKt8P,MAAMioP,UAAU3vP,QAAO,SAACs5B,GACnD,OAAOA,EAAEuqO,sBAAwB,EAAKn8P,MAAMm8P,mBAC7C,IACD,EAAK3lM,SAAS,CACZyxL,UAAWqU,EACXb,iBAAkB,KAClBU,oBAAqB,MAExB,GACJ,GAzCH,iCA2CE,SAAoB30P,GAClBA,EAAMy0B,iBACN,IAAM1tC,EAASiZ,EAAMjZ,OACrB5F,KAAK6tE,SAAS,CACZilM,iBAAkBltQ,EAAO8S,aAAa,iBACtC86P,oBAAqB5tQ,EAAO8S,aAAa,YAG5C,GAnDH,oBAqDE,WACE,OAAI1Y,KAAKqX,MAAMyvJ,SAEX,wBACE,0CAKJ,SAAC25C,GAAD,CAAYr0K,MAAO,kBAAmB5oC,YAAa,GAAnD,UACE,iCACE,UAAC,GAAD,YACE,SAAC,GAAD,CAAKwV,UAAU,WACf,SAAC,GAAD,CAAKA,UAAU,QAAf,UACE,gBAAKA,UAAU,aAAf,UACE,gBAAKA,UAAU,wEAAf,UACE,UAAC,GAAD,YACE,SAAC,GAAD,WACE,SAAC,GAAD,CAAKA,UAAU,oBAAf,6GAKF,SAAC,GAAD,WACE,SAAC,GAAD,+BAMV,SAAC,GAAD,CAAKA,UAAU,WACf,SAAC,GAAD,CAAKA,UAAU,QAAf,UACE,SAACs6P,GAAD,CACElnO,MAAO,eACP9D,KACE,2GAKR,mBACA,mBACA,mBACA,sBAKP,GArGH,yDAuGE,wFAE0B,QADlBxpC,EAAUkB,KAAKlB,SACTm/M,QAFd,iDAIEt/M,KAAAA,IAEI,iDACEG,EAAQm/M,QAAQq2C,YAEnBn0P,MAAK,SAAC5E,GACL,IAAI2iN,EAAW3iN,EAAS1B,KAEtBqkN,EAASziN,SAAWwgN,GAAe23D,aACnC11D,EAASziN,SAAWwgN,GAAe43D,eAEnCloQ,OAAOC,SAASV,KAAO,mBAE1B,IAjBL,gDAvGF,2DAAoCk9G,EAAAA,WAAvBmrJ,GAIJrhK,YAAc8rG,GCvBhB,IAAM81D,GAAb,oHACI,WACI,OACI,UAACrzD,GAAD,CAAYr0K,OAAO,4CAAgB5oC,YAAa,oCAAhD,WACI,mBACA,wBAAG,SAAC6zM,GAAD,CAAM1tK,GAAG,IAAT,UAAa,SAAC,GAAD,CAAQ3wB,UAAU,2DAAlB,mCAG3B,KARL,GAA8BovG,EAAAA,WCIjB2rJ,GAAb,8BAIE,WAAYvkQ,GAAa,IAAD,oBACtB,cAAMA,IACD6H,MAAQ,CAAE28P,iBAAiB,GAFV,CAGvB,CAPH,2CAQE,WACE7pQ,SAASiiC,MAAQ,eAClB,GAVH,oBAYE,WAAU,IAAD,OACP,OAAKpsC,KAAKqX,MAAM28P,iBAUd,UAACvzD,GAAD,CACEr0K,OAAO,mDACP5oC,YACE,2HAHJ,WAME,mBACA,cAAGwV,UAAU,cAAb,UACE,SAACq+L,GAAD,CAAM1tK,GAAG,IAAT,UACE,SAAC,GAAD,CAAQ3wB,UAAU,mBAAlB,qCAfNzc,YAAW,WACT,EAAKsxE,SAAS,CAAEmmM,iBAAiB,GAClC,GAAE,MACI,wBAiBV,KArCH,GAA+B5rJ,EAAAA,WCIlB6rJ,GAAb,8BACI,WAAYzkQ,GAAa,IAAD,oBACpB,cAAMA,IACD6H,MAAQ,CAAEyvJ,SAAS,GAFJ,CAGvB,CAJL,2CAKI,WACIg+E,GAAkBI,cAAc,CAAE9jP,KAAM,iBAC3C,GAPL,oBASI,WAoCI,OAnCepB,KAAKqX,MAAMyvJ,SACpB,wBAAG,0CAED,UAAC25C,GAAD,CAAYr0K,MAAO,gBAAiB5oC,YAAa,GAAjD,WACQ,UAAC,GAAD,YACI,SAAC,GAAD,CAAKwV,UAAU,WACf,SAAC,GAAD,CAAKA,UAAU,QAAf,UACI,gBAAKA,UAAU,aAAf,UACI,gBAAKA,UAAU,wEAAf,UACI,UAAC,GAAD,YACI,UAAC,GAAD,YACI,SAAC,GAAD,CAAKA,UAAU,WAGf,SAAC,GAAD,CAAKA,UAAU,0BAInB,SAAC,GAAD,WAAK,SAAC,GAAD,+BAMrB,SAAC,GAAD,CAAKA,UAAU,WACf,SAAC,GAAD,CAAKA,UAAU,QAAf,UACQ,SAACs6P,GAAD,CAASlnO,MAAO,eAAgB9D,KAAM,sGAGlD,mBACA,mBACA,mBACA,oBAInB,KA9CL,GAAkC8/E,EAAAA,WCFrB8rJ,GAAb,8BACE,WAAY1kQ,GAAa,IAAD,oBACtB,cAAMA,IAsER2kQ,UAAY,SAAC56Q,GACX,OAAOA,CACR,EAzEuB,EAkGxB66Q,eAAiB,SAAClxQ,GAGhB,OAFAwkF,GAAAA,MAAA,2BAAiCr/E,KAAKI,UAAUvF,GAAhD,MACA,EAAKmxQ,aAAanxQ,GACX1J,QAAQE,OAAOwJ,EACvB,EAtGuB,EAwGxBoxQ,WAAa,SAAC/4Q,GACZ,OAAOA,CACR,EA1GuB,EA4GxBg5Q,gBAAkB,SAACrxQ,GAA4C,IAAD,IAC5D,OAAIyI,OAAOC,SAASV,KAAKsF,SAAS,iBAIT,eAArBtN,EAAM3J,OAAO4B,IAFR3B,QAAQC,QAAQyJ,IAMzBwkF,GAAAA,MAAA,UAAgBr/E,KAAKI,UAAUvF,OACtB,OAALA,QAAK,IAALA,GAAA,UAAAA,EAAO3H,gBAAP,eAAiBE,SAAW,KAAmC,OAAvB,OAALyH,QAAK,IAALA,GAAA,UAAAA,EAAO3H,gBAAP,eAAiBE,UACtD,EAAK44Q,aAAanxQ,GAEpB,EAAK2qE,SAAS,CAAE3qE,OAAO,EAAM8wQ,iBAAiB,IAEvCx6Q,QAAQE,OAAOwJ,GACvB,EA5HuB,EA+SxBk7M,eAAiB,WACmB,OAA9B,EAAK/mM,MAAMqnM,eACb,EAAKo/C,UAAS,EAAO,EAAKzmP,MAAMqnM,iBAEhC,EAAK7wI,SAAS,CAAE93C,MAAO,KACvBp3B,KAAAA,IAEI,iDACE,EAAK0Y,MAAM4mM,QAAQq2C,YAEtBn0P,MAAK,SAAC5E,GACL,EAAKsyE,SAAS,CAAEqwI,SAAU3iN,EAAS1B,MACpC,IACA2b,OAAM,SAACtS,GAAY,IAEzB,EA3TC,EAAKk7M,eAAiB,EAAKA,eAAe5/M,KAApB,MACtB,EAAKg2Q,kBAAoB,EAAKA,kBAAkBh2Q,KAAvB,MACzB,EAAK8/M,WAAa,EAAKA,WAAW9/M,KAAhB,MAClB,EAAKqgN,qBAAuB,EAAKA,qBAAqBrgN,KAA1B,MAC5B,EAAKi2Q,gBAAkB,EAAKA,gBAAgBj2Q,KAArB,MACvB,EAAKk2Q,aAAe,EAAKA,aAAal2Q,KAAlB,MACpB,EAAKm2Q,sBAAwB,EAAKA,sBAAsBn2Q,KAA3B,MAC7B,EAAKg2Q,kBAAoB,EAAKA,kBAAkBh2Q,KAAvB,MAEzB,EAAKsgN,OAAS,EAAKA,OAAOtgN,KAAZ,MACd,EAAKugN,UAAY,EAAKA,UAAUvgN,KAAf,MACjB,EAAKwgN,UAAY,EAAKA,UAAUxgN,KAAf,MACjB,EAAKygN,SAAW,EAAKA,SAASzgN,KAAd,MAChB,EAAK00Q,UAAY,EAAKA,UAAU10Q,KAAf,MAEjB,EAAKghN,sBAAwB,EAAKA,sBAAsBhhN,KAA3B,MAC7B,EAAKihN,uBAAyB,EAAKA,uBAAuBjhN,KAA5B,MAC9B,EAAKkhN,wBAA0B,EAAKA,wBAAwBlhN,KAA7B,MAE/B,EAAK6Y,MAAQ,CACXyvJ,SAAS,EACTm3C,QAAS,KACT22D,cAAc,EACd1xQ,OAAO,EACP2xQ,aAAc,KACdx2D,SAAS,EACTC,WAAY,SAACnvM,GACX,EAAK0+D,SAAS,CAAEwwI,QAASlvM,GAC1B,EACDuvM,eAAgB,KAChBE,qBAAsB,GACtBR,eAAgB,EAAKA,eACrBS,qBAAsB,EAAKA,qBAC3BC,OAAQ,EAAKA,OACbC,UAAW,EAAKA,UAChBC,UAAW,EAAKA,UAChBC,SAAU,EAAKA,SACfG,aAAc,GACd01D,iBAAiB,EACjBjoK,SAAU,KACV92E,MAAO,KACPwpL,gBAAiB,CAAC,EAClBC,sBAAuB,SAACnoM,GACtB,EAAKmoM,sBAAsBnoM,EAC5B,EACDooM,uBAAwB,SAAC7+M,GACvB,EAAK6+M,uBAAuB7+M,EAC7B,EACD8+M,wBAAyB,WACvB,EAAKA,yBACN,GAGH/gN,KAAAA,aAAAA,SAAAA,IAAgC,EAAK21Q,WAAY,EAAKC,iBAxDhC,CAyDvB,CA1DH,0CA4DE,SAAiB91D,GACmC,OAA9CzyG,eAAe72C,QAAQ,oBACzBx2D,KAAAA,KACQ,6BAA8B,KAAM,CACxC3C,OAAQ,CAAEyiN,UAAWA,KAEtBt+M,MAAK,SAAC5E,GACLywG,eAAe/2C,QAAQ,kBAAmB,IAC3C,GAEN,GAtEH,0BA4EE,SAAa/xD,GACX3G,YAAW,WAAO,IAAD,EACX68C,EAAO,IAAIpxC,SACfoxC,EAAKnsC,OACH,UACA5E,KAAKI,UAAUvF,GACb,2BACAmF,KAAKI,UAAUi/E,GAAAA,YAEnB/oF,KAAAA,KACQ,aAAcy6C,EAAM,CACxBp9C,OAAQ,CAAEyE,QAAO,iBAAEyC,QAAF,IAAEA,OAAF,EAAEA,EAAOzC,eAAT,QAAoB,iBACrCoI,cAAe,WACf9O,QAAS,CAAE,eAAgB,yBAE5Byb,OAAM,SAAChN,GACNk/E,GAAAA,MAAa,+BACbA,GAAAA,IAAWl/E,EACZ,IACHk/E,GAAAA,WACD,GAAE,IACJ,GAjGH,+BA+HE,WACmC,WAA7B/7E,OAAOC,SAASH,SAKhBzL,KAAKqX,MAAMyvJ,SACb9mK,KAAK89P,UAAS,EAAM,MALpB99P,KAAK6tE,SAAS,CAAEi5F,SAAS,GAO5B,GAxIH,mCA0IE,SAAsBy4C,GACpB,IAAIw1D,EAAkB,OACjB/0Q,KAAKqX,MAAMkoM,iBACXA,GAELv/M,KAAK6tE,SAAS,CAAE0xI,gBAAiBw1D,GAClC,GAhJH,oCAkJE,SAAuBn0Q,GACrBZ,KAAK6tE,SAAS,CAAEmnM,oBAAqBp0Q,GACtC,GApJH,qCAsJE,WACMZ,KAAKqX,MAAM29P,qBACbh1Q,KAAKqX,MAAM29P,qBAEd,GA1JH,sBA4JE,SAASC,EAAuBx2D,GAA2B,IAAD,OACxDz+M,KAAKk1Q,eAAe/0Q,MAAK,SAACg1Q,GACxB,EAAKtnM,SAAS,CAAEg/B,SAAUsoK,EAAiBt7Q,MAC5C,IACDmG,KAAKy0Q,gBAAgBh2D,GAAWt+M,MAAK,SAACi1Q,GACpC,IAAIA,EAKF,OAFA1tL,GAAAA,KAAY,yDACZ,EAAK7Z,SAAS,CAAE3qE,OAAO,EAAM8wQ,iBAAiB,IAH9CtsL,GAAAA,IAAW,sBAAuB0tL,EAAoBv7Q,MAOtB,OAA9B,EAAKwd,MAAMqnM,gBACb,EAAK22D,iBAAiBD,EAAoBv7Q,KAAK4kN,WAG/C,yCADA22D,EAAoBv7Q,KAAK4kN,UAGzB,EAAK5wI,SAAS,CAAE+mM,cAAc,IAG5B,yCADFQ,EAAoBv7Q,KAAKy6P,YAEe,OAAxC8gB,EAAoBv7Q,KAAKy6P,WAEzB,EAAKzmL,SAAS,CACZynM,iBAAiB,EACjBr3D,QAASm3D,EAAoBv7Q,KAC7BitK,SAAS,IAGX,EAAK4tG,aAAaU,EAAoBv7Q,MAAMsG,MAC1C,SAACo1Q,GACC7tL,GAAAA,IAAW,kBAAmB6tL,EAAiB17Q,MAE/C,EAAKq5Q,UAAUqC,EAAiB17Q,KAAKy6P,YAGrC,EAAKqgB,sBAAsBS,EAAoBv7Q,MAAMsG,MACnD,SAACq1Q,GACC9tL,GAAAA,IACE,4BACA8tL,EAA0B37Q,MAG5B,EAAK47Q,mBAAmBt1Q,MAAK,SAACu1Q,GAC5B,IAAIt2D,EACFs2D,EAAqB77Q,KAAKmZ,KAAI,SAACT,GAC7B,MAAO,CACL+1B,KAAM/1B,EAAKnR,KACXzF,MAAO4W,EAAKojQ,cACZpjQ,KAAMA,EAET,IACH,EAAKs7D,SAAS,CACZowI,QAASm3D,EAAoBv7Q,KAC7BqkN,SAAUq3D,EAAiB17Q,KAC3B+kN,qBAAsB42D,EAA0B37Q,KAChDitK,SAAS,EACT5jK,OAAO,EACPk8M,aAAcA,EACdk2D,iBAAiB,EACjBj2D,YACE+1D,EAAoBv7Q,KAAK4kN,YACzB82D,EAAiB17Q,KAAKomN,iBAAiBxB,UACnC,EACA,GAET,IACGw2D,GACF,EAAKT,oBAAoBr0Q,MAAK,SAACy1Q,GAC7BluL,GAAAA,IACE,kBACA8tL,EAA0B37Q,MAE5B,EAAKg0E,SAAS,CACZswI,SAAUy3D,EAAiB/7Q,MAE9B,GAEJ,GAGJ,GAGN,GACF,GAnPH,uBAqPE,SAAUy6P,GAAqB,IAAD,OAC5B,IAAIt0P,KAAKqX,MAAMioM,aAAf,CACAt/M,KAAK6tE,SAAS,CAAEyxI,cAAc,IAC9B,IAAInkN,EAAG,kCAA8Bm5P,GACrC31P,KAAAA,IACOxD,GACJgF,MAAK,SAAC5E,GACL,IAAIw6B,EAAQx6B,EAAS1B,KACrB,EAAKg0E,SAAS,CAAE93C,MAAOA,EAAOupL,cAAc,GAC7C,IACA9pM,OAAM,SAACtS,GACN,EAAK2qE,SAAS,CAAEyxI,cAAc,GAC/B,GAXgC,CAYpC,GAlQH,6BAoQE,SAAgBb,GAA2B,IAAD,OACpCtjN,EAAM,2BAEV,OADIsjN,IAAWtjN,EAAM,iCAAmCsjN,GACjD9/M,KAAAA,IAAUxD,GAAKqa,OAAM,SAACtS,GAC3B,EAAK2qE,SAAS,CAAE3qE,OAAO,EAAM8wQ,iBAAiB,GAC/C,GACF,GA1QH,8BA4QE,WAEE,OAAOr1Q,KAAAA,IADG,8BAEX,GA/QH,0BAiRE,SAAas/M,GACX,OAAOt/M,KAAAA,IACL,iDAAmDs/M,EAAQq2C,WAE9D,GArRH,mCAuRE,SAAsBp2C,GACpB,IAAI/iN,EAAG,wDAAoD+iN,EAASo2C,YACpE,OAAO31P,KAAAA,IAAUxD,EAClB,GA1RH,+BA4RE,WACE,OAAOk+P,GAAY,OAOpB,GApSH,0BAsSE,WAEE,OAAO16P,KAAAA,IADG,YAEX,GAzSH,gCA2SE,SAAmB8/M,GACjBz+M,KAAK89P,UAAS,EAAOr/C,GACrBz+M,KAAK6tE,SAAS,CAAE6wI,eAAgBD,GACjC,GA9SH,wBAiUE,SAAWJ,GACTr+M,KAAK6tE,SAAS,CAAEwwI,QAASA,GAC1B,GAnUH,kCAqUE,SAAqBi2C,GAAqB,IAAD,OAClCA,IAAYA,EAAat0P,KAAKqX,MAAM4mM,QAAQq2C,YACjD,IAAIn5P,EAAG,wDAAoDm5P,GAC3D,OAAO31P,KAAAA,IACAxD,GACJgF,MAAK,SAAC5E,GACL,IAAI68C,EAAO78C,EAAS1B,KACpB,EAAKg0E,SAAS,CAAEi5F,SAAS,EAAO83C,qBAAsBxmK,GACvD,IACA5iC,OAAM,SAACtS,GAC4B,MAA9BA,EAAM3H,SAASw4O,YACjBygB,MAAM,eAET,GACJ,GAnVH,oBAqVE,SAAOj3F,GACL,IAAIs4G,EAAU71Q,KAAKqX,MAAMunM,qBACzBi3D,EAAQh1Q,KAAK08J,GACbv9J,KAAK6tE,SAAS,CACZ+wI,qBAAsBi3D,GAGzB,GA5VH,uBA8VE,SAAUt4G,GACR,IACIu4G,EADU91Q,KAAKqX,MAAMunM,qBACH5rM,KAAI,SAACk9C,GACzB,OAAIA,EAAEk0M,qBAAuB7mG,EAAI6mG,mBAA2B7mG,EAChDrtG,CACb,IAED4lN,EAAQv4Q,SAAQ,SAAC2yD,GACXA,EAAEk0M,qBAAuB7mG,EAAI6mG,oBAC/B18K,GAAAA,IAAWx3B,EAAEsvM,eAED,IAAVtvM,EAAE6lN,MACJ7lN,EAAE6lN,KAAM,EAEX,IACD/1Q,KAAK6tE,SAAS,CACZ+wI,qBAAsBk3D,GAGzB,GAjXH,sBAmXE,SAAS52D,EAAeC,GACtB,IAAI02D,EAAU71Q,KAAKqX,MAAMunM,qBACrBo3D,EAASH,EAAQ3/O,MAAK,SAACg6B,GAAD,OAAYA,EAAEk0M,qBAAuBllD,CAArC,IAC1B,GAAK82D,EAAL,CACKA,EAAO5R,mBAAqBjlD,EAEjC,IAAI22D,EAAUD,EAAQ7iQ,KAAI,SAACk9C,GACzB,OAAIA,EAAEk0M,qBAAuBllD,EAAc82D,EAC/B9lN,CACb,IACDlwD,KAAK6tE,SAAS,CACZ+wI,qBAAsBk3D,GAPnB,CAUN,GAjYH,uBAmYE,SAAUv4G,GACR,IAAIs4G,EAAU71Q,KAAKqX,MAAMunM,qBACzBi3D,EAAUA,EAAQlmQ,QAChB,SAAC8N,GAAD,OAAYA,EAAE2mP,qBAAuB7mG,EAAI6mG,kBAAzC,IAEFpkQ,KAAK6tE,SAAS,CACZ+wI,qBAAsBi3D,GAGzB,GA5YH,oBA8YE,WAAU,IAAD,OACP,IAAyB,IAArB71Q,KAAKqX,MAAMnU,MACb,OAAKlD,KAAKqX,MAAM28P,iBAWd,UAACvzD,GAAD,CACEr0K,OAAO,mDACP5oC,YACE,2HAHJ,WAME,mBACA,cAAGwV,UAAU,aAAb,UACE,SAACq+L,GAAD,CAAM1tK,GAAG,IAAT,UACE,SAAC,GAAD,CACEu3D,QAAS,WACP,EAAKrzB,SAAS,CAAE3qE,OAAO,GACxB,EACD8V,UAAU,2DAJZ,qCAhBNzc,YAAW,WACT,EAAKsxE,SAAS,CAAEmmM,iBAAiB,GAClC,GAAE,MACI,yBA0BX,IACiC,IAA/Bh0Q,KAAKqX,MAAMi+P,mBACTt1Q,KAAKqX,MAAM4mM,QAAQuC,UAC+B,IAAlD70M,OAAOC,SAASV,KAAKsF,SAAS,iBAChC,CAAC,IAAD,IACIylQ,EAAG,UAAGjqK,eAAe72C,QAAQ,cAA1B,QAAoC,GAC3C,MAAW,IAAP8gN,GAAmD,OAAtC,UAACtqQ,OAAOC,SAASH,gBAAjB,QAA6B,MAC5C9M,KAAAA,KACQ,wBAAyB,KAAM,CAAE3C,OAAQ,CAAE4I,GAAIqxQ,KACpD91Q,MAAK,WACJ,IAAIrB,EAAU,EAAKuY,MACnBvY,EAAQ4/M,eAAiBu3D,EACzBn3Q,EAAQs/M,gBACT,KACI,0BAIP,SAACqC,GAAD,CACEr0K,OAAO,qDACP5oC,YACE,6IAHJ,UAME,mBAGL,CAED,IAAKxD,KAAKqX,MAAMyvJ,UAAuC,IAA5B9mK,KAAKqX,MAAMu9P,aACpC,OACE,wBACE,2HAQN,IAA2B,IAAvB50Q,KAAKqX,MAAMyvJ,QACb,OACE,wBACE,yCAIN,IAAIz9J,EAAIrJ,KAAKqX,MAEb,OACE,SAAC2mM,GAAYn0C,SAAb,CAAsBluK,MAAO0N,EAA7B,UACE,8BAAGrJ,KAAKwP,MAAM+J,YAGnB,KAveH,GAAkCqpG,EAAAA,WCQrBszJ,GAAb,8BACE,WAAY1mQ,GAAsC,6BAC1CA,EACP,CAHH,gCAKE,WAAU,IAAD,mBAEP,OACE,+BACA,2BAC4B,aAA3BxP,KAAKwP,MAAM2mQ,cACZ,0BACE,iBAAKn9P,UAAS,mDAAoChZ,KAAKwP,MAAMwJ,iBAA/C,QAA4D,IACtEkoF,QAAS,SAAC14F,GAAa,EAAKgH,MAAM4mQ,UAAa,EADnD,WAEM,kBAAMp9P,UAAU,MAAhB,uBAA+B,oCAAOhZ,KAAKwP,MAAM6mQ,qBAAlB,QAAmCr2Q,KAAKwP,MAAM48B,YAC/E,iBAAMhsB,MAAO,CAAEk2P,WAAY,MAAO98O,QAAS,OAAQ+kI,aAAc,QAASvlJ,UAAU,oDAIlD,UAAvC,UAAChZ,KAAKwP,MAAM2mQ,mBAAZ,QAA2B,UAC5B,oBAAQn9P,UAAS,wEAAyDhZ,KAAKwP,MAAMwJ,iBAApE,QAAiF,IAAMkoF,QAAS,SAAC14F,GAAa,EAAKgH,MAAM4mQ,UAAa,EAAvJ,WACI,kBAAMp9P,UAAU,MAAhB,uBAA+B,sCAAShZ,KAAKwP,MAAM6mQ,qBAApB,QAAqCr2Q,KAAKwP,MAAM48B,YAC/E,iBAAMhsB,MAAO,CAAEk2P,WAAY,MAAO/3G,aAAc,QAAUvlJ,UAAU,eAApE,UAAmF,cAAGA,UAAU,wCAGnGhZ,KAAKwP,MAAMwlF,SACV,eAAGh8E,UAAU,cAAb,UAA4BhZ,KAAKwP,MAAM48B,MAAvC,YAAqD,SAAC,GAAD,CAAet5C,KAAMkN,KAAKwP,MAAMwlF,YAEtFh1F,KAAKwP,MAAM+mQ,YACR,iCACA,eAAGn2P,MAAO,CAAE5F,MAAO,OAAQo6C,MAAO,UAAWl0C,WAAY,GAAzD,8DAAsG1gB,KAAKwP,MAAM6mQ,qBAAjH,QAAkIr2Q,KAAKwP,MAAM48B,MAA7I,SACA,mBAAQpzB,UAAU,4DAA4DkoF,QAAS,kBAAMv1F,OAAOg0M,SAAS,iBAAtB,EAAvF,wCAMP,KArCH,GAA4C/8F,EAAAA,WCL/B4zJ,GAAb,8BACE,WAAYhnQ,GAAyB,IAAD,oBAClC,cAAMA,IACDinQ,kBAAoB,EAAKA,kBAAkBj4Q,KAAvB,MACzB,EAAK6Y,MAAQ,CAACq/P,eAAe,GAHK,CAInC,CALH,2CAOI,WAAqB,IAAD,SACV53Q,EAAUkB,KAAKisK,aAErBttK,KAAM,CACFxD,IAAI,mDAAD,OAAqD6E,KAAKwP,MAAM+C,KAAKokQ,iBAArE,iCAAoG73Q,EAAQo/M,gBAA5G,aAAoG,EAAkBo2C,YACzHx4P,OAAQ,MACR9B,aAAc,SACfmG,MAAK,SAAA5E,GACJ,GAA2B,IAAvBA,EAAS1B,KAAK6Z,KACd,EAAKm6D,SAAS,CAAC6oM,eAAe,QAC3B,CACH,IAAMv7Q,EAAMwQ,OAAO8hD,IAAIC,gBAAgB,IAAIjhD,KAAK,CAAClR,EAAS1B,QACpD0sF,EAAOp8E,SAASa,cAAc,KACpCu7E,EAAKr7E,KAAO/P,EACZorF,EAAKp7E,aAAa,WAAY,iBAC9BhB,SAASmyB,KAAKljB,YAAYmtE,GAC1BA,EAAKtrC,QACmB,OAApBsrC,EAAK3sE,YACL2sE,EAAK3sE,WAAWC,YAAY0sE,EACnC,CACJ,GACJ,GA5BL,oBA8BE,WAEE,OACE,SAAC2vL,GAAD,CACEl9P,UAAWhZ,KAAKwP,MAAMwJ,UACtBozB,MAAO,YACP4oD,OAAQh1F,KAAKwP,MAAM+C,KAAKqkQ,oBACxBR,SAAUp2Q,KAAKy2Q,kBACfN,YAAan2Q,KAAKwP,MAAM2mQ,YACxBI,UAAWv2Q,KAAKqX,MAAMq/P,eAE3B,KAzCH,GAA6C32D,ICDhC82D,GAAb,8BACE,WAAYrnQ,GAAmB,IAAD,oBAC5B,cAAMA,IACDsnQ,iBAAmB,EAAKA,iBAAiBt4Q,KAAtB,MACxB,EAAK6Y,MAAQ,CAACq/P,eAAe,GAHD,CAI7B,CALH,0CAOE,WAAoB,IAAD,SACX53Q,EAAUkB,KAAKisK,aAErBttK,KAAM,CACFxD,IAAI,mDAAD,OAAqD6E,KAAKwP,MAAM+C,KAAKokQ,iBAArE,iCAAoG73Q,EAAQo/M,gBAA5G,aAAoG,EAAkBo2C,YACzHx4P,OAAQ,MACR9B,aAAc,SACfmG,MAAK,SAAA5E,GACJ,GAA2B,IAAvBA,EAAS1B,KAAK6Z,KACd,EAAKm6D,SAAS,CAAC6oM,eAAe,QAC3B,CACH,IAAMv7Q,EAAMwQ,OAAO8hD,IAAIC,gBAAgB,IAAIjhD,KAAK,CAAClR,EAAS1B,QACpD0sF,EAAOp8E,SAASa,cAAc,KACpCu7E,EAAKr7E,KAAO/P,EACZorF,EAAKp7E,aAAa,WAAY,gBAC9BhB,SAASmyB,KAAKljB,YAAYmtE,GAC1BA,EAAKtrC,QACkB,MAAnBsrC,EAAK3sE,YACL2sE,EAAK3sE,WAAWC,YAAY0sE,EACnC,CACJ,GACJ,GA5BD,oBA8BE,WAEE,OACE,SAAC2vL,GAAD,CACE9pO,MAAO,UACP4oD,OAAQh1F,KAAKwP,MAAM+C,KAAKqkQ,oBACxBR,SAAUp2Q,KAAK82Q,iBACfX,YAAan2Q,KAAKwP,MAAM2mQ,YACxBI,UAAWv2Q,KAAKqX,MAAMq/P,eAE3B,KAxCH,GAAuC32D,ICdvC,SAAS98F,KAA2Q,OAA9PA,GAAWl/G,OAAOQ,QAAU,SAAUqB,GAAU,IAAK,IAAIvF,EAAI,EAAGA,EAAI2I,UAAU3U,OAAQgM,IAAK,CAAE,IAAIW,EAASgI,UAAU3I,GAAI,IAAK,IAAI7C,KAAOwD,EAAc+C,OAAO/E,UAAUwP,eAAetN,KAAKF,EAAQxD,KAAQoI,EAAOpI,GAAOwD,EAAOxD,GAAW,CAAC,OAAOoI,CAAS,EAASq9G,GAASpgH,MAAM7C,KAAMgJ,UAAa,CAI7T,SAASg9G,GAAgBvoG,EAAGf,GAA+G,OAA1GspG,GAAkBjiH,OAAOysD,gBAAkB,SAAyB/yC,EAAGf,GAAsB,OAAjBe,EAAEgzC,UAAY/zC,EAAUe,CAAI,EAASuoG,GAAgBvoG,EAAGf,EAAK,CAK1K,IAAIq6P,GAAuB,SAAU51G,GAPrC,IAAwBj6C,EAAUC,EAUhC,SAAS4vJ,IACP,OAAO51G,EAAiBt+J,MAAM7C,KAAMgJ,YAAchJ,IACnD,CAZ+BmnH,EAQRg6C,GARFj6C,EAQP6vJ,GARwC/3Q,UAAY+E,OAAO7E,OAAOioH,EAAWnoH,WAAYkoH,EAASloH,UAAU2P,YAAcu4G,EAAUlB,GAAgBkB,EAAUC,GAc7K,IAAIirD,EAAS2kG,EAAQ/3Q,UA0DrB,OAxDAozK,EAAO4kG,WAAa,WAClB,IAAIlvJ,EAAc9nH,KAAKwP,MACnB+J,EAAWuuG,EAAYvuG,SACvB09P,EAAenvJ,EAAYmvJ,aAC3B7yI,EAAUxhI,MAAMsB,KAAK,CACvB7P,OAAQ4iR,IACP,WACD,MAAO,EACR,IAMD,OALAr0J,EAAAA,SAAAA,QAAuBrpG,GAAU,SAAUD,EAAOxY,GAC5CwY,GAASspG,EAAAA,eAAqBtpG,IAChC8qH,EAAQtjI,EAAQm2Q,GAAcp2Q,KAAKyY,EAEtC,IACM8qH,CACR,EAEDguC,EAAO8kG,cAAgB,WACrB,IAAIC,EAASn3Q,KAAKwP,MAAM2nQ,OACxB,OAAOn3Q,KAAKg3Q,aAAahkQ,KAAI,SAAUo3O,EAAQ/pP,GAC7C,OAAoBuiH,EAAAA,cAAoB,MAAO,CAC7CplH,IAAK6C,EACL+f,MAAO,CACLyjG,QAAS,OACTC,cAAe,SACfszJ,eAAgB,aAChBC,aAAc,UACdhzI,KAAM,EACN7pH,MAAO,EACPwiM,IAAKm6D,IAEN/sB,EAAOp3O,KAAI,SAAUT,GACtB,OAAOA,CACR,IACF,GACF,EAED6/J,EAAOh/D,OAAS,WACd,IAAIob,EAAexuH,KAAKwP,MACpB2nQ,EAAS3oJ,EAAa2oJ,OACtBn+P,EAAYw1G,EAAax1G,UACzBoH,EAAQouG,EAAapuG,MACzB,OAAoBwiG,EAAAA,cAAoB,MAAO,CAC7CxiG,MAAO6iG,GAAS,CACdY,QAAS,OACTC,cAAe,MACfszJ,eAAgB,SAChBC,aAAc,UACdC,UAAW,aACX98P,MAAO,OACPwiM,IAAKm6D,GACJ/2P,GACHpH,UAAWA,GACVhZ,KAAKk3Q,gBACT,EAEMH,CACR,CAlE0B,CAkEzBn0J,EAAAA,WAEFm0J,GAAQtkK,UAMJ,CAAC,EACLskK,GAAQ3kK,aAAe,CACrB6kK,aAAc,EACdE,OAAQ,IACRn+P,UAAW,KACXoH,MAAO,CAAC,GAEV,UCvFIy3G,GAA8C,qBAAXlsH,OAAyBmsH,EAAAA,gBAAkBC,EAAAA,UAa9Ew/I,GAAiB,WACnB,IAAIC,EAZc,WAClB,IAAI5nG,GAAYnmB,EAAAA,EAAAA,WAAS,GACrB+tH,EAAa5nG,EAAU,GACvB6nG,EAAgB7nG,EAAU,GAK9B,OAHA/3C,IAA0B,WACxB4/I,GAAc,EACf,GAAE,IACID,CACR,CAGkBE,GAEbpvG,GAAa7e,EAAAA,EAAAA,UAAS,GACtBjvI,EAAQ8tJ,EAAW,GACnBlzH,EAAWkzH,EAAW,GAEtBqvG,GAAezuH,EAAAA,EAAAA,cAAY,WACxBsuH,GACLpiO,EAASzpC,OAAO+9C,WACjB,GAAE,CAAC8tN,IAUJ,OATA3/I,IAA0B,WACxB,GAAI2/I,EAGF,OAFA7rQ,OAAO9N,iBAAiB,SAAU85Q,GAClCA,IACO,WACL,OAAOhsQ,OAAOtR,oBAAoB,SAAUs9Q,EAC7C,CAEJ,GAAE,CAACH,EAAYG,IACTn9P,CACR,EAEGo9P,GAAoB,SAA2B/lQ,GACjD,IAAIgmQ,EAAwBhmQ,EAAKimQ,wBAC7BA,OAAoD,IAA1BD,EAAmC,CAC/D,IAAK,EACL,IAAK,EACL,IAAK,GACHA,EACAt+P,EAAW1H,EAAK0H,SAChBw+P,EAAiBlmQ,EAAKmH,UACtBA,OAA+B,IAAnB++P,EAA4B,KAAOA,EAC/CC,EAAanmQ,EAAKuO,MAClBA,OAAuB,IAAf43P,EAAwB,KAAOA,EACvCC,EAAcV,KACdN,GAAe3tH,EAAAA,EAAAA,UAAQ,WACzB,IAAI4uH,EAAcn0Q,OAAOsC,KAAKyxQ,GAAyBvzP,MAAK,SAAUrV,EAAGC,GACvE,OAAOD,EAAIC,CACZ,IACG0pB,EAAQq/O,EAAY7jR,OAAS,EAAIyjR,EAAwBI,EAAY,IAtDjD,EA4DxB,OALAA,EAAY36Q,SAAQ,SAAU46Q,GACxBA,EAAaF,IACfp/O,EAAQi/O,EAAwBK,GAEnC,IACMt/O,CACR,GAAE,CAACo/O,EAAaH,IACjB,OAAoBl1J,EAAAA,cAAoB,MAAO,CAC7C5pG,UAAWA,EACXoH,MAAOA,GACNwiG,EAAAA,SAAAA,IAAmBrpG,GAAU,SAAUD,EAAOxY,GAC/C,OAAO8hH,EAAAA,aAAmBtpG,EAAO,CAC/B9b,IAAKsD,EACLm2Q,aAAcA,GAEjB,IACF,EAEDW,GAAkBnlK,UAKd,CAAC,EACL,UC/EA,MCqCa2lK,GAAb,8BACI,WAAY5oQ,GAAa,IAAD,oBACpB,cAAMA,IACD6H,MAAQ,CAAEyvJ,SAAS,EAAMuxG,kBAAkB,EAAOC,qBAAqB,EAAOC,aAAc,GAAIC,wBAAwB,EAAOC,uBAAuB,EAAOnZ,UAAW,GAAIvpO,MAAO,GAAI2iP,eAAe,EAAMC,eAAe,EAAMC,eAAe,GAErP,EAAKC,kCAAoC,EAAKA,kCAAkCr6Q,KAAvC,MACzC,EAAKs6Q,kCAAoC,EAAKA,kCAAkCt6Q,KAAvC,MACzC,EAAKu6Q,+BAAiC,EAAKA,+BAA+Bv6Q,KAApC,MACtC,EAAKw6Q,eAAiB,EAAKA,eAAex6Q,KAApB,MAEtB,EAAKwxQ,eAAiB,EAAKA,eAAexxQ,KAApB,MATF,CAUvB,CAXL,2CAaI,WACIwB,KAAK0zQ,cACR,GAfL,sCAiBI,SAAyB9uQ,GACrB,IAAK,IAAIvE,EAAI,EAAGA,EAAIL,KAAKqX,MAAMkhQ,aAAalkR,OAAQgM,IAAK,CACrD,IACIq1G,EADM11G,KAAKqX,MAAMkhQ,aAAal4Q,GACd44Q,kBAAkB/iP,MAAK,SAACj1B,GACxC,OAAOA,EAAEuyQ,sBAAwB5uQ,CACpC,IACD,GAAiB,MAAb8wG,EACA,OAAOA,CAEd,CACD,OAAO,IACV,GA5BL,+CA8BI,SAAkCv6G,EAAayJ,GAC3C,IAAI8wG,EAAY11G,KAAKk5Q,yBAAyBt0Q,GAC7B,MAAb8wG,IACAA,EAAUyuJ,gBAAiB,EAC3BzuJ,EAAUv6G,IAAMA,GAEpB6E,KAAK6tE,SAAS,CAAE0qM,aAAcv4Q,KAAKqX,MAAMkhQ,cAC5C,GArCL,4CAuCI,SAA+B3zQ,GAAmB,IAIvB,EAJsB,OACvC9F,EAAUkB,KAAKisK,aAEjBv2D,EAAY11G,KAAKk5Q,yBAAyBt0Q,GAC7B,MAAb8wG,GACA/2G,KAAAA,KAAW,+CAAgD,KAAM,CAAE3C,OAAQ,CAAEw3Q,oBAAqB5uQ,EAAIzJ,IAAKu6G,EAAUv6G,IAAKm5P,WAAU,UAAEx1P,EAAQo/M,gBAAV,aAAE,EAAkBo2C,cACnJn0P,MAAK,SAAA5E,GACF,IAAK,IAAI8E,EAAI,EAAGA,EAAI,EAAKgX,MAAMkhQ,aAAalkR,OAAQgM,IAAK,CACrD,IACIq1G,EADM,EAAKr+F,MAAMkhQ,aAAal4Q,GACd44Q,kBAAkB/iP,MAAK,SAACj1B,GACxC,OAAOA,EAAEuyQ,sBAAwB5uQ,CACpC,IACgB,MAAb8wG,IACAA,EAAU9T,UAAW,EAE5B,CACD,EAAK/zB,SAAS,CAAE0qM,aAAc,EAAKlhQ,MAAMkhQ,cAC5C,GAEZ,GA1DL,+CA4DI,SAAkC3zQ,GAC9B,IAAI8wG,EAAY11G,KAAKk5Q,yBAAyBt0Q,GAC7B,MAAb8wG,IACAA,EAAUyuJ,gBAAiB,GAE/BnkQ,KAAK6tE,SAAS,CAAE0qM,aAAcv4Q,KAAKqX,MAAMkhQ,cAC5C,GAlEL,4BAoEI,WAAwB,IAAD,SACbz5Q,EAAUkB,KAAKlB,QACrBH,KAAAA,KAAW,2BAA4B,KAAM,CAAE3C,OAAQ,CAAEs4P,WAAU,UAAEx1P,EAAQm/M,eAAV,aAAE,EAAiBq2C,cACjFn0P,MAAK,SAAA5E,GACF,EAAKsyE,SAAS,CAAE2qM,wBAAwB,GAC3C,GACR,GA1EL,4BA4EI,SAAetrN,GACX,OAAIA,EAAIzxD,SAAWwwQ,GAAUkN,WAAcjsN,EAAIzxD,SAAWwwQ,GAAUmN,gBAAgD,IAA9BlsN,EAAImsN,eAAehlR,OAC9F,WACP64D,EAAIzxD,SAAWwwQ,GAAU7L,SAClB,iBACPlzM,EAAIzxD,SAAWwwQ,GAAUqN,UAEzBpsN,EAAIzxD,SAAWwwQ,GAAUmN,gBAAkBlsN,EAAImsN,eAAehlR,OAAS,GACnE64D,EAAImsN,eAAe1pQ,QAAO,SAAAs5B,GAAC,OAAKA,EAAE24D,QAAP,IAAiBvtG,OAAS,GAGzD64D,EAAIzxD,SAAWwwQ,GAAUsN,QALlB,YAQA,kBACd,GA3FL,kCA6FI,SAA6B30Q,GACzB,IAAK,IAAIvE,EAAI,EAAGA,EAAIL,KAAKqX,MAAMkhQ,aAAalkR,OAAQgM,IAAK,CACrD,IACIm5Q,EADMx5Q,KAAKqX,MAAMkhQ,aAAal4Q,GACVg5Q,eAAenjP,MAAK,SAACj1B,GACzC,OAAOA,EAAEw4Q,kBAAoB70Q,CAChC,IACD,GAAqB,MAAjB40Q,EACA,OAAOA,CAEd,CACD,OAAO,IACV,GAxGL,8BA0GI,SAAiBr+Q,EAAas+Q,GAC1B,IAAID,EAAgBx5Q,KAAK05Q,qBAAqBD,GACzB,MAAjBD,IACAA,EAAcrV,gBAAiB,EAC/BqV,EAAcr+Q,IAAMA,GAExB6E,KAAK6tE,SAAS,CAAE0qM,aAAcv4Q,KAAKqX,MAAMkhQ,cAC5C,GAjHL,2BAmHI,SAAc3zQ,GAAmB,IAGN,EAHK,OACtB9F,EAAUkB,KAAKisK,aACjBv2D,EAAY11G,KAAK05Q,qBAAqB90Q,GACzB,MAAb8wG,GACA/2G,KAAAA,KAAW,yCAA0C,KAAM,CAAE3C,OAAQ,CAAEy9Q,gBAAiB70Q,EAAIzJ,IAAKu6G,EAAUv6G,IAAKm5P,WAAU,UAAEx1P,EAAQo/M,gBAAV,aAAE,EAAkBo2C,cACzIn0P,MAAK,SAAA5E,GACF,IAAK,IAAI8E,EAAI,EAAGA,EAAI,EAAKgX,MAAMkhQ,aAAalkR,OAAQgM,IAAK,CACrD,IACIm5Q,EADM,EAAKniQ,MAAMkhQ,aAAal4Q,GACVg5Q,eAAenjP,MAAK,SAACj1B,GACzC,OAAOA,EAAEw4Q,kBAAoB70Q,CAChC,IACoB,MAAjB40Q,IACAA,EAAc53K,UAAW,EAEhC,CACD,EAAK/zB,SAAS,CAAE0qM,aAAc,EAAKlhQ,MAAMkhQ,cAC5C,GAEZ,GArIL,8BAuII,SAAiB3zQ,GACb,IAAI40Q,EAAgBx5Q,KAAK05Q,qBAAqB90Q,GACzB,MAAjB40Q,IACAA,EAAcrV,gBAAiB,GAEnCnkQ,KAAK6tE,SAAS,CAAE0qM,aAAcv4Q,KAAKqX,MAAMkhQ,cAC5C,GA7IL,4BA+II,SAAenU,EAA4B3oQ,EAAoCg+Q,GAC3Ez5Q,KAAK8kQ,cAAc2U,GAEnB,IAAIhJ,EAAOzwQ,KAAKqX,MAAMioP,UAClB/hG,EAA+CkzG,EAAKv6O,MAAK,SAAA71B,GAAC,OAAIA,EAAE+jQ,qBAAuBA,CAA7B,IAC1D7mG,GACAA,EAAIiiG,aAAe/jQ,EACnBuE,KAAK6tE,SAAS,CAAEyxL,UAAWmR,EAAM8H,aAAcv4Q,KAAKqX,MAAMkhQ,gBAE1Dv4Q,KAAK6tE,SAAS,CAAE0qM,aAAcv4Q,KAAKqX,MAAMkhQ,cAEhD,GA1JL,+BA6JI,SAAkBhmQ,GAAkC,IAAD,SAC3CzT,EAAUkB,KAAKisK,aACnBttK,KAAAA,KAAW,+BAAgC,KAAM,CAAE3C,OAAQ,CAAEs4P,WAAU,UAAEx1P,EAAQm/M,eAAV,aAAE,EAAiBq2C,WAAYqlB,OAAQpnQ,EAAKqnQ,aAAc7tC,cAAex5N,EAAKokQ,oBAChJx2Q,MAAK,SAAA5E,GACFuD,EAAQo/M,SAAU27D,aAAetnQ,EAAKqnQ,aACtC96Q,EAAQo/M,SAAU47D,qBAAuBvnQ,EAAKonQ,OAC9CpnQ,EAAKwnQ,aAAe7N,GAAa8N,WACjC,EAAKnsM,SAAS,CAAEgsM,aAActnQ,EAAKqnQ,aAAcnB,uBAAuB,GAC3E,GACR,GAtKL,4BAwKI,SAAelmQ,GACDvS,KAAKisK,aACf,OACI,4BACI,cAAGjzJ,UAAU,YAAb,SAA0BzG,EAAK6/E,UAC/B,cAAGp5E,UAAU,iCAAb,UAA8C,2CAC9C,cAAGA,UAAU,8CACb,cAAGA,UAAU,iCAAb,UAA8C,wDAC7CzG,EAAK0nQ,iBACN,eAAGjhQ,UAAU,QAAb,yBAAkCzG,EAAK0nQ,kBAGtC1nQ,EAAK2nQ,kBACF,SAACrD,GAAD,CAAmBtkQ,KAAMA,EAAM4jQ,YAAY,aAE9C5jQ,EAAK4nQ,uBACF,SAAC3D,GAAD,CAAyBjkQ,KAAMA,EAAM4jQ,YAAY,aAEzB,OAA3B5jQ,EAAK0mQ,mBAA8B1mQ,EAAK0mQ,kBAAkB5kR,OAAS,IAChE,4BACI,mBACA,SAAC,GAAD,WACI,UAAC,QAAD,CAAgBk7K,SAAS,IAAzB,WACI,SAAC,UAAD,CAAkBv2J,UAAU,QAA5B,UACI,gBAAKA,UAAU,cAAcoH,MAAO,CAAE5F,MAAO,QAA7C,UAAuD,8BAASjI,EAAK0mQ,kBAAkB5kR,OAAhC,wBAA6Dke,EAAK0mQ,kBAAkB5kR,OAAS,EAAI,IAAM,WAElK,SAAC,QAAD,CAAgB2kB,UAAU,qBAA1B,SACgC,OAA3BzG,EAAK0mQ,mBAA8B1mQ,EAAK0mQ,kBAAkBjmQ,KAAI,SAACm4H,EAAkCr0F,GAAnC,OAE3D,eAAmD99B,UAAU,wBAAwB,aAAYzG,EAAKonQ,OAAS,MAAQxuI,EAAG/pI,KAA1H,SAAiI+pI,EAAG/pI,MAA3H,gBAAkB+pI,EAAGqoI,oBAF6B,eAUnF,mBAAQx6P,UAAU,+BAA+BkoF,QAAS,kBAAMv1F,OAAOg0M,SAAS,iBAAtB,EAA1D,mCAGX,GAhNL,kCAkNI,SAAqBptM,GAAkC,IAAD,OAC9CzT,EAAUkB,KAAKisK,aACnB,OACI,iCACI,cAAGjzJ,UAAU,YAAb,SAA0BzG,EAAK6/E,UAC/B,eAAGp5E,UAAU,YAAb,2BAAsC,0BAAOzG,EAAK6nQ,oBACjD7nQ,EAAK4nQ,uBACF,iCACA,SAAC3D,GAAD,CAAyBjkQ,KAAMA,EAAM4jQ,YAAY,cACjD,qBAGH5jQ,EAAK8mQ,eAAe1pQ,QAAO,SAAAs5B,GAAC,OAAKA,EAAE24D,QAAP,IAAiBvtG,OAAS,IACnD,iCACI,cAAG2kB,UAAU,0EACb,cAAGA,UAAU,qCAAb,uCACA,cAAGA,UAAU,QAAb,4CACA,qBAGiD,IAAxDzG,EAAK8mQ,eAAe1pQ,QAAO,SAAAs5B,GAAC,OAAKA,EAAE24D,QAAP,IAAiBvtG,SAC1C,iCACA,cAAG2kB,UAAU,gCAAb,uCACA,cAAGA,UAAU,QAAb,4CACA,qBAGqB,OAAxBzG,EAAK8mQ,gBAA2B9mQ,EAAK8mQ,eAAermQ,KAAI,SAACm4H,EAA8Br0F,GAA/B,eACrD,gBAAoD12B,MAAO,CAAEO,UAAW,QAAxE,UACI,SAAC6sP,GAAD,CAEI/xQ,OAAQ0vI,EAAGvpC,SAAWi8G,GAA2BixD,SAAWjxD,GAA2BgxD,OACvFxxP,SAAU,MACVjc,KAAM+pI,EAAG/+F,MACT+zN,WAAY,GACZsG,SAAUt7H,EAAG3nI,YACbuyB,MAAO,EAAK1e,MAAM0e,MAAMpmB,QAAO,SAAAs5B,GAAC,OAAIA,EAAEm7N,qBAAuBj5H,EAAGi5H,kBAAhC,IAChC3lD,UAAS,UAAE3/M,EAAQm/M,eAAV,aAAE,EAAiBQ,UAC5B2lD,mBAAoBj5H,EAAGi5H,mBACvB/N,OAAQ,SAAC+N,EAA4B3oQ,GAAyC,EAAKu0Q,eAAe5L,EAAoB3oQ,EAAQ0vI,EAAGsuI,gBAAmB,EACpJnlB,WAAU,UAAEx1P,EAAQm/M,eAAV,aAAE,EAAiBq2C,WAC7BmZ,aAAc9vD,GAAmBioC,SACjC+pB,eAAe,EACftL,iBAAkB,SAAClpQ,GAAe,EAAKkpQ,iBAAiBlpQ,EAAKgwI,EAAGsuI,gBAAmB,EACnFpZ,SAAU,IAdL,QAAUl1H,EAAGi5H,qBAFhB,iBAAmBj5H,EAAGi5H,mBADqB,MAsBpE,GAnQL,6BAqQI,SAAgB7xP,GAEZ,OACI,iCACI,cAAGyG,UAAU,YAAb,SAA0BzG,EAAK6/E,UAC/B,eAAGp5E,UAAU,YAAb,2BAAsC,0BAAOzG,EAAK6nQ,oBACjD7nQ,EAAK4nQ,uBACF,iCACA,SAAC3D,GAAD,CAAyBjkQ,KAAMA,EAAM4jQ,YAAY,cACjD,sBAGJ,cAAGn9P,UAAU,wCACb,cAAGA,UAAU,aAAb,iCAIX,GAtRL,uBAwRI,SAAUzG,GACN,OACI,iCACI,iCAAO,0BAAOA,EAAK6/E,aACnB,cAAGp5E,UAAU,aAAb,kCACCzG,EAAK4nQ,uBACF,SAAC3D,GAAD,CAAyBjkQ,KAAMA,EAAM4jQ,YAAY,eAIhE,GAlSL,2BAoSI,SAAc5jQ,GACV,OACI,iCACI,iCAAO,0BAAOA,EAAK6/E,SAAnB,mBAAgD,0BAAO7/E,EAAK6nQ,qBAC5D,cAAGphQ,UAAU,0EACb,cAAGA,UAAU,qCAAb,sBACA,cAAGA,UAAU,qCAAb,UAAkD,wCAAgBzG,EAAK0nQ,sBAGlF,GA7SL,4BA+SI,SAAe1nQ,GACX,OACI,iCACI,iCAAO,0BAAOA,EAAK6/E,SAAnB,mBAAgD,0BAAO7/E,EAAK6nQ,qBAC5D,cAAGphQ,UAAU,0EACb,cAAGA,UAAU,qCAAb,uBACA,cAAGA,UAAU,qCAAb,UAAkD,yCAAiBzG,EAAK8nQ,oBAGnF,GAxTL,0BA0TI,WACI,IAAIv7Q,EAAUkB,KAAKisK,aAEnB,OAAyB,OAArBntK,EAAQo/M,SACD,IAEPp/M,EAAQo/M,SAASjgN,KAAS69M,GAAa+4C,oBAOvC,SAAC,GAAD,CAAKz0O,MAAO,CAAEO,UAAW,OAAQjG,OAAQ,OAAQD,OAAQ,GAAzD,UACI,SAAC,GAAD,CAAKzB,UAAU,SAAf,UACI,SAAC,GAAD,WACI,kBAAMA,UAAU,eAAhB,UAAgCla,EAAQo/M,SAAS+B,iBAAiBC,UAAlE,SAAiF,yDAAjF,0EAKnB,GA/UL,iCAiVI,WAA+B,IAAD,SACtBphN,EAAUkB,KAAKisK,aACnBttK,KAAAA,KAAW,+BAAgC,KAAM,CAAE3C,OAAQ,CAAEs4P,WAAU,UAAEx1P,EAAQm/M,eAAV,aAAE,EAAiBq2C,cACrFn0P,MAAK,SAAA5E,GACEuD,EAAQo/M,WACR,EAAKrwI,SAAS,CAAEi5F,SAAS,IACzBhoK,EAAQs/M,iBACR,EAAKvwI,SAAS,CAAEi5F,SAAS,IAEhC,GACR,GA3VL,uBA6VI,WAA2B,IAAD,SAChBhoK,EAAUkB,KAAKisK,aACjB9wK,EAAG,4CAA8B2D,EAAQo/M,gBAAtC,aAA8B,EAAkBo2C,YACvD31P,KAAAA,IAAUxD,GACLgF,MAAK,SAAC5E,GACH,IAAIw6B,EAAQx6B,EAAS1B,KACrB,EAAKg0E,SAAS,CAAEi5F,SAAS,EAAO/wI,MAAOA,GAC1C,IACAvgB,OAAM,SAACtS,GACJ,EAAK2qE,SAAS,CAAEi5F,SAAS,GAC5B,GACR,GAxWL,yDA0WI,+FAE4B,QADlBhoK,EAAUkB,KAAKlB,SACTm/M,QAFhB,iDAKIt/M,KAAAA,IAAU,8DAAgEG,EAAQm/M,QAAQq2C,YACrFn0P,MAAK,SAAC5E,GACH,IAAI++Q,EAAoC/+Q,EAAS1B,KACjDygR,EAAK/8Q,SAAQ,SAAAiL,GACTA,EAAE6wQ,eAAiB7wQ,EAAE6wQ,eAAe1pQ,QAAO,SAAA1O,GAAC,OAAKA,EAAEs5Q,SAAP,GAC/C,IACD,EAAK1sM,SAAS,CAAE0qM,aAAc+B,EAAK3qQ,QAAO,SAAAT,GAAC,OAAIA,EAAE6qQ,eAAiB7N,GAAasO,SAApC,IAA+Cj2P,MAAK,SAACrV,EAAGC,GAAJ,OAAUD,EAAEm2H,MAAQl2H,EAAEk2H,MAAQ,GAAK,CAAnC,MAC/F,EAAK6tI,WACR,IAbT,gDA1WJ,0EAyXI,WAAU,IAAD,SACDp0Q,EAAUkB,KAAKisK,aAEnB,GAAIjsK,KAAKqX,MAAMyvJ,SAAgC,OAArBhoK,EAAQo/M,SAC9B,OAAQ,+BAAE,wBAAG,2CAEjB,GAAIl+M,KAAKqX,MAAMmhQ,uBACX,OAAO,SAAClnE,GAAD,CAAU3nK,GAAG,cAGxB,GAAI3pC,KAAKqX,MAAMohQ,sBACX,OAAO,SAACnnE,GAAD,CAAU3nK,GAAG,gBAGxB,IAAI2uB,EAAQt4D,KAAKm4P,oBACbsiB,EAAY,KACZC,GAAiB,EACjBC,GAAoB,EACpBvuO,EAAQ,6BACR5oC,EAAW,aAAS80D,EAAT,oEAAqEt4D,KAAKqX,MAAMkhQ,aAAalkR,OAAS,EAAI,UAAY,SAAtH,KACX0sN,GAAW,2HAGX65D,EAAwB56Q,KAAKqX,MAAMkhQ,aAAa5oQ,QAAO,SAAAu9C,GAAG,OAAIA,EAAIjvD,OAASkuQ,GAAQ0O,eAAzB,IAC1DC,EAAyB96Q,KAAKqX,MAAMkhQ,aAAa5oQ,QAAO,SAAAu9C,GAAG,OAC3DA,EAAIjvD,OAASkuQ,GAAQ0O,iBACrB3tN,EAAI6sN,eAAiB7N,GAAaqN,SAClCrsN,EAAI6sN,eAAiB7N,GAAa6O,KAClC7tN,EAAI6sN,eAAiB7N,GAAa8O,kBAClC9tN,EAAI6sN,eAAiB7N,GAAasO,SALyB,IAO1DM,GAA4D,IAAlCA,EAAuBzmR,QAAiBumR,GAA0D,IAAjCA,EAAsBvmR,SAClHumR,EAAwB56Q,KAAKqX,MAAMkhQ,cAGvCqC,EAAwBA,EAAsBjrQ,QAAO,SAAAT,GAAC,OAAIA,EAAE6qQ,eAAiB7N,GAAa8O,gBAApC,IAGtD,IADA,IAAIC,EAAc,IACT56Q,EAAI,EAAGA,EAAIu6Q,EAAsBvmR,OAAQgM,IAAK,CACnD,IAAI6sD,EAAM0tN,EAAsBv6Q,GACjB,MAAX6sD,EAAIguN,KAAehuN,EAAIguN,IAAMD,IAC7BA,EAAc/tN,EAAIguN,KAElBhuN,EAAIzxD,SAAWwwQ,GAAU7L,SACzBqa,EAAYxO,GAAU7L,SACflzM,EAAIzxD,SAAWwwQ,GAAUmN,gBAChCuB,GAAoB,EAChBF,IAAcxO,GAAU7L,WACxBqa,EAAYxO,GAAUmN,iBAEnBlsN,EAAIzxD,SAAWwwQ,GAAUkN,YAChCuB,GAAiB,EACC,OAAdD,IACAA,EAAYxO,GAAUkN,WAGjC,CAEGsB,IAAcxO,GAAUmN,iBACpBp5Q,KAAKqX,MAAMkhQ,aAAalkR,OAAS,GACjCmP,EAAW,aAAS80D,EAAT,qFACXyoJ,GAAW,qGAEXv9M,EAAW,aAAS80D,EAAT,uFACXyoJ,GAAW,0BAGf05D,IAAcxO,GAAU7L,WACxBh0N,EAAQ,8BACR5oC,EAAW,0BAAsB80D,EAAtB,+CAEPyoJ,EADA45D,GACW,qHACJD,GACI,oGAEA,yBAGD,OAAdD,IACAruO,EAAQ,wBACR5oC,EAAW,aAAS80D,EAAT,qEAAsEt4D,KAAKqX,MAAMkhQ,aAAalkR,OAAS,EAAI,UAAY,SAAvH,KACX0sN,GAAW,yBAIf,IAAIz3L,EAAcsxP,EAAsB5nQ,KAAI,SAACT,GAAD,OAEpC,iBAAiCyG,UAAW,4BAA8B,EAAKmiQ,eAAe5oQ,GAA9F,UACKA,EAAK6oQ,YACA,gBAAKpiQ,UAAU,OAAOoH,MAAO,CAAC5F,MAAO,QAASwS,IAAKza,EAAK6oQ,cACxD,wBAAK7oQ,EAAKonQ,SAEfpnQ,EAAK9W,SAAWwwQ,GAAU8O,KACvB,EAAKM,UAAU9oQ,GAElBA,EAAK9W,SAAWwwQ,GAAUsN,SACvB,EAAK+B,cAAc/oQ,GAEtBA,EAAK9W,SAAWwwQ,GAAUqN,UACvB,EAAKiC,eAAehpQ,IAEtBA,EAAK9W,SAAWwwQ,GAAUkN,WAAc5mQ,EAAK9W,SAAWwwQ,GAAUmN,gBAAiD,IAA/B7mQ,EAAK8mQ,eAAehlR,SACtG,EAAKmnR,gBAAgBjpQ,GAExBA,EAAK9W,SAAWwwQ,GAAU7L,UACvB,EAAKqb,eAAelpQ,GAEvBA,EAAK9W,SAAWwwQ,GAAUmN,gBAAkB7mQ,EAAK8mQ,eAAehlR,OAAS,GACtE,EAAKqnR,qBAAqBnpQ,KArBxBA,EAAKokQ,iBAFqB,IAqC5C,OARK73Q,EAAQo/M,SAAUy9D,WACnBryP,EAAMzoB,MAAK,SAAC+zP,GAAD,KAGV91P,EAAQo/M,SAAS63C,mBAClBzsO,EAAMzoB,MAAK,SAACq1P,GAAD,MAIX,iCACI,SAACz1C,GAAD,CAAYznM,UAAU,gBAAgBozB,MAAOA,EAAO5oC,YAAaA,EAAau9M,SAAUA,EAAxF,UACI,UAAC,GAAD,YACEjiN,EAAQo/M,SAAU+4C,aAAc,UAAAn4P,EAAQo/M,gBAAR,eAAkBjgN,QAAS69M,GAAa+4C,qBACtE,iCACA,UAAC,GAAD,CAAK77O,UAAU,OAAf,WACI,SAAC,GAAD,KACA,SAAC,GAAD,WACI,mBAAQA,UAAU,sBAAsBkoF,QAAS,WAAQ,EAAKrzB,SAAS,CAAEyqM,qBAAqB,GAAS,EAAvG,qCAEJ,SAAC,GAAD,QAEJ,sBAGJ,gBAAKt/P,UAAU,MAAf,SACKsQ,EAAMj1B,OAAS,GAEhB,SAAC,GAAD,CAAK+rB,MAAO,CAACg3P,eAAgB,UAA7B,SACK9tP,EAAMtW,KAAI,SAACT,EAAMukC,GAAP,OAAe,SAAC,GAAD,CAAK2mG,GAAI,EAAT,SAAmClrI,GAAlB,YAAYukC,EAA5C,OAGf,SAAC8kO,GAAD,CAAmB9D,wBAAyB,CAAE,IAAK,EAAG,KAAM,EAAG,KAAM,GAArE,UACI,SAAC,GAAD,UAAUxuP,cAMtB,UAAC,GAAD,CAAOi9N,UAAQ,EAAC7yO,KAAK,KAAKgoK,KAAM17K,KAAKqX,MAAMihQ,oBAAqB/7F,OAAQ,WAAO,EAAK1uG,SAAS,CAACyqM,qBAAqB,GAAQ,EAA3H,WACI,SAAC,UAAD,CAAc/5F,aAAW,KAEzB,UAAC,QAAD,YACI,iBAAKvlK,UAAU,6BAAf,WACI,eAAIA,UAAU,SAAd,mCACA,cAAGA,UAAU,GAAb,2KAEJ,UAAC,GAAD,CAAO0qG,UAAU,aAAcs5F,IAAK,EAAGhkM,UAAU,6BAAjD,WACI,mBAAQA,UAAU,2BAA2BkoF,QAAS,WAAO,EAAKrzB,SAAS,CAACwqM,kBAAkB,IAAQ,EAAKW,gBAAkB,EAA7H,SAAgIh5Q,KAAKqX,MAAMghQ,kBAAmB,SAAC,GAAD,CAAe3kQ,KAAK,KAAKwK,UAAU,SAAS64J,KAAK,WAAc,UAC7N,mBAAQ/9J,UAAU,uBAAuBkoF,QAAS,WAAO,EAAKrzB,SAAS,CAACyqM,qBAAqB,GAAQ,EAArG,uBAGR,SAAC,UAAD,SAKf,KAniBL,GAAoCv4D,ICvC9B/8F,8BAAY,CAAC,KAAM,WAAY,YAAa,OAAQ,cAiB1D,IAAMh8E,GAAO,WAAQ,EAEf60O,GAAiBziG,GAAS,aAC1B0iG,GAAmBl5J,EAAAA,YAAiB,SAAC/wG,EAAM8B,GAC/C,IAgBIgqL,EAAiBF,EAhBrB,EAOI5rL,EALFq9J,GAAI9mD,OAFN,MAEkB,MAFlB,EAGEq5D,EAIE5vK,EAJF4vK,SACAiY,EAGE7nL,EAHF6nL,UACA3iB,EAEEllK,EAFFklK,KACA7gD,EACErkH,EADFqkH,UAEE1mH,EA3BN,SAAuCxO,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAA2DxD,EAAK6C,EAA5DuF,EAAS,CAAC,EAAO0lB,EAAavnB,OAAOsC,KAAKrF,GAAqB,IAAKX,EAAI,EAAGA,EAAIirB,EAAWj3B,OAAQgM,IAAO7C,EAAM8tB,EAAWjrB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,IAAaoI,EAAOpI,GAAOwD,EAAOxD,IAAQ,OAAOoI,CAAS,CA2BrSwlB,CAA8BvZ,EAAMmxG,IAI1CumD,EAAc4Y,KACd45F,GAAkBvyH,EAAAA,EAAAA,SAAO,GACzB4zC,GAAiBj0C,EAAAA,EAAAA,YAAW44B,GAC5Bub,GAAan0C,EAAAA,EAAAA,YAAWo0C,IAG1BD,IACFvmB,EAAOA,GAAQ,UACf2iB,EAAY4D,EAAW5D,UAEvBiE,EAAkBL,EAAWK,gBAC7BF,EAAkBH,EAAWG,iBAG/B,IAAMu+E,GAAWxyH,EAAAA,EAAAA,QAAO,MAElByyH,EAAmB,SAAAlpR,GACvB,IAAMmpR,EAAkBF,EAAS5sP,QACjC,IAAK8sP,EAAiB,OAAO,KAC7B,IAAM5yP,EAAQ21J,GAAIi9F,EAAD,WAAsBL,GAAtB,gCACXM,EAAcD,EAAgB5gO,cAAc,wBAClD,IAAK6gO,GAAeA,IAAgBhyQ,SAAS+4C,cAAe,OAAO,KACnE,IAAMpiD,EAAQwoB,EAAMhtB,QAAQ6/Q,GAC5B,IAAe,IAAXr7Q,EAAc,OAAO,KACzB,IAAIs7Q,EAAYt7Q,EAAQ/N,EAGxB,OAFIqpR,GAAa9yP,EAAMj1B,SAAQ+nR,EAAY,GACvCA,EAAY,IAAGA,EAAY9yP,EAAMj1B,OAAS,GACvCi1B,EAAM8yP,EACd,EAEKxhF,EAAe,SAACp9L,EAAKqhB,GACd,MAAPrhB,IACQ,MAAZikL,GAA4BA,EAASjkL,EAAKqhB,GACxB,MAAlBu+K,GAAkCA,EAAe5/L,EAAKqhB,GACvD,GAiCDk5G,EAAAA,EAAAA,YAAU,WACR,GAAIikJ,EAAS5sP,SAAW2sP,EAAgB3sP,QAAS,CAC/C,IAAM+sP,EAAcH,EAAS5sP,QAAQksB,cAAjB,WAAmCugO,GAAnC,0BACL,MAAfM,GAA+BA,EAAY7oJ,OAC5C,CAEDyoJ,EAAgB3sP,SAAU,CAC3B,IACD,IAAMqmJ,EAAYC,GAAc/hK,EAAKqoQ,GACrC,OAAoB3sG,EAAAA,EAAAA,KAAK0S,EAAAA,SAA4B,CACnDpmL,MAAOi/L,EACPrhL,UAAuB81J,EAAAA,EAAAA,KAAK6pB,GAAAA,SAAqB,CAC/Cv9L,MAAO,CACLo7K,KAAAA,EAEA2iB,UAAWpqB,EAAaoqB,GACxBiE,gBAAiBA,GAAmB32J,GACpCy2J,gBAAiBA,GAAmBz2J,IAEtCztB,UAAuB81J,EAAAA,EAAAA,KAAKjnD,EAAWrkH,OAAOQ,OAAO,CAAC,EAAGiL,EAAO,CAC9D0mH,UAnDgB,SAAAr3G,GAGpB,GAFa,MAAbq3G,GAA6BA,EAAUr3G,GAElCy+K,EAAL,CAIA,IAAI++E,ExWvEiBjkQ,EwWyErB,OAAQyG,EAAMrhB,KACZ,IAAK,YACL,IAAK,UACH6+Q,EAAkBJ,GAAkB,GACpC,MAEF,IAAK,aACL,IAAK,YACHI,EAAkBJ,EAAiB,GACnC,MAEF,QACE,OAGJ,GAAKI,EACLx9P,EAAMy0B,iBACNsnJ,EAAayhF,EAAgBtyO,SxW1FR3xB,EwW0FyB,WxWzFzC,GAAP,OAL6B,QAK7B,OAA4BA,MwWyFoC,KAAMyG,GACpEk9P,EAAgB3sP,SAAU,EAC1Bm6I,GAvBC,CAwBF,EAuBK51J,IAAK8hK,EACLsB,KAAMA,QAIb,IACD+kG,GAAIzpK,YAAc,MAClB,OAAetuG,OAAOQ,OAAOu3Q,GAAK,CAChCzwM,KAAMuyH,qGCjHFk+E,GAAmBl5J,EAAAA,YAAiB,SAAC05J,EAAmB3oQ,GAAQ,MAgBhE4oQ,EACA9U,EAhBJ,EAWIz3F,EAAgBssG,EAAmB,CACrC5iF,UAAW,aAZb,IACExqB,GAAAA,OADF,MACO,MADP,EAEYmS,EAFZ,EAEEpS,SACAiP,EAHF,EAGEA,QACA3gD,EAJF,EAIEA,KACAi/I,EALF,EAKEA,QACA1/E,EANF,EAMEA,OACA2/E,EAPF,EAOEA,aACAzjQ,EARF,EAQEA,UACA0gL,EATF,EASEA,UACGlqL,EAVL,QAcMy/J,EAAWT,EAAmB6S,EAAiB,OAGjD0a,GAAW,EACTja,GAAgB34B,EAAAA,EAAAA,YAAW8tB,IAC3BylG,GAAoBvzH,EAAAA,EAAAA,YAAWu+G,IAWrC,OATI5lF,GACFy6F,EAAiBz6F,EAAc7S,SAC/B8sB,EAAqB,MAAVe,GAAwBA,GAC1B4/E,IAEPjV,EACEiV,EADFjV,qBAIgBp4F,EAAAA,EAAAA,KAAKstG,GAAD,GACtBztG,GAAIA,EACJv7J,IAAKA,EACL+lL,UAAWA,EACX1gL,UAAW7I,IAAW6I,GAAD,SAClBi2J,GAAY8sB,GADM,cAEfwgF,EAFe,QAEQxgF,GAFR,cAGfwgF,EAHe,eAGexgF,GAAY0gF,GAH3B,cAIfhV,EAJe,YAIOvpF,KAAcupF,GAJrB,cAKfx4F,EALe,YAKHiP,KAAcA,GALX,cAMfjP,EANe,SAMG1xC,GANH,cAOf0xC,EAPe,cAOQutG,GAPR,KASlBhtQ,GAEN,IACDssQ,GAAIzpK,YAAc,MAClBypK,GAAI1pK,aApDiB,CACnBoqK,SAAS,EACTj/I,MAAM,GAmDR,OAAex5H,OAAOQ,OAAOu3Q,GAAK,CAChCzwM,KAAMuyH,EACNyZ,KAAMxZ,KCxBR,ICnCY++E,GDoCZ,GAAe,sBAA0B,qEE1C5BC,GAAb,8BACI,aAAe,IAAD,oBACV,gBACKjjB,iBAAiB,gBAAiB,2BAA4B,EAAG,KACtE,EAAKA,iBAAiB,gBAAiB,2BAA4B,EAAG,KACtE,EAAKA,iBAAiB,yBAA0B,2BAA4B,IAAO,KACnF,EAAKA,iBAAiB,cAAe,gBAAiB,EAAG,KACzD,EAAKJ,iBAAiB,mBAAoB,sBACtC,CAAC,CAAElxN,KAAM,UAAW3sC,MAAO,SAC3B,CAAE2sC,KAAM,OAAQ3sC,MAAO,WACvB,CAAE2sC,KAAM,QAAS3sC,MAAO,aAC5B,EAAKi+P,iBAAiB,uBAAwB,yBAA0B,EAAG,KAC3E,EAAKA,iBAAiB,wBAAyB,0BAA2B,EAAG,KAC7E,EAAKA,iBAAiB,aAAc,oBAAqB,EAAG,KAC5D,EAAKA,iBAAiB,qBAAsB,eAAgB,EAAG,KAC/D,EAAKF,eAAe,eAAgB,yBAA0B,EAAG,KACjE,EAAKF,iBAAiB,wBAAyB,YAC3C,CAAC,CAAElxN,KAAM,WAAY3sC,MAAO,SAC5B,CAAE2sC,KAAM,eAAgB3sC,MAAO,WAC/B,CAAE2sC,KAAM,eAAgB3sC,MAAO,WAC/B,CAAE2sC,KAAM,eAAgB3sC,MAAO,WAC/B,CAAE2sC,KAAM,eAAgB3sC,MAAO,WAC/B,CAAE2sC,KAAM,eAAgB3sC,MAAO,WAC/B,CAAE2sC,KAAM,eAAgB3sC,MAAO,WAC/B,CAAE2sC,KAAM,gBAAiB3sC,MAAO,WAChC,CAAE2sC,KAAM,gBAAiB3sC,MAAO,WAChC,CAAE2sC,KAAM,gBAAiB3sC,MAAO,aACpC,EAAKmhR,aAAa,2BAA4B,uBAAwB,IAAI3pR,MA1BhE,CA2Bb,CA5BL,aAA4C6/P,KDM5C,SAAY4pB,GAAAA,EAAAA,EAAAA,UAAAA,GAAAA,YAAAA,EAAAA,EAAAA,SAAAA,GAAAA,WAAAA,EAAAA,EAAAA,KAAAA,GAAAA,OAAAA,EAAAA,EAAAA,QAAAA,GAAAA,SAAAA,CAAZ,CAAYA,KAAAA,GAAAA,CAAAA,IAcL,IEtBHG,GAAI,GCeGC,GAAQ,CACf,CAAC57Q,KAAK,UAAWzF,MAAM,GACvB,CAACyF,KAAK,UAAWzF,MAAM,GACvB,CAACyF,KAAK,UAAWzF,MAAM,GACvB,CAACyF,KAAK,UAAWzF,MAAM,GACvB,CAACyF,KAAK,UAAWzF,MAAM,GACvB,CAACyF,KAAK,WAAYzF,MAAM,IACxB,CAACyF,KAAK,WAAYzF,MAAM,IACxB,CAACyF,KAAK,WAAYzF,MAAM,IACxB,CAACyF,KAAK,WAAYzF,MAAM,IACxB,CAACyF,KAAK,WAAYzF,MAAM,IACxB,CAACyF,KAAK,WAAYzF,MAAM,IACxB,CAACyF,KAAK,WAAYzF,MAAM,IACxB,CAACyF,KAAK,WAAYzF,MAAM,IACxB,CAACyF,KAAK,WAAYzF,MAAM,IACxB,CAACyF,KAAK,WAAYzF,MAAM,IACxB,CAACyF,KAAK,WAAYzF,MAAM,IACxB,CAACyF,KAAK,WAAYzF,MAAM,IACxB,CAACyF,KAAK,WAAYzF,MAAM,IACxB,CAACyF,KAAK,WAAYzF,MAAM,IACxB,CAACyF,KAAK,WAAYzF,MAAM,IACxB,CAACyF,KAAK,WAAYzF,MAAM,IACxB,CAACyF,KAAK,WAAYzF,MAAM,IACxB,CAACyF,KAAK,WAAYzF,MAAM,IACxB,CAACyF,KAAK,WAAYzF,MAAM,IACxB,CAACyF,KAAK,WAAYzF,MAAM,IACxB,CAACyF,KAAK,WAAYzF,MAAM,IACxB,CAACyF,KAAK,WAAYzF,MAAM,IACxB,CAACyF,KAAK,WAAYzF,MAAM,IACxB,CAACyF,KAAK,WAAYzF,MAAM,IACxB,CAACyF,KAAK,WAAYzF,MAAM,IACxB,CAACyF,KAAK,WAAYzF,MAAM,KAGjBshR,GAAa,CAGpB,CAAE77Q,KAAM,IAAKzF,MAAO,WAGpB,CAAEyF,KAAM,IAAKzF,MAAO,WACpB,CAAEyF,KAAM,IAAKzF,MAAO,WACpB,CAAEyF,KAAM,IAAKzF,MAAO,WACpB,CAAEyF,KAAM,IAAKzF,MAAO,WACpB,CAAEyF,KAAM,IAAKzF,MAAO,WACpB,CAAEyF,KAAM,IAAKzF,MAAO,WACpB,CAAEyF,KAAM,SAAUzF,MAAO,WACzB,CAAEyF,KAAM,aAAczF,MAAO,YC3DpBuhR,GAAb,8BACI,aAAe,IAAD,oBACV,gBACKtjB,iBAAiB,YAAa,yBAA0B,EAAG,KAChE,EAAKA,iBAAiB,kBAAmB,+BAAgC,EAAG,KAC5E,EAAK9F,aAAa,eAAgB,2BAClC,EAAK0F,iBAAiB,YAAa,oBAAqByjB,IACxD,EAAKtjB,gBAAgB,eAAgB,yBAN3B,CAOb,CARL,aAAgD3G,ICenCmqB,GAAb,8BAIE,WAAY3tQ,GAAgB,IAAD,oBACzB,cAAMA,IAED6H,MAAQ,CAAE1b,MAAO6T,EAAM7T,OAHH,CAI1B,CARH,4CASE,SACE4/H,EACA9T,EACA21J,GAEIp9Q,KAAKqX,MAAM1b,OAASqE,KAAKwP,MAAM7T,OACjCqE,KAAK6tE,SAAS,CAAElyE,MAAOqE,KAAKwP,MAAM7T,OAErC,GAjBH,8BAkBE,SAAiB0N,GACf,IAAI1N,EAAQ2qB,WAAWjd,GACvB,OAAIzV,MAAM+H,IAAoB,IAAVA,EAAoB,GACjCA,EAAM2yB,eAAe,QAAS,CAAEynG,aAAa,IAAU,GAC/D,GAtBH,6BAuBE,SAAgB1sH,GACd,IAAIpB,EAAWjI,KAAK2zP,WAAWtqP,EAAG,IAAK,IACnC1N,EAAQ2qB,WAAWre,EAASiB,QAAQ,IAAK,KAC7C,OAAItV,MAAM+H,IAAoB,IAAVA,EAAoB,GACjCA,EAAMqL,UACd,GA5BH,wBA6BE,SAAWqC,EAAW6sB,EAAcmnP,GAClC,OAAIh0Q,EAAEmH,SAAS0lB,GACNl2B,KAAK2zP,WAAWtqP,EAAEH,QAAQgtB,EAAMmnP,GAAcnnP,EAAMmnP,GAEtDh0Q,CACR,GAlCH,+BAmCE,SAAkBA,GAChB,IAAI1N,EAAQ2qB,WAAWjd,GACvB,OAAIzV,MAAM+H,IAAoB,IAAVA,EAAoB,GACjC,UAAOA,EAAM2yB,eAAe,QAAS,CAAEynG,aAAa,GAC5D,GAvCH,8BAwCE,SAAiB1sH,GACf,IAAIpB,EAAWjI,KAAK2zP,WAAWtqP,EAAG,IAAK,IACnC1N,EAAQ2qB,WAAWre,EAASiB,QAAQ,UAAM,KAC9C,OAAItV,MAAM+H,IAAoB,IAAVA,EAAoB,GACjCA,EAAMqL,UACd,GA7CH,qBA+CE,WAAsC,IAAD,EACnC,iBAAOhH,KAAKwP,MAAMvR,YAAlB,QAA0B,UAC3B,GAjDH,sBAmDE,SAASoL,GACP,MAAuB,eAAnBrJ,KAAK8nB,UACA9nB,KAAKs9Q,iBAAiBj0Q,GAExBrJ,KAAK8yP,kBAAkBzpP,EAC/B,GAxDH,qBAyDE,SAAQA,GACN,MAAuB,eAAnBrJ,KAAK8nB,UACA9nB,KAAKu9Q,gBAAgBl0Q,GAEvBrJ,KAAK+yP,iBAAiB1pP,EAC9B,GA9DH,4BAgEE,WACE,MAAuB,eAAnBrJ,KAAK8nB,UACA,KAEF,UACR,GArEH,wBAuEE,WACE,GAAuB,eAAnB9nB,KAAK8nB,UACP,MAAO,GAGV,GA5EH,uBA8EE,WACE,GAAuB,aAAnB9nB,KAAK8nB,UACP,MAAO,QAGV,GAnFH,oBAqFE,WAAU,IAAD,eACP,OACE,iBAAK9O,UAAU,yBAAf,WACE,SAAC,GAAD,WACE,kBAAOA,UAAU,oBAAoBmwO,QAASnpP,KAAKwP,MAAM5K,GAAzD,SACG5E,KAAKwP,MAAMuG,WAGhB,kBACEnR,GAAI5E,KAAKwP,MAAM5K,GAEfoU,UAAW,2BAAmBhZ,KAAKwP,MAAMY,eAA9B,QAAyC,IACpDnS,KAAK,OACLi7H,aAAa,MACbtqH,QAAQ,SACR+Z,aAAc3oB,KAAKw9Q,UAAS,UAACx9Q,KAAKwP,MAAM7T,aAAZ,QAAqB,GAAGqL,YACpDrL,MAAOqE,KAAKw9Q,SAAL,oBAAcx9Q,KAAKqX,MAAM1b,aAAzB,aAAc,EAAkBqL,kBAAhC,QAA8C,IACrDguH,YAAah1H,KAAKy9Q,iBAClB/vJ,SAAU,SAACllH,GACT,IAAIk1Q,EAAc,EAAKC,QAAQn1Q,EAAE5C,OAAOjK,OACxC6M,EAAE5C,OAAOjK,MAAQ,EAAK6hR,SAASE,GAC/B,EAAKluQ,MAAMk+G,SAAS,CAAE9nH,OAAQ,CAAEjK,MAAO+hR,IAExC,EAMDhtJ,OAAQ,SAACloH,GAEH,EAAKgH,MAAMkhH,QAAQ,EAAKlhH,MAAMkhH,QACnC,GAtBI1wH,KAAKwP,MAAM5K,GAAK,YA0B5B,KAzHH,GAAiCwjH,EAAAA,WCLpBw1J,GAAb,oHACE,WAAU,IAAD,SACP,OACE,iBAAK5kQ,UAAU,yBAAf,WACE,SAAC,GAAD,UACGhZ,KAAKwP,MAAMuG,QACV,kBAAOiD,UAAU,oBAAoBmwO,QAAQ,OAA7C,SACGnpP,KAAKwP,MAAMuG,WAKlB,mBACE3U,KAAK,OACLwD,GAAG,OACH,gBAAc,OACd,eAAa,QACboU,UAAS,oBAAKhZ,KAAKwP,MAAMY,eAAhB,QAA2B,GAA3B,iBACTs9G,SAAU1tH,KAAKwP,MAAMk+G,SACrBgD,OAAQ,WACF,EAAKlhH,MAAMkhH,QAAQ,EAAKlhH,MAAMkhH,QACnC,EACD/0H,MAAOqE,KAAKwP,MAAMquQ,aAVpB,SAYGb,GAAMhqQ,KAAI,SAACrC,GACV,OACE,mBAEEhV,MAAOgV,EAAEhV,MACT+mI,SACE/xH,EAAEvP,QACD,EAAKoO,MAAMquQ,aACR,EAAKruQ,MAAMquQ,aAAe,SAC1B,YAPR,SAUGltQ,EAAEvP,MATE,wBAA0BuP,EAAEhV,MAYtC,QAIR,KA3CH,GAAgCysH,EAAAA,WCKnB01J,GAAb,8BAIE,WAAYtuQ,GAAgB,IAAD,oBACzB,cAAMA,IAED6H,MAAQ,CAAE1b,MAAO6T,EAAM7T,OAHH,CAI1B,CARH,4CASE,SACE4/H,EACA9T,EACA21J,GAEIp9Q,KAAKqX,MAAM1b,OAASqE,KAAKwP,MAAM7T,OACjCqE,KAAK6tE,SAAS,CAAElyE,MAAOqE,KAAKwP,MAAM7T,OAErC,GAjBH,8BAkBE,SAAiB0N,GACf,IAAI1N,EAAQ2qB,WAAWjd,GACvB,OAAIzV,MAAM+H,IAAoB,IAAVA,EAAoB,GACjCA,EAAM2yB,eAAe,QAAS,CAAEynG,aAAa,IAAU,GAC/D,GAtBH,6BAuBE,SAAgB1sH,GACd,IAAIpB,EAAWjI,KAAK2zP,WAAWtqP,EAAG,IAAK,IACnC1N,EAAQ2qB,WAAWre,EAASiB,QAAQ,IAAK,KAC7C,OAAItV,MAAM+H,IAAoB,IAAVA,EAAoB,GACjCA,EAAMqL,UACd,GA5BH,wBA6BE,SAAWqC,EAAW6sB,EAAcmnP,GAClC,OAAIh0Q,EAAEmH,SAAS0lB,GACNl2B,KAAK2zP,WAAWtqP,EAAEH,QAAQgtB,EAAMmnP,GAAcnnP,EAAMmnP,GAEtDh0Q,CACR,GAlCH,+BAmCE,SAAkBA,GAChB,IAAI1N,EAAQ2qB,WAAWjd,GACvB,OAAIzV,MAAM+H,IAAoB,IAAVA,EAAoB,GACjC,UAAOA,EAAM2yB,eAAe,QAAS,CAAEynG,aAAa,GAC5D,GAvCH,8BAwCE,SAAiB1sH,GACf,IAAIpB,EAAWjI,KAAK2zP,WAAWtqP,EAAG,IAAK,IACnC1N,EAAQ2qB,WAAWre,EAASiB,QAAQ,UAAM,KAC9C,OAAItV,MAAM+H,IAAoB,IAAVA,EAAoB,GACjCA,EAAMqL,UACd,GA7CH,qBA+CE,WAAsC,IAAD,EACnC,iBAAOhH,KAAKwP,MAAMvR,YAAlB,QAA0B,UAC3B,GAjDH,sBAmDE,SAASoL,GACP,MAAuB,eAAnBrJ,KAAK8nB,UACA9nB,KAAKs9Q,iBAAiBj0Q,GAExBrJ,KAAK8yP,kBAAkBzpP,EAC/B,GAxDH,qBAyDE,SAAQA,GACN,MAAuB,eAAnBrJ,KAAK8nB,UACA9nB,KAAKu9Q,gBAAgBl0Q,GAEvBrJ,KAAK+yP,iBAAiB1pP,EAC9B,GA9DH,4BAgEE,WACE,MAAuB,eAAnBrJ,KAAK8nB,UACA,KAEF,UACR,GArEH,wBAuEE,WACE,GAAuB,eAAnB9nB,KAAK8nB,UACP,MAAO,GAGV,GA5EH,uBA8EE,WACE,GAAuB,aAAnB9nB,KAAK8nB,UACP,MAAO,QAGV,GAnFH,oBAqFE,WAAU,IAAD,SACP,OACE,gBAAK9O,UAAU,yBAAf,UACE,UAAC,GAAD,CAAO0qG,UAAU,aAAas5F,IAAK,EAAnC,WACE,iBAAKhkM,UAAU,iBAAf,WACE,kBACEpU,GAAI5E,KAAKwP,MAAM5K,GAEfoU,UAAW,eAAOhZ,KAAKwP,MAAMY,eAAlB,QAA6B,IACxCnS,KAAK,WAELyvH,SAAU,SAACllH,GACT,EAAKgH,MAAMk+G,SAASllH,EAErB,GAPIxI,KAAKwP,MAAM5K,GAAK,WASvB,kBAAOukP,QAASnpP,KAAKwP,MAAM5K,SAE7B,kBAAOoU,UAAU,yBAAjB,SAA2ChZ,KAAKwP,MAAMuG,YAI7D,KA3GH,GAAkCqyG,EAAAA,WLhB9B,GAAY,CAAC,QAAS,WAE1B,SAAS,KAAiS,OAApR,GAAWrkH,OAAOQ,OAASR,OAAOQ,OAAO/F,OAAS,SAAUoH,GAAU,IAAK,IAAIvF,EAAI,EAAGA,EAAI2I,UAAU3U,OAAQgM,IAAK,CAAE,IAAIW,EAASgI,UAAU3I,GAAI,IAAK,IAAI7C,KAAOwD,EAAc+C,OAAO/E,UAAUwP,eAAetN,KAAKF,EAAQxD,KAAQoI,EAAOpI,GAAOwD,EAAOxD,GAAU,CAAE,OAAOoI,CAAQ,EAAU,GAAS/C,MAAM7C,KAAMgJ,UAAY,CAElV,SAAS,GAAyBhI,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAAkExD,EAAK6C,EAAnEuF,EAEzF,SAAuC5E,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAA2DxD,EAAK6C,EAA5DuF,EAAS,CAAC,EAAO0lB,EAAavnB,OAAOsC,KAAKrF,GAAqB,IAAKX,EAAI,EAAGA,EAAIirB,EAAWj3B,OAAQgM,IAAO7C,EAAM8tB,EAAWjrB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,IAAaoI,EAAOpI,GAAOwD,EAAOxD,IAAQ,OAAOoI,CAAQ,CAFhN,CAA8B5E,EAAQqqB,GAAuB,GAAItnB,OAAOynB,sBAAuB,CAAE,IAAIC,EAAmB1nB,OAAOynB,sBAAsBxqB,GAAS,IAAKX,EAAI,EAAGA,EAAIorB,EAAiBp3B,OAAQgM,IAAO7C,EAAMiuB,EAAiBprB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,GAAkBuG,OAAO/E,UAAU0sB,qBAAqBxqB,KAAKF,EAAQxD,KAAgBoI,EAAOpI,GAAOwD,EAAOxD,GAAQ,CAAE,OAAOoI,CAAQ,CAM3e,SAASm4Q,GAAWlsQ,EAAMmsQ,GACxB,IAAI5xO,EAAQv6B,EAAKu6B,MACb6xO,EAAUpsQ,EAAKosQ,QACfzuQ,EAAQ,GAAyBqC,EAAM,IAE3C,OAAoB,gBAAoB,MAAO,GAAS,CACtD2I,MAAO,IACPE,OAAQ,GACRyiH,QAAS,aACTI,KAAM,OACNL,MAAO,6BACPvpH,IAAKqqQ,EACL,kBAAmBC,GAClBzuQ,GAAQ48B,EAAqB,gBAAoB,QAAS,CAC3DxnC,GAAIq5Q,GACH7xO,GAAS,KAAM2wO,KAAOA,GAAkB,gBAAoB,IAAK,CAClEmB,SAAU,sBACI,gBAAoB,OAAQ,CAC1ChuN,EAAG,kCACHqtE,KAAM,UACS,gBAAoB,OAAQ,CAC3CrtE,EAAG,sCACHqtE,KAAM,UACS,gBAAoB,OAAQ,CAC3CrtE,EAAG,uDACHqtE,KAAM,YACS,gBAAoB,OAAQ,CAC3CrtE,EAAG,2JACHqtE,KAAM,UACS,gBAAoB,OAAQ,CAC3CrtE,EAAG,mgEACHqtE,KAAM,YACF,KAAU,GAAqB,gBAAoB,OAAQ,KAAmB,gBAAoB,WAAY,CAClH34H,GAAI,gBACU,gBAAoB,OAAQ,CAC1C4V,MAAO,IACPE,OAAQ,GACR6iH,KAAM,aAEV,CAEA,IMrDI,GAAI,GNqDJ,GAA0B,aAAiBwgJ,IMnD3C,INoDW,sBMpDC,CAAC,QAAS,YAE1B,SAAS,KAAiS,OAApR,GAAWh6Q,OAAOQ,OAASR,OAAOQ,OAAO/F,OAAS,SAAUoH,GAAU,IAAK,IAAIvF,EAAI,EAAGA,EAAI2I,UAAU3U,OAAQgM,IAAK,CAAE,IAAIW,EAASgI,UAAU3I,GAAI,IAAK,IAAI7C,KAAOwD,EAAc+C,OAAO/E,UAAUwP,eAAetN,KAAKF,EAAQxD,KAAQoI,EAAOpI,GAAOwD,EAAOxD,GAAU,CAAE,OAAOoI,CAAQ,EAAU,GAAS/C,MAAM7C,KAAMgJ,UAAY,CAElV,SAAS,GAAyBhI,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAAkExD,EAAK6C,EAAnEuF,EAEzF,SAAuC5E,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAA2DxD,EAAK6C,EAA5DuF,EAAS,CAAC,EAAO0lB,EAAavnB,OAAOsC,KAAKrF,GAAqB,IAAKX,EAAI,EAAGA,EAAIirB,EAAWj3B,OAAQgM,IAAO7C,EAAM8tB,EAAWjrB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,IAAaoI,EAAOpI,GAAOwD,EAAOxD,IAAQ,OAAOoI,CAAQ,CAFhN,CAA8B5E,EAAQqqB,GAAuB,GAAItnB,OAAOynB,sBAAuB,CAAE,IAAIC,EAAmB1nB,OAAOynB,sBAAsBxqB,GAAS,IAAKX,EAAI,EAAGA,EAAIorB,EAAiBp3B,OAAQgM,IAAO7C,EAAMiuB,EAAiBprB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,GAAkBuG,OAAO/E,UAAU0sB,qBAAqBxqB,KAAKF,EAAQxD,KAAgBoI,EAAOpI,GAAOwD,EAAOxD,GAAQ,CAAE,OAAOoI,CAAQ,CAM3e,SAASu4Q,GAAWtsQ,EAAMmsQ,GACxB,IAAI5xO,EAAQv6B,EAAKu6B,MACb6xO,EAAUpsQ,EAAKosQ,QACfzuQ,EAAQ,GAAyBqC,EAAM,IAE3C,OAAoB,gBAAoB,MAAO,GAAS,CACtD2I,MAAO,IACPE,OAAQ,GACRyiH,QAAS,aACTI,KAAM,OACNL,MAAO,6BACPvpH,IAAKqqQ,EACL,kBAAmBC,GAClBzuQ,GAAQ48B,EAAqB,gBAAoB,QAAS,CAC3DxnC,GAAIq5Q,GACH7xO,GAAS,KAAM,KAAO,GAAkB,gBAAoB,IAAK,CAClE8xO,SAAU,uBACI,gBAAoB,OAAQ,CAC1ChuN,EAAG,kCACHqtE,KAAM,UACS,gBAAoB,OAAQ,CAC3CrtE,EAAG,sCACHqtE,KAAM,UACS,gBAAoB,OAAQ,CAC3CrtE,EAAG,uDACHqtE,KAAM,YACS,gBAAoB,OAAQ,CAC3CrtE,EAAG,q8BACHqtE,KAAM,UACS,gBAAoB,OAAQ,CAC3CrtE,EAAG,mgEACHqtE,KAAM,YACF,KAAU,GAAqB,gBAAoB,OAAQ,KAAmB,gBAAoB,WAAY,CAClH34H,GAAI,iBACU,gBAAoB,OAAQ,CAC1C4V,MAAO,IACPE,OAAQ,GACR6iH,KAAM,aAEV,CAEA,ICrDI,GAAI,GDqDJ,GAA0B,aAAiB4gJ,ICnD3C,IDoDW,sBCpDC,CAAC,QAAS,YAE1B,SAAS,KAAiS,OAApR,GAAWp6Q,OAAOQ,OAASR,OAAOQ,OAAO/F,OAAS,SAAUoH,GAAU,IAAK,IAAIvF,EAAI,EAAGA,EAAI2I,UAAU3U,OAAQgM,IAAK,CAAE,IAAIW,EAASgI,UAAU3I,GAAI,IAAK,IAAI7C,KAAOwD,EAAc+C,OAAO/E,UAAUwP,eAAetN,KAAKF,EAAQxD,KAAQoI,EAAOpI,GAAOwD,EAAOxD,GAAU,CAAE,OAAOoI,CAAQ,EAAU,GAAS/C,MAAM7C,KAAMgJ,UAAY,CAElV,SAAS,GAAyBhI,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAAkExD,EAAK6C,EAAnEuF,EAEzF,SAAuC5E,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAA2DxD,EAAK6C,EAA5DuF,EAAS,CAAC,EAAO0lB,EAAavnB,OAAOsC,KAAKrF,GAAqB,IAAKX,EAAI,EAAGA,EAAIirB,EAAWj3B,OAAQgM,IAAO7C,EAAM8tB,EAAWjrB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,IAAaoI,EAAOpI,GAAOwD,EAAOxD,IAAQ,OAAOoI,CAAQ,CAFhN,CAA8B5E,EAAQqqB,GAAuB,GAAItnB,OAAOynB,sBAAuB,CAAE,IAAIC,EAAmB1nB,OAAOynB,sBAAsBxqB,GAAS,IAAKX,EAAI,EAAGA,EAAIorB,EAAiBp3B,OAAQgM,IAAO7C,EAAMiuB,EAAiBprB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,GAAkBuG,OAAO/E,UAAU0sB,qBAAqBxqB,KAAKF,EAAQxD,KAAgBoI,EAAOpI,GAAOwD,EAAOxD,GAAQ,CAAE,OAAOoI,CAAQ,CAM3e,SAASw4Q,GAAWvsQ,EAAMmsQ,GACxB,IAAI5xO,EAAQv6B,EAAKu6B,MACb6xO,EAAUpsQ,EAAKosQ,QACfzuQ,EAAQ,GAAyBqC,EAAM,IAE3C,OAAoB,gBAAoB,MAAO,GAAS,CACtD2I,MAAO,IACPE,OAAQ,GACRyiH,QAAS,aACTI,KAAM,OACNL,MAAO,6BACPvpH,IAAKqqQ,EACL,kBAAmBC,GAClBzuQ,GAAQ48B,EAAqB,gBAAoB,QAAS,CAC3DxnC,GAAIq5Q,GACH7xO,GAAS,KAAM,KAAO,GAAkB,gBAAoB,IAAK,CAClE8xO,SAAU,uBACI,gBAAoB,OAAQ,CAC1ChuN,EAAG,kCACHqtE,KAAM,UACS,gBAAoB,OAAQ,CAC3CrtE,EAAG,sCACHqtE,KAAM,UACS,gBAAoB,OAAQ,CAC3CrtE,EAAG,uDACHqtE,KAAM,YACS,gBAAoB,OAAQ,CAC3CrtE,EAAG,yxBACHqtE,KAAM,UACS,gBAAoB,OAAQ,CAC3CrtE,EAAG,mgEACHqtE,KAAM,YACF,KAAU,GAAqB,gBAAoB,OAAQ,KAAmB,gBAAoB,WAAY,CAClH34H,GAAI,iBACU,gBAAoB,OAAQ,CAC1C4V,MAAO,IACPE,OAAQ,GACR6iH,KAAM,aAEV,CAEA,ICrDI,GAAI,GDqDJ,GAA0B,aAAiB6gJ,ICnD3C,IDoDW,sBCpDC,CAAC,QAAS,YAE1B,SAAS,KAAiS,OAApR,GAAWr6Q,OAAOQ,OAASR,OAAOQ,OAAO/F,OAAS,SAAUoH,GAAU,IAAK,IAAIvF,EAAI,EAAGA,EAAI2I,UAAU3U,OAAQgM,IAAK,CAAE,IAAIW,EAASgI,UAAU3I,GAAI,IAAK,IAAI7C,KAAOwD,EAAc+C,OAAO/E,UAAUwP,eAAetN,KAAKF,EAAQxD,KAAQoI,EAAOpI,GAAOwD,EAAOxD,GAAU,CAAE,OAAOoI,CAAQ,EAAU,GAAS/C,MAAM7C,KAAMgJ,UAAY,CAElV,SAAS,GAAyBhI,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAAkExD,EAAK6C,EAAnEuF,EAEzF,SAAuC5E,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAA2DxD,EAAK6C,EAA5DuF,EAAS,CAAC,EAAO0lB,EAAavnB,OAAOsC,KAAKrF,GAAqB,IAAKX,EAAI,EAAGA,EAAIirB,EAAWj3B,OAAQgM,IAAO7C,EAAM8tB,EAAWjrB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,IAAaoI,EAAOpI,GAAOwD,EAAOxD,IAAQ,OAAOoI,CAAQ,CAFhN,CAA8B5E,EAAQqqB,GAAuB,GAAItnB,OAAOynB,sBAAuB,CAAE,IAAIC,EAAmB1nB,OAAOynB,sBAAsBxqB,GAAS,IAAKX,EAAI,EAAGA,EAAIorB,EAAiBp3B,OAAQgM,IAAO7C,EAAMiuB,EAAiBprB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,GAAkBuG,OAAO/E,UAAU0sB,qBAAqBxqB,KAAKF,EAAQxD,KAAgBoI,EAAOpI,GAAOwD,EAAOxD,GAAQ,CAAE,OAAOoI,CAAQ,CAM3e,SAASy4Q,GAAWxsQ,EAAMmsQ,GACxB,IAAI5xO,EAAQv6B,EAAKu6B,MACb6xO,EAAUpsQ,EAAKosQ,QACfzuQ,EAAQ,GAAyBqC,EAAM,IAE3C,OAAoB,gBAAoB,MAAO,GAAS,CACtD2I,MAAO,IACPE,OAAQ,GACRyiH,QAAS,aACTI,KAAM,OACNL,MAAO,6BACPvpH,IAAKqqQ,EACL,kBAAmBC,GAClBzuQ,GAAQ48B,EAAqB,gBAAoB,QAAS,CAC3DxnC,GAAIq5Q,GACH7xO,GAAS,KAAM,KAAO,GAAkB,gBAAoB,IAAK,CAClE8xO,SAAU,uBACI,gBAAoB,OAAQ,CAC1ChuN,EAAG,kCACHqtE,KAAM,UACS,gBAAoB,OAAQ,CAC3CrtE,EAAG,sCACHqtE,KAAM,UACS,gBAAoB,OAAQ,CAC3CrtE,EAAG,uDACHqtE,KAAM,YACS,gBAAoB,OAAQ,CAC3CrtE,EAAG,0hBACHqtE,KAAM,UACS,gBAAoB,OAAQ,CAC3CrtE,EAAG,mgEACHqtE,KAAM,YACF,KAAU,GAAqB,gBAAoB,OAAQ,KAAmB,gBAAoB,WAAY,CAClH34H,GAAI,iBACU,gBAAoB,OAAQ,CAC1C4V,MAAO,IACPE,OAAQ,GACR6iH,KAAM,aAEV,CAEA,ICrDI,GAAO,GAAQ,GAAQ,GDqDvB,GAA0B,aAAiB8gJ,ICnD3C,IDoDW,sBCpDC,CAAC,QAAS,YAE1B,SAAS,KAAiS,OAApR,GAAWt6Q,OAAOQ,OAASR,OAAOQ,OAAO/F,OAAS,SAAUoH,GAAU,IAAK,IAAIvF,EAAI,EAAGA,EAAI2I,UAAU3U,OAAQgM,IAAK,CAAE,IAAIW,EAASgI,UAAU3I,GAAI,IAAK,IAAI7C,KAAOwD,EAAc+C,OAAO/E,UAAUwP,eAAetN,KAAKF,EAAQxD,KAAQoI,EAAOpI,GAAOwD,EAAOxD,GAAU,CAAE,OAAOoI,CAAQ,EAAU,GAAS/C,MAAM7C,KAAMgJ,UAAY,CAElV,SAAS,GAAyBhI,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAAkExD,EAAK6C,EAAnEuF,EAEzF,SAAuC5E,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAA2DxD,EAAK6C,EAA5DuF,EAAS,CAAC,EAAO0lB,EAAavnB,OAAOsC,KAAKrF,GAAqB,IAAKX,EAAI,EAAGA,EAAIirB,EAAWj3B,OAAQgM,IAAO7C,EAAM8tB,EAAWjrB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,IAAaoI,EAAOpI,GAAOwD,EAAOxD,IAAQ,OAAOoI,CAAQ,CAFhN,CAA8B5E,EAAQqqB,GAAuB,GAAItnB,OAAOynB,sBAAuB,CAAE,IAAIC,EAAmB1nB,OAAOynB,sBAAsBxqB,GAAS,IAAKX,EAAI,EAAGA,EAAIorB,EAAiBp3B,OAAQgM,IAAO7C,EAAMiuB,EAAiBprB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,GAAkBuG,OAAO/E,UAAU0sB,qBAAqBxqB,KAAKF,EAAQxD,KAAgBoI,EAAOpI,GAAOwD,EAAOxD,GAAQ,CAAE,OAAOoI,CAAQ,CAM3e,SAAS04Q,GAAWzsQ,EAAMmsQ,GACxB,IAAI5xO,EAAQv6B,EAAKu6B,MACb6xO,EAAUpsQ,EAAKosQ,QACfzuQ,EAAQ,GAAyBqC,EAAM,IAE3C,OAAoB,gBAAoB,MAAO,GAAS,CACtD2I,MAAO,IACPE,OAAQ,GACRyiH,QAAS,aACTI,KAAM,OACNL,MAAO,6BACPvpH,IAAKqqQ,EACL,kBAAmBC,GAClBzuQ,GAAQ48B,EAAqB,gBAAoB,QAAS,CAC3DxnC,GAAIq5Q,GACH7xO,GAAS,KAAM,KAAU,GAAqB,gBAAoB,OAAQ,CAC3E8jB,EAAG,sCACHqtE,KAAM,WACH,KAAW,GAAsB,gBAAoB,OAAQ,CAChErtE,EAAG,uDACHqtE,KAAM,aACH,KAAW,GAAsB,gBAAoB,OAAQ,CAChErtE,EAAG,+GACHqtE,KAAM,WACH,KAAW,GAAsB,gBAAoB,OAAQ,CAChErtE,EAAG,mgEACHqtE,KAAM,WAEV,CAEA,IC1CI,GAAI,GD0CJ,GAA0B,aAAiB+gJ,ICxC3C,IDyCW,sBCzCC,CAAC,QAAS,YAE1B,SAAS,KAAiS,OAApR,GAAWv6Q,OAAOQ,OAASR,OAAOQ,OAAO/F,OAAS,SAAUoH,GAAU,IAAK,IAAIvF,EAAI,EAAGA,EAAI2I,UAAU3U,OAAQgM,IAAK,CAAE,IAAIW,EAASgI,UAAU3I,GAAI,IAAK,IAAI7C,KAAOwD,EAAc+C,OAAO/E,UAAUwP,eAAetN,KAAKF,EAAQxD,KAAQoI,EAAOpI,GAAOwD,EAAOxD,GAAU,CAAE,OAAOoI,CAAQ,EAAU,GAAS/C,MAAM7C,KAAMgJ,UAAY,CAElV,SAAS,GAAyBhI,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAAkExD,EAAK6C,EAAnEuF,EAEzF,SAAuC5E,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAA2DxD,EAAK6C,EAA5DuF,EAAS,CAAC,EAAO0lB,EAAavnB,OAAOsC,KAAKrF,GAAqB,IAAKX,EAAI,EAAGA,EAAIirB,EAAWj3B,OAAQgM,IAAO7C,EAAM8tB,EAAWjrB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,IAAaoI,EAAOpI,GAAOwD,EAAOxD,IAAQ,OAAOoI,CAAQ,CAFhN,CAA8B5E,EAAQqqB,GAAuB,GAAItnB,OAAOynB,sBAAuB,CAAE,IAAIC,EAAmB1nB,OAAOynB,sBAAsBxqB,GAAS,IAAKX,EAAI,EAAGA,EAAIorB,EAAiBp3B,OAAQgM,IAAO7C,EAAMiuB,EAAiBprB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,GAAkBuG,OAAO/E,UAAU0sB,qBAAqBxqB,KAAKF,EAAQxD,KAAgBoI,EAAOpI,GAAOwD,EAAOxD,GAAQ,CAAE,OAAOoI,CAAQ,CAM3e,SAAS24Q,GAAW1sQ,EAAMmsQ,GACxB,IAAI5xO,EAAQv6B,EAAKu6B,MACb6xO,EAAUpsQ,EAAKosQ,QACfzuQ,EAAQ,GAAyBqC,EAAM,IAE3C,OAAoB,gBAAoB,MAAO,GAAS,CACtD2I,MAAO,IACPE,OAAQ,GACRyiH,QAAS,aACTI,KAAM,OACNL,MAAO,6BACPvpH,IAAKqqQ,EACL,kBAAmBC,GAClBzuQ,GAAQ48B,EAAqB,gBAAoB,QAAS,CAC3DxnC,GAAIq5Q,GACH7xO,GAAS,KAAM,KAAO,GAAkB,gBAAoB,IAAK,CAClE8xO,SAAU,uBACI,gBAAoB,OAAQ,CAC1ChuN,EAAG,kCACHqtE,KAAM,UACS,gBAAoB,OAAQ,CAC3CrtE,EAAG,sCACHqtE,KAAM,UACS,gBAAoB,OAAQ,CAC3CrtE,EAAG,uDACHqtE,KAAM,YACS,gBAAoB,OAAQ,CAC3CrtE,EAAG,+FACHqtE,KAAM,UACS,gBAAoB,OAAQ,CAC3CrtE,EAAG,mgEACHqtE,KAAM,YACF,KAAU,GAAqB,gBAAoB,OAAQ,KAAmB,gBAAoB,WAAY,CAClH34H,GAAI,iBACU,gBAAoB,OAAQ,CAC1C4V,MAAO,IACPE,OAAQ,GACR6iH,KAAM,aAEV,CAEA,ICrDI,GAAI,GDqDJ,GAA0B,aAAiBghJ,ICnD3C,IDoDW,sBCpDC,CAAC,QAAS,YAE1B,SAAS,KAAiS,OAApR,GAAWx6Q,OAAOQ,OAASR,OAAOQ,OAAO/F,OAAS,SAAUoH,GAAU,IAAK,IAAIvF,EAAI,EAAGA,EAAI2I,UAAU3U,OAAQgM,IAAK,CAAE,IAAIW,EAASgI,UAAU3I,GAAI,IAAK,IAAI7C,KAAOwD,EAAc+C,OAAO/E,UAAUwP,eAAetN,KAAKF,EAAQxD,KAAQoI,EAAOpI,GAAOwD,EAAOxD,GAAU,CAAE,OAAOoI,CAAQ,EAAU,GAAS/C,MAAM7C,KAAMgJ,UAAY,CAElV,SAAS,GAAyBhI,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAAkExD,EAAK6C,EAAnEuF,EAEzF,SAAuC5E,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAA2DxD,EAAK6C,EAA5DuF,EAAS,CAAC,EAAO0lB,EAAavnB,OAAOsC,KAAKrF,GAAqB,IAAKX,EAAI,EAAGA,EAAIirB,EAAWj3B,OAAQgM,IAAO7C,EAAM8tB,EAAWjrB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,IAAaoI,EAAOpI,GAAOwD,EAAOxD,IAAQ,OAAOoI,CAAQ,CAFhN,CAA8B5E,EAAQqqB,GAAuB,GAAItnB,OAAOynB,sBAAuB,CAAE,IAAIC,EAAmB1nB,OAAOynB,sBAAsBxqB,GAAS,IAAKX,EAAI,EAAGA,EAAIorB,EAAiBp3B,OAAQgM,IAAO7C,EAAMiuB,EAAiBprB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,GAAkBuG,OAAO/E,UAAU0sB,qBAAqBxqB,KAAKF,EAAQxD,KAAgBoI,EAAOpI,GAAOwD,EAAOxD,GAAQ,CAAE,OAAOoI,CAAQ,CAM3e,SAAS44Q,GAAW3sQ,EAAMmsQ,GACxB,IAAI5xO,EAAQv6B,EAAKu6B,MACb6xO,EAAUpsQ,EAAKosQ,QACfzuQ,EAAQ,GAAyBqC,EAAM,IAE3C,OAAoB,gBAAoB,MAAO,GAAS,CACtD2I,MAAO,IACPE,OAAQ,GACRyiH,QAAS,aACTI,KAAM,OACNL,MAAO,6BACPvpH,IAAKqqQ,EACL,kBAAmBC,GAClBzuQ,GAAQ48B,EAAqB,gBAAoB,QAAS,CAC3DxnC,GAAIq5Q,GACH7xO,GAAS,KAAM,KAAO,GAAkB,gBAAoB,IAAK,CAClE8xO,SAAU,uBACI,gBAAoB,OAAQ,CAC1ChuN,EAAG,kCACHqtE,KAAM,UACS,gBAAoB,OAAQ,CAC3CrtE,EAAG,sCACHqtE,KAAM,UACS,gBAAoB,OAAQ,CAC3CrtE,EAAG,uDACHqtE,KAAM,YACS,gBAAoB,OAAQ,CAC3CrtE,EAAG,i0BACHqtE,KAAM,UACS,gBAAoB,OAAQ,CAC3CrtE,EAAG,mgEACHqtE,KAAM,YACF,KAAU,GAAqB,gBAAoB,OAAQ,KAAmB,gBAAoB,WAAY,CAClH34H,GAAI,iBACU,gBAAoB,OAAQ,CAC1C4V,MAAO,IACPE,OAAQ,GACR6iH,KAAM,aAEV,CAEA,ICrDI,GAAI,GDqDJ,GAA0B,aAAiBihJ,ICnD3C,IDoDW,sBCpDC,CAAC,QAAS,YAE1B,SAAS,KAAiS,OAApR,GAAWz6Q,OAAOQ,OAASR,OAAOQ,OAAO/F,OAAS,SAAUoH,GAAU,IAAK,IAAIvF,EAAI,EAAGA,EAAI2I,UAAU3U,OAAQgM,IAAK,CAAE,IAAIW,EAASgI,UAAU3I,GAAI,IAAK,IAAI7C,KAAOwD,EAAc+C,OAAO/E,UAAUwP,eAAetN,KAAKF,EAAQxD,KAAQoI,EAAOpI,GAAOwD,EAAOxD,GAAU,CAAE,OAAOoI,CAAQ,EAAU,GAAS/C,MAAM7C,KAAMgJ,UAAY,CAElV,SAAS,GAAyBhI,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAAkExD,EAAK6C,EAAnEuF,EAEzF,SAAuC5E,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAA2DxD,EAAK6C,EAA5DuF,EAAS,CAAC,EAAO0lB,EAAavnB,OAAOsC,KAAKrF,GAAqB,IAAKX,EAAI,EAAGA,EAAIirB,EAAWj3B,OAAQgM,IAAO7C,EAAM8tB,EAAWjrB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,IAAaoI,EAAOpI,GAAOwD,EAAOxD,IAAQ,OAAOoI,CAAQ,CAFhN,CAA8B5E,EAAQqqB,GAAuB,GAAItnB,OAAOynB,sBAAuB,CAAE,IAAIC,EAAmB1nB,OAAOynB,sBAAsBxqB,GAAS,IAAKX,EAAI,EAAGA,EAAIorB,EAAiBp3B,OAAQgM,IAAO7C,EAAMiuB,EAAiBprB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,GAAkBuG,OAAO/E,UAAU0sB,qBAAqBxqB,KAAKF,EAAQxD,KAAgBoI,EAAOpI,GAAOwD,EAAOxD,GAAQ,CAAE,OAAOoI,CAAQ,CAM3e,SAAS64Q,GAAc5sQ,EAAMmsQ,GAC3B,IAAI5xO,EAAQv6B,EAAKu6B,MACb6xO,EAAUpsQ,EAAKosQ,QACfzuQ,EAAQ,GAAyBqC,EAAM,IAE3C,OAAoB,gBAAoB,MAAO,GAAS,CACtD2I,MAAO,IACPE,OAAQ,GACRyiH,QAAS,aACTI,KAAM,OACNL,MAAO,6BACPvpH,IAAKqqQ,EACL,kBAAmBC,GAClBzuQ,GAAQ48B,EAAqB,gBAAoB,QAAS,CAC3DxnC,GAAIq5Q,GACH7xO,GAAS,KAAM,KAAO,GAAkB,gBAAoB,IAAK,CAClE8xO,SAAU,sBACI,gBAAoB,OAAQ,CAC1ChuN,EAAG,kCACHqtE,KAAM,UACS,gBAAoB,OAAQ,CAC3CrtE,EAAG,sCACHqtE,KAAM,UACS,gBAAoB,OAAQ,CAC3CrtE,EAAG,uDACHqtE,KAAM,YACS,gBAAoB,OAAQ,CAC3CrtE,EAAG,mgEACHqtE,KAAM,YACF,KAAU,GAAqB,gBAAoB,OAAQ,KAAmB,gBAAoB,WAAY,CAClH34H,GAAI,gBACU,gBAAoB,OAAQ,CAC1C4V,MAAO,IACPE,OAAQ,GACR6iH,KAAM,aAEV,CAEA,IAAI,GAA0B,aAAiBkhJ,IC9BlCC,ID+BE,sBC/Bf,oHACE,WAAU,IAAD,gCACDC,EAAQ,OACd,OACE,iBAAK3lQ,UAAU,gCAAf,WACE,SAAC,GAAD,UACGhZ,KAAKwP,MAAMuG,QACV,kBAAOiD,UAAU,oBAAoBmwO,QAAQ,MAA7C,SACGnpP,KAAKwP,MAAMuG,WAIlB,gBAAKiD,UAAU,aAAf,SACsB,MAAnBhZ,KAAKwP,MAAMovQ,KACV,SAAC,GAAD,CACElkQ,OAAM,UAAE1a,KAAKwP,MAAMkL,cAAb,QAAuB,GAC7BF,OAAO,UAACxa,KAAKwP,MAAMkL,cAAZ,QAAsB,IAAMikQ,IAEhB,MAAnB3+Q,KAAKwP,MAAMovQ,KACb,SAAC,GAAD,CACElkQ,OAAM,UAAE1a,KAAKwP,MAAMkL,cAAb,QAAuB,GAC7BF,OAAO,UAACxa,KAAKwP,MAAMkL,cAAZ,QAAsB,IAAMikQ,IAEhB,MAAnB3+Q,KAAKwP,MAAMovQ,KACb,SAAC,GAAD,CACElkQ,OAAM,UAAE1a,KAAKwP,MAAMkL,cAAb,QAAuB,GAC7BF,OAAO,UAACxa,KAAKwP,MAAMkL,cAAZ,QAAsB,IAAMikQ,IAEhB,MAAnB3+Q,KAAKwP,MAAMovQ,KACb,SAAC,GAAD,CACElkQ,OAAM,UAAE1a,KAAKwP,MAAMkL,cAAb,QAAuB,GAC7BF,OAAO,UAACxa,KAAKwP,MAAMkL,cAAZ,QAAsB,IAAMikQ,IAEhB,MAAnB3+Q,KAAKwP,MAAMovQ,KACb,SAAC,GAAD,CACElkQ,OAAM,UAAE1a,KAAKwP,MAAMkL,cAAb,QAAuB,GAC7BF,OAAO,UAACxa,KAAKwP,MAAMkL,cAAZ,QAAsB,IAAMikQ,IAEhB,MAAnB3+Q,KAAKwP,MAAMovQ,KACb,SAAC,GAAD,CACElkQ,OAAM,UAAE1a,KAAKwP,MAAMkL,cAAb,QAAuB,GAC7BF,OAAO,UAACxa,KAAKwP,MAAMkL,cAAZ,QAAsB,IAAMikQ,IAEhB,MAAnB3+Q,KAAKwP,MAAMovQ,KACb,SAAC,GAAD,CACElkQ,OAAM,UAAE1a,KAAKwP,MAAMkL,cAAb,QAAuB,GAC7BF,OAAO,UAACxa,KAAKwP,MAAMkL,cAAZ,QAAsB,IAAMikQ,KAGrC,SAAC,GAAD,CACEjkQ,OAAM,UAAE1a,KAAKwP,MAAMkL,cAAb,QAAuB,GAC7BF,OAAO,UAACxa,KAAKwP,MAAMkL,cAAZ,QAAsB,IAAMikQ,QAM9C,KAzDH,GAA8Bv2J,EAAAA,YC+DjBy2J,GAAb,8BA6XE,WAAYrvQ,GAAa,IAAD,aACtB,cAAMA,IACDmvM,iBAAmB,EAAKA,iBAAiBngN,KAAtB,MACxB,EAAKo8L,aAAe,EAAKA,aAAap8L,KAAlB,MACpB,EAAKsgR,SAAW,EAAKA,SAAStgR,KAAd,MAChB,EAAKugR,aAAe,EAAKA,aAAavgR,KAAlB,MACpB,EAAKwgR,QAAU,EAAKA,QAAQxgR,KAAb,MACf,EAAKygR,iCACH,EAAKA,iCAAiCzgR,KAAtC,MACF,EAAK0gR,oBAAsB,EAAKA,oBAAoB1gR,KAAzB,MAC3B,EAAK2gR,cAAgB,EAAKA,cAAc3gR,KAAnB,MACrB,EAAK4gR,kBAAoB,EAAKA,kBAAkB5gR,KAAvB,MACzB,EAAK6gR,iBAAmB,EAAKA,iBAAiB7gR,KAAtB,MACxB,EAAK8gR,4BACH,EAAKA,4BAA4B9gR,KAAjC,MAEF,IAAIhB,EAAMmO,OAAOC,SAASH,SAASioD,oBAhBb,OAkBtB,EAAKr8C,MAAQ,CACXyvJ,SAAS,EACTiqG,WAAY,GACZxa,aAAa,EACb76E,MAAM,EACNge,UAAWl8L,EACX+hR,aAAcV,EAAQW,QAAQC,WAAW9kO,IACzC+kO,aAAc,IAAI7C,GAClB8C,oBAAoB,EACpBrH,qBAAqB,EACrBsH,iBAAkB,IAAI1C,GACtB2C,UAAW,EACXC,eAAgB,EAChBvkB,KAAM,GACNwkB,UAAW,aACXC,cAAc,EACdC,mBAAoBr9J,EAAAA,YACpBs9J,wBAAyBt9J,EAAAA,YACzBu9J,cAAev9J,EAAAA,YACfw9J,aAAcx9J,EAAAA,aArCM,CAuCvB,CApaH,2CAsaE,WACE,IAAI9jH,EAAUkB,KAAKisK,aACnBntK,EAAQ6/M,iBAAmB3+M,KAAK2+M,iBAChC3+M,KAAKqX,MAAMqoQ,aAAa5hB,SAASh/P,EAAQo/M,SAAU,IAAI,EAAM,MAC7Dl+M,KAAK0zQ,cACN,GA3aH,gCA6aE,WACM1zQ,KAAKqX,MAAM05P,YAAc/wQ,KAAKqX,MAAM05P,WAAW18Q,OAAS,GAC1D2L,KAAKqgR,eAEP,IAAI7iR,EAAMmO,OAAOC,SAASH,SAASioD,oBAE/B6rN,EAAev/Q,KAAKsgR,WAAW9iR,GAC/B+hR,EAEAA,EAAagB,YAAcvgR,KAAKqX,MAAMqiL,WACtC6lF,EAAa5kO,MAAQ36C,KAAKqX,MAAMkoQ,cAEhCv/Q,KAAK6tE,SAAS,CACZ6rH,UAAW6lF,EAAagB,UACxBhB,aAAcA,EAAa5kO,IAC3B6lO,cAAejB,EAAakB,QAIhCzgR,KAAKqX,MAAMqiL,YAAcl8L,GACG,OAA5BwC,KAAKqX,MAAMkoQ,cAEXv/Q,KAAK6tE,SAAS,CAAE6rH,UAAWl8L,EAAK+hR,aAAc,MAEjD,GArcH,wBAucE,SAAW/hR,GACT,IACI+U,EADiBxO,OAAOgzE,OAAO8nM,EAAQW,SACjB7vQ,QAAO,SAACtP,GAAD,OAAYA,EAAEs6C,MAAQn9C,CAAtB,IACjC,OAAI+U,EAAKle,OAAS,EAAUke,EAAK,GAC1B,IACR,GA5cH,0BA8cE,SAAa/U,GACXkqF,GAAAA,IAAWlqF,GACXwC,KAAK6tE,SAAS,CAAE6rH,UAAWl8L,EAAK+hR,aAAc/hR,EAAK05K,UAAU,GAC9D,GAjdH,6BAmdE,SAAgBwpG,GACdh5L,GAAAA,IAAWg5L,EAAS/lO,KACpB36C,KAAK6tE,SAAS,CACZ6rH,UAAWgnF,EAASH,UACpBhB,aAAcmB,EAAS/lO,IACvB6lO,cAAeE,EAASD,OAE3B,GA1dH,wBA4dE,SAAWE,EAAejnF,GACxBhyG,GAAAA,IAAWi5L,EAAM35Q,WAAa,IAAM0yL,GACpC15L,KAAK6tE,SAAS,CAAE6rH,UAAWA,EAAW8mF,cAAeG,GACtD,GA/dH,0BAieE,WAAsB,IAAD,QACf7hR,EAAUkB,KAAKisK,aACb8kG,EAAa/wQ,KAAKqX,MAAM05P,WAC1B6P,EAAQ,oBAAG9hR,EAAQo/M,gBAAX,aAAG,EAAkB+B,wBAArB,QAAyC8wD,EAAW,GAC5D8P,EAAQ,oBAAG/hR,EAAQo/M,gBAAX,aAAG,EAAkB8B,0BAArB,QAA2C+wD,EAAW,GAC9D6P,IACF/B,EAAQW,QAAQC,WAAWz+F,MAAQ4/F,EAAS1gE,WAE1C2gE,IACFhC,EAAQW,QAAQsB,WAAW9/F,MAAQ6/F,EAAS3gE,UAE/C,GA5eH,8BA8eE,WACElgN,KAAK6tE,SAAS,CAAEkzM,eAAgB/gR,KAAKqX,MAAM0pQ,eAC5C,GAhfH,yDAkfE,iHAE0B,QADlBjiR,EAAUkB,KAAKlB,SACTm/M,SAAqBn/M,EAAQm/M,QAAQq2C,WAFnD,iDAIEt0P,KAAK6tE,SAAS,CACZiyM,eAAc,oBAAEhhR,EAAQo/M,gBAAV,aAAE,EAAkB8iE,8BAApB,QAA8C,EAC5DnB,UAAS,8BACP/gR,EAAQo/M,gBADD,aACP,EAAkB+iE,qBADX,kBAC4BniR,EAAQo/M,gBADpC,aAC4B,EAAkBgjE,qBAD9C,QAC+D,EACxEnB,UAAS,oBACP9C,GAAW/mP,MAAK,SAAC+S,GAAD,aAAOA,EAAEttC,SAAF,UAAYmD,EAAQo/M,gBAApB,aAAY,EAAkB6hE,UAArC,WADT,aACP,EAAiE3+Q,YAD1D,QAEP,aACFm6P,MAAM,UAAAz8P,EAAQo/M,gBAAR,eAAkBijE,eAAgB,KAG1CxiR,KAAAA,IAEI,+CACEG,EAAQm/M,QAAQq2C,YAEnBn0P,MAAK,SAAC5E,GACL,EAAK8kR,eACL,EAAKxyM,SAAS,CAAEkjM,WAAYx1Q,EAAS1B,KAAMitK,SAAS,GACrD,IACAtxJ,OAAM,SAACtS,GAC4B,MAA9BA,EAAM3H,SAASw4O,YACjBygB,MAAM,eAET,IAEH71P,KAAAA,IAEI,8DACEG,EAAQm/M,QAAQq2C,YAEnBn0P,MAAK,SAAC5E,GACL,IAAI++Q,EAAoC/+Q,EAAS1B,KACjDygR,EAAK/8Q,SAAQ,SAACiL,GACZA,EAAE6wQ,eAAiB7wQ,EAAE6wQ,eAAe1pQ,QAAO,SAAC1O,GAAD,OAAQA,EAAEs5Q,SAAV,GAC5C,IACD,IAAI9+Q,EAAS,EAEX6+Q,EAAK3qQ,QAAO,SAACT,GAAD,MACV,CAACg9P,GAAa8N,WAAY9N,GAAakV,kBAAkB5wQ,SACvDtB,EAAE6qQ,aAFM,IAIV1lR,OAAS,EAEXoH,EAAS,IAET6+Q,EAAK3qQ,QAAO,SAACT,GAAD,MACV,CAACg9P,GAAamV,cAAenV,GAAaiN,WAAW3oQ,SACnDtB,EAAE6qQ,aAFM,IAIV1lR,OAAS,IAEXoH,EAAS,IAGX,EAAKoyE,SAAS,CAAE4sM,UAAWh/Q,GAC5B,IA3DL,gDAlfF,4GAgjBE,4FAE0B,QADlBqD,EAAUkB,KAAKlB,SACTm/M,SAAqBn/M,EAAQm/M,QAAQq2C,YAC/C/3P,YAAW,kBAAM,EAAK+kR,WAAX,GAAwB,KAErCthR,KAAK0zQ,eALP,gDAhjBF,0EAwjBE,SAAOv3O,GACL,MAAiB,eAAbA,EAAkC,gBACA,eAEvC,GA5jBH,0BA8jBE,SAAaukP,GACX,OACE,UAAC,GAAD,CAAK1nQ,UAAS,+CAAd,UACG0nQ,EAASa,MACR,cAAGvoQ,UAAS,UAAK0nQ,EAASa,KAAd,oBAEZ,wBACC,IACFb,EAAS1/F,QAGf,GAzkBH,sBA2kBE,SAAS0/F,EAAec,GACtB,IAAIC,EAAa,GACbC,EAAc,CAChB7C,EAAQW,QAAQmC,oBAAoBhnO,IACpCkkO,EAAQW,QAAQoC,sBAAsBjnO,IACtCkkO,EAAQW,QAAQqC,mBAAmBlnO,IACnCkkO,EAAQW,QAAQsC,eAAennO,IAC/BkkO,EAAQW,QAAQuC,sBAAsBpnO,IACtCkkO,EAAQW,QAAQwC,WAAWrnO,KAEzBsnO,EAAe,CACjBpD,EAAQW,QAAQmC,oBAAoBhnO,IACpCkkO,EAAQW,QAAQoC,sBAAsBjnO,IACtCkkO,EAAQW,QAAQqC,mBAAmBlnO,IACnCkkO,EAAQW,QAAQsC,eAAennO,IAC/BkkO,EAAQW,QAAQ0C,UAAUvnO,IAC1BkkO,EAAQW,QAAQ2C,WAAWxnO,IAC3BkkO,EAAQW,QAAQhiB,SAAS7iN,IACzBkkO,EAAQW,QAAQ4C,UAAUznO,KA+B5B,OA3BE+lO,EAAS/lO,MAAQ36C,KAAKqX,MAAMkoQ,cAC5BmB,EAASH,YAAcvgR,KAAKqX,MAAMqiL,WAClCgnF,EAAS/lO,MAAQkkO,EAAQW,QAAQ6C,WAAW1nO,MAI1C+lO,EAASH,WAAa1B,EAAQyD,KAAKhsB,QAAQ37M,KAC1B,GAAjB+lO,EAASzvN,OAETwwN,EAAa,aAGbD,IAAsBd,EAAS/lO,MACjC8mO,EAAa,YAEXC,EAAYlxQ,SAASkwQ,EAAS/lO,OAChC8mO,EAAa,UAEXQ,EAAazxQ,SAASkwQ,EAAS/lO,OACjC8mO,GAAc,sBAGdf,EAAS/lO,MAAQkkO,EAAQW,QAAQ6C,WAAW1nO,KAC5C+lO,EAASH,YAAc1B,EAAQW,QAAQ6C,WAAW1nO,MAElD8mO,GAAc,aAGd,UAAC,GAAD,CAAKzoQ,UAAS,mCAA8ByoQ,GAA5C,UACGf,EAASa,MACR,cAAGvoQ,UAAS,UAAK0nQ,EAASa,KAAd,oBAEZ,wBACC,IACFb,EAAS1/F,QAGf,GAtoBH,qBAuoBE,SAAQrlL,EAAe4mR,GACjB5mR,EAAQ,MACVA,EAAQ,KAEV,IAAI8lR,EAAa,GACb9lR,GAAS,IACX8lR,EAAa,YACJ9lR,EAAQ,IACjB8lR,EAAa,cAEf,IAAIn5O,GAAO,uCAUX,OATI3sC,GAAS,IACX2sC,GAAO,uCACE3sC,EAAQ,IAEf2sC,EADEi6O,GACK,2CAEA,gCAAG97Q,KAAK4kC,MAAM1vC,GAAd,SAIT,SAAC,GAAD,CAAKqd,UAAS,wCAAmCyoQ,GAAjD,SACGn5O,GAGN,GAhqBH,qBAkqBE,SAAQ3sC,GACN,OACE,SAAC,GAAD,CAAKqd,UAAS,0CAAd,SAA4Drd,GAE/D,GAtqBH,yBAwqBE,SAAY+kR,GACV,OACE,UAAC,GAAD,CACE1nQ,UAAS,wCACP0nQ,EAAS/lO,MAAQ36C,KAAKqX,MAAMkoQ,aAAe,WAAa,IAF5D,UAKGmB,EAASa,MACR,cAAGvoQ,UAAS,UAAK0nQ,EAASa,KAAd,oBAEZ,wBACC,IACFb,EAAS1/F,QAGf,GAvrBH,yBAyrBE,SAAY13J,EAAY9rB,EAAaglR,GAA6B,IAAD,SAC3DjwQ,EAAY+W,EAAM4M,MAAK,SAAC+S,GAAD,OAAYA,EAAEzrC,MAAQA,CAAtB,IACvB/B,EAAM,iBAAG8W,QAAH,IAAGA,OAAH,EAAGA,EAAM9W,cAAT,QAAmB,KAEzB+jR,EAAUX,EAAQW,QACtB,GACE,CACEA,EAAQmC,oBAAoBhnO,IAC5B6kO,EAAQuC,sBAAsBpnO,IAC9B6kO,EAAQwC,WAAWrnO,IACnB6kO,EAAQqC,mBAAmBlnO,IAC3B6kO,EAAQsC,eAAennO,KACvBnqC,SAAShT,GAEX,OACE,SAAC,GAAD,CAAKwb,UAAS,gBAAd,UACE,sCAKN,IAAIyoQ,EAAa,GACbn5O,GACF,+BACE,cAAGtvB,UAAU,kBAmDjB,OAhDIvd,IAAWmhR,GAAmB6F,WAChChB,EAAa,YACbn5O,GAAO,wCACE7sC,IAAWmhR,GAAmB8F,SACvCjB,EAAa,aACbn5O,GAAO,2CACE7sC,IAAWmhR,GAAmB+F,KACvCr6O,GAAO,uCACE7sC,IAAWmhR,GAAmBxL,UAAYoR,IACnDf,EAAa,aACbn5O,GAAO,2CAIL7sC,IAAWmhR,GAAmBxL,WAC5B5zQ,IAAQgiR,EAAQoD,aAAajoO,KAC/BrS,GACE,mBACEtvB,UAAU,wBACVozB,MAAO,WACP80D,QAAS,kBAAM,EAAK2hL,cAAX,EAHX,sBAQFv6O,GACE,gBAAKtvB,UAAU,UAAUkoF,QAAS,kBAAM,EAAK2hL,cAAX,EAAlC,UACE,cAAG7pQ,UAAU,kCAGRxb,IAAQgiR,EAAQsD,qBAAqBnoO,MAC9CrS,GACE,mBACEtvB,UAAU,wBACVozB,MAAO,WACP80D,QAAS,kBAAM,EAAK6hL,sBAAX,EAHX,sBAQFz6O,GACE,gBAAKtvB,UAAU,UAAUkoF,QAAS,kBAAM,EAAK6hL,sBAAX,EAAlC,UACE,cAAG/pQ,UAAU,oCAOnB,SAAC,GAAD,CAAKA,UAAS,wCAAmCyoQ,GAAjD,SACGn5O,GAGN,GAzwBH,uBA2wBE,SAAU+kC,EAAgBqzM,EAAgBc,GACxC,IAAIpxQ,EAAU,GAQd,OANEswQ,GACCA,EAAS/lO,MAAQ36C,KAAKqX,MAAMkoQ,cAC3BiC,IAAsBd,EAAS/lO,MAEjCvqC,EAAU,aAGV,SAAC,GAAD,CAAK4I,UAAS,qBAAgB5I,GAA9B,gBAA0Ci9D,QAA1C,IAA0CA,EAAAA,GAAY,wCAEzD,GAvxBH,wBAyxBE,SAAW21M,GACT,IAAKA,EAAQ,MAAO,GACpB,IAAIlwR,EAAO,IAAIK,KAAK6vR,GACpB,OAAQlwR,EAEJA,EAAKmB,UAAY,KAAOnB,EAAKiB,WAAa,GAAK,IAAMjB,EAAKW,cAD1D,EAEL,GA/xBH,mCAiyBE,WACE,IACIyqN,EADUl+M,KAAKisK,aACIiyC,SACvB,SAAIA,EAAS+kE,wBAAyB/kE,EAASglE,mBAGhD,GAvyBH,mCAyyBE,WAEE,OADeljR,KAAKisK,aAAaiyC,SACnBglE,kBAIf,GA/yBH,mCAizBE,WACE,OAC4B,OAA1BljR,KAAKqX,MAAM8rQ,iBACc9lR,GAAzB2C,KAAKqX,MAAM8rQ,YACXnjR,KAAKqX,MAAM8rQ,WAAWxzQ,QACpB,SAAC1O,GAAD,OAA2B,IAAfA,EAAE2gG,WAAqC,IAAhB3gG,EAAEs5Q,SAArC,IACAlmR,OAAS,CAKd,GA5zBH,qCA8zBE,WACE,OAC4B,OAA1B2L,KAAKqX,MAAM8rQ,iBACc9lR,GAAzB2C,KAAKqX,MAAM8rQ,YACXnjR,KAAKqX,MAAM8rQ,WAAWxzQ,QAAO,SAAC1O,GAAD,OAA4B,IAAhBA,EAAEs5Q,SAAd,IAAkClmR,OAAS,CAK3E,GAv0BH,uCAy0BE,WAEE,OADe2L,KAAKisK,aAAaiyC,SACpBziN,SAAWwgN,GAAemnE,yBAIxC,GA/0BH,uCAi1BE,WACE,OACgC,OAA9BpjR,KAAKqX,MAAMgiQ,qBACmBh8Q,IAA9B2C,KAAKqX,MAAMgiQ,gBACXr5Q,KAAKqX,MAAMgiQ,eAAe1pQ,QAAO,SAAC1O,GAAD,OAA2B,IAAfA,EAAE2gG,QAAd,IAAiCvtG,OAChE,CAKL,GA31BH,6BA61BE,WACE,IAAI6pN,EAAWl+M,KAAKisK,aAAaiyC,SACjC,QACGl+M,KAAKqjR,yBACLrjR,KAAKsjR,6BACLplE,EAASqlE,kBAKb,GAv2BH,mCAy2BE,WAAyB,IAAD,EAEtB,SADevjR,KAAKisK,aAAaiyC,SAEtBqlE,oBACTvjR,KAAKqX,MAAMmsQ,kBACuB,KAAlC,UAAAxjR,KAAKqX,MAAM8rQ,kBAAX,eAAuB9uR,QAK1B,GAn3BH,8CAq3BE,WAEE,SADe2L,KAAKisK,aAAaiyC,SACpBqlE,mBAAsBvjR,KAAKyjR,wBAIzC,GA33BH,0BA63BE,WAAgB,IAAD,SACP3kR,EAAUkB,KAAKisK,aAErBttK,KAAM,CACJxD,IAAI,sCAAD,iBAAwC2D,EAAQo/M,gBAAhD,aAAwC,EAAkBo2C,YAC7Dx4P,OAAQ,MACR9B,aAAc,SACbmG,MAAK,SAAC5E,GACP,GAA2B,IAAvBA,EAAS1B,KAAK6Z,UAEX,CACL,IAAMvY,EAAMwQ,OAAO8hD,IAAIC,gBAAgB,IAAIjhD,KAAK,CAAClR,EAAS1B,QACpD0sF,EAAOp8E,SAASa,cAAc,KACpCu7E,EAAKr7E,KAAO/P,EACZorF,EAAKp7E,aAAa,WAAY,YAC9BhB,SAASmyB,KAAKljB,YAAYmtE,GAC1BA,EAAKtrC,QACmB,OAApBsrC,EAAK3sE,YAAqB2sE,EAAK3sE,WAAWC,YAAY0sE,GAC1DznF,EAAQo/M,SAAUwlE,kBAAmB,EACrC,EAAK71M,SAAS,CAAEkzM,eAAgB,EAAK1pQ,MAAM0pQ,eAC5C,CACF,GACF,GAn5BH,kCAq5BE,WAAwB,IAAD,SACfjiR,EAAUkB,KAAKisK,aAErBttK,KAAM,CACJxD,IAAI,8CAAD,iBAAgD2D,EAAQo/M,gBAAxD,aAAgD,EAAkBo2C,YACrEx4P,OAAQ,MACR9B,aAAc,SACbmG,MAAK,SAAC5E,GACP,GAA2B,IAAvBA,EAAS1B,KAAK6Z,UAEX,CACL,IAAMvY,EAAMwQ,OAAO8hD,IAAIC,gBAAgB,IAAIjhD,KAAK,CAAClR,EAAS1B,QACpD0sF,EAAOp8E,SAASa,cAAc,KACpCu7E,EAAKr7E,KAAO/P,EACZorF,EAAKp7E,aAAa,WAAY,oBAC9BhB,SAASmyB,KAAKljB,YAAYmtE,GAC1BA,EAAKtrC,QACmB,OAApBsrC,EAAK3sE,YAAqB2sE,EAAK3sE,WAAWC,YAAY0sE,GAC1DznF,EAAQo/M,SAAUylE,0BAA2B,EAC7C,EAAK91M,SAAS,CAAEkzM,eAAgB,EAAK1pQ,MAAM0pQ,eAC5C,CACF,GACF,GA36BH,+BA66BE,WAAqB,IAAD,EACdjiR,EAAUkB,KAAKisK,aACnBntK,EAAQo/M,SAAU0lE,oBAAsB1nE,GAAWqiD,IACnDv+P,KAAK6tE,SAAS,CAAEkzM,eAAgB/gR,KAAKqX,MAAM0pQ,gBAC3CpiR,KAAAA,KACQ,+BAAgC,KAAM,CAC1C3C,OAAQ,CAAEs4P,WAAU,UAAEx1P,EAAQo/M,gBAAV,aAAE,EAAkBo2C,cAEzCn0P,MAAK,SAAC5E,GAAe,GACzB,GAt7BH,8BAw7BE,WAAoB,IAAD,EACbuD,EAAUkB,KAAKisK,aACnBntK,EAAQo/M,SAAUmhE,kBAAmB,EACrCr/Q,KAAK6tE,SAAS,CAAEkzM,eAAgB/gR,KAAKqX,MAAM0pQ,gBAC3CpiR,KAAAA,KACQ,8BAA+B,KAAM,CACzC3C,OAAQ,CAAEs4P,WAAU,UAAEx1P,EAAQo/M,gBAAV,aAAE,EAAkBo2C,cAEzCn0P,MAAK,SAAC5E,GAAe,GACzB,GAj8BH,gCAm8BE,WAA2B,IAAD,EACpBuD,EAAUkB,KAAKisK,aACfiyC,EAAWp/M,EAAQo/M,SACnB2lE,EAAuB,EACvBC,EAAmB,KAEnBC,EAAkBnH,GAAmBxL,SACrCpxQ,KAAKijR,0BAELc,EADE7lE,EAASqlE,kBACO3G,GAAmB6F,UAC5BziR,KAAKgkR,kBACIpH,GAAmB8F,QAC5B1iR,KAAKqjR,yBAA2BrjR,KAAKyjR,wBAC5B7G,GAAmB+F,KAEnB/F,GAAmB8F,SAIzC,IAAIuB,EAAqBrH,GAAmBxL,SACxC8S,EAA6BtH,GAAmBxL,SAEhDpxQ,KAAKijR,yBAA2B/kE,EAASqlE,oBACvCrlE,EAASwlE,iBACXO,EAAqBrH,GAAmB6F,UAC/BvkE,EAASimE,kBAClBF,EAAqBrH,GAAmB+F,MAEtCzkE,EAASylE,yBACXO,EAA6BtH,GAAmB6F,UACvCvkE,EAASkmE,0BAClBF,EAA6BtH,GAAmB+F,OAIpD,IAAI0B,EAAmBzH,GAAmBxL,SACtC2S,IAAoBnH,GAAmB6F,YAEvC4B,EADErkR,KAAKyjR,wBACY7G,GAAmB+F,KAEnB/F,GAAmB6F,WAI1C,IAAI6B,EAAmB1H,GAAmBxL,SACtCiT,IAAqBzH,GAAmB6F,UAExC6B,EADEpmE,EAAS0lE,sBAAwB1nE,GAAWqiD,IAC3Bqe,GAAmB6F,UAEnB7F,GAAmB+F,KAGpCzkE,EAAS0lE,sBAAwB1nE,GAAWqiD,MAC9C+lB,EAAmB1H,GAAmB6F,WAI1C,IAAIjD,EAAUX,EAAQW,QAClBl2P,EAAQ,GAGC,UAAGxqB,EAAQo/M,gBAAX,OAAG,EAAkBy9D,UAClCryP,EAAMzoB,KAAK,CACTrD,IAAKgiR,EAAQ+E,oBAAoB5pO,IACjCl/C,OAAQuE,KAAKijR,wBACTrG,GAAmB6F,UACnB7F,GAAmB+F,OAEzBr5P,EAAMzoB,KAAK,CAAErD,IAAKgiR,EAAQgF,iBAAiB7pO,IAAKl/C,OAAQsoR,IACxDz6P,EAAMzoB,KAAK,CAAErD,IAAKgiR,EAAQoD,aAAajoO,IAAKl/C,OAAQwoR,IACpD36P,EAAMzoB,KAAK,CACTrD,IAAKgiR,EAAQsD,qBAAqBnoO,IAClCl/C,OAAQyoR,IAEV56P,EAAMzoB,KAAK,CAAErD,IAAKgiR,EAAQiF,eAAe9pO,IAAKl/C,OAAQ4oR,IAClDnmE,EAASjgN,OAAS69M,GAAak7C,0BACjC1tO,EAAMzoB,KAAK,CACTrD,IAAKgiR,EAAQkF,yBAAyB/pO,IACtCl/C,OAAQ6oR,IAKI,IADdh7P,EAAM3Z,QAAO,SAACtP,GAAD,OAAYA,EAAE5E,SAAWmhR,GAAmB6F,SAA5C,IACVpuR,OAEHwvR,EAAuB,IAEvBv6P,EAAM3Z,QACJ,SAACtP,GAAD,OACEA,EAAE5E,SAAWmhR,GAAmB+F,MAChCtiR,EAAE5E,SAAWmhR,GAAmBxL,QAFlC,IAGA/8Q,OAAS,IAEXwvR,EACG,IAAMv6P,EAAMj1B,OACbi1B,EAAM3Z,QAAO,SAACtP,GAAD,OAAYA,EAAE5E,SAAWmhR,GAAmB6F,SAA5C,IACVpuR,QAEPi1B,EAAMzoB,KAAK,CACTrD,IAAKgiR,EAAQmF,eAAehqO,IAC5Bl/C,OAAQooR,IAGV,IAAIe,EAAkBhI,GAAmBxL,SACrCyT,EAAoBjI,GAAmBxL,SACvC0T,EAAoBlI,GAAmBxL,SAmC3C,OAlCIlzD,EAASmhE,mBACXuF,EAAkBhI,GAAmB6F,WAEnCvkE,EAASqlE,oBACXO,EAAmB,IACf5lE,EAASmhE,iBACPnhE,EAAS6mE,kBACXF,EAAoBjI,GAAmB6F,UAErCqC,EADE,IAAI3xR,KAAK+qN,EAAS6mE,mBAAqB,IAAI5xR,KACzBypR,GAAmB6F,UAEnB7F,GAAmB8F,SAGzCxkE,EAAS8mE,0BACT9mE,EAAS+mE,sBAETJ,EAAoBjI,GAAmB8F,QACvCoC,EAAoBlI,GAAmB8F,UAEvCmC,EAAoBjI,GAAmB+F,KACvCmC,EAAoBlI,GAAmB+F,OAGzCkC,EAAoBjI,GAAmB+F,KACvCiC,EAAkBhI,GAAmB+F,KACrCmC,EAAoBlI,GAAmB+F,OAI3Cr5P,EAAMzoB,KAAK,CAAErD,IAAKgiR,EAAQwC,WAAWrnO,IAAKl/C,OAAQqoR,IAClDx6P,EAAMzoB,KAAK,CAAErD,IAAKgiR,EAAQ0F,cAAcvqO,IAAKl/C,OAAQmpR,IACrDt7P,EAAMzoB,KAAK,CAAErD,IAAKgiR,EAAQ2F,aAAaxqO,IAAKl/C,OAAQopR,IACpDv7P,EAAMzoB,KAAK,CAAErD,IAAKgiR,EAAQ4F,YAAYzqO,IAAKl/C,OAAQqpR,IAC5Cx7P,CACR,GAhlCH,qCAklCE,SAAwBA,GAGtB,IAFA,IAAIk2P,EAAUX,EAAQW,QAEb1+Q,EAAQ,EAAGA,EAAQwoB,EAAMj1B,OAAQyM,IAAS,CACjD,IAAMyR,EAAO+W,EAAMxoB,GACnB,GAAIyR,EAAK/U,MAAQgiR,EAAQwC,WAAWrnO,IAClC,OAAOpoC,EAAK/U,IAEd,GACE,CAACo/Q,GAAmB+F,KAAM/F,GAAmB8F,SAASlyQ,SACpD+B,EAAK9W,QAGP,OAAO8W,EAAK/U,GAEf,CACD,OAAO,IACR,GAnmCH,4BAqmCE,WAAwB,IAAD,SACfsB,EAAUkB,KAAKlB,QACrBH,KAAAA,KACQ,2BAA4B,KAAM,CACtC3C,OAAQ,CAAEs4P,WAAU,UAAEx1P,EAAQm/M,eAAV,aAAE,EAAiBq2C,cAExCn0P,MAAK,SAAC5E,GACLuD,EAAQo/M,SAAU+4C,YAAa,EAC/B,EAAKppL,SAAS,CACZ2qM,wBAAwB,EACxBF,qBAAqB,GAExB,GACJ,GAlnCH,yCAonCE,WAA+B,IAAD,SAC5Bt4Q,KAAK6tE,SAAS,CAAEw3M,iBAAiB,IACjC,IAAIvyR,EAAO,IAAIK,KACb6M,KAAKqX,MAAMqoQ,aAAazsB,eAAe,4BACpCt3P,OAEDmD,EAAUkB,KAAKisK,aACnBntK,EAAQo/M,SAAU8mE,yBAA2BlyR,EAE7CkN,KAAK6tE,SAAS,CACZkzM,eAAgB/gR,KAAKqX,MAAM0pQ,cAC3BpB,oBAAoB,EACpB0F,iBAAiB,IAEnB1mR,KAAAA,KACQ,yCAA0C,KAAM,CACpD3C,OAAQ,CAAEs4P,WAAU,UAAEx1P,EAAQo/M,gBAAV,aAAE,EAAkBo2C,WAAYxhQ,KAAMA,KAE3DqN,MAAK,SAAC5E,GACL,EAAKsyE,SAAS,CAAEkzM,eAAgB,EAAK1pQ,MAAM0pQ,eAC5C,GACJ,GAzoCH,2BA4oCE,SAAcuE,GAAgC,IAAD,OACvC9F,EAAUX,EAAQW,QAClB1gR,EAAUkB,KAAKisK,aACnB,OAAIntK,EAAQo/M,SAAUjgN,OAAS69M,GAAak7C,0BACnC,yBAGP,SAAC,QAAD,CAAUh+O,UAAU,wBAApB,UACE,SAAC,QAAD,CAAUk2J,GAAImoC,GAAM1tK,GAAI61O,EAAQ2C,WAAWxnO,IAA3C,UACE,gBAAK3hC,UAAU,eAAf,UACE,UAAC,GAAD,WACGhZ,KAAK8+Q,SACJwG,EACI9F,EAAQ+F,sBACR/F,EAAQ2C,YAEbrjR,EAAQo/M,SAAU+4C,WACfj3P,KAAKg/Q,QAAQ,KAAK,GAClBh/Q,KAAKwlR,WACH,mBACExsQ,UAAU,qBACVkoF,QAAS,WACP,EAAKrzB,SAAS,CAAEyqM,qBAAqB,GACtC,EAJH,yBAcjB,GA7qCH,iCA+qCE,SAAoB1H,EAAgB4P,GAAwB,IAAD,UAGrDiF,EAQAC,EAXqD,OAErDxnE,EADYl+M,KAAKisK,aACEiyC,SAGnB04C,GACDga,EAAU+U,uBACT/U,EAAUgV,0BACVhV,EAAUiV,yBACVjV,EAAUkV,sBACZ,EAwBF,OAtBIlV,EAAUnyD,YAAcP,EAAS+B,iBAAiBxB,WACpDgnE,EAAiB,EACjBC,EAAgB,CACdK,UAAWlH,EAAQW,QAAQC,WAC3BuG,SAAUnH,EAAQW,QAAQyG,UAC1BC,YAAarH,EAAQW,QAAQ2G,aAC7BC,WAAYvH,EAAQW,QAAQ6G,YAC5BC,UAAWzH,EAAQW,QAAQ+G,WAC3BC,eAAgB3H,EAAQW,QAAQiH,mBAGlChB,EAAiB,EACjBC,EAAgB,CACdK,UAAWlH,EAAQW,QAAQsB,WAC3BkF,SAAUnH,EAAQW,QAAQkH,UAC1BR,YAAarH,EAAQW,QAAQmH,aAC7BP,WAAYvH,EAAQW,QAAQoH,YAC5BN,UAAWzH,EAAQW,QAAQqH,WAC3BL,eAAgB3H,EAAQW,QAAQsH,mBAKlC,iCACE,SAAC,QAAD,CACE9tQ,UAAU,uBACVozB,MAAOs5O,EAAcK,UAAU/kG,MAFjC,UAIE,SAAC,QAAD,CACE9R,GAAImoC,GACJ1tK,GAAI+7O,EAAcK,UAAUprO,IAC5BumD,QAAS,SAACriF,GACR,EAAKgvD,SAAS,CAAEqpG,UAAU,IAC1B,EAAK6vG,gBAAgBrB,EAAcK,UACpC,EANH,UAQE,gBAAK/sQ,UAAU,eAAf,UACE,UAAC,GAAD,WACGhZ,KAAK8+Q,SAAS4G,EAAcK,WAC5B/lR,KAAKg/Q,QAAQpoB,YAKrB4pB,IAAkBiF,IACjB,iCACE,SAAC,QAAD,CAAUzsQ,UAAU,wBAApB,UACE,SAAC,QAAD,CACEk2J,GAAImoC,GACJ1tK,GAAI+7O,EAAcM,SAASrrO,IAC3B3hC,UACEhZ,KAAKqX,MAAMkoQ,eAAiBmG,EAAcM,SAASrrO,KACnD36C,KAAKqX,MAAMkoQ,eAAiBmG,EAAcK,UAAUprO,KAChD,UAACi2N,EAAU+U,8BAAX,QAAqC,GAAK,IACxC,6BACA,kCACF,GAENzkL,QAAS,SAACriF,GACR,EAAKgvD,SAAS,CAAEqpG,UAAU,IACtB,EAAK1nK,MAAMw3Q,SAAS,EAAKx3Q,MAAMw3Q,QAAQ,GAC3C,EAAKD,gBAAgBrB,EAAcM,SACpC,EAfH,UAiBE,gBACEhtQ,UAAS,uBACPhZ,KAAKqX,MAAMkoQ,eAAiBmG,EAAcM,SAASrrO,KACnD,YAHJ,UAME,UAAC,GAAD,WACG36C,KAAK8+Q,SAAS4G,EAAcM,UAC5BhmR,KAAKg/Q,QAAQpO,EAAU+U,kCAKhC,SAAC,QAAD,CAAU3sQ,UAAU,wBAApB,UACE,SAAC,QAAD,CACEk2J,GAAImoC,GACJ1tK,GAAI+7O,EAAcQ,YAAYvrO,IAC9B3hC,UACEhZ,KAAKqX,MAAMkoQ,eAAiBmG,EAAcQ,YAAYvrO,KAClD,UAACi2N,EAAUgV,iCAAX,QAAwC,GAAK,IAC3C,6BACA,kCACF,oBAEN1kL,QAAS,SAACriF,GACR,EAAKgvD,SAAS,CAAEqpG,UAAU,IACtB,EAAK1nK,MAAMw3Q,SAAS,EAAKx3Q,MAAMw3Q,QAAQ,GAC3C,EAAKD,gBAAgBrB,EAAcQ,YACpC,EAdH,UAgBE,gBAAKltQ,UAAU,eAAf,UACE,UAAC,GAAD,WACGhZ,KAAK8+Q,SAAS4G,EAAcQ,aAC5BlmR,KAAKg/Q,QAAQpO,EAAUgV,qCAKhC,SAAC,QAAD,CAAU5sQ,UAAU,wBAApB,UACE,SAAC,QAAD,CACEk2J,GAAImoC,GACJ1tK,GAAI+7O,EAAcU,WAAWzrO,IAC7B3hC,UACEhZ,KAAKqX,MAAMkoQ,eAAiBmG,EAAcU,WAAWzrO,KACjD,UAACi2N,EAAUiV,gCAAX,QAAuC,GAAK,IAC1C,6BACA,kCACF,oBAEN3kL,QAAS,SAACriF,GACR,EAAKgvD,SAAS,CAAEqpG,UAAU,IACtB,EAAK1nK,MAAMw3Q,SAAS,EAAKx3Q,MAAMw3Q,QAAQ,GAC3C,EAAKD,gBAAgBrB,EAAcU,WACpC,EAdH,UAgBE,gBAAKptQ,UAAU,eAAf,UACE,UAAC,GAAD,WACGhZ,KAAK8+Q,SAAS4G,EAAcU,YAC5BpmR,KAAKg/Q,QAAQpO,EAAUiV,oCAkBhC,SAAC,QAAD,CAAU7sQ,UAAU,wBAApB,UACE,SAAC,QAAD,CACEk2J,GAAImoC,GACJ1tK,GAAI+7O,EAAcY,UAAU3rO,IAC5B3hC,UACEhZ,KAAKqX,MAAMkoQ,eAAiBmG,EAAcY,UAAU3rO,KAChD,UAACi2N,EAAUkV,4BAAX,QAAmC,GAAK,IACtC,6BACA,kCACF,oBAEN5kL,QAAS,SAACriF,GACR,EAAKgvD,SAAS,CAAEqpG,UAAU,IACtB,EAAK1nK,MAAMw3Q,SAAS,EAAKx3Q,MAAMw3Q,QAAQ,GAC3C,EAAKD,gBAAgBrB,EAAcY,UACpC,EAdH,UAgBE,gBAAKttQ,UAAU,eAAf,UACE,UAAC,GAAD,WACGhZ,KAAK8+Q,SAAS4G,EAAcY,WAC5BtmR,KAAKg/Q,QAAQpO,EAAUqW,iCAKhC,SAAC,QAAD,CAAUjuQ,UAAU,wBAApB,UACE,SAAC,QAAD,CACEk2J,GAAImoC,GACJ1tK,GAAI+7O,EAAcc,eAAe7rO,IACjC3hC,UACEhZ,KAAKqX,MAAMkoQ,eAAiBmG,EAAcc,eAAe7rO,KACrD,UAACi2N,EAAUkV,4BAAX,QAAmC,GAAK,IACtC,6BACA,kCACF,oBAEN5kL,QAAS,SAACriF,GACR,EAAKgvD,SAAS,CAAEqpG,UAAU,IACtB,EAAK1nK,MAAMw3Q,SAAS,EAAKx3Q,MAAMw3Q,QAAQ,GAC3C,EAAKD,gBAAgBrB,EAAcc,eACpC,EAdH,UAgBE,gBAAKxtQ,UAAU,eAAf,UACE,UAAC,GAAD,WACGhZ,KAAK8+Q,SAAS4G,EAAcc,gBAC5BxmR,KAAKg/Q,QAAQpO,EAAUkV,oCASzC,GA73CH,sCA+3CE,WAA4B,IAAD,OACrBtG,EAAUX,EAAQW,QAGlB73P,GAFU3nB,KAAKisK,cAGjB,gBAAKjzJ,UAAU,+BAAf,UACE,0BACE,gBAAKA,UAAU,eAAf,UACE,SAAC,GAAD,UAAMhZ,KAAK++Q,aAAaS,EAAQsC,yBAMpCoF,GACF,SAAC,QAAD,CAAUluQ,UAAU,wBAApB,UACE,SAAC,QAAD,CACEk2J,GAAImoC,GACJ1tK,GAAI61O,EAAQ2H,mBAAmBxsO,IAC/B3hC,UACEhZ,KAAKqX,MAAMkoQ,eAAiBC,EAAQ2H,mBAAmBxsO,IACnD,6BACA,oBAENumD,QAAS,SAACriF,GACR,EAAKgvD,SAAS,CAAEqpG,UAAU,IACtB,EAAK1nK,MAAMw3Q,SAAS,EAAKx3Q,MAAMw3Q,QAAQ,GAC3C,EAAKD,gBAAgBvH,EAAQ2H,mBAC9B,EAZH,UAcE,gBAAKnuQ,UAAU,eAAf,UACE,SAAC,GAAD,UAAMhZ,KAAKonR,YAAY5H,EAAQ2H,4BAoDvC,OACE,gCACGx/P,EACAu/P,IAGN,GAx9CH,8CA09CE,WAAoC,IAAD,qBAC7B1H,EAAUX,EAAQW,QAClB1gR,EAAUkB,KAAKisK,aAEfo7G,GACF,gBAAKruQ,UAAU,+BAAf,UACE,0BACE,gBAAKA,UAAU,eAAf,UACE,SAAC,GAAD,UAAMhZ,KAAK++Q,aAAaS,EAAQoC,+BAMpC0F,GACF,gBAAKtuQ,UAAU,+BAAf,UACE,0BACE,gBAAKA,UAAU,eAAf,UACE,SAAC,GAAD,UAAMhZ,KAAK++Q,aAAaS,EAAQqC,4BAMpC0F,GACF,SAAC,QAAD,CAAUvuQ,UAAU,wBAApB,UACE,SAAC,QAAD,CACEk2J,GAAImoC,GACJ1tK,GAAI61O,EAAQ4C,UAAUznO,IACtB3hC,UACEhZ,KAAKqX,MAAMkoQ,eAAiBC,EAAQ4C,UAAUznO,KAC1C,oBAAC77C,EAAQo/M,gBAAT,aAAC,EAAkBspE,kCAAnB,QAAiD,GAAK,IACpD,6BACA,kCACF,oBAENtmL,QAAS,SAACriF,GACR,EAAKgvD,SAAS,CAAEqpG,UAAU,IACtB,EAAK1nK,MAAMw3Q,SAAS,EAAKx3Q,MAAMw3Q,QAAQ,GAC3C,EAAKD,gBAAgBvH,EAAQ4C,UAC9B,EAdH,UAgBE,gBAAKppQ,UAAU,eAAf,UACE,UAAC,GAAD,WACGhZ,KAAK8+Q,SAASU,EAAQ4C,WACtBpiR,KAAKwlR,WACJ,gBAAKxsQ,UAAU,wBAAf,oBACAwmQ,EAAQ4C,oBAQhBqF,GACF,SAAC,QAAD,CAAUzuQ,UAAU,wBAApB,UACE,SAAC,QAAD,CACEk2J,GAAImoC,GACJ1tK,GAAI61O,EAAQ0C,UAAUvnO,IACtB3hC,UACEhZ,KAAKqX,MAAMkoQ,eAAiBC,EAAQ0C,UAAUvnO,IAC1C,6BACA,oBANR,UASE,gBAAK3hC,UAAU,eAAf,UACE,UAAC,GAAD,WACGhZ,KAAK8+Q,SAASU,EAAQ0C,WACtBliR,KAAKwlR,WACJ,SAAC/vB,GAAD,CACE32P,QAASA,EACTk3P,MAAM,EACN93C,SAAUp/M,EAAQo/M,SAClB+3C,cAAa,UAAEn3P,EAAQo/M,SAAU63C,yBAApB,qBASvB2xB,GACF,SAAC,QAAD,CAAU1uQ,UAAU,wBAApB,UACE,SAAC,QAAD,CACEk2J,GAAImoC,GACJ1tK,GAAI61O,EAAQhiB,SAAS7iN,IACrB3hC,UACEhZ,KAAKqX,MAAMkoQ,eAAiBC,EAAQhiB,SAAS7iN,KACzC,oBAAC77C,EAAQo/M,gBAAT,aAAC,EAAkBg5C,iCAAnB,QAAgD,GAAK,IACnD,6BACA,kCACF,oBAENh2J,QAAS,SAACriF,GACR,EAAKgvD,SAAS,CAAEqpG,UAAU,IACtB,EAAK1nK,MAAMw3Q,SAAS,EAAKx3Q,MAAMw3Q,QAAQ,GAC3C,EAAKD,gBAAgBvH,EAAQhiB,SAC9B,EAdH,UAgBE,gBAAKxkP,UAAU,eAAf,UACE,UAAC,GAAD,WACGhZ,KAAK8+Q,SAASU,EAAQhiB,UACtBx9P,KAAKwlR,WACJ,gBAAKxsQ,UAAU,wBAAf,oBACAwmQ,EAAQhiB,mBAQpB,OACE,iCACG,UAAA1+P,EAAQo/M,gBAAR,eAAkBjgN,QAAS69M,GAAa+4C,mBACrCwyB,EACAC,EACHC,EACAE,GACA,UAAA3oR,EAAQo/M,gBAAR,eAAkBjgN,QAAS69M,GAAa+4C,oBACvC70P,KAAKm/Q,gBACNuI,IAGN,GAxlDH,mCA0lDE,SAAsBl/Q,GAAS,IAAD,EACxB1J,EAAUkB,KAAKisK,aACf07G,EAA6B,CAC/B9H,UAAWr3Q,EAAE5C,OAAOjK,MACpBmkR,eAAgB9/Q,KAAKqX,MAAMyoQ,eAC3BqB,aAAcnhR,KAAKqX,MAAMkkP,KACzBykB,aAAchgR,KAAKqX,MAAM2oQ,aACzBD,UAAW//Q,KAAKqX,MAAM0oQ,WAExBjhR,EAAQ0gN,sBAAsBmoE,GAI5B,UAAA3nR,KAAKqX,MAAM4oQ,0BAAX,SAA+B7wP,SAC/BpvB,KAAKqX,MAAM4oQ,mBAAmB7wP,QAAQzzB,QAAU6M,EAAE5C,OAAOjK,QAEzDqE,KAAKqX,MAAM4oQ,mBAAmB7wP,QAAQzzB,MAAQ6M,EAAE5C,OAAOjK,OAGzDqE,KAAK6tE,SAAS,CAAEgyM,UAAWr3Q,EAAE5C,OAAOjK,OACrC,GA9mDH,wCAgnDE,SAA2B6M,GAAS,IAAD,EAC7B1J,EAAUkB,KAAKisK,aACf07G,EAA6B,CAC/B9H,UAAW7/Q,KAAKqX,MAAMwoQ,UACtBC,eAAgBt3Q,EAAE5C,OAAOjK,MACzBwlR,aAAcnhR,KAAKqX,MAAMkkP,KACzBykB,aAAchgR,KAAKqX,MAAM2oQ,aACzBD,UAAW//Q,KAAKqX,MAAM0oQ,WAExBjhR,EAAQ0gN,sBAAsBmoE,GAI5B,UAAA3nR,KAAKqX,MAAM6oQ,+BAAX,SAAoC9wP,SACpCpvB,KAAKqX,MAAM6oQ,wBAAwB9wP,QAAQzzB,QAAU6M,EAAE5C,OAAOjK,QAE9DqE,KAAKqX,MAAM6oQ,wBAAwB9wP,QAAQzzB,MAAQ6M,EAAE5C,OAAOjK,OAG9DqE,KAAK6tE,SAAS,CAAEiyM,eAAgBt3Q,EAAE5C,OAAOjK,OAC1C,GApoDH,8BAsoDE,SAAiB6M,GAAS,IAAD,EACnB1J,EAAUkB,KAAKisK,aACf07G,EAA6B,CAC/B9H,UAAW7/Q,KAAKqX,MAAMwoQ,UACtBC,eAAgB9/Q,KAAKqX,MAAMyoQ,eAC3BqB,aAAc34Q,EAAE5C,OAAOjK,MACvBqkR,aAAchgR,KAAKqX,MAAM2oQ,aACzBD,UAAW//Q,KAAKqX,MAAM0oQ,WAExBjhR,EAAQ0gN,sBAAsBmoE,GAI5B,UAAA3nR,KAAKqX,MAAM8oQ,qBAAX,SAA0B/wP,SAC1BpvB,KAAKqX,MAAM8oQ,cAAc/wP,QAAQzzB,QAAU6M,EAAE5C,OAAOjK,QAEpDqE,KAAKqX,MAAM8oQ,cAAc/wP,QAAQzzB,MAAQ6M,EAAE5C,OAAOjK,OAGpDqE,KAAK6tE,SAAS,CAAE0tL,KAAM/yP,EAAE5C,OAAOjK,OAChC,GA1pDH,mCA4pDE,SAAsB6M,GAAS,IAAD,EACxB1J,EAAUkB,KAAKisK,aACf07G,EAA6B,CAC/B9H,UAAW7/Q,KAAKqX,MAAMwoQ,UACtBC,eAAgB9/Q,KAAKqX,MAAMyoQ,eAC3BqB,aAAcnhR,KAAKqX,MAAMkkP,KACzBykB,aAAchgR,KAAKqX,MAAM2oQ,aACzBD,UAAWv3Q,EAAE5C,OAAOjK,OAEtBmD,EAAQ0gN,sBAAsBmoE,GAG9B,IAAIC,EAAc3K,GAAW/mP,MAC3B,SAAC+S,GAAD,OAAOA,EAAE7nC,KAAK4F,aAAewB,EAAE5C,OAAOjK,KAAtC,IAGEksR,EAAc,EADH5K,GAAW3gR,QAAQsrR,GAGhC,UAAA5nR,KAAKqX,MAAM+oQ,oBAAX,SAAyBhxP,SACzBpvB,KAAKqX,MAAM+oQ,aAAahxP,QAAQzzB,QAAUksR,IAE1C7nR,KAAKqX,MAAM+oQ,aAAahxP,QAAQzzB,MAAQksR,GAG1C7nR,KAAK6tE,SAAS,CAAEkyM,UAAWv3Q,EAAE5C,OAAOjK,OACrC,GArrDH,yCAurDE,SAA4B6M,GAC1B,IAAI1J,EAAUkB,KAAKisK,aACftwK,EAAQshR,GAAY,EAAIz0Q,EAAE5C,OAAOjK,OAAkByF,KACnDumR,EAA6B,CAC/B9H,UAAW7/Q,KAAKqX,MAAMwoQ,UACtBC,eAAgB9/Q,KAAKqX,MAAMyoQ,eAC3BqB,aAAcnhR,KAAKqX,MAAMkkP,KACzBykB,aAAchgR,KAAKqX,MAAM2oQ,aACzBD,UAAWpkR,GAEbmD,EAAQ0gN,sBAAsBmoE,GAC9B7oR,EAAQ0gN,sBAAsB,CAAEugE,UAAWpkR,IAE3CqE,KAAK6tE,SAAS,CAAEkyM,UAAWpkR,GAC5B,GArsDH,sCAusDE,SAAyB6M,GACvB,IAAI1J,EAAUkB,KAAKisK,aACf07G,EAA6B,CAC/B9H,UAAW7/Q,KAAKqX,MAAMwoQ,UACtBC,eAAgB9/Q,KAAKqX,MAAMyoQ,eAC3BqB,aAAcnhR,KAAKqX,MAAMkkP,KACzBwkB,UAAW//Q,KAAKqX,MAAM0oQ,UACtBC,aAAcx3Q,EAAE5C,OAAOi8H,SAEzB/iI,EAAQ0gN,sBAAsBmoE,GAC9B3nR,KAAK6tE,SAAS,CAAEmyM,aAAcx3Q,EAAE5C,OAAOi8H,SACxC,GAltDH,oBAotDE,WAAU,IAAD,qCACDj2H,EAAWD,OAAOC,SAExB,GAAI5L,KAAKqX,MAAMyvJ,QAMb,MAH6B,kBAAzB9mK,KAAKqX,MAAMqiL,WACb15L,KAAKshR,aAEA,wBAGT,GAAIthR,KAAKqX,MAAMmhQ,uBAEb,OADAx4Q,KAAK6tE,SAAS,CAAE2qM,wBAAwB,KACjC,SAAClnE,GAAD,CAAU3nK,GAAG,cAGtB,IAAI24O,EAAOzD,EAAQyD,KACf9C,EAAUX,EAAQW,QAClB1gR,EAAUkB,KAAKisK,aACnBntK,EAAQ4gN,0BAER,IAAMqxD,EAAa/wQ,KAAKqX,MAAM05P,WAC9B,IACE/wQ,KAAKwP,MAAMs4Q,eACK,OAAf/W,QAAsC1zQ,IAAf0zQ,EAF1B,CAOA,IAAI9wD,EAAmB8wD,EAAW18Q,OAAS,EAAI08Q,EAAW,GAAK,KAC3D/wD,EAAqB+wD,EAAW18Q,OAAS,EAAI08Q,EAAW,GAAK,KAC7DgX,EAAO,oBAAGjpR,EAAQo/M,gBAAX,aAAG,EAAkB+B,wBAArB,QAAyCA,EAChDl9C,EAAS,oBAAGjkK,EAAQo/M,gBAAX,aAAG,EAAkB8B,0BAArB,QAA2CA,EAEpDwgE,EAAgB,EACpBz8Q,OAAOq7C,QAAQogO,GAASjiR,SAAQ,YAAmB,IAAD,UAAX5B,GAAW,WAC5C,EAAK0b,MAAMkoQ,eAAiB5jR,EAAMg/C,MACpC6lO,EAAgB7kR,EAAM8kR,MAEzB,IAED,IAAIuH,EAAkBhoR,KAAKioR,qBACvBC,EAAuBloR,KAAKmoR,wBAAwBH,GACpDI,EAAc,CAACnsE,GAAeosE,QAAQ73Q,SACxC1R,EAAQo/M,SAAUziN,QAEhB6sR,EAAY,CACdrsE,GAAessE,QACftsE,GAAeusE,gBACfvsE,GAAewsE,YACfxsE,GAAeysE,YACfzsE,GAAe0sE,qBACf1sE,GAAeosE,QACf73Q,SAAS1R,EAAQo/M,SAAUziN,QACzBmtR,EACFN,GACA,CACErsE,GAAe43D,aACf53D,GAAe4sE,qBACfr4Q,SAAS1R,EAAQo/M,SAAUziN,SAC7BqD,EAAQo/M,SAAUkxD,eAAiBjD,GAAQkD,YAE7C,OACE,iCACE,UAAC,GAAD,CACEr2P,UAAU,YACVsoK,OAAO,KACPpK,SAAQ,UAAEl3K,KAAKqX,MAAM6/J,gBAAb,SAHV,WAKE,SAAC,UAAD,CACEh2E,QAAS,wBACP,EAAKrzB,SAAS,CAAEqpG,WAAU,UAAE,EAAK7/J,MAAM6/J,gBAAb,WADnB,EAGT,gBAAc,sBAEhB,SAAC,YAAD,CAAiBtyK,GAAG,mBAApB,SACGgH,EAASH,SAAS+E,SAAS,iBAC1B,+BACE,UAAC,GAAD,YACE,SAAC,GAAD,CAAKwI,UAAU,YAAf,UACE,SAAC,GAAD,CACEgkM,IAAK,EACLt5F,UAAU,aACV1qG,UAAU,gBACVoH,MAAO,CAAEukP,SAAU,KAJrB,UAMG,UAAA7lQ,EAAQo/M,gBAAR,eAAkBjgN,QACnB69M,GAAa+4C,oBACX,eAAI77O,UAAU,SAAd,gCAEA,eAAIA,UAAU,SAAd,uCAIN,SAAC,GAAD,CAAKA,UAAU,cAAf,UACE,UAAC,GAAD,CACEgkM,IAAK,EACLhkM,UAAU,gBACV0qG,UAAU,WACVtjG,MAAO,CAAE0oQ,SAAU,KAJrB,WAME,UAAC,GAAD,YACE,SAAC,GAAD,CAAK9vQ,UAAU,OAAf,UACE,SAACmkQ,GAAD,CACEv4Q,GAAG,YAEHmR,OACE,gDACc,8CAGhBpa,MAAOqE,KAAKqX,MAAMwoQ,UAClBzvQ,QAAQ,cACRs9G,SAAU,SAACllH,GAAD,OAAO,EAAKugR,sBAAsBvgR,EAAlC,GARN,gBAWR,UAAC,GAAD,CAAKwQ,UAAU,OAAf,WACE,SAAC,GAAD,CACErF,IAAK3T,KAAKqX,MAAM4oQ,mBAChBt3P,aAAc3oB,KAAKqX,MAAMwoQ,UACzB51B,UAAU,EACVjxN,IAAI,SACJC,IAAI,UACJg4B,KAAK,QACLj4C,UAAU,oBACV00G,SAAU,SAACllH,GAAD,OAAO,EAAKugR,sBAAsBvgR,EAAlC,KAGZ,UAAC,GAAD,CACEk7G,UAAU,aACV1qG,UAAU,6CAFZ,WAIE,gBAAKoH,MAAO,CAAEQ,YAAa,IAA3B,UACE,cAAG5H,UAAU,iBAAb,4BAEF,gBAAKoH,MAAO,CAAEjF,aAAc,IAA5B,UACE,cAAGnC,UAAU,kBAAb,oCAMR,UAAC,GAAD,YACE,SAAC,GAAD,CAAKA,UAAU,OAAf,UACE,SAACmkQ,GAAD,CACEv4Q,GAAG,iBAEHmR,OACE,iCACE,4CADF,uBAIFpa,MAAOqE,KAAKqX,MAAMyoQ,eAClB1vQ,QAAQ,cACRs9G,SAAU,SAACllH,GAAD,OAAO,EAAKwgR,2BAA2BxgR,EAAvC,GARN,qBAWR,UAAC,GAAD,CAAKwQ,UAAU,OAAf,WACE,SAAC,GAAD,CACErF,IAAK3T,KAAKqX,MAAM6oQ,wBAChBv3P,aAAc3oB,KAAKqX,MAAMyoQ,eACzB71B,UAAU,EACVjxN,IAAI,SACJC,IAAI,UACJg4B,KAAK,QACLj4C,UAAU,oBACV00G,SAAU,SAACllH,GAAD,OAAO,EAAKwgR,2BAA2BxgR,EAAvC,KAEZ,UAAC,GAAD,CACEk7G,UAAU,aACV1qG,UAAU,6CAFZ,WAIE,gBAAKoH,MAAO,CAAEQ,YAAa,IAA3B,UACE,cAAG5H,UAAU,iBAAb,4BAEF,gBAAKoH,MAAO,CAAEjF,aAAc,IAA5B,UACE,cAAGnC,UAAU,kBAAb,oCAMR,UAAC,GAAD,YACE,SAAC,GAAD,CAAKA,UAAU,OAAf,UACE,SAAC4kQ,GAAD,CAEE7nQ,OACE,iCACE,0CADF,oBAIF8nQ,aAAc79Q,KAAKqX,MAAMkkP,KACzBnrP,QAAQ,cACRs9G,SAAU,SAACllH,GAAD,OAAO,EAAKygR,iBAAiBzgR,EAA7B,GARN,WAWR,UAAC,GAAD,CAAKwQ,UAAU,OAAf,WACE,SAAC,GAAD,CACErF,IAAK3T,KAAKqX,MAAM8oQ,cAChBx3P,aAAc3oB,KAAKqX,MAAMkkP,KACzBtR,UAAU,EACVjxN,IAAI,IACJC,IAAI,KACJg4B,KAAK,IACLj4C,UAAU,oBACV00G,SAAU,SAACllH,GAAD,OAAO,EAAKygR,iBAAiBzgR,EAA7B,KAEZ,UAAC,GAAD,CACEk7G,UAAU,aACV1qG,UAAU,6CAFZ,WAIE,gBAAKoH,MAAO,CAAEQ,YAAa,IAA3B,UACE,cAAG5H,UAAU,iBAAb,wBAEF,gBAAKoH,MAAO,CAAEjF,aAAc,IAA5B,UACE,cAAGnC,UAAU,kBAAb,kCAMR,UAAC,GAAD,YACE,SAAC,GAAD,CAAKA,UAAU,OAAf,UACE,SAAC0lQ,GAAD,CACE3oQ,OACE,iCACE,oCADF,oBAKF6oQ,IAAK5+Q,KAAKqX,MAAM0oQ,WADZ,eAIR,UAAC,GAAD,CAAK/mQ,UAAU,OAAf,WACE,SAAC,GAAD,CACErF,IAAK3T,KAAKqX,MAAM+oQ,aAChBz3P,aAAcs0P,GAAW3gR,QACvB2gR,GAAW/mP,MACT,SAAC+S,GAAD,OACEA,EAAEttC,MAAMqL,aAAe,EAAKqQ,MAAM0oQ,SADpC,KAIJ91B,UAAU,EACVjxN,IAAI,IACJC,IAAI,IACJg4B,KAAK,IACLj4C,UAAU,oBACV00G,SAAU,SAACllH,GAAD,OACR,EAAK0gR,4BAA4B1gR,EADzB,KAIZ,UAAC,GAAD,CACEk7G,UAAU,aACV1qG,UAAU,6CAFZ,WAIE,gBAAKoH,MAAO,CAAEQ,YAAa,IAA3B,UACE,cAAG5H,UAAU,iBAAb,uBAEF,gBAAKoH,MAAO,CAAEjF,aAAc,IAA5B,UACE,cAAGnC,UAAU,kBAAb,2BAMR,SAAC8kQ,GAAD,CACEl5Q,GAAG,eAEHmR,OACE,iCACE,yCADF,mBAIFpa,MAAOqE,KAAKqX,MAAMyoQ,eAClB1vQ,QAAQ,cACRs9G,SAAU,SAACllH,GAAD,OAAO,EAAK2gR,yBAAyB3gR,EAArC,GARN,2BAed,UAAC,GAAD,YACE,SAAC,GAAD,CAAKwQ,UAAU,OAAf,UACE,UAAC,GAAD,CACEgkM,IAAK,EACLt5F,UAAU,aACV1qG,UAAU,iBAHZ,UAKGovQ,GACC,UAAC/wE,GAAD,CAAM1tK,GAAI,IAAK3wB,UAAS,uBAAxB,gBACMspQ,EAAKhsB,QAAQt1E,MADnB,KAC0B,cAAGhoK,UAAU,mBAGvC,UAACq+L,GAAD,CACE1tK,GAAI24O,EAAKhsB,QAAQ37M,IACjB3hC,UAAS,sBACPhZ,KAAKqX,MAAMqiL,YAAc4oF,EAAKhsB,QAAQ37M,IAClC,WACA,IAENumD,QAAS,SAAC14F,GACR,EAAKoyL,aAAa0nF,EAAKhsB,QAAQ37M,IAChC,EATH,gBAWM2nO,EAAKhsB,QAAQt1E,SAGpBsnG,GACC,UAACjxE,GAAD,CAAM1tK,GAAI,IAAK3wB,UAAS,uBAAxB,gBACMspQ,EAAK8G,IAAIpoG,MADf,KACsB,cAAGhoK,UAAU,mBAGnC,UAACq+L,GAAD,CACE1tK,GAAI24O,EAAK8G,IAAIzuO,IACb3hC,UAAS,sBACPhZ,KAAKqX,MAAMqiL,YAAc4oF,EAAK8G,IAAIzuO,IAC9B,WACA,IAENumD,QAAS,SAAC14F,GACR,EAAKoyL,aAAa0nF,EAAK8G,IAAIzuO,IAC5B,EATH,gBAWM2nO,EAAK8G,IAAIpoG,SAGhB4nG,GACC,UAACvxE,GAAD,CAAM1tK,GAAI,IAAK3wB,UAAS,uBAAxB,gBACMspQ,EAAKD,WAAWrhG,MAAO,KAC3B,cAAGhoK,UAAU,mBAGf,UAACq+L,GAAD,CACE1tK,GAAI24O,EAAKD,WAAW1nO,IACpB3hC,UAAS,sBACPhZ,KAAKqX,MAAMqiL,YAAc4oF,EAAKD,WAAW1nO,IACrC,WACA,IAENumD,QAAS,SAAC14F,GACR,EAAKoyL,aAAa0nF,EAAKD,WAAW1nO,IACnC,EATH,gBAWM2nO,EAAKD,WAAWrhG,eAK5B,SAAC,GAAD,WACE,SAAC,GAAD,WACE,iBAAKhoK,UAAU,gBAAf,UACGhZ,KAAKwP,MAAMs4Q,eAAiB/W,EAAW18Q,OAAS,IAC/C,8BACG2L,KAAKqX,MAAMqiL,YAAc4oF,EAAKhsB,QAAQ37M,MACrC,iCACE,gBAAK3hC,UAAU,+BAAf,UACE,0BACE,gBAAKA,UAAU,eAAf,UACE,SAAC,GAAD,UACGhZ,KAAK++Q,aACJS,EAAQmC,6BAMjB3hR,KAAKk/Q,oBAAoB6I,EAASvH,IAGlC,UAAA1hR,EAAQo/M,gBAAR,eAAkB8B,qBACjBhgN,KAAKk/Q,oBACHn8G,EACAy9G,IAGJ,SAAC,QAAD,CAAUxnQ,UAAU,uBAApB,UACE,SAAC,QAAD,CAAUk2J,GAAImoC,GAAM1tK,GAAI61O,EAAQ6J,SAAS1uO,IAAzC,UACE,gBAAK3hC,UAAU,eAAf,UACE,UAAC,GAAD,WACGhZ,KAAK8+Q,SAASU,EAAQ6J,UACtBrpR,KAAKg/Q,QAAL,oBACClgR,EAAQo/M,gBADT,aACC,EACI24C,iCAFL,QAEkC,aAM3C,SAAC,QAAD,CACE79O,UAAU,uBACVozB,MAAOozO,EAAQ5M,UAAU5xF,MAF3B,UAIE,SAAC,QAAD,CACE9R,GAAImoC,GACJ1tK,GAAI61O,EAAQ5M,UAAUj4N,IACtBumD,QAAS,SAACriF,GACR,EAAKgvD,SAAS,CAAEqpG,UAAU,IAC1B,EAAK6vG,gBAAgBvH,EAAQ5M,UAC9B,EANH,UAQE,gBAAK55P,UAAU,eAAf,UACE,UAAC,GAAD,WACGhZ,KAAK8+Q,SAASU,EAAQ5M,WACtB5yQ,KAAKg/Q,QAAL,oBACClgR,EAAQo/M,gBADT,aACC,EACI44C,gCAFL,QAEiC,GAChC,iBAUjB92P,KAAKwP,MAAMs4Q,eACV9nR,KAAKqX,MAAMqiL,YAAc4oF,EAAK8G,IAAIzuO,MAChC,iCACE,gBAAK3hC,UAAU,+BAAf,UACE,0BACE,gBAAKA,UAAU,eAAf,UACE,UAAC,GAAD,WACGhZ,KAAK8+Q,SAASU,EAAQmC,qBACtB3hR,KAAKspR,YACJ,GACA9J,EAAQmC,oBAAoBhnO,eAMtC,SAAC,QAAD,CAAU3hC,UAAU,uBAApB,UACE,SAAC,QAAD,CAAUk2J,GAAImoC,GAAM1tK,GAAI61O,EAAQlpB,QAAQ37M,IAAxC,UACE,gBAAK3hC,UAAU,eAAf,UACE,UAAC,GAAD,WACGhZ,KAAK8+Q,SAASU,EAAQlpB,SACtBt2P,KAAKg/Q,QACJh/Q,KAAKqX,MAAMojQ,UAAY,EACnB,IADJ,oBAEI37Q,EAAQo/M,gBAFZ,aAEI,EACI44C,gCAHR,QAGoC,GACpC,aAMV,SAAC,QAAD,CAAU99O,UAAU,uBAApB,UACE,SAAC,QAAD,CAAUk2J,GAAImoC,GAAM1tK,GAAI61O,EAAQ4J,IAAIzuO,IAApC,UACE,gBAAK3hC,UAAU,eAAf,UACE,UAAC,GAAD,WACGhZ,KAAK8+Q,SAASU,EAAQ4J,KACtBppR,KAAKg/Q,QAAL,UACCh/Q,KAAKqX,MAAMojQ,iBADZ,QACyB,GACxB,eASfz6Q,KAAKwP,MAAMs4Q,eACV,CAACxF,EAAKhsB,QAAQ37M,IAAK2nO,EAAK8G,IAAIzuO,KAAKnqC,SAC/BxQ,KAAKqX,MAAMqiL,aAEX,gCACG15L,KAAKi/Q,mCACLj/Q,KAAKupR,8BAGXvpR,KAAKwP,MAAMs4Q,eACV9nR,KAAKqX,MAAMqiL,YAAc4oF,EAAKD,WAAW1nO,MACvC,iCACE,gBAAK3hC,UAAU,+BAAf,UACE,0BACE,gBAAKA,UAAU,eAAf,UACE,UAAC,GAAD,WACGhZ,KAAK8+Q,SACJU,EAAQuC,uBAET/hR,KAAKspR,YACJ,GACA9J,EAAQuC,sBAAsBpnO,eAMxC,gCACG36C,KAAKm/Q,eAAc,IACpB,gBAAKnmQ,UAAU,wBAAf,UACE,gBACEA,UACEkvQ,IACA1I,EAAQgF,iBAAiB7pO,IACrB,6BACA,oBALR,UAQE,gBAAK3hC,UAAU,uBAAf,UACE,UAAC,GAAD,WACGhZ,KAAK8+Q,SACJU,EAAQgF,iBACR0D,GAEDloR,KAAKspR,YACJtB,EACAxI,EAAQgF,iBAAiB7pO,KACzB,aAMV,gBAAK3hC,UAAU,wBAAf,UACE,gBACEA,UACEkvQ,IACA1I,EAAQoD,aAAajoO,IACjB,6BACA,oBALR,UAQE,gBAAK3hC,UAAU,uBAAf,UACE,UAAC,GAAD,WACGhZ,KAAK8+Q,SACJU,EAAQoD,aACRsF,GAEDloR,KAAKspR,YACJtB,EACAxI,EAAQoD,aAAajoO,KACrB,aAMT,UAAA77C,EAAQo/M,gBAAR,eAAkBsrE,mBACjB,gBAAKxwQ,UAAU,wBAAf,UACE,gBACEA,UACEkvQ,IACA1I,EAAQsD,qBAAqBnoO,IACzB,6BACA,oBALR,UAQE,gBAAK3hC,UAAU,uBAAf,UACE,UAAC,GAAD,WACGhZ,KAAK8+Q,SACJU,EAAQsD,qBACRoF,GAEDloR,KAAKspR,YACJtB,EACAxI,EAAQsD,qBAAqBnoO,KAC7B,YAOX77C,EAAQo/M,SAAUjgN,OACjB69M,GAAak7C,2BACb,gBAAKh+O,UAAU,wBAAf,UACE,gBACEA,UACEkvQ,IACA1I,EAAQkF,yBAAyB/pO,IAC7B,6BACA,oBALR,UAQE,gBAAK3hC,UAAU,uBAAf,UACE,UAAC,GAAD,WACGhZ,KAAK8+Q,SACJU,EAAQkF,yBACRwD,GAEDppR,EAAQo/M,SACN0lE,sBACH1nE,GAAWqiD,IACPv+P,KAAKg/Q,QAAQ,KACbh/Q,KAAKwlR,WACH,mBACExsQ,UAAU,wBACVkoF,QAASlhG,KAAKo/Q,kBAFhB,qBAMAI,EAAQkF,yBACRwD,aAShB,SAAC,QAAD,CAAUlvQ,UAAU,wBAApB,UACE,SAAC,QAAD,CACEA,UACEkvQ,IACA1I,EAAQiF,eAAe9pO,IACnB,6BACA,oBAENu0H,GAAImoC,GACJ1tK,GAAI61O,EAAQiF,eAAe9pO,IAR7B,UAUE,gBAAK3hC,UAAU,uBAAf,UACE,UAAC,GAAD,WACGhZ,KAAK8+Q,SACJU,EAAQiF,eACRyD,GAEDloR,KAAKspR,YACJtB,EACAxI,EAAQiF,eAAe9pO,KACvB,gBAUZ,gBAAK3hC,UAAU,+BAAf,UACE,0BACE,gBAAKA,UAAU,eAAf,UACE,UAAC,GAAD,WACGhZ,KAAK8+Q,SACJU,EAAQwC,WACRkG,GAEDloR,KAAKspR,YACJtB,EACAxI,EAAQwC,WAAWrnO,eAM7B,iCACE,gBAAK3hC,UAAU,wBAAf,UACE,gBACEA,UACEkvQ,IACA1I,EAAQ0F,cAAcvqO,IAClB,6BACA,oBALR,UAQE,gBAAK3hC,UAAU,uBAAf,UACE,UAAC,GAAD,WACGhZ,KAAK8+Q,SACJU,EAAQ0F,cACRgD,GAEDppR,EAAQo/M,SAAUmhE,iBACfr/Q,KAAKg/Q,QAAQ,KACbh/Q,KAAKwlR,WACH,mBACExsQ,UAAU,wBACVkoF,QAASlhG,KAAKq/Q,iBAFhB,qBAMAG,EAAQ0F,cACRgD,aAMd,gBAAKlvQ,UAAU,wBAAf,UACE,gBACEA,UACEkvQ,IACA1I,EAAQ2F,aAAaxqO,IACjB,6BACA,oBALR,UAQE,gBAAK3hC,UAAU,uBAAf,UACE,UAAC,GAAD,WACGhZ,KAAK8+Q,SACJU,EAAQ2F,aACR+C,GAEDppR,EAAQo/M,SAAU+mE,qBACfjlR,KAAKypR,SACH,SAAC,GAAD,CACE7c,aAAa,EACbD,YAAY,QACZ75Q,KACEgM,EAAQo/M,SACL+mE,wBAITjlR,KAAKwlR,WACH,mBACExsQ,UAAU,wBACVkoF,QAAS,WACP,EAAKrzB,SAAS,CACZ8xM,oBAAoB,GAEvB,EANH,oBAUAH,EAAQ2F,aACR+C,aAMd,gBAAKlvQ,UAAU,wBAAf,UACE,gBACEA,UACEkvQ,IACA1I,EAAQ4F,YAAYzqO,IAChB,6BACA,oBALR,UAQE,gBAAK3hC,UAAU,uBAAf,UACE,UAAC,GAAD,WACGhZ,KAAK8+Q,SACJU,EAAQ4F,YACR8C,GAEDloR,KAAKspR,YACJtB,EACAxI,EAAQ4F,YAAYzqO,oCAgBpD,gBAAK3hC,UAAU,YAAf,UACE,SAAC,SAAD,WACE,SAACq+L,GAAD,CAAM1tK,GAAG,aAAT,UACE,gBAAK3c,IAAK08P,GAAMlvQ,MAAM,QAAQmvQ,IAAI,iBAIxC,UAAC,GAAD,CACEpjC,UAAQ,EACR7yO,KAAK,KACLgoK,KAAM17K,KAAKqX,MAAMihQ,oBACjB/7F,OAAQ,WACN,EAAK1uG,SAAS,CAAEyqM,qBAAqB,GACtC,EANH,WAQE,SAAC,UAAD,CAAc/5F,aAAW,KACzB,UAAC,QAAD,YACE,iBAAKvlK,UAAU,6BAAf,WACE,eAAIA,UAAU,SAAd,mCACA,cAAGA,UAAU,GAAb,2KAMF,UAAC,GAAD,CACE0qG,UAAU,aACVs5F,IAAK,EACLhkM,UAAU,6BAHZ,WAKE,mBACEA,UAAU,2BACVkoF,QAAS,WACP,EAAKrzB,SAAS,CAAEwqM,kBAAkB,IAClC,EAAKW,gBACN,EALH,SAOGh5Q,KAAKqX,MAAMghQ,kBACV,SAAC,GAAD,CAAe3kQ,KAAK,KAAKwK,UAAU,SAAS64J,KAAK,WAEjD,UAGJ,mBACE/9J,UAAU,uBACVkoF,QAAS,WACP,EAAKrzB,SAAS,CAAEyqM,qBAAqB,GACtC,EAJH,uBAUJ,SAAC,UAAD,QAEF,UAAC,GAAD,CACE9xB,WAAW,UACX9qE,MAAO17K,KAAKqX,MAAMsoQ,mBAClBpjG,OAAQ,WACN,EAAK1uG,SAAS,CAAE8xM,oBAAoB,GACrC,EACDp5B,UAAQ,EANV,WAQE,SAAC,UAAD,CAAchoE,aAAW,KACzB,SAAC,QAAD,WACE,SAAC,GAAD,WACE,SAAC,GAAD,WACE,SAAC,GAAD,WACE,SAAC,GAAD,CACE6xE,OAAK,EACL7lN,KAAK,kBACLoS,MAAO38C,KAAKqX,MAAMqoQ,aAAazsB,eAC7B,uCAOZ,UAAC,UAAD,WACGjzP,KAAKqX,MAAMguQ,kBACV,SAAC,GAAD,CAAennQ,UAAU,SAAS64J,KAAK,YAEvC/2K,KAAKqX,MAAMguQ,kBACX,mBACErsQ,UAAU,4BACVkoF,QAASlhG,KAAKs/Q,4BAFhB,0BAlzBT,CA6zBF,KA7iFH,GAA6Bv/D,IAAhB8+D,GACJ3sK,YAAc8rG,GADV6gE,GAGJyD,KAAO,CACZsH,UAAW,CAAE5oG,MAAO,YAAarmI,IAAK,cACtC27M,QAAS,CAAEt1E,MAAO,QAASrmI,IAAK,YAEhCyuO,IAAK,CAAEpoG,MAAO,WAAYrmI,IAAK,oBAC/B0nO,WAAY,CAAErhG,MAAO,aAAcrmI,IAAK,eACxCkvO,cAAe,CAAE7oG,MAAO,gBAAiBrmI,IAAK,mBAC9Ci4N,UAAW,CAAE5xF,MAAO,YAAarmI,IAAK,cACtCmvO,mBAAoB,CAClB9oG,MAAO,sBACPrmI,IAAK,yBAbEkkO,GAiBJW,QAAU,CACfoK,UAAW,CACT5oG,MAAO,YACPrmI,IAAK,aACL4lO,UArBO1B,GAqBSyD,KAAKhsB,QAAQ37M,IAC7B8lO,MAAO,EACPxvN,KAAM,GAIR0wN,oBAAqB,CACnB3gG,MAAO,wBACPrmI,IAAK,sBACL4lO,UA9BO1B,GA8BSyD,KAAKhsB,QAAQ37M,IAC7B8lO,MAAO,EACPsJ,KAAM,GAGRtK,WAAY,CACVz+F,MAAO,aACPrmI,IAAK,aACL4lO,UAtCO1B,GAsCSyD,KAAKhsB,QAAQ37M,IAC7B8lO,MAAO,EACPxvN,KAAM,EACNswN,KAAM,eAER0E,UAAW,CACTjlG,MAAO,uBACPrmI,IAAK,aACL4lO,UA9CO1B,GA8CSyD,KAAKhsB,QAAQ37M,IAC7B8lO,MAAO,EACPxvN,KAAM,EACNswN,KAAM,uBAER4E,aAAc,CACZnlG,MAAO,kBACPrmI,IAAK,gBACL4lO,UAtDO1B,GAsDSyD,KAAKhsB,QAAQ37M,IAC7B8lO,MAAO,EACPxvN,KAAM,EACNswN,KAAM,4BAER8E,YAAa,CACXrlG,MAAO,sBACPrmI,IAAK,eACL4lO,UA9DO1B,GA8DSyD,KAAKhsB,QAAQ37M,IAC7B8lO,MAAO,EACPxvN,KAAM,EACNswN,KAAM,uBAIRgF,WAAY,CACVvlG,MAAO,eACPrmI,IAAK,cACL4lO,UAxEO1B,GAwESyD,KAAKhsB,QAAQ37M,IAC7B8lO,MAAO,EACPxvN,KAAM,EACNswN,KAAM,2BAERkF,gBAAiB,CACfzlG,MAAO,iBACPrmI,IAAK,mBACL4lO,UAhFO1B,GAgFSyD,KAAKhsB,QAAQ37M,IAC7B8lO,MAAO,EACPxvN,KAAM,EACNswN,KAAM,oBAIRT,WAAY,CACV9/F,MAAO,aACPrmI,IAAK,aACL4lO,UA1FO1B,GA0FSyD,KAAKhsB,QAAQ37M,IAC7B8lO,MAAO,EACPxvN,KAAM,EACNswN,KAAM,eAERmF,UAAW,CACT1lG,MAAO,uBACPrmI,IAAK,aACL4lO,UAlGO1B,GAkGSyD,KAAKhsB,QAAQ37M,IAC7B8lO,MAAO,EACPxvN,KAAM,EACNswN,KAAM,uBAERoF,aAAc,CACZ3lG,MAAO,kBACPrmI,IAAK,gBACL4lO,UA1GO1B,GA0GSyD,KAAKhsB,QAAQ37M,IAC7B8lO,MAAO,EACPxvN,KAAM,EACNswN,KAAM,4BAERqF,YAAa,CACX5lG,MAAO,sBACPrmI,IAAK,eACL4lO,UAlHO1B,GAkHSyD,KAAKhsB,QAAQ37M,IAC7B8lO,MAAO,EACPxvN,KAAM,EACNswN,KAAM,uBAIRsF,WAAY,CACV7lG,MAAO,eACPrmI,IAAK,cACL4lO,UA5HO1B,GA4HSyD,KAAKhsB,QAAQ37M,IAC7B8lO,MAAO,EACPxvN,KAAM,EACNswN,KAAM,2BAERuF,gBAAiB,CACf9lG,MAAO,iBACPrmI,IAAK,mBACL4lO,UApIO1B,GAoISyD,KAAKhsB,QAAQ37M,IAC7B8lO,MAAO,EACPxvN,KAAM,EACNswN,KAAM,oBAIRzpB,gBAAiB,CACf92E,MAAO,uBACPrmI,IAAK,UACL4lO,UA9IO1B,GA8ISyD,KAAKhsB,QAAQ37M,IAC7B8lO,MAAO,EACPxvN,KAAM,EACNswN,KAAM,gBAER8H,SAAU,CACRroG,MAAO,uBACPrmI,IAAK,UACL4lO,UAtJO1B,GAsJSyD,KAAKhsB,QAAQ37M,IAC7B8lO,MAAO,EACPxvN,KAAM,EACNswN,KAAM,gBAER3O,UAAW,CACT5xF,MAAO,iBACPrmI,IAAK,aACL4lO,UA9JO1B,GA8JSyD,KAAKhsB,QAAQ37M,IAC7B8lO,MAAO,EACPxvN,KAAM,EACNswN,KAAM,sBAIRK,sBAAuB,CACrB5gG,MAAO,mCACPrmI,IAAK,wBACL4lO,UAxKO1B,GAwKSyD,KAAKhsB,QAAQ37M,IAC7B8lO,MAAO,EACPsJ,KAAM,GAERlI,mBAAoB,CAClB7gG,MAAO,wCACPrmI,IAAK,wBACL4lO,UA/KO1B,GA+KSyD,KAAKhsB,QAAQ37M,IAC7B8lO,MAAO,EACPsJ,KAAM,GAERvsB,SAAU,CACRx8E,MAAO,uBACPrmI,IAAK,YACL4lO,UAtLO1B,GAsLSyD,KAAKhsB,QAAQ37M,IAC7B8lO,MAAO,EACPxvN,KAAM,EACNswN,KAAM,eAERa,UAAW,CACTphG,MAAO,yBACPrmI,IAAK,qBACL4lO,UA9LO1B,GA8LSyD,KAAKhsB,QAAQ37M,IAC7B8lO,MAAO,EACPxvN,KAAM,EACNswN,KAAM,eACNyI,SAAS,GAEX9H,UAAW,CACTlhG,MAAO,iBACPrmI,IAAK,aACL4lO,UAvMO1B,GAuMSyD,KAAKhsB,QAAQ37M,IAC7B8lO,MAAO,EACPxvN,KAAM,EACNswN,KAAM,qBACNyI,SAAS,GAEX7H,WAAY,CACVnhG,MAAO,uBACPrmI,IAAK,cACL4lO,UAhNO1B,GAgNSyD,KAAKhsB,QAAQ37M,IAC7B8lO,MAAO,EACPsJ,KAAM,EACNxI,KAAM,oBAERuI,mBAAoB,CAClB9oG,MAAO,sBACPrmI,IAAK,uBACL4lO,UAxNO1B,GAwNSyD,KAAKhsB,QAAQ37M,IAC7B8lO,MAAO,EACPxvN,KAAM,GAIR6wN,eAAgB,CACd9gG,MAAO,mBACPrmI,IAAK,iBACL4lO,UAjOO1B,GAiOSyD,KAAKhsB,QAAQ37M,IAC7B8lO,MAAO,EACPsJ,KAAM,GAkBR5C,mBAAoB,CAClBnmG,MAAO,sBACPrmI,IAAK,wBACL4lO,UAxPO1B,GAwPSyD,KAAKhsB,QAAQ37M,IAC7B8lO,MAAO,EACPxvN,KAAM,EACNswN,KAAM,qBAIRjrB,QAAS,CACPt1E,MAAO,uBACPrmI,IAAK,WACL4lO,UAlQO1B,GAkQSyD,KAAKhsB,QAAQ37M,IAC7B8lO,MAAO,EACPxvN,KAAM,GAERm4N,IAAK,CACHpoG,MAAO,UACPrmI,IAxQOkkO,GAwQGyD,KAAK8G,IAAIzuO,IACnB4lO,UAzQO1B,GAyQSyD,KAAK8G,IAAIzuO,IACzB8lO,MAAO,EACPxvN,KAAM,GAIRoxN,WAAY,CACVrhG,MAhRO69F,GAgRKyD,KAAKD,WAAWrhG,MAC5BrmI,IAjROkkO,GAiRGyD,KAAKD,WAAW1nO,IAC1B4lO,UAlRO1B,GAkRSyD,KAAKD,WAAW1nO,IAChC8lO,MAAO,EACPxvN,KAAM,GAERs0N,sBAAuB,CACrBvkG,MAAO,iBACPrmI,IAAK,cACL4lO,UAzRO1B,GAyRSyD,KAAKhsB,QAAQ37M,IAC7B8lO,MAAO,EACPsJ,KAAM,EACNxI,KAAM,wBAERQ,sBAAuB,CACrB/gG,MAAO,4BACPrmI,IAhSOkkO,GAgSGyD,KAAKD,WAAW1nO,IAC1B4lO,UAjSO1B,GAiSSyD,KAAKD,WAAW1nO,IAChC8lO,MAAO,EACPxvN,KAAM,GAER0zN,eAAgB,CACd3jG,MAAO,wBACPrmI,IAvSOkkO,GAuSGyD,KAAKD,WAAW1nO,IAC1B4lO,UAxSO1B,GAwSSyD,KAAKD,WAAW1nO,IAChC8lO,MAAO,EACPxvN,KAAM,GAERszN,oBAAqB,CACnBvjG,MAAO,wBACPrmI,IAAK,sBACL4lO,UA/SO1B,GA+SSyD,KAAKD,WAAW1nO,IAChC8lO,MAAO,EACPxvN,KAAM,EACNswN,KAAM,uBAERiD,iBAAkB,CAChBxjG,MAAO,sBACPrmI,IAAK,mBACL4lO,UAvTO1B,GAuTSyD,KAAKD,WAAW1nO,IAChC8lO,MAAO,EACPxvN,KAAM,EACNswN,KAAM,mBAERqB,aAAc,CACZ5hG,MAAO,gBACPrmI,IAAK,eACL4lO,UA/TO1B,GA+TSyD,KAAKD,WAAW1nO,IAChC8lO,MAAO,EACPxvN,KAAM,EACNswN,KAAM,sBAERuB,qBAAsB,CACpB9hG,MAAO,0BACPrmI,IAAK,uBACL4lO,UAvUO1B,GAuUSyD,KAAKD,WAAW1nO,IAChC8lO,MAAO,EACPxvN,KAAM,EACNswN,KAAM,eAERkD,eAAgB,CACdzjG,MAAO,2BACPrmI,IAAK,aACL4lO,UA/UO1B,GA+USyD,KAAKD,WAAW1nO,IAChC8lO,MAAO,EACPxvN,KAAM,EACNswN,KAAM,cAERmD,yBAA0B,CACxB1jG,MAAO,oCACPrmI,IAAK,2BACL4lO,UAvVO1B,GAuVSyD,KAAKD,WAAW1nO,IAChC8lO,MAAO,EACPxvN,KAAM,EACNswN,KAAM,mBAERS,WAAY,CACVhhG,MAAO,cACPrmI,IAAK,aACL4lO,UA/VO1B,GA+VSyD,KAAKD,WAAW1nO,IAChC8lO,MAAO,EACPxvN,KAAM,GAERi0N,cAAe,CACblkG,MAAO,6BACPrmI,IAAK,gBACL4lO,UAtWO1B,GAsWSyD,KAAKD,WAAW1nO,IAChC8lO,MAAO,EACPxvN,KAAM,EACNswN,KAAM,oBAER4D,aAAc,CACZnkG,MAAO,4BACPrmI,IAAK,eACL4lO,UA9WO1B,GA8WSyD,KAAKD,WAAW1nO,IAChC8lO,MAAO,EACPxvN,KAAM,EACNswN,KAAM,wBAER6D,YAAa,CACXpkG,MAAO,sBACPrmI,IAAK,cACL4lO,UAtXO1B,GAsXSyD,KAAKD,WAAW1nO,IAChC8lO,MAAO,EACPxvN,KAAM,EACNswN,KAAM,6BC5bS1Q,GAAAA,SAAAA,GAAAA,EAAAA,EAAAA,GAAAA,IAAAA,EAAAA,EAAAA,GAGjB,WAAYrhQ,GAAa,IAAD,sBACpB,cAAMA,IACD6H,MAAQ,CACTyvJ,SAAS,EAAMo3C,SAAU,KAAMjtJ,KAAM,EAAGirM,YAAW,UAAE,EAAK1sP,MAAM0sP,mBAAb,QAA4B,GAAI//M,OAAQ,MAE/F,EAAKvC,aAAe,EAAKA,aAAap7C,KAAlB,MACpB,EAAKm/P,aAAe,EAAKA,aAAan/P,KAAlB,MAEpB,EAAKkxC,KAAO,EAAKA,KAAKlxC,KAAV,MACZ,EAAKusB,KAAO,EAAKA,KAAKvsB,KAAV,MATQ,CAUvB,CA8OA,OA9OA,oCAED,WACIsmP,GAAkBI,cAAc,CAAE9jP,KAAM,WACxC,IAAItC,EAAUkB,KAAKisK,aACnBjsK,KAAK6tE,SAAS,CAACqwI,SAAUp/M,EAAQo/M,WACjCl+M,KAAK69P,YAAY,WACpB,4BAED,SAAYvE,GAAqB,IAAD,OAC5BD,GAAYC,GAAYn5P,MAAK,SAAC5E,GAC1B,IAAIuD,EAAU,EAAKmtK,aACfiwF,EAAc3gQ,EAAS1B,KAE3B,GAAyB,OAArBiF,EAAQo/M,SAAmB,CAC3B,IAAI/hK,EAAS,IAAI0gO,GACjB1gO,EAAO2hN,SAASh/P,EAAQo/M,SAAUg+C,GAAa,EAAM,EAAKtiN,cAC1D,EAAKi0B,SAAS,CAAE1xB,OAAQA,EAAQ2qH,SAAS,EAAOo1F,YAAaA,GAChE,CACJ,IACI1mP,OAAM,SAACtS,GAC8B,MAA9BA,EAAM3H,SAASw4O,YACfygB,MAAM,eAEb,GACR,gCAED,WACI,IAAIhB,EAAqB,GACzB,IAAK,IAAIvjF,KAAajwK,KAAKqX,MAAM8kC,OAAOA,OAAQ,CAC5C,IAAIvrC,EAAI5Q,KAAKqX,MAAM8kC,OAAOA,OAAO8zH,GAC7Br/J,EAAEytM,SACFm1C,EAAY3yP,KAAK+P,EACxB,CAED,IAAIytM,EAAUm1C,EAAYn/P,OAAS,EACrB2L,KAAKisK,aAEXqyC,WAAWD,EACtB,8BAED,SAAco/C,GAA4B,IAAD,OAEjCjK,EAAqB,GACzB,IAAK,IAAIvjF,KAAajwK,KAAKqX,MAAM8kC,OAAOA,OAAQ,CAC5C,IAAIvrC,EAAI5Q,KAAKqX,MAAM8kC,OAAOA,OAAO8zH,GAC7Br/J,EAAEytM,SACFm1C,EAAY3yP,KAAK+P,EACxB,CAED,GAA2B,IAAvB4iP,EAAYn/P,OAAhB,CASA,IAAIyqQ,EAAc9+P,KAAKqX,MAAM8kC,OAAO4iN,YAAY,aAAc/+P,KAAKqX,MAAM6mM,SAASo2C,WAAYt0P,KAAKqX,MAAM6mM,UAEzGv/M,KAAAA,KAAW,iBAAkBmgQ,GACxB3+P,MAAK,SAAA5E,GACF,IAAK,IAAI8E,EAAI,EAAGA,EAAImzP,EAAYn/P,OAAQgM,IAAK,CACzC,IAAIuQ,EAAI4iP,EAAYnzP,GACpBuQ,EAAEm/O,cAAgBn/O,EAAEjV,MACpBiV,EAAEytM,SAAU,CACf,CAED,EAAK4rE,kBAES,EAAKh+G,aACXiyC,SAAU24C,0BAAmD,IAAvB,EAAK+H,gBAAwB,EAAKC,iBAE3EpB,GAAc,EAAKjuP,MAAMub,KAC1B,EAAKvb,MAAMub,OAEX,EAAK8iD,SAAS,CAAE4vL,WAAYA,GAEnC,GAtBJ,MANQA,GAAcz9P,KAAKwP,MAAMub,KAC1B/qB,KAAKwP,MAAMub,OAEX/qB,KAAK6tE,SAAS,CAAE4vL,WAAYA,GA2BvC,6BAED,SAAa5+O,GACTA,EAAMy0B,iBACNtzC,KAAK49P,cAAc,YACtB,6BAED,SAAa/+O,GACT,IAAMjZ,EAASiZ,EAAMjZ,OACfjK,EAAyB,aAAhBiK,EAAO3H,KAAsB2H,EAAOi8H,QAAUj8H,EAAOjK,MAC9DyF,EAAOwE,EAAOxE,MAAQwE,EAAO8S,aAAa,QAE5CwlM,EAAWl+M,KAAKqX,MAAM6mM,SAE1B,GAAK98M,EAAL,CAGA,IAAIwP,EAAI5Q,KAAKqX,MAAM8kC,OAAO82M,eAAe7xP,GAGrC+6C,EAASn8C,KAAKqX,MAAM8kC,OACpBA,IACIvrC,EAAEi/O,cAAgBxH,GAAY2H,UAC9B7zM,EAAOqgN,YAAYx8P,KAAKqX,MAAM6mM,SAAU98M,EAAxC,OAA8CzF,QAA9C,IAA8CA,OAA9C,EAA8CA,EAAOg4P,WAAW,IAAK,IAAIA,WAAW,SAAK,KACzFx3M,EAAOsgN,iBAAiBr7P,EAAM0xP,GAAkBx0L,OAAM,OAAC3iE,QAAD,IAACA,OAAD,EAACA,EAAOg4P,WAAW,IAAK,IAAIA,WAAW,SAAK,SAElGx3M,EAAOqgN,YAAYx8P,KAAKqX,MAAM6mM,SAAU98M,EAAMzF,GAC9CwgD,EAAOsgN,iBAAiBr7P,EAAMzF,KAGtCqE,KAAK6tE,SAAS,CAAE1xB,OAAQn8C,KAAKqX,MAAM8kC,OAAQ+hK,SAAUA,IACrDl+M,KAAKiqR,iBAhBK,CAiBb,qBAED,WACQjqR,KAAKwP,MAAMkgC,KACX1vC,KAAKwP,MAAMkgC,OAEX1vC,KAAK49P,cAAc,WAG1B,qBAED,WACI,IAAI3sM,EAAOjxD,KAAKqX,MAAM45C,KAElBA,EAAO,GACPA,IAEJjxD,KAAK6tE,SAAS,CACV5c,KAAMA,GAGb,uBAED,WAAU,IAAD,OAEL,OAAIjxD,KAAKqX,MAAMyvJ,SACJ,+BAAE,wBACL,2CAGJ9mK,KAAKqX,MAAMomP,YAGJ,SAACnsD,GAAD,CAAU3nK,GAAI3pC,KAAKqX,MAAMomP,cAIhC,+BACI,SAACh9C,GAAD,CAAYznM,UAAU,aAAaozB,OAAO,qEAA1C,UACI,SAAC,GAAD,WACI,SAAC,GAAD,CAAKpzB,UAAU,SAAf,UACI,UAAC,GAAD,CAAMgmP,SAAUh/P,KAAK29P,aAArB,WACI,SAAC,GAAD,CAAK3kP,UAAU,gBAAf,UACI,cAAGA,UAAU,UAAb,2KAEJ,SAAC,GAAD,CAAWA,UAAU,YAArB,UACI,SAAC,GAAD,CAAKA,UAAU,WAAf,UACI,UAAC,GAAD,CAAOgkM,IAAK,EAAGt5F,UAAU,aAAa1qG,UAAU,aAAhD,UACKhZ,KAAKqX,MAAM6mM,SAASjgN,OAAS69M,GAAa+4C,qBACvC,SAAC3C,GAAD,CAAWC,YAAanyP,KAAKqX,MAAM4nP,UAAWtiN,MAAO38C,KAAKqX,MAAM8kC,OAAO82M,eAAe,mBAEzFjzP,KAAKqX,MAAM6mM,SAASjgN,OAAS69M,GAAak7C,2BACvC,SAAC9E,GAAD,CAAWC,YAAanyP,KAAKqX,MAAM4nP,UAAWtiN,MAAO38C,KAAKqX,MAAM8kC,OAAO82M,eAAe,oBAE1F,SAACf,GAAD,CAAWC,YAAanyP,KAAKqX,MAAM4nP,UAAWtiN,MAAO38C,KAAKqX,MAAM8kC,OAAO82M,eAAe,0BAA2BhC,YAAY,yBAC5HjxP,KAAKqX,MAAM6mM,SAASjgN,OAAS69M,GAAak7C,0BAA4B,CAACn7C,GAAgBmiD,mBAAmBniD,GAAgBquE,qBAAqBruE,GAAgBoiD,wBAAwBztP,SAASxQ,KAAKqX,MAAM6mM,SAASggD,WACjN,SAAChM,GAAD,CAAWC,YAAanyP,KAAKqX,MAAM4nP,UAAWtiN,MAAO38C,KAAKqX,MAAM8kC,OAAO82M,eAAe,kBAE1F,SAACf,GAAD,CAAWC,YAAanyP,KAAKqX,MAAM4nP,UAAWtiN,MAAO38C,KAAKqX,MAAM8kC,OAAO82M,eAAe,mBACtF,SAACf,GAAD,CAAWC,YAAanyP,KAAKqX,MAAM4nP,UAAWtiN,MAAO38C,KAAKqX,MAAM8kC,OAAO82M,eAAe,2BACrFjzP,KAAKqX,MAAM6mM,SAASjgN,OAAS69M,GAAa+4C,qBACvC,iCACI,SAAC3C,GAAD,CAAWC,YAAanyP,KAAKqX,MAAM4nP,UAAWtiN,MAAO38C,KAAKqX,MAAM8kC,OAAO82M,eAAe,iBACtF,SAACf,GAAD,CAAWC,YAAanyP,KAAKqX,MAAM4nP,UAAWtiN,MAAO38C,KAAKqX,MAAM8kC,OAAO82M,eAAe,mCAM1G,UAAC,GAAD,YACI,SAAC,GAAD,WACI,SAAC,GAAD,CAAKj6O,UAAU,aAAf,UACI,SAAC,SAAD,CACI/a,KAAK,SACL2G,GAAG,sBACHmR,MAAM,oBACNmH,SAAO,EACPgkF,QAAS,kBAAM,EAAKrzB,SAAS,CAAEoxL,WAAY,EAAK5nP,MAAM4nP,WAA7C,SAIrB,SAAC,GAAD,CAAOv7I,UAAU,aAAas5F,IAAK,EAAGhkM,UAAU,6BAAhD,UACI,UAAC,GAAD,YACI,mBAAQ/a,KAAK,SAAS+a,UAAU,oDAAoDkoF,QAASlhG,KAAK0vC,KAAlG,mBACA,mBAAQzxC,KAAK,SAAS+a,UAAU,wBAAwBkoF,QAASlhG,KAAK29P,aAAtE,oCAWvC,8BAED,WACI,IAAII,EAAa,EAOjB,OANI/9P,KAAKqX,MAAM6mM,SAASjgN,OAAS69M,GAAa+4C,qBAC1CkJ,GAAc,GAEd,CAACliD,GAAgBmiD,mBAAmBniD,GAAgBquE,qBAAqBruE,GAAgBoiD,wBAAwBztP,SAASxQ,KAAKqX,MAAM6mM,SAASggD,WAC9IH,GAAc,GAEXA,CACV,8BACD,WACI,IAAIW,EAAa,EAgBjB,OAfI1+P,KAAKqX,MAAM6mM,SAAS8iE,wBAA0B,KAAOtiB,IAErD1+P,KAAKqX,MAAM6mM,SAASjgN,OAAS69M,GAAak7C,0BACtCh3P,KAAKqX,MAAM6mM,SAAS+iE,eAAeviB,IAEvC1+P,KAAKqX,MAAM6mM,SAASjgN,OAAS69M,GAAa+4C,qBACtC70P,KAAKqX,MAAM6mM,SAASgjE,eAAexiB,IACA,KAAnC1+P,KAAKqX,MAAM6mM,SAASisE,YAAwD,OAAnCnqR,KAAKqX,MAAM6mM,SAASisE,YAAqBzrB,IACvC,KAA3C1+P,KAAKqX,MAAM6mM,SAASksE,oBAAwE,OAA3CpqR,KAAKqX,MAAM6mM,SAASksE,oBAA6B1rB,KAEtG,CAAC7iD,GAAgBmiD,mBAAmBniD,GAAgBquE,qBAAqBruE,GAAgBoiD,wBAAwBztP,SAASxQ,KAAKqX,MAAM6mM,SAASggD,UAC1Il+P,KAAKqX,MAAM6mM,SAASmsE,aAAa3rB,IAErC1+P,KAAKqX,MAAM6mM,SAASijE,cAAcziB,IAClC1+P,KAAKqX,MAAM6mM,SAASosE,uBAAuB5rB,IACxCA,CACV,OA3PgBmS,CAAe9wD,IAAf8wD,GACV3+J,YAAc8rG,GCIlB,IAAMusE,GAAb,8BAIE,WAAY/6Q,GAAa,IAAD,oBACtB,cAAMA,IACD6H,MAAQ,CACXyvJ,SAAS,EACT0jH,gBAAgB,EAChBC,iBAAkB,EAClBC,2BAA2B,GANP,CAQvB,CAZH,2CAcE,WACE5lC,GAAkBI,cAAc,CAAE9jP,KAAM,aACzC,GAhBH,+BAkBE,WAA2B,IAAD,EAClBtC,EAAUkB,KAAKlB,QACrBA,EAAQm/M,QAAS0sE,iBAAmB,IAAIx3R,KACxCwL,KAAAA,KAAW,8BAA+B,KAAM,CAC9C3C,OAAQ,CAAEyiN,UAAS,UAAE3/M,EAAQm/M,eAAV,aAAE,EAAiBQ,YAEzC,GAxBH,uCA0BE,WAAmC,IAAD,EAC1B3/M,EAAUkB,KAAKlB,QACrBA,EAAQo/M,SAAUysE,iBAAmB,IAAIx3R,KACzCwL,KAAAA,KAAW,+BAAgC,KAAM,CAC/C3C,OAAQ,CAAEs4P,WAAU,UAAEx1P,EAAQo/M,gBAAV,aAAE,EAAkBo2C,aAE3C,GAhCH,kCAkCE,WAA8B,IAAD,SACrBx1P,EAAUkB,KAAKisK,aACrBttK,KAAAA,IAEI,yEACEG,EAAQo/M,gBADV,aACE,EAAkBo2C,aAErBn0P,MAAK,SAAC5E,GACL,IAAI++Q,EAAoC/+Q,EAAS1B,KAE7C+wR,EACFtQ,EAAK3qQ,QACH,SAACT,GAAD,OACGA,EAAE6qQ,eAAiB7N,GAAakV,kBAC/BlyQ,EAAE6qQ,eAAiB7N,GAAa8N,aAClC9qQ,EAAEjR,OAASkuQ,GAAQkD,WAHrB,IAIAh7Q,OAAS,EACb,EAAKw5E,SAAS,CACZ48M,iBAAkBnQ,EAAK3qQ,QACrB,SAACT,GAAD,OACEA,EAAE6qQ,eAAiB7N,GAAakV,kBAChClyQ,EAAE6qQ,eAAiB7N,GAAa8N,UAFlC,IAGA3lR,OACFq2R,0BAA2BE,EAC3BJ,gBAAgB,GAEnB,GACJ,GA7DH,oBA+DE,WAAU,IAAD,QACH1rR,EAAUkB,KAAKisK,aACf4+G,GAAa,EAEjB,GAAI7qR,KAAKqX,MAAMyvJ,SAAgC,OAArBhoK,EAAQo/M,SAChC,OACE,wBACE,yCAIN,GAAyB,OAArBp/M,EAAQo/M,SACV,OACE,6FAIJ,GAAIp/M,EAAQo/M,SAASziN,SAAWwgN,GAAeosE,OAC7C,OAAO,SAAC/2E,GAAD,CAAU3nK,GAAG,gBAGoB,QAAtC,UAAA7qC,EAAQm/M,eAAR,eAAiB0sE,oBACnBE,GAAa,EACb7qR,KAAK8qR,qBAGoC,QAAvC,UAAAhsR,EAAQo/M,gBAAR,eAAkBysE,oBACpBE,GAAa,EACb7qR,KAAK+qR,6BAGP,IAAMC,GACJ,UAAAlsR,EAAQo/M,gBAAR,eAAkBjgN,QAAS69M,GAAak7C,yBACpC,aACA,WAEN,OAAI6zB,GACK,SAACv5E,GAAD,CAAU3nK,GAAG,eACX7qC,EAAQo/M,SAASziN,SAAWwgN,GAAeysE,aAC7C,SAACp3E,GAAD,CAAU3nK,GAAIqhP,IAErBlsR,EAAQo/M,SAASziN,SAAWwgN,GAAe0sE,qBAEtC3oR,KAAKqX,MAAMmzQ,eASZxqR,KAAKqX,MAAMozQ,iBAAmB,GACzB,SAACn5E,GAAD,CAAU3nK,GAAG,iBAEb,SAAC2nK,GAAD,CAAU3nK,GAAG,cAXpB3pC,KAAKirR,wBAEH,wBACE,0CAWNnsR,EAAQo/M,SAASziN,SAAWwgN,GAAe43D,eAC1C/0Q,EAAQo/M,SAASziN,SAAWwgN,GAAe23D,aACxC90Q,EAAQo/M,SAAS+4C,YACjBn4P,EAAQo/M,SAASkxD,eAAiBjD,GAAQkD,cAC9CvwQ,EAAQo/M,SAASziN,SAAWwgN,GAAe4sE,oBAiBQ,MAA1C,UAAC/pR,EAAQo/M,SAAS27D,oBAAlB,QAAkC,KAG1C/6Q,EAAQo/M,SAASkxD,eAAiBjD,GAAQkD,aACzCvwQ,EAAQo/M,SAASziN,SAAWwgN,GAAe23D,aAC3C90Q,EAAQo/M,SAAS+4C,YACnBn4P,EAAQo/M,SAASziN,SAAWwgN,GAAeivE,mBAC3CpsR,EAAQo/M,SAASziN,SAAWwgN,GAAekvE,oBAC3CrsR,EAAQo/M,SAASziN,SAAWwgN,GAAemnE,2BAC3CtkR,EAAQo/M,SAASziN,SAAWwgN,GAAemvE,aAC3CtsR,EAAQo/M,SAASziN,SAAWwgN,GAAeosE,QATpC,SAAC/2E,GAAD,CAAU3nK,GAAG,iBAab,SAAC2nK,GAAD,CAAU3nK,GAAIqhP,IA7BhBhrR,KAAKqX,MAAMmzQ,eASZxqR,KAAKqX,MAAMqzQ,2BAA6B5rR,EAAQo/M,SAAS+4C,YAEpD,SAAC3lD,GAAD,CAAU3nK,GAAG,iBAEb,SAAC2nK,GAAD,CAAU3nK,GAAG,sBAZpB3pC,KAAKirR,wBAEH,wBACE,yCA2BT,KA9JH,GAA8BlrE,ICnBjBsrE,GAAb,8BACI,aAAe,IAAD,oBACV,gBACKv3B,aAAa,WAAY,yBAA0B,KACxD,EAAKA,aAAa,SAAU,kBAAmB,IAC/C,EAAKA,aAAa,gBAAiB,mBAAoB,IACvD,EAAKA,aAAa,gBAAiB,oBAAqB,KACxD,EAAKA,aAAa,cAAe,kBANvB,CAOb,CARL,aAA+Cd,ICiB3CziM,GAAgB,SAASL,EAAG/gD,GAI5B,OAHAohD,GAAgBxsD,OAAOysD,gBAClB,CAAEC,UAAW,cAAgB7tD,OAAS,SAAUstD,EAAG/gD,GAAK+gD,EAAEO,UAAYthD,CAAI,GAC3E,SAAU+gD,EAAG/gD,GAAK,IAAK,IAAIuN,KAAKvN,EAAOpL,OAAO/E,UAAUwP,eAAetN,KAAKiO,EAAGuN,KAAIwzC,EAAExzC,GAAKvN,EAAEuN,GAAK,EAC9F6zC,GAAcL,EAAG/gD,EAC3B,EAED,SAASuhD,GAAUR,EAAG/gD,GAClB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIrP,UAAU,uBAAyBkQ,OAAOb,GAAK,iCAE7D,SAASwhD,IAAO3wD,KAAK2O,YAAcuhD,CAAI,CADvCK,GAAcL,EAAG/gD,GAEjB+gD,EAAElxD,UAAkB,OAANmQ,EAAapL,OAAO7E,OAAOiQ,IAAMwhD,EAAG3xD,UAAYmQ,EAAEnQ,UAAW,IAAI2xD,EAClF,CAED,IAAIC,GAAW,WAQX,OAPAA,GAAW7sD,OAAOQ,QAAU,SAAkBoM,GAC1C,IAAK,IAAI2/C,EAAGjwD,EAAI,EAAGwQ,EAAI7H,UAAU3U,OAAQgM,EAAIwQ,EAAGxQ,IAE5C,IAAK,IAAIqc,KADT4zC,EAAItnD,UAAU3I,GACO0D,OAAO/E,UAAUwP,eAAetN,KAAKovD,EAAG5zC,KAAI/L,EAAE+L,GAAK4zC,EAAE5zC,IAE9E,OAAO/L,CACV,EACMigD,GAAS/tD,MAAM7C,KAAMgJ,UAC/B,EAE0B,oBAApBsiR,iBAAiCA,gBAgCxC,IAsBIC,GAnBJ,SAASC,GAAoBp9Q,GACzB,MAAsB,MAAlBA,EAAI1C,OAAO,GACJ0C,EAAIjW,MAAM,GAEdiW,CACV,EAnCD,SAAqByuF,EAAKlpF,QACX,IAARA,IAAiBA,EAAM,CAAC,GAC7B,IAAI83Q,EAAW93Q,EAAI83Q,SAEnB,GAAK5uL,GAA2B,qBAAb1yF,SAAnB,CAEA,IAAIk8E,EAAOl8E,SAASk8E,MAAQl8E,SAASm8E,qBAAqB,QAAQ,GAC9DlmE,EAAQjW,SAASa,cAAc,SACnCoV,EAAMniB,KAAO,WAEI,QAAbwtR,GACEplM,EAAKi9C,WACPj9C,EAAK7sE,aAAa4G,EAAOimE,EAAKi9C,YAKhCj9C,EAAKjtE,YAAYgH,GAGfA,EAAMsrQ,WACRtrQ,EAAMsrQ,WAAWrrQ,QAAUw8E,EAE3Bz8E,EAAMhH,YAAYjP,SAASs+B,eAAeo0D,GAnBY,CAqBzD,CAGD8uL,CADe,o9HAuBf,SAAWJ,GACPA,EAAa,oBAA0B,+BACvCA,EAAa,kBAAwB,6BACrCA,EAAa,uBAA6B,kCAC1CA,EAAa,gBAAsB,0BAJvC,EAKGA,KAAkBA,GAAgB,CAAC,IACtC,IAAIK,GAAoB,SAAUhmL,GAC9B,IArB+Bp2F,EAqB3BrU,EAAMyqG,EAAGzqG,IAAK6qG,EAAKJ,EAAGimL,QAASA,OAAiB,IAAP7lL,EAAgB,CAAC,EAAIA,EAAI6/D,EAAKjgE,EAAGkmL,aAAcA,OAAsB,IAAPjmH,EAAgB,CAAC,EAAIA,EAAInzC,EAAK9sB,EAAGmmL,IAAKA,OAAa,IAAPr5J,EAAgB,CAAC,EAAIA,EAAIs5J,EAAYpmL,EAAGomL,UAC3LC,IArBU,QADiBz8Q,EAsBuBs8Q,SArBtB,IAAVt8Q,OAAmB,EAASA,EAAM08Q,gBACpD18Q,EAAM08Q,aAAeV,GAAoBh8Q,EAAM08Q,gBAErC,OAAV18Q,QAA4B,IAAVA,OAAmB,EAASA,EAAM28Q,aACpD38Q,EAAM28Q,UAAYX,GAAoBh8Q,EAAM28Q,aAElC,OAAV38Q,QAA4B,IAAVA,OAAmB,EAASA,EAAMsiP,mBACpDtiP,EAAMsiP,gBAAkB05B,GAAoBh8Q,EAAMsiP,kBAE/CtiP,GAaHsiP,EAAkBm6B,EAAsBn6B,gBAAiBs6B,EAAuBH,EAAsBG,qBAAsBC,EAAyBJ,EAAsBI,uBAAwBH,EAAeD,EAAsBC,aAAcC,EAAYF,EAAsBE,UAAWG,EAAiBL,EAAsBK,eAC1UC,EAAgBV,EAAQU,cAAez5R,EAAO+4R,EAAQ/4R,KAAMiqE,EAAQ8uN,EAAQ9uN,MAAOmjJ,EAAY2rE,EAAQ3rE,UAAWssE,EAASX,EAAQW,OAAQr4B,EAAW03B,EAAQ13B,SAAUvoP,EAAWigR,EAAQjgR,SAAU6gR,EAAoBZ,EAAQY,kBAAmBrrR,EAAOyqR,EAAQzqR,KACnQsrR,EAAcX,EAAIW,YAAaC,EAAaZ,EAAIY,WAAYC,EAAYb,EAAIa,UAAWC,EAAYd,EAAIc,UAAWC,EAAUf,EAAIe,QAASC,EAAkBhB,EAAIgB,gBAC/JC,EAAmB7xR,EAAImB,QAAQ,KAC/B2wR,EAAiBD,GAAoB,EACrCE,EAAc/xR,EAAIhD,MAAM60R,EAAmB,GAC3C99K,EAAU+9K,EAAiB9xR,EAAIhD,MAAM,EAAG60R,GAAoB7xR,EAC5DgyR,EAAqB,CACrBF,EAAiBC,EAAc,KAC/Bp7B,EAAkB,oBAAoBh+P,OAAOg+P,GAAmB,KAChEs6B,EAAuB,4BAA8B,KACrDC,EAAyB,8BAAgC,KACzDH,EAAe,iBAAiBp4R,OAAOo4R,GAAgB,KACvDC,EAAY,cAAcr4R,OAAOq4R,GAAa,KAC9CG,EAAiB,qBAAuB,KACxClrR,EAAO,QAAQtN,OAAOgH,mBAAmBsG,IAAS,KAClDqrR,EAAoB,gBAAgB34R,OAAOgH,mBAAmB2xR,IAAsB,KACpF7gR,EAAW,YAAY9X,OAAOgH,mBAAmB8Q,IAAa,KAC9Ds0M,EAAY,cAAcpsN,OAAOgH,mBAAmBolN,IAAc,KAClEi0C,EAAW,aAAargQ,OAAOgH,mBAAmBq5P,IAAa,KAC/Dq4B,EAAS,UAAU14R,OAAO04R,EAAOx5Q,IAAIlY,oBAAoB0O,KAAK,MAAQ,KACtEuzD,EAAQ,SAASjpE,OAAOgH,mBAAmBiiE,IAAU,KACrDjqE,GAAQA,aAAgBK,KAAO,QAAQW,OAAO4hI,GAAW5iI,IAAS,KAClE45R,EAAc,gBAAgB54R,OAAOgH,mBAAmB4xR,IAAgB,KACxEC,EAAa,eAAe74R,OAAOgH,mBAAmB6xR,IAAe,KACrEC,EAAY,cAAc94R,OAAOgH,mBAAmB8xR,IAAc,KAClEC,EAAY,cAAc/4R,OAAOgH,mBAAmB+xR,IAAc,KAClEC,EAAU,YAAYh5R,OAAOgH,mBAAmBgyR,IAAY,KAC5DC,EACM,mBAAmBj5R,OAAOgH,mBAAmBiyR,IAC7C,KACNf,EAAY,cAAcl4R,OAAOk4R,GAAa,KAK9C,kBAECl4R,OAAOy4R,EAAgBa,GAAoBb,GAAiB,IAC5D58Q,QAAO,SAAU4C,GAAQ,OAAgB,OAATA,CAAgB,IAChD/I,KAAK,KACV,MAAO,GAAG1V,OAAOo7G,EAAS,KAAKp7G,OAAOq5R,EACzC,EACGz3J,GAAa,SAAUxlE,GACvB,IAAIv5D,EAAQu5D,EAAEn8D,WAAa,EACvBsD,EAAM64D,EAAEj8D,UAEZ,MAAO,CADIi8D,EAAEz8D,cAGTkD,EAAQ,GAAK,IAAI7C,OAAO6C,GAASA,EACjCU,EAAM,GAAK,IAAIvD,OAAOuD,GAAOA,GAC/BmS,KAAK,IACV,EACG6jR,GAAwB,aACxBD,GAAsB,SAAUb,GAChC,IAAIe,EAAwBvpR,OAAOsC,KAAKkmR,GAAe58Q,QAAO,SAAUnS,GACpE,OAAOA,EAAI4M,MAAMijR,GACpB,IACD,OAAKC,EAAsBj5R,OAEpBi5R,EAAsBt6Q,KAAI,SAAUxV,GAAO,MAAO,GAAG1J,OAAO0J,EAAK,KAAK1J,OAAOgH,mBAAmByxR,EAAc/uR,IAAS,IADnH,EAEd,EAEG+vR,GAAgC,SAAUhmK,GAE1C,SAASgmK,IACL,OAAkB,OAAXhmK,GAAmBA,EAAO1kH,MAAM7C,KAAMgJ,YAAchJ,IAC9D,CAOD,OAVA0wD,GAAU68N,EAAgBhmK,GAI1BgmK,EAAevuR,UAAUo0G,OAAS,WAC9B,OAAQwP,EAAAA,cAAoB,MAAO,CAAE5pG,UAAW,oBAC5C4pG,EAAAA,cAAoB,MAAO,CAAE5pG,UAAW,qBACxC4pG,EAAAA,cAAoB,MAAO,CAAE5pG,UAAW,qBACxC4pG,EAAAA,cAAoB,MAAO,CAAE5pG,UAAW,qBAC/C,EACMu0Q,CACV,CAZmC,CAYlC3qK,EAAAA,WAEEpyE,GAAgB,CAChBm0N,SAAU,QACVjqP,OAAQ,SAER8yQ,GAA8B,SAAUjmK,GAExC,SAASimK,EAAah+Q,GAClB,IAAIg4G,EAAQD,EAAOrmH,KAAKlB,KAAMwP,IAAUxP,KAKxC,OAJAwnH,EAAMnwG,MAAQ,CACVo2Q,WAAW,GAEfjmK,EAAMqhD,OAASrhD,EAAMqhD,OAAOrqK,KAAKgpH,GAC1BA,CACV,CAmBD,OA3BA92D,GAAU88N,EAAcjmK,GASxBimK,EAAaxuR,UAAU6pK,OAAS,WAC5B7oK,KAAK6tE,SAAS,CACV4/M,WAAW,GAElB,EACDD,EAAaxuR,UAAUo0G,OAAS,WAC5B,IAAIpmF,EAAM4+P,GAAkB,CACxBzwR,IAAK6E,KAAKwP,MAAMrU,IAChB2wR,aAAc9rR,KAAKwP,MAAMs8Q,aACzBD,QAAS7rR,KAAKwP,MAAMq8Q,QACpBE,IAAK/rR,KAAKwP,MAAMu8Q,IAChBC,UAAW,WAEX0B,EAAmB1tR,KAAKwP,MAAM+9Q,gBAAkBA,GACpD,OAAQ3qK,EAAAA,cAAoB,MAAO,CAAE5pG,UAAW,yBAA0BoH,MAAOpgB,KAAKwP,MAAMiQ,QAAU+wB,IAClGxwC,KAAKqX,MAAMo2Q,WAAa7qK,EAAAA,cAAoB8qK,EAAkB,MAC9D9qK,EAAAA,cAAoB,SAAU,CAAEpoG,MAAO,OAAQE,OAAQ,OAAQizQ,YAAa,IAAKvhP,MAAOpsC,KAAKwP,MAAMo+Q,aAAe,2BAA4B/kH,OAAQ7oK,KAAK6oK,OAAQ77I,IAAKA,IAC/K,EACMwgQ,CACV,CA7BiC,CA6BhC5qK,EAAAA,WAEEirK,GAA8B,SAAUtmK,GAExC,SAASsmK,EAAar+Q,GAClB,IAAIg4G,EAAQD,EAAOrmH,KAAKlB,KAAMwP,IAAUxP,KAKxC,OAJAwnH,EAAMnwG,MAAQ,CACVo2Q,WAAW,GAEfjmK,EAAMqhD,OAASrhD,EAAMqhD,OAAOrqK,KAAKgpH,GAC1BA,CACV,CAmBD,OA3BA92D,GAAUm9N,EAActmK,GASxBsmK,EAAa7uR,UAAU6pK,OAAS,WAC5B7oK,KAAK6tE,SAAS,CACV4/M,WAAW,GAElB,EACDI,EAAa7uR,UAAUo0G,OAAS,WAC5B,IAAIpmF,EAAM4+P,GAAkB,CACxBzwR,IAAK6E,KAAKwP,MAAMrU,IAChB2wR,aAAc9rR,KAAKwP,MAAMs8Q,aACzBD,QAAS7rR,KAAKwP,MAAMq8Q,QACpBE,IAAK/rR,KAAKwP,MAAMu8Q,IAChBC,UAAW,gBAEX0B,EAAmB1tR,KAAKwP,MAAM+9Q,gBAAkBA,GACpD,OAAQ3qK,EAAAA,cAAoBA,EAAAA,SAAgB,KACxC5iH,KAAKqX,MAAMo2Q,WAAa7qK,EAAAA,cAAoB8qK,EAAkB,MAC9D9qK,EAAAA,cAAoB,SAAU,CAAEpoG,MAAO,OAAQE,OAAQ,OAAQizQ,YAAa,IAAKvhP,MAAOpsC,KAAKwP,MAAMo+Q,aAAe,2BAA4B/kH,OAAQ7oK,KAAK6oK,OAAQ77I,IAAKA,IAC/K,EACM6gQ,CACV,CA7BiC,CA6BhCjrK,EAAAA,WAEE64D,GAAS,SAAUjsK,GACnB,IAAKA,EAAM3T,KACP,OAAO,KACX,IAAK2T,EAAM68O,YACP,MAAM,IAAIx4P,MAAM,yEAEpB,OAAOi6R,GAAAA,aAAsBlrK,EAAAA,cAAoB,MAAO,CAAE5pG,UAAW,oBACjE4pG,EAAAA,cAAoB,MAAO,CAAE1hB,QAAS1xF,EAAMu+Q,aAAc/0Q,UAAW,2BACrE4pG,EAAAA,cAAoB,MAAO,CAAE5pG,UAAW,kBACpC4pG,EAAAA,cAAoB,MAAO,CAAE5pG,UAAW,0BACpC4pG,EAAAA,cAAoBirK,GAAcj9N,GAAS,CAAC,EAAGphD,MACvDozG,EAAAA,cAAoB,SAAU,CAAE5pG,UAAW,uBAAwBkoF,QAAS1xF,EAAMu+Q,aAAc,aAAc,cAAe3tQ,MAAO,CAC5HyjG,QAAS,QACT9wB,OAAQ,OACRv5D,QAAS,MACNhqB,EAAM68O,YACxB,GAEgC,SAAU9kI,GAEvC,SAASymK,EAAYx+Q,GACjB,IAAIg4G,EAAQD,EAAOrmH,KAAKlB,KAAMwP,IAAUxP,KAMxC,OALAwnH,EAAMnwG,MAAQ,CACV+jH,QAAQ,GAEZ5T,EAAMtmB,QAAUsmB,EAAMtmB,QAAQ1iG,KAAKgpH,GACnCA,EAAMjoB,QAAUioB,EAAMjoB,QAAQ/gG,KAAKgpH,GAC5BA,CACV,CATD92D,GAAUs9N,EAAazmK,GAUvBymK,EAAYhvR,UAAUkiG,QAAU,SAAU14F,GACtCA,EAAE8qC,iBACFtzC,KAAK6tE,SAAS,CACVutD,QAAQ,GAEf,EACD4yJ,EAAYhvR,UAAUugG,QAAU,SAAU/2F,GACtCA,EAAEynC,kBACFjwC,KAAK6tE,SAAS,CACVutD,QAAQ,GAEf,EACD4yJ,EAAYhvR,UAAUo0G,OAAS,WAC3B,OAAQwP,EAAAA,cAAoBA,EAAAA,SAAgB,KACxCA,EAAAA,cAAoB,SAAU,CAAE1hB,QAASlhG,KAAKkhG,QAAS9gF,MAAOpgB,KAAKwP,MAAMiQ,QAAU,CAAC,EAAGzG,UAAWhZ,KAAKwP,MAAMwJ,WAAa,IAAMhZ,KAAKwP,MAAM84B,MAC3Is6E,EAAAA,cAAoB64D,GAAO7qH,GAAS,CAAC,EAAG5wD,KAAKwP,MAAO,CAAE3T,KAAMmE,KAAKqX,MAAM+jH,OAAQ2yJ,aAAc/tR,KAAKu/F,QAAS8sJ,YAAarsP,KAAKwP,MAAM68O,eAC1I,CAEJ,EA7BgC,CA6B/BzpI,EAAAA,WAE+B,SAAU2E,GAEvC,SAAS0mK,EAAYz+Q,GACjB,IAAIg4G,EAAQD,EAAOrmH,KAAKlB,KAAMwP,IAAUxP,KAMxC,OALAwnH,EAAMnwG,MAAQ,CACV+jH,QAAQ,GAEZ5T,EAAMtmB,QAAUsmB,EAAMtmB,QAAQ1iG,KAAKgpH,GACnCA,EAAMjoB,QAAUioB,EAAMjoB,QAAQ/gG,KAAKgpH,GAC5BA,CACV,CATD92D,GAAUu9N,EAAa1mK,GAUvB0mK,EAAYjvR,UAAUkiG,QAAU,WAC5BlhG,KAAK6tE,SAAS,CACVutD,QAAQ,GAEf,EACD6yJ,EAAYjvR,UAAUugG,QAAU,SAAU/2F,GACtCA,EAAEynC,kBACFjwC,KAAK6tE,SAAS,CACVutD,QAAQ,GAEf,EACD6yJ,EAAYjvR,UAAUo0G,OAAS,WAC3B,OAAQwP,EAAAA,cAAoB,MAAO,CAAE5pG,UAAW,wBAAyBkoF,QAASlhG,KAAKkhG,SACnF0hB,EAAAA,cAAoB,MAAO,CAAE5pG,UAAW,yBAA0BoH,MAAO,CACjEkxE,WAAYtxF,KAAKwP,MAAMolD,OAAS,UAChCA,MAAO50D,KAAKwP,MAAM28Q,WAAa,YAEnCnsR,KAAKwP,MAAM84B,MAAQ,wBACnBtoC,KAAKwP,MAAM0+Q,UAAYtrK,EAAAA,cAAoB,OAAQ,KAAM,wBAC7DA,EAAAA,cAAoB64D,GAAO7qH,GAAS,CAAC,EAAG5wD,KAAKwP,MAAO,CAAE3T,KAAMmE,KAAKqX,MAAM+jH,OAAQ2yJ,aAAc/tR,KAAKu/F,QAAS8sJ,YAAarsP,KAAKwP,MAAM68O,eAC1I,CAEJ,CAjCgC,CAiC/BzpI,EAAAA,WCxRK,IAAMurK,GAAb,8BAQE,WAAY3+Q,GAAa,IAAD,oBACtB,cAAMA,IACDouP,cAAgB,EAAKA,cAAcp/P,KAAnB,MACrB,EAAKo7C,aAAe,EAAKA,aAAap7C,KAAlB,MACpB,EAAKm/P,aAAe,EAAKA,aAAan/P,KAAlB,MACpB,EAAKkxC,KAAO,EAAKA,KAAKlxC,KAAV,MACZ,EAAKo/P,cAAgB,EAAKA,cAAcp/P,KAAnB,MACrB,EAAK4vR,kBAAoB,EAAKA,kBAAkB5vR,KAAvB,MACzB,EAAK6vR,QAAU,EAAKA,QAAQ7vR,KAAb,MACf,EAAK8vR,sBAAwB,EAAKA,sBAAsB9vR,KAA3B,MAC7B,EAAK+vR,sBAAwB,EAAKA,sBAAsB/vR,KAA3B,MAC7B,EAAKgwR,gBAAkB,EAAKA,gBAAgBhwR,KAArB,MAEvB,EAAK6Y,MAAQ,CACXyvJ,SAAS,EACT3qH,OAAQ,KACR+hK,SAAU,KACVy9D,UAAW,KACXzf,YAAa,GACb+C,WAAW,EACX/K,QAAQ,EACRwJ,gBAAgB,EAChB2wB,QAAS,KACTI,WAAW,GAvBS,CAyBvB,CAjCH,mCAmCE,SAAU9S,EAAgBzf,GACxB,GAAkB,OAAdyf,GAAsC,OAAhBzf,EAAsB,CAC9C,IAAI//M,EAAS,IAAIkvO,GACjBlvO,EAAO2hN,SAAS6d,EAAWzf,GAAa,EAAMl8P,KAAK45C,cACnD55C,KAAK6tE,SAAS,CACZ1xB,OAAQA,EACR2qH,SAAS,EACTo1F,YAAaA,GAEhB,CAEF,GA9CH,+BAgDE,WAAqB,IAAD,EAClBpX,GAAkBI,cAAc,CAAE9jP,KAAM,sBACxC,IAAItC,EAAUkB,KAAKisK,aACnBjsK,KAAK6tE,SAAS,CACZqwI,SAAUp/M,EAAQo/M,SAClBy9D,UAAS,UAAE78Q,EAAQo/M,SAAUy9D,iBAApB,QAAkC,CAAC,EAC5C70G,SAAS,IAEX9mK,KAAK69P,YAAY,UAClB,GAzDH,yBA2DE,SAAYvE,GAAqB,IAAD,OAC1Bx6P,EAAUkB,KAAKisK,aACnBotF,GAAYC,GACTn5P,MAAK,SAAC5E,GAAc,IAAD,EAClB,EAAKsyE,SAAS,CAAEquL,YAAa3gQ,EAAS1B,KAAMitK,SAAS,IACrD,EAAK4nH,UAAL,UACE5vR,EAAQo/M,SAAUy9D,iBADpB,QACkC,CAAC,EACjCpgR,EAAS1B,KAEZ,IACA2b,OAAM,SAACtS,GAC4B,MAA9BA,EAAM3H,SAASw4O,YACjBygB,MAAM,eAET,GACJ,GA1EH,kBA4EE,WACMx0P,KAAKwP,MAAMkgC,MACb1vC,KAAK49P,cAAc,MACK,MAApB59P,KAAKwP,MAAMyhD,KAAcjxD,KAAK6tE,SAAS,CAAE4vL,WAAY,aACpDz9P,KAAKwP,MAAMkgC,QAEhB1vC,KAAK49P,cAAc,YAEtB,GApFH,0BAsFE,SAAa/+O,GACXA,EAAMy0B,iBACNtzC,KAAK6tE,SAAS,CAAEqmL,QAAQ,IAEpBl0P,KAAKwP,MAAMub,MACb/qB,KAAK49P,cAAc,MACnB59P,KAAKwP,MAAMub,QAEX/qB,KAAK49P,cAAc,IAEtB,GAhGH,0BAkGE,SAAa/+O,GACX,IAAMjZ,EAASiZ,EAAMjZ,OACfjK,GACa,aAAhBiK,EAAO3H,KAAsB2H,EAAOi8H,QAAUj8H,EAAOjK,QACtDiK,EAAOk+C,aACP,GACI1iD,EAAOwE,EAAOxE,MAAQwE,EAAO8S,aAAa,QAEhD,GAAKtX,EAAL,CAEA,IAAIu6Q,EAAY37Q,KAAKqX,MAAMskQ,UAGvBx/N,EAASn8C,KAAKqX,MAAM8kC,OACpBA,IACFA,EAAOqgN,YAAYmf,EAAWv6Q,EAAMzF,GACpCwgD,EAAOsgN,iBAAiBr7P,EAAMzF,IAEhCqE,KAAK6tE,SAAS,CAAE1xB,OAAQn8C,KAAKqX,MAAM8kC,OAAQw/N,UAAWA,GAVrC,CAWlB,GArHH,2BAuHE,WACE,OAAO,CACR,GAzHH,2BA0HE,WACE,IAAIjd,EAAa,EAMjB,OALI1+P,KAAKqX,MAAM8kC,OAAO82M,eAAe,YAAYt3P,OAAO+iQ,IACpD1+P,KAAKqX,MAAM8kC,OAAO82M,eAAe,iBAAiBt3P,OAAO+iQ,IACzD1+P,KAAKqX,MAAM8kC,OAAO82M,eAAe,UAAUt3P,OAAO+iQ,IAClD1+P,KAAKqX,MAAM8kC,OAAO82M,eAAe,iBAAiBt3P,OAAO+iQ,IACzD1+P,KAAKqX,MAAM8kC,OAAO82M,eAAe,eAAet3P,OAAO+iQ,IACpDA,CACR,GAlIH,2BAoIE,SAAcjB,GAA4B,IAAD,SACnCke,EAAY37Q,KAAKqX,MAAMskQ,UACvBx/N,EAAM,UAAGn8C,KAAKqX,MAAM8kC,cAAd,aAAG,EAAmBA,OAE5Bq3M,EAAqB,GACzB,IAAK,IAAIvjF,KAAajwK,KAAKqX,MAAM8kC,OAAOA,OAAQ,CAC9C,IAAIvrC,EAAI5Q,KAAKqX,MAAM8kC,OAAOA,OAAO8zH,GAC7Br/J,EAAEytM,SAASm1C,EAAY3yP,KAAK+P,EACjC,CAED,GACyB,IAAvB4iP,EAAYn/P,QACX2L,KAAKqX,MAAM8kC,OAAO82M,eAAe,iBAFpC,CASA,IAAIn0P,EAAUkB,KAAKisK,aACnBntK,EAAQo/M,SAAUspE,2BACQ,IAAvBxnR,KAAK4+P,gBAAyB5+P,KAAK6+P,gBAEtC,IAAIxK,EAAkB,CAAC,EACvBtwP,OAAOsC,KAAKs1Q,GAAW3oQ,KAAI,SAACxV,EAAK6C,GAsBrB,IAAD,GArBT0D,OAAOsC,KAAK81C,GAAQnpC,KAAI,SAACpC,EAAGqjD,GAC1B,IAAI06N,EAAKxyO,EAAO8X,GACZz2D,IAAQmxR,EAAGvtR,MAAQutR,EAAGtwE,UACxBg2C,EAAW72P,GAAOmxR,EAAGhzR,MACrB+rF,GAAAA,IAAWinM,EAAGvtR,MAKjB,IACG2C,OAAOsC,KAAKs1Q,GAAWtnR,OAAS,IAAMgM,KACpCs7Q,EAAUl9D,WACZ41C,EAAU,UAAgBsnB,EAAUl9D,UACpC41C,EAAU,cAAoBb,EAC3BxgP,KAAI,SAACT,GACJ,OAAOA,EAAKnR,IACb,IACAoI,KAAK,KACR7K,KAAAA,KAAW,oBAAqB01P,GAAYl0P,MAAK,SAAC5E,GAC5CkiQ,GAAY,EAAK5vL,SAAS,CAAE4vL,WAAYA,GAC7C,MAEDpJ,EAAWC,WAAX,UAAwB,EAAKj9O,MAAM6mM,gBAAnC,aAAwB,EAAqBo2C,WAC7CD,EAAWz0C,aACT,KACAn5M,KAAKC,MAAM,IAAyB,IAAhBD,KAAK8jB,UAAmBvjB,WAC5CqtP,EAAWu6B,cACbjwR,KAAAA,KAAW,oBAAqB01P,GAAYl0P,MAAK,SAAC5E,GAChD84P,EAAW51C,UAAYljN,EAAS1B,KAChCiF,EAAQo/M,SAAUy9D,UAAYtnB,EAC1BoJ,GAAY,EAAK5vL,SAAS,CAAE4vL,WAAYA,GAC7C,KAGN,GA3CA,MAFKA,GAAYz9P,KAAK6tE,SAAS,CAAE4vL,WAAYA,GA8C/C,GAhMH,qBAkME,WAAW,IAAD,SACJ3+P,EAAUkB,KAAKisK,aACf0vG,EAAiB,CAAC,EACtBA,EAAUrnB,WAAV,UAAuBx1P,EAAQo/M,gBAA/B,aAAuB,EAAkBo2C,WACzCqnB,EAAU/7D,aAAeuuE,EAAiBU,UAC1ClwR,KAAAA,KACQ,sBAAuBg9Q,EAAW,CAAE3/Q,OAAQ,CAAE8yR,aAAa,KAChE3uR,MAAK,SAAC5E,GACL,IAAIogR,EAAYpgR,EAAS1B,KACzBiF,EAAQo/M,SAAUy9D,UAAYA,EAC9B78Q,EAAQo/M,SAAU4wE,aAAc,EAChC,IAAI3yO,EAAS,IAAIkvO,GACjBlvO,EAAO2hN,SACL6d,EACA,EAAKtkQ,MAAM6kP,aACX,EACA,EAAKtiN,cAEP,EAAKi0B,SAAS,CACZqwI,SAAUp/M,EAAQo/M,SAClBy9D,UAAWA,EACXx/N,OAAQA,EACRkyO,SAAS,EACTG,iBAAiB,GAEpB,GACJ,GA5NH,6BA8NE,WACgBxuR,KAAKisK,aACXiyC,SAAU4wE,aAAc,EAEhC,IAAInT,EAAY,CAAC,EACbx/N,EAAS,IAAIkvO,GACjBlvO,EAAO2hN,SAAS6d,EAAW37Q,KAAKqX,MAAM6kP,aAAa,EAAMl8P,KAAK45C,cAC9D55C,KAAK6tE,SAAS,CACZwgN,SAAS,EACTG,iBAAiB,EACjB7S,UAAWA,EACXx/N,OAAQA,EACR2qH,SAAS,GAEZ,GA5OH,yBA8OE,SAAYo3C,GACV,GAAiB,OAAbA,EAEJ,OACE,iCACE,SAAC,GAAD,CAAKllM,UAAU,gBAAf,UACE,cAAGA,UAAU,eAAb,uMAMDhZ,KAAK+uR,WAAU,KAGrB,GA7PH,uBA+PE,SAAUC,GACR,OACE,SAAC,GAAD,CAAWh2Q,UAAU,YAArB,UACE,SAAC,GAAD,CAAO0qG,UAAU,aAAa1qG,UAAU,iBAAxC,UACE,gBAAKA,UAAU,iBAAf,UACE,UAAC,GAAD,CAAKA,UAAU,wBAAf,WACE,UAAC,GAAD,CAAK6jE,GAAI,GAAIkyD,GAAI,EAAjB,WACE,SAAC,GAAD,WACE,gBAAK/1H,UAAU,gBAIjB,cAAGA,UAAU,IAAb,wJAKA,cAAGA,UAAU,gBAAb,2XAUA,UAAC,GAAD,CACE0qG,UAAU,aACVs5F,IAAK,EACLhkM,UAAU,oBAHZ,WAKE,mBACE/a,KAAK,SACL+a,UAAU,oCACVkoF,QAASlhG,KAAKquR,QAHhB,gCAOCW,IACC,mBACE/wR,KAAK,SACL+a,UAAU,2DACVkoF,QAASlhG,KAAKwuR,gBAHhB,sCASJ,UAAC,GAAD,CAAOxxE,IAAK,EAAGhkM,UAAU,mBAAzB,WACE,mBACE/a,KAAK,SACL+a,UAAU,yCACVkoF,QAASlhG,KAAKquR,QAHhB,gCAOCW,IACC,mBACE/wR,KAAK,SACL+a,UAAU,2DACVkoF,QAASlhG,KAAKwuR,gBAHhB,yCAUN,SAAC,GAAD,CAAKx1Q,UAAU,2CAAf,UACE,gBAAKA,UAAU,uBAO5B,GA3UH,mCA6UE,SAAsBklM,GAAuC,IAAD,OAC1D,GAAiB,OAAbA,EAEJ,OACE,iCACE,UAAC,GAAD,CAAKllM,UAAU,gBAAf,WACE,cAAGA,UAAU,eAAb,0DACA,eAAGA,UAAU,eAAb,wPAIwC,KACtC,cACE9N,KAAK,6DACLtF,OAAO,SAFT,+BAQJ,UAAC,GAAD,CAAWoT,UAAU,YAAYoH,MAAO,CAAE6uQ,UAAW,KAArD,WACE,SAAC,GAAD,CAAKj2Q,UAAU,OAAf,UACE,SAAC,GAAD,WACE,oBACE/a,KAAK,SACL+a,UAAU,sBACVkoF,QAAS,kBAAM,EAAKrzB,SAAS,CAAE4gN,WAAW,GAAjC,EAHX,WAKE,cAAGz1Q,UAAU,6BALf,oCAUJ,SAAC,GAAD,CAAKA,UAAU,WAAf,UACE,UAAC,GAAD,CAAOgkM,IAAK,EAAGt5F,UAAU,aAAa1qG,UAAU,aAAhD,WACE,SAACk5O,GAAD,CACEQ,UAAU,EACVP,YAAanyP,KAAKqX,MAAM4nP,UACxBtiN,MAAO38C,KAAKqX,MAAM8kC,OAAO82M,eAAe,kBAE1C,SAACf,GAAD,CACEQ,UAAU,EACVP,YAAanyP,KAAKqX,MAAM4nP,UACxBtiN,MAAO38C,KAAKqX,MAAM8kC,OAAO82M,eAAe,oBAE1C,SAACf,GAAD,CACEQ,UAAU,EACVP,YAAanyP,KAAKqX,MAAM4nP,UACxBtiN,MAAO38C,KAAKqX,MAAM8kC,OAAO82M,eAAe,aAE1C,SAACf,GAAD,CACEQ,UAAU,EACVP,YAAanyP,KAAKqX,MAAM4nP,UACxBtiN,MAAO38C,KAAKqX,MAAM8kC,OAAO82M,eAAe,4BAKhD,SAAC,GAAD,CAAWj6O,UAAU,YAArB,UACE,SAAC,GAAD,CACE0qG,UAAU,aACVs5F,IAAK,EACLhkM,UAAU,6BAHZ,UAKE,UAAC,GAAD,YACE,mBACE/a,KAAK,SACL+a,UAAU,oDACVkoF,QAASlhG,KAAK0vC,KAHhB,kBAOC1vC,KAAKqX,MAAM68O,SACV,mBAAQj2P,KAAK,SAAS+a,UAAU,4BAAhC,UACE,SAAC,GAAD,CAAetF,KAAK,KAAKwK,UAAU,SAAS64J,KAAK,cAGnD/2K,KAAKqX,MAAM68O,SACX,mBACEj2P,KAAK,SACL+a,UAAU,wBACVkoF,QAASlhG,KAAK29P,aAHhB,4BAWR,SAAC,GAAD,WACE,SAAC,GAAD,WACE,SAAC,GAAD,WACE,mBACE1/P,KAAK,SACL+a,UAAU,8BACVkoF,QAASlhG,KAAKwuR,gBAHhB,8CAYX,GArbH,mCAubE,SAAsBtwE,GAAuC,IAAD,MAC1D,GAAiB,OAAbA,EAAJ,CAEA,IAAIp/M,EAAUkB,KAAKisK,aAEnB,OACE,iCACE,UAAC,GAAD,CAAKjzJ,UAAU,gBAAf,WACE,cAAGA,UAAU,eAAb,0DACA,eAAGA,UAAU,eAAb,6WAMoB,WAOtB,SAAC,GAAD,CAAWA,UAAU,YAArB,UACE,SAAC,GAAD,CAAO0qG,UAAU,aAAa1qG,UAAU,iBAAxC,UACE,gBAAKA,UAAU,qBAAf,UACE,SAACw0Q,GAAD,CACEryR,IAAI,yMACJskB,OAAQ,CAAEjF,MAAO,OAAQE,OAAQ,QACjCmxQ,QAAS,CACP3rE,UAAS,UAAEphN,EAAQm/M,eAAV,aAAE,EAAiBiC,UAC5Bi0C,SAAQ,UAAEr1P,EAAQm/M,eAAV,aAAE,EAAiBk2C,SAC3Bp3L,MAAK,UAAEj+D,EAAQm/M,eAAV,aAAE,EAAiB2B,wBA9BT,CAsC9B,GA9dH,+BAgeE,SAAkB1B,GAAuC,IAAD,OACtD,GAAiB,OAAbA,EAEJ,OACE,iCACE,SAAC,GAAD,CAAKllM,UAAU,gBAAf,UACE,cAAGA,UAAU,eAAb,0FAKF,SAAC,GAAD,CAAWA,UAAU,YAAYoH,MAAO,CAAE6uQ,UAAW,KAArD,UACE,SAAC,GAAD,CAAKj2Q,UAAU,WAAf,UACE,UAAC,GAAD,CAAOgkM,IAAK,EAAGt5F,UAAU,aAAa1qG,UAAU,aAAhD,WACE,SAACk5O,GAAD,CACEC,YAAanyP,KAAKqX,MAAM4nP,UACxBtiN,MAAO38C,KAAKqX,MAAM8kC,OAAO82M,eAAe,kBAE1C,SAACf,GAAD,CACEC,YAAanyP,KAAKqX,MAAM4nP,UACxBtiN,MAAO38C,KAAKqX,MAAM8kC,OAAO82M,eAAe,eAE1C,SAACf,GAAD,CACEC,YAAanyP,KAAKqX,MAAM4nP,UACxBtiN,MAAO38C,KAAKqX,MAAM8kC,OAAO82M,eAAe,oBAE1C,SAACf,GAAD,CACEC,YAAanyP,KAAKqX,MAAM4nP,UACxBtiN,MAAO38C,KAAKqX,MAAM8kC,OAAO82M,eAAe,aAE1C,SAACiK,GAAD,CACE/K,YAAanyP,KAAKqX,MAAM4nP,UACxBtiN,MAAO38C,KAAKqX,MAAM8kC,OAAO82M,eAAe,iBACxCqK,WAAYt9P,KAAK49P,cACjBn9J,SACE,SAAC,GAAD,CACEy7J,YAAal8P,KAAKqX,MAAM6kP,YACxBrjD,OAAQ74M,KAAKqX,MAAMskQ,UACnBx/N,OAAQn8C,KAAKqX,MAAM8kC,OACnBvC,aAAc55C,KAAK45C,aACnBihN,QAAQ,gBACRE,QAAQ,UACR6B,WAAW,cAOvB,UAAC,GAAD,CAAW5jP,UAAU,OAArB,WACE,SAAC,GAAD,WACE,SAAC,GAAD,CAAKA,UAAU,aAAf,UACE,SAAC,SAAD,CACE/a,KAAK,SACL2G,GAAG,sBACHmR,MAAM,oBACNmH,SAAO,EACPgkF,QAAS,kBACP,EAAKrzB,SAAS,CAAEoxL,WAAY,EAAK5nP,MAAM4nP,WADhC,SAMf,SAAC,GAAD,CACEv7I,UAAU,aACVs5F,IAAK,EACLhkM,UAAU,6BAHZ,UAKE,UAAC,GAAD,YACE,mBACE/a,KAAK,SACL+a,UAAU,oDACVkoF,QAASlhG,KAAK0vC,KAHhB,kBAOC1vC,KAAKqX,MAAM68O,SACV,mBAAQj2P,KAAK,SAAS+a,UAAU,4BAAhC,UACE,SAAC,GAAD,CAAetF,KAAK,KAAKwK,UAAU,SAAS64J,KAAK,cAGnD/2K,KAAKqX,MAAM68O,SACX,mBACEj2P,KAAK,SACL+a,UAAU,wBACVkoF,QAASlhG,KAAK29P,aAHhB,4BAWP39P,KAAK+uR,WAAU,KAGrB,GAhkBH,uBAkkBE,WAAa,IAAD,IACV,OACE,UAAA/uR,KAAKqX,MAAM6mM,gBAAX,eAAqBy9D,cACpB,UAAA37Q,KAAKqX,MAAM6mM,gBAAX,eAAqB4wE,cACpB9uR,KAAKqX,MAAM6mM,SAASy9D,UAAU/7D,aAAaniN,gBACzC0wR,EAAiBU,UAAUpxR,cAElC,GAzkBH,oBA2kBE,WAAU,IAAD,QAKH4vE,EAJJ,OAAIrtE,KAAKqX,MAAMomP,YACN,SAACnsD,GAAD,CAAU3nK,GAAI3pC,KAAKqX,MAAMomP,aAI9Bz9P,KAAKqX,MAAMyvJ,SAEX,wBACE,0CAUJz5F,EANA,UAACrtE,KAAKqX,MAAM6mM,gBAAZ,OAAC,EAAqBy9D,YACe,KAArC,UAAA37Q,KAAKqX,MAAM6mM,gBAAX,eAAqB4wE,cACpB9uR,KAAKqX,MAAMm3Q,gBAGHxuR,KAAKqX,MAAMo3Q,UACTzuR,KAAKuuR,sBAAsBvuR,KAAKqX,MAAM6mM,UAEhD,UAAAl+M,KAAKqX,MAAM6mM,gBAAX,SAAqBy9D,YAAc37Q,KAAKkvR,aACzClvR,KAAKqX,MAAMm3Q,gBAEAxuR,KAAKouR,kBAAkBpuR,KAAKqX,MAAM6mM,UACpCl+M,KAAKkvR,aAAelvR,KAAKqX,MAAMg3Q,QAC7BruR,KAAKsuR,sBAAsBtuR,KAAKqX,MAAM6mM,UAGtCl+M,KAAKmvR,YAAYnvR,KAAKqX,MAAM6mM,UAZ5Bl+M,KAAKmvR,YAAYnvR,KAAKqX,MAAM6mM,WAiBvC,SAACuC,GAAD,CACEznM,UAAS,qBACPhZ,KAAKqX,MAAMo3Q,UACP,cACCzuR,KAAKqX,MAAMg3Q,SAAX,UAAsBruR,KAAKqX,MAAM6mM,gBAAjC,OAAsB,EAAqB4wE,eAC3C9uR,KAAKqX,MAAMm3Q,gBACZ,WACA,IAENpiP,MAAO,wBATT,UAWE,SAAC,GAAD,WACE,SAAC,GAAD,CAAKpzB,UAAU,SAAf,UACE,SAAC,GAAD,CAAMgmP,SAAUh/P,KAAK29P,aAArB,SAAoCtwL,UAgB7C,GA1oBH,yDA4oBE,+FAE0B,QADlBvuE,EAAUkB,KAAKlB,SACTm/M,QAFd,iDAIEt/M,KAAAA,IAEI,iDACEG,EAAQm/M,QAAQq2C,YAEnBn0P,MAAK,SAAC5E,GAAc,IAAD,EAClB,EAAKsyE,SAAS,CACZqwI,SAAU3iN,EAAS1B,KACnB8hR,UAAS,UAAEpgR,EAAS1B,KAAK8hR,iBAAhB,QAA6B,CAAC,EACvC70G,SAAS,IAEX,EAAK+2F,YAAY,UAClB,IACAroP,OAAM,SAACtS,GAC4B,MAA9BA,EAAM3H,SAASw4O,YACjBygB,MAAM,eAET,IArBL,gDA5oBF,2DAAsCz0C,IAAzBouE,GAIJj8K,YAAc8rG,GAJVmwE,GAKJ97K,YAAc87K,GAAiB/sR,KAL3B+sR,GAMJU,UAAY,mBCpCd,IAAMhF,GAAb,8BAGI,WAAYr6Q,GAAa,IAAD,oBACpB,cAAMA,IACDkgC,KAAO,EAAKA,KAAKlxC,KAAV,MACZ,EAAKusB,KAAO,EAAKA,KAAKvsB,KAAV,MACZ,EAAKwoR,QAAU,EAAKA,QAAQxoR,KAAb,MACf,EAAK6Y,MAAQ,CAAEyvJ,SAAS,EAAOo3C,SAAU,KAAM9lM,SAAU,KAAM64C,KAAM,GALjD,CAMvB,CATL,2CAWI,WACI6zL,GAAkBI,cAAc,CAAE9jP,KAAM,iBAE3C,GAdL,kBAgBI,WACI,IAAI6vD,EAAOjxD,KAAKqX,MAAM45C,KAET,IAATA,EACAjxD,KAAK6tE,SAAS,CACVuhN,gBAAgB,KAGhBn+N,EAAO,GACPA,IAEJjxD,KAAK6tE,SAAS,CACV5c,KAAMA,IAGjB,GA/BL,kBAiCI,WACI,IAAIA,EAAOjxD,KAAKqX,MAAM45C,KAET,IAATA,GAKAA,EAAO,GACPA,IAEJjxD,KAAK6tE,SAAS,CACV5c,KAAMA,KARNjxD,KAAK6tE,SAAS,CAAEuhN,gBAAgB,GAWvC,GAhDL,qBAkDI,SAAQn+N,GACJjxD,KAAK6tE,SAAS,CAAE5c,KAAMA,GACzB,GApDL,oBAsDI,WAAU,IAAD,IACL,GAAIjxD,KAAKqX,MAAM+3Q,eACX,OAAQ,SAAC99E,GAAD,CAAU3nK,GAAI,aAE1B,IAAI7qC,EAAUkB,KAAKisK,aAEnB,GAAIjsK,KAAKqX,MAAMyvJ,SAAgC,OAArBhoK,EAAQo/M,SAC9B,OAAQ,+BAAE,wBAAG,2CAEjB,IAAImxE,GAAgC,UAAAvwR,EAAQo/M,gBAAR,eAAkBjgN,QAAS69M,GAAak7C,2BAAxC,UAAoEl4P,EAAQo/M,gBAA5E,aAAoE,EAAkB+4C,YAE1H,OACI,iCACEo4B,IACE,gCACqB,IAApBrvR,KAAKqX,MAAM45C,OACR,SAAC4/M,GAAD,CAAQ9lP,KAAM/qB,KAAK+qB,KAAM2kB,KAAM1vC,KAAK0vC,KAAMuhB,KAAK,IAAIq+N,MAAM,MAExC,IAApBtvR,KAAKqX,MAAM45C,OACR,SAACusM,GAAD,CAAU+xB,WAAW,EAAM7/O,KAAM1vC,KAAK0vC,KAAMuhB,KAAK,IAAIq+N,MAAM,IAAIE,SAAS,OAI/EH,IACG,gCACqB,IAApBrvR,KAAKqX,MAAM45C,OACR,SAAC4/M,GAAD,CAAQ9lP,KAAM/qB,KAAK+qB,KAAM2kB,KAAM1vC,KAAK0vC,KAAMuhB,KAAK,IAAIq+N,MAAM,MAExC,IAApBtvR,KAAKqX,MAAM45C,OACR,SAACusM,GAAD,CAAU+xB,WAAW,EAAMxkQ,KAAM/qB,KAAK+qB,KAAM2kB,KAAM1vC,KAAK0vC,KAAMuhB,KAAK,IAAIq+N,MAAM,IAAIE,SAAS,IAExE,IAApBxvR,KAAKqX,MAAM45C,OACR,SAACk9N,GAAD,CAAkBoB,WAAW,EAAMxkQ,KAAM/qB,KAAK+qB,KAAM2kB,KAAM1vC,KAAK0vC,KAAMuhB,KAAK,IAAIq+N,MAAM,WAOnG,GA7FL,yDA+FI,+FAE4B,QADlBxwR,EAAUkB,KAAKlB,SACTm/M,QAFhB,iDAKIt/M,KAAAA,IAAU,iDAAmDG,EAAQm/M,QAAQq2C,YACxEn0P,MAAK,SAAC5E,GACH,EAAKsyE,SAAS,CAAEqwI,SAAU3iN,EAAS1B,OACnC,EAAK41R,aAER,IACAj6Q,OAAM,SAACtS,GAC8B,MAA9BA,EAAM3H,SAASw4O,YACfygB,MAAM,eAEb,IAfT,gDA/FJ,8GAiHI,iGAE4B,QADlB11P,EAAUkB,KAAKlB,SACTm/M,QAFhB,iDAKQ9iN,EALR,2CAKkD2D,EAAQm/M,QAAQq2C,YAC9D31P,KAAAA,IACSxD,GACJgF,MAAK,SAAC5E,GACH,EAAKsyE,SAAS,CAAEz1D,SAAU7c,EAAS1B,KAAMitK,SAAS,GACrD,IACAtxJ,OAAM,SAACtS,GAC8B,MAA9BA,EAAM3H,SAASw4O,YACfygB,MAAM,eAEb,IAfT,gDAjHJ,2DAAmCz0C,ICxBnC,SAAS98F,KAA2Q,OAA9PA,GAAWl/G,OAAOQ,QAAU,SAAUqB,GAAU,IAAK,IAAIvF,EAAI,EAAGA,EAAI2I,UAAU3U,OAAQgM,IAAK,CAAE,IAAIW,EAASgI,UAAU3I,GAAI,IAAK,IAAI7C,KAAOwD,EAAc+C,OAAO/E,UAAUwP,eAAetN,KAAKF,EAAQxD,KAAQoI,EAAOpI,GAAOwD,EAAOxD,GAAW,CAAC,OAAOoI,CAAS,EAASq9G,GAASpgH,MAAM7C,KAAMgJ,UAAa,CAI7T,SAAS69G,GAAuB11G,GAAQ,QAAa,IAATA,EAAmB,MAAM,IAAI21G,eAAe,6DAAgE,OAAO31G,CAAO,CDoBzJ04Q,GACF33K,YAAc8rG,GCdzB,IAAI0xE,GAEJ,SAAUvuH,GAPV,IAAwBj6C,EAAUC,EAUhC,SAASuoK,IACP,IAAIloK,EAOJ,OALAA,EAAQ25C,EAAiBjgK,KAAKlB,OAASA,MACjC2vR,cAAgBnoK,EAAMmoK,cAAcnxR,KAAKqoH,GAAuBW,IACtEA,EAAMooK,cAAgBpoK,EAAMooK,cAAcpxR,KAAKqoH,GAAuBW,IACtEA,EAAM5tE,aAAe4tE,EAAM5tE,aAAap7C,KAAKqoH,GAAuBW,IACpEA,EAAMqoK,mBAAqBroK,EAAMqoK,mBAAmBrxR,KAAKqoH,GAAuBW,IACzEA,CACR,CAnB+BL,EAQNg6C,GARJj6C,EAQPwoK,GARwC1wR,UAAY+E,OAAO7E,OAAOioH,EAAWnoH,WAAYkoH,EAASloH,UAAU2P,YAAcu4G,EAAUA,EAASz2D,UAAY02D,EAqBxK,IAAIirD,EAASs9G,EAAU1wR,UAkKvB,OAhKAozK,EAAOj7G,SAAW,WAChB,OAAIn3D,KAAKwP,MAAMsgR,iBAAiCzyR,IAAnB2C,KAAK+vR,UACzB/vR,KAAKwP,MAAMsgR,WAAWE,YAAYhwR,KAAK+vR,WAGzC,IACR,EAED39G,EAAO69G,YAAc,WACnB,OAAIjwR,KAAKwP,MAAMsgR,iBAAiCzyR,IAAnB2C,KAAK+vR,UACzB/vR,KAAK+vR,UAGP,IACR,EAED39G,EAAO5mE,QAAU,WACf,IAAIskL,EAAa9vR,KAAKwP,MAAMsgR,WAE5B,GAAIA,QAAiCzyR,IAAnB2C,KAAK+vR,UACrB,OAAOD,EAAWtkL,QAAQxrG,KAAK+vR,WAE/B/vR,KAAKkwR,mBAAoB,CAE5B,EAED99G,EAAO+9G,aAAe,WACpB,IAAIx0J,EAAS37H,KAEb,OAAO,IAAIxG,SAAQ,SAAUC,EAASC,GACpCiiI,EAAOy0J,iBAAmB32R,EAC1BkiI,EAAO00J,gBAAkB32R,EAEzBiiI,EAAOnwB,SACR,GACF,EAED4mE,EAAOzxI,MAAQ,WACT3gC,KAAKwP,MAAMsgR,iBAAiCzyR,IAAnB2C,KAAK+vR,WAChC/vR,KAAKwP,MAAMsgR,WAAWnvP,MAAM3gC,KAAK+vR,UAEpC,EAED39G,EAAOu9G,cAAgB,WACjB3vR,KAAKwP,MAAM8gR,UACbtwR,KAAKwP,MAAM8gR,YAEXtwR,KAAK45C,aAAa,KAErB,EAEDw4H,EAAOw9G,cAAgB,WACjB5vR,KAAKwP,MAAM+gR,WACbvwR,KAAKwP,MAAM+gR,YAGTvwR,KAAKqwR,kBACPrwR,KAAKqwR,yBACErwR,KAAKowR,wBACLpwR,KAAKqwR,gBAEf,EAEDj+G,EAAOx4H,aAAe,SAAsB15C,GACtCF,KAAKwP,MAAMk+G,UACb1tH,KAAKwP,MAAMk+G,SAASxtH,GAGlBF,KAAKowR,mBACPpwR,KAAKowR,iBAAiBlwR,UACfF,KAAKqwR,uBACLrwR,KAAKowR,iBAEf,EAEDh+G,EAAOo+G,eAAiB,WACtB,GAAIxwR,KAAKwP,MAAMsgR,YAAc9vR,KAAKwP,MAAMsgR,WAAW18K,aAA6B/1G,IAAnB2C,KAAK+vR,UAAyB,CACzF,IAAIj1J,EAAU3wH,SAASa,cAAc,OACrChL,KAAK+vR,UAAY/vR,KAAKwP,MAAMsgR,WAAW18K,OAAO0nB,EAAS,CACrD21J,QAASzwR,KAAKwP,MAAMihR,QACpBrkR,SAAUpM,KAAK45C,aACf82O,MAAO1wR,KAAKwP,MAAMkhR,MAClBzyR,KAAM+B,KAAKwP,MAAMvR,KACjBynD,SAAU1lD,KAAKwP,MAAMk2C,SACrB,mBAAoB1lD,KAAK2vR,cACzB,iBAAkB3vR,KAAK4vR,cACvBl8Q,KAAM1T,KAAKwP,MAAMkE,KACjBi9Q,OAAQ3wR,KAAKwP,MAAMmhR,OACnB97H,GAAI70J,KAAKwP,MAAMqlJ,GACf+7H,MAAO5wR,KAAKwP,MAAMohR,QAEpB5wR,KAAK6wR,QAAQz3Q,YAAY0hH,EAC1B,CAEG96H,KAAKkwR,mBAAqBlwR,KAAKwP,MAAMsgR,iBAAiCzyR,IAAnB2C,KAAK+vR,YAC1D/vR,KAAKkwR,mBAAoB,EACzBlwR,KAAKwrG,UAER,EAED4mE,EAAO5uB,kBAAoB,WACzBxjJ,KAAKwwR,gBACN,EAEDp+G,EAAO7lB,mBAAqB,WAC1BvsJ,KAAKwwR,gBACN,EAEDp+G,EAAOliB,qBAAuB,gBACL7yJ,IAAnB2C,KAAK+vR,YACP/vR,KAAK8wR,+BACL9wR,KAAK2gC,QAER,EAEDyxI,EAAO0+G,6BAA+B,WACpC,IAAIC,EAAgB5mR,SAASa,cAAc,OAI3C,IAHAb,SAASmyB,KAAKljB,YAAY23Q,GAC1BA,EAAc3wQ,MAAMyjG,QAAU,OAEvB7jH,KAAK6wR,QAAQvtJ,YAClBytJ,EAAc33Q,YAAYpZ,KAAK6wR,QAAQvtJ,YAIzC/mI,YAAW,WACT4N,SAASmyB,KAAKziB,YAAYk3Q,EAC3B,GAAE,IACJ,EAED3+G,EAAOy9G,mBAAqB,SAA4BjmN,GACtD5pE,KAAK6wR,QAAUjnN,CAChB,EAEDwoG,EAAOh/D,OAAS,WAId,IAAI0U,EAAc9nH,KAAKwP,MAanBq8G,GAZU/D,EAAY2oK,QACX3oK,EAAY4F,SACf5F,EAAY4oK,MACb5oK,EAAY7pH,KACR6pH,EAAYpiE,SACXoiE,EAAYwoK,UACZxoK,EAAYyoK,UACjBzoK,EAAYp0G,KACVo0G,EAAY6oK,OACR7oK,EAAYgoK,WACjBhoK,EAAY8oK,MACf9oK,EAAY+sC,GAjLzB,SAAuC7zJ,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAA2DxD,EAAK6C,EAA5DuF,EAAS,CAAC,EAAO0lB,EAAavnB,OAAOsC,KAAKrF,GAAqB,IAAKX,EAAI,EAAGA,EAAIirB,EAAWj3B,OAAQgM,IAAO7C,EAAM8tB,EAAWjrB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,IAAaoI,EAAOpI,GAAOwD,EAAOxD,IAAQ,OAAOoI,CAAS,CAkL9RwlB,CAA8B08F,EAAa,CAAC,UAAW,WAAY,QAAS,OAAQ,WAAY,YAAa,YAAa,OAAQ,SAAU,aAAc,QAAS,QAIpL,OAAOlF,EAAAA,cAAoB,MAAOK,GAAS,CAAC,EAAG4I,EAAY,CACzDl4G,IAAK3T,KAAK6vR,qBAEb,EAEMH,CACR,CAjLD,CAiLE9sK,EAAAA,WAGF8sK,GAAUr9K,YAAc,YACxBq9K,GAAUj9K,UAAY,CACpBg+K,QAASt1K,KAAAA,OAAAA,WACTuS,SAAUvS,KAAAA,KACV20K,WAAY30K,KAAAA,OACZu1K,MAAOv1K,KAAAA,MAAgB,CAAC,OAAQ,UAChCl9G,KAAMk9G,KAAAA,MAAgB,CAAC,QAAS,UAChCz1D,SAAUy1D,KAAAA,OACVm1K,UAAWn1K,KAAAA,KACXo1K,UAAWp1K,KAAAA,KACXznG,KAAMynG,KAAAA,MAAgB,CAAC,UAAW,SAAU,cAC5Cw1K,OAAQx1K,KAAAA,OACR05C,GAAI15C,KAAAA,OACJy1K,MAAOz1K,KAAAA,MAAgB,CAAC,cAAe,aAAc,YAEvDu0K,GAAUt9K,aAAe,CACvBsb,SAAU,WAAsB,EAChCgjK,MAAO,QACPzyR,KAAM,QACNynD,SAAU,EACVhyC,KAAM,SACNk9Q,MAAO,6ECtNT,SAAS3tK,KAA2Q,OAA9PA,GAAWl/G,OAAOQ,QAAU,SAAUqB,GAAU,IAAK,IAAIvF,EAAI,EAAGA,EAAI2I,UAAU3U,OAAQgM,IAAK,CAAE,IAAIW,EAASgI,UAAU3I,GAAI,IAAK,IAAI7C,KAAOwD,EAAc+C,OAAO/E,UAAUwP,eAAetN,KAAKF,EAAQxD,KAAQoI,EAAOpI,GAAOwD,EAAOxD,GAAW,CAAC,OAAOoI,CAAS,EAASq9G,GAASpgH,MAAM7C,KAAMgJ,UAAa,CAS7T,IAAIgoR,GAAa,CAAC,EAEdC,GAAU,ECTd,IAAIC,GAAe,iBAanB,ICbYC,GDaZ,GDHe,SAAyBC,EAAc1sR,GAEpD,OADAA,EAAUA,GAAW,CAAC,EACf,SAA6B2sR,GAClC,IAAIC,EAAuBD,EAAiBh/K,aAAeg/K,EAAiBjwR,MAAQ,YAEhFmwR,EAEJ,SAAUtqK,GAfd,IAAwBC,EAAUC,EAkB5B,SAASoqK,EAAkB/hR,EAAO1Q,GAChC,IAAI0oH,EAKJ,OAHAA,EAAQP,EAAW/lH,KAAKlB,KAAMwP,EAAO1Q,IAAYkB,MAC3CqX,MAAQ,CAAC,EACfmwG,EAAMgqK,YAAc,GACbhqK,CACR,CAzB2BL,EAgBMF,GAhBhBC,EAgBHqqK,GAhBoCvyR,UAAY+E,OAAO7E,OAAOioH,EAAWnoH,WAAYkoH,EAASloH,UAAU2P,YAAcu4G,EAAUA,EAASz2D,UAAY02D,EA2BpK,IAAIirD,EAASm/G,EAAkBvyR,UAmM/B,OAjMAozK,EAAOq/G,mCAAqC,WAK1C,OAJKzxR,KAAK0xR,mBACR1xR,KAAK0xR,iBAAmB,uBAAyBT,MAG5CjxR,KAAK0xR,gBACb,EAEDt/G,EAAOu/G,eAAiB,WAEtB,OADA3xR,KAAKwxR,YAAsC,oBAAjBJ,EAA8BA,IAAiBA,EAClEpxR,KAAKwxR,WACb,EAEDp/G,EAAOw/G,4BAA8B,SAAqCv6Q,GACxE,IAAIskH,EAAS37H,KAGbA,KAAK6tE,SAASx2D,GAAO,WACnB,OAAOskH,EAAOnsH,MAAMqiR,mBAAqBl2J,EAAOnsH,MAAMqiR,kBAAkBl2J,EAAOtkH,MAChF,GACF,EAED+6J,EAAO0/G,uCAAyC,WAC9C,IAAIC,EAAWf,GAAWhxR,KAAKwxR,aAE/B,IAAKO,IAAaA,EAAS50P,OACzB,MAAM,IAAItpC,MAAM,yBAGlB,IAAK,IAAIm+R,KAAUD,EAASE,UAC1BF,EAASE,UAAUD,GAAQD,UAGtBpmR,OAAOjH,EAAQwsR,aACvB,EAED9+G,EAAO5uB,kBAAoB,WACzB,IAAIjnB,EAASv8H,KAETkyR,EAAYlyR,KAAK2xR,iBACjBn0R,EAAMwC,KAAKyxR,qCACX5lG,EAAWnnL,EACXytR,EAAatmG,EAASsmG,WACtBjB,EAAerlG,EAASqlG,aACxBkB,EAAWvmG,EAASumG,SAUxB,GARID,GAA4C,qBAAvBxmR,OAAOwmR,KAC9BnB,GAAWkB,GAAa,CACtB/0P,QAAQ,EACR80P,UAAW,CAAC,IAKZjB,GAAWkB,GAAY,CACzB,IAAI7zO,EAAQ2yO,GAAWkB,GAEvB,OAAI7zO,IAAUA,EAAMlhB,QAAUkhB,EAAMg0O,cAClCryR,KAAK4xR,4BAA4BvzO,QAKnCA,EAAM4zO,UAAUz0R,GAAO,SAAU6gD,GAC/B,OAAOk+E,EAAOq1J,4BAA4BvzO,EAC3C,EAGF,CAQD,IAAI4zO,EAAY,CAAC,EAEjBA,EAAUz0R,GAAO,SAAU6gD,GACzB,OAAOk+E,EAAOq1J,4BAA4BvzO,EAC3C,EAED2yO,GAAWkB,GAAa,CACtB/0P,QAAQ,EACR80P,UAAWA,GAEb,IAAIhsM,EAAS97E,SAASa,cAAc,UAIpC,IAAK,IAAI6hD,KAHTo5B,EAAOj5D,IAAMklQ,EACbjsM,EAAO60H,OAAQ,EAEOp2M,EAAQuU,WAC5BgtE,EAAO96E,aAAa0hD,EAAWnoD,EAAQuU,WAAW4zC,IAGhDulO,IACFnsM,EAAOrhF,GAAKwtR,GAGd,IAAIE,EAAoC,SAA2C5tO,GACjF,GAAIssO,GAAWkB,GAAY,CACzB,IACIK,EADWvB,GAAWkB,GACED,UAE5B,IAAK,IAAID,KAAUO,EACb7tO,EAAK6tO,EAAaP,YACbO,EAAaP,EAGzB,CACF,EAEGd,GAAkC,qBAAXvlR,SACzBA,OAAOulR,GAAgB,WACrB,OAAO30J,EAAOu1J,wCACf,GAGH7rM,EAAOx+D,OAAS,WACd,IAAIsqQ,EAAWf,GAAWkB,GAEtBH,IACFA,EAAS50P,QAAS,EAClBm1P,GAAkC,SAAUlyO,GAC1C,OAAI8wO,IAIJ9wO,EAAS2xO,IACF,EACR,IAEJ,EAED9rM,EAAOvpF,QAAU,WACf,IAAIq1R,EAAWf,GAAWkB,GAEtBH,IACFA,EAASM,SAAU,EACnBC,GAAkC,SAAUlyO,GAE1C,OADAA,EAAS2xO,IACF,CACR,IAEJ,EAED5nR,SAASmyB,KAAKljB,YAAY6sE,EAC3B,EAEDmsF,EAAOliB,qBAAuB,WAE5B,IAAIgiI,EAAYlyR,KAAKwxR,YAErB,IAAgC,IAA5B9sR,EAAQ8tR,gBAGV,IAFA,IAAIC,EAAatoR,SAASm8E,qBAAqB,UAEtCjmF,EAAI,EAAGA,EAAIoyR,EAAWp+R,OAAQgM,GAAK,EACtCoyR,EAAWpyR,GAAG2sB,IAAI1wB,QAAQ41R,IAAc,GACtCO,EAAWpyR,GAAGuZ,YAChB64Q,EAAWpyR,GAAGuZ,WAAWC,YAAY44Q,EAAWpyR,IAOxD,IAAI0xR,EAAWf,GAAWkB,GAEtBH,WACKA,EAASE,UAAUjyR,KAAKyxR,uCAEC,IAA5B/sR,EAAQ8tR,wBACHxB,GAAWkB,GAGvB,EAED9/G,EAAOh/D,OAAS,WACd,IAAI++K,EAAaztR,EAAQytR,WAErBrqK,EAAc9nH,KAAKwP,MAEnBkjR,GADoB5qK,EAAY+pK,kBACjB/pK,EAAY4qK,cAC3B7mK,EArNZ,SAAuC7qH,EAAQqqB,GAAY,GAAc,MAAVrqB,EAAgB,MAAO,CAAC,EAAG,IAA2DxD,EAAK6C,EAA5DuF,EAAS,CAAC,EAAO0lB,EAAavnB,OAAOsC,KAAKrF,GAAqB,IAAKX,EAAI,EAAGA,EAAIirB,EAAWj3B,OAAQgM,IAAO7C,EAAM8tB,EAAWjrB,GAAQgrB,EAAS/uB,QAAQkB,IAAQ,IAAaoI,EAAOpI,GAAOwD,EAAOxD,IAAQ,OAAOoI,CAAS,CAqN1RwlB,CAA8B08F,EAAa,CAAC,oBAAqB,iBAQlF,OALIqqK,GAAgC,qBAAXxmR,SACvBkgH,EAAWsmK,GAA4C,qBAAvBxmR,OAAOwmR,GAA8BxmR,OAAOwmR,QAAc90R,GAG5FwuH,EAAWl4G,IAAM++Q,GACV1nR,EAAAA,EAAAA,eAAcqmR,EAAkBxlK,EACxC,EAEM0lK,CACR,CAhND,CAgNEnpK,EAAAA,WAKEuqK,GAAqBzoH,EAAAA,EAAAA,aAAW,SAAU16J,EAAOmE,GACnD,OAAO3I,EAAAA,EAAAA,eAAcumR,EAAmBtuK,GAAS,CAAC,EAAGzzG,EAAO,CAC1DkjR,aAAc/+Q,IAEjB,IAKD,OAJAg/Q,EAAmBtgL,YAAc,qBAAuBi/K,EAAuB,IAC/EqB,EAAmBlgL,UAAY,CAC7Bo/K,kBAAmB12K,KAAAA,MAEdy3K,KAAaD,EAAoBtB,EACzC,CACF,CCpOcwB,EANf,WAGE,MAAO,aANkB,qBAAXlnR,QAA0BA,OAAOmnR,kBAAoB,CAAC,GAKtCC,gBAAkB,gBAAkB,kBACnC,4BAA8B7B,GAAe,kBAC7E,GAE4C,CAC3CA,aAAcA,GACdiB,WAde,cAYjB,CAGGzC,IEhBH,MCIasD,GAAb,8BACI,WAAYxjR,GAAa,IAAD,oBACpB,cAAMA,IACD6H,MAAQ,CAAEg6C,MAAM,EAAO0L,MAAO,GAAI78D,MAAO,GAAI4mK,SAAS,EAAMmsH,WAAY,MAC7E,EAAKC,eAAiB,EAAKA,eAAe10R,KAApB,MACtB,EAAKkvH,SAAW,EAAKA,SAASlvH,KAAd,MAChB,EAAK20R,gBAAkB,EAAKA,gBAAgB30R,KAArB,MALH,CAMvB,CAPL,2CASI,WAAqB,IAAD,OAChBG,KAAAA,SAAAA,QAAyBoI,uDACzBpI,KAAAA,IAAU,iCACLwB,MAAK,SAAC5E,GACH,EAAKsyE,SAAS,CAAEolN,WAAY13R,EAAS1B,KAAMitK,SAAS,GACvD,GACR,GAfL,sBAiBI,SAASnrK,GACLqE,KAAK6tE,SAAS,CAAE9Q,MAAOphE,GAC1B,GAnBL,4BAqBI,WAC6B,KAArBqE,KAAKqX,MAAM0lD,OAAqC,OAArB/8D,KAAKqX,MAAM0lD,OAAuC,KAArB/8D,KAAKqX,MAAMnX,OAAqC,OAArBF,KAAKqX,MAAMnX,QAGlGvB,KAAAA,SAAAA,QAAyBoI,uDACzBpI,KAAAA,KAAW,2BAA4B,KAAM,CAAE3C,OAAQ,CAAE+gE,MAAO/8D,KAAKqX,MAAM0lD,MAAO78D,MAAOF,KAAKqX,MAAMnX,SACpGF,KAAK6tE,SAAS,CAAExc,MAAM,IACzB,GA5BL,6BA8BI,SAAgB11D,GACZqE,KAAK6tE,SAAS,CAAE3tE,MAAOvE,GAC1B,GAhCL,oBAkCI,WAAU,IAAD,OACL,OAAIqE,KAAKqX,MAAMyvJ,SACJ,wBAAG,0CAGV,UAAC,GAAD,CAAW9tJ,UAAU,GAArB,WACI,UAAC,GAAD,CAAKA,UAAU,aAAaoH,MAAO,CAAEywO,UAAW,UAAhD,WACI,mDACA,cAAG73O,UAAU,oBAAb,qLAEiB,IAApBhZ,KAAKqX,MAAMg6C,OACJ,iCACA,UAAC,GAAD,YACI,SAAC,GAAD,CAAKr4C,UAAU,WACf,UAAC,GAAD,CAAKA,UAAU,QAAf,WACI,wBAAG,qEACH,SAAC,WAAD,CAAc/a,KAAK,QAAQtC,MAAOqE,KAAKqX,MAAM0lD,MAAO2wD,SAAU,SAAAllH,GAAO,EAAKklH,SAASllH,EAAE5C,OAAOjK,MAAS,QAEzG,SAAC,GAAD,CAAKqd,UAAU,cAEnB,UAAC,GAAD,CAAKA,UAAU,iBAAiBoH,MAAO,CAAEM,WAAY,QAArD,WACA,SAAC,GAAD,CAAK1H,UAAU,YACX,SAAC,GAAD,CAAKA,UAAU,QAAf,UACI,SAAC,GAAD,CAAWoH,MAAO,CAAEywO,UAAW,SAAUhtI,QAAQ,gBAAkB4sK,QAASzwR,KAAKqX,MAAM47Q,WAAYvlK,SAAU1tH,KAAKmzR,qBAEtH,SAAC,GAAD,CAAKn6Q,UAAU,kBAI3B,UAAC,GAAD,CAAKoH,MAAO,CAAEywO,UAAW,SAAUr3N,QAAS,QAA5C,WACyB,IAApBx5B,KAAKqX,MAAMg6C,OACR,wBACI,mBAAQr4C,UAAU,kCAAkCkoF,QAASlhG,KAAKkzR,eAAlE,8BAGa,IAApBlzR,KAAKqX,MAAMg6C,OACR,eAAGr4C,UAAU,UAAb,WAAuB,iBAAMoH,MAAO,CAAEw0C,MAAO,yBAA2B57C,UAAU,4BAAlF,uCAKnB,KA3EL,GAA8BovG,EAAAA,WC+D9B,GA3D8D,SAAC,GAE/B,IAD9B7uG,EAC6B,EAD7BA,SAEA,EAA+By1L,KAAvBjwM,EAAR,EAAQA,SACFgtM,EAAU0D,GADhB,EAAkBlC,SACkB,IAoDpC,OAnDA5uM,KAAAA,SAAAA,QAAyBoI,uDAEzBpI,KAAAA,aAAAA,QAAAA,IAAA,+BAA+B,WAAOpF,GAAP,6EACxBwyM,EADwB,sBAErBl4M,MAAM,wDAFe,uBAKNkL,EAASimM,mBAAT,OAClB6L,IADkB,IAErB9E,QAAAA,KAP2B,cAKvBxwM,EALuB,OAUvB63R,EAVuB,iBAUJ73R,EAAS83R,aAC9B95R,EAAOQ,UAASR,EAAOQ,QAAQgB,cAAgBq4R,GAXtB,kBAatB75R,GAbsB,2CAA/B,uDAgBAoF,KAAAA,aAAAA,SAAAA,KACE,SAACpF,GACC,OAAOA,CACR,IACD,SAAC2J,GAqBC,MApBwB,yBAApBA,EAAM8gM,WACRjlM,EAAS0mM,eAAe,CACtBgL,sBAAuB,MAkBpBj3M,QAAQE,OAAOwJ,EACvB,KAOI,8BAAGqW,GACX,ECnCYqwQ,GAAb,8BAOE,WAAYp6Q,GAAa,IAAD,oBACtB,cAAMA,IACD6H,MAAQ,CACXyvJ,SAAS,EACTo3C,SAAU,KACVq4C,aAAa,EACb+8B,kBAAkB,EAClBC,mBAAmB,EACnB98B,kBAAkB,GARE,CAUvB,CAjBH,2CAmBE,WAAqB,IAAD,IAClB3R,GAAkBI,cAAc,CAAE9jP,KAAM,cAExC,IAAMtC,EAAUkB,KAAKlB,QAEmB,YAAtC,UAAAA,EAAQo/M,gBAAR,eAAkBq3C,kBAClB,UAACz2P,EAAQo/M,gBAAT,OAAC,EAAkB8B,qBACa,IAAhChgN,KAAKqX,MAAMo/O,kBAEXz2P,KAAK6tE,SAAS,CAAE4oL,kBAAkB,GAErC,GA9BH,+BAgCE,WAA2B,IAAD,EAClB33P,EAAUkB,KAAKlB,QACrBH,KAAAA,KAAW,8BAA+B,KAAM,CAC9C3C,OAAQ,CAAEyiN,UAAS,UAAE3/M,EAAQm/M,eAAV,aAAE,EAAiBQ,YAEzC,GArCH,sCAuCE,WACEz+M,KAAK6tE,SAAS,CAAE4oL,kBAAkB,GACnC,GAzCH,oBA2CE,WAAU,IAAD,EACD33P,EAAUkB,KAAKlB,QACjBo/M,EAAWp/M,EAAQo/M,SAEvB,GAAI,OAACp/M,QAAD,IAACA,IAAAA,EAASo/M,SAAU,OAAO,wBAE/B,GAAiB,OAAbA,QAAkC7gN,IAAb6gN,EAAzB,CAEA,GAAIA,EAASjgN,OAAS69M,GAAak7C,yBACjC,OAAO,SAAC1lD,GAAD,CAAU3nK,GAAG,0BAElB7qC,EAAQ6/M,kBAAkB7/M,EAAQ6/M,mBAInCT,EAASziN,QACVyiN,EAASziN,SAAWwgN,GAAe0sE,sBACnCzqE,EAASziN,SAAWwgN,GAAeysE,aACnCxqE,EAASziN,SAAWwgN,GAAewsE,cAErB,EAGhB,IAAIjlR,EACF06M,EAASjgN,OAAS69M,GAAa+4C,oBAC7B,0BACE,yFADF,oDAGE,kBAHF,8FAQA,0BACE,8EADF,2DAGE,kBAHF,6FAWJ,OAFA1qP,SAASmyB,KAAK0T,UAAUvxB,IAAI,qBAG1B,+BACE,SAACgiM,GAAD,CACEI,gBAAgB,EAChBz0K,OAAO,iDAAOttC,EAAQm/M,eAAf,aAAO,EAAiBiC,UAAxB,OACP18M,YAAaA,EAHf,UAKE,UAAC,GAAD,YACE,UAAC,GAAD,CAAKkgH,UAAU,aAAa1qG,UAAU,aAAtC,WACE,SAAC,GAAD,CAAK6jE,GAAI,EAAT,SACGqhI,EAASjgN,OAAS69M,GAAa+4C,oBAC9B,iBAAK77O,UAAU,0DAAf,WACE,eAAIA,UAAU,OAAd,0CACA,2DACA,mIAIA,SAACq+L,GAAD,CAAM1tK,GAAG,yBAAyB3wB,UAAU,SAA5C,UACE,mBAAQA,UAAU,0CAAlB,mCAMJ,iBAAKA,UAAU,0DAAf,WACE,eAAIA,UAAU,OAAd,wCACA,2DACA,mHAIA,SAACq+L,GAAD,CAAM1tK,GAAG,wBAAwB3wB,UAAU,SAA3C,UACE,mBAAQA,UAAU,0CAAlB,qCAOR,SAAC,GAAD,CAAK6jE,GAAI,EAAT,SACGqhI,EAASjgN,OAAS69M,GAAa+4C,oBAC9B,iBAAK77O,UAAU,kDAAf,WACE,eAAIA,UAAU,OAAd,wCACA,iFACA,0BACE,6DADF,qFAKA,SAACq+L,GAAD,CAAM1tK,GAAG,WAAW3wB,UAAU,SAA9B,UACE,mBAAQA,UAAU,0CAAlB,wCAMJ,iBAAKA,UAAU,kDAAf,WACE,eAAIA,UAAU,OAAd,+CACA,6HAIA,qFAGA,SAACq+L,GAAD,CAAM1tK,GAAG,WAAW3wB,UAAU,SAA9B,UACE,mBAAQA,UAAU,0CAAlB,0CAOR,SAAC,GAAD,QAkBF,SAACy7O,GAAD,CACE/4E,MAAsC,IAAhC17K,KAAKqX,MAAMo/O,iBACjBlQ,UAAQ,EACRoO,SAAU30P,KAAK43P,iCArI8B,CA2IxD,KA5LH,GAA+B73C,IAAlB6pE,GAIJ13K,YAAc8rG,GAJV4rE,GAKJv3K,YAAcu3K,GAAUxoR,KJnCjC,SAAY+vR,GAAAA,EAAAA,EAAAA,oBAAAA,WAAAA,sBAAAA,EAAAA,EAAAA,aAAAA,WAAAA,eAAAA,EAAAA,EAAAA,0BAAAA,WAAAA,4BAAAA,EAAAA,EAAAA,2BAAAA,SAAAA,6BAAAA,EAAAA,EAAAA,UAAAA,WAAAA,YAAAA,EAAAA,EAAAA,UAAAA,WAAAA,WAAAA,CAAZ,CAAYA,KAAAA,GAAAA,CAAAA,IKwBL,IC1BKqC,GAMAC,GAOAC,GASAC,GAcAC,GAQAC,GAKAC,GAKAC,GAKAC,GDjCCC,GAAb,8BAEE,WAAYzkR,GAAgC,IAAD,oBACzC,cAAMA,IACD6H,MAAQ,CAAE68Q,YAAa1kR,EAAM0kR,YAAa15Q,MAAO7O,OAAO+9C,YAC7D,EAAKyqO,uBAAyB,EAAKA,uBAAuB31R,KAA5B,MAC9B,EAAK41R,iBAAmB,EAAKA,iBAAiB51R,KAAtB,MACxBmN,OAAO9N,iBAAiB,SAAU,EAAKs2R,wBALE,CAO1C,CATH,4CAWE,WACMn0R,KAAKwP,MAAM0kR,cAAgBl0R,KAAKqX,MAAM68Q,aACxCl0R,KAAK6tE,SAAS,CAACqmN,YAAal0R,KAAKwP,MAAM0kR,aAE1C,GAfH,oCAiBE,WACEl0R,KAAK6tE,SAAS,CAACrzD,MAAO7O,OAAO+9C,YAC9B,GAnBH,8BAqBE,WACE,OAAO1pD,KAAKqX,MAAMmD,OAAS,IAC5B,GAvBH,+BAyBE,WACC,GA1BH,oBA4BE,WAAU,IAAD,OACHmiC,EAAe,CACjBv7C,KAAM,GACN2U,MAAO,GACPy6O,SAAUpI,GAASvhO,OACnBgpO,YAAaxH,GAAY//M,KACzBynN,cAAe/vP,KAAKwP,MAAM7T,MAC1BA,MAAOqE,KAAKwP,MAAM7T,MAClBm0P,UAAW,KACXzxC,SAAS,EACT35M,QAAS,KACTirP,aAAc,KACd13O,IAAK,KACLm7O,QAAQ,EACRnD,cAAU5yP,EACVqzP,cAAUrzP,EACVqhF,eAAWrhF,EACXm1P,UAAU,EACVx9H,YAAah1H,KAAKwP,MAAMwlH,aAGtBk/J,GAAc,EACa,OAA3Bl0R,KAAKqX,MAAM68Q,kBAAmD72R,IAA3B2C,KAAKqX,MAAM68Q,cAChDA,EAAcl0R,KAAKqX,MAAM68Q,aAG3B,IAC6B,IAWtB,IAZHniC,EAAkC,GAClC/xP,KAAKo0R,mBACPriC,EAAWlxP,KAAK,CACdmxP,YAAY,EACZC,aAAa,EACb5iP,SACA,iCACE,gBAAK2J,UAAWhZ,KAAKwP,MAAM0gP,aAAc9vO,MAAO,CAACi0Q,WAAY,UAA7D,mBAAyEr0R,KAAKwP,MAAM8kR,mBAApF,QAAmGt0R,KAAKwP,MAAMuG,SAC9G,iBAAMiD,UAAWhZ,KAAKwP,MAAM0gP,aAAc9vO,MAAO,CAAE25G,WAAY,SAAUr/G,OAAQ,MAAO6jJ,aAAc,EAAG81H,WAAY,UAArH,mBAAkIr0R,KAAKwP,MAAM8kR,mBAA7I,QAA4Jt0R,KAAKwP,MAAMuG,cAKvK/V,KAAKwP,MAAMuG,OACbg8O,EAAWlxP,KAAK,CACdmxP,YAAY,EACZC,aAAa,EACb5iP,SACA,iCACE,gBAAK2J,UAAW,mBAAqBhZ,KAAKwP,MAAM0gP,aAAc9vO,MAAO,CAACi0Q,WAAY,UAAlF,SAA8Fr0R,KAAKwP,MAAMuG,SACzG,iBAAMiD,UAAW,mBAAqBhZ,KAAKwP,MAAM0gP,aAAc9vO,MAAO,CAAE25G,WAAY,SAAUr/G,OAAQ,MAAO6jJ,aAAc,EAAG81H,WAAY,UAA1I,SAAuJr0R,KAAKwP,MAAMuG,aAKxKg8O,EAAWlxP,KAAK,CACdmxP,YAAY,EACZC,aAAa,EACb5iP,SACA,iCACE,SAAC,GAAD,CACE46O,SAAUjqP,KAAKwP,MAAMkjP,SACrB1B,WAAW,EACXr0M,MAAOA,EACPuzM,aAAclwP,KAAKwP,MAAM0gP,gBAEzB,iBAAM9vO,MAAO,CAAE25G,WAAY,SAAUr/G,OAAQ,MAAO6jJ,aAAc,EAAG81H,WAAY,UAAjF,mBAA8Fr0R,KAAKwP,MAAMwlH,mBAAzG,aAA8F,EAAwBxqG,UAAU,EAAE,OAClI,iBAAMpK,MAAO,CAAE25G,WAAY,SAAUr/G,OAAQ,MAAO6jJ,aAAc,EAAG81H,WAAY,UAAjF,mBAA8Fr0R,KAAKwP,MAAM7T,aAAzG,aAA8F,EAAkB6uB,UAAU,EAAE,YAapI,OARAunO,EAAWlxP,KAAK,CACdmxP,YAAY,EACZC,aAAa,EACbH,gBAAiB,cACjBziP,SACE,mBAAQ2J,UAAU,qBAAqBkoF,QAAS,WAAO,IAAD,EAAOgzL,GAAqB,EAAK1kR,MAAMwvP,SAAX,UAAqBriN,EAAMhhD,aAA3B,QAAoC,GAAe,EAArI,SAAwIu4R,EAAcl0R,KAAKwP,MAAM+kR,aAAe,SAAC,GAAD,CAAer2Q,UAAU,SAAS64J,KAAK,SAAS32J,MAAO,CAACw0C,MAAO,gBAIjP,SAAC,GAAD,CAAM88L,iBAAiB,EAAMK,WAAYA,EAAY3yF,OAAO,EAAOoyF,WAAW,mCAEjF,KA3GH,GAAsCppI,EAAAA,WEVzBosK,GAAb,8BAEE,WAAYhlR,GAAwB,IAAD,oBACjC,cAAMA,IACD6H,MAAQ,CAACo9Q,QAAQ,GACtB,EAAKl/M,KAAO,EAAKA,KAAK/2E,KAAV,MAHqB,CAIlC,CANH,8BAQE,SAAK7C,GAAgB,IAAD,OAClBqE,KAAK6tE,SAAS,CAAC4mN,QAAQ,IACvB5pR,UAAU6pR,UAAUC,UAAUh5R,GAC9BY,YAAW,kBAAM,EAAKsxE,SAAS,CAAC4mN,QAAQ,GAA7B,GAAsC,KAClD,GAZH,oBAcE,WACE,OACE,iCACA,SAACR,GAAD,CACEvhC,UAAQ,EACRxC,aAAclwP,KAAKwP,MAAM0gP,aACzBokC,YAAY,iBACZv+Q,MAAM,sBACNw+Q,aAAa,cAAGv7Q,UAAU,gBAC1BgmP,SAAUh/P,KAAKu1E,KACf55E,MAAOqE,KAAKwP,MAAM7T,SAClB,gBAAKqd,UAAW,gBAAkBhZ,KAAKqX,MAAMo9Q,OAAS,SAAW,aAAjE,UAA+E,cAAGz7Q,UAAU,qBAGjG,KA5BH,GAA8BovG,EAAAA,WCMjBwsK,GAAb,8BACI,WAAYplR,GAA2B,IAAD,oBAClC,cAAMA,IAED6H,MAAQ,CAAEw9Q,cAAc,EAAOC,SAAS,EAAOC,iBAAiB,GACrE,EAAKC,gBAAkB,EAAKA,gBAAgBx2R,KAArB,MAJW,CAKrC,CANL,2CAQI,WACC,GATL,6BAWI,SAAgBy2R,EAAeC,GAAgB,IAAD,OACtC7oF,GAAS,OAAC4oF,QAAD,IAACA,EAAAA,EAAU,IAAI1sR,OAK5B,GAJuB,MAAnB,OAAC2sR,QAAD,IAACA,EAAAA,EAAU,MACX7oF,GAAW,IAAM6oF,EAAO3sR,QAGb,KAAX8jM,EAAe,CAAC,IAAD,EACfrsM,KAAK6tE,SAAS,CAACinN,SAAS,IAExB,IAAMh2R,EAAUkB,KAAKisK,aACfgyC,EAAUn/M,EAAQm/M,QACpBk3E,EAA+B,CAC/B/zR,KAAM68M,EAAQm3E,YACdC,eAAgBhpF,EAChBoS,UAAWR,EAAQQ,UACnB61C,WAAU,UAAEx1P,EAAQo/M,gBAAV,aAAE,EAAkBo2C,YAElC31P,KAAAA,KACU,oBAAqBw2R,GAC1Bh1R,MAAK,WACFunF,GAAAA,IAAW,oBACX,EAAK7Z,SAAS,CAACinN,SAAS,EAAOC,iBAAiB,GACnD,IACAv/Q,OAAM,SAAChN,GACJk/E,GAAAA,IAAWl/E,GACX,EAAKqlE,SAAS,CAACinN,SAAS,EAAOC,iBAAiB,GACnD,GACR,CACJ,GAvCL,oBAyCI,WAAU,IAAD,SACCj2R,EAAUkB,KAAKisK,aACjBgpH,EAAgB,CAChB7zR,KAAM,GACN2U,MAAO,GACPy6O,SAAUpI,GAASvhO,OACnBgpO,YAAaxH,GAAY//M,KACzBynN,cAAe,GACfp0P,MAAO,GACPm0P,UAAW,KACXzxC,SAAS,EACT35M,QAAS,KACTirP,aAAc,KACd13O,IAAK,KACLm7O,QAAQ,EACRnD,cAAU5yP,EACVqzP,cAAUrzP,EACVqhF,eAAWrhF,EACXm1P,UAAU,EACVx9H,YAAa,oBAEbkgK,EAAgB,CAChB9zR,KAAM,GACN2U,MAAO,GACPy6O,SAAUpI,GAASvhO,OACnBgpO,YAAaxH,GAAY//M,KACzBynN,cAAe,GACfp0P,MAAO,GACPm0P,UAAW,KACXzxC,SAAS,EACT35M,QAAS,KACTirP,aAAc,KACd13O,IAAK,KACLm7O,QAAQ,EACRnD,cAAU5yP,EACVqzP,cAAUrzP,EACVqhF,eAAWrhF,EACXm1P,UAAU,EACVx9H,YAAa,oBAGjB,OACA,iBAAoDh8G,UAAW,sBAAuBoH,MAAOpgB,KAAKwP,MAAM4Q,MAAxG,WAEI,cAAGpH,UAAS,aAAZ,6CACA,gBAAIA,UAAU,qBAAqBkoF,QAAS,kBAAM,EAAKrzB,SAAS,CAACgnN,cAAe,EAAKx9Q,MAAMw9Q,cAA/C,EAA5C,mCAAgI,yCAChI,mBACA,UAAC,GAAD,CAAO73E,IAAK,EAAGt5F,UAAU,aAAa1qG,UAAU,6BAAhD,WACQ,SAACw7Q,GAAD,CAAUtkC,aAAa,aAAav0P,MAAK,2EAA4DmD,EAAQm/M,eAApE,aAA4D,EAAiBm3E,gBAItH,gBAAKh1Q,MAAO,CAACg+I,cAAe,EAAGz9I,WAAW,GAA1C,UACA,mBAAQ3H,UAAU,qCAAqCkoF,QAAS,wBAAMv1F,OAAO9P,KAAP,iIAA4HiD,EAAQm/M,eAApI,aAA4H,EAAiBm3E,aAAe,SAAlK,EAAhE,UAA6O,cAAGp8Q,UAAU,4BAGlQ,mBACA,UAAC,GAAD,CAAOtF,KAAK,KAAKgoK,KAAM17K,KAAKqX,MAAM09Q,gBAAiBx4G,OAAQ,WAAO,EAAK1uG,SAAS,CAACknN,iBAAiB,GAAQ,EAA1G,WACI,SAAC,UAAD,CAAcx2G,aAAW,KAEzB,SAAC,QAAD,WACI,iBAAKvlK,UAAU,oBAAf,WACI,cAAGA,UAAU,YAAb,8CACA,gBAAIA,UAAU,SAAd,gCAAyC,iBAAMA,UAAU,YAAhB,sBACzC,cAAGA,UAAU,YAAb,oEACA,iBAAKA,UAAU,iBAAiBoH,MAAO,CAACyjG,QAAS,gBAAjD,WACI,SAACquI,GAAD,CAAWv1M,MAAOs4O,EAAQ9iC,aAAa,EAAOT,iBAAe,EAACiB,2BAAyB,EAACzC,aAAa,yBACrG,SAACgC,GAAD,CAAWv1M,MAAOu4O,EAAQ/iC,aAAa,EAAOT,iBAAe,EAACiB,2BAAyB,EAACzC,aAAa,yBACrG,gBAAKl3O,UAAU,WAAWoH,MAAO,CAACm+I,aAAc,GAAhD,UACI,mBAAQvlJ,UAAU,4BAA4BkoF,QAAS,WAAO,EAAK8zL,gBAAgBC,EAAOt5R,MAAiBu5R,EAAOv5R,MAAkB,EAApI,SAAuIqE,KAAKqX,MAAMy9Q,SAAU,SAAC,GAAD,CAAephR,KAAK,KAAKwK,UAAU,SAAS64J,KAAK,WAAc,wBA3BzO,UAAYj4K,EAAQo/M,SAAUo2C,WAmC3C,KAtHL,GAAiCv0C,ICpBpBu1E,GAAb,8BACI,aAAe,IAAD,oBACV,gBACKxhC,aAAa,YAAa,aAAc,IAE7C,EAAKA,aAAa,WAAY,YAAa,IAC3C,EAAKA,aAAa,eAAgB,iBAAkB,IAEpD,EAAKyhC,eAAe,cAAe,eAQnC,EAAK/7B,iBAAiB,MAClB,MACA,CAAC,CAAElxN,KAAM,OAAQ3sC,MAAO,GACxB,CAAE2sC,KAAM,SAAU3sC,MAAO,KAC7B,EAAK69P,iBAAiB,gBAClB,iBACA,CAAC,CAAElxN,KAAM,SAAU3sC,MAAO,GAC1B,CAAE2sC,KAAM,UAAW3sC,MAAO,GAC1B,CAAE2sC,KAAM,WAAY3sC,MAAO,GACvB,CAAE2sC,KAAM,UAAW3sC,MAAO,GAC1B,CAAE2sC,KAAM,YAAa3sC,MAAO,aAEpC,EAAKmhR,aAAa,YAAa,OAC/B,EAAKyY,eAAe,iBAAkB,oBAQtC,EAAKzhC,aAAa,oBAAqB,uBAAwB,KAAK,GAGpE,EAAKA,aAAa,SAAU,SAAU,IACtC,EAAKA,aAAa,eAAgB,SAAU,KAC5C,EAAKA,aAAa,gBAAiB,WAAY,KAC/C,EAAKA,aAAa,YAAa,aAAc,IAC7C,EAAK0F,iBAAiB,cAAe,gBAAiB,CAAC,CAAElxN,KAAM,MAAO3sC,MAAO,GAAK,CAAE2sC,KAAM,KAAM3sC,MAAO,KAEvG,EAAKg+P,gBAAgB,mBAAoB,uBACzC,EAAKC,iBAAiB,uBAAwB,0BAA2B,EAAG,KAC5E,EAAKA,iBAAiB,4BAA6B,0BAA2B,EAAG,KACjF,EAAKD,gBAAgB,oBAAqB,0BAC1C,EAAKH,iBAAiB,wBAAyB,4BAA6B,CAAC,CAAElxN,KAAM,KAAM3sC,MAAO,WAAa,CAAE2sC,KAAM,MAAO3sC,MAAO,WACrI,EAAKm4P,aAAa,WAAY,mBAC9B,EAAKgpB,aAAa,iBAAkB,cAAe,IAAI3pR,KAAQ,MAAM,GACrE,EAAK2gQ,aAAa,WAAY,UAAW,KACzC,EAAKA,aAAa,gBAAiB,iBAAkB,KACrD,EAAKA,aAAa,gBAAiB,iBAAkB,KACrD,EAAKA,aAAa,gBAAiB,iBAAkB,KACrD,EAAKA,aAAa,eAAgB,OAAQ,IAC1C,EAAKA,aAAa,iBAAkB,SAAU,IAC9C,EAAKA,aAAa,kBAAmB,UAAW,IAChD,EAAKA,aAAa,kBAAmB,UAAW,IAAI,GACpD,EAAKgpB,aAAa,kBAAmB,yBACrC,EAAKnjB,gBAAgB,6BAA8B,mDACnD,EAAK7F,aAAa,WAAY,wBAAyB,KACvD,EAAKA,aAAa,gBAAiB,iBAAkB,KACrD,EAAKA,aAAa,gBAAiB,iBAAkB,KACrD,EAAKA,aAAa,gBAAiB,iBAAkB,KACrD,EAAKA,aAAa,eAAgB,OAAQ,IAC1C,EAAKA,aAAa,iBAAkB,SAAU,IAC9C,EAAKA,aAAa,kBAAmB,UAAW,IAChD,EAAKA,aAAa,kBAAmB,UAAW,IAAI,GACpD,EAAKgpB,aAAa,kBAAmB,yBACrC,EAAKnjB,gBAAgB,8BAA+B,mDACpD,EAAKH,iBAAiB,gBAClB,6BACA,CAAC,CAAElxN,KAAM,QAAS3sC,MAAO,SACzB,CAAE2sC,KAAM,iBAAkB3sC,MAAO,WACjC,CAAE2sC,KAAM,wBAAyB3sC,MAAO,aAC5C,EAAKm4P,aAAa,sBAAuB,SACzC,EAAKA,aAAa,uBAAwB,UAC1C,EAAK6F,gBAAgB,yCAA0C,yBAC/D,EAAKC,iBAAiB,oBAAqB,+BAAgC,EAAG,KAC9E,EAAKA,iBAAiB,yBAA0B,+BAAgC,EAAG,KACnF,EAAKJ,iBAAiB,mBAClB,yBACA,CAAC,CAAElxN,KAAM,WAAY3sC,MAAO,SAC5B,CAAE2sC,KAAM,gBAAiB3sC,MAAO,WAChC,CAAE2sC,KAAM,aAAc3sC,MAAO,WAC7B,CAAE2sC,KAAM,UAAW3sC,MAAO,WAC1B,CAAE2sC,KAAM,eAAgB3sC,MAAO,aACnC,EAAK45R,eAAe,eAAgB,cAEpC,EAAK77B,eAAe,4BAA6B,oCAAqC,EAAG,KACzF,EAAKA,eAAe,6BAA8B,qCAAsC,EAAG,KAC3F,EAAKA,eAAe,gCAAiC,oCAAqC,EAAG,KAC7F,EAAKA,eAAe,iCAAkC,qCAAsC,EAAG,KAE/F,EAAK5F,aAAa,2BAA4B,wBAC9C,EAAK8F,iBAAiB,cAAe,sBAAuB,EAAG,KAE/D,EAAKD,gBAAgB,sBAAuB,wCAC5C,EAAKH,iBAAiB,mBAAoB,+BAAgC,CAAC,CAAElxN,KAAM,KAAM3sC,MAAO,WAAa,CAAE2sC,KAAM,MAAO3sC,MAAO,WAEnI,EAAKi+P,iBAAiB,aAAc,aAAc,EAAG,KAAU,GAC/D,EAAKA,iBAAiB,WAAY,WAAY,EAAG,KAAS,GAC1D,EAAKA,iBAAiB,QAAS,QAAS,EAAG,KAAS,GACpD,EAAKA,iBAAiB,cAAe,eAAgB,EAAG,KAAU,GAClE,EAAK9F,aAAa,cAAe,gBACjC,EAAKA,aAAa,kBAAmB,oBACrC,EAAK6F,gBAAgB,SAAU,qBAC/B,EAAK7F,aAAa,cAAe,QACjC,EAAK4F,eAAe,iBAAkB,uBAAwB,EAAG,IACjE,EAAK5F,aAAa,gBAAiB,iBACnC,EAAKA,aAAa,oBAAqB,sBACvC,EAAKA,aAAa,oBAAqB,sBACvC,EAAKA,aAAa,oBAAqB,0BACvC,EAAKyhC,eAAe,mBAAoB,uBACxC,EAAKzhC,aAAa,wBAAyB,+BAC3C,EAAKA,aAAa,wBAAyB,+BAC3C,EAAK0F,iBAAiB,iBAAkB,mBAAoB,CAAC,CAAElxN,KAAM,KAAM3sC,MAAO,WAAa,CAAE2sC,KAAM,MAAO3sC,MAAO,WACrH,EAAK69P,iBAAiB,mBAAoB,iCAAkC,CAAC,CAAElxN,KAAM,KAAM3sC,MAAO,WAAa,CAAE2sC,KAAM,MAAO3sC,MAAO,WACrI,EAAK69P,iBAAiB,UAAW,WAAY,CAAC,CAAElxN,KAAM,YAAa3sC,MAAO,SAAa,CAAE2sC,KAAM,YAAa3sC,MAAO,WAAa,CAAE2sC,KAAM,WAAY3sC,MAAO,aAE3J,EAAKm4P,aAAa,mBAAoB,2BACtC,EAAKA,aAAa,mBAAoB,2BACtC,EAAKA,aAAa,mBAAoB,wBAEtC,EAAKgpB,aAAa,0BAA2B,6BAC7C,EAAKrjB,gBAAgB,yBAA0B,iCAAkC,EAAG,KACpF,EAAKG,iBAAiB,cAAe,+BAAgC,EAAG,KACxE,EAAKA,iBAAiB,qBAAsB,+BAAgC,EAAG,KAE/E,EAAKJ,iBAAiB,kBAAmB,qCACrC,CAAC,CAAElxN,KAAM,SAAU3sC,MAAO,SAC1B,CAAE2sC,KAAM,cAAe3sC,MAAO,WAC9B,CAAE2sC,KAAM,UAAW3sC,MAAO,aAC9B,EAAKg+P,gBAAgB,YAAa,eAElC,EAAKH,iBAAiB,oBAAqB,uBACvC,CAAC,CAAElxN,KAAM,KAAM3sC,MAAO,WAAa,CAAE2sC,KAAM,MAAO3sC,MAAO,WA1InD,CA4Ib,CA7IL,aAA+Cq3P,ICQlCwiC,GAAb,WAKI,WAAYC,EAA0BxiL,EAAsBosG,GAAsB,eAJlFo2E,iBAIiF,OAHjFxiL,eAGiF,OAFjFosG,iBAEiF,EAC7Er/M,KAAKy1R,YAAcA,EACnBz1R,KAAKizG,UAAYA,EACjBjzG,KAAKq/M,YAAcA,EAEnBr/M,KAAK45C,aAAe55C,KAAK45C,aAAap7C,KAAKwB,MAC3CA,KAAK4zP,iBAAmB5zP,KAAK4zP,iBAAiBp1P,KAAKwB,MACnDA,KAAK29P,aAAe39P,KAAK29P,aAAan/P,KAAKwB,MAC3CA,KAAK01R,kBAAoB11R,KAAK01R,kBAAkBl3R,KAAKwB,MACrDA,KAAK0uR,UAAY1uR,KAAK0uR,UAAUlwR,KAAKwB,MACrCA,KAAK49P,cAAgB59P,KAAK49P,cAAcp/P,KAAKwB,KAGhD,CAlBL,kCAoBI,SAAgBqX,GACZrX,KAAKizG,UAAUplC,SAASx2D,EAC3B,GAtBL,sBAwBI,WACI,OAAOrX,KAAKizG,UAAU57F,KACzB,GA1BL,uBA4BI,SAAU4mM,EAAci+C,GACpB,GAAgB,OAAZj+C,GAAoC,OAAhBi+C,EAAsB,CAC1C,IAAI//M,EAAS,IAAIm5O,GACbt1R,KAAKkY,WAAWy9Q,iBAChBx5O,EAAOy5O,gBAAgB,eAAgB51R,KAAKkY,WAAWy9Q,gBACvDx5O,EAAOy5O,gBAAgB,mBAAoB51R,KAAKkY,WAAWy9Q,iBAE3D31R,KAAKkY,WAAW29Q,mBAChB15O,EAAOy5O,gBAAgB,cAAe51R,KAAKkY,WAAW29Q,mBACtD71R,KAAKkY,WAAW49Q,aAChB35O,EAAOy5O,gBAAgB,iBAAkB51R,KAAKkY,WAAW49Q,aAE7D35O,EAAO2hN,SAAS7/C,EAASi+C,GAAa,EAAMl8P,KAAK45C,aAAc55C,KAAK4zP,kBACpE5zP,KAAK6tE,SAAS,CAAE1xB,OAAQA,EAAQ2qH,SAAS,EAAOo1F,YAAaA,GAChE,MACGl8P,KAAK6tE,SAAS,CAAEi5F,SAAS,GAGhC,GA9CL,6BAgDI,WACI,IAAI0sF,EAAqB,GACzB,IAAK,IAAIvjF,KAAajwK,KAAKkY,WAAWikC,OAAOA,OAAQ,CACjD,IAAIvrC,EAAI5Q,KAAKkY,WAAWikC,OAAOA,OAAO8zH,GAClCr/J,EAAEytM,SACFm1C,EAAY3yP,KAAK+P,EACxB,CAED,IAAIytM,EAAUm1C,EAAYn/P,OAAS,EACnC2L,KAAKy1R,YAAYn3E,WAAWD,EAC/B,GA1DL,2BA4DI,SAAc03E,GAAgB,IAAD,WAGrB93E,EAAUj+M,KAAKkY,WAAW+lM,QAC1B+3E,GAAsC,UAAAh2R,KAAKy1R,YAAYv3E,gBAAjB,eAA2B+B,iBAAiBxB,aAAcR,EAAQQ,UAAYz+M,KAAKy1R,YAAYv3E,SAAU8B,mBAAqBhgN,KAAKy1R,YAAYv3E,SAAU+B,iBAC/L9jK,EAASn8C,KAAKkY,WAAWikC,OAAOA,OAEhCq3M,EAAqB,GACzB,IAAK,IAAIvjF,KAAa9zH,EAAQ,CAC1B,IAAIvrC,EAAIurC,EAAO8zH,GAGA,WAAXr/J,EAAExP,OACgB,IAAdwP,EAAEytM,SAAwC,OAAnBJ,EAAQo3C,SAC/Br1P,KAAKkY,WAAWikC,OAAOqgN,YAAYv+C,EAAS,SAAU,GACtDj+M,KAAKkY,WAAWikC,OAAOsgN,iBAAiB,SAAU,IAItD7rP,EAAEytM,UACFm1C,EAAY3yP,KAAK+P,GAEqC,OAAlD5Q,KAAKy1R,YAAYv3E,SAAU8B,qBACZ,yBAAXpvM,EAAExP,MACFpB,KAAKkY,WAAWikC,OAAOqgN,YAAYw5B,EAAgB,4BAA8BplR,EAAEjV,OAGxE,8BAAXiV,EAAExP,MACFpB,KAAKkY,WAAWikC,OAAOqgN,YAAYw5B,EAAgB,uBAAyBplR,EAAEjV,OAGnE,sBAAXiV,EAAExP,MACFpB,KAAKkY,WAAWikC,OAAOqgN,YAAYw5B,EAAgB,yBAA2BplR,EAAEjV,OAGrE,2BAAXiV,EAAExP,MACFpB,KAAKkY,WAAWikC,OAAOqgN,YAAYw5B,EAAgB,oBAAsBplR,EAAEjV,QAI1F,CAED,GAA2B,IAAvB63P,EAAYn/P,OAAhB,CAMA,IAAIggQ,EAAar0P,KAAKkY,WAAWikC,OAAO4iN,YAAY,YAAa9gD,EAAQQ,UAAWR,GACpFo2C,EAAWC,WAAX,UAAwBt0P,KAAKy1R,YAAYv3E,gBAAzC,aAAwB,EAA2Bo2C,WACnD31P,KAAAA,KAAW,mBAAoB01P,GAC1Bl0P,MAAK,SAAA5E,GACF,IAAK,IAAI8E,EAAI,EAAGA,EAAImzP,EAAYn/P,OAAQgM,IAAK,CACzC,IAAIuQ,EAAI4iP,EAAYnzP,GACpBuQ,EAAEm/O,cAAgBn/O,EAAEjV,MACpBiV,EAAEytM,SAAU,CACf,CAED,EAAK4rE,kBAEL,IAAIpwR,EAAO0B,EAAS1B,KACpBokN,EAAQ0nE,uBAAyB9rR,EAAK8rR,uBACtC1nE,EAAQ2nE,0BAA4B/rR,EAAK+rR,0BACzC3nE,EAAQ4nE,yBAA2BhsR,EAAKgsR,yBAExC5nE,EAAQ24C,wBACH34C,EAAQ0nE,uBACL1nE,EAAQ2nE,0BACR3nE,EAAQ4nE,yBACR5nE,EAAQ6nE,sBAAwB,EAGJ,IAAhC,EAAK5tQ,WAAWmnM,YAChB,EAAKo2E,YAAYv3E,SAAU+B,iBAAmBhC,EAE9C,EAAKw3E,YAAYv3E,SAAU8B,mBAAqB/B,EAGhD83E,EACA,EAAKloN,SAAS,CAAE8mL,UAAU,EAAMx4M,OAAQ,EAAKjkC,WAAWikC,OAAQ8hK,QAASA,IAGzE,EAAKpwI,SAAS,CAAE1xB,OAAQ,EAAKjkC,WAAWikC,OAAQ8hK,QAASA,GAChE,GArCJ,MAHO83E,GACA/1R,KAAK6tE,SAAS,CAAE8mL,UAAU,GAwCrC,GAhJL,kCAmJI,SAAqBjsO,GACjB,IAAIu1L,EAAUj+M,KAAKkY,WAAW+lM,QAC9BA,EAAQg4E,iBAAmBvtQ,EAC3B1oB,KAAKkY,WAAWikC,OAAOqgN,YAAYv+C,EAAS,mBAAoBv1L,GAChE1oB,KAAKkY,WAAWikC,OAAOsgN,iBAAiB,mBAAoB/zO,GAC5D1oB,KAAK49P,cAAc,KACtB,GAzJL,0BA2JI,SAAa/+O,GACTA,EAAMy0B,iBACNtzC,KAAK49P,eAAc,EACtB,GA9JL,8BAgKI,SAAiB/+O,GACb7e,KAAK45C,aAAa/6B,EACrB,GAlKL,0BAoKI,SAAaA,GACT,IAAMjZ,EAASiZ,EAAMjZ,OACjBjK,EAAyB,aAAhBiK,EAAO3H,KAAsB2H,EAAOi8H,QAAUj8H,EAAOjK,MAC5DyF,EAAOwE,EAAOxE,MAAQwE,EAAO8S,aAAa,QAEhD,GAAKtX,EAAL,CAGA,IAAI68M,EAAUj+M,KAAKkY,WAAW+lM,QAE1BrtM,EAAI5Q,KAAKkY,WAAWikC,OAAO82M,eAAe7xP,GAM9C,GAJIwP,EAAE4/O,WAAapI,GAAS3kP,QAAoB,OAAV9H,IAClCA,EAAQA,EAAMuN,QAAQ,MAAO,KAG7B0H,EAAE4/O,WAAapI,GAAS3kP,QAAUmN,EAAE8/O,UACpC,GAAI/8P,SAASgI,GAASiV,EAAE8/O,SAEpB,YADA8D,MAAM,sBAAD,OAAuB5jP,EAAEmF,MAAzB,gBAAsCnF,EAAE8/O,gBAG9C,GAAI9/O,EAAE4/O,WAAapI,GAASvhO,QAAUjW,EAAE8tE,WAC7B,OAAV/iF,GAAkBA,EAAMtH,OAASuc,EAAE8tE,UAEnC,YADA81K,MAAM,uBAAD,OAAwB5jP,EAAEmF,MAA1B,gBAAuCnF,EAAE8tE,YAMtD,IAEgD,IAF5CviC,EAASn8C,KAAKkY,WAAWikC,OAC7B,GAAIA,EACA,GAAIvrC,EAAEi/O,cAAgBxH,GAAY2H,SAC9B7zM,EAAOqgN,YAAYv+C,EAAS78M,EAA5B,UAAkCzF,SAAlC,aAAkC,EAAOg4P,WAAW,IAAK,IAAIA,WAAW,SAAK,KAC7Ex3M,EAAOsgN,iBAAiBr7P,EAAM0xP,GAAkBx0L,OAAM,UAAC3iE,SAAD,aAAC,EAAOg4P,WAAW,IAAK,IAAIA,WAAW,SAAK,YAElGx3M,EAAOqgN,YAAYv+C,EAAS78M,EAAMzF,GAClCwgD,EAAOsgN,iBAAiBr7P,EAAMzF,GAItCqE,KAAK6tE,SAAS,CAAE1xB,OAAQn8C,KAAKkY,WAAWikC,OAAQ8hK,QAASA,IACzDj+M,KAAKiqR,iBAnCK,CAoCb,GA9ML,+BAgNI,SAAkBprQ,EAAYutB,GAC1B,IAAI6xK,EAAUj+M,KAAKkY,WAAW+lM,QAC9BA,EAAO,MAAY7xK,EACnBpsC,KAAK6tE,SAAS,CACVowI,QAASA,GAEhB,GAtNL,6DAwNI,2FAC6B,IAArBj+M,KAAKq/M,YACLr/M,KAAK6tE,SAAS,CAAEowI,QAAO,UAAEj+M,KAAKy1R,YAAYv3E,gBAAnB,aAAE,EAA2B+B,iBAAkB+1E,eAAc,UAAEh2R,KAAKy1R,YAAYv3E,gBAAnB,aAAE,EAA2B8B,mBAAoBl5C,SAAS,IAE9I9mK,KAAK6tE,SAAS,CAAEowI,QAAO,UAAEj+M,KAAKy1R,YAAYv3E,gBAAnB,aAAE,EAA2B8B,mBAAoBg2E,eAAc,UAAEh2R,KAAKy1R,YAAYv3E,gBAAnB,aAAE,EAA2B+B,iBAAkBn5C,SAAS,IAElJ9mK,KAAK69P,YAAY,WANrB,gDAxNJ,+EAiOI,SAAYvE,GAAqB,IACzBr7C,EACwB,EAErB,EAJqB,OAEH,IAArBj+M,KAAKq/M,YACLpB,EAAO,UAAGj+M,KAAKy1R,YAAYv3E,gBAApB,aAAG,EAA2B+B,iBAErChC,EAAO,UAAGj+M,KAAKy1R,YAAYv3E,gBAApB,aAAG,EAA2B8B,mBAEzCq5C,GAAYC,GAAYn5P,MAAK,SAAC5E,GAC1B,EAAKsyE,SAAS,CAAEquL,YAAa3gQ,EAAS1B,OACtC,EAAK60R,UAAUzwE,EAAS1iN,EAAS1B,KACpC,GACJ,GA5OL,4BA8OI,WAA0B,IAAD,IAEwD,EADzE4kN,EAAS,UAAGz+M,KAAKy1R,YAAYx3E,eAApB,aAAG,EAA0Bi4E,WACjB,IAArBl2R,KAAKq/M,aAA8D,QAAzC,UAAAr/M,KAAKy1R,YAAYx3E,eAAjB,eAA0Bk4E,cACpD13E,EAAS,UAAGz+M,KAAKy1R,YAAYx3E,eAApB,aAAG,EAA0Bk4E,YAE1C,OAAO13E,CACV,GApPL,qBAsPI,SAAQpyM,EAAY7O,GAEhB,OAAO6O,EAAI8iB,QAAO,SAAC4lJ,EAAKw7F,GACpB,IAAMC,EAAcD,EAAK/yQ,GAEzB,OADAu3K,EAAIy7F,GAAJ,aAAwBz7F,EAAIy7F,IAAgB,IAA5C,CAAiDD,IAC1Cx7F,CACV,GALoB,CAAC,EAMzB,GA7PL,iEA+PI,uFACQ/0K,KAAKy1R,YAAY72E,uBACbktD,EAAoC,IAArB9rQ,KAAKq/M,YAAoBzB,GAAauC,QAAUvC,GAAawC,UAC5EqwD,EAAOzwQ,KAAKy1R,YAAY72E,qBAAqBjvM,QAAO,SAAA1O,GAAC,OAAIA,EAAE6qQ,eAAiBluD,GAAaizD,QAAU5vQ,EAAE6qQ,eAAiBA,IAA8B,IAAd7qQ,EAAEm1R,OAAnF,IACzD3lB,EAAKlsP,MACD,SAACrV,EAAQC,GAGL,GACID,EAAEmnR,gBAAkBlnR,EAAEknR,cAAe,CAErC,IAAKnnR,EAAE48P,eAAiB38P,EAAE28P,aAAc,OAAO,EAC/C,GAAI58P,EAAE48P,aAAe38P,EAAE28P,aAAc,OAAQ,EAC7C,GAAI58P,EAAE48P,aAAe38P,EAAE28P,aAAc,OAAO,CAC/C,CAGD,OAAI58P,EAAEmnR,cAAgBlnR,EAAEknR,eAAuB,EAC3CnnR,EAAEmnR,cAAgBlnR,EAAEknR,cAAsB,EAIvC,CACV,KAvBb,gDA/PJ,mHA2RI,0FACc,+BACV13R,KAAAA,IADU,gCAGLwB,MAAK,SAAC5E,GACH,IAAI68C,EAAO78C,EAAS1B,KACpB,EAAKg0E,SAAS,CAAEyoN,iBAAkBl+O,GACrC,IACA5iC,OAAM,SAACtS,GAC8B,MAA9BA,EAAM3H,SAASw4O,YACfygB,MAAM,eAEb,IAZT,2CA3RJ,iHA0SI,mHACW,IAAIh7P,SAAQ,SAACC,EAASC,GACrB,EAAKwe,WAAWy9Q,gBAChBl8R,EAAQ,EAAKye,WAAWy9Q,gBAI5Bh3R,KAAAA,IADU,8BAGLwB,MAAK,SAAC5E,GACH,IACIg7R,EADOh7R,EAAS1B,KACDmZ,KAAI,SAACT,GACpB,MAAO,CAAE+1B,KAAM/1B,EAAKnR,KAAMzF,MAAO4W,EAAKikR,aACzC,IACD,EAAK3oN,SAAS,CAAE8nN,eAAgBY,IAChC98R,EAAQ88R,EACX,IACA/gR,OAAM,SAACtS,GAC8B,MAA9BA,EAAM3H,SAASw4O,YACfygB,MAAM,gBAEV96P,GACH,GACR,KAvBL,2CA1SJ,mHAoUI,mHACW,IAAIF,SAAQ,SAACC,EAASC,GAEzBiF,KAAAA,IADU,gCAGLwB,MAAK,SAAC5E,GACH,IACI+tB,EADO/tB,EAAS1B,KACHmZ,KAAI,SAACT,GAClB,MAAO,CAAE+1B,KAAM/1B,EAAKnR,KAAMzF,MAAO4W,EAAK3N,GAAI2N,KAAMA,EACnD,IACD,EAAKs7D,SAAS,CAAEgoN,kBAAmBvsQ,IACnC7vB,EAAQ6vB,EACX,IACA9T,OAAM,SAACtS,GAC8B,MAA9BA,EAAM3H,SAASw4O,YACfygB,MAAM,gBAEV96P,GACH,GAER,KApBL,2CApUJ,+GA2VI,mHACW,IAAIF,SAAQ,SAACC,EAASC,GAEzBiF,KAAAA,IADU,4BAGLwB,MAAK,SAAC5E,GACH,IACI+tB,EADO/tB,EAAS1B,KACHmZ,KAAI,SAACT,GAClB,MAAO,CAAE+1B,KAAM/1B,EAAKnR,KAAMzF,MAAO4W,EAAK3N,GAAI2N,KAAMA,EACnD,IACD,EAAKs7D,SAAS,CAAEioN,YAAaxsQ,IAC7B7vB,EAAQ6vB,EACX,IACA9T,OAAM,SAACtS,GAC8B,MAA9BA,EAAM3H,SAASw4O,YACfygB,MAAM,gBAEV96P,GACH,GAER,KApBL,2CA3VJ,sFAmYI,WAAsB,IAAD,OACjB2/P,GAAY,0BAA0Bl5P,MAAK,SAAC5E,GACxC,EAAKsyE,SAAS,CAAE4oN,eAAgBl7R,EAAS1B,MAC5C,IAAE2b,OAAM,SAACtS,GAC4B,MAA9BA,EAAM3H,SAASw4O,YACfygB,MAAM,eAEb,GACJ,KA3YL,MJVA,SAAYg/B,GAAAA,EAAAA,EAAAA,MAAAA,SAAAA,QAAAA,EAAAA,EAAAA,cAAAA,WAAAA,gBAAAA,EAAAA,EAAAA,oBAAAA,WAAAA,qBAAAA,CAAZ,CAAYA,KAAAA,GAAAA,CAAAA,IAMZ,SAAYC,GAAAA,EAAAA,EAAAA,OAAAA,GAAAA,SAAAA,EAAAA,EAAAA,QAAAA,GAAAA,UAAAA,EAAAA,EAAAA,SAAAA,GAAAA,WAAAA,EAAAA,EAAAA,QAAAA,GAAAA,SAAAA,CAAZ,CAAYA,KAAAA,GAAAA,CAAAA,IAOZ,SAAYC,GAAAA,EAAAA,EAAAA,MAAAA,SAAAA,QAAAA,EAAAA,EAAAA,QAAAA,WAAAA,UAAAA,EAAAA,EAAAA,MAAAA,WAAAA,QAAAA,EAAAA,EAAAA,SAAAA,WAAAA,WAAAA,EAAAA,EAAAA,OAAAA,WAAAA,SAAAA,EAAAA,EAAAA,SAAAA,WAAAA,UAAAA,CAAZ,CAAYA,KAAAA,GAAAA,CAAAA,aASAC,GAAAA,EAAAA,EAAAA,KAAAA,GAAAA,OAAAA,EAAAA,EAAAA,OAAAA,GAAAA,QAAAA,EAAAA,KAAAA,GAAAA,CAAAA,IAcZ,SAAYC,GAAAA,EAAAA,EAAAA,SAAAA,SAAAA,WAAAA,EAAAA,EAAAA,aAAAA,WAAAA,eAAAA,EAAAA,EAAAA,UAAAA,WAAAA,YAAAA,EAAAA,EAAAA,QAAAA,WAAAA,UAAAA,EAAAA,EAAAA,YAAAA,WAAAA,aAAAA,CAAZ,CAAYA,KAAAA,GAAAA,CAAAA,IAQZ,SAAYC,GAAAA,EAAAA,EAAAA,GAAAA,GAAAA,KAAAA,EAAAA,EAAAA,IAAAA,GAAAA,KAAAA,CAAZ,CAAYA,KAAAA,GAAAA,CAAAA,IAKZ,SAAYC,GAAAA,EAAAA,EAAAA,GAAAA,WAAAA,KAAAA,EAAAA,EAAAA,IAAAA,SAAAA,KAAAA,CAAZ,CAAYA,KAAAA,GAAAA,CAAAA,IAKZ,SAAYC,GAAAA,EAAAA,EAAAA,GAAAA,WAAAA,KAAAA,EAAAA,EAAAA,IAAAA,SAAAA,KAAAA,CAAZ,CAAYA,KAAAA,GAAAA,CAAAA,IAKZ,SAAYC,GAAAA,EAAAA,EAAAA,OAAAA,SAAAA,SAAAA,EAAAA,EAAAA,MAAAA,WAAAA,OAAAA,CAAZ,CAAYA,KAAAA,GAAAA,CAAAA,IK3CZ,IAAIzjO,GAAgB,SAASL,EAAG/gD,GAI5B,OAHAohD,GAAgBxsD,OAAOysD,gBAClB,CAAEC,UAAW,cAAgB7tD,OAAS,SAAUstD,EAAG/gD,GAAK+gD,EAAEO,UAAYthD,CAAI,GAC3E,SAAU+gD,EAAG/gD,GAAK,IAAK,IAAIuN,KAAKvN,EAAOpL,OAAO/E,UAAUwP,eAAetN,KAAKiO,EAAGuN,KAAIwzC,EAAExzC,GAAKvN,EAAEuN,GAAK,EAC9F6zC,GAAcL,EAAG/gD,EAC3B,EAUM,IAAIyhD,GAAW,WAQlB,OAPAA,GAAW7sD,OAAOQ,QAAU,SAAkBoM,GAC1C,IAAK,IAAI2/C,EAAGjwD,EAAI,EAAGwQ,EAAI7H,UAAU3U,OAAQgM,EAAIwQ,EAAGxQ,IAE5C,IAAK,IAAIqc,KADT4zC,EAAItnD,UAAU3I,GACO0D,OAAO/E,UAAUwP,eAAetN,KAAKovD,EAAG5zC,KAAI/L,EAAE+L,GAAK4zC,EAAE5zC,IAE9E,OAAO/L,CACV,EACMigD,GAAS/tD,MAAM7C,KAAMgJ,UAC/B,EAmE4BjF,OAAO7E,OA6D7B,SAAS44G,GAAcnuE,EAAIzlC,EAAM6zG,GACpC,GAAIA,GAA6B,IAArB/uG,UAAU3U,OAAc,IAAK,IAA4Bu9D,EAAxBvxD,EAAI,EAAGC,EAAI4D,EAAK7P,OAAYgM,EAAIC,EAAGD,KACxEuxD,GAAQvxD,KAAK6D,IACR0tD,IAAIA,EAAKhvD,MAAM5D,UAAU7G,MAAM+I,KAAKgD,EAAM,EAAG7D,IAClDuxD,EAAGvxD,GAAK6D,EAAK7D,IAGrB,OAAOspC,EAAG71C,OAAO89D,GAAMhvD,MAAM5D,UAAU7G,MAAM+I,KAAKgD,GACrD,CAqCwBH,OAAO7E,OCzG1B,SAAUw3R,SAAgB,oCAAAC,EAAAA,GAAAA,UAAAA,GAC9B,GAAIA,GAAkC,IAArBA,EAAUtiS,QAAgBsiS,EAAU,KAAQA,EAAU,GAAiBC,mBACtF,OAAOD,EAAU,GAQnB,IALA,IAAME,EAAwC,CAAC,EAGzCC,EAAwF,CAAC,EAEtE,MAAAH,EAAA/wL,EAAAA,EAAAA,OAAAA,IAAW,CAA/B,IAAMmxL,EAAU,KACnB,GAAIA,EACF,IAAK,IAAM/wR,KAAQ+wR,EACjB,GAAIA,EAAWvoR,eAAexI,GAAO,CACnC,GAAa,uBAATA,QAAmE3I,IAAlC05R,EAAWH,mBAAkC,CAGhF,IAAMI,EAAyBD,EAAWH,mBAC1C,IAAK,IAAMK,KAAeD,EACpBA,EAAuBxoR,eAAeyoR,KACpCH,EAA0BtoR,eAAeyoR,GAC3CH,EAA0BG,GAAap2R,KAAKm2R,EAAuBC,IAEnEH,EAA0BG,GAAe,CAACD,EAAuBC,KAKvE,QACD,CAID,IAAMC,EAAuBL,EAAkB7wR,GACzCijB,EAAgB8tQ,EAAmB/wR,GAGtC6wR,EAAkB7wR,QADD3I,IAAhB65R,EACyBjuQ,EAEH6uF,GAAAA,GAAAA,GAElBl1G,MAAMkD,QAAQoxR,GAAeA,EAAc,CAACA,IAC5Ct0R,MAAMkD,QAAQmjB,GAAgBA,EAAe,CAACA,GAGvD,CAGN,CAED,GAAIllB,OAAOsC,KAAKywR,GAA2BziS,OAAS,EAAG,CACrDwiS,EAAUD,mBAAqB,CAAC,EAChC,IAAMO,EAAkBN,EAAUD,8BAGvBK,GACT,GAAIH,EAA0BtoR,eAAeyoR,GAAc,CACzD,IAAMG,EAAaN,EAA0BG,GAC7CE,EAAgBF,GAAe,SAACI,GAC9B,OAAOX,GAAe,aACjBU,EAAWpkR,KAAI,SAACskR,GACjB,MAAiC,oBAA1BA,EAAuCA,EAAsBD,GAAcC,CAAqB,IAG5G,CACF,GAVH,IAAK,IAAML,KAAeH,IAAfG,EAYZ,CAED,OAAOJ,CACR,CC/KK,SAAU5iH,KACd,MACoB,qBAAXtoK,WAELA,OAAOxB,WAEPwB,OAAOxB,SAASa,cAGrB,CCVD,IAAIusR,QAA8Bl6R,EAKlC,IACEk6R,GAAU5rR,MAGX,CAFC,MAAOnD,IAER,CAUK,SAAUw6K,GAAUqpE,GACxB,GAAKp4E,MAAkC,qBAAZsjH,GAEpB,CACL,IAAMvqR,EAAKq/O,EAEX,OAAOr/O,GAAMA,EAAGu1H,eAAiBv1H,EAAGu1H,cAAclV,YAAcrgH,EAAGu1H,cAAclV,YAAckqK,EAChG,CACF,CClBD,IAGIC,GAAW,EAmCf,2BAoDC,CAAD,OAnDgBC,EAAAA,SAAd,SAA0Bj6R,EAAamrB,GACrC,IAAM+uQ,EAAiBC,KAMvB,YAJ4Bt6R,IAAxBq6R,EAAel6R,KACjBk6R,EAAel6R,GAA+B,oBAAjBmrB,EAA+BA,IAA8BA,GAGrF+uQ,EAAel6R,EACvB,EAEai6R,EAAAA,SAAd,SAA0Bj6R,EAAa7B,GACrC,IAAM+7R,EAAiBC,KACjBrzD,EAAYozD,EAAc,cAC5BE,EAAWF,EAAel6R,GAE9B,GAAI7B,IAAUi8R,EAAU,CACtBF,EAAel6R,GAAO7B,EAEtB,IAAIk8R,EAAoB,CACtBD,SAAQ,EACRj8R,MAAK,EACL6B,IAAG,GAGL,IAAK,IAAIoH,KAAM0/N,EACTA,EAAU91N,eAAe5J,IAC3B0/N,EAAU1/N,GAAIizR,EAGnB,CAED,OAAOl8R,CACR,EAEa87R,EAAAA,kBAAd,SAAgClmR,GAG9B,IAAI3M,EAAK2M,EAAGumR,OACNxzD,EAAYyzD,KAEbnzR,IACHA,EAAK2M,EAAGumR,OAAS9nR,OAAOwnR,OAG1BlzD,EAAU1/N,GAAM2M,CACjB,EAEakmR,EAAAA,qBAAd,SAAmClmR,UACfwmR,KACDxmR,EAAGumR,OACrB,EACH,CAAC,CApDD,GAuDA,SAASH,WAGDK,EAFMh1G,MAEqC,CAAC,EAQlD,OANKg1G,EAAS,qBACZA,EAAS,qBAA2BpyL,EAAAA,CAAAA,GAClC,cAA4B,CAAC,EADK,IAK/BoyL,EAAS,kBACjB,CAED,SAASD,KAEP,OADuBJ,KACF,aACtB,CCnGD,IACMM,GAAoB,CAAEprL,SAAU,CAAC,EAAGqrL,eAAgB,CAAC,EAAGC,qBAAqB,GAE/EC,GAAeX,GAAetgO,SAHF,iBAGqD,CACnF01C,SAAU,CAAC,EACXqrL,eAAgB,CAAC,EACjBC,qBAAqB,IAGnBlgO,GAA0B,GAE9B,2BA4EC,CAAD,OAzEgBogO,EAAAA,MAAd,WACED,GAAavrL,SAAW,CAAC,EACzBurL,GAAaF,eAAiB,CAAC,CAChC,EAKaG,EAAAA,cAAd,SAA4BxrL,GAC1BurL,GAAavrL,SAAQj8C,GAAAA,GAAAA,CAAAA,EAAQwnO,GAAavrL,UAAaA,GACvDwrL,EAAeC,cAChB,EAKaD,EAAAA,oBAAd,SAAkCE,EAAmB1rL,GACnDurL,GAAaF,eAAeK,GAAU3nO,GAAAA,GAAAA,CAAAA,EAAQwnO,GAAaF,eAAeK,IAAe1rL,GACzFwrL,EAAeC,cAChB,EAEaD,EAAAA,YAAd,SACE9vN,EACAgwN,EACAC,QAAA,IAAAA,IAAAA,EAAAA,IAOA,IAJA,IAAM3rL,EAAsB,CAAC,EACvB4rL,EAAuBF,GAAaC,EAAcN,eAAeK,IAAe,CAAC,EACjFG,EAAwBH,GAAaH,GAAaF,eAAeK,IAAe,CAAC,EAElE,MAAAhwN,EAAA6pD,EAAAA,EAAAA,OAAAA,IAAY,CAA5B,IAAIh6G,EAAQ,KACfy0F,EAASz0F,GACPqgR,EAAoBrgR,IACpBogR,EAAc3rL,SAASz0F,IACvBsgR,EAAqBtgR,IACrBggR,GAAavrL,SAASz0F,EACzB,CAED,OAAOy0F,CACR,EAOawrL,EAAAA,oBAAd,SAAkC/0R,EAAkBq1R,GAClDN,EAAeO,kBAAmB,EAClC,IACEt1R,GAGD,CAFC,UAED,CACD+0R,EAAeO,kBAAmB,EAC7BD,GACHN,EAAeC,cAElB,EAEaD,EAAAA,QAAd,SAAsB3qK,GACpBz1D,GAAQp3D,KAAK6sH,EACd,EAEa2qK,EAAAA,UAAd,SAAwB3qK,GACtBz1D,GAAUA,GAAQtoD,QAAO,SAAC4B,GAAmB,OAAAA,IAAOm8G,CAAQ,GAC7D,EAEc2qK,EAAAA,aAAf,WACOA,EAAeO,kBAClB3gO,GAAQ16D,SAAQ,SAACgU,GAAmB,OAAAA,GAAI,GAE3C,EACH,CAAC,CA5ED,GC1BasnR,GAAoBj2K,EAAAA,cAAwC,CACvEk2K,eAAgB,CACdX,qBAAqB,EACrBtrL,SAAU,CAAC,EACXqrL,eAAgB,CAAC,KCFf,SAAUa,GAAyBxwN,EAAsBgwN,GAC7D,IAAMhvH,EAkBR,WACQ,IAAG9nC,EAAY7e,EAAAA,SAAe,GAAnB,GACjB,OAAO,WAAM,OAAA6e,GAAS,SAAA9lI,GAAS,QAAEA,CAAK,GAAC,CACxC,CArBqBwmL,GACZ22G,EAAmBl2K,EAAAA,WAAiBi2K,IAAkBC,eACtDX,EAAwBW,EAAc,oBAa9C,OAZAl2K,EAAAA,WAAgB,WAId,OAHKu1K,GACHE,GAAeryH,QAAQuD,GAElB,WACA4uH,GACHE,GAAeW,UAAUzvH,EAE5B,CAEF,GAAE,CAAC4uH,IAEGE,GAAeY,YAAY1wN,EAAYgwN,EAAWO,EAC1D,CCJD,IAAMI,GAAgB,CAAC,QAAS,UAoD1B,SAAUC,GAMd/wK,EACAgxK,EACAC,EACAC,EACAC,GAIQ,IAAAt3O,GAFRq3O,EAAeA,GAAgB,CAAEr3O,MAAO,GAAI9F,YAAQ9+C,IAEE,MAAvCuoG,EAA2B0zL,EAAY,OAAvCn9O,OAAM,IAAG,EAAA+8O,GAAatzL,EAE/B4zL,EAAU52K,EAAAA,YAAiB,SAACpzG,EAAwBkjR,GACxD,IAAMjzQ,EAASmjG,EAAAA,SAET/V,EAAWksL,GAAyB58O,EAAQ8F,GAClCw3O,EAAmC5sL,EAAQ,OAAjBvnC,GAASunC,EAAQ,IRpDxD,SAAgBv8C,EAAG9nD,GACtB,IAAImI,EAAI,CAAC,EACT,IAAK,IAAI+L,KAAK4zC,EAAOvsD,OAAO/E,UAAUwP,eAAetN,KAAKovD,EAAG5zC,IAAMlU,EAAElM,QAAQogB,GAAK,IAC9E/L,EAAE+L,GAAK4zC,EAAE5zC,IACb,GAAS,MAAL4zC,GAAqD,oBAAjCvsD,OAAOynB,sBACtB,KAAInrB,EAAI,EAAb,IAAgBqc,EAAI3Y,OAAOynB,sBAAsB8kC,GAAIjwD,EAAIqc,EAAEroB,OAAQgM,IAC3DmI,EAAElM,QAAQogB,EAAErc,IAAM,GAAK0D,OAAO/E,UAAU0sB,qBAAqBxqB,KAAKovD,EAAG5zC,EAAErc,MACvEsQ,EAAE+L,EAAErc,IAAMiwD,EAAE5zC,EAAErc,IAFF,CAIxB,OAAOsQ,CACV,CQ0CiD,CAAKk8F,EAA7C,mBACA6sL,EAAkBL,EAAWA,EAAS7pR,QAASnS,EAG/C6Q,EAASuR,EAAO2P,SAAY3P,EAAO2P,QAAgBuqQ,kBAAqB,GACxEC,EAAapqR,EAAMiQ,OACzB,IAAKA,EAAO2P,SAAWqqQ,IAAqBvrR,EAAM,IAAM0rR,IAAe1rR,EAAM,GAAI,CAI/E,IAAM2rR,EAAqE,SAACxC,GAC1E,OC/FF,SACJA,OACA,oCAAAyC,EAAAA,EAAAA,GAAAA,UAAAA,GAGA,IADA,IAAM9rR,EAAmC,GACpB,MAAA8rR,EAAAl0L,EAAAA,EAAAA,OAAAA,IAAW,CAA3B,IAAMnmF,EAAM,KACXA,GACFzR,EAAOnN,KAAuB,oBAAX4e,EAAwBA,EAAO43Q,GAAc53Q,EAEnE,CACD,OAAsB,IAAlBzR,EAAO3Z,OACF2Z,EAAO,GACLA,EAAO3Z,OAKTqiS,GAAAA,WAAe,EAAK1oR,GAGtB,CAAC,CACT,CD0EO+rR,CAAyB1C,EAAY+B,EAAYK,EAAkBG,EAAW,EAI/EC,EAA6DF,iBAAmB,CAC/EP,EACAK,EACAG,GAGDC,EAA6DG,qBAC3DP,IAAqBG,EAExBn6Q,EAAO2P,QAAUyqQ,CAClB,CAED,OAAOj3K,EAAAA,cAACwF,EAASx3D,GAAAA,CAACj9C,IAAK++Q,GAAkBptN,EAAUo0N,EAAqBlqR,EAAK,CAAEiQ,OAAQA,EAAO2P,UAC/F,IAIDoqQ,EAAQnnL,YAAc,UAAS+V,EAAU/V,aAAgB+V,EAAkBhnH,MAG3E,IAAM64R,EAAgBV,EAAO32K,EAAAA,KAAW42K,GAAWA,EAMnD,OAJIA,EAAQnnL,cACV4nL,EAAc5nL,YAAcmnL,EAAQnnL,aAG/B4nL,CACR,CE3HK,SAAUC,GAAY93J,GAI1B,IAAMzuH,EAAMivG,EAAAA,SAQZ,YAPoBvlH,IAAhBsW,EAAIyb,UAGNzb,EAAIyb,QAAU,CACZzzB,MAA+B,oBAAjBymI,EAA+BA,IAA8BA,IAGxEzuH,EAAIyb,QAAQzzB,KACpB,CCxBM,IA6GHw+R,GA7GSC,GAIL,EAJKA,GASC,EATDA,GAcE,EA8ETC,GAAwC,qBAAdxvR,WAA6B,UAAUJ,KAAKI,UAAUC,WAElFwvR,GAMA,CAAC,EAGL,IACEA,GAAU3uR,QAAU,CAAC,CAGtB,CAFC,UAED,CAWD,kBA6BE,WAAYpS,EAA4BghS,mBA1BhC,KAAAC,OAAmB,GACnB,KAAAC,gBAA4B,GAE5B,KAAAjD,SAAW,EACX,KAAAkD,gBAA6C,CAAC,EAC9C,KAAAC,uBAAqC,GACrC,KAAAC,kBAAgC,GAChC,KAAAC,iBAAsE,CAAC,EAoB7E76R,KAAKw2O,QAAO5lL,GAAAA,CAEVkqO,cAAmC,qBAAb3wR,SAA2BiwR,GAAqBA,GACtE3rH,cAAe,MACfh6G,eAAWp3D,EACX09R,iBAAa19R,GACV9D,GAGLyG,KAAK66R,iBAAwD,QAArC,EAAoB,OAApBN,QAAoB,IAApBA,OAAoB,EAApBA,EAAsBS,uBAAep1L,IAAAA,EAAAA,EAAI5lG,KAAK66R,iBACtE76R,KAAKw3R,SAAwC,QAA7B,EAAoB,OAApB+C,QAAoB,IAApBA,OAAoB,EAApBA,EAAsBr/M,eAAO8qB,IAAAA,EAAAA,EAAIhmG,KAAKw3R,SACtDx3R,KAAK06R,gBAAqF,QAAnE,EAA2B,QAA3B,EAAA16R,KAAKw2O,QAAQykD,sBAAcp1H,IAAAA,EAAAA,EAAwB,OAApB00H,QAAoB,IAApBA,OAAoB,EAApBA,EAAsBW,sBAAcxoK,IAAAA,EAAAA,EAAI1yH,KAAK06R,gBACnG16R,KAAKy6R,gBAAsD,QAApC,EAAoB,OAApBF,QAAoB,IAApBA,OAAoB,EAApBA,EAAsBY,sBAAcxkO,IAAAA,EAAAA,EAAI32D,KAAKy6R,gBACpEz6R,KAAKw6R,OAAoC,QAA3B,EAAoB,OAApBD,QAAoB,IAApBA,OAAoB,EAApBA,EAAsBa,aAAK9uF,IAAAA,EAAAA,EAAItsM,KAAKw6R,MACnD,CA4OH,OAzQgBa,EAAAA,YAAd,WAGE,KAFAlB,GAAcG,GAAO,iBAEAH,GAAYmB,mBAAqBnB,GAAYmB,kBAAkB/4J,gBAAkBp4H,SAAW,CAC/G,IAAMoxR,GAAsB,OAAPjB,SAAO,IAAPA,QAAO,EAAPA,GAASkB,eAAgB,CAAC,EAEzCC,EAAa,IAAIJ,EAAWE,EAAaG,YAAaH,EAAahB,sBACzEJ,GAAcsB,EACdnB,GAAO,eAAuBmB,CAC/B,CAED,OAAOtB,EACR,EAuBMkB,EAAAA,UAAAA,UAAP,WACE,OAAOhzR,KAAKI,UAAU,CACpBuyR,gBAAiBh7R,KAAK66R,iBACtB3/M,QAASl7E,KAAKw3R,SACd0D,eAAgBl7R,KAAK06R,gBACrBS,eAAgBn7R,KAAKy6R,gBACrBW,MAAOp7R,KAAKw6R,QAEf,EAKMa,EAAAA,UAAAA,UAAP,SAAiB9hS,GACfyG,KAAKw2O,QAAO5lL,GAAAA,GAAAA,CAAAA,EACP5wD,KAAKw2O,SACLj9O,EAEN,EAQM8hS,EAAAA,UAAAA,QAAP,SAAejvR,GAAf,WAGE,OAFApM,KAAK46R,kBAAkB/5R,KAAKuL,GAErB,WACLo7G,EAAKozK,kBAAoBpzK,EAAKozK,kBAAkBjrR,QAAO,SAAA4B,GAAM,OAAAA,IAAOnF,CAAQ,GAC7E,CACF,EAQMivR,EAAAA,UAAAA,aAAP,SAAoBjvR,GAApB,WAGE,OAFApM,KAAK26R,uBAAuB95R,KAAKuL,GAE1B,WACLo7G,EAAKmzK,uBAAyBnzK,EAAKmzK,uBAAuBhrR,QAAO,SAAA4B,GAAM,OAAAA,IAAOnF,CAAQ,GACvF,CACF,EAOMivR,EAAAA,UAAAA,aAAP,SAAoBhpL,GACV,IAAA59C,EAAcz0D,KAAKw2O,QAAO/hL,UAGlC,OAAUA,EAAYA,EAAY,IAAM,KAFzB49C,GAAeryG,KAAKw2O,QAAQ/nE,eAEQ,IAAIzuK,KAAKw3R,UAC7D,EAMM6D,EAAAA,UAAAA,eAAP,SAAsBriR,EAAmBxb,EAAauL,EAAgBqyR,GACpEp7R,KAAK06R,gBAAgBl9R,GAAOwb,EAC5BhZ,KAAK66R,iBAAiB7hR,GAAa,CACjCjQ,KAAI,EACJqyR,MAAK,EAER,EAMMC,EAAAA,UAAAA,iBAAP,SAAwB79R,GACtB,OAAOwC,KAAK06R,gBAAgBl9R,EAC7B,EAKM69R,EAAAA,UAAAA,kBAAP,WACE,OAAOr7R,KAAK06R,eACb,EAMMW,EAAAA,UAAAA,kBAAP,SAAyBriR,GACvB,IAAMqlC,EAAQr+C,KAAK66R,iBAAiB7hR,GAEpC,OAAOqlC,GAASA,EAAMt1C,IACvB,EAMMsyR,EAAAA,UAAAA,2BAAP,SAAkCriR,GAChC,IAAMqlC,EAAQr+C,KAAK66R,iBAAiB7hR,GAEpC,OAAOqlC,GAASA,EAAM+8O,KACvB,EAMMC,EAAAA,UAAAA,WAAP,SAAkBM,EAAcC,GACtB,IAAAd,EAAkB96R,KAAKw2O,QAAOskD,cAChC5hR,EAAU4hR,IAAkBV,GAAqBp6R,KAAK67R,wBAAqBx+R,EAMjF,GAJIu+R,GACF57R,KAAKy6R,gBAAgB55R,KAAK86R,GAGxBziR,EACF,OAAQ4hR,GACN,KAAKV,GACK,IAAA0B,EAAU5iR,EAAQ,MAE1B,IACG4iR,EAAwBC,WAAWJ,EAAOG,EAAwBE,SAAS3nS,OAK7E,CAJC,MAAOmU,IAIR,CACD,MAEF,KAAK4xR,GACHlhR,EAAQE,YAAYjP,SAASs+B,eAAekzP,SAIhD37R,KAAKw6R,OAAO35R,KAAK86R,GAIf37R,KAAKw2O,QAAQylD,cAEfj8R,KAAKw2O,QAAQylD,aAAaN,GAG5B37R,KAAK26R,uBAAuBp9R,SAAQ,SAAA6O,GAAY,OAAAA,GAAU,GAC3D,EAMMivR,EAAAA,UAAAA,SAAP,SAAgBa,GACd,OAAQA,EAAwBl8R,KAAKy6R,gBAAgBjxR,KAAK,IAAM,IAAMxJ,KAAKw6R,OAAOhxR,KAAK,GACxF,EAMM6xR,EAAAA,UAAAA,MAAP,WACEr7R,KAAKw6R,OAAS,GACdx6R,KAAKw3R,SAAW,EAChBx3R,KAAK66R,iBAAmB,CAAC,EACzB76R,KAAK06R,gBAAkB,CAAC,EAExB16R,KAAK46R,kBAAkBr9R,SAAQ,SAAA6O,GAAY,OAAAA,GAAU,GACtD,EAGMivR,EAAAA,UAAAA,UAAP,WACEr7R,KAAK06R,gBAAkB,CAAC,CACzB,EAEOW,EAAAA,UAAAA,iBAAR,sBAWE,OAVKr7R,KAAKm8R,eAAqC,qBAAbhyR,WAChCnK,KAAKm8R,cAAgBn8R,KAAKo8R,sBAErB/B,IAEH1uR,OAAO0Z,uBAAsB,WAC3BmiG,EAAK20K,mBAAgB9+R,CACtB,KAGE2C,KAAKm8R,aACb,EAEOd,EAAAA,UAAAA,oBAAR,WACE,IAAMh1M,EAAwBl8E,SAASk8E,KACjCg2M,EAAelyR,SAASa,cAAc,SACxCsxR,EAAkC,KAEtCD,EAAalxR,aAAa,oBAAqB,QAEvC,IAAA4vR,EAAgB/6R,KAAKw2O,QAAOukD,YAMpC,GALIA,GACEA,EAAY1tF,OACdgvF,EAAalxR,aAAa,QAAS4vR,EAAY1tF,OAG/CrtM,KAAKs7R,kBAGPgB,EAAqBt8R,KAAKs7R,kBAAkBiB,uBACvC,CACL,IAAMC,EAAsCx8R,KAAKy8R,2BAG/CH,EADEE,EACmBA,EAAoBD,mBAEpBl2M,EAAKpsE,WAAW,EAExC,CAKD,OAHAosE,EAAM7sE,aAAa6iR,EAAch2M,EAAMnrC,SAASohP,GAAsBA,EAAqB,MAC3Ft8R,KAAKs7R,kBAAoBe,EAElBA,CACR,EAEOhB,EAAAA,UAAAA,yBAAR,WACE,IAAMh1M,EAAwBl8E,SAASk8E,KACvC,OAAIA,EACKA,EAAK/qC,cAAc,4BAErB,IACR,EACH,CAAC,CAxRD,GChHIg/O,GAAet3G,MAAe,CAAC,OAEE3lL,IAAjCi9R,GAAO,gBACTA,GAAO,cAAwB,GAGjC,IAAIoC,IAA+B,EA4B7B,SAAUC,GAASzhN,QAAA,IAAAA,IAAAA,EAAAA,GACvBo/M,GAAO,cAAwBp/M,CAChC,CCjCK,SAAU6uE,GAAMpyF,EAAiBilO,GAGrC,IAAMjpR,EAAMivG,EAAAA,OAAiCg6K,GAI7C,OAHKjpR,EAAIyb,UACPzb,EAAIyb,QDKF,SAAgBuoC,GACpB,IAAK+kO,GAA8B,CAEjC,IAAMjB,EAAaJ,GAAWj4L,cAE1Bq4L,GAAcA,EAAWoB,SAC3BpB,EAAWoB,QAAQF,IAErBD,IAA+B,CAChC,CAID,YAAmBr/R,IAAXs6D,EA7BgB,OA6B2BA,GAFvC2iO,GAAO,eAGpB,CCnBiBwC,CAAMnlO,IAEfhkD,EAAIyb,OACZ,CCZK,SAAU2tQ,SACd,oCAAAh0R,EAAAA,GAAAA,UAAAA,GAEA,IAAMqH,EAAoB,GACpBqmF,EAAgB,GAChBglM,EAAaJ,GAAWj4L,cAE9B,SAAS45L,EAAaC,GACpB,IAAkB,UAAAA,EAAA7qK,EAAAA,EAAAA,OAAAA,IAAU,CAAvB,IAAM/hH,EAAG,KACZ,GAAIA,EACF,GAAmB,kBAARA,EACT,GAAIA,EAAI/T,QAAQ,MAAQ,EACtB0gS,EAAa3sR,EAAIjc,MAAM,UAClB,CACL,IAAM8oS,EAAiBzB,EAAW0B,kBAAkB9sR,GAEhD6sR,EACFF,EAAaE,IAGiB,IAA1B9sR,EAAQ9T,QAAQ+T,IAClBD,EAAQvP,KAAKwP,EAGlB,MACQzN,MAAMkD,QAAQuK,GACvB2sR,EAAa3sR,GACW,kBAARA,GAChBomF,EAAQ51F,KAAKwP,EAGlB,CACF,CAID,OAFA2sR,EAAaj0R,GAEN,CACLqH,QAAO,EACPqmF,QAAO,EAEV,CC/CD,ICOI2mM,GDPEhC,GAAmC,CAAC,EAEpC,SAAUiC,GAAWC,EAAgCx8R,GACzD,IAAM66R,EAAe2B,EAAUx8R,GAER,MAAnB66R,EAAKjwR,OAAO,KACd4xR,EAAUx8R,GAASs6R,GAAMO,GAAQP,GAAMO,IAASA,EAAKzyR,QAAQ,WAAY,OAAOzL,cAEnF,CEND,IAAM8/R,GAA6C,CACjD,cAAe,GAGX,SAAUC,GAAYF,EAAgCx8R,GAC1D,IAAM28R,EDEF,iBACJ,IAAKL,GAAiB,CACpB,IAAM7/H,EAA0B,qBAAbpzJ,SAA2BA,cAAW9M,EACnDqgS,EAA2B,qBAAd7yR,UAA4BA,eAAYxN,EACrDyN,EAA0B,QAAd,EAAG,OAAH4yR,QAAG,IAAHA,OAAG,EAAHA,EAAK5yR,iBAAS86F,IAAAA,OAAA,EAAAA,EAAEnoG,cAUhC2/R,GARG7/H,EAQe,CAChBogI,YAAapgI,KAAO,qBAAsBA,EAAIh7G,gBAAgBniC,QAC9Dw9Q,SAAU9yR,GAAaA,EAAUxO,QAAQ,YAAc,GACvDuhS,WAAY/yR,GAAaA,EAAUxO,QAAQ,UAAY,GACvDwhS,QAASJ,IAAQ,WAAWjzR,KAAKizR,EAAI5yR,aAAc,aAAaL,KAAKI,UAAUC,aAX/D,CAChB6yR,UAAU,EACVC,OAAO,EACPC,SAAS,EACTC,MAAM,EAUX,CAED,OAAOV,EACR,CC1BwBW,GAEjB38R,EAAOk8R,EAAUx8R,GAEvB,GAAIy8R,GAAgBn8R,GAAO,CACzB,IAAMzF,EAAQ2hS,EAAUx8R,EAAQ,GAE5By8R,GAAgBn8R,KACdq8R,EAAeE,UACjBL,EAAUz8R,KAAK,WAAaO,EAAMzF,GAEhC8hS,EAAeG,OACjBN,EAAUz8R,KAAK,QAAUO,EAAMzF,GAE7B8hS,EAAeK,MACjBR,EAAUz8R,KAAK,OAASO,EAAMzF,GAE5B8hS,EAAeI,SACjBP,EAAUz8R,KAAK,MAAQO,EAAMzF,GAGlC,CACF,CC7BD,OAAMqiS,GAAyB,CAC7B,eACA,cACA,OACA,YACA,cACA,eACA,UACA,QACA,UACA,QAGI,SAAUC,GAAaX,EAAgCx8R,GAC3D,IAAMM,EAAOk8R,EAAUx8R,GACjBnF,EAAQ2hS,EAAUx8R,EAAQ,GAEhC,GAAqB,kBAAVnF,EAAoB,CAC7B,IAAMuiS,EAAiBF,GAAuB1hS,QAAQ8E,IAAmB,EACnE+8R,EAAuB/8R,EAAK9E,QAAQ,OAAS,EAC7C8hS,EAAOF,GAAkBC,EAAuB,GAAK,KAE3Db,EAAUx8R,EAAQ,GAAK,GAAGnF,EAAQyiS,CACnC,CACF,CCtBD,IAAMC,GAAO,OACPC,GAAQ,QAERC,KAAiB,OACrB,KAAQD,GACR14L,GAAA,MAASy4L,GAFY,IAIjBG,GAAgD,CACpD,WAAY,WACZ,YAAa,YACb,YAAa,aAOT,SAAUC,GAAY/5R,EAAwB44R,EAAgCx8R,GAClF,GAAI4D,EAAQg6R,IAAK,CACf,IAAMv8E,EAAOm7E,EAAUx8R,GAEvB,IAAKqhN,EACH,OAGF,IAAMxmN,EAAQ2hS,EAAUx8R,EAAQ,GAEhC,GAAqB,kBAAVnF,GAAsBA,EAAMW,QAzB3B,YAyB+C,EACzDghS,EAAUx8R,EAAQ,GAAKnF,EAAMuN,QAAQ,6CAA8C,SAC9E,GAAIi5M,EAAK7lN,QAAQ+hS,KAAS,EAC/Bf,EAAUx8R,GAASqhN,EAAKj5M,QAAQm1R,GAAMC,SACjC,GAAIn8E,EAAK7lN,QAAQgiS,KAAU,EAChChB,EAAUx8R,GAASqhN,EAAKj5M,QAAQo1R,GAAOD,SAClC,GAAIruR,OAAOrU,GAAOW,QAAQ+hS,KAAS,EACxCf,EAAUx8R,EAAQ,GAAKnF,EAAMuN,QAAQm1R,GAAMC,SACtC,GAAItuR,OAAOrU,GAAOW,QAAQgiS,KAAU,EACzChB,EAAUx8R,EAAQ,GAAKnF,EAAMuN,QAAQo1R,GAAOD,SACvC,GAAIE,GAAkBp8E,GAC3Bm7E,EAAUx8R,GAASy9R,GAAkBp8E,QAChC,GAAIq8E,GAAmB7iS,GAC5B2hS,EAAUx8R,EAAQ,GAAK09R,GAAmB7iS,QAE1C,OAAQwmN,GACN,IAAK,SACL,IAAK,UACHm7E,EAAUx8R,EAAQ,GAyB5B,SAAkBnF,GAChB,GAAqB,kBAAVA,EAAoB,CAC7B,IAAMyN,EAAQzN,EAAMvH,MAAM,KAE1B,GAAqB,IAAjBgV,EAAM/U,OACR,OAAU+U,EAAM,GAAE,IAAIA,EAAM,GAAE,IAAIA,EAAM,GAAE,IAAIA,EAAM,EAEvD,CAED,OAAOzN,CACR,CAnCgCgjS,CAAShjS,GAChC,MACF,IAAK,aACH2hS,EAAUx8R,EAAQ,GAU5B,SAAmBnF,EAAeijS,GAChC,IAAMx1R,EAAQzN,EAAMvH,MAAM,KACpByqS,EAAYlrS,SAASyV,EAAMw1R,GAAY,IAI7C,OAFAx1R,EAAM,GAAKA,EAAM,GAAGF,QAAQ8G,OAAO6uR,GAAY7uR,QAAoB,EAAb6uR,IAE/Cz1R,EAAMI,KAAK,IACnB,CAjBgCs1R,CAAUnjS,EAAO,GAI/C,CACF,CCnCD,SAASojS,GAAe3D,GACtB,IAAM4D,EAAoB5D,GAASA,EAAM,KAEzC,OAAO4D,EAAaA,EAAwB3sL,iBAAch1G,CAC3D,CAED,ICCI4hS,GDDEC,GAAuB,qBAgD7B,SAASC,GAAeC,EAAqBC,GAC3C,OAAID,EAAY9iS,QAAQ,aAAe,EAC9B8iS,EAAYl2R,QAAQg2R,GAAsB,MACX,IAA7BE,EAAY9iS,QAAQ,KACtB+iS,EAAkBD,EAChBA,EAAY9iS,QAAQ,KAAO,EAC7B+iS,EAAkB,IAAMD,EAG1BA,CACR,CAED,SAASE,GAAgBD,EAAyBjE,EAAmC5uO,EAAkB7wD,QAArD,IAAAy/R,IAAAA,EAAAA,CAAoBmE,QAAS,KAC/C,IAA1B/yO,EAASlwD,QAAQ,KAEnBkjS,GAAa,CAAC7jS,GAAQy/R,EADtB5uO,EAAWA,EAAW,IAAM6yO,GAEnB7yO,EAASlwD,QAAQ,MAAQ,EArDtC,SAAqCmjS,GAEnC,IAAKP,GAAqBz0R,KAAKg1R,GAC7B,OAAOA,EAQT,IALA,IAAMC,EAAqC,GAErCC,EAAa,qBACfv1R,EAAQ,KAEJA,EAAQu1R,EAAWxzR,KAAKszR,IAE1Br1R,EAAM,GAAG9N,QAAQ,MAAQ,GAC3BojS,EAAgB7+R,KAAK,CACnBuJ,EAAMtJ,MACNsJ,EAAMtJ,MAAQsJ,EAAM,GAAG/V,OAEvB+V,EAAM,GACHhW,MAAM,KACN4e,KAAI,SAAC3J,GAAc,iBAAWA,EAAEd,OAAM,GAAG,IACzCiB,KAAK,QAMd,OAAOk2R,EACJxiR,UACAiS,QAAO,SAACq9B,EAAkBo5C,OAACg6L,EAAU,KAAEC,EAAa,KAAEhsO,EAAW,KAIhE,OAHerH,EAASr0D,MAAM,EAAGynS,GAGjB/rO,EAFDrH,EAASr0D,MAAM0nS,EAG/B,GAAEJ,EACN,CAmBGK,CAA4BtzO,GACzBp4D,MAAM,KACN4e,KAAI,SAACs9C,GAAc,OAAAA,EAAE/nD,MAAM,IAC3BhL,SAAQ,SAACwiS,GACR,OAAAP,GAAa,CAAC7jS,GAAQy/R,EAAO+D,GAAeY,EAAmBV,GAAiB,IAGpFG,GAAa,CAAC7jS,GAAQy/R,EAAO+D,GAAe3yO,EAAU6yO,GAEzD,CAED,SAASG,GAAaz2R,EAAgBqyR,EAAmCiE,QAAnC,IAAAjE,IAAAA,EAAAA,CAAoBmE,QAAS,UAAM,IAAAF,IAAAA,EAAAA,KACvE,IAAM5D,EAAaJ,GAAWj4L,cAC1B48L,EAAwC5E,EAAMiE,GAE7CW,IACHA,EAAe,CAAC,EAChB5E,EAAMiE,GAAmBW,EACzB5E,EAAMmE,QAAQ1+R,KAAKw+R,IAGrB,IAAkB,UAAAt2R,EAAAqpH,EAAAA,EAAAA,OAAAA,IAAM,CAAnB,IAAM/hH,EAAG,KAEZ,GAAmB,kBAARA,EAAkB,CAC3B,IAAM4vR,EAAgBxE,EAAW0B,kBAAkB9sR,GAE/C4vR,GACFT,GAAaS,EAAe7E,EAAOiE,EAGtC,MAAM,GAAIz8R,MAAMkD,QAAQuK,GACvBmvR,GAAanvR,EAAK+qR,EAAOiE,QAEzB,IAAK,IAAMr5R,KAAQqK,EACjB,GAAKA,EAAY7B,eAAexI,GAAO,CACrC,IAAM0pK,EAAar/J,EAAYrK,GAE/B,GAAa,cAATA,EAAsB,CAExB,IAAMk6R,EAAwC7vR,EAAY6vR,UAE1D,IAAK,IAAMd,KAAec,EACpBA,EAAU1xR,eAAe4wR,IAC3BE,GAAgBD,EAAiBjE,EAAOgE,EAAac,EAAUd,GAGpE,KAA+B,kBAAd1vH,EAEE,OAAdA,GACF4vH,GAAgBD,EAAiBjE,EAAOp1R,EAAM0pK,QAG9BryK,IAAdqyK,IAEW,WAAT1pK,GAA8B,YAATA,EACvBm6R,GAAYH,EAAch6R,EAAM0pK,GAE/BswH,EAAqBh6R,GAAQ0pK,EAIrC,CAGN,CAED,OAAO0rH,CACR,CAED,SAAS+E,GAAYH,EAA2B5+R,EAAczF,GAC5D,IAAIyN,EAAyB,kBAAVzN,EEpJf,SAAkCA,GAKtC,IAJA,IAAMyN,EAAQ,GACVg3R,EAAY,EACZC,EAAS,EAEJhgS,EAAI,EAAGA,EAAI1E,EAAMtH,OAAQgM,IAChC,OAAQ1E,EAAM0E,IACZ,IAAK,IACHggS,IACA,MACF,IAAK,IACCA,GACFA,IAEF,MACF,IAAK,KACL,IAAK,IACEA,IAEChgS,EAAI+/R,GACNh3R,EAAMvI,KAAKlF,EAAM6uB,UAAU41Q,EAAW//R,IAExC+/R,EAAY//R,EAAI,GAWxB,OAJI+/R,EAAYzkS,EAAMtH,QACpB+U,EAAMvI,KAAKlF,EAAM6uB,UAAU41Q,IAGtBh3R,CACR,CFkHyCk3R,CAAwB3kS,GAAS,CAACA,GAErD,IAAjByN,EAAM/U,QACR+U,EAAMvI,KAAKlF,GAGmB,eAA5ByN,EAAMA,EAAM/U,OAAS,KAEvB+U,EAAQA,EAAMjR,MAAM,GAAI,GAAG6a,KAAI,SAAA0J,GAAK,OAAAA,EAAI,aAAa,KAGvDsjR,EAAa5+R,EAAO,OAASgI,EAAM,GACnC42R,EAAa5+R,EAAO,SAAWgI,EAAM,IAAMA,EAAM,GACjD42R,EAAa5+R,EAAO,UAAYgI,EAAM,IAAMA,EAAM,GAClD42R,EAAa5+R,EAAO,QAAUgI,EAAM,IAAMA,EAAM,IAAMA,EAAM,EAC7D,CAED,SAASm3R,GAAe77R,EAAwB02R,GAI9C,IAHA,IAAM9/N,EAAuB,CAAC52D,EAAQg6R,IAAM,MAAQ,OAChD8B,GAAW,EAEQ,MAAApF,EAAMmE,QAANntK,EAAAA,EAAAA,OAAAA,IAAe,CAAjC,IAAM5lE,EAAQ,KACjB8O,EAAWz6D,KAAK2rD,GAChB,IAAMi0O,EAAmBrF,EAAM5uO,GAE/B,IAAK,IAAMotD,KAAY6mL,EACjBA,EAAiBjyR,eAAeorG,SAA4Cv8G,IAA/BojS,EAAiB7mL,KAChE4mL,GAAW,EACXllO,EAAWz6D,KAAK+4G,EAAU6mL,EAAiB7mL,IAGhD,CAED,OAAO4mL,EAAWllO,EAAW9xD,KAAK,SAAMnM,CACzC,CAED,SAASqjS,GAAa96R,EAAgBizB,GACpC,OAAIA,GAAS,EACJ,GAGK,IAAVA,EACKjzB,EAGFA,EAAS86R,GAAa96R,EAAQizB,EAAQ,EAC9C,CAEK,SAAU8nQ,GAAqBj8R,EAAwBk8R,GAC3D,IAAKA,EACH,MAAO,GAGT,IAAMC,EAAkC,GAExC,IAAK,IAAMxiP,KAASuiP,EACdA,EAAYpyR,eAAe6vC,IA9Md,gBA8MwBA,QAAiDhhD,IAAvBujS,EAAYviP,IAC7EwiP,EAAWhgS,KAAKw9C,EAAOuiP,EAAYviP,IAKvC,IAAK,IAAIh+C,EAAI,EAAGA,EAAIwgS,EAAWxsS,OAAQgM,GAAK,EAC1Cg9R,GAAWwD,EAAYxgS,GACvB49R,GAAa4C,EAAYxgS,GACzBo+R,GAAY/5R,EAASm8R,EAAYxgS,GACjCm9R,GAAYqD,EAAYxgS,GAI1B,IAASA,EAAI,EAAGA,EAAIwgS,EAAWxsS,OAAQgM,GAAK,EAC1CwgS,EAAW9/R,OAAOV,EAAG,EAAG,IAAKwgS,EAAWxgS,GAAI,KAG9C,OAAOwgS,EAAWr3R,KAAK,GACxB,CASK,SAAUs3R,GAAoBp8R,OAAwB,oCAAAqE,EAAAA,EAAAA,GAAAA,UAAAA,GAC1D,IAAMqyR,EAAkBoE,GAAaz2R,GAC/BvL,EAAM+iS,GAAe77R,EAAS02R,GAEpC,GAAI59R,EAAK,CACP,IAAMi+R,EAAaJ,GAAWj4L,cACxB29L,EAAuC,CAC3C/nR,UAAWyiR,EAAWuF,iBAAiBxjS,GACvCA,IAAG,EACHuL,KAAI,GAGN,IAAKg4R,EAAa/nR,UAAW,CAC3B+nR,EAAa/nR,UAAYyiR,EAAWwF,aAAalC,GAAe3D,IAGhE,IAFA,IAAM8F,EAA0B,GAET,MAAA9F,EAAMmE,QAAN35L,EAAAA,EAAAA,OAAAA,IAAe,CAAjC,IAAMp5C,EAAQ,KACjB00O,EAAcrgS,KAAK2rD,EAAUm0O,GAAqBj8R,EAAS02R,EAAM5uO,IAClE,CACDu0O,EAAaG,cAAgBA,CAC9B,CAED,OAAOH,CACR,CAGF,CAQK,SAAUI,GAAkBJ,EAA6BK,QAAA,IAAAA,IAAAA,EAAAA,GAC7D,IAAM3F,EAAaJ,GAAWj4L,cACtBpqF,EAAwC+nR,EAAY,UAAzCvjS,EAA6BujS,EAAY,IAApCh4R,EAAwBg4R,EAAY,KAA9BG,EAAkBH,EAAY,cAE5D,GAAIG,EAAe,CAEjB,IAAK,IAAI7gS,EAAI,EAAGA,EAAI6gS,EAAc7sS,OAAQgM,GAAK,EAAG,CAChD,IAAM+6R,EAAQ8F,EAAc7gS,EAAI,GAChC,GAAI+6R,EAAO,CACT,IAAI5uO,EAAW00O,EAAc7gS,GAIvBghS,GAHN70O,EAAWA,EAAStjD,QAAQ,KAAMw3R,GAAa,IAAIK,EAAa/nR,UAAaooR,KAG5C,IAAIhG,EAAK,KAA8B,IAA1B5uO,EAASlwD,QAAQ,KAAa,IAAM,IAClFm/R,EAAWM,WAAWsF,EACvB,CACF,CACD5F,EAAW6F,eAAetoR,EAAYxb,EAAMuL,EAAOm4R,EACpD,CACF,CGnHK,SAAUK,GACd5K,EACAjyR,GAEA,IAAM88R,EAAwC,CAAE5K,mBAAoB,CAAC,GAIrE,IAFiBD,EAAU,IAEVA,EAAUtiS,QAAU,EACnC,MAAO,CAAEuiS,mBAAoB,CAAC,GAGhC,IAAM6K,EAAuB/K,GAAAA,WAAe,EAAIC,GAE1C+K,EAAgB,GAEtB,IAAK,IAAMC,KAAgBF,EACzB,GAAIA,EAAqBjzR,eAAemzR,GAAe,CACrD,GAAqB,uBAAjBA,EAAuC,CACzCH,EAAa5K,mBAAsB6K,EAAoD7K,oBAAsB,CAAC,EAC9G,QACD,CAED,IAEM,EAAuBmG,GAFL0E,EAA6BE,IAE7CvxR,EAAO,UAAEqmF,EAAO,UAExB,GAAW,OAAPA,QAAO,IAAPA,OAAO,EAAPA,EAASpiG,QACL0sS,EAAeD,GAAoBp8R,GAAW,CAAC,EAAG,CAAE2tG,YAAasvL,GAAgBlrM,MAGrFirM,EAAc7gS,KAAKkgS,GACnBS,EAAaG,GAAgBvxR,EAAQtc,OAAO,CAACitS,EAAa/nR,YAAYxP,KAAK,WAG7Eg4R,EAAaG,GAAgBvxR,EAAQ5G,KAAK,IAE7C,CAGH,IAA2B,UAAAk4R,EAAAtvK,EAAAA,EAAAA,OAAAA,IAAe,CAArC,IAAM2uK,KAAY,OAEnBI,GAAkBJ,EAAqB,OAAPr8R,QAAO,IAAPA,OAAO,EAAPA,EAAS08R,sBAE5C,CAED,OAAOI,CACR,CC7NK,SAAUI,GAAYv1C,GAC1B,GAAKp4E,MAAmC,qBAAb9pK,SAEpB,CACL,IAAM6C,EAAKq/O,EAEX,OAAOr/O,GAAMA,EAAGu1H,cAAgBv1H,EAAGu1H,cAAgBp4H,QACpD,CACF,CHZK,SAAU03R,GAAOroH,GACjBylH,KAASzlH,IACXylH,GAAOzlH,EAEV,CAKK,SAAUsoH,KAOd,YANazkS,IAAT4hS,KACFA,GACsB,qBAAb90R,YACLA,SAASo4C,iBACsC,QAAjDp4C,SAASo4C,gBAAgB7pC,aAAa,QAEnCumR,EACR,CAMDA,GAAO6C,KIvBP,IAGIC,GAHEC,GAAwB,QAQxB,SAAUF,GAAOpR,GACrB,QADqB,IAAAA,IAAAA,EAAAA,CAAAA,QACHrzR,IAAdqzR,EAAMgO,IACR,OAAOhO,EAAMgO,IAEf,QAAerhS,IAAX0kS,GAAsB,CAExB,IAAIE,ECbF,SAAkBzkS,GACtB,IAAIwQ,EAAS,KACb,IACE,IAAMo6K,EAAMpF,KACZh1K,EAASo6K,EAAMA,EAAIp8E,eAAe72C,QAAQ33D,GAAO,IAGlD,CAFC,MAAOgL,IAER,CACD,OAAOwF,CACR,CDIkBmnD,CAAQ6sO,IACN,OAAbC,GAkBF,SAAiBzoH,EAAgB0oH,QAAA,IAAAA,IAAAA,GAAAA,GACrC,IAAI3kI,EAAMqkI,KACNrkI,GACFA,EAAIh7G,gBAAgBp3C,aAAa,MAAOquK,EAAQ,MAAQ,OAGtD0oH,GCtBA,SAAkB1kS,EAAa3D,SACnC,IACa,QAAX,cAAW+rG,IAAAA,GAAAA,EAAEoG,eAAe/2C,QAAQz3D,EAAK3D,EAG1C,CAFC,MAAO2O,IAER,CACF,CDiBGysD,CAAQ+sO,GAAuBxoH,EAAQ,IAAM,KAI/C2oH,GADAJ,GAASvoH,EAEV,CA5BKqoH,CADAE,GAAsB,MAAbE,GAIX,IAAI1kI,EAAMqkI,UACKvkS,IAAX0kS,IAAwBxkI,GAE1B4kI,GADAJ,GAAqG,SAA1FxkI,EAAIjhI,MAAQihI,EAAIjhI,KAAK5jB,aAAa,QAAW6kJ,EAAIh7G,gBAAgB7pC,aAAa,QAG5F,CAED,QAASqpR,EACV,CE3BD,IAGIK,GAAsB,EAEpB3G,GAAaJ,GAAWj4L,cAE1Bq4L,IAAcA,GAAWoB,SAC3BpB,GAAWoB,SAAQ,WAAM,OAAAuF,IAAqB,IAShD,IAAMC,GAAS,aAiCT,SAAUC,GACd59R,QAAA,IAAAA,IAAAA,EAAAA,CAAAA,GAYA,IAAIsO,EAA0B,IAAI0gE,IAC9B6uN,EAAiB,EACjBC,EAAqB,EACrBC,EAA4BL,GA8EhC,OA5EsB,SACpB9K,EACAD,SAKA,QALA,IAAAA,IAAAA,EAA0B,CAAC,GAMzB3yR,EAAQg+R,iBACyB,oBAA1BpL,GACNA,EAAgE0C,oBAEjE,OAAO1C,EAAsBD,GAG/BmL,IACA,IAAIpzQ,EAAyBpc,EACrB09Q,EAAU2G,EAAiB,MAC7BqH,EAAMhO,QAAuBrzR,IAAdqzR,EAAMgO,IAAoBhO,EAAMgO,IAAMoD,KAErDa,EAAiBj+R,EAAQi+R,eAiC/B,GA9BIF,IAA8BL,KAChCK,EAA4BL,GAC5BpvR,EAAM,IAAI0gE,IACV6uN,EAAiB,GAGd79R,EAAQi+R,iBACXvzQ,EAAUwzQ,GAAa5vR,EAAKskR,GAC5BloQ,EAAUwzQ,GAAaxzQ,EAASioQ,KAG9BsL,GAAoBvzQ,EAAgBizQ,MAEnCjzQ,EAAgBizQ,SADWhlS,IAA1Bi6R,EACyB,CAAC,EAEDiK,GACzB,CACoC,oBAA1BjK,EACJA,EAAsBD,GACtBC,GAEN,CAAEoH,MAAOA,EAAK0C,sBAAuB18R,EAAQg+R,gBA/GhB,OA+GmErlS,IAI/FslS,GACHJ,KAIAA,GAAkB79R,EAAQm+R,WAzHV,IAyHyC,CAC3D,IAAMz6G,EAAMpF,MACS,QAAjB,EAAG,OAAHoF,QAAG,IAAHA,OAAG,EAAHA,EAAKozG,oBAAY51L,IAAAA,OAAA,EAAAA,EAAEk9L,mCAErBn1R,QAAQC,KACN,oEAAoE20R,EAAc,IAAIC,EAAkB,KAG1G70R,QAAQk9E,SAGV73E,EAAIktB,QACJqiQ,EAAiB,EAGjB79R,EAAQi+R,gBAAiB,CAC1B,CAID,OAAQvzQ,EAAgBizQ,GACzB,CAGF,CAED,SAASU,GAAc3zQ,EAAwBzzB,GAO7C,OANAA,EAiCF,SAAyBA,GACvB,OAAQA,GACN,UAAK0B,EACH,MAAO,gBACT,KAAK,KACH,MAAO,WACT,QACE,OAAO1B,EAEZ,CA1CSqnS,CAAgBrnS,GAEnByzB,EAAQsoC,IAAI/7D,IACfyzB,EAAQ9S,IAAI3gB,EAAO,IAAI+3E,KAGlBtkD,EAAQ7S,IAAI5gB,EACpB,CAED,SAASinS,GAAaxzQ,EAAwBijO,GAC5C,GAAsB,oBAAXA,EAET,GADgCA,EAAmCsnC,iBAKjE,IAAoB,UAACtnC,EAAesnC,iBAAhBvnK,EAAAA,EAAAA,OAAAA,IAAkC,CACpDhjG,EAAU2zQ,GAAc3zQ,EADV,KAEf,MAEDA,EAAU2zQ,GAAc3zQ,EAASijO,QAE9B,GAAsB,kBAAXA,EAChB,IAAK,IAAMz4I,KAAYy4I,EACjBA,EAAO7jP,eAAeorG,KACxBxqF,EAAU2zQ,GAAc3zQ,EAAUijO,EAAez4I,KAKvD,OAAOxqF,CACR,CCzLD,IAAM6zQ,GAAc,eAAC,oCAAA35Q,EAAAA,GAAAA,UAAAA,GAGnB,IAFA,IAAMtb,EAAiC,CAAC,EAErB,MAAAsb,EAAAs8E,EAAAA,EAAAA,OAAAA,IAGjB,IAHG,IAAMrzF,EAAI,KACPlM,EAAOzD,MAAMkD,QAAQyM,GAAQA,EAAOxO,OAAOsC,KAAKkM,GAEpC,MAAAlM,EAAA2/F,EAAAA,EAAAA,OAAAA,IAAM,CAAnB,IAAMxoG,EAAG,KACZwQ,EAAOxQ,GAAO,CACf,CAGH,OAAOwQ,CACR,EAOYk1R,GAAoBD,GAAY,CAC3C,SACA,QACA,UACA,mBACA,qBACA,sBACA,UACA,iBACA,SACA,gBACA,WACA,UACA,WACA,SACA,UACA,YACA,mBACA,aACA,UACA,UACA,YACA,mBACA,mBACA,YACA,cACA,UACA,eACA,mBACA,cACA,UACA,SACA,YACA,aACA,eACA,WACA,YACA,YACA,YACA,eACA,iBACA,YACA,UACA,iBACA,gBACA,gBACA,SACA,YACA,cACA,aACA,cACA,aACA,cACA,SACA,cACA,qBACA,eACA,eACA,cACA,aACA,cACA,YACA,mBACA,WACA,gBACA,aACA,cACA,eACA,WACA,UACA,kBACA,gBACA,iBACA,iBACA,gBACA,eACA,gBACA,cACA,sBACA,yBAQWE,GAAwBF,GAAY,CAC/C,YACA,WACA,YACA,kBACA,MACA,YACA,SACA,UACA,KACA,OACA,MACA,OACA,QACA,WACA,QACA,YACA,aACA,SAQWG,GAAwBH,GAAYE,GAAuBD,IAgB3DG,IATkBJ,GAAYG,GAAuB,CAChE,SAQ6BH,GAAYG,GAAuB,CAChE,SACA,OACA,QACA,UACA,MACA,WAkDWE,IA1CkBL,GAAYI,GAAiB,CAC1D,WAQ0BJ,GAAYG,GAAuB,CAC7D,UAQ0BH,GAAYG,GAAuB,CAC7D,UAQ8BH,GAAYG,GAAuB,CACjE,WACA,OACA,WACA,QACA,MACA,SACA,SAQ8BH,GAAYG,GAAuB,CACjE,YACA,WACA,OACA,aACA,cACA,aACA,iBACA,aACA,OACA,WAQWG,GAAkBN,GAAYK,GAAkB,CAC3D,SACA,MACA,iBACA,eACA,UACA,UACA,OACA,SACA,YACA,OACA,MACA,YACA,MACA,YACA,WACA,UACA,cACA,WACA,WACA,MACA,OACA,OACA,OACA,QACA,UAiJWE,IAzIqBP,GAAYK,GAAkB,CAC9D,iBACA,OACA,UACA,OACA,YACA,YACA,cACA,WACA,WACA,OACA,SAQ8BL,GAAYK,GAAkB,CAC5D,OACA,WACA,aAG8BL,GAAYG,GAAuB,CACjE,WACA,UAQ6BH,GAAYG,GAAuB,CAChE,cACA,gBAe0BH,GAAYG,GAAuB,CAC7D,UACA,UAQ0BH,GAAYG,GAAuB,CAC7D,UACA,UACA,UACA,UAGgCH,GAAYG,GAAuB,CACnE,SAG2BH,GAAYG,GAAuB,CAC9D,SAQ4BH,GAAYG,GAAuB,CAC/D,gBACA,SACA,UACA,UACA,SACA,aACA,WAQ8BH,GAAYG,GAAuB,CACjE,QACA,kBACA,sBACA,oBACA,MACA,SACA,aACA,iBACA,UACA,MACA,SACA,UAQ2BH,GAAYG,GAAuB,CAC9D,MACA,cACA,SACA,MACA,SACA,SACA,UAa2BA,IAiBvB,SAAUK,GAEdj0R,EACAk0R,EACAC,GAaA,IALA,IAAM79R,EAAUlD,MAAMkD,QAAQ49R,GAExB11R,EAA8B,CAAC,EAGnB,MAFLjK,OAAOsC,KAAKmJ,GAEP4iH,EAAAA,EAAAA,OAAAA,IAAM,CAAnB,IAAM50H,EAAG,QAERsI,GAAY49R,EAA4ClmS,IACzDsI,GAAY49R,EAA8BpnS,QAAQkB,IAAQ,GAClC,IAAzBA,EAAIlB,QAAQ,UACa,IAAzBkB,EAAIlB,QAAQ,WAEQqnS,IAA0D,KAApB,OAAjBA,QAAiB,IAAjBA,OAAiB,EAAjBA,EAAmBrnS,QAAQkB,MAEpEwQ,EAAOxQ,GAAOgS,EAAOhS,GAExB,CAED,OAAOwQ,CACR,CClbM,OAAM41R,GAEN,EAFMA,GAWH,GAXGA,GAYD,GAZCA,GAaN,GAbMA,GAcL,GAdKA,GAeL,GAfKA,GAiBJ,GAjBIA,GAkBL,GCtBFC,KAAmB,ODoBnB,ICnBW,EACfj+L,GAACg+L,IAAgB,EACjBh+L,GAACg+L,IAAgB,EACjBh+L,GAACg+L,IAAiB,EAClBh+L,GAACg+L,IAAgB,EACjBh+L,GAACg+L,IAAe,EAChBh+L,GAACg+L,IAAe,EAChBh+L,GAACg+L,IAAkB,EACnBh+L,GAACg+L,IAAoB,EATE,IAenB,SAAUE,GAAqBtwJ,GACnC,QAASqwJ,GAAoBrwJ,EAC9B,CCjBM,IAAMuwJ,GAA0B,4BAC1BC,GAAyB,2BAEtC,SAASC,GAAgBj3R,EAAoCw7C,GACvDx7C,IACFA,EAAGgjC,UAAUvxB,IAAI+pC,EAAUu7O,GAA0BC,IACrDh3R,EAAGgjC,UAAUzlC,OAAOi+C,EAAUw7O,GAAyBD,IAE1D,CAiBK,SAAUG,GACd17O,EACA5iD,EACAu+R,SAEIA,EACFA,EAAoB5mS,SAAQ,SAAAoW,GAAO,OAAAswR,GAAgBtwR,EAAIyb,QAASo5B,EAAQ,IAExEy7O,GAAiC,QAAjB,KAAUr+R,UAAOggG,IAAAA,OAAA,EAAAA,EAAEz7F,SAASmyB,KAAMksB,EAErD,CCtBD,IAAI47O,GAAgB,IAAIxwN,QACpBywN,GAAc,IAAIzwN,QAEtB,SAAS0wN,GAAiB9mS,EAA2B+nB,GACnD,IAAImD,EACE67Q,EAAYH,GAAc7nR,IAAI/e,GAQpC,OANEkrB,EADE67Q,EACSA,EAAYh/Q,EAEZ,EAGb6+Q,GAAc9nR,IAAI9e,EAAKkrB,GAChBA,CACR,CA8CM,IAAM87Q,GAAoB5hL,EAAAA,mBAAoDvlH,GAoB/E,SAAUonS,GAAcC,GAC5B,IAAM5lS,EAAU8jH,EAAAA,WAAiB4hL,IAEjC5hL,EAAAA,WAAgB,mBACRwlE,EAAMpF,GAAiB,OAAP0hH,QAAO,IAAPA,OAAO,EAAPA,EAASt1Q,SAE/B,GAAKg5J,IAA+C,KAAxB,QAAhB,EAAAA,EAAIozG,oBAAY51L,IAAAA,OAAA,EAAAA,EAAE++L,mBAA9B,CAIA,IACIhpI,EACAipI,EACA1uK,EACAC,EAJAnpH,EAA2Bo7K,EAK/B,GAAwB,QAApB,EAAO,OAAPtpL,QAAO,IAAPA,OAAO,EAAPA,EAAS+lS,mBAAW7+L,IAAAA,OAAA,EAAAA,EAAE52E,QAAS,CACjCpiB,EAAKlO,EAAQ+lS,YAAYz1Q,QACzB,IAAMk1M,EAjFZ,SAAwBxlO,GACtB,IAAIwlO,EAAY+/D,GAAY9nR,IAAIzd,GAChC,OAAIwlO,IAQJA,EAAY,CAAE3oE,YAJM,SAACmpI,GAAmB,OAAAC,GAAaD,EAAIhmS,EAAQqlS,oBAAoB,EAI1DS,cAHL,SAACE,GAAqB,OAAAE,GAAeF,EAAIhmS,EAAQqlS,oBAAoB,EAGjDjuK,UAFxB,SAAC4uK,GAAsB,OAAAG,GAAWH,EAAIhmS,EAAQqlS,oBAAoB,EAE/BhuK,QADrC,SAAC2uK,GAAsB,OAAAnsK,GAASmsK,EAAIhmS,EAAQqlS,oBAAoB,GAGhFE,GAAY/nR,IAAIxd,EAASwlO,GAClBA,EACR,CAmEuB4gE,CAAepmS,GACjC68J,EAAc2oE,EAAU3oE,YACxBipI,EAAgBtgE,EAAUsgE,cAC1B1uK,EAAYouG,EAAUpuG,UACtBC,EAAUmuG,EAAUnuG,OACrB,MACCwlC,EAAcopI,GACdH,EAAgBI,GAChB9uK,EAAY+uK,GACZ9uK,EAAUwC,GAGZ,IAAI9/F,EAAQyrQ,GAAiBt3R,EAAI,GAQjC,OAPI6rB,GAAS,IACX7rB,EAAGnP,iBAAiB,YAAa89J,GAAa,GAC9C3uJ,EAAGnP,iBAAiB,cAAe+mS,GAAe,GAClD53R,EAAGnP,iBAAiB,UAAWq4H,GAAW,GAC1ClpH,EAAGnP,iBAAiB,QAASs4H,GAAS,IAGjC,iBACAiyD,IAA+C,KAAxB,QAAhB,EAAAA,EAAIozG,oBAAY51L,IAAAA,OAAA,EAAAA,EAAE++L,oBAIhB,KADd9rQ,EAAQyrQ,GAAiBt3R,GAAK,MAE5BA,EAAG3S,oBAAoB,YAAashK,GAAa,GACjD3uJ,EAAG3S,oBAAoB,cAAeuqS,GAAe,GACrD53R,EAAG3S,oBAAoB,UAAW67H,GAAW,GAC7ClpH,EAAG3S,oBAAoB,QAAS87H,GAAS,GAE5C,CAxCA,CAyCF,GAAE,CAACr3H,EAAS4lS,GACd,CAWD,SAASK,GAAaD,EAAgBX,GACpCD,IAAmB,EAAOY,EAAGl/R,OAAmBu+R,EACjD,CAED,SAASa,GAAeF,EAAkBX,GACjB,UAAnBW,EAAG9wJ,aACLkwJ,IAAmB,EAAOY,EAAGl/R,OAAmBu+R,EAEnD,CAWD,SAASc,GAAWH,EAAmBX,GAEjCL,GAAqBgB,EAAGtxJ,QAC1B0wJ,IAAmB,EAAMY,EAAGl/R,OAAmBu+R,EAElD,CAED,SAASxrK,GAASmsK,EAAmBX,GAE/BL,GAAqBgB,EAAGtxJ,QAC1B0wJ,IAAmB,EAAMY,EAAGl/R,OAAmBu+R,EAElD,CCtLD,ICFiBgB,GAeAC,GAoBAC,GA8BAC,GASAC,GDxEXhjC,GAAgB+/B,GAAmD,CAIvEO,UAAW,MAGb,0EAeC,CAAD,OjCJO,SAAmB3yO,EAAG/gD,GACzB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIrP,UAAU,uBAAyBkQ,OAAOb,GAAK,iCAE7D,SAASwhD,IAAO3wD,KAAK2O,YAAcuhD,CAAI,CADvCK,GAAcL,EAAG/gD,GAEjB+gD,EAAElxD,UAAkB,OAANmQ,EAAapL,OAAO7E,OAAOiQ,IAAMwhD,EAAG3xD,UAAYmQ,EAAEnQ,UAAW,IAAI2xD,EAClF,CiCjB8BD,CAAAA,EAAAA,GACtB80O,EAAAA,UAAAA,OAAP,WACQ,MAAqFxlS,KAAKwP,MAAxFw2F,EAAAA,EAAAA,GAAIy/L,OAAQ,IAAG,UAAOz/L,EAAEzsF,EAAQ,WAAEP,EAAS,YAAE2W,EAAQ,WAAElQ,EAAM,SAAEmQ,EAAQ,WAAE8gQ,EAAK,QAChFvgR,EAAaoyP,GAAc9iP,EAAQ,CACvCzG,UAAS,EACT2W,SAAQ,EACRC,SAAQ,EACR8gQ,MAAOA,IAET,OACE9tK,EAAAA,cAAC6iL,EAAQ70O,GAAAA,CAAAA,EAAK6yO,GAAezjS,KAAKwP,MAAOg0R,IAAc,CAAExqR,UAAW7I,EAAWqD,OAC5E+F,EAGN,EACH,CAAC,CAfD,CAA+BqpG,EAAAA,YCT/B,SAAiBuiL,GACFA,EAAAA,OAAS,wBACTA,EAAAA,SAAW,0BACXA,EAAAA,aAAe,+BACfA,EAAAA,MAAQ,uBACRA,EAAAA,OAAS,wBACTA,EAAAA,KAAO,oBACPA,EAAAA,WAAa,4BACbA,EAAAA,aAAe,+BACfA,EAAAA,QAAU,cACVA,EAAAA,SAAW,0BACXA,EAAAA,SAAW,yBAX1B,EAAiBA,KAAAA,GAAkB,KAenC,SAAiBC,GACFA,EAAAA,OAAS,IAAID,GAAmBO,OAAM,IACtCN,EAAAA,kBAAoB,wCACpBA,EAAAA,mBAAqB,oCACrBA,EAAAA,SAAW,IAAID,GAAmBQ,SAAQ,IAC1CP,EAAAA,aAAe,IAAID,GAAmBS,aAAY,IAClDR,EAAAA,MAAQ,IAAID,GAAmBU,MAAK,IACpCT,EAAAA,OAAS,IAAID,GAAmBW,OAAM,IACtCV,EAAAA,MAAQ,eACRA,EAAAA,SAAW,2DACXA,EAAAA,OAAS,yBACTA,EAAAA,QAAU,IAAID,GAAmBY,QAAO,IACxCX,EAAAA,KAAO,iCACPA,EAAAA,WAAa,IAAID,GAAmBa,WAAU,IAC9CZ,EAAAA,aAAe,IAAID,GAAmBc,aAAY,IAClDb,EAAAA,SAAW,IAAID,GAAmBe,SAAQ,IAC1Cd,EAAAA,SAAW,IAAID,GAAmBgB,SAAQ,GAhBzD,EAAiBf,KAAAA,GAAqB,KAoBtC,SAAiBC,GACFA,EAAAA,OAAS,OACTA,EAAAA,OAAS,OACTA,EAAAA,OAAS,OACTA,EAAAA,OAAS,OACTA,EAAAA,OAAS,OACTA,EAAAA,OAAS,OACTA,EAAAA,OAAS,OACTA,EAAAA,OAAS,OACTA,EAAAA,OAAS,OACTA,EAAAA,OAAS,OACTA,EAAAA,OAAS,OAETA,EAAAA,KAAe,OACfA,EAAAA,OAAiB,OACjBA,EAAAA,MAAgB,OAChBA,EAAAA,UAAoB,OACpBA,EAAAA,OAAiB,OACjBA,EAAAA,WAAqB,OACrBA,EAAAA,KAAe,OACfA,EAAAA,MAAgB,OAChBA,EAAAA,OAAiB,OACjBA,EAAAA,WAAqB,OACrBA,EAAAA,QAAkB,OAClBA,EAAAA,YAAsB,OACtBA,EAAAA,WAAqB,OACrBA,EAAAA,KAAe,MA1B9B,EAAiBA,KAAAA,GAAS,KA8B1B,SAAiBC,GACFA,EAAAA,MAAqB,IACrBA,EAAAA,UAAyB,IACzBA,EAAAA,QAAuB,IACvBA,EAAAA,SAAwB,IACxBA,EAAAA,KAAoB,GALnC,EAAiBA,KAAAA,GAAW,KAS5B,SAAiBC,GACFA,EAAAA,OAAiB,OACjBA,EAAAA,MAAgB,OAChBA,EAAAA,OAAiB,OACjBA,EAAAA,MAAgB,MAJ/B,EAAiBA,KAAAA,GAAa,KC3EvB,IAAMa,GAAuB,oFCA7B,ICFUC,GCuCX,SAAUC,GACd5V,EACA6V,EACAx2R,EACAy2R,EACAC,EACAC,EACAC,EACAz9H,GAEA,OAWS09H,GAAuBlW,EAXF,kBAAnB6V,GAAgCA,EAWJA,EAVA,CACnCM,MAAON,EACPx2R,SAAQ,EACRy2R,kBAAiB,EACjBC,YAAW,EACXC,aAAY,EACZC,cAAa,EACbz9H,aAAY,GAKjB,CAED,SAAS09H,GAAuBlW,EAAehsR,gBAAA,IAAAA,IAAAA,EAAAA,CAAAA,GAE3C,IAAAwkK,EAQExkK,EAAO,aAPTmhK,EAOEnhK,EAAO,MAPTmiS,OAAK,IAAG,IAAChhI,EACTnzC,EAMEhuH,EAAO,MANT8V,OAAK,IAAG,IAACk4G,EACT/7D,EAKEjyD,EAAO,SALTqL,OAAQ,IAAG,aAAU4mD,EACrB6vO,EAIE9hS,EAAO,kBAHT4nM,EAGE5nM,EAAO,YAHT+hS,OAAW,IAAG,EAAA/V,EAAMoW,QAAQC,MAAKz6F,EACjCywE,EAEEr4Q,EAAO,aAFTgiS,OAAY,IAAG,EAAAhW,EAAMoW,QAAQE,iBAAgBjqB,EAC7CkqB,EACEviS,EAAO,cAEX,MAAO,CAEL6iB,QAAS,cAETxX,SAAQ,EAERmwR,WAAS,GAGP,qBAAsB,CACpBntM,OAAQ,MAKV6S,EAAC,qCAlBU,IAAG,GAAIqhM,EAkB+B,SAAW,IAAE,UAAW,CACvE53R,QAAS,KACTU,SAAU,WACVsK,KAAMwsR,EAAQ,EACdvsR,IAAKusR,EAAQ,EACbpsR,OAAQosR,EAAQ,EAChBtsR,MAAOssR,EAAQ,EACf9zM,OAAWv4E,EAAK,YAAYisR,EAC5Bl/Q,QAAY/M,EAAK,YAAYksR,EAC7B1sK,OAAQqsK,GAASa,WACjBh+H,aAAcA,EACdg3H,WAAS,KACPl6L,EAACogM,IAAuBI,EADjB,IApBJ,GA0BZ,ED5GD,SAAiBH,GACFA,EAAAA,IAAc,EAIdA,EAAAA,eAAyB,EACzBA,EAAAA,WAAqB,EACrBA,EAAAA,UAAoB,IACpBA,EAAAA,MAAgB,IAChBA,EAAAA,YAAsB,OATrC,EAAiBA,KAAAA,GAAQ,KC8JlB,IC5JDc,GAA4C,CAAC,EAG/CC,QAA2B/pS,EAE/B,IACE+pS,GAAOz7R,MAGR,CAFC,MAAOnD,IAER,CAEK,SAAU6+R,GAAW5+F,EAAqBC,GAC9C,GAAoB,qBAAT0+F,GAAsB,CAE/B,IAAME,EAAaF,GAAaG,aAAgBH,GAAaG,cAAgB,CAAC,EAI9E,IAAKD,EAAS7+F,KAAiB0+F,GAAc1+F,GAC3C0+F,GAAc1+F,GAAeC,GACX4+F,EAAS7+F,GAAe6+F,EAAS7+F,IAAgB,IAC1D5nM,KAAK6nM,EAEjB,CACF,CCvBK,SAAUz0B,KACd,MACoB,qBAAXtoK,WAELA,OAAOxB,WAEPwB,OAAOxB,SAASa,cAGrB,CCTDq8R,GAAW,wBAAyB,SCApCA,GAAW,4BAA6B,SCDxC,IAAI9P,QAA8Bl6R,EAKlC,IACEk6R,GAAU5rR,MAGX,CAFC,MAAOnD,IAER,CAUK,SAAUw6K,GAAUqpE,GACxB,GAAKp4E,MAAkC,qBAAZsjH,GAEpB,CACL,IAAMvqR,EAAKq/O,EAEX,OAAOr/O,GAAMA,EAAGu1H,eAAiBv1H,EAAGu1H,cAAclV,YAAcrgH,EAAGu1H,cAAclV,YAAckqK,EAChG,CACF,CClBD,IAGIC,GAAW,EAmCf,2BAoDC,CAAD,OAnDgBC,EAAAA,SAAd,SAA0Bj6R,EAAamrB,GACrC,IAAM+uQ,EAAiBC,KAMvB,YAJ4Bt6R,IAAxBq6R,EAAel6R,KACjBk6R,EAAel6R,GAA+B,oBAAjBmrB,EAA+BA,IAA8BA,GAGrF+uQ,EAAel6R,EACvB,EAEai6R,EAAAA,SAAd,SAA0Bj6R,EAAa7B,GACrC,IAAM+7R,EAAiBC,KACjBrzD,EAAYozD,EAAc,cAC5BE,EAAWF,EAAel6R,GAE9B,GAAI7B,IAAUi8R,EAAU,CACtBF,EAAel6R,GAAO7B,EAEtB,IAAIk8R,EAAoB,CACtBD,SAAQ,EACRj8R,MAAK,EACL6B,IAAG,GAGL,IAAK,IAAIoH,KAAM0/N,EACTA,EAAU91N,eAAe5J,IAC3B0/N,EAAU1/N,GAAIizR,EAGnB,CAED,OAAOl8R,CACR,EAEa87R,EAAAA,kBAAd,SAAgClmR,GAG9B,IAAI3M,EAAK2M,EAAGumR,OACNxzD,EAAYyzD,KAEbnzR,IACHA,EAAK2M,EAAGumR,OAAS9nR,OAAOwnR,OAG1BlzD,EAAU1/N,GAAM2M,CACjB,EAEakmR,EAAAA,qBAAd,SAAmClmR,UACfwmR,KACDxmR,EAAGumR,OACrB,EACH,CAAC,CApDD,GAuDA,SAASH,WAGDK,EAFMh1G,MAEqC,CAAC,EAQlD,OANKg1G,EAAS,qBACZA,EAAS,qBAA2BpyL,EAAAA,CAAAA,GAClC,cAA4B,CAAC,EADK,IAK/BoyL,EAAS,kBACjB,CAED,SAASD,KAEP,OADuBJ,KACF,aACtB,CCnGD,IACMM,GAAoB,CAAEprL,SAAU,CAAC,EAAGqrL,eAAgB,CAAC,EAAGC,qBAAqB,GAE/EC,GAAeX,GAAAA,SAHa,iBAGqD,CACnF5qL,SAAU,CAAC,EACXqrL,eAAgB,CAAC,EACjBC,qBAAqB,IAGnBlgO,GAA0B,GAE9B,2BA4EC,CAAD,OAzEgBogO,EAAAA,MAAd,WACED,GAAavrL,SAAW,CAAC,EACzBurL,GAAaF,eAAiB,CAAC,CAChC,EAKaG,EAAAA,cAAd,SAA4BxrL,GAC1BurL,GAAavrL,SAAQj8C,GAAAA,GAAAA,CAAAA,EAAQwnO,GAAavrL,UAAaA,GACvDwrL,EAAeC,cAChB,EAKaD,EAAAA,oBAAd,SAAkCE,EAAmB1rL,GACnDurL,GAAaF,eAAeK,GAAU3nO,GAAAA,GAAAA,CAAAA,EAAQwnO,GAAaF,eAAeK,IAAe1rL,GACzFwrL,EAAeC,cAChB,EAEaD,EAAAA,YAAd,SACE9vN,EACAgwN,EACAC,QAAA,IAAAA,IAAAA,EAAAA,IAOA,IAJA,IAAM3rL,EAAsB,CAAC,EACvB4rL,EAAuBF,GAAaC,EAAcN,eAAeK,IAAe,CAAC,EACjFG,EAAwBH,GAAaH,GAAaF,eAAeK,IAAe,CAAC,EAElE,MAAAhwN,EAAA6pD,EAAAA,EAAAA,OAAAA,IAAY,CAA5B,IAAIh6G,EAAQ,KACfy0F,EAASz0F,GACPqgR,EAAoBrgR,IACpBogR,EAAc3rL,SAASz0F,IACvBsgR,EAAqBtgR,IACrBggR,GAAavrL,SAASz0F,EACzB,CAED,OAAOy0F,CACR,EAOawrL,EAAAA,oBAAd,SAAkC/0R,EAAkBq1R,GAClDN,EAAeO,kBAAmB,EAClC,IACEt1R,GAGD,CAFC,UAED,CACD+0R,EAAeO,kBAAmB,EAC7BD,GACHN,EAAeC,cAElB,EAEaD,EAAAA,QAAd,SAAsB3qK,GACpBz1D,GAAQp3D,KAAK6sH,EACd,EAEa2qK,EAAAA,UAAd,SAAwB3qK,GACtBz1D,GAAUA,GAAQtoD,QAAO,SAAC4B,GAAmB,OAAAA,IAAOm8G,CAAQ,GAC7D,EAEc2qK,EAAAA,aAAf,WACOA,EAAeO,kBAClB3gO,GAAQ16D,SAAQ,SAACgU,GAAmB,OAAAA,GAAI,GAE3C,EACH,CAAC,CA5ED,sNC2EMi2R,GAA+B,qBAAX77R,OAAyBytD,oBAAAA,EAASztD,OAGtD87R,GAAsBD,IAASA,GAAME,aAAeF,GAAME,YAAYr6F,MAEtEs6F,GAqBN,WACE,IAAItwR,EAAqBmwR,GAAMI,gBAAkB,CAC/ClX,WAAOrzR,EACPwqS,sBAAkBxqS,EAClByqS,iBAAkB,IAGfzwR,EAAM0wR,WACT1wR,EAAQ,GAAH,MACAA,GAAK,CACR2wR,KAAM,CACJnvQ,MAAO,EACPjc,SAAU,GAEZmrR,SAAU,CACRE,WAAY,EACZ73O,KAAM,EACN5oD,OAAQ,OAIT6P,EAAM6wR,2BACT7wR,EAAQ,GAAH,MACAA,GAAK,CACR6wR,yBAA0B,MAI9B,OADAV,GAAMI,eAAiBvwR,EAChBA,CACR,CAlDgC8wR,GA0HjC,SAASC,GAAoBC,EAA4BC,GACnDX,GAAYY,WACdZ,GAAYY,WAAWC,GAAqBH,GAAaI,YAAaJ,GA6J1E,SAAwBK,GACtB,GAAwB,qBAAbv+R,SACT,OAEF,IAAMk8E,EAAwBl8E,SAASm8E,qBAAqB,QAAQ,GAC9D+1M,EAAiClyR,SAASa,cAAc,SACxD,EAA4Bw9R,GAAqBE,GAA/CD,EAAW,cAAEE,EAAQ,WAE7BtM,EAAalxR,aAAa,0BAA2B,QACjDs8R,IACFpL,EAAalxR,aAAa,QAASs8R,IAErCpL,EAAajjR,YAAYjP,SAASs+B,eAAeggQ,IACjDd,GAAYK,KAAKnvQ,QACjBwtD,EAAKjtE,YAAYijR,GAEjB,IAAMyI,EAAmD36R,SAASy/C,YAAY,cAC9Ek7O,EAAGvwH,UAAU,eAAe,GAAwB,GACpDuwH,EAAG/7R,KAAO,CACR6/R,SAAUvM,GAEZlyR,SAAS8J,cAAc6wR,GAEvB,IAAMjsF,EAAuB,CAC3BwjF,aAAcA,EACdwM,cAAeH,GAGbC,EACFhB,GAAYO,yBAAyBrnS,KAAKg4M,GAE1C8uF,GAAYG,iBAAiBjnS,KAAKg4M,EAErC,CA5LGiwF,CAAeT,EAElB,CAOK,SAAUU,GAAUrY,GACxBiX,GAAYjX,MAAQA,EAkCtB,WACE,GAAIiX,GAAYjX,MAAO,CAErB,IADA,IAAMsY,EAAkC,GACd,MAAArB,GAAYO,yBAAZ91K,EAAAA,EAAAA,OAAAA,IAAsC,CAA3D,IAAMk2K,EAAW,KACpBU,EAAenoS,KAAKynS,EAAYO,cACjC,CACGG,EAAe30S,OAAS,KA7B1B,SAAsB00B,QAAA,IAAAA,IAAAA,EAAAA,GACX,IAAXA,GAA+C,IAAXA,IACtCkgR,GAAoBtB,GAAYG,kBAChCH,GAAYG,iBAAmB,IAElB,IAAX/+Q,GAA+C,IAAXA,IACtCkgR,GAAoBtB,GAAYO,0BAChCP,GAAYO,yBAA2B,GAE1C,CAqBKgB,CAAY,GACZd,GAAqB,GAAqBt0S,OAAO+O,MAAM,GAAImmS,IAE9D,CACF,CA1CCG,EACD,CAkBD,SAASF,GAAoBG,GAC3BA,EAAQ7rS,SAAQ,SAAC+qS,GACf,IAAMjM,EAAiCiM,GAAgBA,EAAYjM,aAC/DA,GAAgBA,EAAaz5H,eAC/By5H,EAAaz5H,cAAc/oJ,YAAYwiR,EAE1C,GACF,CAkCD,SAASmM,GAAqBa,GACpB,IAAA3Y,EAAuBiX,GAAW,MACtCgB,GAAoB,EAiCxB,MAAO,CACLF,aA/B6CY,GAAmB,IAAIr2R,KACpE,SAACiW,GACC,IAAMqgR,EAAgCrgR,EAAaynQ,MACnD,GAAI4Y,EAAW,CACbX,GAAW,EAEX,IAAMY,EAAkC7Y,EAAQA,EAAM4Y,QAAajsS,EAC7DsrB,EAAuBM,EAAaN,cAAgB,UAe1D,OAVE+nQ,IACC6Y,GACD57R,WACE27R,KAAa5Y,IACE,qBAAVt7N,OACPA,OAEAznD,QAAQC,KAAK,0CAAmC07R,EAAS,wBAAAx1S,OAAuB60B,EAAY,OAGvF4gR,GAAe5gR,CACvB,CAEC,OAAOM,EAAaugR,SAEvB,IAI0BhgS,KAAK,IAChCm/R,SAAUA,EAEb,CC3VM,ICJUc,GDIJC,GAA2B,CACtCC,YAAa,UACbC,UAAW,UACXC,aAAc,UACdC,aAAc,UACdC,eAAgB,UAChBC,cAAe,UACfC,WAAY,UACZC,aAAc,UACdC,gBAAiB,UACjBC,MAAO,UACPC,mBAAoB,iBACpBC,YAAa,UACbC,eAAgB,UAChBC,kBAAmB,UACnBxD,iBAAkB,UAClByD,oBAAqB,UACrBC,gBAAiB,UACjBC,mBAAoB,UACpBC,kBAAmB,UACnBC,qBAAsB,UACtBC,aAAc,UACdC,eAAgB,UAChBC,kBAAmB,UACnBC,OAAQ,UACRlE,MAAO,UACPmE,mBAAoB,uBACpBC,WAAY,UACZC,OAAQ,UACRC,YAAa,UACbC,OAAQ,UACRC,YAAa,UACbC,cAAe,UACfC,QAAS,UACTC,IAAK,UACLC,YAAa,UACbC,QAAS,UACTC,aAAc,UACdC,WAAY,UACZC,OAAQ,UACRC,YAAa,UACbC,SAAU,UACVC,QAAS,UACTC,KAAM,UACNC,UAAW,UACXC,SAAU,UACVC,KAAM,UACNC,UAAW,UACXC,UAAW,UACXC,MAAO,UACPC,WAAY,YCtDd,SAAiBjD,GACFA,EAAAA,OAAS,sBACTA,EAAAA,OAAS,6EACTA,EAAAA,OAAS,6EACTA,EAAAA,QAAU,8EACVA,EAAAA,QAAU,6EALzB,EAAiBA,KAAAA,GAAM,KCGhB,IAAMkD,GAA2B,CACtCC,WAAYnD,GAAOoD,OACnBC,WAAYrD,GAAOsD,OACnBC,YAAavD,GAAOwD,QACpBC,YAAazD,GAAO0D,QAEpBC,eAAgB,MAChBC,eAAgB,MAChBC,eAAgB,OCFZ,SAAUC,GAASz0K,GACvB,IAAM2iK,EAAaJ,GAAWj4L,cAExBu4L,EAAOgF,G7BmBN,CACLjC,IAAKoD,M6BpB8ChpK,GAIrD,IAFkB2iK,EAAWuF,iBAAiBrF,GAE9C,CAIA,IAAMv6R,EAAOq6R,EAAWwF,eACxBxF,EAAWM,WAAW,cAAcJ,EAAI,KAAK,GAC7CF,EAAW6F,eAAelgS,EAAMu6R,EAAM,GAAI,CAAC,YAAaA,GAJvD,CAKF,CClBD,ICAI6R,GDIEC,GAAoB,gBAAgBtI,GAAmBc,aAAY,IAGnEyH,GAAoB,CACxB97O,GAAIwzO,GAAsBM,OAC1B5oJ,GAAIsoJ,GAAsBO,SAC1BgI,GAAIvI,GAAsBQ,aAC1B54R,GAAIo4R,GAAsBS,MAC1B+H,GAAIxI,GAAsBQ,aAC1Bh6L,GAAIw5L,GAAsBU,OAC1Br5N,GAAI24N,GAAsByI,MAC1BlnK,GAAIy+J,GAAsBQ,aAC1BkI,GAAI1I,GAAsBQ,aAC1BpnK,GAAI4mK,GAAsB2I,SAC1Bn9I,GAAIw0I,GAAsBQ,aAC1BoI,GAAI5I,GAAsB6I,OAC1BC,GAAI9I,GAAsBQ,aAC1BuI,GAAI/I,GAAsBQ,aAC1BrwI,GAAI6vI,GAAsBQ,aAC1BwI,GAAIhJ,GAAsBO,SAC1Br0I,GAAI8zI,GAAsBQ,aAC1B,UAAWR,GAAsBQ,aACjChiJ,GAAIwhJ,GAAsBiJ,KAC1BC,GAAIlJ,GAAsBQ,aAC1Br0I,GAAI6zI,GAAsBO,SAC1Bz9I,GAAIk9I,GAAsBY,WAC1B,UAAWZ,GAAsBmJ,kBACjC,UAAWnJ,GAAsBoJ,mBACjCC,GAAIrJ,GAAsBc,SAC1BznK,GAAI2mK,GAAsBe,UAsB5B,SAASuI,GAAYh7R,EAAci7R,EAAqB/iI,GACtD,MAAO,CACLA,WAAYA,EACZgjI,oBAAqB,YACrBC,oBAAqB,cACrB9iI,SAAUr4J,EACVwxH,WAAYypK,EAEf,CC7DD,IAAMG,GAAc,WCEpB,IAGaC,GF0DP,SAA2BC,GAC/B,IACMC,EAvBR,SAAiCz9L,GAC/B,IAAK,IAAM1S,KAAQ4uM,GACjB,GAAIA,GAAkBl/R,eAAeswF,IAAS0S,GAAuC,IAA3B1S,EAAKxiG,QAAQk1G,GAErE,OAAQk8L,GAA0B5uM,GAItC,OAAO2uM,EACR,CAauByB,CAAwBF,GA7BpCpjI,0FAgDV,MAhBmB,CACjBujI,KAAMT,GAAYrJ,GAAUrvC,KAAMsvC,GAAY8J,QAASH,GACvDI,OAAQX,GAAYrJ,GAAUgK,OAAQ/J,GAAY8J,QAASH,GAC3DK,MAAOZ,GAAYrJ,GAAUiK,MAAOhK,GAAY8J,QAASH,GACzDM,UAAWb,GAAYrJ,GAAUkK,UAAWjK,GAAY8J,QAASH,GACjEO,OAAQd,GAAYrJ,GAAUmK,OAAQlK,GAAY8J,QAASH,GAC3DQ,WAAYf,GAAYrJ,GAAUoK,WAAYnK,GAAY8J,QAASH,GACnES,MAAOhB,GAAYrJ,GAAUqK,MAAOpK,GAAY8J,QAASH,GACzDU,OAAQjB,GAAYrJ,GAAUsK,OAAQrK,GAAYsK,SAAUX,GAC5DY,WAAYnB,GAAYrJ,GAAUwK,WAAYvK,GAAYsK,SAAUX,GACpEa,QAASpB,GAAYrJ,GAAUyK,QAASxK,GAAYsK,SAAUX,GAC9Dc,YAAarB,GAAYrJ,GAAU0K,YAAazK,GAAYsK,SAAUX,GACtEe,WAAYtB,GAAYrJ,GAAU2K,WAAY1K,GAAYsK,SAAUX,GACpEgB,KAAMvB,GAAYrJ,GAAU4K,KAAM3K,GAAYsK,SAAUX,GAI3D,CE/E6CiB,CDCxC,SACJC,GAEA,QAFA,IAAAA,IAAAA,EAAAA,uBAEkB9yS,IAAdmwS,GAAyB,CAC3B,IAAIjwI,EERF,SAAsB8uF,GAC1B,GAAKp4E,MAAmC,qBAAb9pK,SAEpB,CACL,IAAM6C,EAAKq/O,EAEX,OAAOr/O,GAAMA,EAAGu1H,cAAgBv1H,EAAGu1H,cAAgBp4H,QACpD,CACF,CFAay3R,GACJwO,EACgB,iBAApBD,EGbA,SAAkB3yS,GACtB,IAAIwQ,EAAS,KACb,IACE,IAAMo6K,EAAMpF,KACZh1K,EAASo6K,EAAMA,EAAIzyH,aAAaR,QAAQ33D,GAAO,IAGhD,CAFC,MAAOgL,IAER,CACD,OAAOwF,CACR,CHKS2nD,CAAqBm5O,IACD,mBAApBqB,EIfJ,SAAkB3yS,GACtB,IAAIwQ,EAAS,KACb,IACE,IAAMo6K,EAAMpF,KACZh1K,EAASo6K,EAAMA,EAAIp8E,eAAe72C,QAAQ33D,GAAO,IAGlD,CAFC,MAAOgL,IAER,CACD,OAAOwF,CACR,CJOSg+F,CAAuB8iM,SACvBzxS,EAEF+yS,IACF5C,GAAY4C,QAGI/yS,IAAdmwS,IAA2BjwI,IAC7BiwI,GAAYjwI,EAAIh7G,gBAAgB7pC,aAAa,cAG7Brb,IAAdmwS,KACFA,GAAY,KAEf,CAED,OAAOA,EACR,CC3B8D6C,IAE/D,SAASC,GAAkB1kI,EAAoBzwK,EAAa+pI,EAA0BqrK,GAKpFhD,GAAS,CACP3hI,WALFA,EAAa,IAAIA,EAAU,IAMzB5+I,UAJqC3vB,IAAlBkzS,EAA8B,UAAUA,EAAa,MAAQ,IAI5D,QAAQp1S,EAAvBq1S,iCAAgEr1S,EAAG,yBACxE+pI,WAAU,EACV4mC,UAAW,SACX2kI,YAAa,QAEhB,CAED,SAASC,GACPxhM,EACA08D,EACA+kI,EACAC,EACAL,QADA,IAAAK,IAAAA,EAAAA,WAGA,IAAMC,EAAa3hM,EAAO,IAAIyhM,EAAS,IAAIC,EAE3CN,GAAkB1kI,EAAYilI,EAAU,SAAUvL,GAAYl1C,MAAOmgD,GAAiBA,EAAgB,UACtGD,GACE1kI,EACAilI,EAAU,aACVvL,GAAYwL,UACZP,GAAiBA,EAAgB,cAEnCD,GAAkB1kI,EAAYilI,EAAU,WAAYvL,GAAY8J,QAASmB,GACzED,GACE1kI,EACAilI,EAAU,YACVvL,GAAYsK,SACZW,GAAiBA,EAAgB,aAEnCD,GAAkB1kI,EAAYilI,EAAU,QAASvL,GAAYyL,KAAMR,GAAiBA,EAAgB,QACrG,CI/CK,SAAUlrS,GAAcO,OAAoB,oCAAAmD,EAAAA,EAAAA,GAAAA,UAAAA,GAChD,IAAkB,UAAAA,EAAA68F,EAAAA,EAAAA,OAAAA,IAAM,CAAnB,IAAMv1F,EAAG,KACZ2gS,GAAOprS,GAAU,CAAC,EAAGyK,EACtB,CAED,OAAOzK,CACR,CASD,SAASorS,GAAyBprS,EAAW5E,EAAWiwS,GAGtD,IAAK,IAAI9uF,UAH6C,IAAA8uF,IAAAA,EAAAA,IACtDA,EAAmBpwS,KAAKG,GAEPA,EACf,GAAIA,EAAOwN,eAAe2zM,IACX,cAATA,GAAiC,gBAATA,GAAmC,cAATA,EAAsB,CAC1E,IAAMxmN,EAAqCqF,EAAOmhN,GAClD,GAAqB,kBAAVxmN,GAAgC,OAAVA,GAAmBiH,MAAMkD,QAAQnK,GAMhEiK,EAAOu8M,GAAQxmN,MANyD,CACxE,IAAMu1S,EAAsBD,EAAmB30S,QAAQX,IAAU,EACjEiK,EAAOu8M,GAAS+uF,EACZv1S,EACAq1S,GAAOprS,EAAOu8M,IAAS,CAAC,EAAGxmN,EAAOs1S,EACvC,CAGF,CAML,OAFAA,EAAmB/jS,MAEZtH,CACR,CCpCK,SAAUurS,GACdz0R,EACAlU,EACA8nD,EACA8gP,EACAC,GAiCA,YAjCA,IAAAA,IAAAA,GAAAA,GAmNF,SAA6B/gP,EAAoB+gP,GAE/C,IAAIxyN,EAAM,IACU,IAAhBwyN,IACFxyN,EAAM,sBAUR,OANAvuB,EAAEghP,cAAgBhhP,EAAEihP,SAAW1yN,EAC/BvuB,EAAEkhP,2BAA6B3yN,EAC/BvuB,EAAEmhP,kBAAoB5yN,EACtBvuB,EAAEohP,YAAcphP,EAAEqhP,YAAc9yN,EAChCvuB,EAAEshP,aAAe/yN,EAEVvuB,CACR,CAjMQuhP,CADoBC,GAAmCp1R,EAAGlU,EA9B7C,IAClBupS,oBAAqB,cAErBC,UAAYZ,EAAyB,UAAZ,UAEzBO,YAAcP,EAAyB,UAAZ,UAC3Ba,YAAcb,EAAyB,UAAZ,UAC3Bc,mBAAqBd,EAAyB,UAAZ,UAElCe,SAAWf,EAAyB,UAAZ,UACxBgB,UAAYhB,EAAyB,UAAZ,UACzBiB,aAAejB,EAAyB,UAAZ,UAC5BkB,YAAclB,EAAyB,UAAZ,UAC3BmB,kBAAoBnB,EAAyB,UAAZ,UACjCoB,YAAcpB,EAAyB,UAAZ,UAE3BqB,eAAiBrB,EAAyB,UAAZ,UAC9BsB,gBAAkBtB,EAAyB,UAAZ,UAC/BuB,mBAAqBvB,EAAyB,UAAZ,UAClCwB,kBAAoBxB,EAAyB,UAAZ,UACjCyB,wBAA0BzB,EAAyB,UAAZ,UACvC0B,kBAAoB1B,EAAyB,UAAZ,UAGjCK,iBAAmBL,EAAyB,UAAZ,UAChCQ,YAAcR,EAAyB,UAAZ,WAExB9gP,GAG+E8gP,GACrCC,EAChD,CAKK,SAAUS,GACdp1R,EACAlU,EACA8nD,EACA8gP,EACAC,QAAA,IAAAA,IAAAA,GAAAA,GAEA,IAAIrjS,EAAmC,CAAC,EAGlC,EAoBF0O,GAAK,CAAC,EAnBRqqR,EAAK,QACLqD,EAAK,QACLN,EAAY,eACZF,EAAS,YACTD,EAAW,cACXE,EAAY,eACZK,EAAY,eACZY,EAAY,eACZC,EAAc,iBACdT,EAAW,cACXM,EAAiB,oBACjBC,EAAoB,uBACpBN,EAAc,iBACdvD,EAAgB,mBAChByD,EAAmB,sBACnBC,EAAe,kBACfC,EAAkB,qBAClBK,EAAiB,oBACjBC,EAAM,SA4IR,OAzIIlE,IACF/4R,EAAO+kS,eAAiBhM,EACxB/4R,EAAOglS,oBAAsBjM,EAC7B/4R,EAAOilS,iBAAmBlM,EAC1B/4R,EAAOklS,iBAAmBnM,EAC1B/4R,EAAOmlS,kBAAoBpM,EAC3B/4R,EAAOolS,yBAA2BrM,EAClC/4R,EAAOqlS,yBAA2BtM,EAClC/4R,EAAOslS,gBAAkBvM,EACzB/4R,EAAOulS,uBAAyBxM,EAChC/4R,EAAOwlS,eAAiBzM,EACxB/4R,EAAOylS,eAAiB1M,EACxB/4R,EAAO0lS,uBAAyB3M,GAE9BqD,IACFp8R,EAAO2lS,gBAAkBvJ,EACzBp8R,EAAO4lS,yBAA2BxJ,GAEhCN,IACF97R,EAAOu4E,KAAOujN,EACd97R,EAAO6lS,wBAA0B/J,EACjC97R,EAAO8lS,uBAAyBhK,EAChC97R,EAAO+lS,UAAYjK,EACnB97R,EAAOgmS,oBAAsBlK,EAC7B97R,EAAOimS,SAAWnK,EAClB97R,EAAOkmS,WAAapK,EACpB97R,EAAOmmS,uBAAyBrK,GAE9BF,IACF57R,EAAOomS,+BAAiCxK,EACxC57R,EAAOqmS,8BAAgCzK,EACvC57R,EAAOsmS,iBAAmB1K,GAExBD,IACF37R,EAAOumS,YAAc5K,GAEnBE,IACF77R,EAAOwmS,+BAAiC3K,GAEtCK,IACFl8R,EAAOymS,kCAAoCvK,GAEzCY,IACF98R,EAAO0mS,sBAAwB5J,EAC/B98R,EAAO2mS,iBAAmB7J,EAC1B98R,EAAO4mS,YAAc9J,EACrB98R,EAAO6mS,cAAgB/J,EACvB98R,EAAO8mS,+BAAiChK,EACxC98R,EAAO+mS,wBAA0BjK,EACjC98R,EAAOgnS,0BAA4BlK,EACnC98R,EAAOinS,4BAA8BnK,EACrC98R,EAAOknS,0BAA4BpK,EAEnC98R,EAAOwjS,0BAA4B1G,GAEjCC,IACF/8R,EAAOmnS,sBAAwBpK,EAC/B/8R,EAAOonS,wBAA0BrK,EACjC/8R,EAAOqnS,yBAA2BtK,EAClC/8R,EAAOsnS,qBAAuBvK,EAC9B/8R,EAAOunS,gCAAkCxK,EACzC/8R,EAAOwnS,mBAAqBzK,EAC5B/8R,EAAOynS,0BAA4B1K,EACnC/8R,EAAO0nS,4BAA8B3K,EACrC/8R,EAAO2nS,0BAA4B5K,GAEjCH,IACF58R,EAAO4nS,0BAA4BhL,EACnC58R,EAAO6nS,gBAAkBjL,GAEvBC,IACF78R,EAAO8nS,iCAAmCjL,GAExCH,IACF18R,EAAO+nS,iBAAmBrL,EAC1B18R,EAAOgoS,sBAAwB,OAAD1lP,QAAC,IAADA,OAAC,EAADA,EAAG0lP,uBAAwBtL,EACzD18R,EAAOioS,mBAAqBvL,EAC5B18R,EAAOkoS,kBAAoBxL,EAC3B18R,EAAOmoS,aAAezL,GAEpBH,IACFv8R,EAAOooS,SAAW7L,EAClBv8R,EAAOqoS,WAAa9L,EACpBv8R,EAAOsoS,WAAa/L,EACpBv8R,EAAOuoS,mBAAqBhM,EAC5Bv8R,EAAOwoS,UAAYjM,EACnBv8R,EAAOujS,SAAWhH,EAClBv8R,EAAOyoS,aAAelM,GAEpBS,IACFh9R,EAAO0oS,uBAAyB1L,EAChCh9R,EAAO2oS,uBAAyB3L,GAE9BV,IACFt8R,EAAO4oS,kBAAoBtM,EAC3Bt8R,EAAO6oS,kBAAoBvM,EAC3Bt8R,EAAO8oS,kBAAoBxM,EAC3Bt8R,EAAO+oS,kBAAoBzM,EAC3Bt8R,EAAOgpS,iBAAmB1M,EAC1Bt8R,EAAOipS,oBAAsB3M,GAE3BtD,IACFh5R,EAAOkpS,YAAclQ,EACrBh5R,EAAOmpS,YAAcnQ,EACrBh5R,EAAOopS,YAAcpQ,EACrBh5R,EAAOqpS,iBAAmBrQ,EAC1Bh5R,EAAOspS,qBAAuBtQ,GAE5ByD,IACFz8R,EAAOupS,aAAe9M,GAEpBE,IACF38R,EAAOwpS,oBAAsB7M,EAC7B38R,EAAOypS,eAAiB9M,EACxB38R,EAAO0pS,wBAA0B/M,EACjC38R,EAAO2pS,YAAchN,GAEnBM,IACFj9R,EAAOmmS,uBAAyBlJ,IAI7B,OAADziS,QAAC,IAADA,OAAC,EAADA,EAAGokS,cACL5+R,EAAO4pS,WAAapvS,EAAEokS,aAEnBwE,IAAe,OAAD5oS,QAAC,IAADA,OAAC,EAADA,EAAGskS,YACpB9+R,EAAO6pS,kBAAoBrvS,EAAEskS,WACpB9+R,EAAOgoS,uBAChBhoS,EAAO6pS,kBAAoB,WAAa7pS,EAAOgoS,sBAGjDhoS,EAAS,SACJA,GAEAsiD,EAIN,ELtKK,SAAmC4+C,GACvC,GAAIA,EAAS,CACX,IAAM4oM,EAAa5oM,EAAO,SAG1BwhM,GAAqBoH,EAAS3S,GAAmBkJ,KAAM,oBAAqB,gBAC5EqC,GAAqBoH,EAAS3S,GAAmBO,OAAQ,kBACzDgL,GAAqBoH,EAAS3S,GAAmBQ,SAAU,oBAC3D+K,GAAqBoH,EAAS3S,GAAmBS,aAAc,wBAC/D8K,GAAqBoH,EAAS3S,GAAmBU,MAAO,iBACxD6K,GAAqBoH,EAAS3S,GAAmBW,OAAQ,kBACzD4K,GAAqBoH,EAAS3S,GAAmBa,WAAY,sBAC7D0K,GAAqBoH,EAAS3S,GAAmBc,aAAc,uBAAwB,UAAW,YAClGyK,GAAqBoH,EAAS1S,GAAsBW,QAAS,UAAW,WACxE2K,GAAqBoH,EAAS3S,GAAmBe,SAAU,oBAC3DwK,GAAqBoH,EAAS3S,GAAmBgB,SAAU,oBAI3DmK,GAAkB,oBAAwBwH,EAAO,4CAA6CxS,GAAYl1C,OAI1GkgD,GAAkB,oBAAwBwH,EAAO,uCAAwCxS,GAAYsK,SACtG,CACF,CAeDmI,CAVA,mBAEQxc,EAA8D,QAAnB,EAAAv4G,YAAmBp9E,IAAAA,OAAA,EAAAA,EAAE41L,aAEtE,OAAgC,QAAzB,EAAY,OAAZD,QAAY,IAAZA,OAAY,EAAZA,EAAcyc,mBAAWhyM,IAAAA,EAAAA,EA/EX,0DAgFtB,CAKwBiyM,IM5FlB,IAAMC,GAA2B,CACtCC,GAAI,MACJC,GAAI,MACJnoP,EAAG,OACHooP,GAAI,OACJC,GAAI,QCMA,SAAUC,GAAY7nB,EAA0B2gB,QAA1B,IAAA3gB,IAAAA,EAAAA,CAAAA,QAA0B,IAAA2gB,IAAAA,GAAAA,GACpD,IAAMD,IAAe1gB,EAAM0gB,WAY3B,OCnBI,SAAsB1gB,EAAc8nB,kBAAA,IAAAA,IAAAA,EAAAA,CAAAA,GACxC,IAAMC,EAAcpzS,GAA4B,CAAC,EAAGqrR,EAAO8nB,EAAc,CACvEE,eAAgB5G,GACd0G,EAAa1R,QACb0R,EAAal3J,QACbk3J,EAAaE,oBACer7S,IAA5Bm7S,EAAapH,WAA2B1gB,EAAM0gB,WAAaoH,EAAapH,cAQ5E,IAJwB,QAApB,EAAAoH,EAAa1R,eAAOlhM,IAAAA,OAAA,EAAAA,EAAEkkM,iBAAqC,QAApB,EAAA0O,EAAa1R,eAAO9gM,IAAAA,OAAA,EAAAA,EAAEilM,UAC/DwN,EAAY3R,QAAQmE,OAASuN,EAAa1R,QAAQgD,cAGhD0O,EAAaG,iBACf,IAAwB,UAAA50S,OAAOsC,KAAKoyS,EAAY5/K,OAAxBzG,EAAAA,EAAAA,OAAAA,IAAyD,CAA5E,IAAM05C,EAAS,KAClB2sI,EAAY5/K,MAAMizC,GAAazmK,GAC7BozS,EAAY5/K,MAAMizC,GAClB0sI,EAAaG,iBACM,QAAnB,EAAY,OAAZH,QAAY,IAAZA,OAAY,EAAZA,EAAc3/K,aAAKgtC,IAAAA,OAAA,EAAAA,EAAGiG,GAEzB,CAGH,OAAO2sI,CACR,CDNQG,CAXkB,CACvB9R,QAAS4C,GACTpoJ,QAASqrJ,GACT9zK,MAAOk2K,GACP9rI,QAASi1I,GACT9G,WAAU,EACVyH,yBAAyB,EACzBH,eAAgBvH,GAAmBzH,GAAgBiD,QAAgBtvS,EAAW+zS,EAAYC,GAC1F3S,SAAKrhS,GAGuBqzR,EAC/B,CEnBD,IAAIooB,GAAiBP,GAAY,CAAC,GAC9BQ,GAA0D,GAEjDC,GAAmB,QAE1B,SAAUC,eAER7wH,EAAWpF,MAEI,QAAjB,EAAG,OAAHoF,QAAG,IAAHA,OAAG,EAAHA,EAAKozG,oBAAYx1L,IAAAA,OAAA,EAAAA,EAAEkzM,aAuDnB,SAAoBxoB,EAAsB2gB,cAAA,IAAAA,IAAAA,GAAAA,GAC9CyH,GAASP,GAAY7nB,EAAO2gB,GAG5B8H,GAAgB,eAAKL,GAAOhS,SAAYgS,GAAOJ,gBAAmBI,GAAOx3J,SAmB3E,SAAoBovI,GAGlB,IAFA,IAAMp1B,EAAmC,CAAC,EAEnB,MAAAv3P,OAAOsC,KAAKqqR,EAAM73J,OAAlBzG,EAAAA,EAAAA,OAAAA,IAGrB,IAHG,IAAMgnL,EAAQ,KACXtgL,EAAkB43J,EAAM73J,MAAMugL,GAEb,MAAAr1S,OAAOsC,KAAKyyH,GAAZ9yB,EAAAA,EAAAA,OAAAA,IAAmB,CAArC,IAAM4T,EAAQ,KACXuoG,EAAei3F,EAAWx/L,EAASluG,OAAO,GAAG3P,cAAgB69G,EAASzhH,MAAM,GAC9EwD,EAAQm9H,EAAKlf,GAEA,aAAbA,GAA4C,kBAAVj+G,IAEpCA,GAAgB,MAElB2/P,EAAMn5C,GAAQxmN,CACf,CAEH,OAAO2/P,CACR,CArCsF+9C,CAAWP,MAEhGzgB,GAAAA,gBAA4BzyL,EAAAA,CAAAA,GAAG,MAAoBkzM,GAAMlzM,IAEzDmzM,GAAwBx7S,SAAQ,SAAC6O,GAC/B,IACEA,EAAS0sS,GAGV,CAFC,MAAOtwS,IAER,CACF,GAGF,CAtEGugS,CAAU3gH,EAAIozG,aAAa0d,aACjB7gB,GAAAA,YAA2B,CAAC2gB,KAAmBtoB,SACpC,QAAjB,EAAG,OAAHtoG,QAAG,IAAHA,OAAG,EAAHA,EAAKozG,oBAAY31H,IAAAA,OAAA,EAAAA,EAAE6qH,SACrBooB,GAASP,GAAYnwH,EAAIozG,aAAa9K,QAIxC2H,GAAAA,gBAA4BzyL,EAAAA,CAAAA,GAAG,MAAoBkzM,GAAMlzM,IAE5D,CAEDqzM,KCpBAA,KCPO,ICGMpvD,GAA8CsvC,GACzDqM,IDJuB,SAACh2R,SAChBkhR,EAAyClhR,EAAK,MAAvCwJ,EAAkCxJ,EAAK,UAA5BmgB,EAAuBngB,EAAK,SAAlBogB,EAAapgB,EAAK,SAC9CkpS,EAAmBhoB,EAAK,eAG1B4oB,EAAkBhU,GAAYsK,SAC9B2J,EAAab,EAAetC,SAC5BoD,EAAqBd,EAAe3C,iBACpC0D,EAAyBf,EAAe1G,UAE9C,MAAO,CACLx+R,KAAM,CACJ,WACAk9Q,EAAM73J,MAAM22K,OACZ,CACEtqK,WAAYo0K,EACZ1kP,MAAO2kP,EACPjiC,UAAW,aACXoiC,UAAW,OACX3lN,OAAQ,EACR8vB,QAAS,QACTrqF,QAAS,QACTmgR,SAAU,aACVC,aAAc,cAEhBjqR,GAAY,CACVilC,MAAO4kP,EACPtZ,WAAS,KACPt6L,EAACwgM,IAAoBx1O,GAAAA,CACnBgE,MAAO,Y7BOV,CACLilP,kBAAmB,OACnBC,qBAAsB,S6BXT,IAOXlqR,GAAY,CACVswQ,UAAW,CACT,UAAW,CACT7wR,QAAS,OACTulD,MAAO6kP,EACPl7I,aAAc,MAIpBvlJ,GAGL,QCxCC3b,EACA,CACE4kD,MAAO,UCLLsgN,GAAgB+/B,KAEhByX,GAAiB,SAEVC,GAAoDp3L,EAAAA,YAC/D,SAACpzG,EAAOkjR,GAEJ,MAqBEljR,EAAK,GArBHi2R,OAAQ,IAAG,QAAK7/L,EACpBmvB,EAoBEvlH,EAAK,UAnBEyqS,EAmBPzqS,EAAK,QAlBPwJ,EAkBExJ,EAAK,UAjBPw2F,EAiBEx2F,EAAK,eAjBPwyH,OAAc,IAAG,GAAKh8B,EACtBr2E,EAgBEngB,EAAK,SAfP0qS,EAeE1qS,EAAK,YAdPuG,EAcEvG,EAAK,MAZP2qS,EAYE3qS,EAAK,aAXP4qS,EAWE5qS,EAAK,QATP6qS,EASE7qS,EAAK,YARPk+G,EAQEl+G,EAAK,SANP8qS,EAME9qS,EAAK,UALE+qS,EAKP/qS,EAAK,QAJPgrS,EAIEhrS,EAAK,OAHPunK,EAGEvnK,EAAK,KAFPiQ,EAEEjQ,EAAK,OADPkhR,EACElhR,EAAK,MAEH,ECDJ,SAKJirS,EACAC,EACAhtL,GAEM,MAAoB9K,EAAAA,SAAmC83L,GAAtD/+S,EAAK,KAAE8lI,EAAQ,KAChBk5K,EAAezgB,QAAsC78R,IAApBo9S,GACjCxxR,EAAe0xR,EAAeF,EAAkB9+S,EAIhDs9K,EAAWr2D,EAAAA,OAAa35F,GACxB2xR,EAAch4L,EAAAA,OAAa8K,GACjC9K,EAAAA,WAAgB,WACdq2D,EAAS7pJ,QAAUnG,EACnB2xR,EAAYxrR,QAAUs+F,CACvB,IAID,IAAMmtL,EAAyB3gB,IAAS,WAAM,gBAACtwM,EAAkDk7M,GAG/F,IAAMp8Q,EAA6B,oBAAXkhE,EAAyBA,EAAoBqvF,EAAS7pJ,SAAWw6D,EAErFgxN,EAAYxrR,SACdwrR,EAAYxrR,QAAQ01Q,EAAKp8Q,GAGtBiyR,GACHl5K,EAAS/4G,EAEZ,KAED,MAAO,CAACO,EAAc4xR,EACvB,CDtCiCC,CAC5Bb,EACAj4K,EACApf,EAAAA,aACE,SAACkiL,EAAmCiW,GAC1B,OAARrtL,QAAQ,IAARA,GAAAA,EAAWo3K,EAAIiW,GACN,OAATT,QAAS,IAATA,GAAAA,EAAYS,EACb,GACD,CAACrtL,EAAU4sL,KARRz4K,EAAO,KAAEm5K,EAAU,KAYpB7qS,EAAaoyP,GAAc9iP,EAAS,CACxCixQ,MAAOA,EACP13Q,UAAS,EACT2W,SAAQ,EACRkyG,QAAO,EACPq4K,YAAW,EACXe,cAAeT,IAAWJ,IAEtBc,EAAer5K,EAAUw4K,EAAcF,EACvCv1S,EAAKmlJ,GAAMgwJ,GAAgBvqS,EAAM5K,IACjCu2S,EAAav2S,EAAE,SACfw2S,EAAiBx2S,EAAE,aACnBy2S,EAAYx5K,EAAU24K,EAASJ,EAC/BkB,EAAoB7X,GAAwDj0R,EAAO+zR,GAAiB,CACxG,mBAQEgY,OAAmCl+S,EAClC03H,GAAcmmL,IACbnlS,IACFwlS,EAAeJ,GAEbE,IAAcE,IAChBA,EAAeH,IAInB,IAAMI,EAAe54L,EAAAA,OAAgC,MACrD6hL,GAAc+W,GACdC,GAAgBjsS,EAAOqyH,EAAS25K,GAgBhC,IASME,EAAY,CAChBloS,KAAM,CACJwF,UAAW7I,EAAWqD,KACtBmE,OAAQ2jS,EAAkB3jS,QAE5B5B,MAAO,CACLwD,SAAUxD,EACViD,UAAW7I,EAAW4F,MACtBozO,QAASvkP,EACTA,GAAIu2S,GAEN1oQ,UAAW,CACTz5B,UAAW7I,EAAWsiC,WAExB8+M,KAAM,SACD+pD,GAAiB,CACpB,gBAAiB3rR,EACjB,eAAgBkyG,EAChB,aAAc9M,GAAwBmmL,EACtC,kBAAmBK,EACnBviS,UAAW7I,EAAWohP,KACtB,qBAAqB,EACrB,mBAAmB,EACnB5hO,SAAUA,EACV/qB,GAAIA,EACJs8F,QAlCY,SAAC4jM,GACVn1Q,IACHqrR,GAAYn5K,EAASijK,GACjByV,GACFA,EAAczV,GAGnB,EA4BGnxR,IAAK6nS,EACLzkI,KAAMA,GAAc,SACpB94K,KAAM,WAER09S,MAAO,CACL3iS,UAAW7I,EAAWwrS,OAExBN,UAAW,CACT9hS,SAAU8hS,EACVriS,UAAW7I,EAAWm4B,KACtB6gN,QAASvkP,EACTA,GAAIw2S,IAIR,OACEx4L,EAAAA,cAAC6iL,EAAQ70O,GAAAA,CAACj9C,IAAK++Q,GAA+CgpB,EAAUloS,MACrEuC,GAAS6sG,EAAAA,cAACinI,GAAKj5L,GAAAA,CAAAA,EAAK8qP,EAAU3lS,QAC/B6sG,EAAAA,cAAAA,MAAAA,GAAAA,CAAAA,EAAS84L,EAAUjpQ,WACjBmwE,EAAAA,cAAAA,SAAAA,GAAAA,CAAAA,EAAY84L,EAAUnqD,MACpB3uI,EAAAA,cAAAA,OAAAA,GAAAA,CAAAA,EAAU84L,EAAUC,UAEnB95K,GAAW24K,GAAWJ,IAAYx3L,EAAAA,cAACinI,GAAKj5L,GAAAA,CAAAA,EAAK8qP,EAAUL,aAIjE,IAGHrB,GAAW3nM,YAAc0nM,aAEzB,IAAM0B,GAAkB,SACtBjsS,EACAurS,EACAa,GAEAh5L,EAAAA,oBACEpzG,EAAMqsS,cACN,WAAM,MAAC,CACDh6K,cACF,QAASk5K,CACV,EACDznL,MAAK,WACCsoL,EAAgBxsR,SAClBwsR,EAAgBxsR,QAAQkkG,OAE3B,EACD,GACF,CAACynL,EAAWa,GAEf,EEjLY15H,GAAgDi3G,GAC3D6gB,ICKuB,SAACxqS,qBAChBkhR,EAAmElhR,EAAK,MAAjEwJ,EAA4DxJ,EAAK,UAAtDmgB,EAAiDngB,EAAK,SAA5CqyH,EAAuCryH,EAAK,QAAnC0qS,EAA8B1qS,EAAK,YAAtByrS,EAAiBzrS,EAAK,aACxEkpS,EAA4BhoB,EAAK,eAAjBoW,EAAYpW,EAAK,QAGnCorB,EAA0BpD,EAAe3F,eACzCgJ,EAAwBrD,EAAe5E,uBACvCkI,EAA+BtD,EAAerE,8BAC9C4H,EAAkCnV,EAAQwD,YAC1C4R,EAAgCxD,EAAelB,oBAC/C2E,EAAkBzD,EAAerB,iBACjC+E,EAAyB1D,EAAenF,uBACxC8I,EAA0B3D,EAAelB,oBACzC8E,EAAiC5D,EAAelD,mBAChD+G,EAAkB7D,EAAerB,iBACjCmF,EAAyB9D,EAAenC,mBACxCkG,EAA0B/D,EAAelB,oBACzCkF,EAAoBhE,EAAevC,aAEzC,MAAO,CACL3iS,KAAM,CACJ,YACAquH,GAAW,cACVlyG,GAAY,aACbA,GAAY,cACZ+gQ,EAAM73J,MAAM22K,OACZ,CACEt0R,aAAc,OAEhBg/R,GAAe,CACbr2L,QAAS,OACTiI,WAAY,UAEd9yG,GAGFjD,MAAO,CACL,kBACA,CAAE8tG,QAAS,gBACXl0F,GAAY,CACVilC,MAAO8nP,EACPxc,WAAS,KACPt6L,EAACwgM,IAAuB,CACtBxxO,MAAO,YAFF,IAMXslP,IACGe,GAAgB,CACf9/R,YAAa,IAEjB8/R,GACEf,GAAe,CACb70K,MAAO,EACPzkH,WAAY,IAEhBs5R,GAAe,CAAEyC,UAAW,eAG9BlqQ,UAAW,CACT,2BACA,CACEoxE,QAAS,OACT9zG,SAAU,aAIdwhP,KAAM,CACJ,uBACA+0C,GAAc5V,EAAO,CAAEmW,OAAQ,IAC/B,CACE96H,SAAU,OACVurG,UAAW,aACX98P,MA7EmB,GA8EnBE,OA7EoB,GA8EpBwuJ,aAAc0zI,GACdpuK,WAAY,gBACZz7C,OAAQ,aAAawpN,EACrBjrN,WAAYwqN,EACZrsC,OAAQ,UACR5rJ,QAAS,OACTiI,WAAY,SACZtyF,QAAS,QACTsf,SAAU,YAEXnpB,GAAY,EACVkyG,GAAW,CACVq+J,UAAW,CACT,SAAU,CACR,CACEuG,YAAa+V,IAGjB,0BAA2B,CACzB,CACE1qD,gBAAiBmqD,EACjB/b,WAAS,KACPl6L,EAACogM,IAAuB,CACtBK,YAAa,aAFR,OASjB5kK,GAAW,CACT,CACEvwC,WAAYyqN,EACZtV,YAAa,cACbrvB,eAAgB,YAElB,CACE8oB,WAAS,GACP,SAAU,CACR,CACEpuC,gBAAiBkqD,EACjBvV,YAAa,cACbvG,WAAS,KACPxtK,EAAC0zK,IAAuB,CACtBt0C,gBAAiB,aAFZ,MAObjsF,EAACugI,IAAoBx1O,GAAAA,CACnBkhM,gBAAiB,alClGxB,CACL+nD,kBAAmB,OACnBC,qBAAsB,SkCmFL,MAoBfnqR,GAAY,CACV,CACE8/O,OAAQ,YAET5tI,GAAW,CACV,CACE4kK,YAAagW,IAGjB56K,GAAW,CACT,CACEiwH,gBAAiBoqD,EACjBzV,YAAa,cACbrvB,eAAgB,eAIrBznP,GAAY,CACXuwQ,UAAW,CACT,UAAW,CACTA,WAAS,KACPvpO,EAACyvO,IAAuB,CACtBK,YAAa,aAFR,OAUjBkV,MAAO,CACL,kBACA,CACE93L,QAAS,QACTrpG,MAxKmB,GAyKnBE,OAzKmB,GA0KnBwuJ,aAAc,MACd16B,WAAY,gBACZsjH,gBAAiBqqD,EAEjB1V,YAAa,cACb/xC,YAAamoD,EACbC,YAAa,QACbxlC,UAAW,eAEZ3nP,GACCkyG,GAAW,CACT,CACEiwH,gBAAiBsqD,EACjBlc,WAAS,KACP5zF,EAAC85F,IAAuB,CACtBt0C,gBAAiB,SACjB20C,YAAa,UAHR,KAQf92Q,GAAY,EACTkyG,GAAW,CACV,CACEiwH,gBAAiBuqD,IAGrBx6K,GAAW,CACT,CACEiwH,gBAAiBwqD,MAMzBh0Q,KAAM,CACJ,sBACA,CACE43P,UAAW,CAET,KAAM,CACJ1mQ,QAAS,IACTu6D,OAAQ,QACRgpN,WAAY,OACZ73K,WAAYogK,GAAY8J,WAI9Bz/Q,GAAY,CACVuwQ,UAAW,CACT,KAAM,CACJtrO,MAAO8nP,EACPxc,WAAS,KACPnjB,EAACqpB,IAAuB,CACtBxxO,MAAO,YAFF,OAUpB,QDzOCv3D,EACA,CACE4kD,MAAO,WEEE+6P,GAAb,8BAEI,WAAYxtS,GAA2B,IAAD,oBAClC,cAAMA,IAFVytS,sBACsC,EAElC,EAAKC,gBAAkB,EAAKA,gBAAgB1+S,KAArB,MACvB,EAAK6Y,MAAQ,CAAE4mM,QAAS,MAHU,CAIrC,CANL,2CAQI,WAA2B,IAAD,IAChBn/M,EAAUkB,KAAKisK,aACrBjsK,KAAKi9S,iBAAmB,IAAIznB,GAAiB12R,EAASkB,KAAMlB,EAAQugN,aACpEr/M,KAAKi9S,iBAAiBE,mBAEtB,IAAIvsC,EAAwD,IAAxB9xQ,EAAQugN,YAAR,UAA4BvgN,EAAQo/M,gBAApC,aAA4B,EAAkB+B,iBAA9C,UAAiEnhN,EAAQo/M,gBAAzE,aAAiE,EAAkB8B,mBACvHhgN,KAAK6tE,SAAS,CAACowI,QAAS2yD,GAC3B,GAfL,6BAiBI,SAAgBpoQ,EAAOq5H,GACnB7hI,KAAKi9S,iBAAiBG,qBAAqBv7K,EAAUmyJ,GAASqpB,MAAQrpB,GAASspB,QAC/Et9S,KAAK6tE,SAAS,CAACowI,QAASj+M,KAAKqX,MAAM4mM,SACtC,GApBL,oBAsBI,WAAU,IAAD,EAEDC,EADYl+M,KAAKisK,aACEiyC,SAEvB,OACI,gBAA6CllM,UAAW,0CAA2CoH,MAAO,CAACg+I,cAAe,IAA1H,UACI,iCACI,cAAGplJ,UAAS,YAAZ,qCACA,eAAIA,UAAS,YAAb,2BACA,eAAGA,UAAW,OAAQoH,MAAO,CAAClF,aAAc,IAA5C,0CAAwE,8BAASgjM,EAASq/F,uBAAyBr/F,EAASq/F,uBAAyB,cAAgB,gBAA7F,OAAkHr/F,EAASs/F,oBAA3H,WAAxE,mIACA,SAACt7H,GAAD,CAAQlpK,UAAS,OAAUwhS,OAAO,KAAKJ,QAAQ,MAAMv4K,SAAU,UAAA7hI,KAAKqX,MAAM4mM,eAAX,eAAoBg4E,oBAAqBjC,GAASqpB,MAAQ3vL,SAAU1tH,KAAKk9S,sBALtI,YAAch/F,EAASo2C,WASxC,KApCL,GAAqCv0C,ICVxB09F,GAAb,oHAEI,WACI,OACI,gBAA+BzkS,UAAW,oCAA1C,UACI,iCACI,cAAGA,UAAS,YAAZ,qCACA,6CACA,cAAGA,UAAS,IAAZ,qIACA,SAAC,GAAD,CAAOgkM,IAAK,EAAZ,UACA,gBAAKhkM,UAAU,yCAAyCkoF,QAAS,kBAAMv1F,OAAO9P,KAAK,8EAA+E,SAAjG,EAAjE,UACI,UAAC,GAAD,YACI,SAAC,GAAD,CAAKghF,GAAI,EAAG7jE,UAAU,yBAAtB,kCAAwE,SAAC,GAAD,CAAK6jE,GAAI,EAAG7jE,UAAU,gBAAtB,UAAsC,cAAGA,UAAU,+BARjI,oBAejB,KAnBL,GAAuC4pG,EAAAA,WCA1B86L,GAAb,oHAEI,WACI,OACI,gBAA8B1kS,UAAW,yCAAzC,UACI,iCACI,cAAGA,UAAS,YAAZ,4BACA,kDACA,UAAC,GAAD,CAAOgkM,IAAK,EAAG58L,MAAO,CAACg+I,cAAe,GAAtC,WACI,cAAGplJ,UAAU,cAAb,kCACJ,oBAAQA,UAAU,8CAA8CkoF,QAAS,kBAAMv1F,OAAOg0M,SAAS,iBAAtB,EAAzE,+BACqB,iBAAMv/L,MAAO,CAAC2rJ,SAAU,IAAxB,UAA6B,cAAG/yJ,UAAU,cAAcoH,MAAO,CAACQ,WAAY,GAAIzF,YAAa,YAElH,gBAAKnC,UAAU,8CAA8CkoF,QAAS,kBAAMv1F,OAAO9P,KAAK,qCAAsC,SAAxD,EAAtE,UAEI,kBAAMmd,UAAU,kBAAkBoH,MAAO,CAAC2rJ,SAAS,IAAnD,WACI,iBAAM3rJ,MAAO,CAAC2rJ,SAAU,IAAxB,kCACA,6BACI,cAAG7qE,QAAS,kBAAMv1F,OAAO9P,KAAK,sCAAuC,SAAzD,EAAoEmd,UAAU,0BAA0BoH,MAAO,CAACQ,WAAY,MACxI,cAAGsgF,QAAS,kBAAMv1F,OAAO9P,KAAK,qCAAsC,SAAxD,EAAmEmd,UAAU,yBAAyBoH,MAAO,CAACQ,WAAW,MACrI,cAAGsgF,QAAS,kBAAMv1F,OAAO9P,KAAK,yCAA0C,SAA5D,EAAuEmd,UAAU,yBAAyBoH,MAAO,CAACQ,WAAW,EAAGzF,YAAa,qBAhBnK,mBAyBjB,KA7BL,GAAsCynG,EAAAA,WCWzB+6L,GAAb,8BACE,WAAYnuS,GAAyB,IAAD,oBAClC,cAAMA,IACDouS,WAAa,EAAKA,WAAWp/S,KAAhB,MAClB,EAAK6Y,MAAQ,CAACq/P,eAAe,GAHK,CAInC,CALH,oCAOI,WAAc,IAAD,SACL53Q,EAAUkB,KAAKisK,aAErBttK,KAAM,CACFxD,IAAI,2CAAD,iBAA6C2D,EAAQo/M,gBAArD,aAA6C,EAAkBo2C,YAClEx4P,OAAQ,MACR9B,aAAc,SACfmG,MAAK,SAAA5E,GACJ,GAA2B,IAAvBA,EAAS1B,KAAK6Z,KACd,EAAKm6D,SAAS,CAAC6oM,eAAe,QAC3B,CACH,IAAMv7Q,EAAMwQ,OAAO8hD,IAAIC,gBAAgB,IAAIjhD,KAAK,CAAClR,EAAS1B,QACpD0sF,EAAOp8E,SAASa,cAAc,KACpCu7E,EAAKr7E,KAAO/P,EACZorF,EAAKp7E,aAAa,WAAY,iBAC9BhB,SAASmyB,KAAKljB,YAAYmtE,GAC1BA,EAAKtrC,QACmB,OAApBsrC,EAAK3sE,YACL2sE,EAAK3sE,WAAWC,YAAY0sE,EACnC,CACJ,GACF,GA5BL,oBA8BE,WACkBvmF,KAAKisK,aACrB,OACE,SAACiqG,GAAD,CACEl9P,UAAWhZ,KAAKwP,MAAMwJ,UACtBozB,MAAO,kBACPgqO,SAAUp2Q,KAAK49S,WACfznC,YAAan2Q,KAAKwP,MAAM2mQ,YACxBI,UAAWv2Q,KAAKqX,MAAMq/P,eAE3B,KAxCH,GAA6C32D,ICLhC89F,GAAb,8BAEI,WAAYruS,GAAa,IAAD,oBACpB,cAAMA,IACD4vQ,kBAAoB,EAAKA,kBAAkB5gR,KAAvB,MAFL,CAGvB,CALL,2CAOI,WAAqB,IAAD,SACZM,EAAUkB,KAAKisK,aACnBntK,EAAQo/M,SAAU0lE,oBAAsB1nE,GAAWqiD,IACnD5/P,KAAAA,KAAW,+BAAgC,KAAM,CAAE3C,OAAQ,CAAEs4P,WAAU,UAAEx1P,EAAQo/M,gBAAV,aAAE,EAAkBo2C,cACtFn0P,MAAK,SAAA5E,GACF,EAAKiU,MAAMo0Q,qBACd,GACR,GAdL,oBAgBI,WAAU,IAAD,EACS5jR,KAAKisK,aAEnB,OACI,iBAAKjzJ,UAAS,2DAA4ChZ,KAAKwP,MAAMwJ,iBAAvD,QAAoE,IAAlF,WACI,eAAIA,UAAU,OAAd,iDACA,+FACA,cAAGA,UAAU,OAAb,yEACA,mBAAQA,UAAU,gDAAgDkoF,QAASlhG,KAAKo/Q,kBAAhF,uBAGX,KA3BL,GAA2Cr/D,ICF9B+9F,GAAb,8BAEI,WAAYtuS,GAAa,IAAD,oBACpB,cAAMA,IACD4mQ,SAAW,EAAKA,SAAS53Q,KAAd,MAFI,CAGvB,CALL,kCAOI,WAAY,IAAD,SACDM,EAAUkB,KAAKisK,aAErBttK,KAAM,CACFxD,IAAI,sCAAD,iBAAwC2D,EAAQo/M,gBAAhD,aAAwC,EAAkBo2C,YAC7Dx4P,OAAQ,MACR9B,aAAc,SACfmG,MAAK,SAAA5E,GACJ,GAA2B,IAAvBA,EAAS1B,KAAK6Z,UAEX,CACH,IAAMvY,EAAMwQ,OAAO8hD,IAAIC,gBAAgB,IAAIjhD,KAAK,CAAClR,EAAS1B,QACpD0sF,EAAOp8E,SAASa,cAAc,KACpCu7E,EAAKr7E,KAAO/P,EACZorF,EAAKp7E,aAAa,WAAY,YAC9BhB,SAASmyB,KAAKljB,YAAYmtE,GAC1BA,EAAKtrC,QACmB,OAApBsrC,EAAK3sE,YACL2sE,EAAK3sE,WAAWC,YAAY0sE,GAChCznF,EAAQo/M,SAAUwlE,kBAAmB,EACrC,EAAK71M,SAAS,CAAEkzM,eAAgB,EAAK1pQ,MAAM0pQ,eAC9C,CACJ,GACJ,GA9BL,oBAgCI,WAAU,IAAD,EACL,OACI,iBAAK/nQ,UAAS,2DAA4ChZ,KAAKwP,MAAMwJ,iBAAvD,QAAoE,IAAlF,WACI,eAAIA,UAAU,OAAd,4BACA,gEACA,cAAGA,UAAU,OAAb,gJACA,mBAAQA,UAAU,gDAAgDkoF,QAASlhG,KAAKo2Q,SAAhF,wBAGX,KAzCL,GAA8Br2D,ICAjBg+F,GAAb,8BAEI,WAAYvuS,GAAa,IAAD,oBACpB,cAAMA,IACD4mQ,SAAW,EAAKA,SAAS53Q,KAAd,MAFI,CAGvB,CALL,kCAOI,WAAY,IAAD,SACDM,EAAUkB,KAAKisK,aAErBttK,KAAM,CACFxD,IAAI,8CAAD,iBAAgD2D,EAAQo/M,gBAAxD,aAAgD,EAAkBo2C,YACrEx4P,OAAQ,MACR9B,aAAc,SACfmG,MAAK,SAAA5E,GACJ,GAA2B,IAAvBA,EAAS1B,KAAK6Z,UAEX,CACH,IAAMvY,EAAMwQ,OAAO8hD,IAAIC,gBAAgB,IAAIjhD,KAAK,CAAClR,EAAS1B,QACpD0sF,EAAOp8E,SAASa,cAAc,KACpCu7E,EAAKr7E,KAAO/P,EACZorF,EAAKp7E,aAAa,WAAY,oBAC9BhB,SAASmyB,KAAKljB,YAAYmtE,GAC1BA,EAAKtrC,QACmB,OAApBsrC,EAAK3sE,YACL2sE,EAAK3sE,WAAWC,YAAY0sE,GAChCznF,EAAQo/M,SAAUylE,0BAA2B,EAC7C,EAAK91M,SAAS,CAAEkzM,eAAgB,EAAK1pQ,MAAM0pQ,eAC9C,CACJ,GACJ,GA9BL,oBAgCI,WAAU,IAAD,EACL,OACI,iBAAK/nQ,UAAS,2DAA4ChZ,KAAKwP,MAAMwJ,iBAAvD,QAAoE,IAAlF,WACI,eAAIA,UAAU,OAAd,sCACA,qKACA,cAAGA,UAAU,OAAb,8GACA,mBAAQA,UAAU,gDAAgDkoF,QAASlhG,KAAKo2Q,SAAhF,wBAGX,KAzCL,GAAsCr2D,IC2DzBi+F,GAAb,8BAOI,WAAYxuS,GAAa,IAAD,oBACpB,cAAMA,IAPVytS,sBAMwB,EAEpB,EAAK5lS,MAAQ,CACTyvJ,SAAS,EACTq8G,WAAY,GACZ9J,eAAgB,GAChBtjP,MAAO,GACPkoR,iBAAiB,EACjBl9B,eAAe,EACfm9B,qBAAqB,EACrBC,oBAAoB,EACpBC,2BAA2B,EAC3BC,yBAAyB,EAEzB3+B,aAAc,IAAI7C,GAClB8C,oBAAoB,EACpB0F,iBAAiB,EACjBi5B,mBAAmB,EACnBC,sBAAsB,EACtBC,wBAAwB,EACxBC,iBAAiB,EACjB5pB,cAAc,EACd52E,QAAS,KACTulE,kBAAkB,EAClBk7B,+BAA+B,GAEnC,EAAKt/B,kBAAoB,EAAKA,kBAAkB5gR,KAAvB,MACzB,EAAKmgT,QAAU,EAAKA,QAAQngT,KAAb,MA3BK,CA4BvB,CAnCL,2CAqCI,WACI,IAAIM,EAAUkB,KAAKisK,aACnBjsK,KAAKi9S,iBAAmB,IAAIznB,GAAiB12R,EAASkB,KAAMlB,EAAQugN,aACpEr/M,KAAKi9S,iBAAiBE,mBAEtBn9S,KAAKqX,MAAMqoQ,aAAa5hB,SAASh/P,EAAQo/M,SAAU,IAAI,EAAM,MAC7Dl+M,KAAK0zQ,cACR,GA5CL,qBA8CI,WACI1zQ,KAAK6tE,SAAS,CAACkzM,eAAgB/gR,KAAKqX,MAAM0pQ,eAC7C,GAhDL,wBAkDI,SAAWiC,GACP,IAAIA,EAAQ,MAAO,GACnB,IAAIlwR,EAAO,IAAIK,KAAK6vR,GACpB,OAAQlwR,EAAYA,EAAKmB,UAAY,KAAOnB,EAAKiB,WAAa,GAAK,IAAOjB,EAAKW,cAAhE,EAClB,GAtDL,4BAwDI,WACI,IACIyqN,EADUl+M,KAAKisK,aACIiyC,SACvB,OAAIA,EAAS+mE,qBACFjlR,KAAK01H,WAAWwoF,EAAS+mE,sBACzB/mE,EAAS8mE,yBACThlR,KAAK01H,WAAWwoF,EAAS8mE,0BAE7B,EACV,GAjEL,+BAmEI,WACI,IAAI17P,EAAwB,GAmB5B,OAlBAA,EAAMzoB,KAAK,CACPpF,OAAQmhR,GAAmBxL,SAC3BhlO,OAAO,gBAAKpzB,UAAU,gBAAf,oBACP3J,SAAS,wBACT7R,IAAK,mBAET8rB,EAAMzoB,KAAK,CACPpF,OAAQmhR,GAAmBxL,SAC3BhlO,OAAO,gBAAKpzB,UAAU,gBAAf,oBACP3J,SAAS,wBACT7R,IAAK,mBAET8rB,EAAMzoB,KAAK,CACPpF,OAAQmhR,GAAmBxL,SAC3BhlO,OAAO,gBAAKpzB,UAAU,gBAAf,oBACP3J,QAAS,KACT7R,IAAK,mBAEF8rB,CACV,GAxFL,sCA0FI,SAAyB1kB,GACrB,GAA8B,OAA1B5E,KAAKqX,MAAM8rQ,WAAf,CAGA,IAAIztK,EAAY11G,KAAKqX,MAAM8rQ,WAAWjtP,MAAK,SAACj1B,GACxC,OAAOA,EAAEuyQ,sBAAwB5uQ,CACpC,IACD,OAAkB,OAAd8wG,EACOA,EAEJ,IARG,CASb,GArGL,kCAuGI,SAAqB9wG,GACjB,GAAkC,OAA9B5E,KAAKqX,MAAMgiQ,eAAf,CAGA,IAAIG,EAAgBx5Q,KAAKqX,MAAMgiQ,eAAenjP,MAAK,SAACj1B,GAChD,OAAOA,EAAEw4Q,kBAAoB70Q,CAChC,IACD,OAAsB,OAAlB40Q,EACOA,EAEJ,IARG,CASb,GAlHL,4CAoHI,SAA+B50Q,GAAmB,IAItB,EAJqB,OACvC9F,EAAUkB,KAAKisK,aAEjBv2D,EAAY11G,KAAKk5Q,yBAAyBt0Q,GAC5B,OAAd8wG,GACA/2G,KAAAA,KAAW,+CAAgD,KAAM,CAAE3C,OAAQ,CAAEw3Q,oBAAqB5uQ,EAAI0vP,WAAU,UAAEx1P,EAAQo/M,gBAAV,aAAE,EAAkBo2C,cAC/Hn0P,MAAK,SAAA5E,GACgB,OAAdm6G,IACAA,EAAU9T,UAAW,GAEzB,EAAK/zB,SAAS,CAAEs1M,WAAY,EAAK9rQ,MAAM8rQ,YAC1C,GAEZ,GAjIL,wCAmII,SAA2Bv+Q,GAAmB,IAId,EAJa,OACnC9F,EAAUkB,KAAKisK,aAEjButG,EAAgBx5Q,KAAK05Q,qBAAqB90Q,GACxB,OAAlB40Q,GACA76Q,KAAAA,KAAW,2CAA4C,KAAM,CAAE3C,OAAQ,CAAEy9Q,gBAAiB70Q,EAAI0vP,WAAU,UAAEx1P,EAAQo/M,gBAAV,aAAE,EAAkBo2C,cACvHn0P,MAAK,SAAA5E,GACoB,OAAlBi+Q,IACAA,EAAc53K,UAAW,GAE7B,EAAK/zB,SAAS,CAAEwrM,eAAgB,EAAKhiQ,MAAMgiQ,gBAC9C,GAEZ,GAhJL,iCAkJI,WAAuB,IAAD,EACdv6Q,EAAUkB,KAAKisK,aACnBntK,EAAQo/M,SAAU+kE,uBAAwB,EAC1CjjR,KAAK6tE,SAAS,CAAEkzM,eAAgB/gR,KAAKqX,MAAM0pQ,gBAE3CpiR,KAAAA,KAAW,iCAAkC,KAAM,CAAE3C,OAAQ,CAAEs4P,WAAU,UAAEx1P,EAAQo/M,gBAAV,aAAE,EAAkBo2C,cACxFn0P,MAAK,SAAA5E,GACL,GACR,GA1JL,+BA4JI,WACIyE,KAAK6tE,SAAS,CAAEkzM,eAAgB/gR,KAAKqX,MAAM0pQ,eAC9C,GA9JL,8BAgKI,WAAoB,IAAD,EACXjiR,EAAUkB,KAAKisK,aACnBntK,EAAQo/M,SAAUmhE,kBAAmB,EACrCr/Q,KAAK6tE,SAAS,CAAEkzM,eAAgB/gR,KAAKqX,MAAM0pQ,gBAC3CpiR,KAAAA,KAAW,8BAA+B,KAAM,CAAE3C,OAAQ,CAAEs4P,WAAU,UAAEx1P,EAAQo/M,gBAAV,aAAE,EAAkBo2C,cACrFn0P,MAAK,SAAA5E,GACL,GACR,GAvKL,yCAyKI,WAA+B,IAAD,SAC1ByE,KAAK6tE,SAAS,CAAEw3M,iBAAiB,IACjC,IAAIvyR,EAAO,IAAIK,KAAK6M,KAAKqX,MAAMqoQ,aAAazsB,eAAe,4BAA4Bt3P,OACnFmD,EAAUkB,KAAKisK,aACnBntK,EAAQo/M,SAAU8mE,yBAA2BlyR,EAE7CkN,KAAK6tE,SAAS,CAAEkzM,eAAgB/gR,KAAKqX,MAAM0pQ,cAAepB,oBAAoB,EAAM0F,iBAAiB,IACrG1mR,KAAAA,KAAW,yCAA0C,KAAM,CAAE3C,OAAQ,CAAEs4P,WAAU,UAAEx1P,EAAQo/M,gBAAV,aAAE,EAAkBo2C,WAAYxhQ,KAAMA,KAClHqN,MAAK,SAAA5E,GACF,EAAKsyE,SAAS,CAAEkzM,eAAgB,EAAK1pQ,MAAM0pQ,eAC9C,GACR,GApLL,4BAsLI,SAAe3c,EAA4B3oQ,EAAoCmjT,GAC3E5+S,KAAK+4Q,+BAA+B6lC,EACvC,GAxLL,8BA0LI,SAAiBx6C,EAA4B3oQ,EAAoCg+Q,GAC7Ez5Q,KAAK6+S,2BAA2BplC,EACnC,GA5LL,mCA8LI,SAAsBtuI,GAA+B,IAAD,WAC5CrsI,EAAUkB,KAAKisK,aACfxwK,EAASoiN,GAA2BgxD,OAOxC,OANI1jI,EAAGovI,UACH9+Q,EAASoiN,GAA2BuiD,SAC7Bj1H,EAAGvpC,WACVnmG,EAASoiN,GAA2BixD,WAIpC,gBAAiD1uP,MAAO,CAAEO,UAAW,QAArE,UACI,SAAC6sP,GAAD,CAEI/xQ,OAAQA,EACR4hB,SAAS,aACTjc,KAAM+pI,EAAG/+F,MACT+zN,WAAY,GACZsG,SAAUt7H,EAAG3nI,YACbuyB,MAAO/1B,KAAKqX,MAAM0e,MAAMpmB,QAAO,SAAAs5B,GAAC,OAAIA,EAAEm7N,qBAAuBj5H,EAAGi5H,kBAAhC,IAChC3lD,UAAS,UAAE3/M,EAAQm/M,eAAV,aAAE,EAAiBQ,UAC5B2lD,mBAAoBj5H,EAAGi5H,mBACvB/N,OAAQ,SAAC+N,EAA4B3oQ,GAAyC,EAAKqjT,iBAAiB16C,EAAoB3oQ,EAAQ0vI,EAAGsuI,gBAAmB,EACtJnlB,WAAU,UAAEx1P,EAAQm/M,eAAV,aAAE,EAAiBq2C,WAC7BmZ,aAAc9vD,GAAmBioC,SACjC+pB,eAAe,EACftP,SAAU,IAbL,QAAUl1H,EAAGi5H,qBAFhB,iBAAmBj5H,EAAGsuI,gBAkBvC,GA1NL,oCA4NI,SAAuBtuI,GAAmC,IAAD,WACjDrsI,EAAUkB,KAAKisK,aACfxwK,EAASoiN,GAA2BgxD,OAQxC,OAPI1jI,EAAGovI,UACH9+Q,EAASoiN,GAA2BuiD,SAC7Bj1H,EAAGvpC,WACVnmG,EAASoiN,GAA2BixD,WAKpC,gBAAqD1uP,MAAO,CAAEO,UAAW,QAAzE,UACI,SAAC6sP,GAAD,CAEI/xQ,OAAQA,EACR4hB,SAAU8tH,EAAGltI,OAASkzR,GAAsB4tB,2BAA6B,cAAgB,aACzF39S,KAAM+pI,EAAG/pI,KACT++P,WAAY,GACZsG,SAAUt7H,EAAG3nI,YACbuyB,MAAO/1B,KAAKqX,MAAM0e,MAAMpmB,QAAO,SAAAs5B,GAAC,OAAIA,EAAEm7N,qBAAuBj5H,EAAGi5H,kBAAhC,IAChC3lD,UAAS,UAAE3/M,EAAQm/M,eAAV,aAAE,EAAiBQ,UAC5B2lD,mBAAoBj5H,EAAGi5H,mBACvB/N,OAAQ,SAAC+N,EAA4B3oQ,GAAyC,EAAKu0Q,eAAe5L,EAAoB3oQ,EAAQ0vI,EAAGqoI,oBAAuB,EACxJlf,WAAU,UAAEx1P,EAAQm/M,eAAV,aAAE,EAAiBq2C,WAC7BmZ,aAAc9vD,GAAmBioC,SACjC+pB,eAAe,EACftP,SAAU,IAbL,QAAUl1H,EAAGi5H,qBAFhB,iBAAmBj5H,EAAGqoI,oBAkBvC,GAzPL,4BA2PI,SAAewrC,GACX,IAC4C,EADxClgT,EAAUkB,KAAKisK,aACnB,GAAI+yI,IAAQhB,EAAeiB,gBACvB,OAAI,UAACngT,EAAQo/M,gBAAT,OAAC,EAAkBghG,iBAAoBpgT,EAAQo/M,SAASy9D,UAGrD,iBAFI,WAIf,GAAIqjC,IAAQhB,EAAemB,iBAAkB,CAAC,IAAD,IACzC,GAAIn/S,KAAKqjR,yBAA2BrjR,KAAKsjR,4BACrC,OAAItjR,KAAKyjR,wBACE,YAEA,WAER,aAAI3kR,EAAQo/M,gBAAZ,OAAI,EAAkBqlE,kBACzB,MAAO,YACJ,aAAIzkR,EAAQo/M,gBAAZ,OAAI,EAAkBglE,mBACzB,MAAO,UAEd,CACD,MAAO,UACV,GAjRL,0BAmRI,WAII,MAAO,EAUV,GAjSL,mCAmSI,WAEI,OADeljR,KAAKisK,aAAaiyC,SACnBglE,kBAIjB,GAzSL,mCA2SI,WACI,OAA8B,OAA1BljR,KAAKqX,MAAM8rQ,iBACc9lR,GAAzB2C,KAAKqX,MAAM8rQ,YACXnjR,KAAKqX,MAAM8rQ,WAAWxzQ,QAAO,SAAA1O,GAAC,OAAmB,IAAfA,EAAE2gG,WAAqC,IAAhB3gG,EAAEs5Q,SAA7B,IAAiDlmR,OAAS,CAI/F,GAlTL,qCAoTI,WACI,OAA8B,OAA1B2L,KAAKqX,MAAM8rQ,iBACc9lR,GAAzB2C,KAAKqX,MAAM8rQ,YACXnjR,KAAKqX,MAAM8rQ,WAAWxzQ,QAAO,SAAA1O,GAAC,OAAoB,IAAhBA,EAAEs5Q,SAAN,IAA0BlmR,OAAS,CAIxE,GA3TL,uCA6TI,WAEI,OADe2L,KAAKisK,aAAaiyC,SACpBziN,SAAWwgN,GAAemnE,yBAI1C,GAnUL,uCAqUI,WACI,OAAkC,OAA9BpjR,KAAKqX,MAAMgiQ,qBACmBh8Q,IAA9B2C,KAAKqX,MAAMgiQ,gBACXr5Q,KAAKqX,MAAMgiQ,eAAe1pQ,QAAO,SAAA1O,GAAC,OAAmB,IAAfA,EAAE2gG,QAAN,IAAyBvtG,OAAS,CAI3E,GA5UL,6BA8UI,WACI,IAAI6pN,EAAWl+M,KAAKisK,aAAaiyC,SACjC,QAAKl+M,KAAKqjR,yBAA4BrjR,KAAKsjR,6BAAgCplE,EAASqlE,kBAIvF,GApVL,mCAsVI,WAAyB,IAAD,EAEpB,SADevjR,KAAKisK,aAAaiyC,SACpBqlE,oBAAqBvjR,KAAKqX,MAAMmsQ,kBAAsD,KAAlC,UAAAxjR,KAAKqX,MAAM8rQ,kBAAX,eAAuB9uR,QAI3F,GA5VL,8CA8VI,WAEI,SADe2L,KAAKisK,aAAaiyC,SACpBqlE,mBAAsBvjR,KAAKyjR,wBAI3C,GApWL,yBAsWI,SAAoBhT,GAChB,IAAIkC,EAAgBlC,EAAK9gQ,QAAO,SAAAtP,GAAC,OAAIA,EAAEuhG,QAAN,IAAgBvtG,OAEjD,OAAOs+Q,EADOlC,EAAKp8Q,OACc,GACpC,GA1WL,8CA4WI,WACI,IACI6pN,EADUl+M,KAAKisK,aACIiyC,SACvB,SAAIA,EAASglE,oBAENhlE,EAASjgN,OAAS69M,GAAak7C,2BAC/B94C,EAAS+4C,YACT/4C,EAASkxD,cAAgBjD,GAAQ0O,gBAI3C,GAvXL,oCAyXI,WAA0B,IAAD,OAGrB,OAFc76Q,KAAKisK,aACIiyC,SACVmhE,kBACF,gBAAKrmQ,UAAU,mBAAf,UAAkC,cAAGA,UAAU,gCAEnD,mBAAQA,UAAU,yCAAyCkoF,QAAS,kBAAM,EAAKm+K,kBAAX,EAApE,mBACV,GAhYL,+BAkYI,WAGI,GAFcr/Q,KAAKisK,aACIiyC,SACV+mE,qBACT,OAAO,gBAAKjsQ,UAAU,mBAAf,UAAkC,cAAGA,UAAU,8BAG7D,GAzYL,oBA2YI,WAAU,IAAD,wBAQDozB,EACA5oC,EATC,OACD1E,EAAUkB,KAAKisK,aACfiyC,EAAWp/M,EAAQo/M,SACnBy9D,EAAS,UAAG78Q,EAAQo/M,gBAAX,aAAG,EAAkBy9D,UAG9ByjC,EAAgD,OAA9BlhG,EAAS6mE,kBAA6B,IAAI5xR,KAAK+qN,EAAS6mE,mBAAqB,IAAI5xR,KAKvG,GAAI6M,KAAKqX,MAAM6mS,oBACX,OAAO,SAAC5sG,GAAD,CAAU3nK,GAAG,uBAExB,GAAI3pC,KAAKqX,MAAMgnS,wBACX,OAAO,SAAC/sG,GAAD,CAAU3nK,GAAG,eAKxB,GAAI3pC,KAAKqX,MAAM8mS,mBACX,OAAO,SAAC7sG,GAAD,CAAU3nK,GAAG,cAGxB,GAAI3pC,KAAKqX,MAAM+mS,0BACX,OAAO,SAAC9sG,GAAD,CAAU3nK,GAAG,YAGxB,GAAI3pC,KAAKqX,MAAMyvJ,UAAY9mK,KAAKqX,MAAMmsQ,iBAClC,OAAQ,+BAAE,wBAAG,2CAGjB,IAAIlrN,EAAQt4D,KAAKm4P,oBACbinD,GACAhzQ,GAAQ,kDAAgB,4BAASksB,OACjC90D,GAAc,yBACP06M,EAASqlE,kBACZvjR,KAAKyjR,yBACLr3O,GAAQ,uCAAK,4BAASksB,IAAd,+BACR90D,GAAc,0DAAmB,oEAAnB,qCAEd4oC,GAAQ,uCAAK,4BAASksB,IAAd,OACR90D,GAAc,4GAEXxD,KAAKgkR,mBACZ53O,GAAQ,gCAAGksB,EAAH,iCACR90D,GAAc,qMACPxD,KAAKyjR,yBACZr3O,GAAQ,uCAAK,4BAASksB,IAAd,OACR90D,GAAc,iGACN06M,EAASglE,oBAAuBljR,KAAKyjR,yBAA4BvlE,EAAS+4C,YAAc/4C,EAASkxD,eAAiBjD,GAAQ0O,gBAG1H38D,EAASglE,oBAAuBljR,KAAKyjR,0BAC7Cr3O,GAAQ,uCAAK,4BAASksB,IAAd,OACR90D,GAAc,0HAAwF,mBAAK,gEAA7F,sGAJd4oC,GAAQ,oDAAkB,4BAASksB,IAA3B,OACR90D,GAAc,6EAA2C,mBAAK,mBAAK,gEAArD,wJAMlB,IAAI67P,EAAoC,GACxC,UAAAr/P,KAAKqX,MAAM8rQ,kBAAX,SAAuB5lR,SAAQ,SAAA8C,IAAYg/P,EAAWnpO,MAAK,SAAA+S,GAAC,OAAIA,EAAE5rB,WAAahd,EAAEgd,SAASA,QAA9B,KAA2Chd,EAAEgd,UAAYhd,EAAEgd,SAASA,UAAUgiP,EAAWx+P,KAAKR,EAAEgd,SAAW,IAEvK,IAAIgiS,GACA,iBAAKrmS,UAAS,qBAAgBhZ,KAAKyjR,wBAA0B,YAAezjR,KAAKs/S,0BAA4B,WAAa,kBAA1H,WACI,6CACCt/S,KAAKyjR,yBACJ,iCACE,eAAIzqQ,UAAS,OAAb,UAAuB,cAAGA,UAAU,wDACpC,iBAAMA,UAAS,iBAAf,UAAmC,4DACnC,cAAGA,UAAS,QAAZ,8CAEFhZ,KAAKs/S,2BACP,iCACI,eAAItmS,UAAS,OAAb,UAAuB,cAAGA,UAAU,yBACnCqmP,GAAcA,EAAWhrQ,OAAS,IAC/B,iCACI,mDACA,cAAG2kB,UAAU,QAAb,oEAKZ,iCACI,eAAIA,UAAS,OAAb,UAAuB,cAAGA,UAAU,gCACnCqmP,GAAcA,EAAWhrQ,OAAS,IAC/B,mDAIR,SAAC,GAAD,CAAK2kB,UAAU,iBAAf,UACEhZ,KAAKgkR,mBAAqB3kB,GAAcA,EAAW96O,MAAK,SAACrV,EAAEC,GAAO,IAAD,IAAC,OAAO,UAACD,EAAEm2H,aAAH,QAAU,IAAV,UAAgBl2H,EAAEk2H,aAAlB,QAAyB,GAAK,GAAK,CAAG,IAAEryH,KAAI,SAACk/P,EAAKp7N,GAAN,aACnH,SAAC,GAAD,CAA8C99B,UAAU,OAAxD,UACI,SAAC,GAAD,CAAWoH,MAAO,CAAE6uQ,UAAW,GAAIwX,YAAa,eAAhD,UACI,UAAC,QAAD,CAAgBl3H,SAAU,eAA1B,WACI,SAAC,UAAD,WACI,UAAC,GAAD,CAAKnvJ,MAAO,CAAE5F,MAAO,QAArB,YACM,OAAC03P,QAAD,IAACA,GAAAA,EAAKqtC,UACJ,+BACI,SAAC,GAAD,CAAK1iO,GAAI,GAAI7jE,UAAU,mBAAvB,UACI,eAAIA,UAAU,IAAd,wBAIP,OAAHk5P,QAAG,IAAHA,OAAA,EAAAA,EAAKqtC,UACH,+BACI,SAAC,GAAD,CAAK1iO,GAAI,GAAI7jE,UAAU,0BAAvB,UACI,eAAIA,UAAU,IAAd,SAAmBk5P,EAAI70P,qBAM3C,UAAC,QAAD,CAAgB+C,MAAO,CAACoZ,QAAS,GAAjC,YACM,OAAC04O,QAAD,IAACA,GAAAA,EAAKqtC,UACJ,SAAC,GAAD,CAAOviG,IAAK,EAAGhkM,UAAU,aAAzB,SACmC,OAA9B,EAAK3B,MAAMgiQ,qBAAyDh8Q,IAA9B,EAAKga,MAAMgiQ,gBAAgC,EAAKhiQ,MAAMgiQ,eAAgBrmQ,KAAI,SAACm4H,EAA8Br0F,GAA/B,OAC7G,yBAAmD,EAAK0oQ,sBAAsBr0K,IAA9E,yBAA4BA,EAAGsuI,iBAD8E,OAKpH,OAAHvH,QAAG,IAAHA,OAAA,EAAAA,EAAKqtC,UACH,SAAC,GAAD,CAAOviG,IAAK,EAAGhkM,UAAU,aAAzB,SAC+B,OAA1B,EAAK3B,MAAM8rQ,YAAqD,OAA9B,EAAK9rQ,MAAMgiQ,gBAA2B,EAAKhiQ,MAAM8rQ,WAAWxzQ,QAAO,SAAA1O,GAAC,OAAIA,EAAEoc,SAASA,WAAa60P,EAAI70P,QAAhC,IAA0CrK,KAAI,SAACm4H,EAAkCr0F,GAAnC,OACjJ,yBAAuD,EAAK2oQ,uBAAuBt0K,IAAnF,yBAA4BA,EAAGqoI,qBADkH,eA/B7K,oCAAuBtB,QAAvB,IAAuBA,OAAvB,EAAuBA,EAAK70P,gBAA5B,QAAwC,IAD2E,SA6C3HqiS,GAAiB,+BACjB,iBAA8C1mS,UAAW,cAAgBhZ,KAAKm7Q,eAAe6iC,EAAemB,kBAA5G,WACI,wCACGn/S,KAAKyjR,yBAA2BzjR,KAAKqjR,yBAA6BrjR,KAAK2/S,6BAA+B3/S,KAAKsjR,+BAC1G,iCACI,eAAItqQ,UAAS,OAAb,UAAuB,cAAGA,UAAU,wDACpC,iBAAMA,UAAS,oBAAf,UAAsC,4DACtC,gBAAKA,UAAU,MAAf,UAAqB,mBAAQA,UAAU,kDAAkDkoF,QAAS,kBAAMv1F,OAAOg0M,SAAS,iBAAtB,EAA7E,uCAG3B3/M,KAAKqjR,yBAA2BrjR,KAAKsjR,8BAAgCjkB,GAAcA,EAAWhrQ,OAAS,IACrG,cAAG2kB,UAAS,eAAUhZ,KAAK4/S,gBAA3B,UAA6C,yDAE/C5/S,KAAKgkR,oBAAuBhkR,KAAKqjR,yBAA2BrjR,KAAKsjR,gCAAkCjkB,GAAoC,IAAtBA,EAAWhrQ,WAC1H,iCACI,eAAI2kB,UAAS,OAAb,UAAuB,cAAGA,UAAU,sCACpC,iBAAMA,UAAS,KAAf,UAAuB,sDACtBklM,EAASglE,qBACV,iBAAKlqQ,UAAU,OAAf,WACI,eAAGA,UAAU,QAAb,6BAAoC,SAAC,GAAD,CAAe4zP,aAAa,EAAMD,YAAY,QAAQ75Q,KAAMorN,EAASglE,yBACzG,eAAGlqQ,UAAU,QAAb,gCAAuC,SAAC,GAAD,CAAe4zP,aAAa,EAAMD,YAAY,QAAQ75Q,KAAMorN,EAAS2hG,qCAG/G,UAAA7/S,KAAKqX,MAAMyoS,iBAAX,eAAsB3lC,wBACnB,SAAC3D,GAAD,CAAyBjkQ,KAAMvS,KAAKqX,MAAMyoS,UAAW3pC,YAAY,YAI5Ej4D,EAASqlE,oBACN,iCACI,eAAIvqQ,UAAS,OAAb,UAAuB,cAAGA,UAAU,gCACpC,iBAAMA,UAAS,KAAf,UAAuB,2CACvB,gBAAKA,UAAU,OAAf,UAAsB,eAAGA,UAAU,QAAb,0BAAiC,SAAC,GAAD,CAAe4zP,aAAa,EAAM95Q,KAAMorN,EAAS6hG,2BAGvG7hG,EAAS8hG,uBACN,SAACrC,GAAD,CAAyBxnC,YAAY,WAAWn9P,UAAU,UAE7D,UAAAhZ,KAAKqX,MAAMyoS,iBAAX,eAAsB3lC,wBACnB,SAAC3D,GAAD,CAAyBjkQ,KAAMvS,KAAKqX,MAAMyoS,UAAW3pC,YAAY,WAAWn9P,UAAU,aAIlG,SAAC,GAAD,CAAKA,UAAU,iBAAf,UACEhZ,KAAKgkR,oBAAsB9lE,EAASqlE,mBAAqBlkB,GAAcA,EAAW96O,MAAK,SAACrV,EAAEC,GAAO,IAAD,IAAC,OAAO,UAACD,EAAEm2H,aAAH,QAAU,IAAV,UAAgBl2H,EAAEk2H,aAAlB,QAAyB,GAAK,GAAK,CAAG,IAAEryH,KAAI,SAACk/P,EAAKp7N,GAAN,aAClJ,SAAC,GAAD,CAA8C99B,UAAU,OAAxD,UACI,SAAC,GAAD,CAAWoH,MAAO,CAAE6uQ,UAAW,GAAIwX,YAAa,eAAhD,UACI,UAAC,QAAD,CAAgBl3H,SAAU,eAA1B,WACI,SAAC,UAAD,WACI,UAAC,GAAD,CAAKnvJ,MAAO,CAAE5F,MAAO,QAArB,YACM,OAAC03P,QAAD,IAACA,GAAAA,EAAKqtC,UACJ,+BACI,SAAC,GAAD,CAAK1iO,GAAI,GAAI7jE,UAAU,mBAAvB,UACI,eAAIA,UAAU,IAAd,wBAIP,OAAHk5P,QAAG,IAAHA,OAAA,EAAAA,EAAKqtC,UACH,+BACI,SAAC,GAAD,CAAK1iO,GAAI,GAAI7jE,UAAU,0BAAvB,UACI,eAAIA,UAAU,IAAd,SAAmBk5P,EAAI70P,qBAM3C,UAAC,QAAD,CAAgB+C,MAAO,CAACoZ,QAAS,GAAjC,YACM,OAAC04O,QAAD,IAACA,GAAAA,EAAKqtC,UACJ,SAAC,GAAD,CAAOviG,IAAK,EAAGhkM,UAAU,aAAzB,SACmC,OAA9B,EAAK3B,MAAMgiQ,qBAAyDh8Q,IAA9B,EAAKga,MAAMgiQ,gBAAgC,EAAKhiQ,MAAMgiQ,eAAgBrmQ,KAAI,SAACm4H,EAA8Br0F,GAA/B,OAC7G,yBAAmD,EAAK0oQ,sBAAsBr0K,IAA9E,yBAA4BA,EAAGsuI,iBAD8E,OAKpH,OAAHvH,QAAG,IAAHA,OAAA,EAAAA,EAAKqtC,UACH,SAAC,GAAD,CAAOviG,IAAK,EAAGhkM,UAAU,aAAzB,SAC+B,OAA1B,EAAK3B,MAAM8rQ,YAAqD,OAA9B,EAAK9rQ,MAAMgiQ,gBAA2B,EAAKhiQ,MAAM8rQ,WAAWxzQ,QAAO,SAAA1O,GAAC,OAAIA,EAAEoc,SAASA,WAAa60P,EAAI70P,QAAhC,IAA0CrK,KAAI,SAACm4H,EAAkCr0F,GAAnC,OACjJ,yBAAuD,EAAK2oQ,uBAAuBt0K,IAAnF,yBAA4BA,EAAGqoI,qBADkH,eA/B7K,oCAAuBtB,QAAvB,IAAuBA,OAAvB,EAAuBA,EAAK70P,gBAA5B,QAAwC,IAD0G,QA3ChJ,aAAe6gM,EAASo2C,cA0FlC2rD,GAAgB,+BAChB,SAACrrB,GAAD,CAAasrB,YAAU,EAAC9/R,MAAQg/R,EAAU,CAAChhJ,cAAe,IAAK,CAAC,MAGhE+hJ,GAAwB,+BACxB,iBAA+CnnS,UAAS,qBAAgBhZ,KAAKm7Q,eAAe6iC,EAAeiB,iBAAnD,YAAuEj/S,KAAKogT,mCAAqC,aAAe,GAAhI,kBAAoJhgS,MAAO,CAACg+I,cAAe,IAAnO,WAEI,UAAC,GAAD,CAAKplJ,UAAU,wBAAf,WACI,UAAC,GAAD,CAAK6jE,GAAI,EAAT,WACI,cAAG7jE,UAAU,OAAb,+BACA,iBAAKA,UAAU,sBAAf,WACI,cAAGA,UAAU,eAAb,SAA6BklM,EAAS26C,mCACtC,eAAG7/O,UAAU,eAAb,UAA6BklM,EAASijE,aAAtC,aACA,cAAGnoQ,UAAU,eAAb,SAA6BklM,EAASq/F,uBAAyBr/F,EAASq/F,uBAAyB,gBAAkB,sBAEvH,gBAAKvkS,UAAU,oCAAoCkoF,QAAU,kBAAM,EAAKrzB,SAAS,CAACuwO,2BAA2B,GAAhD,EAA7D,UAAqH,cAAGplS,UAAU,uBAEtI,UAAC,GAAD,CAAK6jE,GAAI,EAAG7jE,UAAU,YAAtB,WACI,cAAGA,UAAW,OAAd,+BACEklM,EAASghG,kBACP,mBAAQlmS,UAAU,wBAAwBkoF,QAAS,WAAQ,EAAKrzB,SAAS,CAAEswO,oBAAoB,GAAS,EAAxG,gCAEHjgG,EAASghG,kBACV,iCACI,gBAAKlmS,UAAU,sBAAf,UACI,cAAGA,UAAU,SAAb,SAAuBklM,EAASghG,gBAAiBh2S,QAAQ,YAAa,IAAIA,QAAQ,WAAY,SAElG,gBAAK8P,UAAU,oCAAoCkoF,QAAU,kBAAM,EAAKrzB,SAAS,CAACswO,oBAAoB,GAAzC,EAA7D,UAA8G,cAAGnlS,UAAU,0BAKnI,UAAC,GAAD,CAAK6jE,GAAI,EAAT,WACI,cAAG7jE,UAAW,OAAd,uBACE2iQ,GAAaA,EAAU0kC,eAAiB1kC,EAAU2kC,aAEhD,iCACI,iBAAKtnS,UAAU,sBAAf,WACI,cAAGA,UAAU,eAAb,SAA6B2iQ,EAAU2kC,eACvC,cAAGtnS,UAAU,eAAb,SAA6B2iQ,EAAU0kC,cAAen3S,QAAQ,YAAa,IAAIA,QAAQ,WAAY,OACnG,cAAG8P,UAAU,eAAb,SAA6B2iQ,EAAU4kC,aAE3C,gBAAKvnS,UAAU,oCAAoCkoF,QAAU,kBAAM,EAAKrzB,SAAS,CAACqwO,qBAAqB,GAA1C,EAA7D,UAA+G,cAAGllS,UAAU,uBAGhI,mBAAQA,UAAU,wBAAwBkoF,QAAS,WAAQ,EAAKrzB,SAAS,CAAEqwO,qBAAqB,GAAS,EAAzG,wCAIZ,gBAAIllS,UAAU,OAAd,kEAA2EklM,EAASs/F,oBAApF,6BA5CM,cAAgBt/F,EAASo2C,cAiDnCksD,GAAuB,+BACvB,iBAA+CxnS,UAAS,qBAAgBhZ,KAAKm7Q,eAAe6iC,EAAeiB,iBAAnD,KAAxD,WACI,eAAIjmS,UAAU,OAAd,2BACCklM,EAASuiG,kBACJ,gBAAKznS,UAAU,OAAOoH,MAAO,CAAC5F,MAAO,QAASwS,IAAKkxL,EAASuiG,oBAC5D,wBAAKviG,EAAS47D,wBAGpB,cAAG9gQ,UAAU,QAAb,8BACA,cAAGA,UAAU,cAAb,SAA4BklM,EAASwiG,uBAErC,cAAG1nS,UAAU,QAAb,uCACA,cAAGA,UAAU,cAAb,SAA4BklM,EAAS26C,mCAEnC74P,KAAKqX,MAAM4mS,kBACb,gBAAKjlS,UAAU,UAAUkoF,QAAS,kBAAM,EAAKrzB,SAAS,CAAEowO,iBAAiB,GAAvC,EAAlC,UAAkF,cAAGjlS,UAAW,yBAE/FhZ,KAAKqX,MAAM4mS,kBACR,iCACI,iBAAKjlS,UAAU,UAAUkoF,QAAS,kBAAM,EAAKrzB,SAAS,CAAEowO,iBAAiB,GAAvC,EAAlC,WAEI,cAAGjlS,UAAU,QAAb,4BACA,eAAGA,UAAU,cAAb,UAA4BklM,EAASijE,aAArC,aAEA,cAAGnoQ,UAAU,QAAb,gCACA,cAAGA,UAAU,cAAb,mBAAgCklM,EAASyiG,qBAA6BziG,EAASyiG,qBAAuB,QAAtC,UAAhE,OAAgH,UAAAziG,EAASyiG,4BAAT,SAAuC,IAAM,OAE7J,cAAG3nS,UAAU,QAAb,SAAsBklM,EAASjgN,OAAS69M,GAAa+4C,mBAAqB,iBAAmB,oBAC7F,cAAG77O,UAAU,cAAb,SAA4BklM,EAASjgN,OAAS69M,GAAak7C,yBAA2B94C,EAAS06C,uBAAyB16C,EAAS0iG,0BAEjI,cAAG5nS,UAAU,QAAb,wCACA,cAAGA,UAAU,cAAb,SAA4BklM,EAASq/F,uBAAyBr/F,EAASq/F,uBAAyB,gBAAkB,mBAElH,cAAGvkS,UAAW,QAAd,+BACEklM,EAASghG,kBACP,mBAAQlmS,UAAU,0BAA0BkoF,QAAS,WAAQ,EAAKrzB,SAAS,CAAEswO,oBAAoB,GAAS,EAA1G,oCAEHjgG,EAASghG,kBACV,+BACI,cAAGlmS,UAAU,cAAb,SAA4BklM,EAASghG,gBAAiBh2S,QAAQ,YAAa,IAAIA,QAAQ,WAAY,SAGvG,cAAG8P,UAAW,QAAd,uBACC2iQ,GAAaA,EAAU0kC,eAAiB1kC,EAAU2kC,cAC/C,iCACI,cAAGtnS,UAAU,eAAb,SAA6B2iQ,EAAU2kC,eACvC,cAAGtnS,UAAU,eAAb,SAA6B2iQ,EAAU0kC,cAAen3S,QAAQ,YAAa,IAAIA,QAAQ,WAAY,OACnG,cAAG8P,UAAU,eAAb,SAA6B2iQ,EAAU4kC,cAG5C5kC,IAAcA,EAAU0kC,gBAAkB1kC,EAAU2kC,eACnD,mBAAQtnS,UAAU,wBAAwBkoF,QAAS,WAAQ,EAAKrzB,SAAS,CAAEqwO,qBAAqB,GAAS,EAAzG,qCAGR,mBAAQllS,UAAU,uDAAuDkoF,QAAS,kBAAMv1F,OAAOg0M,SAAS,iBAAtB,EAAlF,kCACA,eAAI3mM,UAAU,OAAd,wDACA,wCAAgBklM,EAASs/F,oBAAzB,gCAvDF,cAAgBt/F,EAASo2C,cA6DnCusD,GAAuB,+BACvB,iBAA+C7nS,UAAS,qBAAgBhZ,KAAKm7Q,eAAe6iC,EAAeiB,iBAAnD,KAAxD,WACI,eAAIjmS,UAAU,OAAd,gDAEA,cAAGA,UAAU,OAAb,0FAEA,gBAAKA,UAAU,2BAA2BkoF,QAAS,kBAAM,EAAKrzB,SAAS,CAAEwwO,yBAAyB,GAA/C,EAAnD,yBALM,cAAgBngG,EAASo2C,cAWnCwsD,EACC9gT,KAAKogT,mCACJI,EACAL,EA2IN,OAxII,+BACI,UAAC1/F,GAAD,CAAYznM,UAAS,qBAAgBomS,IAAYp/S,KAAKogT,mCAAqC,WAAa,IACpGh0Q,MAAOA,EACP5oC,YAAaA,EAFjB,WAGI,iCACMxD,KAAKogT,qCACP,SAAC,GAAD,CAAKpnS,UAAU,sCAAf,UACI,SAAC,GAAD,UACK8nS,MAIR9gT,KAAKogT,qCAAuChB,IAAYlhG,EAASqlE,oBAClE,+BACI,UAAC,GAAD,YACC,UAAAzkR,EAAQo/M,gBAAR,eAAkBjgN,QAAS69M,GAAa+4C,oBAAsB70P,KAAKqX,MAAMqnS,gCAC1E,SAAC,GAAD,CAAK7hO,GAAI,EAAG7jE,UAAU,OAAtB,SACS6nS,KAGT,SAAC,GAAD,CAAKhkO,GAAI,EAAG7jE,UAAU,OAAtB,SACK8nS,KAEL,SAAC,GAAD,CAAKjkO,GAAI,EAAG7jE,UAAU,OAAtB,SACK0mS,KAEJ,UAAA5gT,EAAQo/M,gBAAR,eAAkBjgN,QAAS69M,GAAak7C,0BAA4Bl4P,EAAQo/M,SAAU0lE,sBAAwB1nE,GAAWqiD,MACtH,SAAC,GAAD,CAAK1hL,GAAI,EAAG7jE,UAAU,OAAtB,UACI,SAAC6kS,GAAD,CAAuB7kS,UAAU,OAAO4qQ,oBAAqB5jR,KAAKo/Q,uBAGxElhE,EAAS63C,oBACP,SAAC,GAAD,CAAKl5K,GAAI,EAAT,UACI,SAACq5K,GAAD,CAAe18N,SAAS,EAAO68N,OAAQr2P,KAAK2+S,aAGnD,UAAA7/S,EAAQo/M,gBAAR,eAAkBimE,mBAAoBrlR,EAAQo/M,SAAUwlE,mBACrD,SAAC,GAAD,CAAK7mM,GAAI,EAAG7jE,UAAU,OAAtB,UACI,SAAC8kS,GAAD,CAAU9kS,UAAU,YAG3B,UAAAla,EAAQo/M,gBAAR,eAAkBkmE,2BAA4BtlR,EAAQo/M,SAAUwlE,mBAC7D,SAAC,GAAD,CAAK7mM,GAAI,EAAG7jE,UAAU,OAAtB,UACI,SAAC+kS,GAAD,CAAkB/kS,UAAU,gBAMvChZ,KAAKogT,qCAAuChB,GAAWlhG,EAASqlE,oBACjE,+BACA,UAAC,GAAD,YACI,SAAC,GAAD,CAAK1mM,GAAI,EAAG7jE,UAAU,OAAtB,SACK8nS,KAEL,SAAC,GAAD,CAAKjkO,GAAI,EAAG7jE,UAAU,OAAtB,SACK0mS,KAEL,SAAC,GAAD,CAAK7iO,GAAI,EAAG7jE,UAAU,OAAtB,SACMqmS,KAEL,UAAAvgT,EAAQo/M,gBAAR,eAAkBjgN,QAAS69M,GAAak7C,0BAA4Bl4P,EAAQo/M,SAAU0lE,sBAAwB1nE,GAAWqiD,MACtH,SAAC,GAAD,CAAK1hL,GAAI,EAAG7jE,UAAU,OAAtB,UACI,SAAC6kS,GAAD,CAAuB7kS,UAAU,OAAO4qQ,oBAAqB5jR,KAAKo/Q,uBAGxElhE,EAAS63C,oBACP,SAAC,GAAD,CAAKl5K,GAAI,EAAT,UACI,SAACq5K,GAAD,CAAe18N,SAAS,OAG/B,UAAA16B,EAAQo/M,gBAAR,eAAkBimE,mBAAoBrlR,EAAQo/M,SAAUwlE,mBACrD,SAAC,GAAD,CAAK7mM,GAAI,EAAG7jE,UAAU,OAAtB,UACI,SAAC8kS,GAAD,CAAU9kS,UAAU,YAG3B,UAAAla,EAAQo/M,gBAAR,eAAkBkmE,2BAA4BtlR,EAAQo/M,SAAUylE,2BAC7D,SAAC,GAAD,CAAK9mM,GAAI,EAAG7jE,UAAU,OAAtB,UACI,SAAC+kS,GAAD,CAAkB/kS,UAAU,gBAMvChZ,KAAKogT,oCAAsChB,IAC5C,iCACA,UAAC,GAAD,CAAKpmS,UAAU,OAAf,WACI,SAAC,GAAD,CAAKykI,GAAI,EAAT,SACKwiK,KAEL,SAAC,GAAD,CAAKxiK,GAAI,EAAT,UACI,SAACggK,GAAD,UAGR,UAAC,GAAD,YACI,SAAC,GAAD,CAAKhgK,GAAI,EAAT,UACI,SAACu/J,GAAD,OAEJ,SAAC,GAAD,CAAKv/J,GAAI,EAAT,SACKqjK,KAEL,SAAC,GAAD,CAAKrjK,GAAI,EAAT,UACI,SAACigK,GAAD,gBAOZ,UAAC,GAAD,CAAOl3D,WAAW,UAAU9qE,MAAO17K,KAAKqX,MAAMsoQ,mBAAoBpjG,OAAQ,WAAQ,EAAK1uG,SAAS,CAAE8xM,oBAAoB,GAAU,EAAEp5B,UAAQ,EAA1I,WACI,SAAC,UAAD,CAAchoE,aAAW,KAEzB,SAAC,QAAD,WACI,SAAC,GAAD,WACI,SAAC,GAAD,WACI,SAAC,GAAD,WACI,SAAC,GAAD,CAAa6xE,OAAK,EAAC7lN,KAAK,kBAAkBoS,MAAO38C,KAAKqX,MAAMqoQ,aAAazsB,eAAe,uCAKxG,UAAC,UAAD,WACKjzP,KAAKqX,MAAMguQ,kBACR,SAAC,GAAD,CAAennQ,UAAU,SAAS64J,KAAK,YAEzC/2K,KAAKqX,MAAMguQ,kBACT,mBAAQrsQ,UAAU,4BAA4BkoF,QAAS,WAAQ,EAAKo+K,6BAAgC,EAApG,4BAW3B,GA33BL,yDA63BI,yGACUxgR,EAAUkB,KAAKlB,QACjB8xQ,GAAgC,UAAA9xQ,EAAQm/M,eAAR,eAAiBi4E,eAAjB,UAAgCp3R,EAAQo/M,gBAAxC,aAAgC,EAAkB+B,iBAAiBxB,WAAnE,UAA+E3/M,EAAQo/M,gBAAvF,aAA+E,EAAkB+B,iBAAjG,UAAoHnhN,EAAQo/M,gBAA5H,aAAoH,EAAkB8B,mBAElJ,OAApBlhN,EAAQm/M,QAJhB,iDAOQt/M,KAAAA,IAAU,8DAAgEG,EAAQm/M,QAAQq2C,YACrFn0P,MAAK,SAAC5E,GAAc,IAAD,EACZ++Q,EAAoC/+Q,EAAS1B,KAC7CimT,EAAmDxlC,EAAKpkP,MAAK,SAAAhnB,GAAC,aAAIA,EAAE0qQ,gBAAF,UAAmB96Q,EAAQo/M,gBAA3B,aAAmB,EAAkB27D,eAAgB3qQ,EAAEjR,OAASkuQ,GAAQ0O,eAA5E,SAChDx9Q,IAAdyiT,GAAyBxlC,EAAKpkP,MAAK,SAAAhnB,GAAC,aAAIA,EAAE0qQ,gBAAF,UAAmB96Q,EAAQo/M,gBAA3B,aAAmB,EAAkB27D,aAAzC,IACxC,IAAIknC,EAA8BzmC,EAAK3qQ,QAAO,SAAAT,GAAC,OAAIA,EAAEjR,OAASkuQ,GAAQkD,cAAgBngQ,EAAE6qQ,eAAiB7N,GAAakV,kBAAoBlyQ,EAAE6qQ,eAAiB7N,GAAa8N,WAA3H,IAAwI3lR,OACnL2sT,EAAuB1mC,EAAK3qQ,QAAO,SAAAT,GAAC,OAAIA,EAAEjR,OAASkuQ,GAAQ0O,kBAAoB3rQ,EAAE6qQ,eAAiB7N,GAAakV,kBAAoBlyQ,EAAE6qQ,eAAiB7N,GAAa8N,WAA/H,IAA4I3lR,OAEhL0sT,EAAsB,GAAsB,IAAjBC,EAC3B,EAAKnzO,SAAS,CAAEi5F,SAAS,EAAOg5I,UAAWA,EAAWpB,+BAA+B,EAAMl7B,kBAAkB,EAAMvlE,QAAS2yD,IAEvH,EAAKyS,wBACV,EAAKnQ,UAAU4sC,EAAf,OAA0BA,QAA1B,IAA0BA,OAA1B,EAA0BA,EAAW7mC,kBAAmBrI,GACjD,EAAK0S,4BACZ3kR,KAAAA,IAAU,wEAA0EG,EAAQm/M,QAASq2C,YAChGn0P,MAAK,SAAC5E,GACH,IAAI89Q,EAA6C99Q,EAAS1B,KACtDw/Q,GACA,EAAKnG,UAAU4sC,EAAWzmC,EAAgBzI,EAEjD,IACF,UAAI9xQ,EAAQo/M,gBAAZ,OAAI,EAAkBqlE,kBACzB5kR,KAAAA,IAAU,oEAAsEG,EAAQm/M,QAASq2C,YAC5Fn0P,MAAK,SAAC5E,GACH,EAAK23Q,UAAU4sC,EAAWvkT,EAAS1B,KAAM+2Q,EAC5C,IAEL,EAAK/iM,SAAS,CAAEi5F,SAAS,EAAOg5I,UAAWA,EAAWpB,+BApBhB,EAoB2El7B,kBAAkB,EAAMvlE,QAAS2yD,GAEjK,IApCL,gDA73BJ,6EAq6BI,SAAkBkvC,EAAkDjmT,EAAW+2Q,GAAsC,IAAD,SAC1G9xQ,EAAUkB,KAAKisK,aACjB9wK,EAAG,4CAA8B2D,EAAQo/M,gBAAtC,aAA8B,EAAkBo2C,YACvD31P,KAAAA,IAAUxD,GACLgF,MAAK,SAAC5E,GACH,IAAIw6B,EAAQx6B,EAAS1B,KACrB,EAAKg0E,SAAS,CAAEi5F,SAAS,EAAOg5I,UAAWA,EAAW/pR,MAAOA,EAAOotP,WAAYtpR,EAAMw/Q,eAAgBx/Q,EAAMokN,QAAS2yD,EAAW4S,kBAAkB,GACrJ,IACAhuQ,OAAM,SAACtS,GACJ,EAAK2qE,SAAS,CAAEi5F,SAAS,EAAOg5I,UAAWA,EAAWt8B,kBAAkB,EAAMvlE,QAAS2yD,GAC1F,GACR,KAh7BL,GAAoC7wD,IAAvBi+F,GAEF9rM,YAAc8rG,GAFZggG,GAGFiB,gBAA0B,kBAHxBjB,GAIFmB,iBAA2B,mBCnD/B,ICRK8B,GAuHAC,GD/GCp3B,GAAb,8BACI,WAAYt6Q,GAAa,IAAD,oBACpB,cAAMA,IACD6H,MAAQ,CAAEyvJ,SAAS,EAAMyxG,aAAc,IAFxB,CAGvB,CAJL,2CAMI,WACIv4Q,KAAK0zQ,cACR,GARL,gCAUI,SAAmBytC,GAA+C,IAAD,SACvDriT,EAAUkB,KAAKisK,aACrBk1I,EAAYC,YAAa,EACzBphT,KAAK6tE,SAAS,CAAE0qM,aAAcv4Q,KAAKqX,MAAMkhQ,eACzC55Q,KAAAA,KAAW,sCAAuC,KAAM,CAAE3C,OAAQ,CAAEs4P,WAAU,UAAEx1P,EAAQo/M,gBAAV,aAAE,EAAkBo2C,WAAYvoB,cAAeo1E,EAAYxqC,oBACpIx2Q,MAAK,SAAA5E,GACF4lT,EAAYE,WAAY,EACxBF,EAAYC,YAAa,EACzB,EAAKvzO,SAAS,CAAE0qM,aAAc,EAAKlhQ,MAAMkhQ,cAC5C,GACR,GApBL,oBAsBI,WAAU,IAAD,OACDz5Q,EAAUkB,KAAKisK,aAEnB,OAAIjsK,KAAKqX,MAAMyvJ,SAAgC,OAArBhoK,EAAQo/M,UACtB,+BAAE,wBAAG,4CAGb,+BACA,SAACuC,GAAD,CAAYznM,UAAU,aAAaozB,MAAO,sBAAuB5oC,YAAa,GAAIu9M,SAAU,8FAA5F,UACI,iCACI,UAAC,GAAD,YACI,SAAC,GAAD,CAAKhyE,GAAI,KACT,SAAC,GAAD,CAAKA,GAAI,GAAT,UACI,SAAC,GAAD,CAAK/1H,UAAU,yBAAf,SACiC,OAA5BhZ,KAAKqX,MAAMkhQ,cAAyBv4Q,KAAKqX,MAAMkhQ,aAAavlQ,KAAI,SAACT,GAAD,OAC7D,SAAC,GAAD,CAAKw8H,GAAI,EAAG4pC,GAAI,GAAgCv4J,MAAO,CAAElF,aAAc,QAAvE,UACI,iBAAKlC,UAAW,oBAAqBoH,MAAO,CAACrQ,SAAU,WAAYquJ,cAAe,IAAlF,WACI,wBAAK7rJ,EAAKonQ,UACV,0FAAkEpnQ,EAAKonQ,OAAvE,wBAAkG,0BAAOpnQ,EAAK6/E,YACvF,MAAtB7/E,EAAK+uS,gBAAyB,iCAC3B,4CACA,uBAAI/uS,EAAK+uS,oBAEb,+CACA,uFACA,iBAAKlhS,MAAO,CAACrQ,SAAU,WAAYyK,MAAO,OAAQ4jJ,cAAe,GAAI/jJ,KAAM,EAAGI,OAAQ,GAAtF,WACqB,IAApBlI,EAAK6uS,aACF,SAAC,GAAD,CAAeljS,UAAU,SAAS64J,KAAK,YAEtB,IAApBxkK,EAAK6uS,aAA0C,IAAnB7uS,EAAK8uS,YAC9B,SAAC,GAAD,CAAQroS,UAAU,mBAAmBklK,QAAQ,YAAYh9E,QAAS,SAAA14F,GAAO,EAAK+4S,mBAAmBhvS,EAAQ,EAAzG,sBAEiB,IAApBA,EAAK6uS,aAA0C,IAAnB7uS,EAAK8uS,YAC9B,SAAC,GAAD,CAAQroS,UAAU,mBAAmBklK,QAAQ,YAAYvuJ,UAAU,EAAnE,8BAlBapd,EAAKokQ,iBAD+B,SA2BzE,SAAC,GAAD,CAAK5nI,GAAI,QACP,mBACN,SAAC,GAAD,WACI,UAAC,GAAD,CAAKA,GAAI,GAAI4pC,GAAI,GAAjB,WACI,yCACA,4LAOvB,GA3EL,yDA6EI,+FAE4B,QADlB75K,EAAUkB,KAAKlB,SACTm/M,QAFhB,iDAKIt/M,KAAAA,IAAU,8DAAgEG,EAAQm/M,QAAQq2C,YACrFn0P,MAAK,SAAC5E,GACH,EAAKsyE,SAAS,CAAE0qM,aAAch9Q,EAAS1B,KAAMitK,SAAS,GACzD,IART,gDA7EJ,2DAAwCi5C,KCRxC,SAAYkhG,GAMRA,EAAAA,mBAAAA,qBAMAA,EAAAA,2BAAAA,6BAMAA,EAAAA,mBAAAA,qBAMAA,EAAAA,wBAAAA,0BAMAA,EAAAA,kBAAAA,oBAMAA,EAAAA,iCAAAA,mCAMAA,EAAAA,kBAAAA,oBAMAA,EAAAA,8BAAAA,gCAMAA,EAAAA,+BAAAA,iCAMAA,EAAAA,gCAAAA,kCAMAA,EAAAA,UAAAA,YAMAA,EAAAA,gDAAAA,kDAMAA,EAAAA,+BAAAA,iCAMAA,EAAAA,oCAAAA,sCAKAA,EAAAA,sCAAAA,wCAKAA,EAAAA,oCAAAA,sCAKAA,EAAAA,iBAAAA,kBAKAA,EAAAA,mCAAAA,qCAMAA,EAAAA,qBAAAA,sBA9GJ,EAAYA,KAAAA,GA+GX,KAQD,SAAYC,GACRA,EAAAA,EAAAA,WAAAA,GAAAA,aACAA,EAAAA,EAAAA,WAAAA,GAAAA,aACAA,EAAAA,EAAAA,UAAAA,GAAAA,WAHJ,EAAYA,KAAAA,GAIX,KC5HY,ICDDM,GDCCC,GACQ,CACbn+S,KAAM,oBACNkK,KAAM,sJAHDi0S,GAKQ,CACbn+S,KAAM,oBACNkK,KAAM,0JAOd,eACI,SAAYk0S,EAAA19G,EAAmBjmH,GAA/B,MACIwpC,EAAM,UAAAy8E,EAAWjmH,IAIpB,YAHGypC,EAAKpmH,KAAO,kBAEZ2C,OAAOysD,eAAeg3D,EAAMk6L,EAAgB1iT,YAC/C,CAeL,OArBqC0xD,GAAS,KAWnCgxP,EAAAA,sBAAP,WACI,OAAO,IAAIA,EAAgBD,GAAuCn+S,KAAMm+S,GAAuCj0S,KAClH,EAKMk0S,EAAAA,sBAAP,WACI,OAAO,IAAIA,EAAgBD,GAAuCn+S,KAAMm+S,GAAuCj0S,KAClH,EACJk0S,CArBD,EAAqCv9G,IEVrC,cAKI,WAAaz/L,GACT1E,KAAK2hT,IAAMj9S,EAAQi9S,IACnB3hT,KAAK4hT,IAAMl9S,EAAQk9S,IACnB5hT,KAAK6hT,IAAMn9S,EAAQm9S,GACtB,CA8BL,OApBWC,EAAkB,mBAAzB,SAA0BC,GAEtB,IAAKA,EAAiBF,IAClB,MAAMH,GAAgBM,wBAI1B,IAAKD,EAAiBH,IAClB,MAAMF,GAAgBO,wBAG1B,IAAMC,EAAY,IAAIJ,EAAW,CAE7BH,IAAKI,EAAiBJ,KAAOv+G,GAAU++G,IACvCN,IAAKE,EAAiBF,IACtBD,IAAKG,EAAiBH,MAG1B,OAAOv5S,KAAKI,UAAUy5S,EACzB,EACJJ,CAAA,CAvCD,iBCNA,aAcC,CAAD,OAPWM,EAAAA,aAAP,SAAoBpqT,GAEhB,IADA,IAAI20E,EAAc30E,EAAIgP,SAAS,IACxB2lE,EAAIt4E,OAAS,GAChBs4E,EAAM,IAAMA,EAEhB,OAAOA,CACV,EACL,CAAC,kBCTG,WAAY+/H,GACR1sM,KAAK0sM,UAAYA,CACpB,CA+EL,OAvDI21G,EAAAA,UAAAA,aAAAA,WACI,IACI,IAAM76S,EAAqB,IAAIkH,WAAW,IAW1C,OAVA1O,KAAK0sM,UAAUlzI,gBAAgBhyD,GAG/BA,EAAO,IAAM,GACbA,EAAO,IAAM,GAGbA,EAAO,IAAM,IACbA,EAAO,IAAM,IAEN46S,GAAUE,aAAa96S,EAAO,IAAM46S,GAAUE,aAAa96S,EAAO,IACnE46S,GAAUE,aAAa96S,EAAO,IAAM46S,GAAUE,aAAa96S,EAAO,IAClE,IAAM46S,GAAUE,aAAa96S,EAAO,IAAM46S,GAAUE,aAAa96S,EAAO,IACxE,IAAM46S,GAAUE,aAAa96S,EAAO,IAAM46S,GAAUE,aAAa96S,EAAO,IACxE,IAAM46S,GAAUE,aAAa96S,EAAO,IAAM46S,GAAUE,aAAa96S,EAAO,IACxE,IAAM46S,GAAUE,aAAa96S,EAAO,KAAO46S,GAAUE,aAAa96S,EAAO,KACzE46S,GAAUE,aAAa96S,EAAO,KAAO46S,GAAUE,aAAa96S,EAAO,KACnE46S,GAAUE,aAAa96S,EAAO,KAAO46S,GAAUE,aAAa96S,EAAO,IAwB5E,CAtBD,MAAO5L,GAKH,IAJA,IAAM2mT,EAAqB,uCACrB51O,EAAc,mBAChBj8D,EAAY,EACZ8xS,EAAuB/jH,GAAUyB,aAC5B7/L,EAAY,EAAGA,EAAI,GAAIA,IACN,MAAlBkiT,EAAWliT,IAAgC,MAAlBkiT,EAAWliT,KAEpCqQ,EAAoB,GAAhBjK,KAAK8jB,SAAgB,GAEP,MAAlBg4R,EAAWliT,GACXmiT,GAAgB71O,EAAIj8D,GACK,MAAlB6xS,EAAWliT,IAElBqQ,GAAK,EAEL8xS,GAAgB71O,EADhBj8D,GAAK,IAGL8xS,GAAgBD,EAAWliT,GAGnC,OAAOmiT,CACV,CACJ,EAMDH,EAAAA,UAAAA,OAAAA,SAAO/nF,GAEH,MADkB,6EACD7vN,KAAK6vN,EACzB,EACL,CAAC,kBCnFD,aAoGC,CAAD,OA9FWmoF,EAAAA,gBAAP,SAAwBC,GAKpB,IAJA,IAAIC,EACAC,EAAU,EACRC,EAAUH,EAAQruT,OAEfyuT,EAAU,EAAGA,EAAUD,EAASC,IAErCF,IADAD,EAAOD,EAAQpzS,WAAWwzS,IACR,IAAO,EAAIH,EAAO,KAAQ,EAAIA,EAAO,MAAU,EAAIA,EAAO,QAAW,EAAIA,EAAO,SAAY,EAAI,EAOtH,IAJA,IAAMI,EAAS,IAAIr0S,WAAWk0S,GAIrBI,EAAO,EAAGC,EAAU,EAAGD,EAAOJ,EAASK,KAC5CN,EAAOD,EAAQpzS,WAAW2zS,IACf,IAEPF,EAAOC,KAAUL,EACVA,EAAO,MAEdI,EAAOC,KAAU,KAAOL,IAAS,GACjCI,EAAOC,KAAU,KAAc,GAAPL,IACjBA,EAAO,OAEdI,EAAOC,KAAU,KAAOL,IAAS,IACjCI,EAAOC,KAAU,KAAOL,IAAS,EAAI,IACrCI,EAAOC,KAAU,KAAc,GAAPL,IACjBA,EAAO,SAEdI,EAAOC,KAAU,KAAOL,IAAS,IACjCI,EAAOC,KAAU,KAAOL,IAAS,GAAK,IACtCI,EAAOC,KAAU,KAAOL,IAAS,EAAI,IACrCI,EAAOC,KAAU,KAAc,GAAPL,IACjBA,EAAO,UAEdI,EAAOC,KAAU,KAAOL,IAAS,IACjCI,EAAOC,KAAU,KAAOL,IAAS,GAAK,IACtCI,EAAOC,KAAU,KAAOL,IAAS,GAAK,IACtCI,EAAOC,KAAU,KAAOL,IAAS,EAAI,IACrCI,EAAOC,KAAU,KAAc,GAAPL,KAGxBI,EAAOC,KAAU,KAAOL,IAAS,IACjCI,EAAOC,KAAU,KAAOL,IAAS,GAAK,IACtCI,EAAOC,KAAU,KAAOL,IAAS,GAAK,IACtCI,EAAOC,KAAU,KAAOL,IAAS,GAAK,IACtCI,EAAOC,KAAU,KAAOL,IAAS,EAAI,IACrCI,EAAOC,KAAU,KAAc,GAAPL,IAIhC,OAAOI,CACV,EAMMN,EAAAA,oBAAP,SAA2BS,GAGvB,IAFA,IAAMrpT,EAAO,IAAIgV,YAAYq0S,EAAW7uT,QAClC8hF,EAAW,IAAIznE,WAAW7U,GACvBwG,EAAY,EAAGA,EAAI6iT,EAAW7uT,OAAQgM,IAC3C81E,EAAS91E,GAAK6iT,EAAW5zS,WAAWjP,GAExC,OAAOxG,CACV,EAMM4oT,EAAAA,gBAAP,SAAwBM,GAEpB,IADA,IAAII,EAAQ1kH,GAAUyB,aACbkjH,OAAK,EAAEC,EAAON,EAAO1uT,OAAQ2uT,EAAO,EAAGA,EAAOK,EAAML,IACzDI,EAAQL,EAAOC,GACfG,GAASnzS,OAAOmrD,aACZioP,EAAQ,KAAOA,EAAQ,KAAOJ,EAAO,EAAIK,EAErB,YAAfD,EAAQ,MAAqBL,IAASC,GAAQ,KAAO,KAAOD,IAASC,GAAQ,KAAO,KAAOD,IAASC,GAAQ,KAAO,KAAOD,IAASC,GAAQ,KAAO,GAAKD,IAASC,GAAQ,IACvKI,EAAQ,KAAOA,EAAQ,KAAOJ,EAAO,EAAIK,GACtCD,EAAQ,KAAO,KAAOL,IAASC,GAAQ,KAAO,KAAOD,IAASC,GAAQ,KAAO,KAAOD,IAASC,GAAQ,KAAO,GAAKD,IAASC,GAAQ,IACjII,EAAQ,KAAOA,EAAQ,KAAOJ,EAAO,EAAIK,GACtCD,EAAQ,KAAO,KAAOL,IAASC,GAAQ,KAAO,KAAOD,IAASC,GAAQ,KAAO,GAAKD,IAASC,GAAQ,IAClGI,EAAQ,KAAOA,EAAQ,KAAOJ,EAAO,EAAIK,GACtCD,EAAQ,KAAO,KAAOL,IAASC,GAAQ,KAAO,GAAKD,IAASC,GAAQ,IACnEI,EAAQ,KAAOA,EAAQ,KAAOJ,EAAO,EAAIK,GACtCD,EAAQ,KAAO,GAAKL,IAASC,GAAQ,IAEtCI,GAG5B,OAAOD,CACV,EACL,CAAC,kBCnGD,aAgFC,CAAD,OA1EIG,EAAAA,UAAAA,UAAAA,SAAUnqQ,GACN,OAAOr+C,mBAAmBkF,KAAKiJ,OAAOkwC,GACjCjwC,QAAQ,KAAMu1L,GAAUyB,cACxBh3L,QAAQ,MAAO,KACfA,QAAQ,MAAO,KACvB,EAMDo6S,EAAAA,UAAAA,aAAAA,SAAaC,GACT,OAAOvjT,KAAKwjT,aAAaD,GACpBr6S,QAAQ,KAAMu1L,GAAUyB,cACxBh3L,QAAQ,MAAO,KACfA,QAAQ,MAAO,IACvB,EAMDo6S,EAAAA,UAAAA,OAAAA,SAAOnqQ,GACH,IAAMsqQ,EAAehB,GAAmBiB,gBAAgBvqQ,GACxD,OAAOn5C,KAAKwjT,aAAaC,EAC5B,EAMOH,EAAAA,UAAAA,aAAR,SAAqBP,GAIjB,IAHA,IAAMY,GAAS,EAAKZ,EAAO1uT,OAAS,GAAM,EACtCuvT,EAAUnlH,GAAUyB,aAEf2jH,OAAK,EAAER,EAAON,EAAO1uT,OAAQyvT,EAAU,EAAGd,EAAO,EAAGA,EAAOK,EAAML,IACtEa,EAAQb,EAAO,EAKfc,GAAWf,EAAOC,KAAU,KAAOa,EAAQ,IAC7B,IAAVA,GAAed,EAAO1uT,OAAS2uT,IAAS,IACxCY,GAAW5zS,OAAOmrD,aACdn7D,KAAK+jT,WAAWD,IAAY,GAAK,IACjC9jT,KAAK+jT,WAAWD,IAAY,GAAK,IACjC9jT,KAAK+jT,WAAWD,IAAY,EAAI,IAChC9jT,KAAK+jT,WAAqB,GAAVD,IAEpBA,EAAU,GAIlB,OAAkB,IAAVH,EAAcC,EAAUA,EAAQp5R,UAAU,EAAGo5R,EAAQvvT,OAASsvT,IAAoB,IAAVA,EAAc,IAAM,KACvG,EAMOL,EAAAA,UAAAA,WAAR,SAAoBU,GAChB,OAAOA,EAAS,GACZA,EAAS,GACPA,EAAS,GACPA,EAAS,GACPA,EAAS,GACPA,EAAS,EACI,KAAXA,EACE,GACa,KAAXA,EACE,GAEA,EACvB,EACL,CAAC,kBChFD,aAoEC,CAAD,OA9DIC,EAAAA,UAAAA,OAAAA,SAAO9qQ,GACH,IAAI+qQ,EAAgB/qQ,EAAMjwC,QAAQ,KAAM,KAAKA,QAAQ,KAAM,KAC3D,OAAQg7S,EAAc7vT,OAAS,GAC3B,KAAK,EACD,MACJ,KAAK,EACD6vT,GAAiB,KACjB,MACJ,KAAK,EACDA,GAAiB,IACjB,MACJ,QACI,MAAM,IAAIrwT,MAAM,yBAGxB,IAAM4vT,EAAezjT,KAAKmkT,eAAeD,GACzC,OAAOzB,GAAmB2B,gBAAgBX,EAC7C,EAOOQ,EAAAA,UAAAA,eAAR,SAAuBI,EAAsBC,GAMzC,IALA,IAAMV,EAAUS,EAAan7S,QAAQ,oBAAqBu1L,GAAUyB,cAC9DqkH,EAASX,EAAQvvT,OACjBmwT,EAAUF,EAAa79S,KAAKshD,MAAe,EAATw8P,EAAa,IAAM,GAAKD,GAAcA,EAAsB,EAATC,EAAa,IAAM,EACxGxB,EAAS,IAAIr0S,WAAW81S,GAErBX,OAAK,EAAEY,OAAK,EAAEX,EAAU,EAAGY,EAAU,EAAGC,EAAS,EAAGA,EAASJ,EAAQI,IAG1E,GAFAF,EAAiB,EAATE,EACRb,GAAW9jT,KAAK4kT,WAAWhB,EAAQt0S,WAAWq1S,KAAY,GAAK,EAAIF,EACrD,IAAVA,GAAeF,EAASI,IAAW,EAAG,CACtC,IAAKd,EAAQ,EAAGA,EAAQ,GAAKa,EAAUF,EAASX,IAASa,IACrD3B,EAAO2B,GAAWZ,KAAa,KAAOD,EAAQ,IAAM,IAExDC,EAAU,CACb,CAGL,OAAOf,CACV,EAMOkB,EAAAA,UAAAA,WAAR,SAAmBY,GACf,OAAOA,EAAU,IAAMA,EAAU,GAC7BA,EAAU,GACRA,EAAU,IAAMA,EAAU,IACxBA,EAAU,GACRA,EAAU,IAAMA,EAAU,GACxBA,EAAU,EACI,KAAZA,EACE,GACc,KAAZA,EACE,GAEA,CACvB,EACL,CAAC,ICtEYC,GACS,CACdxhT,KAAM,mBACNkK,KAAM,gEAHDs3S,GAKW,CAChBxhT,KAAM,qBACNkK,KAAM,mDAPDs3S,GASsB,CAC3BxhT,KAAM,8BACNkK,KAAM,mEAXDs3S,GAac,CACnBxhT,KAAM,qBACNkK,KAAM,oEAfDs3S,GAiBO,CACZxhT,KAAM,mBACNkK,KAAM,mKAnBDs3S,GAqBqB,CAC1BxhT,KAAM,mBACNkK,KAAM,qFAvBDs3S,GAyB+B,CACpCxhT,KAAM,yCACNkK,KAAM,uJA3BDs3S,GA6BgB,CACrBxhT,KAAM,wBACNkK,KAAM,+EA/BDs3S,GAiC0B,CAC/BxhT,KAAM,kCACNkK,KAAM,2EAnCDs3S,GAqCc,CACnBxhT,KAAM,0BACNkK,KAAM,kLAvCDs3S,GAyCS,CACdxhT,KAAM,qBACNkK,KAAM,4GA3CDs3S,GA6CS,CACdxhT,KAAM,qBACNkK,KAAM,yDA/CDs3S,GAiDW,CAChBxhT,KAAM,iBACNkK,KAAM,4BAnDDs3S,GAqDiB,CACtBxhT,KAAM,yBACNkK,KAAM,mGAvDDs3S,GAyDkB,CACvBxhT,KAAM,yBACNkK,KAAM,oGA3DDs3S,GA6Dc,CACnBxhT,KAAM,qBACNkK,KAAM,yLA/DDs3S,GAiE8B,CACnCxhT,KAAM,sBACNkK,KAAM,uIAnEDs3S,GAqEuB,CAC5BxhT,KAAM,sBACNkK,KAAM,uFAvEDs3S,GAyEqB,CAC1BxhT,KAAM,4BACNkK,KAAM,sDA3EDs3S,GA6EqB,CAC1BxhT,KAAM,4BACNkK,KAAM,mFA/EDs3S,GAiFO,CACZxhT,KAAM,mBACNkK,KAAM,2JAnFDs3S,GAqFe,CACpBxhT,KAAM,4BACNkK,KAAM,kGAvFDs3S,GAyFiB,CACtBxhT,KAAM,+BACNkK,KAAM,oCA3FDs3S,GA6F4B,CACjCxhT,KAAM,4CACNkK,KAAM,iDA/FDs3S,GAiGe,CACpBxhT,KAAM,4BACNkK,KAAM,8BAnGDs3S,GAqGU,CACfxhT,KAAM,6BACNkK,KAAM,kGAvGDs3S,GAyGS,CACdxhT,KAAM,qBACNkK,KAAM,sBA3GDs3S,GA6GgB,CACrBxhT,KAAM,0BACNkK,KAAM,2EA/GDs3S,GAiHQ,CACbxhT,KAAM,oBACNkK,KAAM,yBAnHDs3S,GAqHc,CACnBxhT,KAAM,0BACNkK,KAAM,4DAvHDs3S,GAyHU,CACfxhT,KAAM,sBACNkK,KAAM,6IA3HDs3S,GA6HS,CACdxhT,KAAM,qBACNkK,KAAM,mFA/HDs3S,GAiIqB,CAC1BxhT,KAAM,2BACNkK,KAAM,0DAnIDs3S,GAqIe,CACpBxhT,KAAM,uBACNkK,KAAM,iCAvIDs3S,GAyIoB,CACzBxhT,KAAM,uBACNkK,KAAM,8DA3IDs3S,GA6IS,CACdxhT,KAAM,qBACNkK,KAAM,gGA/IDs3S,GAiJwB,CAC7BxhT,KAAM,wCACNkK,KAAM,2EAnJDs3S,GAqJY,CACjBxhT,KAAM,uBACNkK,KAAM,iMAvJDs3S,GAyJ+B,CACpCxhT,KAAM,+CACNkK,KAAM,oHA3JDs3S,GA6Je,CACpBxhT,KAAM,2BACNkK,KAAM,2EA/JDs3S,GAiKoB,CACzBxhT,KAAM,iCACNkK,KAAM,mGAnKDs3S,GAqKuB,CAC5BxhT,KAAM,oCACNkK,KAAM,mLAvKDs3S,GAyK2B,CAChCxhT,KAAM,yCACNkK,KAAM,sLA3KDs3S,GA6KiB,CACtBxhT,KAAM,8BACNkK,KAAM,oIASV,WAAYw2L,EAAmBjmH,GAA/B,MACIwpC,EAAAA,KAAAA,KAAMy8E,EAAWjmH,IAAa,YAE9Bh6E,OAAOysD,eAAeg3D,EAAMu9L,EAAiB/lT,WAC7CwoH,EAAKpmH,KAAO,oBACf,CA8UL,OArVsCsvD,GAAAA,EAAAA,GAa3Bq0P,EAAAA,4BAAP,SAAmCx9G,GAC/B,OAAO,IAAIw9G,EAAiBD,GAAyCxhT,KAC9DwhT,GAAyCt3S,KAAI,WAAW+5L,EAClE,EAMMw9G,EAAAA,8BAAP,SAAqCx9G,GACjC,OAAO,IAAIw9G,EAAiBD,GAA2CxhT,KAChEwhT,GAA2Ct3S,KAAI,WAAW+5L,EACpE,EAMMw9G,EAAAA,oCAAP,SAA2CjpT,GACvC,OAAO,IAAIipT,EAAiBD,GAAsDxhT,KAC3EwhT,GAAsDt3S,KAAI,kBAAkB1R,EACtF,EAKMipT,EAAAA,8BAAP,WACI,OAAO,IAAIA,EAAiBD,GAA8CxhT,KAAMwhT,GAA8Ct3S,KACjI,EAMMu3S,EAAAA,qBAAP,SAA4BC,GACxB,OAAO,IAAID,EAAiBD,GAAuCxhT,KAASwhT,GAAuCt3S,KAAI,eAAew3S,EACzI,EAKMD,EAAAA,mCAAP,WACI,OAAO,IAAIA,EAAiBD,GAAqDxhT,KAAMwhT,GAAqDt3S,KAC/I,EAKMu3S,EAAAA,6CAAP,WACI,OAAO,IAAIA,EAAiBD,GAA+DxhT,KAAMwhT,GAA+Dt3S,KACnK,EAKMu3S,EAAAA,8BAAP,WACI,OAAO,IAAIA,EAAiBD,GAAgDxhT,KAAMwhT,GAAgDt3S,KACrI,EAKMu3S,EAAAA,wCAAP,WACI,OAAO,IAAIA,EAAiBD,GAA0DxhT,KAAMwhT,GAA0Dt3S,KACzJ,EAKMu3S,EAAAA,iCAAP,WACI,OAAO,IAAIA,EAAiBD,GAA8CxhT,KAAMwhT,GAA8Ct3S,KACjI,EAMMu3S,EAAAA,uBAAP,SAA8Bx9G,GAC1B,IAAIxpH,EAAe+mO,GAAyCt3S,KAE5D,OADAuwE,EAAgBiqH,GAAYjiL,QAAQwhL,GAAuDxpH,EAAvCA,EAAY,aAAawpH,EACtE,IAAIw9G,EAAiBD,GAAyCxhT,KAAMy6E,EAC9E,EAMMgnO,EAAAA,8BAAP,WACI,OAAO,IAAIA,EAAiBD,GAAyCxhT,KAAMwhT,GAAyCt3S,KACvH,EAKMu3S,EAAAA,yBAAP,WACI,OAAO,IAAIA,EAAiBD,GAA2CxhT,KACnEwhT,GAA2Ct3S,KAClD,EAKMu3S,EAAAA,+BAAP,WACI,OAAO,IAAIA,EAAiBD,GAAiDxhT,KACzEwhT,GAAiDt3S,KACxD,EAKMu3S,EAAAA,gCAAP,WACI,OAAO,IAAIA,EAAiBD,GAAkDxhT,KAC1EwhT,GAAkDt3S,KACzD,EAMMu3S,EAAAA,4BAAP,SAAmCE,GAC/B,OAAO,IAAIF,EAAiBD,GAA8CxhT,KACnEwhT,GAA8Ct3S,KAAI,kCAAkCy3S,EAC9F,EAKMF,EAAAA,qCAAP,WACI,OAAO,IAAIA,EAAiBD,GAA8DxhT,KACtFwhT,GAA8Dt3S,KACrE,EAMMu3S,EAAAA,qCAAP,WACI,OAAO,IAAIA,EAAiBD,GAAuDxhT,KAC/EwhT,GAAuDt3S,KAC9D,EAKMu3S,EAAAA,mCAAP,WACI,OAAO,IAAIA,EAAiBD,GAAqDxhT,KAAMwhT,GAAqDt3S,KAC/I,EAKMu3S,EAAAA,mCAAP,WACI,OAAO,IAAIA,EAAiBD,GAAqDxhT,KAAMwhT,GAAqDt3S,KAC/I,EAKMu3S,EAAAA,qBAAP,WACI,OAAO,IAAIA,EAAiBD,GAAuCxhT,KAAMwhT,GAAuCt3S,KACnH,EAKMu3S,EAAAA,6BAAP,SAAoCG,GAChC,OAAO,IAAIH,EAAiBD,GAA+CxhT,KAASwhT,GAA+Ct3S,KAAI,iBAAiB03S,EAC3J,EAKMH,EAAAA,0CAAP,WACI,OAAO,IAAIA,EAAiBD,GAA4DxhT,KACpFwhT,GAA4Dt3S,KACnE,EAKMu3S,EAAAA,+BAAP,WACI,OAAO,IAAIA,EAAiBD,GAAiDxhT,KACzEwhT,GAAiDt3S,KACxD,EAKMu3S,EAAAA,6BAAP,WACI,OAAO,IAAIA,EAAiBD,GAA0CxhT,KAClEwhT,GAA0Ct3S,KACjD,EAKMu3S,EAAAA,6BAAP,WACI,OAAO,IAAIA,EAAiBD,GAA+CxhT,KACvEwhT,GAA+Ct3S,KACtD,EAKMu3S,EAAAA,4BAAP,WACI,OAAO,IAAIA,EAAiBD,GAAyCxhT,KAAM,GAAGwhT,GAAyCt3S,KAC1H,EAKMu3S,EAAAA,iCAAP,WACI,OAAO,IAAIA,EAAiBD,GAAgDxhT,KAAMwhT,GAAgDt3S,KACrI,EAKMu3S,EAAAA,2BAAP,WACI,OAAO,IAAIA,EAAiBD,GAAwCxhT,KAAMwhT,GAAwCt3S,KACrH,EAKMu3S,EAAAA,iCAAP,WACI,OAAO,IAAIA,EAAiBD,GAA8CxhT,KAAMwhT,GAA8Ct3S,KACjI,EAKMu3S,EAAAA,6BAAP,SAAoCI,EAAmB39G,GACnD,OAAO,IAAIu9G,EAAiBD,GAA0CxhT,KAASwhT,GAA0Ct3S,KAAI,4BAA4B23S,EAAS,0BAA0B39G,EAASpzM,MAAM,KAAK,GACnN,EAKM2wT,EAAAA,4BAAP,SAAmCI,EAAmB39G,GAClD,OAAO,IAAIu9G,EAAiBD,GAAyCxhT,KAASwhT,GAAyCt3S,KAAI,4BAA4B23S,EAAS,0BAA0B39G,EAASpzM,MAAM,KAAK,GACjN,EAKM2wT,EAAAA,wCAAP,SAA+Cv9G,GAC3C,OAAO,IAAIu9G,EAAiBD,GAAqDxhT,KAASwhT,GAAqDt3S,KAAI,0BAA0Bg6L,EAASpzM,MAAM,KAAK,GACpM,EAKM2wT,EAAAA,6BAAP,SAAoCK,GAChC,OAAO,IAAIL,EAAiBD,GAA+CxhT,KAASwhT,GAA+Ct3S,KAAI,MAAM43S,EAChJ,EAKML,EAAAA,uCAAP,SAA8CM,GAC1C,OAAO,IAAIN,EAAiBD,GAAoDxhT,KAASwhT,GAAoDt3S,KAAI,gCAAgC63S,EACpL,EAKMN,EAAAA,4BAAP,WACI,OAAO,IAAIA,EAAiBD,GAAyCxhT,KAAMwhT,GAAyCt3S,KACvH,EAKMu3S,EAAAA,6CAAP,WACI,OAAO,IAAIA,EAAiBD,GAAwDxhT,KAAMwhT,GAAwDt3S,KACrJ,EAKMu3S,EAAAA,+BAAP,WACI,OAAO,IAAIA,EAAiBD,GAA4CxhT,KAAMwhT,GAA4Ct3S,KAC7H,EAKMu3S,EAAAA,kDAAP,WACI,OAAO,IAAIA,EAAiBD,GAA+DxhT,KAAMwhT,GAA+Dt3S,KACnK,EAKMu3S,EAAAA,kCAAP,WACI,OAAO,IAAIA,EAAiBD,GAA+CxhT,KAAMwhT,GAA+Ct3S,KACnI,EAKMu3S,EAAAA,uCAAP,WACI,OAAO,IAAIA,EAAiBD,GAAoDxhT,KAAMwhT,GAAoDt3S,KAC7I,EAMMu3S,EAAAA,0CAAP,WACI,OAAO,IAAIA,EAAiBD,GAAuDxhT,KAAMwhT,GAAuDt3S,KACnJ,EAKMu3S,EAAAA,yCAAP,WACI,OAAO,IAAIA,EAAiBD,GAA2DxhT,KAAMwhT,GAA2Dt3S,KAC3J,EAMMu3S,EAAAA,6CAAP,WACI,OAAO,IAAIA,EAAiBD,GAAiDxhT,KAAMwhT,GAAiDt3S,KACvI,EACL,CArVA,EAAsC22L,kBC3KlC,WAAYuI,GACR1sM,KAAKslT,aAAe,IAAIhC,GACxBtjT,KAAK0sM,UAAYA,CACpB,CA6CL,OAxCU64G,EAAAA,UAAAA,cAAN,+GAE0B,OADhBC,EAAexlT,KAAKylT,uBACJ,GAAMzlT,KAAK0lT,kCAAkCF,WACnE,OADMG,EAAgB//M,EAAAA,OACf,CAAP,EAAO,CACHggN,SAAUJ,EACVK,UAAWF,UAElB,EAMOJ,EAAAA,UAAAA,qBAAR,WACI,IAEI,IAAM/9S,EAAqB,IAAIkH,WAlCZ,IAsCnB,OAHA1O,KAAK0sM,UAAUlzI,gBAAgBhyD,GAEKxH,KAAKslT,aAAaQ,aAAat+S,EAItE,CAFC,MAAOgB,IACL,MAAMu8S,GAAiBgB,4BAA4Bv9S,GACtD,CACJ,EAMa+8S,EAAAA,UAAAA,kCAAd,SAAgDS,uGAGT,gCAAMhmT,KAAK0sM,UAAUu5G,aAAaD,WAEjE,OAFME,EAAyBtgN,EAAAA,OAExB,CAAP,EAAO5lG,KAAKslT,aAAaQ,aAAa,IAAIp3S,WAAWw3S,YAErD,iBAAMnB,GAAiBgB,4BAA4BI,0BAE1D,EACL,CAAC,ICrDKC,GAAgB,UAIhBC,GAA8B,IAAI33S,WAAW,CAAC,EAAM,EAAM,kBAW5D,WAAYg5E,GAGR,GAFA1nF,KAAK0nF,OAASA,GAER1nF,KAAKsmT,eACP,MAAMvB,GAAiBwB,8BAA8B,oDAGzDvmT,KAAKwmT,wBAA0B,CAC3BplT,KAzBiB,oBA0BjBkK,KAAM86S,GACNK,cAvBW,KAwBXC,eAAgBL,GAEvB,CAsNL,OAhNUM,EAAAA,UAAAA,aAAN,SAAmBzD,8EAGf,OAFMrpT,EAAO4oT,GAAmBiB,gBAAgBR,GAEzC,CAAP,EAAOljT,KAAK4mT,cAAgB5mT,KAAK6mT,kBAAkBT,GAAevsT,GAAQmG,KAAK8mT,sBAAsBV,GAAevsT,SACvH,EAMD8sT,EAAAA,UAAAA,gBAAAA,SAAgBI,GACZ,IAAMr6G,EAAY/gM,OAAM,UAAgBA,OAAO2tD,OAC/C,IAAKozI,EAAUlzI,gBACX,MAAMurP,GAAiBwB,8BAA8B,mCAEzD75G,EAAUlzI,gBAAgButP,EAC7B,EAOKJ,EAAAA,UAAAA,gBAAN,SAAsBK,EAAsBC,wEACxC,MAAO,CAAP,EACIjnT,KAAK4mT,cACD5mT,KAAKknT,oBAAoBF,EAAaC,GACpCt7S,OAAO2tD,OAAO6tP,OAAOC,YAAYpnT,KAAKwmT,wBAAyBQ,EAAaC,SAEzF,EAOKN,EAAAA,UAAAA,UAAN,SAAgBnpT,wEACZ,MAAO,CAAP,EAAOwC,KAAK4mT,cAAgB5mT,KAAKqnT,kBAAkB7pT,GAAOmO,OAAO2tD,OAAO6tP,OAAOG,UAAUvgH,GAAgBvpM,SAC5G,EASKmpT,EAAAA,UAAAA,UAAN,SAAgBnpT,EAAiBwpT,EAAsBC,gFAInD,OAHMM,EAAYZ,EAAca,aAAahqT,GACvCiqT,EAAYhF,GAAmBiF,oBAAoBH,GAElD,CAAP,EAAOvnT,KAAK4mT,cACR5mT,KAAK2nT,kBAAkBF,EAAWT,EAAaC,GAC7Ct7S,OAAO2tD,OAAO6tP,OAAOS,UAAU7gH,GAAgBvpM,EAAKwC,KAAKwmT,wBAAyBQ,EAAaC,SACxG,EAOKN,EAAAA,UAAAA,KAAN,SAAWnpT,EAAgB3D,wEACvB,MAAO,CAAP,EAAOmG,KAAK4mT,cACR5mT,KAAK6nT,aAAarqT,EAAK3D,GACrB8R,OAAO2tD,OAAO6tP,OAAOlvQ,KAAKj4C,KAAKwmT,wBAAyBhpT,EAAK3D,SACtE,EAKO8sT,EAAAA,UAAAA,aAAR,WACI,OAAO3mT,KAAK4mT,eAAiB5mT,KAAK8nT,kBACrC,EAKOnB,EAAAA,UAAAA,YAAR,WACI,MAAO,aAAch7S,MACxB,EAKOg7S,EAAAA,UAAAA,iBAAR,WACI,MAAO,WAAYh7S,MACtB,EAOag7S,EAAAA,UAAAA,sBAAd,SAAoCoB,EAAmBluT,wEACnD,MAAO,CAAP,EAAO8R,OAAO2tD,OAAO6tP,OAAOh9J,OAAO49J,EAAWluT,SACjD,EAOa8sT,EAAAA,UAAAA,kBAAd,SAAgCoB,EAAmBluT,wEAC/C,MAAO,CAAP,EAAO,IAAIL,SAAQ,SAACC,EAASC,GACzB,IAAMsuT,EAAkBr8S,OAAM,SAAaw7S,OAAOh9J,OAAO49J,EAAWluT,EAAK2N,QACzEwgT,EAAgBnqT,iBAAiB,YAAY,SAAC2K,GAC1C/O,EAAQ+O,EAAE5C,OAAOoI,OACpB,IACDg6S,EAAgBnqT,iBAAiB,SAAS,SAACqF,GACvCxJ,EAAOwJ,EACV,GACJ,UACJ,EAOayjT,EAAAA,UAAAA,oBAAd,SAAkCK,EAAsBC,mFACpD,MAAO,CAAP,EAAO,IAAIztT,SAAQ,SAACC,EAAmBC,GACnC,IAAMuuT,EAAgBt8S,OAAM,SAAaw7S,OAAOC,YAAY5/L,EAAKg/L,wBAAyBQ,EAAaC,GACvGgB,EAAcpqT,iBAAiB,YAAY,SAAC2K,GACxC/O,EAAQ+O,EAAE5C,OAAOoI,OACpB,IAEDi6S,EAAcpqT,iBAAiB,SAAS,SAACqF,GACrCxJ,EAAOwJ,EACV,GACJ,UACJ,EAOayjT,EAAAA,UAAAA,kBAAd,SAAgCnpT,wEAC5B,MAAO,CAAP,EAAO,IAAIhE,SAAQ,SAACC,EAAmBC,GACnC,IAAMwuT,EAAcv8S,OAAM,SAAaw7S,OAAOG,UAAUvgH,GAAgBvpM,GACxE0qT,EAAYrqT,iBAAiB,YAAY,SAAC2K,GACtC,IAAM2/S,EAA4B3/S,EAAE5C,OAAOoI,OAErCo6S,EAAe3F,GAAmB2B,gBAAgB,IAAI11S,WAAWy5S,IAClEj/S,QAAQ,MAAOu1L,GAAUyB,cACzBh3L,QAAQ,MAAOu1L,GAAUyB,cACzBh3L,QAAQ,MAAOu1L,GAAUyB,cACzB9rM,MAAM,KAAKoV,KAAKi1L,GAAUyB,cAC1Bh3L,QAAQ,KAAUu1L,GAAUyB,cAEjC,IACIzmM,EAAQ4O,KAAKC,MAAM8/S,GAGtB,CAFC,MAAO5/S,GACL9O,EAAO8O,EACV,CACJ,IAED0/S,EAAYrqT,iBAAiB,SAAS,SAACqF,GACnCxJ,EAAOwJ,EACV,GACJ,UACJ,EASayjT,EAAAA,UAAAA,kBAAd,SAAgCc,EAAwBT,EAAsBC,mFAC1E,MAAO,CAAP,EAAO,IAAIztT,SAAQ,SAACC,EAAmBC,GACnC,IAAM2uT,EAAc18S,OAAM,SAAaw7S,OAAOS,UAAU7gH,GAAgB0gH,EAAWjgM,EAAKg/L,wBAAyBQ,EAAaC,GAC9HoB,EAAYxqT,iBAAiB,YAAY,SAAC2K,GACtC/O,EAAQ+O,EAAE5C,OAAOoI,OACpB,IAEDq6S,EAAYxqT,iBAAiB,SAAS,SAACqF,GACnCxJ,EAAOwJ,EACV,GACJ,UACJ,EAOayjT,EAAAA,UAAAA,aAAd,SAA2BnpT,EAAgB3D,mFACvC,MAAO,CAAP,EAAO,IAAIL,SAAQ,SAACC,EAAmBC,GACnC,IAAM4uT,EAAS38S,OAAM,SAAaw7S,OAAOlvQ,KAAKuvE,EAAKg/L,wBAAyBhpT,EAAK3D,GACjFyuT,EAAOzqT,iBAAiB,YAAY,SAAC2K,GACjC/O,EAAQ+O,EAAE5C,OAAOoI,OACpB,IAEDs6S,EAAOzqT,iBAAiB,SAAS,SAACqF,GAC9BxJ,EAAOwJ,EACV,GACJ,UACJ,EAMMyjT,EAAAA,aAAP,SAAoB4B,GAChB,OAAOlgT,KAAKI,UAAU8/S,EAAKxkT,OAAOsC,KAAKkiT,GAAKhkS,OAC/C,EACL,CAAC,kBCnOG,aACIvkB,KAAKwoT,OAASvhH,GACdjnM,KAAKqN,Q5XiJa,E4XhJlBrN,KAAKyoT,U5XiJmBxhH,e4XhJxBjnM,KAAK0oT,QAAS,CACjB,CA2ML,OAtMUC,EAAAA,UAAAA,KAAN,2FACI,MAAO,CAAP,EAAO,IAAInvT,SAAQ,SAACC,EAASC,GACzB,IAAMkvT,EAASj9S,OAAOk9S,UAAUhtT,KAAK2rH,EAAKghM,OAAQhhM,EAAKn6G,SACvDu7S,EAAO/qT,iBAAiB,iBAAiB,SAAC2K,GACxBA,EACR5C,OAAOoI,OAAO86S,kBAAkBthM,EAAKihM,UAC9C,IACDG,EAAO/qT,iBAAiB,WAAW,SAAC2K,GAChC,IAAMqW,EAAQrW,EACdg/G,EAAK8a,GAAKzjH,EAAMjZ,OAAOoI,OACvBw5G,EAAKkhM,QAAS,EACdjvT,GACH,IACDmvT,EAAO/qT,iBAAiB,SAAU,WAAM,OAAAnE,EAAOqrT,GAAiBgE,iCAAiC,GACpG,UACJ,EAMDJ,EAAAA,UAAAA,gBAAAA,WACI,IAAMrmL,EAAKtiI,KAAKsiI,GACZA,GAAMtiI,KAAK0oT,SACXpmL,EAAGl0C,QACHpuF,KAAK0oT,QAAS,EAErB,EAKaC,EAAAA,UAAAA,iBAAd,8GACS3oT,KAAK0oT,OAAN,MACO,GAAM1oT,KAAKnE,eAAlB,MAAO,CAAP,EAAO+pG,EAAAA,+BAEd,EAMK+iN,EAAAA,UAAAA,QAAN,SAAcnrT,0GACV,SAAMwC,KAAKgpT,2BACX,OADApjN,EAAAA,OACO,CAAP,EAAO,IAAIpsG,SAAW,SAACC,EAASC,GAE5B,IAAK8tH,EAAK8a,GACN,OAAO5oI,EAAOqrT,GAAiBkE,8BAEnC,IAEMC,EAFc1hM,EAAK8a,GAAGn4C,YAAY,CAACq9B,EAAKihM,WAAY,YAC1BU,YAAY3hM,EAAKihM,WACvBlsS,IAAI/e,GAE9B0rT,EAAMrrT,iBAAiB,WAAW,SAAC2K,GAC/B,IAAMqW,EAAQrW,EACdg/G,EAAK4hM,kBACL3vT,EAAQolB,EAAMjZ,OAAOoI,OACxB,IAEDk7S,EAAMrrT,iBAAiB,SAAS,SAAC2K,GAC7Bg/G,EAAK4hM,kBACL1vT,EAAO8O,EACV,GACJ,WACJ,EAOKmgT,EAAAA,UAAAA,QAAN,SAAcnrT,EAAakN,0GACvB,SAAM1K,KAAKgpT,2BACX,OADApjN,EAAAA,OACO,CAAP,EAAO,IAAIpsG,SAAc,SAACC,EAAmBC,GAEzC,IAAK8tH,EAAK8a,GACN,OAAO5oI,EAAOqrT,GAAiBkE,8BAEnC,IAIMI,EAJc7hM,EAAK8a,GAAGn4C,YAAY,CAACq9B,EAAKihM,WAAY,aAE1BU,YAAY3hM,EAAKihM,WAEvBz/M,IAAIt+F,EAASlN,GAEvC6rT,EAAMxrT,iBAAiB,WAAW,WAC9B2pH,EAAK4hM,kBACL3vT,GACH,IAED4vT,EAAMxrT,iBAAiB,SAAS,SAAC2K,GAC7Bg/G,EAAK4hM,kBACL1vT,EAAO8O,EACV,GACJ,WACJ,EAMKmgT,EAAAA,UAAAA,WAAN,SAAiBnrT,0GACb,SAAMwC,KAAKgpT,2BACX,OADApjN,EAAAA,OACO,CAAP,EAAO,IAAIpsG,SAAc,SAACC,EAAmBC,GACzC,IAAK8tH,EAAK8a,GACN,OAAO5oI,EAAOqrT,GAAiBkE,8BAGnC,IAEMK,EAFc9hM,EAAK8a,GAAGn4C,YAAY,CAACq9B,EAAKihM,WAAY,aAC1BU,YAAY3hM,EAAKihM,WACpB/vO,OAAOl7E,GAEpC8rT,EAASzrT,iBAAiB,WAAW,WACjC2pH,EAAK4hM,kBACL3vT,GACH,IAED6vT,EAASzrT,iBAAiB,SAAS,SAAC2K,GAChCg/G,EAAK4hM,kBACL1vT,EAAO8O,EACV,GACJ,WACJ,EAKKmgT,EAAAA,UAAAA,QAAN,kHACI,SAAM3oT,KAAKgpT,2BACX,OADApjN,EAAAA,OACO,CAAP,EAAO,IAAIpsG,SAAkB,SAACC,EAAmBC,GAC7C,IAAK8tH,EAAK8a,GACN,OAAO5oI,EAAOqrT,GAAiBkE,8BAGnC,IAEMM,EAFc/hM,EAAK8a,GAAGn4C,YAAY,CAACq9B,EAAKihM,WAAY,YAC1BU,YAAY3hM,EAAKihM,WACnBvxO,aAE9BqyO,EAAU1rT,iBAAiB,WAAW,SAAC2K,GACnC,IAAMqW,EAAQrW,EACdg/G,EAAK4hM,kBACL3vT,EAAQolB,EAAMjZ,OAAOoI,OACxB,IAEDu7S,EAAU1rT,iBAAiB,SAAU,SAAC2K,GAClCg/G,EAAK4hM,kBACL1vT,EAAO8O,EACV,GACJ,WACJ,EAMKmgT,EAAAA,UAAAA,YAAN,SAAkBnrT,0GACd,SAAMwC,KAAKgpT,2BAEX,OAFApjN,EAAAA,OAEO,CAAP,EAAO,IAAIpsG,SAAiB,SAACC,EAAmBC,GAC5C,IAAK8tH,EAAK8a,GACN,OAAO5oI,EAAOqrT,GAAiBkE,8BAGnC,IAEMO,EAFchiM,EAAK8a,GAAGn4C,YAAY,CAACq9B,EAAKihM,WAAY,YAC1BU,YAAY3hM,EAAKihM,WACf5vR,MAAMr7B,GAExCgsT,EAAc3rT,iBAAiB,WAAW,SAAC2K,GACvC,IAAMqW,EAAQrW,EACdg/G,EAAK4hM,kBACL3vT,EAAgC,IAAxBolB,EAAMjZ,OAAOoI,OACxB,IAEDw7S,EAAc3rT,iBAAiB,SAAS,SAAC2K,GACrCg/G,EAAK4hM,kBACL1vT,EAAO8O,EACV,GACJ,WACJ,EAOKmgT,EAAAA,UAAAA,eAAN,gFAOI,OAJI3oT,KAAKsiI,IAAMtiI,KAAK0oT,QAChB1oT,KAAKopT,kBAGF,CAAP,EAAO,IAAI5vT,SAAiB,SAACC,EAAmBC,GAC5C,IAAM+vT,EAAkB99S,OAAOk9S,UAAUa,eAAeziH,IACxDwiH,EAAgB5rT,iBAAiB,WAAW,WAAM,OAAApE,GAAQ,EAAK,IAC/DgwT,EAAgB5rT,iBAAiB,WAAW,WAAM,OAAApE,GAAQ,EAAK,IAC/DgwT,EAAgB5rT,iBAAiB,SAAS,WAAM,OAAAnE,GAAO,EAAM,GAChE,UACJ,EACL,CAAC,kBCpOG,aACIsG,KAAKkO,MAAQ,IAAIwlE,GACpB,CA6BL,OA3BIi2O,EAAAA,UAAAA,QAAAA,SAAQnsT,GACJ,OAAOwC,KAAKkO,MAAMqO,IAAI/e,IAAQ,IACjC,EAEDmsT,EAAAA,UAAAA,QAAAA,SAAQnsT,EAAa7B,GACjBqE,KAAKkO,MAAMoO,IAAI9e,EAAK7B,EACvB,EAEDguT,EAAAA,UAAAA,WAAAA,SAAWnsT,GACPwC,KAAKkO,MAAMwqE,OAAOl7E,EACrB,EAEDmsT,EAAAA,UAAAA,QAAAA,WACI,IAAMC,EAAsB,GAI5B,OAHA5pT,KAAKkO,MAAM3Q,SAAQ,SAAC5B,EAAU6B,GAC1BosT,EAAU/oT,KAAKrD,EAClB,IACMosT,CACV,EAEDD,EAAAA,UAAAA,YAAAA,SAAYnsT,GACR,OAAOwC,KAAKkO,MAAMwpD,IAAIl6D,EACzB,EAEDmsT,EAAAA,UAAAA,MAAAA,WACI3pT,KAAKkO,MAAMgyB,OACd,EACL,CAAC,kBCrBG,WAAYwnD,EAAgBmiO,GACxB7pT,KAAK8pT,cAAgB,IAAIH,GACzB3pT,KAAK+pT,eAAiB,IAAIpB,GAC1B3oT,KAAK0nF,OAASA,EACd1nF,KAAK6pT,UAAYA,CACpB,CAqHL,OAnHYG,EAAAA,UAAAA,0BAAR,SAAkC9mT,GAC9B,KAAIA,aAAiB6hT,IAAoB7hT,EAAM8gM,YAAc8gH,GAA4CxhT,MAGrG,MAAMJ,EAFNlD,KAAK0nF,OAAOxkF,MAAM,8IAIzB,EAMK8mT,EAAAA,UAAAA,QAAN,SAAcxsT,0GACJ+U,EAAOvS,KAAK8pT,cAAc30P,QAAQ33D,GACrC,6BAGY,6BADPwC,KAAK0nF,OAAOklH,QAAQ,+EACb,GAAM5sM,KAAK+pT,eAAe50P,QAAQ33D,WAAzC,MAAO,CAAP,EAAOooG,EAAAA,iCAEP5lG,KAAKiqT,0BAA0B9D,gBAGvC,MAAO,CAAP,EAAO5zS,SACV,EAQKy3S,EAAAA,UAAAA,QAAN,SAAcxsT,EAAa7B,qGACvBqE,KAAK8pT,cAAc70P,QAAQz3D,EAAK7B,oBAE5B,gCAAMqE,KAAK+pT,eAAe90P,QAAQz3D,EAAK7B,kBAAvCiqG,EAAAA,sCAEA5lG,KAAKiqT,0BAA0BC,gCAEtC,EAMKF,EAAAA,UAAAA,WAAN,SAAiBxsT,qGACbwC,KAAK8pT,cAAc50P,WAAW13D,oBAE1B,gCAAMwC,KAAK+pT,eAAe70P,WAAW13D,kBAArCooG,EAAAA,sCAEA5lG,KAAKiqT,0BAA0BE,gCAEtC,EAMKH,EAAAA,UAAAA,QAAN,kHAE6B,KADnBJ,EAAY5pT,KAAK8pT,cAAcM,WACvB/1T,OAAV,6BAGW,6BADP2L,KAAK0nF,OAAOklH,QAAQ,8DACb,GAAM5sM,KAAK+pT,eAAeK,kBAAjC,MAAO,CAAP,EAAOxkN,EAAAA,iCAEP5lG,KAAKiqT,0BAA0BI,gBAGvC,MAAO,CAAP,EAAOT,SACV,EAMKI,EAAAA,UAAAA,YAAN,SAAkBxsT,0GACR8sT,EAActqT,KAAK8pT,cAAcQ,YAAY9sT,GAChD,6BAGY,6BADPwC,KAAK0nF,OAAOklH,QAAQ,sEACb,GAAM5sM,KAAK+pT,eAAeO,YAAY9sT,WAA7C,MAAO,CAAP,EAAOooG,EAAAA,iCAEP5lG,KAAKiqT,0BAA0BM,gBAGvC,MAAO,CAAP,EAAOD,SACV,EAKDN,EAAAA,UAAAA,cAAAA,WAEIhqT,KAAK0nF,OAAOklH,QAAQ,+BAA+B5sM,KAAK6pT,WACxD7pT,KAAK8pT,cAAc5pR,QACnBlgC,KAAK0nF,OAAOklH,QAAQ,sBAAsB5sM,KAAK6pT,UAAS,WAC3D,EAMKG,EAAAA,UAAAA,gBAAN,+GAG0B,6BADlBhqT,KAAK0nF,OAAOklH,QAAQ,gCACF,GAAM5sM,KAAK+pT,eAAeL,yBAK5C,OALMc,EAAY5kN,EAAAA,SAEd5lG,KAAK0nF,OAAOklH,QAAQ,+BAGjB,CAAP,EAAO49G,UAGP,kBADAxqT,KAAKiqT,0BAA0BQ,GACxB,CAAP,GAAO,0BAEd,EACL,CAAC,KZtID,SAAYjJ,GACRA,EAAAA,eAAAA,iBACAA,EAAAA,cAAAA,eAFJ,EAAYA,KAAAA,GAAmB,SaCnBkJ,iBbWR,WAAYhjO,GACR1nF,KAAK0nF,OAASA,EACd1nF,KAAK2qT,eAAiB,IAAIX,GAAkChqT,KAAK0nF,OAAQ85N,GAAoBmJ,gBAC7F3qT,KAAK4qT,cAAgB,IAAIZ,GAA8BhqT,KAAK0nF,OAAQ85N,GAAoBoJ,cAC3F,CAwBL,OAtBUC,EAAAA,UAAAA,MAAN,6GAEI7qT,KAAK2qT,eAAeG,gBACvB9qT,KAAK4qT,cAAcE,iCAOZ,gCAAM9qT,KAAK2qT,eAAeI,0BAC1B,OADAnlN,EAAAA,OACO,CAAP,GAAO,UAQP,6BANiB/xG,MACbmM,KAAK0nF,OAAOxkF,MAAM,wCAAwCijT,EAAE1lT,SAE5DT,KAAK0nF,OAAOxkF,MAAM,+CAGf,CAAP,GAAO,0BAEd,EACL,CAAC,kBcJG,WAAYwkF,EAAgBsjO,GACxBhrT,KAAK0nF,OAASA,EAEd1nF,KAAKirT,cAAgB,IAAItE,GAAc3mT,KAAK0nF,QAC5C1nF,KAAKkrT,UAAY,IAAI5H,GACrBtjT,KAAKmrT,UAAY,IAAIlH,GACrBjkT,KAAKorT,cAAgB,IAAI/I,GAAcriT,KAAKirT,eAC5CjrT,KAAKqrT,cAAgB,IAAI9F,GAAcvlT,KAAKirT,eAC5CjrT,KAAKkO,MAAQ,IAAI28S,GAAe7qT,KAAK0nF,QACrC1nF,KAAKgrT,kBAAoBA,CAC5B,CA2JL,OArJIM,EAAAA,UAAAA,cAAAA,WACI,OAAOtrT,KAAKorT,cAAcG,cAC7B,EAMDD,EAAAA,UAAAA,aAAAA,SAAanyQ,GACT,OAAOn5C,KAAKkrT,UAAUjiT,OAAOkwC,EAChC,EAMDmyQ,EAAAA,UAAAA,aAAAA,SAAanyQ,GACT,OAAOn5C,KAAKmrT,UAAUxvO,OAAOxiC,EAChC,EAKKmyQ,EAAAA,UAAAA,kBAAN,gFACI,MAAO,CAAP,EAAOtrT,KAAKqrT,cAAcG,sBAC7B,EAMKF,EAAAA,UAAAA,uBAAN,SAA6B9wT,yHAIM,OAHzBixT,EAAkD,QAAzB,EAAGzrT,KAAKgrT,yBAAiBplN,IAAAA,OAAA,EAAAA,EAAE8lN,iBAAiBzK,GAAkB0K,iCAAkCnxT,EAAQ8pM,eAGxG,GAAMtkM,KAAKirT,cAAcW,gBAAgBN,EAAUO,YAAaP,EAAUQ,wBAGxE,OAH3BC,EAAyB/lN,EAAAA,OAGE,GAAMhmG,KAAKirT,cAAce,UAAUD,EAAQnjJ,mBAStD,OAThBqjJ,EAA2BjmN,EAAAA,OAE3BkmN,EAAiC,CACnC1jT,EAAGyjT,EAAazjT,EAChB2jT,IAAKF,EAAaE,IAClBt7S,EAAGo7S,EAAap7S,GAGdu7S,EAA0BzF,GAAca,aAAa0E,GACrC,GAAMlsT,KAAKqsT,WAAWD,WAGV,OAH5BE,EAAgBtmN,EAAAA,OAGY,GAAMhmG,KAAKirT,cAAce,UAAUD,EAAQQ,oBAElC,OAFrCC,EAA4BxmN,EAAAA,OAES,GAAMhmG,KAAKirT,cAAcwB,UAAUD,GAAe,EAAO,CAAC,iBAGrG,OAHME,EAAqC1mN,EAAAA,OAG3C,GAAMhmG,KAAKkO,MAAMy8S,eAAe11P,QAC5Bq3P,EACA,CACIC,WAAYG,EACZ9jJ,UAAWmjJ,EAAQnjJ,UACnB+jJ,cAAenyT,EAAQoyT,sBACvBC,WAAYryT,EAAQsyT,6BAU5B,OAhBA9mN,EAAAA,OAUIylN,GACAA,EAA0BsB,eAAe,CACrC/qR,SAAS,IAIV,CAAP,EAAOsqR,SACV,EAMKhB,EAAAA,UAAAA,sBAAN,SAA4BzJ,+FACxB,SAAM7hT,KAAKkO,MAAMy8S,eAAez1P,WAAW2sP,WAC1B,OADjBj8M,EAAAA,OACiB,GAAM5lG,KAAKkO,MAAMy8S,eAAeL,YAAYzI,WAC7D,MAAO,CAAP,GADiBj8M,EAAAA,cAEpB,EAKK0lN,EAAAA,UAAAA,cAAN,uGACW,SAAMtrT,KAAKkO,MAAMgyB,gBAAxB,MAAO,CAAP,EAAO0lE,EAAAA,cACV,EAOK0lN,EAAAA,UAAAA,QAAN,SAAc5gT,EAA4Bm3S,EAAav9G,mIAE7B,OADhB0oH,EAA2C,QAAzB,EAAGhtT,KAAKgrT,yBAAiBplN,IAAAA,OAAA,EAAAA,EAAE8lN,iBAAiBzK,GAAkBgM,kBAAmB3oH,GACnF,GAAMtkM,KAAKkO,MAAMy8S,eAAex1P,QAAQ0sP,WAE9D,KAFMqL,EAAgBlnN,EAAAA,QAGlB,MAAM++M,GAAiBoI,uCAAuCtL,GAI7C,SAAM7hT,KAAKirT,cAAce,UAAUkB,EAActkJ,mBAqB9C,OArBlBqjJ,EAAejmN,EAAAA,OACfonN,EAAqBzG,GAAca,aAAayE,GAGhDoB,EAAyBrtT,KAAKkrT,UAAUoC,UAAUjlT,KAAKI,UAAU,CAAEo5S,IAAKA,KAGxEK,EAAYJ,GAAWyL,mBAAmB,CAAE1L,IAAKwL,EAAwBzL,IAAKqK,EAAarK,MAC3F4L,EAAmBxtT,KAAKkrT,UAAUoC,UAAUpL,GAGlDx3S,EAAQ+iT,IAAM,CACVlF,IAAKlgT,KAAKC,MAAM8kT,IAEdM,EAAiB1tT,KAAKkrT,UAAUoC,UAAUjlT,KAAKI,UAAUiC,IAGzDijT,EAAiBH,EAAgB,IAAIE,EAGrCE,EAAcnL,GAAmBiF,oBAAoBiG,GACnC,GAAM3tT,KAAKirT,cAAchzQ,KAAKi1Q,EAAcX,WAAYqB,WAWhF,OAXMC,EAAkB7nN,EAAAA,OAClB8nN,EAAmB9tT,KAAKkrT,UAAUpF,aAAa,IAAIp3S,WAAWm/S,IAE9DE,EAAeJ,EAAW,IAAIG,EAEhCd,GACAA,EAAmBD,eAAe,CAC9B/qR,SAAS,IAIV,CAAP,EAAO+rR,SACV,EAMKzC,EAAAA,UAAAA,WAAN,SAAiB0C,uGACmB,SAAMhuT,KAAKirT,cAAchF,aAAa+H,WAEtE,OAFMC,EAA0BroN,EAAAA,OAC1BsoN,EAAY,IAAIx/S,WAAWu/S,GAC1B,CAAP,EAAOjuT,KAAKkrT,UAAUpF,aAAaoI,UACtC,EAxKc5C,EAAAA,eAAkC,CAAC,OAAQ,UAC3CA,EAAAA,aAAuB,EAwK1C,CAxLA,ICfA,cAoCI,SAAY6C,EAAA79G,EAAkB1E,EAAmBlkH,EAAgB0mO,EAAqBC,EAAwBC,GAC1GtuT,KAAK4rM,UAAYA,EACjB5rM,KAAKouT,YAAcA,EACnBpuT,KAAKquT,eAAiBA,EACtBruT,KAAKsuT,qBAAuBA,EAC5BtuT,KAAKswM,SAAWA,EAChBtwM,KAAK0nF,OAASA,EACd1nF,KAAKskO,UAAY,IAAI5wJ,IACrB1zE,KAAKuuT,sBAAwB,IAAI76O,IACjC1zE,KAAKwuT,iBAAmB,IAAI96O,GAC/B,CAqSL,OA1QIy6O,EAAAA,UAAAA,iBAAAA,SAAiBM,EAAgCnqH,GAAjD,QAwDC98E,EAAAA,KAtDSknM,EAAqBpqH,GAAiBtkM,KAAK2uT,aAC5CrqH,GACDtkM,KAAK0nF,OAAOjsD,KAAK,qDAAqDgzR,EAAyB,eAAEC,GAGrG1uT,KAAK0nF,OAAOmD,MAAM,0DAA0D4jO,EAAeC,GAC3F,IAAME,EAAyB5uT,KAAK6uT,6BAA6BJ,EAAaC,GAC9EE,EAAuBlD,mBAEvB,IAAMoD,EAAoC,CACtCliO,QAAS5sF,KAAK2uT,aACdlzT,OAAQylT,GAAuBnyC,WAC/BnjE,UAAW5rM,KAAK4rM,UAChBwiH,YAAapuT,KAAKouT,YAClBC,eAAgBruT,KAAKquT,eACrBU,QAAkC,QAAzB,EAAA/uT,KAAKsuT,4BAAoB1oN,IAAAA,OAAA,EAAAA,EAAEmpN,QACpCC,WAAqC,QAAzB,EAAAhvT,KAAKsuT,4BAAoBtoN,IAAAA,OAAA,EAAAA,EAAEgpN,WACvC1+G,SAAUtwM,KAAKswM,SACflvM,KAAMqtT,EACNQ,YAAa97T,KAAKqX,MAClB85L,cAAeoqH,GAQnB,OAJA1uT,KAAKkvT,0BAA0BJ,GAC/B9uT,KAAKmvT,iBAAiBL,EAAiBF,GAGhC,CACH7B,eAAgB,SAACluS,GACb,IAAMuwS,EAAiB5nM,EAAKulM,eAAcn8P,GAACA,GAAAA,CAAAA,EAEpCk+P,GAEAjwS,IAQP,OALIuwS,GAEA5nM,EAAK0nM,0BAA0BE,GAG5BA,CACV,EACDC,iBAAkB,WACd,OAAO7nM,EAAK8nM,kBAAkBR,EAAgB1tT,KAAM0tT,EAAgBxqH,cACvE,EACDirH,mBAAoB,WAChB,OAAO/nM,EAAKgoM,oBAAoBV,EAAgBxqH,cACnD,EACDmrH,YAAab,EACb/vS,MAAOiwS,EAGd,EASDX,EAAc,UAAApB,eAAd,SAAeluS,GACX,IAAM+vS,EAAyB5uT,KAAKwuT,iBAAiBjyS,IAAIsC,EAAM+tE,SAC/D,GAAIgiO,EAAwB,CAExB5uT,KAAKwuT,iBAAiB91O,OAAO75D,EAAM+tE,SACnCgiO,EAAuB7B,iBACvB,IAAM2C,EAAad,EAAuBS,mBAE1C,GAAmB,OAAfK,EAUA,OATA1vT,KAAK0nF,OAAOmD,MAAM,wDAAwDhsE,EAAMzd,KAAI,KAAKsuT,EAAe,MAAE7wS,EAAMylL,eAE5F,OAEhBorH,WAAYjpT,KAAK4kC,MAAMqkR,IACpB7wS,GAAK,CACRpjB,OAAQylT,GAAuBz+B,YAKnCziR,KAAK0nF,OAAOmD,MAAM,uDAAwDhsE,EAAMylL,cAEvF,MACGtkM,KAAK0nF,OAAOmD,MAAM,gDAAgDhsE,EAAM+tE,QAAW/tE,EAAMylL,eAG7F,OAAO,IACV,EAWO6pH,EAAyB,UAAAe,0BAAjC,SAAkCrwS,GAC9B,IAAM8wS,EAAiB3vT,KAAKuuT,sBAAsBhyS,IAAIsC,EAAMylL,eACxDqrH,GACA3vT,KAAK0nF,OAAOmD,MAAM,kDAAkDhsE,EAAMzd,KAAI,iBAAkByd,EAAMylL,eACtGqrH,EAAerzS,IAAIuC,EAAM+tE,QAAS/tE,KAElC7e,KAAK0nF,OAAOmD,MAAM,kDAAkDhsE,EAAMzd,KAAI,WAAYyd,EAAMylL,eAChGtkM,KAAKuuT,sBAAsBjyS,IAAIuC,EAAMylL,eAAe,IAAI5wH,KAAMp3D,IAAIuC,EAAM+tE,QAAS/tE,IAExF,EASOsvS,EAAAA,UAAAA,iBAAR,SAAyBtvS,EAAyB4wS,GAC9CzvT,KAAKwuT,iBAAiBlyS,IAAIuC,EAAM+tE,QAAS6iO,EAC5C,EAQDtB,EAAAA,UAAAA,kBAAAA,SAAkBM,EAAgCnqH,GAAlD,IA4EC98E,EAAAA,KA3EGxnH,KAAK0nF,OAAOmD,MAAM,2DAA2D4jO,EAAenqH,GAC5F,IAAMsrH,EAAyB5vT,KAAKuuT,sBAAsBhyS,IAAI+nL,GAC9D,GAAIsrH,EAAwB,CACxB5vT,KAAKwvT,oBAAoBlrH,GAOzB,IAAMurH,EAAsC,GAC5CD,EAAuBryT,SAAQ,SAAAshB,GAC3B,GAAIA,EAAMzd,OAASqtT,GAAe5vS,EAAMpjB,SAAWylT,GAAuBz+B,UAAW,CACjFj7J,EAAK9/B,OAAOmD,MAAM,gDAAgDhsE,EAAMzd,KAAkB,cAAAqtT,EAAenqH,GAEzG,IAAM8qH,EAAiB5nM,EAAKulM,eAAeluS,GACvCuwS,GACAS,EAAgBhvT,KAAKuuT,EAE5B,CAEDS,EAAgBhvT,KAAKge,EACxB,IAGD,IAAMixS,EAAwBD,EAAgBtrS,MAAK,SAACwrS,EAAQC,GAAW,OAAAD,EAAOd,YAAce,EAAOf,WAAW,IAGxGgB,EAAiBH,EAAsBngT,QAAO,SAAAkP,GAAS,OAAAA,EAAMzd,OAASqtT,GAAe5vS,EAAMpjB,SAAWylT,GAAuBz+B,SAAS,IAC5I,GAAIwtC,EAAe57T,OAAS,EAAG,CAKvB47T,EAAe57T,OAAS,GACxB2L,KAAK0nF,OAAOklH,QAAQ,2FAA4FtI,GAEpH,IAAM4rH,EAAgBD,EAAe,GAErCjwT,KAAK0nF,OAAOklH,QAAQ,4CAA4C6hH,EAAenqH,GAG/E,IAAM6rH,EAAcL,EAAsB3gS,QAAO,SAACihS,EAAUhhS,GACxD,GAAIA,EAAQhuB,OAASqtT,EAAa,CAC9BjnM,EAAK9/B,OAAOmD,MAAM,wDAAwDz7D,EAAQhuB,KAAQkjM,GAE1F,IAAM+rH,EAAwBjhS,EAAQhuB,KAAI,aAMrCgvT,EAASC,GAGV7oM,EAAK9/B,OAAOklH,QAAQ,yCAAyC6hH,EAAkC,uBAAAr/R,EAAQhuB,KAAI,aAAckjM,GAFzH8rH,EAASC,GAAsBjhS,EAAQsgS,WAIvCtgS,EAAQkhS,kBACRF,EAASE,gBAAkBlhS,EAAQkhS,iBAEnClhS,EAAQmhS,cACRH,EAASG,YAAcnhS,EAAQmhS,YAEtC,CAED,OAAOH,CACV,GAAEF,GAEHlwT,KAAKwwT,WAAW,CAACL,GAAcA,EAAY7rH,cAC9C,MACGtkM,KAAK0nF,OAAOklH,QAAQ,oEAAoE6hH,EAAenqH,EAE9G,MACGtkM,KAAK0nF,OAAOklH,QAAQ,2CAA4CtI,EAEvE,EAOD6pH,EAAmB,UAAAqB,oBAAnB,SAAoBlrH,GAChBtkM,KAAK0nF,OAAOmD,MAAM,wDAAyDy5G,GAC3EtkM,KAAKuuT,sBAAsB71O,OAAO4rH,EACrC,EAQD6pH,EAAsB,UAAAroH,uBAAtB,SAAuB15L,GACnB,IAAM0iM,EAAa9uM,KAAK2uT,aAIxB,OAHA3uT,KAAKskO,UAAUhoN,IAAIwyL,EAAY1iM,GAC/BpM,KAAK0nF,OAAOklH,QAAQ,+DAA+DkC,GAE5EA,CACV,EAQDq/G,EAAyB,UAAApoH,0BAAzB,SAA0B+I,GACtB,IAAM9gM,EAAShO,KAAKskO,UAAU5rJ,OAAOo2H,GAQrC,OANI9gM,EACAhO,KAAK0nF,OAAOklH,QAAQ,2CAA2CkC,EAAqB,aAEpF9uM,KAAK0nF,OAAOklH,QAAQ,2CAA2CkC,EAAyB,iBAGrF9gM,CACV,EAQDmgT,EAAAA,UAAAA,WAAAA,SAAW3vS,EAA4B8lL,GAAvC,IAOC98E,EAAAA,KANGxnH,KAAK0nF,OAAOklH,QAAQ,iDAAkDtI,GAEtEtkM,KAAKskO,UAAU/mO,SAAQ,SAAC6O,EAAuC0iM,GAC3DtnF,EAAK9/B,OAAOmD,MAAM,iDAAiDikH,EAAcxK,GACjFl4L,EAASvJ,MAAM,KAAM,CAAC2b,GACzB,GACJ,EAEJ2vS,CAAA,CAnVD,GCFA,2BASC,CAAD,OAPIsC,EAAgB,UAAA/E,iBAAhB,WAA4B,EAE5B+E,EAAc,UAAA1D,eAAd,WAA0B,EAC1B0D,EAAAA,UAAAA,iBAAAA,WACI,OAAO,IACV,EAEJA,CAAA,CATD,GAWA,0EAQC,CAAD,OAR2C//P,GAAiB,KACxDggQ,EAAAA,UAAAA,WAAAA,WACI,MAAO,aACV,EAEDA,EAAAA,UAAAA,6BAAAA,WACI,OAAO,IAAID,EACd,EACJC,CARD,EAA2CvC,ICmD9BwC,GAAyC,CAClDC,cAAe,WAEX,MAAMzsH,GAAU0sH,sBADG,8DAEtB,EACD5mH,aAAc,WAEV,MAAM9F,GAAU0sH,sBADG,6DAEtB,EACDvL,aAAc,WAEV,MAAMnhH,GAAU0sH,sBADG,6DAEtB,EACKC,kBAAN,gFAEI,KADmB,kEACb3sH,GAAU0sH,sBADG,wEAEtB,EACKE,uBAAN,gFAEI,KADmB,uEACb5sH,GAAU0sH,sBADG,6EAEtB,EACKG,sBAAN,gFAEI,KADmB,sEACb7sH,GAAU0sH,sBADG,4EAEtB,EACKI,cAAN,gFAEI,KADmB,8DACb9sH,GAAU0sH,sBADG,oEAEtB,EACKK,QAAN,gFAEI,KADmB,wDACb/sH,GAAU0sH,sBADG,8DAEtB,EACKxE,WAAN,gFAEI,KADmB,2DACbloH,GAAU0sH,sBADG,iEAEtB,GCjGQM,GAAwC,CACjD,uBACA,mBACA,kBAGSC,GAAyC,CAClD,eACA,oBACA,eACA,wBACA,oBAMSC,GACW,CAChB/tT,KAAM,kBACNkK,KAAM,wDAHD6jT,GAKmB,CACxB/tT,KAAM,6BACNkK,KAAM,uJAOd,eAEI,WAAYw2L,EAAoBjmH,EAAuBqmH,GAAvD,MACI78E,EAAAA,KAAAA,KAAMy8E,EAAWjmH,EAAcqmH,IAIlC,YAHG58E,EAAKpmH,KAAO,+BAEZ2C,OAAOysD,eAAeg3D,EAAM8pM,EAA6BtyT,YAC5D,CAgCL,OAvCkD0xD,GAAS,KAehD4gQ,EAAAA,2BAAP,SAAkCttH,EAAoBE,EAAsBE,GACxE,IAAMmtH,IAAmCvtH,GAAamtH,GAAsC70T,QAAQ0nM,IAAc,EAC5GwtH,IAAkCptH,GAAYgtH,GAAuC90T,QAAQ8nM,IAAa,EAC1GqtH,IAAmCvtH,GAAeitH,GAAsCp8S,MAAK,SAAC28S,GAChG,OAAOxtH,EAAY5nM,QAAQo1T,IAAgB,CAC9C,IAED,OAAOH,GAAkCE,GAAkCD,CAC9E,EAKMF,EAAAA,yBAAP,WACI,OAAO,IAAIA,EAA6BD,GAAuD/tT,KAAM+tT,GAAuD7jT,KAC/J,EAMM8jT,EAAAA,oCAAP,WACI,OAAO,IAAIA,EAA6BD,GAA+D/tT,KAAM+tT,GAA+D7jT,KAC/K,EACJ8jT,CAvCD,EAAkDntH,IC/BlD,eAEI,WAAYH,EAAoBjmH,EAAuBqmH,GAAvD,MACI78E,EAAAA,KAAAA,KAAMy8E,EAAWjmH,EAAcqmH,IAIlC,YAHG58E,EAAKpmH,KAAO,cAEZ2C,OAAOysD,eAAeg3D,EAAMmqM,EAAY3yT,YAC3C,CACL,OARiC0xD,GAAS,KAQzCihQ,CARD,EAAiCxtH,ICoBjC,2BAyLC,CAAD,OAxKIytH,EAAAA,UAAAA,kBAAAA,WACI,OAAOA,EAAiBC,6BAA6B7xT,KAAKoqM,cAAepqM,KAAK8rF,YACjF,EAKD8lO,EAAAA,UAAAA,qBAAAA,WACI,OAAOA,EAAiBE,gCACpB9xT,KAAK+xT,eACL/xT,KAAKswM,SACLtwM,KAAK4qM,MACL5qM,KAAKgyT,SAEZ,EAKDJ,EAAAA,UAAAA,eAAAA,WACI,OAAOA,EAAiBK,0BAA0BjyT,KAAK4F,OAC1D,EAKDgsT,EAAAA,UAAAA,sBAAAA,WACI,OAAOA,EAAiBM,2BACpBlyT,KAAKoqM,cACLpqM,KAAK8rF,YACL9rF,KAAK+xT,eACL/xT,KAAKswM,SACLtwM,KAAK4qM,MACL5qM,KAAK4F,OACL5F,KAAKgyT,SACLhyT,KAAKmyT,UACLnyT,KAAKoyT,oBAEZ,EAKDR,EAAAA,UAAAA,aAAAA,WACI,OAAQ5xT,KAAK+xT,gBACT,KAAKtwH,GAAe4wH,SAChB,OAAO1wH,GAAU0wH,SACrB,KAAK5wH,GAAe6wH,aACpB,KAAK7wH,GAAe8wH,8BAChB,OAAO5wH,GAAU2wH,aACrB,KAAK7wH,GAAe+wH,cAChB,OAAO7wH,GAAU6wH,cACrB,QACI,MAAMrrH,GAAgBsrH,sCAGjC,EAMMb,EAAiB,kBAAxB,SAAyBp0T,GAErB,OAAgE,IAA5DA,EAAIlB,QAAQmlM,GAAe6wH,aAAa70T,gBAEyC,IAA7ED,EAAIlB,QAAQmlM,GAAe8wH,8BAA8B90T,eAClDgkM,GAAe8wH,8BAEnB9wH,GAAe6wH,cACyC,IAAxD90T,EAAIlB,QAAQmlM,GAAe4wH,SAAS50T,eACpCgkM,GAAe4wH,UAC8C,IAA7D70T,EAAIlB,QAAQmlM,GAAe+wH,cAAc/0T,eACzCgkM,GAAe+wH,cAGnB/zH,GAAUwB,WACpB,EAMM2xH,EAAAA,2BAAP,SACIxnH,EACAt+G,EACAimO,EACAzhH,EACA1F,EACAhlM,EACAosT,EACAG,EACAC,GAUA,MARsB,CAClBpyT,KAAK6xT,6BAA6BznH,EAAet+G,GACjD9rF,KAAK8xT,gCAAgCC,EAAgBzhH,EAAU1F,EAAOonH,GACtEhyT,KAAKiyT,0BAA0BrsT,GAC/B5F,KAAK0yT,8BAA8BN,GACnCpyT,KAAK2yT,0BAA0BR,IAGd3oT,KAAKg4L,GAAWiJ,qBAAqBhtM,aAC7D,EAOcm0T,EAAAA,6BAAf,SACIxnH,EACAt+G,GAGA,MADiC,CAACs+G,EAAet+G,GAChCtiF,KAAKg4L,GAAWiJ,qBAAqBhtM,aACzD,EAScm0T,EAA+B,gCAA9C,SACIG,EACAzhH,EACA1F,EACAonH,GAYA,MANoC,CAChCD,EAJAA,IAAmBtwH,GAAe+wH,eAC5BR,GACA1hH,EAIN1F,GAASnM,GAAUyB,cAGH12L,KAAKg4L,GAAWiJ,qBAAqBhtM,aAC5D,EAKcm0T,EAAyB,0BAAxC,SAAyC9qH,GACrC,OAAQA,GAAUrI,GAAUyB,cAAcziM,aAC7C,EAKcm0T,EAA6B,8BAA5C,SAA6CQ,GACzC,OAAOA,GAAuB3zH,GAAUyB,cAAcziM,aACzD,EAKcm0T,EAAyB,0BAAxC,SAAyCO,GAKrC,OAAQA,GAAaA,EAAU10T,gBAAkB0kM,GAAqBywH,OAAOn1T,cAAiB00T,EAAU10T,cAAgBghM,GAAUyB,YACrI,EACJ0xH,CAAA,CAzLD,GCpBaiB,GACU,CACfvvT,KAAM,qBACNkK,KAAM,oEAHDqlT,GAKY,CACjBvvT,KAAM,wBACNkK,KAAM,4CAPDqlT,GASkB,CACvBvvT,KAAM,+BACNkK,KAAM,oDAXDqlT,GAaa,CAClBvvT,KAAM,yBACNkK,KAAM,6NAfDqlT,GAiBM,CACXvvT,KAAM,kBACNkK,KAAM,sDAnBDqlT,GAqBM,CACXvvT,KAAM,kBACNkK,KAAM,0BAvBDqlT,GAyBS,CACdvvT,KAAM,2BACNkK,KAAM,kHA3BDqlT,GAiCiB,CACtBvvT,KAAM,8BACNkK,KAAM,qDAnCDqlT,GAqCM,CACXvvT,KAAM,uBACNkK,KAAM,gRAvCDqlT,GAyCa,CAClBvvT,KAAM,iBACNkK,KAAM,6DA3CDqlT,GA6Ce,CACpBvvT,KAAM,sBACNkK,KAAM,mDA/CDqlT,GAiDgB,CACrBvvT,KAAM,uBACNkK,KAAM,6CAnDDqlT,GAqDmB,CACxBvvT,KAAM,gCACNkK,KAAM,iFAvDDqlT,GAyDmB,CACxBvvT,KAAM,sBACNkK,KAAM,uGA3DDqlT,GA6DsB,CAC3BvvT,KAAM,mCACNkK,KAAM,uIA/DDqlT,GAiEiB,CACtBvvT,KAAM,6BACNkK,KAAM,2IAnEDqlT,GAqEW,CAChBvvT,KAAM,sBACNkK,KAAM,8HAvEDqlT,GAyEkB,CACvBvvT,KAAM,+BACNkK,KAAM,uHA3EDqlT,GA6EM,CACXvvT,KAAM,kBACNkK,KAAM,+HA/EDqlT,GAiFM,CACXvvT,KAAM,kBACNkK,KAAM,yJAnFDqlT,GAqFyB,CAC9BvvT,KAAM,sCACNkK,KAAM,kLAvFDqlT,GAyFoB,CACzBvvT,KAAM,gCACNkK,KAAM,0CAOd,eAEI,SAAYslT,EAAA9uH,EAAmBjmH,GAA/B,MACIwpC,EAAM,UAAAy8E,EAAWjmH,IAGpB,YAFGypC,EAAKpmH,KAAO,2BACZ2C,OAAOysD,eAAeg3D,EAAMsrM,EAAyB9zT,YACxD,CA+LL,OArM8C0xD,GAAe,KAWlDoiQ,EAAAA,4BAAP,WACI,OAAO,IAAIA,EAAyBD,GAAkDvvT,KAClFuvT,GAAkDrlT,KACzD,EAKMslT,EAAAA,sCAAP,WACI,OAAO,IAAIA,EAAyBD,GAAoDvvT,KACpFuvT,GAAoDrlT,KAC3D,EAKMslT,EAA+B,gCAAtC,SAAuCC,GACnC,OAAO,IAAID,EAAyBD,GAA0DvvT,KACvFuvT,GAA0DrlT,KAAqB,iBAAAulT,EACzF,EAMMD,EAA+B,gCAAtC,SAAuCE,GACnC,OAAO,IAAIF,EAAyBD,GAAqDvvT,KAClFuvT,GAAqDrlT,KAAmB,eAAAwlT,EAClF,EAMMF,EAAmB,oBAA1B,SAA2BG,GACvB,OAAO,IAAIH,EAAyBD,GAA8CvvT,KAC3EuvT,GAA8CrlT,KAAqB,iBAAAylT,EAC7E,EAMMH,EAAAA,oBAAP,WACI,OAAO,IAAIA,EAAyBD,GAA8CvvT,KAC9EuvT,GAA8CrlT,KACrD,EAMMslT,EAAAA,4BAAP,WACI,OAAO,IAAIA,EAAyBD,GAAiDvvT,KACjF,GAAGuvT,GAAiDrlT,KAC3D,EAMMslT,EAA8B,+BAArC,SAAsCI,GAClC,OAAO,IAAIJ,EAAyBD,GAAyDvvT,KACtFuvT,GAAyDrlT,KAAsB,kBAAA0lT,EACzF,EAMMJ,EAAwB,yBAA/B,SAAgCK,GAC5B,OAAO,IAAIL,EAAyBD,GAA8CvvT,KAC3EuvT,GAA8CrlT,KAAqB,iBAAA2lT,EAC7E,EAKML,EAAAA,gCAAP,WACI,OAAO,IAAIA,EAAyBD,GAAqDvvT,KACrFuvT,GAAqDrlT,KAC5D,EAKMslT,EAAAA,8BAAP,WACI,OAAO,IAAIA,EACPD,GAAwDvvT,KACxDuvT,GAAwDrlT,KAE/D,EAKMslT,EAAAA,6BAAP,WACI,OAAO,IAAIA,EACPD,GAAuDvvT,KACvDuvT,GAAuDrlT,KAE9D,EAKMslT,EAAAA,sCAAP,WACI,OAAO,IAAIA,EACPD,GAA2DvvT,KAC3DuvT,GAA2DrlT,KAElE,EAKMslT,EAAAA,sCAAP,WACI,OAAO,IAAIA,EACPD,GAA2DvvT,KAC3DuvT,GAA2DrlT,KAElE,EAKMslT,EAAAA,yCAAP,WACI,OAAO,IAAIA,EAAyBD,GAA8DvvT,KAC9FuvT,GAA8DrlT,KACrE,EAKMslT,EAAAA,oCAAP,WACI,OAAO,IAAIA,EAAyBD,GAAyDvvT,KACzFuvT,GAAyDrlT,KAChE,EAKMslT,EAAAA,8BAAP,WACI,OAAO,IAAIA,EAAyBD,GAAmDvvT,KACnFuvT,GAAmDrlT,KAC1D,EAKMslT,EAAAA,qCAAP,WACI,OAAO,IAAIA,EAAyBD,GAA0DvvT,KAC1FuvT,GAA0DrlT,KACjE,EAKMslT,EAAAA,yBAAP,WACI,OAAO,IAAIA,EAAyBD,GAA8CvvT,KAC9EuvT,GAA8CrlT,KACrD,EAKMslT,EAAAA,yBAAP,WACI,OAAO,IAAIA,EAAyBD,GAA8CvvT,KAC9EuvT,GAA8CrlT,KACrD,EAKMslT,EAAAA,6CAAP,WACI,OAAO,IAAIA,EAAyBD,GAAiEvvT,KACjGuvT,GAAiErlT,KACxE,EAKMslT,EAAAA,uCAAP,SAA8CM,EAA2BjjO,GACrE,OAAO,IAAI2iO,EAAyBD,GAA4DvvT,KACzFuvT,GAA4DrlT,KAAI,qBAAqB4lT,EAA+B,cAAAjjO,EAC9H,EACJ2iO,CArMD,EAA8C3rH,IC7F9C,cAII,WAAY+rH,GAAZ,IAUC1rM,EAAAA,KARS6rM,EAAWH,EAAclrH,GAAYsrH,iBAAgBC,GAAKL,IAAgB,GAC1EM,EAAgBH,EAAWrrH,GAAYyrH,4BAA4BJ,GAAY,GAGrFrzT,KAAK0zT,oBAAoBF,GAEzBxzT,KAAK8mM,OAAS,IAAInzH,IAClB6/O,EAAcj2T,SAAQ,SAAA0kD,GAAS,SAAK6kJ,OAAOroL,IAAIwjC,EAAM,GACxD,CA6KL,OArKW0xQ,EAAU,WAAjB,SAAkBC,GAGd,OAAO,IAAID,GAFSC,GAAoBn1H,GAAUyB,cACH9rM,MAAM,KAExD,EAOOu/T,EAAmB,UAAAD,oBAA3B,SAA4BR,GAExB,IAAKA,GAAeA,EAAY7+T,OAAS,EACrC,MAAMy+T,GAAyBe,6BAEtC,EAMDF,EAAa,UAAAG,cAAb,SAAc7xQ,GACV,IACM8xQ,EAAqB,IAAIJ,EADP3zT,KAAKg0T,uBAAuB5/T,MAAM,MAG1D,OAAQ4zM,GAAYjiL,QAAQk8B,IAAS8xQ,EAAmBjtH,OAAOpvI,IAAIzV,EAAMxkD,cAC5E,EAMDk2T,EAAgB,UAAAM,iBAAhB,SAAiBC,GAAjB,IAMC1sM,EAAAA,KALG,SAAK0sM,GAAYA,EAASptH,OAAOpzL,MAAQ,KAIjC1T,KAAK8mM,OAAOpzL,MAAQwgT,EAASptH,OAAOpzL,MAAQwgT,EAASC,UAAUj1R,OAAM,SAAA+iB,GAAS,SAAK6xQ,cAAc7xQ,EAAM,IAClH,EAKD0xQ,EAAAA,UAAAA,uBAAAA,WAAA,IASCnsM,EAAAA,KARO4sM,EAAoB,EAOxB,OANAvzH,GAAYtjM,SAAQ,SAAC82T,GACb7sM,EAAKssM,cAAcO,KACnBD,GAAqB,EAE5B,IAEMp0T,KAAK8mM,OAAOpzL,OAAS0gT,CAC/B,EAMDT,EAAW,UAAAW,YAAX,SAAYlrO,GACH4+G,GAAYjiL,QAAQqjE,IACrBppF,KAAK8mM,OAAOroL,IAAI2qE,EAAS7gF,OAEhC,EAMDorT,EAAY,UAAAY,aAAZ,SAAaC,GAAb,IAMChtM,EAAAA,KALG,IACIgtM,EAAUj3T,SAAQ,SAAA6rF,GAAY,SAAKkrO,YAAYlrO,EAAS,GAG3D,CAFC,MAAO5gF,IACL,MAAM2+L,GAAgBstH,0BAA0BjsT,GACnD,CACJ,EAMDmrT,EAAW,UAAAe,YAAX,SAAYzyQ,GACR,GAAI+lJ,GAAYjiL,QAAQk8B,GACpB,MAAMklJ,GAAgBwtH,mCAAmC1yQ,GAE7DjiD,KAAK8mM,OAAOpuH,OAAOz2B,EAAM15C,OAC5B,EAMDorT,EAAAA,UAAAA,iBAAAA,WAAA,IAICnsM,EAAAA,KAHGq5E,GAAYtjM,SAAQ,SAAC82T,GACjB7sM,EAAKs/E,OAAOpuH,OAAO27O,EACtB,GACJ,EAMDV,EAAc,UAAAiB,eAAd,SAAeC,GACX,IAAKA,EACD,MAAM1tH,GAAgB2tH,gCAE1B,IAAMC,EAAc,IAAIphP,IAGxB,OAFAkhP,EAAY/tH,OAAOvpM,SAAQ,SAAA0kD,GAAS,OAAA8yQ,EAAYt2S,IAAIwjC,EAAMxkD,cAAc,IACxEuC,KAAK8mM,OAAOvpM,SAAQ,SAAA0kD,GAAS,OAAA8yQ,EAAYt2S,IAAIwjC,EAAMxkD,cAAc,IAC1Ds3T,CACV,EAMDpB,EAAqB,UAAAqB,sBAArB,SAAsBH,GAClB,IAAKA,EACD,MAAM1tH,GAAgB2tH,gCAIrBD,EAAYI,0BACbJ,EAAYK,mBAEhB,IAAMH,EAAc/0T,KAAK40T,eAAeC,GAClCM,EAAkBN,EAAYO,gBAC9BC,EAAiBr1T,KAAKo1T,gBAE5B,OADwBL,EAAYrhT,KACV2hT,EAAiBF,CAC9C,EAKDxB,EAAAA,UAAAA,cAAAA,WACI,OAAO3zT,KAAK8mM,OAAOpzL,IACtB,EAKDigT,EAAAA,UAAAA,QAAAA,WACI,IAAM1rS,EAAuB,GAE7B,OADAjoB,KAAK8mM,OAAOvpM,SAAQ,SAAAtF,GAAO,OAAAgwB,EAAMpnB,KAAK5I,EAAI,IACnCgwB,CACV,EAKD0rS,EAAAA,UAAAA,YAAAA,WACI,OAAI3zT,KAAK8mM,OACY9mM,KAAKm0T,UACN3qT,KAAK,KAElBi1L,GAAUyB,YACpB,EAKDyzH,EAAAA,UAAAA,qBAAAA,WACI,OAAO3zT,KAAKs1T,cAAc73T,aAC7B,EACJk2T,CAAA,CA3LD,GCDA,cAMI,SAAY4B,EAAAC,EAAkBl8P,GAC1B,GAAI0uI,GAAYjiL,QAAQyvS,GACpB,MAAMruH,GAAgBe,4BAA4BstH,GAGtDx1T,KAAKw1T,SAAWA,EAChBx1T,KAAKksM,OAASqpH,EAAUE,mBAAmBD,EAAUl8P,EACxD,CAsBL,OAfWi8P,EAAAA,mBAAP,SAA0BG,EAAsBp8P,GAE5C,IAAMq8P,EAAiC3tH,GAAY4tH,gBAAgBF,GAGnE,IACI,IAAMG,EAAqBF,EAAavtH,WAGlC0tH,EAAgBx8P,EAAO2wI,aAAa4rH,GAC1C,OAAOxtT,KAAKC,MAAMwtT,EAGrB,CAFC,MAAOl6T,GACL,MAAMurM,GAAgBgB,wBAAwBvsM,EACjD,CACJ,EACJ25T,CAAA,CAnCD,GCeA,cAII,SAAYQ,EAAAzlH,EAAkB0lH,GAC1Bh2T,KAAKswM,SAAWA,EAChBtwM,KAAKg2T,WAAaA,CACrB,CAg9BL,OAx0BID,EAAAA,UAAAA,eAAAA,WAAA,IAqBCvuM,EAAAA,KApBSmnF,EAAgC3uM,KAAKi2T,wBACrCC,EAAiCnyT,OAAOsC,KAAKsoM,GAAiB37L,KAAI,SAAAmjT,GAAc,OAAAxnH,EAAgBwnH,EAAW,IAEjH,OADoBD,EAAc7hU,OAChB,EACP,GAEa6hU,EAAcljT,KAAiB,SAACrX,GAChD,IACMy6T,EADgBL,EAAavsD,SAAwB,IAAIh/D,GAAiB7uM,GAC9C06T,iBAC5B1qH,EAAUnkF,EAAK8uM,qBAAqB9uM,EAAK8oF,SAAU8lH,GAMzD,OALIzqH,IAAYyqH,EAAY7qH,gBACxB6qH,EAAYzqH,QAAUA,EAAQ5kH,OAC9BqvO,EAAY7qH,cAAgB,IAAIgqH,GAAU5pH,EAAQ5kH,OAAQygC,EAAKwuM,YAAY9pH,QAGxEkqH,CAEV,GAGR,EAMKL,EAAe,UAAAQ,gBAArB,SAAsBC,+FAClB,IAAKA,EACD,MAAMrvH,GAAgBsvH,mCAWtB,OARED,EAAYzqH,SACd/rM,KAAK0vM,WAAW8mH,EAAYzqH,SAG1ByqH,EAAY7qH,SACd3rM,KAAK02T,qBAAqBF,EAAY7qH,SAGpC6qH,EAAYnjC,YACR,GAAArzR,KAAK22T,gBAAgBH,EAAYnjC,cADd,aACzBztL,EAAAA,+BAGE4wN,EAAYI,cACd52T,KAAK62T,0BAA0BL,EAAYI,cAGzCJ,EAAYM,aACd92T,KAAK+2T,eAAeP,EAAYM,uBAEvC,EAMaf,EAAe,UAAAY,gBAA7B,SAA8BK,kHActB,OAbEC,EAAoBj3T,KAAKk3T,yBAAyB,CACpD5mH,SAAU0mH,EAAW1mH,SACrByhH,eAAgBiF,EAAWjF,eAC3BjmO,YAAakrO,EAAWlrO,YACxBs+G,cAAe4sH,EAAW5sH,cAC1BQ,MAAOosH,EAAWpsH,MAClBunH,UAAW6E,EAAW7E,UACtBC,oBAAqB4E,EAAW5E,sBAG9B+E,EAAgBxD,GAASyD,WAAWJ,EAAWpxT,SAC/CyxT,EAA2CtzT,OAAOsC,KAAK4wT,EAAkBK,cAActkT,KAAI,SAAAxV,GAAO,OAAAy5T,EAAkBK,aAAa95T,EAAI,MAGjI+5T,EAA+C,GACrDF,EAAoB95T,SAAQ,SAACi6T,GACH7D,GAASyD,WAAWI,EAAY5xT,QACpCovT,sBAAsBmC,IACpCI,EAAoB12T,KAAK2mH,EAAKiwM,iBAAiBD,GAEtD,IACD,GAAMh+T,QAAQiG,IAAI83T,KARC,aAQnB3xN,EAAAA,+BAEJ5lG,KAAK03T,yBAAyBV,aACjC,EASDjB,EAAqB,UAAAE,sBAArB,SAAsB0B,GAClB,OAAO33T,KAAK43T,8BACRD,EAAgBA,EAAcvtH,cAAgB3L,GAAUyB,aACxDy3H,EAAgBA,EAAc7rO,YAAc2yG,GAAUyB,aACtDy3H,EAAgBA,EAAc/sH,MAAQnM,GAAUyB,aAChDy3H,EAAgBA,EAAcnsH,gBAAiB/M,GAAUyB,aAEhE,EASO61H,EAA6B,UAAA6B,8BAArC,SACIxtH,EACAt+G,EACA8+G,EACAY,GAJJ,IAoCChkF,EAAAA,KA9BSqwM,EAAe73T,KAAKoqT,UACpB0N,EAAiC,CAAC,EA4BxC,OA1BAD,EAAat6T,SAAQ,SAACw6T,GAClB,IAAMlrH,EAA+BrlF,EAAKgoF,WAAWuoH,GAEhDlrH,IAICzC,IAAkB5iF,EAAKwwM,mBAAmBnrH,EAAQzC,IAIlDt+G,IAAgB07B,EAAKywM,iBAAiBprH,EAAQ/gH,IAI9C8+G,IAAUpjF,EAAK0wM,WAAWrrH,EAAQjC,IAIlCY,IAAoBhkF,EAAK2wM,qBAAqBtrH,EAAQrB,KAI5DssH,EAAiBC,GAAYlrH,GAChC,IAEMirH,CACV,EAWD/B,EAAwB,UAAAmB,yBAAxB,SAAyBvnT,GACrB,OAAO3P,KAAKo4T,iCACRzoT,EAAOy6L,cACPz6L,EAAOm8E,YACPn8E,EAAOoiT,eACPpiT,EAAO2gM,SACP3gM,EAAOqiT,SACPriT,EAAOi7L,MACPj7L,EAAO/J,OACP+J,EAAO0oT,kBACP1oT,EAAOwiT,UACPxiT,EAAO01S,MACP11S,EAAOyiT,oBAEd,EAaO2D,EAAgC,UAAAqC,iCAAxC,SACIhuH,EACAt+G,EACAimO,EACAzhH,EACA0hH,EACApnH,EACAhlM,EACAyyT,EACAlG,EACA9M,EACA+M,GAXJ,IA+GC5qM,EAAAA,KAlGSqwM,EAAe73T,KAAKoqT,UACpBkO,EAAuC,CACzCC,SAAU,CAAC,EACXjB,aAAc,CAAC,EACfkB,cAAe,CAAC,GA6FpB,OA1FAX,EAAat6T,SAAQ,SAACw6T,GAElB,IAAMU,EAAW7G,GAAiB8G,kBAAkBX,GAEpD,GAAIU,IAAah6H,GAAUwB,YAA3B,CAKA,IAAM4M,EAASrlF,EAAKmxM,sBAAsBZ,EAAUU,GAEpD,GAAK5rH,KAICwrH,GAAsB7wM,EAAKoxM,uBAAuB/rH,EAAQwrH,OAI1DjuH,GAAkB5iF,EAAKwwM,mBAAmBnrH,EAAQzC,OAIlDt+G,GAAgB07B,EAAKywM,iBAAiBprH,EAAQ/gH,OAI9C8+G,GAAUpjF,EAAK0wM,WAAWrrH,EAAQjC,OAIlCmnH,GAAmBvqM,EAAKqxM,oBAAoBhsH,EAAQklH,OAIpDzhH,GAAa9oF,EAAKsxM,cAAcjsH,EAAQyD,OAIxC0hH,GAAaxqM,EAAKuxM,cAAclsH,EAAQmlH,OAQxCpsT,GAAW4hH,EAAKwxM,YAAYnsH,EAAQjnM,OAKtCwsT,IAAuBvlH,EAAOulH,qBAE1BvlH,EAAOulH,sBAAwBA,GAFvC,CAQA,GAAIL,IAAmBtwH,GAAe8wH,8BAA+B,CACjE,GAAKJ,IAAc3qM,EAAKyxM,eAAepsH,EAAQslH,GAC3C,OAIJ,GAAIA,IAAchwH,GAAqB+2H,KAChC7T,IAAU79L,EAAK2xM,WAAWtsH,EAAQw4G,GACjC,MAGX,CAGD,IAAM+T,EAAkB5xM,EAAK6xM,yBAAyBtB,EAAUlrH,GAEhE,OAAQ4rH,GACJ,KAAKh3H,GAAe4wH,SAChBiG,EAAoBC,SAASa,GAAmBvsH,EAChD,MACJ,KAAKpL,GAAe6wH,aACpB,KAAK7wH,GAAe8wH,8BAChB+F,EAAoBhB,aAAa8B,GAAmBvsH,EACpD,MACJ,KAAKpL,GAAe+wH,cAChB8F,EAAoBE,cAAcY,GAAmBvsH,EA5B5D,CAnDA,CAkFJ,IAEMyrH,CACV,EAMDvC,EAAwB,UAAAuD,yBAAxB,SAAyB3pT,GACrB,OAAO3P,KAAKu5T,iCACR5pT,EAAOm8E,YACPn8E,EAAO2gM,SAEd,EAOOylH,EAAAA,UAAAA,iCAAR,SACIjqO,EACAwkH,GAFJ,IAkCC9oF,EAAAA,KA7BSqwM,EAAe73T,KAAKoqT,UACpBoP,EAAwC,CAAC,EA2B/C,OAzBA3B,EAAat6T,SAAQ,SAACw6T,GAElB,GAAKvwM,EAAKiyM,cAAc1B,GAAxB,CAKA,IAAMlrH,EAASrlF,EAAKkyM,eAAe3B,GAE9BlrH,IAIC/gH,IAAgB07B,EAAKywM,iBAAiBprH,EAAQ/gH,IAI9CwkH,IAAa9oF,EAAKsxM,cAAcjsH,EAAQyD,KAI9CkpH,EAAoBzB,GAAYlrH,GAjB/B,CAmBJ,IAEM2sH,CACV,EAMDzD,EAA2B,UAAA4D,4BAA3B,SAA4BvuT,GAA5B,IA0BCo8G,EAAAA,KAzBSqwM,EAAe73T,KAAK45T,2BACtBC,EAAgB,KAuBpB,OArBAhC,EAAat6T,SAAQ,SAACw6T,GAElB,GAAKvwM,EAAKsyM,oBAAoB/B,KAAkD,IAArCA,EAASz7T,QAAQkrH,EAAK8oF,UAAjE,CAKA,IAAMzD,EAASrlF,EAAKuyM,qBAAqBhC,GAEpClrH,IAIiC,IAAlCA,EAAOmtH,QAAQ19T,QAAQ8O,KAI3ByuT,EAAgBhtH,EAbf,CAeJ,IAEMgtH,CACV,EAKK9D,EAAAA,UAAAA,kBAAN,sHAYI,OAXM8B,EAAe73T,KAAKoqT,UACpB6P,EAA2C,GAEjDpC,EAAat6T,SAAQ,SAACw6T,GACHvwM,EAAKgoF,WAAWuoH,IAI/BkC,EAAgBp5T,KAAK2mH,EAAK0yM,cAAcnC,GAC3C,IAED,GAAMv+T,QAAQiG,IAAIw6T,WAClB,OADAr0N,EAAAA,OACO,CAAP,GAAO,SACV,EAMKmwN,EAAa,UAAAmE,cAAnB,SAAoB/D,qGAEhB,KADMpqH,EAAU/rM,KAAKwvM,WAAW2mH,IAE5B,MAAMhvH,GAAgBgzH,4BAElB,SAAMn6T,KAAKo6T,qBAAqBruH,IAAxC,aAAO,CAAP,EAAQnmG,EAAwC,QAAI5lG,KAAKk1D,WAAWihQ,EAAYz0H,GAAgB24H,gBACnG,EAMKtE,EAAoB,UAAAqE,qBAA1B,SAA2BruH,gHAkBvB,OAjBM8rH,EAAe73T,KAAKoqT,UACpBz9G,EAAYZ,EAAQuuH,oBACpBC,EAA8C,GAEpD1C,EAAat6T,SAAQ,SAACw6T,GAElB,IAAMU,EAAW7G,GAAiB8G,kBAAkBX,GACpD,GAAIU,IAAah6H,GAAUwB,YAA3B,CAIA,IAAMu6H,EAAchzM,EAAKmxM,sBAAsBZ,EAAUU,GACnD+B,GAAe7tH,IAAc6tH,EAAYF,qBAC3CC,EAAmB15T,KAAK2mH,EAAKiwM,iBAAiB+C,GAJjD,CAMJ,IAED,GAAMhhU,QAAQiG,IAAI86T,WAClB,OADA30N,EAAAA,OACO,CAAP,GAAO,SACV,EAMKmwN,EAAgB,UAAA0B,iBAAtB,SAAuBT,uGAIf,GAHEx5T,EAAMw5T,EAAWyD,wBAGnBzD,EAAWjF,eAAet0T,gBAAkBgkM,GAAe8wH,8BAA8B90T,cAAzF,MAAsG,SACnGu5T,EAAW7E,YAAchwH,GAAqBu4H,IAA9C,MAAiD,MAI5C,KAFE7Y,EADkCmV,EACI3R,OAExC,MAAG,uBAEC,6BAAM,GAAArlT,KAAKg2T,WAAWhF,sBAAsBnP,kBAA5Cj8M,EAAAA,oBAEA,eAAMuhG,GAAgBwzH,yCAMtC,MAAO,GAAA36T,KAAKk1D,WAAW13D,EAAKkkM,GAAgBk5H,mBAC/C,EAKD7E,EAAAA,UAAAA,kBAAAA,WAAA,IASCvuM,EAAAA,KADG,OAPqBxnH,KAAKoqT,UACb7sT,SAAQ,SAACw6T,GACdvwM,EAAKiyM,cAAc1B,IACnBvwM,EAAKtyD,WAAW6iQ,EAAUr2H,GAAgBM,aAEjD,KAEM,CACV,EAUD+zH,EAAe,UAAA8E,gBAAf,SAAgB9uH,EAAsBuE,EAAkB91M,EAA0BsxF,GAE9E,IAAMgvO,EAAgB96T,KAAK+6T,qBAAqBhvH,GAC1CivH,EAAgBh7T,KAAKs2T,qBAAqBhmH,EAAUvE,GACpDkvH,EAAoBj7T,KAAKk7T,yBAAyB5qH,EAAUvE,EAASvxM,GACrE2gU,EAAqBn7T,KAAKo7T,0BAA0B9qH,EAAUvE,GAAS,GACvEsvH,EAAoBr7T,KAAKs7T,yBAAyBxvO,EAAawkH,GAMrE,OAJIwqH,GAAiBE,IACjBF,EAAcvvH,cAAgB,IAAIgqH,GAAUyF,EAAcj0O,OAAQ/mF,KAAKg2T,YAAY9pH,QAGhF,CACHH,QAAS+uH,EACTnvH,QAASqvH,EACT3nC,YAAa4nC,EACbrE,aAAcuE,EACdrE,YAAauE,EAEpB,EAMDtF,EAAoB,UAAAgF,qBAApB,SAAqBhvH,GACjB,IAAMoqH,EAAqB3rH,GAAcE,wBAAwBqB,GACjE,OAAO/rM,KAAKwvM,WAAW2mH,EAC1B,EAODJ,EAAuC,UAAAwF,wCAAvC,SAAwC/vH,GAEpC,IAAMmsH,EAA+B,CACjCnsH,gBAAe,GAEbgwH,EAA6Bx7T,KAAKi2T,sBAAsB0B,GACxDpqH,EAAWxpM,OAAOsC,KAAKm1T,GAAcxoT,KAAI,SAACxV,GAAQ,OAAAg+T,EAAah+T,EAAI,IAEzE,GAAI+vM,EAASl5M,OAAS,EAClB,OAAO,KACJ,GAAIk5M,EAASl5M,OAAS,EACzB,MAAM8yM,GAAgBs0H,6CAG1B,OAAOD,EAAa,EACvB,EAQDzF,EAAAA,UAAAA,qBAAAA,SAAqBzlH,EAAkBvE,GACnC,IAAM2vH,EAAkC,CACpCtxH,cAAe2B,EAAQ3B,cACvBt+G,YAAaigH,EAAQjgH,YACrBimO,eAAgBtwH,GAAe4wH,SAC/B/hH,SAAUA,EACV1F,MAAOmB,EAAQpB,UAGbgxH,EAAmC37T,KAAKk3T,yBAAyBwE,GACjEnD,EAAWx0T,OAAOsC,KAAKs1T,EAAgBpD,UAAUvlT,KAAI,SAACxV,GAAQ,OAAAm+T,EAAgBpD,SAAS/6T,EAAI,IAC3Fo+T,EAAcrD,EAASlkU,OAE7B,GAAIunU,EAAc,EACd,OAAO,KACJ,GAAIA,EAAc,EACrB,MAAMz0H,GAAgB00H,2CAG1B,OAAOtD,EAAS,EACnB,EASDxC,EAAAA,UAAAA,yBAAAA,SAAyBzlH,EAAkBvE,EAAsBvxM,GAC7D,IAAMssM,EAAU,IAAI6sH,GAASn5T,EAAQssM,QAAU,IACzCg1H,EAAathU,EAAQuhU,sBAAwB55H,GAAqBywH,OAKlEb,EAAkB+J,GAAcA,EAAWr+T,gBAAkB0kM,GAAqBywH,OAAOn1T,cAAiBgkM,GAAe8wH,8BAAgC9wH,GAAe6wH,aAExK0J,EAAsC,CACxC5xH,cAAe2B,EAAQ3B,cACvBt+G,YAAaigH,EAAQjgH,YACrBimO,eAAgBA,EAChBzhH,SAAQ,EACR1F,MAAOmB,EAAQpB,SACf/kM,OAAQkhM,EAAOktH,uBACf7B,UAAW2J,EACXzW,MAAO7qT,EAAQyhU,OACf7J,oBAAqB53T,EAAQ43T,qBAG3BuJ,EAAmC37T,KAAKk3T,yBAAyB8E,GAEjE1E,EAAevzT,OAAOsC,KAAKs1T,EAAgBrE,cAActkT,KAAI,SAACxV,GAAQ,OAAAm+T,EAAgBrE,aAAa95T,EAAI,IAEvG0+T,EAAkB5E,EAAajjU,OACrC,GAAI6nU,EAAkB,EAClB,OAAO,KACJ,GAAIA,EAAkB,EACzB,MAAM/0H,GAAgB00H,2CAG1B,OAAOvE,EAAa,EACvB,EAQDvB,EAAAA,UAAAA,0BAAAA,SAA0BzlH,EAAkBvE,EAAsBowH,GAC9D,IAAMv3T,EAAKu3T,EAAWl6H,QAAgB5kM,EAChC++T,EAAuC,CACzChyH,cAAe2B,EAAQ3B,cACvBt+G,YAAaigH,EAAQjgH,YACrBimO,eAAgBtwH,GAAe+wH,cAC/BliH,SAAUA,EACV0hH,SAAUptT,GAGR+2T,EAAmC37T,KAAKk3T,yBAAyBkF,GACjE5D,EAAgBz0T,OAAOsC,KAAKs1T,EAAgBnD,eAAexlT,KAAI,SAACxV,GAAQ,OAAAm+T,EAAgBnD,cAAch7T,EAAI,IAGhH,OADyBg7T,EAAcnkU,OAChB,EACZ,KAIJmkU,EAAc,EACxB,EAKDzC,EAAAA,UAAAA,yBAAAA,SAAyBjqO,EAAqBwkH,GAC1C,IAAM+rH,EAAuC,CACzCvwO,YAAW,EACXwkH,SAAQ,GAGNwmH,EAAgC92T,KAAKs5T,yBAAyB+C,GAC9DC,EAA0Cv4T,OAAOsC,KAAKywT,GAAa9jT,KAAI,SAACxV,GAAQ,OAAAs5T,EAAYt5T,EAAI,IAEhG++T,EAAiBD,EAAmBjoU,OAC1C,GAAIkoU,EAAiB,EACjB,OAAO,KACJ,GAAIA,EAAiB,EACxB,MAAMp1H,GAAgBq1H,gDAG1B,OAAOF,EAAmB,EAC7B,EAODvG,EAAAA,UAAAA,kBAAAA,SAAkBjqO,EAAqBwkH,GACnC,IAAMwmH,EAAc92T,KAAKs7T,yBAAyBxvO,EAAawkH,GAC/D,SAAUwmH,GAAeA,EAAY9E,WAAa/vH,GACrD,EAOO8zH,EAAAA,UAAAA,mBAAR,SAA2BlpH,EAA0CzC,GACjE,SAAUyC,EAAOzC,eAAiBA,IAAkByC,EAAOzC,cAC9D,EAOO2rH,EAAAA,UAAAA,uBAAR,SAA+BlpH,EAA0BwrH,GACrD,SAAUxrH,EAAOwrH,mBAAqBA,IAAsBxrH,EAAOwrH,kBACtE,EAOOtC,EAAAA,UAAAA,iBAAR,SAAyBlpH,EAA8D/gH,GACnF,IAAM2wO,EAAgBz8T,KAAK25T,4BAA4B7tO,GACvD,SAAI2wO,GAAiBA,EAAczC,QAAQ19T,QAAQuwM,EAAO/gH,cAAgB,EAK7E,EAOOiqO,EAAAA,UAAAA,oBAAR,SAA4BlpH,EAA0BklH,GAClD,OAAQllH,EAAOklH,gBAAkBA,EAAet0T,gBAAkBovM,EAAOklH,eAAet0T,aAC3F,EAOOs4T,EAAAA,UAAAA,cAAR,SAAsBlpH,EAA8CyD,GAChE,SAAUzD,EAAOyD,UAAYA,IAAazD,EAAOyD,SACpD,EAOOylH,EAAAA,UAAAA,cAAR,SAAsBlpH,EAA8CmlH,GAChE,SAAUnlH,EAAOmlH,UAAYA,IAAanlH,EAAOmlH,SACpD,EAOO+D,EAAAA,UAAAA,WAAR,SAAmBlpH,EAA0CjC,GACzD,SAAUiC,EAAOjC,OAASA,IAAUiC,EAAOjC,MAC9C,EAQOmrH,EAAAA,UAAAA,qBAAR,SAA6BlpH,EAAuBrB,GAChD,SAAUqB,EAAOrB,iBAAmBA,IAAoBqB,EAAOrB,gBAClE,EAOOuqH,EAAAA,UAAAA,YAAR,SAAoBlpH,EAA0BjnM,GAG1C,GAFoCinM,EAAOklH,iBAAmBtwH,GAAe6wH,cAAgBzlH,EAAOklH,iBAAmBtwH,GAAe8wH,gCAElG1lH,EAAOjnM,OACvC,OAAO,EAGX,IAAM82T,EAA2B/I,GAASyD,WAAWvqH,EAAOjnM,QACtD+2T,EAAkChJ,GAASyD,WAAWxxT,GAO5D,OALK+2T,EAAsB1H,yBAGvB0H,EAAsBjI,YAAYj2H,GAAUe,sBAF5Cm9H,EAAsBzH,mBAInBwH,EAAezI,iBAAiB0I,EAC1C,EAOO5G,EAAAA,UAAAA,eAAR,SAAuBlpH,EAA0BslH,GAC7C,SAAUtlH,EAAOslH,WAAatlH,EAAOslH,YAAcA,EACtD,EAOO4D,EAAAA,UAAAA,WAAR,SAAmBlpH,EAA0Bw4G,GACzC,SAAUx4G,EAAOw4G,OAASx4G,EAAOw4G,QAAUA,EAC9C,EAMO0Q,EAAa,UAAA0D,cAArB,SAAsBj8T,GAClB,OAAsC,IAA/BA,EAAIlB,QAAQ0lM,GACtB,EAMS+zH,EAAmB,UAAA+D,oBAA7B,SAA8Bt8T,GAC1B,OAAgE,IAAzDA,EAAIlB,QAAQ4lM,GACtB,EAKD6zH,EAAiC,UAAA6G,kCAAjC,SAAkChxH,GAC9B,OAAU1J,GAAsC,IAAIliM,KAAKswM,SAAY,IAAA1E,CACxE,EAOOmqH,EAAAA,UAAAA,sBAAR,SAA8Bv4T,EAAai7T,GACvC,OAAQA,GACJ,KAAKh3H,GAAe4wH,SAChB,OAAOryT,KAAK68T,qBAAqBr/T,GAErC,KAAKikM,GAAe6wH,aACpB,KAAK7wH,GAAe8wH,8BAChB,OAAOvyT,KAAK88T,yBAAyBt/T,GAEzC,KAAKikM,GAAe+wH,cAChB,OAAOxyT,KAAK+8T,0BAA0Bv/T,GAE1C,QACI,OAAO,KAElB,EAOMu4T,EAAAA,SAAP,SAAmBzxT,EAAQ04T,GACvB,IAAK,IAAMpgQ,KAAgBogQ,EACvB14T,EAAIs4D,GAAgBogQ,EAAKpgQ,GAE7B,OAAOt4D,CACV,EACJyxT,CAAA,CAv9BD,GAy9BA,0EAyFC,CAAD,OAzFyCrlQ,GAAY,KACjDusQ,EAAAA,UAAAA,WAAAA,WAEI,MAAM94H,GAAU0sH,sBADG,4FAEtB,EACDoM,EAAAA,UAAAA,WAAAA,WAEI,MAAM94H,GAAU0sH,sBADG,4FAEtB,EACDoM,EAAAA,UAAAA,qBAAAA,WAEI,MAAM94H,GAAU0sH,sBADG,sGAEtB,EACDoM,EAAAA,UAAAA,qBAAAA,WAEI,MAAM94H,GAAU0sH,sBADG,sGAEtB,EACDoM,EAAAA,UAAAA,yBAAAA,WAEI,MAAM94H,GAAU0sH,sBADG,0GAEtB,EACDoM,EAAAA,UAAAA,yBAAAA,WAEI,MAAM94H,GAAU0sH,sBADG,0GAEtB,EACDoM,EAAAA,UAAAA,0BAAAA,WAEI,MAAM94H,GAAU0sH,sBADG,2GAEtB,EACDoM,EAAAA,UAAAA,0BAAAA,WAEI,MAAM94H,GAAU0sH,sBADG,2GAEtB,EACDoM,EAAAA,UAAAA,eAAAA,WAEI,MAAM94H,GAAU0sH,sBADG,gGAEtB,EACDoM,EAAAA,UAAAA,eAAAA,WAEI,MAAM94H,GAAU0sH,sBADG,gGAEtB,EACDoM,EAAAA,UAAAA,mBAAAA,WAEI,MAAM94H,GAAU0sH,sBADG,oGAEtB,EACDoM,EAAAA,UAAAA,mBAAAA,WAEI,MAAM94H,GAAU0sH,sBADG,oGAEtB,EACDoM,EAAAA,UAAAA,qBAAAA,WAEI,MAAM94H,GAAU0sH,sBADG,sGAEtB,EACDoM,EAAAA,UAAAA,qBAAAA,WAEI,MAAM94H,GAAU0sH,sBADG,sGAEtB,EACDoM,EAAAA,UAAAA,yBAAAA,WAEI,MAAM94H,GAAU0sH,sBADG,0GAEtB,EACDoM,EAAAA,UAAAA,mBAAAA,WAEI,MAAM94H,GAAU0sH,sBADG,oGAEtB,EACDoM,EAAAA,UAAAA,mBAAAA,WAEI,MAAM94H,GAAU0sH,sBADG,oGAEtB,EACDoM,EAAAA,UAAAA,WAAAA,WAEI,MAAM94H,GAAU0sH,sBADG,4FAEtB,EACDoM,EAAAA,UAAAA,YAAAA,WAEI,MAAM94H,GAAU0sH,sBADG,6FAEtB,EACDoM,EAAAA,UAAAA,QAAAA,WAEI,MAAM94H,GAAU0sH,sBADG,yFAEtB,EACKoM,EAAAA,UAAAA,MAAN,gFAEI,KADmB,uFACb94H,GAAU0sH,sBADG,6FAEtB,EACDoM,EAAAA,UAAAA,yBAAAA,WAEI,MAAM94H,GAAU0sH,sBADG,0GAEtB,EACJoM,CAzFD,EAAyClH,IC79BzC,0EAiDC,CAAD,OAjDmCrlQ,GAAgB,KAUxCwsQ,EAAmB,oBAA1B,SACI9yH,EACAt+G,EACA6/G,EACA2E,EACA3F,GAEA,IAAMwyH,EAAgB,IAAID,EAS1B,OAPAC,EAAcpL,eAAiBtwH,GAAe4wH,SAC9C8K,EAAc/yH,cAAgBA,EAC9B+yH,EAAcrxO,YAAcA,EAC5BqxO,EAAc7sH,SAAWA,EACzB6sH,EAAcp2O,OAAS4kH,EACvBwxH,EAAcvyH,MAAQD,EAEfwyH,CACV,EAMMD,EAAe,gBAAtB,SAAuBrwH,GAEnB,QAAKA,IAKDA,EAAOr+L,eAAe,kBACtBq+L,EAAOr+L,eAAe,gBACtBq+L,EAAOr+L,eAAe,mBACtBq+L,EAAOr+L,eAAe,UACtBq+L,EAAOr+L,eAAe,aACtBq+L,EAAOr+L,eAAe,WACtBq+L,EAAM,iBAAuBpL,GAAe4wH,SAEnD,EACJ6K,CAjDD,EAAmCtL,ICjBnC,2BA2CC,CAAD,OAtCWwL,EAAAA,WAAP,WAEI,OAAO32T,KAAK4kC,OAAM,IAAIl4C,MAAOC,UAAY,IAC5C,EAMMgqU,EAAAA,eAAP,SAAsBC,EAAmBtqU,GAErC,IAAMuqU,EAAgBh/P,OAAO++P,IAAc,EAI3C,OAH6BD,EAAUjtN,aAAep9G,EAGvBuqU,CAClC,EAQMF,EAAkB,mBAAzB,SAA0BG,GAGtB,OAFoBj/P,OAAOi/P,GAENH,EAAUjtN,YAClC,EAOMitN,EAAAA,MAAP,SAAgBzsT,EAAWhV,GACvB,OAAO,IAAInC,SAAQ,SAACC,GAAY,OAAA8C,YAAW,WAAM,OAAA9C,EAAQkC,EAAM,GAAEgV,EAAE,GACtE,EACJysT,CAAA,CA3CD,GC8BA,0EAoHC,CAAD,OApHuC1sQ,GAAgB,KAuB5C8sQ,EAAAA,wBAAP,SACIpzH,EACAt+G,EACAunM,EACA/iF,EACA3F,EACA7D,EACAu2H,EACAI,EACAC,EACAC,EACAxL,EACAkG,EACAhT,EACAuY,EACAxL,WAEMyL,EAA8B,IAAIL,EAExCK,EAASzzH,cAAgBA,EACzByzH,EAAS9L,eAAiBtwH,GAAe6wH,aACzCuL,EAAS92O,OAASssM,EAElB,IAAMyqC,EAAcV,GAAUjtN,aA8B9B,GA7BA0tN,EAASN,SAAWO,EAAY92T,WAMhC62T,EAASR,UAAYA,EAAUr2T,WAC/B62T,EAASE,kBAAoBN,EAAaz2T,WACtC22T,IACAE,EAASF,UAAYA,EAAU32T,YAGnC62T,EAAS/xO,YAAcA,EACvB+xO,EAASvtH,SAAWA,EACpButH,EAASjzH,MAAQD,EACjBkzH,EAASj4T,OAASkhM,EAClB+2H,EAASxF,kBAAoBA,EAE7BwF,EAAS1L,UAAYnqH,GAAYjiL,QAAQosS,GAAahwH,GAAqBywH,OAAST,EAEhFyL,IACAC,EAASD,gBAAkBA,EAC3BC,EAASzL,oBAAsBA,IAOX,QAApB,EAAAyL,EAAS1L,iBAAWvsN,IAAAA,OAAA,EAAAA,EAAAA,iBAAkBu8F,GAAqBywH,OAAOn1T,cAElE,OADAogU,EAAS9L,eAAiBtwH,GAAe8wH,8BACjCsL,EAAS1L,WACb,KAAKhwH,GAAqBu4H,IAEtB,IAAMsD,EAAkCzI,GAAUE,mBAAmBpiC,EAAaqqC,GAClF,KAAqB,QAAjB,EAAY,OAAXM,QAAW,IAAXA,OAAW,EAAXA,EAAavQ,WAAGznN,IAAAA,OAAA,EAAAA,EAAE67M,KACnB,MAAM16G,GAAgB82H,iCAE1BJ,EAASxY,MAAQ2Y,EAAYvQ,IAAI5L,IACjC,MACJ,KAAK1/G,GAAqB+2H,IACtB2E,EAASxY,MAAQA,EAI7B,OAAOwY,CACV,EAMML,EAAmB,oBAA1B,SAA2B3wH,GAEvB,QAAKA,IAKDA,EAAOr+L,eAAe,kBACtBq+L,EAAOr+L,eAAe,gBACtBq+L,EAAOr+L,eAAe,mBACtBq+L,EAAOr+L,eAAe,UACtBq+L,EAAOr+L,eAAe,aACtBq+L,EAAOr+L,eAAe,WACtBq+L,EAAOr+L,eAAe,YACrBq+L,EAAM,iBAAuBpL,GAAe6wH,cAAgBzlH,EAAM,iBAAuBpL,GAAe8wH,+BAEhH,EACJiL,CApHD,EAAuC5L,ICXvC,0EAoDC,CAAD,OApDwClhQ,GAAgB,KAU7CwtQ,EAAAA,yBAAP,SACI9zH,EACAt+G,EACA8qO,EACAtmH,EACA0hH,EACAqG,GAEA,IAAM8F,EAAW,IAAID,EAYrB,OAVAC,EAAS7tH,SAAWA,EACpB6tH,EAASpM,eAAiBtwH,GAAe+wH,cACzC2L,EAASryO,YAAcA,EACvBqyO,EAAS/zH,cAAgBA,EACzB+zH,EAASp3O,OAAS6vO,EAClBuH,EAAS9F,kBAAoBA,EAEzBrG,IACAmM,EAASnM,SAAWA,GAEjBmM,CACV,EAMMD,EAAoB,qBAA3B,SAA4BrxH,GAExB,QAAKA,IAKDA,EAAOr+L,eAAe,kBACtBq+L,EAAOr+L,eAAe,gBACtBq+L,EAAOr+L,eAAe,mBACtBq+L,EAAOr+L,eAAe,aACtBq+L,EAAOr+L,eAAe,WACtBq+L,EAAM,iBAAuBpL,GAAe+wH,cAEnD,EACJ0L,CApDD,EAAwCtM,ICNxC,2BA0DC,CAAD,OAlDIwM,EAAAA,UAAAA,uBAAAA,WACI,OAAOA,EAAkBC,4BAA4Br+T,KAAK8rF,YAAa9rF,KAAKswM,SAC/E,EAKM8tH,EAAAA,4BAAP,SAAmCtyO,EAAqBwkH,GAMpD,MAL2C,CACvCtO,GACAl2G,EACAwkH,GAEuB9mM,KAAKg4L,GAAWiJ,qBAAqBhtM,aACnE,EAQM2gU,EAAAA,wBAAP,SAA+B9tH,EAAkBxkH,EAAqBkmO,GAClE,IAAM8E,EAAc,IAAIsH,EAQxB,OANAtH,EAAYxmH,SAAWA,EACvBwmH,EAAYhrO,YAAcA,EACtBkmO,IACA8E,EAAY9E,SAAWA,GAGpB8E,CACV,EAMMsH,EAAAA,oBAAP,SAA2B5gU,EAAaqvM,GAEpC,QAAKA,IAK6B,IAA9BrvM,EAAIlB,QAAQ0lM,KACZ6K,EAAOr+L,eAAe,aACtBq+L,EAAOr+L,eAAe,eAE7B,EACJ4vT,CAAA,CA1DD,GCdA,cAKI,aACIp+T,KAAKs+T,eAAiB,GACtBt+T,KAAK+7D,OAAS,GACd/7D,KAAKu+T,UAAY,CACpB,CAqBL,OAdWC,EAAAA,wBAAP,SAA+BhhU,EAAaqvM,GAExC,IAAM4xH,EAAyE,IAAlDjhU,EAAIlB,QAAQ8lM,GAAuBK,WAC5Di8H,GAA0B,EAS9B,OAPI7xH,IACA6xH,EACI7xH,EAAOr+L,eAAe,mBACtBq+L,EAAOr+L,eAAe,WACtBq+L,EAAOr+L,eAAe,cAGvBiwT,GAAeC,CACzB,EACJF,CAAA,CA9BD,GCGA,cAcI,aACIx+T,KAAK2+T,UAAYvB,GAAUjtN,aAAe+xF,EAC7C,CA2EL,OApEI08H,EAAAA,UAAAA,6BAAAA,SAA6B9rT,EAAkC+rT,GAC3D7+T,KAAKg6T,QAAUlnT,EAASknT,QACxBh6T,KAAK8+T,gBAAkBhsT,EAASgsT,gBAChC9+T,KAAK++T,kBAAoBjsT,EAASisT,kBAClC/+T,KAAKg/T,mBAAqBH,CAC7B,EAODD,EAAAA,UAAAA,uBAAAA,SAAuB9rT,EAAgC+rT,GACnD7+T,KAAKi/T,uBAAyBnsT,EAASmsT,uBACvCj/T,KAAKk/T,eAAiBpsT,EAASosT,eAC/Bl/T,KAAKm/T,qBAAuBrsT,EAASqsT,qBACrCn/T,KAAKo/T,OAAStsT,EAASssT,OACvBp/T,KAAKq/T,qBAAuBR,EAC5B7+T,KAAKs/T,SAAWxsT,EAASwsT,QAC5B,EAMDV,EAAwB,UAAAW,yBAAxB,SAAyB3zH,GACrB5rM,KAAKw/T,oBAAsB5zH,CAC9B,EAKDgzH,EAAAA,UAAAA,eAAAA,WACI5+T,KAAK2+T,UAAYvB,GAAUjtN,aAAe+xF,EAC7C,EAKD08H,EAAAA,UAAAA,UAAAA,WACI,OAAO5+T,KAAK2+T,WAAavB,GAAUjtN,YACtC,EAMMyuN,EAAAA,0BAAP,SAAiCphU,EAAaqvM,GAE1C,QAAKA,IAKuD,IAAxDrvM,EAAIlB,QAAQ4lM,KACZ2K,EAAOr+L,eAAe,YACtBq+L,EAAOr+L,eAAe,oBACtBq+L,EAAOr+L,eAAe,sBACtBq+L,EAAOr+L,eAAe,wBACtBq+L,EAAOr+L,eAAe,2BACtBq+L,EAAOr+L,eAAe,mBACtBq+L,EAAOr+L,eAAe,WACtBq+L,EAAOr+L,eAAe,uBACtBq+L,EAAOr+L,eAAe,yBACtBq+L,EAAOr+L,eAAe,cACtBq+L,EAAOr+L,eAAe,YAE7B,EACJowT,CAAA,CA3FD,GCHA,2BA4BC,CAAD,OAdWa,EAAAA,mBAAP,SAA0BjiU,EAAaqvM,GAEnC,IAAI4xH,GAAuB,EACvBjhU,IACAihU,EAAqE,IAAvDjhU,EAAIlB,QAAQ+mM,KAG9B,IAAIq7H,GAA0B,EAK9B,OAJI7xH,IACA6xH,EAAiB7xH,EAAOr+L,eAAe,iBAGpCiwT,GAAeC,CACzB,EACJe,CAAA,CA5BD,GC0BA,2BAiEC,CAAD,OA1DWC,EAAAA,gBAAP,SAAuBhzH,EAAoBizH,EAAoB59R,GAC3D,IAAM69R,EAAeF,EAAcG,qBAAqBnzH,EAAW3qK,GACnE,OAAQimK,GAAYjiL,QAAQ45S,GAAwEC,EAA3D,GAAGA,EAAenhI,GAAUS,eAAiBygI,CACzF,EAOMD,EAAAA,qBAAP,SAA4BhzH,EAAoB3qK,GAC5C,IAAK2qK,EACD,MAAMvF,GAAgB24H,0BAA0B,wBAIpD,IAAMC,EAA+B,CACjCn7T,GAAI8nM,EAAUkkH,iBAGd7uR,IACAg+R,EAASh+R,KAAOA,GAGpB,IAAMi+R,EAAc33T,KAAKI,UAAUs3T,GAEnC,OAAOrzH,EAAU44G,aAAa0a,EACjC,EAOMN,EAAAA,kBAAP,SAAyBhzH,EAAoBr1L,GACzC,IAAKq1L,EACD,MAAMvF,GAAgB24H,0BAA0B,qBAGpD,GAAI93H,GAAYjiL,QAAQ1O,GACpB,MAAM8vL,GAAgB84H,wBAAwB5oT,EAAO,kCAGzD,IAEI,IAAM6oT,EAAa7oT,EAAMjjB,MAAMqqM,GAAUS,gBACnC0gI,EAAeM,EAAW,GAC1BP,EAAYO,EAAW7rU,OAAS,EAAI6rU,EAAW/nU,MAAM,GAAGqR,KAAKi1L,GAAUS,gBAAkBT,GAAUyB,aACnGigI,EAAqBzzH,EAAUzC,aAAa21H,GAC5CQ,EAAkB/3T,KAAKC,MAAM63T,GACnC,MAAO,CACHE,iBAAmBr4H,GAAYjiL,QAAQ45S,GAAyBlhI,GAAUyB,aAAtBy/H,EACpDC,aAAcQ,EAIrB,CAFC,MAAM53T,IACJ,MAAM2+L,GAAgB84H,wBAAwB5oT,EAAO7O,GACxD,CACJ,EACJk3T,CAAA,CAjED,IpBvBA,SAAYhV,GACRA,EAAAA,gBAAAA,kBACAA,EAAAA,IAAAA,KAFJ,EAAYA,KAAAA,GAGX,SqBLW4V,GCSAC,iBCJR,WAAY5vH,GACR3wM,KAAKwgU,sBAAsB7vH,GAC3B3wM,KAAKygU,cAAgB90T,OAAOglM,EAC/B,CA+BL,OA7BY+vH,EAAAA,UAAAA,sBAAR,SAA8B/vH,GAC1B,GAAIA,IAAkBnN,GAAqBwrB,cAAgBre,IAAkBnN,GAAqByrB,eAC9F,MAAMxqB,GAA8Bk8H,+BAA+BhwH,GAGvE,MAD2BhlM,OAAOglM,GAE9B,MAAMlM,GAA8Bk8H,+BAA+BhwH,EAE1E,EAED+vH,EAAAA,UAAAA,QAAAA,SAAQljU,GACJ,OAAOwC,KAAKygU,cAActrQ,QAAQ33D,EACrC,EAEDkjU,EAAAA,UAAAA,QAAAA,SAAQljU,EAAa7B,GACjBqE,KAAKygU,cAAcxrQ,QAAQz3D,EAAK7B,EACnC,EAED+kU,EAAAA,UAAAA,WAAAA,SAAWljU,GACPwC,KAAKygU,cAAcvrQ,WAAW13D,EACjC,EAEDkjU,EAAAA,UAAAA,QAAAA,WACI,OAAO38T,OAAOsC,KAAKrG,KAAKygU,cAC3B,EAEDC,EAAAA,UAAAA,YAAAA,SAAYljU,GACR,OAAOwC,KAAKygU,cAAcjyT,eAAehR,EAC5C,EACL,CAAC,IChCD,cAQI,WAAYrC,GAER,GADA6E,KAAK4gU,WAAazlU,EACd6sM,GAAYjiL,QAAQ/lB,KAAK4gU,YAEzB,MAAM9N,GAAyB+N,sBAG/B74H,GAAYjiL,QAAQ/lB,KAAK8gU,aACzB9gU,KAAK4gU,WAAaG,EAAUC,gBAAgB7lU,GAEnD,CA2OL,OAzPI4I,OAAAA,eAAWg9T,EAAS,uBAApBxkT,IAAAA,WACI,OAAOvc,KAAK4gU,UACf,kCAkBMG,EAAe,gBAAtB,SAAuB5lU,GACnB,GAAIA,EAAK,CACL,IAAI8lU,EAAe9lU,EAAIsC,cAYvB,OAVIuqM,GAAYl7L,SAASm0T,EAAc,KACnCA,EAAeA,EAAa9oU,MAAM,GAAI,GAC/B6vM,GAAYl7L,SAASm0T,EAAc,QAC1CA,EAAeA,EAAa9oU,MAAM,GAAI,IAGrC6vM,GAAYl7L,SAASm0T,EAAc,OACpCA,GAAgB,KAGbA,CACV,CAED,OAAO9lU,CACV,EAKD4lU,EAAAA,UAAAA,cAAAA,WAEI,IAAIhvE,EACJ,IACIA,EAAa/xP,KAAKkhU,kBAGrB,CAFC,MAAO14T,IACL,MAAMsqT,GAAyBqO,oBAAoB34T,GACtD,CAGD,IAAKupP,EAAWqvE,kBAAoBrvE,EAAWsvE,aAC3C,MAAMvO,GAAyBqO,oBAAoB,qBAAqBnhU,KAAKgzT,WAIjF,IAAIjhE,EAAWuvE,UAAkD,WAAtCvvE,EAAWuvE,SAAS7jU,cAC3C,MAAMq1T,GAAyByO,gCAAgCvhU,KAAKgzT,UAE3E,EAOM+N,EAAAA,kBAAP,SAAyB5lU,EAAa+xR,GAClC,OAAIllF,GAAYjiL,QAAQmnQ,GACb/xR,EAGJA,EAAImB,QAAQ,KAAO,EAAOnB,EAAG,IAAI+xR,EAAmB/xR,EAAG,IAAI+xR,CACrE,EAMM6zC,EAAiB,kBAAxB,SAAyB5lU,GACrB,OAAO4lU,EAAUC,gBAAgB7lU,EAAI/G,MAAM,KAAK,GACnD,EAOD2sU,EAAiB,UAAAS,kBAAjB,SAAkB72H,GACd,IAAM82H,EAAYzhU,KAAKkhU,mBACjBQ,EAAYD,EAAUJ,aAI5B,OAHI12H,GAAkC,IAArB+2H,EAAUrtU,QAAiBqtU,EAAU,KAAOpjI,GAAsBqjI,QAAUD,EAAU,KAAOpjI,GAAsBsjI,gBAChIF,EAAU,GAAK/2H,GAEZo2H,EAAUc,gCAAgCJ,EACpD,EAKDV,EAAAA,UAAAA,QAAAA,WACI,OAAOA,EAAUe,UAAU9hU,KAAKgzT,UACnC,EAMD+N,EAAAA,UAAAA,iBAAAA,WAEI,IAAMgB,EAAQ13T,OAAO,8DAGfD,EAAQpK,KAAKgzT,UAAU5oT,MAAM23T,GACnC,IAAK33T,EACD,MAAM0oT,GAAyBqO,oBAAoB,qBAAqBnhU,KAAKgzT,WAIjF,IAAMgP,EAAgB,CAClBV,SAAUl3T,EAAM,GAChBg3T,gBAAiBh3T,EAAM,GACvB63T,aAAc73T,EAAM,GACpB83T,YAAa93T,EAAM,IAGnB+3T,EAAeH,EAAcC,aAAa7tU,MAAM,KAOpD,OANA+tU,EAAeA,EAAaxyT,QAAO,SAAC1X,GAAQ,OAAAA,GAAOA,EAAI5D,OAAS,CAAC,IACjE2tU,EAAcX,aAAec,GAExBn6H,GAAYjiL,QAAQi8S,EAAcE,cAAgBF,EAAcE,YAAYp1T,SAAS,OACtFk1T,EAAcE,YAAcF,EAAcE,YAAY13S,UAAU,EAAGw3S,EAAcE,YAAY7tU,OAAO,IAEjG2tU,CACV,EAEMjB,EAAgB,iBAAvB,SAAwB5lU,GACpB,IAAM4mU,EAAQ13T,OAAO,4BAEfD,EAAQjP,EAAIiP,MAAM23T,GAExB,IAAK33T,EACD,MAAM0oT,GAAyBqO,oBAAoB,qBAAqBhmU,GAG5E,OAAOiP,EAAM,EAChB,EAEM22T,EAAAA,eAAP,SAAsBqB,EAAqBlzN,GACvC,GAAIkzN,EAAY,KAAO3jI,GAAU0B,cAAe,CAC5C,IACMkiI,EADM,IAAItB,EAAU7xN,GACCgyN,mBAE3B,OAAOmB,EAAef,SAAW,KAAOe,EAAejB,gBAAkBgB,CAC5E,CAED,OAAOA,CACV,EAMMrB,EAAS,UAAhB,SAAiB1U,GACb,IAAMiW,EAAajW,EAAW/vT,QAAQ,KAChCimU,EAAalW,EAAW/vT,QAAQ,MACtC,OAAIimU,GAAc,EACPlW,EAAW7hS,UAAU+3S,EAAa,GAClCD,GAAc,EACdjW,EAAW7hS,UAAU83S,EAAa,GAEtC7jI,GAAUyB,YACpB,EAMM6gI,EAAgB,iBAAvB,SAAwB7zC,GACpB,IAAMs1C,EAAct1C,EAAY5wR,QAAQ,KAClCmmU,EAAcv1C,EAAY5wR,QAAQ,MACxC,OAAImmU,GAAe,EACRv1C,EAAY1iQ,UAAUi4S,EAAc,GACpCD,GAAe,EACft1C,EAAY1iQ,UAAUg4S,EAAc,GAExC/jI,GAAUyB,YACpB,EAEM6gI,EAA+B,gCAAtC,SAAuCU,GACnC,OAAO,IAAIV,EAAUU,EAAUH,SAAW,KAAOG,EAAUL,gBAAkB,IAAMK,EAAUJ,aAAa73T,KAAK,KAClH,EAKMu3T,EAAmB,oBAA1B,SAA2Bz1T,GAEvB,GAAI08L,GAAYjiL,QAAQza,GACpB,MAAO,CAAC,EAGZ,IAAMo3T,EAAa3B,EAAUe,UAAUx2T,GAEjCq3T,EAAoD36H,GAAY46H,oBAAqD56H,GAAYjiL,QAAQ28S,GAAcp3T,EAAOo3T,GAEpK,IAAKC,EACD,MAAMx7H,GAAgB07H,+BAA+Bx6T,KAAKI,UAAUk6T,IAExE,OAAOA,CACV,EAKM5B,EAA0B,2BAAjC,SAAkCtuT,GAE9B,GAAIu1L,GAAYjiL,QAAQtT,GACpB,MAAO,CAAC,EAGZ,IAAMqwT,EAAoB/B,EAAU97P,iBAAiBxyD,GAE/CswT,EAA2D/6H,GAAY46H,oBAAqD56H,GAAYjiL,QAAQ+8S,GAAqBrwT,EAAQqwT,GAEnL,IAAKC,EACD,MAAM57H,GAAgB07H,+BAA+Bx6T,KAAKI,UAAUs6T,IAExE,OAAOA,CACV,EAKMhC,EAA2B,4BAAlC,SAAmCz1T,GAC/B,GAAI08L,GAAYjiL,QAAQza,IAASA,EAAKhP,QAAQ,KAAO,EAEjD,OAAO,EAGX,IAAM0mU,EAA8CjC,EAAUkC,oBAAoB33T,GAClF,SACI03T,EAAW1/T,MACX0/T,EAAWE,mBACXF,EAAW9/T,OACX8/T,EAAW3rT,MAElB,EACJ0pT,CAAA,CA7PD,iBCHA,aAgCC,CAAD,OAzBWoC,EAAAA,2BAAP,SAAkClY,EAAwB5zS,GACtD,GAAI2wL,GAAYjiL,QAAQ1O,GACpB,OAAO,KAGX,IAEI,OAD4CqoT,GAAc0D,kBAAkBnY,EAAe5zS,GACpEuoT,aAAa79R,IAGvC,CAFC,MAAOv5B,IACL,MAAM2+L,GAAgB84H,wBAAwB5oT,EAAO7O,GACxD,CACJ,EAMM26T,EAAAA,4BAAP,SAAmCE,GAC/B,IAAKA,EACD,MAAO,CAAC,EAGZ,IAAMC,EAAgB,IAAIvC,GAAUsC,GACpC,OAAOtC,GAAUkC,oBAAoBK,EAAcxC,UACtD,EACL,CAAC,mBCRG,WAAYxwH,EAAkBizH,EAAqCvN,EAAqBtuO,GAAxF,MACI6/B,EAAAA,KAAAA,KAAM+oF,EAAU0lH,IAAW,YAHZxuM,EAAAA,uBAAyB,MAKxCA,EAAK+7M,YAAcA,EACnB/7M,EAAK9/B,OAASA,EACd8/B,EAAKg8M,gBAAkB,IAAI7Z,GAC3BniM,EAAKi8M,eAAiBj8M,EAAKk8M,oBAAoBl8M,EAAK+7M,YAAY5yH,eAChEnpF,EAAKm8M,sBAAwBn8M,EAAKo8M,2BAA2Bp8M,EAAK+7M,YAAY5yH,eAG9EnpF,EAAKq8M,uBACR,CAy/BL,OAphCyCnzQ,GAAAA,EAAAA,GAiC3BozQ,EAAAA,UAAAA,oBAAV,SAA8BnzH,GAC1B,OAAQA,GACJ,KAAKnN,GAAqBwrB,aAC1B,KAAKxrB,GAAqByrB,eACtB,IAEI,OAAO,IAAIyxG,GAAe/vH,EAI7B,CAHC,MAAOnoM,IACLxI,KAAK0nF,OAAOklH,QAAQpkM,IACpB,KACH,EAMT,OADAxI,KAAKujU,YAAY5yH,cAAgBnN,GAAqBmmH,cAC/C,IAAIA,EACd,EAMSma,EAAAA,UAAAA,2BAAV,SAAqCnzH,GACjC,OAAQA,GACJ,KAAKnN,GAAqBwrB,aAC1B,KAAKxrB,GAAqByrB,eACtB,IAEI,OAAO,IAAIyxG,GAAel9H,GAAqByrB,eAIlD,CAHC,MAAOzmN,IAEL,OADAxI,KAAK0nF,OAAOklH,QAAQpkM,IACbxI,KAAKwjU,eACf,CACL,KAAKhgI,GAAqBmmH,cAC1B,QACI,OAAO3pT,KAAKwjU,gBAEvB,EAMSM,EAAAA,UAAAA,oBAAV,sBACUC,EAAgBtlI,GAAUG,aAAY,IAAIP,GAAoBg0H,SAC9D2R,EAAmBvlI,GAAUG,aAAY,IAAIP,GAAoB4lI,YACjEC,EAAczlI,GAAUG,aAAY,IAAIP,GAAoB5nK,MAC5D0tS,EAAkB1lI,GAAUG,aAAY,IAAIP,GAAoB+lI,WAOhErtP,EAAS,CALM/2E,KAAKyjU,eAAetuQ,QAAQ4uQ,GACzB/jU,KAAKyjU,eAAetuQ,QAAQ6uQ,GACjChkU,KAAKyjU,eAAetuQ,QAAQ+uQ,GACxBlkU,KAAKyjU,eAAetuQ,QAAQgvQ,IAG7B,CAAC9lI,GAAoBg0H,SAAUh0H,GAAoB4lI,YAAa5lI,GAAoB5nK,MAAO4nK,GAAoB+lI,YAEvH7mU,SAAQ,SAACw6T,EAAiBj3T,GAAkB,SAAKujU,kBAAkBtM,EAAUhhP,EAAOj2E,GAAO,GAC5G,EAQSgjU,EAAAA,UAAAA,kBAAV,SAA4B5/N,EAAgBvoG,GACpCA,GACAqE,KAAKskU,kBAAkBpgO,EAAQvoG,GAAO,EAE7C,EAMSmoU,EAAAA,UAAAA,qBAAV,SAA+BS,GAC3B,IACI,IAAMC,EAAan8T,KAAKC,MAAMi8T,GAO9B,OAAQC,GAAoC,kBAAfA,EAA2BA,EAAa,IAGxE,CAFC,MAAOthU,GACL,OAAO,IACV,CACJ,EAMD4gU,EAAAA,UAAAA,QAAAA,SAAQtmU,GACJ,OAAOwC,KAAKyjU,eAAetuQ,QAAQ33D,EACtC,EAODsmU,EAAAA,UAAAA,QAAAA,SAAQtmU,EAAa7B,GACjBqE,KAAKyjU,eAAexuQ,QAAQz3D,EAAK7B,EACpC,EAMDmoU,EAAAA,UAAAA,WAAAA,SAAW3N,GACP,IAAMpqH,EAAU/rM,KAAKm1D,QAAQghQ,GAC7B,IAAKpqH,EACD,OAAO,KAGX,IAAM04H,EAAgBzkU,KAAK0kU,qBAAqB34H,GAChD,OAAK04H,GAAkBj6H,GAAcm6H,gBAAgBF,GAI9C1O,GAAavsD,SAAwB,IAAIh/D,GAAiBi6H,GAHtD,IAId,EAODX,EAAAA,UAAAA,WAAAA,SAAW/3H,GACP/rM,KAAK0nF,OAAOmD,MAAM,yCAClB,IAAMrtF,EAAMuuM,EAAQ64H,qBACpB5kU,KAAKi1D,QAAQz3D,EAAK6K,KAAKI,UAAUsjM,GACpC,EAMD+3H,EAAAA,UAAAA,qBAAAA,SAAqBC,GACjB,IAAMpoU,EAAQqE,KAAKm1D,QAAQ4uQ,GAC3B,IAAKpoU,EAED,OADAqE,KAAK0nF,OAAOmD,MAAM,kEACX,KAGX,IAAMg6O,EAAgB7kU,KAAK0kU,qBAAqB/oU,GAChD,OAAKkpU,GAAkB3H,GAAc4H,gBAAgBD,IAKrD7kU,KAAK0nF,OAAOmD,MAAM,uDACXkrO,GAAavsD,SAAS,IAAI0zD,GAAiB2H,KAL9C7kU,KAAK0nF,OAAOmD,MAAM,kEACX,KAKd,EAMDi5O,EAAAA,UAAAA,qBAAAA,SAAqBn4H,GACjB3rM,KAAK0nF,OAAOmD,MAAM,mDAClB,IAAMk5O,EAAap4H,EAAQ8uH,wBAE3Bz6T,KAAKi1D,QAAQ8uQ,EAAY17T,KAAKI,UAAUkjM,GAC3C,EAMDm4H,EAAAA,UAAAA,yBAAAA,SAAyBiB,GACrB,IAAMppU,EAAQqE,KAAKm1D,QAAQ4vQ,GAC3B,IAAKppU,EAED,OADAqE,KAAK0nF,OAAOmD,MAAM,sEACX,KAEX,IAAMm6O,EAAoBhlU,KAAK0kU,qBAAqB/oU,GACpD,OAAKqpU,GAAsBxH,GAAkByH,oBAAoBD,IAKjEhlU,KAAK0nF,OAAOmD,MAAM,2DACXkrO,GAAavsD,SAAS,IAAIg0D,GAAqBwH,KALlDhlU,KAAK0nF,OAAOmD,MAAM,sEACX,KAKd,EAMDi5O,EAAAA,UAAAA,yBAAAA,SAAyBzwC,GACrBrzR,KAAK0nF,OAAOmD,MAAM,uDAClB,IAAMk6O,EAAiB1xC,EAAYonC,wBACnCz6T,KAAKi1D,QAAQ8vQ,EAAgB18T,KAAKI,UAAU4qR,GAC/C,EAMDywC,EAAAA,UAAAA,0BAAAA,SAA0BoB,GACtB,IAAMvpU,EAAQqE,KAAKm1D,QAAQ+vQ,GAC3B,IAAKvpU,EAED,OADAqE,KAAK0nF,OAAOmD,MAAM,uEACX,KAEX,IAAMs6O,EAAqBnlU,KAAK0kU,qBAAqB/oU,GACrD,OAAKwpU,GAAuBjH,GAAmBkH,qBAAqBD,IAKpEnlU,KAAK0nF,OAAOmD,MAAM,4DACXkrO,GAAavsD,SAAS,IAAI00D,GAAsBiH,KALnDnlU,KAAK0nF,OAAOmD,MAAM,uEACX,KAKd,EAMDi5O,EAAAA,UAAAA,0BAAAA,SAA0BlN,GACtB52T,KAAK0nF,OAAOmD,MAAM,wDAClB,IAAMq6O,EAAkBtO,EAAa6D,wBACrCz6T,KAAKi1D,QAAQiwQ,EAAiB78T,KAAKI,UAAUmuT,GAChD,EAMDkN,EAAAA,UAAAA,eAAAA,SAAeuB,GACX,IAAM1pU,EAAQqE,KAAKm1D,QAAQkwQ,GAC3B,IAAK1pU,EAED,OADAqE,KAAK0nF,OAAOmD,MAAM,4DACX,KAGX,IAAMy6O,EAAiBtlU,KAAK0kU,qBAAqB/oU,GACjD,OAAK2pU,GAAmBlH,GAAkBmH,oBAAoBF,EAAgBC,IAK9EtlU,KAAK0nF,OAAOmD,MAAM,iDACXkrO,GAAavsD,SAAS,IAAI40D,GAAqBkH,KALlDtlU,KAAK0nF,OAAOmD,MAAM,4DACX,KAKd,EAMDi5O,EAAAA,UAAAA,eAAAA,SAAehN,GACX92T,KAAK0nF,OAAOmD,MAAM,6CAClB,IAAMw6O,EAAiBvO,EAAY0O,yBACnCxlU,KAAKi1D,QAAQowQ,EAAgBh9T,KAAKI,UAAUquT,GAC/C,EAMDgN,EAAAA,UAAAA,mBAAAA,SAAmB2B,GACf,IAAM9pU,EAAQqE,KAAKm1D,QAAQswQ,GAC3B,IAAK9pU,EAED,OADAqE,KAAK0nF,OAAOmD,MAAM,gEACX,KAEX,IAAMy6O,EAAiBtlU,KAAK0kU,qBAAqB/oU,GACjD,OAAK2pU,GAAmB9G,GAAsBkH,wBAAwBD,EAAoBH,IAK1FtlU,KAAK0nF,OAAOmD,MAAM,qDACXkrO,GAAavsD,SAAS,IAAIg1D,GAAyB8G,KALtDtlU,KAAK0nF,OAAOmD,MAAM,gEACX,KAKd,EAODi5O,EAAAA,UAAAA,mBAAAA,SAAmB2B,EAA4BE,GAC3C3lU,KAAK0nF,OAAOmD,MAAM,iDAClB7qF,KAAKi1D,QAAQwwQ,EAAoBp9T,KAAKI,UAAUk9T,GACnD,EAKD7B,EAAAA,UAAAA,qBAAAA,SAAqBtmU,GACjB,IAAM7B,EAAQqE,KAAKwjU,gBAAgBruQ,QAAQ33D,GAC3C,IAAK7B,EAED,OADAqE,KAAK0nF,OAAOmD,MAAM,kEACX,KAEX,IAAMy6O,EAAiBtlU,KAAK0kU,qBAAqB/oU,GACjD,OAAI2pU,GAAkB1G,GAAwBgH,0BAA0BpoU,EAAK8nU,IACzEtlU,KAAK0nF,OAAOmD,MAAM,uDACXkrO,GAAavsD,SAAS,IAAIo1D,GAA2B0G,IAEzD,IACV,EAKDxB,EAAAA,UAAAA,yBAAAA,WAAA,WAEI,OADgB9jU,KAAKwjU,gBAAgBpZ,UACtBz6S,QAAO,SAACnS,GACnB,OAAOgqH,EAAKsyM,oBAAoBt8T,EACnC,GACJ,EAODsmU,EAAAA,UAAAA,mBAAAA,SAAmB+B,EAAoBC,GACnC9lU,KAAKwjU,gBAAgBvuQ,QAAQ0uI,GAAkBoiI,YAAaF,GAC5D7lU,KAAKwjU,gBAAgBvuQ,QAAQ0uI,GAAkBqiI,YAAaF,EAC/D,EAKDhC,EAAAA,UAAAA,mBAAAA,WAGI,MAAO,CAFK9jU,KAAKwjU,gBAAgBruQ,QAAQwuI,GAAkBoiI,cAAgBtnI,GAAUyB,aACrElgM,KAAKwjU,gBAAgBruQ,QAAQwuI,GAAkBqiI,cAAgBvnI,GAAUyB,aAE5F,EAMD4jI,EAAAA,UAAAA,qBAAAA,SAAqBtmU,EAAaqvM,GAC9B7sM,KAAK0nF,OAAOmD,MAAM,mDAClB7qF,KAAKwjU,gBAAgBvuQ,QAAQz3D,EAAK6K,KAAKI,UAAUokM,GACpD,EAKDi3H,EAAAA,UAAAA,iBAAAA,WACI,IAAMmC,EAA0BjmU,KAAKkmU,iBAAiB7nI,GAAoB8nI,wBACpEC,EAA4BpmU,KAAKm1D,QAAQ8wQ,GAC/C,IAAKG,EAA2B,CAE5BpmU,KAAK0nF,OAAOmD,MAAM,2EAClB,IAAMw7O,EAAwBrmU,KAAKkmU,iBAAiB7nI,GAAoBioI,gBAClEC,EAA0BvmU,KAAKm1D,QAAQkxQ,GAC7C,IAAIE,EAEA,OADAvmU,KAAK0nF,OAAOmD,MAAM,2BACX,KAEX,IAAM27O,EAAgBxmU,KAAKymU,uBAAuB,CAAC57H,eAAgB07H,IAA0B,IAAM,KACnG,OAAGC,GACCxmU,KAAK0nF,OAAOmD,MAAM,4CAClB7qF,KAAK0nF,OAAOmD,MAAM,8CAClB7qF,KAAKqmM,iBAAiBmgI,GACfA,GAEJ,IACV,CACD,IAAME,EAAwB1mU,KAAK0kU,qBAAqB0B,GACxD,OAAGM,GACC1mU,KAAK0nF,OAAOmD,MAAM,uCACX7qF,KAAKymU,uBAAuB,CAC/Br8H,cAAes8H,EAAsBt8H,cACrCS,eAAgB67H,EAAsB77H,iBACvC,IAAM,OAEb7qM,KAAK0nF,OAAOmD,MAAM,2BACX,KACV,EAMDi5O,EAAAA,UAAAA,iBAAAA,SAAiB/3H,GACb,IAAM46H,EAAmB3mU,KAAKkmU,iBAAiB7nI,GAAoB8nI,wBAC7DE,EAAwBrmU,KAAKkmU,iBAAiB7nI,GAAoBioI,gBACxE,GAAIv6H,EAAS,CACT/rM,KAAK0nF,OAAOklH,QAAQ,wCACpB,IAAMg6H,EAA2C,CAC7Cx8H,cAAe2B,EAAQ3B,cACvBS,eAAgBkB,EAAQlB,gBAE5B7qM,KAAKyjU,eAAexuQ,QAAQ0xQ,EAAkBt+T,KAAKI,UAAUm+T,IAC7D5mU,KAAKyjU,eAAexuQ,QAAQoxQ,EAAuBt6H,EAAQlB,eAC9D,MACG7qM,KAAK0nF,OAAOklH,QAAQ,+DACpB5sM,KAAKyjU,eAAevuQ,WAAWyxQ,GAC/B3mU,KAAKyjU,eAAevuQ,WAAWmxQ,EAEtC,EAMDvC,EAAAA,UAAAA,uBAAAA,SAAuBnM,GAEnB,OADoB33T,KAAKklM,iBACNv1L,QAAO,SAACw+L,GACvB,QAAIwpH,EAAch9T,UAAYg9T,EAAch9T,SAAS8C,gBAAkB0wM,EAAWxzM,SAAS8C,mBAIvFk6T,EAAcvtH,eAAiButH,EAAcvtH,gBAAkB+D,EAAW/D,mBAI1EutH,EAAc9sH,gBAAkB8sH,EAAc9sH,iBAAmBsD,EAAWtD,oBAI5E8sH,EAAchtH,UAAYgtH,EAAchtH,WAAawD,EAAWxD,aAIhEgtH,EAAc7rO,aAAe6rO,EAAc7rO,cAAgBqiH,EAAWriH,eAK7E,GACJ,EAODg4O,EAAAA,UAAAA,sBAAAA,SAAsB+C,EAAoBr7O,GACtC,IAAMssO,EAAmB93T,KAAKklM,iBAAiBv1L,QAAO,SAACymT,GACnD,GAAI5qO,EAAK,CACL,IAAMs7O,EAAa1Q,EAAY7qH,eAAiB6qH,EAAY7qH,cAAZ,IAChD,OAAO//G,IAAQs7O,CAClB,CAED,QAAID,GACOA,IAAczQ,EAAYz7T,QAIxC,IAED,GAAgC,IAA5Bm9T,EAAiBzjU,OACjB,OAAOyjU,EAAiB,GACrB,GAAIA,EAAiBzjU,OAAS,EACjC,MAAM8yM,GAAgBs0H,6CAG1B,OAAO,IACV,EAMDqI,EAAAA,UAAAA,mBAAAA,SAAmBiD,GACf,IAAMprU,EAAQqE,KAAKm1D,QAAQ4xQ,GAC3B,IAAKprU,EAED,OADAqE,KAAK0nF,OAAOmD,MAAM,gEACX,KAGX,IAAMm8O,EAAwBhnU,KAAK0kU,qBAAqB/oU,GACxD,OAAKqrU,GAA0BvH,GAAiBwH,mBAAmBF,EAAoBC,IAKvFhnU,KAAK0nF,OAAOmD,MAAM,qDACXkrO,GAAavsD,SAAS,IAAIi2D,GAAoBuH,KALjDhnU,KAAK0nF,OAAOmD,MAAM,gEACX,KAKd,EAODi5O,EAAAA,UAAAA,mBAAAA,SAAmBiD,EAA4BG,GAC3ClnU,KAAK0nF,OAAOmD,MAAM,iDAClB7qF,KAAKi1D,QAAQ8xQ,EAAoB1+T,KAAKI,UAAUy+T,GACnD,EAODpD,EAAAA,UAAAA,kBAAAA,SAAkB/L,EAAkB3Q,GAChC,IAAM5pT,EAAM4pT,EAAcpnT,KAAKkmU,iBAAiBnO,GAAYA,EAC5D,GAAI/3T,KAAKujU,YAAY3yH,uBAAwB,CACzC,IAAMu2H,EAAannU,KAAKonU,cAAc5pU,GACtC,GAAI2pU,EAEA,OADAnnU,KAAK0nF,OAAOmD,MAAM,uGACXs8O,CAEd,CAED,IAAMxrU,EAAQqE,KAAK2jU,sBAAsBxuQ,QAAQ33D,GACjD,IAAK7B,EAAO,CAER,GAAIqE,KAAKujU,YAAY5yH,gBAAkBnN,GAAqBwrB,aAAc,CACtE,IAAMz8M,EAAOvS,KAAKyjU,eAAetuQ,QAAQ33D,GACzC,GAAI+U,EAEA,OADAvS,KAAK0nF,OAAOmD,MAAM,sFACXt4E,CAEd,CAED,OADAvS,KAAK0nF,OAAOmD,MAAM,+EACX,IACV,CAED,OADA7qF,KAAK0nF,OAAOmD,MAAM,wEACXlvF,CACV,EASDmoU,EAAAA,UAAAA,kBAAAA,SAAkB/L,EAAkBp8T,EAAeyrT,GAC/C,IAAM5pT,EAAM4pT,EAAcpnT,KAAKkmU,iBAAiBnO,GAAYA,EAE5D/3T,KAAK2jU,sBAAsB1uQ,QAAQz3D,EAAK7B,GACpCqE,KAAKujU,YAAY3yH,yBACjB5wM,KAAK0nF,OAAOmD,MAAM,kGAClB7qF,KAAKqnU,cAAc7pU,EAAK7B,GAE/B,EAODmoU,EAAAA,UAAAA,WAAAA,SAAWtmU,GAOP,OANAwC,KAAKyjU,eAAevuQ,WAAW13D,GAC/BwC,KAAK2jU,sBAAsBzuQ,WAAW13D,GAClCwC,KAAKujU,YAAY3yH,yBACjB5wM,KAAK0nF,OAAOmD,MAAM,wFAClB7qF,KAAKsnU,gBAAgB9pU,KAElB,CACV,EAMDsmU,EAAAA,UAAAA,YAAAA,SAAYtmU,GACR,OAAOwC,KAAKyjU,eAAenZ,YAAY9sT,IAAQwC,KAAK2jU,sBAAsBrZ,YAAY9sT,EACzF,EAKDsmU,EAAAA,UAAAA,QAAAA,WACI,OAAO,GACA9jU,KAAKyjU,eAAerZ,UACpBpqT,KAAK2jU,sBAAsBvZ,UAErC,EAKK0Z,EAAAA,UAAAA,MAAN,kHAEI,SAAM9jU,KAAKunU,mCAAX3hO,EAAAA,OACA5lG,KAAKwnU,oBAGLxnU,KAAKoqT,UAAU7sT,SAAQ,SAACw6T,IAEfvwM,EAAKi8M,eAAenZ,YAAYyN,KAAavwM,EAAKm8M,sBAAsBrZ,YAAYyN,KAA8D,IAA9CA,EAASz7T,QAAQmiM,GAAUG,gBAA+D,IAArCm5H,EAASz7T,QAAQkrH,EAAK8oF,WAChL9oF,EAAKtyD,WAAW6iQ,EAEvB,IAED/3T,KAAKwjU,gBAAgBtjS,kBACxB,EAQD4jS,EAAAA,UAAAA,cAAAA,SAAc2D,EAAoBtwG,EAAqBvtN,GACnD,IAAI89T,EAAe5sU,mBAAmB2sU,GAAW,IAAI3sU,mBAAmBq8N,GAAY,wBAChFvtN,IAEA89T,GAAa,WADM1nU,KAAK2nU,wBAAwB/9T,GACd,KAGlC5J,KAAKujU,YAAYqE,gBACjBF,GAAa,WAGjBv9T,SAASH,OAAS09T,CACrB,EAMD5D,EAAAA,UAAAA,cAAAA,SAAc2D,GAGV,IAFA,IAAMrmU,EAAUtG,mBAAmB2sU,GAAW,IACxCI,EAAa19T,SAASH,OAAO5V,MAAM,KAChCiM,EAAY,EAAGA,EAAIwnU,EAAWxzU,OAAQgM,IAAK,CAEhD,IADA,IAAI2J,EAAS69T,EAAWxnU,GACI,MAArB2J,EAAO0B,OAAO,IACjB1B,EAASA,EAAOwgB,UAAU,GAE9B,GAA6B,IAAzBxgB,EAAO1N,QAAQ8E,GACf,OAAOkJ,mBAAmBN,EAAOwgB,UAAUppB,EAAK/M,OAAQ2V,EAAO3V,QAEtE,CACD,OAAOoqM,GAAUyB,YACpB,EAKD4jI,EAAAA,UAAAA,iBAAAA,WAAA,WACUgE,EAAkBrpI,GAAUG,aAAY,IAAI5+L,KAAKswM,SACpCnmM,SAASH,OAAO5V,MAAM,KAC9BmJ,SAAQ,SAACyM,GAChB,KAA4B,MAArBA,EAAO0B,OAAO,IAEjB1B,EAASA,EAAOwgB,UAAU,GAE9B,GAAqC,IAAjCxgB,EAAO1N,QAAQwrU,GAAqB,CACpC,IAAMC,EAAY/9T,EAAO5V,MAAM,KAAK,GACpCozH,EAAK8/M,gBAAgBS,EACxB,CACJ,GACJ,EAMDjE,EAAAA,UAAAA,gBAAAA,SAAgB2D,GACZznU,KAAKqnU,cAAcI,EAAYhpI,GAAUyB,cAAe,EAC3D,EAMD4jI,EAAAA,UAAAA,wBAAAA,SAAwBkE,GACpB,IAAMC,EAAQ,IAAI90U,KAElB,OADa,IAAIA,KAAK80U,EAAM70U,UAAY40U,EAAiBhoU,KAAKkoU,wBAClD/+H,aACf,EAKD26H,EAAAA,UAAAA,SAAAA,WACI,OAAO9jU,KAAKyjU,cACf,EAKDK,EAAAA,UAAAA,SAAAA,WAEC,EAODA,EAAAA,UAAAA,iBAAAA,SAAiBtmU,GAEb,OADqBwC,KAAK0kU,qBAAqBlnU,GAQxC6K,KAAKI,UAAUjL,GANdwqM,GAAYljH,WAAWtnF,EAAKihM,GAAUG,eAAiBoJ,GAAYljH,WAAWtnF,EAAK6gM,GAAoB8pI,eAChG3qU,EAEDihM,GAAUG,aAAY,IAAI5+L,KAAKswM,SAAQ,IAAI9yM,CAI5D,EAMDsmU,EAAAA,UAAAA,qBAAAA,SAAqB9D,GAGT,IAAIoI,EAER1I,GAAc0D,kBAAkBpjU,KAAKg2T,WAAYgK,GAAYJ,aAAAh7T,GAEjE,OAAO5E,KAAKkmU,iBAAoBxiI,GAAmB2kI,UAAS,IAAID,EACnE,EAMDtE,EAAAA,UAAAA,iBAAAA,SAAiB9D,GAGL,IAAIoI,EAER1I,GAAc0D,kBAAkBpjU,KAAKg2T,WAAYgK,GAAYJ,aAAAh7T,GAEjE,OAAO5E,KAAKkmU,iBAAoBxiI,GAAmB4kI,cAAa,IAAIF,EACvE,EAMDtE,EAAAA,UAAAA,iBAAAA,SAAiB9D,GAIL,IAAIoI,EAER1I,GAAc0D,kBAAkBpjU,KAAKg2T,WAAYgK,GAAYJ,aAAAh7T,GACjE,OAAO5E,KAAKkmU,iBAAoBxiI,GAAmB6kI,cAAa,IAAIH,EACvE,EAKDtE,EAAAA,UAAAA,mBAAAA,SAAmB0E,GACf,IAAMC,EAAgBzoU,KAAK0oU,iBAAiBF,GACtCnxT,EAAQrX,KAAK2oU,kBAAkBF,GACrC,IAAKpxT,EACD,OAAO,KAGX,IAAMuxT,EAAoB5oU,KAAK6oU,qBAAqBxxT,GACpD,OAAOrX,KAAK2oU,kBAAkBC,EACjC,EAOD9E,EAAAA,UAAAA,mBAAAA,SAAmBzsT,EAAeg2L,EAAey7H,EAA2BjC,EAAmB96H,GAC3F/rM,KAAK0nF,OAAOmD,MAAM,iDAElB,IAAM49O,EAAgBzoU,KAAK0oU,iBAAiBrxT,GAC5CrX,KAAKskU,kBAAkBmE,EAAepxT,GAAO,GAG7C,IAAM0xT,EAAgB/oU,KAAKgpU,iBAAiB3xT,GAC5CrX,KAAKskU,kBAAkByE,EAAe17H,GAAO,GAG7C,IAAMu7H,EAAoB5oU,KAAK6oU,qBAAqBxxT,GAGpD,GAFArX,KAAKskU,kBAAkBsE,EAAmBE,GAAmB,GAEzD/8H,EAAS,CACT,IAAMk9H,EAA+B,CACjCjS,WAAYjrH,EAAQ3B,cACpBnsM,KAAMysT,GAAkBwe,iBAE5BlpU,KAAKskU,kBAAkB5gI,GAAmBylI,eAAgB9gU,KAAKI,UAAUwgU,IAAgB,EAC5F,MAAM,IAAKjhI,GAAYjiL,QAAQ8gT,GAAY,CAClCoC,EAA+B,CACjCjS,WAAY6P,EACZ5oU,KAAMysT,GAAkB0e,KAE5BppU,KAAKskU,kBAAkB5gI,GAAmBylI,eAAgB9gU,KAAKI,UAAUwgU,IAAgB,EAC5F,CACJ,EAMDnF,EAAAA,UAAAA,kBAAAA,SAAkBzsT,GAAlB,WACIrX,KAAK0nF,OAAOmD,MAAM,gDAEbm9G,GAAYjiL,QAAQ1O,IACrBrX,KAAKoqT,UAAU7sT,SAAQ,SAAAC,IACS,IAAxBA,EAAIlB,QAAQ+a,IACZmwG,EAAKtyD,WAAW13D,EAEvB,IAID6Z,IACArX,KAAKk1D,WAAWl1D,KAAK0oU,iBAAiBrxT,IACtCrX,KAAKk1D,WAAWl1D,KAAKgpU,iBAAiB3xT,IACtCrX,KAAKk1D,WAAWl1D,KAAK6oU,qBAAqBxxT,KAE9CrX,KAAKk1D,WAAWl1D,KAAKkmU,iBAAiBxiI,GAAmB2lI,iBACzDrpU,KAAKk1D,WAAWl1D,KAAKkmU,iBAAiBxiI,GAAmB4lI,aACzDtpU,KAAKk1D,WAAWl1D,KAAKkmU,iBAAiBxiI,GAAmB6lI,WACzDvpU,KAAKk1D,WAAWl1D,KAAKkmU,iBAAiBxiI,GAAmB8lI,iBACzDxpU,KAAKk1D,WAAWl1D,KAAKkmU,iBAAiBxiI,GAAmBylI,iBACzDnpU,KAAKk1D,WAAWl1D,KAAKkmU,iBAAiBxiI,GAAmB+lI,iBACzDzpU,KAAK0pU,0BAAyB,EACjC,EAMD5F,EAAAA,UAAAA,oBAAAA,SAAoB9D,GAGhB,GAFAhgU,KAAK0nF,OAAOmD,MAAM,kDAEdm1O,EAAa,CACb,IAAM2J,EAAW3pU,KAAK0oU,iBAAiB1I,GACjCwI,EAAcxoU,KAAK2jU,sBAAsBxuQ,QAAQw0Q,GACvD3pU,KAAK0nF,OAAOkiP,QAAQ,sFAAsFpB,GAC1GxoU,KAAK6pU,kBAAkBrB,GAAe/pI,GAAUyB,aACnD,CACDlgM,KAAK8pU,kBACR,EAODhG,EAAAA,UAAAA,8BAAAA,SAA8Bl6H,GAA9B,WACI5pM,KAAK0nF,OAAOmD,MAAM,4DAElB7qF,KAAKoqT,UAAU7sT,SAAQ,SAACC,GAEpB,IAAuD,IAAnDA,EAAIlB,QAAQonM,GAAmB6kI,eAAnC,CAKA,IAAM14J,EAAaroD,EAAKm8M,sBAAsBxuQ,QAAQ33D,GACtD,GAAKqyK,EAAL,CAIA,IAAMk6J,EAAc5G,GAAqB6G,2BAA2BxiN,EAAKwuM,WAAYnmJ,GACjFk6J,GAAeA,EAAYngI,kBAAoBA,IAC/CpiF,EAAK9/B,OAAOkiP,QAAQ,gGAAgG/5J,GACpHroD,EAAKqiN,kBAAkBh6J,GAL1B,CANA,CAaJ,IACD7vK,KAAK8pU,mBACL9pU,KAAK0pU,0BAAyB,EACjC,EAED5F,EAAAA,UAAAA,iBAAAA,SAAiBmG,EAAiDhf,GAC9DjrT,KAAK0nF,OAAOmD,MAAM,+CAElB,IAAMq/O,EAAejf,EAAc3F,aAAaj9S,KAAKI,UAAUwhU,IAC/DjqU,KAAKskU,kBAAkB5gI,GAAmB2lI,eAAgBa,GAAc,EAC3E,EAKDpG,EAAAA,UAAAA,iBAAAA,SAAiBzsT,EAAe4zS,GAC5BjrT,KAAK0nF,OAAOmD,MAAM,+CAElB,IAAMs/O,EAAsBnqU,KAAK2oU,kBAAkBjlI,GAAmB2lI,gBAAgB,GACtF,IAAKc,EACD,MAAMplB,GAAiBqlB,iCAG3B,IAAMC,EAAgBrqU,KAAK0kU,qBAAqBzZ,EAAchhH,aAAakgI,IAC3E,IAAKE,EACD,MAAMtlB,GAAiBulB,4CAK3B,GAHAtqU,KAAKk1D,WAAWl1D,KAAKkmU,iBAAiBxiI,GAAmB2lI,iBAGrDrhI,GAAYjiL,QAAQskT,EAAcz+H,WAAY,CAC9C,IAAMg9H,EAA4B5oU,KAAK6oU,qBAAqBxxT,GACtDkzT,EAAkBvqU,KAAK2oU,kBAAkBC,GAC/C,IAAK2B,EACD,MAAMxlB,GAAiBylB,+BAE3BH,EAAcz+H,UAAY2+H,CAC7B,CAED,OAAOF,CACV,EAKDvG,EAAAA,UAAAA,uBAAAA,WACI9jU,KAAK0nF,OAAOmD,MAAM,qDAClB,IAAM4/O,EAAgBzqU,KAAK2oU,kBAAkBjlI,GAAmB+lI,gBAAgB,GAChF,IAAKgB,EAED,OADAzqU,KAAK0nF,OAAOmD,MAAM,8EACX,KAGX,IAAMw/O,EAAgBrqU,KAAK0kU,qBAAqB+F,GAChD,OAAKJ,IACDrqU,KAAK0nF,OAAOxkF,MAAM,8EACX,KAId,EAED4gU,EAAAA,UAAAA,wBAAAA,SAAwBhL,GACpB,IAAMxoH,EAAWtwM,KAAK0qU,2BAEtB,OAAI5R,EACOxoH,IAAatwM,KAAKswM,WAEhBA,CAEhB,EAEDwzH,EAAAA,UAAAA,yBAAAA,WACI,IAAMtmU,EAASihM,GAAUG,aAAY,IAAI8E,GAAmBinI,uBAC5D,OAAO3qU,KAAK2oU,kBAAkBnrU,GAAK,EACtC,EAEDsmU,EAAAA,UAAAA,yBAAAA,SAAyB52J,GAErB,IAAM1vK,EAASihM,GAAUG,aAAY,IAAI8E,GAAmBinI,uBAC5D,GAAIz9J,EAAY,CACZ,GAAIltK,KAAK0qU,2BACL,MAAM3lB,GAAiB6lB,mCAGvB5qU,KAAKskU,kBAAkB9mU,EAAKwC,KAAKswM,UAAU,EAElD,MAAWpjC,GAAcltK,KAAK0qU,6BAA+B1qU,KAAKswM,UAC/DtwM,KAAKk1D,WAAW13D,EAEvB,EAKDsmU,EAAAA,UAAAA,mBAAAA,WAEI,IAAM+G,EAAoB7qU,KAAK2oU,kBAAkBtqI,GAAoB8pI,eACjE0C,IACA7qU,KAAKyjU,eAAevuQ,WAAWmpI,GAAoB8pI,eACnDnoU,KAAK0nF,OAAOklH,QAAQ,oCAIxB,IAAMk+H,EAAoB9qU,KAAK2oU,kBAAkBtqI,GAAoBg0H,UAAU,GAC3EyY,IACA9qU,KAAKk1D,WAAWl1D,KAAKkmU,iBAAiB7nI,GAAoBg0H,WAC1DryT,KAAK0nF,OAAOklH,QAAQ,yCAGxB,IAAMm+H,EAAsBD,GAAqBD,EACjD,GAAIE,EAAqB,CACrB,IAAM/P,EAAgB,IAAIgQ,GAAQD,EAAqB/qU,KAAKg2T,YAC5D,GAAIgF,EAAc9uH,QAAU8uH,EAAc9uH,OAAOE,mBAE7C,OADApsM,KAAK0nF,OAAOklH,QAAQ,6GACbouH,EAAc9uH,OAAOE,mBAE3B,GAAI4uH,EAAc9uH,QAAU8uH,EAAc9uH,OAAO++H,IAElD,OADAjrU,KAAK0nF,OAAOklH,QAAQ,8FACbouH,EAAc9uH,OAAO++H,IAG5BjrU,KAAK0nF,OAAOklH,QAAQ,yJAE3B,CAED,OAAO,IACV,EAKDk3H,EAAAA,UAAAA,yBAAAA,SAAyBoH,EAAyBlU,GAC9C,IAAMoC,EAAkBpC,EAAWyD,wBAEnC,GAAIyQ,IAAoB9R,EAAiB,CACrC,IAAM+R,EAAYnrU,KAAKm1D,QAAQ+1Q,GAC/B,GAAIC,EAIA,OAHAnrU,KAAKk1D,WAAWg2Q,GAChBlrU,KAAKi1D,QAAQmkQ,EAAiB+R,GAC9BnrU,KAAK0nF,OAAOklH,QAAQ,uBAAuBoqH,EAAWjF,eAAc,cAC7DqH,EAEPp5T,KAAK0nF,OAAOxkF,MAAM,mCAAmC8zT,EAAWjF,eAAc,wEAErF,CAED,OAAOmZ,CACV,EACL,CAphCA,EAAyCnV,KLZzC,SAAYuK,GACRA,EAAAA,IAAAA,MACAA,EAAAA,KAAAA,MAFJ,EAAYA,KAAAA,GAGX,KCMD,SAAYC,GAERA,EAAAA,EAAAA,KAAAA,GAAAA,OAGAA,EAAAA,YAAAA,oCAGAA,EAAAA,SAAAA,gCAGAA,EAAAA,WAAAA,iCAGAA,EAAAA,aAAAA,mCAGAA,EAAAA,kBAAAA,kCAjBJ,EAAYA,KAAAA,GAkBX,KKlCM,IACMlzT,GAAU,QCgJV+9T,GAAkD,CAC3DC,0BA/HqC,IAgIrCC,sBAAsB,EACtBC,SAAU9sI,GAAUyB,cAGlBsrI,GAAyD,CAC3D3iI,eAAgB,WAEf,EACDC,mBAAmB,EACnBC,SAAU/B,GAAS2B,KACnBrE,cAAe7F,GAAUyB,cAGvBurI,GAAiD,CAC7CC,oBAAN,gFAEI,KADmB,qEACbvnI,GAAU0sH,sBADG,2EAEtB,EACK8a,qBAAN,gFAEI,KADmB,sEACbxnI,GAAU0sH,sBADG,4EAEtB,GAGC+a,GAAoC,CACtCC,IAAKptI,GAAUE,IACftxL,QAASA,GACTy+T,IAAKrtI,GAAUyB,aACf6rI,GAAIttI,GAAUyB,cAGZ8rI,GAAgD,CAClDC,aAAcxtI,GAAUyB,aACxBgsI,qBAAiB7uU,GAGf8uU,GAAiD,CACnDC,mBAAoB7L,GAAmB8L,KACvCC,OAAQ,GAAG7tI,GAAUM,uBAGnBwtI,GAAwD,CAC1DprB,YAAa,CACT4N,QAAS,GACTC,WAAY,KCxJP,IAAAwd,GAAuC,CAChDd,oBAAqB,WAEjB,OAAOlyU,QAAQE,OAAOyqM,GAAU0sH,sBADb,iGAEtB,EACD8a,qBAAsB,WAElB,OAAOnyU,QAAQE,OAAOyqM,GAAU0sH,sBADb,kGAEtB,iBCpCL,aA4FC,CAAD,OApFU4b,EAAAA,UAAAA,oBAAN,SAA6BtxU,EAAauJ,yGAGvB,gCAAMyiB,MAAMhsB,EAAK,CACxBW,OAAQ2nM,GAAkBtgG,IAC1BppG,QAASiG,KAAK0sU,gBAAgBhoU,oBAFlCnJ,EAAWyqG,EAAAA,oBAKX,iBAAIr6F,OAAOd,UAAU8hU,OACX5nB,GAAiB6nB,4BAA4BzmB,EAAGhrT,GAEhD4pT,GAAiB8nB,0CAOjB,gCADN9yU,QAASiG,KAAK8sU,cAAcvxU,EAASxB,UAC/B,GAAMwB,EAASyhU,eAFzB,MAAO,CAAP,GAEIp3N,EAAAA,KAAMI,EAAAA,OACNJ,EAAAA,OAAQrqG,EAASE,OADjB,WAIJ,eAAMspT,GAAiBgoB,wCAAwC5xU,0BAEtE,EAQKsxU,EAAAA,UAAAA,qBAAN,SAA8BtxU,EAAauJ,2GACjCsoU,EAAWtoU,GAAWA,EAAQ43B,MAASmiK,GAAUyB,8BAIxC,gCAAM/4K,MAAMhsB,EAAK,CACxBW,OAAQ2nM,GAAkB5iH,KAC1B9mF,QAASiG,KAAK0sU,gBAAgBhoU,GAC9B43B,KAAM0wS,mBAHVzxU,EAAWyqG,EAAAA,oBAMX,iBAAIr6F,OAAOd,UAAU8hU,OACX5nB,GAAiBkoB,6BAA6B9iB,EAAGhvT,GAEjD4pT,GAAiB8nB,0CAOjB,gCADN9yU,QAASiG,KAAK8sU,cAAcvxU,EAASxB,UAC/B,GAAMwB,EAASyhU,eAFzB,MAAO,CAAP,GAEIp3N,EAAAA,KAAMI,EAAAA,OACNJ,EAAAA,OAAQrqG,EAASE,OADjB,WAIJ,eAAMspT,GAAiBgoB,wCAAwC5xU,0BAEtE,EAMOsxU,EAAAA,UAAAA,gBAAR,SAAwB/nU,GACpB,IAAM3K,EAAU,IAAImzU,QACpB,IAAMxoU,IAAWA,EAAQ3K,QACrB,OAAOA,EAEX,IAAMozU,EAAiBzoU,EAAQ3K,QAI/B,OAHAgK,OAAOsC,KAAK8mU,GAAgB5vU,SAAQ,SAACC,GACjCzD,EAAQkT,OAAOzP,EAAK2vU,EAAe3vU,GACtC,IACMzD,CACV,EAEO0yU,EAAAA,UAAAA,cAAR,SAAsB1yU,GAClB,IAAMqzU,EAAqC,CAAC,EAI5C,OAHArzU,EAAQwD,SAAQ,SAAC5B,EAAe6B,GAC5B4vU,EAAW5vU,GAAO7B,CACrB,IACMyxU,CACV,EACL,CAAC,kBC5FD,aA+GC,CAAD,OAvGUC,EAAAA,UAAAA,oBAAN,SAA6BlyU,EAAauJ,wEACtC,MAAO,CAAP,EAAO1E,KAAKstU,iBAAiBnyU,EAAKsoM,GAAkBtgG,IAAKz+F,SAC5D,EAQK2oU,EAAAA,UAAAA,qBAAN,SAA8BlyU,EAAauJ,wEACvC,MAAO,CAAP,EAAO1E,KAAKstU,iBAAiBnyU,EAAKsoM,GAAkB5iH,KAAMn8E,SAC7D,EAQO2oU,EAAAA,UAAAA,iBAAR,SAA4BlyU,EAAaW,EAA2B4I,GAApE,WACI,OAAO,IAAIlL,SAA4B,SAACC,EAASC,GAC7C,IAAMqjC,EAAM,IAAItiC,eAoChB,GAnCAsiC,EAAIlhC,KAAKC,EAAQX,GAAkB,GACnCqsH,EAAK+lN,cAAcxwS,EAAKr4B,GACxBq4B,EAAItV,OAAS,YACLsV,EAAIthC,OAAS,KAAOshC,EAAIthC,QAAU,OAC9BK,IAAW2nM,GAAkB5iH,KAC7BnnF,EAAOqrT,GAAiBkoB,6BAA6B,sBAAsBlwS,EAAIthC,OAAUN,IAEzFzB,EAAOqrT,GAAiB6nB,4BAA4B,sBAAsB7vS,EAAIthC,OAAUN,KAGhG,IACI,IAAMqyU,EAAenlU,KAAKC,MAAMy0B,EAAIvhC,cAC9BiyU,EAAsC,CACxC1zU,QAASytH,EAAKslN,cAAc/vS,GAC5BT,KAAMkxS,EACN/xU,OAAQshC,EAAIthC,QAEhBhC,EAAQg0U,EAGX,CAFC,MAAOjlU,IACL9O,EAAOqrT,GAAiBgoB,wCAAwC5xU,GACnE,CACJ,EAED4hC,EAAIrgC,QAAU,WACNiP,OAAOd,UAAU8hU,OACb7wU,IAAW2nM,GAAkB5iH,KAC7BnnF,EAAOqrT,GAAiBkoB,6BAA6B,sBAAsBlwS,EAAIthC,OAAUN,IAEzFzB,EAAOqrT,GAAiB6nB,4BAA4B,sBAAsB7vS,EAAIthC,OAAUN,IAG5FzB,EAAOqrT,GAAiB8nB,mCAE/B,EAEG/wU,IAAW2nM,GAAkB5iH,MAAQn8E,GAAWA,EAAQ43B,KACxDS,EAAIx+B,KAAKmG,EAAQ43B,UACd,IAAIxgC,IAAW2nM,GAAkBtgG,IAGpC,MAAM4hN,GAAiB2oB,oCAAoC5xU,GAF3DihC,EAAIx+B,MAGP,CACJ,GACJ,EAOO8uU,EAAAA,UAAAA,cAAR,SAAsBtwS,EAAqBr4B,GACvC,GAAIA,GAAWA,EAAQ3K,QAAS,CAC5B,IAAM4zU,EAAUjpU,EAAQ3K,QACxBgK,OAAOsC,KAAKsnU,GAASpwU,SAAQ,SAACC,GAC1Bu/B,EAAIr/B,iBAAiBF,EAAKmwU,EAAQnwU,GACrC,GACJ,CACJ,EAQO6vU,EAAAA,UAAAA,cAAR,SAAsBtwS,GAClB,IACM6wS,EADe7wS,EAAIzhC,wBACMiN,OAAOnU,MAAM,WACtCg5U,EAAqC,CAAC,EAU5C,OATAQ,EAAUrwU,SAAQ,SAAC5B,GACf,IAAMyN,EAAQzN,EAAMvH,MAAM,MACpBy5U,EAAazkU,EAAMtG,QACnBgrU,EAAY1kU,EAAMI,KAAK,MACzBqkU,GAAcC,IACdV,EAAWS,GAAcC,EAEhC,IAEMV,CACV,EACL,CAAC,kBC7GD,aA2IC,CAAD,OApIWW,EAAAA,UAAP,SAAiBl3L,GAEbA,EAAcjrI,SAASN,KAAOmzL,GAAUyB,aACU,oBAAvCrpD,EAAc/vF,QAAQknR,cAE7Bn3L,EAAc/vF,QAAQknR,aAAa,KAAMvvI,GAAUyB,aAAc,GAAGrpD,EAAcjrI,SAASs1B,OAAS21G,EAAcjrI,SAASH,SAAWorI,EAAcjrI,SAASP,OAEpK,EAKM0iU,EAAAA,YAAP,SAAmB5yU,GACf,IAAM8yU,EAAW9yU,EAAI/G,MAAM,KAC3B65U,EAASnrU,QACT6I,OAAOC,SAASN,KAAO2iU,EAAS55U,OAAS,EAAI45U,EAASzkU,KAAK,KAAOi1L,GAAUyB,YAC/E,EAKM6tI,EAAAA,WAAP,WACI,OAAOpiU,OAAO0N,SAAW1N,MAC5B,EAKMoiU,EAAAA,UAAP,WACI,MAAyB,qBAAXpiU,UAA4BA,OAAOuiU,QAC7CviU,OAAOuiU,SAAWviU,QACK,kBAAhBA,OAAOvK,MACoD,IAAlEuK,OAAOvK,KAAK9E,QAAWoqM,GAAkC,IAChE,EAOMqnI,EAAAA,cAAP,WACI,OAAOpiU,OAAOC,SAASV,KAAK9W,MAAM,KAAK,GAAGA,MAAM,KAAK,EACxD,EAKM25U,EAAAA,YAAP,WACI,IACM/L,EADa,IAAIjB,GAAUp1T,OAAOC,SAASV,MAChBg2T,mBACjC,OAAUc,EAAcV,SAAQ,KAAKU,EAAcZ,gBAAe,GACrE,EAKM2M,EAAAA,wBAAP,WACI,OAAIpiU,OAAOwb,OAASxb,OAAOuhU,QAChB,IAAIT,GAEJ,IAAIY,EAElB,EAMMU,EAAAA,2BAAP,WAGI,GAFuBhN,GAAUoN,4BAA4BxiU,OAAOC,SAASN,OAEvDyiU,EAAaK,aAC/B,MAAMrpB,GAAiBspB,sCAE9B,EAOMN,EAAAA,sBAAP,SAA6BnkI,EAAkC0kI,GAC3D,IAAMC,EAAeR,EAAaK,aAClC,GAAIxkI,IAAoB/F,GAAAA,UAA4B0qI,IAAiBD,EAEjE,MAAMvpB,GAAiBypB,4BAA4BD,EAE1D,EAKMR,EAAAA,0BAAP,WAEI,GAAIA,EAAaU,YACb,MAAM1pB,GAAiB2pB,sCAE9B,EAMMX,EAAAA,2BAAP,SAAkCY,GAC9B,IAAKA,EACD,MAAM5pB,GAAiB6pB,kCAE9B,EAOMb,EAAAA,yCAAP,SAAgDc,EAA4BC,GACxE,GAAID,IAAsBC,EACtB,MAAM/pB,GAAiBgqB,0CAE9B,EAKMhB,EAAAA,eAAP,WACI,IAAMtuM,EAAK9zH,OAAOd,UAAUC,UACtBF,EAAO60H,EAAGnjI,QAAQ,SAClB0yU,EAASvvM,EAAGnjI,QAAQ,YACpB2yU,EAASxvM,EAAGnjI,QAAQ,SAG1B,OAFasO,EAAO,GAAKokU,EAAS,GACnBC,EAAS,CAE3B,EACL,CAAC,kBCjJD,aAqCC,CAAD,OA/BIC,EAAAA,UAAAA,iBAAAA,SAAiB/zU,EAAauJ,GAC1B,OAAOwqU,EAAiBC,sBAAsBh0U,EAAKuJ,EACtD,EAODwqU,EAAAA,UAAAA,iBAAAA,SAAiB/zU,EAAauJ,GAC1B,OAAOwqU,EAAiBC,sBAAsBh0U,EAAKuJ,EACtD,EAOcwqU,EAAAA,sBAAf,SAAqC/zU,EAAauJ,GAO9C,OANIA,EAAQ0qU,UACRzjU,OAAOC,SAAS1C,QAAQ/N,GAExBwQ,OAAOC,SAASrH,OAAOpJ,GAGpB,IAAI3B,SAAQ,SAACC,GAChB8C,YAAW,WACP9C,GAAQ,EACX,GAAEiL,EAAQxI,QACd,GACJ,EACL,CAAC,IChCYmzU,GAA4B,QCcpCC,GC1BQluU,GAAO,sBACPiM,GAAU,uBCenB,WAAYq6E,EAAgBujO,GACxBjrT,KAAKuvU,eAAiB,IAAI77P,IAC1B1zE,KAAK0nF,OAASA,EACd1nF,KAAKirT,cAAgBA,EACrBjrT,KAAKwvU,0BAA2B,EAChCxvU,KAAKyvU,yBAA2BzvU,KAAKyvU,yBAAyBjxU,KAAKwB,KACtE,CAiHL,OA3GI0vU,EAAAA,UAAAA,iBAAAA,SAAiBtjU,GACb,GAAsB,qBAAXT,OAAwB,CAC/B,IAAMmjM,EAAa9uM,KAAKirT,cAAc2F,gBAItC,OAHA5wT,KAAKuvU,eAAejzT,IAAIwyL,EAAY1iM,GACpCpM,KAAK0nF,OAAOklH,QAAQ,sCAAsCkC,GAEnDA,CACV,CAED,OAAO,IACV,EAMD4gI,EAAAA,UAAAA,oBAAAA,SAAoB5gI,GAChB9uM,KAAKuvU,eAAe72P,OAAOo2H,GAC3B9uM,KAAK0nF,OAAOklH,QAAQ,kBAAkBkC,EAAU,YACnD,EAKD4gI,EAAAA,UAAAA,2BAAAA,WAC0B,qBAAX/jU,SAIN3L,KAAKwvU,yBAKNxvU,KAAK0nF,OAAOklH,QAAQ,iDAJpB5sM,KAAK0nF,OAAOklH,QAAQ,oCACpB5sM,KAAKwvU,0BAA2B,EAChC7jU,OAAO9N,iBAAiB,UAAWmC,KAAKyvU,2BAI/C,EAKDC,EAAAA,UAAAA,4BAAAA,WAC0B,qBAAX/jU,SAIP3L,KAAKwvU,0BACLxvU,KAAK0nF,OAAOklH,QAAQ,sCACpBjhM,OAAOtR,oBAAoB,UAAW2F,KAAKyvU,0BAC3CzvU,KAAKwvU,0BAA2B,GAEhCxvU,KAAK0nF,OAAOklH,QAAQ,2CAE3B,EASD8iI,EAAAA,UAAAA,UAAAA,SAAU/lI,EAAsBC,EAAmCl/L,EAAwBxH,GAA3F,WACI,GAAsB,qBAAXyI,OAAwB,CAC/B,IAAMgkU,EAAwB,CAC1BhmI,UAAWA,EACXC,gBAAiBA,GAAmB,KACpCl/L,QAASA,GAAW,KACpBxH,MAAOA,GAAS,KAChBugB,UAAWtwB,KAAKqX,OAGpBxK,KAAK0nF,OAAOjsD,KAAK,mBAAmBkuK,GAEpC3pM,KAAKuvU,eAAehyU,SAAQ,SAAC6O,EAAiC0iM,GAC1DtnF,EAAK9/B,OAAOklH,QAAQ,8BAA8BkC,EAAU,KAAKnF,GACjEv9L,EAASvJ,MAAM,KAAM,CAAC8sU,GACzB,GACJ,CACJ,EAKOD,EAAAA,UAAAA,yBAAR,SAAiClnU,GAC7B,IACI,IAAMonU,EAAapnU,EAAEkgB,UAAYlgB,EAAEovR,SACnC,IAAKg4C,EACD,OAEJ,IAAMC,EAAcxnU,KAAKC,MAAMsnU,GAC/B,GAA2B,kBAAhBC,IAA6BrlI,GAAcm6H,gBAAgBkL,GAClE,OAEJ,IACMzZ,EADgBL,GAAavsD,SAAwB,IAAIh/D,GAAiBqlI,GAC9CxZ,kBAC7B7tT,EAAEovR,UAAYpvR,EAAEkgB,UACjB1oB,KAAK0nF,OAAOjsD,KAAK,oDACjBz7B,KAAK8vU,UAAUvnI,GAAAA,mBAAyBlrM,EAAW+4T,KAC3C5tT,EAAEkgB,UAAYlgB,EAAEovR,WACxB53R,KAAK0nF,OAAOjsD,KAAK,wDACjBz7B,KAAK8vU,UAAUvnI,GAAAA,qBAA2BlrM,EAAW+4T,GAI5D,CAFC,MAAO5tT,GACL,MACH,CACJ,EACL,CAAC,IC1HD,2BAoGC,CAAD,OA9FWunU,EAA4B,6BAAnC,SAAoCC,GAChC,OAAU3sI,GAAyC,IAAAh7L,KAAKI,UAAUunU,EACrE,EAOMD,EAAAA,WAAP,SAAkBE,EAA4BD,SACpCxyU,EAAMuyU,EAAgBG,6BAA6BF,GACnDr0U,EAAQs0U,EAAaE,mBAAmB3yU,GAE9C,GAAI7B,EAAO,CACP,GAAIA,EAAMy0U,aAAej9U,KAAKqX,MAE1B,YADAylU,EAAa/6Q,WAAW13D,EAAKkkM,GAAgB2uI,YAGjD,MAAM,IAAI1e,IAA4B,QAAhB,EAAAh2T,EAAM20U,kBAAU1qO,IAAAA,OAAA,EAAAA,EAAEp8F,KAAK,OAAQi1L,GAAUyB,aAAcvkM,EAAMoiF,aAAcpiF,EAAMyoM,SAC1G,CACJ,EAQM2rI,EAAAA,YAAP,SAAmBE,EAA4BD,EAA+Bz0U,GAC1E,GAAIw0U,EAAgBQ,oBAAoBh1U,IAAaw0U,EAAgBS,2BAA2Bj1U,GAAW,CACvG,IAAMk1U,EAAoC,CACtCL,aAAcL,EAAgBW,sBAAsB/8U,SAAS4H,EAASxB,QAAQqkM,GAAYuyI,eAC1FztU,MAAO3H,EAAS+gC,KAAKp5B,MACrBotU,WAAY/0U,EAAS+gC,KAAKs0S,YAC1B7yP,aAAcxiF,EAAS+gC,KAAK4mS,kBAC5B9+H,SAAU7oM,EAAS+gC,KAAK2nK,UAE5BgsI,EAAaY,mBACTd,EAAgBG,6BAA6BF,GAC7CS,EAEP,CACJ,EAMMV,EAAmB,oBAA1B,SAA2Bx0U,GACvB,OAA2B,MAApBA,EAASE,QAAkBF,EAASE,QAAU,KAAOF,EAASE,OAAS,GACjF,EAMMs0U,EAA0B,2BAAjC,SAAkCx0U,GAC9B,QAAIA,EAASxB,UACFwB,EAASxB,QAAQyU,eAAe4vL,GAAYuyI,eAAiBp1U,EAASE,OAAS,KAAOF,EAASE,QAAU,KAGvH,EAMMs0U,EAAqB,sBAA5B,SAA6BK,GACzB,IAAMj9Q,EAAOi9Q,GAAgB,EAAI,EAAIA,EAE/BU,EAAiB39U,KAAKqX,MAAQ,IACpC,OAAO/D,KAAKC,MAGR,IAHcD,KAAKuyB,IACnB83S,GAAkB39Q,GAAQkwI,IAC1BytI,EAAiBztI,IAExB,EAEM0sI,EAAc,eAArB,SAAsBE,EAA4B3/H,EAAkB91M,EAA0Bu2U,GAC1F,IAAMf,EAAgC,CAClC1/H,SAAUA,EACV1E,UAAWpxM,EAAQoxM,UACnB9E,OAAQtsM,EAAQssM,OAChBiqI,sBAAuBA,EACvB7kI,OAAQ1xM,EAAQ0xM,OAChB6vH,qBAAsBvhU,EAAQuhU,qBAC9BnP,sBAAuBpyT,EAAQoyT,sBAC/BE,mBAAoBtyT,EAAQsyT,mBAC5BkkB,UAAWx2U,EAAQw2U,UACnB/U,OAAQzhU,EAAQyhU,QAGdz+T,EAAMwC,KAAKkwU,6BAA6BF,GAC9C,OAAOC,EAAa/6Q,WAAW13D,EAAKkkM,GAAgB2uI,WACvD,EACJN,CAAA,CApGD,GCIA,cAII,SAAYkB,EAAAC,EAA+BjB,GACvCjwU,KAAKkxU,cAAgBA,EACrBlxU,KAAKiwU,aAAeA,CACvB,CA0BL,OAlBUgB,EAAAA,UAAAA,gBAAN,SAAyBjB,EAA+BmB,EAAuBzsU,uGAC3EqrU,GAAgBqB,WAAWpxU,KAAKiwU,aAAcD,oBAI/B,6BAAM,GAAAhwU,KAAKkxU,cAAcvF,qBAAwBwF,EAAezsU,kBAA3EnJ,EAAWqqG,EAAAA,oBAEX,4BAAiBu+F,GACPgiH,EAEAh/G,GAAgBkqI,mBAAmBF,EAAehrB,UAMhE,OAFA4pB,GAAgBuB,YAAYtxU,KAAKiwU,aAAcD,EAAYz0U,GAEpD,CAAP,EAAOA,SACV,EACJ01U,CAAA,CAjCD,GCOA,cA4BI,SAAsBM,EAAAC,EAAoCxmB,GAEtDhrT,KAAKzG,OZoJP,SACFqsG,GACiB,IAoCK6rO,EApCLC,EAAe,cACbC,EAAiB,gBACjBC,EAAgB,gBACbC,EAAqB,mBACrBC,EAAqB,mBACtBC,EAAoB,kBAClBC,EAAiB,oBACvBC,EAAW,cACbC,EAAS,YACIC,EAAsB,yBAC3BC,EAAiB,oBACjBC,EAAiB,oBAGlC7pI,EAAqB53I,GAAAA,GAAAA,CAAAA,EAAAA,IAAkCghR,GAE7D,MAAO,CACHH,aAmBkBA,EAnBYC,EAoB3B,IACHY,mBAAoB,GACpBC,kBAAmBpG,GACnBqG,4BAA4B,GACzBf,IAvBHgB,cAAoB7hR,GAAAA,GAAAA,CAAAA,EAAAA,IAA2B+gR,GAC/CnpI,cAAeA,EACfkqI,iBAAkBb,GAAyB,IAAI5U,GAAoByU,EAAgBphI,SAAUqgH,IAC7FgiB,iBAAkBb,GAAyBrG,GAC3CmH,gBAAiBb,GAAwBphB,GACzCqhB,kBAAmBA,GAAqBhG,GACxCiG,YAAkBrhR,GAAAA,GAAAA,CAAAA,EAAAA,IAAyBqhR,GAC3CC,UAAgBthR,GAAAA,GAAAA,CAAAA,EAAAA,IAA8BshR,GAC9CC,uBAAwBA,GAA0B,KAClDC,kBAAmBA,GAAqB,KACxCC,kBAAmBA,GAAqB,KAE/C,CYpLqBQ,CAAyBrB,GAGvCxxU,KAAK0nF,OAAS,IAAIshH,GAAOhpM,KAAKzG,OAAOivM,cbzDzB,qBayD8Cn7L,IAG1DrN,KAAK09T,YAAc19T,KAAKzG,OAAOq5U,gBAG/B5yU,KAAKiwU,aAAejwU,KAAKzG,OAAOm5U,iBAGhC1yU,KAAKkxU,cAAgBlxU,KAAKzG,OAAOo5U,iBAGjC3yU,KAAK8yU,eAAiB,IAAI7B,GAAejxU,KAAKkxU,cAAelxU,KAAKiwU,cAGlEjwU,KAAKmyU,uBAAyBnyU,KAAKzG,OAAO44U,uBAG1CnyU,KAAK4rM,UAAY5rM,KAAKzG,OAAOk4U,YAAY7lI,UAGzC5rM,KAAKgrT,kBAAoBA,CAC5B,CA2DL,OAtDcumB,EAAyB,UAAAwB,0BAAnC,SAAoCC,GAChC,IAAMj5U,EAAkC,CAAC,EAGzC,GAFAA,EAAQqkM,GAAY60I,cAAgBx0I,GAAUsB,uBAEzC//L,KAAKzG,OAAOk5U,cAAcnH,sBAAwB0H,EACnD,OAAQA,EAAQ/0U,MACZ,KAAKysT,GAAkBwe,gBACnB,IACI,IAAMx9H,EAAavB,GAAiC6oI,EAAQhc,YAC5Dj9T,EAAQqkM,GAAY80I,YAAc,OAAOxnI,EAAWj5H,IAAG,IAAIi5H,EAAWnB,IAGzE,CAFC,MAAO/hM,IACLxI,KAAK0nF,OAAOklH,QAAQ,mDAAqDpkM,GAC5E,CACD,MACJ,KAAKkiT,GAAkB0e,IACnBrvU,EAAQqkM,GAAY80I,YAAc,QAAQF,EAAQhc,WAI9D,OAAOj9T,CACV,EASew3U,EAA0B,UAAA4B,2BAA1C,SAA2ChC,EAAuBjkD,EAAqBnzR,EAAiCi2U,8FACnG,gBAAMhwU,KAAK8yU,eAAeM,gBACvCpD,EACAmB,EACA,CAAE70S,KAAM4wP,EAAanzR,QAASA,EAASwxU,SAAUvrU,KAAKzG,OAAOk5U,cAAclH,mBAQ/E,OAXMhwU,EAAWqqG,EAIhB,OAEG5lG,KAAKzG,OAAO44U,wBAA0B52U,EAASE,OAAS,KAA2B,MAApBF,EAASE,QAExEuE,KAAKzG,OAAO44U,uBAAuBkB,sBAGhC,CAAP,EAAO93U,SACV,EAMDg2U,EAAe,UAAA+B,gBAAf,SAAgBC,GACZ,IAAKA,EAAiBC,oBAClB,MAAMrsI,GAAgBssI,uCAAuC,2DAEjEzzU,KAAK4rM,UAAY2nI,CACpB,EACJhC,CAAA,CAlHD,GCZA,2BAkFC,CAAD,OA5EWmC,EAAmB,oBAA1B,SAA2BljI,GACvB,GAAIxI,GAAYjiL,QAAQyqL,GACpB,MAAMsiH,GAAyB6gB,6BAEtC,EAMMD,EAAc,eAArB,SAAsBE,GAClB,IAAMC,EAAe,GAErB,IAAK,IAAMl4U,KAASqlM,GAChB6yI,EAAahzU,KAAKmgM,GAAYrlM,IAGlC,GAAIk4U,EAAav3U,QAAQs3U,GAAU,EAC/B,MAAM9gB,GAAyBghB,yBAAyBF,EAE/D,EAEMF,EAAc,eAArB,SAAsBxnI,GAClB,IACI7jM,KAAKC,MAAM4jM,EAGd,CAFC,MAAM1jM,IACJ,MAAMsqT,GAAyBihB,iCAClC,CACJ,EAOML,EAAAA,4BAAP,SAAmC/tB,EAAuBquB,GACtD,GAAIhsI,GAAYjiL,QAAQ4/R,IAAkB39G,GAAYjiL,QAAQiuT,GAC1D,MAAMlhB,GAAyBmhB,wCAE/Bj0U,KAAKk0U,4BAA4BF,EAExC,EAMMN,EAA2B,4BAAlC,SAAmCM,GAC/B,GACI,CACIpyI,GAA0BC,MAC1BD,GAA0BE,MAC5BxlM,QAAQ03U,GAAuB,EAEjC,MAAMlhB,GAAyBqhB,uCAEtC,EAMMT,EAAAA,iBAAP,SAAwBU,EAAsBC,GAC1C,OAAKD,GAKLC,EAAY92U,SAAQ,SAAC5B,EAAO6B,GACpB42U,EAAS52U,WACF42U,EAAS52U,EAEvB,IAEM42U,GAVI,CAAC,CAWf,EACJV,CAAA,CAlFD,GCEA,cAII,aACI1zU,KAAKgjU,WAAa,IAAItvP,GACzB,CAwaL,OAnaI4gQ,EAAAA,UAAAA,oBAAAA,WACIt0U,KAAKgjU,WAAW1mT,IACZiiL,GAAmBg2I,cAAez5U,mBAAmB2jM,GAAUiB,oBAEtE,EAKD40I,EAAAA,UAAAA,kCAAAA,WACIt0U,KAAKgjU,WAAW1mT,IACZiiL,GAAmBg2I,cAAez5U,mBAAsB2jM,GAAUiC,oBAAuB,IAAAjC,GAAUkC,wBAE1G,EAMD2zI,EAAe,UAAAE,gBAAf,SAAgBC,GACZz0U,KAAKgjU,WAAW1mT,IACZiiL,GAAmBm2I,cACnB55U,mBAAoB25U,GAA+BpzI,GAAaszI,OAEvE,EAKDL,EAAAA,UAAAA,gBAAAA,WACIt0U,KAAKgjU,WAAW1mT,IACZiiL,GAAmBq2I,cACnB95U,mBAAmB,KAE1B,EAODw5U,EAAAA,UAAAA,UAAAA,SAAUxtI,EAAkB+tI,QAAA,IAAAA,IAAAA,GAA6B,GACrD,IAAMC,EAAgBD,EAAgB,GAAI/tI,GAAU,GAAOhG,IAAuBgG,GAAU,GACtFotH,EAAW,IAAIP,GAASmhB,GAC9B90U,KAAKgjU,WAAW1mT,IAAIiiL,GAAmBw2I,MAAOj6U,mBAAmBo5T,EAASoB,eAC7E,EAMDgf,EAAW,UAAAU,YAAX,SAAY1kI,GACRtwM,KAAKgjU,WAAW1mT,IAAIiiL,GAAmB02I,UAAWn6U,mBAAmBw1M,GACxE,EAMDgkI,EAAc,UAAAY,eAAd,SAAe1kI,GACXkjI,GAAiByB,oBAAoB3kI,GACrCxwM,KAAKgjU,WAAW1mT,IAAIiiL,GAAmB62I,aAAct6U,mBAAmB01M,GAC3E,EAMD8jI,EAAwB,UAAAe,yBAAxB,SAAyB7kI,GACrBkjI,GAAiByB,oBAAoB3kI,GACrCxwM,KAAKgjU,WAAW1mT,IAAIiiL,GAAmB+2I,gBAAiBx6U,mBAAmB01M,GAC9E,EAMD8jI,EAAc,UAAAiB,eAAd,SAAeC,GACXx1U,KAAKgjU,WAAW1mT,IAAIiiL,GAAmBk3I,cAAe36U,mBAAmB06U,GAC5E,EAMDlB,EAAa,UAAAoB,cAAb,SAAcC,GACV31U,KAAKgjU,WAAW1mT,IAAIykL,GAAS60I,YAAa96U,mBAAmB66U,GAChE,EAMDrB,EAAY,UAAAuB,aAAZ,SAAahP,GACT7mU,KAAKgjU,WAAW1mT,IAAIykL,GAAS+0I,WAAYh7U,mBAAmB+rU,GAC/D,EAMDyN,EAAS,UAAAyB,UAAT,SAAUlP,GACN7mU,KAAKgjU,WAAW1mT,IAAI8hL,GAAY80I,WAAYp4U,mBAAmB,OAAO+rU,GACzE,EAMDyN,EAAS,UAAA0B,UAAT,SAAUtqI,GACN1rM,KAAKgjU,WAAW1mT,IAAI8hL,GAAY80I,WAAYp4U,mBAAmB,OAAO4wM,EAAWj5H,IAAG,IAAIi5H,EAAWnB,MACtG,EAMD+pI,EAAM,UAAA2B,OAAN,SAAOzqP,GACHxrF,KAAKgjU,WAAW1mT,IAAIykL,GAASm1I,IAAKp7U,mBAAmB0wF,GACxD,EAMD8oP,EAAAA,UAAAA,UAAAA,SAAUpoI,EAAiBomI,GACvB,IAAM6D,EAAen2U,KAAKo2U,8BAA8BlqI,EAAQomI,GAChEoB,GAAiB2C,eAAeF,GAChCn2U,KAAKgjU,WAAW1mT,IAAIiiL,GAAmBa,OAAQtkM,mBAAmBq7U,GACrE,EAMD7B,EAAgB,UAAAgC,iBAAhB,SAAiBhyI,GACbtkM,KAAKgjU,WAAW1mT,IAAIiiL,GAAmBg4I,kBAAmBz7U,mBAAmBwpM,GAChF,EAMDgwI,EAAc,UAAAkC,eAAd,SAAevE,GAEXjyU,KAAKgjU,WAAW1mT,IAAIiiL,GAAmBk4I,aAAcxE,EAAYpG,KACjE7rU,KAAKgjU,WAAW1mT,IAAIiiL,GAAmBm4I,aAAczE,EAAY5kU,SAC7D4kU,EAAYlG,IACZ/rU,KAAKgjU,WAAW1mT,IAAIiiL,GAAmBo4I,YAAa1E,EAAYlG,IAEhEkG,EAAYnG,KACZ9rU,KAAKgjU,WAAW1mT,IAAIiiL,GAAmBq4I,aAAc3E,EAAYnG,IAExE,EAMDwI,EAAuB,UAAAuC,wBAAvB,SAAwBC,IAChB,OAAAA,QAAY,IAAZA,OAAY,EAAZA,EAAc/nB,UACd/uT,KAAKgjU,WAAW1mT,IAAIiiL,GAAmBw4I,WAAYD,EAAa/nB,UAGhE,OAAA+nB,QAAY,IAAZA,OAAY,EAAZA,EAAc9nB,aACdhvT,KAAKgjU,WAAW1mT,IAAIiiL,GAAmBy4I,UAAWF,EAAa9nB,WAEtE,EAMDslB,EAAS,UAAA2C,UAAT,SAAUrD,GACNF,GAAiBwD,eAAetD,GAChC5zU,KAAKgjU,WAAW1mT,IAAI,GAAGiiL,GAAmB44I,OAAUr8U,mBAAmB84U,GAC1E,EAMDU,EAAQ,UAAA8C,SAAR,SAAS//T,GACA2wL,GAAYjiL,QAAQ1O,IACrBrX,KAAKgjU,WAAW1mT,IAAIiiL,GAAmB84I,MAAOv8U,mBAAmBuc,GAExE,EAMDi9T,EAAQ,UAAAgD,SAAR,SAASjqI,GACLrtM,KAAKgjU,WAAW1mT,IAAIiiL,GAAmBg5I,MAAOz8U,mBAAmBuyM,GACpE,EAQDinI,EAAAA,UAAAA,uBAAAA,SACI3uB,EACAquB,GAGA,GADAN,GAAiB8D,4BAA4B7xB,EAAequB,IACxDruB,IAAiBquB,EAIjB,MAAMlhB,GAAyBmhB,wCAH/Bj0U,KAAKgjU,WAAW1mT,IAAIiiL,GAAmBk5I,eAAgB38U,mBAAmB6qT,IAC1E3lT,KAAKgjU,WAAW1mT,IAAIiiL,GAAmBm5I,sBAAuB58U,mBAAmBk5U,GAIxF,EAMDM,EAAoB,UAAAqD,qBAApB,SAAqBr0U,GACjBtD,KAAKgjU,WAAW1mT,IAAIiiL,GAAmBq5I,KAAM98U,mBAAmBwI,GACnE,EAMDgxU,EAAa,UAAAuD,cAAb,SAAcv0U,GACVtD,KAAKgjU,WAAW1mT,IAAIiiL,GAAmBu5I,YAAah9U,mBAAmBwI,GAC1E,EAMDgxU,EAAe,UAAAyD,gBAAf,SAAgBnhB,GACZ52T,KAAKgjU,WAAW1mT,IAAIiiL,GAAmBi0H,cAAe13T,mBAAmB87T,GAC5E,EAMD0d,EAAe,UAAA0D,gBAAf,SAAgBxyB,GACZxlT,KAAKgjU,WAAW1mT,IAAIiiL,GAAmB05I,cAAen9U,mBAAmB0qT,GAC5E,EAMD8uB,EAAe,UAAA4D,gBAAf,SAAgBjM,GACZjsU,KAAKgjU,WAAW1mT,IAAIiiL,GAAmB45I,cAAer9U,mBAAmBmxU,GAC5E,EAMDqI,EAAkB,UAAA8D,mBAAlB,SAAmBlM,GACVlkI,GAAYjiL,QAAQmmT,IACrBlsU,KAAKgjU,WAAW1mT,IAAIiiL,GAAmB85I,iBAAkBv9U,mBAAmBoxU,GAEnF,EAMDoI,EAAsB,UAAAgE,uBAAtB,SAAuBC,GACdvwI,GAAYjiL,QAAQwyT,IACrBv4U,KAAKgjU,WAAW1mT,IAAIiiL,GAAmBi6I,sBAAuB19U,mBAAmBy9U,GAExF,EAMDjE,EAAe,UAAAmE,gBAAf,SAAgBC,GACZ14U,KAAKgjU,WAAW1mT,IAAIiiL,GAAmBo6I,cAAe79U,mBAAmB49U,GAC5E,EAMDpE,EAAkB,UAAAsE,mBAAlB,SAAmBC,GACf74U,KAAKgjU,WAAW1mT,IAAIiiL,GAAmBu6I,oBAAqBh+U,mBAAmB+9U,GAClF,EAMDvE,EAAY,UAAAyE,aAAZ,SAAaC,GACTh5U,KAAKgjU,WAAW1mT,IAAIiiL,GAAmB06I,WAAYn+U,mBAAmBk+U,GACzE,EAMD1E,EAAAA,UAAAA,cAAAA,WACIt0U,KAAKgjU,WAAW1mT,I3ahCG,c2agCc,IACpC,EAMDg4T,EAAuB,UAAA4E,wBAAvB,SAAwBC,GAAxB,IAKC3xN,EAAAA,KAJGksN,GAAiB0F,iBAAiBD,EAAUn5U,KAAKgjU,YACjDj/T,OAAOsC,KAAK8yU,GAAU57U,SAAQ,SAACC,GAC3BgqH,EAAKw7M,WAAW1mT,IAAI9e,EAAK27U,EAAS37U,GACrC,GACJ,EAED82U,EAAAA,UAAAA,8BAAAA,SAA8BpoI,EAAiBomI,GAC3C,IAAI6D,EAGJ,GAAKjqI,EAGD,IACIiqI,EAAe9tU,KAAKC,MAAM4jM,EAG7B,CAFC,MAAM1jM,IACJ,MAAMsqT,GAAyBihB,iCAClC,MANDoC,EAAe,CAAC,EAqBpB,OAZI7D,GAAsBA,EAAmBj+U,OAAS,IAC7C8hV,EAAa3nU,eAAegwL,GAAkB8zH,gBAE/C6jB,EAAa33I,GAAkB8zH,cAAgB,CAAC,GAIpD6jB,EAAa33I,GAAkB8zH,cAAc9zH,GAAkB66I,QAAU,CACrEtiQ,OAAQu7P,IAITjqU,KAAKI,UAAU0tU,EACzB,EAMD7B,EAAW,UAAAgF,YAAX,SAAY3+U,GACRqF,KAAKgjU,WAAW1mT,IAAIymL,GAAuBpoM,SAAUG,mBAAmBH,GAC3E,EAMD25U,EAAW,UAAAiF,YAAX,SAAY3+U,GACRoF,KAAKgjU,WAAW1mT,IAAIymL,GAAuBnoM,SAAUE,mBAAmBF,GAC3E,EAMD05U,EAAW,UAAAkF,YAAX,SAAYC,GACHzxI,GAAYjiL,QAAQ0zT,KACrBz5U,KAAKgjU,WAAW1mT,IAAIiiL,GAAmBm7I,WAAYv3I,GAAqBu4H,KACxE16T,KAAKgjU,WAAW1mT,IAAIiiL,GAAmBo7I,QAAS7+U,mBAAmB2+U,IAE1E,EAKDnF,EAAS,UAAAsF,UAAT,SAAUC,GACF7xI,GAAYjiL,QAAQ8zT,KACpB75U,KAAKgjU,WAAW1mT,IAAIiiL,GAAmBm7I,WAAYv3I,GAAqB+2H,KACxEl5T,KAAKgjU,WAAW1mT,IAAIiiL,GAAmBo7I,QAAS7+U,mBAAmB++U,IAE1E,EAMDvF,EAAkB,UAAAwF,mBAAlB,SAAmB3H,GACfnyU,KAAKgjU,WAAW1mT,IAAIiiL,GAAmBw7I,oBAAqB5H,EAAuB6H,qCACnFh6U,KAAKgjU,WAAW1mT,IAAIiiL,GAAmB07I,oBAAqB9H,EAAuB+H,iCACtF,EAKD5F,EAAAA,UAAAA,cAAAA,WACIt0U,KAAKgjU,WAAW1mT,IAAIiiL,GAAmB47I,oBAAqB92I,GAC/D,EAKDixI,EAAa,UAAA8F,cAAb,SAAcC,GACVr6U,KAAKgjU,WAAW1mT,IAAIiiL,GAAmB+7I,YAAax/U,mBAAmBu/U,GAC1E,EAKD/F,EAAAA,UAAAA,kBAAAA,WACI,IAAMiG,EAAqC,IAAI33U,MAM/C,OAJA5C,KAAKgjU,WAAWzlU,SAAQ,SAAC5B,EAAO6B,GAC5B+8U,EAAoB15U,KAAQrD,EAAO,IAAA7B,EACtC,IAEM4+U,EAAoB/wU,KAAK,IACnC,EACJ8qU,CAAA,CA9aD,GCJA,GAOI,SAAYkG,EAAsCrd,EAAsCsd,EAA8CC,EAAgDC,GAClL36U,KAAK+rM,QAAUyuI,GAAiB,KAChCx6U,KAAK2rM,QAAUwxH,GAAiB,KAChCn9T,KAAKqzR,YAAconD,GAAqB,KACxCz6U,KAAK42T,aAAe8jB,GAAsB,KAC1C16U,KAAK82T,YAAc6jB,GAAqB,IAC3C,GRGL,SAAKrL,GACDA,EAAAA,GAAAA,KACAA,EAAAA,IAAAA,KAFJ,EAAKA,KAAAA,GAGJ,KAED,kBAII,WAAY5R,GACR19T,KAAK09T,YAAcA,CACtB,CAsEL,OA9DUkd,EAAW,UAAAC,YAAjB,SAAkBrgV,kGACC,gBAAMwF,KAAK86U,YAAYtgV,WAMtB,OANVugV,EAAS/0O,EAA+B,OACxCg1O,EAAuBh7U,KAAK09T,YAAYpY,aAAaj9S,KAAKI,UAAUsyU,OAGtEl5B,IAAKk5B,EAAOl5B,IACZm5B,aAAY,GACM,GAAAh7U,KAAK09T,YAAYrR,WAAW2uB,WAHlD,MAGI,MAAAC,WAAYj1O,EAA+C,OAC7DJ,UACL,EAOKg1O,EAAW,UAAAE,YAAjB,SAAkBtgV,+FACQ,MAAM,GAAAwF,KAAK09T,YAAY3M,uBAAuBv2T,WAEpE,MAAO,IACHqnT,IAHkBj8M,EAAsD,OAIxEs1O,QAAS5L,GAAY6L,WAE5B,EAQKP,EAAAA,UAAAA,aAAN,SAAmBvnD,EAAqBgyB,EAAe7qT,wEACnD,MAAO,GAAAwF,KAAKo7U,YAAY/nD,EAAagyB,EAAO7qT,SAC/C,EAUKogV,EAAW,UAAAQ,YAAjB,SAAkB1wU,EAAiB26S,EAAe7qT,EAAsC0xM,+GAO7E,OAJC0gH,EAAmEpyT,EAAO,sBAAnDsyT,EAA4CtyT,EAA1BsyT,mBAAEkkB,EAAwBx2U,EAAfw2U,UAAEqK,EAAa7gV,EAAO,SAE5E8gV,EAAqBxuB,EAAsB,IAAIiU,GAAUjU,QAAsBzvT,EAC/Ek+U,EAAwB,OAAAD,QAAiB,IAAjBA,OAAiB,EAAjBA,EAAmBpa,mBACpC,GAAAlhU,KAAK09T,YAAYxM,QAC1BtgQ,GAAAA,CAAA4qR,GAAI9wU,EACJwR,GAAIkhT,GAAUjtN,aACdlgD,EAAwB,OAArB28P,QAAqB,IAArBA,OAAqB,EAArBA,EAAuB7wT,cAC1BopE,EAAG,OAAAo2Q,QAAA,IAAAA,OAAA,EAAAA,EAAuBna,gBAC1B/zH,MAAOguI,GAAYr7U,KAAK09T,YAAY9M,gBACpCl0S,EAAwB,OAArB6+T,QAAA,IAAAA,OAAA,EAAAA,EAAuBtZ,aAC1Bv2Q,GAAI,OAAA6vR,QAAqB,IAArBA,OAAqB,EAArBA,EAAuBrZ,aAAe,CAAC,GAAIqZ,EAAsBrZ,kBAAe7kU,EACpFo+U,cAAezK,QAAa3zU,GACzB6uM,GACJm5G,EAAO7qT,EAAQ8pM,gBAVlB,aAAO,CAAP,EAAO1+F,EAAAA,cAWV,EACJg1O,CAAA,CA5ED,GStBG,cAUC,SAAYc,EAAAC,EAAqCC,GAC7C57U,KAAKkO,MAAQytU,EACb37U,KAAK47U,WAAaA,CACrB,CAeL,OAVI73U,OAAAA,eAAI23U,EAAe,6BAAnBn/T,IAAAA,WACI,OAAOvc,KAAK47U,UACf,kCAKD73U,OAAAA,eAAI23U,EAAU,wBAAdn/T,IAAAA,WACI,OAAOvc,KAAKkO,KACf,kCACJwtU,CAAA,CA5BE,GC4BH,cASI,SAAYG,EAAAvrI,EAAkBwrI,EAA4BpvI,EAAoBhlH,EAAgB2qP,EAAmDD,GAC7IpyU,KAAKswM,SAAWA,EAChBtwM,KAAK87U,aAAeA,EACpB97U,KAAK0sM,UAAYA,EACjB1sM,KAAK0nF,OAASA,EACd1nF,KAAKqyU,kBAAoBA,EACzBryU,KAAKoyU,kBAAoBA,CAC5B,CAuTL,OA/SIyJ,EAAAA,UAAAA,wCAAAA,SAAwCE,EAAqDvT,EAAqB97H,GAE9G,IAAKqvI,EAAmB1kU,QAAUmxT,EAC9B,MAAOuT,EAAmB1kU,MAAmE8vL,GAAgB60I,yBAAyB,gBAApG70I,GAAgB60I,yBAAyB,gBAG/E,GAAI1xU,mBAAmByxU,EAAmB1kU,SAAW/M,mBAAmBk+T,GACpE,MAAMrhI,GAAgB80I,2BAI1B,GAAIF,EAAmB74U,OAAS64U,EAAmB7Y,mBAAqB6Y,EAAmB93I,SAAU,CACjG,GAAIqtH,GAAAA,2BAAwDyqB,EAAmB74U,MAAO64U,EAAmB7Y,kBAAmB6Y,EAAmB93I,UAC3I,MAAM,IAAIqtH,GAA6ByqB,EAAmB74U,OAASu7L,GAAUyB,aAAc67I,EAAmB7Y,kBAAmB6Y,EAAmB93I,UAGxJ,MAAM,IAAI0tH,GAAYoqB,EAAmB74U,OAASu7L,GAAUyB,aAAc67I,EAAmB7Y,kBAAmB6Y,EAAmB93I,SACtI,CAEG83I,EAAmBG,aACnBryI,GAAgBkyI,EAAmBG,YAAaxvI,EAEvD,EAMDmvI,EAAqB,UAAAM,sBAArB,SAAsBC,GAElB,GAAIA,EAAel5U,OAASk5U,EAAelZ,mBAAqBkZ,EAAen4I,SAAU,CACrF,GAAIqtH,GAAAA,2BAAwD8qB,EAAel5U,MAAOk5U,EAAelZ,kBAAmBkZ,EAAen4I,UAC/H,MAAM,IAAIqtH,GAA6B8qB,EAAel5U,MAAOk5U,EAAelZ,kBAAmBkZ,EAAen4I,UAGlH,IAAMo4I,EAAeD,EAAexL,YAAkB,OAAAwL,EAAe34T,UAAS,MAAM24T,EAAelZ,kBAAiB,sBAAsBkZ,EAAeE,eAA8B,gBAAAF,EAAeG,SACtM,MAAM,IAAI5qB,GAAYyqB,EAAel5U,MAAOm5U,EAAWD,EAAen4I,SACzE,CACJ,EAOK43I,EAAAA,UAAAA,0BAAN,SACIW,EACA5wI,EACA6wI,EACAjiV,EACAkiV,EACArkB,EACAskB,EACAC,6GAIA,GAAIJ,EAAoBK,WACpBC,EAAa,IAAIvnB,GAAUinB,EAAoBK,UAAYp+I,GAAUyB,aAAclgM,KAAK0sM,WAGpFgwI,IAAoB10I,GAAYjiL,QAAQ22T,EAAgBrvI,QACpDyvI,EAAW5wI,OAAOmB,QAAUqvI,EAAgBrvI,OAC5C,MAAMlG,GAAgB41I,2BAMlC/8U,KAAK+wU,sBAAwBvmI,GAAcwyI,sBAAsBR,EAAoBN,aAAez9I,GAAUyB,aAAc0L,EAAUd,cAAe9qM,KAAK0nF,OAAQ1nF,KAAK0sM,UAAWowI,GAI5KJ,GAAqBA,EAAgBrlU,QACvC4lU,EAAkBvd,GAAc0D,kBAAkBpjU,KAAK0sM,UAAWgwI,EAAgBrlU,QAItFmlU,EAAoBU,OAASV,EAAoBU,QAAU1iV,EAAQyhU,aAAU5+T,EAEvEm5T,EAAcx2T,KAAKm9U,oBAAoBX,EAAqB5wI,EAAW6wI,EAAcjiV,EAASsiV,EAAYzkB,EAAmBqkB,iDAG3H18U,KAAKoyU,mBAAqBpyU,KAAKqyU,mBAC/BryU,KAAK0nF,OAAOklH,QAAQ,kDACpBwwI,EAAe,IAAI1B,GAAkB17U,KAAKqyU,mBAAmB,GACvD,GAAAryU,KAAKoyU,kBAAkBiL,kBAAkBD,KAHC,aAGhDx3O,EAAAA,wBAQJ,OAAI+2O,GAAiCC,IAAkCpmB,EAAYzqH,UACzEvuM,EAAMg5T,EAAYzqH,QAAQ64H,qBAChB5kU,KAAK87U,aAAatsI,WAAWhyM,IAM3C,GAAAwC,KAAK87U,aAAavlB,gBAAgBC,KAJhCx2T,KAAK0nF,OAAOk9E,QAAQ,uGACb,GAAAi3K,EAAgByB,6BAA6Bt9U,KAAK0sM,UAAWd,EAAW4qH,GAAa,EAAOh8T,EAASsiV,EAAYG,OAAiB5/U,mBAGjJuoG,EAAAA,2BAEI5lG,KAAKoyU,mBAAqBpyU,KAAKqyU,mBAAqB+K,GACpDp9U,KAAK0nF,OAAOklH,QAAQ,iDACd,GAAA5sM,KAAKoyU,kBAAkBmL,iBAAiBH,KAFkB,aAEhEx3O,EAAAA,yCAGR,MAAO,GAAAi2O,EAAgByB,6BAA6Bt9U,KAAK0sM,UAAWd,EAAW4qH,GAAa,EAAOh8T,EAASsiV,EAAYG,EAAiBT,EAAoBgB,iBAChK,EAQO3B,EAAAA,UAAAA,oBAAR,SAA4BW,EAAuD5wI,EAAsB6wI,EAAsBjiV,EAA0BsiV,EAAwBzkB,EAA4BqkB,GACzM,IAMI1hB,EACAF,EAPE/yT,EAAM6jM,EAAUI,oBACtB,GAAIhE,GAAYjiL,QAAQhe,GACpB,MAAMo/L,GAAgB8E,sCAMrBjE,GAAYjiL,QAAQy2T,EAAoBK,WAAeC,IACxD9hB,EAAgBkC,GAAcugB,oBAC1Bz9U,KAAK+wU,sBACLhpU,EACAy0U,EAAoBK,UAAYp+I,GAAUyB,aAC1ClgM,KAAKswM,SACLwsI,EAAW5wI,OAAOwxI,KAAOj/I,GAAUyB,cAGvC46H,EAAgB96T,KAAK29U,sBACjBnB,EACAM,EACAlxI,EACA8wI,IAKR,IAAIzhB,EAA8C,KAClD,IAAKjzH,GAAYjiL,QAAQy2T,EAAoBoB,cAAe,CAGxD,IAAMC,EAAiBrB,EAAoBv6R,MAAQ0xQ,GAASyD,WAAWolB,EAAoBv6R,OAAS,IAAI0xQ,GAASn5T,EAAQssM,QAAU,IAM7Hg3I,GAA+D,kBAAnCtB,EAAoBuB,WAA0BpqV,SAAS6oV,EAAoBuB,WAAY,IAAMvB,EAAoBuB,aAAe,EAC5JC,GAAsE,kBAAvCxB,EAAoByB,eAA8BtqV,SAAS6oV,EAAoByB,eAAgB,IAAMzB,EAAoByB,iBAAmB,EAC3KC,GAA2E,kBAAnC1B,EAAoB2B,WAA0BxqV,SAAS6oV,EAAoB2B,WAAY,IAAM3B,EAAoB2B,kBAAe9gV,EACxK+gV,EAAyB3B,EAAeqB,EACxCO,EAAiCD,EAAyBJ,EAC1DM,EAAmBJ,GAAaA,EAAY,EAAIzB,EAAeyB,OAAY7gV,EAGjF49T,EAAoBuC,GAAkB+gB,wBAClCv+U,KAAK+wU,sBACLhpU,EACAy0U,EAAoBoB,cAAgBn/I,GAAUyB,aAC9ClgM,KAAKswM,SACLwsI,EAAaA,EAAW5wI,OAAOwxI,KAAOj/I,GAAUyB,aAAe0L,EAAU0gI,OACzEuR,EAAevoB,cACf8oB,EACAC,EACAr+U,KAAK0sM,UACL4xI,EACA9B,EAAoBgC,WACpBnmB,EACAmkB,EAAoBU,OACpB1iV,EAAQ0xM,OACR1xM,EAAQ43T,oBAEf,CAGD,IAAI+I,EAAgD,KAC/CnzH,GAAYjiL,QAAQy2T,EAAoBiC,iBACzCtjB,EAAqB+C,GAAmBwgB,yBACpC1+U,KAAK+wU,sBACLhpU,EACAy0U,EAAoBiC,eAAiBhgJ,GAAUyB,aAC/ClgM,KAAKswM,SACLksI,EAAoBmC,KACpBtmB,IAKR,IAAIgD,EAA8C,KAKlD,OAJKrzH,GAAYjiL,QAAQy2T,EAAoBmC,QACzCtjB,EAAoB+C,GAAkBwgB,wBAAwB5+U,KAAKswM,SAAUvoM,EAAKy0U,EAAoBmC,OAGnG,IAAIE,GAAY/jB,EAAeE,EAAeC,EAAmBE,EAAoBE,EAC/F,EAQOwgB,EAAqB,UAAA8B,sBAA7B,SAA8BnB,EAAuD7wI,EAAoBC,EAAsB8wI,GAC3H,IAAM5xI,EAAgBc,EAAUd,cAC1Be,EAAqB6wI,EAAkBA,EAAgBoC,sBAAwBrgJ,GAAUyB,aACzF6+I,EAAcrC,EAAkBA,EAAgBsC,aAAevgJ,GAAUyB,aAG/E,GAAI4K,IAAkBtB,GAAc+C,KAEhC,OADAvsM,KAAK0nF,OAAOklH,QAAQ,iDACbpC,GAAcy0I,qBAAqBj/U,KAAK+wU,sBAAuBplI,EAASC,EAAWC,EAAoBkzI,GAIlH,GAAI/2I,GAAYjiL,QAAQy2T,EAAoBN,cAA2C,QAA3BtwI,EAAUszI,aAClE,MAAM/3I,GAAgB4C,6BAG1B,OAAOyyI,EAAoBN,YACvB1xI,GAAc20I,cAAc3C,EAAoBN,YAAal8U,KAAK+wU,sBAAuBplI,EAASC,EAAWC,EAAoBkzI,GACjIv0I,GAAcy0I,qBAAqBj/U,KAAK+wU,sBAAuBplI,EAASC,EAAWC,EAAoBkzI,EAC9G,EAYYlD,EAAAA,6BAAb,SACInvI,EACAd,EACA4qH,EACA4oB,EACA5kV,EACAsiV,EACAuC,EACA/7U,sIAEI+vR,EAAsB50F,GAAUyB,aAChC29I,EAAgC,GAChCxgB,EAAyB,KAEzBrL,EAAmBvzH,GAAUyB,cAE7Bs2H,EAAYnjC,YAAZ,MAAuB,SACnBmjC,EAAYnjC,YAAY8+B,YAAchwH,GAAqBu4H,IAA3D,MAA8D,MAI9D,GAHM4kB,EAAuC,IAAI1E,GAAkBluI,GAC7Dh6E,EAAoB8jM,EAAYnjC,YAA9BtsM,EAAM,WAAEs+N,EAAK,SAGjB,MAAMl+G,GAAgBo4I,0BAGZ,MAAM,GAAAD,EAAkBE,aAAaz4P,EAAQs+N,EAAO7qT,kBAAlE64R,EAAc18N,EAAAA,oBAEd08N,EAAcmjC,EAAYnjC,YAAYtsM,wBAE1C82P,EAAiBlqB,GAASyD,WAAWZ,EAAYnjC,YAAYztR,QAAQuuT,UACrEkJ,EAAY,IAAIlqU,KAAiD,IAA5CmrE,OAAOk4P,EAAYnjC,YAAYgqC,YACpDI,EAAe,IAAItqU,KAAyD,IAApDmrE,OAAOk4P,EAAYnjC,YAAY0qC,qCAS3D,OANIvH,EAAYM,cACZ9E,EAAWwE,EAAYM,YAAY9E,WAAa/vH,GAAgBA,GAAgBxD,GAAUyB,cAExFztH,GAAM,OAAAqqQ,QAAA,IAAAA,OAAA,EAAAA,EAAY5wI,OAAOC,OAAiB,OAAV2wI,QAAU,IAAVA,OAAU,EAAVA,EAAY5wI,OAAOh2L,MAAOuoL,GAAUyB,aACpEw9I,GAAgB,OAAVZ,QAAA,IAAAA,OAAA,EAAAA,EAAY5wI,OAAOwxI,MAAOj/I,GAAUyB,aAEzC,IACH0L,UAAWA,EAAU6zI,mBACrBrsR,SAAUqf,EACVk4H,SAAU+yI,EACV52I,OAAQ+2I,EACR9xI,QAASyqH,EAAYzqH,QAAUyqH,EAAYzqH,QAAQsqH,iBAAmB,KACtE1qH,QAASmxI,EAAaA,EAAWtnB,SAAW/2H,GAAUyB,aACtDqL,cAAeuxI,EAAaA,EAAW5wI,OAAS,CAAC,EACjDmnF,YAAaA,EACbqsD,UAAWN,EACX/hB,UAAWA,EACX/4H,cAAe9pM,EAAQ8pM,cACvBm5H,aAAcA,EACdzL,SAAUA,EACVG,WAAkC,QAAvB,EAAAqE,EAAYnjC,mBAAWztL,IAAAA,OAAA,EAAAA,EAAEusN,YAAa1zH,GAAUyB,aAC3D7oL,MAAOgoU,EAAeA,EAAahf,iBAAmB5hI,GAAUyB,aAChE2L,oBAAuC,QAAnB,EAAA2qH,EAAYzqH,eAAO/lG,IAAAA,OAAA,EAAAA,EAAE6lG,qBAAsBpN,GAAUyB,aACzE4L,aAAgC,QAAnB,EAAA0qH,EAAYzqH,eAAOlmC,IAAAA,OAAA,EAAAA,EAAEimC,cAAerN,GAAUyB,aAC3D58L,KAAI,EACJq8U,kBAAkB,UAEzB,EACJ9D,CAAA,CAvUD,GCJA,eAII,WAAYrK,GAAZ,IACIhqN,EAAAA,EAAAA,KAAAA,KAAMgqN,IACT,YAJShqN,EAAkB,oBAAY,GAIvC,CAwbL,OA9b6C92D,GAAU,KAkB7CkvR,EAAc,UAAAC,eAApB,SAAqBrlV,8FACG,gBAAMwF,KAAK8/U,6BAA6BtlV,WAE5D,OAFM0yR,EAActnL,EAAgD,OAE7D,CAAP,EAAOm7N,GAAUgf,kBAAkB//U,KAAK4rM,UAAUo0I,sBAAuB9yD,UAC5E,EAOK0yD,EAAAA,UAAAA,aAAN,SAAmBplV,EAAyCkiV,yGAExD,GADA18U,KAAK0nF,OAAOjsD,KAAK,yBACZjhC,GAAWwtM,GAAYjiL,QAAQvrB,EAAQ8I,MACxC,MAAM6jM,GAAgB84I,sCAIT,OADXxD,EAAerf,GAAUjtN,aACR,GAAAnwG,KAAKkgV,oBAAoBlgV,KAAK4rM,UAAWpxM,WAazD,OAbDe,EAAWqqG,EAAuD,QAElEu6O,EAAkB,IAAItE,GACxB77U,KAAKzG,OAAOk4U,YAAYnhI,SACxBtwM,KAAKiwU,aACLjwU,KAAK09T,YACL19T,KAAK0nF,OACL1nF,KAAKzG,OAAO84U,kBACZryU,KAAKzG,OAAO64U,oBAIA+J,sBAAsB5gV,EAAS+gC,MACxC,GAAM6jT,EAAgBC,0BAA0B7kV,EAAS+gC,KAAMt8B,KAAK4rM,UAAW6wI,EAAcjiV,EAASkiV,IAA7G,aAAO,CAAP,EAAO92O,EAAAA,cACV,EAODg6O,EAAAA,UAAAA,uBAAAA,SAAuBS,EAAsB7X,GAEzC,IAAM2X,EAAkB,IAAItE,GAAgB77U,KAAKzG,OAAOk4U,YAAYnhI,SAAUtwM,KAAKiwU,aAAcjwU,KAAK09T,YAAa19T,KAAK0nF,OAAQ,KAAM,MAGhI47O,EAAgB,IAAIvC,GAAUsf,GAE9BC,EAAgDvf,GAAUkC,oBAAoBK,EAAcxC,WAMlG,GAHAqf,EAAgBI,wCAAwCD,EAAc9X,EAAaxoU,KAAK09T,cAGnF4iB,EAAah9U,KACd,MAAM6jM,GAAgBq5I,wCAE1B,OAAO,SACAF,GAAY,CAEfh9U,KAAMg9U,EAAah9U,MAE1B,EAODs8U,EAAY,UAAAa,aAAZ,SAAaC,GAET,IAAKA,EACD,MAAM5tB,GAAyB6tB,gCAEnC,IAAMzzD,EAAcltR,KAAK4gV,2BAA2BF,GAGpD,OAAO3f,GAAUgf,kBAAkB//U,KAAK4rM,UAAUi1I,mBAAoB3zD,EACzE,EAOa0yD,EAAAA,UAAAA,oBAAd,SAAkCh0I,EAAsBpxM,iHAahC,OAZdw1U,EAAgC,CAClC1/H,SAAUtwM,KAAKzG,OAAOk4U,YAAYnhI,SAClC1E,UAAWA,EAAU6zI,mBACrB34I,OAAQtsM,EAAQssM,OAChBoF,OAAQ1xM,EAAQ0xM,OAChB6vH,qBAAsBvhU,EAAQuhU,qBAC9BnP,sBAAuBpyT,EAAQoyT,sBAC/BE,mBAAoBtyT,EAAQsyT,mBAC5BkkB,UAAWx2U,EAAQw2U,UACnB/U,OAAQzhU,EAAQyhU,QAGA,GAAMj8T,KAAK8gV,uBAAuBtmV,WAGtD,GAHMumV,EAAcn7O,EAA0C,OACxDo7O,EAAkBhhV,KAAKihV,2BAA2BzmV,GACpDyuU,OAA2C5rU,EAC3C7C,EAAQkxM,WACR,IACUA,EAAa7B,GAAgBrvM,EAAQkxM,WAAY1rM,KAAK09T,aAC5DuL,EAAgB,CACZjS,WAAY,GAAGtrH,EAAWj5H,IAAM+uH,GAAW8I,sBAAwBoB,EAAWnB,KAC9EtsM,KAAMysT,GAAkBwe,gBAI/B,CAFC,MAAO1gU,IACLxI,KAAK0nF,OAAOklH,QAAQ,+CAAiDpkM,GACxE,CAKL,OAHMzO,EAAkCiG,KAAK+yU,0BAA0B9J,GAAiBzuU,EAAQyuU,eAC1FzhI,EAAWQ,GAAYjiL,QAAQi7T,GAAmBp1I,EAAUulI,cAAmBvlI,EAAUulI,cAAiB,IAAA6P,EAEzG,CAAP,EAAOhhV,KAAKmzU,2BAA2B3rI,EAAUu5I,EAAahnV,EAASi2U,UAC1E,EAMO4P,EAA0B,UAAAqB,2BAAlC,SAAmCzmV,GAC/B,IAAM0mV,EAAmB,IAAI5M,GAM7B,OAJI95U,EAAQ2mV,sBACRD,EAAiBhI,wBAAwB1+U,EAAQ2mV,sBAG9CD,EAAiBE,mBAC3B,EAMaxB,EAAsB,UAAAkB,uBAApC,SAAqCtmV,wHAC3B0mV,EAAmB,IAAI5M,IAEZU,YAAYh1U,KAAKzG,OAAOk4U,YAAYnhI,UAMhDtwM,KAAKqhV,mBAKNH,EAAiBhM,eAAe16U,EAAQg2M,aAHxCkjI,GAAiByB,oBAAoB36U,EAAQg2M,aAOjD0wI,EAAiBI,UAAU9mV,EAAQssM,QAGnCo6I,EAAiBvJ,qBAAqBn9U,EAAQ8I,MAG9C49U,EAAiB1K,eAAex2U,KAAKzG,OAAO04U,aAC5CiP,EAAiBrK,wBAAwB72U,KAAKzG,OAAO24U,UAAU/wB,aAC/D+/B,EAAiBK,gBAEbvhV,KAAKmyU,wBACL+O,EAAiBpH,mBAAmB95U,KAAKmyU,wBAIzC33U,EAAQgrT,cACR07B,EAAiBlJ,gBAAgBx9U,EAAQgrT,cAGzCxlT,KAAKzG,OAAOy4U,kBAAkB/F,cAC9BiV,EAAiBhJ,gBAAgBl4U,KAAKzG,OAAOy4U,kBAAkB/F,cAG/DjsU,KAAKzG,OAAOy4U,kBAAkB9F,kBACxBA,EAAkBlsU,KAAKzG,OAAOy4U,kBAAkB9F,gBACtDgV,EAAiB9I,mBAAmBlM,EAAgBsV,WACpDN,EAAiB5I,uBAAuBpM,EAAgBuV,gBAG5DP,EAAiBnI,aAAaz3I,GAAUogJ,0BACxCR,EAAiBS,gBAEbnnV,EAAQuhU,uBAAyB55H,GAAqBu4H,IAAG,MAEtC,GADO,IAAIkgB,GAAkB56U,KAAK09T,aACVmd,YAAYrgV,kBAAjDonV,EAAa57O,EAA4C,OAE/Dk7O,EAAiB1H,YAAYoI,EAAW5G,2BACrC,GAAIxgV,EAAQuhU,uBAAyB55H,GAAqB+2H,IAAK,CAClE,IAAG1+T,EAAQqnV,OAGP,MAAM/uB,GAAyBgvB,2BAF/BZ,EAAiBtH,UAAUp/U,EAAQqnV,OAI1C,kBAUD,GARMv9I,EAAgB9pM,EAAQ8pM,eAAiBtkM,KAAKzG,OAAOq5U,gBAAgBhiB,gBAC3EswB,EAAiB5K,iBAAiBhyI,KAE7B0D,GAAY+5I,WAAWvnV,EAAQ0xM,SAAWlsM,KAAKzG,OAAOk4U,YAAYa,oBAAsBtyU,KAAKzG,OAAOk4U,YAAYa,mBAAmBj+U,OAAS,IAC7I6sV,EAAiBc,UAAUxnV,EAAQ0xM,OAAQlsM,KAAKzG,OAAOk4U,YAAYa,oBAGnEU,OAAqC31U,EACrC7C,EAAQkxM,WACR,IACUA,EAAa7B,GAAgBrvM,EAAQkxM,WAAY1rM,KAAK09T,aAC5DsV,EAAU,CACNhc,WAAY,GAAGtrH,EAAWj5H,IAAM+uH,GAAW8I,sBAAwBoB,EAAWnB,KAC9EtsM,KAAMysT,GAAkBwe,gBAI/B,CAFC,MAAO1gU,IACLxI,KAAK0nF,OAAOklH,QAAQ,+CAAiDpkM,GACxE,MAEDwqU,EAAUx4U,EAAQyuU,cAItB,GAAIjpU,KAAKzG,OAAOk5U,cAAcnH,sBAAwB0H,EAClD,OAAQA,EAAQ/0U,MACZ,KAAKysT,GAAkBwe,gBACnB,IACUx9H,EAAavB,GAAiC6oI,EAAQhc,YAC5DkqB,EAAiBlL,UAAUtqI,EAG9B,CAFC,MAAOljM,IACLxI,KAAK0nF,OAAOklH,QAAQ,mDAAqDpkM,GAC5E,CACD,MACJ,KAAKkiT,GAAkB0e,IACnB8X,EAAiBnL,UAAU/C,EAAQhc,YAgB/C,OAXIx8T,EAAQynV,qBACRf,EAAiBhI,wBAAwB1+U,EAAQynV,sBAIjDznV,EAAQ0nV,4BAAgC1nV,EAAQynV,qBAAwBznV,EAAQynV,oBAAoB1jJ,GAAmB4jJ,kBACvHjB,EAAiBhI,0BAAuBtzO,EAAAA,CAAAA,GACnC24F,GAAmB4jJ,iBAAkB,IADF,IAKrC,CAAP,EAAOjB,EAAiBE,2BAC3B,EAMaxB,EAA4B,UAAAE,6BAA1C,SAA2CtlV,iHAyCvC,IAxCM0mV,EAAmB,IAAI5M,IAEZU,YAAYh1U,KAAKzG,OAAOk4U,YAAYnhI,UAE/CwkI,EAAoBvhB,GAAAA,EAAQzsH,QAAU,GAAOtsM,EAAQ4nV,sBAAwB,IACnFlB,EAAiBI,UAAUxM,GAG3BoM,EAAiBhM,eAAe16U,EAAQg2M,aAGlClM,EAAgB9pM,EAAQ8pM,eAAiBtkM,KAAKzG,OAAOq5U,gBAAgBhiB,gBAC3EswB,EAAiB5K,iBAAiBhyI,GAGlC48I,EAAiB1M,gBAAgBh6U,EAAQi6U,cAGzCyM,EAAiBmB,sBAGjBnB,EAAiB1K,eAAex2U,KAAKzG,OAAO04U,aAC5CiP,EAAiBrK,wBAAwB72U,KAAKzG,OAAO24U,UAAU/wB,aAG/D+/B,EAAiBS,gBAEbnnV,EAAQmrT,eAAiBnrT,EAAQw5U,qBACjCkN,EAAiBoB,uBAAuB9nV,EAAQmrT,cAAenrT,EAAQw5U,qBAGvEx5U,EAAQo5U,QACRsN,EAAiBjK,UAAUz8U,EAAQo5U,QAGnCp5U,EAAQm7U,YACRuL,EAAiBxL,cAAcl7U,EAAQm7U,YAIvCn7U,EAAQo5U,SAAW5yI,GAAYE,eAE/B,GAAI1mM,EAAQgxF,KAAOhxF,EAAQo5U,SAAW5yI,GAAY32K,KAE9CrqB,KAAK0nF,OAAOklH,QAAQ,yEACpBs0I,EAAiBjL,OAAOz7U,EAAQgxF,UAC7B,GAAIhxF,EAAQuxM,SAIf,GAHM+6H,EAAa9mU,KAAKuiV,kBAAkB/nV,EAAQuxM,SAC5Cy2I,EAAwBxiV,KAAKyiV,iBAAiBjoV,EAAQuxM,SAEjC,CACvB/rM,KAAK0nF,OAAOklH,QAAQ,qEACpBs0I,EAAiBrL,aAAa2M,GAC9B,IACU92I,EAAavB,GAAiC3vM,EAAQuxM,QAAQ3B,eACpE82I,EAAiBlL,UAAUtqI,EAG9B,CAFC,MAAOljM,IACLxI,KAAK0nF,OAAOklH,QAAQ,+EACvB,CACJ,MAAM,GAAIk6H,GAActsU,EAAQo5U,SAAW5yI,GAAY32K,KAAM,CAK1DrqB,KAAK0nF,OAAOklH,QAAQ,yEACpBs0I,EAAiBjL,OAAOnP,GACxB,IACUp7H,EAAavB,GAAiC3vM,EAAQuxM,QAAQ3B,eACpE82I,EAAiBlL,UAAUtqI,EAG9B,CAFC,MAAOljM,IACLxI,KAAK0nF,OAAOklH,QAAQ,+EACvB,CACJ,MAAM,GAAIpyM,EAAQqsU,UACf7mU,KAAK0nF,OAAOklH,QAAQ,gEACpBs0I,EAAiBrL,aAAar7U,EAAQqsU,WACtCqa,EAAiBnL,UAAUv7U,EAAQqsU,gBAChC,GAAIrsU,EAAQuxM,QAAQpxM,SAAU,CAEjCqF,KAAK0nF,OAAOklH,QAAQ,gEACpBs0I,EAAiBrL,aAAar7U,EAAQuxM,QAAQpxM,UAC9C,IACU+wM,EAAavB,GAAiC3vM,EAAQuxM,QAAQ3B,eACpE82I,EAAiBlL,UAAUtqI,EAG9B,CAFC,MAAOljM,IACLxI,KAAK0nF,OAAOklH,QAAQ,+EACvB,CACJ,OACMpyM,EAAQqsU,YACf7mU,KAAK0nF,OAAOklH,QAAQ,4EACpBs0I,EAAiBrL,aAAar7U,EAAQqsU,WACtCqa,EAAiBnL,UAAUv7U,EAAQqsU,iBAGvC7mU,KAAK0nF,OAAOklH,QAAQ,yFAGpBpyM,EAAQ6yM,OACR6zI,EAAiB5J,SAAS98U,EAAQ6yM,OAGlC7yM,EAAQ6c,OACR6pU,EAAiB9J,SAAS58U,EAAQ6c,SAGjC2wL,GAAYjiL,QAAQvrB,EAAQ0xM,SAAWlsM,KAAKzG,OAAOk4U,YAAYa,oBAAsBtyU,KAAKzG,OAAOk4U,YAAYa,mBAAmBj+U,OAAS,IAC1I6sV,EAAiBc,UAAUxnV,EAAQ0xM,OAAQlsM,KAAKzG,OAAOk4U,YAAYa,oBAGnE93U,EAAQkoV,sBACRxB,EAAiBhI,wBAAwB1+U,EAAQkoV,sBAGjDloV,EAAQmoV,cAERzB,EAAiB0B,kBAGbpoV,EAAQuhU,uBAAyB55H,GAAqBu4H,IAAG,MAGtC,GAFO,IAAIkgB,GAAkB56U,KAAK09T,aAEVmd,YAAYrgV,KARvC,aAQVonV,EAAah8O,EAA4C,OAC/Ds7O,EAAiB1H,YAAYoI,EAAW3G,sBAIhD,aAAO,CAAP,EAAOiG,EAAiBE,2BAC3B,EAMOxB,EAA0B,UAAAgB,2BAAlC,SAAmCpmV,GAC/B,IAAM0mV,EAAmB,IAAI5M,GA0B7B,OAxBI95U,EAAQi2M,uBACRywI,EAAiB7L,yBAAyB76U,EAAQi2M,uBAGlDj2M,EAAQ8pM,eACR48I,EAAiB5K,iBAAiB97U,EAAQ8pM,eAG1C9pM,EAAQg7U,aACR0L,EAAiB3L,eAAe/6U,EAAQg7U,aAGzCh7U,EAAQ6c,OACP6pU,EAAiB9J,SAAS58U,EAAQ6c,OAGlC7c,EAAQ6/U,YACR6G,EAAiB9G,cAAc5/U,EAAQ6/U,YAGvC7/U,EAAQkoV,sBACRxB,EAAiBhI,wBAAwB1+U,EAAQkoV,sBAG9CxB,EAAiBE,mBAC3B,EAMOxB,EAAiB,UAAA2C,kBAAzB,SAA0Bx2I,SACtB,OAA4B,QAArB,EAAAA,EAAQR,qBAAa3lG,IAAAA,OAAA,EAAAA,EAAEpa,MAAO,IACxC,EAEOo0P,EAAgB,UAAA6C,iBAAxB,SAAyB12I,SACrB,OAA4B,QAArB,EAAAA,EAAQR,qBAAa3lG,IAAAA,OAAA,EAAAA,EAAEi9O,aAAc,IAC/C,EACJjD,CA9bD,EAA6CrO,IClBvC,SAAUuR,GAAuBvnV,GACnC,OACIA,EAASiT,eAAe,2BACxBjT,EAASiT,eAAe,mBACxBjT,EAASiT,eAAe,WACxBjT,EAASiT,eAAe,WAEhC,CClBO,IAEMu0U,GAFqC,CAAC,4CAA4C,CAAC,eAAiB,6DAA6D,sCAAwC,CAAC,qBAAqB,kBAAkB,uBAAuB,SAAW,+DAA+D,yBAA2B,CAAC,QAAQ,WAAW,aAAa,wBAA0B,CAAC,YAAY,sCAAwC,CAAC,SAAS,yBAA2B,CAAC,OAAO,WAAW,gBAAgB,kBAAkB,iBAAmB,CAAC,SAAS,UAAU,QAAQ,kBAAkB,OAAS,oDAAoD,iCAAkC,EAAM,kBAAoB,4CAA4C,uBAAyB,iEAAiE,8BAAgC,kEAAkE,uBAAwB,EAAK,+BAAgC,EAAK,qBAAuB,8DAA8D,iBAAmB,CAAC,MAAM,MAAM,sBAAsB,2BAA2B,wBAAwB,eAAe,MAAM,MAAM,MAAM,YAAY,MAAM,QAAQ,qBAAqB,OAAO,MAAM,MAAM,UAAU,SAAS,SAAS,kBAAoB,oDAAoD,oBAAsB,KAAK,oBAAsB,sBAAsB,sBAAwB,oBAAoB,aAAe,sBAAsB,SAAW,2BAA2B,yCAAyC,CAAC,eAAiB,0DAA0D,sCAAwC,CAAC,qBAAqB,kBAAkB,uBAAuB,SAAW,4DAA4D,yBAA2B,CAAC,QAAQ,WAAW,aAAa,wBAA0B,CAAC,YAAY,sCAAwC,CAAC,SAAS,yBAA2B,CAAC,OAAO,WAAW,gBAAgB,kBAAkB,iBAAmB,CAAC,SAAS,UAAU,QAAQ,kBAAkB,OAAS,2DAA2D,iCAAkC,EAAM,kBAAoB,wDAAwD,uBAAyB,8DAA8D,8BAAgC,+DAA+D,uBAAwB,EAAK,+BAAgC,EAAK,qBAAuB,2DAA2D,iBAAmB,CAAC,MAAM,MAAM,sBAAsB,2BAA2B,wBAAwB,eAAe,MAAM,MAAM,MAAM,YAAY,MAAM,QAAQ,qBAAqB,OAAO,MAAM,MAAM,UAAU,SAAS,SAAS,kBAAoB,iDAAiD,oBAAsB,KAAK,oBAAsB,6BAA6B,sBAAwB,yBAAyB,aAAe,kCAAkC,SAAW,gCAAgC,2CAA2C,CAAC,eAAiB,4DAA4D,sCAAwC,CAAC,qBAAqB,kBAAkB,uBAAuB,SAAW,8DAA8D,yBAA2B,CAAC,QAAQ,WAAW,aAAa,wBAA0B,CAAC,YAAY,sCAAwC,CAAC,SAAS,yBAA2B,CAAC,OAAO,WAAW,gBAAgB,kBAAkB,iBAAmB,CAAC,SAAS,UAAU,QAAQ,kBAAkB,OAAS,mDAAmD,iCAAkC,EAAM,kBAAoB,4CAA4C,uBAAyB,gEAAgE,8BAAgC,iEAAiE,uBAAwB,EAAK,+BAAgC,EAAK,qBAAuB,6DAA6D,iBAAmB,CAAC,MAAM,MAAM,sBAAsB,2BAA2B,wBAAwB,eAAe,MAAM,MAAM,MAAM,YAAY,MAAM,QAAQ,qBAAqB,OAAO,MAAM,MAAM,UAAU,SAAS,SAAS,kBAAoB,mDAAmD,oBAAsB,KAAK,oBAAsB,qBAAqB,sBAAwB,oBAAoB,aAAe,sBAAsB,SAAW,mCAAmC,+CAA+C,CAAC,eAAiB,gEAAgE,sCAAwC,CAAC,qBAAqB,kBAAkB,uBAAuB,SAAW,kEAAkE,yBAA2B,CAAC,QAAQ,WAAW,aAAa,wBAA0B,CAAC,YAAY,sCAAwC,CAAC,SAAS,yBAA2B,CAAC,OAAO,WAAW,gBAAgB,kBAAkB,iBAAmB,CAAC,SAAS,UAAU,QAAQ,kBAAkB,OAAS,8EAA8E,iCAAkC,EAAM,kBAAoB,4CAA4C,uBAAyB,oEAAoE,8BAAgC,qEAAqE,uBAAwB,EAAK,+BAAgC,EAAK,qBAAuB,iEAAiE,iBAAmB,CAAC,MAAM,MAAM,sBAAsB,2BAA2B,wBAAwB,eAAe,MAAM,MAAM,MAAM,YAAY,MAAM,QAAQ,qBAAqB,OAAO,MAAM,MAAM,UAAU,SAAS,SAAS,kBAAoB,uDAAuD,oBAAsB,KAAK,oBAAsB,sBAAsB,sBAAwB,oBAAoB,aAAe,sBAAsB,SAAW,2BAA2B,4CAA4C,CAAC,eAAiB,6DAA6D,sCAAwC,CAAC,qBAAqB,kBAAkB,uBAAuB,SAAW,+DAA+D,yBAA2B,CAAC,QAAQ,WAAW,aAAa,wBAA0B,CAAC,YAAY,sCAAwC,CAAC,SAAS,yBAA2B,CAAC,OAAO,WAAW,gBAAgB,kBAAkB,iBAAmB,CAAC,SAAS,UAAU,QAAQ,kBAAkB,OAAS,qFAAqF,iCAAkC,EAAM,kBAAoB,wDAAwD,uBAAyB,iEAAiE,8BAAgC,kEAAkE,uBAAwB,EAAK,+BAAgC,EAAK,qBAAuB,8DAA8D,iBAAmB,CAAC,MAAM,MAAM,sBAAsB,2BAA2B,wBAAwB,eAAe,MAAM,MAAM,MAAM,YAAY,MAAM,QAAQ,qBAAqB,OAAO,MAAM,MAAM,UAAU,SAAS,SAAS,kBAAoB,oDAAoD,oBAAsB,KAAK,oBAAsB,6BAA6B,sBAAwB,yBAAyB,aAAe,kCAAkC,SAAW,gCAAgC,8CAA8C,CAAC,eAAiB,+DAA+D,sCAAwC,CAAC,qBAAqB,kBAAkB,uBAAuB,SAAW,iEAAiE,yBAA2B,CAAC,QAAQ,WAAW,aAAa,wBAA0B,CAAC,YAAY,sCAAwC,CAAC,SAAS,yBAA2B,CAAC,OAAO,WAAW,gBAAgB,kBAAkB,iBAAmB,CAAC,SAAS,UAAU,QAAQ,kBAAkB,OAAS,6EAA6E,iCAAkC,EAAM,kBAAoB,4CAA4C,uBAAyB,mEAAmE,8BAAgC,oEAAoE,uBAAwB,EAAK,+BAAgC,EAAK,qBAAuB,gEAAgE,iBAAmB,CAAC,MAAM,MAAM,sBAAsB,2BAA2B,wBAAwB,eAAe,MAAM,MAAM,MAAM,YAAY,MAAM,QAAQ,qBAAqB,OAAO,MAAM,MAAM,UAAU,SAAS,SAAS,kBAAoB,sDAAsD,oBAAsB,KAAK,oBAAsB,qBAAqB,sBAAwB,oBAAoB,aAAe,sBAAsB,SAAW,mCAAmC,mDAAmD,CAAC,eAAiB,oEAAoE,sCAAwC,CAAC,qBAAqB,kBAAkB,uBAAuB,SAAW,sEAAsE,yBAA2B,CAAC,QAAQ,WAAW,aAAa,wBAA0B,CAAC,YAAY,sCAAwC,CAAC,SAAS,yBAA2B,CAAC,OAAO,WAAW,gBAAgB,kBAAkB,iBAAmB,CAAC,SAAS,UAAU,QAAQ,kBAAkB,OAAS,oDAAoD,iCAAkC,EAAM,kBAAoB,4CAA4C,uBAAyB,wEAAwE,8BAAgC,yEAAyE,uBAAwB,EAAK,+BAAgC,EAAK,qBAAuB,qEAAqE,iBAAmB,CAAC,MAAM,MAAM,sBAAsB,2BAA2B,wBAAwB,eAAe,MAAM,MAAM,MAAM,YAAY,MAAM,QAAQ,qBAAqB,OAAO,MAAM,MAAM,UAAU,SAAS,SAAS,kBAAoB,2DAA2D,oBAAsB,KAAK,oBAAsB,sBAAsB,sBAAwB,oBAAoB,aAAe,sBAAsB,SAAW,2BAA2B,gDAAgD,CAAC,eAAiB,iEAAiE,sCAAwC,CAAC,qBAAqB,kBAAkB,uBAAuB,SAAW,mEAAmE,yBAA2B,CAAC,QAAQ,WAAW,aAAa,wBAA0B,CAAC,YAAY,sCAAwC,CAAC,SAAS,yBAA2B,CAAC,OAAO,WAAW,gBAAgB,kBAAkB,iBAAmB,CAAC,SAAS,UAAU,QAAQ,kBAAkB,OAAS,2DAA2D,iCAAkC,EAAM,kBAAoB,wDAAwD,uBAAyB,qEAAqE,8BAAgC,sEAAsE,uBAAwB,EAAK,+BAAgC,EAAK,qBAAuB,kEAAkE,iBAAmB,CAAC,MAAM,MAAM,sBAAsB,2BAA2B,wBAAwB,eAAe,MAAM,MAAM,MAAM,YAAY,MAAM,QAAQ,qBAAqB,OAAO,MAAM,MAAM,UAAU,SAAS,SAAS,kBAAoB,wDAAwD,oBAAsB,KAAK,oBAAsB,6BAA6B,sBAAwB,yBAAyB,aAAe,kCAAkC,SAAW,gCAAgC,kDAAkD,CAAC,eAAiB,mEAAmE,sCAAwC,CAAC,qBAAqB,kBAAkB,uBAAuB,SAAW,qEAAqE,yBAA2B,CAAC,QAAQ,WAAW,aAAa,wBAA0B,CAAC,YAAY,sCAAwC,CAAC,SAAS,yBAA2B,CAAC,OAAO,WAAW,gBAAgB,kBAAkB,iBAAmB,CAAC,SAAS,UAAU,QAAQ,kBAAkB,OAAS,mDAAmD,iCAAkC,EAAM,kBAAoB,4CAA4C,uBAAyB,uEAAuE,8BAAgC,wEAAwE,uBAAwB,EAAK,+BAAgC,EAAK,qBAAuB,oEAAoE,iBAAmB,CAAC,MAAM,MAAM,sBAAsB,2BAA2B,wBAAwB,eAAe,MAAM,MAAM,MAAM,YAAY,MAAM,QAAQ,qBAAqB,OAAO,MAAM,MAAM,UAAU,SAAS,SAAS,kBAAoB,0DAA0D,oBAAsB,KAAK,oBAAsB,qBAAqB,sBAAwB,oBAAoB,aAAe,sBAAsB,SAAW,oCAGz2cC,GAHy6c,CAAC,4CAA4C,CAAC,0BAA4B,iFAAiF,cAAc,MAAM,SAAW,CAAC,CAAC,kBAAoB,4BAA4B,gBAAkB,oBAAoB,QAAU,CAAC,4BAA4B,oBAAoB,sBAAsB,oBAAoB,CAAC,kBAAoB,mCAAmC,gBAAkB,mCAAmC,QAAU,CAAC,mCAAmC,2BAA2B,CAAC,kBAAoB,2BAA2B,gBAAkB,2BAA2B,QAAU,CAAC,6BAA6B,CAAC,kBAAoB,2BAA2B,gBAAkB,2BAA2B,QAAU,CAAC,2BAA2B,4BAA4B,CAAC,kBAAoB,+BAA+B,gBAAkB,+BAA+B,QAAU,CAAC,mCAAmC,yCAAyC,CAAC,0BAA4B,8EAA8E,cAAc,MAAM,SAAW,CAAC,CAAC,kBAAoB,4BAA4B,gBAAkB,oBAAoB,QAAU,CAAC,4BAA4B,oBAAoB,sBAAsB,oBAAoB,CAAC,kBAAoB,mCAAmC,gBAAkB,mCAAmC,QAAU,CAAC,mCAAmC,2BAA2B,CAAC,kBAAoB,2BAA2B,gBAAkB,2BAA2B,QAAU,CAAC,6BAA6B,CAAC,kBAAoB,2BAA2B,gBAAkB,2BAA2B,QAAU,CAAC,2BAA2B,4BAA4B,CAAC,kBAAoB,+BAA+B,gBAAkB,+BAA+B,QAAU,CAAC,mCAAmC,2CAA2C,CAAC,0BAA4B,gFAAgF,cAAc,MAAM,SAAW,CAAC,CAAC,kBAAoB,4BAA4B,gBAAkB,oBAAoB,QAAU,CAAC,4BAA4B,oBAAoB,sBAAsB,oBAAoB,CAAC,kBAAoB,mCAAmC,gBAAkB,mCAAmC,QAAU,CAAC,mCAAmC,2BAA2B,CAAC,kBAAoB,2BAA2B,gBAAkB,2BAA2B,QAAU,CAAC,6BAA6B,CAAC,kBAAoB,2BAA2B,gBAAkB,2BAA2B,QAAU,CAAC,2BAA2B,4BAA4B,CAAC,kBAAoB,+BAA+B,gBAAkB,+BAA+B,QAAU,CAAC,mCAAmC,+CAA+C,CAAC,0BAA4B,oFAAoF,cAAc,MAAM,SAAW,CAAC,CAAC,kBAAoB,4BAA4B,gBAAkB,oBAAoB,QAAU,CAAC,4BAA4B,oBAAoB,sBAAsB,oBAAoB,CAAC,kBAAoB,mCAAmC,gBAAkB,mCAAmC,QAAU,CAAC,mCAAmC,2BAA2B,CAAC,kBAAoB,2BAA2B,gBAAkB,2BAA2B,QAAU,CAAC,6BAA6B,CAAC,kBAAoB,2BAA2B,gBAAkB,2BAA2B,QAAU,CAAC,2BAA2B,4BAA4B,CAAC,kBAAoB,+BAA+B,gBAAkB,+BAA+B,QAAU,CAAC,mCAAmC,4CAA4C,CAAC,0BAA4B,iFAAiF,cAAc,MAAM,SAAW,CAAC,CAAC,kBAAoB,4BAA4B,gBAAkB,oBAAoB,QAAU,CAAC,4BAA4B,oBAAoB,sBAAsB,oBAAoB,CAAC,kBAAoB,mCAAmC,gBAAkB,mCAAmC,QAAU,CAAC,mCAAmC,2BAA2B,CAAC,kBAAoB,2BAA2B,gBAAkB,2BAA2B,QAAU,CAAC,6BAA6B,CAAC,kBAAoB,2BAA2B,gBAAkB,2BAA2B,QAAU,CAAC,2BAA2B,4BAA4B,CAAC,kBAAoB,+BAA+B,gBAAkB,+BAA+B,QAAU,CAAC,mCAAmC,8CAA8C,CAAC,0BAA4B,mFAAmF,cAAc,MAAM,SAAW,CAAC,CAAC,kBAAoB,4BAA4B,gBAAkB,oBAAoB,QAAU,CAAC,4BAA4B,oBAAoB,sBAAsB,oBAAoB,CAAC,kBAAoB,mCAAmC,gBAAkB,mCAAmC,QAAU,CAAC,mCAAmC,2BAA2B,CAAC,kBAAoB,2BAA2B,gBAAkB,2BAA2B,QAAU,CAAC,6BAA6B,CAAC,kBAAoB,2BAA2B,gBAAkB,2BAA2B,QAAU,CAAC,2BAA2B,4BAA4B,CAAC,kBAAoB,+BAA+B,gBAAkB,+BAA+B,QAAU,CAAC,mCAAmC,mDAAmD,CAAC,0BAA4B,wFAAwF,cAAc,MAAM,SAAW,CAAC,CAAC,kBAAoB,4BAA4B,gBAAkB,oBAAoB,QAAU,CAAC,4BAA4B,oBAAoB,sBAAsB,oBAAoB,CAAC,kBAAoB,mCAAmC,gBAAkB,mCAAmC,QAAU,CAAC,mCAAmC,2BAA2B,CAAC,kBAAoB,2BAA2B,gBAAkB,2BAA2B,QAAU,CAAC,6BAA6B,CAAC,kBAAoB,2BAA2B,gBAAkB,2BAA2B,QAAU,CAAC,2BAA2B,4BAA4B,CAAC,kBAAoB,+BAA+B,gBAAkB,+BAA+B,QAAU,CAAC,mCAAmC,gDAAgD,CAAC,0BAA4B,qFAAqF,cAAc,MAAM,SAAW,CAAC,CAAC,kBAAoB,4BAA4B,gBAAkB,oBAAoB,QAAU,CAAC,4BAA4B,oBAAoB,sBAAsB,oBAAoB,CAAC,kBAAoB,mCAAmC,gBAAkB,mCAAmC,QAAU,CAAC,mCAAmC,2BAA2B,CAAC,kBAAoB,2BAA2B,gBAAkB,2BAA2B,QAAU,CAAC,6BAA6B,CAAC,kBAAoB,2BAA2B,gBAAkB,2BAA2B,QAAU,CAAC,2BAA2B,4BAA4B,CAAC,kBAAoB,+BAA+B,gBAAkB,+BAA+B,QAAU,CAAC,mCAAmC,kDAAkD,CAAC,0BAA4B,uFAAuF,cAAc,MAAM,SAAW,CAAC,CAAC,kBAAoB,4BAA4B,gBAAkB,oBAAoB,QAAU,CAAC,4BAA4B,oBAAoB,sBAAsB,oBAAoB,CAAC,kBAAoB,mCAAmC,gBAAkB,mCAAmC,QAAU,CAAC,mCAAmC,2BAA2B,CAAC,kBAAoB,2BAA2B,gBAAkB,2BAA2B,QAAU,CAAC,6BAA6B,CAAC,kBAAoB,2BAA2B,gBAAkB,2BAA2B,QAAU,CAAC,2BAA2B,4BAA4B,CAAC,kBAAoB,+BAA+B,gBAAkB,+BAA+B,QAAU,CAAC,oCCOnruB,ICIYC,GDJZ,cAUI,WAAYtQ,GACR3yU,KAAK2yU,iBAAmBA,CAC3B,CAoFL,OA7EiBuQ,EAAAA,UAAAA,aAAb,SAA0BC,EAAuCC,EAAkD7X,gHAE3G8X,EAAyBF,EAGzB,MAAuB,MACjBz+U,EAAUw+U,EAAgBI,aAC5B/X,IACA7mU,EAAQ6mU,SAAWA,oBAIc,6BAAM,GAAAvrU,KAAKujV,kBAAkB9kJ,GAAU4B,aAAc37L,kBAAhF8+U,EAA2B59O,EAA6D,QACjEnqG,SAAWunM,GAAcygJ,cAClDJ,EAAyBG,EAAyBlnT,KAClD8mT,EAAwBM,cAAgBzgJ,GAAuB0gJ,MAI/DH,EAAyB/nV,SAAWunM,GAAc4gJ,eAAc,MACrC,GAAM5jV,KAAK6jV,kBAAkBn/U,WACxD,OADMo/U,EAAqBl+O,EAAqC,QAMvB,GAAA5lG,KAAKujV,kBAAkBO,EAAoBp/U,KAJhF0+U,EAAwBM,cAAgBzgJ,GAAuB8gJ,sBACxD,CAAP,EAAO,eAGLC,EAA6Bp+O,EAAyD,QAC7DnqG,SAAWunM,GAAcygJ,cACpDJ,EAAyBW,EAA2B1nT,KACpD8mT,EAAwBM,cAAgBzgJ,GAAuB0gJ,0CAKvE,gBADAP,EAAwBM,cAAgBzgJ,GAAuB8gJ,sBACxD,CAAP,EAAO,gCAGXX,EAAwBM,cAAgBzgJ,GAAuBghJ,sCAQnE,OAJKZ,IACDD,EAAwBM,cAAgBzgJ,GAAuB8gJ,uBAG5D,GAAAV,GAA0B,YACpC,EAQaH,EAAAA,UAAAA,kBAAd,SAAgC71U,EAAiB3I,wEAC7C,MAAO,CAAP,EAAO1E,KAAK2yU,iBAAiBjH,oBAA+BjtI,GAAU2B,cAAa,gBAAgB/yL,EAAO,eAAgB3I,EAAS+5L,GAAU6B,oBAChJ,EAOa4iJ,EAAiB,UAAAW,kBAA/B,SAAgCn/U,qGAEP,gCAAM1E,KAAK2yU,iBAAiBjH,oBAAwCjtI,GAAU2B,cAAa,eAAgB17L,WAG5H,OAHMnJ,EAAWqqG,EAAmH,QAGvHnqG,SAAWunM,GAAc4gJ,gBAAkBroV,EAAS+gC,MAAQ/gC,EAAS+gC,KAAK,oBAAsB/gC,EAAS+gC,KAAK,mBAAmBjoC,OAAS,EAC5I,GAAAkH,EAAS+gC,KAAK,mBAAmB,IAGrC,CAAP,EAAO,aAEP,gBAAO,CAAP,EAAO,6BAEd,EA3FgB4mT,EAAAA,aAA4B,CACzCnpV,QAAS,CACLmqV,SAAU,SA0FrBhB,CAhGD,IEiBA,cAqBI,SAAYiB,EAAAv4I,EAAmB+mI,EAAkC1C,EAA6BmU,EAAoC7Y,GAC9HvrU,KAAKy/U,mBAAqB7zI,EAC1B5rM,KAAKqkV,oBAAoBC,gBACzBtkV,KAAK2yU,iBAAmBA,EACxB3yU,KAAKiwU,aAAeA,EACpBjwU,KAAKokV,iBAAmBA,EACxBpkV,KAAKukV,gBAAkB,IAAIrB,GAAgBvQ,GAC3C3yU,KAAKojV,wBAA0B,CAAEoB,iBAAannV,EAAWqmV,mBAAermV,EAAWonV,oBAAgBpnV,GACnG2C,KAAKurU,SAAWA,GAAY9sI,GAAUyB,YACzC,CAylBL,OAtlBIn8L,OAAAA,eAAWogV,EAAa,2BAAxB5nU,IAAAA,WACI,IAAM4lT,EAAeniU,KAAK0kV,gCAAgCrjB,aAE1D,OAAIc,EAAa9tU,QAAU8tU,EAAa,GAAG1kU,gBAAkBghM,GAAUO,KAC5DwK,GAAc+C,KAGlB/C,GAAcm7I,OACxB,kCAKD5gV,OAAAA,eAAWogV,EAAY,0BAAvB5nU,IAAAA,WACI,OAAOvc,KAAKokV,iBAAiBlF,YAChC,kCAKDn7U,OAAAA,eAAWogV,EAAO,qBAAlB5nU,IAAAA,WACI,OAAOvc,KAAKokV,gBACf,kCAKDrgV,OAAAA,eAAWogV,EAAkB,gCAA7B5nU,IAAAA,WACI,OAAOvc,KAAKqkV,oBAAoBrxB,SACnC,EAKD12S,IAAAA,SAA8BnhB,GAC1B6E,KAAKqkV,oBAAsB,IAAItjB,GAAU5lU,GACzC6E,KAAKqkV,oBAAoBC,gBACzBtkV,KAAK4kV,iCAAmC,IAC3C,kCAKD7gV,OAAAA,eAAWogV,EAA+B,6CAA1C5nU,IAAAA,WAKI,OAJKvc,KAAK4kV,mCACN5kV,KAAK4kV,iCAAmC5kV,KAAKqkV,oBAAoBnjB,oBAG9DlhU,KAAK4kV,gCACf,kCAKD7gV,OAAAA,eAAWogV,EAAe,6BAA1B5nU,IAAAA,WACI,OAAOvc,KAAK0kV,gCAAgCtjB,gBAAgB3jU,aAC/D,kCAKDsG,OAAAA,eAAWogV,EAAM,oBAAjB5nU,IAAAA,WACI,OAAOvc,KAAK0kV,gCAAgCrjB,aAAa,EAC5D,kCAKDt9T,OAAAA,eAAWogV,EAAqB,mCAAhC5nU,IAAAA,WACI,GAAGvc,KAAKwzU,oBAAqB,CACzB,IAAMhsI,EAAWxnM,KAAK6kV,YAAY7kV,KAAK8S,SAASmsT,wBAChD,OAAOj/T,KAAK8kV,cAAct9I,EAC7B,CACG,MAAML,GAAgBssI,uCAAuC,wBAEpE,kCAKD1vU,OAAAA,eAAWogV,EAAa,2BAAxB5nU,IAAAA,WACI,GAAGvc,KAAKwzU,oBAAqB,CACzB,IAAMhsI,EAAWxnM,KAAK6kV,YAAY7kV,KAAK8S,SAASosT,gBAChD,OAAOl/T,KAAK8kV,cAAct9I,EAC7B,CACG,MAAML,GAAgBssI,uCAAuC,wBAEpE,kCAED1vU,OAAAA,eAAWogV,EAAkB,gCAA7B5nU,IAAAA,WACI,GAAGvc,KAAKwzU,oBAAqB,CACzB,IAAMhsI,EAAWxnM,KAAK6kV,YAAY7kV,KAAK8S,SAASosT,eAAeh2T,QAAQ,SAAU,gBACjF,OAAOlJ,KAAK8kV,cAAct9I,EAC7B,CACG,MAAML,GAAgBssI,uCAAuC,wBAEpE,kCAKD1vU,OAAAA,eAAWogV,EAAkB,gCAA7B5nU,IAAAA,WACI,GAAGvc,KAAKwzU,oBAAqB,CAEzB,IAAKxzU,KAAK8S,SAASqsT,qBACf,MAAMh4H,GAAgB49I,gCAE1B,IAAMv9I,EAAWxnM,KAAK6kV,YAAY7kV,KAAK8S,SAASqsT,sBAChD,OAAOn/T,KAAK8kV,cAAct9I,EAC7B,CACG,MAAML,GAAgBssI,uCAAuC,wBAEpE,kCAKD1vU,OAAAA,eAAWogV,EAAqB,mCAAhC5nU,IAAAA,WACI,GAAGvc,KAAKwzU,oBAAqB,CACzB,IAAMhsI,EAAWxnM,KAAK6kV,YAAY7kV,KAAK8S,SAASssT,QAChD,OAAOp/T,KAAK8kV,cAAct9I,EAC7B,CACG,MAAML,GAAgBssI,uCAAuC,wBAEpE,kCAKD1vU,OAAAA,eAAWogV,EAAO,qBAAlB5nU,IAAAA,WACI,GAAGvc,KAAKwzU,oBAAqB,CACzB,IAAMhsI,EAAWxnM,KAAK6kV,YAAY7kV,KAAK8S,SAASwsT,UAChD,OAAOt/T,KAAK8kV,cAAct9I,EAC7B,CACG,MAAML,GAAgBssI,uCAAuC,wBAEpE,kCAMO0Q,EAAa,UAAAW,cAArB,SAAsB9xB,GAClB,OAAOA,EAAU9pT,QAAQ,uBAAwBlJ,KAAKssU,OACzD,EAMO6X,EAAW,UAAAU,YAAnB,SAAoB7xB,GAChB,IAAIxrH,EAAWwrH,EAETgyB,EADqB,IAAIjkB,GAAU/gU,KAAK8S,SAAS0sT,qBACP0B,mBAAmBG,aAUnE,OAT8BrhU,KAAK0kV,gCAAgCrjB,aAE7C9jU,SAAQ,SAAC0nV,EAAankV,GACxC,IAAMokV,EAAaF,EAAqBlkV,GACpCmkV,IAAgBC,IAChB19I,EAAWA,EAASt+L,QAAQ,IAAIg8U,EAAU,IAAK,IAAID,EAAW,KAErE,IAEMz9I,CACV,EAKDzjM,OAAAA,eAAcogV,EAAkC,gDAAhD5nU,IAAAA,WACI,OAAIvc,KAAK8qM,gBAAkBtB,GAAc+C,MAAQvsM,KAAKk/U,eAAiB5e,GAAa6kB,KACtEnlV,KAAKy/U,mBAAkB,mCAE3Bz/U,KAAKy/U,mBAAkB,uCACpC,kCAKD0E,EAAAA,UAAAA,kBAAAA,WACI,QAASnkV,KAAK8S,QACjB,EAMYqxU,EAAAA,UAAAA,sBAAb,mHAOiC,OANzBiB,EAAiBplV,KAAKiwU,aAAatW,4BAA4B35T,KAAKqlV,oBAEpED,EAAiB,IAAIxmB,IACNW,yBAAyBv/T,KAAKy/U,oBAGpB,GAAMz/U,KAAKslV,6BAA6BF,WAE9C,OAFjBG,EAAuB3/O,EAAuD,OACpF5lG,KAAKy/U,mBAAqBz/U,KAAKy/U,mBAAmBv2U,QAAQlJ,KAAKqlV,gBAAiBD,EAAermB,mBACxE,GAAM/+T,KAAKwlV,uBAAuBJ,kBAAnDK,EAAiB7/O,EAAiD,OAEpE2/O,IAAyBxjJ,GAAwB2jJ,OAASD,IAAmB1jJ,GAAwB2jJ,QAErGN,EAAeO,iBACfP,EAAe7lB,yBAAyBv/T,KAAKy/U,qBAG3C1nB,EAAW/3T,KAAKiwU,aAAarT,kCAAkCwoB,EAAetmB,iBACpF9+T,KAAKiwU,aAAa2V,qBAAqB7tB,EAAUqtB,GACjDplV,KAAK8S,SAAWsyU,YACnB,EAMajB,EAAsB,UAAAqB,uBAApC,SAAqCJ,+GAEjC,OADItyU,EAAW9S,KAAK6lV,kCAEhBT,EAAeI,uBAAuB1yU,GAAU,GACzC,GAAAivL,GAAA,SAGP/hM,KAAK8lV,oBAAoBV,IAAmBA,EAAe/lB,uBAAyB+lB,EAAenkG,YAE5F,GAAAl/C,GAAA,QAGPgkJ,EAAmB/lV,KAAKgmV,yCACjB,GAAMhmV,KAAKimV,0CAClB,OADJnzU,EAAW+yJ,EAAAA,SAG2C,QAA9C,EAAA7lK,KAAKokV,iBAAiB8B,gCAAwBtgP,IAAAA,OAAA,EAAAA,EAAEugP,aACrC,GAAMnmV,KAAKomV,sCAAsCtzU,IADD,MAFvD,aAGJA,EAAW+yJ,EAAAA,wBAIf,OADAu/K,EAAeI,uBAAuB1yU,GAAU,GACzC,GAAAivL,GAAA,uBAGPgkJ,GAAqB/lV,KAAKokV,iBAAiB5R,2BAA0B,OAEnB,QAA9C,EAAAxyU,KAAKokV,iBAAiB8B,gCAAwBlgP,IAAAA,OAAA,EAAAA,EAAEmgP,aAC7B,GAAMnmV,KAAKomV,sCAC1BL,IAFuD,aAC3DA,EAAmBlgL,EAAAA,wBAMvB,OADAu/K,EAAeI,uBAAuBO,GAAkB,GACjD,GAAAhkJ,GAAA,yBAEP,MAAMoF,GAAgBk/I,mCAClBrmV,KAAKsmV,0CAGhB,EAOOnC,EAAmB,UAAA2B,oBAA3B,SAA4BV,GAIxB,OAH2B,IAAIrkB,GAAUqkB,EAAe5lB,qBACjB0B,mBAAmBG,aAEvChtU,SAAW2L,KAAK0kV,gCAAgCrjB,aAAahtU,MACnF,EAKO8vV,EAAAA,UAAAA,8BAAR,WACI,GAAInkV,KAAKokV,iBAAiBmC,kBACtB,IACI,OAAOl+U,KAAKC,MAAMtI,KAAKokV,iBAAiBmC,kBAG3C,CAFC,MAAO/9U,IACL,MAAMsqT,GAAyB0zB,qCAClC,CAGL,OAAO,IACV,EAOarC,EAAAA,UAAAA,+BAAd,+GACUz/U,EAAuB,CAAC,EAC1B1E,KAAKurU,WACL7mU,EAAQ6mU,SAAWvrU,KAAKurU,2BASP,gCAAMvrU,KAAK2yU,iBAAiBjH,oBAA0C1rU,KAAKsmV,mCAAoC5hV,WAChI,MAAO,CAAP,EAAOo+U,IADDvnV,EAAWqqG,EAAuH,QACjGtpE,MAAQ/gC,EAAS+gC,KAAO,aAE/D,gBAAO,CAAP,EAAO,6BAEd,EAKO6nT,EAAAA,UAAAA,uCAAR,WACI,OAAInkV,KAAKy/U,sBAAsBsD,GACpBA,GAAiB/iV,KAAKy/U,oBAG1B,IACV,EAKa0E,EAAqC,UAAAiC,sCAAnD,SAAoDtzU,qHACjB,MAAM,GAAA9S,KAAKukV,gBAAgBkC,aAA2D,QAA9C,EAAAzmV,KAAKokV,iBAAiB8B,gCAAwBtgP,IAAAA,OAAA,EAAAA,EAAEu9O,kBAAmBnjV,KAAKojV,wBAAyBpjV,KAAKurU,kBAoB7K,OApBM8X,EAAyB/2I,EAAuJ,OAEhL65I,GAA4D,QAA9C,EAAAnmV,KAAKokV,iBAAiB8B,gCAAwBlgP,IAAAA,OAAA,EAAAA,EAAEmgP,eAAgB1nJ,GAAU8B,gCACxF8iJ,EAC8C,QAA/C,EAACrjV,KAAKokV,iBAAiB8B,gCAAwBrgL,IAAAA,OAAA,EAAAA,EAAEsgL,aAEF,QAAhD,EAAAnmV,KAAKokV,iBAAiB8B,gCAA0BxzN,IAAAA,OAAA,EAAAA,EAAAA,eAAgB+rE,GAAU8B,gCAC1EvgM,KAAKojV,wBAAwBqB,eAAiBpB,EAC1CngJ,GAAwBwjJ,oCACxBxjJ,GAAwByjJ,gCAGxB3mV,KAAKojV,wBAAwBqB,eAD7BpB,GAC+F,QAAhD,EAAArjV,KAAKokV,iBAAiB8B,gCAA0BvvR,IAAAA,OAAA,EAAAA,EAAAA,eAAgB0sR,EAC3GngJ,GAAwB0jJ,4BACxB1jJ,GAAwB2jJ,wBAEkB3jJ,GAAwB4jJ,6BAI1EX,GACAnmV,KAAKojV,wBAAwBoB,YAAc2B,EACpC,GAAAhC,EAAU4C,+BAA+Bj0U,EAAUqzU,KAGvD,CAAP,EAAOrzU,SACV,EAOaqxU,EAA4B,UAAAmB,6BAA1C,SAA2CF,uGAEvC,OADItyU,EAAW9S,KAAKgnV,wCAEhB5B,EAAeE,6BAA6BxyU,GAAU,GAC/C,GAAAivL,GAAA,SAIP/hM,KAAK8lV,oBAAoBV,IAAmBA,EAAepmB,qBAAuBomB,EAAenkG,YAE1F,GAAAl/C,GAAA,QAGLgkJ,EAAmB/lV,KAAKinV,8CACnB,GAAMjnV,KAAKknV,gDACtB,GADAp0U,EAAW8yF,EAAAA,OAGP,OADAw/O,EAAeE,6BAA6BxyU,GAAU,GAC/C,GAAAivL,GAAA,SAGX,GAAIgkJ,IAAqB/lV,KAAK0E,QAAQ8tU,2BAElC,OADA4S,EAAeE,6BAA6BS,GAAkB,GACvD,GAAAhkJ,GAAA,kBAGP,MAAM+wH,GAAyBq0B,sCAEtC,EAKOhD,EAAAA,UAAAA,oCAAR,WAEI,GAAInkV,KAAKokV,iBAAiBgD,uBACtB,IACI,IAAMC,EAAiBh/U,KAAKC,MAAMtI,KAAKokV,iBAAiBgD,wBAClDt0U,EAAWqxU,EAAUmD,6CAA6CD,EAAev0U,SAAU9S,KAAKqlV,iBACtG,GAAIvyU,EACA,OAAOA,CAId,CAFC,MAAOtK,IACL,MAAMsqT,GAAyBy0B,0CAClC,CAIL,OAAIvnV,KAAKwnV,uBACErD,EAAUsD,qCAAqCznV,KAAKqlV,iBAGxD,IACV,EAOalB,EAAAA,UAAAA,qCAAd,qHACUuD,EAA4B,GAAGjpJ,GAAUQ,6BAA+Bj/L,KAAKy/U,mBAAkB,wBAC/F/6U,EAAuB,CAAC,EAC1B1E,KAAKurU,WACL7mU,EAAQ6mU,SAAWvrU,KAAKurU,UAQxBnhU,EAAQ,sBAGJ,6BAAM,GAAApK,KAAK2yU,iBAAiBjH,oBACxBgc,EACAhjV,WAKR,OARMnJ,EACFqqG,EAGC,OACC9yF,EC9dZ,SAA2CvX,GAC7C,OACIA,EAASiT,eAAe,8BACxBjT,EAASiT,eAAe,WAEhC,CDyd6Bm5U,CAAiCpsV,EAAS+gC,MACrD/gC,EAAS+gC,KAAKxpB,SACd,GACkB,IAApBA,EAASze,OAEF,CAAP,EAAO,OAEX+V,EAAQ+5U,EAAUmD,6CACdx0U,EACA9S,KAAKqlV,+BAGT,gBAAO,CAAP,EAAO,aASX,OANKj7U,IAEDA,EAAQ+5U,EAAUsD,qCACdznV,KAAKqlV,kBAGN,CAAP,EAAOj7U,SACV,EAKO+5U,EAAAA,UAAAA,4CAAR,WACI,OAAInkV,KAAKy/U,sBAAsBuD,GACpBA,GAA0BhjV,KAAKy/U,oBAGnC,IACV,EAKO0E,EAAAA,UAAAA,qBAAR,eAMC38N,EAAAA,KADG,OAJgBxnH,KAAKokV,iBAAiB7zI,iBAAiB5gM,QAAO,SAACi8L,GAC3D,OAAOm1H,GAAU6mB,iBAAiBh8I,GAAWnuM,gBAAkB+pH,EAAK69N,eACvE,IAEchxV,OAAS,CAC3B,EAOM8vV,EAAAA,kBAAP,SAAyB0D,EAAyBtV,GAC9C,IAAIuV,EAEJ,GAAIvV,GAAqBA,EAAkBnG,qBAAuB7L,GAAmB8L,KAAM,CACvF,IAAMC,EAASiG,EAAkBjG,OAASiG,EAAkBjG,OAAS7tI,GAAUM,sBAC/E+oJ,EAAiCvV,EAAkBnG,mBAAsB,IAAAE,EAAM,GAClF,CAED,OAAOwb,GAA4DD,CACtE,EAMM1D,EAAoC,qCAA3C,SAA4C/4U,GACxC,MAAO,CACH2zT,kBAAmB3zT,EACnB0zT,gBAAiB1zT,EACjB4uT,QAAS,CAAC5uT,GAEjB,EAOM+4U,EAAAA,6CAAP,SAAoD5oV,EAAoCqwM,GACpF,IAAK,IAAIvrM,EAAI,EAAGA,EAAI9E,EAASlH,OAAQgM,IAAK,CACtC,IAAMyS,EAAWvX,EAAS8E,GAC1B,GAAIyS,EAASknT,QAAQ19T,QAAQsvM,IAAc,EACvC,OAAO94L,CAEd,CAED,OAAO,IACV,EAKDqxU,EAAAA,UAAAA,kBAAAA,WACI,GAAGnkV,KAAKwzU,oBACJ,OAAOxzU,KAAK8S,SAASgsT,gBAErB,MAAM33H,GAAgBssI,uCAAuC,wBAEpE,EAMD0Q,EAAO,UAAA4D,QAAP,SAAQ38U,GACJ,OAAOpL,KAAK8S,SAASknT,QAAQ19T,QAAQ8O,IAAS,CACjD,EAQM+4U,EAAsB,uBAA7B,SAA8B/4U,GAC1B,OAAOqzL,GAAUgC,oBAAoBnkM,QAAQ8O,IAAS,CACzD,EAQM+4U,EAAAA,6BAAP,SAAoC/4U,EAAcgrF,EAAgB82L,GAE9D,IAAM86D,EAAuB,IAAIjnB,GAAU31T,GAC3C48U,EAAqB1D,gBAErB,IAAM2D,EAAoBD,EAAqB9mB,mBAE3CgnB,EAAoB9xP,EAAM,IAAI6xP,EAAkB7mB,gBAEhDphU,KAAKmoV,uBAAuBF,EAAkB7mB,mBAC9C8mB,EAAqB9xP,EAAM,IAAIqoG,GAAU+B,mCAI7C,IAAMrlM,EAAM4lU,GAAUc,gCAA+BjxQ,GAACA,GAAAA,CAAAA,EAC/Co3R,EAAqB9mB,oBAAkB,CAC1CE,gBAAiB8mB,KAClBl1B,UAGH,OAAI9lC,EAAuB/xR,EAAO,IAAA+xR,EAE3B/xR,CACV,EAQMgpV,EAAAA,+BAAP,SAAsCrxU,EAAgCqzU,GASlE,OARArzU,EAASmsT,uBAAyBklB,EAAUiE,6BAA6Bt1U,EAASmsT,uBAAwBknB,GAE1GrzU,EAASosT,eAAiBilB,EAAUiE,6BAA6Bt1U,EAASosT,eAAgBinB,EAAa,yBAEnGrzU,EAASqsT,uBACTrsT,EAASqsT,qBAAuBglB,EAAUiE,6BAA6Bt1U,EAASqsT,qBAAsBgnB,IAGnGrzU,CACV,EACJqxU,CAAA,CAvnBD,GEhBA,2BA0CC,CAAD,OA9BiBkE,EAAwB,yBAArC,SAAsCC,EAAsBpX,EAA+BjB,EAA6BmU,EAAoC7Y,uGAElJgd,EAAmCF,EAAiBzpV,eAAe0pV,EAAcpX,EAAejB,EAAcmU,EAAkB7Y,oBAGlI,gCAAMgd,EAAsBC,gCAC5B,OADA5iP,EAAAA,OACO,CAAP,EAAO2iP,UAEP,iBAAMphJ,GAAgBssI,uCAAuCttB,0BAEpE,EAYMkiC,EAAc,eAArB,SAAsBI,EAAsB9V,EAAkC1C,EAA6BmU,EAAoC7Y,GAE3I,GAAIvjI,GAAYjiL,QAAQ0iU,GACpB,MAAM31B,GAAyB+N,sBAGnC,OAAO,IAAIsjB,GAAUsE,EAAc9V,EAAkB1C,EAAcmU,EAAkB7Y,EACxF,EACJ8c,CAAA,CA1CD,GCAA,cAYI,SAAYK,EAAAC,EAA0C1Y,GAF9C,KAAA2Y,aAA6BzlJ,GAAa0lJ,aAG9C7oV,KAAKiwU,aAAeA,EACpBjwU,KAAK8oV,MAAQH,EAAiBG,MAC9B9oV,KAAKskM,cAAgBqkJ,EAAiBrkJ,cACtCtkM,KAAK6lU,WAAa8iB,EAAiB9iB,YAAcpnI,GAAUyB,aAC3DlgM,KAAK+oV,WAAaJ,EAAiBI,YAActqJ,GAAUyB,aAE3DlgM,KAAKgpV,kBAAoB5mJ,GAAuBK,UAAYjB,GAAWiJ,oBAAsBk+I,EAAiBr4I,QACjH,CAqKL,OAhKIo4I,EAAAA,UAAAA,kCAAAA,WACI,IAAMluV,EAAU,GAAGwF,KAAK8oV,MAAQ1mJ,GAAuBO,gBAAkB3iM,KAAK4oV,aACxEK,EAAiB,CAACjpV,KAAK6lU,WAAY7lU,KAAK+oV,YAAYv/U,KAAK44L,GAAuBO,iBAEhFumJ,EAAmC,CAAC1uV,EADZwF,KAAKmpV,4BACuC3/U,KAAK44L,GAAuBO,iBAEtG,MAAO,CAACP,GAAuBC,eAAgB6mJ,EAAkCD,GAAgBz/U,KAAK44L,GAAuBM,mBAChI,EAKDgmJ,EAAAA,UAAAA,+BAAAA,WACI,IAAMU,EAAeppV,KAAKqpV,kBAEpBC,EAAYZ,EAAuBa,gBAAgBH,GACnD9qB,EAAiB8qB,EAAa9qB,eAAenmU,MAAM,EAAG,EAAEmxV,GAAW9/U,KAAK44L,GAAuBO,iBAC/F5mI,EAASqtR,EAAartR,OAAO5jE,MAAM,EAAGmxV,GAAW9/U,KAAK44L,GAAuBO,iBAC7E6mJ,EAAaJ,EAAartR,OAAO1nE,OAIjC40V,EAAiB,CAACO,EADPF,EAAYE,EAAapnJ,GAAuBQ,cAAgBR,GAAuBS,gBAC1Dr5L,KAAK44L,GAAuBO,iBAE1E,MAAO,CAACP,GAAuBC,eAAgB+mJ,EAAa7qB,UAAWD,EAAgBviQ,EAAQktR,GAAgBz/U,KAAK44L,GAAuBM,mBAC9I,EAMDgmJ,EAAkB,UAAAe,mBAAlB,SAAmBvmV,GACf,IAAMkmV,EAAeppV,KAAKqpV,kBACtBD,EAAartR,OAAO1nE,QAAU+tM,GAAuBI,oBAErD4mJ,EAAa9qB,eAAex7T,QAC5BsmV,EAAa9qB,eAAex7T,QAC5BsmV,EAAartR,OAAOj5D,SAGxBsmV,EAAa9qB,eAAez9T,KAAKb,KAAK8oV,MAAO9oV,KAAKskM,eAE7C0D,GAAYjiL,QAAQ7iB,EAAMkhM,UAEnB4D,GAAYjiL,QAAQ7iB,EAAM8gM,WAEzB9gM,GAASA,EAAM8D,WACxBoiV,EAAartR,OAAOl7D,KAAKqC,EAAM8D,YAE/BoiV,EAAartR,OAAOl7D,KAAKuhM,GAAuBU,eAJhDsmJ,EAAartR,OAAOl7D,KAAKqC,EAAM8gM,WAF/BolJ,EAAartR,OAAOl7D,KAAKqC,EAAMkhM,UASnCpkM,KAAKiwU,aAAayZ,mBAAmB1pV,KAAKgpV,kBAAmBI,EAGhE,EAKDV,EAAAA,UAAAA,mBAAAA,WACI,IAAMU,EAAeppV,KAAKqpV,kBAI1B,OAHAD,EAAa7qB,WAAa,EAE1Bv+T,KAAKiwU,aAAayZ,mBAAmB1pV,KAAKgpV,kBAAmBI,GACtDA,EAAa7qB,SACvB,EAKDmqB,EAAAA,UAAAA,gBAAAA,WACI,IAAMtmN,EAAsC,IAAIo8L,GAGhD,OAFqBx+T,KAAKiwU,aAAa0Z,mBAAmB3pV,KAAKgpV,oBAExC5mN,CAC1B,EAKDsmN,EAAAA,UAAAA,oBAAAA,WACI,IAAMU,EAAeppV,KAAKqpV,kBACpBO,EAAmBlB,EAAuBa,gBAAgBH,GAEhE,GAAIQ,IADeR,EAAartR,OAAO1nE,OAGnC2L,KAAKiwU,aAAa/6Q,WAAWl1D,KAAKgpV,uBAC/B,CAEH,IAAMa,EAAoB,IAAIrrB,GAC9BqrB,EAAkBvrB,eAAiB8qB,EAAa9qB,eAAenmU,MAAuB,EAAjByxV,GACrEC,EAAkB9tR,OAASqtR,EAAartR,OAAO5jE,MAAMyxV,GAErD5pV,KAAKiwU,aAAayZ,mBAAmB1pV,KAAKgpV,kBAAmBa,EAChE,CACJ,EAMMnB,EAAe,gBAAtB,SAAuBoB,GACnB,IAAIzpV,EACAipV,EAAY,EACZS,EAAW,EACTP,EAAaM,EAAsB/tR,OAAO1nE,OAChD,IAAKgM,EAAI,EAAGA,EAAImpV,EAAYnpV,IAAK,CAE7B,IAAMyoV,EAAQgB,EAAsBxrB,eAAe,EAAEj+T,IAAMo+L,GAAUyB,aAC/DoE,EAAgBwlJ,EAAsBxrB,eAAe,EAAEj+T,EAAI,IAAMo+L,GAAUyB,aAC3E8D,EAAY8lJ,EAAsB/tR,OAAO17D,IAAMo+L,GAAUyB,aAK/D,MAFA6pJ,GAAYjB,EAAM9hV,WAAW3S,OAASiwM,EAAct9L,WAAW3S,OAAS2vM,EAAU3vM,OAAS,GAE5E+tM,GAAuBG,uBAIlC,MAFA+mJ,GAAa,CAIpB,CAED,OAAOA,CACV,EAODZ,EAAAA,UAAAA,yBAAAA,WACI,IAAMsB,EAAkC,GAMxC,OAJAA,EAAsBnpV,KAAKb,KAAKiqV,YAAcxrJ,GAAUyB,cACxD8pJ,EAAsBnpV,KAAKb,KAAKkqV,cAAgBzrJ,GAAUyB,cAC1D8pJ,EAAsBnpV,KAAKb,KAAKmqV,eAAiB1rJ,GAAUyB,cAEpD8pJ,EAAsBxgV,KAAK,IACrC,EAQDk/U,EAA6B,UAAA0B,8BAA7B,SAA8BhH,GAC1BpjV,KAAKiqV,WAAa7G,EAAwBoB,YAC1CxkV,KAAKkqV,aAAe9G,EAAwBM,cAC5C1jV,KAAKmqV,cAAgB/G,EAAwBqB,cAChD,EAKDiE,EAAe,UAAA2B,gBAAf,SAAgBzB,GACZ5oV,KAAK4oV,aAAeA,CACvB,EACJF,CAAA,CAzLD,iBCmBI,WAAYnvV,EAA8B+wV,EAAkCr/B,EAAwBvjO,EAAgB4xB,EAA4BixO,EAAqCv/B,EAAuCw/B,EAA6ClmJ,GACrQtkM,KAAKzG,OAASA,EACdyG,KAAKyjU,eAAiB6mB,EACtBtqV,KAAKirT,cAAgBA,EACrBjrT,KAAKkxU,cAAgBlxU,KAAKzG,OAAOkxV,OAAOvZ,cACxClxU,KAAKs5G,aAAeA,EACpBt5G,KAAKuqV,iBAAmBA,EACxBvqV,KAAKwqV,qBAAuBA,EAC5BxqV,KAAKskM,cAAgBA,GAAiBtkM,KAAKirT,cAAc2F,gBACzD5wT,KAAK0nF,OAASA,EAAO4E,MAAMo6G,GAA2Br5L,GAASrN,KAAKskM,eACpEtkM,KAAKgrT,kBAAoBA,CAC5B,CAgIL,OA1HoB0/B,EAAAA,UAAAA,mBAAhB,SAAmC3+I,mGAC3BA,EAAS,MAATA,CAAAA,EAAA,GACIvB,GAAcqF,mBAAmB9D,EAAS/rM,KAAKyjU,eAAen9H,oBAAoB,KAClFtmM,KAAK0nF,OAAOklH,QAAQ,kCACpB5sM,KAAKyjU,eAAep9H,iBAAiB,wBAIrC,gCAAMrmM,KAAKyjU,eAAevJ,cAAc1vH,GAAcE,wBAAwBqB,mBAA9EnmG,EAAAA,OACA5lG,KAAK0nF,OAAOklH,QAAQ,6GAEpB5sM,KAAK0nF,OAAOxkF,MAAM,4GAMlB,6BAFAlD,KAAK0nF,OAAOklH,QAAQ,mEAAoE5sM,KAAKskM,eAE7F,GAAMtkM,KAAKyjU,eAAevjS,gBAE1B,OAFA0lE,EAAAA,OAEA,GAAM5lG,KAAKirT,cAAcgG,+BAAzBrrN,EAAAA,oCAEA5lG,KAAK0nF,OAAOxkF,MAAM,2GAG7B,EAMewnV,EAAAA,UAAAA,sBAAhB,SAAsClwV,2GAclC,GAbAwF,KAAK0nF,OAAOklH,QAAQ,gCACdhB,EAAYpxM,EAAQoxM,WAAa5rM,KAAKzG,OAAOmB,KAAKkxM,UAElD9E,EAAS,GAAMtsM,GAAWA,EAAQssM,QAAW,KAE7C6jJ,EAAgB,SACfnwV,GAAO,CACV8pM,cAAetkM,KAAKskM,cACpBsH,UAAS,EACT9E,OAAM,KAIYi1H,qBAGf,CACH,GAAI4uB,EAAiB5uB,uBAAyB55H,GAAqB+2H,IAAK,CACpE,IAAK1+T,EAAQqnV,OACT,MAAM/uB,GAAyBgvB,2BAEnC,IAAItnV,EAAQyhU,OACR,MAAMnJ,GAAyB83B,0BAEtC,CACD5qV,KAAK0nF,OAAOklH,QAAQ,iCAAiC+9I,EAAiB5uB,qBAAoB,kCAC7F,MAZG4uB,EAAiB5uB,qBAAuB55H,GAAqBywH,OAC7D5yT,KAAK0nF,OAAOklH,QAAQ,kGAcpBpyM,EAAQ0xM,QAAWlE,GAAYjiL,QAAQvrB,EAAQ0xM,QAA/C,OACAtmG,EAAAA,EAAuC,GAAM5lG,KAAKirT,cAAcoB,WAAW7xT,EAAQ0xM,iBAAnFtmG,EAAiBwsN,oBAAsBpsN,EAAAA,wBAG3C,MAAO,CAAP,EAAO2kP,SACV,EASDD,EAAAA,UAAAA,eAAAA,SAAeG,GACX7qV,KAAK0nF,OAAOklH,QAAQ,yBACpB,IAAM4D,EAAcq6I,GAAsB7qV,KAAKzG,OAAOmB,KAAK81M,aAAeu9H,GAAa+c,gBACvF,OAAO/pB,GAAUgqB,eAAev6I,EAAau9H,GAAa+c,gBAC7D,EAQSJ,EAAAA,UAAAA,iCAAV,SAA2C5B,EAAekC,GACtDhrV,KAAK0nF,OAAOklH,QAAQ,2CACpB,IAAMq+I,EAA2C,CAC7C36I,SAAUtwM,KAAKzG,OAAOmB,KAAK41M,SAC3BhM,cAAetkM,KAAKskM,cACpBwkJ,MAAOA,EACPkC,aAAcA,IAAgB,EAC9BnlB,WAAY7lU,KAAKyjU,eAAeynB,qBAAqB,GACrDnC,WAAY/oV,KAAKyjU,eAAeynB,qBAAqB,IAGzD,OAAO,IAAIxC,GAAuBuC,EAAkBjrV,KAAKyjU,eAC5D,EAOeinB,EAAAA,UAAAA,uBAAhB,SAAuCS,4GACnCnrV,KAAK0nF,OAAOklH,QAAQ,iCACdw3I,EAAqC,CACvClF,aAAcl/U,KAAKzG,OAAOmB,KAAKwkV,aAC/B3uI,iBAAkBvwM,KAAKzG,OAAOmB,KAAK61M,iBACnC62I,uBAAwBpnV,KAAKzG,OAAOmB,KAAK0sV,uBACzCb,kBAAmBvmV,KAAKzG,OAAOmB,KAAK6rV,mBAGpC4E,GACAnrV,KAAK0nF,OAAOklH,QAAQ,wDACb,GAAMy7I,GAAiB+C,yBAAyBD,EAAkBnrV,KAAKzG,OAAOkxV,OAAOvZ,cAAelxU,KAAKyjU,eAAgB2gB,KAFhI+G,CAAAA,EAAA,iBAMJ,MAAO,CAAP,EAAOvlP,EAAAA,eAAA,OADP5lG,KAAK0nF,OAAOklH,QAAQ,2DACb,GAAMy7I,GAAiB+C,yBAAyBprV,KAAKzG,OAAOmB,KAAKkxM,UAAW5rM,KAAKzG,OAAOkxV,OAAOvZ,cAAelxU,KAAKyjU,eAAgB2gB,UAC7I,EACL,CAAC,mBCtJD,2DAkQC,CAAD,OAlQwD1zR,GAAAA,EAAAA,GAKpC26R,EAAAA,UAAAA,mCAAhB,SAAmD7wV,uGAEnB,OAD5BwF,KAAK0nF,OAAOklH,QAAQ,wCAAyCpyM,EAAQ8pM,eACzC,GAAMtkM,KAAKirT,cAAc6F,4BAYrD,OAZMw6B,EAAsB1lP,EAAAA,OAEtBqkO,EAAe,SACdzvU,GAAO,CACVg2M,YAAah2M,EAAQg2M,YACrBltM,KAAMm7L,GAAUyB,aAChBslH,aAAc8lC,EAAoB1lC,WAGtCprT,EAAQmrT,cAAgB2lC,EAAoBzlC,UAC5CrrT,EAAQw5U,oBAAsBv1I,GAAUqB,2BAEjC,CAAP,EAAOmqI,SACV,EAMSohB,EAAAA,UAAAA,wBAAV,SAAkC3K,GAC9B1gV,KAAK0nF,OAAOklH,QAAQ,iCAA+C,OAAb8zI,QAAa,IAAbA,OAAa,EAAbA,EAAep8I,eAErE,IAAMinJ,EAAkB,IACpBjnJ,cAAetkM,KAAKskM,eAAiBtkM,KAAKirT,cAAc2F,iBACrD8vB,GAOP,GAAIA,EAEA,GAAKA,EAAcrG,WAWfr6U,KAAK0nF,OAAOklH,QAAQ,yDAVpB,GAAG8zI,EAAc30I,QAAS,CACtB,IAAMsuI,EAAar6U,KAAKwrV,+BAA+B9K,EAAc30I,SACjEsuI,IACAr6U,KAAK0nF,OAAOklH,QAAQ,kFACpB2+I,EAAmBlR,WAAaA,EAEvC,MACGr6U,KAAK0nF,OAAOklH,QAAQ,0GAM5B5sM,KAAK0nF,OAAOklH,QAAQ,qEAwBxB,OAjBK8zI,GAAyD,OAAxCA,EAAcjwI,sBAchCzwM,KAAK0nF,OAAOklH,QAAQ,6EAA8E2+I,EAAmBjnJ,eAbjHo8I,GAAiBA,EAAcjwI,uBAC/BzwM,KAAK0nF,OAAOklH,QAAQ,6DAA8D2+I,EAAmBjnJ,eACrGinJ,EAAmB96I,sBAAwBswH,GAAUgqB,eAAerK,EAAcjwI,sBAAuBs9H,GAAa+c,kBACpE,OAA3C9qV,KAAKzG,OAAOmB,KAAK+1M,sBACxBzwM,KAAK0nF,OAAOklH,QAAQ,uGAAwG2+I,EAAmBjnJ,eACxItkM,KAAKzG,OAAOmB,KAAK+1M,uBACxBzwM,KAAK0nF,OAAOklH,QAAQ,kDAAmD2+I,EAAmBjnJ,eAC1FinJ,EAAmB96I,sBAAwBswH,GAAUgqB,eAAe/qV,KAAKzG,OAAOmB,KAAK+1M,sBAAuBs9H,GAAa+c,mBAEzH9qV,KAAK0nF,OAAOklH,QAAQ,gDAAiD2+I,EAAmBjnJ,eACxFinJ,EAAmB96I,sBAAwBswH,GAAUgqB,eAAehd,GAAa+c,gBAAiB/c,GAAa+c,kBAMhHS,CACV,EAOSF,EAAAA,UAAAA,+BAAV,SAAyCt/I,GACrC,IAAMR,EAA2CQ,EAAQR,cACzD,GAAIA,EAAe,CACf,GAAIA,EAAcs3I,WACd,OAAOt3I,EAAcs3I,WAErB7iV,KAAK0nF,OAAOklH,QAAQ,qIAE3B,MACG5sM,KAAK0nF,OAAOklH,QAAQ,yGAGxB,OAAO,IACV,EAOey+I,EAAAA,UAAAA,qBAAhB,SAAqClZ,EAAgDsW,EAAuBgD,qGAEnF,SAAMzrV,KAAK0rV,uBAAuBvZ,EAAwBsW,EAAcgD,WAC7F,OADME,EAAe/lP,EAAAA,OACd,CAAP,EAAO,IAAIg6O,GAAwB+L,UACtC,EAQeN,EAAAA,UAAAA,uBAAhB,SAAuClZ,EAAgDgZ,EAA2BM,qGAElF,OAD5BzrV,KAAK0nF,OAAOklH,QAAQ,gCAAiC5sM,KAAKskM,eAC9B,GAAMtkM,KAAK4rV,uBAAuBT,EAAkBM,WAEhF,OAFMI,EAAsBjmP,EAAAA,OAErB,CAAP,EAAO,CACH6rO,YAAa,CACTnhI,SAAUtwM,KAAKzG,OAAOmB,KAAK41M,SAC3B1E,UAAWigJ,EACXvZ,mBAAoBtyU,KAAKzG,OAAOmB,KAAK43U,oBAEzCG,cAAe,CACXpH,0BAA2BrrU,KAAKzG,OAAOkxV,OAAOpf,0BAC9CC,sBAAsB,GAE1B9iI,cAAe,CACXK,eAAgB7oM,KAAKzG,OAAOkxV,OAAOjiJ,cAAcK,eACjDC,kBAAmB9oM,KAAKzG,OAAOkxV,OAAOjiJ,cAAcM,kBACpDC,SAAU/oM,KAAKzG,OAAOkxV,OAAOjiJ,cAAcO,SAC3CzE,cAAetkM,KAAKskM,eAExBsuI,gBAAiB5yU,KAAKirT,cACtB0nB,iBAAkB3yU,KAAKkxU,cACvBwB,iBAAkB1yU,KAAKyjU,eACvB0O,uBAAwBA,EACxBF,YAAa,CACTpG,IAAKnlI,GACLr5L,QAASA,GACTy+T,IAAKrtI,GAAUyB,aACf6rI,GAAIttI,GAAUyB,cAElBgyI,UAAWlyU,KAAKzG,OAAO24U,kBAE9B,EAMSmZ,EAAAA,UAAAA,gCAAV,SAA0C/K,EAA+C12I,EAAkCkiJ,GAEvH,GADA9rV,KAAK0nF,OAAOklH,QAAQ,yCAA0Ck/I,IACzDxL,EAAajpU,MACd,MAAM0tS,GAAiBgnC,qCAG3B,IAAMC,EAAmB7oB,GAAqB6G,2BAA2BhqU,KAAKirT,cAAeq1B,EAAajpU,OAC1G,IAAK20U,EACD,MAAMjnC,GAAiBknC,gCAG3B,GAAID,EAAiBpiJ,kBAAoBA,EACrC,MAAMm7G,GAAiBmnC,0CAI3B,OADAlsV,KAAK0nF,OAAOklH,QAAQ,4BAA6Bk/I,GAC1CxL,EAAajpU,KACvB,EAOeg0U,EAAAA,UAAAA,uBAAhB,SAAuCF,EAA2BM,2GAiBvD,OAhBPzrV,KAAK0nF,OAAOklH,QAAQ,gCAAiC5sM,KAAKskM,eACpD6nJ,EAA0BnsV,KAAKgrT,kBAAkBU,iBAAiBzK,GAAkBmrC,gDAAiDpsV,KAAKskM,eAC1I8/I,EAAqC,CACvClF,aAAcl/U,KAAKzG,OAAOmB,KAAKwkV,aAC/B3uI,iBAAkBvwM,KAAKzG,OAAOmB,KAAK61M,iBACnC62I,uBAAwBpnV,KAAKzG,OAAOmB,KAAK0sV,uBACzCb,kBAAmBvmV,KAAKzG,OAAOmB,KAAK6rV,kBACpC/T,2BAA4BxyU,KAAKzG,OAAOmB,KAAK83U,4BAI3C6Z,EAAgBlB,GAAsCnrV,KAAKzG,OAAOmB,KAAKkxM,UAGvE0gJ,EAAiBnI,GAAUoI,kBAAmBF,EAAeZ,GAA4BzrV,KAAKzG,OAAOmB,KAAK63U,mBAChHvyU,KAAK0nF,OAAOklH,QAAQ,0DAA2D5sM,KAAKskM,eAC7E,GAAM+jJ,GAAiB+C,yBAAyBkB,EAAgBtsV,KAAKzG,OAAOkxV,OAAOvZ,cAAelxU,KAAKyjU,eAAgB2gB,GACzHjkV,MAAK,SAAC6N,GAKH,OAJAm+U,EAAwBp/B,eAAe,CACnC/qR,SAAS,IAGNh0B,CACV,IACAwH,OAAM,SAACtS,GAOJ,MANAipV,EAAwBp/B,eAAe,CACnC/oH,UAAW9gM,EAAM8gM,UACjBwoJ,aAActpV,EAAMkhM,SACpBpiK,SAAS,IAGP9+B,CACT,YAhBL,MAAO,CAAP,EAAO0iG,EAAAA,cAiBV,EAOeylP,EAAAA,UAAAA,+BAAhB,SAA+C7wV,EAAwDovM,iHAa5F,OAZP5pM,KAAK0nF,OAAOklH,QAAQ,wCAAyC5sM,KAAKskM,eAC5DkM,EAAcxwM,KAAKysV,eAAejyV,EAAQg2M,aAC1Ck8I,EAAmC,CACrC9iJ,gBAAiBA,GAEfvyL,EAAQqoT,GAAcitB,gBACxB3sV,KAAKirT,cACJzwT,GAAWA,EAAQ6c,OAASonL,GAAUyB,aACvCwsJ,UAIG,GAAM1sV,KAAK4sV,sBAAsBpyV,WAsBxC,OAvBMmwV,EAAgB,2CACf3kP,EAAAA,UAAyC,CAC5CwqG,YAAaA,EACbn5L,MAAOA,EACPg2L,MAAO7yM,EAAQ6yM,OAASrtM,KAAKirT,cAAc2F,gBAC3C6jB,aAAcpzI,GAAawrJ,aAGzB9gJ,EAAUvxM,EAAQuxM,SAAW/rM,KAAKyjU,eAAen9H,sBAEnDtmM,KAAK0nF,OAAOklH,QAAQ,oCAAqC5sM,KAAKskM,eAC9DtkM,KAAK0nF,OAAOolQ,WAAW,sCAAsC/gJ,EAAQ3B,cAAiBpqM,KAAKskM,eAC3FqmJ,EAAiB5+I,QAAUA,GAI3B/D,GAAYjiL,QAAQ4kU,EAAiB9jB,aAAe96H,IAC9CghJ,EAAkB/sV,KAAKyjU,eAAeupB,wBAExCrC,EAAiB9jB,UAAYkmB,GAI9B,CAAP,EAAOpC,SACV,EACL,CAlQA,EAAwDD,KNLxD,SAAYzH,GACRA,EAAAA,0BAAAA,4BACAA,EAAAA,YAAAA,cACAA,EAAAA,WAAAA,aACAA,EAAAA,gBAAAA,kBACAA,EAAAA,iBAAAA,mBACAA,EAAAA,SAAAA,WACAA,EAAAA,oBAAAA,qBAPJ,EAAYA,KAAAA,GAAgB,SAUfgK,GACO,CACZ3pV,KAAM,gBAFD2pV,GAIG,CACR3pV,KAAM,cACNkK,KAAM,sKANDy/U,GAQc,CACnB3pV,KAAM,4CACNkK,KAAM,4FAOV,WAAYw2L,EAAmBxgM,EAAqBiwD,GAApD,MACI8zD,EAAAA,KAAAA,KAAMy8E,EAAWxgM,IAAY,YAE7BO,OAAOysD,eAAeg3D,EAAM0lO,EAAgBluV,WAC5CwoH,EAAKpmH,KAAO,kBACZomH,EAAK/zD,IAAMA,GACd,CAyDL,OAlEqC/C,GAAAA,EAAAA,GAcjCw8R,EAAAA,UAAAA,QAAAA,WACI,SAAIltV,KAAKyzD,MAAOzzD,KAAKyzD,IAAIh4D,QAAWuE,KAAKyzD,IAAIh4D,SAAWwnV,GAAiBkK,kBAAoBntV,KAAKyzD,IAAIh4D,SAAWwnV,GAAiBmK,WAI1HptV,KAAKgkM,YACJipJ,GAAsC3pV,IAKlD,EASM4pV,EAAAA,YAAP,SAAmB5pV,EAAcE,EAAqBiwD,GAClD,GAAIA,GAAOA,EAAIh4D,OACX,OAAQg4D,EAAIh4D,QACR,KAAKwnV,GAAiBoK,oBAClB,OAAO/7B,GAAAA,sCACX,KAAK2xB,GAAiBqK,0BAClB,OAAO,IAAIh8B,GAA6BhuT,EAAME,GAClD,KAAKy/U,GAAiBsK,YAClB,OAAOxoC,GAAiByoC,2BAC5B,KAAKvK,GAAiBwK,WAClB,OAAO1oC,GAAiB8nB,mCAIpC,OAAO,IAAIqgB,EAAgB5pV,EAAME,EAAaiwD,EACjD,EAMMy5R,EAAAA,sBAAP,WACI,OAAO,IAAIA,EAAgBD,GAAkC3pV,KAAM2pV,GAAkCz/U,KACxG,EAMM0/U,EAAAA,iCAAP,WACI,OAAO,IAAIA,EAAgBD,GAA6C3pV,KAAM2pV,GAA6Cz/U,KAC9H,EACL,CAlEA,EAAqC22L,IOPrC,eACI,SAAYupJ,EAAAlc,EAAoCxmB,UAC5CzjM,EAAM,UAAAiqN,EAAcxmB,IAAkB,IACzC,CAkOL,OArOwCt6P,GAAU,KAKjCg9R,EAAY,UAAAC,aAAzB,SAA0BnzV,yGAEL,OADXiiV,EAAerf,GAAUjtN,aACR,GAAAnwG,KAAKkgV,oBAAoB1lV,EAASwF,KAAK4rM,mBAY9D,OAZMrwM,EAAWqqG,EAAuD,QAElEu6O,EAAkB,IAAItE,GACxB77U,KAAKzG,OAAOk4U,YAAYnhI,SACxBtwM,KAAKiwU,aACLjwU,KAAK09T,YACL19T,KAAK0nF,OACL1nF,KAAKzG,OAAO84U,kBACZryU,KAAKzG,OAAO64U,oBAGA+J,sBAAsB5gV,EAAS+gC,MACxC,GAAA6jT,EAAgBC,0BACnB7kV,EAAS+gC,KACTt8B,KAAK4rM,UACL6wI,EACAjiV,OACA6C,OACAA,GACA,EACA7C,EAAQozV,mBAEf,EAMYF,EAA0B,UAAAG,2BAAvC,SAAwCrzV,gFAEpC,IAAKA,EACD,MAAMs4T,GAAyBg7B,+BAInC,IAAKtzV,EAAQuxM,QACT,MAAM5E,GAAgB4mJ,sCAO1B,GAHe/tV,KAAKiwU,aAAa+d,kBAAkBxzV,EAAQuxM,QAAQjgH,YAAa9rF,KAAKzG,OAAOk4U,YAAYnhI,UAIpG,IACI,MAAO,GAAAtwM,KAAKiuV,mCAAmCzzV,GAAS,GAY3D,CAXC,MAAOgO,IAKL,GAJM0lV,EAAoB1lV,cAAa8oT,IAAgC9oT,GAAEw7L,YAAcqtH,GAAuD/tT,KACxI6qV,EAAkC3lV,cAAampT,IAAenpT,GAAEw7L,YAAcV,IAA8B96L,GAAE47L,WAAad,GAG7H4qJ,GAAqBC,EACrB,MAAO,GAAAnuV,KAAKiuV,mCAAmCzzV,GAAS,IAGxD,MAAMgO,EAEb,CAIL,MAAO,GAAAxI,KAAKiuV,mCAAmCzzV,GAAS,SAC3D,EAMakzV,EAAAA,UAAAA,mCAAd,SAAiDlzV,EAAkCmkV,gFAK/E,KAHM/nB,EAAe52T,KAAKiwU,aAAa7U,0BAA0Bp7T,KAAKzG,OAAOk4U,YAAYnhI,SAAU91M,EAAQuxM,QAAS4yI,IAIhH,MAAMrtB,GAAAA,2BAaV,OAVM88B,EAAmB,SAClB5zV,GACH,CAAAo8T,aAAcA,EAAa7vO,OAC3Bg1O,qBAAsBvhU,EAAQuhU,sBAAwB55H,GAAqBywH,OAC3EqW,cAAe,CACXjS,WAAYx8T,EAAQuxM,QAAQ3B,cAC5BnsM,KAAMysT,GAAkBwe,mBAIzB,CAAP,EAAOlpU,KAAK2tV,aAAaS,SAC5B,EAOaV,EAAAA,UAAAA,oBAAd,SAAkClzV,EAAoCoxM,qHAG9C,OADdyiJ,EAAgD,QAAtB,EAAAruV,KAAKgrT,yBAAiBplN,IAAAA,OAAA,EAAAA,EAAE8lN,iBAAiBzK,GAAkBqtC,sCAAuC9zV,EAAQ8pM,eACtH,GAAMtkM,KAAK8gV,uBAAuBtmV,WAgBtD,OAhBMumV,EAAc/6O,EAA0C,OACxDg7O,EAAkBhhV,KAAKihV,2BAA2BzmV,GAClDT,EAAkCiG,KAAK+yU,0BAA0Bv4U,EAAQyuU,eACzE+G,EAAgC,CAClC1/H,SAAUtwM,KAAKzG,OAAOk4U,YAAYnhI,SAClC1E,UAAWA,EAAU6zI,mBACrB34I,OAAQtsM,EAAQssM,OAChBoF,OAAQ1xM,EAAQ0xM,OAChB6vH,qBAAsBvhU,EAAQuhU,qBAC9BnP,sBAAuBpyT,EAAQoyT,sBAC/BE,mBAAoBtyT,EAAQsyT,mBAC5BkkB,UAAWx2U,EAAQw2U,UACnB/U,OAAQzhU,EAAQyhU,QAGdz0H,EAAWu5H,GAAUgf,kBAAkBn0I,EAAUulI,cAAe6P,GAC/D,GAAAhhV,KAAKmzU,2BAA2B3rI,EAAUu5I,EAAahnV,EAASi2U,GAClE7vU,MAAK,SAAC6N,GAIH,OAHuB,OAAvBqgV,QAAuB,IAAvBA,GAAAA,EAAyBthC,eAAe,CACpC/qR,SAAS,IAENh0B,CACV,IACAwH,OAAM,SAACtS,GAIJ,MAHuB,OAAvBmrV,QAAuB,IAAvBA,GAAAA,EAAyBthC,eAAe,CACpC/qR,SAAS,IAEP9+B,CACT,WACR,EAMOwqV,EAA0B,UAAAzM,2BAAlC,SAAmCzmV,GAC/B,IAAM0mV,EAAmB,IAAI5M,GAM7B,OAJI95U,EAAQ2mV,sBACRD,EAAiBhI,wBAAwB1+U,EAAQ2mV,sBAG9CD,EAAiBE,mBAC3B,EAMasM,EAAsB,UAAA5M,uBAApC,SAAqCtmV,4HAC3B8pM,EAAgB9pM,EAAQ8pM,cACxB+pJ,EAAkD,QAAxB,EAAAruV,KAAKgrT,yBAAmBplN,IAAAA,OAAA,EAAAA,EAAAA,iBAAiBq7M,GAAkBstC,oCAAqCjqJ,IAC1H48I,EAAmB,IAAI5M,IAEZU,YAAYh1U,KAAKzG,OAAOk4U,YAAYnhI,UAErD4wI,EAAiBI,UAAU9mV,EAAQssM,QAEnCo6I,EAAiBnI,aAAaz3I,GAAUktJ,qBAExCtN,EAAiBS,gBAEjBT,EAAiB1K,eAAex2U,KAAKzG,OAAO04U,aAC5CiP,EAAiBrK,wBAAwB72U,KAAKzG,OAAO24U,UAAU/wB,aAC/D+/B,EAAiBK,gBAEbvhV,KAAKmyU,wBACL+O,EAAiBpH,mBAAmB95U,KAAKmyU,wBAG7C+O,EAAiB5K,iBAAiBhyI,GAElC48I,EAAiBnJ,gBAAgBv9U,EAAQo8T,cAErC52T,KAAKzG,OAAOy4U,kBAAkB/F,cAC9BiV,EAAiBhJ,gBAAgBl4U,KAAKzG,OAAOy4U,kBAAkB/F,cAG/DjsU,KAAKzG,OAAOy4U,kBAAkB9F,kBACxBA,EAAkBlsU,KAAKzG,OAAOy4U,kBAAkB9F,gBACtDgV,EAAiB9I,mBAAmBlM,EAAgBsV,WACpDN,EAAiB5I,uBAAuBpM,EAAgBuV,gBAGxDjnV,EAAQuhU,uBAAyB55H,GAAqBu4H,IAAG,MAEtC,GADO,IAAIkgB,GAAkB56U,KAAK09T,aACVmd,YAAYrgV,kBAAjDonV,EAAa57O,EAA4C,OAE/Dk7O,EAAiB1H,YAAYoI,EAAW5G,2BACrC,GAAIxgV,EAAQuhU,uBAAyB55H,GAAqB+2H,IAAK,CAClE,IAAI1+T,EAAQqnV,OAMR,MAHuB,OAAvBwM,QAAuB,IAAvBA,GAAAA,EAAyBthC,eAAe,CACpC/qR,SAAS,IAEP8wR,GAAyBgvB,2BAL/BZ,EAAiBtH,UAAUp/U,EAAQqnV,OAO1C,kBAMD,KAJK75I,GAAY+5I,WAAWvnV,EAAQ0xM,SAAWlsM,KAAKzG,OAAOk4U,YAAYa,oBAAsBtyU,KAAKzG,OAAOk4U,YAAYa,mBAAmBj+U,OAAS,IAC7I6sV,EAAiBc,UAAUxnV,EAAQ0xM,OAAQlsM,KAAKzG,OAAOk4U,YAAYa,oBAGnEtyU,KAAKzG,OAAOk5U,cAAcnH,sBAAwB9wU,EAAQyuU,cAC1D,OAAQzuU,EAAQyuU,cAAchrU,MAC1B,KAAKysT,GAAkBwe,gBACnB,IACUx9H,EAAavB,GAAiC3vM,EAAQyuU,cAAcjS,YAC1EkqB,EAAiBlL,UAAUtqI,EAG9B,CAFC,MAAOljM,IACLxI,KAAK0nF,OAAOklH,QAAQ,mDAAqDpkM,GAC5E,CACD,MACJ,KAAKkiT,GAAkB0e,IACnB8X,EAAiBnL,UAAUv7U,EAAQyuU,cAAcjS,YAO7D,OAHuB,OAAvBq3B,QAAuB,IAAvBA,GAAAA,EAAyBthC,eAAe,CACpC/qR,SAAS,IAEN,CAAP,EAAOk/S,EAAiBE,2BAC3B,EACJsM,CArOD,EAAwCnc,ICdxC,eAEI,SAAYkd,EAAAjd,EAAoCxmB,UAC5CzjM,EAAM,UAAAiqN,EAAcxmB,IAAkB,IACzC,CA2FL,OA/FsCt6P,GAAU,KAWtC+9R,EAAY,UAAAd,aAAlB,SAAmBnzV,qGAEJ,gCAAMwF,KAAK0uV,mBAAmBl0V,IAArC,aAAO,CAAP,EAAOorG,EAAAA,eAEP,0BAAiBuhG,IAAmBg/G,EAAEniH,YAAckD,GAA4C5jM,KAE5F,MAAO,CAAP,EAD2B,IAAIoqV,GAAmB1tV,KAAKzG,OAAQyG,KAAKgrT,mBAC1C6iC,2BAA2BrzV,IAErD,MAAM2rT,yBAGjB,EAMKsoC,EAAkB,UAAAC,mBAAxB,SAAyBl0V,mHAErB,IAAKA,EACD,MAAMs4T,GAAyBg7B,+BAGnC,GAAItzV,EAAQwwV,aAIR,MAF2B,QAA3B,EAAAhrV,KAAKmyU,8BAAsBvsO,IAAAA,GAAAA,EAAEykP,gBAAgBlnJ,GAAawrJ,eAC1D3uV,KAAK0nF,OAAOjsD,KAAK,sFACX0rK,GAAgBynJ,6BAI1B,IAAKp0V,EAAQuxM,QACT,MAAM5E,GAAgB4mJ,sCAO1B,GAJMjiQ,EAActxF,EAAQoxM,WAAa5rM,KAAK4rM,UAAUI,sBAElDwqH,EAAcx2T,KAAKiwU,aAAapV,gBAAgBrgU,EAAQuxM,QAAS/rM,KAAKzG,OAAOk4U,YAAYnhI,SAAU91M,EAASsxF,IAEjGunM,YAIb,MAF2B,QAA3B,EAAArzR,KAAKmyU,8BAAsBnsO,IAAAA,GAAAA,EAAEqkP,gBAAgBlnJ,GAAa0rJ,wBAC1D7uV,KAAK0nF,OAAOjsD,KAAK,kGACX0rK,GAAgBynJ,6BACnB,GACHxxB,GAAU0xB,mBAAmBt4B,EAAYnjC,YAAYkqC,WACrDH,GAAU2xB,eAAev4B,EAAYnjC,YAAYgqC,UAAWr9T,KAAKzG,OAAOk5U,cAAcpH,2BAKtF,MAF2B,QAA3B,EAAArrU,KAAKmyU,8BAAsBtsK,IAAAA,GAAAA,EAAEwkL,gBAAgBlnJ,GAAa6rJ,6BAC1DhvV,KAAK0nF,OAAOjsD,KAAK,8FAA8Fz7B,KAAKzG,OAAOk5U,cAAcpH,0BAAyB,aAC5JlkI,GAAgBynJ,6BACnB,GAAIp4B,EAAYnjC,YAAYsqC,WAAaP,GAAU2xB,eAAev4B,EAAYnjC,YAAYsqC,UAAW,GAIxG,MAF2B,QAA3B,EAAA39T,KAAKmyU,8BAAsBz/M,IAAAA,GAAAA,EAAE23N,gBAAgBlnJ,GAAa8rJ,6BAC1DjvV,KAAK0nF,OAAOjsD,KAAK,sGACX0rK,GAAgBynJ,6BAOnB,OAJH5uV,KAAKzG,OAAO44U,wBACZnyU,KAAKzG,OAAO44U,uBAAuB+c,qBAG1B,GAAAlvV,KAAKmvV,8BAA8B34B,EAAah8T,IAA7D,aAAO,CAAP,EAAOm8D,EAAAA,cACV,EAMa83R,EAAAA,UAAAA,8BAAd,SAA4Cj4B,EAA0Bh8T,qGAK3D,OAHHg8T,EAAY7qH,UACZmxI,EAAa,IAAIvnB,GAAUiB,EAAY7qH,QAAQ5kH,OAAQ/mF,KAAKzG,OAAOq5U,kBAE1D,GAAAiJ,GAAA,6BACT77U,KAAK09T,YACL19T,KAAK4rM,UACL4qH,GACA,EACAh8T,EACAsiV,IANJ,aAAO,CAAP,EAAOl3O,EAAAA,cAQV,EACJ6oP,CA/FD,EAAsCld,mBCRtC,2DA6DC,CAAD,OA7DuC7gR,GAAAA,EAAAA,GAK7B0+R,EAAAA,UAAAA,aAAN,SAAmBC,6GAKU,OAJnBhB,EAA0BruV,KAAKgrT,kBAAkBU,iBAAiBzK,GAAkBquC,8BAA+BD,EAAc/qJ,eAEjI6tI,EAAyBnyU,KAAKuvV,iCAAiC3rJ,GAAM4rJ,+BAElD,GAAMxvV,KAAKyvV,uBAAuBtd,EAAwBkd,EAAczjJ,UAAWyjJ,EAAc9c,2BAApHmd,EAAmB9pP,EAAAA,OACzB5lG,KAAK0nF,OAAOklH,QAAQ,+CAGI,gCAAM8iJ,EAAiBhB,mBAAmBW,WAM9D,OANMM,EAAc/pP,EAAAA,OAEpByoP,EAAwBthC,eAAe,CACnC/qR,SAAS,EACT09S,WAAW,IAER,CAAP,EAAOiQ,UAUP,4BARqB5qC,IAAoB6qC,EAAM5rJ,YAAc8gH,GAAoDxhT,MAC7GtD,KAAK0nF,OAAOklH,QAAQ,wHAExByhJ,EAAwBthC,eAAe,CACnC/oH,UAAW4rJ,aAAiBzrJ,IAAayrJ,EAAM5rJ,gBAAa3mM,EAC5DmvV,aAAcoD,aAAiBzrJ,IAAayrJ,EAAMxrJ,eAAY/mM,EAC9D2kC,SAAS,IAEP4tT,yBAEb,EAKDR,EAAAA,UAAAA,OAAAA,WAEI,OAAO51V,QAAQE,OAAOqrT,GAAiB8qC,qCAC1C,EAOeT,EAAAA,UAAAA,uBAAhB,SAAuCjd,EAAgDsW,EAAuBlW,qGAErF,SAAMvyU,KAAK0rV,uBAAuBvZ,EAAwBsW,EAAclW,WAC7F,OADMoZ,EAAe/lP,EAAAA,OACd,CAAP,EAAO,IAAI6oP,GAAiB9C,EAAc3rV,KAAKgrT,0BAClD,EAEKokC,EAAAA,UAAAA,wBAAN,SAA8B50V,EAAwBuxM,qGAG3C,gBADAvxM,IACA,GAAMwF,KAAK4sV,sBAAsBpyV,WAFxC,MAAO,CAAP,6CAEOwrG,EAAAA,UAAyC,CAC5C+lG,QAASA,EACTi/I,aAAcxwV,EAAQwwV,eAAgB,YAE7C,EACL,CA7DA,EAAuCK,mBCoBnC,WAAY9xV,EAA8BkqU,EAAqCxY,EAAwBvjO,EAAgB4xB,EAA4BixO,EAAqCzB,EAAc99B,EAAuC8kC,EAAgCnjJ,EAAmBojJ,EAAwCzrJ,GAAxU,MACI/8E,EAAAA,KAAAA,KAAMhuH,EAAQkqU,EAAgBxY,EAAevjO,EAAQ4xB,EAAcixO,EAAkBv/B,EAAmB8kC,EAAUxrJ,IAAc,YAChI98E,EAAKshO,MAAQA,EACbthO,EAAKmlF,UAAYA,EACjBnlF,EAAKgjO,qBAAuBsF,EAC5BtoO,EAAKwoO,qBAAuBD,EAC5BvoO,EAAKyoO,kBAAoB,IAAIb,GAAkB71V,EAAQiuH,EAAKwoO,qBAAsB/kC,EAAevjO,EAAQ4xB,EAAcixO,EAAkBv/B,EAAmB8kC,EAAUxrJ,IACzK,CAgcL,OA9c6C5zI,GAAAA,EAAAA,GAoBnCw/R,EAAAA,UAAAA,aAAN,SAAmB11V,iHAQO,OAPtBwF,KAAK0nF,OAAOmD,MAAM,kDAGZslQ,EAAsBnwV,KAAKgrT,kBAAkBU,iBAAiBzK,GAAkBmvC,oCAAqC51V,EAAQ8pM,eAC7Hm4I,EAAerf,GAAUjtN,aAGT,GAAMnwG,KAAKqwV,wBAAwB71V,WAAnD81V,EAAgB1qP,EAAAA,wBAIH,gCAAM5lG,KAAKuwV,uBAAuBvwV,KAAK2sM,UAAW2jJ,WAMjE,OANMtiV,EAAS43F,EAAAA,OACfuqP,EAAoBpjC,eAAe,CAC/B/qR,SAAS,EACTwuT,gBAAgB,EAChB9Q,WAAW,IAER,CAAP,EAAO1xU,0BAGPhO,KAAK0nF,OAAOjsD,KAAK,2FASI,OALnBg1T,EAA0C,CAC5C30V,OAAQynM,GAAsBmtJ,SAC9Bl2V,QAAS81V,GAGY,GAAMtwV,KAAKwqV,qBAAqBmG,YAAYF,WAGrE,OAHMl1V,EAAmBqqG,EAAAA,OACnBgrP,EAAoC5wV,KAAK6wV,uBAAuBt1V,GAE/D,CAAP,EAAOyE,KAAK8wV,qBAAqBF,EAAmBN,EAAe7T,GAC9Dt8U,MAAK,SAAC6N,GAKH,OAJAmiV,EAAoBpjC,eAAe,CAC/B/qR,SAAS,EACTwuT,gBAAgB,IAEbxiV,CACV,IACAwH,OAAM,SAACtS,GAOJ,MANAitV,EAAoBpjC,eAAe,CAC/B/qR,SAAS,EACTgiK,UAAW9gM,EAAM8gM,UACjBwoJ,aAActpV,EAAMkhM,SACpBosJ,gBAAgB,IAEdttV,CACT,WACR,EAQOgtV,EAAAA,UAAAA,yBAAR,SAAiC11V,EAA6BsgU,GAC1D,MAAO,CACHlvH,UAAWpxM,EAAQoxM,UACnBtH,cAAetkM,KAAKskM,cACpBwC,OAAQ6sH,GAASyD,WAAW58T,EAAQynD,OAAOkyQ,UAC3CpoH,QAAS+uH,EACTkwB,cAAc,EAErB,EAQekF,EAAAA,UAAAA,uBAAhB,SAAuC1kJ,EAAyBhxM,yGAI5D,KADMggV,EAAgBx6U,KAAKyjU,eAAelI,wCAAwC/vH,IAE9E,MAAMrE,GAAgBgzH,4BAEpBpuH,EAAUyuI,EAAcnkB,kCAKX,6BADTg5B,EAAgBrvV,KAAK+wV,yBAAyBv2V,EAASuxM,GAC9C,GAAM/rM,KAAKiwV,kBAAkBtC,aAAa0B,WACzD,MAAO,CAAP,EADezpP,EAAAA,eAGf,sCAEP,EAMKsqP,EAAAA,UAAAA,qBAAN,SAA2B11V,+GAED,OADtBwF,KAAK0nF,OAAOmD,MAAM,0DACI,GAAM7qF,KAAKqwV,wBAAwB71V,WAAnD81V,EAAgB1qP,EAAAA,OAEhB6qP,EAA0C,CAC5C30V,OAAQynM,GAAsBmtJ,SAC9Bl2V,QAAS81V,oBAIgB,gCAAMtwV,KAAKwqV,qBAAqBmG,YAAYF,kBAA/Dl1V,EAAmBqqG,EAAAA,OACzB5lG,KAAK6wV,uBAAuBt1V,gBAG5B,0BAAiB2xV,IAAmB/iC,EAAE6mC,UAClC,MAAM7mC,qBAWd,OARAnqT,KAAKyjU,eAAea,kBAAkB5gI,GAAmB+lI,eAAgBphU,KAAKI,UAAU6nV,IAAgB,GAElGW,EAAuC,CACzCnI,MAAOllJ,GAAMmB,qBACb7oM,QAAS8D,KAAKzG,OAAOkxV,OAAOyG,0BAC5B9hB,WAAW,GAET5+H,EAAcxwM,KAAKzG,OAAOmB,KAAKg2M,0BAA4B/kM,OAAOC,SAASV,KAAOlL,KAAKysV,eAAejyV,EAAQg2M,aACpH,GAAMxwM,KAAKuqV,iBAAiB4G,iBAAiB3gJ,EAAaygJ,kBAA1DrrP,EAAAA,iBACH,EAKKsqP,EAAAA,UAAAA,sBAAN,uHAEI,GADAlwV,KAAK0nF,OAAOmD,MAAM,4DACb7qF,KAAKyjU,eAAe2tB,yBAAwB,GAE7C,OADApxV,KAAK0nF,OAAOjsD,KAAK,yFACV,CAAP,EAAO,MAIX,KADMgvS,EAAgBzqU,KAAKyjU,eAAe4tB,0BAGtC,OADArxV,KAAK0nF,OAAOklH,QAAQ,0GACb,CAAP,EAAO,MAGX5sM,KAAKyjU,eAAevuQ,WAAWl1D,KAAKyjU,eAAeyC,iBAAiBxiI,GAAmB+lI,iBAEjFgnB,EAA0C,CAC5C30V,OAAQynM,GAAsBmtJ,SAC9Bl2V,QAASiwU,GAGPgS,EAAerf,GAAUjtN,8BAIF,6BADzBnwG,KAAK0nF,OAAOklH,QAAQ,qFACK,GAAM5sM,KAAKwqV,qBAAqBmG,YAAYF,WAIrE,OAJMl1V,EAAmBqqG,EAAAA,OACzB5lG,KAAK6wV,uBAAuBt1V,GACtByS,EAAShO,KAAK8wV,qBAAqBv1V,EAA4BkvU,EAAegS,GACpFz8U,KAAKyjU,eAAeiG,0BAAyB,GACtC,CAAP,EAAO17T,UAGP,iBADAhO,KAAKyjU,eAAeiG,0BAAyB,GACvCrf,yBAEb,EAMD6lC,EAAAA,UAAAA,OAAAA,WAEI,OADAlwV,KAAK0nF,OAAOmD,MAAM,4CACXrxF,QAAQE,OAAO,6BACzB,EAQew2V,EAAAA,UAAAA,qBAAhB,SAAqC30V,EAA0Bf,EAA6BiiV,gJAGxF,GAFAz8U,KAAK0nF,OAAOmD,MAAM,0DAEdtvF,EAASwwM,QAAQnnM,KAAOpK,EAAQmyM,UAEhC,MAAMugJ,GAAgBoE,wBAOR,OAHZxU,EAAa,IAAIvnB,GAAUh6T,EAASshV,UAAYp+I,GAAUyB,aAAclgM,KAAKirT,eAGjE,GAAMjrT,KAAK4rV,uBAAuBpxV,EAAQoxM,0BAAtDA,EAAY5lG,EAAAA,OACZurP,EAA0B3lJ,EAAUI,oBAGpC+kI,EAAwBvmI,GAAcwyI,sBAAsBzhV,EAAS2gV,aAAez9I,GAAUyB,aAAcsJ,GAAcm7I,QAAS3kV,KAAK0nF,OAAQ1nF,KAAKirT,cAAe6xB,GACpKtC,EAAgBhwI,GAAc20I,cAAc5jV,EAAS2gV,YAAanL,EAAuB+L,OAAYz/U,OAAWA,OAAWA,EAAWk0V,EAAyBh2V,EAASwwM,QAAQnnM,IACtL5E,KAAKyjU,eAAe/zH,WAAW8qI,GAGzBqD,EAAiBtiV,EAAS0mD,MAAQ0xQ,GAASyD,WAAW77T,EAAS0mD,OAAS0xQ,GAASyD,WAAW58T,EAAQynD,OAEpGuvS,EAAoBj2V,EAASwwM,QAAQxjI,YAAc,CAAC,EACpDkK,EAAM++Q,EAAiB,KAAW1U,EAAW5wI,OAAOC,KAAO2wI,EAAW5wI,OAAOh2L,KAAOuoL,GAAUyB,aAC9Fw9I,EAAM8T,EAAiB,UAAgB1U,EAAW5wI,OAAOwxI,KAAOj/I,GAAUyB,aAI5EuxJ,EAA0CtvJ,GAAqBywH,OAC3DhtN,EAAQusN,YACPhwH,GAAqBu4H,IAArB,mBAKD,GAHA+2B,EAAoBtvJ,GAAqBu4H,IAGrCn/T,EAASm2V,IAGT,OAFA1xV,KAAK0nF,OAAOmD,MAAM,8DAClB8mQ,EAAsBp2V,EAASm2V,IAC/B,MAgBJ,GAZMpS,EAAuC,IAAI1E,GAAkB56U,KAAKirT,eAClE2mC,EAA6C,CAC/ChlC,sBAAuBpyT,EAAQoyT,sBAC/BE,mBAAoBtyT,EAAQsyT,mBAC5BkkB,UAAWx2U,EAAQw2U,UACnBqK,SAAU7gV,EAAQ6gV,WAOjB7gV,EAAQ6qT,MACT,MAAMl+G,GAAgBo4I,0BAGJ,SAAMD,EAAkBE,aAAajkV,EAASqiV,aAAcpjV,EAAQ6qT,MAAOusC,WACjG,OADAD,EAAsB3rP,EAAAA,OACtB,aAKA2rP,EAAsBp2V,EAASqiV,8BA4DvC,OAxDMiU,EAAO7xV,KAAK8xV,oBAAoBv2V,GAEhCyS,EAA+B,CACjC49L,UAAWA,EAAU6zI,mBACrBrsR,SAAUqf,EACVk4H,SAAU+yI,EACV52I,OAAQ+2I,EAAe1pB,UACvBpoH,QAASyuI,EAAcnkB,iBACvB1qH,QAASpwM,EAASshV,SAClBtxI,cAAeuxI,EAAW5wI,OAC1BmnF,YAAas+D,EACbjS,YAAWmS,GAAO7xV,KAAK+xV,oBAAoBF,GAC3Cx0B,UAAW,IAAIlqU,KAAkD,IAA7CmrE,OAAOm+Q,EAAelhV,EAASwiV,aACnD5rB,UAAWs/B,EACXntJ,cAAetkM,KAAKskM,cACpBjtL,MAAO9b,EAAS8b,MAChBsoU,kBAAkB,GAIhBxiB,EAAgBD,GAAcugB,oBAChC1M,EACAv2U,EAAQoxM,UACRrwM,EAASshV,UAAYp+I,GAAUyB,aAC/B1lM,EAAQ81M,SACRwsI,EAAW5wI,OAAOwxI,KAAOj/I,GAAUyB,cAEvClgM,KAAKgwV,qBAAqBt5B,qBAAqByG,GAGzC2gB,EAAqB2T,IAAsBtvJ,GAAqBu4H,IAChEj8H,GAAUmC,oBAEuB,kBAAxBrlM,EAASwiV,WACVpqV,SAAS4H,EAASwiV,WAAY,IAC9BxiV,EAASwiV,aACd,EACHK,EAAyB3B,EAAeqB,EACxCrD,EAAoBjd,GAAkB+gB,wBACxCxN,EACAv2U,EAAQoxM,UACR+lJ,EACAn3V,EAAQ81M,SACRotI,EACAG,EAAevoB,cACf8oB,EACA,EACAp+U,KAAKirT,eAETjrT,KAAKgwV,qBAAqBt4B,yBAAyB+iB,GAGnDz6U,KAAKyjU,eAAerJ,qBAAqBogB,GAAehlU,OAAM,SAAChN,GAC3Dg/G,EAAK9/B,OAAOxkF,MAAM,uEAAuEsF,EAC5F,IAEM,CAAP,EAAOwF,SACV,EAMOkiV,EAAAA,UAAAA,uBAAR,SAA+B30V,GAC3B,GACIA,EAASiT,eAAe,iBACxBjT,EAASiT,eAAe,aACxBjT,EAASiT,eAAe,gBACxBjT,EAASiT,eAAe,YACxBjT,EAASiT,eAAe,UACxBjT,EAASiT,eAAe,cAExB,OAAOjT,EAEP,MAAM2xV,GAAgBr8B,sBAAsB,wCAEnD,EAOOq/B,EAAAA,UAAAA,oBAAR,SAA4B30V,GACxB,GAAIA,EAASgtE,WAAWypR,KACpB,IACI,OAAO3pV,KAAKC,MAAM/M,EAASgtE,WAAWypR,KAGzC,CAFC,MAAOxpV,IACLxI,KAAK0nF,OAAOxkF,MAAM,iFACrB,CAGL,OAAO,IACV,EAOOgtV,EAAAA,UAAAA,oBAAR,SAA4B2B,GACxB,MAA8B,qBAAnBA,EAAKI,WACZjyV,KAAK0nF,OAAOklH,QAAQ,mIACb,KAGFilJ,EAAKI,SACjB,EAMe/B,EAAAA,UAAAA,wBAAhB,SAAwC11V,mIACpCwF,KAAK0nF,OAAOmD,MAAM,4DAEZ+gH,EAAYpxM,EAAQoxM,WAAa5rM,KAAKzG,OAAOmB,KAAKkxM,WAClD6zI,EAAqB,IAAI1e,GAAUn1H,IACtB04I,gBAGXx9I,EAAmCtsM,EAAO,OAA/B03V,4UAAmB,CAAK13V,EAArC,aACA05T,EAAW,IAAIP,GAAS7sH,GAAU,KAC/BytH,aAAazzH,IAEhBqxJ,EAAY,WAEd,OAAQ3qO,EAAKshO,OACT,KAAKllJ,GAAM+B,UACX,KAAK/B,GAAM4rJ,8BAEP,OADAhoO,EAAK9/B,OAAOmD,MAAM,+DACXm2G,GAAY32K,KAM3B,GAAK7vB,EAAQo5U,OAMb,OAAQp5U,EAAQo5U,QACZ,KAAK5yI,GAAY32K,KACjB,KAAK22K,GAAYG,QACjB,KAAKH,GAAYC,MAEb,OADAz5E,EAAK9/B,OAAOmD,MAAM,kEACXrwF,EAAQo5U,OACnB,QAEI,MADApsN,EAAK9/B,OAAOmD,MAAM,qCAAqCrwF,EAAQo5U,OAAM,uCAC/D7uB,GAAiBqtC,oDAb3B5qO,EAAK9/B,OAAOmD,MAAM,mDAezB,EAEK8/P,EAAgB,SACfuH,GAAmB,CACtBvlJ,UAAW3sM,KAAK2sM,UAChB2D,SAAUtwM,KAAKzG,OAAOmB,KAAK41M,SAC3B1E,UAAW6zI,EAAmBzsB,UAC9B/wQ,MAAOiyQ,EAASoB,cAChB9kH,YAAaxwM,KAAKysV,eAAejyV,EAAQg2M,aACzCojI,OAAQue,IACR7tJ,cAAetkM,KAAKskM,cACpB6tH,UAAW33T,EAAQuhU,qBACnBs2B,qBAAsBloV,SAASiiC,MAC/BkmT,gBAAiB,YACV93V,EAAQkoV,sBACRloV,EAAQ2mV,sBAAoB,CAC/BjP,UAAWvrI,KAEf4rJ,qBAAqB,IAGrB/3V,EAAQuhU,uBAAyB55H,GAAqBu4H,IAAtD,OAGMk3B,EAA6C,CAC/C9kC,mBAAoBtyT,EAAQsyT,mBAC5BF,sBAAuBpyT,EAAQoyT,sBAC/BokB,UAAWx2U,EAAQw2U,UACnBqK,SAAU7gV,EAAQ6gV,UAIH,GADO,IAAIT,GAAkB56U,KAAKirT,eACV4vB,YAAY+W,YAAjDhQ,EAAah8O,EAAAA,OAGnB+kP,EAAiB5P,OAAS6G,EAAW3G,WACrC0P,EAAiBtlC,MAAQu8B,EAAW//B,qBAGxC,MAAO,CAAP,EAAO8oC,SACV,EACL,CA9cA,EAA6CD,kBCIzC,WAAYhjQ,EAAgB8qQ,EAA4BC,GACpDzyV,KAAK0nF,OAASA,EACd1nF,KAAKwyV,mBAAqBA,EAC1BxyV,KAAKyyV,YAAcA,EACnBzyV,KAAK0yV,UAAY,IAAIh/Q,IACrB1zE,KAAK2yV,mBAAqB,IAAIj/Q,IAC9B1zE,KAAK4yV,WAAa,EAClB5yV,KAAK6yV,eAAiB,IAAI9nL,eAC1B/qK,KAAK8yV,eAAiB9yV,KAAK+yV,gBAAgBv0V,KAAKwB,KACnD,CAoNL,OA9MUgzV,EAAAA,UAAAA,YAAN,SAAkB12T,qFAad,OAZAt8B,KAAK0nF,OAAOmD,MAAM,8CACZy0J,EAA8B,CAChCmE,QAAS98C,GACT8rJ,YAAazyV,KAAKyyV,YAClBG,WAAY5yV,KAAK4yV,aACjBt2T,KAAMA,GAGVt8B,KAAK0nF,OAAOmD,MAAM,+DAClB7qF,KAAK0nF,OAAOurQ,SAAS,gEAAgE5qV,KAAKI,UAAU62O,IACpGt/O,KAAK6yV,eAAe5nL,MAAM35J,YAAYguO,GAE/B,CAAP,EAAO,IAAI9lP,SAAQ,SAACC,EAASC,GACzB8tH,EAAKkrO,UAAUp2U,IAAIgjO,EAAIszG,WAAY,CAACn5V,QAAO,EAAEC,OAAM,GACtD,UACJ,EAOYs5V,EAAAA,eAAb,SAA4BtrQ,EAAgB8qQ,uGACxC9qQ,EAAOmD,MAAM,kEAGT,iCADMqoQ,EAAoB,IAAIF,EAAqBtrQ,EAAQ8qQ,EAAoB7rJ,KACvDwsJ,+BACxB,OADAvtP,EAAAA,OACO,CAAP,EAAOstP,UAIP,oBADME,EAAiB,IAAIJ,EAAqBtrQ,EAAQ8qQ,IACnCW,+BACrB,OADAvtP,EAAAA,OACO,CAAP,EAAOwtP,0BAEd,EAKaJ,EAAAA,UAAAA,qBAAd,6FAqBI,OApBAhzV,KAAK0nF,OAAOmD,MAAM,uDAElBl/E,OAAO9N,iBAAiB,UAAWmC,KAAK8yV,gBAAgB,GAElDxzG,EAA8B,CAChCmE,QAAS98C,GACT8rJ,YAAazyV,KAAKyyV,YAClBG,WAAY5yV,KAAK4yV,aAEjBt2T,KAAM,CACFxgC,OAAQynM,GAAsB8vJ,mBAItCrzV,KAAK6yV,eAAe5nL,MAAM75J,UAAY,SAACyN,GACnC2oG,EAAK8rO,iBAAiBz0U,EACzB,EAEDlT,OAAO2F,YAAYguO,EAAK3zO,OAAOu1B,OAAQ,CAAClhC,KAAK6yV,eAAe7nL,QAErD,CAAP,EAAO,IAAIxxK,SAAQ,SAACC,EAASC,GACzB8tH,EAAKmrO,mBAAmBr2U,IAAIgjO,EAAIszG,WAAY,CAACn5V,QAAO,EAAEC,OAAM,IAC5D8tH,EAAK+rO,UAAY5nV,OAAOpP,YAAW,WAK/BoP,OAAOtR,oBAAoB,UAAWmtH,EAAKsrO,gBAAgB,GAC3DtrO,EAAKqrO,eAAe5nL,MAAM78E,QAC1Bo5B,EAAKqrO,eAAe7nL,MAAM58E,QAC1B10F,EAAOqrT,GAAiByuC,qCACxBhsO,EAAKmrO,mBAAmBj6Q,OAAO4mK,EAAIszG,WACtC,GAAEprO,EAAKgrO,mBACX,UACJ,EAMOQ,EAAAA,UAAAA,gBAAR,SAAwBn0U,GAGpB,GAFA7e,KAAK0nF,OAAOmD,MAAM,iDAEdhsE,EAAM7d,SAAW2K,OAArB,CAIA,IAAMnR,EAAUqkB,EAAMhlB,KAEtB,GAAKW,EAAQipP,SAAWjpP,EAAQipP,UAAY98C,MAIxCnsM,EAAQi4V,aAAej4V,EAAQi4V,cAAgBzyV,KAAKyyV,cAIpDj4V,EAAQ8hC,KAAKxgC,SAAWynM,GAAsB8vJ,iBAAkB,CAEhErzV,KAAK0nF,OAAOklH,QAAQpyM,EAAQi4V,YAAc,sBAAsBj4V,EAAQi4V,YAAW,iBAAmB,0BACtGrtU,aAAaplB,KAAKuzV,WAClBvzV,KAAK6yV,eAAe5nL,MAAM78E,QAC1BpuF,KAAK6yV,eAAe7nL,MAAM58E,QAC1BziF,OAAOtR,oBAAoB,UAAW2F,KAAK8yV,gBAAgB,GAC3D,IAAMW,EAAoBzzV,KAAK2yV,mBAAmBp2U,IAAI/hB,EAAQo4V,YAC1Da,GACAA,EAAkB/5V,OAAOqrT,GAAiB2uC,yCAEjD,CAvBA,CAwBJ,EAMOV,EAAAA,UAAAA,iBAAR,SAAyBn0U,GACrB7e,KAAK0nF,OAAOmD,MAAM,mDAClB,IAAMrwF,EAAUqkB,EAAMhlB,KAEhBi3G,EAAW9wG,KAAK0yV,UAAUn2U,IAAI/hB,EAAQo4V,YACtCa,EAAoBzzV,KAAK2yV,mBAAmBp2U,IAAI/hB,EAAQo4V,YAE9D,IACI,IAAM92V,EAAStB,EAAQ8hC,KAAKxgC,OAE5B,GAAIA,IAAWynM,GAAsBowJ,SAAU,CAC3C,IAAK7iP,EACD,OAEJ,IAAMv1G,EAAWf,EAAQ8hC,KAAK/gC,SAG9B,GAFAyE,KAAK0nF,OAAOmD,MAAM,mEAClB7qF,KAAK0nF,OAAOurQ,SAAS,oEAAoE5qV,KAAKI,UAAUlN,IAChF,YAApBA,EAASE,OACTq1G,EAASp3G,OAAOwzV,GAAgB0G,YAAYr4V,EAAS+H,KAAM/H,EAASiI,YAAajI,EAASk4D,UACvF,KAAIl4D,EAASyS,OAOhB,MAAMm2L,GAAU0sH,sBAAsB,kCANlCt1T,EAASyS,OAAT,MAA2BzS,EAASyS,OAAT,YAC3B8iG,EAASp3G,OAAOwzV,GAAgB0G,YAAYr4V,EAASyS,OAAT,KAAyBzS,EAASyS,OAAT,YAAgCzS,EAASyS,OAAT,MAErG8iG,EAASr3G,QAAQ8B,EAASyS,OAIjC,CACDhO,KAAK0yV,UAAUh6Q,OAAOl+E,EAAQo4V,WACjC,MAAM,GAAI92V,IAAWynM,GAAsBswJ,kBAAmB,CAC3D,IAAKJ,EACD,OAEJruU,aAAaplB,KAAKuzV,WAClB5nV,OAAOtR,oBAAoB,UAAW2F,KAAK8yV,gBAAgB,GAC3D9yV,KAAKyyV,YAAcj4V,EAAQi4V,YAC3BzyV,KAAK0nF,OAAOklH,QAAQ,qEAAqE5sM,KAAKyyV,aAE9FgB,EAAkBh6V,UAClBuG,KAAK2yV,mBAAmBj6Q,OAAOl+E,EAAQo4V,WAC1C,CAYJ,CAVC,MAAOh3V,GACLoE,KAAK0nF,OAAOxkF,MAAM,6CAClBlD,KAAK0nF,OAAOosQ,SAAS,8CAA8Cl4V,EAAIoL,YACvEhH,KAAK0nF,OAAOosQ,SAAS,mBAAmBj1U,GAEpCiyF,EACAA,EAASp3G,OAAOkC,GACT63V,GACPA,EAAkB/5V,OAAOkC,EAEhC,CACJ,EASMo3V,EAAAA,kBAAP,SAAyBz5V,EAA8BmuF,EAAgBqsQ,EAAgDh4B,GAEnH,GADAr0O,EAAOmD,MAAM,6BACRtxF,EAAOkxV,OAAO5b,kBAGf,OAFAnnP,EAAOmD,MAAM,yEAEN,EAGX,IAAKkpQ,EAGD,OAFArsQ,EAAOmD,MAAM,kFAEN,EAGX,GAAIkxO,EACA,OAAOA,GACH,KAAK55H,GAAqBywH,OAC1B,KAAKzwH,GAAqBu4H,IAEtB,OADAhzO,EAAOmD,MAAM,yEACN,EACX,QAEI,OADAnD,EAAOmD,MAAM,8EACN,EAInB,OAAO,CACV,EACL,CAAC,kBClOG,WAAYmpQ,EAAyC1J,EAAkCrgB,EAAiDviP,GACpI1nF,KAAKi0V,WAAaD,EAClBh0V,KAAKyjU,eAAiB6mB,EACtBtqV,KAAKiqU,gBAAkBA,EACvBjqU,KAAK0nF,OAASA,CACjB,CAoHL,OA9GUwsQ,EAAAA,UAAAA,2BAAN,SAAiC7wB,EAAsBhsT,EAAeu0L,EAAsBuoJ,kFAGxF,GAFAn0V,KAAK0nF,OAAOklH,QAAQ,gDAEhB5E,GAAYjiL,QAAQs9S,GACpB,MAAMte,GAAiBqvC,qBAAqB/wB,GAMhD,GAFMsG,EAAW3pU,KAAKyjU,eAAeiF,iBAAiBrxT,KAChDgoU,EAAer/U,KAAKyjU,eAAekF,kBAAkBgB,IAEvD,MAAMxiI,GAAgB60I,yBAAyB,gBAInD,IACIqY,EAAmBr0V,KAAKi0V,WAAWK,uBAAuBjxB,EAAcgc,EAQ3E,CAPC,MAAO72U,IACL,MAAIA,cAAampT,IAAenpT,GAAE47L,WAAa0gH,GAA2CxhT,KAEhFyhT,GAAiByoC,2BAEjBhlV,EAEb,CAED,MAAO,CAAP,EAAOxI,KAAKu0V,6BAA6BF,EAAkBh9U,EAAOu0L,EAAWuoJ,SAChF,EAUKD,EAAAA,UAAAA,6BAAN,SAAmCG,EAA4Ch9U,EAAeu0L,EAAsBuoJ,EAA+BK,eAAA,IAAAA,IAAAA,GAAAA,wGAM/I,GALAx0V,KAAK0nF,OAAOmD,MAAM,0DAGZ8+O,EAAW3pU,KAAKyjU,eAAeiF,iBAAiBrxT,KAChDgoU,EAAer/U,KAAKyjU,eAAekF,kBAAkBgB,IAEvD,MAAMxiI,GAAgB60I,yBAAyB,uBAI7CyY,EAAWz0V,KAAKyjU,eAAeuF,iBAAiBqW,GAChDqV,EAAc10V,KAAKyjU,eAAekF,kBAAkB8rB,GAG1Dz0V,KAAKiqU,gBAAgB3mU,KAAO+wV,EAAiB/wV,KAGzC+wV,EAAiBM,yBACjB,GAAM30V,KAAK40V,6BAA6BP,EAAiBM,yBAA0B/oJ,EAAWuoJ,IAD9F,aACAvuP,EAAAA,wBAqBkB,OAjBlB4uP,IACAH,EAAiBhnJ,MAAQqnJ,QAAer3V,GAG5Cg3V,EAAiBh9U,MAAQgoU,EAGrBgV,EAAiBnY,YACjBl8U,KAAKiqU,gBAAgBv+H,WAAa2oJ,EAAiBnY,aAE7C2Y,EAAgB70V,KAAK80V,yBAEvB90V,KAAKiqU,gBAAgBhB,cAAgB4rB,GAKvB,GAAM70V,KAAKi0V,WAAWtG,aAAa3tV,KAAKiqU,gBAAiBoqB,WAE/E,OAFMU,EAAgBnvP,EAAAA,OACtB5lG,KAAKyjU,eAAeuxB,oBAAoB39U,GACjC,CAAP,EAAO09U,SACV,EAQeb,EAAAA,UAAAA,6BAAhB,SAA6Ce,EAA+BrpJ,EAAsBuoJ,uGAE/D,OADzBe,EAA4B,WAAWD,EAAqB,IAAIrpJ,EAAU0gI,OAAM,IACvD,GAAM+b,GAAiB+C,yBAAyB8J,EAA2Bf,EAAen0V,KAAKyjU,eAAgB73H,EAAUlnM,wBAAlJywV,EAAyBvvP,EAAAA,OAC/B5lG,KAAKi0V,WAAW3gB,gBAAgB6hB,aACnC,EAKSjB,EAAAA,UAAAA,oBAAV,WAEI,IAAMW,EAAgB70V,KAAKyjU,eAAekF,kBAAkBjlI,GAAmBylI,gBAAgB,GAC/F,GAAI0rB,EACA,IACI,OAAOxsV,KAAKC,MAAMusV,EAIrB,CAHC,MAAOrsV,IACLxI,KAAKi0V,WAAWvsQ,OAAOxkF,MAAM,wCAC7BlD,KAAKi0V,WAAWvsQ,OAAOosQ,SAAS,yCAAyCe,EAC5E,CAEL,OAAO,IACV,EACL,CAAC,mBC/GG,WAAYt7V,EAA8B+wV,EAAkCr/B,EAAwBvjO,EAAgB4xB,EAA4BixO,EAAqCv/B,EAAuC+kC,EAAwCvF,EAA6ClmJ,GAAjT,MACI/8E,EAAAA,KAAAA,KAAMhuH,EAAQ+wV,EAAar/B,EAAevjO,EAAQ4xB,EAAcixO,EAAkBv/B,EAAmBw/B,EAAsBlmJ,IAAc,YAEzI98E,EAAK4tO,aAAe5tO,EAAK4tO,aAAa52V,KAAKgpH,GAC3CA,EAAK6tO,cAAgBtF,GACxB,CAkfL,OA3fiCr/R,GAAAA,EAAAA,GAe7B4kS,EAAAA,UAAAA,aAAAA,SAAa96V,GACT,IACI,IAAM+6V,EAAYv1V,KAAKw1V,kBAAkBh7V,EAAQssM,QAAUhG,GAAqBtmM,EAAQoxM,WAAa5rM,KAAKzG,OAAOmB,KAAKkxM,WAChH6pJ,EAAwBj7V,EAAQi7V,uBAAyB,CAAC,EAGhE,GAAIz1V,KAAKzG,OAAOkxV,OAAOiL,YAGnB,OAFA11V,KAAK0nF,OAAOklH,QAAQ,4CAEb5sM,KAAK21V,uBAAuBn7V,EAAS+6V,EAAWE,GAGvDz1V,KAAK0nF,OAAOklH,QAAQ,iEACpB,IAAMgpJ,EAAQ51V,KAAK61V,eAAe,cAAeN,EAAWE,GAC5D,OAAOz1V,KAAK21V,uBAAuBn7V,EAAS+6V,EAAWE,EAAuBG,EAIrF,CAFC,MAAOptV,IACL,OAAOhP,QAAQE,OAAO8O,GACzB,CACJ,EAMD8sV,EAAAA,UAAAA,OAAAA,SAAO5U,GACH,IACI1gV,KAAK0nF,OAAOklH,QAAQ,sBACpB,IAAM2+I,EAAqBvrV,KAAK81V,wBAAwBpV,GAElD6U,EAAYv1V,KAAK+1V,wBAAwBxK,GACzC3/I,EAAY80I,GAAiBA,EAAc90I,UAC3CoqJ,EAAwBtV,GAAiBA,EAAcsV,sBACvDP,GAAqC,OAAb/U,QAAa,IAAbA,OAAa,EAAbA,EAAe+U,wBAAyB,CAAC,EAGvE,GAAIz1V,KAAKzG,OAAOkxV,OAAOiL,YAGnB,OAFA11V,KAAK0nF,OAAOklH,QAAQ,2BAEb5sM,KAAKi2V,iBAAiB1K,EAAoBgK,EAAWE,EAAuB7pJ,OAAWvuM,EAAW24V,GAGzGh2V,KAAK0nF,OAAOklH,QAAQ,0CACpB,IAAMgpJ,EAAQ51V,KAAK61V,eAAe,cAAeN,EAAWE,GAC5D,OAAOz1V,KAAKi2V,iBAAiB1K,EAAoBgK,EAAWE,EAAuB7pJ,EAAWgqJ,EAAOI,EAK5G,CAHC,MAAOxtV,IAEL,OAAOhP,QAAQE,OAAO8O,GACzB,CACJ,EAWe8sV,EAAAA,UAAAA,uBAAhB,SAAuC96V,EAAuB+6V,EAAmBE,EAA8CG,0IAGtG,OAFrB51V,KAAK0nF,OAAOklH,QAAQ,iCACdulI,EAAyBnyU,KAAKuvV,iCAAiC3rJ,GAAMkB,mBACtD,GAAM9kM,KAAKk2V,+BAA+B17V,EAASqpM,GAAAA,eAAlEsyJ,EAAevwP,EAAAA,OACrB5lG,KAAKyjU,eAAe2yB,mBAAmBD,EAAa9+U,MAAO8+U,EAAa9oJ,MAAO8oJ,EAAavqJ,UAAWuqJ,EAAatvB,WAAapoI,GAAUyB,aAAci2J,EAAapqJ,SAAW,uBAIrH,gCAAM/rM,KAAKq2V,mCAAmCF,WAG1D,OAHtClsB,EAAkDrkO,EAAAA,OAGZ,GAAM5lG,KAAKs2V,qBAAqBnkB,EAAwBgkB,EAAavqJ,UAAWuqJ,EAAa5jB,2BAWrH,OAXdgkB,EAAsC3wP,EAAAA,OAC5C5lG,KAAK0nF,OAAOklH,QAAQ,4BAEd4jJ,EAAiBwC,GAAqBwD,kBAAkBx2V,KAAKzG,OAAQyG,KAAK0nF,OAAQ1nF,KAAKwqV,qBAAsBhwV,EAAQuhU,sBAEvH06B,OAA+B,EAC/BjG,IACAiG,EAAkCz2V,KAAKgrT,kBAAkBU,iBAAiBzK,GAAkBy1C,+BAAgCl8V,EAAQ8pM,gBAIpH,GAAMiyJ,EAAW1W,eAAcjvR,GAACA,GAAAA,CAAAA,EAC7CulS,GAAY,CACfxT,aAAc6N,aAgBL,OAlBPmG,EAAc/wP,EAAAA,OAMdgxP,EAAqB,IAAI1C,GAAmBqC,EAAYv2V,KAAKyjU,eAAgBwG,EAAiBjqU,KAAK0nF,QAGnGmvQ,EAA+B,CACjCjB,MAAK,EACLL,UAAS,EACTE,sBAAqB,GAEnBqB,EAAsB92V,KAAK+2V,oBAAoBJ,EAAaE,GAClE72V,KAAKs5G,aAAaw2N,UAAUvnI,GAAAA,aAAwB1E,GAAAA,MAAuB,CAACizJ,YAAW,GAAG,MAG7E,GAAM92V,KAAKg3V,oBAAoBF,WAO5C,GAPMxrV,EAAOs6F,EAAAA,OAEP06O,EAAgDvf,GAAUkC,oBAAoB33T,GAC9E2rV,EAAQj3V,KAAKk3V,gCAAgC5W,EAAcz8I,GAAAA,MAAuBsyJ,EAAa7xJ,eAErGyrI,GAAgBonB,eAAen3V,KAAKyjU,eAAgBzjU,KAAKzG,OAAOmB,KAAK41M,SAAU25H,GAE3EqW,EAAa3zI,UAAW,CAUxB,GATA3sM,KAAK0nF,OAAOklH,QAAQ,mDAEhB6pJ,GACAA,EAAgC1pC,eAAe,CAC3C/qR,SAAS,EACTwuT,gBAAgB,KAInBxwV,KAAKwqV,qBACN,MAAMzlC,GAAiBqyC,4CAI3B,OAFMC,EAA0B,IAAInH,GAAwBlwV,KAAKzG,OAAQyG,KAAKyjU,eAAgBzjU,KAAKirT,cAAejrT,KAAK0nF,OAAQ1nF,KAAKs5G,aAAct5G,KAAKuqV,iBAAkB3mJ,GAAMkB,kBAAmB9kM,KAAKgrT,kBAAmBhrT,KAAKwqV,qBAAsBlK,EAAa3zI,UAAW3sM,KAAKq1V,cAAec,EAAa7xJ,eACtS+7H,EAAqBX,GAAc0D,kBAAkBpjU,KAAKirT,cAAegsC,GAAM52B,iBAChF,CAAP,EAAOg3B,EAAwB1J,aAAY/8R,GAACA,GAAAA,CAAAA,EACrCulS,GAAY,CACf9+U,MAAOgpT,EACPuT,YAAQv2U,KACT0xM,SAAQ,WACPvnF,EAAKi8M,eAAeuxB,oBAAoBiC,EAC3C,IACJ,CAGc,SAAML,EAAmBU,2BAA2BhsV,EAAM2rV,EAAOV,EAAW3qJ,UAAW5rM,KAAKkxU,uBAE3G,MAAO,CAAP,EAFetrO,EAAAA,eAef,iBAXIgwP,GAEAA,EAAMxnQ,QAGN+3N,aAAahiH,IACZgiH,EAAgB9hH,iBAAiBrkM,KAAKskM,eAG3C6tI,EAAuBsX,mBAAmBtjC,GAC1CnmT,KAAKyjU,eAAeuxB,oBAAoBmB,EAAa9+U,OAC/C8uS,yBAEb,EAWemvC,EAAAA,UAAAA,iBAAhB,SAAiCa,EAAuCZ,EAAmBE,EAA8CtK,EAA2ByK,EAAqBI,iHACrLh2V,KAAK0nF,OAAOklH,QAAQ,2BACpB5sM,KAAKs5G,aAAaw2N,UAAUvnI,GAAAA,aAAwB1E,GAAAA,MAAuBsyJ,GAErEhkB,EAAyBnyU,KAAKuvV,iCAAiC3rJ,GAAM8B,8BAIvE,gCAAM1lM,KAAKu3V,mBAAmBpB,EAAapqJ,iBAGxB,OAHnBnmG,EAAAA,OAGmB,GAAM5lG,KAAKs2V,qBAAqBnkB,EAAwBgZ,WAY3E,OAZMoL,EAAa3wP,EAAAA,OACnB5lG,KAAK0nF,OAAOklH,QAAQ,4BAGd4qJ,EAAoBjB,EAAW9V,aAAa0V,GAElDn2V,KAAKs5G,aAAaw2N,UAAUvnI,GAAAA,eAA0B1E,GAAAA,MAAuBsyJ,GAGvEW,EAAc92V,KAAKy3V,UAAUD,EAAW,CAACjC,UAAS,EAAEE,sBAAqB,EAAEG,MAAK,IACtF51V,KAAKs5G,aAAaw2N,UAAUvnI,GAAAA,aAAwB1E,GAAAA,MAAuB,CAACizJ,YAAW,GAAG,MAE1F,GAAM92V,KAAK03V,mBAAmBZ,kBAA9BlxP,EAAAA,OAEIowP,GACM/E,EAAuC,CACzCnI,MAAOllJ,GAAM8B,YACbxpM,QAAS8D,KAAKzG,OAAOkxV,OAAOyG,0BAC5B9hB,WAAW,GAET3xG,EAAcsjG,GAAUgqB,eAAeiL,EAAuBjoB,GAAa+c,iBAEjF9qV,KAAK0nF,OAAOklH,QAAQ,2DACpB5sM,KAAK0nF,OAAOolQ,WAAW,+BAA+BrvH,GACtDz9N,KAAKuqV,iBAAiBoN,iBAAiBl6H,EAAawzH,IAEpDjxV,KAAK0nF,OAAOklH,QAAQ,oDAgBxB,iBAbIgpJ,GAEAA,EAAMxnQ,QAGN87N,aAAa/lH,IACZ+lH,EAAgB7lH,iBAAiBrkM,KAAKskM,eAG3CtkM,KAAKyjU,eAAeiG,0BAAyB,GAC7C1pU,KAAKs5G,aAAaw2N,UAAUvnI,GAAAA,eAA0B1E,GAAAA,MAAuB,KAAMqmH,GACnFlqT,KAAKs5G,aAAaw2N,UAAUvnI,GAAAA,WAAsB1E,GAAAA,OAClDsuI,EAAuBsX,mBAAmBv/B,GACpCA,gBAGVlqT,KAAKs5G,aAAaw2N,UAAUvnI,GAAAA,WAAsB1E,GAAAA,iBACrD,EAMDyxJ,EAAAA,UAAAA,oBAAAA,SAAoB92T,EAAoBxiC,GAEpC,GAAKgsM,GAAYjiL,QAAQyY,GAOrB,MADAx+B,KAAK0nF,OAAOxkF,MAAM,yBACZ6hT,GAAiB6yC,gCAJvB,OAFA53V,KAAK0nF,OAAOkiP,QAAQ,gBAAgBprS,GAE7Bx+B,KAAKy3V,UAAUj5T,EAAYxiC,EAMzC,EAODs5V,EAAAA,UAAAA,oBAAAA,SAAoBwB,GAApB,WACI,OAAO,IAAIt9V,SAAQ,SAACC,EAASC,GAKzB,IAAMm+V,EAAWrwO,EAAKjuH,OAAOkxV,OAAOqN,kBAAoBpxJ,GACpDqxJ,EAAQ,EAEZvwO,EAAK9/B,OAAOklH,QAAQ,sDAEpB,IAAMorJ,EAAarnR,aAAY,WAE3B,GAAImmR,EAAYmB,OAKZ,OAJAzwO,EAAK9/B,OAAOxkF,MAAM,oDAClBskH,EAAK0wO,aACL9nR,cAAc4nR,QACdt+V,EAAOqrT,GAAiByoC,4BAI5B,IAAItiV,EAAeuzL,GAAUyB,aACzB50L,EAAemzL,GAAUyB,aAC7B,IAMIh1L,EAAO4rV,EAAYlrV,SAASV,KAC5BI,EAAOwrV,EAAYlrV,SAASN,IAClB,CAAZ,MAAO9C,IAAK,CAGVw/L,GAAYjiL,QAAQ7a,IAAkB,gBAATA,IAIjCs8G,EAAK9/B,OAAOklH,QAAQ,+EAMpBmrJ,IAEIzsV,GACAk8G,EAAK9/B,OAAOklH,QAAQ,wDACpBx8H,cAAc4nR,GACdxwO,EAAK0wO,WAAWpB,GAEZ/1B,GAAUoN,4BAA4B7iU,IACtCk8G,EAAK9/B,OAAOklH,QAAQ,iFACpBnzM,EAAQ6R,KAERk8G,EAAK9/B,OAAOxkF,MAAM,+JAClBskH,EAAK9/B,OAAOosQ,SAAS,kDAAkDxoV,GACvE5R,EAAOqrT,GAAiBozC,kDAErBJ,EAAQF,IACfrwO,EAAK9/B,OAAOxkF,MAAM,6EAClBktE,cAAc4nR,GACdt+V,EAAOqrT,GAAiBqzC,mCAE/B,GAAE1xJ,GACN,GACJ,EAOD4uJ,EAAAA,UAAAA,mBAAAA,SAAmBwB,GAAnB,WACI,OAAO,IAAIt9V,SAAQ,SAACC,GAChB+tH,EAAK9/B,OAAOklH,QAAQ,qDAEpB,IAAMorJ,EAAarnR,aAAY,WAEvBmmR,EAAYmB,SACZzwO,EAAK9/B,OAAOxkF,MAAM,mDAClBskH,EAAK0wO,aACL9nR,cAAc4nR,GACdv+V,KAGJ,IAAIyR,EAAeuzL,GAAUyB,aAC7B,IAMIh1L,EAAO4rV,EAAYlrV,SAASV,IAClB,CAAZ,MAAO1C,IAAK,CAGVw/L,GAAYjiL,QAAQ7a,IAAkB,gBAATA,IAIjCs8G,EAAK9/B,OAAOklH,QAAQ,wFAEpBx8H,cAAc4nR,GACdxwO,EAAK0wO,WAAWpB,GAChBr9V,IACH,GAAEitM,GACN,GACJ,EAeD4uJ,EAAAA,UAAAA,UAAAA,SAAU+C,EAAqBC,GAC3B,IACI,IAAIxB,OAAW,EAaf,GAXIwB,EAAY1C,OACZkB,EAAcwB,EAAY1C,MAC1B51V,KAAK0nF,OAAOolQ,WAAW,+BAA+BuL,GACtDvB,EAAYlrV,SAASrH,OAAO8zV,IACQ,qBAAtBC,EAAY1C,QAE1B51V,KAAK0nF,OAAOolQ,WAAW,4BAA4BuL,GACnDvB,EAAc92V,KAAK61V,eAAewC,EAAaC,EAAY/C,UAAW+C,EAAY7C,yBAIjFqB,EACD,MAAM/xC,GAAiBwzC,gCAQ3B,OANIzB,EAAYxjO,OACZwjO,EAAYxjO,QAEhBtzH,KAAKw4V,cAAgB1B,EACrBnrV,OAAO9N,iBAAiB,eAAgBmC,KAAKo1V,cAEtC0B,CAKV,CAJC,MAAOtuV,IAGL,MAFAxI,KAAK0nF,OAAOxkF,MAAM,uBAA0BsF,GAAgB/H,SAC5DT,KAAKyjU,eAAeiG,0BAAyB,GACvC3kB,GAAiB0zC,uBAAwBjwV,GAAgBxB,WAClE,CACJ,EASDsuV,EAAAA,UAAAA,eAAAA,SAAe+C,EAAqB9C,EAAmBE,eAK7CiD,EAAU/sV,OAAOgtV,WAAahtV,OAAOgtV,WAAahtV,OAAO6kI,QACzDooN,EAASjtV,OAAOktV,UAAYltV,OAAOktV,UAAYltV,OAAO8kI,QAKtDqoN,EAAWntV,OAAO+9C,YAAcv/C,SAASo4C,gBAAgB87G,aAAel0J,SAASmyB,KAAK+hI,YACtF06L,EAAYptV,OAAOsyJ,aAAe9zJ,SAASo4C,gBAAgB27G,cAAgB/zJ,SAASmyB,KAAK4hI,aAE3F1jJ,EAAuC,QAAlC,EAAGi7U,EAAsBuD,iBAASpzP,IAAAA,OAAA,EAAAA,EAAEprF,MACzCE,EAAwC,QAAlC,EAAG+6U,EAAsBuD,iBAAShzP,IAAAA,OAAA,EAAAA,EAAEtrF,OAC1CJ,EAAyC,QAAtC,EAAGm7U,EAAsBwD,qBAAapzL,IAAAA,OAAA,EAAAA,EAAEvrJ,IAC3CD,EAA0C,QAAtC,EAAGo7U,EAAsBwD,qBAAavmO,IAAAA,OAAA,EAAAA,EAAEr4G,KAsBhD,QApBKG,GAASA,EAAQ,GAAKA,EAAQs+U,KAC/B94V,KAAK0nF,OAAOklH,QAAQ,4EACpBpyL,EAAQksL,MAGPhsL,GAAUA,EAAS,GAAKA,EAASq+U,KAClC/4V,KAAK0nF,OAAOklH,QAAQ,8EACpBlyL,EAASgsL,MAGRpsL,GAAOA,EAAM,GAAKA,EAAMy+U,KACzB/4V,KAAK0nF,OAAOklH,QAAQ,iFACpBtyL,EAAM7T,KAAKwyB,IAAI,EAAK8/T,EAAY,EAAMryJ,GAAgC,EAAMkyJ,MAG3Ev+U,GAAQA,EAAO,GAAKA,EAAOy+U,KAC5B94V,KAAK0nF,OAAOklH,QAAQ,mFACpBvyL,EAAO5T,KAAKwyB,IAAI,EAAK6/T,EAAW,EAAMpyJ,GAA+B,EAAMgyJ,IAGxE/sV,OAAO9P,KAAKw8V,EAAa9C,EAAW,SAAS/6U,EAAK,YAAYE,EAAM,SAASJ,EAAG,UAAUD,EAAI,mBACxG,EAKDi7U,EAAAA,UAAAA,aAAAA,SAAa9sV,GACTxI,KAAKyjU,eAAey1B,8BAA8Br1J,GAAAA,OAC9C7jM,KAAKw4V,eACLx4V,KAAKw4V,cAAcpqQ,QAGvB5lF,EAAE8qC,gBACL,EAMDgiT,EAAAA,UAAAA,WAAAA,SAAWwB,GACHA,GAEAA,EAAY1oQ,QAGhBziF,OAAOtR,oBAAoB,eAAgB2F,KAAKo1V,cAGhDp1V,KAAKyjU,eAAeiG,0BAAyB,EAChD,EAOD4rB,EAAAA,UAAAA,kBAAAA,SAAkBxuJ,EAAuB8E,GACrC,OAAUlF,GAAkC,IAAI1mM,KAAKzG,OAAOmB,KAAK41M,SAAQ,IAAIxJ,EAAOt9L,KAAK,KAAI,IAAIoiM,EAAS,IAAI5rM,KAAKskM,aACtH,EAODgxJ,EAAAA,UAAAA,wBAAAA,SAAwB96V,GACpB,IAAM4vM,EAAgB5vM,EAAQuxM,SAAWvxM,EAAQuxM,QAAQ3B,cACzD,OAAU1D,GAAkC,IAAI1mM,KAAKzG,OAAOmB,KAAK41M,SAAQ,IAAIlG,EAAa,IAAIpqM,KAAKskM,aACtG,EACL,CA3fA,EAAiC+mJ,mBCL7B,WAAY2I,EAAyC1J,EAAkCrgB,EAAiDviP,EAAgBujO,GAAxJ,MACI1jM,EAAAA,KAAAA,KAAMysO,EAAgB1J,EAAargB,EAAiBviP,IAAO,YAC3D8/B,EAAKyjM,cAAgBA,GACxB,CAsHL,OA7HqCv6P,GAAAA,EAAAA,GAa3ByoS,EAAAA,UAAAA,oBAAN,SAA0B36T,EAAoBxiC,4GAC1CgE,KAAK0nF,OAAOklH,QAAQ,8CAEf5E,GAAYjiL,QAAQyY,GAArB,OAEIxiC,EAAOo9V,oBACPp5V,KAAK0nF,OAAOklH,QAAQ,kFACpB5sM,KAAKyjU,eAAea,kBAAkB5gI,GAAmB4lI,WAAYttU,EAAOo9V,mBAAmB,IAInGp5V,KAAKyjU,eAAea,kBAAkB5gI,GAAmB8lI,eAAgBxpU,KAAKiqU,gBAAgB3lI,eAAe,GAC7GtkM,KAAKyjU,eAAe41B,iBAAiBr5V,KAAKiqU,gBAAiBjqU,KAAKirT,eAChEjrT,KAAK0nF,OAAOkiP,QAAQ,qDAAqDprS,GACnEyyT,EAAuC,CACzCnI,MAAOllJ,GAAMmB,qBACb7oM,QAASF,EAAOs9V,gBAChBlqB,WAAW,GAI0B,oBAA9BpzU,EAAOu9V,mBAAd,OACAv5V,KAAK0nF,OAAOklH,QAAQ,8EAIH,IAHA5wM,EAAOu9V,mBAAmB/6T,GAGvC,OACAx+B,KAAK0nF,OAAOklH,QAAQ,4FACpB,GAAM5wM,EAAOuuV,iBAAiB4G,iBAAiB3yT,EAAYyyT,qBAU/D,OADArrP,EAAAA,OACA,WANI,OADA5lG,KAAK0nF,OAAOklH,QAAQ,+FACpB,8BAKJ,OADA5sM,KAAK0nF,OAAOklH,QAAQ,0EACpB,GAAM5wM,EAAOuuV,iBAAiB4G,iBAAiB3yT,EAAYyyT,8BAM/D,MADAjxV,KAAK0nF,OAAOjsD,KAAK,8DACXspR,GAAiB6yC,uDAE9B,EAMKuB,EAAAA,UAAAA,2BAAN,SAAiC91B,EAAsBhsT,EAAeu0L,EAAsBuoJ,iHAIxF,GAHAn0V,KAAK0nF,OAAOklH,QAAQ,6CAGhB5E,GAAYjiL,QAAQs9S,GACpB,MAAMte,GAAiBqvC,qBAAqB/wB,GAShD,GALArjU,KAAKyjU,eAAeiG,0BAAyB,GAGvCC,EAAW3pU,KAAKyjU,eAAeiF,iBAAiBrxT,KAChDgoU,EAAer/U,KAAKyjU,eAAekF,kBAAkBgB,IAEvD,MAAMxiI,GAAgB60I,yBAAyB,gBAInD,IACIqY,EAAmBr0V,KAAKi0V,WAAWK,uBAAuBjxB,EAAcgc,EAQ3E,CAPC,MAAO72U,IACL,MAAIA,cAAampT,IAAenpT,GAAE47L,WAAa0gH,GAA2CxhT,KAEhFyhT,GAAiByoC,2BAEjBhlV,EAEb,QAGKisV,EAAWz0V,KAAKyjU,eAAeuF,iBAAiBqW,GAChDqV,EAAc10V,KAAKyjU,eAAekF,kBAAkB8rB,GAG1Dz0V,KAAKiqU,gBAAgB3mU,KAAO+wV,EAAiB/wV,KAGzC+wV,EAAiBM,yBACjB,GAAM30V,KAAK40V,6BAA6BP,EAAiBM,yBAA0B/oJ,EAAWuoJ,IAD9F,aACAvuP,EAAAA,wBAiBkB,OAdtByuP,EAAiBhnJ,MAAQqnJ,QAAer3V,EACxCg3V,EAAiBh9U,MAAQgoU,EAGrBgV,EAAiBnY,YACjBl8U,KAAKiqU,gBAAgBv+H,WAAa2oJ,EAAiBnY,aAE7C2Y,EAAgB70V,KAAK80V,yBAEvB90V,KAAKiqU,gBAAgBhB,cAAgB4rB,GAKvB,GAAM70V,KAAKi0V,WAAWtG,aAAa3tV,KAAKiqU,gBAAiBoqB,WAG/E,OAHMU,EAAgBnvP,EAAAA,OAEtB5lG,KAAKyjU,eAAeuxB,oBAAoB39U,GACjC,CAAP,EAAO09U,SACV,EACL,CA7HA,EAAqCb,mBCKjC,WAAY36V,EAA8B+wV,EAAkCr/B,EAAwBvjO,EAAgB4xB,EAA4BixO,EAAqCv/B,EAAuC+kC,EAAwCvF,EAA6ClmJ,GAAjT,MACI/8E,EAAAA,KAAAA,KAAMhuH,EAAQ+wV,EAAar/B,EAAevjO,EAAQ4xB,EAAcixO,EAAkBv/B,EAAmBw/B,EAAsBlmJ,IAAc,YACzI98E,EAAK6tO,cAAgBtF,GACxB,CAySL,OA/SoCr/R,GAAAA,EAAAA,GAY1B8oS,EAAAA,UAAAA,aAAN,SAAmBh/V,4HACM,SAAMwF,KAAKk2V,+BAA+B17V,EAASqpM,GAAAA,kBAAlEsyJ,EAAevwP,EAAAA,OACrB5lG,KAAKyjU,eAAe2yB,mBAAmBD,EAAa9+U,MAAO8+U,EAAa9oJ,MAAO8oJ,EAAavqJ,UAAWuqJ,EAAatvB,WAAapoI,GAAUyB,aAAci2J,EAAapqJ,SAAW,MAC3KomI,EAAyBnyU,KAAKuvV,iCAAiC3rJ,GAAMmB,sBAErE00J,EAAmB,SAAC56U,GAElBA,EAAM66U,YACNlyO,EAAK9/B,OAAOklH,QAAQ,wEACpBplF,EAAKi8M,eAAeuxB,oBAAoBmB,EAAa9+U,OAE5D,mBAI2D,gCAAMrX,KAAKq2V,mCAAmCF,WAG1D,OAHtClsB,EAAkDrkO,EAAAA,OAGZ,GAAM5lG,KAAKs2V,qBAAqBnkB,EAAwBgkB,EAAavqJ,UAAWuqJ,EAAa5jB,2BAOrH,OAPdgkB,EAAsC3wP,EAAAA,OAC5C5lG,KAAK0nF,OAAOklH,QAAQ,4BAGdgqJ,EAAqB,IAAIuC,GAAgB5C,EAAYv2V,KAAKyjU,eAAgBwG,EAAiBjqU,KAAK0nF,OAAQ1nF,KAAKirT,eAG/F,GAAMsrC,EAAW1W,eAAcjvR,GAACA,GAAAA,CAAAA,EAC7CulS,GAAY,CACfxT,aAAcqQ,GAAqBwD,kBAAkBx2V,KAAKzG,OAAQyG,KAAK0nF,OAAQ1nF,KAAKwqV,qBAAsBhwV,EAAQuhU,iCAU/G,OAZD46B,EAAc/wP,EAAAA,OAKdwzP,EAAoBp5V,KAAK25V,qBAAqBn/V,EAAQ4+V,mBAC5Dp5V,KAAK0nF,OAAOolQ,WAAW,wBAAwBsM,GAG/CztV,OAAO9N,iBAAiB,WAAY47V,GAG7B,GAAM7C,EAAmBG,oBAAoBJ,EAAa,CAC7DpM,iBAAkBvqV,KAAKuqV,iBACvB+O,gBAAiBt5V,KAAKzG,OAAOkxV,OAAOyG,0BACpCkI,kBAAmBA,EACnBG,mBAAoB/+V,EAAQ++V,6BAJhC,MAAO,CAAP,EAAO3zP,EAAAA,eAaP,4BANiBu+F,IACbgiH,EAAE9hH,iBAAiBrkM,KAAKskM,eAE5B34L,OAAOtR,oBAAoB,WAAYo/V,GACvCtnB,EAAuBsX,mBAAmBtjC,GAC1CnmT,KAAKyjU,eAAeuxB,oBAAoBmB,EAAa9+U,OAC/C8uS,yBAEb,EAQKqzC,EAAAA,UAAAA,sBAAN,SAA4BluV,2HAClB6mU,EAAyBnyU,KAAKuvV,iCAAiC3rJ,GAAM0B,wCAEvE,4BAAKtlM,KAAKyjU,eAAe2tB,yBAAwB,GAE7C,OADApxV,KAAK0nF,OAAOjsD,KAAK,yFACV,CAAP,EAAO,MAIX,KADMm+T,EAAe55V,KAAK65V,wBAAwBvuV,GAAQK,OAAOC,SAASN,OAKtE,OAFAtL,KAAK0nF,OAAOjsD,KAAK,6GACjBz7B,KAAKyjU,eAAey1B,8BAA8Br1J,GAAAA,UAC3C,CAAP,EAAO,MAGPxsL,OAAK,EACT,IAEUipU,EAAgDvf,GAAUkC,oBAAoB22B,GACpFviV,EAAQrX,KAAKk3V,gCAAgC5W,EAAcz8I,GAAAA,UAC3D7jM,KAAK0nF,OAAOklH,QAAQ,4BAKvB,CAJC,MAAOpkM,IAGL,OAFAxI,KAAK0nF,OAAOjsD,KAAK,6DAA6DjzB,IAC9ExI,KAAKyjU,eAAey1B,8BAA8Br1J,GAAAA,UAC3C,CAAP,EAAO,KACV,QAGKi2J,EAAkB95V,KAAKyjU,eAAekF,kBAAkBjlI,GAAmB4lI,YAAY,IAAS7qI,GAAUyB,aAC1G65J,EAA4Bh5B,GAAUi5B,kBAAkBF,GACxDG,EAAuBl5B,GAAUi5B,kBAAkBruV,OAAOC,SAASV,MAErE6uV,IAA8BE,GAAwBj6V,KAAKzG,OAAOmB,KAAKg2M,2BAEvE1wM,KAAK0nF,OAAOklH,QAAQ,kDACK,GAAM5sM,KAAKk6V,WAAWN,EAAcviV,EAAO86T,KAHpE,aAUA,OAPMgoB,EAAmBv0P,EAAAA,OAErBk0P,EAAgBx9V,QAAQ,MAAQ,GAEhCyxU,GAAaqsB,YAAYN,GAGtB,CAAP,EAAOK,iBACCn6V,KAAKzG,OAAOmB,KAAKg2M,0BAAlB,OACP1wM,KAAK0nF,OAAOklH,QAAQ,yDACb,CAAP,EAAO5sM,KAAKk6V,WAAWN,EAAcviV,EAAO86T,mBACpCpE,GAAaK,eAAgBpuU,KAAKzG,OAAOkxV,OAAOnc,sBAAjD,OAKPtuU,KAAKyjU,eAAea,kBAAkB5gI,GAAmB6lI,SAAUqwB,GAAc,GAC3E3I,EAAuC,CACzCnI,MAAOllJ,GAAM0B,sBACbppM,QAAS8D,KAAKzG,OAAOkxV,OAAOyG,0BAC5B9hB,WAAW,GAOXirB,GAAiC,EAChCP,GAAuC,SAApBA,EAApB,OAEMQ,EAAWvsB,GAAawsB,cAE9Bv6V,KAAKyjU,eAAea,kBAAkB5gI,GAAmB4lI,WAAYgxB,GAAU,GAC/Et6V,KAAK0nF,OAAOk9E,QAAQ,8EACI,GAAM5kK,KAAKuqV,iBAAiBoN,iBAAiB2C,EAAUrJ,oBAA/EoJ,EAAwBz0P,EAAAA,oBAIA,OADxB5lG,KAAK0nF,OAAOklH,QAAQ,kCAAkCktJ,GAC9B,GAAM95V,KAAKuqV,iBAAiBoN,iBAAiBmC,EAAiB7I,WAAtFoJ,EAAwBz0P,EAAAA,wBAI5B,IAAKy0P,EACD,MAAO,CAAP,EAAOr6V,KAAKk6V,WAAWN,EAAcviV,EAAO86T,qBAIpD,MAAO,CAAP,EAAO,cAOP,4BALiBhuI,IACZ+lH,EAAgB7lH,iBAAiBrkM,KAAKskM,eAE3C6tI,EAAuBsX,mBAAmBv/B,GAC1ClqT,KAAKyjU,eAAey1B,8BAA8Br1J,GAAAA,UAC5CqmH,0BAEb,EAOSsvC,EAAAA,UAAAA,wBAAV,SAAkCluV,GAK9B,GAJAtL,KAAK0nF,OAAOklH,QAAQ,kCAEYm0H,GAAUoN,4BAA4B7iU,GAKlE,OAFAyiU,GAAaysB,UAAU7uV,QACvB3L,KAAK0nF,OAAOklH,QAAQ,2DACbthM,EAGX,IAAMmvV,EAAaz6V,KAAKyjU,eAAekF,kBAAkBjlI,GAAmB6lI,UAAU,GAItF,OAHAvpU,KAAKyjU,eAAevuQ,WAAWl1D,KAAKyjU,eAAeyC,iBAAiBxiI,GAAmB6lI,WAEvFvpU,KAAK0nF,OAAOklH,QAAQ,iEACb6tJ,CACV,EAOejB,EAAAA,UAAAA,WAAhB,SAA2BluV,EAAc+L,EAAe86T,sHAMpD,GALM1H,EAAgBzqU,KAAKyjU,eAAei3B,iBAAiBrjV,EAAOrX,KAAKirT,eACvEjrT,KAAK0nF,OAAOklH,QAAQ,gDAEd0zI,EAAgDvf,GAAUkC,oBAAoB33T,IAEnEqhM,UAAW,CAExB,GADA3sM,KAAK0nF,OAAOklH,QAAQ,oDACf5sM,KAAKwqV,qBACN,MAAMzlC,GAAiBqyC,4CAI3B,OAFMC,EAA0B,IAAInH,GAAwBlwV,KAAKzG,OAAQyG,KAAKyjU,eAAgBzjU,KAAKirT,cAAejrT,KAAK0nF,OAAQ1nF,KAAKs5G,aAAct5G,KAAKuqV,iBAAkB3mJ,GAAMkB,kBAAmB9kM,KAAKgrT,kBAAmBhrT,KAAKwqV,qBAAsBlK,EAAa3zI,UAAW3sM,KAAKyjU,eAAgBgH,EAAcnmI,eACxS+7H,EAAqBX,GAAc0D,kBAAkBpjU,KAAKirT,cAAe5zS,GAAMgpT,iBAChF,CAAP,EAAOg3B,EAAwB1J,aAAY/8R,GAACA,GAAAA,CAAAA,EACrC65Q,GAAa,CAChBpzT,MAAOgpT,EACPuT,YAAQv2U,KACT0xM,SAAQ,WACPvnF,EAAKi8M,eAAeuxB,oBAAoB39U,EAC3C,IACJ,CAID,KADMsjV,EAAmB36V,KAAKyjU,eAAem3B,mBAAmBvjV,IAE5D,MAAM0tS,GAAiBylB,+BAGR,SAAMxqU,KAAKs2V,qBAAqBnkB,EAAwBwoB,WAIpE,OAJDpE,EAAa3wP,EAAAA,OACnB5lG,KAAK0nF,OAAOklH,QAAQ,4BACpBmjI,GAAgBonB,eAAen3V,KAAKyjU,eAAgBzjU,KAAKzG,OAAOmB,KAAK41M,SAAUm6H,GAExE,GADoB,IAAI0uB,GAAgB5C,EAAYv2V,KAAKyjU,eAAgBgH,EAAezqU,KAAK0nF,OAAQ1nF,KAAKirT,eACjFqsC,2BAA2BhsV,EAAM+L,EAAOk/U,EAAW3qJ,UAAW5rM,KAAKkxU,uBAAnG,MAAO,CAAP,EAAOtrO,EAAAA,cACV,EAOK4zP,EAAAA,UAAAA,OAAN,SAAa9Y,+GACT1gV,KAAK0nF,OAAOklH,QAAQ,yBACd2+I,EAAqBvrV,KAAK81V,wBAAwBpV,GAClDvO,EAAyBnyU,KAAKuvV,iCAAiC3rJ,GAAM90F,yBAMvE,+BAHA9uG,KAAKs5G,aAAaw2N,UAAUvnI,GAAAA,aAAwB1E,GAAAA,SAA0B68I,GAG9E,GAAM1gV,KAAKu3V,mBAAmBhM,EAAmBx/I,iBAO9B,OAPnBnmG,EAAAA,OAEMqrP,EAAuC,CACzCnI,MAAOllJ,GAAM90F,OACb5yG,QAAS8D,KAAKzG,OAAOkxV,OAAOyG,0BAC5B9hB,WAAW,GAEI,GAAMpvU,KAAKs2V,qBAAqBnkB,EAAwBuO,GAAiBA,EAAc90I,0BAApG2qJ,EAAa3wP,EAAAA,OACnB5lG,KAAK0nF,OAAOklH,QAAQ,4BAGd4qJ,EAAoBjB,EAAW9V,aAAa8K,GAElDvrV,KAAKs5G,aAAaw2N,UAAUvnI,GAAAA,eAA0B1E,GAAAA,SAA0B0nJ,GAE5E7K,GAA6D,oBAArCA,EAAc6Y,oBAGrB,IAFA7Y,EAAc6Y,mBAAmB/B,GAE9C,OACAx3V,KAAK0nF,OAAOklH,QAAQ,8DAEf5sM,KAAKyjU,eAAeiH,4BACrB1qU,KAAKyjU,eAAeiG,0BAAyB,GAEjD,GAAM1pU,KAAKuqV,iBAAiB4G,iBAAiBqG,EAAWvG,KAT5D,aAUI,OADArrP,EAAAA,OACA,WAGA5lG,KAAKyjU,eAAeiG,0BAAyB,GAC7C1pU,KAAK0nF,OAAOklH,QAAQ,qGAOxB,OAHK5sM,KAAKyjU,eAAeiH,4BACrB1qU,KAAKyjU,eAAeiG,0BAAyB,GAEjD,GAAM1pU,KAAKuqV,iBAAiB4G,iBAAiBqG,EAAWvG,WACxD,OADArrP,EAAAA,OACA,gCASJ,4BANiBu+F,IACZgmH,EAAgB9lH,iBAAiBrkM,KAAKskM,eAE3C6tI,EAAuBsX,mBAAmBt/B,GAC1CnqT,KAAKs5G,aAAaw2N,UAAUvnI,GAAAA,eAA0B1E,GAAAA,SAA0B,KAAMsmH,GACtFnqT,KAAKs5G,aAAaw2N,UAAUvnI,GAAAA,WAAsB1E,GAAAA,UAC5CsmH,iBAGVnqT,KAAKs5G,aAAaw2N,UAAUvnI,GAAAA,WAAsB1E,GAAAA,oBACrD,EAMS21J,EAAAA,UAAAA,qBAAV,SAA+BqB,GAC3B,IAAMzB,EAAoByB,GAAoBlvV,OAAOC,SAASV,KAC9D,OAAO61T,GAAUgqB,eAAeqO,EAAmBrrB,GAAa+c,gBACnE,EACL,CA/SA,EAAoCO,mBCPhC,WAAY2I,EAAyC1J,EAAkCrgB,EAAiDviP,EAAgBozQ,GAAxJ,MACIvzO,EAAAA,KAAAA,KAAMysO,EAAgB1J,EAAargB,EAAiBviP,IAAO,YAC3D8/B,EAAKszO,kBAAoBA,GAC5B,CA4IL,OAlJmCpqS,GAAAA,EAAAA,GAazBqqS,EAAAA,UAAAA,oBAAN,SAA0Bv8T,qGACtB,GAAIwpK,GAAYjiL,QAAQyY,GAGpB,MADAx+B,KAAK0nF,OAAOjsD,KAAK,yBACXspR,GAAiB6yC,uCAGpB53V,KAAK86V,kBAAoB,GAAM96V,KAAKg7V,UAAUx8T,IAA9C,oBAAyBonE,EAAAA,EAAAA,oBAAmCA,EAAAA,KAAKq1P,cAAcz8T,oBAAtF,MAAO,CAAP,WACH,EAODu8T,EAAAA,UAAAA,qBAAAA,SAAqB3rP,EAA2BlzG,GAAhD,WACI,OAAO,IAAI1C,SAAQ,SAACC,EAASC,GACrBwC,EAAUmzU,IACV7nN,EAAK9/B,OAAOk9E,QAAQ,qEAAqE1oK,EAAO,yBAA5E,yCAOxB,IACMg/V,EADUvvV,OAAOwZ,YAAY3a,MACLtO,EAExB87V,EAAarnR,aAAY,WAC3B,GAAIhlE,OAAOwZ,YAAY3a,MAAQ0wV,EAI3B,OAHA1zO,EAAK2zO,mBAAmB/rP,GACxBh/B,cAAc4nR,QACdt+V,EAAOqrT,GAAiBq2C,mCAI5B,IAAIlwV,EAAeuzL,GAAUyB,aACvBrpD,EAAgBznC,EAAOynC,cAC7B,IAMI3rI,EAAO2rI,EAAgBA,EAAcjrI,SAASV,KAAOuzL,GAAUyB,YACrD,CAAZ,MAAO13L,IAAK,CAEd,IAAIw/L,GAAYjiL,QAAQ7a,GAAxB,CAIA,IAAMmwV,EAAcxkN,EAAgBA,EAAcjrI,SAASN,KAAMmzL,GAAUyB,aAC3E,OAAI6gI,GAAUoN,4BAA4BktB,IAEtC7zO,EAAK2zO,mBAAmB/rP,GACxBh/B,cAAc4nR,QACdv+V,EAAQ4hW,SAJZ,CAHC,CAUJ,GAAE30J,GACN,GACJ,EAOOq0J,EAAAA,UAAAA,UAAR,SAAkB1C,GAAlB,WAMI,OAAO,IAAI7+V,SAAQ,SAACC,EAASC,GACzB,IAAM4hW,EAAc9zO,EAAK+zO,qBAEzBh/V,YAAW,WACF++V,GAKLA,EAAYtuU,IAAMqrU,EAElB5+V,EAAQ6hW,IANJ5hW,EAAO,wBAOd,GAAE8tH,EAAKszO,kBACX,GACJ,EASOC,EAAAA,UAAAA,cAAR,SAAsB1C,GAClB,IAAMiD,EAAct7V,KAAKu7V,qBAIzB,OAFAD,EAAYtuU,IAAMqrU,EAEXiD,CACV,EAOOP,EAAAA,UAAAA,mBAAR,WACI,IAAMS,EAAYrxV,SAASa,cAAc,UASzC,OAPAwwV,EAAUp7U,MAAM25G,WAAa,SAC7ByhO,EAAUp7U,MAAMrQ,SAAW,WAC3ByrV,EAAUp7U,MAAM5F,MAAQghV,EAAUp7U,MAAM1F,OAAS,IACjD8gV,EAAUp7U,MAAM2yE,OAAS,IACzByoQ,EAAUrwV,aAAa,UAAW,+CAClChB,SAASm8E,qBAAqB,QAAQ,GAAGltE,YAAYoiV,GAE9CA,CACV,EAOOT,EAAAA,UAAAA,mBAAR,SAA2B3rP,GACnBjlG,SAASmyB,OAAS8yE,EAAOx1F,YACzBzP,SAASmyB,KAAKziB,YAAYu1F,EAEjC,EACL,CAlJA,EAAmC8kP,mBCW/B,WAAY36V,EAA8B+wV,EAAkCr/B,EAAwBvjO,EAAgB4xB,EAA4BixO,EAAqCzB,EAAc99B,EAAuC+kC,EAAwCvF,EAA6ClmJ,GAA/T,MACI/8E,EAAAA,KAAAA,KAAMhuH,EAAQ+wV,EAAar/B,EAAevjO,EAAQ4xB,EAAcixO,EAAkBv/B,EAAmBw/B,EAAsBlmJ,IAAc,YACzI98E,EAAKshO,MAAQA,EACbthO,EAAK6tO,cAAgBtF,GACxB,CA6GL,OArHwCr/R,GAAAA,EAAAA,GAc9B+qS,EAAAA,UAAAA,aAAN,SAAmBjhW,6GASf,GARAwF,KAAK0nF,OAAOklH,QAAQ,+BACdyhJ,EAA0BruV,KAAKgrT,kBAAkBU,iBAAiBzK,GAAkBy6C,+BAAgClhW,EAAQ8pM,eAE9H0D,GAAYjiL,QAAQvrB,EAAQqsU,YAAc7+H,GAAYjiL,QAAQvrB,EAAQgxF,QAAUhxF,EAAQuxM,SAAW/D,GAAYjiL,QAAQvrB,EAAQuxM,QAAQpxM,YACvIqF,KAAK0nF,OAAOk9E,QAAQ,uGAIpBpqK,EAAQo5U,QAAUp5U,EAAQo5U,SAAW5yI,GAAY32K,KAIjD,MAHAgkU,EAAwBthC,eAAe,CACnC/qR,SAAS,IAEP+iR,GAAiB42C,6BAA6BnhW,EAAQo5U,QAIjB,SAAM5zU,KAAKk2V,+BAA8BtlS,GAACA,GAAAA,CAAAA,EAClFp2D,GAAO,CACVo5U,OAAQ5yI,GAAY32K,OACrBw5K,GAAAA,gBAHGwrJ,EAAyCzpP,EAAAA,OAI/C5lG,KAAKyjU,eAAe2yB,mBAAmB/G,EAAch4U,MAAOg4U,EAAchiJ,MAAOgiJ,EAAczjJ,UAAWyjJ,EAAcxoB,WAAapoI,GAAUyB,aAAcmvJ,EAActjJ,SAAW,MAEhLomI,EAAyBnyU,KAAKuvV,iCAAiCvvV,KAAK8oV,wBAI1B,gCAAM9oV,KAAKs2V,qBAAqBnkB,EAAwBkd,EAAczjJ,UAAWyjJ,EAAc9c,2BAGpI,OAHDgkB,EAAsC3wP,EAAAA,OAC5C5lG,KAAK0nF,OAAOklH,QAAQ,4BAEb,GAAM5sM,KAAK47V,kBAAkBrF,EAAYlH,GAAelvV,MAAK,SAAC6N,GAKjE,OAJAqgV,EAAwBthC,eAAe,CACnC/qR,SAAS,EACT09S,WAAW,IAER1xU,CACV,YAND,MAAO,CAAP,EAAO43F,EAAAA,eAkBP,4BAViBu+F,IACZgiH,EAAgB9hH,iBAAiBrkM,KAAKskM,eAE3C6tI,EAAuBsX,mBAAmBtjC,GAC1CnmT,KAAKyjU,eAAeuxB,oBAAoB3F,EAAch4U,OACtDg3U,EAAwBthC,eAAe,CACnC/oH,UAAWmiH,aAAahiH,IAAagiH,EAAEniH,gBAAa3mM,EACpDmvV,aAAcrmC,aAAahiH,IAAagiH,EAAE/hH,eAAY/mM,EACtD2kC,SAAS,IAEPmkR,yBAEb,EAKDs1C,EAAAA,UAAAA,OAAAA,WAEI,OAAOjiW,QAAQE,OAAOqrT,GAAiB8qC,qCAC1C,EAQe4L,EAAAA,UAAAA,kBAAhB,SAAkClF,EAAqClH,4HAEX,SAAMrvV,KAAKq2V,mCAAmChH,WAElF,OAFdplB,EAAkDrkO,EAAAA,OAEpC,GAAM2wP,EAAW1W,eAAcjvR,GAACA,GAAAA,CAAAA,EAC7Cy+R,GAAa,CAChB1M,aAAcqQ,GAAqBwD,kBAAkBx2V,KAAKzG,OAAQyG,KAAK0nF,OAAQ1nF,KAAKwqV,qBAAsB6E,EAActzB,iCAK1G,OAPZ46B,EAAc/wP,EAAAA,OAOF,IAFZi2P,EAAgB,IAAId,GAAcxE,EAAYv2V,KAAKyjU,eAAgBwG,EAAiBjqU,KAAK0nF,OAAQ1nF,KAAKzG,OAAOkxV,OAAOqQ,oBAEpF/D,oBAAoBJ,WAE7C,OAFPmF,EAAYl2P,EAAAA,OAEL,GAAMi2P,EAAcE,qBAAqBD,EAAW97V,KAAKzG,OAAOkxV,OAAOuR,2BAKpF,GALM1wV,EAAOs6F,EAAAA,OAEP06O,EAAgDvf,GAAUkC,oBAAoB33T,GAC9E+L,EAAQrX,KAAKk3V,gCAAgC5W,EAAcz8I,GAAAA,OAAwBomI,EAAgB3lI,eAErGg8I,EAAa3zI,UAAW,CAExB,GADA3sM,KAAK0nF,OAAOklH,QAAQ,oDACf5sM,KAAKwqV,qBACN,MAAMzlC,GAAiBqyC,4CAI3B,OAFMC,EAA0B,IAAInH,GAAwBlwV,KAAKzG,OAAQyG,KAAKyjU,eAAgBzjU,KAAKirT,cAAejrT,KAAK0nF,OAAQ1nF,KAAKs5G,aAAct5G,KAAKuqV,iBAAkBvqV,KAAK8oV,MAAO9oV,KAAKgrT,kBAAmBhrT,KAAKwqV,qBAAsBlK,EAAa3zI,UAAW3sM,KAAKyjU,eAAgBzjU,KAAKskM,eAClR+7H,EAAqBX,GAAc0D,kBAAkBpjU,KAAKirT,cAAe5zS,GAAMgpT,iBAChF,CAAP,EAAOg3B,EAAwB1J,aAAY/8R,GAACA,GAAAA,CAAAA,EACrCy+R,GAAa,CAChBh4U,MAAOgpT,EACPuT,OAAQ5yI,GAAY32K,QACrB0kL,SAAQ,WACPvnF,EAAKi8M,eAAeuxB,oBAAoB39U,EAC3C,IACJ,CAGD,MAAO,CAAP,EAAOwkV,EAAcvE,2BAA2BhsV,EAAM+L,EAAOk/U,EAAW3qJ,UAAW5rM,KAAKkxU,sBAC3F,EACL,CArHA,EAAwCma,mBCTxC,2DAyDC,CAAD,OAzDyC36R,GAAAA,EAAAA,GAK/BurS,EAAAA,UAAAA,aAAN,SAAmBzhW,oHAGR,gBADAA,IACA,GAAMwF,KAAK4sV,sBAAsBpyV,WAKb,OAPrB60V,EAAa,0BAEZrpP,EAAAA,UAEDqoP,EAA0BruV,KAAKgrT,kBAAkBU,iBAAiBzK,GAAkBi7C,gCAAiC7M,EAAc/qJ,eACnI6tI,EAAyBnyU,KAAKuvV,iCAAiC3rJ,GAAM4rJ,+BAEhD,GAAMxvV,KAAKm8V,yBAAyBhqB,EAAwBkd,EAAczjJ,UAAWyjJ,EAAc9c,2BAG9H,OAHM6pB,EAAqBp2P,EAAAA,OAC3BhmG,KAAK0nF,OAAOklH,QAAQ,gCAEb,CAAP,EAAOwvJ,EAAmBvO,2BAA2BwB,GAChDlvV,MAAK,SAAC6N,GAMH,OALAqgV,EAAwBthC,eAAe,CACnC/qR,SAAS,EACT09S,UAAW1xU,EAAO0xU,YAGf1xU,CACV,IACAwH,OAAM,SAAChN,GAUJ,MATIA,aAAa27L,IACZ37L,EAAgB67L,iBAAiB78E,EAAK88E,eAE3C6tI,EAAuBsX,mBAAmBjhV,GAC1C6lV,EAAwBthC,eAAe,CACnC/oH,UAAWx7L,EAAEw7L,UACbwoJ,aAAchkV,EAAE47L,SAChBpiK,SAAS,IAEPx5B,CACT,WACR,EAKDyzV,EAAAA,UAAAA,OAAAA,WAEI,OAAOziW,QAAQE,OAAOqrT,GAAiB8qC,qCAC1C,EAOeoM,EAAAA,UAAAA,yBAAhB,SAAyC9pB,EAAgDsW,EAAuBlW,qGAEvF,SAAMvyU,KAAK0rV,uBAAuBvZ,EAAwBsW,EAAclW,WAC7F,OADMoZ,EAAe/lP,EAAAA,OACd,CAAP,EAAO,IAAI8nP,GAAmB/B,EAAc3rV,KAAKgrT,0BACpD,EACL,CAzDA,EAAyCqgC,kBCuBrC,WAAY7Z,EAAqCx8Q,EAA8B0yB,EAAgBglH,GAC3F1sM,KAAK2uU,qBAAyC,qBAAXhjU,OACnC3L,KAAKzG,OAASi4U,EACdxxU,KAAKg1D,QAAUA,EACfh1D,KAAK0nF,OAASA,EACd1nF,KAAK0sM,UAAYA,CACpB,CAgHL,OAtGI2vJ,EAAAA,UAAAA,mBAAAA,SAAmB7hW,EAAwBe,EAAiCmJ,GAGxE,GAFA1E,KAAK0nF,OAAOjsD,KAAK,2CAEZlgC,EAASshV,SACV,MAAM93B,GAAiBu3C,6BAA6B,oDAGxD,GAAI9hW,EAAQuxM,QACR/rM,KAAKu8V,YAAYhhW,EAASshV,SAAUriV,EAAQuxM,QAAQ3B,cAAe5vM,EAAQuxM,QAAQjgH,YAAatxF,EAAQuxM,QAAQpB,SAAUjmM,GAC1H1E,KAAKw8V,gBAAgBhiW,EAASe,EAAUf,EAAQuxM,QAAQ3B,cAAe5vM,EAAQuxM,QAAQjgH,YAAatxF,EAAQuxM,QAAQpB,SAAUjmM,OAC3H,KAAIlK,EAAQoxM,UAyBf,MAAMm5G,GAAiBu3C,6BAA6B,yEAvBpD,IAAM7T,EAAetE,GAAUoI,kBAAkB/xV,EAAQoxM,UAAWpxM,EAAQ+3U,mBACtE6R,EAAqC,CACvClF,aAAcl/U,KAAKzG,OAAOmB,KAAKwkV,aAC/B3uI,iBAAkBvwM,KAAKzG,OAAOmB,KAAK61M,iBACnC62I,uBAAwBpnV,KAAKzG,OAAOmB,KAAK0sV,uBACzCb,kBAAmBvmV,KAAKzG,OAAOmB,KAAK6rV,kBACpC/T,2BAA4BxyU,KAAKzG,OAAOmB,KAAK83U,4BAE3C5mI,EAAY,IAAIu4I,GAAUsE,EAAczoV,KAAKzG,OAAOkxV,OAAOvZ,cAAelxU,KAAKg1D,QAASovR,GAG9F,GAAI1/U,EAAQgnM,WACR1rM,KAAK0nF,OAAOmD,MAAM,2CAClB7qF,KAAKu8V,YAAYhhW,EAASshV,SAAUn4U,EAAQgnM,WAAYE,EAAUy5I,gBAAiBz5I,EAAU0gI,OAAQ5nU,GACrG1E,KAAKw8V,gBAAgBhiW,EAASe,EAAUmJ,EAAQgnM,WAAYE,EAAUy5I,gBAAiBz5I,EAAU0gI,OAAQ5nU,OACtG,KAAInJ,EAAS2gV,YAKhB,MAAMn3B,GAAiBu3C,6BAA6B,yDAJpDt8V,KAAK0nF,OAAOmD,MAAM,4CAClB7qF,KAAKu8V,YAAYhhW,EAASshV,SAAUthV,EAAS2gV,YAAatwI,EAAUy5I,gBAAiBz5I,EAAU0gI,OAAQ5nU,GACvG1E,KAAKw8V,gBAAgBhiW,EAASe,EAAUA,EAAS2gV,YAAatwI,EAAUy5I,gBAAiBz5I,EAAU0gI,OAAQ5nU,EAG9G,CAGJ,CACJ,EAUO23V,EAAAA,UAAAA,YAAR,SAAoB1wJ,EAAiBvB,EAAuBt+G,EAAqB6+G,EAAkBjmM,GAE/F,IAAMy4T,EAAgBD,GAAcugB,oBAAoBrzI,EAAet+G,EAAa6/G,EAAS3rM,KAAKzG,OAAOmB,KAAK41M,SAAU3F,GAClH8xJ,EAAc,IAAIlnC,GAAU5pH,EAAS3rM,KAAK0sM,WAC1C8tI,EAAgB91U,EAAQgnM,WAC1BlB,GAAc20I,cAAcz6U,EAAQgnM,WAAYtB,EAAeqyJ,OAAap/V,OAAWA,OAAWA,EAAWyuF,GAC7G0+G,GAAcy0I,qBAAqB70I,EAAeqyJ,OAAap/V,OAAWA,OAAWA,EAAWyuF,GAEpG,IAAI9rF,KAAK2uU,qBAKL,MAAM5pB,GAAiBu3C,6BAA6B,wEAJpDt8V,KAAK0nF,OAAOklH,QAAQ,iCACpB5sM,KAAKg1D,QAAQ06I,WAAW8qI,GACxBx6U,KAAKg1D,QAAQ0hQ,qBAAqByG,EAIzC,EAYOk/B,EAAAA,UAAAA,gBAAR,SAAwB7hW,EAAwBe,EAAiC6uM,EAAuBt+G,EAAqB6+G,EAAkBjmM,GAE3I,GAAKnJ,EAASqiV,aAAd,CAKA,IAAKriV,EAASwiV,WACV,MAAMh5B,GAAiBu3C,6BAA6B,4DAGxD,IAAK53V,EAAQq5T,kBACT,MAAMhZ,GAAiBu3C,6BAA6B,6DAGxD,IAAMx1J,EAAS,IAAI6sH,GAASn5T,EAAQssM,QAAQwuH,cACtC+H,EAAY34T,EAAQ24T,WAAc9hU,EAASwiV,YAAa,IAAI5qV,MAAOC,UAAY,IAC/E2qU,EAAoBr5T,EAAQq5T,kBAE5B0c,EAAoBjd,GAAkB+gB,wBAAwBn0I,EAAet+G,EAAavwF,EAASqiV,aAAc59U,KAAKzG,OAAOmB,KAAK41M,SAAU3F,EAAU7D,EAAQu2H,EAAWU,EAAmB/9T,KAAK0sM,WAEvM,IAAI1sM,KAAK2uU,qBAIL,MAAM5pB,GAAiBu3C,6BAA6B,wEAHpDt8V,KAAK0nF,OAAOklH,QAAQ,qCACpB5sM,KAAKg1D,QAAQ0iQ,yBAAyB+iB,EAlBzC,MAFGz6U,KAAK0nF,OAAOklH,QAAQ,oDAwB3B,EACL,CAAC,mBC/IG,WAAYrzM,GAAZ,MACIguH,EAAAA,KAAAA,KAAMhuH,IAAO,YACbiuH,EAAK65N,oBAAqB,GAC7B,CACL,OALsD3wR,GAAAA,EAAAA,GAKtD,CALA,EAAsDkvR,mBCelD,WAAYrmV,EAA8B+wV,EAAkCr/B,EAAwBvjO,EAAgB4xB,EAA4BixO,EAAqCzB,EAAc99B,EAAuCw/B,EAA6ClmJ,GAAvR,MACI/8E,EAAAA,KAAAA,KAAMhuH,EAAQ+wV,EAAar/B,EAAevjO,EAAQ4xB,EAAcixO,EAAkBv/B,EAAmBw/B,EAAsBlmJ,IAAc,YACzI98E,EAAKshO,MAAQA,GAChB,CAmEL,OAzE0Cp4R,GAAAA,EAAAA,GAYhCgsS,EAAAA,UAAAA,aAAN,SAAmBliW,+GAIf,GAHAwF,KAAK0nF,OAAOmD,MAAM,6CAGbrwF,EAAQ8I,KACT,MAAMyhT,GAAiB43C,8BAKoB,SAAM38V,KAAKk2V,+BAA+B17V,EAASqpM,GAAAA,gBAA5FwrJ,EAAyCzpP,EAAAA,OAC/C5lG,KAAKyjU,eAAe2yB,mBAAmB/G,EAAch4U,MAAOg4U,EAAchiJ,MAAOgiJ,EAAczjJ,UAAWyjJ,EAAcxoB,WAAapoI,GAAUyB,aAAcmvJ,EAActjJ,SAAW,MAEhLomI,EAAyBnyU,KAAKuvV,iCAAiCvvV,KAAK8oV,wBAWjD,6BANf7e,EAAe,SACdolB,GAAa,CAChB/rV,KAAM9I,EAAQ8I,OAIG,GAAMtD,KAAK0rV,uBAAuBvZ,EAAwBkd,EAAczjJ,mBAQ7F,OARM+/I,EAAe/lP,EAAAA,OACf2wP,EAA+C,IAAIqG,GAAiCjR,GAC1F3rV,KAAK0nF,OAAOklH,QAAQ,4BAMb,CAAP,EAHsB,IAAImuJ,GAAcxE,EAAYv2V,KAAKyjU,eAAgBwG,EAAiBjqU,KAAK0nF,OAAQ1nF,KAAKzG,OAAOkxV,OAAOqQ,mBAGrGvG,6BACjB,CACIjxV,KAAM9I,EAAQ8I,KACd07U,aAAcxkV,EAAQsxM,YACtBgzI,sBAAuBtkV,EAAQqxM,mBAC/B8oJ,yBAA0Bn6V,EAAQqiW,uBAEtCxN,EAAch4U,MACdk/U,EAAW3qJ,UACX5rM,KAAKkxU,eACL,WAQJ,4BALiB/sI,IACZgiH,EAAgB9hH,iBAAiBrkM,KAAKskM,eAE3C6tI,EAAuBsX,mBAAmBtjC,GAC1CnmT,KAAKyjU,eAAeuxB,oBAAoB3F,EAAch4U,OAChD8uS,yBAEb,EAKDu2C,EAAAA,UAAAA,OAAAA,WAEI,OAAOljW,QAAQE,OAAOqrT,GAAiB8qC,qCAC1C,EACL,CAzEA,EAA0CxE,kBCNtC,WAAYjqV,EAAckjM,GACtBtkM,KAAKskM,cAAgBA,EACrBtkM,KAAKyuT,YAAc,gBAAgBrtT,EAAI,IAAIpB,KAAKskM,cAChDtkM,KAAK88V,UAAY,cAAc17V,EAAI,IAAIpB,KAAKskM,cAC5CtkM,KAAK+8V,QAAU,YAAY37V,EAAI,IAAIpB,KAAKskM,aAC3C,CAkDL,OAhDW04J,EAAAA,2BAAP,WACI,MAAyB,qBAAXrxV,QACoB,qBAAvBA,OAAOwZ,aACqB,oBAA5BxZ,OAAOwZ,YAAYy1L,MACY,oBAA/BjvM,OAAOwZ,YAAY4/B,SACe,oBAAlCp5C,OAAOwZ,YAAY83U,YACkB,oBAArCtxV,OAAOwZ,YAAY+3U,eACqB,oBAAxCvxV,OAAOwZ,YAAYg4U,gBACjC,EAEDH,EAAAA,UAAAA,iBAAAA,WACI,GAAIA,EAA8BI,6BAC9B,IACIzxV,OAAOwZ,YAAYy1L,KAAK56M,KAAK88V,UAGhC,CAFC,MAAOt0V,IAER,CAER,EAEDw0V,EAAAA,UAAAA,eAAAA,WACI,GAAIA,EAA8BI,6BAC9B,IACIzxV,OAAOwZ,YAAYy1L,KAAK56M,KAAK+8V,SAC7BpxV,OAAOwZ,YAAY4/B,QAAQ/kD,KAAKyuT,YAAazuT,KAAK88V,UAAW98V,KAAK+8V,QAGrE,CAFC,MAAOv0V,IAER,CAER,EAEDw0V,EAAAA,UAAAA,iBAAAA,WACI,GAAIA,EAA8BI,6BAC9B,IACI,IAAMC,EAAwB1xV,OAAOwZ,YAAYg4U,iBAAiBn9V,KAAKyuT,YAAa,WACpF,GAAI4uC,EAAsBhpW,OAAS,EAAG,CAClC,IAAMq7T,EAAa2tC,EAAsB,GAAGzgV,SAI5C,OAHAjR,OAAOwZ,YAAY+3U,cAAcl9V,KAAKyuT,aACtC9iT,OAAOwZ,YAAY83U,WAAWj9V,KAAK88V,WACnCnxV,OAAOwZ,YAAY83U,WAAWj9V,KAAK+8V,SAC5BrtC,CACV,CAGJ,CAFC,MAAOlnT,IAER,CAEL,OAAO,IACV,EACL,CAAC,mBCtDG,WAAY8nM,EAAkB1E,EAAmBlkH,EAAgB0mO,EAAqBC,EAAwBC,GAA9G,MACI/mM,EAAAA,KAAAA,KAAM+oF,EAAU1E,EAAWlkH,EAAQ0mO,EAAaC,EAAgBC,IAAqB,YACrF9mM,EAAKyjM,cAAgB,IAAItE,GAAcn/L,EAAK9/B,QAC5C8/B,EAAK4jM,cAAgB,IAAI/I,GAAc76L,EAAKyjM,gBAC/C,CAuCL,OA/C8Cv6P,GAAAA,EAAAA,GAU1C4sS,EAAAA,UAAAA,6BAAAA,SAA6B7uC,EAAqBnqH,GAC9C,OAAO,IAAI04J,GAA8BvuC,EAAanqH,EACzD,EAEDg5J,EAAAA,UAAAA,WAAAA,WACI,OAAOt9V,KAAKorT,cAAcG,cAC7B,EAEO+xC,EAAAA,UAAAA,kBAAR,iBACI,OAA+B,QAAxB,EAAAnzV,SAASozV,uBAAe33P,IAAAA,OAAA,EAAAA,EAAE5+F,aAAc,IAClD,EAUDs2V,EAAAA,UAAAA,iBAAAA,SAAiB7uC,EAAgCnqH,GAAjD,WAEUk5J,EAAsBx9V,KAAKy9V,oBAE3B3uC,EAAkBvnM,EAAAA,UAAMmkM,iBAAgBxqT,KAAA,KAACutT,EAAanqH,GAE5D,OAAO,SACAwqH,GAAe,CAClB/B,eAAgB,SAACluS,GACb,OAAOiwS,EAAgB/B,eAAcn8P,GAAC,CAClC4sS,oBAAmB,EACnBE,kBAAmBl2O,EAAKi2O,qBACrB5+U,GAEV,GAER,EACL,CA/CA,EAA8CsvS,kBCgG1C,WAAYqjB,GAMRxxU,KAAK2uU,qBAAyC,qBAAXhjU,OAEnC3L,KAAKzG,gBxC4EsBqsG,EAAuH+oO,OAA/GgvB,EAAa,OAASC,EAAc,QAAUC,EAAe,SAAaC,EAAkB,YAG7HC,EAAqD,CACvDztJ,SAAU7R,GAAUyB,aACpB0L,UAAW,GAAGnN,GAAUI,kBACxB0R,iBAAkB,GAClB62I,uBAAwB3oJ,GAAUyB,aAClCqmJ,kBAAmB9nJ,GAAUyB,aAC7BsQ,YAAa/R,GAAUyB,aACvBuQ,sBAAuBhS,GAAUyB,aACjCwQ,2BAA2B,EAC3B4hI,mBAAoB,GACpB4M,aAAc5e,GAAa09B,IAC3BzrB,kBAAmB,CACfnG,mBAAoB7L,GAAmB8L,KACvCC,OAAQ7tI,GAAUyB,cAEtBsyI,4BAA4B,GAI1ByrB,EAAgD,CAClDttJ,cAAenN,GAAqByrB,eACpCre,wBAAwB,EACxBg3H,eAAe,GAIbs2B,EAAwC,CAE1Cr1J,eAAgB,WAAc,EAC9BE,SAAU/B,GAAS2B,KACnBG,mBAAmB,GAIjBq1J,EAA8B,SAC7B/yB,IAAsB,CACzB5iI,cAAe01J,EACfhtB,cAAevC,EAAuBZ,GAAaqwB,0BAA4B5xB,GAC/E+d,iBAAkB,IAAIrb,GACtBmvB,iBAAkB,EAElBvG,mBAAkC,OAAf+F,QAAe,IAAfA,OAAe,EAAfA,EAAiBQ,mBA9NJ,IA+NhCrC,mBAAkC,OAAf6B,QAAe,IAAfA,OAAe,EAAfA,EAAiBQ,mBAAoBhvB,GACxDyrB,kBAAmBnsB,GAAwBZ,GAAauwB,iBAAmB,IAAM,EACjFpN,0BA/NmC,IAgOnCwE,aAAa,EACbpnB,uBAAuB,EACvBO,mBAAmB,EACnB0vB,8BAA6C,OAAfV,QAAe,IAAfA,OAAe,EAAfA,EAAiBU,+BAlOG,MAqOhDhyB,EAA+D,CACjEprB,YAAa,CACT4N,QAAStwH,GAAUyB,aACnB8uH,WAAYvwH,GAAUyB,eAU9B,MAN8C,CAC1CxlM,KAAM,SAAKqjW,GAAyBJ,GACpCzvV,MAAO,SAAK+vV,GAA0BL,GACtCnT,OAAQ,SAAK0T,GAAmCN,GAChD3rB,UAAW,SAAK3F,GAA8BuxB,GAGtD,CwChJsBU,CAAmBhtB,EAAexxU,KAAK2uU,sBACrD3uU,KAAK8uU,aAAc,EAGnB9uU,KAAK0nF,OAAS,IAAIshH,GAAOhpM,KAAKzG,OAAOkxV,OAAOjiJ,cAAepnM,GAAMiM,IAGjErN,KAAKkxU,cAAgBlxU,KAAKzG,OAAOkxV,OAAOvZ,cAGxClxU,KAAKuqV,iBAAmBvqV,KAAKzG,OAAOkxV,OAAOF,iBAG3CvqV,KAAKy+V,iBAAmB,IAAI/qR,IAG5B1zE,KAAK0+V,wBAA0B,IAAIhrR,IAGnC1zE,KAAKgrT,kBAAoBhrT,KAAK2uU,qBAC1B,IAAI2uB,GAAyBt9V,KAAKzG,OAAOmB,KAAK41M,SAAUtwM,KAAKzG,OAAOmB,KAAKkxM,UAAW5rM,KAAK0nF,OAAQtmF,GAAMiM,GAASrN,KAAKzG,OAAO24U,UAAU/wB,aACtI,IAAIuP,GAAsB1wT,KAAKzG,OAAOmB,KAAK41M,SAAUtwM,KAAKzG,OAAOmB,KAAKkxM,UAAW5rM,KAAK0nF,OAAQtmF,GAAMiM,GAASrN,KAAKzG,OAAO24U,UAAU/wB,aAGvInhT,KAAKirT,cAAgBjrT,KAAK2uU,qBAAuB,IAAIrjB,GAAUtrT,KAAK0nF,OAAQ1nF,KAAKgrT,mBAAqB2F,GAEtG3wT,KAAKs5G,aAAe,IAAIo2N,GAAa1vU,KAAK0nF,OAAQ1nF,KAAKirT,eAGvDjrT,KAAKyjU,eAAiBzjU,KAAK2uU,qBACvB,IAAI7K,GAAoB9jU,KAAKzG,OAAOmB,KAAK41M,SAAUtwM,KAAKzG,OAAO2U,MAAOlO,KAAKirT,cAAejrT,KAAK0nF,QhD05B9D,SAAC4oH,EAAkB5oH,GAC5D,IAAMi3Q,EAAe,CACjBhuJ,cAAenN,GAAqBmmH,cACpC/4G,wBAAwB,EACxBg3H,eAAe,GAEnB,OAAO,IAAI9D,GAAoBxzH,EAAUquJ,EAAchuC,GAA+BjpO,EAC1F,CgDh6BYk3Q,CAA8B5+V,KAAKzG,OAAOmB,KAAK41M,SAAUtwM,KAAK0nF,QAGlE,IAAMm3Q,EAA6C,CAC/CluJ,cAAenN,GAAqBmmH,cACpC/4G,wBAAwB,EACxBg3H,eAAe,GAEnB5nU,KAAK8+V,sBAAwB,IAAIh7B,GAAoB9jU,KAAKzG,OAAOmB,KAAK41M,SAAUuuJ,EAAoB7+V,KAAKirT,cAAejrT,KAAK0nF,QAG7H1nF,KAAK27U,WAAa,IAAI0gB,GAAWr8V,KAAKzG,OAAQyG,KAAKyjU,eAAgBzjU,KAAK0nF,OAAQ1nF,KAAKirT,cACxF,CA04BL,OAr4BU8zC,EAAAA,UAAAA,WAAN,+GAEI,GADA/+V,KAAK0nF,OAAOmD,MAAM,qBACd7qF,KAAK8uU,YAEL,OADA9uU,KAAK0nF,OAAOjsD,KAAK,sDACjB,OAEJz7B,KAAKs5G,aAAaw2N,UAAUvnI,GAAAA,mBACxBvoM,KAAKzG,OAAOkxV,OAAO5b,kBAAnB,6BAEmC,6BAA/BjpO,EAAAA,KAA+B,GAAMotP,GAAqBgM,eAAeh/V,KAAK0nF,OAAQ1nF,KAAKzG,OAAOkxV,OAAO8T,6CAAzG34P,EAAKmuP,wBAA0B/tP,EAAAA,sCAE/BhmG,KAAK0nF,OAAOklH,QAAQu5G,uBAG5BnmT,KAAK8uU,aAAc,EACnB9uU,KAAKs5G,aAAaw2N,UAAUvnI,GAAAA,0BAC/B,EAWKw2J,EAAAA,UAAAA,sBAAN,SAA4BzzV,mGAMxB,OALAtL,KAAK0nF,OAAOklH,QAAQ,gCAEpBmhI,GAAakxB,yCAAyCj/V,KAAKzG,OAAOkxV,OAAO5b,kBAAmB7uU,KAAK8uU,aAE3FowB,EAAmBl/V,KAAKklM,iBAC1BllM,KAAK2uU,sBAMCwwB,EAAsB7zV,GAAQmzL,GAAUyB,aAEtB,qBADpB3kM,EAAWyE,KAAKy+V,iBAAiBliV,IAAI4iV,KAErCn/V,KAAKs5G,aAAaw2N,UAAUvnI,GAAAA,sBAAiC1E,GAAAA,UAC7D7jM,KAAK0nF,OAAOklH,QAAQ,iFAEdpyM,EAAqCwF,KAAKyjU,eAAe4tB,yBAC3DoN,OAAgB,EAChBjkW,GAAWw4V,GAAqBwD,kBAAkBx2V,KAAKzG,OAAQyG,KAAK0nF,OAAQ1nF,KAAK+zV,0BAA4B/zV,KAAK+zV,0BAA4BzoV,GAC9ItL,KAAK0nF,OAAOmD,MAAM,gEACZu0Q,EAAe,IAAIlP,GAAwBlwV,KAAKzG,OAAQyG,KAAKyjU,eAAgBzjU,KAAKirT,cAAejrT,KAAK0nF,OAAQ1nF,KAAKs5G,aAAct5G,KAAKuqV,iBAAkB3mJ,GAAM0B,sBAAuBtlM,KAAKgrT,kBAAmBhrT,KAAK+zV,wBAAyBv5V,EAAQmyM,UAAW3sM,KAAK8+V,sBAAuBtkW,EAAQ8pM,eACxSm6J,EAAmBW,EAAa95J,0BAEhCtlM,KAAK0nF,OAAOmD,MAAM,yDACZy5G,EAAgBtkM,KAAKyjU,eAAekF,kBAAkBjlI,GAAmB8lI,gBAAgB,IAAS/qI,GAAUyB,aAC5Gm/J,EAAiBr/V,KAAKs/V,qBAAqBh7J,GACjDm6J,EAAmBY,EAAe/5J,sBAAsBh6L,IAG5D/P,EAAWkjW,EAAiBt+V,MAAK,SAAC6N,GAC1BA,IAGoBkxV,EAAiB7qW,OAASmzH,EAAK09E,iBAAiB7wM,QAEhEmzH,EAAKlO,aAAaw2N,UAAUvnI,GAAAA,cAAyB1E,GAAAA,SAA0B71L,GAC/Ew5G,EAAK9/B,OAAOklH,QAAQ,2DAEpBplF,EAAKlO,aAAaw2N,UAAUvnI,GAAAA,sBAAiC1E,GAAAA,SAA0B71L,GACvFw5G,EAAK9/B,OAAOklH,QAAQ,mEAK5B,OAFAplF,EAAKlO,aAAaw2N,UAAUvnI,GAAAA,oBAA+B1E,GAAAA,UAEpD71L,CACV,IAAEwH,OAAM,SAAChN,GASN,MAPI02V,EAAiB7qW,OAAS,EAC1BmzH,EAAKlO,aAAaw2N,UAAUvnI,GAAAA,sBAAiC1E,GAAAA,SAA0B,KAAMr7L,GAE7Fg/G,EAAKlO,aAAaw2N,UAAUvnI,GAAAA,cAAyB1E,GAAAA,SAA0B,KAAMr7L,GAEzFg/G,EAAKlO,aAAaw2N,UAAUvnI,GAAAA,oBAA+B1E,GAAAA,UAErDr7L,CACT,IACDxI,KAAKy+V,iBAAiBniV,IAAI6iV,EAAqB5jW,IAE/CyE,KAAK0nF,OAAOklH,QAAQ,8FAGjB,CAAP,EAAOrxM,KAEXyE,KAAK0nF,OAAOklH,QAAQ,+DACb,CAAP,EAAO,YACV,EAWKmyJ,EAAAA,UAAAA,qBAAN,SAA2BvkW,6FAoCvB,OAlCM8pM,EAAgBtkM,KAAKu/V,wBAAwB/kW,GACnDwF,KAAK0nF,OAAOklH,QAAQ,8BAA+BtI,GACnDtkM,KAAKw/V,iCAAiC37J,GAAAA,WAGhC47J,EAAaz/V,KAAKklM,iBAAiB7wM,OAAS,GAE9C2L,KAAKs5G,aAAaw2N,UAAUvnI,GAAAA,oBAA+B1E,GAAAA,SAA0BrpM,GAErFwF,KAAKs5G,aAAaw2N,UAAUvnI,GAAAA,YAAuB1E,GAAAA,SAA0BrpM,GAK7EwF,KAAK+zV,yBAA2B/zV,KAAK0/V,aAAallW,IAC5C4kW,EAAe,IAAIlP,GAAwBlwV,KAAKzG,OAAQyG,KAAKyjU,eAAgBzjU,KAAKirT,cAAejrT,KAAK0nF,OAAQ1nF,KAAKs5G,aAAct5G,KAAKuqV,iBAAkB3mJ,GAAMmB,qBAAsB/kM,KAAKgrT,kBAAmBhrT,KAAK+zV,wBAAyB/zV,KAAK2/V,mBAAmBnlW,GAAUwF,KAAK8+V,sBAAuBtkW,EAAQ8pM,eACtTt2L,EAASoxV,EAAar6J,qBAAqBvqM,GAASgb,OAAM,SAAChN,GACvD,GAAIA,aAAa0kV,IAAmB1kV,EAAEwoV,UAGlC,OAFAxpO,EAAKusO,6BAA0B12V,EACRmqH,EAAK83O,qBAAqB9kW,EAAQ8pM,eACnCqpJ,aAAanzV,GAChC,GAAIgO,aAAa8oT,GAGpB,OAFA9pM,EAAK9/B,OAAOklH,QAAQ,mHACGplF,EAAK83O,qBAAqB9kW,EAAQ8pM,eACnCqpJ,aAAanzV,GAGvC,MADAgtH,EAAKi8M,eAAeiG,0BAAyB,GACvClhU,CACT,MAEK62V,EAAiBr/V,KAAKs/V,qBAAqB9kW,EAAQ8pM,eACzDt2L,EAASqxV,EAAe1R,aAAanzV,IAGlC,CAAP,EAAOwT,EAAOwH,OAAM,SAAChN,GAOjB,MALIi3V,EACAj4O,EAAKlO,aAAaw2N,UAAUvnI,GAAAA,sBAAiC1E,GAAAA,SAA0B,KAAMr7L,GAE7Fg/G,EAAKlO,aAAaw2N,UAAUvnI,GAAAA,cAAyB1E,GAAAA,SAA0B,KAAMr7L,GAEnFA,CACT,UACJ,EAaDu2V,EAAAA,UAAAA,kBAAAA,SAAkBvkW,GAAlB,WACU8pM,EAAgBtkM,KAAKu/V,wBAAwB/kW,GAC7ColW,EAAqB5/V,KAAKgrT,kBAAkBU,iBAAiBzK,GAAkB4+C,kBAAmBv7J,GAExG,IACItkM,KAAK0nF,OAAOklH,QAAQ,2BAA4BtI,GAChDtkM,KAAKw/V,iCAAiC37J,GAAAA,MAIzC,CAHC,MAAOr7L,IAEL,OAAOhP,QAAQE,OAAO8O,GACzB,CAGD,IAOIwF,EAPEkxV,EAAmBl/V,KAAKklM,kBAC1Bg6J,EAAiB7qW,OAAS,EAC1B2L,KAAKs5G,aAAaw2N,UAAUvnI,GAAAA,oBAA+B1E,GAAAA,MAAuBrpM,GAElFwF,KAAKs5G,aAAaw2N,UAAUvnI,GAAAA,YAAuB1E,GAAAA,MAAuBrpM,GAK1EwF,KAAK0/V,aAAallW,IAClBwT,EAAShO,KAAK8/V,mBAAmBtlW,EAASopM,GAAMkB,mBAAmB3kM,MAAK,SAAC5E,GASrE,OARAisH,EAAKi8M,eAAeiG,0BAAyB,GAC7Ck2B,EAAmB7yC,eAAe,CAC9B/qR,SAAS,EACTwuT,gBAAgB,EAChBlgC,gBAAiB/0T,EAAS83R,YAAYh/R,OACtCk8T,YAAah1T,EAASowM,QAAQt3M,SAElCurW,EAAmBvwC,mBACZ9zT,CACV,IAAEia,OAAM,SAAChN,GACN,GAAIA,aAAa0kV,IAAmB1kV,EAAEwoV,UAGlC,OAFAxpO,EAAKusO,6BAA0B12V,EACXmqH,EAAKu4O,kBAAkBvlW,EAAQ8pM,eAChCqpJ,aAAanzV,GAC7B,GAAIgO,aAAa8oT,GAGpB,OAFA9pM,EAAK9/B,OAAOklH,QAAQ,gHACAplF,EAAKu4O,kBAAkBvlW,EAAQ8pM,eAChCqpJ,aAAanzV,GAGpC,MADAgtH,EAAKi8M,eAAeiG,0BAAyB,GACvClhU,CACT,IAGDwF,EADoBhO,KAAK+/V,kBAAkBvlW,EAAQ8pM,eAC9BqpJ,aAAanzV,GAGtC,OAAOwT,EAAO7N,MAAK,SAAC6N,GAmBhB,OAdoBkxV,EAAiB7qW,OAASmzH,EAAK09E,iBAAiB7wM,OAEhEmzH,EAAKlO,aAAaw2N,UAAUvnI,GAAAA,cAAyB1E,GAAAA,MAAuB71L,GAE5Ew5G,EAAKlO,aAAaw2N,UAAUvnI,GAAAA,sBAAiC1E,GAAAA,MAAuB71L,GAGxF4xV,EAAmB7yC,eAAe,CAC9B/qR,SAAS,EACTsuR,gBAAiBtiT,EAAOqlR,YAAYh/R,OACpCk8T,YAAaviT,EAAO29L,QAAQt3M,SAGhCurW,EAAmBvwC,mBACZrhT,CACV,IAAEwH,OAAM,SAAChN,GAeN,OAdI02V,EAAiB7qW,OAAS,EAC1BmzH,EAAKlO,aAAaw2N,UAAUvnI,GAAAA,sBAAiC1E,GAAAA,MAAuB,KAAMr7L,GAE1Fg/G,EAAKlO,aAAaw2N,UAAUvnI,GAAAA,cAAyB1E,GAAAA,MAAuB,KAAMr7L,GAGtFo3V,EAAmB7yC,eAAe,CAC9B/oH,UAAWx7L,EAAEw7L,UACbwoJ,aAAchkV,EAAE47L,SAChBpiK,SAAS,IAEb49T,EAAmBvwC,mBAGZ71T,QAAQE,OAAO8O,EACzB,GACJ,EAqBKu2V,EAAAA,UAAAA,UAAN,SAAgBvkW,6FA6BZ,OA5BM8pM,EAAgBtkM,KAAKu/V,wBAAwB/kW,GAC7C27V,EAAe,SACd37V,GAAO,CACVo5U,OAAQ5yI,GAAY32K,KACpBi6K,cAAeA,IAEnBtkM,KAAKw/V,iCAAiC37J,GAAAA,QAChCm8J,EAAuBhgW,KAAKgrT,kBAAkBU,iBAAiBzK,GAAkBg/C,UAAW37J,GAClGtkM,KAAK0nF,OAAOklH,QAAQ,mBAAoBtI,GACxCtkM,KAAKs5G,aAAaw2N,UAAUvnI,GAAAA,iBAA4B1E,GAAAA,OAAwBsyJ,GAI5En2V,KAAK0/V,aAAavJ,GAClBnoV,EAAShO,KAAK8/V,mBAAmB3J,EAAcvyJ,GAAM+B,WAAWnwL,OAAM,SAAChN,GAEnE,GAAIA,aAAa0kV,IAAmB1kV,EAAEwoV,UAGlC,OAFAxpO,EAAKusO,6BAA0B12V,EACJmqH,EAAK04O,yBAAyB/J,EAAa7xJ,eAC5CqpJ,aAAawI,GAE3C,MAAM3tV,CACT,KAEK23V,EAAqBngW,KAAKkgW,yBAAyB/J,EAAa7xJ,eACtEt2L,EAASmyV,EAAmBxS,aAAawI,IAGtC,CAAP,EAAOnoV,EAAO7N,MAAK,SAAC5E,GAShB,OARAisH,EAAKlO,aAAaw2N,UAAUvnI,GAAAA,mBAA8B1E,GAAAA,OAAwBtoM,GAClFykW,EAAqBjzC,eAAe,CAChC/qR,SAAS,EACTwuT,eAAgBj1V,EAASokV,iBACzBrvB,gBAAiB/0T,EAAS83R,YAAYh/R,OACtCk8T,YAAah1T,EAASowM,QAAQt3M,SAElC2rW,EAAqB3wC,mBACd9zT,CACV,IAAEia,OAAM,SAAChN,GAQN,MAPAg/G,EAAKlO,aAAaw2N,UAAUvnI,GAAAA,mBAA8B1E,GAAAA,OAAwB,KAAMr7L,GACxFw3V,EAAqBjzC,eAAe,CAChC/oH,UAAWx7L,EAAEw7L,UACbwoJ,aAAchkV,EAAE47L,SAChBpiK,SAAS,IAEbg+T,EAAqB3wC,mBACf7mT,CACT,UACJ,EAYKu2V,EAAAA,UAAAA,mBAAN,SAAyBvkW,2FACf8pM,EAAgBtkM,KAAKu/V,wBAAwB/kW,GACnDwF,KAAKw/V,iCAAiC37J,GAAAA,QACtC7jM,KAAK0nF,OAAOmD,MAAM,4BAA6By5G,GAC/CtkM,KAAKs5G,aAAaw2N,UAAUvnI,GAAAA,4BAAuC1E,GAAAA,OAAwBrpM,GACrF4lW,EAAkBpgW,KAAKgrT,kBAAkBU,iBAAiBzK,GAAkBo/C,mBAAoB7lW,EAAQ8pM,eAE9G,IACI,GAAI9pM,EAAQ8I,KAwCR,OAvCMg9V,EAAiB9lW,EAAQ8I,MAC3B/H,EAAWyE,KAAK0+V,wBAAwBniV,IAAI+jV,KAgC5CtgW,KAAK0nF,OAAOklH,QAAQ,4CAA6CpyM,EAAQ8pM,eACzE87J,EAAgBrzC,eAAe,CAC3B/qR,SAAS,IAEbo+T,EAAgB7wC,uBAlChBvvT,KAAK0nF,OAAOklH,QAAQ,4CAA6CtI,GACjE/oM,EAAWyE,KAAKugW,wBAAuB3vS,GAACA,GAAAA,CAAAA,EACjCp2D,GAAO,CACV8pM,cAAa,KAEZnkM,MAAK,SAAC6N,GAUH,OATAw5G,EAAKlO,aAAaw2N,UAAUvnI,GAAAA,8BAAyC1E,GAAAA,OAAwB71L,GAC7Fw5G,EAAKk3O,wBAAwBhmR,OAAO4nR,GACpCF,EAAgBrzC,eAAe,CAC3B/qR,SAAS,EACTsuR,gBAAiBtiT,EAAOqlR,YAAYh/R,OACpCk8T,YAAaviT,EAAO29L,QAAQt3M,OAC5Bm8V,eAAgBxiV,EAAO2xU,mBAE3BygB,EAAgB/wC,mBACTrhT,CACV,IACAwH,OAAM,SAACtS,GASJ,MARAskH,EAAKk3O,wBAAwBhmR,OAAO4nR,GACpC94O,EAAKlO,aAAaw2N,UAAUvnI,GAAAA,8BAAyC1E,GAAAA,OAAwB,KAAM3gM,GACnGk9V,EAAgBrzC,eAAe,CAC3B/oH,UAAW9gM,EAAM8gM,UACjBwoJ,aAActpV,EAAMkhM,SACpBpiK,SAAS,IAEbo+T,EAAgB/wC,mBACVnsT,CACT,IACLlD,KAAK0+V,wBAAwBpiV,IAAIgkV,EAAgB/kW,IAQ9C,CAAP,EAAOA,GACJ,GAAIf,EAAQgxM,gBAAiB,CAChC,GAAIxrM,KAAK0/V,aAAallW,EAASA,EAAQgxM,iBACnC,MAAO,CAAP,EAAOxrM,KAAK8/V,mBAAmBtlW,EAASopM,GAAMqB,mBAAoBzqM,EAAQgxM,iBAAiBh2L,OAAM,SAAChN,GAK9F,MAHIA,aAAa0kV,IAAmB1kV,EAAEwoV,YAClCxpO,EAAKusO,6BAA0B12V,GAE7BmL,CACT,KAED,MAAMu8S,GAAiBy7C,mDAE9B,CACG,MAAMz7C,GAAiB07C,8CAW9B,CARC,MAAOj4V,IAOL,MANAxI,KAAKs5G,aAAaw2N,UAAUvnI,GAAAA,8BAAyC1E,GAAAA,OAAwB,KAAMr7L,IACnG43V,EAAgBrzC,eAAe,CAC3B/oH,UAAWx7L,cAAa27L,IAAa37L,GAAEw7L,gBAAa3mM,EACpDmvV,aAAchkV,cAAa27L,IAAa37L,GAAE47L,eAAY/mM,EACtD2kC,SAAS,IAEPx5B,EACT,gBACJ,EAOau2V,EAAAA,UAAAA,wBAAd,SAAsCvkW,+FAGR,OAF1BwF,KAAK0nF,OAAOmD,MAAM,iCAAkCrwF,EAAQ8pM,eAElC,GADGtkM,KAAK0gW,2BAA2BlmW,EAAQ8pM,eAChBqpJ,aAAanzV,WAClE,MAAO,CAAP,EAD0BorG,EAAAA,cAE7B,EAaem5P,EAAAA,UAAAA,2BAAhB,SAA2CvkW,qFAQvC,OANAuzU,GAAa4yB,6BACPC,EAAmB5gW,KAAKgrT,kBAAkBU,iBAAiBzK,GAAkB4/C,2BAA4BrmW,EAAQ8pM,eACvHtkM,KAAKs5G,aAAaw2N,UAAUvnI,GAAAA,4BAAuC1E,GAAAA,OAAwBrpM,GAIpF,CAAP,EAF4BwF,KAAK8gW,0BAA0BtmW,EAAQ8pM,eAExCqpJ,aAAanzV,GACnC2F,MAAK,SAAC6N,GAOH,OANA4yV,EAAiB7zC,eAAe,CAC5B/qR,SAAS,EACT09S,UAAW1xU,EAAO0xU,UAClBpvB,gBAAiBtiT,EAAOqlR,YAAYh/R,OACpCk8T,YAAaviT,EAAO29L,QAAQt3M,SAEzB2Z,CACV,IACAwH,OAAM,SAAAhN,GACH,IAAMu4V,EAAgBv4V,aAAampT,GAC7BqvC,EAA6Bx4V,aAAa8oT,GAC1C2vC,EAAuBz4V,EAAEw7L,YAAc0C,GAC7C,GAAIq6J,GAAiBE,IAAwBD,EAIzC,OAHAx5O,EAAK9/B,OAAOklH,QAAQ,uEAAwEpyM,EAAQ8pM,eAEzE98E,EAAK04O,yBAAyB1lW,EAAQ8pM,eACvCqpJ,aAAanzV,GAClC2F,MAAK,SAAC6N,GAQH,OAPA4yV,EAAiB7zC,eAAe,CAC5B/qR,SAAS,EACT09S,UAAW1xU,EAAO0xU,UAClBpvB,gBAAiBtiT,EAAOqlR,YAAYh/R,OACpCk8T,YAAaviT,EAAO29L,QAAQt3M,SAGzB2Z,CACV,IACAwH,OAAM,SAACtS,GAMJ,MALA09V,EAAiB7zC,eAAe,CAC5B/oH,UAAW9gM,EAAM8gM,UACjBwoJ,aAActpV,EAAMkhM,SACpBpiK,SAAS,IAEP9+B,CACT,IAKT,MAHA09V,EAAiB7zC,eAAe,CAC5B/qR,SAAS,IAEPx5B,CACT,UACR,EAWKu2V,EAAAA,UAAAA,OAAN,SAAare,8EAGT,OAFMp8I,EAAgBtkM,KAAKu/V,wBAAwB7e,GACnD1gV,KAAK0nF,OAAOk9E,QAAQ,mGAAoG0/B,GACjH,CAAP,EAAOtkM,KAAKylM,eAAc70I,GAAC,CACvB0zI,cAAa,GACVo8I,UAEV,EAOKqe,EAAAA,UAAAA,eAAN,SAAqBre,8EAKjB,OAJMp8I,EAAgBtkM,KAAKu/V,wBAAwB7e,GACnD1gV,KAAKw/V,iCAAiC37J,GAAAA,UAG/B,CAAP,EADuB7jM,KAAKs/V,qBAAqBh7J,GAC3Bx1F,OAAO4xO,SAChC,EAMDqe,EAAAA,UAAAA,YAAAA,SAAYre,GACR,IACI,IAAMp8I,EAAgBtkM,KAAKu/V,wBAAwB7e,GAGnD,OAFA1gV,KAAKw/V,iCAAiC37J,GAAAA,OAClB7jM,KAAK+/V,kBAAkBz7J,GACxBx1F,OAAO4xO,EAI7B,CAHC,MAAOl4U,IAEL,OAAOhP,QAAQE,OAAO8O,GACzB,CACJ,EAYDu2V,EAAAA,UAAAA,eAAAA,WAEI,OADA/+V,KAAK0nF,OAAOklH,QAAQ,yBACb5sM,KAAK2uU,qBAAuB3uU,KAAKyjU,eAAev+H,iBAAmB,EAC7E,EAUD65J,EAAAA,UAAAA,qBAAAA,SAAqBmC,GACjB,IAAMjzJ,EAAcjuM,KAAKklM,iBACzB,OAAK8C,GAAYjiL,QAAQm7U,IAAajzJ,GAAeA,EAAY55M,QAC7D2L,KAAK0nF,OAAOklH,QAAQ,8CACpB5sM,KAAK0nF,OAAOolQ,WAAW,mDAAmDoU,GACnEjzJ,EAAYt+L,QAAO,SAAAw+L,GAAc,OAAAA,EAAWxzM,SAAS8C,gBAAkByjW,EAASzjW,aAAa,IAAE,IAAM,OAE5GuC,KAAK0nF,OAAOklH,QAAQ,mEACb,KAEd,EASDmyJ,EAAAA,UAAAA,mBAAAA,SAAmB30J,GACf,IAAM6D,EAAcjuM,KAAKklM,iBACzB,OAAK8C,GAAYjiL,QAAQqkL,IAAkB6D,GAAeA,EAAY55M,QAClE2L,KAAK0nF,OAAOklH,QAAQ,mDACpB5sM,KAAK0nF,OAAOolQ,WAAW,wDAAwD1iJ,GACxE6D,EAAYt+L,QAAO,SAAAw+L,GAAc,OAAAA,EAAW/D,gBAAkBA,CAAa,IAAE,IAAM,OAE1FpqM,KAAK0nF,OAAOklH,QAAQ,iEACb,KAEd,EASDmyJ,EAAAA,UAAAA,oBAAAA,SAAoBl0J,GAChB,IAAMoD,EAAcjuM,KAAKklM,iBACzB,OAAK8C,GAAYjiL,QAAQ8kL,IAAmBoD,GAAeA,EAAY55M,QACnE2L,KAAK0nF,OAAOklH,QAAQ,oDACpB5sM,KAAK0nF,OAAOolQ,WAAW,yDAAyDjiJ,GACzEoD,EAAYt+L,QAAO,SAAAw+L,GAAc,OAAAA,EAAWtD,iBAAmBA,CAAc,IAAE,IAAM,OAE5F7qM,KAAK0nF,OAAOklH,QAAQ,kEACb,KAEd,EAMDmyJ,EAAAA,UAAAA,iBAAAA,SAAiBhzJ,GACb/rM,KAAKyjU,eAAep9H,iBAAiB0F,EACxC,EAKDgzJ,EAAAA,UAAAA,iBAAAA,WACI,OAAO/+V,KAAKyjU,eAAen9H,kBAC9B,EAaSy4J,EAAAA,UAAAA,iCAAV,SAA2Cn1J,EAAkC8/H,GAkBzE,QAlByE,IAAAA,IAAAA,GAAAA,GACzE1pU,KAAK0nF,OAAOklH,QAAQ,4CAEpBmhI,GAAaozB,2BAA2BnhW,KAAK2uU,sBAG7CZ,GAAaqzB,sBAAsBx3J,EAAiB5pM,KAAKzG,OAAOkxV,OAAOnc,uBAGvEP,GAAa4yB,6BAGb5yB,GAAaszB,4BAGbtzB,GAAakxB,yCAAyCj/V,KAAKzG,OAAOkxV,OAAO5b,kBAAmB7uU,KAAK8uU,aAG7FllI,IAAoB/F,GAAAA,UACpB7jM,KAAKzG,OAAO2U,MAAMyiM,gBAAkBnN,GAAqBmmH,gBACxD3pT,KAAKzG,OAAO2U,MAAM0iM,uBACnB,MAAMnM,GAA8B68J,yCAGpC13J,IAAoB/F,GAAAA,UAA4B+F,IAAoB/F,GAAAA,OACpE7jM,KAAKuhW,4BAA4B73B,EAExC,EAQSq1B,EAAAA,UAAAA,4BAAV,SAAsCr1B,GAClC1pU,KAAK0nF,OAAOklH,QAAQ,kEAEpBmhI,GAAa4yB,6BAGTj3B,GACA1pU,KAAKyjU,eAAeiG,0BAAyB,EAEpD,EAMeq1B,EAAAA,UAAAA,mBAAhB,SAAmCvkW,EAA0DsuV,EAAcn8I,wEAEvG,GADA3sM,KAAK0nF,OAAOmD,MAAM,8BACb7qF,KAAK+zV,wBACN,MAAMhvC,GAAiBqyC,4CAK3B,MAAO,CAAP,EAFqB,IAAIlH,GAAwBlwV,KAAKzG,OAAQyG,KAAKyjU,eAAgBzjU,KAAKirT,cAAejrT,KAAK0nF,OAAQ1nF,KAAKs5G,aAAct5G,KAAKuqV,iBAAkBzB,EAAO9oV,KAAKgrT,kBAAmBhrT,KAAK+zV,wBAAyBpnJ,GAAa3sM,KAAK2/V,mBAAmBnlW,GAAUwF,KAAK8+V,sBAAuBtkW,EAAQ8pM,eAE1RqpJ,aAAanzV,SACpC,EAMSukW,EAAAA,UAAAA,aAAV,SAAuBvkW,EAA4DmyM,GAE/E,GADA3sM,KAAK0nF,OAAOmD,MAAM,wBACbmoQ,GAAqBwD,kBAAkBx2V,KAAKzG,OAAQyG,KAAK0nF,OAAQ1nF,KAAK+zV,wBAAyBv5V,EAAQuhU,sBAExG,OADA/7T,KAAK0nF,OAAOmD,MAAM,oEACX,EAGX,GAAIrwF,EAAQo5U,OACR,OAAQp5U,EAAQo5U,QACZ,KAAK5yI,GAAY32K,KACjB,KAAK22K,GAAYG,QACjB,KAAKH,GAAYC,MACbjhM,KAAK0nF,OAAOmD,MAAM,uDAClB,MACJ,QAEI,OADA7qF,KAAK0nF,OAAOmD,MAAM,0BAA0BrwF,EAAQo5U,OAAM,yDACnD,EAInB,SAAKjnI,IAAc3sM,KAAK2/V,mBAAmBnlW,MACvCwF,KAAK0nF,OAAOmD,MAAM,oEACX,EAId,EAOSk0Q,EAAAA,UAAAA,mBAAV,SAA6BvkW,GACzB,IAAMuxM,EAAUvxM,EAAQuxM,SAAW/rM,KAAKyjU,eAAe+9B,sBAAsBhnW,EAAQqsU,UAAWrsU,EAAQgxF,MAAQxrF,KAAKsmM,mBAErH,OAAOyF,GAAWA,EAAQP,iBAAmB,EAChD,EAMSuzJ,EAAAA,UAAAA,kBAAV,SAA4Bz6J,GACxB,OAAO,IAAIgxJ,GAAYt1V,KAAKzG,OAAQyG,KAAKyjU,eAAgBzjU,KAAKirT,cAAejrT,KAAK0nF,OAAQ1nF,KAAKs5G,aAAct5G,KAAKuqV,iBAAkBvqV,KAAKgrT,kBAAmBhrT,KAAK8+V,sBAAuB9+V,KAAK+zV,wBAAyBzvJ,EACzN,EAMSy6J,EAAAA,UAAAA,qBAAV,SAA+Bz6J,GAC3B,OAAO,IAAIk1J,GAAex5V,KAAKzG,OAAQyG,KAAKyjU,eAAgBzjU,KAAKirT,cAAejrT,KAAK0nF,OAAQ1nF,KAAKs5G,aAAct5G,KAAKuqV,iBAAkBvqV,KAAKgrT,kBAAmBhrT,KAAK8+V,sBAAuB9+V,KAAK+zV,wBAAyBzvJ,EAC5N,EAMSy6J,EAAAA,UAAAA,yBAAV,SAAmCz6J,GAC/B,OAAO,IAAIm3J,GAAmBz7V,KAAKzG,OAAQyG,KAAKyjU,eAAgBzjU,KAAKirT,cAAejrT,KAAK0nF,OAAQ1nF,KAAKs5G,aAAct5G,KAAKuqV,iBAAkB3mJ,GAAM+B,UAAW3lM,KAAKgrT,kBAAmBhrT,KAAK8+V,sBAAuB9+V,KAAK+zV,wBAAyBzvJ,EACjP,EAKSy6J,EAAAA,UAAAA,wBAAV,SAAkCz6J,GAC9B,OAAO,IAAI8qJ,GAAkBpvV,KAAKzG,OAAQyG,KAAKyjU,eAAgBzjU,KAAKirT,cAAejrT,KAAK0nF,OAAQ1nF,KAAKs5G,aAAct5G,KAAKuqV,iBAAkBvqV,KAAKgrT,kBAAmBhrT,KAAK+zV,wBAAyBzvJ,EACnM,EAKSy6J,EAAAA,UAAAA,0BAAV,SAAoCz6J,GAChC,OAAO,IAAI23J,GAAoBj8V,KAAKzG,OAAQyG,KAAKyjU,eAAgBzjU,KAAKirT,cAAejrT,KAAK0nF,OAAQ1nF,KAAKs5G,aAAct5G,KAAKuqV,iBAAkBvqV,KAAKgrT,kBAAmBhrT,KAAK+zV,wBAAyBzvJ,EACrM,EAKSy6J,EAAAA,UAAAA,2BAAV,SAAqCz6J,GACjC,OAAO,IAAIo4J,GAAqB18V,KAAKzG,OAAQyG,KAAKyjU,eAAgBzjU,KAAKirT,cAAejrT,KAAK0nF,OAAQ1nF,KAAKs5G,aAAct5G,KAAKuqV,iBAAkB3mJ,GAAMqB,mBAAoBjlM,KAAKgrT,kBAAmBhrT,KAAK+zV,wBAAyBzvJ,EAChO,EAMDy6J,EAAAA,UAAAA,iBAAAA,SAAiB3yV,GACb,OAAOpM,KAAKs5G,aAAassF,iBAAiBx5L,EAC7C,EAMD2yV,EAAAA,UAAAA,oBAAAA,SAAoBjwJ,GAChB9uM,KAAKs5G,aAAausF,oBAAoBiJ,EACzC,EAQDiwJ,EAAAA,UAAAA,uBAAAA,SAAuB3yV,GACnB,OAAOpM,KAAKgrT,kBAAkBllH,uBAAuB15L,EACxD,EAQD2yV,EAAAA,UAAAA,0BAAAA,SAA0BjwJ,GACtB,OAAO9uM,KAAKgrT,kBAAkBjlH,0BAA0B+I,EAC3D,EAKDiwJ,EAAAA,UAAAA,2BAAAA,WACI/+V,KAAKs5G,aAAa0sF,4BACrB,EAKD+4J,EAAAA,UAAAA,4BAAAA,WACI/+V,KAAKs5G,aAAa2sF,6BACrB,EAKD84J,EAAAA,UAAAA,cAAAA,WACI,OAAO/+V,KAAK27U,UACf,EAKDojB,EAAAA,UAAAA,UAAAA,WACI,OAAO/+V,KAAK0nF,MACf,EAMDq3Q,EAAAA,UAAAA,UAAAA,SAAUr3Q,GACN1nF,KAAK0nF,OAASA,CACjB,EAODq3Q,EAAAA,UAAAA,yBAAAA,SAAyBlzB,EAAiBx+T,GAEtCrN,KAAKyjU,eAAeg+B,mBAAmB51B,EAAKx+T,EAC/C,EAMD0xV,EAAAA,UAAAA,oBAAAA,SAAoBxU,GAChBvqV,KAAKuqV,iBAAmBA,CAC3B,EAKDwU,EAAAA,UAAAA,iBAAAA,WACI,OAAO/+V,KAAKzG,MACf,EASSwlW,EAAAA,UAAAA,wBAAV,SAAkCvkW,GAC9B,OAAW,OAAPA,QAAO,IAAPA,OAAO,EAAPA,EAAS8pM,eACF9pM,EAAQ8pM,cAGftkM,KAAK2uU,qBACE3uU,KAAKirT,cAAc2F,gBAOvBnyH,GAAUyB,YACpB,EAGL,CAAC,mBCv/BG,WAAYsxI,GAAZ,MACIjqN,EAAAA,KAAAA,KAAMiqN,IAAc,YAEpBhqN,EAAKk6O,0BAA4B,IAAIhuR,KACxC,CAoKL,OAlM6ChjB,GAAAA,EAAAA,GAyCnCixS,EAAAA,UAAAA,cAAN,SAAoBnnW,8EAGhB,OAFM8pM,EAAwBtkM,KAAKu/V,wBAAwB/kW,GAC3DwF,KAAK0nF,OAAOklH,QAAQ,uBAAwBtI,GACrC,CAAP,EAAOtkM,KAAK+kM,qBAAoBn0I,GAAC,CAC7B0zI,cAAa,GACT9pM,GAAWqsM,WAEtB,EASD86J,EAAAA,UAAAA,WAAAA,SAAWnnW,GACP,IAAM8pM,EAAwBtkM,KAAKu/V,wBAAwB/kW,GAE3D,OADAwF,KAAK0nF,OAAOklH,QAAQ,oBAAqBtI,GAClCtkM,KAAK8kM,kBAAiBl0I,GAAC,CAC1B0zI,cAAa,GACT9pM,GAAWqsM,IAEtB,EAQK86J,EAAAA,UAAAA,mBAAN,SAAyBnnW,iGAMrB,GALM8pM,EAAgBtkM,KAAKu/V,wBAAwB/kW,GAC7ConW,EAAiB5hW,KAAKgrT,kBAAkBU,iBAAiBzK,GAAkB4gD,mBAAoBv9J,GACrGtkM,KAAKw/V,iCAAiC37J,GAAAA,QACtC7jM,KAAK0nF,OAAOklH,QAAQ,4BAA6BtI,KAC3CyH,EAAUvxM,EAAQuxM,SAAW/rM,KAAKsmM,oBAEpC,MAAMy+G,GAAiB+8C,uBAgB3B,OAdM9xB,EAAgC,CAClC1/H,SAAUtwM,KAAKzG,OAAOmB,KAAK41M,SAC3B1E,UAAWpxM,EAAQoxM,WAAanN,GAAUyB,aAC1C4G,OAAQtsM,EAAQssM,OAChBiqI,sBAAuBhlI,EAAQ3B,cAC/B8B,OAAQ1xM,EAAQ0xM,OAChB6vH,qBAAsBvhU,EAAQuhU,qBAC9BnP,sBAAuBpyT,EAAQoyT,sBAC/BE,mBAAoBtyT,EAAQsyT,mBAC5BkkB,UAAWx2U,EAAQw2U,UACnB/U,OAAQzhU,EAAQyhU,QAEd8lC,EAAmB15V,KAAKI,UAAUunU,GAEV,qBADxBgyB,EAAiBhiW,KAAK0hW,0BAA0BnlV,IAAIwlV,KAEtD/hW,KAAK0nF,OAAOklH,QAAQ,uEAAwEtI,GACtF/oM,EAAWyE,KAAKiiW,wBAAuBrxS,GAACA,GAAAA,CAAAA,EACvCp2D,GAAO,CACV8pM,cAAa,IACdyH,GACE5rM,MAAK,SAAC6N,GAUH,OATAw5G,EAAKk6O,0BAA0BhpR,OAAOqpR,GACtCH,EAAe70C,eAAe,CAC1B/qR,SAAS,EACT09S,UAAW1xU,EAAO0xU,UAClBpvB,gBAAiBtiT,EAAOqlR,YAAYh/R,OACpCk8T,YAAaviT,EAAO29L,QAAQt3M,OAC5Bm8V,eAAgBxiV,EAAO2xU,mBAE3BiiB,EAAevyC,mBACRrhT,CACV,IACAwH,OAAM,SAACtS,GAQJ,MAPAskH,EAAKk6O,0BAA0BhpR,OAAOqpR,GACtCH,EAAe70C,eAAe,CAC1B/oH,UAAW9gM,EAAM8gM,UACjBwoJ,aAActpV,EAAMkhM,SACpBpiK,SAAS,IAEb4/T,EAAevyC,mBACTnsT,CACT,IACLlD,KAAK0hW,0BAA0BplV,IAAIylV,EAAkBxmW,GAC9C,CAAP,EAAOA,KAEPyE,KAAK0nF,OAAOklH,QAAQ,0FAA2FtI,GAC/Gs9J,EAAe70C,eAAe,CAC1B/qR,SAAS,IAGb4/T,EAAeryC,qBACR,CAAP,EAAOyyC,SAEd,EAQeL,EAAAA,UAAAA,wBAAhB,SAAwCnnW,EAAwBuxM,2HAC5D/rM,KAAKs5G,aAAaw2N,UAAUvnI,GAAAA,oBAA+B1E,GAAAA,OAAwBrpM,GAC7E0nW,EAAuBliW,KAAKgrT,kBAAkBU,iBAAiBzK,GAAkBkhD,wBAAyB3nW,EAAQ8pM,eAGpH0uJ,GAAqBwD,kBAAkBx2V,KAAKzG,OAAQyG,KAAK0nF,OAAQ1nF,KAAK+zV,wBAAyBv5V,EAAQuhU,uBAAyBhwH,EAAQP,iBACxIxrM,KAAK0nF,OAAOklH,QAAQ,yEACdyiJ,EAAa,SACZ70V,GAAO,CACVuxM,QAAO,IAEX/9L,EAAShO,KAAK8/V,mBAAmBzQ,EAAezrJ,GAAM4rJ,+BAA+Bh6U,OAAM,SAAOhN,GAAY,kEAE1G,GAAIA,aAAa0kV,IAAmB1kV,EAAEwoV,UAMlC,OALAhxV,KAAK0nF,OAAOklH,QAAQ,8EACpB5sM,KAAK+zV,6BAA0B12V,EAIxB,CAAP,EAD2B2C,KAAKkgW,yBAAyB1lW,EAAQ8pM,eACvCqpJ,aAAanzV,IAE3C,MAAMgO,OACT,WAjBD,aAqBsB,OAFtBxI,KAAK0nF,OAAOklH,QAAQ,kEAEE,IADhBqjJ,EAAoBjwV,KAAKoiW,wBAAwB5nW,EAAQ8pM,gBACjB+9J,wBAAwB7nW,EAASuxM,WAAzEu2J,EAAgB18P,EAAAA,OACtB53F,EAASiiV,EAAkBtC,aAAa2U,GAAe9sV,OAAM,6EACzD,MAAO,CAAP,EAAOxV,KAAK6tV,2BAA2ByU,SAC1C,qBAGL,MAAO,CAAP,EAAOt0V,EAAO7N,MAAK,SAAC5E,GAShB,OARAisH,EAAKlO,aAAaw2N,UAAUvnI,GAAAA,sBAAiC1E,GAAAA,OAAwBtoM,GACrF2mW,EAAqBn1C,eAAe,CAChC/qR,SAAS,EACT09S,UAAWnkV,EAASmkV,UACpBpvB,gBAAiB/0T,EAAS83R,YAAYh/R,OACtCk8T,YAAah1T,EAASowM,QAAQt3M,OAC9Bm8V,eAAgBj1V,EAASokV,mBAEtBpkV,CACV,IAAEia,OAAM,SAAC+sV,GAON,MANA/6O,EAAKlO,aAAaw2N,UAAUvnI,GAAAA,sBAAiC1E,GAAAA,OAAwB,KAAM0+J,GAC3FL,EAAqBn1C,eAAe,CAChC/oH,UAAWu+J,EAAkBv+J,UAC7BwoJ,aAAc+V,EAAkBn+J,SAChCpiK,SAAS,IAEPugU,CACT,WACJ,EACL,CAlMA,EAA6CxD,ICtBzCh8P,GAAGh/F,OAAO7E,OAAO24I,GAAG9zI,OAAOE,eAAmBu+V,GAAGz+V,OAAOkpB,yBAA6Bw1U,GAAG1+V,OAAO8L,oBAAwB6yV,GAAG3+V,OAAOuK,eAAe40F,GAAGn/F,OAAO/E,UAAUwP,eAA8bmqI,GAAhY,SAAChoI,EAAEnI,GAAH,OAAO,kBAAKA,GAAGmI,GAAGnI,EAAE,CAAC9P,QAAQ,CAAC,IAAIA,QAAQ8P,GAAGA,EAAE9P,OAAxC,CAAP,CAAmYyrG,EAAG,SAACoG,EAAGkuC,IAAM,SAAU9nI,EAAEnI,GAAc,iBAAJ+hG,GAAyB,oBAAJkuC,EAAgBjwI,EAAE+hG,GAAmB,mBAARn8B,QAAoBA,oBAAAA,KAAWA,OAAO,CAAC,WAAW5lE,GAAwDA,GAApDmI,EAAqB,oBAAZ41J,WAAwBA,WAAW51J,GAAGQ,MAASwxV,kBAAkB,CAAC,EAAzM,EAA+Mp4P,GAAG,SAAS55F,GAAgB,IAA6HtQ,OAA4B,IAA1Bi+D,OAAOskS,iBAA0B,iBAAiBtkS,OAAOskS,iBAAiB3hW,EAAE,UAAUgvD,EAAI,EAAFhvD,EAAkXsqF,EAAE,IAAI3X,QAAQq7E,EAAjhB,SAAS/+F,GAAG,OAAO,SAASprD,EAAE2Y,GAAG,OAAOyyC,EAAE5zC,IAAIxX,EAAE2Y,GAAGA,CAAE,CAAC,CAA6d5M,CAAE06E,GAAG7uE,EAAjY,SAASwzC,EAAEprD,GAAG,OAAO,SAAS2Y,GAAG,IAAIosH,EAAE/kI,EAAEyX,IAAIkB,GAAG81C,OAAM,IAAJs2E,EAAWpsH,EAAE/J,KAAKm2H,EAAE55E,EAAE45E,EAAE,EAAE,EAAE,IAAIpsH,EAAEi6C,IAAInE,GAAG,OAAOrD,EAAEzyC,EAAE81C,GAAG,GAAG91C,EAAE/J,KAAKzS,EAAE,CAAC,KAAKwc,EAAEi6C,IAAInE,IAAIA,EAAE9sD,KAAKC,MAAMD,KAAK8jB,SAAS0lC,GAAG,OAAOC,EAAEzyC,EAAE81C,EAAG,IAAG91C,EAAE/J,KAAKrT,EAAE,MAAM,IAAIxM,MAAM,kGAAkG,KAAK4pB,EAAEi6C,IAAInE,IAAIA,EAAE9sD,KAAKC,MAAMD,KAAK8jB,SAASlqB,GAAG,OAAO6vD,EAAEzyC,EAAE81C,EAAG,CAAC,CAAwBpqB,CAAE8lH,EAAE1jE,GAAGjrF,EAAjmB,SAAS4vD,GAAG,OAAO,SAASprD,GAAG,IAAI2Y,EAAEyyC,EAAEprD,GAAG,OAAOA,EAAE2Z,IAAIhB,GAAGA,CAAE,CAAC,CAAsiBjV,CAAEkU,GAAG/L,EAAEkyV,gBAAgBviW,EAAEqQ,EAAEmyV,qBAAqBpmV,EAAE3Y,OAAOE,eAAe0M,EAAE,aAAa,CAAChV,OAAM,GAAK,GAAE,IAA+NgoG,EAAAA,UAArB,IAAwf4xC,GAAxxD,SAAA5kI,GAAC,OAArL,SAACA,EAAEnI,EAAEqI,GAAK,GAAGrI,GAAa,iBAAHA,GAAuB,mBAAHA,EAAjC,YAA4Di6V,GAAGj6V,IAA/D,yBAAuDnI,EAAvD,SAAmE6iG,GAAGhiG,KAAKyP,EAAEtQ,IAAQ,YAAJA,GAAew3I,GAAGlnI,EAAEtQ,EAAE,CAACkc,IAAI,kBAAI/T,EAAEnI,EAAN,EAAS6oB,aAAarY,EAAE2xV,GAAGh6V,EAAEnI,KAAKwQ,EAAEqY,YAAhJ,EAA+C,2BAAmB,GAAlE,gCAA6J,OAAOvY,CAAE,CAAOoyV,CAA9R,SAAApyV,GAAC,OAAEknI,GAAGlnI,EAAE,aAAa,CAAChV,OAAM,GAA3B,CAAgSqnW,CAAGnrN,GAAM,MAAHlnI,EAAQoyF,GAAG2/P,GAAG/xV,IAAI,CAAC,EAAE,UAAUA,GAAGA,EAAE0/C,YAAY,YAAY1/C,EAAE,CAAC4L,IAAI,kBAAI5L,EAAEF,OAAN,EAAcyY,YAAW,GAAI,CAACvtB,MAAMgV,EAAEuY,YAAW,KAAMvY,EAArI,CAA0xDsyV,CAAGtqN,MAAg7DxD,GAAG,KAAiwDlsG,IAAzvD,SAACt4B,EAAEnI,GAAH,CAAqnDguI,EAAp8G,SAAA7lI,GAAI,IAAInI,EAAE,IAAIkrE,IAAI,CAAC,CAAC,EAAE,WAAM,KAAI7iE,EAAE,IAAI6iE,IAAI,CAAC,CAAC,EAAE,WAAM,KAAIrzE,EAAE,IAAIqzE,IAAIzyE,EAAE,IAAI0sD,OAAOh9C,GAAG,OAAO1P,EAAEpD,iBAAiB,WAAU,YAAY,IAAL6e,EAAK,EAAV7iB,KAAW,GAAlO,SAAA8W,GAAC,YAAa,IAAXA,EAAE7U,QAA4B,SAAX6U,EAAE7U,MAAvB,CAAoOy6I,CAAG75H,GAAG,CAAC,MAAoCA,EAAhC1gB,OAAgBsE,EAApB,EAAYo2G,QAAoB9lG,EAAhC,EAAsBsyV,UAAgB,GAAO,aAAJtyV,EAAe,CAAC,IAAIs/C,EAAE1nD,EAAE+T,IAAIjc,GAAG,GAAa,iBAAH4vD,EAAY,CAAC,IAAIprD,EAAEzE,EAAEkc,IAAI2zC,GAAG,QAAO,IAAJprD,GAAYA,EAAE4xG,UAAUp2G,GAAGwE,EAAEo+V,YAAYtyV,EAAE,MAAM,IAAI/c,MAAM,sCAAuC,KAAK,IAAa,oBAAHq8D,EAAwB,MAAM,IAAIr8D,MAAM,uCAAzBq8D,GAAS,CAAuD,MAAK,GAAO,YAAJt/C,EAAc,CAAC,IAAIs/C,EAAEr/C,EAAE0L,IAAIjc,GAAG,GAAa,iBAAH4vD,EAAY,CAAC,IAAIprD,EAAEzE,EAAEkc,IAAI2zC,GAAG,QAAO,IAAJprD,GAAYA,EAAE4xG,UAAUp2G,GAAGwE,EAAEo+V,YAAYtyV,EAAE,MAAM,IAAI/c,MAAM,sCAAuC,KAAK,IAAa,oBAAHq8D,EAAoC,MAAM,IAAIr8D,MAAM,uCAArCq8D,IAAIr/C,EAAE6nE,OAAOp4E,EAAQ,CAAuD,CAAC,KAAK,KAA/wB,SAAAqQ,GAAC,OAAY,OAAVA,EAAEzN,OAA2B,iBAANyN,EAAE/L,EAA3B,CAAixBixI,CAAGn5H,GAAoL,CAAC,IAAmBpc,EAAIoc,EAAnBxZ,MAAOzC,QAAc,MAAM,IAAI5M,MAAMyM,EAAG,CAA1N,IAAIA,EAAGoc,EAAN9X,GAAQgM,EAAEvQ,EAAEkc,IAAIjc,GAAG,QAAO,IAAJsQ,EAAW,MAAM,IAAI/c,MAAM,uCAAuC,IAAYq8D,EAAet/C,EAAvB8lG,QAAoB5xG,EAAG8L,EAAbsyV,UAAe7iW,EAAEq4E,OAAOp4E,GAAO,aAAJwE,EAAe0D,EAAEkwE,OAAOxoB,GAAGr/C,EAAE6nE,OAAOxoB,EAAoD,CAAC,IAAE,CAACkgB,cAAc,SAAA1zD,GAAI,IAAIpc,GAAE,EAAGi1I,GAAGutN,sBAAsBziW,GAAGA,EAAEic,IAAIhc,EAAE,CAACo2G,QAAQh6F,EAAEwmV,UAAU,aAAa16V,EAAE8T,IAAII,EAAEpc,GAAGW,EAAEqQ,YAAY,CAAC1M,GAAGtE,EAAExE,OAAO,QAAQE,OAAO,CAAC06G,QAAQh6F,EAAEwmV,UAAU,aAAc,EAAC99U,aAAa,SAAA1I,GAAI,IAAIpc,GAAE,EAAGi1I,GAAGutN,sBAAsBziW,GAAGA,EAAEic,IAAIhc,EAAE,CAACo2G,QAAQh6F,EAAEwmV,UAAU,YAAYryV,EAAEyL,IAAII,EAAEpc,GAAGW,EAAEqQ,YAAY,CAAC1M,GAAGtE,EAAExE,OAAO,QAAQE,OAAO,CAAC06G,QAAQh6F,EAAEwmV,UAAU,YAAa,EAACvyR,YAAY,SAACj0D,EAAEpc,GAAK,IAAIsQ,GAAE,EAAG2kI,GAAGutN,sBAAsBt6V,GAAG,OAAOA,EAAE8T,IAAI1L,GAAE,WAAK8L,IAAqB,mBAAVlU,EAAE+T,IAAI3L,IAAgB3P,EAAEqQ,YAAY,CAAC1M,GAAG,KAAK9I,OAAO,MAAME,OAAO,CAACghB,MAAM1c,EAAEkK,IAAI2a,YAAY3a,MAAMksG,QAAQ9lG,EAAEsyV,UAAU,aAAc,IAAEjiW,EAAEqQ,YAAY,CAAC1M,GAAG,KAAK9I,OAAO,MAAME,OAAO,CAACghB,MAAM1c,EAAEkK,IAAI2a,YAAY3a,MAAMksG,QAAQ9lG,EAAEsyV,UAAU,cAActyV,CAAE,EAACrU,WAAW,SAACmgB,EAAEpc,GAAK,IAAIsQ,GAAE,EAAG2kI,GAAGutN,sBAAsBjyV,GAAG,OAAOA,EAAEyL,IAAI1L,EAAE8L,GAAGzb,EAAEqQ,YAAY,CAAC1M,GAAG,KAAK9I,OAAO,MAAME,OAAO,CAACghB,MAAM1c,EAAEkK,IAAI2a,YAAY3a,MAAMksG,QAAQ9lG,EAAEsyV,UAAU,aAAatyV,CAAE,EAAE,GAAoN,87CAA+mD,WAAxC,oBAARjF,OAAoB,mBAAmBA,SAAsBqgF,GAAE,CAACzvF,WAAW0sC,GAAE1sC,WAAWiC,KAAKmN,QAAQpP,WAAW6oB,aAAa6jB,GAAE7jB,aAAa5mB,KAAKmN,QAAQyZ,aAAaurD,YAAY1nC,GAAE0nC,YAAYnyE,KAAKmN,QAAQglE,YAAYP,cAAcnnC,GAAEmnC,cAAc5xE,KAAKmN,QAAQykE,eAA4T,SAAS+yR,GAAGxyV,GAAGq7E,GAAEzvF,WAAWoU,EAAEpU,WAAWyvF,GAAE5mE,aAAazU,EAAEyU,aAAa4mE,GAAErb,YAAYhgE,EAAEggE,YAAYqb,GAAE5b,cAAcz/D,EAAEy/D,aAAc,KAA4iDlhE,GAAYuO,GAApjDoyI,GAAE,CAAC,EAAEphF,GAAE,WAAO,WAAYjmE,GAAE,UAACxI,KAAKi4V,QAAO,EAAGj4V,KAAK+zJ,GAAG,IAAIgX,eAAe/qK,KAAKoB,KAAKoH,EAAEqnJ,GAAErnJ,GAAGqnJ,GAAErnJ,IAAI,GAAGqnJ,GAAErnJ,GAAG3H,KAAKb,MAAMA,KAAK+zJ,GAAGkX,MAAMhuJ,QAAQjd,KAAK+zJ,GAAGiX,MAAM/tJ,QAAQjd,KAAKojW,UAAUpjW,KAAKojW,UAAU5kW,KAAKwB,MAAM2L,OAAO9N,iBAAiB,UAAUmC,KAAKojW,UAAW,CAAjP,mCAAiP,SAAU56V,GAAG,GAAGA,EAAE66V,cAAc13V,OAAOgqD,cAAcntD,EAAEhL,IAAIgtB,UAAU,EAAExqB,KAAKoB,KAAK/M,UAAU2L,KAAKoB,MAAmB,OAAboH,EAAEkgB,SAA3F,CAAkH,IAAI7X,EAAExI,KAAKC,MAAME,EAAEkgB,UAAU1oB,KAAK+zJ,GAAGiX,MAAM15J,YAAYT,EAAxD,CAA2D,GAA1a,yBAA0a,SAAYrI,GAAE,WAAC,GAAGxI,KAAKi4V,OAAO,MAAM,IAAIpkW,MAAM,qBAAqB,IAAIgd,EAAExI,KAAKI,UAAUD,GAAGnI,EAAC,UAAIL,KAAKoB,KAAT,YAAiB4O,OAAO7c,KAAKqX,QAA7B,OAAsCwF,OAAOvJ,KAAK8jB,WAAY5e,OAAOgqD,aAAaV,QAAQ50D,EAAEwQ,GAAGm7E,GAAEzvF,YAAW,WAAKoP,OAAOgqD,aAAaT,WAAW70D,EAAG,GAAC,KAAKwvJ,GAAE7vJ,KAAKoB,MAAM7D,SAAQ,SAAA0D,GAAIA,IAAI,GAAMA,EAAE8yJ,GAAGiX,MAAM15J,YAAYjJ,KAAKC,MAAMuI,GAAI,GAAE,GAA1uB,mBAA0uB,WAAQ,IAAG7Q,KAAKi4V,OAAR,CAAsBj4V,KAAKi4V,QAAO,EAAGj4V,KAAK+zJ,GAAGkX,MAAM78E,QAAQpuF,KAAK+zJ,GAAGiX,MAAM58E,QAAQziF,OAAOtR,oBAAoB,UAAU2F,KAAKojW,WAAW,IAAI56V,EAAEqnJ,GAAE7vJ,KAAKoB,MAAM9E,QAAQ0D,MAAM6vJ,GAAE7vJ,KAAKoB,MAAML,OAAOyH,EAAE,EAAxK,CAA2K,GAAl7B,qBAAk7B,WAAgB,OAAOxI,KAAK+zJ,GAAGkX,MAAM75J,SAAU,EAAj+B,IAAi+B,SAAc5I,GAAGxI,KAAK+zJ,GAAGkX,MAAM75J,UAAU5I,CAAE,GAA5gC,0BAA4gC,WAAqB,OAAOxI,KAAK+zJ,GAAGkX,MAAMq4L,cAAe,EAArkC,IAAqkC,SAAmB96V,GAAGxI,KAAK+zJ,GAAGkX,MAAMq4L,eAAe96V,CAAE,GAA1nC,8BAA0nC,SAAiBA,EAAEqI,GAAG,OAAO7Q,KAAK+zJ,GAAGkX,MAAMptK,iBAAiB2K,EAAEqI,EAAG,GAA3rC,iCAA2rC,SAAoBrI,EAAEqI,GAAG,OAAO7Q,KAAK+zJ,GAAGkX,MAAM5wK,oBAAoBmO,EAAEqI,EAAG,GAAlwC,2BAAkwC,SAAcrI,GAAG,OAAOxI,KAAK+zJ,GAAGkX,MAAMh3J,cAAczL,EAAG,KAAzzC,KAA2zC+6V,GAAkB,oBAAR53V,YAAoB,EAAuC,mBAAzBA,OAAO63V,iBAA6B73V,OAAO63V,iBAAiB/0R,GAAG,SAASg1R,KAAO,IAAJ9yV,EAAI,uDAAF,EAAG,OAAO,IAAInX,SAAQ,SAAAgP,GAAC,OAAEwjF,GAAEzvF,WAAWiM,EAAEmI,EAAjB,GAAqB,UAASskI,KAAK,OAAOxuI,KAAK8jB,SAASvjB,SAAS,IAAIwjB,UAAU,EAAG,EAAgB/M,GAA2UvO,KAAIA,GAAE,CAAC,IAA7UuO,GAAEimV,MAAM,GAAG,QAAQjmV,GAAEA,GAAEkmV,KAAK,GAAG,OAAOlmV,GAAEA,GAAEmmV,MAAM,GAAG,QAAQnmV,GAAEA,GAAEomV,SAAS,GAAG,WAAWpmV,GAAEA,GAAEqmV,WAAW,GAAG,aAAarmV,GAAEA,GAAE+P,KAAK,GAAG,OAAO/P,GAAEA,GAAEsmV,OAAO,GAAG,SAAStmV,GAAEA,GAAE05T,OAAO,GAAG,SAAS15T,GAAEA,GAAEumV,MAAM,GAAG,QAAQvmV,GAAEA,GAAEwmV,MAAM,GAAG,QAAQxmV,GAAEA,GAAEymV,SAAS,IAAI,WAAWzmV,GAAEA,GAAE0mV,MAAM,IAAI,QAAQ1mV,GAAEA,GAAE2mV,OAAO,IAAI,SAAS3mV,GAAEA,GAAE4mV,QAAQ,IAAI,UAAuB,IAAs1DpxS,GAAl1DunF,GAAE,WAAO,WAAYhyI,EAAEqI,GAAE,UAAC7Q,KAAKE,MAAM+0I,KAAKj1I,KAAKskW,UAAS,EAAGtkW,KAAKukW,QAAO,EAAGvkW,KAAKwkW,YAAW,EAAGxkW,KAAKykW,SAAQ,EAAGzkW,KAAK0kW,UAAU,GAAG1kW,KAAKse,UAAU,GAAGte,KAAKyjP,QAAQj7O,EAAExI,KAAK0E,QAAQmM,EAAE7Q,KAAK6C,MAAM7C,KAAK6C,MAAMrE,KAAKwB,MAAMA,KAAK2kW,gBAAgB3kW,KAAK2kW,gBAAgBnmW,KAAKwB,MAAMA,KAAK4kW,WAAW5kW,KAAK4kW,WAAWpmW,KAAKwB,KAAM,CAA9S,8DAA8S,kGAAiBA,KAAKskW,WAAUtkW,KAAKukW,OAArC,0CAAkD,GAAlD,WAAwDvkW,KAAKwkW,WAA7D,0CAA+ExkW,KAAKykW,SAAQ,GAAG,IAA/F,cAAkGzkW,KAAKwkW,YAAW,EAAOh8V,GAAE,EAAGqI,EAAE,SAAAxQ,GAAI,MAAsBA,EAAExG,KAAdoH,EAAV,EAAIf,MAAe+vD,EAAnB,EAAYx8C,OAAiBxS,IAAI,EAAKf,QAAQ+vD,IAAI/gD,GAAEw0V,OAAOziW,EAAE,EAAKf,QAAQsI,GAAE,GAAIynD,IAAI/gD,GAAEy0V,OAAOn7V,GAAE,GAAK,EAACxI,KAAKyjP,QAAQ5lP,iBAAiB,UAAUgT,GAAjR,SAA+R7Q,KAAK4kW,WAAW11V,GAAEw0V,OAAjT,UAA8TD,GAAGzjW,KAAK0E,QAAQmgW,cAA9U,eAA4V7kW,KAAKyjP,QAAQppP,oBAAoB,UAAUwW,GAAG7Q,KAAKwkW,YAAW,EAA1Z,kBAA6Zh8V,IAAExI,KAAKykW,SAAQzkW,KAAK6C,SAAY7C,KAAK8kW,cAAa,IAA/c,4DAA+d,GAA/d,0DAA9S,mFAAixB,WAAiB,WAAC,GAAG9kW,KAAKskW,SAAS,OAAO9qW,QAAQC,UAAU,IAAI+O,GAAE,EAAGqI,EAAE,KAAK,OAAO,IAAIrX,SAAQ,SAAA6G,GAAI,IAAIY,EAAE,WAAK,IAAGuH,EAAH,CAAYA,GAAE,EAAGwjF,GAAE5b,cAAcv/D,GAAG,IAAIs4B,EAAE,EAAKu7T,UAAUpoW,QAAQuU,GAAG,EAAK6zV,UAAU3jW,OAAOooC,EAAE,GAAG,EAAKs6M,QAAQppP,oBAAoB,UAAU41D,GAAG5vD,GAAlI,CAAsI,EAACwQ,EAAEm7E,GAAErb,aAAY,WAAK,EAAK9tE,QAAQ1C,MAAK,WAAK,EAAKmkW,UAAUrjW,GAAI,GAAE,GAAC,EAAKyD,QAAQqgW,kBAAkB,EAAKL,UAAU7jW,KAAKgQ,GAAG,IAAIo/C,EAAE,SAAA9mB,GAAkBA,EAAEtvC,KAAZ4Z,SAAqBvE,GAAE00V,OAAO,EAAK/gW,QAAQ1C,MAAK,WAAK,EAAKmkW,UAAUrjW,GAAI,GAAE,EAAC,EAAKwiP,QAAQ5lP,iBAAiB,UAAUoyD,EAAG,GAAE,GAA/wC,wBAA+wC,SAAWznD,GAAGxI,KAAKyjP,QAAQnyO,YAAY,CAACmC,OAAOjL,EAAEtI,MAAMF,KAAKE,OAAQ,GAAn1C,wBAAm1C,WAAY,WAACF,KAAKskW,UAAS,EAAG,IAAI97V,EAAE,SAAAqI,GAAkBA,EAAEhX,KAAZ4Z,SAAqBvE,GAAEw0V,OAAO,EAAKkB,WAAW11V,GAAEy0V,KAAM,EAAC,OAAO3jW,KAAKyjP,QAAQ5lP,iBAAiB,UAAU2K,GAAGxI,KAAKse,UAAUzd,KAAK2H,GAAGxI,KAAK4kW,WAAW11V,GAAEy0V,KAAM,GAAvhD,+BAAuhD,WAAoB,OAAO3jW,KAAKglW,WAAwBhlW,KAAKglW,SAAShlW,KAAK2kW,mBAAlC3kW,KAAKglW,QAA8D,GAAnoD,mBAAmoD,WAAO,WAAChlW,KAAKukW,SAASvkW,KAAKukW,QAAO,EAAGvkW,KAAKskW,UAAS,EAAGtkW,KAAK4kW,WAAW11V,GAAE00V,OAAO5jW,KAAKse,UAAU/gB,SAAQ,SAAAiL,GAAC,OAAE,EAAKi7O,QAAQppP,oBAAoB,UAAUmO,EAA7C,IAAiDxI,KAAK0kW,UAAUnnW,SAAQ,SAAAiL,GAAC,OAAEwjF,GAAE5b,cAAc5nE,EAAlB,IAAuB,KAA10D,MAAk1D,SAAUnI,GAAGA,EAAEA,EAAE4kW,SAAS,GAAG,WAAW5kW,EAAEA,EAAE0jW,OAAO,GAAG,SAAS1jW,EAAEA,EAAEmtB,KAAK,GAAG,MAA3E,EAAoFylC,KAAIA,GAAE,CAAC,IAAI,IAAI0jF,GAAE,WAAO,WAAYnuI,GAAE,qBAACxI,KAAKE,MAAM+0I,KAAKj1I,KAAK8uF,SAAS,IAAIpb,IAAI1zE,KAAKklW,SAAQ,EAAGllW,KAAKmlW,cAAa,EAAG,IAAgBt0V,EAAGrI,EAAf48V,YAAiB,GAAGplW,KAAK0E,QAAQ8D,EAAExI,KAAKyjP,QAAQ,IAAI8/G,GAAG1yV,GAAG7Q,KAAK8uF,SAASxyE,IAAItc,KAAKE,MAAM,GAAGsI,EAAE68V,eAAe,CAA+CrlW,KAAKslW,QAAQ,IAAI9qN,GAAGx6I,KAAKyjP,QAAjE,CAACshH,iBAAiB,IAAIF,aAAa,MAAyC7kW,KAAKslW,QAAQC,mBAAoB,CAAAvlW,KAAKyjP,QAAQ5lP,iBAAiB,WAAU,SAAAwC,GAAI,MAA6BA,EAAExG,KAApBoH,EAAX,EAAIwS,OAAew8C,EAAnB,EAAa/vD,MAAaipC,EAA1B,EAAqBtvC,KAAe,OAAOoH,GAAG,KAAKiO,GAAE20V,SAAS,EAAK/0Q,SAASxyE,IAAI2zC,EAAE,GAAG,MAAM,KAAK/gD,GAAE40V,WAAW,EAAKh1Q,SAASpW,OAAOzoB,GAAG,MAAM,KAAK/gD,GAAEse,KAAK,EAAKg4U,KAAKv1S,GAAG,MAAM,KAAK/gD,GAAE60V,OAAO,EAAK10Q,OAAOp/B,GAAG,MAAM,KAAK/gD,GAAEioU,OAAO,EAAKvD,OAAO3jR,GAAG,MAAM,KAAK/gD,GAAE80V,MAAM,EAAK/mV,MAAMgzC,GAAG,MAAM,KAAK/gD,GAAE+0V,MAAM,EAAKtjU,MAAMsvB,GAAG,MAAM,KAAK/gD,GAAEg1V,SAAS,EAAKuB,SAASx1S,GAAG,MAAM,KAAK/gD,GAAEi1V,MAAM,EAAK3+U,MAAMyqC,GAAG,MAAM,KAAK/gD,GAAEk1V,OAAO,EAAKp5U,OAAOilC,GAAG,MAAM,KAAK/gD,GAAEm1V,QAAQ,EAAK3/V,QAAQghW,UAAUv8T,GAAU,IAAEnpC,KAAKzB,KAAK2Q,GAAE20V,SAAU,CAAr1B,gCAAq1B,WAAe,IAAI7jW,KAAKslW,QAAQ,MAAM,IAAIzxW,MAAM,kGAAkG,OAAOmM,KAAKslW,QAAQhB,QAAS,GAApgC,oBAAogC,WAAoB,IAAb97V,EAAa,uDAAXxI,KAAKE,MAAOF,KAAK8uF,SAASxyE,IAAI9T,EAAE,GAAG,IAAIqI,EAAE,GAAI7Q,KAAK8uF,SAAS/X,UAAU73C,OAAM,SAAA7+B,GAAC,OAAM,IAAJA,CAAF,IAASmI,IAAIxI,KAAKE,OAAOF,KAAKzB,KAAK2Q,GAAEioU,QAAQtmU,GAAG7Q,KAAK0E,QAAQihW,UAAW,GAAjqC,kBAAiqC,WAAkB,IAAbn9V,EAAa,uDAAXxI,KAAKE,MAAOF,KAAK8uF,SAASxyE,IAAI9T,EAAE,GAAG,IAAIqI,EAAE,GAAI7Q,KAAK8uF,SAAS/X,UAAU73C,OAAM,SAAA7+B,GAAC,OAAM,IAAJA,CAAF,IAASmI,IAAIxI,KAAKE,OAAOF,KAAKzB,KAAK2Q,GAAEse,OAAOxtB,KAAKklW,SAASr0V,IAAI7Q,KAAKklW,SAAQ,EAAGllW,KAAK0E,QAAQ+jG,SAAU,GAAz1C,oBAAy1C,WAAoB,IAAbjgG,EAAa,uDAAXxI,KAAKE,MAAOF,KAAKklW,SAAQ,EAAGllW,KAAK8uF,SAASxyE,IAAI9T,EAAE,GAAG,IAAIqI,EAAE,GAAI7Q,KAAK8uF,SAAS/X,UAAUhiE,MAAK,SAAA1U,GAAC,OAAM,IAAJA,CAAF,IAASmI,IAAIxI,KAAKE,OAAOF,KAAKzB,KAAK2Q,GAAE60V,QAAQlzV,GAAG7Q,KAAK0E,QAAQkhW,WAAW5lW,KAAKmlW,aAAa38V,IAAIxI,KAAKE,KAAM,GAAtiD,mBAAsiD,WAAmB,IAAbsI,EAAa,uDAAXxI,KAAKE,MAAOF,KAAKklW,SAAQ,EAAGllW,KAAK8uF,SAASxyE,IAAI9T,EAAE,GAAGA,IAAIxI,KAAKE,MAAMF,KAAKzB,KAAK2Q,GAAE80V,OAAOhkW,KAAK0E,QAAQuY,OAAM,GAAIjd,KAAKmlW,aAAa38V,IAAIxI,KAAKE,KAAM,GAA3rD,mBAA2rD,WAAmB,IAAbsI,EAAa,uDAAXxI,KAAKE,MAAOF,KAAKklW,SAAQ,EAAGllW,KAAK8uF,SAASxyE,IAAI9T,EAAE,GAAGA,IAAIxI,KAAKE,MAAMF,KAAKzB,KAAK2Q,GAAE+0V,OAAOjkW,KAAK0E,QAAQi8B,OAAM,GAAI3gC,KAAKmlW,aAAa38V,IAAIxI,KAAKE,KAAM,GAAh1D,sBAAg1D,WAAsB,IAAbsI,EAAa,uDAAXxI,KAAKE,MAAOF,KAAKklW,SAAQ,EAAGllW,KAAK8uF,SAASxyE,IAAI9T,EAAE,GAAGA,IAAIxI,KAAKE,MAAMF,KAAKzB,KAAK2Q,GAAEg1V,UAAUlkW,KAAK0E,QAAQ+gW,UAAS,GAAIzlW,KAAKmlW,aAAa38V,IAAIxI,KAAKE,KAAM,GAA9+D,mBAA8+D,WAAmB,IAAbsI,EAAa,uDAAXxI,KAAKE,MAAOsI,IAAIxI,KAAKE,MAAMF,KAAKzB,KAAK2Q,GAAEi1V,OAAOnkW,KAAK0E,QAAQ8gB,OAAM,EAAI,GAA3jE,oBAA2jE,WAAoB,IAAbhd,EAAa,uDAAXxI,KAAKE,MAAOsI,IAAIxI,KAAKE,MAAMF,KAAKzB,KAAK2Q,GAAEk1V,QAAQpkW,KAAK0E,QAAQsmB,QAAO,EAAI,GAA3oE,qBAA2oE,SAAQxiB,GAAG,IAAIxI,KAAKyjP,QAAQnyO,YAAY,CAACmC,OAAOvE,GAAEm1V,QAAQnkW,MAAMF,KAAKE,MAAMrG,KAAK2O,GAAW,CAAP,SAAO,CAAC,GAAvuE,kBAAuuE,SAAKA,GAAG,IAAIxI,KAAKyjP,QAAQnyO,YAAY,CAACmC,OAAOjL,EAAEtI,MAAMF,KAAKE,OAAe,CAAP,SAAO,CAAC,GAAjzE,mBAAizE,WAAQF,KAAK0E,QAAQ2gW,gBAAgBrlW,KAAKslW,QAAQl3Q,QAAQpuF,KAAKzB,KAAK2Q,GAAE40V,YAAY9jW,KAAKyjP,QAAQr1J,OAAQ,KAAx5E,KAA85EotP,GAAGvyS,GAAE9+B,SAAS,KAAKikG,GAAG,CAAC,YAAY,UAAU,QAAQ,iBAAiB,aAAa,YAAY,aAAa,YAAY,gBAAgB,gBAAgB,mBAAmB,SAAS,SAASy3P,GAAGl1V,EAAEnI,GAAG,IAAIqI,EAAE,SAASxQ,IAAO,2BAAFY,EAAE,yBAAFA,EAAE,gBAAC4P,GAAGuU,aAAavU,GAAGA,EAAEtU,YAAW,WAAKoU,EAAC,WAAD,EAAK1P,GAAG4P,EAAE,IAAK,GAACrI,EAAG,QAAOnI,EAAErC,OAAO,WAAWonB,aAAavU,EAAG,EAACxQ,CAAE,UAASurG,GAAGj7F,EAAEnI,GAAG,IAAIqI,EAAE,EAAE,OAAO,WAAe,IAAI5P,GAAE,IAAI9N,MAAOC,UAAU,KAAK6N,EAAE4P,EAAErI,GAAG,OAAOqI,EAAE5P,EAAE0P,EAAC,WAAD,YAAQ,CAAC,KAAI89I,GAAE,kBAAIt7J,KAAKqX,KAAT,EAAmBm3I,GAAE,WAAW,SAASv/D,KAAga,6DAAH,CAAC,EAAE,IAA5ZlmF,QAAQyU,OAAoZ,MAAlZ,KAAkZ,MAAxYm1V,cAAct9V,OAA0X,MAAxX,EAAwX,MAAtXu9V,iBAAiBl1V,OAAqW,MAAnW,EAAmW,MAAjWqI,QAAQ7Y,OAAyV,MAAvVm7U,GAAuV,MAApVh9T,OAAOvd,OAA6U,MAA3UmtG,GAA2U,MAAxU43P,OAAO/1S,OAAiU,WAA/T,EAA+T,MAAxTg2S,gBAAgB98T,OAAwS,MAAtS,GAAsS,MAAnS+8T,iBAAiB36Q,OAAkR,MAAhR,WAAM,EAA0Q,MAAzQo6Q,SAAS12M,OAAgQ,MAA9P,WAAM,EAAwP,MAAvPxmD,OAAO/rF,OAAgP,MAA9O,WAAM,EAAwO,MAAvOkpV,SAAStlW,OAA8N,MAA5N,WAAM,EAAsN,MAArN6lW,SAASv1V,OAA4M,MAA1M,WAAM,EAAoM,MAAnM80V,UAAUx1S,OAAyL,MAAvL,WAAM,EAAiL,MAAhLzL,SAAS3/C,OAAuK,MAArK,EAAqK,MAAnKshW,SAAS3oV,OAA0J,MAAxJ,EAAwJ,MAAtJ4oV,eAAex8N,OAAuI,MAArI,IAAqI,MAAjIy8N,aAAa/yS,OAAoH,aAA/GgzS,cAAcn1S,OAAiG,aAA5Fo1S,WAAW9wN,OAAiF,aAA3E+wN,SAASxyS,OAAkE,aAA7D7yD,KAAK20I,OAAwD,MAArD,aAAqD,MAAxC2wN,WAAW5gN,OAA6B,MAA3B,EAA2B,MAAzBu/M,eAAep1P,OAAU,SAAKlC,GAAG5oC,EAAAA,EAAAA,QAAEspF,MAAKpoF,GAAGlB,EAAAA,EAAAA,QAAEspF,MAAKvpE,GAAE/f,EAAAA,EAAAA,QAAE,MAAMsgF,GAAEtgF,EAAAA,EAAAA,QAAE,MAAM8gC,GAAE9gC,EAAAA,EAAAA,QAAE,GAAG20B,GAAE30B,EAAAA,EAAAA,QAAE,GAAGmiF,IAAEniF,EAAAA,EAAAA,QAAE,GAAG0qC,IAAE1qC,EAAAA,EAAAA,QAAE,GAAG97D,IAAE87D,EAAAA,EAAAA,SAAE,GAAIh2D,IAAEg2D,EAAAA,EAAAA,SAAE,GAAIszB,IAAEtzB,EAAAA,EAAAA,SAAE,GAAI20E,IAAE30E,EAAAA,EAAAA,SAAE,GAAI5M,IAAG4M,EAAAA,EAAAA,SAAE,GAAI4qC,IAAE5qC,EAAAA,EAAAA,QAAE,MAAM7U,IAAE6U,EAAAA,EAAAA,QAAE,MAAM+mE,IAAE/mE,EAAAA,EAAAA,QAAEx0D,GAAGygJ,IAAEjsF,EAAAA,EAAAA,QAAE,IAAGhU,EAAAA,EAAAA,YAAE,WAAK,GAAG3oD,GAAGmF,QAAQC,KAAK,4JAA4JiD,GAAGrI,EAAE,MAAM,IAAI3U,MAAM,qIAAqI,GAAG8c,GAAGgxI,GAAE,MAAM,IAAI9tJ,MAAJ,yFAA4F8tJ,GAA5F,MAAkG,GAAGn5I,GAAGm5I,GAAE,MAAM,IAAI9tJ,MAAJ,+FAAkG8tJ,GAAlG,MAAwG,GAAG9wI,GAAG8wI,GAAE,MAAM,IAAI9tJ,MAAJ,kGAAqG8tJ,GAArG,MAA2G,GAAG9wI,GAAGq7H,GAAE98G,QAAQze,EAAEE,EAAEugJ,GAAEhiI,QAAQve,IAAIq7H,GAAE98G,QAAQze,EAAEygJ,GAAEhiI,QAAQ5mB,IAAIsxI,GAAE1qH,QAAQ,CAAC,GAAGgiC,EAAE,OAAO/nD,GAAE+lB,UAAUygE,GAAEzgE,UAAUkhC,GAAElhC,SAASkhC,GAAElhC,QAAQigE,UAAU2kB,IAAI,CAAC,GAAC,CAACrjG,EAAEnI,EAAEqI,EAAEugD,IAAI,IAAI6kF,IAAG9wE,EAAAA,EAAAA,QAAEuwE,IAAIvkF,EAAAA,EAAAA,YAAE,WAAK8kF,GAAG7mH,QAAQsmH,CAAG,GAAC,CAACA,IAAK,IAAIqC,IAAG5yE,EAAAA,EAAAA,QAAEh8B,GAAG6uG,IAAG7yE,EAAAA,EAAAA,QAAE9kE,GAAGi2I,IAAGnxE,EAAAA,EAAAA,QAAE,GAAI,IAAIwO,IAAJ,aAAY1yE,GAAZ,GAAiBkoC,KAAI4tC,WAAWrc,IAAGyK,EAAAA,EAAAA,QAAEomB,IAAGp6B,EAAAA,EAAAA,YAAE,WAAKuJ,GAAGtrC,QAAQm8D,CAAE,GAAC,CAACA,IAAI,IAAI4a,IAAGhhC,EAAAA,EAAAA,QAAE8pF,IAAG99F,EAAAA,EAAAA,YAAE,WAAKg1C,GAAG/2E,QAAQ6/H,CAAE,GAAC,CAACA,IAAI,IAAIroD,IAAGzhC,EAAAA,EAAAA,QAAEzoD,IAAGy0C,EAAAA,EAAAA,YAAE,WAAKy1C,GAAGx3E,QAAQ1S,CAAE,GAAC,CAACA,IAAI,IAAImzE,IAAE1qB,EAAAA,EAAAA,QAAE7kE,IAAG6wD,EAAAA,EAAAA,YAAE,WAAK0+B,GAAEzgE,QAAQ9uB,CAAE,GAAC,CAACA,IAAI,IAAIqmG,IAAGxhC,EAAAA,EAAAA,QAAEv0D,IAAGugD,EAAAA,EAAAA,YAAE,WAAKw1C,GAAGv3E,QAAQxe,CAAE,GAAC,CAACA,IAAI,IAAIqrF,IAAE92B,EAAAA,EAAAA,QAAEjV,IAAGiB,EAAAA,EAAAA,YAAE,WAAK8qC,GAAE7sE,QAAQ8gC,CAAE,GAAC,CAACA,IAAI,IAAIyoC,IAAEguQ,EAAAA,EAAAA,UAAG,WAAK,IAAIj2V,EAAE,SAAAqgD,GAAC,OAAE41C,GAAGv3E,QAAQ2hC,EAAb,EAAgB,OAAOjsD,EAAE,EAAE+gW,GAAGn1V,EAAE5L,GAAG2Y,EAAE,EAAEmuF,GAAGl7F,EAAE+M,GAAG/M,CAAE,GAAC,CAAC+M,EAAE3Y,IAAIoxI,IAAG/wE,EAAAA,EAAAA,WAAIhU,EAAAA,EAAAA,YAAE,WAAK8C,GAAG6xF,IAAI5P,GAAG9mH,QAAQw8E,IAAG,WAAKt7C,GAAElhC,QAAQigE,QAAS,GAACy2D,GAAI,GAAC,CAAC7xF,EAAE6xF,IAAI,IAAI5xC,GAAE,WAAiB,OAAZnE,GAAE3gF,UAAiB48D,GAAE5mE,aAAa2qF,GAAE3gF,SAAS2gF,GAAE3gF,QAAQ,KAAM,EAACgtH,GAAE,SAAC1rI,GAAS,IAAPqgD,IAAO,yDAACmjD,KAAInE,GAAE3gF,QAAQ48D,GAAEzvF,WAAWgwG,GAAG77F,GAAGw7H,GAAE98G,SAAS2hC,IAAI00F,EAAEr2H,QAAQq/H,KAAK,EAAC3X,GAAG,SAAApmI,IAAKvB,GAAEigB,UAAU/lB,GAAE+lB,UAAU+2E,GAAG/2E,QAAQ1e,GAAGgqD,GAAGtrC,QAAQ,CAACnxB,KAAK,SAAS2oW,UAAS,KAAM/2P,GAAEzgF,QAAQ,EAAEk4H,GAAEl4H,QAAQq/H,KAAIt/I,GAAEigB,SAAQ,EAAGgtH,GAAEgV,GAAEhiI,SAAQ,EAAI,EAACunC,GAAG,WAAKu9C,KAAI7qG,GAAE+lB,UAAUw3E,GAAGx3E,UAAUsrC,GAAGtrC,QAAQ,CAACnxB,KAAK,UAAUoL,GAAE+lB,SAAQ,EAAG81D,EAAE91D,QAAQq/H,KAAIxY,GAAG7mH,QAAQs8B,KAAIv8C,GAAEigB,UAAUk4H,GAAEl4H,QAAQ,EAAEjgB,GAAEigB,SAAQ,EAAI,EAAC+mH,GAAG,SAAAzlI,GAAIwjG,MAAK7qG,GAAE+lB,SAASjgB,GAAEigB,WAAWygE,GAAEzgE,QAAQ1e,GAAGgqD,GAAGtrC,QAAQ,CAACnxB,KAAK,SAAS2oW,UAAS,KAAMz3V,GAAEigB,SAAQ,EAAGk4H,GAAEl4H,QAAQ,EAAE/lB,GAAE+lB,SAAQ,EAAG62E,EAAE72E,SAASq/H,KAAIvpE,EAAE91D,QAAQ0qE,EAAE1qE,SAASq/H,KAAIvpE,EAAE91D,QAAQ0/H,KAAI1S,IAAI,EAAC7vC,GAAG,SAAA77F,GAAI,IAAIrH,GAAE+lB,QAAS,OAAGupE,GAAE36F,QAAQ26F,GAAE36F,SAASozJ,GAAEhiI,QAAQ,IAAIjgB,GAAEigB,aAASkhC,GAAElhC,QAAQkhC,GAAElhC,QAAQwkT,SAAS98L,GAAGpmI,SAAU4/C,GAAElhC,QAAQkhC,GAAElhC,QAAQo2U,OAAO7uS,MAAYrG,GAAElhC,QAAQkhC,GAAElhC,QAAQigE,SAAS8mD,GAAGzlI,EAAG,EAACwkI,GAAG,SAAAxkI,GAAI,IAAI6iD,IAAIkyF,EAAEr2H,UAAUq2H,EAAEr2H,QAAQq/H,KAAI5+D,GAAEzgE,WAAWupE,GAAEjoF,IAAGvB,GAAEigB,QAAe,GAAG8kF,KAAK7qG,GAAE+lB,UAAS2oH,GAAG3oH,QAAQ5e,SAASE,EAAEzS,MAAzC,CAA6D,IAAI8yD,EAAE09F,KAAIhJ,EAAEr2H,QAAW/lB,GAAE+lB,UAAUsmH,IAAKrsI,GAAE+lB,SAAS2hC,GAAGm7E,GAAE98G,QAASm9E,GAAG77F,IAAU+nF,GAAErpE,SAAQ,EAAGygF,GAAEzgF,QAAQ,EAAEk4H,GAAEl4H,QAAQ,EAAEgtH,KAAInoF,GAAG6xF,GAAG5P,GAAG9mH,UAAhI,MAAbm9E,GAAG77F,EAAoJ,EAAC6+F,IAAGpqC,EAAAA,EAAAA,QAAE+vE,KAAI/jF,EAAAA,EAAAA,YAAE,WAAK,IAAIzgD,EAAE6nD,GAAGnpC,QAAQ1e,GAAGg7C,KAAQ6jD,GAAGngF,QAAPy6G,EAAE,EAAaj+B,GAAGspC,GAAGrL,GAAcqL,GAAGxkI,GAAGo+I,IAAI,GAAC,CAACjlB,EAAEpsH,EAAE3Y,EAAE6hG,GAAG1yC,EAAE6xF,IAAI,IAAIgJ,GAAE,YAAM7lH,IAAGsvB,GAAGnpC,UAAUknH,GAAGlnH,QAAQ7xB,SAAQ,SAAAmT,GAAIsnI,GAAG5oH,QAAQvxB,iBAAiB6S,EAAE6+F,GAAGngF,QAAQ,CAACyqH,SAAQ,EAAGr0F,SAAQ,GAAK,IAAE+S,GAAGnpC,SAAQ,EAAI,EAACs8B,GAAE,WAAQ,IAAPh7C,EAAO,yDAAEu4B,KAAIsvB,GAAGnpC,SAAS1e,KAAK4lI,GAAGlnH,QAAQ7xB,SAAQ,SAAAwzD,GAAIinF,GAAG5oH,QAAQ/0B,oBAAoB02D,EAAEw+C,GAAGngF,QAAQ,CAACyqH,SAAQ,GAAK,IAAEthF,GAAGnpC,SAAQ,EAAI,EAAC4kF,IAAEuqC,EAAAA,EAAAA,cAAE,SAAA7tI,GAAIwjG,KAAI46C,KAAIzlJ,GAAE+lB,SAAQ,EAAGjgB,GAAEigB,SAAQ,EAAGqpE,GAAErpE,SAAQ,EAAGygF,GAAEzgF,QAAQ,EAAEk4H,GAAEl4H,QAAQ,EAAEkhC,GAAElhC,UAAU1e,GAAG4/C,GAAElhC,QAAQnS,QAAQm/H,IAAI,GAAC,CAACrsC,GAAE1mG,GAAE6iI,GAAE57E,KAAIu7C,IAAG0yC,EAAAA,EAAAA,cAAE,SAAA7tI,GAAIwjG,KAAI46C,KAAIzoF,EAAGj3C,QAAQq/H,KAAIxoD,EAAE72E,SAASq/H,KAAIvpE,EAAE91D,QAAQ0qE,EAAE1qE,SAASq/H,KAAIvpE,EAAE91D,QAAQ62E,EAAE72E,QAAQ,EAAE/lB,GAAE+lB,SAAQ,EAAGjgB,GAAEigB,SAAQ,EAAGqpE,GAAErpE,SAAQ,EAAGygF,GAAEzgF,QAAQ,EAAEk4H,GAAEl4H,QAAQ,EAAEkhC,GAAElhC,UAAU1e,GAAG4/C,GAAElhC,QAAQuR,QAAQywB,GAAGgrF,IAAI,GAAC,CAACrsC,GAAE1mG,GAAE6iI,GAAE96E,EAAEd,KAAI+lF,IAAGkI,EAAAA,EAAAA,cAAE,SAAA7tI,GAAIwjG,KAAI46C,MAAKzlJ,GAAE+lB,SAASjgB,GAAEigB,UAAU+mH,KAAK9sI,GAAE+lB,SAAQ,EAAGjgB,GAAEigB,SAAQ,EAAGqpE,GAAErpE,SAAQ,EAAGygF,GAAEzgF,QAAQ,EAAEk4H,GAAEl4H,QAAQ,EAAEi3C,EAAGj3C,QAAQq/H,KAAIn+F,GAAElhC,UAAU1e,GAAG4/C,GAAElhC,QAAQq2U,WAAWrpN,IAAI,GAAC,CAACrsC,GAAE1mG,GAAE8F,GAAE+8H,GAAE57E,KAAIslF,IAAG2I,EAAAA,EAAAA,cAAE,eAAC7tI,EAAD,+DAAQ+nF,GAAErpE,UAAYygF,GAAEzgF,QAAQgnH,KAAK39C,GAAErpE,SAAQ,EAAGs8B,KAAIwoD,KAAI5jD,GAAElhC,UAAU1e,GAAG4/C,GAAElhC,QAAQ5J,SAAQ,EAA3F,GAA+F,CAACuqF,GAAEz/C,KAAImmF,IAAG8H,EAAAA,EAAAA,cAAE,eAAC7tI,EAAD,gEAAQ+nF,GAAErpE,UAASqpE,GAAErpE,SAAQ,EAAGjgB,GAAEigB,SAAS0/H,KAAIzlJ,GAAE+lB,SAASgtH,GAAEvsC,GAAEzgF,SAASk4H,GAAEl4H,UAAUk4H,GAAEl4H,QAAQq/H,MAAKn+F,GAAElhC,UAAU1e,GAAG4/C,GAAElhC,QAAQpE,UAAS,EAApI,GAA2I,CAAC+kF,GAAEm8B,GAAEr8B,GAAEv/C,KAAI49O,IAAG3vJ,EAAAA,EAAAA,cAAE,SAAC7tI,EAAEqgD,GAAKT,GAAElhC,SAAS2hC,GAAGkrC,GAAE7sE,QAAQ1e,GAAG4/C,GAAElhC,QAAQ3uB,QAAQiQ,IAAIqgD,GAAGkrC,GAAE7sE,QAAQ1e,EAAG,GAAC,CAACw/C,IAAI22S,IAAGtoN,EAAAA,EAAAA,cAAE,kBAAIl1I,GAAE+lB,OAAN,GAAc,CAAC/lB,KAAIy9V,IAAGvoN,EAAAA,EAAAA,cAAE,kBAAIpvI,GAAEigB,OAAN,GAAc,CAACjgB,KAAI43V,IAAGxoN,EAAAA,EAAAA,cAAE,kBAAIjuF,GAAElhC,QAAQkhC,GAAElhC,QAAQk1U,SAAS,IAAjC,GAAsC,CAACh0S,KAAI02S,IAAGzoN,EAAAA,EAAAA,cAAE,kBAAIjuF,GAAElhC,QAAQkhC,GAAElhC,QAAQ+1U,aAAa,IAArC,GAA0C,CAAC70S,KAAI22S,IAAG1oN,EAAAA,EAAAA,cAAE,kBAAIjuF,GAAElhC,QAAQkhC,GAAElhC,QAAQlvB,MAAM,IAA9B,GAAmC,CAACowD,KAAI8lF,IAAGmI,EAAAA,EAAAA,cAAE,WAAK,GAAG9lD,GAAErpE,QAAQ,OAAOygF,GAAEzgF,QAAQ,IAAI1e,EAAEm/F,GAAEzgF,QAAQygF,GAAEzgF,QAAQgiI,GAAEhiI,QAAQ88G,GAAE98G,QAAQ2hC,EAAE00F,EAAEr2H,QAAQq/H,KAAIhJ,EAAEr2H,QAAQ,EAAE83U,EAAGzgW,KAAKC,MAAMgK,EAAEqgD,GAAG,OAAOm2S,EAAG,EAAE,EAAEzgW,KAAK+U,IAAI0rV,EAAI,GAAC,CAACh7N,GAAEklB,GAAEjiJ,GAAE0gG,GAAE41C,IAAIxN,IAAGsG,EAAAA,EAAAA,cAAE,kBAAI93I,KAAK4kC,MAAMojH,KAAIpoF,EAAGj3C,QAAtB,GAA+B,CAACi3C,IAAK8xE,IAAGoG,EAAAA,EAAAA,cAAE,kBAAI93I,KAAK4kC,MAAMojH,KAAI1gD,EAAG3+E,QAAtB,GAA+B,CAAC2+E,IAAK7S,IAAGqjD,EAAAA,EAAAA,cAAE,kBAAIr5D,EAAE91D,QAAQ,IAAIj8B,KAAK+xF,EAAE91D,SAAS,IAAlC,GAAuC,CAAC81D,IAAIiiR,IAAG5oN,EAAAA,EAAAA,cAAE,kBAAIkH,EAAEr2H,QAAQ,IAAIj8B,KAAKsyJ,EAAEr2H,SAAS,IAAlC,GAAuC,CAACq2H,IAAIzP,IAAGuI,EAAAA,EAAAA,cAAE,kBAAIl1I,GAAE+lB,QAAQ3oB,KAAK4kC,MAAMojH,KAAIvpE,EAAE91D,QAAQ62E,EAAE72E,SAAS3oB,KAAK4kC,MAAM46D,EAAE72E,QAA/D,GAAwE,CAAC81D,EAAE+gB,IAAIiyC,IAAGqG,EAAAA,EAAAA,cAAE,kBAAIl1I,GAAE+lB,QAAQ3oB,KAAK4kC,MAAMojH,KAAIvpE,EAAE91D,QAAQ0qE,EAAE1qE,SAAS3oB,KAAK4kC,MAAMyuD,EAAE1qE,QAA/D,GAAwE,CAAC81D,EAAE4U,IAAI4J,IAAG66C,EAAAA,EAAAA,cAAE,WAAK,IAAI7tI,EAAEjK,KAAK4kC,MAAM4sG,KAAKjC,MAAM,OAAOtlI,GAAG,EAAEA,EAAE,CAAE,GAAC,CAACw0E,EAAE+gB,IAAImhQ,IAAG7oN,EAAAA,EAAAA,cAAE,WAAK,IAAI7tI,EAAEjK,KAAK4kC,MAAM8sG,KAAKD,MAAM,OAAOxnI,GAAG,EAAEA,EAAE,CAAE,GAAC,CAACw0E,EAAE+gB,IAAI,OAAO90C,EAAAA,EAAAA,YAAE,WAAK,GAAGrsD,EAAE,GAAG2Y,EAAE,EAAE,MAAM,IAAI5pB,MAAM,mEAAmEo8D,GAAGkzS,GAAGlzS,GAAG,IAAIv/C,EAAE,WAAK4/C,GAAElhC,SAASkhC,GAAElhC,QAAQg/D,QAAQuK,GAAE36F,QAAQ26F,GAAE36F,SAASk2G,KAAIxoD,IAAE,EAAI,EAAC,OAAOziB,IAAGt9B,OAAO9N,iBAAiB,eAAe6S,GAAG,WAAKu4B,IAAGt9B,OAAOtR,oBAAoB,eAAeqW,GAAG4/C,GAAElhC,SAASkhC,GAAElhC,QAAQg/D,QAAQuK,GAAE36F,QAAQ26F,GAAE36F,SAASk2G,KAAIxoD,IAAE,EAAI,CAAC,GAAC,KAAIyF,EAAAA,EAAAA,YAAE,WAAKb,GAAElhC,SAASkhC,GAAElhC,QAAQg/D,QAAU99B,GAAElhC,QAAJ6kC,EAAY,IAAI0iF,GAAG,CAACyuN,YAAYrvN,EAAGsvN,eAAep1P,EAAG01P,SAAS,WAAK7uN,IAAK,EAACruC,OAAO,WAAK9xC,IAAK,EAACivS,SAAS,WAAKzvN,IAAK,EAACuvN,UAAUzpQ,GAAE7sE,QAAQnS,MAAM+2F,GAAErzE,MAAMkrE,GAAG45P,SAASpvN,GAAG7wH,MAAMowH,GAAG5qH,OAAOyrH,KAAe,IAAK,GAAC,CAACxiF,EAAE8hF,EAAG9lC,EAAG9J,GAAGS,GAAG/W,GAAEoM,GAAE+X,GAAEnI,GAAG+pC,GAAGa,MAAKtlF,EAAAA,EAAAA,YAAE,WAAK2oF,GAAE1qH,UAAU8kF,KAAIxoD,IAAE,KAAM0F,IAAImC,EAAEygD,KAAI86C,KAAK,GAAC,CAAC19F,EAAEmC,EAAEumF,MAAI3oF,EAAAA,EAAAA,YAAE,WAAK,IAAI2oF,GAAE1qH,QAAQ,CAAC,IAAI1e,EAAC,GAAK,IAAIijE,IAAJ,aAAY1yE,GAAZ,GAAiBkoC,KAAI4tC,UAAU,GAAGrrB,KAAI4qF,GAAGlnH,QAAQ1e,EAAEsnI,GAAG5oH,QAAQ/uB,EAAE03I,GAAG3oH,QAAQ+Z,EAAEioB,EAAE,OAAOmC,EAAEygD,KAAI86C,IAAI,CAAC,GAAC,CAACzuJ,EAAEgI,KAAKI,UAAUxH,GAAGoH,KAAKI,UAAU0gC,GAAG2wG,GAAE1oF,EAAEmC,KAAIpC,EAAAA,EAAAA,YAAE,WAAK2oF,GAAE1qH,UAAU0qH,GAAE1qH,SAAQ,EAAI,GAAC,CAAC0qH,KAAI,CAACr5I,QAAQytS,GAAGjxR,MAAM+2F,GAAErzE,MAAMkrE,GAAG45P,SAASpvN,GAAG7wH,MAAMowH,GAAG5qH,OAAOyrH,GAAG4wN,OAAOR,GAAGS,WAAWR,GAAGxC,SAASyC,GAAGQ,gBAAgBP,GAAGQ,SAASP,GAAGQ,iBAAiBrxN,GAAGsxN,eAAezvN,GAAG0vN,oBAAoBxvN,GAAGyvN,gBAAgB1sQ,GAAG2sQ,kBAAkBV,GAAGW,YAAY9xN,GAAG+xN,iBAAiB7vN,GAAG8vN,cAActkQ,GAAGukQ,mBAAmBb,GAAGc,oBAAoB,SAAAx3V,GAAI66E,EAAE76E,EAAEgqD,GAAGtrC,QAAQ1e,CAAE,EAACy3V,YAAY,SAAAz3V,GAAIu+I,EAAEv+I,EAAEy1F,GAAG/2E,QAAQ1e,CAAE,EAAC03V,UAAU,SAAA13V,GAAIgM,EAAEhM,EAAEk2F,GAAGx3E,QAAQ1e,CAAE,EAAC23V,YAAY,SAAA33V,GAAIpQ,EAAEoQ,EAAEm/E,GAAEzgE,QAAQ1e,CAAE,EAAC43V,YAAY,SAAA53V,GAAIE,EAAEF,EAAEi2F,GAAGv3E,QAAQ1e,CAAE,EAAC63V,aAAa,SAAA73V,GAAIw/C,EAAEx/C,EAAEurF,GAAE7sE,QAAQ1e,CAAE,EAAE,CAA4D,IAAIilI,IAAG6yN,EAAAA,EAAAA,eAAG,MAAkG7yN,GAAGm0B,SCMzxnB,IAAM5tK,GAAU,KAGD,SAASusW,KACpB,UAAkCh/M,EAAAA,EAAAA,UAAiBvtJ,IAAnD,GAAOu1O,EAAP,KAAkBi3H,EAAlB,KACA,MAAwBj/M,EAAAA,EAAAA,WAAkB,GAA1C,GAAO5tJ,EAAP,KAAa8sW,EAAb,KAeMC,EAAU,WACM,IAAIjH,GAAwBtxJ,IACpC5K,eAAe,CACrBgL,sBAAuB,KAE9B,EAEK9Y,EAAc,WACZ8vK,KAAsB,EACtBmB,KAGJD,GAAQ,GACRlD,IACH,EAOD,EAAuCoD,GAAa,CAChDpgQ,OAnCW,WACXkgQ,GAAQ,GACRC,GACH,EAiCGhD,SA/Ba,WACb+C,GAAQ,EACX,EA8BGhD,SA5Ba,WACbgD,GAAQ,EACX,EA2BGzsW,QAAAA,GACA6pW,iBA7CiB,KA8CjBK,SAAU,MANNqB,EAAR,EAAQA,iBAAkBhC,EAA1B,EAA0BA,UAS1B1tO,EAAAA,EAAAA,YAAU,WACN,IAAMlzG,EAAW8rD,aAAY,WACzB+3R,EAAajiW,KAAKshD,KAAK0/S,IAAqB,KAC/C,GAAE,KAEH,OAAO,WACHr3R,cAAcvrD,EACjB,CACJ,IAED,IAAMikV,EAAmBr3H,EAAY,EAAI,UAAY,SAErD,OACI,+BACI,UAAC,GAAD,CAAOz4N,UAAU,cAActF,KAAK,KAAKgoK,KAAM7/K,EAAM0gL,OAAQob,EAAa4uD,UAAQ,EAAlF,WACI,SAAC,QAAD,WACI,UAAC,GAAD,CAAWvtO,UAAU,cAArB,WACI,SAAC,GAAD,WACI,eAAIA,UAAU,SAAd,mDAEJ,UAAC,GAAD,YACI,qGACA,kDAA0By4N,EAA1B,IAAsCq3H,EAAtC,gBAIZ,UAAC,UAAD,CAAc9vV,UAAU,6BAAxB,WACI,SAAC,GAAD,CAAQA,UAAU,+CAA+CkoF,QAzC5D,WACjBynQ,GAAQ,GACRC,GACH,EAsCe,qBAGA,SAAC,GAAD,CAAQ5vV,UAAU,uBAAuBkoF,QAASy2F,EAAlD,yBAOnB,CCrFM,IAAMoxK,GAAb,8BACI,WAAYv5V,GAAa,IAAD,cACpB,cAAMA,GACN,IACIivM,EAAS,UADQ,IAAI7nJ,gBAAgBzsD,SAASyB,SAASP,QAC9BkR,IAAI,oBAApB,QAAoC,GAH7B,OAIpB,EAAKlF,MAAQ,CAAE2xV,cAAc,EAAO/qJ,QAASQ,EAAW33C,SAAS,EAAOmiM,gBAA4B,IAAXxqJ,GACzF,EAAKD,mBAAqB,EAAKA,mBAAmBhgN,KAAxB,MAC1B,EAAKkvH,SAAW,EAAKA,SAASlvH,KAAd,MAChB,EAAK0qW,oBAAsB,EAAKA,oBAAoB1qW,KAAzB,MAPP,CAQvB,CATL,2CAWI,WAOC,GAlBL,sBAoBI,SAAS7C,GACLqE,KAAK6tE,SAAS,CAAEowI,QAAStiN,GAC5B,GAtBL,gCAwBI,WAAsB,IAAD,OACU,KAAvBqE,KAAKqX,MAAM4mM,SAAyC,OAAvBj+M,KAAKqX,MAAM4mM,UAG5CjyG,eAAe/2C,QAAQ,MAAO,IAE9Bt2D,KAAAA,SAAAA,QAAyBoI,uDACzBpI,KAAAA,KACU,wBAAyB,KAAM,CAAE3C,OAAQ,CAAE4I,GAAI5E,KAAKqX,MAAM4mM,WAC/D99M,MAAK,WACF,IAAIrB,EAAU,EAAKmtK,aACnBntK,EAAQ4/M,eAAiB,EAAKrnM,MAAM4mM,QAEpCn/M,EAAQs/M,iBACR,EAAKvwI,SAAS,CAACi5F,SAAS,IACxBvqK,WAAW,EAAK2sW,oBAAqB,IACxC,IAGR,GA3CL,iCA6CI,WAAuB,IAAD,EACdpqW,EAAUkB,KAAKisK,aACnB,IAAI,UAAAntK,EAAQm/M,eAAR,eAAiBQ,aAAc3/M,EAAQ4/M,eAGvC,OAFA5/M,EAAQ4/M,eAAiB1+M,KAAKqX,MAAM4mM,aACpCj+M,KAAK6tE,SAAS,CAAEm7R,cAAc,EAAMliM,SAAS,IAIjDvqK,WAAWyD,KAAKkpW,oBAAqB,IACxC,GAtDL,oBAwDI,WAAU,IAAD,OACDpqW,EAAUkB,KAAKisK,aACnB,OAAKjsK,KAAKqX,MAAM2xV,cAAqC,OAApBlqW,EAAQm/M,UAAgD,IAA5Bn/M,EAAQm/M,QAAQuC,SAIzExgN,KAAKqX,MAAM4xV,iBACXjpW,KAAKw+M,qBAGLx+M,KAAKqX,MAAMyvJ,SACJ,wBAAG,0CAGV,UAAC,GAAD,CAAW9tJ,UAAU,OAArB,WACI,SAAC,GAAD,CAAKA,UAAU,aAAaoH,MAAO,CAAEywO,UAAW,UAAhD,UACI,qCAEyB,IAA5B7wP,KAAKqX,MAAM2xV,eACR,UAAC,GAAD,YACI,SAAC,GAAD,CAAKhwV,UAAU,WACf,UAAC,GAAD,CAAKA,UAAU,QAAf,WACI,wBAAG,qCACH,SAAC,WAAD,CAAc/a,KAAK,OAAO0qB,aAAc3oB,KAAKqX,MAAM4mM,QAASvwF,SAAU,SAAAllH,GAAM,EAAKklH,SAASllH,EAAE5C,OAAOjK,MAAS,QAEhH,SAAC,GAAD,CAAKqd,UAAU,cAGvB,UAAC,GAAD,CAAKoH,MAAO,CAAEywO,UAAW,SAAUr3N,QAAS,QAA5C,WACiC,IAA5Bx5B,KAAKqX,MAAM2xV,eAAyD,IAA/BhpW,KAAKqX,MAAM4xV,kBAC7C,wBACI,mBAAQjwV,UAAU,+BAA+BkoF,QAASlhG,KAAKw+M,mBAA/D,kBAGPx+M,KAAKqX,MAAM4xV,kBACR,wBACI,mBAAQt5U,UAAQ,EAAC3W,UAAU,+BAA3B,iCAGqB,IAA5BhZ,KAAKqX,MAAM2xV,eACR,SAAC13J,GAAD,CAAU3nK,GAAG,cArClB,SAACmqO,GAAD,GA2Cd,KAtGL,GAAwC/zD,ICY3BopJ,GAAb,8BACI,WAAY35V,GAA6B,6BAC/BA,EACT,CAHL,qCAKI,WACI,OAAmC,IAA/BxP,KAAKwP,MAAMmwP,gBAA8B,GACzC3/P,KAAKwP,MAAMmwP,iBAAmB,IAAY,WACvC,YACV,GATL,oBAWI,WAAU,IAAD,EACL,OACI,+BACI,SAACl/C,GAAD,CAAYznM,UAAS,qBAAgBhZ,KAAKqzQ,eAAiBjnO,MAAOpsC,KAAKwP,MAAM48B,MAAO00K,YAAa9gN,KAAKwP,MAAMyuM,QAAQiC,UAApH,UACI,SAAC,GAAD,CAAKlnM,UAAU,cAAf,UACI,SAAC,GAAD,CAAKA,UAAU,SAAf,UACI,UAAC,GAAD,CAAMgmP,SAAUh/P,KAAKwP,MAAMmuP,aAA3B,WACI,SAAC,GAAD,CAAK3kP,UAAS,wBAAmBhZ,KAAKwP,MAAM45V,SAAW,OAAS,IAAhE,UACI,gBAAKpwV,UAAU,UAAf,SAA0BhZ,KAAKwP,MAAM65V,aAF7C,UAIKrpW,KAAKwP,MAAM45V,gBAJhB,SAI4B,wBACQ,MAA/BppW,KAAKwP,MAAMmwP,iBAA2B3/P,KAAKwP,MAAM85V,iBAClD,SAAC,GAAD,WACI,SAAC,GAAD,CAAKtwV,UAAU,aAAf,UACI,SAAC,SAAD,CACI/a,KAAK,SACL2G,GAAG,sBACHmR,MAAM,yBACNmH,SAAO,EACPgkF,QAASlhG,KAAKwP,MAAM85V,qBAI/BtpW,KAAKwP,MAAM+J,UACZ,mBACA,mBACA,SAAC,GAAD,WACI,SAAC,GAAD,CAAOmqG,UAAU,aAAas5F,IAAK,EAAGhkM,UAAU,6BAAhD,UACI,UAAC,GAAD,YACA,mBAAQ/a,KAAK,SAAS+a,UAAU,oDAAoDkoF,QAASlhG,KAAKwP,MAAMkgC,KAAxG,uBACiC,IAAhC1vC,KAAKwP,MAAM+5V,mBACZ,mBAAQtrW,KAAK,SAAS+a,UAAU,wBAAwBkoF,QAASlhG,KAAKwP,MAAMub,KAA5E,mBAEiC,IAAhC/qB,KAAKwP,MAAM+5V,mBACR,mBAAQtrW,KAAK,SAAS+a,UAAU,wBAAwBkoF,QAASlhG,KAAKwP,MAAMmuP,aAA5E,4BAKZ,mBACA,4BAO3B,KA1DL,GAAmC59C,ICmBtBypJ,GAAb,8BACI,WAAYh6V,GAAa,IAAD,oBACpB,cAAMA,IACD6H,MAAQ,CACTyvJ,SAAS,EACT2iM,WAAW,EACXxrJ,QAAS,KACTyrJ,aAAc,KACdz4S,KAAM,EACNwqM,mBAAoB,GACpBC,YAAa,GACbO,cAAc,EACdC,YAAa,GACbt9C,qBAAsB,GACtB03E,iBAAkB,GAClBX,eAAgB,GAChBE,kBAAmB,GACnBC,YAAa,GACbz2E,YAAa,EAAK7vM,MAAM6vM,YACxBljK,OAAQ,IAAI62M,GACZiM,WAAW,EACXw3B,eAAgB,GAChBkzE,iBAAiB,EACjBC,iBAAiB,EACjB7zU,MAAO,GACPgrP,eAAe,GAxBC,CA0BvB,CA3BL,aAA4ChhE,ICjC/B8pJ,GAAb,8BACI,WAAYr6V,GAAa,6BACfA,EACT,CAHL,aAAmF44G,EAAAA,WCOtE0hP,GAAb,8BAGI,WAAYt6V,GAAa,IAAD,oBACpB,cAAMA,IACD6H,MAAQ,CACTslC,MAAO,EAAKntC,MAAMmtC,OAHF,CAKvB,CARL,2CAUI,WACI38C,KAAK6tE,SAAS,CACVlxB,MAAO38C,KAAKwP,MAAMmtC,OAEzB,GAdL,mBAgBI,WACQ38C,KAAKwP,MAAMu6V,WACX/pW,KAAKwP,MAAMu6V,WAClB,GAnBL,oBAqBI,WAAU,IAAD,EACL,OACI,UAAC,GAAD,CAAW/wV,UAAU,mBAArB,WACI,SAAC,GAAD,CAAKA,UAAU,cAAf,UACI,kCAAKhZ,KAAKqX,MAAMslC,MAAMisM,eAAtB,aAAK,EAA0Bv5O,aAEnC,SAAC,GAAD,WACI,SAAC,GAAD,WACI,SAAC,GAAD,CAAa+gP,OAAK,EAACzzM,MAAO38C,KAAKqX,MAAMslC,MAAOu0M,YAAY,YAK3E,KAlCL,GAAuC24G,IAA1BC,GACF53P,YAAc8rG,GCMlB,IAAMgsJ,GAAb,8BAGI,WAAYx6V,GAAa,IAAD,oBACpB,cAAMA,IACD6H,MAAQ,CACTslC,MAAO,EAAKntC,MAAMmtC,MAClBstT,OAAQ,EAAKz6V,MAAMy6V,QAJH,CAMvB,CATL,2CAWI,WACIjqW,KAAK6tE,SAAS,CACVlxB,MAAO38C,KAAKwP,MAAMmtC,MAClBstT,OAAQjqW,KAAKwP,MAAMy6V,QAE1B,GAhBL,mBAkBI,WACQjqW,KAAKwP,MAAMu6V,WACX/pW,KAAKwP,MAAMu6V,WAClB,GArBL,oBAuBI,WACI,IAGIG,EAAoB,CACpBvuW,MAAOm3P,GAJEC,GAAiB/yP,KAAKqX,MAAMslC,MAAMhhD,OAClCo3P,GAAiB/yP,KAAKqX,MAAM4yV,OAAOtuW,QAI5CyF,KAAM,GACN2U,MAAO/V,KAAKwP,MAAM26V,WAClB35G,SAAUpI,GAAS3kP,OACnBosP,YAAaxH,GAAY2H,SACzBD,mBAAe1yP,EACfyyP,UAAW,KACXzxC,SAAS,EACT35M,QAAS,KACTirP,aAAc,KACd13O,IAAK,KACLm7O,QAAQ,EACRnD,cAAU5yP,EACVqzP,cAAUrzP,EACVqhF,eAAWrhF,EACXm1P,UAAU,GAGd,OACI,UAAC,GAAD,CAAWx5O,UAAU,mBAArB,WACI,SAAC,GAAD,WACI,SAAC,GAAD,WACI,SAAC,GAAD,CAAao3O,OAAK,EAACzzM,MAAO38C,KAAKqX,MAAMslC,MAAOu0M,YAAalxP,KAAKwP,MAAM46V,kBAG5E,SAAC,GAAD,WACI,SAAC,GAAD,WACI,SAAC,GAAD,CAAah6G,OAAK,EAACzzM,MAAO38C,KAAKqX,MAAM4yV,OAAQ/4G,YAAalxP,KAAKwP,MAAM66V,mBAG7E,SAAC,GAAD,WACI,SAAC,GAAD,WACI,SAAC,GAAD,CAAaj6G,OAAK,EAACnG,UAAQ,EAACttM,MAAOutT,UAKtD,KAjEL,GAAsDL,IAAzCG,GACF93P,YAAc8rG,GCNlB,IAAMssJ,GAAb,8BAGI,WAAY96V,GAAa,IAAD,oBACpB,cAAMA,IAHVytS,sBAEwB,EAEpB,EAAKvtQ,KAAO,EAAKA,KAAKlxC,KAAV,MACZ,EAAKusB,KAAO,EAAKA,KAAKvsB,KAAV,MAHQ,CAIvB,CAPL,2CASI,WACI,IAAIM,EAAUkB,KAAKisK,aACnBjsK,KAAKi9S,iBAAmB,IAAIznB,GAAiB12R,EAASkB,KAAMA,KAAKwP,MAAM6vM,aACvEr/M,KAAKi9S,iBAAiBE,kBACzB,GAbL,kBAeI,WACIn9S,KAAKi9S,iBAAiBr/C,eAAc,GACpC59P,KAAK6tE,SAAS,CAAE4vL,WAAY,YAAcz9P,KAAKwP,MAAM6vM,aACxD,GAlBL,kBAoBI,WACIr/M,KAAKi9S,iBAAiBr/C,eAAc,GACpC59P,KAAK6tE,SAAS,CAAE4vL,WAAY,cAAgBz9P,KAAKwP,MAAM6vM,aAC1D,GAvBL,6BAyBI,SAAgB1jN,GAEZ,SAAIA,GADQ,uBACQ8O,KAAK9O,GAI5B,GA/BL,oBAiCI,WAAU,IAAD,eACL,IAAIqE,KAAKqX,MAAMyvJ,QAAf,CAIA,GAAI9mK,KAAKqX,MAAMomP,WACX,OAAO,SAACnsD,GAAD,CAAU3nK,GAAI3pC,KAAKqX,MAAMomP,aAGpC,IAAKz9P,KAAKqX,MAAM4mM,QACZ,OAAO,8DAEX,IAAIn/M,EAAUkB,KAAKisK,aAGfs+L,EAAgB,IAAIp3W,KACxBo3W,EAAct1W,YAAYs1W,EAAc92W,cAAgB,GACxD,IAMI+2W,EACAC,EAE+B,EAGxB,EAZPztG,EAAqD,OAAvCh9P,KAAKqX,MAAM4mM,QAAQysJ,gBAA2B,IAAIv3W,KAAK6M,KAAKqX,MAAM4mM,QAAQysJ,iBAAmB,KAC3GC,EAA+C,OAAhB3tG,GAAwBA,EAAYzzP,cAAgBghW,EAAchhW,cAEjG6iC,EAAQpsC,KAAKqX,MAAM4mM,QAAQiC,UAAY,6BACvCmpJ,GAAW,6IAIf,GAA6C,QAAzC,UAAAvqW,EAAQo/M,gBAAR,eAAkB8B,oBAClB,GAA4B,IAAxBlhN,EAAQugN,YACRmrJ,EAAuB,UACvBC,GAAuB,UAAA3rW,EAAQo/M,gBAAR,eAAkB8B,mBAAmBE,WAAY,aAExEsqJ,GAAuB,UAAA1rW,EAAQo/M,gBAAR,eAAkB+B,iBAAiBC,WAAY,QACtEuqJ,EAAuB,UAI/B,OACI,+BACI,SAACtB,GAAD,CAAe9pJ,YAAar/M,KAAKqX,MAAMgoM,YAAajzK,MAAOA,EAAOi9T,SAAUA,EAAUt+U,KAAM/qB,KAAK+qB,KAAM2kB,KAAM1vC,KAAK0vC,KAC9GuuK,QAASj+M,KAAKqX,MAAM4mM,QAAS0/C,aAAc39P,KAAKi9S,iBAAiBt/C,aAAc4rG,kBAAkB,EACjGD,eAAgB,kBAAM,EAAKz7R,SAAS,CAAEoxL,WAAY,EAAK5nP,MAAM4nP,WAA7C,EAA2DU,gBAAiB3/P,KAAKqX,MAAM4mM,QAAQ2nE,0BAFnH,UAGI,SAAC,GAAD,CAAW5sQ,UAAU,YAArB,UACI,+BAEI,SAAC,GAAD,WACI,SAAC,GAAD,CAAKA,UAAU,WAAf,UACI,UAAC,GAAD,CAAOgkM,IAAK,EAAGt5F,UAAU,aAAa1qG,UAAU,aAAhD,WACI,SAACkkP,GAAD,CACI/K,YAAanyP,KAAKqX,MAAM4nP,UACxBzN,WAAmD,OAAvCxxP,KAAKqX,MAAM4mM,QAAQysJ,iBAA2D,OAA/B1qW,KAAKqX,MAAM4mM,QAAQ88C,QAAmB,oBAAiB19P,EAClHs/C,MAAO38C,KAAKqX,MAAM8kC,OAAO82M,eAAe,YACxCmK,QAASp9P,KAAKqX,MAAMsyV,gBACpBrsG,WAAYt9P,KAAKi9S,iBAAiBr/C,cAClCn9J,SAAS,SAAC,GAAD,CAASi6J,iBAAkB,SAAC/4K,GAAD,OAAqB,EAAK9T,SAAS,CAAC87R,gBAAiBhoR,GAArD,EAAgEu6K,YAAal8P,KAAKqX,MAAM6kP,YAAarjD,OAAQ74M,KAAKqX,MAAM4mM,QAAS9hK,OAAQn8C,KAAKqX,MAAM8kC,OACpLvC,aAAc55C,KAAKi9S,iBAAiBrjQ,aAAcihN,QAAQ,WAAWM,aAAa,gBAAgBC,aAAa,gBAC/GC,aAAa,gBAAgBH,QAAQ,kBAAkBF,OAAO,iBAAiBC,KAAK,eAAeF,QAAQ,kBAAkBiC,YAAY,kBAAkBC,eAAe,6BAA6BL,WAAW,EAClNC,qBACI,iCACI,gBAAK7jP,UAAU,wBAAf,4HACA,iBAAKA,UAAU,wBAAf,yEAAkG,yEAIjH2xV,IACG,SAACztG,GAAD,CACI/K,YAAanyP,KAAKqX,MAAM4nP,UACxBtiN,MAAO38C,KAAKqX,MAAM8kC,OAAO82M,eAAe,YACxCmK,QAASp9P,KAAKqX,MAAMuyV,gBACpBtsG,WAAYt9P,KAAKi9S,iBAAiBr/C,cAClCn9J,SAAS,SAAC,GAAD,CAASi6J,iBAAkB,SAAC/4K,GAAD,OAAqB,EAAK9T,SAAS,CAAC+7R,gBAAiBjoR,GAArD,EAAgEu6K,YAAal8P,KAAKqX,MAAM6kP,YAAarjD,OAAQ74M,KAAKqX,MAAM4mM,QAAS9hK,OAAQn8C,KAAKqX,MAAM8kC,OACpLvC,aAAc55C,KAAKi9S,iBAAiBrjQ,aAAcihN,QAAQ,WAAWM,aAAa,gBAAgBC,aAAa,gBAC/GC,aAAa,gBAAgBH,QAAQ,kBAAkBF,OAAO,iBAAiBC,KAAK,eAAeF,QAAQ,kBAAkBiC,YAAY,kBAAkBJ,WAAW,OAElL,SAAC1K,GAAD,CAAWC,YAAanyP,KAAKqX,MAAM4nP,UAAWtiN,MAAO38C,KAAKqX,MAAM8kC,OAAO82M,eAAe,oBAC/C,cAArCjzP,KAAKqX,MAAM4mM,QAAQ2sJ,eAAsE,YAArC5qW,KAAKqX,MAAM4mM,QAAQ2sJ,gBAA+B,UAAA9rW,EAAQo/M,gBAAR,eAAkBggD,WAAYriD,GAAgBgvJ,mBAAoB,iCACtK,SAAC34G,GAAD,CAAWC,YAAanyP,KAAKqX,MAAM4nP,UAAWtiN,MAAO38C,KAAKqX,MAAM8kC,OAAO82M,eAAe,6CACtF,SAACiK,GAAD,CACI/K,YAAanyP,KAAKqX,MAAM4nP,UACxBtiN,MAAO38C,KAAKqX,MAAM8kC,OAAO82M,eAAe,qBACxCsK,eAAyD,QAAzC,UAAAz+P,EAAQo/M,gBAAR,eAAkB8B,oBAC9BhgN,KAAKqX,MAAM8kC,OAAO82M,eAAe,qBAAqBt3P,MAEtDm3P,GAAkBC,GAAiB/yP,KAAKqX,MAAM8kC,OAAO82M,eAAe,qBAAqBt3P,OAAiBo3P,GAAiB/yP,KAAKqX,MAAM8kC,OAAO82M,eAAe,0BAA0Bt3P,QAE1Loa,MAAM,gBACNkpF,UAAU,KACVq+J,WAAYt9P,KAAKi9S,iBAAiBr/C,cAClCn9J,QAAkD,QAAzC,UAAA3hG,EAAQo/M,gBAAR,eAAkB8B,qBAC3B,SAAC8pJ,GAAD,CAAmBntT,MAAO38C,KAAKqX,MAAM8kC,OAAO82M,eAAe,wBAE3D,SAAC+2G,GAAD,CACI59T,MAAM,gBACNuQ,MAAO38C,KAAKqX,MAAM8kC,OAAO82M,eAAe,qBACxCm3G,WAAU,mBAAyC,IAA3BpqW,KAAKqX,MAAMgoM,YAAoBmrJ,EAAuBC,EAApE,KACVR,OAAQjqW,KAAKqX,MAAM8kC,OAAO82M,eAAe,0BACzCo3G,YAAW,mBAAyC,IAA3BrqW,KAAKqX,MAAMgoM,YAAoBorJ,EAAuBD,EAApE,KACXL,WAAY,8BAKvBQ,IACG,SAACz4G,GAAD,CAAWC,YAAanyP,KAAKqX,MAAM4nP,UAAWtiN,MAAO38C,KAAKqX,MAAM8kC,OAAO82M,eAAe,yCAlGzH,CA6GJ,KAjJL,GAA0Cu2G,8DCf/BsB,GAAmB,QCCf,SAASC,GAAkBC,GACxC,MAA2B,kBAAbA,EAAwBA,EAAWF,EAClD,CCAc,SAASt8V,GAAelK,EAAK0B,GAC1C,OAAOjC,OAAO/E,UAAUwP,eAAetN,KAAKoD,EAAK0B,EAClD,CCLD,IAAIilW,GAAY,EAET,SAAS18V,GAAW5S,GACzB,MAAwB,oBAAVA,CACf,CACM,SAASyM,GAASzM,GACvB,MAAwB,kBAAVA,CACf,CAEM,SAASqrC,KAAS,CAClB,SAASkkU,GAAK5mW,EAAK+B,GAExB,IAAI2H,EAAS,CAAC,EAId,OAHA3H,EAAK9I,SAAQ,SAAUC,GACrBwQ,EAAOxQ,GAAO8G,EAAI9G,EACnB,IACMwQ,CACR,CACM,SAASolD,GAASuE,GAEvB,OADAszS,IAAa,GACK,MAAVtzS,EAAiB,GAAK3nD,OAAO2nD,IAAWszS,EACjD,CCUD,OArBA,SAAwBliV,EAAQiiV,GAE9B,OAAK5iW,GAAS2gB,KAAYva,GAAeua,EAAQ,sBAAuBva,GAAeua,EAAQ,iBAO7FoiV,EADE58V,GAAWy8V,GACCA,EAASjiV,GACd3gB,GAAS2gB,GACJA,EAGAA,EAAOiiV,GAGtB5iW,GAAS+iW,IAA2Qn6J,KAAU,GACxRm6J,GAfEpiV,EAAOgiV,GAAkBC,IAGlC,IAAIG,CAaL,ECJD,OAtBA,SAAyBnjJ,EAASx4M,GAChC,IAAI47V,EAAW57V,EAAM47V,SACjBJ,EAAWx7V,EAAMw7V,SACjB1iU,EAAO94B,EAAM84B,KAEjB,SAAK8iU,IAAa9iU,EAAK//B,UAMnBgG,GAAW68V,GACNA,EAASpjJ,EAASx4M,IAKnBw4M,EAAQjzM,MAAK,SAAU0I,GAC7B,OAAO4tV,GAAe5tV,EAAGutV,KAAc1iU,CACxC,IACF,4DCtBc,SAASgjU,GAAkBviV,EAAQvrB,GAChD,IAAI4K,GAAS2gB,GAIb,OAAOA,EAAOvrB,EACf,CCSD,IAAIwV,GAAM,CAAC,CACT0T,KAAM,IACN6kV,QAAS,+LACR,CACD7kV,KAAM,KACN6kV,QAAS,UACR,CACD7kV,KAAM,KACN6kV,QAAS,oBACR,CACD7kV,KAAM,KACN6kV,QAAS,UACR,CACD7kV,KAAM,KACN6kV,QAAS,UACR,CACD7kV,KAAM,KACN6kV,QAAS,gBACR,CACD7kV,KAAM,KACN6kV,QAAS,UACR,CACD7kV,KAAM,IACN6kV,QAAS,qDACR,CACD7kV,KAAM,IACN6kV,QAAS,qEACR,CACD7kV,KAAM,IACN6kV,QAAS,uFACR,CACD7kV,KAAM,KACN6kV,QAAS,gBACR,CACD7kV,KAAM,KACN6kV,QAAS,gBACR,CACD7kV,KAAM,IACN6kV,QAAS,2KACR,CACD7kV,KAAM,IACN6kV,QAAS,mCACR,CACD7kV,KAAM,IACN6kV,QAAS,yFACR,CACD7kV,KAAM,IACN6kV,QAAS,mFACR,CACD7kV,KAAM,IACN6kV,QAAS,+GACR,CACD7kV,KAAM,IACN6kV,QAAS,6BACR,CACD7kV,KAAM,IACN6kV,QAAS,mFACR,CACD7kV,KAAM,IACN6kV,QAAS,2GACR,CACD7kV,KAAM,KACN6kV,QAAS,UACR,CACD7kV,KAAM,KACN6kV,QAAS,UACR,CACD7kV,KAAM,IACN6kV,QAAS,+CACR,CACD7kV,KAAM,IACN6kV,QAAS,6FACR,CACD7kV,KAAM,KACN6kV,QAAS,UACR,CACD7kV,KAAM,KACN6kV,QAAS,UACR,CACD7kV,KAAM,IACN6kV,QAAS,qPACR,CACD7kV,KAAM,KACN6kV,QAAS,UACR,CACD7kV,KAAM,KACN6kV,QAAS,UACR,CACD7kV,KAAM,KACN6kV,QAAS,UACR,CACD7kV,KAAM,KACN6kV,QAAS,cACR,CACD7kV,KAAM,KACN6kV,QAAS,cACR,CACD7kV,KAAM,IACN6kV,QAAS,2DACR,CACD7kV,KAAM,IACN6kV,QAAS,mCACR,CACD7kV,KAAM,IACN6kV,QAAS,qGACR,CACD7kV,KAAM,IACN6kV,QAAS,qGACR,CACD7kV,KAAM,IACN6kV,QAAS,yFACR,CACD7kV,KAAM,KACN6kV,QAAS,UACR,CACD7kV,KAAM,IACN6kV,QAAS,mMACR,CACD7kV,KAAM,IACN6kV,QAAS,+CACR,CACD7kV,KAAM,KACN6kV,QAAS,UACR,CACD7kV,KAAM,IACN6kV,QAAS,2DACR,CACD7kV,KAAM,IACN6kV,QAAS,6BACR,CACD7kV,KAAM,IACN6kV,QAAS,uFACR,CACD7kV,KAAM,IACN6kV,QAAS,mFACR,CACD7kV,KAAM,IACN6kV,QAAS,qMACR,CACD7kV,KAAM,KACN6kV,QAAS,UACR,CACD7kV,KAAM,KACN6kV,QAAS,oBACR,CACD7kV,KAAM,KACN6kV,QAAS,UACR,CACD7kV,KAAM,KACN6kV,QAAS,UACR,CACD7kV,KAAM,KACN6kV,QAAS,gBACR,CACD7kV,KAAM,KACN6kV,QAAS,UACR,CACD7kV,KAAM,IACN6kV,QAAS,qDACR,CACD7kV,KAAM,IACN6kV,Q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","sources":["../node_modules/@wojtekmaj/date-utils/dist/esm/index.js","../node_modules/axios/index.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/normalizeHeaderName.js","../node_modules/axios/lib/helpers/null.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/utils.js","../node_modules/classnames/index.js","../node_modules/clsx/dist/clsx.m.js","../node_modules/fast-deep-equal/index.js","../node_modules/filepond-plugin-file-encode/dist/filepond-plugin-file-encode.js","../node_modules/filepond-plugin-file-validate-type/dist/filepond-plugin-file-validate-type.js","../node_modules/filepond/dist/filepond.js","../filestack/webpack/bootstrap","../filestack/node_modules/tslib/tslib.es6.js","../filestack/src/lib/utils/index.ts","../filestack/src/lib/utils/extensions.ts","../filestack/build/module/lib/utils/index.node.js","../filestack/src/lib/request/error.ts","../filestack/node_modules/debug/src/browser.js","../filestack/src/is.ts","../filestack/build/module/lib/request/utils.node.js","../filestack/src/lib/request/utils.ts","../filestack/src/lib/request/types.ts","../filestack/node_modules/fast-xml-parser/src/util.js","../filestack/node_modules/eventemitter3/index.js","../filestack/src/misc.ts","../filestack/src/string.ts","../filestack/src/lib/request/helpers/cookies.ts","../filestack/src/lib/request/helpers/headers.ts","../filestack/src/lib/request/helpers/data.ts","../filestack/src/lib/request/helpers/url.ts","../filestack/node_modules/jsonschema/lib/helpers.js","../filestack/src/node.ts","../filestack/(webpack)/buildin/global.js","../filestack/node_modules/fast-xml-parser/src/xmlstr2xmlnode.js","../filestack/src/lib/request/helpers/shouldRetry.ts","../filestack/node_modules/file-type/index.js","../filestack/node_modules/jsonschema/lib/index.js","../filestack/node_modules/node-libs-browser/node_modules/url/url.js","../filestack/node_modules/jsonschema/lib/scan.js","../filestack/node_modules/fast-xml-parser/src/parser.js","../filestack/src/browser.ts","../filestack/(webpack)/buildin/module.js","../filestack/(webpack)/buildin/amd-options.js","../filestack/node_modules/process/browser.js","../filestack/node_modules/isutf8/index.js","../filestack/node_modules/spark-md5/spark-md5.js","../filestack/node_modules/p-queue/index.js","../filestack/node_modules/lodash.clonedeep/index.js","../filestack/src/stacktrace.ts","../filestack/src/memo.ts","../filestack/node_modules/jsonschema/lib/validator.js","../filestack/node_modules/punycode/punycode.js","../filestack/node_modules/node-libs-browser/node_modules/url/util.js","../filestack/node_modules/querystring-es3/index.js","../filestack/node_modules/querystring-es3/decode.js","../filestack/node_modules/querystring-es3/encode.js","../filestack/node_modules/jsonschema/lib/attribute.js","../filestack/node_modules/debug/src/common.js","../filestack/node_modules/ms/index.js","../filestack/src/lib/request/adapters/xhr.ts","../filestack/node_modules/fast-xml-parser/src/node2json.js","../filestack/node_modules/fast-xml-parser/src/xmlNode.js","../filestack/node_modules/fast-xml-parser/src/validator.js","../filestack/node_modules/fast-xml-parser/src/nimndata.js","../filestack/node_modules/fast-xml-parser/src/node2json_str.js","../filestack/node_modules/fast-xml-parser/src/json2xml.js","../filestack/node_modules/p-queue/node_modules/eventemitter3/index.js","../filestack/(webpack)/buildin/harmony-module.js","../filestack/src/session.ts","../filestack/FilestackLoader/webpack/bootstrap","../filestack/FilestackLoader/dist/module/index.js","../filestack/build/module/lib/api/security.node.js","../filestack/src/logger.ts","../filestack/src/syncpromise.ts","../filestack/src/scope.ts","../filestack/src/hub.ts","../filestack/src/index.ts","../filestack/src/config.ts","../filestack/src/filestack_error.ts","../filestack/src/schema/transforms.schema.ts","../filestack/src/schema/definitions.schema.ts","../filestack/src/schema/validator.ts","../filestack/src/lib/filelink.ts","../filestack/src/lib/api/transform.ts","../filestack/src/schema/store.schema.ts","../filestack/src/schema/preview.schema.ts","../filestack/src/schema/upload.schema.ts","../filestack/src/schema/picker.schema.ts","../filestack/src/schema/metadata.schema.ts","../filestack/src/schema/retrieve.schema.ts","../filestack/src/lib/request/dispatch.ts","../filestack/build/module/lib/request/request_adapter.node.js","../filestack/src/lib/request/request.ts","../filestack/src/lib/request/token.ts","../filestack/src/lib/api/file.ts","../filestack/src/lib/api/upload/file.ts","../filestack/src/lib/utils/store.ts","../filestack/build/module/lib/api/upload/file_tools.node.js","../filestack/src/lib/api/upload/uploaders/abstract.ts","../filestack/src/lib/api/upload/uploaders/s3.ts","../filestack/src/lib/api/upload/upload.ts","../filestack/build/module/lib/utils/store.node.js","../filestack/src/lib/api/cloud.ts","../filestack/src/lib/api/prefetch.ts","../filestack/src/lib/picker.ts","../filestack/src/lib/client.ts","../filestack/src/lib/api/preview.ts","../filestack/src/lib/api/store.ts","../filestack/src/time.ts","../filestack/src/object.ts","../node_modules/get-user-locale/dist/esm/index.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/hoist-non-react-statics/node_modules/react-is/index.js","../node_modules/invariant/browser.js","../node_modules/lodash.debounce/index.js","../node_modules/lodash.memoize/index.js","../node_modules/make-event-props/dist/esm/index.js","../node_modules/prop-types-extra/lib/all.js","../node_modules/prop-types-extra/lib/utils/createChainableTypeChecker.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-calendar/dist/esm/shared/const.js","../node_modules/react-calendar/dist/esm/shared/dateFormatter.js","../node_modules/react-calendar/dist/esm/shared/dates.js","../node_modules/react-calendar/dist/esm/shared/propTypes.js","../node_modules/react-calendar/dist/esm/Calendar/Navigation.js","../node_modules/react-calendar/dist/esm/Flex.js","../node_modules/react-calendar/dist/esm/shared/utils.js","../node_modules/react-calendar/dist/esm/TileGroup.js","../node_modules/react-calendar/dist/esm/Tile.js","../node_modules/react-calendar/dist/esm/CenturyView/Decade.js","../node_modules/react-calendar/dist/esm/CenturyView/Decades.js","../node_modules/react-calendar/dist/esm/CenturyView.js","../node_modules/react-calendar/dist/esm/DecadeView/Year.js","../node_modules/react-calendar/dist/esm/DecadeView/Years.js","../node_modules/react-calendar/dist/esm/DecadeView.js","../node_modules/react-calendar/dist/esm/YearView/Month.js","../node_modules/react-calendar/dist/esm/YearView/Months.js","../node_modules/react-calendar/dist/esm/YearView.js","../node_modules/react-calendar/dist/esm/MonthView/Day.js","../node_modules/react-calendar/dist/esm/MonthView/Days.js","../node_modules/react-calendar/dist/esm/MonthView/Weekdays.js","../node_modules/react-calendar/dist/esm/MonthView/WeekNumber.js","../node_modules/react-calendar/dist/esm/MonthView/WeekNumbers.js","../node_modules/react-calendar/dist/esm/MonthView.js","../node_modules/react-calendar/dist/esm/Calendar.js","../node_modules/react-calendar/dist/esm/index.js","../node_modules/react-date-picker/dist/DateInput.js","../node_modules/react-date-picker/dist/DateInput/DayInput.js","../node_modules/react-date-picker/dist/DateInput/Input.js","../node_modules/react-date-picker/dist/DateInput/MonthInput.js","../node_modules/react-date-picker/dist/DateInput/MonthSelect.js","../node_modules/react-date-picker/dist/DateInput/NativeInput.js","../node_modules/react-date-picker/dist/DateInput/YearInput.js","../node_modules/react-date-picker/dist/DatePicker.js","../node_modules/react-date-picker/dist/Divider.js","../node_modules/react-date-picker/dist/entry.js","../node_modules/react-date-picker/dist/shared/dateFormatter.js","../node_modules/react-date-picker/dist/shared/dates.js","../node_modules/react-date-picker/dist/shared/propTypes.js","../node_modules/react-date-picker/dist/shared/utils.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react-draggable/build/cjs/Draggable.js","../node_modules/react-draggable/build/cjs/DraggableCore.js","../node_modules/react-draggable/build/cjs/cjs.js","../node_modules/react-draggable/build/cjs/utils/domFns.js","../node_modules/react-draggable/build/cjs/utils/getPrefix.js","../node_modules/react-draggable/build/cjs/utils/log.js","../node_modules/react-draggable/build/cjs/utils/positionFns.js","../node_modules/react-draggable/build/cjs/utils/shims.js","../node_modules/react-fast-compare/index.js","../node_modules/react-filepond/dist/react-filepond.js","../node_modules/detect-element-overflow/dist/esm/index.js","../node_modules/tiny-warning/dist/tiny-warning.esm.js","../node_modules/react-fit/dist/esm/Fit.js","../node_modules/react-fit/dist/esm/index.js","../node_modules/react-plaid-link/dist/index.umd.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/update-input-width/dist/esm/index.js","../node_modules/warning/warning.js","webpack://doddl.customerportal.web/./node_modules/react-calendar/dist/Calendar.css?53fe","webpack://doddl.customerportal.web/./node_modules/react-date-picker/dist/DatePicker.css?1d04","../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/classCallCheck.js","../node_modules/@babel/runtime/helpers/createClass.js","../node_modules/@babel/runtime/helpers/createSuper.js","../node_modules/@babel/runtime/helpers/defineProperty.js","../node_modules/@babel/runtime/helpers/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/inherits.js","../node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/nonIterableRest.js","../node_modules/@babel/runtime/helpers/objectSpread2.js","../node_modules/@babel/runtime/helpers/objectWithoutProperties.js","../node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/slicedToArray.js","../node_modules/@babel/runtime/helpers/typeof.js","../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../webpack/bootstrap","../webpack/runtime/amd options","../webpack/runtime/compat get default export","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/dom-helpers/esm/camelize.js","../node_modules/react-bootstrap/esm/ThemeProvider.js","../node_modules/react-bootstrap/esm/createWithBsPrefix.js","../node_modules/react-bootstrap/esm/NavItem.js","../node_modules/@restart/ui/esm/SelectableContext.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/uncontrollable/lib/esm/utils.js","../node_modules/uncontrollable/lib/esm/hook.js","../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","../node_modules/react-bootstrap/esm/NavbarBrand.js","../node_modules/dom-helpers/esm/ownerDocument.js","../node_modules/dom-helpers/esm/getComputedStyle.js","../node_modules/dom-helpers/esm/ownerWindow.js","../node_modules/dom-helpers/esm/hyphenate.js","../node_modules/dom-helpers/esm/hyphenateStyle.js","../node_modules/dom-helpers/esm/isTransform.js","../node_modules/dom-helpers/esm/css.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/react-transition-group/esm/config.js","../node_modules/react-transition-group/esm/TransitionGroupContext.js","../node_modules/react-transition-group/esm/utils/reflow.js","../node_modules/react-transition-group/esm/Transition.js","../node_modules/dom-helpers/esm/canUseDOM.js","../node_modules/dom-helpers/esm/addEventListener.js","../node_modules/dom-helpers/esm/removeEventListener.js","../node_modules/dom-helpers/esm/listen.js","../node_modules/dom-helpers/esm/transitionEnd.js","../node_modules/dom-helpers/esm/triggerEvent.js","../node_modules/react-bootstrap/esm/transitionEndListener.js","../node_modules/react-bootstrap/esm/createChainedFunction.js","../node_modules/react-bootstrap/esm/triggerBrowserReflow.js","../node_modules/@restart/hooks/esm/useMergedRefs.js","../node_modules/react-bootstrap/esm/safeFindDOMNode.js","../node_modules/react-bootstrap/esm/TransitionWrapper.js","../node_modules/react-bootstrap/esm/Collapse.js","../node_modules/react-bootstrap/esm/NavbarContext.js","../node_modules/react-bootstrap/esm/NavbarCollapse.js","../node_modules/@restart/hooks/esm/useCommittedRef.js","../node_modules/@restart/hooks/esm/useEventCallback.js","../node_modules/react-bootstrap/esm/NavbarToggle.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@restart/hooks/esm/useIsomorphicEffect.js","../node_modules/@restart/hooks/esm/useMediaQuery.js","../node_modules/@restart/hooks/esm/useBreakpoint.js","../node_modules/dom-helpers/esm/activeElement.js","../node_modules/dom-helpers/esm/contains.js","../node_modules/@restart/hooks/esm/useMounted.js","../node_modules/@restart/hooks/esm/useWillUnmount.js","../node_modules/@restart/hooks/esm/useUpdatedRef.js","../node_modules/@restart/hooks/esm/usePrevious.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@restart/ui/esm/DataKey.js","../node_modules/@restart/ui/esm/ModalManager.js","../node_modules/@restart/ui/esm/getScrollbarWidth.js","../node_modules/@restart/ui/esm/useWindow.js","../node_modules/@restart/ui/esm/useWaitForDOMRef.js","../node_modules/@restart/ui/esm/Modal.js","../node_modules/react-bootstrap/esm/Fade.js","../node_modules/react-bootstrap/esm/OffcanvasBody.js","../node_modules/react-bootstrap/esm/OffcanvasToggling.js","../node_modules/react-bootstrap/esm/ModalContext.js","../node_modules/react-bootstrap/esm/CloseButton.js","../node_modules/react-bootstrap/esm/AbstractModalHeader.js","../node_modules/react-bootstrap/esm/OffcanvasHeader.js","../node_modules/react-bootstrap/esm/divWithClassName.js","../node_modules/react-bootstrap/esm/OffcanvasTitle.js","../node_modules/@babel/runtime/helpers/esm/superPropBase.js","../node_modules/@babel/runtime/helpers/esm/get.js","../node_modules/dom-helpers/esm/hasClass.js","../node_modules/dom-helpers/esm/addClass.js","../node_modules/dom-helpers/esm/querySelectorAll.js","../node_modules/dom-helpers/esm/removeClass.js","../node_modules/react-bootstrap/esm/BootstrapModalManager.js","../node_modules/react-bootstrap/esm/Offcanvas.js","../node_modules/react-bootstrap/esm/NavbarOffcanvas.js","../node_modules/react-bootstrap/esm/Navbar.js","../node_modules/@restart/hooks/esm/useForceUpdate.js","../node_modules/@restart/ui/esm/DropdownContext.js","../node_modules/@restart/hooks/esm/useCallbackRef.js","../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/dequal/dist/index.mjs","../node_modules/@restart/hooks/esm/useSafeState.js","../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../node_modules/@popperjs/core/lib/utils/math.js","../node_modules/@popperjs/core/lib/utils/userAgent.js","../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../node_modules/@popperjs/core/lib/dom-utils/contains.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../node_modules/@popperjs/core/lib/utils/within.js","../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../node_modules/@popperjs/core/lib/enums.js","../node_modules/@popperjs/core/lib/modifiers/arrow.js","../node_modules/@popperjs/core/lib/utils/getVariation.js","../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../node_modules/@popperjs/core/lib/modifiers/flip.js","../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../node_modules/@popperjs/core/lib/modifiers/hide.js","../node_modules/@popperjs/core/lib/modifiers/offset.js","../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../node_modules/@popperjs/core/lib/utils/debounce.js","../node_modules/@popperjs/core/lib/createPopper.js","../node_modules/@popperjs/core/lib/utils/mergeByName.js","../node_modules/@restart/ui/esm/popper.js","../node_modules/@restart/ui/esm/usePopper.js","../node_modules/@restart/ui/esm/useClickOutside.js","../node_modules/@restart/ui/esm/mergeOptionsWithPopperConfig.js","../node_modules/@restart/ui/esm/DropdownMenu.js","../node_modules/@react-aria/ssr/dist/packages/@react-aria/ssr/src/SSRProvider.tsx","../node_modules/@restart/ui/esm/DropdownToggle.js","../node_modules/@restart/ui/esm/NavContext.js","../node_modules/@restart/ui/esm/Button.js","../node_modules/@restart/ui/esm/DropdownItem.js","../node_modules/@restart/ui/esm/Dropdown.js","../node_modules/@restart/hooks/esm/useEventListener.js","../node_modules/react-bootstrap/esm/DropdownContext.js","../node_modules/@restart/hooks/esm/useResizeObserver.js","../node_modules/@restart/ui/esm/Anchor.js","../node_modules/react-bootstrap/esm/DropdownItem.js","../node_modules/react-bootstrap/esm/InputGroupContext.js","../node_modules/react-bootstrap/esm/useWrappedRefWithWarning.js","../node_modules/react-bootstrap/esm/DropdownMenu.js","../node_modules/react-bootstrap/esm/Button.js","../node_modules/react-bootstrap/esm/DropdownToggle.js","../node_modules/react-bootstrap/esm/Dropdown.js","../node_modules/@restart/ui/esm/TabContext.js","../node_modules/@restart/ui/esm/NavItem.js","../node_modules/react-bootstrap/esm/NavLink.js","../node_modules/react-bootstrap/esm/NavDropdown.js","../node_modules/@azure/msal-common/src/utils/Constants.ts","../node_modules/@azure/msal-common/src/error/AuthError.ts","../node_modules/@azure/msal-browser/src/utils/BrowserConstants.ts","../node_modules/@azure/msal-browser/src/error/BrowserConfigurationAuthError.ts","../node_modules/@azure/msal-browser/src/app/IPublicClientApplication.ts","../node_modules/@azure/msal-common/src/logger/Logger.ts","../node_modules/@azure/msal-common/src/error/ClientAuthError.ts","../node_modules/@azure/msal-common/src/utils/StringUtils.ts","../node_modules/@azure/msal-browser/src/event/EventType.ts","../node_modules/@azure/msal-common/src/authority/AuthorityType.ts","../node_modules/@azure/msal-browser/src/event/EventMessage.ts","../node_modules/@azure/msal-common/src/account/ClientInfo.ts","../node_modules/@azure/msal-common/src/cache/entities/AccountEntity.ts","../node_modules/@azure/msal-react/src/MsalContext.ts","../node_modules/@azure/msal-react/src/utils/utilities.ts","../node_modules/@azure/msal-react/src/packageMetadata.ts","../node_modules/@azure/msal-react/src/MsalProvider.tsx","../node_modules/@azure/msal-react/src/hooks/useMsal.ts","../node_modules/@azure/msal-react/src/hooks/useIsAuthenticated.ts","../node_modules/@azure/msal-react/src/components/AuthenticatedTemplate.tsx","../node_modules/@azure/msal-react/src/components/UnauthenticatedTemplate.tsx","../node_modules/@azure/msal-react/src/hooks/useAccount.ts","helper/authConfig.tsx","components/SignIn.tsx","components/SignOut.tsx","components/Menu.tsx","../../packages/react-router/index.tsx","../../packages/react-router-dom/index.tsx","../node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","models/PortalMortgageModel.ts","models/ProfileItemModel.ts","../node_modules/react-bootstrap/esm/createUtilityClasses.js","../node_modules/react-bootstrap/esm/Stack.js","../node_modules/react-bootstrap/esm/Row.js","../node_modules/react-bootstrap/esm/Col.js","../node_modules/react-bootstrap/esm/Container.js","models/PortalMortgageDocumentModel.ts","components/UserContext.tsx","components/Intercom.tsx","components/UserContextComponent.tsx","components/ImpersonateContactButton.tsx","../node_modules/@microsoft/dynamicproto-js/lib/out/lib/src/DynamicProto.js","components/PortalPage.tsx","../node_modules/@microsoft/applicationinsights-shims/src/Constants.ts","../node_modules/@microsoft/applicationinsights-shims/src/Helpers.ts","../node_modules/@microsoft/applicationinsights-shims/src/TsLibShims.ts","../node_modules/@microsoft/applicationinsights-core-js/dist-esm/__DynamicConstants.js","../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/InternalConstants.js","../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/HelperFuncs.js","../node_modules/@microsoft/applicationinsights-common/dist-esm/__DynamicConstants.js","../node_modules/@microsoft/applicationinsights-common/dist-esm/HelperFuncs.js","../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/EnvUtils.js","../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/DbgExtensionUtils.js","../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/DiagnosticLogger.js","../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK.Enums/EnumHelperFuncs.js","../node_modules/@microsoft/applicationinsights-common/dist-esm/Enums.js","../node_modules/@microsoft/applicationinsights-common/dist-esm/StorageHelperFuncs.js","../node_modules/@microsoft/applicationinsights-common/dist-esm/applicationinsights-common.js","../node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/Common/DataSanitizer.js","../node_modules/@microsoft/applicationinsights-common/dist-esm/Constants.js","../node_modules/@microsoft/applicationinsights-common/dist-esm/TelemetryItemCreator.js","../node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/Event.js","../node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/Trace.js","../node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/Common/DataPoint.js","../node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/Metric.js","../node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/PageView.js","../node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/PageViewPerformance.js","../node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/Exception.js","../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/CookieMgr.js","../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/RandomHelper.js","../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/DataCacheHelper.js","../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/EventHelpers.js","../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/CoreUtils.js","../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/W3cTraceParent.js","../node_modules/@microsoft/applicationinsights-common/dist-esm/DomHelperFuncs.js","../node_modules/@microsoft/applicationinsights-common/dist-esm/RequestResponseHeaders.js","../node_modules/@microsoft/applicationinsights-common/dist-esm/UrlHelperFuncs.js","../node_modules/@microsoft/applicationinsights-common/dist-esm/Util.js","../node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/RemoteDependencyData.js","../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/PerfManager.js","../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/TelemetryHelpers.js","../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/ProcessTelemetryContext.js","../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/InstrumentHooks.js","../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/UnloadHandlerContainer.js","../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/BaseTelemetryPlugin.js","../node_modules/@microsoft/applicationinsights-analytics-js/dist-esm/__DynamicConstants.js","../node_modules/@microsoft/applicationinsights-analytics-js/dist-esm/JavaScriptSDK/Telemetry/PageViewManager.js","../node_modules/@microsoft/applicationinsights-analytics-js/dist-esm/JavaScriptSDK/Telemetry/PageViewPerformanceManager.js","../node_modules/@microsoft/applicationinsights-analytics-js/dist-esm/JavaScriptSDK/Telemetry/PageVisitTimeManager.js","../node_modules/@microsoft/applicationinsights-analytics-js/dist-esm/JavaScriptSDK/Timing.js","../node_modules/@microsoft/applicationinsights-analytics-js/dist-esm/JavaScriptSDK/AnalyticsPlugin.js","../node_modules/@microsoft/applicationinsights-common/dist-esm/Interfaces/Contracts/ContextTagKeys.js","../node_modules/@microsoft/applicationinsights-common/dist-esm/Interfaces/PartAExtensions.js","../node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/Common/Envelope.js","../node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/Common/Data.js","../node_modules/@microsoft/applicationinsights-channel-js/dist-esm/__DynamicConstants.js","../node_modules/@microsoft/applicationinsights-channel-js/dist-esm/EnvelopeCreator.js","../node_modules/@microsoft/applicationinsights-channel-js/dist-esm/Offline.js","../node_modules/@microsoft/applicationinsights-channel-js/dist-esm/SendBuffer.js","../node_modules/@microsoft/applicationinsights-channel-js/dist-esm/Sender.js","../node_modules/@microsoft/applicationinsights-channel-js/dist-esm/Serializer.js","../node_modules/@microsoft/applicationinsights-channel-js/dist-esm/TelemetryProcessors/SamplingScoreGenerators/HashCodeScoreGenerator.js","../node_modules/@microsoft/applicationinsights-channel-js/dist-esm/TelemetryProcessors/SamplingScoreGenerators/SamplingScoreGenerator.js","../node_modules/@microsoft/applicationinsights-channel-js/dist-esm/TelemetryProcessors/Sample.js","../node_modules/@microsoft/applicationinsights-common/dist-esm/ConnectionStringParser.js","../node_modules/@microsoft/applicationinsights-common/dist-esm/Interfaces/Contracts/SeverityLevel.js","../node_modules/@microsoft/applicationinsights-common/dist-esm/Interfaces/IConfig.js","../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/ChannelController.js","../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/TelemetryInitializerPlugin.js","../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/BaseCore.js","../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/NotificationManager.js","../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/AppInsightsCore.js","../node_modules/@microsoft/applicationinsights-dependencies-js/dist-esm/InternalConstants.js","../node_modules/@microsoft/applicationinsights-dependencies-js/dist-esm/__DynamicConstants.js","../node_modules/@microsoft/applicationinsights-dependencies-js/dist-esm/ajaxRecord.js","../node_modules/@microsoft/applicationinsights-dependencies-js/dist-esm/ajax.js","../node_modules/@microsoft/applicationinsights-properties-js/dist-esm/Context/Application.js","../node_modules/@microsoft/applicationinsights-properties-js/dist-esm/Context/Device.js","../node_modules/@microsoft/applicationinsights-properties-js/dist-esm/Context/Internal.js","../node_modules/@microsoft/applicationinsights-properties-js/dist-esm/Context/Location.js","../node_modules/@microsoft/applicationinsights-properties-js/dist-esm/Context/Session.js","../node_modules/@microsoft/applicationinsights-properties-js/dist-esm/Context/TelemetryTrace.js","../node_modules/@microsoft/applicationinsights-properties-js/dist-esm/Context/User.js","../node_modules/@microsoft/applicationinsights-properties-js/dist-esm/TelemetryContext.js","../node_modules/@microsoft/applicationinsights-web/dist-esm/Initialization.js","../node_modules/@microsoft/applicationinsights-properties-js/dist-esm/PropertiesPlugin.js","../node_modules/@microsoft/applicationinsights-web/dist-esm/InternalConstants.js","../node_modules/@microsoft/applicationinsights-web/dist-esm/__DynamicConstants.js","../node_modules/@microsoft/applicationinsights-react-js/dist-esm/ReactPlugin.js","components/ProgressTile.tsx","components/AppInsights.jsx","../node_modules/dom-helpers/esm/scrollbarSize.js","../node_modules/react-bootstrap/esm/ModalBody.js","../node_modules/react-bootstrap/esm/ModalDialog.js","../node_modules/react-bootstrap/esm/ModalFooter.js","../node_modules/react-bootstrap/esm/ModalHeader.js","../node_modules/react-bootstrap/esm/ModalTitle.js","../node_modules/react-bootstrap/esm/Modal.js","models/PortalMetadata.ts","../node_modules/react-bootstrap/esm/Feedback.js","../node_modules/react-bootstrap/esm/FormContext.js","../node_modules/react-bootstrap/esm/FormCheckInput.js","../node_modules/react-bootstrap/esm/FormCheckLabel.js","../node_modules/react-bootstrap/esm/FormCheck.js","../node_modules/react-bootstrap/esm/ElementChildren.js","../node_modules/react-bootstrap/esm/FormControl.js","../node_modules/react-bootstrap/esm/FormFloating.js","../node_modules/react-bootstrap/esm/FormGroup.js","../node_modules/react-bootstrap/esm/FormLabel.js","../node_modules/react-bootstrap/esm/FormRange.js","../node_modules/react-bootstrap/esm/FormSelect.js","../node_modules/react-bootstrap/esm/FormText.js","../node_modules/react-bootstrap/esm/Switch.js","../node_modules/react-bootstrap/esm/FloatingLabel.js","../node_modules/react-bootstrap/esm/Form.js","../node_modules/react-bootstrap/esm/InputGroup.js","../node_modules/@restart/hooks/esm/useTimeout.js","../node_modules/@restart/ui/esm/useRootClose.js","../node_modules/@restart/ui/esm/Overlay.js","../node_modules/react-bootstrap/esm/PopoverHeader.js","../node_modules/react-bootstrap/esm/PopoverBody.js","../node_modules/react-bootstrap/esm/helpers.js","../node_modules/react-bootstrap/esm/Popover.js","../node_modules/react-bootstrap/esm/Overlay.js","../node_modules/react-bootstrap/esm/useOverlayOffset.js","../node_modules/react-bootstrap/esm/OverlayTrigger.js","components/Tooltip.tsx","components/FormControl.tsx","components/Pills/Pill.tsx","components/Pills/InputPill.tsx","../node_modules/react-bootstrap/esm/Spinner.js","helper/currencyFormatter.ts","forms/FieldsCollection.ts","forms/Applicant2SetupFields.ts","components/ApplicantSetup.tsx","components/ApplicantSetupDialog.tsx","components/Tiles/AppointSolicitorTile.tsx","components/AIP/InsuranceQuoteButton.tsx","components/Tiles/LifeCoverTile.tsx","pages/Profile.tsx","pages/MortgageDetails.tsx","../node_modules/react-bootstrap/esm/ButtonGroup.js","helper/tooltipHelper.tsx","forms/PropertyFields.ts","helper/Logger.tsx","components/Data8AutoComplete.jsx","components/Address.tsx","components/Pills/LinkPill.tsx","pages/Property.tsx","components/DocumentList.tsx","components/Chat/ChatMessage.tsx","../node_modules/react-transition-group/esm/utils/ChildMapping.js","../node_modules/react-transition-group/esm/TransitionGroup.js","../node_modules/react-transition-group/esm/CSSTransition.js","components/Chat/ChatQuestionModel.ts","components/Chat/QuestionManager.ts","helper/delay.ts","components/Chat/ChatButtonList.tsx","components/FileUploadLegacy.tsx","components/Chat/ChatUpload.tsx","components/Chat/ChatControl.tsx","../node_modules/react-bootstrap/esm/CardImg.js","../node_modules/react-bootstrap/esm/CardHeaderContext.js","../node_modules/react-bootstrap/esm/CardHeader.js","../node_modules/react-bootstrap/esm/Card.js","../node_modules/react-bootstrap/esm/AccordionContext.js","../node_modules/react-bootstrap/esm/AccordionCollapse.js","../node_modules/react-bootstrap/esm/AccordionItemContext.js","../node_modules/react-bootstrap/esm/AccordionBody.js","../node_modules/react-bootstrap/esm/AccordionButton.js","../node_modules/react-bootstrap/esm/AccordionHeader.js","../node_modules/react-bootstrap/esm/AccordionItem.js","../node_modules/react-bootstrap/esm/Accordion.js","../node_modules/filestack-react/node_modules/prop-types/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/filestack-react/node_modules/object-assign/index.js","../node_modules/filestack-react/node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js","../node_modules/filestack-react/node_modules/prop-types/node_modules/react-is/index.js","../node_modules/filestack-react/node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/filestack-react/node_modules/prop-types/checkPropTypes.js","../node_modules/filestack-react/node_modules/prop-types/factoryWithTypeCheckers.js","../node_modules/filestack-react/node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/filestack-react/node_modules/prop-types/index.js","../node_modules/filestack-react/src/picker/picker-base.js","../node_modules/filestack-react/src/picker/use-picker.jsx","../node_modules/filestack-react/src/picker/picker-inline.jsx","../node_modules/filestack-react/src/picker/picker-drop-pane.jsx","components/FileUpload.tsx","components/PlaidLinkCustom.tsx","pages/OpenBanking.tsx","../node_modules/react-bootstrap-icons/dist/icons/chevron-up.js","models/PortalAIPApplication.ts","components/DraggableModal.jsx","components/FormattedDate.tsx","components/Pills/TransactionComments.tsx","components/Pills/DocumentPill.tsx","components/DocumentManager.tsx","pages/Documents.tsx","components/HelpBox.tsx","pages/DocumentReview.tsx","pages/NotFound.tsx","pages/Error.tsx","pages/LenderAdvice.tsx","components/UserProvider.tsx","components/DownloadDocumentButton.tsx","components/ValuationDownloadButton.tsx","components/AIPDownloadButton.tsx","../node_modules/react-responsive-masonry/es/Masonry/index.js","../node_modules/react-responsive-masonry/es/ResponsiveMasonry/index.js","../node_modules/react-responsive-masonry/es/index.js","pages/AIPApplication.tsx","../node_modules/@restart/ui/esm/Nav.js","../node_modules/react-bootstrap/esm/Nav.js","doddl-brand-logo.svg","components/Timeline.tsx","forms/SharedFields.ts","components/SVG/DOD BER A.svg","helper/lists.js","forms/CalculatorFields.ts","components/NumberInput.tsx","components/TermSelect.tsx","components/BooleanInput.tsx","components/SVG/DOD BER B.svg","components/SVG/DOD BER C.svg","components/SVG/DOD BER D.svg","components/SVG/DOD BER E.svg","components/SVG/DOD BER F.svg","components/SVG/DOD BER G.svg","components/SVG/DOD BER Idle.svg","components/BerImage.tsx","components/SideNav.tsx","pages/Shared.tsx","pages/HomePage.tsx","forms/SolicitorFields.ts","../node_modules/react-calendly/dist/index.es.js","pages/SolicitorDetails.tsx","pages/SharedDetails.tsx","../node_modules/react-google-recaptcha/lib/esm/recaptcha.js","../node_modules/react-async-script/lib/esm/async-script-loader.js","../node_modules/react-google-recaptcha/lib/esm/recaptcha-wrapper.js","models/PortalSpecialConditionsModel.ts","../node_modules/react-google-recaptcha/lib/esm/index.js","pages/NotValid.tsx","components/RequestInterceptor.tsx","pages/Dashboard.tsx","components/Pills/ButtonSubmitPill.tsx","models/PortalContactModel.ts","components/Pills/CopyPill.tsx","components/ReferralBox.tsx","forms/ApplicantFields.ts","pages/ApplicantService.tsx","../node_modules/tslib/tslib.es6.js","../node_modules/@fluentui/merge-styles/src/concatStyleSets.ts","../node_modules/@fluentui/react/node_modules/@fluentui/utilities/lib/src/dom/canUseDOM.ts","../node_modules/@fluentui/react/node_modules/@fluentui/utilities/lib/src/dom/getWindow.ts","../node_modules/@fluentui/react/node_modules/@fluentui/utilities/src/GlobalSettings.ts","../node_modules/@fluentui/react/node_modules/@fluentui/utilities/lib/src/customizations/Customizations.ts","../node_modules/@fluentui/react/node_modules/@fluentui/utilities/lib/src/customizations/CustomizerContext.ts","../node_modules/@fluentui/react/node_modules/@fluentui/utilities/lib/src/customizations/useCustomizationSettings.ts","../node_modules/@fluentui/react/node_modules/@fluentui/utilities/src/styled.tsx","../node_modules/@fluentui/merge-styles/src/concatStyleSetsWithProps.ts","../node_modules/@fluentui/react/node_modules/@fluentui/react-hooks/src/useConst.ts","../node_modules/@fluentui/merge-styles/src/Stylesheet.ts","../node_modules/@fluentui/react/node_modules/@fluentui/utilities/src/getId.ts","../node_modules/@fluentui/react/node_modules/@fluentui/react-hooks/src/useId.ts","../node_modules/@fluentui/merge-styles/src/extractStyleParts.ts","../node_modules/@fluentui/merge-styles/lib/src/transforms/kebabRules.ts","../node_modules/@fluentui/merge-styles/src/getVendorSettings.ts","../node_modules/@fluentui/merge-styles/lib/src/transforms/prefixRules.ts","../node_modules/@fluentui/merge-styles/lib/src/transforms/provideUnits.ts","../node_modules/@fluentui/merge-styles/lib/src/transforms/rtlifyRules.ts","../node_modules/@fluentui/merge-styles/src/styleToClassName.ts","../node_modules/@fluentui/merge-styles/src/StyleOptionsState.ts","../node_modules/@fluentui/merge-styles/src/tokenizeWithParentheses.ts","../node_modules/@fluentui/merge-styles/src/mergeStyleSets.ts","../node_modules/@fluentui/react/node_modules/@fluentui/utilities/lib/src/dom/getDocument.ts","../node_modules/@fluentui/react/node_modules/@fluentui/utilities/src/rtl.ts","../node_modules/@fluentui/react/node_modules/@fluentui/utilities/src/sessionStorage.ts","../node_modules/@fluentui/react/node_modules/@fluentui/utilities/src/classNamesFunction.ts","../node_modules/@fluentui/react/node_modules/@fluentui/utilities/src/properties.ts","../node_modules/@fluentui/react/node_modules/@fluentui/utilities/src/KeyCodes.ts","../node_modules/@fluentui/react/node_modules/@fluentui/utilities/src/keyboard.ts","../node_modules/@fluentui/react/node_modules/@fluentui/utilities/src/setFocusVisibility.ts","../node_modules/@fluentui/react/node_modules/@fluentui/utilities/src/useFocusRects.ts","../node_modules/@fluentui/react/lib/components/src/components/Label/Label.base.tsx","../node_modules/@fluentui/style-utilities/node_modules/@fluentui/theme/lib/src/fonts/FluentFonts.ts","../node_modules/@fluentui/style-utilities/lib/src/styles/CommonStyles.ts","../node_modules/@fluentui/style-utilities/node_modules/@fluentui/utilities/src/setFocusVisibility.ts","../node_modules/@fluentui/style-utilities/lib/src/styles/zIndexes.ts","../node_modules/@fluentui/style-utilities/lib/src/styles/getFocusStyle.ts","../node_modules/@fluentui/set-version/src/setVersion.ts","../node_modules/@fluentui/style-utilities/node_modules/@fluentui/utilities/lib/src/dom/canUseDOM.ts","../node_modules/@fluentui/set-version/src/index.ts","../node_modules/@fluentui/style-utilities/src/version.ts","../node_modules/@fluentui/style-utilities/node_modules/@fluentui/utilities/lib/src/dom/getWindow.ts","../node_modules/@fluentui/style-utilities/node_modules/@fluentui/utilities/src/GlobalSettings.ts","../node_modules/@fluentui/style-utilities/node_modules/@fluentui/utilities/lib/src/customizations/Customizations.ts","../node_modules/@microsoft/load-themed-styles/src/index.ts","../node_modules/@fluentui/style-utilities/node_modules/@fluentui/theme/lib/src/colors/DefaultPalette.ts","../node_modules/@fluentui/style-utilities/node_modules/@fluentui/theme/lib/src/effects/FluentDepths.ts","../node_modules/@fluentui/style-utilities/node_modules/@fluentui/theme/lib/src/effects/DefaultEffects.ts","../node_modules/@fluentui/merge-styles/src/fontFace.ts","../node_modules/@fluentui/style-utilities/node_modules/@fluentui/theme/lib/src/fonts/createFontStyles.ts","../node_modules/@fluentui/style-utilities/node_modules/@fluentui/utilities/src/language.ts","../node_modules/@fluentui/style-utilities/node_modules/@fluentui/theme/lib/src/fonts/DefaultFontStyles.ts","../node_modules/@fluentui/style-utilities/node_modules/@fluentui/utilities/lib/src/dom/getDocument.ts","../node_modules/@fluentui/style-utilities/node_modules/@fluentui/utilities/src/localStorage.ts","../node_modules/@fluentui/style-utilities/node_modules/@fluentui/utilities/src/sessionStorage.ts","../node_modules/@fluentui/style-utilities/node_modules/@fluentui/utilities/src/merge.ts","../node_modules/@fluentui/style-utilities/node_modules/@fluentui/theme/lib/src/utilities/makeSemanticColors.ts","../node_modules/@fluentui/style-utilities/node_modules/@fluentui/theme/lib/src/spacing/DefaultSpacing.ts","../node_modules/@fluentui/style-utilities/node_modules/@fluentui/theme/src/createTheme.ts","../node_modules/@fluentui/style-utilities/node_modules/@fluentui/theme/src/mergeThemes.ts","../node_modules/@fluentui/style-utilities/lib/src/styles/theme.ts","../node_modules/@fluentui/style-utilities/src/index.ts","../node_modules/@fluentui/react/lib/components/src/components/Label/Label.styles.ts","../node_modules/@fluentui/react/lib/components/src/components/Label/Label.tsx","../node_modules/@fluentui/react/lib/components/src/components/Toggle/Toggle.base.tsx","../node_modules/@fluentui/react/node_modules/@fluentui/react-hooks/src/useControllableValue.ts","../node_modules/@fluentui/react/lib/components/src/components/Toggle/Toggle.tsx","../node_modules/@fluentui/react/lib/components/src/components/Toggle/Toggle.styles.ts","components/Completion/RateCheckerTile.tsx","components/Completion/SpreadTheWordTile.tsx","components/Completion/StayInformedTile.tsx","components/LoanOfferDownloadButton.tsx","components/Tiles/ConfirmTitleDeedsTile.tsx","components/Tiles/ESISTile.tsx","components/Tiles/CostOfCreditTile.tsx","pages/LoanCompletion.tsx","pages/LenderConfirmation.tsx","../node_modules/@azure/msal-common/src/telemetry/performance/PerformanceEvent.ts","../node_modules/@azure/msal-common/src/error/JoseHeaderError.ts","../node_modules/@azure/msal-browser/src/cache/CryptoKeyStore.ts","../node_modules/@azure/msal-common/src/crypto/JoseHeader.ts","../node_modules/@azure/msal-browser/src/utils/MathUtils.ts","../node_modules/@azure/msal-browser/src/crypto/GuidGenerator.ts","../node_modules/@azure/msal-browser/src/utils/BrowserStringUtils.ts","../node_modules/@azure/msal-browser/src/encode/Base64Encode.ts","../node_modules/@azure/msal-browser/src/encode/Base64Decode.ts","../node_modules/@azure/msal-browser/src/error/BrowserAuthError.ts","../node_modules/@azure/msal-browser/src/crypto/PkceGenerator.ts","../node_modules/@azure/msal-browser/src/crypto/BrowserCrypto.ts","../node_modules/@azure/msal-browser/src/cache/DatabaseStorage.ts","../node_modules/@azure/msal-browser/src/cache/MemoryStorage.ts","../node_modules/@azure/msal-browser/src/cache/AsyncMemoryStorage.ts","../node_modules/@azure/msal-common/src/account/CcsCredential.ts","../node_modules/@azure/msal-browser/src/crypto/CryptoOps.ts","../node_modules/@azure/msal-common/src/telemetry/performance/PerformanceClient.ts","../node_modules/@azure/msal-common/src/telemetry/performance/StubPerformanceClient.ts","../node_modules/@azure/msal-common/src/crypto/ICrypto.ts","../node_modules/@azure/msal-common/src/error/InteractionRequiredAuthError.ts","../node_modules/@azure/msal-common/src/error/ServerError.ts","../node_modules/@azure/msal-common/src/cache/entities/CredentialEntity.ts","../node_modules/@azure/msal-common/src/error/ClientConfigurationError.ts","../node_modules/@azure/msal-common/src/request/ScopeSet.ts","../node_modules/@azure/msal-common/src/account/AuthToken.ts","../node_modules/@azure/msal-common/src/cache/CacheManager.ts","../node_modules/@azure/msal-common/src/cache/entities/IdTokenEntity.ts","../node_modules/@azure/msal-common/src/utils/TimeUtils.ts","../node_modules/@azure/msal-common/src/cache/entities/AccessTokenEntity.ts","../node_modules/@azure/msal-common/src/cache/entities/RefreshTokenEntity.ts","../node_modules/@azure/msal-common/src/cache/entities/AppMetadataEntity.ts","../node_modules/@azure/msal-common/src/cache/entities/ServerTelemetryEntity.ts","../node_modules/@azure/msal-common/src/cache/entities/AuthorityMetadataEntity.ts","../node_modules/@azure/msal-common/src/cache/entities/ThrottlingEntity.ts","../node_modules/@azure/msal-common/src/utils/ProtocolUtils.ts","../node_modules/@azure/msal-common/src/authority/ProtocolMode.ts","../node_modules/@azure/msal-common/src/authority/AuthorityOptions.ts","../node_modules/@azure/msal-browser/src/cache/BrowserStorage.ts","../node_modules/@azure/msal-common/src/url/UrlString.ts","../node_modules/@azure/msal-browser/src/utils/BrowserProtocolUtils.ts","../node_modules/@azure/msal-browser/src/cache/BrowserCacheManager.ts","../node_modules/@azure/msal-common/src/packageMetadata.ts","../node_modules/@azure/msal-common/src/config/ClientConfiguration.ts","../node_modules/@azure/msal-common/src/network/INetworkModule.ts","../node_modules/@azure/msal-browser/src/network/FetchClient.ts","../node_modules/@azure/msal-browser/src/network/XhrClient.ts","../node_modules/@azure/msal-browser/src/utils/BrowserUtils.ts","../node_modules/@azure/msal-browser/src/navigation/NavigationClient.ts","../node_modules/@azure/msal-browser/src/config/Configuration.ts","../node_modules/@azure/msal-common/src/crypto/PopTokenGenerator.ts","../node_modules/@azure/msal-browser/src/packageMetadata.ts","../node_modules/@azure/msal-browser/src/event/EventHandler.ts","../node_modules/@azure/msal-common/src/network/ThrottlingUtils.ts","../node_modules/@azure/msal-common/src/network/NetworkManager.ts","../node_modules/@azure/msal-common/src/client/BaseClient.ts","../node_modules/@azure/msal-common/src/request/RequestValidator.ts","../node_modules/@azure/msal-common/src/request/RequestParameterBuilder.ts","../node_modules/@azure/msal-common/src/cache/entities/CacheRecord.ts","../node_modules/@azure/msal-common/src/cache/persistence/TokenCacheContext.ts","../node_modules/@azure/msal-common/src/response/ResponseHandler.ts","../node_modules/@azure/msal-common/src/client/AuthorizationCodeClient.ts","../node_modules/@azure/msal-common/src/authority/OpenIdConfigResponse.ts","../node_modules/@azure/msal-common/src/authority/AuthorityMetadata.ts","../node_modules/@azure/msal-common/src/authority/RegionDiscovery.ts","../node_modules/@azure/msal-browser/src/error/NativeAuthError.ts","../node_modules/@azure/msal-common/src/authority/Authority.ts","../node_modules/@azure/msal-common/src/authority/CloudInstanceDiscoveryResponse.ts","../node_modules/@azure/msal-common/src/authority/AuthorityFactory.ts","../node_modules/@azure/msal-common/src/telemetry/server/ServerTelemetryManager.ts","../node_modules/@azure/msal-browser/src/interaction_client/BaseInteractionClient.ts","../node_modules/@azure/msal-browser/src/interaction_client/StandardInteractionClient.ts","../node_modules/@azure/msal-common/src/client/RefreshTokenClient.ts","../node_modules/@azure/msal-common/src/client/SilentFlowClient.ts","../node_modules/@azure/msal-browser/src/interaction_client/SilentCacheClient.ts","../node_modules/@azure/msal-browser/src/interaction_client/NativeInteractionClient.ts","../node_modules/@azure/msal-browser/src/broker/nativeBroker/NativeMessageHandler.ts","../node_modules/@azure/msal-browser/src/interaction_handler/InteractionHandler.ts","../node_modules/@azure/msal-browser/src/interaction_client/PopupClient.ts","../node_modules/@azure/msal-browser/src/interaction_handler/RedirectHandler.ts","../node_modules/@azure/msal-browser/src/interaction_client/RedirectClient.ts","../node_modules/@azure/msal-browser/src/interaction_handler/SilentHandler.ts","../node_modules/@azure/msal-browser/src/interaction_client/SilentIframeClient.ts","../node_modules/@azure/msal-browser/src/interaction_client/SilentRefreshClient.ts","../node_modules/@azure/msal-browser/src/cache/TokenCache.ts","../node_modules/@azure/msal-browser/src/interaction_client/HybridSpaAuthorizationCodeClient.ts","../node_modules/@azure/msal-browser/src/interaction_client/SilentAuthCodeClient.ts","../node_modules/@azure/msal-browser/src/telemetry/BrowserPerformanceMeasurement.ts","../node_modules/@azure/msal-browser/src/telemetry/BrowserPerformanceClient.ts","../node_modules/@azure/msal-browser/src/app/ClientApplication.ts","../node_modules/@azure/msal-browser/src/app/PublicClientApplication.ts","../node_modules/react-idle-timer/dist/index.esm.js","components/Idle/LogoutOnIdle.tsx","pages/ImpersonateContact.tsx","pages/ApplicantPage.tsx","pages/ApplicantBaseComponent.tsx","components/Pills/AggregatePillOverlay.tsx","components/FieldWithHelptext.tsx","components/BothApplicantFieldsWithAggregate.tsx","pages/ApplicantResidential.tsx","../node_modules/react-bootstrap-typeahead/es/constants.js","../node_modules/react-bootstrap-typeahead/es/utils/getStringLabelKey.js","../node_modules/react-bootstrap-typeahead/es/utils/hasOwnProperty.js","../node_modules/react-bootstrap-typeahead/es/utils/nodash.js","../node_modules/react-bootstrap-typeahead/es/utils/getOptionLabel.js","../node_modules/react-bootstrap-typeahead/es/utils/addCustomOption.js","../node_modules/react-bootstrap-typeahead/es/utils/getOptionProperty.js","../node_modules/react-bootstrap-typeahead/es/utils/stripDiacritics.js","../node_modules/react-bootstrap-typeahead/es/utils/warn.js","../node_modules/react-bootstrap-typeahead/es/utils/defaultFilterBy.js","../node_modules/react-bootstrap-typeahead/es/utils/isSelectable.js","../node_modules/react-bootstrap-typeahead/es/utils/getMatchBounds.js","../node_modules/react-bootstrap-typeahead/es/utils/getHintText.js","../node_modules/react-bootstrap-typeahead/es/utils/getMenuItemId.js","../node_modules/react-bootstrap-typeahead/es/utils/getInputProps.js","../node_modules/react-bootstrap-typeahead/es/utils/getInputText.js","../node_modules/react-bootstrap-typeahead/es/utils/getIsOnlyResult.js","../node_modules/react-bootstrap-typeahead/es/utils/getTruncatedOptions.js","../node_modules/react-bootstrap-typeahead/es/utils/getUpdatedActiveIndex.js","../node_modules/react-bootstrap-typeahead/es/utils/preventInputBlur.js","../node_modules/react-bootstrap-typeahead/es/utils/size.js","../node_modules/react-bootstrap-typeahead/es/utils/propsWithBsClassName.js","../node_modules/react-bootstrap-typeahead/es/propTypes.js","../node_modules/react-bootstrap-typeahead/es/behaviors/async.js","../node_modules/react-overlays/esm/ownerDocument.js","../node_modules/react-overlays/esm/safeFindDOMNode.js","../node_modules/react-overlays/esm/useRootClose.js","../node_modules/react-bootstrap-typeahead/es/core/Context.js","../node_modules/react-bootstrap-typeahead/es/core/TypeaheadManager.js","../node_modules/react-bootstrap-typeahead/es/utils/defaultSelectHint.js","../node_modules/react-bootstrap-typeahead/es/core/Typeahead.js","../node_modules/react-bootstrap-typeahead/es/utils/validateSelectedPropChange.js","../node_modules/react-bootstrap-typeahead/es/utils/isShown.js","../node_modules/react-bootstrap-typeahead/es/components/ClearButton/ClearButton.js","../node_modules/react-bootstrap-typeahead/es/components/Loader/Loader.js","../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../node_modules/@popperjs/core/lib/popper.js","../node_modules/react-popper/lib/esm/utils.js","../node_modules/react-popper/lib/esm/usePopper.js","../node_modules/react-bootstrap-typeahead/es/components/Overlay/Overlay.js","../node_modules/react-bootstrap-typeahead/es/behaviors/token.js","../node_modules/react-bootstrap-typeahead/es/components/Token/Token.js","../node_modules/react-bootstrap-typeahead/es/components/Hint/Hint.js","../node_modules/react-bootstrap-typeahead/es/components/Input/Input.js","../node_modules/react-bootstrap-typeahead/es/components/TypeaheadInputMulti/TypeaheadInputMulti.js","../node_modules/react-bootstrap-typeahead/es/components/TypeaheadInputSingle/TypeaheadInputSingle.js","../node_modules/react-bootstrap-typeahead/es/components/Highlighter/Highlighter.js","../node_modules/compute-scroll-into-view/src/index.ts","../node_modules/scroll-into-view-if-needed/es/index.js","../node_modules/react-bootstrap-typeahead/es/behaviors/item.js","../node_modules/react-bootstrap-typeahead/es/components/MenuItem/MenuItem.js","../node_modules/react-bootstrap-typeahead/es/components/Menu/Menu.js","../node_modules/react-bootstrap-typeahead/es/components/TypeaheadMenu/TypeaheadMenu.js","../node_modules/react-bootstrap-typeahead/es/components/Typeahead/Typeahead.js","components/Pills/AggregatePill.tsx","components/Employment.tsx","../node_modules/react-bootstrap-typeahead/es/utils/getDisplayName.js","../node_modules/react-bootstrap-typeahead/es/components/AsyncTypeahead/AsyncTypeahead.js","components/SelfEmployment.tsx","components/Applicant/Profit.tsx","components/Applicant/VariableIncome.tsx","pages/ApplicantEmployment.tsx","components/Pills/AutoCompletePill.tsx","components/Applicant/Children.tsx","pages/ApplicantPersonal.tsx","forms/FinanceFields.ts","components/Finance/Finance.tsx","components/Pills/FinancePill.tsx","components/OpenBankingBubbles.tsx","pages/ApplicantFinancial.tsx","components/Finance/FinanceManager.tsx","pages/ApplicantAssetsAndLoans.tsx","components/NumberAsCurrency.tsx","components/Cards/CalculatedLenderProductRow.tsx","pages/MortgageCalculator.tsx","App.tsx","reportWebVitals.ts","pages/GoToLoginPage.tsx","components/Unauthenticated.tsx","index.tsx"],"sourcesContent":["/**\n * Utils\n */\nfunction makeGetEdgeOfNeighbor(getPeriod, getEdgeOfPeriod, defaultOffset) {\n return function makeGetEdgeOfNeighborInternal(date, offset) {\n if (offset === void 0) { offset = defaultOffset; }\n var previousPeriod = getPeriod(date) + offset;\n return getEdgeOfPeriod(previousPeriod);\n };\n}\nfunction makeGetEnd(getBeginOfNextPeriod) {\n return function makeGetEndInternal(date) {\n return new Date(getBeginOfNextPeriod(date).getTime() - 1);\n };\n}\nfunction makeGetRange(getStart, getEnd) {\n return function makeGetRangeInternal(date) {\n return [getStart(date), getEnd(date)];\n };\n}\n/**\n * Simple getters - getting a property of a given point in time\n */\n/**\n * Gets year from date.\n *\n * @param {Date|number|string} date Date to get year from.\n */\nexport function getYear(date) {\n if (date instanceof Date) {\n return date.getFullYear();\n }\n if (typeof date === 'number') {\n return date;\n }\n var year = parseInt(date, 10);\n if (typeof date === 'string' && !isNaN(year)) {\n return year;\n }\n throw new Error(\"Failed to get year from date: \".concat(date, \".\"));\n}\n/**\n * Gets month from date.\n *\n * @param {Date} date Date to get month from.\n */\nexport function getMonth(date) {\n if (date instanceof Date) {\n return date.getMonth();\n }\n throw new Error(\"Failed to get month from date: \".concat(date, \".\"));\n}\n/**\n * Gets human-readable month from date.\n *\n * @param {Date} date Date to get human-readable month from.\n */\nexport function getMonthHuman(date) {\n if (date instanceof Date) {\n return date.getMonth() + 1;\n }\n throw new Error(\"Failed to get human-readable month from date: \".concat(date, \".\"));\n}\n/**\n * Gets human-readable day of the month from date.\n *\n * @param {Date} date Date to get day of the month from.\n */\nexport function getDate(date) {\n if (date instanceof Date) {\n return date.getDate();\n }\n throw new Error(\"Failed to get year from date: \".concat(date, \".\"));\n}\n/**\n * Gets hours from date.\n *\n * @param {Date|string} date Date to get hours from.\n */\nexport function getHours(date) {\n if (date instanceof Date) {\n return date.getHours();\n }\n if (typeof date === 'string') {\n var datePieces = date.split(':');\n if (datePieces.length >= 2) {\n var hoursString = datePieces[0];\n if (hoursString) {\n var hours = parseInt(hoursString, 10);\n if (!isNaN(hours)) {\n return hours;\n }\n }\n }\n }\n throw new Error(\"Failed to get hours from date: \".concat(date, \".\"));\n}\n/**\n * Gets minutes from date.\n *\n * @param {Date|string} date Date to get minutes from.\n */\nexport function getMinutes(date) {\n if (date instanceof Date) {\n return date.getMinutes();\n }\n if (typeof date === 'string') {\n var datePieces = date.split(':');\n if (datePieces.length >= 2) {\n var minutesString = datePieces[1] || '0';\n var minutes = parseInt(minutesString, 10);\n if (!isNaN(minutes)) {\n return minutes;\n }\n }\n }\n throw new Error(\"Failed to get minutes from date: \".concat(date, \".\"));\n}\n/**\n * Gets seconds from date.\n *\n * @param {Date|string} date Date to get seconds from.\n */\nexport function getSeconds(date) {\n if (date instanceof Date) {\n return date.getSeconds();\n }\n if (typeof date === 'string') {\n var datePieces = date.split(':');\n if (datePieces.length >= 2) {\n var secondsString = datePieces[2] || '0';\n var seconds = parseInt(secondsString, 10);\n if (!isNaN(seconds)) {\n return seconds;\n }\n }\n }\n throw new Error(\"Failed to get seconds from date: \".concat(date, \".\"));\n}\n/**\n * Century\n */\nexport function getCenturyStart(date) {\n var year = getYear(date);\n var centuryStartYear = year + ((-year + 1) % 100);\n var centuryStartDate = new Date();\n centuryStartDate.setFullYear(centuryStartYear, 0, 1);\n centuryStartDate.setHours(0, 0, 0, 0);\n return centuryStartDate;\n}\nexport var getPreviousCenturyStart = makeGetEdgeOfNeighbor(getYear, getCenturyStart, -100);\nexport var getNextCenturyStart = makeGetEdgeOfNeighbor(getYear, getCenturyStart, 100);\nexport var getCenturyEnd = makeGetEnd(getNextCenturyStart);\nexport var getPreviousCenturyEnd = makeGetEdgeOfNeighbor(getYear, getCenturyEnd, -100);\nexport var getNextCenturyEnd = makeGetEdgeOfNeighbor(getYear, getCenturyEnd, 100);\nexport var getCenturyRange = makeGetRange(getCenturyStart, getCenturyEnd);\n/**\n * Decade\n */\nexport function getDecadeStart(date) {\n var year = getYear(date);\n var decadeStartYear = year + ((-year + 1) % 10);\n var decadeStartDate = new Date();\n decadeStartDate.setFullYear(decadeStartYear, 0, 1);\n decadeStartDate.setHours(0, 0, 0, 0);\n return decadeStartDate;\n}\nexport var getPreviousDecadeStart = makeGetEdgeOfNeighbor(getYear, getDecadeStart, -10);\nexport var getNextDecadeStart = makeGetEdgeOfNeighbor(getYear, getDecadeStart, 10);\nexport var getDecadeEnd = makeGetEnd(getNextDecadeStart);\nexport var getPreviousDecadeEnd = makeGetEdgeOfNeighbor(getYear, getDecadeEnd, -10);\nexport var getNextDecadeEnd = makeGetEdgeOfNeighbor(getYear, getDecadeEnd, 10);\nexport var getDecadeRange = makeGetRange(getDecadeStart, getDecadeEnd);\n/**\n * Year\n */\nexport function getYearStart(date) {\n var year = getYear(date);\n var yearStartDate = new Date();\n yearStartDate.setFullYear(year, 0, 1);\n yearStartDate.setHours(0, 0, 0, 0);\n return yearStartDate;\n}\nexport var getPreviousYearStart = makeGetEdgeOfNeighbor(getYear, getYearStart, -1);\nexport var getNextYearStart = makeGetEdgeOfNeighbor(getYear, getYearStart, 1);\nexport var getYearEnd = makeGetEnd(getNextYearStart);\nexport var getPreviousYearEnd = makeGetEdgeOfNeighbor(getYear, getYearEnd, -1);\nexport var getNextYearEnd = makeGetEdgeOfNeighbor(getYear, getYearEnd, 1);\nexport var getYearRange = makeGetRange(getYearStart, getYearEnd);\n/**\n * Month\n */\nfunction makeGetEdgeOfNeighborMonth(getEdgeOfPeriod, defaultOffset) {\n return function makeGetEdgeOfNeighborMonthInternal(date, offset) {\n if (offset === void 0) { offset = defaultOffset; }\n var year = getYear(date);\n var month = getMonth(date) + offset;\n var previousPeriod = new Date();\n previousPeriod.setFullYear(year, month, 1);\n previousPeriod.setHours(0, 0, 0, 0);\n return getEdgeOfPeriod(previousPeriod);\n };\n}\nexport function getMonthStart(date) {\n var year = getYear(date);\n var month = getMonth(date);\n var monthStartDate = new Date();\n monthStartDate.setFullYear(year, month, 1);\n monthStartDate.setHours(0, 0, 0, 0);\n return monthStartDate;\n}\nexport var getPreviousMonthStart = makeGetEdgeOfNeighborMonth(getMonthStart, -1);\nexport var getNextMonthStart = makeGetEdgeOfNeighborMonth(getMonthStart, 1);\nexport var getMonthEnd = makeGetEnd(getNextMonthStart);\nexport var getPreviousMonthEnd = makeGetEdgeOfNeighborMonth(getMonthEnd, -1);\nexport var getNextMonthEnd = makeGetEdgeOfNeighborMonth(getMonthEnd, 1);\nexport var getMonthRange = makeGetRange(getMonthStart, getMonthEnd);\n/**\n * Day\n */\nfunction makeGetEdgeOfNeighborDay(getEdgeOfPeriod, defaultOffset) {\n return function makeGetEdgeOfNeighborDayInternal(date, offset) {\n if (offset === void 0) { offset = defaultOffset; }\n var year = getYear(date);\n var month = getMonth(date);\n var day = getDate(date) + offset;\n var previousPeriod = new Date();\n previousPeriod.setFullYear(year, month, day);\n previousPeriod.setHours(0, 0, 0, 0);\n return getEdgeOfPeriod(previousPeriod);\n };\n}\nexport function getDayStart(date) {\n var year = getYear(date);\n var month = getMonth(date);\n var day = getDate(date);\n var dayStartDate = new Date();\n dayStartDate.setFullYear(year, month, day);\n dayStartDate.setHours(0, 0, 0, 0);\n return dayStartDate;\n}\nexport var getPreviousDayStart = makeGetEdgeOfNeighborDay(getDayStart, -1);\nexport var getNextDayStart = makeGetEdgeOfNeighborDay(getDayStart, 1);\nexport var getDayEnd = makeGetEnd(getNextDayStart);\nexport var getPreviousDayEnd = makeGetEdgeOfNeighborDay(getDayEnd, -1);\nexport var getNextDayEnd = makeGetEdgeOfNeighborDay(getDayEnd, 1);\nexport var getDayRange = makeGetRange(getDayStart, getDayEnd);\n/**\n * Other\n */\n/**\n * Returns a number of days in a month of a given date.\n *\n * @param {Date} date Date.\n */\nexport function getDaysInMonth(date) {\n return getDate(getMonthEnd(date));\n}\nfunction padStart(num, val) {\n if (val === void 0) { val = 2; }\n var numStr = \"\".concat(num);\n if (numStr.length >= val) {\n return num;\n }\n return \"0000\".concat(numStr).slice(-val);\n}\n/**\n * Returns local hours and minutes (hh:mm).\n */\nexport function getHoursMinutes(date) {\n var hours = padStart(getHours(date));\n var minutes = padStart(getMinutes(date));\n return \"\".concat(hours, \":\").concat(minutes);\n}\n/**\n * Returns local hours, minutes and seconds (hh:mm:ss).\n */\nexport function getHoursMinutesSeconds(date) {\n var hours = padStart(getHours(date));\n var minutes = padStart(getMinutes(date));\n var seconds = padStart(getSeconds(date));\n return \"\".concat(hours, \":\").concat(minutes, \":\").concat(seconds);\n}\n/**\n * Returns local month in ISO-like format (YYYY-MM).\n */\nexport function getISOLocalMonth(date) {\n var year = padStart(getYear(date), 4);\n var month = padStart(getMonthHuman(date));\n return \"\".concat(year, \"-\").concat(month);\n}\n/**\n * Returns local date in ISO-like format (YYYY-MM-DD).\n */\nexport function getISOLocalDate(date) {\n var year = padStart(getYear(date), 4);\n var month = padStart(getMonthHuman(date));\n var day = padStart(getDate(date));\n return \"\".concat(year, \"-\").concat(month, \"-\").concat(day);\n}\n/**\n * Returns local date & time in ISO-like format (YYYY-MM-DDThh:mm:ss).\n */\nexport function getISOLocalDateTime(date) {\n return \"\".concat(getISOLocalDate(date), \"T\").concat(getHoursMinutesSeconds(date));\n}\n","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar transitionalDefaults = require('../defaults/transitional');\nvar AxiosError = require('../core/AxiosError');\nvar CanceledError = require('../cancel/CanceledError');\nvar parseProtocol = require('../helpers/parseProtocol');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n var onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n if (utils.isFormData(requestData) && utils.isStandardBrowserEnv()) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n var transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = function(cancel) {\n if (!request) {\n return;\n }\n reject(!cancel || (cancel && cancel.type) ? new CanceledError() : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n var protocol = parseProtocol(fullPath);\n\n if (protocol && [ 'http', 'https', 'file' ].indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = require('./cancel/CanceledError');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\naxios.toFormData = require('./helpers/toFormData');\n\n// Expose AxiosError class\naxios.AxiosError = require('../lib/core/AxiosError');\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\nvar CanceledError = require('./CanceledError');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(function(cancel) {\n if (!token._listeners) return;\n\n var i;\n var l = token._listeners.length;\n\n for (i = 0; i < l; i++) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = function(onfulfilled) {\n var _resolve;\n // eslint-disable-next-line func-names\n var promise = new Promise(function(resolve) {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n};\n\n/**\n * Unsubscribe from the cancel signal\n */\n\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n var index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nvar AxiosError = require('../core/AxiosError');\nvar utils = require('../utils');\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction CanceledError(message) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nmodule.exports = CanceledError;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar buildFullPath = require('./buildFullPath');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n var fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url: url,\n data: data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nvar prototype = AxiosError.prototype;\nvar descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED'\n// eslint-disable-next-line func-names\n].forEach(function(code) {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = function(error, code, config, request, response, customProps) {\n var axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nmodule.exports = AxiosError;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar CanceledError = require('../cancel/CanceledError');\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n var mergeMap = {\n 'url': valueFromConfig2,\n 'method': valueFromConfig2,\n 'data': valueFromConfig2,\n 'baseURL': defaultToConfig2,\n 'transformRequest': defaultToConfig2,\n 'transformResponse': defaultToConfig2,\n 'paramsSerializer': defaultToConfig2,\n 'timeout': defaultToConfig2,\n 'timeoutMessage': defaultToConfig2,\n 'withCredentials': defaultToConfig2,\n 'adapter': defaultToConfig2,\n 'responseType': defaultToConfig2,\n 'xsrfCookieName': defaultToConfig2,\n 'xsrfHeaderName': defaultToConfig2,\n 'onUploadProgress': defaultToConfig2,\n 'onDownloadProgress': defaultToConfig2,\n 'decompress': defaultToConfig2,\n 'maxContentLength': defaultToConfig2,\n 'maxBodyLength': defaultToConfig2,\n 'beforeRedirect': defaultToConfig2,\n 'transport': defaultToConfig2,\n 'httpAgent': defaultToConfig2,\n 'httpsAgent': defaultToConfig2,\n 'cancelToken': defaultToConfig2,\n 'socketPath': defaultToConfig2,\n 'responseEncoding': defaultToConfig2,\n 'validateStatus': mergeDirectKeys\n };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n var merge = mergeMap[prop] || mergeDeepProperties;\n var configValue = merge(prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n};\n","'use strict';\n\nvar AxiosError = require('./AxiosError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar normalizeHeaderName = require('../helpers/normalizeHeaderName');\nvar AxiosError = require('../core/AxiosError');\nvar transitionalDefaults = require('./transitional');\nvar toFormData = require('../helpers/toFormData');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('../adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('../adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n\n var isObjectPayload = utils.isObject(data);\n var contentType = headers && headers['Content-Type'];\n\n var isFileList;\n\n if ((isFileList = utils.isFileList(data)) || (isObjectPayload && contentType === 'multipart/form-data')) {\n var _FormData = this.env && this.env.FormData;\n return toFormData(isFileList ? {'files[]': data} : data, _FormData && new _FormData());\n } else if (isObjectPayload || contentType === 'application/json') {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional || defaults.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: require('./env/FormData')\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nmodule.exports = {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","module.exports = {\n \"version\": \"0.27.2\"\n};","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","// eslint-disable-next-line strict\nmodule.exports = null;\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nmodule.exports = function parseProtocol(url) {\n var match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Convert a data object to FormData\n * @param {Object} obj\n * @param {?Object} [formData]\n * @returns {Object}\n **/\n\nfunction toFormData(obj, formData) {\n // eslint-disable-next-line no-param-reassign\n formData = formData || new FormData();\n\n var stack = [];\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n function build(data, parentKey) {\n if (utils.isPlainObject(data) || utils.isArray(data)) {\n if (stack.indexOf(data) !== -1) {\n throw Error('Circular reference detected in ' + parentKey);\n }\n\n stack.push(data);\n\n utils.forEach(data, function each(value, key) {\n if (utils.isUndefined(value)) return;\n var fullKey = parentKey ? parentKey + '.' + key : key;\n var arr;\n\n if (value && !parentKey && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (utils.endsWith(key, '[]') && (arr = utils.toArray(value))) {\n // eslint-disable-next-line func-names\n arr.forEach(function(el) {\n !utils.isUndefined(el) && formData.append(fullKey, convertValue(el));\n });\n return;\n }\n }\n\n build(value, fullKey);\n });\n\n stack.pop();\n } else {\n formData.append(parentKey, convertValue(data));\n }\n }\n\n build(obj);\n\n return formData;\n}\n\nmodule.exports = toFormData;\n","'use strict';\n\nvar VERSION = require('../env/data').version;\nvar AxiosError = require('../core/AxiosError');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nmodule.exports = {\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n// eslint-disable-next-line func-names\nvar kindOf = (function(cache) {\n // eslint-disable-next-line func-names\n return function(thing) {\n var str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n };\n})(Object.create(null));\n\nfunction kindOfTest(type) {\n type = type.toLowerCase();\n return function isKindOf(thing) {\n return kindOf(thing) === type;\n };\n}\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return Array.isArray(val);\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nvar isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nvar isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nvar isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} thing The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(thing) {\n var pattern = '[object FormData]';\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) ||\n toString.call(thing) === pattern ||\n (isFunction(thing.toString) && thing.toString() === pattern)\n );\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nvar isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n */\n\nfunction inherits(constructor, superConstructor, props, descriptors) {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function} [filter]\n * @returns {Object}\n */\n\nfunction toFlatObject(sourceObj, destObj, filter) {\n var props;\n var i;\n var prop;\n var merged = {};\n\n destObj = destObj || {};\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if (!merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = Object.getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/*\n * determines whether a string ends with the characters of a specified string\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n * @returns {boolean}\n */\nfunction endsWith(str, searchString, position) {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n var lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object\n * @param {*} [thing]\n * @returns {Array}\n */\nfunction toArray(thing) {\n if (!thing) return null;\n var i = thing.length;\n if (isUndefined(i)) return null;\n var arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n// eslint-disable-next-line func-names\nvar isTypedArray = (function(TypedArray) {\n // eslint-disable-next-line func-names\n return function(thing) {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && Object.getPrototypeOf(Uint8Array));\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM,\n inherits: inherits,\n toFlatObject: toFlatObject,\n kindOf: kindOf,\n kindOfTest: kindOfTest,\n endsWith: endsWith,\n toArray: toArray,\n isTypedArray: isTypedArray,\n isFileList: isFileList\n};\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\tvar nativeCodeString = '[native code]';\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f);else for(t in e)e[t]&&(n&&(n+=\" \"),n+=t);return n}export function clsx(){for(var e,t,f=0,n=\"\";f<arguments.length;)(e=arguments[f++])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","/*!\n * FilePondPluginFileEncode 2.1.10\n * Licensed under MIT, https://opensource.org/licenses/MIT/\n * Please visit https://pqina.nl/filepond/ for details.\n */\n\n/* eslint-disable */\n\n(function(global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n ? (module.exports = factory())\n : typeof define === 'function' && define.amd\n ? define(factory)\n : ((global = global || self),\n (global.FilePondPluginFileEncode = factory()));\n})(this, function() {\n 'use strict';\n\n var DataURIWorker = function DataURIWorker() {\n // route messages\n self.onmessage = function(e) {\n convert(e.data.message, function(response) {\n self.postMessage({ id: e.data.id, message: response });\n });\n };\n\n // convert file to data uri\n var convert = function convert(options, cb) {\n var file = options.file;\n\n var reader = new FileReader();\n reader.onloadend = function() {\n cb(reader.result.replace('data:', '').replace(/^.+,/, ''));\n };\n reader.readAsDataURL(file);\n };\n };\n\n var plugin = function plugin(_ref) {\n var addFilter = _ref.addFilter,\n utils = _ref.utils;\n\n // get quick reference to Type utils\n var Type = utils.Type,\n createWorker = utils.createWorker,\n createRoute = utils.createRoute,\n isFile = utils.isFile;\n\n var encode = function encode(_ref2) {\n var name = _ref2.name,\n file = _ref2.file;\n return new Promise(function(resolve) {\n var worker = createWorker(DataURIWorker);\n worker.post({ file: file }, function(data) {\n resolve({ name: name, data: data });\n worker.terminate();\n });\n });\n };\n\n // holds base64 strings till can be moved to item\n var base64Cache = [];\n addFilter('DID_CREATE_ITEM', function(item, _ref3) {\n var query = _ref3.query;\n\n if (!query('GET_ALLOW_FILE_ENCODE')) return;\n\n item.extend('getFileEncodeBase64String', function() {\n return base64Cache[item.id] && base64Cache[item.id].data;\n });\n item.extend('getFileEncodeDataURL', function() {\n return 'data:'\n .concat(item.fileType, ';base64,')\n .concat(base64Cache[item.id].data);\n });\n });\n\n addFilter('SHOULD_PREPARE_OUTPUT', function(shouldPrepareOutput, _ref4) {\n var query = _ref4.query;\n return new Promise(function(resolve) {\n resolve(query('GET_ALLOW_FILE_ENCODE'));\n });\n });\n\n addFilter('COMPLETE_PREPARE_OUTPUT', function(file, _ref5) {\n var item = _ref5.item,\n query = _ref5.query;\n return new Promise(function(resolve) {\n // if it's not a file or a list of files, continue\n if (\n !query('GET_ALLOW_FILE_ENCODE') ||\n (!isFile(file) && !Array.isArray(file))\n ) {\n return resolve(file);\n }\n\n // store metadata settings for this cache\n base64Cache[item.id] = {\n metadata: item.getMetadata(),\n data: null\n };\n\n // wait for all file items to be encoded\n Promise.all(\n (file instanceof Blob ? [{ name: null, file: file }] : file).map(\n encode\n )\n ).then(function(dataItems) {\n base64Cache[item.id].data =\n file instanceof Blob ? dataItems[0].data : dataItems;\n resolve(file);\n });\n });\n });\n\n // called for each view that is created right after the 'create' method\n addFilter('CREATE_VIEW', function(viewAPI) {\n // get reference to created view\n var is = viewAPI.is,\n view = viewAPI.view,\n query = viewAPI.query;\n\n // only hook up to item view\n if (!is('file-wrapper') || !query('GET_ALLOW_FILE_ENCODE')) {\n return;\n }\n\n view.registerWriter(\n createRoute({\n DID_PREPARE_OUTPUT: function DID_PREPARE_OUTPUT(_ref6) {\n var root = _ref6.root,\n action = _ref6.action;\n\n // only do this if is not uploading async\n if (query('IS_ASYNC')) {\n return;\n }\n\n var item = query('GET_ITEM', action.id);\n if (!item) return;\n\n // extract base64 string\n var cache = base64Cache[item.id];\n var metadata = cache.metadata;\n var data = cache.data;\n\n // create JSON string from encoded data\n var value = JSON.stringify({\n id: item.id,\n name: item.file.name,\n type: item.file.type,\n size: item.file.size,\n metadata: metadata,\n data: data\n });\n\n // for filepond < 4.13.0\n if (root.ref.data) {\n root.ref.data.value = value;\n }\n // newer versions\n else {\n root.dispatch('DID_DEFINE_VALUE', {\n id: item.id,\n value: value\n });\n }\n },\n DID_REMOVE_ITEM: function DID_REMOVE_ITEM(_ref7) {\n var action = _ref7.action;\n var item = query('GET_ITEM', action.id);\n if (!item) return;\n delete base64Cache[item.id];\n }\n })\n );\n });\n\n return {\n options: {\n // Enable or disable file encoding\n allowFileEncode: [true, Type.BOOLEAN]\n }\n };\n };\n\n // fire pluginloaded event if running in browser, this allows registering the plugin when using async script tags\n var isBrowser =\n typeof window !== 'undefined' && typeof window.document !== 'undefined';\n if (isBrowser) {\n document.dispatchEvent(\n new CustomEvent('FilePond:pluginloaded', { detail: plugin })\n );\n }\n\n return plugin;\n});\n","/*!\n * FilePondPluginFileValidateType 1.2.8\n * Licensed under MIT, https://opensource.org/licenses/MIT/\n * Please visit https://pqina.nl/filepond/ for details.\n */\n\n/* eslint-disable */\n\n(function(global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n ? (module.exports = factory())\n : typeof define === 'function' && define.amd\n ? define(factory)\n : ((global = global || self),\n (global.FilePondPluginFileValidateType = factory()));\n})(this, function() {\n 'use strict';\n\n var plugin = function plugin(_ref) {\n var addFilter = _ref.addFilter,\n utils = _ref.utils;\n // get quick reference to Type utils\n var Type = utils.Type,\n isString = utils.isString,\n replaceInString = utils.replaceInString,\n guesstimateMimeType = utils.guesstimateMimeType,\n getExtensionFromFilename = utils.getExtensionFromFilename,\n getFilenameFromURL = utils.getFilenameFromURL;\n\n var mimeTypeMatchesWildCard = function mimeTypeMatchesWildCard(\n mimeType,\n wildcard\n ) {\n var mimeTypeGroup = (/^[^/]+/.exec(mimeType) || []).pop(); // image/png -> image\n var wildcardGroup = wildcard.slice(0, -2); // image/* -> image\n return mimeTypeGroup === wildcardGroup;\n };\n\n var isValidMimeType = function isValidMimeType(\n acceptedTypes,\n userInputType\n ) {\n return acceptedTypes.some(function(acceptedType) {\n // accepted is wildcard mime type\n if (/\\*$/.test(acceptedType)) {\n return mimeTypeMatchesWildCard(userInputType, acceptedType);\n }\n\n // is normal mime type\n return acceptedType === userInputType;\n });\n };\n\n var getItemType = function getItemType(item) {\n // if the item is a url we guess the mime type by the extension\n var type = '';\n if (isString(item)) {\n var filename = getFilenameFromURL(item);\n var extension = getExtensionFromFilename(filename);\n if (extension) {\n type = guesstimateMimeType(extension);\n }\n } else {\n type = item.type;\n }\n\n return type;\n };\n\n var validateFile = function validateFile(\n item,\n acceptedFileTypes,\n typeDetector\n ) {\n // no types defined, everything is allowed \\o/\n if (acceptedFileTypes.length === 0) {\n return true;\n }\n\n // gets the item type\n var type = getItemType(item);\n\n // no type detector, test now\n if (!typeDetector) {\n return isValidMimeType(acceptedFileTypes, type);\n }\n\n // use type detector\n return new Promise(function(resolve, reject) {\n typeDetector(item, type)\n .then(function(detectedType) {\n if (isValidMimeType(acceptedFileTypes, detectedType)) {\n resolve();\n } else {\n reject();\n }\n })\n .catch(reject);\n });\n };\n\n var applyMimeTypeMap = function applyMimeTypeMap(map) {\n return function(acceptedFileType) {\n return map[acceptedFileType] === null\n ? false\n : map[acceptedFileType] || acceptedFileType;\n };\n };\n\n // setup attribute mapping for accept\n addFilter('SET_ATTRIBUTE_TO_OPTION_MAP', function(map) {\n return Object.assign(map, {\n accept: 'acceptedFileTypes'\n });\n });\n\n // filtering if an item is allowed in hopper\n addFilter('ALLOW_HOPPER_ITEM', function(file, _ref2) {\n var query = _ref2.query;\n // if we are not doing file type validation exit\n if (!query('GET_ALLOW_FILE_TYPE_VALIDATION')) {\n return true;\n }\n\n // we validate the file against the accepted file types\n return validateFile(file, query('GET_ACCEPTED_FILE_TYPES'));\n });\n\n // called for each file that is loaded\n // right before it is set to the item state\n // should return a promise\n addFilter('LOAD_FILE', function(file, _ref3) {\n var query = _ref3.query;\n return new Promise(function(resolve, reject) {\n if (!query('GET_ALLOW_FILE_TYPE_VALIDATION')) {\n resolve(file);\n return;\n }\n\n var acceptedFileTypes = query('GET_ACCEPTED_FILE_TYPES');\n\n // custom type detector method\n var typeDetector = query('GET_FILE_VALIDATE_TYPE_DETECT_TYPE');\n\n // if invalid, exit here\n var validationResult = validateFile(\n file,\n acceptedFileTypes,\n typeDetector\n );\n\n var handleRejection = function handleRejection() {\n var acceptedFileTypesMapped = acceptedFileTypes\n .map(\n applyMimeTypeMap(\n query('GET_FILE_VALIDATE_TYPE_LABEL_EXPECTED_TYPES_MAP')\n )\n )\n .filter(function(label) {\n return label !== false;\n });\n\n var acceptedFileTypesMapped_unique = acceptedFileTypesMapped.filter(\n function(item, index) {\n return acceptedFileTypesMapped.indexOf(item) === index;\n }\n );\n\n reject({\n status: {\n main: query('GET_LABEL_FILE_TYPE_NOT_ALLOWED'),\n sub: replaceInString(\n query('GET_FILE_VALIDATE_TYPE_LABEL_EXPECTED_TYPES'),\n {\n allTypes: acceptedFileTypesMapped_unique.join(', '),\n allButLastType: acceptedFileTypesMapped_unique\n .slice(0, -1)\n .join(', '),\n lastType:\n acceptedFileTypesMapped_unique[\n acceptedFileTypesMapped.length - 1\n ]\n }\n )\n }\n });\n };\n\n // has returned new filename immidiately\n if (typeof validationResult === 'boolean') {\n if (!validationResult) {\n return handleRejection();\n }\n return resolve(file);\n }\n\n // is promise\n validationResult\n .then(function() {\n resolve(file);\n })\n .catch(handleRejection);\n });\n });\n\n // expose plugin\n return {\n // default options\n options: {\n // Enable or disable file type validation\n allowFileTypeValidation: [true, Type.BOOLEAN],\n\n // What file types to accept\n acceptedFileTypes: [[], Type.ARRAY],\n // - must be comma separated\n // - mime types: image/png, image/jpeg, image/gif\n // - extensions: .png, .jpg, .jpeg ( not enabled yet )\n // - wildcards: image/*\n\n // label to show when a type is not allowed\n labelFileTypeNotAllowed: ['File is of invalid type', Type.STRING],\n\n // nicer label\n fileValidateTypeLabelExpectedTypes: [\n 'Expects {allButLastType} or {lastType}',\n Type.STRING\n ],\n\n // map mime types to extensions\n fileValidateTypeLabelExpectedTypesMap: [{}, Type.OBJECT],\n\n // Custom function to detect type of file\n fileValidateTypeDetectType: [null, Type.FUNCTION]\n }\n };\n };\n\n // fire pluginloaded event if running in browser, this allows registering the plugin when using async script tags\n var isBrowser =\n typeof window !== 'undefined' && typeof window.document !== 'undefined';\n if (isBrowser) {\n document.dispatchEvent(\n new CustomEvent('FilePond:pluginloaded', { detail: plugin })\n );\n }\n\n return plugin;\n});\n","/*!\n * FilePond 4.30.4\n * Licensed under MIT, https://opensource.org/licenses/MIT/\n * Please visit https://pqina.nl/filepond/ for details.\n */\n\n/* eslint-disable */\n\n(function(global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n ? factory(exports)\n : typeof define === 'function' && define.amd\n ? define(['exports'], factory)\n : ((global = global || self), factory((global.FilePond = {})));\n})(this, function(exports) {\n 'use strict';\n\n var isNode = function isNode(value) {\n return value instanceof HTMLElement;\n };\n\n var createStore = function createStore(initialState) {\n var queries = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var actions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n // internal state\n var state = Object.assign({}, initialState);\n\n // contains all actions for next frame, is clear when actions are requested\n var actionQueue = [];\n var dispatchQueue = [];\n\n // returns a duplicate of the current state\n var getState = function getState() {\n return Object.assign({}, state);\n };\n\n // returns a duplicate of the actions array and clears the actions array\n var processActionQueue = function processActionQueue() {\n // create copy of actions queue\n var queue = [].concat(actionQueue);\n\n // clear actions queue (we don't want no double actions)\n actionQueue.length = 0;\n\n return queue;\n };\n\n // processes actions that might block the main UI thread\n var processDispatchQueue = function processDispatchQueue() {\n // create copy of actions queue\n var queue = [].concat(dispatchQueue);\n\n // clear actions queue (we don't want no double actions)\n dispatchQueue.length = 0;\n\n // now dispatch these actions\n queue.forEach(function(_ref) {\n var type = _ref.type,\n data = _ref.data;\n dispatch(type, data);\n });\n };\n\n // adds a new action, calls its handler and\n var dispatch = function dispatch(type, data, isBlocking) {\n // is blocking action (should never block if document is hidden)\n if (isBlocking && !document.hidden) {\n dispatchQueue.push({ type: type, data: data });\n return;\n }\n\n // if this action has a handler, handle the action\n if (actionHandlers[type]) {\n actionHandlers[type](data);\n }\n\n // now add action\n actionQueue.push({\n type: type,\n data: data,\n });\n };\n\n var query = function query(str) {\n var _queryHandles;\n for (\n var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1;\n _key < _len;\n _key++\n ) {\n args[_key - 1] = arguments[_key];\n }\n return queryHandles[str]\n ? (_queryHandles = queryHandles)[str].apply(_queryHandles, args)\n : null;\n };\n\n var api = {\n getState: getState,\n processActionQueue: processActionQueue,\n processDispatchQueue: processDispatchQueue,\n dispatch: dispatch,\n query: query,\n };\n\n var queryHandles = {};\n queries.forEach(function(query) {\n queryHandles = Object.assign({}, query(state), {}, queryHandles);\n });\n\n var actionHandlers = {};\n actions.forEach(function(action) {\n actionHandlers = Object.assign({}, action(dispatch, query, state), {}, actionHandlers);\n });\n\n return api;\n };\n\n var defineProperty = function defineProperty(obj, property, definition) {\n if (typeof definition === 'function') {\n obj[property] = definition;\n return;\n }\n Object.defineProperty(obj, property, Object.assign({}, definition));\n };\n\n var forin = function forin(obj, cb) {\n for (var key in obj) {\n if (!obj.hasOwnProperty(key)) {\n continue;\n }\n\n cb(key, obj[key]);\n }\n };\n\n var createObject = function createObject(definition) {\n var obj = {};\n forin(definition, function(property) {\n defineProperty(obj, property, definition[property]);\n });\n return obj;\n };\n\n var attr = function attr(node, name) {\n var value = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n if (value === null) {\n return node.getAttribute(name) || node.hasAttribute(name);\n }\n node.setAttribute(name, value);\n };\n\n var ns = 'http://www.w3.org/2000/svg';\n var svgElements = ['svg', 'path']; // only svg elements used\n\n var isSVGElement = function isSVGElement(tag) {\n return svgElements.includes(tag);\n };\n\n var createElement = function createElement(tag, className) {\n var attributes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (typeof className === 'object') {\n attributes = className;\n className = null;\n }\n var element = isSVGElement(tag)\n ? document.createElementNS(ns, tag)\n : document.createElement(tag);\n if (className) {\n if (isSVGElement(tag)) {\n attr(element, 'class', className);\n } else {\n element.className = className;\n }\n }\n forin(attributes, function(name, value) {\n attr(element, name, value);\n });\n return element;\n };\n\n var appendChild = function appendChild(parent) {\n return function(child, index) {\n if (typeof index !== 'undefined' && parent.children[index]) {\n parent.insertBefore(child, parent.children[index]);\n } else {\n parent.appendChild(child);\n }\n };\n };\n\n var appendChildView = function appendChildView(parent, childViews) {\n return function(view, index) {\n if (typeof index !== 'undefined') {\n childViews.splice(index, 0, view);\n } else {\n childViews.push(view);\n }\n\n return view;\n };\n };\n\n var removeChildView = function removeChildView(parent, childViews) {\n return function(view) {\n // remove from child views\n childViews.splice(childViews.indexOf(view), 1);\n\n // remove the element\n if (view.element.parentNode) {\n parent.removeChild(view.element);\n }\n\n return view;\n };\n };\n\n var IS_BROWSER = (function() {\n return typeof window !== 'undefined' && typeof window.document !== 'undefined';\n })();\n var isBrowser = function isBrowser() {\n return IS_BROWSER;\n };\n\n var testElement = isBrowser() ? createElement('svg') : {};\n var getChildCount =\n 'children' in testElement\n ? function(el) {\n return el.children.length;\n }\n : function(el) {\n return el.childNodes.length;\n };\n\n var getViewRect = function getViewRect(elementRect, childViews, offset, scale) {\n var left = offset[0] || elementRect.left;\n var top = offset[1] || elementRect.top;\n var right = left + elementRect.width;\n var bottom = top + elementRect.height * (scale[1] || 1);\n\n var rect = {\n // the rectangle of the element itself\n element: Object.assign({}, elementRect),\n\n // the rectangle of the element expanded to contain its children, does not include any margins\n inner: {\n left: elementRect.left,\n top: elementRect.top,\n right: elementRect.right,\n bottom: elementRect.bottom,\n },\n\n // the rectangle of the element expanded to contain its children including own margin and child margins\n // margins will be added after we've recalculated the size\n outer: {\n left: left,\n top: top,\n right: right,\n bottom: bottom,\n },\n };\n\n // expand rect to fit all child rectangles\n childViews\n .filter(function(childView) {\n return !childView.isRectIgnored();\n })\n .map(function(childView) {\n return childView.rect;\n })\n .forEach(function(childViewRect) {\n expandRect(rect.inner, Object.assign({}, childViewRect.inner));\n expandRect(rect.outer, Object.assign({}, childViewRect.outer));\n });\n\n // calculate inner width and height\n calculateRectSize(rect.inner);\n\n // append additional margin (top and left margins are included in top and left automatically)\n rect.outer.bottom += rect.element.marginBottom;\n rect.outer.right += rect.element.marginRight;\n\n // calculate outer width and height\n calculateRectSize(rect.outer);\n\n return rect;\n };\n\n var expandRect = function expandRect(parent, child) {\n // adjust for parent offset\n child.top += parent.top;\n child.right += parent.left;\n child.bottom += parent.top;\n child.left += parent.left;\n\n if (child.bottom > parent.bottom) {\n parent.bottom = child.bottom;\n }\n\n if (child.right > parent.right) {\n parent.right = child.right;\n }\n };\n\n var calculateRectSize = function calculateRectSize(rect) {\n rect.width = rect.right - rect.left;\n rect.height = rect.bottom - rect.top;\n };\n\n var isNumber = function isNumber(value) {\n return typeof value === 'number';\n };\n\n /**\n * Determines if position is at destination\n * @param position\n * @param destination\n * @param velocity\n * @param errorMargin\n * @returns {boolean}\n */\n var thereYet = function thereYet(position, destination, velocity) {\n var errorMargin = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0.001;\n return Math.abs(position - destination) < errorMargin && Math.abs(velocity) < errorMargin;\n };\n\n /**\n * Spring animation\n */\n var spring =\n // default options\n function spring() // method definition\n {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref$stiffness = _ref.stiffness,\n stiffness = _ref$stiffness === void 0 ? 0.5 : _ref$stiffness,\n _ref$damping = _ref.damping,\n damping = _ref$damping === void 0 ? 0.75 : _ref$damping,\n _ref$mass = _ref.mass,\n mass = _ref$mass === void 0 ? 10 : _ref$mass;\n var target = null;\n var position = null;\n var velocity = 0;\n var resting = false;\n\n // updates spring state\n var interpolate = function interpolate(ts, skipToEndState) {\n // in rest, don't animate\n if (resting) return;\n\n // need at least a target or position to do springy things\n if (!(isNumber(target) && isNumber(position))) {\n resting = true;\n velocity = 0;\n return;\n }\n\n // calculate spring force\n var f = -(position - target) * stiffness;\n\n // update velocity by adding force based on mass\n velocity += f / mass;\n\n // update position by adding velocity\n position += velocity;\n\n // slow down based on amount of damping\n velocity *= damping;\n\n // we've arrived if we're near target and our velocity is near zero\n if (thereYet(position, target, velocity) || skipToEndState) {\n position = target;\n velocity = 0;\n resting = true;\n\n // we done\n api.onupdate(position);\n api.oncomplete(position);\n } else {\n // progress update\n api.onupdate(position);\n }\n };\n\n /**\n * Set new target value\n * @param value\n */\n var setTarget = function setTarget(value) {\n // if currently has no position, set target and position to this value\n if (isNumber(value) && !isNumber(position)) {\n position = value;\n }\n\n // next target value will not be animated to\n if (target === null) {\n target = value;\n position = value;\n }\n\n // let start moving to target\n target = value;\n\n // already at target\n if (position === target || typeof target === 'undefined') {\n // now resting as target is current position, stop moving\n resting = true;\n velocity = 0;\n\n // done!\n api.onupdate(position);\n api.oncomplete(position);\n\n return;\n }\n\n resting = false;\n };\n\n // need 'api' to call onupdate callback\n var api = createObject({\n interpolate: interpolate,\n target: {\n set: setTarget,\n get: function get() {\n return target;\n },\n },\n\n resting: {\n get: function get() {\n return resting;\n },\n },\n\n onupdate: function onupdate(value) {},\n oncomplete: function oncomplete(value) {},\n });\n\n return api;\n };\n\n var easeLinear = function easeLinear(t) {\n return t;\n };\n var easeInOutQuad = function easeInOutQuad(t) {\n return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;\n };\n\n var tween =\n // default values\n function tween() // method definition\n {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref$duration = _ref.duration,\n duration = _ref$duration === void 0 ? 500 : _ref$duration,\n _ref$easing = _ref.easing,\n easing = _ref$easing === void 0 ? easeInOutQuad : _ref$easing,\n _ref$delay = _ref.delay,\n delay = _ref$delay === void 0 ? 0 : _ref$delay;\n var start = null;\n var t;\n var p;\n var resting = true;\n var reverse = false;\n var target = null;\n\n var interpolate = function interpolate(ts, skipToEndState) {\n if (resting || target === null) return;\n\n if (start === null) {\n start = ts;\n }\n\n if (ts - start < delay) return;\n\n t = ts - start - delay;\n\n if (t >= duration || skipToEndState) {\n t = 1;\n p = reverse ? 0 : 1;\n api.onupdate(p * target);\n api.oncomplete(p * target);\n resting = true;\n } else {\n p = t / duration;\n api.onupdate((t >= 0 ? easing(reverse ? 1 - p : p) : 0) * target);\n }\n };\n\n // need 'api' to call onupdate callback\n var api = createObject({\n interpolate: interpolate,\n target: {\n get: function get() {\n return reverse ? 0 : target;\n },\n set: function set(value) {\n // is initial value\n if (target === null) {\n target = value;\n api.onupdate(value);\n api.oncomplete(value);\n return;\n }\n\n // want to tween to a smaller value and have a current value\n if (value < target) {\n target = 1;\n reverse = true;\n } else {\n // not tweening to a smaller value\n reverse = false;\n target = value;\n }\n\n // let's go!\n resting = false;\n start = null;\n },\n },\n\n resting: {\n get: function get() {\n return resting;\n },\n },\n\n onupdate: function onupdate(value) {},\n oncomplete: function oncomplete(value) {},\n });\n\n return api;\n };\n\n var animator = {\n spring: spring,\n tween: tween,\n };\n\n /*\n { type: 'spring', stiffness: .5, damping: .75, mass: 10 };\n { translation: { type: 'spring', ... }, ... }\n { translation: { x: { type: 'spring', ... } } }\n */\n var createAnimator = function createAnimator(definition, category, property) {\n // default is single definition\n // we check if transform is set, if so, we check if property is set\n var def =\n definition[category] && typeof definition[category][property] === 'object'\n ? definition[category][property]\n : definition[category] || definition;\n\n var type = typeof def === 'string' ? def : def.type;\n var props = typeof def === 'object' ? Object.assign({}, def) : {};\n\n return animator[type] ? animator[type](props) : null;\n };\n\n var addGetSet = function addGetSet(keys, obj, props) {\n var overwrite = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n obj = Array.isArray(obj) ? obj : [obj];\n obj.forEach(function(o) {\n keys.forEach(function(key) {\n var name = key;\n var getter = function getter() {\n return props[key];\n };\n var setter = function setter(value) {\n return (props[key] = value);\n };\n\n if (typeof key === 'object') {\n name = key.key;\n getter = key.getter || getter;\n setter = key.setter || setter;\n }\n\n if (o[name] && !overwrite) {\n return;\n }\n\n o[name] = {\n get: getter,\n set: setter,\n };\n });\n });\n };\n\n // add to state,\n // add getters and setters to internal and external api (if not set)\n // setup animators\n\n var animations = function animations(_ref) {\n var mixinConfig = _ref.mixinConfig,\n viewProps = _ref.viewProps,\n viewInternalAPI = _ref.viewInternalAPI,\n viewExternalAPI = _ref.viewExternalAPI;\n // initial properties\n var initialProps = Object.assign({}, viewProps);\n\n // list of all active animations\n var animations = [];\n\n // setup animators\n forin(mixinConfig, function(property, animation) {\n var animator = createAnimator(animation);\n if (!animator) {\n return;\n }\n\n // when the animator updates, update the view state value\n animator.onupdate = function(value) {\n viewProps[property] = value;\n };\n\n // set animator target\n animator.target = initialProps[property];\n\n // when value is set, set the animator target value\n var prop = {\n key: property,\n setter: function setter(value) {\n // if already at target, we done!\n if (animator.target === value) {\n return;\n }\n\n animator.target = value;\n },\n getter: function getter() {\n return viewProps[property];\n },\n };\n\n // add getters and setters\n addGetSet([prop], [viewInternalAPI, viewExternalAPI], viewProps, true);\n\n // add it to the list for easy updating from the _write method\n animations.push(animator);\n });\n\n // expose internal write api\n return {\n write: function write(ts) {\n var skipToEndState = document.hidden;\n var resting = true;\n animations.forEach(function(animation) {\n if (!animation.resting) resting = false;\n animation.interpolate(ts, skipToEndState);\n });\n return resting;\n },\n destroy: function destroy() {},\n };\n };\n\n var addEvent = function addEvent(element) {\n return function(type, fn) {\n element.addEventListener(type, fn);\n };\n };\n\n var removeEvent = function removeEvent(element) {\n return function(type, fn) {\n element.removeEventListener(type, fn);\n };\n };\n\n // mixin\n var listeners = function listeners(_ref) {\n var mixinConfig = _ref.mixinConfig,\n viewProps = _ref.viewProps,\n viewInternalAPI = _ref.viewInternalAPI,\n viewExternalAPI = _ref.viewExternalAPI,\n viewState = _ref.viewState,\n view = _ref.view;\n var events = [];\n\n var add = addEvent(view.element);\n var remove = removeEvent(view.element);\n\n viewExternalAPI.on = function(type, fn) {\n events.push({\n type: type,\n fn: fn,\n });\n\n add(type, fn);\n };\n\n viewExternalAPI.off = function(type, fn) {\n events.splice(\n events.findIndex(function(event) {\n return event.type === type && event.fn === fn;\n }),\n 1\n );\n\n remove(type, fn);\n };\n\n return {\n write: function write() {\n // not busy\n return true;\n },\n destroy: function destroy() {\n events.forEach(function(event) {\n remove(event.type, event.fn);\n });\n },\n };\n };\n\n // add to external api and link to props\n\n var apis = function apis(_ref) {\n var mixinConfig = _ref.mixinConfig,\n viewProps = _ref.viewProps,\n viewExternalAPI = _ref.viewExternalAPI;\n addGetSet(mixinConfig, viewExternalAPI, viewProps);\n };\n\n var isDefined = function isDefined(value) {\n return value != null;\n };\n\n // add to state,\n // add getters and setters to internal and external api (if not set)\n // set initial state based on props in viewProps\n // apply as transforms each frame\n\n var defaults = {\n opacity: 1,\n scaleX: 1,\n scaleY: 1,\n translateX: 0,\n translateY: 0,\n rotateX: 0,\n rotateY: 0,\n rotateZ: 0,\n originX: 0,\n originY: 0,\n };\n\n var styles = function styles(_ref) {\n var mixinConfig = _ref.mixinConfig,\n viewProps = _ref.viewProps,\n viewInternalAPI = _ref.viewInternalAPI,\n viewExternalAPI = _ref.viewExternalAPI,\n view = _ref.view;\n // initial props\n var initialProps = Object.assign({}, viewProps);\n\n // current props\n var currentProps = {};\n\n // we will add those properties to the external API and link them to the viewState\n addGetSet(mixinConfig, [viewInternalAPI, viewExternalAPI], viewProps);\n\n // override rect on internal and external rect getter so it takes in account transforms\n var getOffset = function getOffset() {\n return [viewProps['translateX'] || 0, viewProps['translateY'] || 0];\n };\n\n var getScale = function getScale() {\n return [viewProps['scaleX'] || 0, viewProps['scaleY'] || 0];\n };\n var getRect = function getRect() {\n return view.rect\n ? getViewRect(view.rect, view.childViews, getOffset(), getScale())\n : null;\n };\n viewInternalAPI.rect = { get: getRect };\n viewExternalAPI.rect = { get: getRect };\n\n // apply view props\n mixinConfig.forEach(function(key) {\n viewProps[key] =\n typeof initialProps[key] === 'undefined' ? defaults[key] : initialProps[key];\n });\n\n // expose api\n return {\n write: function write() {\n // see if props have changed\n if (!propsHaveChanged(currentProps, viewProps)) {\n return;\n }\n\n // moves element to correct position on screen\n applyStyles(view.element, viewProps);\n\n // store new transforms\n Object.assign(currentProps, Object.assign({}, viewProps));\n\n // no longer busy\n return true;\n },\n destroy: function destroy() {},\n };\n };\n\n var propsHaveChanged = function propsHaveChanged(currentProps, newProps) {\n // different amount of keys\n if (Object.keys(currentProps).length !== Object.keys(newProps).length) {\n return true;\n }\n\n // lets analyze the individual props\n for (var prop in newProps) {\n if (newProps[prop] !== currentProps[prop]) {\n return true;\n }\n }\n\n return false;\n };\n\n var applyStyles = function applyStyles(element, _ref2) {\n var opacity = _ref2.opacity,\n perspective = _ref2.perspective,\n translateX = _ref2.translateX,\n translateY = _ref2.translateY,\n scaleX = _ref2.scaleX,\n scaleY = _ref2.scaleY,\n rotateX = _ref2.rotateX,\n rotateY = _ref2.rotateY,\n rotateZ = _ref2.rotateZ,\n originX = _ref2.originX,\n originY = _ref2.originY,\n width = _ref2.width,\n height = _ref2.height;\n\n var transforms = '';\n var styles = '';\n\n // handle transform origin\n if (isDefined(originX) || isDefined(originY)) {\n styles += 'transform-origin: ' + (originX || 0) + 'px ' + (originY || 0) + 'px;';\n }\n\n // transform order is relevant\n // 0. perspective\n if (isDefined(perspective)) {\n transforms += 'perspective(' + perspective + 'px) ';\n }\n\n // 1. translate\n if (isDefined(translateX) || isDefined(translateY)) {\n transforms +=\n 'translate3d(' + (translateX || 0) + 'px, ' + (translateY || 0) + 'px, 0) ';\n }\n\n // 2. scale\n if (isDefined(scaleX) || isDefined(scaleY)) {\n transforms +=\n 'scale3d(' +\n (isDefined(scaleX) ? scaleX : 1) +\n ', ' +\n (isDefined(scaleY) ? scaleY : 1) +\n ', 1) ';\n }\n\n // 3. rotate\n if (isDefined(rotateZ)) {\n transforms += 'rotateZ(' + rotateZ + 'rad) ';\n }\n\n if (isDefined(rotateX)) {\n transforms += 'rotateX(' + rotateX + 'rad) ';\n }\n\n if (isDefined(rotateY)) {\n transforms += 'rotateY(' + rotateY + 'rad) ';\n }\n\n // add transforms\n if (transforms.length) {\n styles += 'transform:' + transforms + ';';\n }\n\n // add opacity\n if (isDefined(opacity)) {\n styles += 'opacity:' + opacity + ';';\n\n // if we reach zero, we make the element inaccessible\n if (opacity === 0) {\n styles += 'visibility:hidden;';\n }\n\n // if we're below 100% opacity this element can't be clicked\n if (opacity < 1) {\n styles += 'pointer-events:none;';\n }\n }\n\n // add height\n if (isDefined(height)) {\n styles += 'height:' + height + 'px;';\n }\n\n // add width\n if (isDefined(width)) {\n styles += 'width:' + width + 'px;';\n }\n\n // apply styles\n var elementCurrentStyle = element.elementCurrentStyle || '';\n\n // if new styles does not match current styles, lets update!\n if (styles.length !== elementCurrentStyle.length || styles !== elementCurrentStyle) {\n element.style.cssText = styles;\n // store current styles so we can compare them to new styles later on\n // _not_ getting the style value is faster\n element.elementCurrentStyle = styles;\n }\n };\n\n var Mixins = {\n styles: styles,\n listeners: listeners,\n animations: animations,\n apis: apis,\n };\n\n var updateRect = function updateRect() {\n var rect = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var element = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var style = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (!element.layoutCalculated) {\n rect.paddingTop = parseInt(style.paddingTop, 10) || 0;\n rect.marginTop = parseInt(style.marginTop, 10) || 0;\n rect.marginRight = parseInt(style.marginRight, 10) || 0;\n rect.marginBottom = parseInt(style.marginBottom, 10) || 0;\n rect.marginLeft = parseInt(style.marginLeft, 10) || 0;\n element.layoutCalculated = true;\n }\n\n rect.left = element.offsetLeft || 0;\n rect.top = element.offsetTop || 0;\n rect.width = element.offsetWidth || 0;\n rect.height = element.offsetHeight || 0;\n\n rect.right = rect.left + rect.width;\n rect.bottom = rect.top + rect.height;\n\n rect.scrollTop = element.scrollTop;\n\n rect.hidden = element.offsetParent === null;\n\n return rect;\n };\n\n var createView =\n // default view definition\n function createView() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref$tag = _ref.tag,\n tag = _ref$tag === void 0 ? 'div' : _ref$tag,\n _ref$name = _ref.name,\n name = _ref$name === void 0 ? null : _ref$name,\n _ref$attributes = _ref.attributes,\n attributes = _ref$attributes === void 0 ? {} : _ref$attributes,\n _ref$read = _ref.read,\n read = _ref$read === void 0 ? function() {} : _ref$read,\n _ref$write = _ref.write,\n write = _ref$write === void 0 ? function() {} : _ref$write,\n _ref$create = _ref.create,\n create = _ref$create === void 0 ? function() {} : _ref$create,\n _ref$destroy = _ref.destroy,\n destroy = _ref$destroy === void 0 ? function() {} : _ref$destroy,\n _ref$filterFrameActio = _ref.filterFrameActionsForChild,\n filterFrameActionsForChild =\n _ref$filterFrameActio === void 0\n ? function(child, actions) {\n return actions;\n }\n : _ref$filterFrameActio,\n _ref$didCreateView = _ref.didCreateView,\n didCreateView = _ref$didCreateView === void 0 ? function() {} : _ref$didCreateView,\n _ref$didWriteView = _ref.didWriteView,\n didWriteView = _ref$didWriteView === void 0 ? function() {} : _ref$didWriteView,\n _ref$ignoreRect = _ref.ignoreRect,\n ignoreRect = _ref$ignoreRect === void 0 ? false : _ref$ignoreRect,\n _ref$ignoreRectUpdate = _ref.ignoreRectUpdate,\n ignoreRectUpdate = _ref$ignoreRectUpdate === void 0 ? false : _ref$ignoreRectUpdate,\n _ref$mixins = _ref.mixins,\n mixins = _ref$mixins === void 0 ? [] : _ref$mixins;\n return function(\n // each view requires reference to store\n store\n ) {\n var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // root element should not be changed\n var element = createElement(tag, 'filepond--' + name, attributes);\n\n // style reference should also not be changed\n var style = window.getComputedStyle(element, null);\n\n // element rectangle\n var rect = updateRect();\n var frameRect = null;\n\n // rest state\n var isResting = false;\n\n // pretty self explanatory\n var childViews = [];\n\n // loaded mixins\n var activeMixins = [];\n\n // references to created children\n var ref = {};\n\n // state used for each instance\n var state = {};\n\n // list of writers that will be called to update this view\n var writers = [\n write, // default writer\n ];\n\n var readers = [\n read, // default reader\n ];\n\n var destroyers = [\n destroy, // default destroy\n ];\n\n // core view methods\n var getElement = function getElement() {\n return element;\n };\n var getChildViews = function getChildViews() {\n return childViews.concat();\n };\n var getReference = function getReference() {\n return ref;\n };\n var createChildView = function createChildView(store) {\n return function(view, props) {\n return view(store, props);\n };\n };\n var getRect = function getRect() {\n if (frameRect) {\n return frameRect;\n }\n frameRect = getViewRect(rect, childViews, [0, 0], [1, 1]);\n return frameRect;\n };\n var getStyle = function getStyle() {\n return style;\n };\n\n /**\n * Read data from DOM\n * @private\n */\n var _read = function _read() {\n frameRect = null;\n\n // read child views\n childViews.forEach(function(child) {\n return child._read();\n });\n\n var shouldUpdate = !(ignoreRectUpdate && rect.width && rect.height);\n if (shouldUpdate) {\n updateRect(rect, element, style);\n }\n\n // readers\n var api = { root: internalAPI, props: props, rect: rect };\n readers.forEach(function(reader) {\n return reader(api);\n });\n };\n\n /**\n * Write data to DOM\n * @private\n */\n var _write = function _write(ts, frameActions, shouldOptimize) {\n // if no actions, we assume that the view is resting\n var resting = frameActions.length === 0;\n\n // writers\n writers.forEach(function(writer) {\n var writerResting = writer({\n props: props,\n root: internalAPI,\n actions: frameActions,\n timestamp: ts,\n shouldOptimize: shouldOptimize,\n });\n\n if (writerResting === false) {\n resting = false;\n }\n });\n\n // run mixins\n activeMixins.forEach(function(mixin) {\n // if one of the mixins is still busy after write operation, we are not resting\n var mixinResting = mixin.write(ts);\n if (mixinResting === false) {\n resting = false;\n }\n });\n\n // updates child views that are currently attached to the DOM\n childViews\n .filter(function(child) {\n return !!child.element.parentNode;\n })\n .forEach(function(child) {\n // if a child view is not resting, we are not resting\n var childResting = child._write(\n ts,\n filterFrameActionsForChild(child, frameActions),\n shouldOptimize\n );\n\n if (!childResting) {\n resting = false;\n }\n });\n\n // append new elements to DOM and update those\n childViews\n //.filter(child => !child.element.parentNode)\n .forEach(function(child, index) {\n // skip\n if (child.element.parentNode) {\n return;\n }\n\n // append to DOM\n internalAPI.appendChild(child.element, index);\n\n // call read (need to know the size of these elements)\n child._read();\n\n // re-call write\n child._write(\n ts,\n filterFrameActionsForChild(child, frameActions),\n shouldOptimize\n );\n\n // we just added somthing to the dom, no rest\n resting = false;\n });\n\n // update resting state\n isResting = resting;\n\n didWriteView({\n props: props,\n root: internalAPI,\n actions: frameActions,\n timestamp: ts,\n });\n\n // let parent know if we are resting\n return resting;\n };\n\n var _destroy = function _destroy() {\n activeMixins.forEach(function(mixin) {\n return mixin.destroy();\n });\n destroyers.forEach(function(destroyer) {\n destroyer({ root: internalAPI, props: props });\n });\n childViews.forEach(function(child) {\n return child._destroy();\n });\n };\n\n // sharedAPI\n var sharedAPIDefinition = {\n element: {\n get: getElement,\n },\n\n style: {\n get: getStyle,\n },\n\n childViews: {\n get: getChildViews,\n },\n };\n\n // private API definition\n var internalAPIDefinition = Object.assign({}, sharedAPIDefinition, {\n rect: {\n get: getRect,\n },\n\n // access to custom children references\n ref: {\n get: getReference,\n },\n\n // dom modifiers\n is: function is(needle) {\n return name === needle;\n },\n appendChild: appendChild(element),\n createChildView: createChildView(store),\n linkView: function linkView(view) {\n childViews.push(view);\n return view;\n },\n unlinkView: function unlinkView(view) {\n childViews.splice(childViews.indexOf(view), 1);\n },\n appendChildView: appendChildView(element, childViews),\n removeChildView: removeChildView(element, childViews),\n registerWriter: function registerWriter(writer) {\n return writers.push(writer);\n },\n registerReader: function registerReader(reader) {\n return readers.push(reader);\n },\n registerDestroyer: function registerDestroyer(destroyer) {\n return destroyers.push(destroyer);\n },\n invalidateLayout: function invalidateLayout() {\n return (element.layoutCalculated = false);\n },\n\n // access to data store\n dispatch: store.dispatch,\n query: store.query,\n });\n\n // public view API methods\n var externalAPIDefinition = {\n element: {\n get: getElement,\n },\n\n childViews: {\n get: getChildViews,\n },\n\n rect: {\n get: getRect,\n },\n\n resting: {\n get: function get() {\n return isResting;\n },\n },\n\n isRectIgnored: function isRectIgnored() {\n return ignoreRect;\n },\n _read: _read,\n _write: _write,\n _destroy: _destroy,\n };\n\n // mixin API methods\n var mixinAPIDefinition = Object.assign({}, sharedAPIDefinition, {\n rect: {\n get: function get() {\n return rect;\n },\n },\n });\n\n // add mixin functionality\n Object.keys(mixins)\n .sort(function(a, b) {\n // move styles to the back of the mixin list (so adjustments of other mixins are applied to the props correctly)\n if (a === 'styles') {\n return 1;\n } else if (b === 'styles') {\n return -1;\n }\n return 0;\n })\n .forEach(function(key) {\n var mixinAPI = Mixins[key]({\n mixinConfig: mixins[key],\n viewProps: props,\n viewState: state,\n viewInternalAPI: internalAPIDefinition,\n viewExternalAPI: externalAPIDefinition,\n view: createObject(mixinAPIDefinition),\n });\n\n if (mixinAPI) {\n activeMixins.push(mixinAPI);\n }\n });\n\n // construct private api\n var internalAPI = createObject(internalAPIDefinition);\n\n // create the view\n create({\n root: internalAPI,\n props: props,\n });\n\n // append created child views to root node\n var childCount = getChildCount(element); // need to know the current child count so appending happens in correct order\n childViews.forEach(function(child, index) {\n internalAPI.appendChild(child.element, childCount + index);\n });\n\n // call did create\n didCreateView(internalAPI);\n\n // expose public api\n return createObject(externalAPIDefinition);\n };\n };\n\n var createPainter = function createPainter(read, write) {\n var fps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 60;\n\n var name = '__framePainter';\n\n // set global painter\n if (window[name]) {\n window[name].readers.push(read);\n window[name].writers.push(write);\n return;\n }\n\n window[name] = {\n readers: [read],\n writers: [write],\n };\n\n var painter = window[name];\n\n var interval = 1000 / fps;\n var last = null;\n var id = null;\n var requestTick = null;\n var cancelTick = null;\n\n var setTimerType = function setTimerType() {\n if (document.hidden) {\n requestTick = function requestTick() {\n return window.setTimeout(function() {\n return tick(performance.now());\n }, interval);\n };\n cancelTick = function cancelTick() {\n return window.clearTimeout(id);\n };\n } else {\n requestTick = function requestTick() {\n return window.requestAnimationFrame(tick);\n };\n cancelTick = function cancelTick() {\n return window.cancelAnimationFrame(id);\n };\n }\n };\n\n document.addEventListener('visibilitychange', function() {\n if (cancelTick) cancelTick();\n setTimerType();\n tick(performance.now());\n });\n\n var tick = function tick(ts) {\n // queue next tick\n id = requestTick(tick);\n\n // limit fps\n if (!last) {\n last = ts;\n }\n\n var delta = ts - last;\n\n if (delta <= interval) {\n // skip frame\n return;\n }\n\n // align next frame\n last = ts - (delta % interval);\n\n // update view\n painter.readers.forEach(function(read) {\n return read();\n });\n painter.writers.forEach(function(write) {\n return write(ts);\n });\n };\n\n setTimerType();\n tick(performance.now());\n\n return {\n pause: function pause() {\n cancelTick(id);\n },\n };\n };\n\n var createRoute = function createRoute(routes, fn) {\n return function(_ref) {\n var root = _ref.root,\n props = _ref.props,\n _ref$actions = _ref.actions,\n actions = _ref$actions === void 0 ? [] : _ref$actions,\n timestamp = _ref.timestamp,\n shouldOptimize = _ref.shouldOptimize;\n actions\n .filter(function(action) {\n return routes[action.type];\n })\n .forEach(function(action) {\n return routes[action.type]({\n root: root,\n props: props,\n action: action.data,\n timestamp: timestamp,\n shouldOptimize: shouldOptimize,\n });\n });\n\n if (fn) {\n fn({\n root: root,\n props: props,\n actions: actions,\n timestamp: timestamp,\n shouldOptimize: shouldOptimize,\n });\n }\n };\n };\n\n var insertBefore = function insertBefore(newNode, referenceNode) {\n return referenceNode.parentNode.insertBefore(newNode, referenceNode);\n };\n\n var insertAfter = function insertAfter(newNode, referenceNode) {\n return referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);\n };\n\n var isArray = function isArray(value) {\n return Array.isArray(value);\n };\n\n var isEmpty = function isEmpty(value) {\n return value == null;\n };\n\n var trim = function trim(str) {\n return str.trim();\n };\n\n var toString = function toString(value) {\n return '' + value;\n };\n\n var toArray = function toArray(value) {\n var splitter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ',';\n if (isEmpty(value)) {\n return [];\n }\n if (isArray(value)) {\n return value;\n }\n return toString(value)\n .split(splitter)\n .map(trim)\n .filter(function(str) {\n return str.length;\n });\n };\n\n var isBoolean = function isBoolean(value) {\n return typeof value === 'boolean';\n };\n\n var toBoolean = function toBoolean(value) {\n return isBoolean(value) ? value : value === 'true';\n };\n\n var isString = function isString(value) {\n return typeof value === 'string';\n };\n\n var toNumber = function toNumber(value) {\n return isNumber(value)\n ? value\n : isString(value)\n ? toString(value).replace(/[a-z]+/gi, '')\n : 0;\n };\n\n var toInt = function toInt(value) {\n return parseInt(toNumber(value), 10);\n };\n\n var toFloat = function toFloat(value) {\n return parseFloat(toNumber(value));\n };\n\n var isInt = function isInt(value) {\n return isNumber(value) && isFinite(value) && Math.floor(value) === value;\n };\n\n var toBytes = function toBytes(value) {\n var base = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1000;\n // is in bytes\n if (isInt(value)) {\n return value;\n }\n\n // is natural file size\n var naturalFileSize = toString(value).trim();\n\n // if is value in megabytes\n if (/MB$/i.test(naturalFileSize)) {\n naturalFileSize = naturalFileSize.replace(/MB$i/, '').trim();\n return toInt(naturalFileSize) * base * base;\n }\n\n // if is value in kilobytes\n if (/KB/i.test(naturalFileSize)) {\n naturalFileSize = naturalFileSize.replace(/KB$i/, '').trim();\n return toInt(naturalFileSize) * base;\n }\n\n return toInt(naturalFileSize);\n };\n\n var isFunction = function isFunction(value) {\n return typeof value === 'function';\n };\n\n var toFunctionReference = function toFunctionReference(string) {\n var ref = self;\n var levels = string.split('.');\n var level = null;\n while ((level = levels.shift())) {\n ref = ref[level];\n if (!ref) {\n return null;\n }\n }\n return ref;\n };\n\n var methods = {\n process: 'POST',\n patch: 'PATCH',\n revert: 'DELETE',\n fetch: 'GET',\n restore: 'GET',\n load: 'GET',\n };\n\n var createServerAPI = function createServerAPI(outline) {\n var api = {};\n\n api.url = isString(outline) ? outline : outline.url || '';\n api.timeout = outline.timeout ? parseInt(outline.timeout, 10) : 0;\n api.headers = outline.headers ? outline.headers : {};\n\n forin(methods, function(key) {\n api[key] = createAction(key, outline[key], methods[key], api.timeout, api.headers);\n });\n\n // remove process if no url or process on outline\n api.process = outline.process || isString(outline) || outline.url ? api.process : null;\n\n // special treatment for remove\n api.remove = outline.remove || null;\n\n // remove generic headers from api object\n delete api.headers;\n\n return api;\n };\n\n var createAction = function createAction(name, outline, method, timeout, headers) {\n // is explicitely set to null so disable\n if (outline === null) {\n return null;\n }\n\n // if is custom function, done! Dev handles everything.\n if (typeof outline === 'function') {\n return outline;\n }\n\n // build action object\n var action = {\n url: method === 'GET' || method === 'PATCH' ? '?' + name + '=' : '',\n method: method,\n headers: headers,\n withCredentials: false,\n timeout: timeout,\n onload: null,\n ondata: null,\n onerror: null,\n };\n\n // is a single url\n if (isString(outline)) {\n action.url = outline;\n return action;\n }\n\n // overwrite\n Object.assign(action, outline);\n\n // see if should reformat headers;\n if (isString(action.headers)) {\n var parts = action.headers.split(/:(.+)/);\n action.headers = {\n header: parts[0],\n value: parts[1],\n };\n }\n\n // if is bool withCredentials\n action.withCredentials = toBoolean(action.withCredentials);\n\n return action;\n };\n\n var toServerAPI = function toServerAPI(value) {\n return createServerAPI(value);\n };\n\n var isNull = function isNull(value) {\n return value === null;\n };\n\n var isObject = function isObject(value) {\n return typeof value === 'object' && value !== null;\n };\n\n var isAPI = function isAPI(value) {\n return (\n isObject(value) &&\n isString(value.url) &&\n isObject(value.process) &&\n isObject(value.revert) &&\n isObject(value.restore) &&\n isObject(value.fetch)\n );\n };\n\n var getType = function getType(value) {\n if (isArray(value)) {\n return 'array';\n }\n\n if (isNull(value)) {\n return 'null';\n }\n\n if (isInt(value)) {\n return 'int';\n }\n\n if (/^[0-9]+ ?(?:GB|MB|KB)$/gi.test(value)) {\n return 'bytes';\n }\n\n if (isAPI(value)) {\n return 'api';\n }\n\n return typeof value;\n };\n\n var replaceSingleQuotes = function replaceSingleQuotes(str) {\n return str\n .replace(/{\\s*'/g, '{\"')\n .replace(/'\\s*}/g, '\"}')\n .replace(/'\\s*:/g, '\":')\n .replace(/:\\s*'/g, ':\"')\n .replace(/,\\s*'/g, ',\"')\n .replace(/'\\s*,/g, '\",');\n };\n\n var conversionTable = {\n array: toArray,\n boolean: toBoolean,\n int: function int(value) {\n return getType(value) === 'bytes' ? toBytes(value) : toInt(value);\n },\n number: toFloat,\n float: toFloat,\n bytes: toBytes,\n string: function string(value) {\n return isFunction(value) ? value : toString(value);\n },\n function: function _function(value) {\n return toFunctionReference(value);\n },\n serverapi: toServerAPI,\n object: function object(value) {\n try {\n return JSON.parse(replaceSingleQuotes(value));\n } catch (e) {\n return null;\n }\n },\n };\n\n var convertTo = function convertTo(value, type) {\n return conversionTable[type](value);\n };\n\n var getValueByType = function getValueByType(newValue, defaultValue, valueType) {\n // can always assign default value\n if (newValue === defaultValue) {\n return newValue;\n }\n\n // get the type of the new value\n var newValueType = getType(newValue);\n\n // is valid type?\n if (newValueType !== valueType) {\n // is string input, let's attempt to convert\n var convertedValue = convertTo(newValue, valueType);\n\n // what is the type now\n newValueType = getType(convertedValue);\n\n // no valid conversions found\n if (convertedValue === null) {\n throw 'Trying to assign value with incorrect type to \"' +\n option +\n '\", allowed type: \"' +\n valueType +\n '\"';\n } else {\n newValue = convertedValue;\n }\n }\n\n // assign new value\n return newValue;\n };\n\n var createOption = function createOption(defaultValue, valueType) {\n var currentValue = defaultValue;\n return {\n enumerable: true,\n get: function get() {\n return currentValue;\n },\n set: function set(newValue) {\n currentValue = getValueByType(newValue, defaultValue, valueType);\n },\n };\n };\n\n var createOptions = function createOptions(options) {\n var obj = {};\n forin(options, function(prop) {\n var optionDefinition = options[prop];\n obj[prop] = createOption(optionDefinition[0], optionDefinition[1]);\n });\n return createObject(obj);\n };\n\n var createInitialState = function createInitialState(options) {\n return {\n // model\n items: [],\n\n // timeout used for calling update items\n listUpdateTimeout: null,\n\n // timeout used for stacking metadata updates\n itemUpdateTimeout: null,\n\n // queue of items waiting to be processed\n processingQueue: [],\n\n // options\n options: createOptions(options),\n };\n };\n\n var fromCamels = function fromCamels(string) {\n var separator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '-';\n return string\n .split(/(?=[A-Z])/)\n .map(function(part) {\n return part.toLowerCase();\n })\n .join(separator);\n };\n\n var createOptionAPI = function createOptionAPI(store, options) {\n var obj = {};\n forin(options, function(key) {\n obj[key] = {\n get: function get() {\n return store.getState().options[key];\n },\n set: function set(value) {\n store.dispatch('SET_' + fromCamels(key, '_').toUpperCase(), {\n value: value,\n });\n },\n };\n });\n return obj;\n };\n\n var createOptionActions = function createOptionActions(options) {\n return function(dispatch, query, state) {\n var obj = {};\n forin(options, function(key) {\n var name = fromCamels(key, '_').toUpperCase();\n\n obj['SET_' + name] = function(action) {\n try {\n state.options[key] = action.value;\n } catch (e) {} // nope, failed\n\n // we successfully set the value of this option\n dispatch('DID_SET_' + name, { value: state.options[key] });\n };\n });\n return obj;\n };\n };\n\n var createOptionQueries = function createOptionQueries(options) {\n return function(state) {\n var obj = {};\n forin(options, function(key) {\n obj['GET_' + fromCamels(key, '_').toUpperCase()] = function(action) {\n return state.options[key];\n };\n });\n return obj;\n };\n };\n\n var InteractionMethod = {\n API: 1,\n DROP: 2,\n BROWSE: 3,\n PASTE: 4,\n NONE: 5,\n };\n\n var getUniqueId = function getUniqueId() {\n return Math.random()\n .toString(36)\n .substring(2, 11);\n };\n\n function _typeof(obj) {\n if (typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol') {\n _typeof = function(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function(obj) {\n return obj &&\n typeof Symbol === 'function' &&\n obj.constructor === Symbol &&\n obj !== Symbol.prototype\n ? 'symbol'\n : typeof obj;\n };\n }\n\n return _typeof(obj);\n }\n\n var REACT_ELEMENT_TYPE;\n\n function _jsx(type, props, key, children) {\n if (!REACT_ELEMENT_TYPE) {\n REACT_ELEMENT_TYPE =\n (typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element')) ||\n 0xeac7;\n }\n\n var defaultProps = type && type.defaultProps;\n var childrenLength = arguments.length - 3;\n\n if (!props && childrenLength !== 0) {\n props = {\n children: void 0,\n };\n }\n\n if (props && defaultProps) {\n for (var propName in defaultProps) {\n if (props[propName] === void 0) {\n props[propName] = defaultProps[propName];\n }\n }\n } else if (!props) {\n props = defaultProps || {};\n }\n\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = new Array(childrenLength);\n\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 3];\n }\n\n props.children = childArray;\n }\n\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key === undefined ? null : '' + key,\n ref: null,\n props: props,\n _owner: null,\n };\n }\n\n function _asyncIterator(iterable) {\n var method;\n\n if (typeof Symbol !== 'undefined') {\n if (Symbol.asyncIterator) {\n method = iterable[Symbol.asyncIterator];\n if (method != null) return method.call(iterable);\n }\n\n if (Symbol.iterator) {\n method = iterable[Symbol.iterator];\n if (method != null) return method.call(iterable);\n }\n }\n\n throw new TypeError('Object is not async iterable');\n }\n\n function _AwaitValue(value) {\n this.wrapped = value;\n }\n\n function _AsyncGenerator(gen) {\n var front, back;\n\n function send(key, arg) {\n return new Promise(function(resolve, reject) {\n var request = {\n key: key,\n arg: arg,\n resolve: resolve,\n reject: reject,\n next: null,\n };\n\n if (back) {\n back = back.next = request;\n } else {\n front = back = request;\n resume(key, arg);\n }\n });\n }\n\n function resume(key, arg) {\n try {\n var result = gen[key](arg);\n var value = result.value;\n var wrappedAwait = value instanceof _AwaitValue;\n Promise.resolve(wrappedAwait ? value.wrapped : value).then(\n function(arg) {\n if (wrappedAwait) {\n resume('next', arg);\n return;\n }\n\n settle(result.done ? 'return' : 'normal', arg);\n },\n function(err) {\n resume('throw', err);\n }\n );\n } catch (err) {\n settle('throw', err);\n }\n }\n\n function settle(type, value) {\n switch (type) {\n case 'return':\n front.resolve({\n value: value,\n done: true,\n });\n break;\n\n case 'throw':\n front.reject(value);\n break;\n\n default:\n front.resolve({\n value: value,\n done: false,\n });\n break;\n }\n\n front = front.next;\n\n if (front) {\n resume(front.key, front.arg);\n } else {\n back = null;\n }\n }\n\n this._invoke = send;\n\n if (typeof gen.return !== 'function') {\n this.return = undefined;\n }\n }\n\n if (typeof Symbol === 'function' && Symbol.asyncIterator) {\n _AsyncGenerator.prototype[Symbol.asyncIterator] = function() {\n return this;\n };\n }\n\n _AsyncGenerator.prototype.next = function(arg) {\n return this._invoke('next', arg);\n };\n\n _AsyncGenerator.prototype.throw = function(arg) {\n return this._invoke('throw', arg);\n };\n\n _AsyncGenerator.prototype.return = function(arg) {\n return this._invoke('return', arg);\n };\n\n function _wrapAsyncGenerator(fn) {\n return function() {\n return new _AsyncGenerator(fn.apply(this, arguments));\n };\n }\n\n function _awaitAsyncGenerator(value) {\n return new _AwaitValue(value);\n }\n\n function _asyncGeneratorDelegate(inner, awaitWrap) {\n var iter = {},\n waiting = false;\n\n function pump(key, value) {\n waiting = true;\n value = new Promise(function(resolve) {\n resolve(inner[key](value));\n });\n return {\n done: false,\n value: awaitWrap(value),\n };\n }\n\n if (typeof Symbol === 'function' && Symbol.iterator) {\n iter[Symbol.iterator] = function() {\n return this;\n };\n }\n\n iter.next = function(value) {\n if (waiting) {\n waiting = false;\n return value;\n }\n\n return pump('next', value);\n };\n\n if (typeof inner.throw === 'function') {\n iter.throw = function(value) {\n if (waiting) {\n waiting = false;\n throw value;\n }\n\n return pump('throw', value);\n };\n }\n\n if (typeof inner.return === 'function') {\n iter.return = function(value) {\n return pump('return', value);\n };\n }\n\n return iter;\n }\n\n function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n }\n\n function _asyncToGenerator(fn) {\n return function() {\n var self = this,\n args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, 'next', value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, 'throw', err);\n }\n\n _next(undefined);\n });\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError('Cannot call a class as a function');\n }\n }\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if ('value' in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _defineEnumerableProperties(obj, descs) {\n for (var key in descs) {\n var desc = descs[key];\n desc.configurable = desc.enumerable = true;\n if ('value' in desc) desc.writable = true;\n Object.defineProperty(obj, key, desc);\n }\n\n if (Object.getOwnPropertySymbols) {\n var objectSymbols = Object.getOwnPropertySymbols(descs);\n\n for (var i = 0; i < objectSymbols.length; i++) {\n var sym = objectSymbols[i];\n var desc = descs[sym];\n desc.configurable = desc.enumerable = true;\n if ('value' in desc) desc.writable = true;\n Object.defineProperty(obj, sym, desc);\n }\n }\n\n return obj;\n }\n\n function _defaults(obj, defaults) {\n var keys = Object.getOwnPropertyNames(defaults);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = Object.getOwnPropertyDescriptor(defaults, key);\n\n if (value && value.configurable && obj[key] === undefined) {\n Object.defineProperty(obj, key, value);\n }\n }\n\n return obj;\n }\n\n function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true,\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n }\n\n function _extends() {\n _extends =\n Object.assign ||\n function(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n }\n\n function _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(\n Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n })\n );\n }\n\n ownKeys.forEach(function(key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n }\n\n function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly)\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n }\n\n function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(source, true).forEach(function(key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(source).forEach(function(key) {\n Object.defineProperty(\n target,\n key,\n Object.getOwnPropertyDescriptor(source, key)\n );\n });\n }\n }\n\n return target;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== 'function' && superClass !== null) {\n throw new TypeError('Super expression must either be null or a function');\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true,\n },\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n }\n\n function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n }\n\n function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf\n ? Object.getPrototypeOf\n : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n }\n\n function _setPrototypeOf(o, p) {\n _setPrototypeOf =\n Object.setPrototypeOf ||\n function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n }\n\n function isNativeReflectConstruct() {\n if (typeof Reflect === 'undefined' || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === 'function') return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n }\n\n function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n }\n\n function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf('[native code]') !== -1;\n }\n\n function _wrapNativeSuper(Class) {\n var _cache = typeof Map === 'function' ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !_isNativeFunction(Class)) return Class;\n\n if (typeof Class !== 'function') {\n throw new TypeError('Super expression must either be null or a function');\n }\n\n if (typeof _cache !== 'undefined') {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true,\n },\n });\n return _setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n }\n\n function _instanceof(left, right) {\n if (right != null && typeof Symbol !== 'undefined' && right[Symbol.hasInstance]) {\n return !!right[Symbol.hasInstance](left);\n } else {\n return left instanceof right;\n }\n }\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule\n ? obj\n : {\n default: obj,\n };\n }\n\n function _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc =\n Object.defineProperty && Object.getOwnPropertyDescriptor\n ? Object.getOwnPropertyDescriptor(obj, key)\n : {};\n\n if (desc.get || desc.set) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n }\n\n newObj.default = obj;\n return newObj;\n }\n }\n\n function _newArrowCheck(innerThis, boundThis) {\n if (innerThis !== boundThis) {\n throw new TypeError('Cannot instantiate an arrow function');\n }\n }\n\n function _objectDestructuringEmpty(obj) {\n if (obj == null) throw new TypeError('Cannot destructure undefined');\n }\n\n function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n }\n\n function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n }\n\n function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n }\n\n function _possibleConstructorReturn(self, call) {\n if (call && (typeof call === 'object' || typeof call === 'function')) {\n return call;\n }\n\n return _assertThisInitialized(self);\n }\n\n function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = _getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n }\n\n function _get(target, property, receiver) {\n if (typeof Reflect !== 'undefined' && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = _superPropBase(target, property);\n\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get(target, property, receiver || target);\n }\n\n function set(target, property, value, receiver) {\n if (typeof Reflect !== 'undefined' && Reflect.set) {\n set = Reflect.set;\n } else {\n set = function set(target, property, value, receiver) {\n var base = _superPropBase(target, property);\n\n var desc;\n\n if (base) {\n desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.set) {\n desc.set.call(receiver, value);\n return true;\n } else if (!desc.writable) {\n return false;\n }\n }\n\n desc = Object.getOwnPropertyDescriptor(receiver, property);\n\n if (desc) {\n if (!desc.writable) {\n return false;\n }\n\n desc.value = value;\n Object.defineProperty(receiver, property, desc);\n } else {\n _defineProperty(receiver, property, value);\n }\n\n return true;\n };\n }\n\n return set(target, property, value, receiver);\n }\n\n function _set(target, property, value, receiver, isStrict) {\n var s = set(target, property, value, receiver || target);\n\n if (!s && isStrict) {\n throw new Error('failed to set property');\n }\n\n return value;\n }\n\n function _taggedTemplateLiteral(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n\n return Object.freeze(\n Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw),\n },\n })\n );\n }\n\n function _taggedTemplateLiteralLoose(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n\n strings.raw = raw;\n return strings;\n }\n\n function _temporalRef(val, name) {\n if (val === _temporalUndefined) {\n throw new ReferenceError(name + ' is not defined - temporal dead zone');\n } else {\n return val;\n }\n }\n\n function _readOnlyError(name) {\n throw new Error('\"' + name + '\" is read-only');\n }\n\n function _classNameTDZError(name) {\n throw new Error('Class \"' + name + '\" cannot be referenced in computed property keys.');\n }\n\n var _temporalUndefined = {};\n\n function _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();\n }\n\n function _slicedToArrayLoose(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimitLoose(arr, i) || _nonIterableRest();\n }\n\n function _toArray(arr) {\n return _arrayWithHoles(arr) || _iterableToArray(arr) || _nonIterableRest();\n }\n\n function _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n }\n\n function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n }\n\n function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n }\n\n function _iterableToArray(iter) {\n if (\n Symbol.iterator in Object(iter) ||\n Object.prototype.toString.call(iter) === '[object Arguments]'\n )\n return Array.from(iter);\n }\n\n function _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i['return'] != null) _i['return']();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n function _iterableToArrayLimitLoose(arr, i) {\n var _arr = [];\n\n for (var _iterator = arr[Symbol.iterator](), _step; !(_step = _iterator.next()).done; ) {\n _arr.push(_step.value);\n\n if (i && _arr.length === i) break;\n }\n\n return _arr;\n }\n\n function _nonIterableSpread() {\n throw new TypeError('Invalid attempt to spread non-iterable instance');\n }\n\n function _nonIterableRest() {\n throw new TypeError('Invalid attempt to destructure non-iterable instance');\n }\n\n function _skipFirstGeneratorNext(fn) {\n return function() {\n var it = fn.apply(this, arguments);\n it.next();\n return it;\n };\n }\n\n function _toPrimitive(input, hint) {\n if (typeof input !== 'object' || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n\n if (prim !== undefined) {\n var res = prim.call(input, hint || 'default');\n if (typeof res !== 'object') return res;\n throw new TypeError('@@toPrimitive must return a primitive value.');\n }\n\n return (hint === 'string' ? String : Number)(input);\n }\n\n function _toPropertyKey(arg) {\n var key = _toPrimitive(arg, 'string');\n\n return typeof key === 'symbol' ? key : String(key);\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error(\n 'Decorating class property failed. Please ensure that ' +\n 'proposal-class-properties is enabled and set to use loose mode. ' +\n 'To use proposal-class-properties in spec mode with decorators, wait for ' +\n 'the next major version of decorators in stage 2.'\n );\n }\n\n function _initializerDefineProperty(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0,\n });\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object.keys(descriptor).forEach(function(key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators\n .slice()\n .reverse()\n .reduce(function(desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object.defineProperty(target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n var id = 0;\n\n function _classPrivateFieldLooseKey(name) {\n return '__private_' + id++ + '_' + name;\n }\n\n function _classPrivateFieldLooseBase(receiver, privateKey) {\n if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) {\n throw new TypeError('attempted to use private field on non-instance');\n }\n\n return receiver;\n }\n\n function _classPrivateFieldGet(receiver, privateMap) {\n var descriptor = privateMap.get(receiver);\n\n if (!descriptor) {\n throw new TypeError('attempted to get private field on non-instance');\n }\n\n if (descriptor.get) {\n return descriptor.get.call(receiver);\n }\n\n return descriptor.value;\n }\n\n function _classPrivateFieldSet(receiver, privateMap, value) {\n var descriptor = privateMap.get(receiver);\n\n if (!descriptor) {\n throw new TypeError('attempted to set private field on non-instance');\n }\n\n if (descriptor.set) {\n descriptor.set.call(receiver, value);\n } else {\n if (!descriptor.writable) {\n throw new TypeError('attempted to set read only private field');\n }\n\n descriptor.value = value;\n }\n\n return value;\n }\n\n function _classPrivateFieldDestructureSet(receiver, privateMap) {\n if (!privateMap.has(receiver)) {\n throw new TypeError('attempted to set private field on non-instance');\n }\n\n var descriptor = privateMap.get(receiver);\n\n if (descriptor.set) {\n if (!('__destrObj' in descriptor)) {\n descriptor.__destrObj = {\n set value(v) {\n descriptor.set.call(receiver, v);\n },\n };\n }\n\n return descriptor.__destrObj;\n } else {\n if (!descriptor.writable) {\n throw new TypeError('attempted to set read only private field');\n }\n\n return descriptor;\n }\n }\n\n function _classStaticPrivateFieldSpecGet(receiver, classConstructor, descriptor) {\n if (receiver !== classConstructor) {\n throw new TypeError('Private static access of wrong provenance');\n }\n\n return descriptor.value;\n }\n\n function _classStaticPrivateFieldSpecSet(receiver, classConstructor, descriptor, value) {\n if (receiver !== classConstructor) {\n throw new TypeError('Private static access of wrong provenance');\n }\n\n if (!descriptor.writable) {\n throw new TypeError('attempted to set read only private field');\n }\n\n descriptor.value = value;\n return value;\n }\n\n function _classStaticPrivateMethodGet(receiver, classConstructor, method) {\n if (receiver !== classConstructor) {\n throw new TypeError('Private static access of wrong provenance');\n }\n\n return method;\n }\n\n function _classStaticPrivateMethodSet() {\n throw new TypeError('attempted to set read only static private field');\n }\n\n function _decorate(decorators, factory, superClass, mixins) {\n var api = _getDecoratorsApi();\n\n if (mixins) {\n for (var i = 0; i < mixins.length; i++) {\n api = mixins[i](api);\n }\n }\n\n var r = factory(function initialize(O) {\n api.initializeInstanceElements(O, decorated.elements);\n }, superClass);\n var decorated = api.decorateClass(\n _coalesceClassElements(r.d.map(_createElementDescriptor)),\n decorators\n );\n api.initializeClassElements(r.F, decorated.elements);\n return api.runClassFinishers(r.F, decorated.finishers);\n }\n\n function _getDecoratorsApi() {\n _getDecoratorsApi = function() {\n return api;\n };\n\n var api = {\n elementsDefinitionOrder: [['method'], ['field']],\n initializeInstanceElements: function(O, elements) {\n ['method', 'field'].forEach(function(kind) {\n elements.forEach(function(element) {\n if (element.kind === kind && element.placement === 'own') {\n this.defineClassElement(O, element);\n }\n }, this);\n }, this);\n },\n initializeClassElements: function(F, elements) {\n var proto = F.prototype;\n ['method', 'field'].forEach(function(kind) {\n elements.forEach(function(element) {\n var placement = element.placement;\n\n if (\n element.kind === kind &&\n (placement === 'static' || placement === 'prototype')\n ) {\n var receiver = placement === 'static' ? F : proto;\n this.defineClassElement(receiver, element);\n }\n }, this);\n }, this);\n },\n defineClassElement: function(receiver, element) {\n var descriptor = element.descriptor;\n\n if (element.kind === 'field') {\n var initializer = element.initializer;\n descriptor = {\n enumerable: descriptor.enumerable,\n writable: descriptor.writable,\n configurable: descriptor.configurable,\n value: initializer === void 0 ? void 0 : initializer.call(receiver),\n };\n }\n\n Object.defineProperty(receiver, element.key, descriptor);\n },\n decorateClass: function(elements, decorators) {\n var newElements = [];\n var finishers = [];\n var placements = {\n static: [],\n prototype: [],\n own: [],\n };\n elements.forEach(function(element) {\n this.addElementPlacement(element, placements);\n }, this);\n elements.forEach(function(element) {\n if (!_hasDecorators(element)) return newElements.push(element);\n var elementFinishersExtras = this.decorateElement(element, placements);\n newElements.push(elementFinishersExtras.element);\n newElements.push.apply(newElements, elementFinishersExtras.extras);\n finishers.push.apply(finishers, elementFinishersExtras.finishers);\n }, this);\n\n if (!decorators) {\n return {\n elements: newElements,\n finishers: finishers,\n };\n }\n\n var result = this.decorateConstructor(newElements, decorators);\n finishers.push.apply(finishers, result.finishers);\n result.finishers = finishers;\n return result;\n },\n addElementPlacement: function(element, placements, silent) {\n var keys = placements[element.placement];\n\n if (!silent && keys.indexOf(element.key) !== -1) {\n throw new TypeError('Duplicated element (' + element.key + ')');\n }\n\n keys.push(element.key);\n },\n decorateElement: function(element, placements) {\n var extras = [];\n var finishers = [];\n\n for (var decorators = element.decorators, i = decorators.length - 1; i >= 0; i--) {\n var keys = placements[element.placement];\n keys.splice(keys.indexOf(element.key), 1);\n var elementObject = this.fromElementDescriptor(element);\n var elementFinisherExtras = this.toElementFinisherExtras(\n (0, decorators[i])(elementObject) || elementObject\n );\n element = elementFinisherExtras.element;\n this.addElementPlacement(element, placements);\n\n if (elementFinisherExtras.finisher) {\n finishers.push(elementFinisherExtras.finisher);\n }\n\n var newExtras = elementFinisherExtras.extras;\n\n if (newExtras) {\n for (var j = 0; j < newExtras.length; j++) {\n this.addElementPlacement(newExtras[j], placements);\n }\n\n extras.push.apply(extras, newExtras);\n }\n }\n\n return {\n element: element,\n finishers: finishers,\n extras: extras,\n };\n },\n decorateConstructor: function(elements, decorators) {\n var finishers = [];\n\n for (var i = decorators.length - 1; i >= 0; i--) {\n var obj = this.fromClassDescriptor(elements);\n var elementsAndFinisher = this.toClassDescriptor(\n (0, decorators[i])(obj) || obj\n );\n\n if (elementsAndFinisher.finisher !== undefined) {\n finishers.push(elementsAndFinisher.finisher);\n }\n\n if (elementsAndFinisher.elements !== undefined) {\n elements = elementsAndFinisher.elements;\n\n for (var j = 0; j < elements.length - 1; j++) {\n for (var k = j + 1; k < elements.length; k++) {\n if (\n elements[j].key === elements[k].key &&\n elements[j].placement === elements[k].placement\n ) {\n throw new TypeError(\n 'Duplicated element (' + elements[j].key + ')'\n );\n }\n }\n }\n }\n }\n\n return {\n elements: elements,\n finishers: finishers,\n };\n },\n fromElementDescriptor: function(element) {\n var obj = {\n kind: element.kind,\n key: element.key,\n placement: element.placement,\n descriptor: element.descriptor,\n };\n var desc = {\n value: 'Descriptor',\n configurable: true,\n };\n Object.defineProperty(obj, Symbol.toStringTag, desc);\n if (element.kind === 'field') obj.initializer = element.initializer;\n return obj;\n },\n toElementDescriptors: function(elementObjects) {\n if (elementObjects === undefined) return;\n return _toArray(elementObjects).map(function(elementObject) {\n var element = this.toElementDescriptor(elementObject);\n this.disallowProperty(elementObject, 'finisher', 'An element descriptor');\n this.disallowProperty(elementObject, 'extras', 'An element descriptor');\n return element;\n }, this);\n },\n toElementDescriptor: function(elementObject) {\n var kind = String(elementObject.kind);\n\n if (kind !== 'method' && kind !== 'field') {\n throw new TypeError(\n 'An element descriptor\\'s .kind property must be either \"method\" or' +\n ' \"field\", but a decorator created an element descriptor with' +\n ' .kind \"' +\n kind +\n '\"'\n );\n }\n\n var key = _toPropertyKey(elementObject.key);\n\n var placement = String(elementObject.placement);\n\n if (placement !== 'static' && placement !== 'prototype' && placement !== 'own') {\n throw new TypeError(\n 'An element descriptor\\'s .placement property must be one of \"static\",' +\n ' \"prototype\" or \"own\", but a decorator created an element descriptor' +\n ' with .placement \"' +\n placement +\n '\"'\n );\n }\n\n var descriptor = elementObject.descriptor;\n this.disallowProperty(elementObject, 'elements', 'An element descriptor');\n var element = {\n kind: kind,\n key: key,\n placement: placement,\n descriptor: Object.assign({}, descriptor),\n };\n\n if (kind !== 'field') {\n this.disallowProperty(elementObject, 'initializer', 'A method descriptor');\n } else {\n this.disallowProperty(\n descriptor,\n 'get',\n 'The property descriptor of a field descriptor'\n );\n this.disallowProperty(\n descriptor,\n 'set',\n 'The property descriptor of a field descriptor'\n );\n this.disallowProperty(\n descriptor,\n 'value',\n 'The property descriptor of a field descriptor'\n );\n element.initializer = elementObject.initializer;\n }\n\n return element;\n },\n toElementFinisherExtras: function(elementObject) {\n var element = this.toElementDescriptor(elementObject);\n\n var finisher = _optionalCallableProperty(elementObject, 'finisher');\n\n var extras = this.toElementDescriptors(elementObject.extras);\n return {\n element: element,\n finisher: finisher,\n extras: extras,\n };\n },\n fromClassDescriptor: function(elements) {\n var obj = {\n kind: 'class',\n elements: elements.map(this.fromElementDescriptor, this),\n };\n var desc = {\n value: 'Descriptor',\n configurable: true,\n };\n Object.defineProperty(obj, Symbol.toStringTag, desc);\n return obj;\n },\n toClassDescriptor: function(obj) {\n var kind = String(obj.kind);\n\n if (kind !== 'class') {\n throw new TypeError(\n 'A class descriptor\\'s .kind property must be \"class\", but a decorator' +\n ' created a class descriptor with .kind \"' +\n kind +\n '\"'\n );\n }\n\n this.disallowProperty(obj, 'key', 'A class descriptor');\n this.disallowProperty(obj, 'placement', 'A class descriptor');\n this.disallowProperty(obj, 'descriptor', 'A class descriptor');\n this.disallowProperty(obj, 'initializer', 'A class descriptor');\n this.disallowProperty(obj, 'extras', 'A class descriptor');\n\n var finisher = _optionalCallableProperty(obj, 'finisher');\n\n var elements = this.toElementDescriptors(obj.elements);\n return {\n elements: elements,\n finisher: finisher,\n };\n },\n runClassFinishers: function(constructor, finishers) {\n for (var i = 0; i < finishers.length; i++) {\n var newConstructor = (0, finishers[i])(constructor);\n\n if (newConstructor !== undefined) {\n if (typeof newConstructor !== 'function') {\n throw new TypeError('Finishers must return a constructor.');\n }\n\n constructor = newConstructor;\n }\n }\n\n return constructor;\n },\n disallowProperty: function(obj, name, objectType) {\n if (obj[name] !== undefined) {\n throw new TypeError(objectType + \" can't have a .\" + name + ' property.');\n }\n },\n };\n return api;\n }\n\n function _createElementDescriptor(def) {\n var key = _toPropertyKey(def.key);\n\n var descriptor;\n\n if (def.kind === 'method') {\n descriptor = {\n value: def.value,\n writable: true,\n configurable: true,\n enumerable: false,\n };\n } else if (def.kind === 'get') {\n descriptor = {\n get: def.value,\n configurable: true,\n enumerable: false,\n };\n } else if (def.kind === 'set') {\n descriptor = {\n set: def.value,\n configurable: true,\n enumerable: false,\n };\n } else if (def.kind === 'field') {\n descriptor = {\n configurable: true,\n writable: true,\n enumerable: true,\n };\n }\n\n var element = {\n kind: def.kind === 'field' ? 'field' : 'method',\n key: key,\n placement: def.static ? 'static' : def.kind === 'field' ? 'own' : 'prototype',\n descriptor: descriptor,\n };\n if (def.decorators) element.decorators = def.decorators;\n if (def.kind === 'field') element.initializer = def.value;\n return element;\n }\n\n function _coalesceGetterSetter(element, other) {\n if (element.descriptor.get !== undefined) {\n other.descriptor.get = element.descriptor.get;\n } else {\n other.descriptor.set = element.descriptor.set;\n }\n }\n\n function _coalesceClassElements(elements) {\n var newElements = [];\n\n var isSameElement = function(other) {\n return (\n other.kind === 'method' &&\n other.key === element.key &&\n other.placement === element.placement\n );\n };\n\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n var other;\n\n if (element.kind === 'method' && (other = newElements.find(isSameElement))) {\n if (_isDataDescriptor(element.descriptor) || _isDataDescriptor(other.descriptor)) {\n if (_hasDecorators(element) || _hasDecorators(other)) {\n throw new ReferenceError(\n 'Duplicated methods (' + element.key + \") can't be decorated.\"\n );\n }\n\n other.descriptor = element.descriptor;\n } else {\n if (_hasDecorators(element)) {\n if (_hasDecorators(other)) {\n throw new ReferenceError(\n \"Decorators can't be placed on different accessors with for \" +\n 'the same property (' +\n element.key +\n ').'\n );\n }\n\n other.decorators = element.decorators;\n }\n\n _coalesceGetterSetter(element, other);\n }\n } else {\n newElements.push(element);\n }\n }\n\n return newElements;\n }\n\n function _hasDecorators(element) {\n return element.decorators && element.decorators.length;\n }\n\n function _isDataDescriptor(desc) {\n return desc !== undefined && !(desc.value === undefined && desc.writable === undefined);\n }\n\n function _optionalCallableProperty(obj, name) {\n var value = obj[name];\n\n if (value !== undefined && typeof value !== 'function') {\n throw new TypeError(\"Expected '\" + name + \"' to be a function\");\n }\n\n return value;\n }\n\n function _classPrivateMethodGet(receiver, privateSet, fn) {\n if (!privateSet.has(receiver)) {\n throw new TypeError('attempted to get private field on non-instance');\n }\n\n return fn;\n }\n\n function _classPrivateMethodSet() {\n throw new TypeError('attempted to reassign private method');\n }\n\n function _wrapRegExp(re, groups) {\n _wrapRegExp = function(re, groups) {\n return new BabelRegExp(re, groups);\n };\n\n var _RegExp = _wrapNativeSuper(RegExp);\n\n var _super = RegExp.prototype;\n\n var _groups = new WeakMap();\n\n function BabelRegExp(re, groups) {\n var _this = _RegExp.call(this, re);\n\n _groups.set(_this, groups);\n\n return _this;\n }\n\n _inherits(BabelRegExp, _RegExp);\n\n BabelRegExp.prototype.exec = function(str) {\n var result = _super.exec.call(this, str);\n\n if (result) result.groups = buildGroups(result, this);\n return result;\n };\n\n BabelRegExp.prototype[Symbol.replace] = function(str, substitution) {\n if (typeof substitution === 'string') {\n var groups = _groups.get(this);\n\n return _super[Symbol.replace].call(\n this,\n str,\n substitution.replace(/\\$<([^>]+)>/g, function(_, name) {\n return '$' + groups[name];\n })\n );\n } else if (typeof substitution === 'function') {\n var _this = this;\n\n return _super[Symbol.replace].call(this, str, function() {\n var args = [];\n args.push.apply(args, arguments);\n\n if (typeof args[args.length - 1] !== 'object') {\n args.push(buildGroups(args, _this));\n }\n\n return substitution.apply(this, args);\n });\n } else {\n return _super[Symbol.replace].call(this, str, substitution);\n }\n };\n\n function buildGroups(result, re) {\n var g = _groups.get(re);\n\n return Object.keys(g).reduce(function(groups, name) {\n groups[name] = result[g[name]];\n return groups;\n }, Object.create(null));\n }\n\n return _wrapRegExp.apply(this, arguments);\n }\n\n var arrayRemove = function arrayRemove(arr, index) {\n return arr.splice(index, 1);\n };\n\n var run = function run(cb, sync) {\n if (sync) {\n cb();\n } else if (document.hidden) {\n Promise.resolve(1).then(cb);\n } else {\n setTimeout(cb, 0);\n }\n };\n\n var on = function on() {\n var listeners = [];\n var off = function off(event, cb) {\n arrayRemove(\n listeners,\n listeners.findIndex(function(listener) {\n return listener.event === event && (listener.cb === cb || !cb);\n })\n );\n };\n var _fire = function fire(event, args, sync) {\n listeners\n .filter(function(listener) {\n return listener.event === event;\n })\n .map(function(listener) {\n return listener.cb;\n })\n .forEach(function(cb) {\n return run(function() {\n return cb.apply(void 0, _toConsumableArray(args));\n }, sync);\n });\n };\n return {\n fireSync: function fireSync(event) {\n for (\n var _len = arguments.length,\n args = new Array(_len > 1 ? _len - 1 : 0),\n _key = 1;\n _key < _len;\n _key++\n ) {\n args[_key - 1] = arguments[_key];\n }\n _fire(event, args, true);\n },\n fire: function fire(event) {\n for (\n var _len2 = arguments.length,\n args = new Array(_len2 > 1 ? _len2 - 1 : 0),\n _key2 = 1;\n _key2 < _len2;\n _key2++\n ) {\n args[_key2 - 1] = arguments[_key2];\n }\n _fire(event, args, false);\n },\n on: function on(event, cb) {\n listeners.push({ event: event, cb: cb });\n },\n onOnce: function onOnce(event, _cb) {\n listeners.push({\n event: event,\n cb: function cb() {\n off(event, _cb);\n _cb.apply(void 0, arguments);\n },\n });\n },\n off: off,\n };\n };\n\n var copyObjectPropertiesToObject = function copyObjectPropertiesToObject(\n src,\n target,\n excluded\n ) {\n Object.getOwnPropertyNames(src)\n .filter(function(property) {\n return !excluded.includes(property);\n })\n .forEach(function(key) {\n return Object.defineProperty(\n target,\n key,\n Object.getOwnPropertyDescriptor(src, key)\n );\n });\n };\n\n var PRIVATE = [\n 'fire',\n 'process',\n 'revert',\n 'load',\n 'on',\n 'off',\n 'onOnce',\n 'retryLoad',\n 'extend',\n 'archive',\n 'archived',\n 'release',\n 'released',\n 'requestProcessing',\n 'freeze',\n ];\n\n var createItemAPI = function createItemAPI(item) {\n var api = {};\n copyObjectPropertiesToObject(item, api, PRIVATE);\n return api;\n };\n\n var removeReleasedItems = function removeReleasedItems(items) {\n items.forEach(function(item, index) {\n if (item.released) {\n arrayRemove(items, index);\n }\n });\n };\n\n var ItemStatus = {\n INIT: 1,\n IDLE: 2,\n PROCESSING_QUEUED: 9,\n PROCESSING: 3,\n PROCESSING_COMPLETE: 5,\n PROCESSING_ERROR: 6,\n PROCESSING_REVERT_ERROR: 10,\n LOADING: 7,\n LOAD_ERROR: 8,\n };\n\n var FileOrigin = {\n INPUT: 1,\n LIMBO: 2,\n LOCAL: 3,\n };\n\n var getNonNumeric = function getNonNumeric(str) {\n return /[^0-9]+/.exec(str);\n };\n\n var getDecimalSeparator = function getDecimalSeparator() {\n return getNonNumeric((1.1).toLocaleString())[0];\n };\n\n var getThousandsSeparator = function getThousandsSeparator() {\n // Added for browsers that do not return the thousands separator (happend on native browser Android 4.4.4)\n // We check against the normal toString output and if they're the same return a comma when decimal separator is a dot\n var decimalSeparator = getDecimalSeparator();\n var thousandsStringWithSeparator = (1000.0).toLocaleString();\n var thousandsStringWithoutSeparator = (1000.0).toString();\n if (thousandsStringWithSeparator !== thousandsStringWithoutSeparator) {\n return getNonNumeric(thousandsStringWithSeparator)[0];\n }\n return decimalSeparator === '.' ? ',' : '.';\n };\n\n var Type = {\n BOOLEAN: 'boolean',\n INT: 'int',\n NUMBER: 'number',\n STRING: 'string',\n ARRAY: 'array',\n OBJECT: 'object',\n FUNCTION: 'function',\n ACTION: 'action',\n SERVER_API: 'serverapi',\n REGEX: 'regex',\n };\n\n // all registered filters\n var filters = [];\n\n // loops over matching filters and passes options to each filter, returning the mapped results\n var applyFilterChain = function applyFilterChain(key, value, utils) {\n return new Promise(function(resolve, reject) {\n // find matching filters for this key\n var matchingFilters = filters\n .filter(function(f) {\n return f.key === key;\n })\n .map(function(f) {\n return f.cb;\n });\n\n // resolve now\n if (matchingFilters.length === 0) {\n resolve(value);\n return;\n }\n\n // first filter to kick things of\n var initialFilter = matchingFilters.shift();\n\n // chain filters\n matchingFilters\n .reduce(\n // loop over promises passing value to next promise\n function(current, next) {\n return current.then(function(value) {\n return next(value, utils);\n });\n },\n\n // call initial filter, will return a promise\n initialFilter(value, utils)\n\n // all executed\n )\n .then(function(value) {\n return resolve(value);\n })\n .catch(function(error) {\n return reject(error);\n });\n });\n };\n\n var applyFilters = function applyFilters(key, value, utils) {\n return filters\n .filter(function(f) {\n return f.key === key;\n })\n .map(function(f) {\n return f.cb(value, utils);\n });\n };\n\n // adds a new filter to the list\n var addFilter = function addFilter(key, cb) {\n return filters.push({ key: key, cb: cb });\n };\n\n var extendDefaultOptions = function extendDefaultOptions(additionalOptions) {\n return Object.assign(defaultOptions, additionalOptions);\n };\n\n var getOptions = function getOptions() {\n return Object.assign({}, defaultOptions);\n };\n\n var setOptions = function setOptions(opts) {\n forin(opts, function(key, value) {\n // key does not exist, so this option cannot be set\n if (!defaultOptions[key]) {\n return;\n }\n defaultOptions[key][0] = getValueByType(\n value,\n defaultOptions[key][0],\n defaultOptions[key][1]\n );\n });\n };\n\n // default options on app\n var defaultOptions = {\n // the id to add to the root element\n id: [null, Type.STRING],\n\n // input field name to use\n name: ['filepond', Type.STRING],\n\n // disable the field\n disabled: [false, Type.BOOLEAN],\n\n // classname to put on wrapper\n className: [null, Type.STRING],\n\n // is the field required\n required: [false, Type.BOOLEAN],\n\n // Allow media capture when value is set\n captureMethod: [null, Type.STRING],\n // - \"camera\", \"microphone\" or \"camcorder\",\n // - Does not work with multiple on apple devices\n // - If set, acceptedFileTypes must be made to match with media wildcard \"image/*\", \"audio/*\" or \"video/*\"\n\n // sync `acceptedFileTypes` property with `accept` attribute\n allowSyncAcceptAttribute: [true, Type.BOOLEAN],\n\n // Feature toggles\n allowDrop: [true, Type.BOOLEAN], // Allow dropping of files\n allowBrowse: [true, Type.BOOLEAN], // Allow browsing the file system\n allowPaste: [true, Type.BOOLEAN], // Allow pasting files\n allowMultiple: [false, Type.BOOLEAN], // Allow multiple files (disabled by default, as multiple attribute is also required on input to allow multiple)\n allowReplace: [true, Type.BOOLEAN], // Allow dropping a file on other file to replace it (only works when multiple is set to false)\n allowRevert: [true, Type.BOOLEAN], // Allows user to revert file upload\n allowRemove: [true, Type.BOOLEAN], // Allow user to remove a file\n allowProcess: [true, Type.BOOLEAN], // Allows user to process a file, when set to false, this removes the file upload button\n allowReorder: [false, Type.BOOLEAN], // Allow reordering of files\n allowDirectoriesOnly: [false, Type.BOOLEAN], // Allow only selecting directories with browse (no support for filtering dnd at this point)\n\n // Try store file if `server` not set\n storeAsFile: [false, Type.BOOLEAN],\n\n // Revert mode\n forceRevert: [false, Type.BOOLEAN], // Set to 'force' to require the file to be reverted before removal\n\n // Input requirements\n maxFiles: [null, Type.INT], // Max number of files\n checkValidity: [false, Type.BOOLEAN], // Enables custom validity messages\n\n // Where to put file\n itemInsertLocationFreedom: [true, Type.BOOLEAN], // Set to false to always add items to begin or end of list\n itemInsertLocation: ['before', Type.STRING], // Default index in list to add items that have been dropped at the top of the list\n itemInsertInterval: [75, Type.INT],\n\n // Drag 'n Drop related\n dropOnPage: [false, Type.BOOLEAN], // Allow dropping of files anywhere on page (prevents browser from opening file if dropped outside of Up)\n dropOnElement: [true, Type.BOOLEAN], // Drop needs to happen on element (set to false to also load drops outside of Up)\n dropValidation: [false, Type.BOOLEAN], // Enable or disable validating files on drop\n ignoredFiles: [['.ds_store', 'thumbs.db', 'desktop.ini'], Type.ARRAY],\n\n // Upload related\n instantUpload: [true, Type.BOOLEAN], // Should upload files immediately on drop\n maxParallelUploads: [2, Type.INT], // Maximum files to upload in parallel\n allowMinimumUploadDuration: [true, Type.BOOLEAN], // if true uploads take at least 750 ms, this ensures the user sees the upload progress giving trust the upload actually happened\n\n // Chunks\n chunkUploads: [false, Type.BOOLEAN], // Enable chunked uploads\n chunkForce: [false, Type.BOOLEAN], // Force use of chunk uploads even for files smaller than chunk size\n chunkSize: [5000000, Type.INT], // Size of chunks (5MB default)\n chunkRetryDelays: [[500, 1000, 3000], Type.ARRAY], // Amount of times to retry upload of a chunk when it fails\n\n // The server api end points to use for uploading (see docs)\n server: [null, Type.SERVER_API],\n\n // File size calculations, can set to 1024, this is only used for display, properties use file size base 1000\n fileSizeBase: [1000, Type.INT],\n\n // Labels and status messages\n labelFileSizeBytes: ['bytes', Type.STRING],\n labelFileSizeKilobytes: ['KB', Type.STRING],\n labelFileSizeMegabytes: ['MB', Type.STRING],\n labelFileSizeGigabytes: ['GB', Type.STRING],\n\n labelDecimalSeparator: [getDecimalSeparator(), Type.STRING], // Default is locale separator\n labelThousandsSeparator: [getThousandsSeparator(), Type.STRING], // Default is locale separator\n\n labelIdle: [\n 'Drag & Drop your files or <span class=\"filepond--label-action\">Browse</span>',\n Type.STRING,\n ],\n\n labelInvalidField: ['Field contains invalid files', Type.STRING],\n labelFileWaitingForSize: ['Waiting for size', Type.STRING],\n labelFileSizeNotAvailable: ['Size not available', Type.STRING],\n labelFileCountSingular: ['file in list', Type.STRING],\n labelFileCountPlural: ['files in list', Type.STRING],\n labelFileLoading: ['Loading', Type.STRING],\n labelFileAdded: ['Added', Type.STRING], // assistive only\n labelFileLoadError: ['Error during load', Type.STRING],\n labelFileRemoved: ['Removed', Type.STRING], // assistive only\n labelFileRemoveError: ['Error during remove', Type.STRING],\n labelFileProcessing: ['Uploading', Type.STRING],\n labelFileProcessingComplete: ['Upload complete', Type.STRING],\n labelFileProcessingAborted: ['Upload cancelled', Type.STRING],\n labelFileProcessingError: ['Error during upload', Type.STRING],\n labelFileProcessingRevertError: ['Error during revert', Type.STRING],\n\n labelTapToCancel: ['tap to cancel', Type.STRING],\n labelTapToRetry: ['tap to retry', Type.STRING],\n labelTapToUndo: ['tap to undo', Type.STRING],\n\n labelButtonRemoveItem: ['Remove', Type.STRING],\n labelButtonAbortItemLoad: ['Abort', Type.STRING],\n labelButtonRetryItemLoad: ['Retry', Type.STRING],\n labelButtonAbortItemProcessing: ['Cancel', Type.STRING],\n labelButtonUndoItemProcessing: ['Undo', Type.STRING],\n labelButtonRetryItemProcessing: ['Retry', Type.STRING],\n labelButtonProcessItem: ['Upload', Type.STRING],\n\n // make sure width and height plus viewpox are even numbers so icons are nicely centered\n iconRemove: [\n '<svg width=\"26\" height=\"26\" viewBox=\"0 0 26 26\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M11.586 13l-2.293 2.293a1 1 0 0 0 1.414 1.414L13 14.414l2.293 2.293a1 1 0 0 0 1.414-1.414L14.414 13l2.293-2.293a1 1 0 0 0-1.414-1.414L13 11.586l-2.293-2.293a1 1 0 0 0-1.414 1.414L11.586 13z\" fill=\"currentColor\" fill-rule=\"nonzero\"/></svg>',\n Type.STRING,\n ],\n\n iconProcess: [\n '<svg width=\"26\" height=\"26\" viewBox=\"0 0 26 26\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M14 10.414v3.585a1 1 0 0 1-2 0v-3.585l-1.293 1.293a1 1 0 0 1-1.414-1.415l3-3a1 1 0 0 1 1.414 0l3 3a1 1 0 0 1-1.414 1.415L14 10.414zM9 18a1 1 0 0 1 0-2h8a1 1 0 0 1 0 2H9z\" fill=\"currentColor\" fill-rule=\"evenodd\"/></svg>',\n Type.STRING,\n ],\n\n iconRetry: [\n '<svg width=\"26\" height=\"26\" viewBox=\"0 0 26 26\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M10.81 9.185l-.038.02A4.997 4.997 0 0 0 8 13.683a5 5 0 0 0 5 5 5 5 0 0 0 5-5 1 1 0 0 1 2 0A7 7 0 1 1 9.722 7.496l-.842-.21a.999.999 0 1 1 .484-1.94l3.23.806c.535.133.86.675.73 1.21l-.804 3.233a.997.997 0 0 1-1.21.73.997.997 0 0 1-.73-1.21l.23-.928v-.002z\" fill=\"currentColor\" fill-rule=\"nonzero\"/></svg>',\n Type.STRING,\n ],\n\n iconUndo: [\n '<svg width=\"26\" height=\"26\" viewBox=\"0 0 26 26\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9.185 10.81l.02-.038A4.997 4.997 0 0 1 13.683 8a5 5 0 0 1 5 5 5 5 0 0 1-5 5 1 1 0 0 0 0 2A7 7 0 1 0 7.496 9.722l-.21-.842a.999.999 0 1 0-1.94.484l.806 3.23c.133.535.675.86 1.21.73l3.233-.803a.997.997 0 0 0 .73-1.21.997.997 0 0 0-1.21-.73l-.928.23-.002-.001z\" fill=\"currentColor\" fill-rule=\"nonzero\"/></svg>',\n Type.STRING,\n ],\n\n iconDone: [\n '<svg width=\"26\" height=\"26\" viewBox=\"0 0 26 26\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M18.293 9.293a1 1 0 0 1 1.414 1.414l-7.002 7a1 1 0 0 1-1.414 0l-3.998-4a1 1 0 1 1 1.414-1.414L12 15.586l6.294-6.293z\" fill=\"currentColor\" fill-rule=\"nonzero\"/></svg>',\n Type.STRING,\n ],\n\n // event handlers\n oninit: [null, Type.FUNCTION],\n onwarning: [null, Type.FUNCTION],\n onerror: [null, Type.FUNCTION],\n onactivatefile: [null, Type.FUNCTION],\n oninitfile: [null, Type.FUNCTION],\n onaddfilestart: [null, Type.FUNCTION],\n onaddfileprogress: [null, Type.FUNCTION],\n onaddfile: [null, Type.FUNCTION],\n onprocessfilestart: [null, Type.FUNCTION],\n onprocessfileprogress: [null, Type.FUNCTION],\n onprocessfileabort: [null, Type.FUNCTION],\n onprocessfilerevert: [null, Type.FUNCTION],\n onprocessfile: [null, Type.FUNCTION],\n onprocessfiles: [null, Type.FUNCTION],\n onremovefile: [null, Type.FUNCTION],\n onpreparefile: [null, Type.FUNCTION],\n onupdatefiles: [null, Type.FUNCTION],\n onreorderfiles: [null, Type.FUNCTION],\n\n // hooks\n beforeDropFile: [null, Type.FUNCTION],\n beforeAddFile: [null, Type.FUNCTION],\n beforeRemoveFile: [null, Type.FUNCTION],\n beforePrepareFile: [null, Type.FUNCTION],\n\n // styles\n stylePanelLayout: [null, Type.STRING], // null 'integrated', 'compact', 'circle'\n stylePanelAspectRatio: [null, Type.STRING], // null or '3:2' or 1\n styleItemPanelAspectRatio: [null, Type.STRING],\n styleButtonRemoveItemPosition: ['left', Type.STRING],\n styleButtonProcessItemPosition: ['right', Type.STRING],\n styleLoadIndicatorPosition: ['right', Type.STRING],\n styleProgressIndicatorPosition: ['right', Type.STRING],\n styleButtonRemoveItemAlign: [false, Type.BOOLEAN],\n\n // custom initial files array\n files: [[], Type.ARRAY],\n\n // show support by displaying credits\n credits: [['https://pqina.nl/', 'Powered by PQINA'], Type.ARRAY],\n };\n\n var getItemByQuery = function getItemByQuery(items, query) {\n // just return first index\n if (isEmpty(query)) {\n return items[0] || null;\n }\n\n // query is index\n if (isInt(query)) {\n return items[query] || null;\n }\n\n // if query is item, get the id\n if (typeof query === 'object') {\n query = query.id;\n }\n\n // assume query is a string and return item by id\n return (\n items.find(function(item) {\n return item.id === query;\n }) || null\n );\n };\n\n var getNumericAspectRatioFromString = function getNumericAspectRatioFromString(aspectRatio) {\n if (isEmpty(aspectRatio)) {\n return aspectRatio;\n }\n if (/:/.test(aspectRatio)) {\n var parts = aspectRatio.split(':');\n return parts[1] / parts[0];\n }\n return parseFloat(aspectRatio);\n };\n\n var getActiveItems = function getActiveItems(items) {\n return items.filter(function(item) {\n return !item.archived;\n });\n };\n\n var Status = {\n EMPTY: 0,\n IDLE: 1, // waiting\n ERROR: 2, // a file is in error state\n BUSY: 3, // busy processing or loading\n READY: 4, // all files uploaded\n };\n\n var res = null;\n var canUpdateFileInput = function canUpdateFileInput() {\n if (res === null) {\n try {\n var dataTransfer = new DataTransfer();\n dataTransfer.items.add(new File(['hello world'], 'This_Works.txt'));\n var el = document.createElement('input');\n el.setAttribute('type', 'file');\n el.files = dataTransfer.files;\n res = el.files.length === 1;\n } catch (err) {\n res = false;\n }\n }\n return res;\n };\n\n var ITEM_ERROR = [\n ItemStatus.LOAD_ERROR,\n ItemStatus.PROCESSING_ERROR,\n ItemStatus.PROCESSING_REVERT_ERROR,\n ];\n\n var ITEM_BUSY = [\n ItemStatus.LOADING,\n ItemStatus.PROCESSING,\n ItemStatus.PROCESSING_QUEUED,\n ItemStatus.INIT,\n ];\n\n var ITEM_READY = [ItemStatus.PROCESSING_COMPLETE];\n\n var isItemInErrorState = function isItemInErrorState(item) {\n return ITEM_ERROR.includes(item.status);\n };\n var isItemInBusyState = function isItemInBusyState(item) {\n return ITEM_BUSY.includes(item.status);\n };\n var isItemInReadyState = function isItemInReadyState(item) {\n return ITEM_READY.includes(item.status);\n };\n\n var isAsync = function isAsync(state) {\n return (\n isObject(state.options.server) &&\n (isObject(state.options.server.process) || isFunction(state.options.server.process))\n );\n };\n\n var queries = function queries(state) {\n return {\n GET_STATUS: function GET_STATUS() {\n var items = getActiveItems(state.items);\n var EMPTY = Status.EMPTY,\n ERROR = Status.ERROR,\n BUSY = Status.BUSY,\n IDLE = Status.IDLE,\n READY = Status.READY;\n\n if (items.length === 0) return EMPTY;\n\n if (items.some(isItemInErrorState)) return ERROR;\n\n if (items.some(isItemInBusyState)) return BUSY;\n\n if (items.some(isItemInReadyState)) return READY;\n\n return IDLE;\n },\n\n GET_ITEM: function GET_ITEM(query) {\n return getItemByQuery(state.items, query);\n },\n\n GET_ACTIVE_ITEM: function GET_ACTIVE_ITEM(query) {\n return getItemByQuery(getActiveItems(state.items), query);\n },\n\n GET_ACTIVE_ITEMS: function GET_ACTIVE_ITEMS() {\n return getActiveItems(state.items);\n },\n\n GET_ITEMS: function GET_ITEMS() {\n return state.items;\n },\n\n GET_ITEM_NAME: function GET_ITEM_NAME(query) {\n var item = getItemByQuery(state.items, query);\n return item ? item.filename : null;\n },\n\n GET_ITEM_SIZE: function GET_ITEM_SIZE(query) {\n var item = getItemByQuery(state.items, query);\n return item ? item.fileSize : null;\n },\n\n GET_STYLES: function GET_STYLES() {\n return Object.keys(state.options)\n .filter(function(key) {\n return /^style/.test(key);\n })\n .map(function(option) {\n return {\n name: option,\n value: state.options[option],\n };\n });\n },\n\n GET_PANEL_ASPECT_RATIO: function GET_PANEL_ASPECT_RATIO() {\n var isShapeCircle = /circle/.test(state.options.stylePanelLayout);\n var aspectRatio = isShapeCircle\n ? 1\n : getNumericAspectRatioFromString(state.options.stylePanelAspectRatio);\n return aspectRatio;\n },\n\n GET_ITEM_PANEL_ASPECT_RATIO: function GET_ITEM_PANEL_ASPECT_RATIO() {\n return state.options.styleItemPanelAspectRatio;\n },\n\n GET_ITEMS_BY_STATUS: function GET_ITEMS_BY_STATUS(status) {\n return getActiveItems(state.items).filter(function(item) {\n return item.status === status;\n });\n },\n\n GET_TOTAL_ITEMS: function GET_TOTAL_ITEMS() {\n return getActiveItems(state.items).length;\n },\n\n SHOULD_UPDATE_FILE_INPUT: function SHOULD_UPDATE_FILE_INPUT() {\n return state.options.storeAsFile && canUpdateFileInput() && !isAsync(state);\n },\n\n IS_ASYNC: function IS_ASYNC() {\n return isAsync(state);\n },\n\n GET_FILE_SIZE_LABELS: function GET_FILE_SIZE_LABELS(query) {\n return {\n labelBytes: query('GET_LABEL_FILE_SIZE_BYTES') || undefined,\n labelKilobytes: query('GET_LABEL_FILE_SIZE_KILOBYTES') || undefined,\n labelMegabytes: query('GET_LABEL_FILE_SIZE_MEGABYTES') || undefined,\n labelGigabytes: query('GET_LABEL_FILE_SIZE_GIGABYTES') || undefined,\n };\n },\n };\n };\n\n var hasRoomForItem = function hasRoomForItem(state) {\n var count = getActiveItems(state.items).length;\n\n // if cannot have multiple items, to add one item it should currently not contain items\n if (!state.options.allowMultiple) {\n return count === 0;\n }\n\n // if allows multiple items, we check if a max item count has been set, if not, there's no limit\n var maxFileCount = state.options.maxFiles;\n if (maxFileCount === null) {\n return true;\n }\n\n // we check if the current count is smaller than the max count, if so, another file can still be added\n if (count < maxFileCount) {\n return true;\n }\n\n // no more room for another file\n return false;\n };\n\n var limit = function limit(value, min, max) {\n return Math.max(Math.min(max, value), min);\n };\n\n var arrayInsert = function arrayInsert(arr, index, item) {\n return arr.splice(index, 0, item);\n };\n\n var insertItem = function insertItem(items, item, index) {\n if (isEmpty(item)) {\n return null;\n }\n\n // if index is undefined, append\n if (typeof index === 'undefined') {\n items.push(item);\n return item;\n }\n\n // limit the index to the size of the items array\n index = limit(index, 0, items.length);\n\n // add item to array\n arrayInsert(items, index, item);\n\n // expose\n return item;\n };\n\n var isBase64DataURI = function isBase64DataURI(str) {\n return /^\\s*data:([a-z]+\\/[a-z0-9-+.]+(;[a-z-]+=[a-z0-9-]+)?)?(;base64)?,([a-z0-9!$&',()*+;=\\-._~:@\\/?%\\s]*)\\s*$/i.test(\n str\n );\n };\n\n var getFilenameFromURL = function getFilenameFromURL(url) {\n return url\n .split('/')\n .pop()\n .split('?')\n .shift();\n };\n\n var getExtensionFromFilename = function getExtensionFromFilename(name) {\n return name.split('.').pop();\n };\n\n var guesstimateExtension = function guesstimateExtension(type) {\n // if no extension supplied, exit here\n if (typeof type !== 'string') {\n return '';\n }\n\n // get subtype\n var subtype = type.split('/').pop();\n\n // is svg subtype\n if (/svg/.test(subtype)) {\n return 'svg';\n }\n\n if (/zip|compressed/.test(subtype)) {\n return 'zip';\n }\n\n if (/plain/.test(subtype)) {\n return 'txt';\n }\n\n if (/msword/.test(subtype)) {\n return 'doc';\n }\n\n // if is valid subtype\n if (/[a-z]+/.test(subtype)) {\n // always use jpg extension\n if (subtype === 'jpeg') {\n return 'jpg';\n }\n\n // return subtype\n return subtype;\n }\n\n return '';\n };\n\n var leftPad = function leftPad(value) {\n var padding = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n return (padding + value).slice(-padding.length);\n };\n\n var getDateString = function getDateString() {\n var date = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Date();\n return (\n date.getFullYear() +\n '-' +\n leftPad(date.getMonth() + 1, '00') +\n '-' +\n leftPad(date.getDate(), '00') +\n '_' +\n leftPad(date.getHours(), '00') +\n '-' +\n leftPad(date.getMinutes(), '00') +\n '-' +\n leftPad(date.getSeconds(), '00')\n );\n };\n\n var getFileFromBlob = function getFileFromBlob(blob, filename) {\n var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var extension = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n var file =\n typeof type === 'string'\n ? blob.slice(0, blob.size, type)\n : blob.slice(0, blob.size, blob.type);\n file.lastModifiedDate = new Date();\n\n // copy relative path\n if (blob._relativePath) file._relativePath = blob._relativePath;\n\n // if blob has name property, use as filename if no filename supplied\n if (!isString(filename)) {\n filename = getDateString();\n }\n\n // if filename supplied but no extension and filename has extension\n if (filename && extension === null && getExtensionFromFilename(filename)) {\n file.name = filename;\n } else {\n extension = extension || guesstimateExtension(file.type);\n file.name = filename + (extension ? '.' + extension : '');\n }\n\n return file;\n };\n\n var getBlobBuilder = function getBlobBuilder() {\n return (window.BlobBuilder =\n window.BlobBuilder ||\n window.WebKitBlobBuilder ||\n window.MozBlobBuilder ||\n window.MSBlobBuilder);\n };\n\n var createBlob = function createBlob(arrayBuffer, mimeType) {\n var BB = getBlobBuilder();\n\n if (BB) {\n var bb = new BB();\n bb.append(arrayBuffer);\n return bb.getBlob(mimeType);\n }\n\n return new Blob([arrayBuffer], {\n type: mimeType,\n });\n };\n\n var getBlobFromByteStringWithMimeType = function getBlobFromByteStringWithMimeType(\n byteString,\n mimeType\n ) {\n var ab = new ArrayBuffer(byteString.length);\n var ia = new Uint8Array(ab);\n\n for (var i = 0; i < byteString.length; i++) {\n ia[i] = byteString.charCodeAt(i);\n }\n\n return createBlob(ab, mimeType);\n };\n\n var getMimeTypeFromBase64DataURI = function getMimeTypeFromBase64DataURI(dataURI) {\n return (/^data:(.+);/.exec(dataURI) || [])[1] || null;\n };\n\n var getBase64DataFromBase64DataURI = function getBase64DataFromBase64DataURI(dataURI) {\n // get data part of string (remove data:image/jpeg...,)\n var data = dataURI.split(',')[1];\n\n // remove any whitespace as that causes InvalidCharacterError in IE\n return data.replace(/\\s/g, '');\n };\n\n var getByteStringFromBase64DataURI = function getByteStringFromBase64DataURI(dataURI) {\n return atob(getBase64DataFromBase64DataURI(dataURI));\n };\n\n var getBlobFromBase64DataURI = function getBlobFromBase64DataURI(dataURI) {\n var mimeType = getMimeTypeFromBase64DataURI(dataURI);\n var byteString = getByteStringFromBase64DataURI(dataURI);\n\n return getBlobFromByteStringWithMimeType(byteString, mimeType);\n };\n\n var getFileFromBase64DataURI = function getFileFromBase64DataURI(dataURI, filename, extension) {\n return getFileFromBlob(getBlobFromBase64DataURI(dataURI), filename, null, extension);\n };\n\n var getFileNameFromHeader = function getFileNameFromHeader(header) {\n // test if is content disposition header, if not exit\n if (!/^content-disposition:/i.test(header)) return null;\n\n // get filename parts\n var matches = header\n .split(/filename=|filename\\*=.+''/)\n .splice(1)\n .map(function(name) {\n return name.trim().replace(/^[\"']|[;\"']{0,2}$/g, '');\n })\n .filter(function(name) {\n return name.length;\n });\n\n return matches.length ? decodeURI(matches[matches.length - 1]) : null;\n };\n\n var getFileSizeFromHeader = function getFileSizeFromHeader(header) {\n if (/content-length:/i.test(header)) {\n var size = header.match(/[0-9]+/)[0];\n return size ? parseInt(size, 10) : null;\n }\n return null;\n };\n\n var getTranfserIdFromHeader = function getTranfserIdFromHeader(header) {\n if (/x-content-transfer-id:/i.test(header)) {\n var id = (header.split(':')[1] || '').trim();\n return id || null;\n }\n return null;\n };\n\n var getFileInfoFromHeaders = function getFileInfoFromHeaders(headers) {\n var info = {\n source: null,\n name: null,\n size: null,\n };\n\n var rows = headers.split('\\n');\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n try {\n for (\n var _iterator = rows[Symbol.iterator](), _step;\n !(_iteratorNormalCompletion = (_step = _iterator.next()).done);\n _iteratorNormalCompletion = true\n ) {\n var header = _step.value;\n\n var name = getFileNameFromHeader(header);\n if (name) {\n info.name = name;\n continue;\n }\n\n var size = getFileSizeFromHeader(header);\n if (size) {\n info.size = size;\n continue;\n }\n\n var source = getTranfserIdFromHeader(header);\n if (source) {\n info.source = source;\n continue;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return info;\n };\n\n var createFileLoader = function createFileLoader(fetchFn) {\n var state = {\n source: null,\n complete: false,\n progress: 0,\n size: null,\n timestamp: null,\n duration: 0,\n request: null,\n };\n\n var getProgress = function getProgress() {\n return state.progress;\n };\n var abort = function abort() {\n if (state.request && state.request.abort) {\n state.request.abort();\n }\n };\n\n // load source\n var load = function load() {\n // get quick reference\n var source = state.source;\n\n api.fire('init', source);\n\n // Load Files\n if (source instanceof File) {\n api.fire('load', source);\n } else if (source instanceof Blob) {\n // Load blobs, set default name to current date\n api.fire('load', getFileFromBlob(source, source.name));\n } else if (isBase64DataURI(source)) {\n // Load base 64, set default name to current date\n api.fire('load', getFileFromBase64DataURI(source));\n } else {\n // Deal as if is external URL, let's load it!\n loadURL(source);\n }\n };\n\n // loads a url\n var loadURL = function loadURL(url) {\n // is remote url and no fetch method supplied\n if (!fetchFn) {\n api.fire('error', {\n type: 'error',\n body: \"Can't load URL\",\n code: 400,\n });\n\n return;\n }\n\n // set request start\n state.timestamp = Date.now();\n\n // load file\n state.request = fetchFn(\n url,\n function(response) {\n // update duration\n state.duration = Date.now() - state.timestamp;\n\n // done!\n state.complete = true;\n\n // turn blob response into a file\n if (response instanceof Blob) {\n response = getFileFromBlob(\n response,\n response.name || getFilenameFromURL(url)\n );\n }\n\n api.fire(\n 'load',\n // if has received blob, we go with blob, if no response, we return null\n response instanceof Blob ? response : response ? response.body : null\n );\n },\n function(error) {\n api.fire(\n 'error',\n typeof error === 'string'\n ? {\n type: 'error',\n code: 0,\n body: error,\n }\n : error\n );\n },\n function(computable, current, total) {\n // collected some meta data already\n if (total) {\n state.size = total;\n }\n\n // update duration\n state.duration = Date.now() - state.timestamp;\n\n // if we can't compute progress, we're not going to fire progress events\n if (!computable) {\n state.progress = null;\n return;\n }\n\n // update progress percentage\n state.progress = current / total;\n\n // expose\n api.fire('progress', state.progress);\n },\n function() {\n api.fire('abort');\n },\n function(response) {\n var fileinfo = getFileInfoFromHeaders(\n typeof response === 'string' ? response : response.headers\n );\n api.fire('meta', {\n size: state.size || fileinfo.size,\n filename: fileinfo.name,\n source: fileinfo.source,\n });\n }\n );\n };\n\n var api = Object.assign({}, on(), {\n setSource: function setSource(source) {\n return (state.source = source);\n },\n getProgress: getProgress, // file load progress\n abort: abort, // abort file load\n load: load, // start load\n });\n\n return api;\n };\n\n var isGet = function isGet(method) {\n return /GET|HEAD/.test(method);\n };\n\n var sendRequest = function sendRequest(data, url, options) {\n var api = {\n onheaders: function onheaders() {},\n onprogress: function onprogress() {},\n onload: function onload() {},\n ontimeout: function ontimeout() {},\n onerror: function onerror() {},\n onabort: function onabort() {},\n abort: function abort() {\n aborted = true;\n xhr.abort();\n },\n };\n\n // timeout identifier, only used when timeout is defined\n var aborted = false;\n var headersReceived = false;\n\n // set default options\n options = Object.assign(\n {\n method: 'POST',\n headers: {},\n withCredentials: false,\n },\n options\n );\n\n // encode url\n url = encodeURI(url);\n\n // if method is GET, add any received data to url\n\n if (isGet(options.method) && data) {\n url =\n '' +\n url +\n encodeURIComponent(typeof data === 'string' ? data : JSON.stringify(data));\n }\n\n // create request\n var xhr = new XMLHttpRequest();\n\n // progress of load\n var process = isGet(options.method) ? xhr : xhr.upload;\n process.onprogress = function(e) {\n // no progress event when aborted ( onprogress is called once after abort() )\n if (aborted) {\n return;\n }\n\n api.onprogress(e.lengthComputable, e.loaded, e.total);\n };\n\n // tries to get header info to the app as fast as possible\n xhr.onreadystatechange = function() {\n // not interesting in these states ('unsent' and 'openend' as they don't give us any additional info)\n if (xhr.readyState < 2) {\n return;\n }\n\n // no server response\n if (xhr.readyState === 4 && xhr.status === 0) {\n return;\n }\n\n if (headersReceived) {\n return;\n }\n\n headersReceived = true;\n\n // we've probably received some useful data in response headers\n api.onheaders(xhr);\n };\n\n // load successful\n xhr.onload = function() {\n // is classified as valid response\n if (xhr.status >= 200 && xhr.status < 300) {\n api.onload(xhr);\n } else {\n api.onerror(xhr);\n }\n };\n\n // error during load\n xhr.onerror = function() {\n return api.onerror(xhr);\n };\n\n // request aborted\n xhr.onabort = function() {\n aborted = true;\n api.onabort();\n };\n\n // request timeout\n xhr.ontimeout = function() {\n return api.ontimeout(xhr);\n };\n\n // open up open up!\n xhr.open(options.method, url, true);\n\n // set timeout if defined (do it after open so IE11 plays ball)\n if (isInt(options.timeout)) {\n xhr.timeout = options.timeout;\n }\n\n // add headers\n Object.keys(options.headers).forEach(function(key) {\n var value = unescape(encodeURIComponent(options.headers[key]));\n xhr.setRequestHeader(key, value);\n });\n\n // set type of response\n if (options.responseType) {\n xhr.responseType = options.responseType;\n }\n\n // set credentials\n if (options.withCredentials) {\n xhr.withCredentials = true;\n }\n\n // let's send our data\n xhr.send(data);\n\n return api;\n };\n\n var createResponse = function createResponse(type, code, body, headers) {\n return {\n type: type,\n code: code,\n body: body,\n headers: headers,\n };\n };\n\n var createTimeoutResponse = function createTimeoutResponse(cb) {\n return function(xhr) {\n cb(createResponse('error', 0, 'Timeout', xhr.getAllResponseHeaders()));\n };\n };\n\n var hasQS = function hasQS(str) {\n return /\\?/.test(str);\n };\n var buildURL = function buildURL() {\n var url = '';\n for (var _len = arguments.length, parts = new Array(_len), _key = 0; _key < _len; _key++) {\n parts[_key] = arguments[_key];\n }\n parts.forEach(function(part) {\n url += hasQS(url) && hasQS(part) ? part.replace(/\\?/, '&') : part;\n });\n return url;\n };\n\n var createFetchFunction = function createFetchFunction() {\n var apiUrl = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var action = arguments.length > 1 ? arguments[1] : undefined;\n // custom handler (should also handle file, load, error, progress and abort)\n if (typeof action === 'function') {\n return action;\n }\n\n // no action supplied\n if (!action || !isString(action.url)) {\n return null;\n }\n\n // set onload hanlder\n var onload =\n action.onload ||\n function(res) {\n return res;\n };\n var onerror =\n action.onerror ||\n function(res) {\n return null;\n };\n\n // internal handler\n return function(url, load, error, progress, abort, headers) {\n // do local or remote request based on if the url is external\n var request = sendRequest(\n url,\n buildURL(apiUrl, action.url),\n Object.assign({}, action, {\n responseType: 'blob',\n })\n );\n\n request.onload = function(xhr) {\n // get headers\n var headers = xhr.getAllResponseHeaders();\n\n // get filename\n var filename = getFileInfoFromHeaders(headers).name || getFilenameFromURL(url);\n\n // create response\n load(\n createResponse(\n 'load',\n xhr.status,\n action.method === 'HEAD'\n ? null\n : getFileFromBlob(onload(xhr.response), filename),\n headers\n )\n );\n };\n\n request.onerror = function(xhr) {\n error(\n createResponse(\n 'error',\n xhr.status,\n onerror(xhr.response) || xhr.statusText,\n xhr.getAllResponseHeaders()\n )\n );\n };\n\n request.onheaders = function(xhr) {\n headers(createResponse('headers', xhr.status, null, xhr.getAllResponseHeaders()));\n };\n\n request.ontimeout = createTimeoutResponse(error);\n request.onprogress = progress;\n request.onabort = abort;\n\n // should return request\n return request;\n };\n };\n\n var ChunkStatus = {\n QUEUED: 0,\n COMPLETE: 1,\n PROCESSING: 2,\n ERROR: 3,\n WAITING: 4,\n };\n\n /*\n function signature:\n (file, metadata, load, error, progress, abort, transfer, options) => {\n return {\n abort:() => {}\n }\n }\n */\n\n // apiUrl, action, name, file, metadata, load, error, progress, abort, transfer, options\n var processFileChunked = function processFileChunked(\n apiUrl,\n action,\n name,\n file,\n metadata,\n load,\n error,\n progress,\n abort,\n transfer,\n options\n ) {\n // all chunks\n var chunks = [];\n var chunkTransferId = options.chunkTransferId,\n chunkServer = options.chunkServer,\n chunkSize = options.chunkSize,\n chunkRetryDelays = options.chunkRetryDelays;\n\n // default state\n var state = {\n serverId: chunkTransferId,\n aborted: false,\n };\n\n // set onload handlers\n var ondata =\n action.ondata ||\n function(fd) {\n return fd;\n };\n var onload =\n action.onload ||\n function(xhr, method) {\n return method === 'HEAD' ? xhr.getResponseHeader('Upload-Offset') : xhr.response;\n };\n var onerror =\n action.onerror ||\n function(res) {\n return null;\n };\n\n // create server hook\n var requestTransferId = function requestTransferId(cb) {\n var formData = new FormData();\n\n // add metadata under same name\n if (isObject(metadata)) formData.append(name, JSON.stringify(metadata));\n\n var headers =\n typeof action.headers === 'function'\n ? action.headers(file, metadata)\n : Object.assign({}, action.headers, {\n 'Upload-Length': file.size,\n });\n\n var requestParams = Object.assign({}, action, {\n headers: headers,\n });\n\n // send request object\n var request = sendRequest(\n ondata(formData),\n buildURL(apiUrl, action.url),\n requestParams\n );\n\n request.onload = function(xhr) {\n return cb(onload(xhr, requestParams.method));\n };\n\n request.onerror = function(xhr) {\n return error(\n createResponse(\n 'error',\n xhr.status,\n onerror(xhr.response) || xhr.statusText,\n xhr.getAllResponseHeaders()\n )\n );\n };\n\n request.ontimeout = createTimeoutResponse(error);\n };\n\n var requestTransferOffset = function requestTransferOffset(cb) {\n var requestUrl = buildURL(apiUrl, chunkServer.url, state.serverId);\n\n var headers =\n typeof action.headers === 'function'\n ? action.headers(state.serverId)\n : Object.assign({}, action.headers);\n\n var requestParams = {\n headers: headers,\n method: 'HEAD',\n };\n\n var request = sendRequest(null, requestUrl, requestParams);\n\n request.onload = function(xhr) {\n return cb(onload(xhr, requestParams.method));\n };\n\n request.onerror = function(xhr) {\n return error(\n createResponse(\n 'error',\n xhr.status,\n onerror(xhr.response) || xhr.statusText,\n xhr.getAllResponseHeaders()\n )\n );\n };\n\n request.ontimeout = createTimeoutResponse(error);\n };\n\n // create chunks\n var lastChunkIndex = Math.floor(file.size / chunkSize);\n for (var i = 0; i <= lastChunkIndex; i++) {\n var offset = i * chunkSize;\n var data = file.slice(offset, offset + chunkSize, 'application/offset+octet-stream');\n chunks[i] = {\n index: i,\n size: data.size,\n offset: offset,\n data: data,\n file: file,\n progress: 0,\n retries: _toConsumableArray(chunkRetryDelays),\n status: ChunkStatus.QUEUED,\n error: null,\n request: null,\n timeout: null,\n };\n }\n\n var completeProcessingChunks = function completeProcessingChunks() {\n return load(state.serverId);\n };\n\n var canProcessChunk = function canProcessChunk(chunk) {\n return chunk.status === ChunkStatus.QUEUED || chunk.status === ChunkStatus.ERROR;\n };\n\n var processChunk = function processChunk(chunk) {\n // processing is paused, wait here\n if (state.aborted) return;\n\n // get next chunk to process\n chunk = chunk || chunks.find(canProcessChunk);\n\n // no more chunks to process\n if (!chunk) {\n // all done?\n if (\n chunks.every(function(chunk) {\n return chunk.status === ChunkStatus.COMPLETE;\n })\n ) {\n completeProcessingChunks();\n }\n\n // no chunk to handle\n return;\n }\n\n // now processing this chunk\n chunk.status = ChunkStatus.PROCESSING;\n chunk.progress = null;\n\n // allow parsing of formdata\n var ondata =\n chunkServer.ondata ||\n function(fd) {\n return fd;\n };\n var onerror =\n chunkServer.onerror ||\n function(res) {\n return null;\n };\n\n // send request object\n var requestUrl = buildURL(apiUrl, chunkServer.url, state.serverId);\n\n var headers =\n typeof chunkServer.headers === 'function'\n ? chunkServer.headers(chunk)\n : Object.assign({}, chunkServer.headers, {\n 'Content-Type': 'application/offset+octet-stream',\n 'Upload-Offset': chunk.offset,\n 'Upload-Length': file.size,\n 'Upload-Name': file.name,\n });\n\n var request = (chunk.request = sendRequest(\n ondata(chunk.data),\n requestUrl,\n Object.assign({}, chunkServer, {\n headers: headers,\n })\n ));\n\n request.onload = function() {\n // done!\n chunk.status = ChunkStatus.COMPLETE;\n\n // remove request reference\n chunk.request = null;\n\n // start processing more chunks\n processChunks();\n };\n\n request.onprogress = function(lengthComputable, loaded, total) {\n chunk.progress = lengthComputable ? loaded : null;\n updateTotalProgress();\n };\n\n request.onerror = function(xhr) {\n chunk.status = ChunkStatus.ERROR;\n chunk.request = null;\n chunk.error = onerror(xhr.response) || xhr.statusText;\n if (!retryProcessChunk(chunk)) {\n error(\n createResponse(\n 'error',\n xhr.status,\n onerror(xhr.response) || xhr.statusText,\n xhr.getAllResponseHeaders()\n )\n );\n }\n };\n\n request.ontimeout = function(xhr) {\n chunk.status = ChunkStatus.ERROR;\n chunk.request = null;\n if (!retryProcessChunk(chunk)) {\n createTimeoutResponse(error)(xhr);\n }\n };\n\n request.onabort = function() {\n chunk.status = ChunkStatus.QUEUED;\n chunk.request = null;\n abort();\n };\n };\n\n var retryProcessChunk = function retryProcessChunk(chunk) {\n // no more retries left\n if (chunk.retries.length === 0) return false;\n\n // new retry\n chunk.status = ChunkStatus.WAITING;\n clearTimeout(chunk.timeout);\n chunk.timeout = setTimeout(function() {\n processChunk(chunk);\n }, chunk.retries.shift());\n\n // we're going to retry\n return true;\n };\n\n var updateTotalProgress = function updateTotalProgress() {\n // calculate total progress fraction\n var totalBytesTransfered = chunks.reduce(function(p, chunk) {\n if (p === null || chunk.progress === null) return null;\n return p + chunk.progress;\n }, 0);\n\n // can't compute progress\n if (totalBytesTransfered === null) return progress(false, 0, 0);\n\n // calculate progress values\n var totalSize = chunks.reduce(function(total, chunk) {\n return total + chunk.size;\n }, 0);\n\n // can update progress indicator\n progress(true, totalBytesTransfered, totalSize);\n };\n\n // process new chunks\n var processChunks = function processChunks() {\n var totalProcessing = chunks.filter(function(chunk) {\n return chunk.status === ChunkStatus.PROCESSING;\n }).length;\n if (totalProcessing >= 1) return;\n processChunk();\n };\n\n var abortChunks = function abortChunks() {\n chunks.forEach(function(chunk) {\n clearTimeout(chunk.timeout);\n if (chunk.request) {\n chunk.request.abort();\n }\n });\n };\n\n // let's go!\n if (!state.serverId) {\n requestTransferId(function(serverId) {\n // stop here if aborted, might have happened in between request and callback\n if (state.aborted) return;\n\n // pass back to item so we can use it if something goes wrong\n transfer(serverId);\n\n // store internally\n state.serverId = serverId;\n processChunks();\n });\n } else {\n requestTransferOffset(function(offset) {\n // stop here if aborted, might have happened in between request and callback\n if (state.aborted) return;\n\n // mark chunks with lower offset as complete\n chunks\n .filter(function(chunk) {\n return chunk.offset < offset;\n })\n .forEach(function(chunk) {\n chunk.status = ChunkStatus.COMPLETE;\n chunk.progress = chunk.size;\n });\n\n // continue processing\n processChunks();\n });\n }\n\n return {\n abort: function abort() {\n state.aborted = true;\n abortChunks();\n },\n };\n };\n\n /*\n function signature:\n (file, metadata, load, error, progress, abort) => {\n return {\n abort:() => {}\n }\n }\n */\n var createFileProcessorFunction = function createFileProcessorFunction(\n apiUrl,\n action,\n name,\n options\n ) {\n return function(file, metadata, load, error, progress, abort, transfer) {\n // no file received\n if (!file) return;\n\n // if was passed a file, and we can chunk it, exit here\n var canChunkUpload = options.chunkUploads;\n var shouldChunkUpload = canChunkUpload && file.size > options.chunkSize;\n var willChunkUpload = canChunkUpload && (shouldChunkUpload || options.chunkForce);\n if (file instanceof Blob && willChunkUpload)\n return processFileChunked(\n apiUrl,\n action,\n name,\n file,\n metadata,\n load,\n error,\n progress,\n abort,\n transfer,\n options\n );\n\n // set handlers\n var ondata =\n action.ondata ||\n function(fd) {\n return fd;\n };\n var onload =\n action.onload ||\n function(res) {\n return res;\n };\n var onerror =\n action.onerror ||\n function(res) {\n return null;\n };\n\n var headers =\n typeof action.headers === 'function'\n ? action.headers(file, metadata) || {}\n : Object.assign(\n {},\n\n action.headers\n );\n\n var requestParams = Object.assign({}, action, {\n headers: headers,\n });\n\n // create formdata object\n var formData = new FormData();\n\n // add metadata under same name\n if (isObject(metadata)) {\n formData.append(name, JSON.stringify(metadata));\n }\n\n // Turn into an array of objects so no matter what the input, we can handle it the same way\n (file instanceof Blob ? [{ name: null, file: file }] : file).forEach(function(item) {\n formData.append(\n name,\n item.file,\n item.name === null ? item.file.name : '' + item.name + item.file.name\n );\n });\n\n // send request object\n var request = sendRequest(\n ondata(formData),\n buildURL(apiUrl, action.url),\n requestParams\n );\n request.onload = function(xhr) {\n load(\n createResponse(\n 'load',\n xhr.status,\n onload(xhr.response),\n xhr.getAllResponseHeaders()\n )\n );\n };\n\n request.onerror = function(xhr) {\n error(\n createResponse(\n 'error',\n xhr.status,\n onerror(xhr.response) || xhr.statusText,\n xhr.getAllResponseHeaders()\n )\n );\n };\n\n request.ontimeout = createTimeoutResponse(error);\n request.onprogress = progress;\n request.onabort = abort;\n\n // should return request\n return request;\n };\n };\n\n var createProcessorFunction = function createProcessorFunction() {\n var apiUrl = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var action = arguments.length > 1 ? arguments[1] : undefined;\n var name = arguments.length > 2 ? arguments[2] : undefined;\n var options = arguments.length > 3 ? arguments[3] : undefined;\n\n // custom handler (should also handle file, load, error, progress and abort)\n if (typeof action === 'function')\n return function() {\n for (\n var _len = arguments.length, params = new Array(_len), _key = 0;\n _key < _len;\n _key++\n ) {\n params[_key] = arguments[_key];\n }\n return action.apply(void 0, [name].concat(params, [options]));\n };\n\n // no action supplied\n if (!action || !isString(action.url)) return null;\n\n // internal handler\n return createFileProcessorFunction(apiUrl, action, name, options);\n };\n\n /*\n function signature:\n (uniqueFileId, load, error) => { }\n */\n var createRevertFunction = function createRevertFunction() {\n var apiUrl = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var action = arguments.length > 1 ? arguments[1] : undefined;\n // is custom implementation\n if (typeof action === 'function') {\n return action;\n }\n\n // no action supplied, return stub function, interface will work, but file won't be removed\n if (!action || !isString(action.url)) {\n return function(uniqueFileId, load) {\n return load();\n };\n }\n\n // set onload hanlder\n var onload =\n action.onload ||\n function(res) {\n return res;\n };\n var onerror =\n action.onerror ||\n function(res) {\n return null;\n };\n\n // internal implementation\n return function(uniqueFileId, load, error) {\n var request = sendRequest(\n uniqueFileId,\n apiUrl + action.url,\n action // contains method, headers and withCredentials properties\n );\n request.onload = function(xhr) {\n load(\n createResponse(\n 'load',\n xhr.status,\n onload(xhr.response),\n xhr.getAllResponseHeaders()\n )\n );\n };\n\n request.onerror = function(xhr) {\n error(\n createResponse(\n 'error',\n xhr.status,\n onerror(xhr.response) || xhr.statusText,\n xhr.getAllResponseHeaders()\n )\n );\n };\n\n request.ontimeout = createTimeoutResponse(error);\n\n return request;\n };\n };\n\n var getRandomNumber = function getRandomNumber() {\n var min = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var max = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n return min + Math.random() * (max - min);\n };\n\n var createPerceivedPerformanceUpdater = function createPerceivedPerformanceUpdater(cb) {\n var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1000;\n var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var tickMin = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 25;\n var tickMax = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 250;\n var timeout = null;\n var start = Date.now();\n\n var tick = function tick() {\n var runtime = Date.now() - start;\n var delay = getRandomNumber(tickMin, tickMax);\n\n if (runtime + delay > duration) {\n delay = runtime + delay - duration;\n }\n\n var progress = runtime / duration;\n if (progress >= 1 || document.hidden) {\n cb(1);\n return;\n }\n\n cb(progress);\n\n timeout = setTimeout(tick, delay);\n };\n\n if (duration > 0) tick();\n\n return {\n clear: function clear() {\n clearTimeout(timeout);\n },\n };\n };\n\n var createFileProcessor = function createFileProcessor(processFn, options) {\n var state = {\n complete: false,\n perceivedProgress: 0,\n perceivedPerformanceUpdater: null,\n progress: null,\n timestamp: null,\n perceivedDuration: 0,\n duration: 0,\n request: null,\n response: null,\n };\n var allowMinimumUploadDuration = options.allowMinimumUploadDuration;\n\n var process = function process(file, metadata) {\n var progressFn = function progressFn() {\n // we've not yet started the real download, stop here\n // the request might not go through, for instance, there might be some server trouble\n // if state.progress is null, the server does not allow computing progress and we show the spinner instead\n if (state.duration === 0 || state.progress === null) return;\n\n // as we're now processing, fire the progress event\n api.fire('progress', api.getProgress());\n };\n\n var completeFn = function completeFn() {\n state.complete = true;\n api.fire('load-perceived', state.response.body);\n };\n\n // let's start processing\n api.fire('start');\n\n // set request start\n state.timestamp = Date.now();\n\n // create perceived performance progress indicator\n state.perceivedPerformanceUpdater = createPerceivedPerformanceUpdater(\n function(progress) {\n state.perceivedProgress = progress;\n state.perceivedDuration = Date.now() - state.timestamp;\n\n progressFn();\n\n // if fake progress is done, and a response has been received,\n // and we've not yet called the complete method\n if (state.response && state.perceivedProgress === 1 && !state.complete) {\n // we done!\n completeFn();\n }\n },\n // random delay as in a list of files you start noticing\n // files uploading at the exact same speed\n allowMinimumUploadDuration ? getRandomNumber(750, 1500) : 0\n );\n\n // remember request so we can abort it later\n state.request = processFn(\n // the file to process\n file,\n\n // the metadata to send along\n metadata,\n\n // callbacks (load, error, progress, abort, transfer)\n // load expects the body to be a server id if\n // you want to make use of revert\n function(response) {\n // we put the response in state so we can access\n // it outside of this method\n state.response = isObject(response)\n ? response\n : {\n type: 'load',\n code: 200,\n body: '' + response,\n headers: {},\n };\n\n // update duration\n state.duration = Date.now() - state.timestamp;\n\n // force progress to 1 as we're now done\n state.progress = 1;\n\n // actual load is done let's share results\n api.fire('load', state.response.body);\n\n // we are really done\n // if perceived progress is 1 ( wait for perceived progress to complete )\n // or if server does not support progress ( null )\n if (\n !allowMinimumUploadDuration ||\n (allowMinimumUploadDuration && state.perceivedProgress === 1)\n ) {\n completeFn();\n }\n },\n\n // error is expected to be an object with type, code, body\n function(error) {\n // cancel updater\n state.perceivedPerformanceUpdater.clear();\n\n // update others about this error\n api.fire(\n 'error',\n isObject(error)\n ? error\n : {\n type: 'error',\n code: 0,\n body: '' + error,\n }\n );\n },\n\n // actual processing progress\n function(computable, current, total) {\n // update actual duration\n state.duration = Date.now() - state.timestamp;\n\n // update actual progress\n state.progress = computable ? current / total : null;\n\n progressFn();\n },\n\n // abort does not expect a value\n function() {\n // stop updater\n state.perceivedPerformanceUpdater.clear();\n\n // fire the abort event so we can switch visuals\n api.fire('abort', state.response ? state.response.body : null);\n },\n\n // register the id for this transfer\n function(transferId) {\n api.fire('transfer', transferId);\n }\n );\n };\n\n var abort = function abort() {\n // no request running, can't abort\n if (!state.request) return;\n\n // stop updater\n state.perceivedPerformanceUpdater.clear();\n\n // abort actual request\n if (state.request.abort) state.request.abort();\n\n // if has response object, we've completed the request\n state.complete = true;\n };\n\n var reset = function reset() {\n abort();\n state.complete = false;\n state.perceivedProgress = 0;\n state.progress = 0;\n state.timestamp = null;\n state.perceivedDuration = 0;\n state.duration = 0;\n state.request = null;\n state.response = null;\n };\n\n var getProgress = allowMinimumUploadDuration\n ? function() {\n return state.progress ? Math.min(state.progress, state.perceivedProgress) : null;\n }\n : function() {\n return state.progress || null;\n };\n\n var getDuration = allowMinimumUploadDuration\n ? function() {\n return Math.min(state.duration, state.perceivedDuration);\n }\n : function() {\n return state.duration;\n };\n\n var api = Object.assign({}, on(), {\n process: process, // start processing file\n abort: abort, // abort active process request\n getProgress: getProgress,\n getDuration: getDuration,\n reset: reset,\n });\n\n return api;\n };\n\n var getFilenameWithoutExtension = function getFilenameWithoutExtension(name) {\n return name.substring(0, name.lastIndexOf('.')) || name;\n };\n\n var createFileStub = function createFileStub(source) {\n var data = [source.name, source.size, source.type];\n\n // is blob or base64, then we need to set the name\n if (source instanceof Blob || isBase64DataURI(source)) {\n data[0] = source.name || getDateString();\n } else if (isBase64DataURI(source)) {\n // if is base64 data uri we need to determine the average size and type\n data[1] = source.length;\n data[2] = getMimeTypeFromBase64DataURI(source);\n } else if (isString(source)) {\n // url\n data[0] = getFilenameFromURL(source);\n data[1] = 0;\n data[2] = 'application/octet-stream';\n }\n\n return {\n name: data[0],\n size: data[1],\n type: data[2],\n };\n };\n\n var isFile = function isFile(value) {\n return !!(value instanceof File || (value instanceof Blob && value.name));\n };\n\n var deepCloneObject = function deepCloneObject(src) {\n if (!isObject(src)) return src;\n var target = isArray(src) ? [] : {};\n for (var key in src) {\n if (!src.hasOwnProperty(key)) continue;\n var v = src[key];\n target[key] = v && isObject(v) ? deepCloneObject(v) : v;\n }\n return target;\n };\n\n var createItem = function createItem() {\n var origin = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n var serverFileReference =\n arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var file = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n // unique id for this item, is used to identify the item across views\n var id = getUniqueId();\n\n /**\n * Internal item state\n */\n var state = {\n // is archived\n archived: false,\n\n // if is frozen, no longer fires events\n frozen: false,\n\n // removed from view\n released: false,\n\n // original source\n source: null,\n\n // file model reference\n file: file,\n\n // id of file on server\n serverFileReference: serverFileReference,\n\n // id of file transfer on server\n transferId: null,\n\n // is aborted\n processingAborted: false,\n\n // current item status\n status: serverFileReference ? ItemStatus.PROCESSING_COMPLETE : ItemStatus.INIT,\n\n // active processes\n activeLoader: null,\n activeProcessor: null,\n };\n\n // callback used when abort processing is called to link back to the resolve method\n var abortProcessingRequestComplete = null;\n\n /**\n * Externally added item metadata\n */\n var metadata = {};\n\n // item data\n var setStatus = function setStatus(status) {\n return (state.status = status);\n };\n\n // fire event unless the item has been archived\n var fire = function fire(event) {\n if (state.released || state.frozen) return;\n for (\n var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1;\n _key < _len;\n _key++\n ) {\n params[_key - 1] = arguments[_key];\n }\n api.fire.apply(api, [event].concat(params));\n };\n\n // file data\n var getFileExtension = function getFileExtension() {\n return getExtensionFromFilename(state.file.name);\n };\n var getFileType = function getFileType() {\n return state.file.type;\n };\n var getFileSize = function getFileSize() {\n return state.file.size;\n };\n var getFile = function getFile() {\n return state.file;\n };\n\n //\n // logic to load a file\n //\n var load = function load(source, loader, onload) {\n // remember the original item source\n state.source = source;\n\n // source is known\n api.fireSync('init');\n\n // file stub is already there\n if (state.file) {\n api.fireSync('load-skip');\n return;\n }\n\n // set a stub file object while loading the actual data\n state.file = createFileStub(source);\n\n // starts loading\n loader.on('init', function() {\n fire('load-init');\n });\n\n // we'eve received a size indication, let's update the stub\n loader.on('meta', function(meta) {\n // set size of file stub\n state.file.size = meta.size;\n\n // set name of file stub\n state.file.filename = meta.filename;\n\n // if has received source, we done\n if (meta.source) {\n origin = FileOrigin.LIMBO;\n state.serverFileReference = meta.source;\n state.status = ItemStatus.PROCESSING_COMPLETE;\n }\n\n // size has been updated\n fire('load-meta');\n });\n\n // the file is now loading we need to update the progress indicators\n loader.on('progress', function(progress) {\n setStatus(ItemStatus.LOADING);\n\n fire('load-progress', progress);\n });\n\n // an error was thrown while loading the file, we need to switch to error state\n loader.on('error', function(error) {\n setStatus(ItemStatus.LOAD_ERROR);\n\n fire('load-request-error', error);\n });\n\n // user or another process aborted the file load (cannot retry)\n loader.on('abort', function() {\n setStatus(ItemStatus.INIT);\n fire('load-abort');\n });\n\n // done loading\n loader.on('load', function(file) {\n // as we've now loaded the file the loader is no longer required\n state.activeLoader = null;\n\n // called when file has loaded succesfully\n var success = function success(result) {\n // set (possibly) transformed file\n state.file = isFile(result) ? result : state.file;\n\n // file received\n if (origin === FileOrigin.LIMBO && state.serverFileReference) {\n setStatus(ItemStatus.PROCESSING_COMPLETE);\n } else {\n setStatus(ItemStatus.IDLE);\n }\n\n fire('load');\n };\n\n var error = function error(result) {\n // set original file\n state.file = file;\n fire('load-meta');\n\n setStatus(ItemStatus.LOAD_ERROR);\n fire('load-file-error', result);\n };\n\n // if we already have a server file reference, we don't need to call the onload method\n if (state.serverFileReference) {\n success(file);\n return;\n }\n\n // no server id, let's give this file the full treatment\n onload(file, success, error);\n });\n\n // set loader source data\n loader.setSource(source);\n\n // set as active loader\n state.activeLoader = loader;\n\n // load the source data\n loader.load();\n };\n\n var retryLoad = function retryLoad() {\n if (!state.activeLoader) {\n return;\n }\n state.activeLoader.load();\n };\n\n var abortLoad = function abortLoad() {\n if (state.activeLoader) {\n state.activeLoader.abort();\n return;\n }\n setStatus(ItemStatus.INIT);\n fire('load-abort');\n };\n\n //\n // logic to process a file\n //\n var process = function process(processor, onprocess) {\n // processing was aborted\n if (state.processingAborted) {\n state.processingAborted = false;\n return;\n }\n\n // now processing\n setStatus(ItemStatus.PROCESSING);\n\n // reset abort callback\n abortProcessingRequestComplete = null;\n\n // if no file loaded we'll wait for the load event\n if (!(state.file instanceof Blob)) {\n api.on('load', function() {\n process(processor, onprocess);\n });\n return;\n }\n\n // setup processor\n processor.on('load', function(serverFileReference) {\n // need this id to be able to revert the upload\n state.transferId = null;\n state.serverFileReference = serverFileReference;\n });\n\n // register transfer id\n processor.on('transfer', function(transferId) {\n // need this id to be able to revert the upload\n state.transferId = transferId;\n });\n\n processor.on('load-perceived', function(serverFileReference) {\n // no longer required\n state.activeProcessor = null;\n\n // need this id to be able to rever the upload\n state.transferId = null;\n state.serverFileReference = serverFileReference;\n\n setStatus(ItemStatus.PROCESSING_COMPLETE);\n fire('process-complete', serverFileReference);\n });\n\n processor.on('start', function() {\n fire('process-start');\n });\n\n processor.on('error', function(error) {\n state.activeProcessor = null;\n setStatus(ItemStatus.PROCESSING_ERROR);\n fire('process-error', error);\n });\n\n processor.on('abort', function(serverFileReference) {\n state.activeProcessor = null;\n\n // if file was uploaded but processing was cancelled during perceived processor time store file reference\n state.serverFileReference = serverFileReference;\n\n setStatus(ItemStatus.IDLE);\n fire('process-abort');\n\n // has timeout so doesn't interfere with remove action\n if (abortProcessingRequestComplete) {\n abortProcessingRequestComplete();\n }\n });\n\n processor.on('progress', function(progress) {\n fire('process-progress', progress);\n });\n\n // when successfully transformed\n var success = function success(file) {\n // if was archived in the mean time, don't process\n if (state.archived) return;\n\n // process file!\n processor.process(file, Object.assign({}, metadata));\n };\n\n // something went wrong during transform phase\n var error = console.error;\n\n // start processing the file\n onprocess(state.file, success, error);\n\n // set as active processor\n state.activeProcessor = processor;\n };\n\n var requestProcessing = function requestProcessing() {\n state.processingAborted = false;\n setStatus(ItemStatus.PROCESSING_QUEUED);\n };\n\n var abortProcessing = function abortProcessing() {\n return new Promise(function(resolve) {\n if (!state.activeProcessor) {\n state.processingAborted = true;\n\n setStatus(ItemStatus.IDLE);\n fire('process-abort');\n\n resolve();\n return;\n }\n\n abortProcessingRequestComplete = function abortProcessingRequestComplete() {\n resolve();\n };\n\n state.activeProcessor.abort();\n });\n };\n\n //\n // logic to revert a processed file\n //\n var revert = function revert(revertFileUpload, forceRevert) {\n return new Promise(function(resolve, reject) {\n // a completed upload will have a serverFileReference, a failed chunked upload where\n // getting a serverId succeeded but >=0 chunks have been uploaded will have transferId set\n var serverTransferId =\n state.serverFileReference !== null\n ? state.serverFileReference\n : state.transferId;\n\n // cannot revert without a server id for this process\n if (serverTransferId === null) {\n resolve();\n return;\n }\n\n // revert the upload (fire and forget)\n revertFileUpload(\n serverTransferId,\n function() {\n // reset file server id and transfer id as now it's not available on the server\n state.serverFileReference = null;\n state.transferId = null;\n resolve();\n },\n function(error) {\n // don't set error state when reverting is optional, it will always resolve\n if (!forceRevert) {\n resolve();\n return;\n }\n\n // oh no errors\n setStatus(ItemStatus.PROCESSING_REVERT_ERROR);\n fire('process-revert-error');\n reject(error);\n }\n );\n\n // fire event\n setStatus(ItemStatus.IDLE);\n fire('process-revert');\n });\n };\n\n // exposed methods\n var _setMetadata = function setMetadata(key, value, silent) {\n var keys = key.split('.');\n var root = keys[0];\n var last = keys.pop();\n var data = metadata;\n keys.forEach(function(key) {\n return (data = data[key]);\n });\n\n // compare old value against new value, if they're the same, we're not updating\n if (JSON.stringify(data[last]) === JSON.stringify(value)) return;\n\n // update value\n data[last] = value;\n\n // fire update\n fire('metadata-update', {\n key: root,\n value: metadata[root],\n silent: silent,\n });\n };\n\n var getMetadata = function getMetadata(key) {\n return deepCloneObject(key ? metadata[key] : metadata);\n };\n\n var api = Object.assign(\n {\n id: {\n get: function get() {\n return id;\n },\n },\n origin: {\n get: function get() {\n return origin;\n },\n set: function set(value) {\n return (origin = value);\n },\n },\n serverId: {\n get: function get() {\n return state.serverFileReference;\n },\n },\n transferId: {\n get: function get() {\n return state.transferId;\n },\n },\n status: {\n get: function get() {\n return state.status;\n },\n },\n filename: {\n get: function get() {\n return state.file.name;\n },\n },\n filenameWithoutExtension: {\n get: function get() {\n return getFilenameWithoutExtension(state.file.name);\n },\n },\n fileExtension: { get: getFileExtension },\n fileType: { get: getFileType },\n fileSize: { get: getFileSize },\n file: { get: getFile },\n relativePath: {\n get: function get() {\n return state.file._relativePath;\n },\n },\n\n source: {\n get: function get() {\n return state.source;\n },\n },\n\n getMetadata: getMetadata,\n setMetadata: function setMetadata(key, value, silent) {\n if (isObject(key)) {\n var data = key;\n Object.keys(data).forEach(function(key) {\n _setMetadata(key, data[key], value);\n });\n return key;\n }\n _setMetadata(key, value, silent);\n return value;\n },\n\n extend: function extend(name, handler) {\n return (itemAPI[name] = handler);\n },\n\n abortLoad: abortLoad,\n retryLoad: retryLoad,\n requestProcessing: requestProcessing,\n abortProcessing: abortProcessing,\n\n load: load,\n process: process,\n revert: revert,\n },\n\n on(),\n {\n freeze: function freeze() {\n return (state.frozen = true);\n },\n\n release: function release() {\n return (state.released = true);\n },\n released: {\n get: function get() {\n return state.released;\n },\n },\n\n archive: function archive() {\n return (state.archived = true);\n },\n archived: {\n get: function get() {\n return state.archived;\n },\n },\n }\n );\n\n // create it here instead of returning it instantly so we can extend it later\n var itemAPI = createObject(api);\n\n return itemAPI;\n };\n\n var getItemIndexByQuery = function getItemIndexByQuery(items, query) {\n // just return first index\n if (isEmpty(query)) {\n return 0;\n }\n\n // invalid queries\n if (!isString(query)) {\n return -1;\n }\n\n // return item by id (or -1 if not found)\n return items.findIndex(function(item) {\n return item.id === query;\n });\n };\n\n var getItemById = function getItemById(items, itemId) {\n var index = getItemIndexByQuery(items, itemId);\n if (index < 0) {\n return;\n }\n return items[index] || null;\n };\n\n var fetchBlob = function fetchBlob(url, load, error, progress, abort, headers) {\n var request = sendRequest(null, url, {\n method: 'GET',\n responseType: 'blob',\n });\n\n request.onload = function(xhr) {\n // get headers\n var headers = xhr.getAllResponseHeaders();\n\n // get filename\n var filename = getFileInfoFromHeaders(headers).name || getFilenameFromURL(url);\n\n // create response\n load(\n createResponse('load', xhr.status, getFileFromBlob(xhr.response, filename), headers)\n );\n };\n\n request.onerror = function(xhr) {\n error(createResponse('error', xhr.status, xhr.statusText, xhr.getAllResponseHeaders()));\n };\n\n request.onheaders = function(xhr) {\n headers(createResponse('headers', xhr.status, null, xhr.getAllResponseHeaders()));\n };\n\n request.ontimeout = createTimeoutResponse(error);\n request.onprogress = progress;\n request.onabort = abort;\n\n // should return request\n return request;\n };\n\n var getDomainFromURL = function getDomainFromURL(url) {\n if (url.indexOf('//') === 0) {\n url = location.protocol + url;\n }\n return url\n .toLowerCase()\n .replace('blob:', '')\n .replace(/([a-z])?:\\/\\//, '$1')\n .split('/')[0];\n };\n\n var isExternalURL = function isExternalURL(url) {\n return (\n (url.indexOf(':') > -1 || url.indexOf('//') > -1) &&\n getDomainFromURL(location.href) !== getDomainFromURL(url)\n );\n };\n\n var dynamicLabel = function dynamicLabel(label) {\n return function() {\n return isFunction(label) ? label.apply(void 0, arguments) : label;\n };\n };\n\n var isMockItem = function isMockItem(item) {\n return !isFile(item.file);\n };\n\n var listUpdated = function listUpdated(dispatch, state) {\n clearTimeout(state.listUpdateTimeout);\n state.listUpdateTimeout = setTimeout(function() {\n dispatch('DID_UPDATE_ITEMS', { items: getActiveItems(state.items) });\n }, 0);\n };\n\n var optionalPromise = function optionalPromise(fn) {\n for (\n var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1;\n _key < _len;\n _key++\n ) {\n params[_key - 1] = arguments[_key];\n }\n return new Promise(function(resolve) {\n if (!fn) {\n return resolve(true);\n }\n\n var result = fn.apply(void 0, params);\n\n if (result == null) {\n return resolve(true);\n }\n\n if (typeof result === 'boolean') {\n return resolve(result);\n }\n\n if (typeof result.then === 'function') {\n result.then(resolve);\n }\n });\n };\n\n var sortItems = function sortItems(state, compare) {\n state.items.sort(function(a, b) {\n return compare(createItemAPI(a), createItemAPI(b));\n });\n };\n\n // returns item based on state\n var getItemByQueryFromState = function getItemByQueryFromState(state, itemHandler) {\n return function() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var query = _ref.query,\n _ref$success = _ref.success,\n success = _ref$success === void 0 ? function() {} : _ref$success,\n _ref$failure = _ref.failure,\n failure = _ref$failure === void 0 ? function() {} : _ref$failure,\n options = _objectWithoutProperties(_ref, ['query', 'success', 'failure']);\n var item = getItemByQuery(state.items, query);\n if (!item) {\n failure({\n error: createResponse('error', 0, 'Item not found'),\n file: null,\n });\n\n return;\n }\n itemHandler(item, success, failure, options || {});\n };\n };\n\n var actions = function actions(dispatch, query, state) {\n return {\n /**\n * Aborts all ongoing processes\n */\n ABORT_ALL: function ABORT_ALL() {\n getActiveItems(state.items).forEach(function(item) {\n item.freeze();\n item.abortLoad();\n item.abortProcessing();\n });\n },\n\n /**\n * Sets initial files\n */\n DID_SET_FILES: function DID_SET_FILES(_ref2) {\n var _ref2$value = _ref2.value,\n value = _ref2$value === void 0 ? [] : _ref2$value;\n // map values to file objects\n var files = value.map(function(file) {\n return {\n source: file.source ? file.source : file,\n options: file.options,\n };\n });\n\n // loop over files, if file is in list, leave it be, if not, remove\n // test if items should be moved\n var activeItems = getActiveItems(state.items);\n\n activeItems.forEach(function(item) {\n // if item not is in new value, remove\n if (\n !files.find(function(file) {\n return file.source === item.source || file.source === item.file;\n })\n ) {\n dispatch('REMOVE_ITEM', { query: item, remove: false });\n }\n });\n\n // add new files\n activeItems = getActiveItems(state.items);\n files.forEach(function(file, index) {\n // if file is already in list\n if (\n activeItems.find(function(item) {\n return item.source === file.source || item.file === file.source;\n })\n )\n return;\n\n // not in list, add\n dispatch(\n 'ADD_ITEM',\n Object.assign({}, file, {\n interactionMethod: InteractionMethod.NONE,\n index: index,\n })\n );\n });\n },\n\n DID_UPDATE_ITEM_METADATA: function DID_UPDATE_ITEM_METADATA(_ref3) {\n var id = _ref3.id,\n action = _ref3.action,\n change = _ref3.change;\n // don't do anything\n if (change.silent) return;\n\n // if is called multiple times in close succession we combined all calls together to save resources\n clearTimeout(state.itemUpdateTimeout);\n state.itemUpdateTimeout = setTimeout(function() {\n var item = getItemById(state.items, id);\n\n // only revert and attempt to upload when we're uploading to a server\n if (!query('IS_ASYNC')) {\n // should we update the output data\n applyFilterChain('SHOULD_PREPARE_OUTPUT', false, {\n item: item,\n query: query,\n action: action,\n change: change,\n }).then(function(shouldPrepareOutput) {\n // plugins determined the output data should be prepared (or not), can be adjusted with beforePrepareOutput hook\n var beforePrepareFile = query('GET_BEFORE_PREPARE_FILE');\n if (beforePrepareFile)\n shouldPrepareOutput = beforePrepareFile(item, shouldPrepareOutput);\n\n if (!shouldPrepareOutput) return;\n\n dispatch(\n 'REQUEST_PREPARE_OUTPUT',\n {\n query: id,\n item: item,\n success: function success(file) {\n dispatch('DID_PREPARE_OUTPUT', { id: id, file: file });\n },\n },\n\n true\n );\n });\n\n return;\n }\n\n // if is local item we need to enable upload button so change can be propagated to server\n if (item.origin === FileOrigin.LOCAL) {\n dispatch('DID_LOAD_ITEM', {\n id: item.id,\n error: null,\n serverFileReference: item.source,\n });\n }\n\n // for async scenarios\n var upload = function upload() {\n // we push this forward a bit so the interface is updated correctly\n setTimeout(function() {\n dispatch('REQUEST_ITEM_PROCESSING', { query: id });\n }, 32);\n };\n\n var revert = function revert(doUpload) {\n item.revert(\n createRevertFunction(\n state.options.server.url,\n state.options.server.revert\n ),\n query('GET_FORCE_REVERT')\n )\n .then(doUpload ? upload : function() {})\n .catch(function() {});\n };\n\n var abort = function abort(doUpload) {\n item.abortProcessing().then(doUpload ? upload : function() {});\n };\n\n // if we should re-upload the file immediately\n if (item.status === ItemStatus.PROCESSING_COMPLETE) {\n return revert(state.options.instantUpload);\n }\n\n // if currently uploading, cancel upload\n if (item.status === ItemStatus.PROCESSING) {\n return abort(state.options.instantUpload);\n }\n\n if (state.options.instantUpload) {\n upload();\n }\n }, 0);\n },\n\n MOVE_ITEM: function MOVE_ITEM(_ref4) {\n var query = _ref4.query,\n index = _ref4.index;\n var item = getItemByQuery(state.items, query);\n if (!item) return;\n var currentIndex = state.items.indexOf(item);\n index = limit(index, 0, state.items.length - 1);\n if (currentIndex === index) return;\n state.items.splice(index, 0, state.items.splice(currentIndex, 1)[0]);\n },\n\n SORT: function SORT(_ref5) {\n var compare = _ref5.compare;\n sortItems(state, compare);\n dispatch('DID_SORT_ITEMS', {\n items: query('GET_ACTIVE_ITEMS'),\n });\n },\n\n ADD_ITEMS: function ADD_ITEMS(_ref6) {\n var items = _ref6.items,\n index = _ref6.index,\n interactionMethod = _ref6.interactionMethod,\n _ref6$success = _ref6.success,\n success = _ref6$success === void 0 ? function() {} : _ref6$success,\n _ref6$failure = _ref6.failure,\n failure = _ref6$failure === void 0 ? function() {} : _ref6$failure;\n var currentIndex = index;\n\n if (index === -1 || typeof index === 'undefined') {\n var insertLocation = query('GET_ITEM_INSERT_LOCATION');\n var totalItems = query('GET_TOTAL_ITEMS');\n currentIndex = insertLocation === 'before' ? 0 : totalItems;\n }\n\n var ignoredFiles = query('GET_IGNORED_FILES');\n var isValidFile = function isValidFile(source) {\n return isFile(source)\n ? !ignoredFiles.includes(source.name.toLowerCase())\n : !isEmpty(source);\n };\n var validItems = items.filter(isValidFile);\n\n var promises = validItems.map(function(source) {\n return new Promise(function(resolve, reject) {\n dispatch('ADD_ITEM', {\n interactionMethod: interactionMethod,\n source: source.source || source,\n success: resolve,\n failure: reject,\n index: currentIndex++,\n options: source.options || {},\n });\n });\n });\n\n Promise.all(promises)\n .then(success)\n .catch(failure);\n },\n\n /**\n * @param source\n * @param index\n * @param interactionMethod\n */\n ADD_ITEM: function ADD_ITEM(_ref7) {\n var source = _ref7.source,\n _ref7$index = _ref7.index,\n index = _ref7$index === void 0 ? -1 : _ref7$index,\n interactionMethod = _ref7.interactionMethod,\n _ref7$success = _ref7.success,\n success = _ref7$success === void 0 ? function() {} : _ref7$success,\n _ref7$failure = _ref7.failure,\n failure = _ref7$failure === void 0 ? function() {} : _ref7$failure,\n _ref7$options = _ref7.options,\n options = _ref7$options === void 0 ? {} : _ref7$options;\n // if no source supplied\n if (isEmpty(source)) {\n failure({\n error: createResponse('error', 0, 'No source'),\n file: null,\n });\n\n return;\n }\n\n // filter out invalid file items, used to filter dropped directory contents\n if (\n isFile(source) &&\n state.options.ignoredFiles.includes(source.name.toLowerCase())\n ) {\n // fail silently\n return;\n }\n\n // test if there's still room in the list of files\n if (!hasRoomForItem(state)) {\n // if multiple allowed, we can't replace\n // or if only a single item is allowed but we're not allowed to replace it we exit\n if (\n state.options.allowMultiple ||\n (!state.options.allowMultiple && !state.options.allowReplace)\n ) {\n var error = createResponse('warning', 0, 'Max files');\n\n dispatch('DID_THROW_MAX_FILES', {\n source: source,\n error: error,\n });\n\n failure({ error: error, file: null });\n\n return;\n }\n\n // let's replace the item\n // id of first item we're about to remove\n var _item = getActiveItems(state.items)[0];\n\n // if has been processed remove it from the server as well\n if (\n _item.status === ItemStatus.PROCESSING_COMPLETE ||\n _item.status === ItemStatus.PROCESSING_REVERT_ERROR\n ) {\n var forceRevert = query('GET_FORCE_REVERT');\n _item\n .revert(\n createRevertFunction(\n state.options.server.url,\n state.options.server.revert\n ),\n forceRevert\n )\n .then(function() {\n if (!forceRevert) return;\n\n // try to add now\n dispatch('ADD_ITEM', {\n source: source,\n index: index,\n interactionMethod: interactionMethod,\n success: success,\n failure: failure,\n options: options,\n });\n })\n .catch(function() {}); // no need to handle this catch state for now\n\n if (forceRevert) return;\n }\n\n // remove first item as it will be replaced by this item\n dispatch('REMOVE_ITEM', { query: _item.id });\n }\n\n // where did the file originate\n var origin =\n options.type === 'local'\n ? FileOrigin.LOCAL\n : options.type === 'limbo'\n ? FileOrigin.LIMBO\n : FileOrigin.INPUT;\n\n // create a new blank item\n var item = createItem(\n // where did this file come from\n origin,\n\n // an input file never has a server file reference\n origin === FileOrigin.INPUT ? null : source,\n\n // file mock data, if defined\n options.file\n );\n\n // set initial meta data\n Object.keys(options.metadata || {}).forEach(function(key) {\n item.setMetadata(key, options.metadata[key]);\n });\n\n // created the item, let plugins add methods\n applyFilters('DID_CREATE_ITEM', item, { query: query, dispatch: dispatch });\n\n // where to insert new items\n var itemInsertLocation = query('GET_ITEM_INSERT_LOCATION');\n\n // adjust index if is not allowed to pick location\n if (!state.options.itemInsertLocationFreedom) {\n index = itemInsertLocation === 'before' ? -1 : state.items.length;\n }\n\n // add item to list\n insertItem(state.items, item, index);\n\n // sort items in list\n if (isFunction(itemInsertLocation) && source) {\n sortItems(state, itemInsertLocation);\n }\n\n // get a quick reference to the item id\n var id = item.id;\n\n // observe item events\n item.on('init', function() {\n dispatch('DID_INIT_ITEM', { id: id });\n });\n\n item.on('load-init', function() {\n dispatch('DID_START_ITEM_LOAD', { id: id });\n });\n\n item.on('load-meta', function() {\n dispatch('DID_UPDATE_ITEM_META', { id: id });\n });\n\n item.on('load-progress', function(progress) {\n dispatch('DID_UPDATE_ITEM_LOAD_PROGRESS', { id: id, progress: progress });\n });\n\n item.on('load-request-error', function(error) {\n var mainStatus = dynamicLabel(state.options.labelFileLoadError)(error);\n\n // is client error, no way to recover\n if (error.code >= 400 && error.code < 500) {\n dispatch('DID_THROW_ITEM_INVALID', {\n id: id,\n error: error,\n status: {\n main: mainStatus,\n sub: error.code + ' (' + error.body + ')',\n },\n });\n\n // reject the file so can be dealt with through API\n failure({ error: error, file: createItemAPI(item) });\n return;\n }\n\n // is possible server error, so might be possible to retry\n dispatch('DID_THROW_ITEM_LOAD_ERROR', {\n id: id,\n error: error,\n status: {\n main: mainStatus,\n sub: state.options.labelTapToRetry,\n },\n });\n });\n\n item.on('load-file-error', function(error) {\n dispatch('DID_THROW_ITEM_INVALID', {\n id: id,\n error: error.status,\n status: error.status,\n });\n\n failure({ error: error.status, file: createItemAPI(item) });\n });\n\n item.on('load-abort', function() {\n dispatch('REMOVE_ITEM', { query: id });\n });\n\n item.on('load-skip', function() {\n dispatch('COMPLETE_LOAD_ITEM', {\n query: id,\n item: item,\n data: {\n source: source,\n success: success,\n },\n });\n });\n\n item.on('load', function() {\n var handleAdd = function handleAdd(shouldAdd) {\n // no should not add this file\n if (!shouldAdd) {\n dispatch('REMOVE_ITEM', {\n query: id,\n });\n\n return;\n }\n\n // now interested in metadata updates\n item.on('metadata-update', function(change) {\n dispatch('DID_UPDATE_ITEM_METADATA', { id: id, change: change });\n });\n\n // let plugins decide if the output data should be prepared at this point\n // means we'll do this and wait for idle state\n applyFilterChain('SHOULD_PREPARE_OUTPUT', false, {\n item: item,\n query: query,\n }).then(function(shouldPrepareOutput) {\n // plugins determined the output data should be prepared (or not), can be adjusted with beforePrepareOutput hook\n var beforePrepareFile = query('GET_BEFORE_PREPARE_FILE');\n if (beforePrepareFile)\n shouldPrepareOutput = beforePrepareFile(item, shouldPrepareOutput);\n\n var loadComplete = function loadComplete() {\n dispatch('COMPLETE_LOAD_ITEM', {\n query: id,\n item: item,\n data: {\n source: source,\n success: success,\n },\n });\n\n listUpdated(dispatch, state);\n };\n\n // exit\n if (shouldPrepareOutput) {\n // wait for idle state and then run PREPARE_OUTPUT\n dispatch(\n 'REQUEST_PREPARE_OUTPUT',\n {\n query: id,\n item: item,\n success: function success(file) {\n dispatch('DID_PREPARE_OUTPUT', { id: id, file: file });\n loadComplete();\n },\n },\n\n true\n );\n\n return;\n }\n\n loadComplete();\n });\n };\n\n // item loaded, allow plugins to\n // - read data (quickly)\n // - add metadata\n applyFilterChain('DID_LOAD_ITEM', item, { query: query, dispatch: dispatch })\n .then(function() {\n optionalPromise(query('GET_BEFORE_ADD_FILE'), createItemAPI(item)).then(\n handleAdd\n );\n })\n .catch(function(e) {\n if (!e || !e.error || !e.status) return handleAdd(false);\n dispatch('DID_THROW_ITEM_INVALID', {\n id: id,\n error: e.error,\n status: e.status,\n });\n });\n });\n\n item.on('process-start', function() {\n dispatch('DID_START_ITEM_PROCESSING', { id: id });\n });\n\n item.on('process-progress', function(progress) {\n dispatch('DID_UPDATE_ITEM_PROCESS_PROGRESS', { id: id, progress: progress });\n });\n\n item.on('process-error', function(error) {\n dispatch('DID_THROW_ITEM_PROCESSING_ERROR', {\n id: id,\n error: error,\n status: {\n main: dynamicLabel(state.options.labelFileProcessingError)(error),\n sub: state.options.labelTapToRetry,\n },\n });\n });\n\n item.on('process-revert-error', function(error) {\n dispatch('DID_THROW_ITEM_PROCESSING_REVERT_ERROR', {\n id: id,\n error: error,\n status: {\n main: dynamicLabel(state.options.labelFileProcessingRevertError)(error),\n sub: state.options.labelTapToRetry,\n },\n });\n });\n\n item.on('process-complete', function(serverFileReference) {\n dispatch('DID_COMPLETE_ITEM_PROCESSING', {\n id: id,\n error: null,\n serverFileReference: serverFileReference,\n });\n\n dispatch('DID_DEFINE_VALUE', { id: id, value: serverFileReference });\n });\n\n item.on('process-abort', function() {\n dispatch('DID_ABORT_ITEM_PROCESSING', { id: id });\n });\n\n item.on('process-revert', function() {\n dispatch('DID_REVERT_ITEM_PROCESSING', { id: id });\n dispatch('DID_DEFINE_VALUE', { id: id, value: null });\n });\n\n // let view know the item has been inserted\n dispatch('DID_ADD_ITEM', {\n id: id,\n index: index,\n interactionMethod: interactionMethod,\n });\n\n listUpdated(dispatch, state);\n\n // start loading the source\n var _ref8 = state.options.server || {},\n url = _ref8.url,\n load = _ref8.load,\n restore = _ref8.restore,\n fetch = _ref8.fetch;\n\n item.load(\n source,\n\n // this creates a function that loads the file based on the type of file (string, base64, blob, file) and location of file (local, remote, limbo)\n createFileLoader(\n origin === FileOrigin.INPUT\n ? // input, if is remote, see if should use custom fetch, else use default fetchBlob\n isString(source) && isExternalURL(source)\n ? fetch\n ? createFetchFunction(url, fetch)\n : fetchBlob // remote url\n : fetchBlob // try to fetch url\n : // limbo or local\n origin === FileOrigin.LIMBO\n ? createFetchFunction(url, restore) // limbo\n : createFetchFunction(url, load) // local\n ),\n\n // called when the file is loaded so it can be piped through the filters\n function(file, success, error) {\n // let's process the file\n applyFilterChain('LOAD_FILE', file, { query: query })\n .then(success)\n .catch(error);\n }\n );\n },\n\n REQUEST_PREPARE_OUTPUT: function REQUEST_PREPARE_OUTPUT(_ref9) {\n var item = _ref9.item,\n success = _ref9.success,\n _ref9$failure = _ref9.failure,\n failure = _ref9$failure === void 0 ? function() {} : _ref9$failure;\n // error response if item archived\n var err = {\n error: createResponse('error', 0, 'Item not found'),\n file: null,\n };\n\n // don't handle archived items, an item could have been archived (load aborted) while waiting to be prepared\n if (item.archived) return failure(err);\n\n // allow plugins to alter the file data\n applyFilterChain('PREPARE_OUTPUT', item.file, { query: query, item: item }).then(\n function(result) {\n applyFilterChain('COMPLETE_PREPARE_OUTPUT', result, {\n query: query,\n item: item,\n }).then(function(result) {\n // don't handle archived items, an item could have been archived (load aborted) while being prepared\n if (item.archived) return failure(err);\n\n // we done!\n success(result);\n });\n }\n );\n },\n\n COMPLETE_LOAD_ITEM: function COMPLETE_LOAD_ITEM(_ref10) {\n var item = _ref10.item,\n data = _ref10.data;\n var success = data.success,\n source = data.source;\n\n // sort items in list\n var itemInsertLocation = query('GET_ITEM_INSERT_LOCATION');\n if (isFunction(itemInsertLocation) && source) {\n sortItems(state, itemInsertLocation);\n }\n\n // let interface know the item has loaded\n dispatch('DID_LOAD_ITEM', {\n id: item.id,\n error: null,\n serverFileReference: item.origin === FileOrigin.INPUT ? null : source,\n });\n\n // item has been successfully loaded and added to the\n // list of items so can now be safely returned for use\n success(createItemAPI(item));\n\n // if this is a local server file we need to show a different state\n if (item.origin === FileOrigin.LOCAL) {\n dispatch('DID_LOAD_LOCAL_ITEM', { id: item.id });\n return;\n }\n\n // if is a temp server file we prevent async upload call here (as the file is already on the server)\n if (item.origin === FileOrigin.LIMBO) {\n dispatch('DID_COMPLETE_ITEM_PROCESSING', {\n id: item.id,\n error: null,\n serverFileReference: source,\n });\n\n dispatch('DID_DEFINE_VALUE', {\n id: item.id,\n value: item.serverId || source,\n });\n\n return;\n }\n\n // id we are allowed to upload the file immediately, lets do it\n if (query('IS_ASYNC') && state.options.instantUpload) {\n dispatch('REQUEST_ITEM_PROCESSING', { query: item.id });\n }\n },\n\n RETRY_ITEM_LOAD: getItemByQueryFromState(state, function(item) {\n // try loading the source one more time\n item.retryLoad();\n }),\n\n REQUEST_ITEM_PREPARE: getItemByQueryFromState(state, function(item, _success, failure) {\n dispatch(\n 'REQUEST_PREPARE_OUTPUT',\n {\n query: item.id,\n item: item,\n success: function success(file) {\n dispatch('DID_PREPARE_OUTPUT', { id: item.id, file: file });\n _success({\n file: item,\n output: file,\n });\n },\n failure: failure,\n },\n\n true\n );\n }),\n\n REQUEST_ITEM_PROCESSING: getItemByQueryFromState(state, function(\n item,\n success,\n failure\n ) {\n // cannot be queued (or is already queued)\n var itemCanBeQueuedForProcessing =\n // waiting for something\n item.status === ItemStatus.IDLE ||\n // processing went wrong earlier\n item.status === ItemStatus.PROCESSING_ERROR;\n\n // not ready to be processed\n if (!itemCanBeQueuedForProcessing) {\n var processNow = function processNow() {\n return dispatch('REQUEST_ITEM_PROCESSING', {\n query: item,\n success: success,\n failure: failure,\n });\n };\n\n var process = function process() {\n return document.hidden ? processNow() : setTimeout(processNow, 32);\n };\n\n // if already done processing or tried to revert but didn't work, try again\n if (\n item.status === ItemStatus.PROCESSING_COMPLETE ||\n item.status === ItemStatus.PROCESSING_REVERT_ERROR\n ) {\n item.revert(\n createRevertFunction(\n state.options.server.url,\n state.options.server.revert\n ),\n query('GET_FORCE_REVERT')\n )\n .then(process)\n .catch(function() {}); // don't continue with processing if something went wrong\n } else if (item.status === ItemStatus.PROCESSING) {\n item.abortProcessing().then(process);\n }\n\n return;\n }\n\n // already queued for processing\n if (item.status === ItemStatus.PROCESSING_QUEUED) return;\n\n item.requestProcessing();\n\n dispatch('DID_REQUEST_ITEM_PROCESSING', { id: item.id });\n\n dispatch('PROCESS_ITEM', { query: item, success: success, failure: failure }, true);\n }),\n\n PROCESS_ITEM: getItemByQueryFromState(state, function(item, success, failure) {\n var maxParallelUploads = query('GET_MAX_PARALLEL_UPLOADS');\n var totalCurrentUploads = query('GET_ITEMS_BY_STATUS', ItemStatus.PROCESSING)\n .length;\n\n // queue and wait till queue is freed up\n if (totalCurrentUploads === maxParallelUploads) {\n // queue for later processing\n state.processingQueue.push({\n id: item.id,\n success: success,\n failure: failure,\n });\n\n // stop it!\n return;\n }\n\n // if was not queued or is already processing exit here\n if (item.status === ItemStatus.PROCESSING) return;\n\n var processNext = function processNext() {\n // process queueud items\n var queueEntry = state.processingQueue.shift();\n\n // no items left\n if (!queueEntry) return;\n\n // get item reference\n var id = queueEntry.id,\n success = queueEntry.success,\n failure = queueEntry.failure;\n var itemReference = getItemByQuery(state.items, id);\n\n // if item was archived while in queue, jump to next\n if (!itemReference || itemReference.archived) {\n processNext();\n return;\n }\n\n // process queued item\n dispatch(\n 'PROCESS_ITEM',\n { query: id, success: success, failure: failure },\n true\n );\n };\n\n // we done function\n item.onOnce('process-complete', function() {\n success(createItemAPI(item));\n processNext();\n\n // if origin is local, and we're instant uploading, trigger remove of original\n // as revert will remove file from list\n var server = state.options.server;\n var instantUpload = state.options.instantUpload;\n if (\n instantUpload &&\n item.origin === FileOrigin.LOCAL &&\n isFunction(server.remove)\n ) {\n var noop = function noop() {};\n item.origin = FileOrigin.LIMBO;\n state.options.server.remove(item.source, noop, noop);\n }\n\n // All items processed? No errors?\n var allItemsProcessed =\n query('GET_ITEMS_BY_STATUS', ItemStatus.PROCESSING_COMPLETE).length ===\n state.items.length;\n if (allItemsProcessed) {\n dispatch('DID_COMPLETE_ITEM_PROCESSING_ALL');\n }\n });\n\n // we error function\n item.onOnce('process-error', function(error) {\n failure({ error: error, file: createItemAPI(item) });\n processNext();\n });\n\n // start file processing\n var options = state.options;\n item.process(\n createFileProcessor(\n createProcessorFunction(\n options.server.url,\n options.server.process,\n options.name,\n {\n chunkTransferId: item.transferId,\n chunkServer: options.server.patch,\n chunkUploads: options.chunkUploads,\n chunkForce: options.chunkForce,\n chunkSize: options.chunkSize,\n chunkRetryDelays: options.chunkRetryDelays,\n }\n ),\n\n {\n allowMinimumUploadDuration: query('GET_ALLOW_MINIMUM_UPLOAD_DURATION'),\n }\n ),\n\n // called when the file is about to be processed so it can be piped through the transform filters\n function(file, success, error) {\n // allow plugins to alter the file data\n applyFilterChain('PREPARE_OUTPUT', file, { query: query, item: item })\n .then(function(file) {\n dispatch('DID_PREPARE_OUTPUT', { id: item.id, file: file });\n\n success(file);\n })\n .catch(error);\n }\n );\n }),\n\n RETRY_ITEM_PROCESSING: getItemByQueryFromState(state, function(item) {\n dispatch('REQUEST_ITEM_PROCESSING', { query: item });\n }),\n\n REQUEST_REMOVE_ITEM: getItemByQueryFromState(state, function(item) {\n optionalPromise(query('GET_BEFORE_REMOVE_FILE'), createItemAPI(item)).then(function(\n shouldRemove\n ) {\n if (!shouldRemove) {\n return;\n }\n dispatch('REMOVE_ITEM', { query: item });\n });\n }),\n\n RELEASE_ITEM: getItemByQueryFromState(state, function(item) {\n item.release();\n }),\n\n REMOVE_ITEM: getItemByQueryFromState(state, function(item, success, failure, options) {\n var removeFromView = function removeFromView() {\n // get id reference\n var id = item.id;\n\n // archive the item, this does not remove it from the list\n getItemById(state.items, id).archive();\n\n // tell the view the item has been removed\n dispatch('DID_REMOVE_ITEM', { error: null, id: id, item: item });\n\n // now the list has been modified\n listUpdated(dispatch, state);\n\n // correctly removed\n success(createItemAPI(item));\n };\n\n // if this is a local file and the `server.remove` function has been configured,\n // send source there so dev can remove file from server\n var server = state.options.server;\n if (\n item.origin === FileOrigin.LOCAL &&\n server &&\n isFunction(server.remove) &&\n options.remove !== false\n ) {\n dispatch('DID_START_ITEM_REMOVE', { id: item.id });\n\n server.remove(\n item.source,\n function() {\n return removeFromView();\n },\n function(status) {\n dispatch('DID_THROW_ITEM_REMOVE_ERROR', {\n id: item.id,\n error: createResponse('error', 0, status, null),\n status: {\n main: dynamicLabel(state.options.labelFileRemoveError)(status),\n sub: state.options.labelTapToRetry,\n },\n });\n }\n );\n } else {\n // if is requesting revert and can revert need to call revert handler (not calling request_ because that would also trigger beforeRemoveHook)\n if (\n (options.revert &&\n item.origin !== FileOrigin.LOCAL &&\n item.serverId !== null) ||\n // if chunked uploads are enabled and we're uploading in chunks for this specific file\n // or if the file isn't big enough for chunked uploads but chunkForce is set then call\n // revert before removing from the view...\n (state.options.chunkUploads && item.file.size > state.options.chunkSize) ||\n (state.options.chunkUploads && state.options.chunkForce)\n ) {\n item.revert(\n createRevertFunction(\n state.options.server.url,\n state.options.server.revert\n ),\n query('GET_FORCE_REVERT')\n );\n }\n\n // can now safely remove from view\n removeFromView();\n }\n }),\n\n ABORT_ITEM_LOAD: getItemByQueryFromState(state, function(item) {\n item.abortLoad();\n }),\n\n ABORT_ITEM_PROCESSING: getItemByQueryFromState(state, function(item) {\n // test if is already processed\n if (item.serverId) {\n dispatch('REVERT_ITEM_PROCESSING', { id: item.id });\n return;\n }\n\n // abort\n item.abortProcessing().then(function() {\n var shouldRemove = state.options.instantUpload;\n if (shouldRemove) {\n dispatch('REMOVE_ITEM', { query: item.id });\n }\n });\n }),\n\n REQUEST_REVERT_ITEM_PROCESSING: getItemByQueryFromState(state, function(item) {\n // not instant uploading, revert immediately\n if (!state.options.instantUpload) {\n dispatch('REVERT_ITEM_PROCESSING', { query: item });\n return;\n }\n\n // if we're instant uploading the file will also be removed if we revert,\n // so if a before remove file hook is defined we need to run it now\n var handleRevert = function handleRevert(shouldRevert) {\n if (!shouldRevert) return;\n dispatch('REVERT_ITEM_PROCESSING', { query: item });\n };\n\n var fn = query('GET_BEFORE_REMOVE_FILE');\n if (!fn) {\n return handleRevert(true);\n }\n\n var requestRemoveResult = fn(createItemAPI(item));\n if (requestRemoveResult == null) {\n // undefined or null\n return handleRevert(true);\n }\n\n if (typeof requestRemoveResult === 'boolean') {\n return handleRevert(requestRemoveResult);\n }\n\n if (typeof requestRemoveResult.then === 'function') {\n requestRemoveResult.then(handleRevert);\n }\n }),\n\n REVERT_ITEM_PROCESSING: getItemByQueryFromState(state, function(item) {\n item.revert(\n createRevertFunction(state.options.server.url, state.options.server.revert),\n query('GET_FORCE_REVERT')\n )\n .then(function() {\n var shouldRemove = state.options.instantUpload || isMockItem(item);\n if (shouldRemove) {\n dispatch('REMOVE_ITEM', { query: item.id });\n }\n })\n .catch(function() {});\n }),\n\n SET_OPTIONS: function SET_OPTIONS(_ref11) {\n var options = _ref11.options;\n // get all keys passed\n var optionKeys = Object.keys(options);\n\n // get prioritized keyed to include (remove once not in options object)\n var prioritizedOptionKeys = PrioritizedOptions.filter(function(key) {\n return optionKeys.includes(key);\n });\n\n // order the keys, prioritized first, then rest\n var orderedOptionKeys = [].concat(\n _toConsumableArray(prioritizedOptionKeys),\n _toConsumableArray(\n Object.keys(options).filter(function(key) {\n return !prioritizedOptionKeys.includes(key);\n })\n )\n );\n\n // dispatch set event for each option\n orderedOptionKeys.forEach(function(key) {\n dispatch('SET_' + fromCamels(key, '_').toUpperCase(), {\n value: options[key],\n });\n });\n },\n };\n };\n\n var PrioritizedOptions = ['server'];\n\n var formatFilename = function formatFilename(name) {\n return name;\n };\n\n var createElement$1 = function createElement(tagName) {\n return document.createElement(tagName);\n };\n\n var text = function text(node, value) {\n var textNode = node.childNodes[0];\n if (!textNode) {\n textNode = document.createTextNode(value);\n node.appendChild(textNode);\n } else if (value !== textNode.nodeValue) {\n textNode.nodeValue = value;\n }\n };\n\n var polarToCartesian = function polarToCartesian(centerX, centerY, radius, angleInDegrees) {\n var angleInRadians = (((angleInDegrees % 360) - 90) * Math.PI) / 180.0;\n return {\n x: centerX + radius * Math.cos(angleInRadians),\n y: centerY + radius * Math.sin(angleInRadians),\n };\n };\n\n var describeArc = function describeArc(x, y, radius, startAngle, endAngle, arcSweep) {\n var start = polarToCartesian(x, y, radius, endAngle);\n var end = polarToCartesian(x, y, radius, startAngle);\n return ['M', start.x, start.y, 'A', radius, radius, 0, arcSweep, 0, end.x, end.y].join(' ');\n };\n\n var percentageArc = function percentageArc(x, y, radius, from, to) {\n var arcSweep = 1;\n if (to > from && to - from <= 0.5) {\n arcSweep = 0;\n }\n if (from > to && from - to >= 0.5) {\n arcSweep = 0;\n }\n return describeArc(\n x,\n y,\n radius,\n Math.min(0.9999, from) * 360,\n Math.min(0.9999, to) * 360,\n arcSweep\n );\n };\n\n var create = function create(_ref) {\n var root = _ref.root,\n props = _ref.props;\n // start at 0\n props.spin = false;\n props.progress = 0;\n props.opacity = 0;\n\n // svg\n var svg = createElement('svg');\n root.ref.path = createElement('path', {\n 'stroke-width': 2,\n 'stroke-linecap': 'round',\n });\n\n svg.appendChild(root.ref.path);\n\n root.ref.svg = svg;\n\n root.appendChild(svg);\n };\n\n var write = function write(_ref2) {\n var root = _ref2.root,\n props = _ref2.props;\n if (props.opacity === 0) {\n return;\n }\n\n if (props.align) {\n root.element.dataset.align = props.align;\n }\n\n // get width of stroke\n var ringStrokeWidth = parseInt(attr(root.ref.path, 'stroke-width'), 10);\n\n // calculate size of ring\n var size = root.rect.element.width * 0.5;\n\n // ring state\n var ringFrom = 0;\n var ringTo = 0;\n\n // now in busy mode\n if (props.spin) {\n ringFrom = 0;\n ringTo = 0.5;\n } else {\n ringFrom = 0;\n ringTo = props.progress;\n }\n\n // get arc path\n var coordinates = percentageArc(size, size, size - ringStrokeWidth, ringFrom, ringTo);\n\n // update progress bar\n attr(root.ref.path, 'd', coordinates);\n\n // hide while contains 0 value\n attr(root.ref.path, 'stroke-opacity', props.spin || props.progress > 0 ? 1 : 0);\n };\n\n var progressIndicator = createView({\n tag: 'div',\n name: 'progress-indicator',\n ignoreRectUpdate: true,\n ignoreRect: true,\n create: create,\n write: write,\n mixins: {\n apis: ['progress', 'spin', 'align'],\n styles: ['opacity'],\n animations: {\n opacity: { type: 'tween', duration: 500 },\n progress: {\n type: 'spring',\n stiffness: 0.95,\n damping: 0.65,\n mass: 10,\n },\n },\n },\n });\n\n var create$1 = function create(_ref) {\n var root = _ref.root,\n props = _ref.props;\n root.element.innerHTML = (props.icon || '') + ('<span>' + props.label + '</span>');\n\n props.isDisabled = false;\n };\n\n var write$1 = function write(_ref2) {\n var root = _ref2.root,\n props = _ref2.props;\n var isDisabled = props.isDisabled;\n var shouldDisable = root.query('GET_DISABLED') || props.opacity === 0;\n\n if (shouldDisable && !isDisabled) {\n props.isDisabled = true;\n attr(root.element, 'disabled', 'disabled');\n } else if (!shouldDisable && isDisabled) {\n props.isDisabled = false;\n root.element.removeAttribute('disabled');\n }\n };\n\n var fileActionButton = createView({\n tag: 'button',\n attributes: {\n type: 'button',\n },\n\n ignoreRect: true,\n ignoreRectUpdate: true,\n name: 'file-action-button',\n mixins: {\n apis: ['label'],\n styles: ['translateX', 'translateY', 'scaleX', 'scaleY', 'opacity'],\n animations: {\n scaleX: 'spring',\n scaleY: 'spring',\n translateX: 'spring',\n translateY: 'spring',\n opacity: { type: 'tween', duration: 250 },\n },\n\n listeners: true,\n },\n\n create: create$1,\n write: write$1,\n });\n\n var toNaturalFileSize = function toNaturalFileSize(bytes) {\n var decimalSeparator =\n arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '.';\n var base = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1000;\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var _options$labelBytes = options.labelBytes,\n labelBytes = _options$labelBytes === void 0 ? 'bytes' : _options$labelBytes,\n _options$labelKilobyt = options.labelKilobytes,\n labelKilobytes = _options$labelKilobyt === void 0 ? 'KB' : _options$labelKilobyt,\n _options$labelMegabyt = options.labelMegabytes,\n labelMegabytes = _options$labelMegabyt === void 0 ? 'MB' : _options$labelMegabyt,\n _options$labelGigabyt = options.labelGigabytes,\n labelGigabytes = _options$labelGigabyt === void 0 ? 'GB' : _options$labelGigabyt;\n\n // no negative byte sizes\n bytes = Math.round(Math.abs(bytes));\n\n var KB = base;\n var MB = base * base;\n var GB = base * base * base;\n\n // just bytes\n if (bytes < KB) {\n return bytes + ' ' + labelBytes;\n }\n\n // kilobytes\n if (bytes < MB) {\n return Math.floor(bytes / KB) + ' ' + labelKilobytes;\n }\n\n // megabytes\n if (bytes < GB) {\n return removeDecimalsWhenZero(bytes / MB, 1, decimalSeparator) + ' ' + labelMegabytes;\n }\n\n // gigabytes\n return removeDecimalsWhenZero(bytes / GB, 2, decimalSeparator) + ' ' + labelGigabytes;\n };\n\n var removeDecimalsWhenZero = function removeDecimalsWhenZero(value, decimalCount, separator) {\n return value\n .toFixed(decimalCount)\n .split('.')\n .filter(function(part) {\n return part !== '0';\n })\n .join(separator);\n };\n\n var create$2 = function create(_ref) {\n var root = _ref.root,\n props = _ref.props;\n // filename\n var fileName = createElement$1('span');\n fileName.className = 'filepond--file-info-main';\n // hide for screenreaders\n // the file is contained in a fieldset with legend that contains the filename\n // no need to read it twice\n attr(fileName, 'aria-hidden', 'true');\n root.appendChild(fileName);\n root.ref.fileName = fileName;\n\n // filesize\n var fileSize = createElement$1('span');\n fileSize.className = 'filepond--file-info-sub';\n root.appendChild(fileSize);\n root.ref.fileSize = fileSize;\n\n // set initial values\n text(fileSize, root.query('GET_LABEL_FILE_WAITING_FOR_SIZE'));\n text(fileName, formatFilename(root.query('GET_ITEM_NAME', props.id)));\n };\n\n var updateFile = function updateFile(_ref2) {\n var root = _ref2.root,\n props = _ref2.props;\n text(\n root.ref.fileSize,\n toNaturalFileSize(\n root.query('GET_ITEM_SIZE', props.id),\n '.',\n root.query('GET_FILE_SIZE_BASE'),\n root.query('GET_FILE_SIZE_LABELS', root.query)\n )\n );\n\n text(root.ref.fileName, formatFilename(root.query('GET_ITEM_NAME', props.id)));\n };\n\n var updateFileSizeOnError = function updateFileSizeOnError(_ref3) {\n var root = _ref3.root,\n props = _ref3.props;\n // if size is available don't fallback to unknown size message\n if (isInt(root.query('GET_ITEM_SIZE', props.id))) {\n updateFile({ root: root, props: props });\n return;\n }\n\n text(root.ref.fileSize, root.query('GET_LABEL_FILE_SIZE_NOT_AVAILABLE'));\n };\n\n var fileInfo = createView({\n name: 'file-info',\n ignoreRect: true,\n ignoreRectUpdate: true,\n write: createRoute({\n DID_LOAD_ITEM: updateFile,\n DID_UPDATE_ITEM_META: updateFile,\n DID_THROW_ITEM_LOAD_ERROR: updateFileSizeOnError,\n DID_THROW_ITEM_INVALID: updateFileSizeOnError,\n }),\n\n didCreateView: function didCreateView(root) {\n applyFilters('CREATE_VIEW', Object.assign({}, root, { view: root }));\n },\n create: create$2,\n mixins: {\n styles: ['translateX', 'translateY'],\n animations: {\n translateX: 'spring',\n translateY: 'spring',\n },\n },\n });\n\n var toPercentage = function toPercentage(value) {\n return Math.round(value * 100);\n };\n\n var create$3 = function create(_ref) {\n var root = _ref.root;\n\n // main status\n var main = createElement$1('span');\n main.className = 'filepond--file-status-main';\n root.appendChild(main);\n root.ref.main = main;\n\n // sub status\n var sub = createElement$1('span');\n sub.className = 'filepond--file-status-sub';\n root.appendChild(sub);\n root.ref.sub = sub;\n\n didSetItemLoadProgress({ root: root, action: { progress: null } });\n };\n\n var didSetItemLoadProgress = function didSetItemLoadProgress(_ref2) {\n var root = _ref2.root,\n action = _ref2.action;\n var title =\n action.progress === null\n ? root.query('GET_LABEL_FILE_LOADING')\n : root.query('GET_LABEL_FILE_LOADING') + ' ' + toPercentage(action.progress) + '%';\n\n text(root.ref.main, title);\n text(root.ref.sub, root.query('GET_LABEL_TAP_TO_CANCEL'));\n };\n\n var didSetItemProcessProgress = function didSetItemProcessProgress(_ref3) {\n var root = _ref3.root,\n action = _ref3.action;\n var title =\n action.progress === null\n ? root.query('GET_LABEL_FILE_PROCESSING')\n : root.query('GET_LABEL_FILE_PROCESSING') +\n ' ' +\n toPercentage(action.progress) +\n '%';\n\n text(root.ref.main, title);\n text(root.ref.sub, root.query('GET_LABEL_TAP_TO_CANCEL'));\n };\n\n var didRequestItemProcessing = function didRequestItemProcessing(_ref4) {\n var root = _ref4.root;\n text(root.ref.main, root.query('GET_LABEL_FILE_PROCESSING'));\n text(root.ref.sub, root.query('GET_LABEL_TAP_TO_CANCEL'));\n };\n\n var didAbortItemProcessing = function didAbortItemProcessing(_ref5) {\n var root = _ref5.root;\n text(root.ref.main, root.query('GET_LABEL_FILE_PROCESSING_ABORTED'));\n text(root.ref.sub, root.query('GET_LABEL_TAP_TO_RETRY'));\n };\n\n var didCompleteItemProcessing = function didCompleteItemProcessing(_ref6) {\n var root = _ref6.root;\n text(root.ref.main, root.query('GET_LABEL_FILE_PROCESSING_COMPLETE'));\n text(root.ref.sub, root.query('GET_LABEL_TAP_TO_UNDO'));\n };\n\n var clear = function clear(_ref7) {\n var root = _ref7.root;\n text(root.ref.main, '');\n text(root.ref.sub, '');\n };\n\n var error = function error(_ref8) {\n var root = _ref8.root,\n action = _ref8.action;\n text(root.ref.main, action.status.main);\n text(root.ref.sub, action.status.sub);\n };\n\n var fileStatus = createView({\n name: 'file-status',\n ignoreRect: true,\n ignoreRectUpdate: true,\n write: createRoute({\n DID_LOAD_ITEM: clear,\n DID_REVERT_ITEM_PROCESSING: clear,\n DID_REQUEST_ITEM_PROCESSING: didRequestItemProcessing,\n DID_ABORT_ITEM_PROCESSING: didAbortItemProcessing,\n DID_COMPLETE_ITEM_PROCESSING: didCompleteItemProcessing,\n DID_UPDATE_ITEM_PROCESS_PROGRESS: didSetItemProcessProgress,\n DID_UPDATE_ITEM_LOAD_PROGRESS: didSetItemLoadProgress,\n DID_THROW_ITEM_LOAD_ERROR: error,\n DID_THROW_ITEM_INVALID: error,\n DID_THROW_ITEM_PROCESSING_ERROR: error,\n DID_THROW_ITEM_PROCESSING_REVERT_ERROR: error,\n DID_THROW_ITEM_REMOVE_ERROR: error,\n }),\n\n didCreateView: function didCreateView(root) {\n applyFilters('CREATE_VIEW', Object.assign({}, root, { view: root }));\n },\n create: create$3,\n mixins: {\n styles: ['translateX', 'translateY', 'opacity'],\n animations: {\n opacity: { type: 'tween', duration: 250 },\n translateX: 'spring',\n translateY: 'spring',\n },\n },\n });\n\n /**\n * Button definitions for the file view\n */\n\n var Buttons = {\n AbortItemLoad: {\n label: 'GET_LABEL_BUTTON_ABORT_ITEM_LOAD',\n action: 'ABORT_ITEM_LOAD',\n className: 'filepond--action-abort-item-load',\n align: 'LOAD_INDICATOR_POSITION', // right\n },\n RetryItemLoad: {\n label: 'GET_LABEL_BUTTON_RETRY_ITEM_LOAD',\n action: 'RETRY_ITEM_LOAD',\n icon: 'GET_ICON_RETRY',\n className: 'filepond--action-retry-item-load',\n align: 'BUTTON_PROCESS_ITEM_POSITION', // right\n },\n RemoveItem: {\n label: 'GET_LABEL_BUTTON_REMOVE_ITEM',\n action: 'REQUEST_REMOVE_ITEM',\n icon: 'GET_ICON_REMOVE',\n className: 'filepond--action-remove-item',\n align: 'BUTTON_REMOVE_ITEM_POSITION', // left\n },\n ProcessItem: {\n label: 'GET_LABEL_BUTTON_PROCESS_ITEM',\n action: 'REQUEST_ITEM_PROCESSING',\n icon: 'GET_ICON_PROCESS',\n className: 'filepond--action-process-item',\n align: 'BUTTON_PROCESS_ITEM_POSITION', // right\n },\n AbortItemProcessing: {\n label: 'GET_LABEL_BUTTON_ABORT_ITEM_PROCESSING',\n action: 'ABORT_ITEM_PROCESSING',\n className: 'filepond--action-abort-item-processing',\n align: 'BUTTON_PROCESS_ITEM_POSITION', // right\n },\n RetryItemProcessing: {\n label: 'GET_LABEL_BUTTON_RETRY_ITEM_PROCESSING',\n action: 'RETRY_ITEM_PROCESSING',\n icon: 'GET_ICON_RETRY',\n className: 'filepond--action-retry-item-processing',\n align: 'BUTTON_PROCESS_ITEM_POSITION', // right\n },\n RevertItemProcessing: {\n label: 'GET_LABEL_BUTTON_UNDO_ITEM_PROCESSING',\n action: 'REQUEST_REVERT_ITEM_PROCESSING',\n icon: 'GET_ICON_UNDO',\n className: 'filepond--action-revert-item-processing',\n align: 'BUTTON_PROCESS_ITEM_POSITION', // right\n },\n };\n\n // make a list of buttons, we can then remove buttons from this list if they're disabled\n var ButtonKeys = [];\n forin(Buttons, function(key) {\n ButtonKeys.push(key);\n });\n\n var calculateFileInfoOffset = function calculateFileInfoOffset(root) {\n if (getRemoveIndicatorAligment(root) === 'right') return 0;\n var buttonRect = root.ref.buttonRemoveItem.rect.element;\n return buttonRect.hidden ? null : buttonRect.width + buttonRect.left;\n };\n\n var calculateButtonWidth = function calculateButtonWidth(root) {\n var buttonRect = root.ref.buttonAbortItemLoad.rect.element;\n return buttonRect.width;\n };\n\n // Force on full pixels so text stays crips\n var calculateFileVerticalCenterOffset = function calculateFileVerticalCenterOffset(root) {\n return Math.floor(root.ref.buttonRemoveItem.rect.element.height / 4);\n };\n var calculateFileHorizontalCenterOffset = function calculateFileHorizontalCenterOffset(root) {\n return Math.floor(root.ref.buttonRemoveItem.rect.element.left / 2);\n };\n\n var getLoadIndicatorAlignment = function getLoadIndicatorAlignment(root) {\n return root.query('GET_STYLE_LOAD_INDICATOR_POSITION');\n };\n var getProcessIndicatorAlignment = function getProcessIndicatorAlignment(root) {\n return root.query('GET_STYLE_PROGRESS_INDICATOR_POSITION');\n };\n var getRemoveIndicatorAligment = function getRemoveIndicatorAligment(root) {\n return root.query('GET_STYLE_BUTTON_REMOVE_ITEM_POSITION');\n };\n\n var DefaultStyle = {\n buttonAbortItemLoad: { opacity: 0 },\n buttonRetryItemLoad: { opacity: 0 },\n buttonRemoveItem: { opacity: 0 },\n buttonProcessItem: { opacity: 0 },\n buttonAbortItemProcessing: { opacity: 0 },\n buttonRetryItemProcessing: { opacity: 0 },\n buttonRevertItemProcessing: { opacity: 0 },\n loadProgressIndicator: { opacity: 0, align: getLoadIndicatorAlignment },\n processProgressIndicator: { opacity: 0, align: getProcessIndicatorAlignment },\n processingCompleteIndicator: { opacity: 0, scaleX: 0.75, scaleY: 0.75 },\n info: { translateX: 0, translateY: 0, opacity: 0 },\n status: { translateX: 0, translateY: 0, opacity: 0 },\n };\n\n var IdleStyle = {\n buttonRemoveItem: { opacity: 1 },\n buttonProcessItem: { opacity: 1 },\n info: { translateX: calculateFileInfoOffset },\n status: { translateX: calculateFileInfoOffset },\n };\n\n var ProcessingStyle = {\n buttonAbortItemProcessing: { opacity: 1 },\n processProgressIndicator: { opacity: 1 },\n status: { opacity: 1 },\n };\n\n var StyleMap = {\n DID_THROW_ITEM_INVALID: {\n buttonRemoveItem: { opacity: 1 },\n info: { translateX: calculateFileInfoOffset },\n status: { translateX: calculateFileInfoOffset, opacity: 1 },\n },\n\n DID_START_ITEM_LOAD: {\n buttonAbortItemLoad: { opacity: 1 },\n loadProgressIndicator: { opacity: 1 },\n status: { opacity: 1 },\n },\n\n DID_THROW_ITEM_LOAD_ERROR: {\n buttonRetryItemLoad: { opacity: 1 },\n buttonRemoveItem: { opacity: 1 },\n info: { translateX: calculateFileInfoOffset },\n status: { opacity: 1 },\n },\n\n DID_START_ITEM_REMOVE: {\n processProgressIndicator: { opacity: 1, align: getRemoveIndicatorAligment },\n info: { translateX: calculateFileInfoOffset },\n status: { opacity: 0 },\n },\n\n DID_THROW_ITEM_REMOVE_ERROR: {\n processProgressIndicator: { opacity: 0, align: getRemoveIndicatorAligment },\n buttonRemoveItem: { opacity: 1 },\n info: { translateX: calculateFileInfoOffset },\n status: { opacity: 1, translateX: calculateFileInfoOffset },\n },\n\n DID_LOAD_ITEM: IdleStyle,\n DID_LOAD_LOCAL_ITEM: {\n buttonRemoveItem: { opacity: 1 },\n info: { translateX: calculateFileInfoOffset },\n status: { translateX: calculateFileInfoOffset },\n },\n\n DID_START_ITEM_PROCESSING: ProcessingStyle,\n DID_REQUEST_ITEM_PROCESSING: ProcessingStyle,\n DID_UPDATE_ITEM_PROCESS_PROGRESS: ProcessingStyle,\n DID_COMPLETE_ITEM_PROCESSING: {\n buttonRevertItemProcessing: { opacity: 1 },\n info: { opacity: 1 },\n status: { opacity: 1 },\n },\n\n DID_THROW_ITEM_PROCESSING_ERROR: {\n buttonRemoveItem: { opacity: 1 },\n buttonRetryItemProcessing: { opacity: 1 },\n status: { opacity: 1 },\n info: { translateX: calculateFileInfoOffset },\n },\n\n DID_THROW_ITEM_PROCESSING_REVERT_ERROR: {\n buttonRevertItemProcessing: { opacity: 1 },\n status: { opacity: 1 },\n info: { opacity: 1 },\n },\n\n DID_ABORT_ITEM_PROCESSING: {\n buttonRemoveItem: { opacity: 1 },\n buttonProcessItem: { opacity: 1 },\n info: { translateX: calculateFileInfoOffset },\n status: { opacity: 1 },\n },\n\n DID_REVERT_ITEM_PROCESSING: IdleStyle,\n };\n\n // complete indicator view\n var processingCompleteIndicatorView = createView({\n create: function create(_ref) {\n var root = _ref.root;\n root.element.innerHTML = root.query('GET_ICON_DONE');\n },\n name: 'processing-complete-indicator',\n ignoreRect: true,\n mixins: {\n styles: ['scaleX', 'scaleY', 'opacity'],\n animations: {\n scaleX: 'spring',\n scaleY: 'spring',\n opacity: { type: 'tween', duration: 250 },\n },\n },\n });\n\n /**\n * Creates the file view\n */\n var create$4 = function create(_ref2) {\n var root = _ref2.root,\n props = _ref2.props;\n // copy Buttons object\n var LocalButtons = Object.keys(Buttons).reduce(function(prev, curr) {\n prev[curr] = Object.assign({}, Buttons[curr]);\n return prev;\n }, {});\n var id = props.id;\n\n // allow reverting upload\n var allowRevert = root.query('GET_ALLOW_REVERT');\n\n // allow remove file\n var allowRemove = root.query('GET_ALLOW_REMOVE');\n\n // allow processing upload\n var allowProcess = root.query('GET_ALLOW_PROCESS');\n\n // is instant uploading, need this to determine the icon of the undo button\n var instantUpload = root.query('GET_INSTANT_UPLOAD');\n\n // is async set up\n var isAsync = root.query('IS_ASYNC');\n\n // should align remove item buttons\n var alignRemoveItemButton = root.query('GET_STYLE_BUTTON_REMOVE_ITEM_ALIGN');\n\n // enabled buttons array\n var buttonFilter;\n if (isAsync) {\n if (allowProcess && !allowRevert) {\n // only remove revert button\n buttonFilter = function buttonFilter(key) {\n return !/RevertItemProcessing/.test(key);\n };\n } else if (!allowProcess && allowRevert) {\n // only remove process button\n buttonFilter = function buttonFilter(key) {\n return !/ProcessItem|RetryItemProcessing|AbortItemProcessing/.test(key);\n };\n } else if (!allowProcess && !allowRevert) {\n // remove all process buttons\n buttonFilter = function buttonFilter(key) {\n return !/Process/.test(key);\n };\n }\n } else {\n // no process controls available\n buttonFilter = function buttonFilter(key) {\n return !/Process/.test(key);\n };\n }\n\n var enabledButtons = buttonFilter ? ButtonKeys.filter(buttonFilter) : ButtonKeys.concat();\n\n // update icon and label for revert button when instant uploading\n if (instantUpload && allowRevert) {\n LocalButtons['RevertItemProcessing'].label = 'GET_LABEL_BUTTON_REMOVE_ITEM';\n LocalButtons['RevertItemProcessing'].icon = 'GET_ICON_REMOVE';\n }\n\n // remove last button (revert) if not allowed\n if (isAsync && !allowRevert) {\n var map = StyleMap['DID_COMPLETE_ITEM_PROCESSING'];\n map.info.translateX = calculateFileHorizontalCenterOffset;\n map.info.translateY = calculateFileVerticalCenterOffset;\n map.status.translateY = calculateFileVerticalCenterOffset;\n map.processingCompleteIndicator = { opacity: 1, scaleX: 1, scaleY: 1 };\n }\n\n // should align center\n if (isAsync && !allowProcess) {\n [\n 'DID_START_ITEM_PROCESSING',\n 'DID_REQUEST_ITEM_PROCESSING',\n 'DID_UPDATE_ITEM_PROCESS_PROGRESS',\n 'DID_THROW_ITEM_PROCESSING_ERROR',\n ].forEach(function(key) {\n StyleMap[key].status.translateY = calculateFileVerticalCenterOffset;\n });\n StyleMap['DID_THROW_ITEM_PROCESSING_ERROR'].status.translateX = calculateButtonWidth;\n }\n\n // move remove button to right\n if (alignRemoveItemButton && allowRevert) {\n LocalButtons['RevertItemProcessing'].align = 'BUTTON_REMOVE_ITEM_POSITION';\n var _map = StyleMap['DID_COMPLETE_ITEM_PROCESSING'];\n _map.info.translateX = calculateFileInfoOffset;\n _map.status.translateY = calculateFileVerticalCenterOffset;\n _map.processingCompleteIndicator = { opacity: 1, scaleX: 1, scaleY: 1 };\n }\n\n // show/hide RemoveItem button\n if (!allowRemove) {\n LocalButtons['RemoveItem'].disabled = true;\n }\n\n // create the button views\n forin(LocalButtons, function(key, definition) {\n // create button\n var buttonView = root.createChildView(fileActionButton, {\n label: root.query(definition.label),\n icon: root.query(definition.icon),\n opacity: 0,\n });\n\n // should be appended?\n if (enabledButtons.includes(key)) {\n root.appendChildView(buttonView);\n }\n\n // toggle\n if (definition.disabled) {\n buttonView.element.setAttribute('disabled', 'disabled');\n buttonView.element.setAttribute('hidden', 'hidden');\n }\n\n // add position attribute\n buttonView.element.dataset.align = root.query('GET_STYLE_' + definition.align);\n\n // add class\n buttonView.element.classList.add(definition.className);\n\n // handle interactions\n buttonView.on('click', function(e) {\n e.stopPropagation();\n if (definition.disabled) return;\n root.dispatch(definition.action, { query: id });\n });\n\n // set reference\n root.ref['button' + key] = buttonView;\n });\n\n // checkmark\n root.ref.processingCompleteIndicator = root.appendChildView(\n root.createChildView(processingCompleteIndicatorView)\n );\n\n root.ref.processingCompleteIndicator.element.dataset.align = root.query(\n 'GET_STYLE_BUTTON_PROCESS_ITEM_POSITION'\n );\n\n // create file info view\n root.ref.info = root.appendChildView(root.createChildView(fileInfo, { id: id }));\n\n // create file status view\n root.ref.status = root.appendChildView(root.createChildView(fileStatus, { id: id }));\n\n // add progress indicators\n var loadIndicatorView = root.appendChildView(\n root.createChildView(progressIndicator, {\n opacity: 0,\n align: root.query('GET_STYLE_LOAD_INDICATOR_POSITION'),\n })\n );\n\n loadIndicatorView.element.classList.add('filepond--load-indicator');\n root.ref.loadProgressIndicator = loadIndicatorView;\n\n var progressIndicatorView = root.appendChildView(\n root.createChildView(progressIndicator, {\n opacity: 0,\n align: root.query('GET_STYLE_PROGRESS_INDICATOR_POSITION'),\n })\n );\n\n progressIndicatorView.element.classList.add('filepond--process-indicator');\n root.ref.processProgressIndicator = progressIndicatorView;\n\n // current active styles\n root.ref.activeStyles = [];\n };\n\n var write$2 = function write(_ref3) {\n var root = _ref3.root,\n actions = _ref3.actions,\n props = _ref3.props;\n // route actions\n route({ root: root, actions: actions, props: props });\n\n // select last state change action\n var action = actions\n .concat()\n .filter(function(action) {\n return /^DID_/.test(action.type);\n })\n .reverse()\n .find(function(action) {\n return StyleMap[action.type];\n });\n\n // a new action happened, let's get the matching styles\n if (action) {\n // define new active styles\n root.ref.activeStyles = [];\n\n var stylesToApply = StyleMap[action.type];\n forin(DefaultStyle, function(name, defaultStyles) {\n // get reference to control\n var control = root.ref[name];\n\n // loop over all styles for this control\n forin(defaultStyles, function(key, defaultValue) {\n var value =\n stylesToApply[name] && typeof stylesToApply[name][key] !== 'undefined'\n ? stylesToApply[name][key]\n : defaultValue;\n root.ref.activeStyles.push({ control: control, key: key, value: value });\n });\n });\n }\n\n // apply active styles to element\n root.ref.activeStyles.forEach(function(_ref4) {\n var control = _ref4.control,\n key = _ref4.key,\n value = _ref4.value;\n control[key] = typeof value === 'function' ? value(root) : value;\n });\n };\n\n var route = createRoute({\n DID_SET_LABEL_BUTTON_ABORT_ITEM_PROCESSING: function DID_SET_LABEL_BUTTON_ABORT_ITEM_PROCESSING(\n _ref5\n ) {\n var root = _ref5.root,\n action = _ref5.action;\n root.ref.buttonAbortItemProcessing.label = action.value;\n },\n DID_SET_LABEL_BUTTON_ABORT_ITEM_LOAD: function DID_SET_LABEL_BUTTON_ABORT_ITEM_LOAD(_ref6) {\n var root = _ref6.root,\n action = _ref6.action;\n root.ref.buttonAbortItemLoad.label = action.value;\n },\n DID_SET_LABEL_BUTTON_ABORT_ITEM_REMOVAL: function DID_SET_LABEL_BUTTON_ABORT_ITEM_REMOVAL(\n _ref7\n ) {\n var root = _ref7.root,\n action = _ref7.action;\n root.ref.buttonAbortItemRemoval.label = action.value;\n },\n DID_REQUEST_ITEM_PROCESSING: function DID_REQUEST_ITEM_PROCESSING(_ref8) {\n var root = _ref8.root;\n root.ref.processProgressIndicator.spin = true;\n root.ref.processProgressIndicator.progress = 0;\n },\n DID_START_ITEM_LOAD: function DID_START_ITEM_LOAD(_ref9) {\n var root = _ref9.root;\n root.ref.loadProgressIndicator.spin = true;\n root.ref.loadProgressIndicator.progress = 0;\n },\n DID_START_ITEM_REMOVE: function DID_START_ITEM_REMOVE(_ref10) {\n var root = _ref10.root;\n root.ref.processProgressIndicator.spin = true;\n root.ref.processProgressIndicator.progress = 0;\n },\n DID_UPDATE_ITEM_LOAD_PROGRESS: function DID_UPDATE_ITEM_LOAD_PROGRESS(_ref11) {\n var root = _ref11.root,\n action = _ref11.action;\n root.ref.loadProgressIndicator.spin = false;\n root.ref.loadProgressIndicator.progress = action.progress;\n },\n DID_UPDATE_ITEM_PROCESS_PROGRESS: function DID_UPDATE_ITEM_PROCESS_PROGRESS(_ref12) {\n var root = _ref12.root,\n action = _ref12.action;\n root.ref.processProgressIndicator.spin = false;\n root.ref.processProgressIndicator.progress = action.progress;\n },\n });\n\n var file = createView({\n create: create$4,\n write: write$2,\n didCreateView: function didCreateView(root) {\n applyFilters('CREATE_VIEW', Object.assign({}, root, { view: root }));\n },\n name: 'file',\n });\n\n /**\n * Creates the file view\n */\n var create$5 = function create(_ref) {\n var root = _ref.root,\n props = _ref.props;\n\n // filename\n root.ref.fileName = createElement$1('legend');\n root.appendChild(root.ref.fileName);\n\n // file appended\n root.ref.file = root.appendChildView(root.createChildView(file, { id: props.id }));\n\n // data has moved to data.js\n root.ref.data = false;\n };\n\n /**\n * Data storage\n */\n var didLoadItem = function didLoadItem(_ref2) {\n var root = _ref2.root,\n props = _ref2.props;\n // updates the legend of the fieldset so screenreaders can better group buttons\n text(root.ref.fileName, formatFilename(root.query('GET_ITEM_NAME', props.id)));\n };\n\n var fileWrapper = createView({\n create: create$5,\n ignoreRect: true,\n write: createRoute({\n DID_LOAD_ITEM: didLoadItem,\n }),\n\n didCreateView: function didCreateView(root) {\n applyFilters('CREATE_VIEW', Object.assign({}, root, { view: root }));\n },\n tag: 'fieldset',\n name: 'file-wrapper',\n });\n\n var PANEL_SPRING_PROPS = { type: 'spring', damping: 0.6, mass: 7 };\n\n var create$6 = function create(_ref) {\n var root = _ref.root,\n props = _ref.props;\n [\n {\n name: 'top',\n },\n\n {\n name: 'center',\n props: {\n translateY: null,\n scaleY: null,\n },\n\n mixins: {\n animations: {\n scaleY: PANEL_SPRING_PROPS,\n },\n\n styles: ['translateY', 'scaleY'],\n },\n },\n\n {\n name: 'bottom',\n props: {\n translateY: null,\n },\n\n mixins: {\n animations: {\n translateY: PANEL_SPRING_PROPS,\n },\n\n styles: ['translateY'],\n },\n },\n ].forEach(function(section) {\n createSection(root, section, props.name);\n });\n\n root.element.classList.add('filepond--' + props.name);\n\n root.ref.scalable = null;\n };\n\n var createSection = function createSection(root, section, className) {\n var viewConstructor = createView({\n name: 'panel-' + section.name + ' filepond--' + className,\n mixins: section.mixins,\n ignoreRectUpdate: true,\n });\n\n var view = root.createChildView(viewConstructor, section.props);\n\n root.ref[section.name] = root.appendChildView(view);\n };\n\n var write$3 = function write(_ref2) {\n var root = _ref2.root,\n props = _ref2.props;\n\n // update scalable state\n if (root.ref.scalable === null || props.scalable !== root.ref.scalable) {\n root.ref.scalable = isBoolean(props.scalable) ? props.scalable : true;\n root.element.dataset.scalable = root.ref.scalable;\n }\n\n // no height, can't set\n if (!props.height) return;\n\n // get child rects\n var topRect = root.ref.top.rect.element;\n var bottomRect = root.ref.bottom.rect.element;\n\n // make sure height never is smaller than bottom and top seciton heights combined (will probably never happen, but who knows)\n var height = Math.max(topRect.height + bottomRect.height, props.height);\n\n // offset center part\n root.ref.center.translateY = topRect.height;\n\n // scale center part\n // use math ceil to prevent transparent lines because of rounding errors\n root.ref.center.scaleY = (height - topRect.height - bottomRect.height) / 100;\n\n // offset bottom part\n root.ref.bottom.translateY = height - bottomRect.height;\n };\n\n var panel = createView({\n name: 'panel',\n read: function read(_ref3) {\n var root = _ref3.root,\n props = _ref3.props;\n return (props.heightCurrent = root.ref.bottom.translateY);\n },\n write: write$3,\n create: create$6,\n ignoreRect: true,\n mixins: {\n apis: ['height', 'heightCurrent', 'scalable'],\n },\n });\n\n var createDragHelper = function createDragHelper(items) {\n var itemIds = items.map(function(item) {\n return item.id;\n });\n var prevIndex = undefined;\n return {\n setIndex: function setIndex(index) {\n prevIndex = index;\n },\n getIndex: function getIndex() {\n return prevIndex;\n },\n getItemIndex: function getItemIndex(item) {\n return itemIds.indexOf(item.id);\n },\n };\n };\n\n var ITEM_TRANSLATE_SPRING = {\n type: 'spring',\n stiffness: 0.75,\n damping: 0.45,\n mass: 10,\n };\n\n var ITEM_SCALE_SPRING = 'spring';\n\n var StateMap = {\n DID_START_ITEM_LOAD: 'busy',\n DID_UPDATE_ITEM_LOAD_PROGRESS: 'loading',\n DID_THROW_ITEM_INVALID: 'load-invalid',\n DID_THROW_ITEM_LOAD_ERROR: 'load-error',\n DID_LOAD_ITEM: 'idle',\n DID_THROW_ITEM_REMOVE_ERROR: 'remove-error',\n DID_START_ITEM_REMOVE: 'busy',\n DID_START_ITEM_PROCESSING: 'busy processing',\n DID_REQUEST_ITEM_PROCESSING: 'busy processing',\n DID_UPDATE_ITEM_PROCESS_PROGRESS: 'processing',\n DID_COMPLETE_ITEM_PROCESSING: 'processing-complete',\n DID_THROW_ITEM_PROCESSING_ERROR: 'processing-error',\n DID_THROW_ITEM_PROCESSING_REVERT_ERROR: 'processing-revert-error',\n DID_ABORT_ITEM_PROCESSING: 'cancelled',\n DID_REVERT_ITEM_PROCESSING: 'idle',\n };\n\n /**\n * Creates the file view\n */\n var create$7 = function create(_ref) {\n var root = _ref.root,\n props = _ref.props;\n\n // select\n root.ref.handleClick = function(e) {\n return root.dispatch('DID_ACTIVATE_ITEM', { id: props.id });\n };\n\n // set id\n root.element.id = 'filepond--item-' + props.id;\n root.element.addEventListener('click', root.ref.handleClick);\n\n // file view\n root.ref.container = root.appendChildView(\n root.createChildView(fileWrapper, { id: props.id })\n );\n\n // file panel\n root.ref.panel = root.appendChildView(root.createChildView(panel, { name: 'item-panel' }));\n\n // default start height\n root.ref.panel.height = null;\n\n // by default not marked for removal\n props.markedForRemoval = false;\n\n // if not allowed to reorder file items, exit here\n if (!root.query('GET_ALLOW_REORDER')) return;\n\n // set to idle so shows grab cursor\n root.element.dataset.dragState = 'idle';\n\n var grab = function grab(e) {\n if (!e.isPrimary) return;\n\n var removedActivateListener = false;\n\n var origin = {\n x: e.pageX,\n y: e.pageY,\n };\n\n props.dragOrigin = {\n x: root.translateX,\n y: root.translateY,\n };\n\n props.dragCenter = {\n x: e.offsetX,\n y: e.offsetY,\n };\n\n var dragState = createDragHelper(root.query('GET_ACTIVE_ITEMS'));\n\n root.dispatch('DID_GRAB_ITEM', { id: props.id, dragState: dragState });\n\n var drag = function drag(e) {\n if (!e.isPrimary) return;\n\n e.stopPropagation();\n e.preventDefault();\n\n props.dragOffset = {\n x: e.pageX - origin.x,\n y: e.pageY - origin.y,\n };\n\n // if dragged stop listening to clicks, will re-add when done dragging\n var dist =\n props.dragOffset.x * props.dragOffset.x +\n props.dragOffset.y * props.dragOffset.y;\n if (dist > 16 && !removedActivateListener) {\n removedActivateListener = true;\n root.element.removeEventListener('click', root.ref.handleClick);\n }\n\n root.dispatch('DID_DRAG_ITEM', { id: props.id, dragState: dragState });\n };\n\n var drop = function drop(e) {\n if (!e.isPrimary) return;\n\n document.removeEventListener('pointermove', drag);\n document.removeEventListener('pointerup', drop);\n\n props.dragOffset = {\n x: e.pageX - origin.x,\n y: e.pageY - origin.y,\n };\n\n root.dispatch('DID_DROP_ITEM', { id: props.id, dragState: dragState });\n\n // start listening to clicks again\n if (removedActivateListener) {\n setTimeout(function() {\n return root.element.addEventListener('click', root.ref.handleClick);\n }, 0);\n }\n };\n\n document.addEventListener('pointermove', drag);\n document.addEventListener('pointerup', drop);\n };\n\n root.element.addEventListener('pointerdown', grab);\n };\n\n var route$1 = createRoute({\n DID_UPDATE_PANEL_HEIGHT: function DID_UPDATE_PANEL_HEIGHT(_ref2) {\n var root = _ref2.root,\n action = _ref2.action;\n root.height = action.height;\n },\n });\n\n var write$4 = createRoute(\n {\n DID_GRAB_ITEM: function DID_GRAB_ITEM(_ref3) {\n var root = _ref3.root,\n props = _ref3.props;\n props.dragOrigin = {\n x: root.translateX,\n y: root.translateY,\n };\n },\n DID_DRAG_ITEM: function DID_DRAG_ITEM(_ref4) {\n var root = _ref4.root;\n root.element.dataset.dragState = 'drag';\n },\n DID_DROP_ITEM: function DID_DROP_ITEM(_ref5) {\n var root = _ref5.root,\n props = _ref5.props;\n props.dragOffset = null;\n props.dragOrigin = null;\n root.element.dataset.dragState = 'drop';\n },\n },\n function(_ref6) {\n var root = _ref6.root,\n actions = _ref6.actions,\n props = _ref6.props,\n shouldOptimize = _ref6.shouldOptimize;\n\n if (root.element.dataset.dragState === 'drop') {\n if (root.scaleX <= 1) {\n root.element.dataset.dragState = 'idle';\n }\n }\n\n // select last state change action\n var action = actions\n .concat()\n .filter(function(action) {\n return /^DID_/.test(action.type);\n })\n .reverse()\n .find(function(action) {\n return StateMap[action.type];\n });\n\n // no need to set same state twice\n if (action && action.type !== props.currentState) {\n // set current state\n props.currentState = action.type;\n\n // set state\n root.element.dataset.filepondItemState = StateMap[props.currentState] || '';\n }\n\n // route actions\n var aspectRatio =\n root.query('GET_ITEM_PANEL_ASPECT_RATIO') || root.query('GET_PANEL_ASPECT_RATIO');\n if (!aspectRatio) {\n route$1({ root: root, actions: actions, props: props });\n if (!root.height && root.ref.container.rect.element.height > 0) {\n root.height = root.ref.container.rect.element.height;\n }\n } else if (!shouldOptimize) {\n root.height = root.rect.element.width * aspectRatio;\n }\n\n // sync panel height with item height\n if (shouldOptimize) {\n root.ref.panel.height = null;\n }\n\n root.ref.panel.height = root.height;\n }\n );\n\n var item = createView({\n create: create$7,\n write: write$4,\n destroy: function destroy(_ref7) {\n var root = _ref7.root,\n props = _ref7.props;\n root.element.removeEventListener('click', root.ref.handleClick);\n root.dispatch('RELEASE_ITEM', { query: props.id });\n },\n tag: 'li',\n name: 'item',\n mixins: {\n apis: [\n 'id',\n 'interactionMethod',\n 'markedForRemoval',\n 'spawnDate',\n 'dragCenter',\n 'dragOrigin',\n 'dragOffset',\n ],\n styles: ['translateX', 'translateY', 'scaleX', 'scaleY', 'opacity', 'height'],\n\n animations: {\n scaleX: ITEM_SCALE_SPRING,\n scaleY: ITEM_SCALE_SPRING,\n translateX: ITEM_TRANSLATE_SPRING,\n translateY: ITEM_TRANSLATE_SPRING,\n opacity: { type: 'tween', duration: 150 },\n },\n },\n });\n\n var getItemsPerRow = function(horizontalSpace, itemWidth) {\n // add one pixel leeway, when using percentages for item width total items can be 1.99 per row\n\n return Math.max(1, Math.floor((horizontalSpace + 1) / itemWidth));\n };\n\n var getItemIndexByPosition = function getItemIndexByPosition(view, children, positionInView) {\n if (!positionInView) return;\n\n var horizontalSpace = view.rect.element.width;\n // const children = view.childViews;\n var l = children.length;\n var last = null;\n\n // -1, don't move items to accomodate (either add to top or bottom)\n if (l === 0 || positionInView.top < children[0].rect.element.top) return -1;\n\n // let's get the item width\n var item = children[0];\n var itemRect = item.rect.element;\n var itemHorizontalMargin = itemRect.marginLeft + itemRect.marginRight;\n var itemWidth = itemRect.width + itemHorizontalMargin;\n var itemsPerRow = getItemsPerRow(horizontalSpace, itemWidth);\n\n // stack\n if (itemsPerRow === 1) {\n for (var index = 0; index < l; index++) {\n var child = children[index];\n var childMid = child.rect.outer.top + child.rect.element.height * 0.5;\n if (positionInView.top < childMid) {\n return index;\n }\n }\n return l;\n }\n\n // grid\n var itemVerticalMargin = itemRect.marginTop + itemRect.marginBottom;\n var itemHeight = itemRect.height + itemVerticalMargin;\n for (var _index = 0; _index < l; _index++) {\n var indexX = _index % itemsPerRow;\n var indexY = Math.floor(_index / itemsPerRow);\n\n var offsetX = indexX * itemWidth;\n var offsetY = indexY * itemHeight;\n\n var itemTop = offsetY - itemRect.marginTop;\n var itemRight = offsetX + itemWidth;\n var itemBottom = offsetY + itemHeight + itemRect.marginBottom;\n\n if (positionInView.top < itemBottom && positionInView.top > itemTop) {\n if (positionInView.left < itemRight) {\n return _index;\n } else if (_index !== l - 1) {\n last = _index;\n } else {\n last = null;\n }\n }\n }\n\n if (last !== null) {\n return last;\n }\n\n return l;\n };\n\n var dropAreaDimensions = {\n height: 0,\n width: 0,\n get getHeight() {\n return this.height;\n },\n set setHeight(val) {\n if (this.height === 0 || val === 0) this.height = val;\n },\n get getWidth() {\n return this.width;\n },\n set setWidth(val) {\n if (this.width === 0 || val === 0) this.width = val;\n },\n setDimensions: function setDimensions(height, width) {\n if (this.height === 0 || height === 0) this.height = height;\n if (this.width === 0 || width === 0) this.width = width;\n },\n };\n\n var create$8 = function create(_ref) {\n var root = _ref.root;\n // need to set role to list as otherwise it won't be read as a list by VoiceOver\n attr(root.element, 'role', 'list');\n\n root.ref.lastItemSpanwDate = Date.now();\n };\n\n /**\n * Inserts a new item\n * @param root\n * @param action\n */\n var addItemView = function addItemView(_ref2) {\n var root = _ref2.root,\n action = _ref2.action;\n var id = action.id,\n index = action.index,\n interactionMethod = action.interactionMethod;\n\n root.ref.addIndex = index;\n\n var now = Date.now();\n var spawnDate = now;\n var opacity = 1;\n\n if (interactionMethod !== InteractionMethod.NONE) {\n opacity = 0;\n var cooldown = root.query('GET_ITEM_INSERT_INTERVAL');\n var dist = now - root.ref.lastItemSpanwDate;\n spawnDate = dist < cooldown ? now + (cooldown - dist) : now;\n }\n\n root.ref.lastItemSpanwDate = spawnDate;\n\n root.appendChildView(\n root.createChildView(\n // view type\n item,\n\n // props\n {\n spawnDate: spawnDate,\n id: id,\n opacity: opacity,\n interactionMethod: interactionMethod,\n }\n ),\n\n index\n );\n };\n\n var moveItem = function moveItem(item, x, y) {\n var vx = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n var vy = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n // set to null to remove animation while dragging\n if (item.dragOffset) {\n item.translateX = null;\n item.translateY = null;\n item.translateX = item.dragOrigin.x + item.dragOffset.x;\n item.translateY = item.dragOrigin.y + item.dragOffset.y;\n item.scaleX = 1.025;\n item.scaleY = 1.025;\n } else {\n item.translateX = x;\n item.translateY = y;\n\n if (Date.now() > item.spawnDate) {\n // reveal element\n if (item.opacity === 0) {\n introItemView(item, x, y, vx, vy);\n }\n\n // make sure is default scale every frame\n item.scaleX = 1;\n item.scaleY = 1;\n item.opacity = 1;\n }\n }\n };\n\n var introItemView = function introItemView(item, x, y, vx, vy) {\n if (item.interactionMethod === InteractionMethod.NONE) {\n item.translateX = null;\n item.translateX = x;\n item.translateY = null;\n item.translateY = y;\n } else if (item.interactionMethod === InteractionMethod.DROP) {\n item.translateX = null;\n item.translateX = x - vx * 20;\n\n item.translateY = null;\n item.translateY = y - vy * 10;\n\n item.scaleX = 0.8;\n item.scaleY = 0.8;\n } else if (item.interactionMethod === InteractionMethod.BROWSE) {\n item.translateY = null;\n item.translateY = y - 30;\n } else if (item.interactionMethod === InteractionMethod.API) {\n item.translateX = null;\n item.translateX = x - 30;\n item.translateY = null;\n }\n };\n\n /**\n * Removes an existing item\n * @param root\n * @param action\n */\n var removeItemView = function removeItemView(_ref3) {\n var root = _ref3.root,\n action = _ref3.action;\n var id = action.id;\n\n // get the view matching the given id\n var view = root.childViews.find(function(child) {\n return child.id === id;\n });\n\n // if no view found, exit\n if (!view) {\n return;\n }\n\n // animate view out of view\n view.scaleX = 0.9;\n view.scaleY = 0.9;\n view.opacity = 0;\n\n // mark for removal\n view.markedForRemoval = true;\n };\n\n var getItemHeight = function getItemHeight(child) {\n return (\n child.rect.element.height +\n child.rect.element.marginBottom * 0.5 +\n child.rect.element.marginTop * 0.5\n );\n };\n var getItemWidth = function getItemWidth(child) {\n return (\n child.rect.element.width +\n child.rect.element.marginLeft * 0.5 +\n child.rect.element.marginRight * 0.5\n );\n };\n\n var dragItem = function dragItem(_ref4) {\n var root = _ref4.root,\n action = _ref4.action;\n var id = action.id,\n dragState = action.dragState;\n\n // reference to item\n var item = root.query('GET_ITEM', { id: id });\n\n // get the view matching the given id\n var view = root.childViews.find(function(child) {\n return child.id === id;\n });\n\n var numItems = root.childViews.length;\n var oldIndex = dragState.getItemIndex(item);\n\n // if no view found, exit\n if (!view) return;\n\n var dragPosition = {\n x: view.dragOrigin.x + view.dragOffset.x + view.dragCenter.x,\n y: view.dragOrigin.y + view.dragOffset.y + view.dragCenter.y,\n };\n\n // get drag area dimensions\n var dragHeight = getItemHeight(view);\n var dragWidth = getItemWidth(view);\n\n // get rows and columns (There will always be at least one row and one column if a file is present)\n var cols = Math.floor(root.rect.outer.width / dragWidth);\n if (cols > numItems) cols = numItems;\n\n // rows are used to find when we have left the preview area bounding box\n var rows = Math.floor(numItems / cols + 1);\n\n dropAreaDimensions.setHeight = dragHeight * rows;\n dropAreaDimensions.setWidth = dragWidth * cols;\n\n // get new index of dragged item\n var location = {\n y: Math.floor(dragPosition.y / dragHeight),\n x: Math.floor(dragPosition.x / dragWidth),\n getGridIndex: function getGridIndex() {\n if (\n dragPosition.y > dropAreaDimensions.getHeight ||\n dragPosition.y < 0 ||\n dragPosition.x > dropAreaDimensions.getWidth ||\n dragPosition.x < 0\n )\n return oldIndex;\n return this.y * cols + this.x;\n },\n getColIndex: function getColIndex() {\n var items = root.query('GET_ACTIVE_ITEMS');\n var visibleChildren = root.childViews.filter(function(child) {\n return child.rect.element.height;\n });\n var children = items.map(function(item) {\n return visibleChildren.find(function(childView) {\n return childView.id === item.id;\n });\n });\n\n var currentIndex = children.findIndex(function(child) {\n return child === view;\n });\n var dragHeight = getItemHeight(view);\n var l = children.length;\n var idx = l;\n var childHeight = 0;\n var childBottom = 0;\n var childTop = 0;\n for (var i = 0; i < l; i++) {\n childHeight = getItemHeight(children[i]);\n childTop = childBottom;\n childBottom = childTop + childHeight;\n if (dragPosition.y < childBottom) {\n if (currentIndex > i) {\n if (dragPosition.y < childTop + dragHeight) {\n idx = i;\n break;\n }\n continue;\n }\n idx = i;\n break;\n }\n }\n return idx;\n },\n };\n\n // get new index\n var index = cols > 1 ? location.getGridIndex() : location.getColIndex();\n root.dispatch('MOVE_ITEM', { query: view, index: index });\n\n // if the index of the item changed, dispatch reorder action\n var currentIndex = dragState.getIndex();\n\n if (currentIndex === undefined || currentIndex !== index) {\n dragState.setIndex(index);\n\n if (currentIndex === undefined) return;\n\n root.dispatch('DID_REORDER_ITEMS', {\n items: root.query('GET_ACTIVE_ITEMS'),\n origin: oldIndex,\n target: index,\n });\n }\n };\n\n /**\n * Setup action routes\n */\n var route$2 = createRoute({\n DID_ADD_ITEM: addItemView,\n DID_REMOVE_ITEM: removeItemView,\n DID_DRAG_ITEM: dragItem,\n });\n\n /**\n * Write to view\n * @param root\n * @param actions\n * @param props\n */\n var write$5 = function write(_ref5) {\n var root = _ref5.root,\n props = _ref5.props,\n actions = _ref5.actions,\n shouldOptimize = _ref5.shouldOptimize;\n // route actions\n route$2({ root: root, props: props, actions: actions });\n var dragCoordinates = props.dragCoordinates;\n\n // available space on horizontal axis\n var horizontalSpace = root.rect.element.width;\n\n // only draw children that have dimensions\n var visibleChildren = root.childViews.filter(function(child) {\n return child.rect.element.height;\n });\n\n // sort based on current active items\n var children = root\n .query('GET_ACTIVE_ITEMS')\n .map(function(item) {\n return visibleChildren.find(function(child) {\n return child.id === item.id;\n });\n })\n .filter(function(item) {\n return item;\n });\n\n // get index\n var dragIndex = dragCoordinates\n ? getItemIndexByPosition(root, children, dragCoordinates)\n : null;\n\n // add index is used to reserve the dropped/added item index till the actual item is rendered\n var addIndex = root.ref.addIndex || null;\n\n // add index no longer needed till possibly next draw\n root.ref.addIndex = null;\n\n var dragIndexOffset = 0;\n var removeIndexOffset = 0;\n var addIndexOffset = 0;\n\n if (children.length === 0) return;\n\n var childRect = children[0].rect.element;\n var itemVerticalMargin = childRect.marginTop + childRect.marginBottom;\n var itemHorizontalMargin = childRect.marginLeft + childRect.marginRight;\n var itemWidth = childRect.width + itemHorizontalMargin;\n var itemHeight = childRect.height + itemVerticalMargin;\n var itemsPerRow = getItemsPerRow(horizontalSpace, itemWidth);\n\n // stack\n if (itemsPerRow === 1) {\n var offsetY = 0;\n var dragOffset = 0;\n\n children.forEach(function(child, index) {\n if (dragIndex) {\n var dist = index - dragIndex;\n if (dist === -2) {\n dragOffset = -itemVerticalMargin * 0.25;\n } else if (dist === -1) {\n dragOffset = -itemVerticalMargin * 0.75;\n } else if (dist === 0) {\n dragOffset = itemVerticalMargin * 0.75;\n } else if (dist === 1) {\n dragOffset = itemVerticalMargin * 0.25;\n } else {\n dragOffset = 0;\n }\n }\n\n if (shouldOptimize) {\n child.translateX = null;\n child.translateY = null;\n }\n\n if (!child.markedForRemoval) {\n moveItem(child, 0, offsetY + dragOffset);\n }\n\n var itemHeight = child.rect.element.height + itemVerticalMargin;\n\n var visualHeight = itemHeight * (child.markedForRemoval ? child.opacity : 1);\n\n offsetY += visualHeight;\n });\n }\n // grid\n else {\n var prevX = 0;\n var prevY = 0;\n\n children.forEach(function(child, index) {\n if (index === dragIndex) {\n dragIndexOffset = 1;\n }\n\n if (index === addIndex) {\n addIndexOffset += 1;\n }\n\n if (child.markedForRemoval && child.opacity < 0.5) {\n removeIndexOffset -= 1;\n }\n\n var visualIndex = index + addIndexOffset + dragIndexOffset + removeIndexOffset;\n\n var indexX = visualIndex % itemsPerRow;\n var indexY = Math.floor(visualIndex / itemsPerRow);\n\n var offsetX = indexX * itemWidth;\n var offsetY = indexY * itemHeight;\n\n var vectorX = Math.sign(offsetX - prevX);\n var vectorY = Math.sign(offsetY - prevY);\n\n prevX = offsetX;\n prevY = offsetY;\n\n if (child.markedForRemoval) return;\n\n if (shouldOptimize) {\n child.translateX = null;\n child.translateY = null;\n }\n\n moveItem(child, offsetX, offsetY, vectorX, vectorY);\n });\n }\n };\n\n /**\n * Filters actions that are meant specifically for a certain child of the list\n * @param child\n * @param actions\n */\n var filterSetItemActions = function filterSetItemActions(child, actions) {\n return actions.filter(function(action) {\n // if action has an id, filter out actions that don't have this child id\n if (action.data && action.data.id) {\n return child.id === action.data.id;\n }\n\n // allow all other actions\n return true;\n });\n };\n\n var list = createView({\n create: create$8,\n write: write$5,\n tag: 'ul',\n name: 'list',\n didWriteView: function didWriteView(_ref6) {\n var root = _ref6.root;\n root.childViews\n .filter(function(view) {\n return view.markedForRemoval && view.opacity === 0 && view.resting;\n })\n .forEach(function(view) {\n view._destroy();\n root.removeChildView(view);\n });\n },\n filterFrameActionsForChild: filterSetItemActions,\n mixins: {\n apis: ['dragCoordinates'],\n },\n });\n\n var create$9 = function create(_ref) {\n var root = _ref.root,\n props = _ref.props;\n root.ref.list = root.appendChildView(root.createChildView(list));\n props.dragCoordinates = null;\n props.overflowing = false;\n };\n\n var storeDragCoordinates = function storeDragCoordinates(_ref2) {\n var root = _ref2.root,\n props = _ref2.props,\n action = _ref2.action;\n if (!root.query('GET_ITEM_INSERT_LOCATION_FREEDOM')) return;\n props.dragCoordinates = {\n left: action.position.scopeLeft - root.ref.list.rect.element.left,\n top:\n action.position.scopeTop -\n (root.rect.outer.top + root.rect.element.marginTop + root.rect.element.scrollTop),\n };\n };\n\n var clearDragCoordinates = function clearDragCoordinates(_ref3) {\n var props = _ref3.props;\n props.dragCoordinates = null;\n };\n\n var route$3 = createRoute({\n DID_DRAG: storeDragCoordinates,\n DID_END_DRAG: clearDragCoordinates,\n });\n\n var write$6 = function write(_ref4) {\n var root = _ref4.root,\n props = _ref4.props,\n actions = _ref4.actions;\n\n // route actions\n route$3({ root: root, props: props, actions: actions });\n\n // current drag position\n root.ref.list.dragCoordinates = props.dragCoordinates;\n\n // if currently overflowing but no longer received overflow\n if (props.overflowing && !props.overflow) {\n props.overflowing = false;\n\n // reset overflow state\n root.element.dataset.state = '';\n root.height = null;\n }\n\n // if is not overflowing currently but does receive overflow value\n if (props.overflow) {\n var newHeight = Math.round(props.overflow);\n if (newHeight !== root.height) {\n props.overflowing = true;\n root.element.dataset.state = 'overflow';\n root.height = newHeight;\n }\n }\n };\n\n var listScroller = createView({\n create: create$9,\n write: write$6,\n name: 'list-scroller',\n mixins: {\n apis: ['overflow', 'dragCoordinates'],\n styles: ['height', 'translateY'],\n animations: {\n translateY: 'spring',\n },\n },\n });\n\n var attrToggle = function attrToggle(element, name, state) {\n var enabledValue = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '';\n if (state) {\n attr(element, name, enabledValue);\n } else {\n element.removeAttribute(name);\n }\n };\n\n var resetFileInput = function resetFileInput(input) {\n // no value, no need to reset\n if (!input || input.value === '') {\n return;\n }\n\n try {\n // for modern browsers\n input.value = '';\n } catch (err) {}\n\n // for IE10\n if (input.value) {\n // quickly append input to temp form and reset form\n var form = createElement$1('form');\n var parentNode = input.parentNode;\n var ref = input.nextSibling;\n form.appendChild(input);\n form.reset();\n\n // re-inject input where it originally was\n if (ref) {\n parentNode.insertBefore(input, ref);\n } else {\n parentNode.appendChild(input);\n }\n }\n };\n\n var create$a = function create(_ref) {\n var root = _ref.root,\n props = _ref.props;\n\n // set id so can be referenced from outside labels\n root.element.id = 'filepond--browser-' + props.id;\n\n // set name of element (is removed when a value is set)\n attr(root.element, 'name', root.query('GET_NAME'));\n\n // we have to link this element to the status element\n attr(root.element, 'aria-controls', 'filepond--assistant-' + props.id);\n\n // set label, we use labelled by as otherwise the screenreader does not read the \"browse\" text in the label (as it has tabindex: 0)\n attr(root.element, 'aria-labelledby', 'filepond--drop-label-' + props.id);\n\n // set configurable props\n setAcceptedFileTypes({\n root: root,\n action: { value: root.query('GET_ACCEPTED_FILE_TYPES') },\n });\n toggleAllowMultiple({ root: root, action: { value: root.query('GET_ALLOW_MULTIPLE') } });\n toggleDirectoryFilter({\n root: root,\n action: { value: root.query('GET_ALLOW_DIRECTORIES_ONLY') },\n });\n toggleDisabled({ root: root });\n toggleRequired({ root: root, action: { value: root.query('GET_REQUIRED') } });\n setCaptureMethod({ root: root, action: { value: root.query('GET_CAPTURE_METHOD') } });\n\n // handle changes to the input field\n root.ref.handleChange = function(e) {\n if (!root.element.value) {\n return;\n }\n\n // extract files and move value of webkitRelativePath path to _relativePath\n var files = Array.from(root.element.files).map(function(file) {\n file._relativePath = file.webkitRelativePath;\n return file;\n });\n\n // we add a little delay so the OS file select window can move out of the way before we add our file\n setTimeout(function() {\n // load files\n props.onload(files);\n\n // reset input, it's just for exposing a method to drop files, should not retain any state\n resetFileInput(root.element);\n }, 250);\n };\n\n root.element.addEventListener('change', root.ref.handleChange);\n };\n\n var setAcceptedFileTypes = function setAcceptedFileTypes(_ref2) {\n var root = _ref2.root,\n action = _ref2.action;\n if (!root.query('GET_ALLOW_SYNC_ACCEPT_ATTRIBUTE')) return;\n attrToggle(\n root.element,\n 'accept',\n !!action.value,\n action.value ? action.value.join(',') : ''\n );\n };\n\n var toggleAllowMultiple = function toggleAllowMultiple(_ref3) {\n var root = _ref3.root,\n action = _ref3.action;\n attrToggle(root.element, 'multiple', action.value);\n };\n\n var toggleDirectoryFilter = function toggleDirectoryFilter(_ref4) {\n var root = _ref4.root,\n action = _ref4.action;\n attrToggle(root.element, 'webkitdirectory', action.value);\n };\n\n var toggleDisabled = function toggleDisabled(_ref5) {\n var root = _ref5.root;\n var isDisabled = root.query('GET_DISABLED');\n var doesAllowBrowse = root.query('GET_ALLOW_BROWSE');\n var disableField = isDisabled || !doesAllowBrowse;\n attrToggle(root.element, 'disabled', disableField);\n };\n\n var toggleRequired = function toggleRequired(_ref6) {\n var root = _ref6.root,\n action = _ref6.action;\n // want to remove required, always possible\n if (!action.value) {\n attrToggle(root.element, 'required', false);\n }\n // if want to make required, only possible when zero items\n else if (root.query('GET_TOTAL_ITEMS') === 0) {\n attrToggle(root.element, 'required', true);\n }\n };\n\n var setCaptureMethod = function setCaptureMethod(_ref7) {\n var root = _ref7.root,\n action = _ref7.action;\n attrToggle(\n root.element,\n 'capture',\n !!action.value,\n action.value === true ? '' : action.value\n );\n };\n\n var updateRequiredStatus = function updateRequiredStatus(_ref8) {\n var root = _ref8.root;\n var element = root.element;\n // always remove the required attribute when more than zero items\n if (root.query('GET_TOTAL_ITEMS') > 0) {\n attrToggle(element, 'required', false);\n attrToggle(element, 'name', false);\n } else {\n // add name attribute\n attrToggle(element, 'name', true, root.query('GET_NAME'));\n\n // remove any validation messages\n var shouldCheckValidity = root.query('GET_CHECK_VALIDITY');\n if (shouldCheckValidity) {\n element.setCustomValidity('');\n }\n\n // we only add required if the field has been deemed required\n if (root.query('GET_REQUIRED')) {\n attrToggle(element, 'required', true);\n }\n }\n };\n\n var updateFieldValidityStatus = function updateFieldValidityStatus(_ref9) {\n var root = _ref9.root;\n var shouldCheckValidity = root.query('GET_CHECK_VALIDITY');\n if (!shouldCheckValidity) return;\n root.element.setCustomValidity(root.query('GET_LABEL_INVALID_FIELD'));\n };\n\n var browser = createView({\n tag: 'input',\n name: 'browser',\n ignoreRect: true,\n ignoreRectUpdate: true,\n attributes: {\n type: 'file',\n },\n\n create: create$a,\n destroy: function destroy(_ref10) {\n var root = _ref10.root;\n root.element.removeEventListener('change', root.ref.handleChange);\n },\n write: createRoute({\n DID_LOAD_ITEM: updateRequiredStatus,\n DID_REMOVE_ITEM: updateRequiredStatus,\n DID_THROW_ITEM_INVALID: updateFieldValidityStatus,\n\n DID_SET_DISABLED: toggleDisabled,\n DID_SET_ALLOW_BROWSE: toggleDisabled,\n DID_SET_ALLOW_DIRECTORIES_ONLY: toggleDirectoryFilter,\n DID_SET_ALLOW_MULTIPLE: toggleAllowMultiple,\n DID_SET_ACCEPTED_FILE_TYPES: setAcceptedFileTypes,\n DID_SET_CAPTURE_METHOD: setCaptureMethod,\n DID_SET_REQUIRED: toggleRequired,\n }),\n });\n\n var Key = {\n ENTER: 13,\n SPACE: 32,\n };\n\n var create$b = function create(_ref) {\n var root = _ref.root,\n props = _ref.props;\n\n // create the label and link it to the file browser\n var label = createElement$1('label');\n attr(label, 'for', 'filepond--browser-' + props.id);\n\n // use for labeling file input (aria-labelledby on file input)\n attr(label, 'id', 'filepond--drop-label-' + props.id);\n\n // hide the label for screenreaders, the input element will read the contents of the label when it's focussed. If we don't set aria-hidden the screenreader will also navigate the contents of the label separately from the input.\n attr(label, 'aria-hidden', 'true');\n\n // handle keys\n root.ref.handleKeyDown = function(e) {\n var isActivationKey = e.keyCode === Key.ENTER || e.keyCode === Key.SPACE;\n if (!isActivationKey) return;\n // stops from triggering the element a second time\n e.preventDefault();\n\n // click link (will then in turn activate file input)\n root.ref.label.click();\n };\n\n root.ref.handleClick = function(e) {\n var isLabelClick = e.target === label || label.contains(e.target);\n\n // don't want to click twice\n if (isLabelClick) return;\n\n // click link (will then in turn activate file input)\n root.ref.label.click();\n };\n\n // attach events\n label.addEventListener('keydown', root.ref.handleKeyDown);\n root.element.addEventListener('click', root.ref.handleClick);\n\n // update\n updateLabelValue(label, props.caption);\n\n // add!\n root.appendChild(label);\n root.ref.label = label;\n };\n\n var updateLabelValue = function updateLabelValue(label, value) {\n label.innerHTML = value;\n var clickable = label.querySelector('.filepond--label-action');\n if (clickable) {\n attr(clickable, 'tabindex', '0');\n }\n return value;\n };\n\n var dropLabel = createView({\n name: 'drop-label',\n ignoreRect: true,\n create: create$b,\n destroy: function destroy(_ref2) {\n var root = _ref2.root;\n root.ref.label.addEventListener('keydown', root.ref.handleKeyDown);\n root.element.removeEventListener('click', root.ref.handleClick);\n },\n write: createRoute({\n DID_SET_LABEL_IDLE: function DID_SET_LABEL_IDLE(_ref3) {\n var root = _ref3.root,\n action = _ref3.action;\n updateLabelValue(root.ref.label, action.value);\n },\n }),\n\n mixins: {\n styles: ['opacity', 'translateX', 'translateY'],\n animations: {\n opacity: { type: 'tween', duration: 150 },\n translateX: 'spring',\n translateY: 'spring',\n },\n },\n });\n\n var blob = createView({\n name: 'drip-blob',\n ignoreRect: true,\n mixins: {\n styles: ['translateX', 'translateY', 'scaleX', 'scaleY', 'opacity'],\n animations: {\n scaleX: 'spring',\n scaleY: 'spring',\n translateX: 'spring',\n translateY: 'spring',\n opacity: { type: 'tween', duration: 250 },\n },\n },\n });\n\n var addBlob = function addBlob(_ref) {\n var root = _ref.root;\n var centerX = root.rect.element.width * 0.5;\n var centerY = root.rect.element.height * 0.5;\n\n root.ref.blob = root.appendChildView(\n root.createChildView(blob, {\n opacity: 0,\n scaleX: 2.5,\n scaleY: 2.5,\n translateX: centerX,\n translateY: centerY,\n })\n );\n };\n\n var moveBlob = function moveBlob(_ref2) {\n var root = _ref2.root,\n action = _ref2.action;\n if (!root.ref.blob) {\n addBlob({ root: root });\n return;\n }\n\n root.ref.blob.translateX = action.position.scopeLeft;\n root.ref.blob.translateY = action.position.scopeTop;\n root.ref.blob.scaleX = 1;\n root.ref.blob.scaleY = 1;\n root.ref.blob.opacity = 1;\n };\n\n var hideBlob = function hideBlob(_ref3) {\n var root = _ref3.root;\n if (!root.ref.blob) {\n return;\n }\n root.ref.blob.opacity = 0;\n };\n\n var explodeBlob = function explodeBlob(_ref4) {\n var root = _ref4.root;\n if (!root.ref.blob) {\n return;\n }\n root.ref.blob.scaleX = 2.5;\n root.ref.blob.scaleY = 2.5;\n root.ref.blob.opacity = 0;\n };\n\n var write$7 = function write(_ref5) {\n var root = _ref5.root,\n props = _ref5.props,\n actions = _ref5.actions;\n route$4({ root: root, props: props, actions: actions });\n var blob = root.ref.blob;\n\n if (actions.length === 0 && blob && blob.opacity === 0) {\n root.removeChildView(blob);\n root.ref.blob = null;\n }\n };\n\n var route$4 = createRoute({\n DID_DRAG: moveBlob,\n DID_DROP: explodeBlob,\n DID_END_DRAG: hideBlob,\n });\n\n var drip = createView({\n ignoreRect: true,\n ignoreRectUpdate: true,\n name: 'drip',\n write: write$7,\n });\n\n var setInputFiles = function setInputFiles(element, files) {\n try {\n // Create a DataTransfer instance and add a newly created file\n var dataTransfer = new DataTransfer();\n files.forEach(function(file) {\n if (file instanceof File) {\n dataTransfer.items.add(file);\n } else {\n dataTransfer.items.add(\n new File([file], file.name, {\n type: file.type,\n })\n );\n }\n });\n\n // Assign the DataTransfer files list to the file input\n element.files = dataTransfer.files;\n } catch (err) {\n return false;\n }\n return true;\n };\n\n var create$c = function create(_ref) {\n var root = _ref.root;\n return (root.ref.fields = {});\n };\n\n var getField = function getField(root, id) {\n return root.ref.fields[id];\n };\n\n var syncFieldPositionsWithItems = function syncFieldPositionsWithItems(root) {\n root.query('GET_ACTIVE_ITEMS').forEach(function(item) {\n if (!root.ref.fields[item.id]) return;\n root.element.appendChild(root.ref.fields[item.id]);\n });\n };\n\n var didReorderItems = function didReorderItems(_ref2) {\n var root = _ref2.root;\n return syncFieldPositionsWithItems(root);\n };\n\n var didAddItem = function didAddItem(_ref3) {\n var root = _ref3.root,\n action = _ref3.action;\n var fileItem = root.query('GET_ITEM', action.id);\n var isLocalFile = fileItem.origin === FileOrigin.LOCAL;\n var shouldUseFileInput = !isLocalFile && root.query('SHOULD_UPDATE_FILE_INPUT');\n var dataContainer = createElement$1('input');\n dataContainer.type = shouldUseFileInput ? 'file' : 'hidden';\n dataContainer.name = root.query('GET_NAME');\n dataContainer.disabled = root.query('GET_DISABLED');\n root.ref.fields[action.id] = dataContainer;\n syncFieldPositionsWithItems(root);\n };\n\n var didLoadItem$1 = function didLoadItem(_ref4) {\n var root = _ref4.root,\n action = _ref4.action;\n var field = getField(root, action.id);\n if (!field) return;\n\n // store server ref in hidden input\n if (action.serverFileReference !== null) field.value = action.serverFileReference;\n\n // store file item in file input\n if (!root.query('SHOULD_UPDATE_FILE_INPUT')) return;\n\n var fileItem = root.query('GET_ITEM', action.id);\n setInputFiles(field, [fileItem.file]);\n };\n\n var didPrepareOutput = function didPrepareOutput(_ref5) {\n var root = _ref5.root,\n action = _ref5.action;\n // this timeout pushes the handler after 'load'\n if (!root.query('SHOULD_UPDATE_FILE_INPUT')) return;\n setTimeout(function() {\n var field = getField(root, action.id);\n if (!field) return;\n setInputFiles(field, [action.file]);\n }, 0);\n };\n\n var didSetDisabled = function didSetDisabled(_ref6) {\n var root = _ref6.root;\n root.element.disabled = root.query('GET_DISABLED');\n };\n\n var didRemoveItem = function didRemoveItem(_ref7) {\n var root = _ref7.root,\n action = _ref7.action;\n var field = getField(root, action.id);\n if (!field) return;\n if (field.parentNode) field.parentNode.removeChild(field);\n delete root.ref.fields[action.id];\n };\n\n // only runs for server files (so doesn't deal with file input)\n var didDefineValue = function didDefineValue(_ref8) {\n var root = _ref8.root,\n action = _ref8.action;\n var field = getField(root, action.id);\n if (!field) return;\n if (action.value === null) {\n // clear field value\n field.removeAttribute('value');\n } else {\n // set field value\n field.value = action.value;\n }\n syncFieldPositionsWithItems(root);\n };\n\n var write$8 = createRoute({\n DID_SET_DISABLED: didSetDisabled,\n DID_ADD_ITEM: didAddItem,\n DID_LOAD_ITEM: didLoadItem$1,\n DID_REMOVE_ITEM: didRemoveItem,\n DID_DEFINE_VALUE: didDefineValue,\n DID_PREPARE_OUTPUT: didPrepareOutput,\n DID_REORDER_ITEMS: didReorderItems,\n DID_SORT_ITEMS: didReorderItems,\n });\n\n var data = createView({\n tag: 'fieldset',\n name: 'data',\n create: create$c,\n write: write$8,\n ignoreRect: true,\n });\n\n var getRootNode = function getRootNode(element) {\n return 'getRootNode' in element ? element.getRootNode() : document;\n };\n\n var images = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg', 'tiff'];\n var text$1 = ['css', 'csv', 'html', 'txt'];\n var map = {\n zip: 'zip|compressed',\n epub: 'application/epub+zip',\n };\n\n var guesstimateMimeType = function guesstimateMimeType() {\n var extension = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n extension = extension.toLowerCase();\n if (images.includes(extension)) {\n return (\n 'image/' +\n (extension === 'jpg' ? 'jpeg' : extension === 'svg' ? 'svg+xml' : extension)\n );\n }\n if (text$1.includes(extension)) {\n return 'text/' + extension;\n }\n\n return map[extension] || '';\n };\n\n var requestDataTransferItems = function requestDataTransferItems(dataTransfer) {\n return new Promise(function(resolve, reject) {\n // try to get links from transfer, if found we'll exit immediately (unless a file is in the dataTransfer as well, this is because Firefox could represent the file as a URL and a file object at the same time)\n var links = getLinks(dataTransfer);\n if (links.length && !hasFiles(dataTransfer)) {\n return resolve(links);\n }\n // try to get files from the transfer\n getFiles(dataTransfer).then(resolve);\n });\n };\n\n /**\n * Test if datatransfer has files\n */\n var hasFiles = function hasFiles(dataTransfer) {\n if (dataTransfer.files) return dataTransfer.files.length > 0;\n return false;\n };\n\n /**\n * Extracts files from a DataTransfer object\n */\n var getFiles = function getFiles(dataTransfer) {\n return new Promise(function(resolve, reject) {\n // get the transfer items as promises\n var promisedFiles = (dataTransfer.items ? Array.from(dataTransfer.items) : [])\n // only keep file system items (files and directories)\n .filter(function(item) {\n return isFileSystemItem(item);\n })\n\n // map each item to promise\n .map(function(item) {\n return getFilesFromItem(item);\n });\n\n // if is empty, see if we can extract some info from the files property as a fallback\n if (!promisedFiles.length) {\n // TODO: test for directories (should not be allowed)\n // Use FileReader, problem is that the files property gets lost in the process\n resolve(dataTransfer.files ? Array.from(dataTransfer.files) : []);\n return;\n }\n\n // done!\n Promise.all(promisedFiles)\n .then(function(returnedFileGroups) {\n // flatten groups\n var files = [];\n returnedFileGroups.forEach(function(group) {\n files.push.apply(files, group);\n });\n\n // done (filter out empty files)!\n resolve(\n files\n .filter(function(file) {\n return file;\n })\n .map(function(file) {\n if (!file._relativePath)\n file._relativePath = file.webkitRelativePath;\n return file;\n })\n );\n })\n .catch(console.error);\n });\n };\n\n var isFileSystemItem = function isFileSystemItem(item) {\n if (isEntry(item)) {\n var entry = getAsEntry(item);\n if (entry) {\n return entry.isFile || entry.isDirectory;\n }\n }\n return item.kind === 'file';\n };\n\n var getFilesFromItem = function getFilesFromItem(item) {\n return new Promise(function(resolve, reject) {\n if (isDirectoryEntry(item)) {\n getFilesInDirectory(getAsEntry(item))\n .then(resolve)\n .catch(reject);\n return;\n }\n\n resolve([item.getAsFile()]);\n });\n };\n\n var getFilesInDirectory = function getFilesInDirectory(entry) {\n return new Promise(function(resolve, reject) {\n var files = [];\n\n // the total entries to read\n var dirCounter = 0;\n var fileCounter = 0;\n\n var resolveIfDone = function resolveIfDone() {\n if (fileCounter === 0 && dirCounter === 0) {\n resolve(files);\n }\n };\n\n // the recursive function\n var readEntries = function readEntries(dirEntry) {\n dirCounter++;\n\n var directoryReader = dirEntry.createReader();\n\n // directories are returned in batches, we need to process all batches before we're done\n var readBatch = function readBatch() {\n directoryReader.readEntries(function(entries) {\n if (entries.length === 0) {\n dirCounter--;\n resolveIfDone();\n return;\n }\n\n entries.forEach(function(entry) {\n // recursively read more directories\n if (entry.isDirectory) {\n readEntries(entry);\n } else {\n // read as file\n fileCounter++;\n\n entry.file(function(file) {\n var correctedFile = correctMissingFileType(file);\n if (entry.fullPath)\n correctedFile._relativePath = entry.fullPath;\n files.push(correctedFile);\n fileCounter--;\n resolveIfDone();\n });\n }\n });\n\n // try to get next batch of files\n readBatch();\n }, reject);\n };\n\n // read first batch of files\n readBatch();\n };\n\n // go!\n readEntries(entry);\n });\n };\n\n var correctMissingFileType = function correctMissingFileType(file) {\n if (file.type.length) return file;\n var date = file.lastModifiedDate;\n var name = file.name;\n var type = guesstimateMimeType(getExtensionFromFilename(file.name));\n if (!type.length) return file;\n file = file.slice(0, file.size, type);\n file.name = name;\n file.lastModifiedDate = date;\n return file;\n };\n\n var isDirectoryEntry = function isDirectoryEntry(item) {\n return isEntry(item) && (getAsEntry(item) || {}).isDirectory;\n };\n\n var isEntry = function isEntry(item) {\n return 'webkitGetAsEntry' in item;\n };\n\n var getAsEntry = function getAsEntry(item) {\n return item.webkitGetAsEntry();\n };\n\n /**\n * Extracts links from a DataTransfer object\n */\n var getLinks = function getLinks(dataTransfer) {\n var links = [];\n try {\n // look in meta data property\n links = getLinksFromTransferMetaData(dataTransfer);\n if (links.length) {\n return links;\n }\n links = getLinksFromTransferURLData(dataTransfer);\n } catch (e) {\n // nope nope nope (probably IE trouble)\n }\n return links;\n };\n\n var getLinksFromTransferURLData = function getLinksFromTransferURLData(dataTransfer) {\n var data = dataTransfer.getData('url');\n if (typeof data === 'string' && data.length) {\n return [data];\n }\n return [];\n };\n\n var getLinksFromTransferMetaData = function getLinksFromTransferMetaData(dataTransfer) {\n var data = dataTransfer.getData('text/html');\n if (typeof data === 'string' && data.length) {\n var matches = data.match(/src\\s*=\\s*\"(.+?)\"/);\n if (matches) {\n return [matches[1]];\n }\n }\n return [];\n };\n\n var dragNDropObservers = [];\n\n var eventPosition = function eventPosition(e) {\n return {\n pageLeft: e.pageX,\n pageTop: e.pageY,\n scopeLeft: e.offsetX || e.layerX,\n scopeTop: e.offsetY || e.layerY,\n };\n };\n\n var createDragNDropClient = function createDragNDropClient(\n element,\n scopeToObserve,\n filterElement\n ) {\n var observer = getDragNDropObserver(scopeToObserve);\n\n var client = {\n element: element,\n filterElement: filterElement,\n state: null,\n ondrop: function ondrop() {},\n onenter: function onenter() {},\n ondrag: function ondrag() {},\n onexit: function onexit() {},\n onload: function onload() {},\n allowdrop: function allowdrop() {},\n };\n\n client.destroy = observer.addListener(client);\n\n return client;\n };\n\n var getDragNDropObserver = function getDragNDropObserver(element) {\n // see if already exists, if so, return\n var observer = dragNDropObservers.find(function(item) {\n return item.element === element;\n });\n if (observer) {\n return observer;\n }\n\n // create new observer, does not yet exist for this element\n var newObserver = createDragNDropObserver(element);\n dragNDropObservers.push(newObserver);\n return newObserver;\n };\n\n var createDragNDropObserver = function createDragNDropObserver(element) {\n var clients = [];\n\n var routes = {\n dragenter: dragenter,\n dragover: dragover,\n dragleave: dragleave,\n drop: drop,\n };\n\n var handlers = {};\n\n forin(routes, function(event, createHandler) {\n handlers[event] = createHandler(element, clients);\n element.addEventListener(event, handlers[event], false);\n });\n\n var observer = {\n element: element,\n addListener: function addListener(client) {\n // add as client\n clients.push(client);\n\n // return removeListener function\n return function() {\n // remove client\n clients.splice(clients.indexOf(client), 1);\n\n // if no more clients, clean up observer\n if (clients.length === 0) {\n dragNDropObservers.splice(dragNDropObservers.indexOf(observer), 1);\n\n forin(routes, function(event) {\n element.removeEventListener(event, handlers[event], false);\n });\n }\n };\n },\n };\n\n return observer;\n };\n\n var elementFromPoint = function elementFromPoint(root, point) {\n if (!('elementFromPoint' in root)) {\n root = document;\n }\n return root.elementFromPoint(point.x, point.y);\n };\n\n var isEventTarget = function isEventTarget(e, target) {\n // get root\n var root = getRootNode(target);\n\n // get element at position\n // if root is not actual shadow DOM and does not have elementFromPoint method, use the one on document\n var elementAtPosition = elementFromPoint(root, {\n x: e.pageX - window.pageXOffset,\n y: e.pageY - window.pageYOffset,\n });\n\n // test if target is the element or if one of its children is\n return elementAtPosition === target || target.contains(elementAtPosition);\n };\n\n var initialTarget = null;\n\n var setDropEffect = function setDropEffect(dataTransfer, effect) {\n // is in try catch as IE11 will throw error if not\n try {\n dataTransfer.dropEffect = effect;\n } catch (e) {}\n };\n\n var dragenter = function dragenter(root, clients) {\n return function(e) {\n e.preventDefault();\n\n initialTarget = e.target;\n\n clients.forEach(function(client) {\n var element = client.element,\n onenter = client.onenter;\n\n if (isEventTarget(e, element)) {\n client.state = 'enter';\n\n // fire enter event\n onenter(eventPosition(e));\n }\n });\n };\n };\n\n var dragover = function dragover(root, clients) {\n return function(e) {\n e.preventDefault();\n\n var dataTransfer = e.dataTransfer;\n\n requestDataTransferItems(dataTransfer).then(function(items) {\n var overDropTarget = false;\n\n clients.some(function(client) {\n var filterElement = client.filterElement,\n element = client.element,\n onenter = client.onenter,\n onexit = client.onexit,\n ondrag = client.ondrag,\n allowdrop = client.allowdrop;\n\n // by default we can drop\n setDropEffect(dataTransfer, 'copy');\n\n // allow transfer of these items\n var allowsTransfer = allowdrop(items);\n\n // only used when can be dropped on page\n if (!allowsTransfer) {\n setDropEffect(dataTransfer, 'none');\n return;\n }\n\n // targetting this client\n if (isEventTarget(e, element)) {\n overDropTarget = true;\n\n // had no previous state, means we are entering this client\n if (client.state === null) {\n client.state = 'enter';\n onenter(eventPosition(e));\n return;\n }\n\n // now over element (no matter if it allows the drop or not)\n client.state = 'over';\n\n // needs to allow transfer\n if (filterElement && !allowsTransfer) {\n setDropEffect(dataTransfer, 'none');\n return;\n }\n\n // dragging\n ondrag(eventPosition(e));\n } else {\n // should be over an element to drop\n if (filterElement && !overDropTarget) {\n setDropEffect(dataTransfer, 'none');\n }\n\n // might have just left this client?\n if (client.state) {\n client.state = null;\n onexit(eventPosition(e));\n }\n }\n });\n });\n };\n };\n\n var drop = function drop(root, clients) {\n return function(e) {\n e.preventDefault();\n\n var dataTransfer = e.dataTransfer;\n\n requestDataTransferItems(dataTransfer).then(function(items) {\n clients.forEach(function(client) {\n var filterElement = client.filterElement,\n element = client.element,\n ondrop = client.ondrop,\n onexit = client.onexit,\n allowdrop = client.allowdrop;\n\n client.state = null;\n\n // if we're filtering on element we need to be over the element to drop\n if (filterElement && !isEventTarget(e, element)) return;\n\n // no transfer for this client\n if (!allowdrop(items)) return onexit(eventPosition(e));\n\n // we can drop these items on this client\n ondrop(eventPosition(e), items);\n });\n });\n };\n };\n\n var dragleave = function dragleave(root, clients) {\n return function(e) {\n if (initialTarget !== e.target) {\n return;\n }\n\n clients.forEach(function(client) {\n var onexit = client.onexit;\n\n client.state = null;\n\n onexit(eventPosition(e));\n });\n };\n };\n\n var createHopper = function createHopper(scope, validateItems, options) {\n // is now hopper scope\n scope.classList.add('filepond--hopper');\n\n // shortcuts\n var catchesDropsOnPage = options.catchesDropsOnPage,\n requiresDropOnElement = options.requiresDropOnElement,\n _options$filterItems = options.filterItems,\n filterItems =\n _options$filterItems === void 0\n ? function(items) {\n return items;\n }\n : _options$filterItems;\n\n // create a dnd client\n var client = createDragNDropClient(\n scope,\n catchesDropsOnPage ? document.documentElement : scope,\n requiresDropOnElement\n );\n\n // current client state\n var lastState = '';\n var currentState = '';\n\n // determines if a file may be dropped\n client.allowdrop = function(items) {\n // TODO: if we can, throw error to indicate the items cannot by dropped\n\n return validateItems(filterItems(items));\n };\n\n client.ondrop = function(position, items) {\n var filteredItems = filterItems(items);\n\n if (!validateItems(filteredItems)) {\n api.ondragend(position);\n return;\n }\n\n currentState = 'drag-drop';\n\n api.onload(filteredItems, position);\n };\n\n client.ondrag = function(position) {\n api.ondrag(position);\n };\n\n client.onenter = function(position) {\n currentState = 'drag-over';\n\n api.ondragstart(position);\n };\n\n client.onexit = function(position) {\n currentState = 'drag-exit';\n\n api.ondragend(position);\n };\n\n var api = {\n updateHopperState: function updateHopperState() {\n if (lastState !== currentState) {\n scope.dataset.hopperState = currentState;\n lastState = currentState;\n }\n },\n onload: function onload() {},\n ondragstart: function ondragstart() {},\n ondrag: function ondrag() {},\n ondragend: function ondragend() {},\n destroy: function destroy() {\n // destroy client\n client.destroy();\n },\n };\n\n return api;\n };\n\n var listening = false;\n var listeners$1 = [];\n\n var handlePaste = function handlePaste(e) {\n // if is pasting in input or textarea and the target is outside of a filepond scope, ignore\n var activeEl = document.activeElement;\n if (activeEl && /textarea|input/i.test(activeEl.nodeName)) {\n // test textarea or input is contained in filepond root\n var inScope = false;\n var element = activeEl;\n while (element !== document.body) {\n if (element.classList.contains('filepond--root')) {\n inScope = true;\n break;\n }\n element = element.parentNode;\n }\n\n if (!inScope) return;\n }\n\n requestDataTransferItems(e.clipboardData).then(function(files) {\n // no files received\n if (!files.length) {\n return;\n }\n\n // notify listeners of received files\n listeners$1.forEach(function(listener) {\n return listener(files);\n });\n });\n };\n\n var listen = function listen(cb) {\n // can't add twice\n if (listeners$1.includes(cb)) {\n return;\n }\n\n // add initial listener\n listeners$1.push(cb);\n\n // setup paste listener for entire page\n if (listening) {\n return;\n }\n\n listening = true;\n document.addEventListener('paste', handlePaste);\n };\n\n var unlisten = function unlisten(listener) {\n arrayRemove(listeners$1, listeners$1.indexOf(listener));\n\n // clean up\n if (listeners$1.length === 0) {\n document.removeEventListener('paste', handlePaste);\n listening = false;\n }\n };\n\n var createPaster = function createPaster() {\n var cb = function cb(files) {\n api.onload(files);\n };\n\n var api = {\n destroy: function destroy() {\n unlisten(cb);\n },\n onload: function onload() {},\n };\n\n listen(cb);\n\n return api;\n };\n\n /**\n * Creates the file view\n */\n var create$d = function create(_ref) {\n var root = _ref.root,\n props = _ref.props;\n root.element.id = 'filepond--assistant-' + props.id;\n attr(root.element, 'role', 'status');\n attr(root.element, 'aria-live', 'polite');\n attr(root.element, 'aria-relevant', 'additions');\n };\n\n var addFilesNotificationTimeout = null;\n var notificationClearTimeout = null;\n\n var filenames = [];\n\n var assist = function assist(root, message) {\n root.element.textContent = message;\n };\n\n var clear$1 = function clear(root) {\n root.element.textContent = '';\n };\n\n var listModified = function listModified(root, filename, label) {\n var total = root.query('GET_TOTAL_ITEMS');\n assist(\n root,\n label +\n ' ' +\n filename +\n ', ' +\n total +\n ' ' +\n (total === 1\n ? root.query('GET_LABEL_FILE_COUNT_SINGULAR')\n : root.query('GET_LABEL_FILE_COUNT_PLURAL'))\n );\n\n // clear group after set amount of time so the status is not read twice\n clearTimeout(notificationClearTimeout);\n notificationClearTimeout = setTimeout(function() {\n clear$1(root);\n }, 1500);\n };\n\n var isUsingFilePond = function isUsingFilePond(root) {\n return root.element.parentNode.contains(document.activeElement);\n };\n\n var itemAdded = function itemAdded(_ref2) {\n var root = _ref2.root,\n action = _ref2.action;\n if (!isUsingFilePond(root)) {\n return;\n }\n\n root.element.textContent = '';\n var item = root.query('GET_ITEM', action.id);\n filenames.push(item.filename);\n\n clearTimeout(addFilesNotificationTimeout);\n addFilesNotificationTimeout = setTimeout(function() {\n listModified(root, filenames.join(', '), root.query('GET_LABEL_FILE_ADDED'));\n\n filenames.length = 0;\n }, 750);\n };\n\n var itemRemoved = function itemRemoved(_ref3) {\n var root = _ref3.root,\n action = _ref3.action;\n if (!isUsingFilePond(root)) {\n return;\n }\n\n var item = action.item;\n listModified(root, item.filename, root.query('GET_LABEL_FILE_REMOVED'));\n };\n\n var itemProcessed = function itemProcessed(_ref4) {\n var root = _ref4.root,\n action = _ref4.action;\n // will also notify the user when FilePond is not being used, as the user might be occupied with other activities while uploading a file\n\n var item = root.query('GET_ITEM', action.id);\n var filename = item.filename;\n var label = root.query('GET_LABEL_FILE_PROCESSING_COMPLETE');\n\n assist(root, filename + ' ' + label);\n };\n\n var itemProcessedUndo = function itemProcessedUndo(_ref5) {\n var root = _ref5.root,\n action = _ref5.action;\n var item = root.query('GET_ITEM', action.id);\n var filename = item.filename;\n var label = root.query('GET_LABEL_FILE_PROCESSING_ABORTED');\n\n assist(root, filename + ' ' + label);\n };\n\n var itemError = function itemError(_ref6) {\n var root = _ref6.root,\n action = _ref6.action;\n var item = root.query('GET_ITEM', action.id);\n var filename = item.filename;\n\n // will also notify the user when FilePond is not being used, as the user might be occupied with other activities while uploading a file\n\n assist(root, action.status.main + ' ' + filename + ' ' + action.status.sub);\n };\n\n var assistant = createView({\n create: create$d,\n ignoreRect: true,\n ignoreRectUpdate: true,\n write: createRoute({\n DID_LOAD_ITEM: itemAdded,\n DID_REMOVE_ITEM: itemRemoved,\n DID_COMPLETE_ITEM_PROCESSING: itemProcessed,\n\n DID_ABORT_ITEM_PROCESSING: itemProcessedUndo,\n DID_REVERT_ITEM_PROCESSING: itemProcessedUndo,\n\n DID_THROW_ITEM_REMOVE_ERROR: itemError,\n DID_THROW_ITEM_LOAD_ERROR: itemError,\n DID_THROW_ITEM_INVALID: itemError,\n DID_THROW_ITEM_PROCESSING_ERROR: itemError,\n }),\n\n tag: 'span',\n name: 'assistant',\n });\n\n var toCamels = function toCamels(string) {\n var separator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '-';\n return string.replace(new RegExp(separator + '.', 'g'), function(sub) {\n return sub.charAt(1).toUpperCase();\n });\n };\n\n var debounce = function debounce(func) {\n var interval = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 16;\n var immidiateOnly =\n arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n var last = Date.now();\n var timeout = null;\n\n return function() {\n for (\n var _len = arguments.length, args = new Array(_len), _key = 0;\n _key < _len;\n _key++\n ) {\n args[_key] = arguments[_key];\n }\n clearTimeout(timeout);\n\n var dist = Date.now() - last;\n\n var fn = function fn() {\n last = Date.now();\n func.apply(void 0, args);\n };\n\n if (dist < interval) {\n // we need to delay by the difference between interval and dist\n // for example: if distance is 10 ms and interval is 16 ms,\n // we need to wait an additional 6ms before calling the function)\n if (!immidiateOnly) {\n timeout = setTimeout(fn, interval - dist);\n }\n } else {\n // go!\n fn();\n }\n };\n };\n\n var MAX_FILES_LIMIT = 1000000;\n\n var prevent = function prevent(e) {\n return e.preventDefault();\n };\n\n var create$e = function create(_ref) {\n var root = _ref.root,\n props = _ref.props;\n // Add id\n var id = root.query('GET_ID');\n if (id) {\n root.element.id = id;\n }\n\n // Add className\n var className = root.query('GET_CLASS_NAME');\n if (className) {\n className\n .split(' ')\n .filter(function(name) {\n return name.length;\n })\n .forEach(function(name) {\n root.element.classList.add(name);\n });\n }\n\n // Field label\n root.ref.label = root.appendChildView(\n root.createChildView(\n dropLabel,\n Object.assign({}, props, {\n translateY: null,\n caption: root.query('GET_LABEL_IDLE'),\n })\n )\n );\n\n // List of items\n root.ref.list = root.appendChildView(\n root.createChildView(listScroller, { translateY: null })\n );\n\n // Background panel\n root.ref.panel = root.appendChildView(root.createChildView(panel, { name: 'panel-root' }));\n\n // Assistant notifies assistive tech when content changes\n root.ref.assistant = root.appendChildView(\n root.createChildView(assistant, Object.assign({}, props))\n );\n\n // Data\n root.ref.data = root.appendChildView(root.createChildView(data, Object.assign({}, props)));\n\n // Measure (tests if fixed height was set)\n // DOCTYPE needs to be set for this to work\n root.ref.measure = createElement$1('div');\n root.ref.measure.style.height = '100%';\n root.element.appendChild(root.ref.measure);\n\n // information on the root height or fixed height status\n root.ref.bounds = null;\n\n // apply initial style properties\n root.query('GET_STYLES')\n .filter(function(style) {\n return !isEmpty(style.value);\n })\n .map(function(_ref2) {\n var name = _ref2.name,\n value = _ref2.value;\n root.element.dataset[name] = value;\n });\n\n // determine if width changed\n root.ref.widthPrevious = null;\n root.ref.widthUpdated = debounce(function() {\n root.ref.updateHistory = [];\n root.dispatch('DID_RESIZE_ROOT');\n }, 250);\n\n // history of updates\n root.ref.previousAspectRatio = null;\n root.ref.updateHistory = [];\n\n // prevent scrolling and zooming on iOS (only if supports pointer events, for then we can enable reorder)\n var canHover = window.matchMedia('(pointer: fine) and (hover: hover)').matches;\n var hasPointerEvents = 'PointerEvent' in window;\n if (root.query('GET_ALLOW_REORDER') && hasPointerEvents && !canHover) {\n root.element.addEventListener('touchmove', prevent, { passive: false });\n root.element.addEventListener('gesturestart', prevent);\n }\n\n // add credits\n var credits = root.query('GET_CREDITS');\n var hasCredits = credits.length === 2;\n if (hasCredits) {\n var frag = document.createElement('a');\n frag.className = 'filepond--credits';\n frag.setAttribute('aria-hidden', 'true');\n frag.href = credits[0];\n frag.tabindex = -1;\n frag.target = '_blank';\n frag.rel = 'noopener noreferrer';\n frag.textContent = credits[1];\n root.element.appendChild(frag);\n root.ref.credits = frag;\n }\n };\n\n var write$9 = function write(_ref3) {\n var root = _ref3.root,\n props = _ref3.props,\n actions = _ref3.actions;\n // route actions\n route$5({ root: root, props: props, actions: actions });\n\n // apply style properties\n actions\n .filter(function(action) {\n return /^DID_SET_STYLE_/.test(action.type);\n })\n .filter(function(action) {\n return !isEmpty(action.data.value);\n })\n .map(function(_ref4) {\n var type = _ref4.type,\n data = _ref4.data;\n var name = toCamels(type.substring(8).toLowerCase(), '_');\n root.element.dataset[name] = data.value;\n root.invalidateLayout();\n });\n\n if (root.rect.element.hidden) return;\n\n if (root.rect.element.width !== root.ref.widthPrevious) {\n root.ref.widthPrevious = root.rect.element.width;\n root.ref.widthUpdated();\n }\n\n // get box bounds, we do this only once\n var bounds = root.ref.bounds;\n if (!bounds) {\n bounds = root.ref.bounds = calculateRootBoundingBoxHeight(root);\n\n // destroy measure element\n root.element.removeChild(root.ref.measure);\n root.ref.measure = null;\n }\n\n // get quick references to various high level parts of the upload tool\n var _root$ref = root.ref,\n hopper = _root$ref.hopper,\n label = _root$ref.label,\n list = _root$ref.list,\n panel = _root$ref.panel;\n\n // sets correct state to hopper scope\n if (hopper) {\n hopper.updateHopperState();\n }\n\n // bool to indicate if we're full or not\n var aspectRatio = root.query('GET_PANEL_ASPECT_RATIO');\n var isMultiItem = root.query('GET_ALLOW_MULTIPLE');\n var totalItems = root.query('GET_TOTAL_ITEMS');\n var maxItems = isMultiItem ? root.query('GET_MAX_FILES') || MAX_FILES_LIMIT : 1;\n var atMaxCapacity = totalItems === maxItems;\n\n // action used to add item\n var addAction = actions.find(function(action) {\n return action.type === 'DID_ADD_ITEM';\n });\n\n // if reached max capacity and we've just reached it\n if (atMaxCapacity && addAction) {\n // get interaction type\n var interactionMethod = addAction.data.interactionMethod;\n\n // hide label\n label.opacity = 0;\n\n if (isMultiItem) {\n label.translateY = -40;\n } else {\n if (interactionMethod === InteractionMethod.API) {\n label.translateX = 40;\n } else if (interactionMethod === InteractionMethod.BROWSE) {\n label.translateY = 40;\n } else {\n label.translateY = 30;\n }\n }\n } else if (!atMaxCapacity) {\n label.opacity = 1;\n label.translateX = 0;\n label.translateY = 0;\n }\n\n var listItemMargin = calculateListItemMargin(root);\n\n var listHeight = calculateListHeight(root);\n\n var labelHeight = label.rect.element.height;\n var currentLabelHeight = !isMultiItem || atMaxCapacity ? 0 : labelHeight;\n\n var listMarginTop = atMaxCapacity ? list.rect.element.marginTop : 0;\n var listMarginBottom = totalItems === 0 ? 0 : list.rect.element.marginBottom;\n\n var visualHeight =\n currentLabelHeight + listMarginTop + listHeight.visual + listMarginBottom;\n var boundsHeight =\n currentLabelHeight + listMarginTop + listHeight.bounds + listMarginBottom;\n\n // link list to label bottom position\n list.translateY =\n Math.max(0, currentLabelHeight - list.rect.element.marginTop) - listItemMargin.top;\n\n if (aspectRatio) {\n // fixed aspect ratio\n\n // calculate height based on width\n var width = root.rect.element.width;\n var height = width * aspectRatio;\n\n // clear history if aspect ratio has changed\n if (aspectRatio !== root.ref.previousAspectRatio) {\n root.ref.previousAspectRatio = aspectRatio;\n root.ref.updateHistory = [];\n }\n\n // remember this width\n var history = root.ref.updateHistory;\n history.push(width);\n\n var MAX_BOUNCES = 2;\n if (history.length > MAX_BOUNCES * 2) {\n var l = history.length;\n var bottom = l - 10;\n var bounces = 0;\n for (var i = l; i >= bottom; i--) {\n if (history[i] === history[i - 2]) {\n bounces++;\n }\n\n if (bounces >= MAX_BOUNCES) {\n // dont adjust height\n return;\n }\n }\n }\n\n // fix height of panel so it adheres to aspect ratio\n panel.scalable = false;\n panel.height = height;\n\n // available height for list\n var listAvailableHeight =\n // the height of the panel minus the label height\n height -\n currentLabelHeight -\n // the room we leave open between the end of the list and the panel bottom\n (listMarginBottom - listItemMargin.bottom) -\n // if we're full we need to leave some room between the top of the panel and the list\n (atMaxCapacity ? listMarginTop : 0);\n\n if (listHeight.visual > listAvailableHeight) {\n list.overflow = listAvailableHeight;\n } else {\n list.overflow = null;\n }\n\n // set container bounds (so pushes siblings downwards)\n root.height = height;\n } else if (bounds.fixedHeight) {\n // fixed height\n\n // fix height of panel\n panel.scalable = false;\n\n // available height for list\n var _listAvailableHeight =\n // the height of the panel minus the label height\n bounds.fixedHeight -\n currentLabelHeight -\n // the room we leave open between the end of the list and the panel bottom\n (listMarginBottom - listItemMargin.bottom) -\n // if we're full we need to leave some room between the top of the panel and the list\n (atMaxCapacity ? listMarginTop : 0);\n\n // set list height\n if (listHeight.visual > _listAvailableHeight) {\n list.overflow = _listAvailableHeight;\n } else {\n list.overflow = null;\n }\n\n // no need to set container bounds as these are handles by CSS fixed height\n } else if (bounds.cappedHeight) {\n // max-height\n\n // not a fixed height panel\n var isCappedHeight = visualHeight >= bounds.cappedHeight;\n var panelHeight = Math.min(bounds.cappedHeight, visualHeight);\n panel.scalable = true;\n panel.height = isCappedHeight\n ? panelHeight\n : panelHeight - listItemMargin.top - listItemMargin.bottom;\n\n // available height for list\n var _listAvailableHeight2 =\n // the height of the panel minus the label height\n panelHeight -\n currentLabelHeight -\n // the room we leave open between the end of the list and the panel bottom\n (listMarginBottom - listItemMargin.bottom) -\n // if we're full we need to leave some room between the top of the panel and the list\n (atMaxCapacity ? listMarginTop : 0);\n\n // set list height (if is overflowing)\n if (visualHeight > bounds.cappedHeight && listHeight.visual > _listAvailableHeight2) {\n list.overflow = _listAvailableHeight2;\n } else {\n list.overflow = null;\n }\n\n // set container bounds (so pushes siblings downwards)\n root.height = Math.min(\n bounds.cappedHeight,\n boundsHeight - listItemMargin.top - listItemMargin.bottom\n );\n } else {\n // flexible height\n\n // not a fixed height panel\n var itemMargin = totalItems > 0 ? listItemMargin.top + listItemMargin.bottom : 0;\n panel.scalable = true;\n panel.height = Math.max(labelHeight, visualHeight - itemMargin);\n\n // set container bounds (so pushes siblings downwards)\n root.height = Math.max(labelHeight, boundsHeight - itemMargin);\n }\n\n // move credits to bottom\n if (root.ref.credits && panel.heightCurrent)\n root.ref.credits.style.transform = 'translateY(' + panel.heightCurrent + 'px)';\n };\n\n var calculateListItemMargin = function calculateListItemMargin(root) {\n var item = root.ref.list.childViews[0].childViews[0];\n return item\n ? {\n top: item.rect.element.marginTop,\n bottom: item.rect.element.marginBottom,\n }\n : {\n top: 0,\n bottom: 0,\n };\n };\n\n var calculateListHeight = function calculateListHeight(root) {\n var visual = 0;\n var bounds = 0;\n\n // get file list reference\n var scrollList = root.ref.list;\n var itemList = scrollList.childViews[0];\n var visibleChildren = itemList.childViews.filter(function(child) {\n return child.rect.element.height;\n });\n var children = root\n .query('GET_ACTIVE_ITEMS')\n .map(function(item) {\n return visibleChildren.find(function(child) {\n return child.id === item.id;\n });\n })\n .filter(function(item) {\n return item;\n });\n\n // no children, done!\n if (children.length === 0) return { visual: visual, bounds: bounds };\n\n var horizontalSpace = itemList.rect.element.width;\n var dragIndex = getItemIndexByPosition(itemList, children, scrollList.dragCoordinates);\n\n var childRect = children[0].rect.element;\n\n var itemVerticalMargin = childRect.marginTop + childRect.marginBottom;\n var itemHorizontalMargin = childRect.marginLeft + childRect.marginRight;\n\n var itemWidth = childRect.width + itemHorizontalMargin;\n var itemHeight = childRect.height + itemVerticalMargin;\n\n var newItem = typeof dragIndex !== 'undefined' && dragIndex >= 0 ? 1 : 0;\n var removedItem = children.find(function(child) {\n return child.markedForRemoval && child.opacity < 0.45;\n })\n ? -1\n : 0;\n var verticalItemCount = children.length + newItem + removedItem;\n var itemsPerRow = getItemsPerRow(horizontalSpace, itemWidth);\n\n // stack\n if (itemsPerRow === 1) {\n children.forEach(function(item) {\n var height = item.rect.element.height + itemVerticalMargin;\n bounds += height;\n visual += height * item.opacity;\n });\n }\n // grid\n else {\n bounds = Math.ceil(verticalItemCount / itemsPerRow) * itemHeight;\n visual = bounds;\n }\n\n return { visual: visual, bounds: bounds };\n };\n\n var calculateRootBoundingBoxHeight = function calculateRootBoundingBoxHeight(root) {\n var height = root.ref.measureHeight || null;\n var cappedHeight = parseInt(root.style.maxHeight, 10) || null;\n var fixedHeight = height === 0 ? null : height;\n\n return {\n cappedHeight: cappedHeight,\n fixedHeight: fixedHeight,\n };\n };\n\n var exceedsMaxFiles = function exceedsMaxFiles(root, items) {\n var allowReplace = root.query('GET_ALLOW_REPLACE');\n var allowMultiple = root.query('GET_ALLOW_MULTIPLE');\n var totalItems = root.query('GET_TOTAL_ITEMS');\n var maxItems = root.query('GET_MAX_FILES');\n\n // total amount of items being dragged\n var totalBrowseItems = items.length;\n\n // if does not allow multiple items and dragging more than one item\n if (!allowMultiple && totalBrowseItems > 1) {\n root.dispatch('DID_THROW_MAX_FILES', {\n source: items,\n error: createResponse('warning', 0, 'Max files'),\n });\n\n return true;\n }\n\n // limit max items to one if not allowed to drop multiple items\n maxItems = allowMultiple ? maxItems : 1;\n\n if (!allowMultiple && allowReplace) {\n // There is only one item, so there is room to replace or add an item\n return false;\n }\n\n // no more room?\n var hasMaxItems = isInt(maxItems);\n if (hasMaxItems && totalItems + totalBrowseItems > maxItems) {\n root.dispatch('DID_THROW_MAX_FILES', {\n source: items,\n error: createResponse('warning', 0, 'Max files'),\n });\n\n return true;\n }\n\n return false;\n };\n\n var getDragIndex = function getDragIndex(list, children, position) {\n var itemList = list.childViews[0];\n return getItemIndexByPosition(itemList, children, {\n left: position.scopeLeft - itemList.rect.element.left,\n top:\n position.scopeTop -\n (list.rect.outer.top + list.rect.element.marginTop + list.rect.element.scrollTop),\n });\n };\n\n /**\n * Enable or disable file drop functionality\n */\n var toggleDrop = function toggleDrop(root) {\n var isAllowed = root.query('GET_ALLOW_DROP');\n var isDisabled = root.query('GET_DISABLED');\n var enabled = isAllowed && !isDisabled;\n if (enabled && !root.ref.hopper) {\n var hopper = createHopper(\n root.element,\n function(items) {\n // allow quick validation of dropped items\n var beforeDropFile =\n root.query('GET_BEFORE_DROP_FILE') ||\n function() {\n return true;\n };\n\n // all items should be validated by all filters as valid\n var dropValidation = root.query('GET_DROP_VALIDATION');\n return dropValidation\n ? items.every(function(item) {\n return (\n applyFilters('ALLOW_HOPPER_ITEM', item, {\n query: root.query,\n }).every(function(result) {\n return result === true;\n }) && beforeDropFile(item)\n );\n })\n : true;\n },\n {\n filterItems: function filterItems(items) {\n var ignoredFiles = root.query('GET_IGNORED_FILES');\n return items.filter(function(item) {\n if (isFile(item)) {\n return !ignoredFiles.includes(item.name.toLowerCase());\n }\n return true;\n });\n },\n catchesDropsOnPage: root.query('GET_DROP_ON_PAGE'),\n requiresDropOnElement: root.query('GET_DROP_ON_ELEMENT'),\n }\n );\n\n hopper.onload = function(items, position) {\n // get item children elements and sort based on list sort\n var list = root.ref.list.childViews[0];\n var visibleChildren = list.childViews.filter(function(child) {\n return child.rect.element.height;\n });\n var children = root\n .query('GET_ACTIVE_ITEMS')\n .map(function(item) {\n return visibleChildren.find(function(child) {\n return child.id === item.id;\n });\n })\n .filter(function(item) {\n return item;\n });\n\n applyFilterChain('ADD_ITEMS', items, { dispatch: root.dispatch }).then(function(\n queue\n ) {\n // these files don't fit so stop here\n if (exceedsMaxFiles(root, queue)) return false;\n\n // go\n root.dispatch('ADD_ITEMS', {\n items: queue,\n index: getDragIndex(root.ref.list, children, position),\n interactionMethod: InteractionMethod.DROP,\n });\n });\n\n root.dispatch('DID_DROP', { position: position });\n\n root.dispatch('DID_END_DRAG', { position: position });\n };\n\n hopper.ondragstart = function(position) {\n root.dispatch('DID_START_DRAG', { position: position });\n };\n\n hopper.ondrag = debounce(function(position) {\n root.dispatch('DID_DRAG', { position: position });\n });\n\n hopper.ondragend = function(position) {\n root.dispatch('DID_END_DRAG', { position: position });\n };\n\n root.ref.hopper = hopper;\n\n root.ref.drip = root.appendChildView(root.createChildView(drip));\n } else if (!enabled && root.ref.hopper) {\n root.ref.hopper.destroy();\n root.ref.hopper = null;\n root.removeChildView(root.ref.drip);\n }\n };\n\n /**\n * Enable or disable browse functionality\n */\n var toggleBrowse = function toggleBrowse(root, props) {\n var isAllowed = root.query('GET_ALLOW_BROWSE');\n var isDisabled = root.query('GET_DISABLED');\n var enabled = isAllowed && !isDisabled;\n if (enabled && !root.ref.browser) {\n root.ref.browser = root.appendChildView(\n root.createChildView(\n browser,\n Object.assign({}, props, {\n onload: function onload(items) {\n applyFilterChain('ADD_ITEMS', items, {\n dispatch: root.dispatch,\n }).then(function(queue) {\n // these files don't fit so stop here\n if (exceedsMaxFiles(root, queue)) return false;\n\n // add items!\n root.dispatch('ADD_ITEMS', {\n items: queue,\n index: -1,\n interactionMethod: InteractionMethod.BROWSE,\n });\n });\n },\n })\n ),\n\n 0\n );\n } else if (!enabled && root.ref.browser) {\n root.removeChildView(root.ref.browser);\n root.ref.browser = null;\n }\n };\n\n /**\n * Enable or disable paste functionality\n */\n var togglePaste = function togglePaste(root) {\n var isAllowed = root.query('GET_ALLOW_PASTE');\n var isDisabled = root.query('GET_DISABLED');\n var enabled = isAllowed && !isDisabled;\n if (enabled && !root.ref.paster) {\n root.ref.paster = createPaster();\n root.ref.paster.onload = function(items) {\n applyFilterChain('ADD_ITEMS', items, { dispatch: root.dispatch }).then(function(\n queue\n ) {\n // these files don't fit so stop here\n if (exceedsMaxFiles(root, queue)) return false;\n\n // add items!\n root.dispatch('ADD_ITEMS', {\n items: queue,\n index: -1,\n interactionMethod: InteractionMethod.PASTE,\n });\n });\n };\n } else if (!enabled && root.ref.paster) {\n root.ref.paster.destroy();\n root.ref.paster = null;\n }\n };\n\n /**\n * Route actions\n */\n var route$5 = createRoute({\n DID_SET_ALLOW_BROWSE: function DID_SET_ALLOW_BROWSE(_ref5) {\n var root = _ref5.root,\n props = _ref5.props;\n toggleBrowse(root, props);\n },\n DID_SET_ALLOW_DROP: function DID_SET_ALLOW_DROP(_ref6) {\n var root = _ref6.root;\n toggleDrop(root);\n },\n DID_SET_ALLOW_PASTE: function DID_SET_ALLOW_PASTE(_ref7) {\n var root = _ref7.root;\n togglePaste(root);\n },\n DID_SET_DISABLED: function DID_SET_DISABLED(_ref8) {\n var root = _ref8.root,\n props = _ref8.props;\n toggleDrop(root);\n togglePaste(root);\n toggleBrowse(root, props);\n var isDisabled = root.query('GET_DISABLED');\n if (isDisabled) {\n root.element.dataset.disabled = 'disabled';\n } else {\n // delete root.element.dataset.disabled; <= this does not work on iOS 10\n root.element.removeAttribute('data-disabled');\n }\n },\n });\n\n var root = createView({\n name: 'root',\n read: function read(_ref9) {\n var root = _ref9.root;\n if (root.ref.measure) {\n root.ref.measureHeight = root.ref.measure.offsetHeight;\n }\n },\n create: create$e,\n write: write$9,\n destroy: function destroy(_ref10) {\n var root = _ref10.root;\n if (root.ref.paster) {\n root.ref.paster.destroy();\n }\n if (root.ref.hopper) {\n root.ref.hopper.destroy();\n }\n root.element.removeEventListener('touchmove', prevent);\n root.element.removeEventListener('gesturestart', prevent);\n },\n mixins: {\n styles: ['height'],\n },\n });\n\n // creates the app\n var createApp = function createApp() {\n var initialOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // let element\n var originalElement = null;\n\n // get default options\n var defaultOptions = getOptions();\n\n // create the data store, this will contain all our app info\n var store = createStore(\n // initial state (should be serializable)\n createInitialState(defaultOptions),\n\n // queries\n [queries, createOptionQueries(defaultOptions)],\n\n // action handlers\n [actions, createOptionActions(defaultOptions)]\n );\n\n // set initial options\n store.dispatch('SET_OPTIONS', { options: initialOptions });\n\n // kick thread if visibility changes\n var visibilityHandler = function visibilityHandler() {\n if (document.hidden) return;\n store.dispatch('KICK');\n };\n document.addEventListener('visibilitychange', visibilityHandler);\n\n // re-render on window resize start and finish\n var resizeDoneTimer = null;\n var isResizing = false;\n var isResizingHorizontally = false;\n var initialWindowWidth = null;\n var currentWindowWidth = null;\n var resizeHandler = function resizeHandler() {\n if (!isResizing) {\n isResizing = true;\n }\n clearTimeout(resizeDoneTimer);\n resizeDoneTimer = setTimeout(function() {\n isResizing = false;\n initialWindowWidth = null;\n currentWindowWidth = null;\n if (isResizingHorizontally) {\n isResizingHorizontally = false;\n store.dispatch('DID_STOP_RESIZE');\n }\n }, 500);\n };\n window.addEventListener('resize', resizeHandler);\n\n // render initial view\n var view = root(store, { id: getUniqueId() });\n\n //\n // PRIVATE API -------------------------------------------------------------------------------------\n //\n var isResting = false;\n var isHidden = false;\n\n var readWriteApi = {\n // necessary for update loop\n\n /**\n * Reads from dom (never call manually)\n * @private\n */\n _read: function _read() {\n // test if we're resizing horizontally\n // TODO: see if we can optimize this by measuring root rect\n if (isResizing) {\n currentWindowWidth = window.innerWidth;\n if (!initialWindowWidth) {\n initialWindowWidth = currentWindowWidth;\n }\n\n if (!isResizingHorizontally && currentWindowWidth !== initialWindowWidth) {\n store.dispatch('DID_START_RESIZE');\n isResizingHorizontally = true;\n }\n }\n\n if (isHidden && isResting) {\n // test if is no longer hidden\n isResting = view.element.offsetParent === null;\n }\n\n // if resting, no need to read as numbers will still all be correct\n if (isResting) return;\n\n // read view data\n view._read();\n\n // if is hidden we need to know so we exit rest mode when revealed\n isHidden = view.rect.element.hidden;\n },\n\n /**\n * Writes to dom (never call manually)\n * @private\n */\n _write: function _write(ts) {\n // get all actions from store\n var actions = store\n .processActionQueue()\n\n // filter out set actions (these will automatically trigger DID_SET)\n .filter(function(action) {\n return !/^SET_/.test(action.type);\n });\n\n // if was idling and no actions stop here\n if (isResting && !actions.length) return;\n\n // some actions might trigger events\n routeActionsToEvents(actions);\n\n // update the view\n isResting = view._write(ts, actions, isResizingHorizontally);\n\n // will clean up all archived items\n removeReleasedItems(store.query('GET_ITEMS'));\n\n // now idling\n if (isResting) {\n store.processDispatchQueue();\n }\n },\n };\n\n //\n // EXPOSE EVENTS -------------------------------------------------------------------------------------\n //\n var createEvent = function createEvent(name) {\n return function(data) {\n // create default event\n var event = {\n type: name,\n };\n\n // no data to add\n if (!data) {\n return event;\n }\n\n // copy relevant props\n if (data.hasOwnProperty('error')) {\n event.error = data.error ? Object.assign({}, data.error) : null;\n }\n\n if (data.status) {\n event.status = Object.assign({}, data.status);\n }\n\n if (data.file) {\n event.output = data.file;\n }\n\n // only source is available, else add item if possible\n if (data.source) {\n event.file = data.source;\n } else if (data.item || data.id) {\n var item = data.item ? data.item : store.query('GET_ITEM', data.id);\n event.file = item ? createItemAPI(item) : null;\n }\n\n // map all items in a possible items array\n if (data.items) {\n event.items = data.items.map(createItemAPI);\n }\n\n // if this is a progress event add the progress amount\n if (/progress/.test(name)) {\n event.progress = data.progress;\n }\n\n // copy relevant props\n if (data.hasOwnProperty('origin') && data.hasOwnProperty('target')) {\n event.origin = data.origin;\n event.target = data.target;\n }\n\n return event;\n };\n };\n\n var eventRoutes = {\n DID_DESTROY: createEvent('destroy'),\n\n DID_INIT: createEvent('init'),\n\n DID_THROW_MAX_FILES: createEvent('warning'),\n\n DID_INIT_ITEM: createEvent('initfile'),\n DID_START_ITEM_LOAD: createEvent('addfilestart'),\n DID_UPDATE_ITEM_LOAD_PROGRESS: createEvent('addfileprogress'),\n DID_LOAD_ITEM: createEvent('addfile'),\n\n DID_THROW_ITEM_INVALID: [createEvent('error'), createEvent('addfile')],\n\n DID_THROW_ITEM_LOAD_ERROR: [createEvent('error'), createEvent('addfile')],\n\n DID_THROW_ITEM_REMOVE_ERROR: [createEvent('error'), createEvent('removefile')],\n\n DID_PREPARE_OUTPUT: createEvent('preparefile'),\n\n DID_START_ITEM_PROCESSING: createEvent('processfilestart'),\n DID_UPDATE_ITEM_PROCESS_PROGRESS: createEvent('processfileprogress'),\n DID_ABORT_ITEM_PROCESSING: createEvent('processfileabort'),\n DID_COMPLETE_ITEM_PROCESSING: createEvent('processfile'),\n DID_COMPLETE_ITEM_PROCESSING_ALL: createEvent('processfiles'),\n DID_REVERT_ITEM_PROCESSING: createEvent('processfilerevert'),\n\n DID_THROW_ITEM_PROCESSING_ERROR: [createEvent('error'), createEvent('processfile')],\n\n DID_REMOVE_ITEM: createEvent('removefile'),\n\n DID_UPDATE_ITEMS: createEvent('updatefiles'),\n\n DID_ACTIVATE_ITEM: createEvent('activatefile'),\n\n DID_REORDER_ITEMS: createEvent('reorderfiles'),\n };\n\n var exposeEvent = function exposeEvent(event) {\n // create event object to be dispatched\n var detail = Object.assign({ pond: exports }, event);\n delete detail.type;\n view.element.dispatchEvent(\n new CustomEvent('FilePond:' + event.type, {\n // event info\n detail: detail,\n\n // event behaviour\n bubbles: true,\n cancelable: true,\n composed: true, // triggers listeners outside of shadow root\n })\n );\n\n // event object to params used for `on()` event handlers and callbacks `oninit()`\n var params = [];\n\n // if is possible error event, make it the first param\n if (event.hasOwnProperty('error')) {\n params.push(event.error);\n }\n\n // file is always section\n if (event.hasOwnProperty('file')) {\n params.push(event.file);\n }\n\n // append other props\n var filtered = ['type', 'error', 'file'];\n Object.keys(event)\n .filter(function(key) {\n return !filtered.includes(key);\n })\n .forEach(function(key) {\n return params.push(event[key]);\n });\n\n // on(type, () => { })\n exports.fire.apply(exports, [event.type].concat(params));\n\n // oninit = () => {}\n var handler = store.query('GET_ON' + event.type.toUpperCase());\n if (handler) {\n handler.apply(void 0, params);\n }\n };\n\n var routeActionsToEvents = function routeActionsToEvents(actions) {\n if (!actions.length) return;\n actions\n .filter(function(action) {\n return eventRoutes[action.type];\n })\n .forEach(function(action) {\n var routes = eventRoutes[action.type];\n (Array.isArray(routes) ? routes : [routes]).forEach(function(route) {\n // this isn't fantastic, but because of the stacking of settimeouts plugins can handle the did_load before the did_init\n if (action.type === 'DID_INIT_ITEM') {\n exposeEvent(route(action.data));\n } else {\n setTimeout(function() {\n exposeEvent(route(action.data));\n }, 0);\n }\n });\n });\n };\n\n //\n // PUBLIC API -------------------------------------------------------------------------------------\n //\n var setOptions = function setOptions(options) {\n return store.dispatch('SET_OPTIONS', { options: options });\n };\n\n var getFile = function getFile(query) {\n return store.query('GET_ACTIVE_ITEM', query);\n };\n\n var prepareFile = function prepareFile(query) {\n return new Promise(function(resolve, reject) {\n store.dispatch('REQUEST_ITEM_PREPARE', {\n query: query,\n success: function success(item) {\n resolve(item);\n },\n failure: function failure(error) {\n reject(error);\n },\n });\n });\n };\n\n var addFile = function addFile(source) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return new Promise(function(resolve, reject) {\n addFiles([{ source: source, options: options }], { index: options.index })\n .then(function(items) {\n return resolve(items && items[0]);\n })\n .catch(reject);\n });\n };\n\n var isFilePondFile = function isFilePondFile(obj) {\n return obj.file && obj.id;\n };\n\n var removeFile = function removeFile(query, options) {\n // if only passed options\n if (typeof query === 'object' && !isFilePondFile(query) && !options) {\n options = query;\n query = undefined;\n }\n\n // request item removal\n store.dispatch('REMOVE_ITEM', Object.assign({}, options, { query: query }));\n\n // see if item has been removed\n return store.query('GET_ACTIVE_ITEM', query) === null;\n };\n\n var addFiles = function addFiles() {\n for (\n var _len = arguments.length, args = new Array(_len), _key = 0;\n _key < _len;\n _key++\n ) {\n args[_key] = arguments[_key];\n }\n return new Promise(function(resolve, reject) {\n var sources = [];\n var options = {};\n\n // user passed a sources array\n if (isArray(args[0])) {\n sources.push.apply(sources, args[0]);\n Object.assign(options, args[1] || {});\n } else {\n // user passed sources as arguments, last one might be options object\n var lastArgument = args[args.length - 1];\n if (typeof lastArgument === 'object' && !(lastArgument instanceof Blob)) {\n Object.assign(options, args.pop());\n }\n\n // add rest to sources\n sources.push.apply(sources, args);\n }\n\n store.dispatch('ADD_ITEMS', {\n items: sources,\n index: options.index,\n interactionMethod: InteractionMethod.API,\n success: resolve,\n failure: reject,\n });\n });\n };\n\n var getFiles = function getFiles() {\n return store.query('GET_ACTIVE_ITEMS');\n };\n\n var processFile = function processFile(query) {\n return new Promise(function(resolve, reject) {\n store.dispatch('REQUEST_ITEM_PROCESSING', {\n query: query,\n success: function success(item) {\n resolve(item);\n },\n failure: function failure(error) {\n reject(error);\n },\n });\n });\n };\n\n var prepareFiles = function prepareFiles() {\n for (\n var _len2 = arguments.length, args = new Array(_len2), _key2 = 0;\n _key2 < _len2;\n _key2++\n ) {\n args[_key2] = arguments[_key2];\n }\n var queries = Array.isArray(args[0]) ? args[0] : args;\n var items = queries.length ? queries : getFiles();\n return Promise.all(items.map(prepareFile));\n };\n\n var processFiles = function processFiles() {\n for (\n var _len3 = arguments.length, args = new Array(_len3), _key3 = 0;\n _key3 < _len3;\n _key3++\n ) {\n args[_key3] = arguments[_key3];\n }\n var queries = Array.isArray(args[0]) ? args[0] : args;\n if (!queries.length) {\n var files = getFiles().filter(function(item) {\n return (\n !(item.status === ItemStatus.IDLE && item.origin === FileOrigin.LOCAL) &&\n item.status !== ItemStatus.PROCESSING &&\n item.status !== ItemStatus.PROCESSING_COMPLETE &&\n item.status !== ItemStatus.PROCESSING_REVERT_ERROR\n );\n });\n\n return Promise.all(files.map(processFile));\n }\n return Promise.all(queries.map(processFile));\n };\n\n var removeFiles = function removeFiles() {\n for (\n var _len4 = arguments.length, args = new Array(_len4), _key4 = 0;\n _key4 < _len4;\n _key4++\n ) {\n args[_key4] = arguments[_key4];\n }\n\n var queries = Array.isArray(args[0]) ? args[0] : args;\n\n var options;\n if (typeof queries[queries.length - 1] === 'object') {\n options = queries.pop();\n } else if (Array.isArray(args[0])) {\n options = args[1];\n }\n\n var files = getFiles();\n\n if (!queries.length)\n return Promise.all(\n files.map(function(file) {\n return removeFile(file, options);\n })\n );\n\n // when removing by index the indexes shift after each file removal so we need to convert indexes to ids\n var mappedQueries = queries\n .map(function(query) {\n return isNumber(query) ? (files[query] ? files[query].id : null) : query;\n })\n .filter(function(query) {\n return query;\n });\n\n return mappedQueries.map(function(q) {\n return removeFile(q, options);\n });\n };\n\n var exports = Object.assign(\n {},\n\n on(),\n {},\n\n readWriteApi,\n {},\n\n createOptionAPI(store, defaultOptions),\n {\n /**\n * Override options defined in options object\n * @param options\n */\n setOptions: setOptions,\n\n /**\n * Load the given file\n * @param source - the source of the file (either a File, base64 data uri or url)\n * @param options - object, { index: 0 }\n */\n addFile: addFile,\n\n /**\n * Load the given files\n * @param sources - the sources of the files to load\n * @param options - object, { index: 0 }\n */\n addFiles: addFiles,\n\n /**\n * Returns the file objects matching the given query\n * @param query { string, number, null }\n */\n getFile: getFile,\n\n /**\n * Upload file with given name\n * @param query { string, number, null }\n */\n processFile: processFile,\n\n /**\n * Request prepare output for file with given name\n * @param query { string, number, null }\n */\n prepareFile: prepareFile,\n\n /**\n * Removes a file by its name\n * @param query { string, number, null }\n */\n removeFile: removeFile,\n\n /**\n * Moves a file to a new location in the files list\n */\n moveFile: function moveFile(query, index) {\n return store.dispatch('MOVE_ITEM', { query: query, index: index });\n },\n\n /**\n * Returns all files (wrapped in public api)\n */\n getFiles: getFiles,\n\n /**\n * Starts uploading all files\n */\n processFiles: processFiles,\n\n /**\n * Clears all files from the files list\n */\n removeFiles: removeFiles,\n\n /**\n * Starts preparing output of all files\n */\n prepareFiles: prepareFiles,\n\n /**\n * Sort list of files\n */\n sort: function sort(compare) {\n return store.dispatch('SORT', { compare: compare });\n },\n\n /**\n * Browse the file system for a file\n */\n browse: function browse() {\n // needs to be trigger directly as user action needs to be traceable (is not traceable in requestAnimationFrame)\n var input = view.element.querySelector('input[type=file]');\n if (input) {\n input.click();\n }\n },\n\n /**\n * Destroys the app\n */\n destroy: function destroy() {\n // request destruction\n exports.fire('destroy', view.element);\n\n // stop active processes (file uploads, fetches, stuff like that)\n // loop over items and depending on states call abort for ongoing processes\n store.dispatch('ABORT_ALL');\n\n // destroy view\n view._destroy();\n\n // stop listening to resize\n window.removeEventListener('resize', resizeHandler);\n\n // stop listening to the visiblitychange event\n document.removeEventListener('visibilitychange', visibilityHandler);\n\n // dispatch destroy\n store.dispatch('DID_DESTROY');\n },\n\n /**\n * Inserts the plugin before the target element\n */\n insertBefore: function insertBefore$1(element) {\n return insertBefore(view.element, element);\n },\n\n /**\n * Inserts the plugin after the target element\n */\n insertAfter: function insertAfter$1(element) {\n return insertAfter(view.element, element);\n },\n\n /**\n * Appends the plugin to the target element\n */\n appendTo: function appendTo(element) {\n return element.appendChild(view.element);\n },\n\n /**\n * Replaces an element with the app\n */\n replaceElement: function replaceElement(element) {\n // insert the app before the element\n insertBefore(view.element, element);\n\n // remove the original element\n element.parentNode.removeChild(element);\n\n // remember original element\n originalElement = element;\n },\n\n /**\n * Restores the original element\n */\n restoreElement: function restoreElement() {\n if (!originalElement) {\n return; // no element to restore\n }\n\n // restore original element\n insertAfter(originalElement, view.element);\n\n // remove our element\n view.element.parentNode.removeChild(view.element);\n\n // remove reference\n originalElement = null;\n },\n\n /**\n * Returns true if the app root is attached to given element\n * @param element\n */\n isAttachedTo: function isAttachedTo(element) {\n return view.element === element || originalElement === element;\n },\n\n /**\n * Returns the root element\n */\n element: {\n get: function get() {\n return view.element;\n },\n },\n\n /**\n * Returns the current pond status\n */\n status: {\n get: function get() {\n return store.query('GET_STATUS');\n },\n },\n }\n );\n\n // Done!\n store.dispatch('DID_INIT');\n\n // create actual api object\n return createObject(exports);\n };\n\n var createAppObject = function createAppObject() {\n var customOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // default options\n var defaultOptions = {};\n forin(getOptions(), function(key, value) {\n defaultOptions[key] = value[0];\n });\n\n // set app options\n var app = createApp(\n Object.assign(\n {},\n\n defaultOptions,\n {},\n\n customOptions\n )\n );\n\n // return the plugin instance\n return app;\n };\n\n var lowerCaseFirstLetter = function lowerCaseFirstLetter(string) {\n return string.charAt(0).toLowerCase() + string.slice(1);\n };\n\n var attributeNameToPropertyName = function attributeNameToPropertyName(attributeName) {\n return toCamels(attributeName.replace(/^data-/, ''));\n };\n\n var mapObject = function mapObject(object, propertyMap) {\n // remove unwanted\n forin(propertyMap, function(selector, mapping) {\n forin(object, function(property, value) {\n // create regexp shortcut\n var selectorRegExp = new RegExp(selector);\n\n // tests if\n var matches = selectorRegExp.test(property);\n\n // no match, skip\n if (!matches) {\n return;\n }\n\n // if there's a mapping, the original property is always removed\n delete object[property];\n\n // should only remove, we done!\n if (mapping === false) {\n return;\n }\n\n // move value to new property\n if (isString(mapping)) {\n object[mapping] = value;\n return;\n }\n\n // move to group\n var group = mapping.group;\n if (isObject(mapping) && !object[group]) {\n object[group] = {};\n }\n\n object[group][lowerCaseFirstLetter(property.replace(selectorRegExp, ''))] = value;\n });\n\n // do submapping\n if (mapping.mapping) {\n mapObject(object[mapping.group], mapping.mapping);\n }\n });\n };\n\n var getAttributesAsObject = function getAttributesAsObject(node) {\n var attributeMapping =\n arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // turn attributes into object\n var attributes = [];\n forin(node.attributes, function(index) {\n attributes.push(node.attributes[index]);\n });\n\n var output = attributes\n .filter(function(attribute) {\n return attribute.name;\n })\n .reduce(function(obj, attribute) {\n var value = attr(node, attribute.name);\n\n obj[attributeNameToPropertyName(attribute.name)] =\n value === attribute.name ? true : value;\n return obj;\n }, {});\n\n // do mapping of object properties\n mapObject(output, attributeMapping);\n\n return output;\n };\n\n var createAppAtElement = function createAppAtElement(element) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // how attributes of the input element are mapped to the options for the plugin\n var attributeMapping = {\n // translate to other name\n '^class$': 'className',\n '^multiple$': 'allowMultiple',\n '^capture$': 'captureMethod',\n '^webkitdirectory$': 'allowDirectoriesOnly',\n\n // group under single property\n '^server': {\n group: 'server',\n mapping: {\n '^process': {\n group: 'process',\n },\n\n '^revert': {\n group: 'revert',\n },\n\n '^fetch': {\n group: 'fetch',\n },\n\n '^restore': {\n group: 'restore',\n },\n\n '^load': {\n group: 'load',\n },\n },\n },\n\n // don't include in object\n '^type$': false,\n '^files$': false,\n };\n\n // add additional option translators\n applyFilters('SET_ATTRIBUTE_TO_OPTION_MAP', attributeMapping);\n\n // create final options object by setting options object and then overriding options supplied on element\n var mergedOptions = Object.assign({}, options);\n\n var attributeOptions = getAttributesAsObject(\n element.nodeName === 'FIELDSET' ? element.querySelector('input[type=file]') : element,\n attributeMapping\n );\n\n // merge with options object\n Object.keys(attributeOptions).forEach(function(key) {\n if (isObject(attributeOptions[key])) {\n if (!isObject(mergedOptions[key])) {\n mergedOptions[key] = {};\n }\n Object.assign(mergedOptions[key], attributeOptions[key]);\n } else {\n mergedOptions[key] = attributeOptions[key];\n }\n });\n\n // if parent is a fieldset, get files from parent by selecting all input fields that are not file upload fields\n // these will then be automatically set to the initial files\n mergedOptions.files = (options.files || []).concat(\n Array.from(element.querySelectorAll('input:not([type=file])')).map(function(input) {\n return {\n source: input.value,\n options: {\n type: input.dataset.type,\n },\n };\n })\n );\n\n // build plugin\n var app = createAppObject(mergedOptions);\n\n // add already selected files\n if (element.files) {\n Array.from(element.files).forEach(function(file) {\n app.addFile(file);\n });\n }\n\n // replace the target element\n app.replaceElement(element);\n\n // expose\n return app;\n };\n\n // if an element is passed, we create the instance at that element, if not, we just create an up object\n var createApp$1 = function createApp() {\n return isNode(arguments.length <= 0 ? undefined : arguments[0])\n ? createAppAtElement.apply(void 0, arguments)\n : createAppObject.apply(void 0, arguments);\n };\n\n var PRIVATE_METHODS = ['fire', '_read', '_write'];\n\n var createAppAPI = function createAppAPI(app) {\n var api = {};\n\n copyObjectPropertiesToObject(app, api, PRIVATE_METHODS);\n\n return api;\n };\n\n /**\n * Replaces placeholders in given string with replacements\n * @param string - \"Foo {bar}\"\"\n * @param replacements - { \"bar\": 10 }\n */\n var replaceInString = function replaceInString(string, replacements) {\n return string.replace(/(?:{([a-zA-Z]+)})/g, function(match, group) {\n return replacements[group];\n });\n };\n\n var createWorker = function createWorker(fn) {\n var workerBlob = new Blob(['(', fn.toString(), ')()'], {\n type: 'application/javascript',\n });\n\n var workerURL = URL.createObjectURL(workerBlob);\n var worker = new Worker(workerURL);\n\n return {\n transfer: function transfer(message, cb) {},\n post: function post(message, cb, transferList) {\n var id = getUniqueId();\n\n worker.onmessage = function(e) {\n if (e.data.id === id) {\n cb(e.data.message);\n }\n };\n\n worker.postMessage(\n {\n id: id,\n message: message,\n },\n\n transferList\n );\n },\n terminate: function terminate() {\n worker.terminate();\n URL.revokeObjectURL(workerURL);\n },\n };\n };\n\n var loadImage = function loadImage(url) {\n return new Promise(function(resolve, reject) {\n var img = new Image();\n img.onload = function() {\n resolve(img);\n };\n img.onerror = function(e) {\n reject(e);\n };\n img.src = url;\n });\n };\n\n var renameFile = function renameFile(file, name) {\n var renamedFile = file.slice(0, file.size, file.type);\n renamedFile.lastModifiedDate = file.lastModifiedDate;\n renamedFile.name = name;\n return renamedFile;\n };\n\n var copyFile = function copyFile(file) {\n return renameFile(file, file.name);\n };\n\n // already registered plugins (can't register twice)\n var registeredPlugins = [];\n\n // pass utils to plugin\n var createAppPlugin = function createAppPlugin(plugin) {\n // already registered\n if (registeredPlugins.includes(plugin)) {\n return;\n }\n\n // remember this plugin\n registeredPlugins.push(plugin);\n\n // setup!\n var pluginOutline = plugin({\n addFilter: addFilter,\n utils: {\n Type: Type,\n forin: forin,\n isString: isString,\n isFile: isFile,\n toNaturalFileSize: toNaturalFileSize,\n replaceInString: replaceInString,\n getExtensionFromFilename: getExtensionFromFilename,\n getFilenameWithoutExtension: getFilenameWithoutExtension,\n guesstimateMimeType: guesstimateMimeType,\n getFileFromBlob: getFileFromBlob,\n getFilenameFromURL: getFilenameFromURL,\n createRoute: createRoute,\n createWorker: createWorker,\n createView: createView,\n createItemAPI: createItemAPI,\n loadImage: loadImage,\n copyFile: copyFile,\n renameFile: renameFile,\n createBlob: createBlob,\n applyFilterChain: applyFilterChain,\n text: text,\n getNumericAspectRatioFromString: getNumericAspectRatioFromString,\n },\n\n views: {\n fileActionButton: fileActionButton,\n },\n });\n\n // add plugin options to default options\n extendDefaultOptions(pluginOutline.options);\n };\n\n // feature detection used by supported() method\n var isOperaMini = function isOperaMini() {\n return Object.prototype.toString.call(window.operamini) === '[object OperaMini]';\n };\n var hasPromises = function hasPromises() {\n return 'Promise' in window;\n };\n var hasBlobSlice = function hasBlobSlice() {\n return 'slice' in Blob.prototype;\n };\n var hasCreateObjectURL = function hasCreateObjectURL() {\n return 'URL' in window && 'createObjectURL' in window.URL;\n };\n var hasVisibility = function hasVisibility() {\n return 'visibilityState' in document;\n };\n var hasTiming = function hasTiming() {\n return 'performance' in window;\n }; // iOS 8.x\n var hasCSSSupports = function hasCSSSupports() {\n return 'supports' in (window.CSS || {});\n }; // use to detect Safari 9+\n var isIE11 = function isIE11() {\n return /MSIE|Trident/.test(window.navigator.userAgent);\n };\n\n var supported = (function() {\n // Runs immediately and then remembers result for subsequent calls\n var isSupported =\n // Has to be a browser\n isBrowser() &&\n // Can't run on Opera Mini due to lack of everything\n !isOperaMini() &&\n // Require these APIs to feature detect a modern browser\n hasVisibility() &&\n hasPromises() &&\n hasBlobSlice() &&\n hasCreateObjectURL() &&\n hasTiming() &&\n // doesn't need CSSSupports but is a good way to detect Safari 9+ (we do want to support IE11 though)\n (hasCSSSupports() || isIE11());\n\n return function() {\n return isSupported;\n };\n })();\n\n /**\n * Plugin internal state (over all instances)\n */\n var state = {\n // active app instances, used to redraw the apps and to find the later\n apps: [],\n };\n\n // plugin name\n var name = 'filepond';\n\n /**\n * Public Plugin methods\n */\n var fn = function fn() {};\n exports.Status = {};\n exports.FileStatus = {};\n exports.FileOrigin = {};\n exports.OptionTypes = {};\n exports.create = fn;\n exports.destroy = fn;\n exports.parse = fn;\n exports.find = fn;\n exports.registerPlugin = fn;\n exports.getOptions = fn;\n exports.setOptions = fn;\n\n // if not supported, no API\n if (supported()) {\n // start painter and fire load event\n createPainter(\n function() {\n state.apps.forEach(function(app) {\n return app._read();\n });\n },\n function(ts) {\n state.apps.forEach(function(app) {\n return app._write(ts);\n });\n }\n );\n\n // fire loaded event so we know when FilePond is available\n var dispatch = function dispatch() {\n // let others know we have area ready\n document.dispatchEvent(\n new CustomEvent('FilePond:loaded', {\n detail: {\n supported: supported,\n create: exports.create,\n destroy: exports.destroy,\n parse: exports.parse,\n find: exports.find,\n registerPlugin: exports.registerPlugin,\n setOptions: exports.setOptions,\n },\n })\n );\n\n // clean up event\n document.removeEventListener('DOMContentLoaded', dispatch);\n };\n\n if (document.readyState !== 'loading') {\n // move to back of execution queue, FilePond should have been exported by then\n setTimeout(function() {\n return dispatch();\n }, 0);\n } else {\n document.addEventListener('DOMContentLoaded', dispatch);\n }\n\n // updates the OptionTypes object based on the current options\n var updateOptionTypes = function updateOptionTypes() {\n return forin(getOptions(), function(key, value) {\n exports.OptionTypes[key] = value[1];\n });\n };\n\n exports.Status = Object.assign({}, Status);\n exports.FileOrigin = Object.assign({}, FileOrigin);\n exports.FileStatus = Object.assign({}, ItemStatus);\n\n exports.OptionTypes = {};\n updateOptionTypes();\n\n // create method, creates apps and adds them to the app array\n exports.create = function create() {\n var app = createApp$1.apply(void 0, arguments);\n app.on('destroy', exports.destroy);\n state.apps.push(app);\n return createAppAPI(app);\n };\n\n // destroys apps and removes them from the app array\n exports.destroy = function destroy(hook) {\n // returns true if the app was destroyed successfully\n var indexToRemove = state.apps.findIndex(function(app) {\n return app.isAttachedTo(hook);\n });\n if (indexToRemove >= 0) {\n // remove from apps\n var app = state.apps.splice(indexToRemove, 1)[0];\n\n // restore original dom element\n app.restoreElement();\n\n return true;\n }\n\n return false;\n };\n\n // parses the given context for plugins (does not include the context element itself)\n exports.parse = function parse(context) {\n // get all possible hooks\n var matchedHooks = Array.from(context.querySelectorAll('.' + name));\n\n // filter out already active hooks\n var newHooks = matchedHooks.filter(function(newHook) {\n return !state.apps.find(function(app) {\n return app.isAttachedTo(newHook);\n });\n });\n\n // create new instance for each hook\n return newHooks.map(function(hook) {\n return exports.create(hook);\n });\n };\n\n // returns an app based on the given element hook\n exports.find = function find(hook) {\n var app = state.apps.find(function(app) {\n return app.isAttachedTo(hook);\n });\n if (!app) {\n return null;\n }\n return createAppAPI(app);\n };\n\n // adds a plugin extension\n exports.registerPlugin = function registerPlugin() {\n for (\n var _len = arguments.length, plugins = new Array(_len), _key = 0;\n _key < _len;\n _key++\n ) {\n plugins[_key] = arguments[_key];\n }\n\n // register plugins\n plugins.forEach(createAppPlugin);\n\n // update OptionTypes, each plugin might have extended the default options\n updateOptionTypes();\n };\n\n exports.getOptions = function getOptions$1() {\n var opts = {};\n forin(getOptions(), function(key, value) {\n opts[key] = value[0];\n });\n return opts;\n };\n\n exports.setOptions = function setOptions$1(opts) {\n if (isObject(opts)) {\n // update existing plugins\n state.apps.forEach(function(app) {\n app.setOptions(opts);\n });\n\n // override defaults\n setOptions(opts);\n }\n\n // return new options\n return exports.getOptions();\n };\n }\n\n exports.supported = supported;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n});\n"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 52);\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/*\n * Copyright (c) 2018 by Filestack.\n * Some rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Session } from '../client';\nimport { Hosts } from './../../config';\nimport { ExtensionsMap } from './extensions';\nimport fileType from 'file-type';\nimport * as isutf8 from 'isutf8';\n\n/**\n * Resolve cdn url based on handle type\n *\n * @private\n * @param session session object\n * @param handle file handle (hash, src://alias, url)\n */\nexport const resolveCdnUrl = (session: Session, handle: string): string => {\n const cdnURL = session.urls.cdnUrl;\n\n if (handle && (handle.indexOf('src:') === 0 || handle.indexOf('http') === 0)) {\n if (!session.apikey) {\n throw new Error('Api key is required when storage alias is provided');\n }\n\n // apikey is required for alias or external sources call\n return `${cdnURL}/${session.apikey}`;\n }\n\n return cdnURL;\n};\n\n/**\n * Resolve all urls with provided cnames\n *\n * @private\n * @param urls\n * @param cname\n */\nexport const resolveHost = (urls: Hosts, cname: string): Hosts => {\n if (!cname) {\n return urls;\n }\n\n const hosts = /filestackapi.com|filestackcontent.com/i;\n\n Object.keys(urls).forEach(key => {\n urls[key] = urls[key].replace(hosts, cname);\n });\n\n return urls;\n};\n\n/**\n * Removes empty options from object\n *\n * @private\n * @param obj\n */\nexport const removeEmpty = (obj: any) => {\n const newObj = { ...obj };\n Object.keys(newObj).forEach(k => !newObj[k] && typeof newObj[k] !== 'boolean' && delete newObj[k]);\n return newObj;\n};\n\n/**\n * Returns unique time\n */\nlet last;\nexport const uniqueTime = () => {\n const time = Date.now();\n last = time === last ? time + 1 : time;\n return last;\n};\n\n/**\n * Generates random string with provided length\n *\n * @param len\n */\nexport const uniqueId = (len: number = 10): string => {\n return new Array(len).join().replace(/(.|$)/g, () => ((Math.random() * 36) | 0).toString(36)[Math.random() < 0.5 ? 'toString' : 'toUpperCase']());\n};\n\n/**\n * Check if input is a svg\n *\n * @param {Uint8Array | Buffer} file\n * @returns {string} - mimetype\n */\nexport const getMimetype = (file: Uint8Array | Buffer, name?: string): string => {\n let type = fileType(file);\n\n const excludedMimetypes = ['text/plain', 'application/octet-stream', 'application/x-ms', 'application/x-msi', 'application/zip'];\n\n if (type && excludedMimetypes.indexOf(type.mime) === -1) {\n return type.mime;\n }\n\n if (name && name.indexOf('.') > -1) {\n const mime = extensionToMime(name);\n\n if (mime) {\n return mime;\n }\n }\n\n try {\n if (isutf8(file)) {\n return 'text/plain';\n }\n } catch (e) {\n /* istanbul ignore next */\n console.warn('Additional mimetype checks (text/plain) are currently not supported for browsers');\n }\n // this is only fallback, omit it in coverage\n /* istanbul ignore next */\n\n // if we cant find types by extensions and we have magic bytes fallback to it\n if (type) {\n return type.mime;\n }\n\n return 'application/octet-stream';\n};\n\n/**\n * Change extension to according mimetype using ext=>mimetype map\n *\n * @param ext - string\n * @return string|boolean\n */\nexport const extensionToMime = (ext: string) => {\n if (!ext || ext.length === 0) {\n return;\n }\n\n if (ext.split('/').length === 2) {\n return ext;\n }\n\n if (ext.indexOf('.') > -1) {\n ext = ext.split('.').pop();\n }\n\n ext = ext.toLocaleLowerCase();\n\n const keys = Object.keys(ExtensionsMap);\n const mapLen = keys.length;\n\n for (let i = 0; i < mapLen; i++) {\n if (ExtensionsMap[keys[i]].indexOf(ext) > -1) {\n return keys[i];\n }\n }\n\n return;\n};\n\n/**\n * Sanitizer Options\n */\nexport type SanitizeOptions =\n | boolean\n | {\n exclude?: string[];\n replacement?: string;\n };\n\n/**\n * Sanitize file name\n *\n * @param name\n * @param {bool} options - enable,disable sanitizer, default enabled\n * @param {string} options.replacement - replacement for sanitized chars defaults to \"-\"\n * @param {string[]} options.exclude - array with excluded chars default - ['\\', '{', '}','|', '%', '`', '\"', \"'\", '~', '[', ']', '#', '|', '^', '<', '>']\n */\nexport const sanitizeName = (name: string, options: SanitizeOptions = true): string => {\n if (typeof options === 'boolean' && !options) {\n return name;\n }\n\n let ext;\n\n const replacement = typeof options !== 'boolean' && options.replacement ? options.replacement : '-';\n const exclude = typeof options !== 'boolean' && options.exclude ? options.exclude : ['\\\\', '{', '}', '|', '%', '`', '\"', \"'\", '~', '[', ']', '#', '|', '^', '<', '>'];\n\n if (!name || name.length === 0) {\n return 'undefined';\n }\n\n const fileParts = name.split('.');\n\n if (fileParts.length > 1) {\n ext = fileParts.pop();\n }\n\n return `${fileParts\n .join('.')\n .split('')\n .map(char => (exclude.indexOf(char) > -1 ? replacement : char))\n .join('')}${ext ? '.' + ext : ''}`;\n};\n\n/**\n * Filter object to given fields\n *\n * @param toFilter\n * @param requiredFields\n */\nexport const filterObject = (toFilter, requiredFields: string[]) => {\n if (!requiredFields || requiredFields.length === 0) {\n return toFilter;\n }\n\n if (Object.keys(toFilter).length === 0) {\n return toFilter;\n }\n\n return Object.keys(toFilter)\n .filter(f => requiredFields.indexOf(f) > -1)\n .reduce((obj, key) => ({ ...obj, [key]: toFilter[key] }), {});\n};\n\n/**\n * Deep cleanup object from functions\n *\n * @param obj\n */\nexport const cleanUpCallbacks = (obj: any) => {\n if (!obj || Object.keys(obj).length === 0) {\n return obj;\n }\n\n Object.keys(obj).forEach(k => {\n if (typeof obj[k] === 'function') {\n obj[k] = undefined;\n }\n\n if (obj[k] === Object(obj[k])) {\n obj[k] = cleanUpCallbacks(obj[k]);\n }\n });\n\n return obj;\n};\n\nexport * from './index.node';\n","/*\n * Copyright (c) 2018 by Filestack.\n * Some rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const ExtensionsMap = {\n 'application/andrew-inset': ['ez'],\n 'application/applixware': ['aw'],\n 'application/atom+xml': ['atom'],\n 'application/atomcat+xml': ['atomcat'],\n 'application/atomsvc+xml': ['atomsvc'],\n 'application/bdoc': ['bdoc'],\n 'application/ccxml+xml': ['ccxml'],\n 'application/cdmi-capability': ['cdmia'],\n 'application/cdmi-container': ['cdmic'],\n 'application/cdmi-domain': ['cdmid'],\n 'application/cdmi-object': ['cdmio'],\n 'application/cdmi-queue': ['cdmiq'],\n 'application/cu-seeme': ['cu'],\n 'application/dash+xml': ['mpd'],\n 'application/davmount+xml': ['davmount'],\n 'application/docbook+xml': ['dbk'],\n 'application/dssc+der': ['dssc'],\n 'application/dssc+xml': ['xdssc'],\n 'application/ecmascript': ['ecma', 'es'],\n 'application/emma+xml': ['emma'],\n 'application/epub+zip': ['epub'],\n 'application/exi': ['exi'],\n 'application/font-tdpfr': ['pfr'],\n 'application/geo+json': ['geojson'],\n 'application/gml+xml': ['gml'],\n 'application/gpx+xml': ['gpx'],\n 'application/gxf': ['gxf'],\n 'application/gzip': ['gz'],\n 'application/hjson': ['hjson'],\n 'application/hyperstudio': ['stk'],\n 'application/inkml+xml': ['ink', 'inkml'],\n 'application/ipfix': ['ipfix'],\n 'application/java-archive': ['jar', 'war', 'ear'],\n 'application/java-serialized-object': ['ser'],\n 'application/java-vm': ['class'],\n 'application/javascript': ['js', 'mjs'],\n 'application/json': ['json', 'map'],\n 'application/json5': ['json5'],\n 'application/jsonml+json': ['jsonml'],\n 'application/ld+json': ['jsonld'],\n 'application/lost+xml': ['lostxml'],\n 'application/mac-binhex40': ['hqx'],\n 'application/mac-compactpro': ['cpt'],\n 'application/mads+xml': ['mads'],\n 'application/manifest+json': ['webmanifest'],\n 'application/marc': ['mrc'],\n 'application/marcxml+xml': ['mrcx'],\n 'application/mathematica': ['ma', 'nb', 'mb'],\n 'application/mathml+xml': ['mathml'],\n 'application/mbox': ['mbox'],\n 'application/mediaservercontrol+xml': ['mscml'],\n 'application/metalink+xml': ['metalink'],\n 'application/metalink4+xml': ['meta4'],\n 'application/mets+xml': ['mets'],\n 'application/mods+xml': ['mods'],\n 'application/mp21': ['m21', 'mp21'],\n 'application/mp4': ['mp4s', 'm4p'],\n 'application/msword': ['doc', 'dot'],\n 'application/mxf': ['mxf'],\n 'application/n-quads': ['nq'],\n 'application/n-triples': ['nt'],\n 'application/octet-stream': [\n 'bin',\n 'dms',\n 'lrf',\n 'mar',\n 'so',\n 'dist',\n 'distz',\n 'pkg',\n 'bpk',\n 'dump',\n 'elc',\n 'deploy',\n 'exe',\n 'dll',\n 'deb',\n 'dmg',\n 'iso',\n 'msp',\n 'buffer',\n ],\n 'application/oda': ['oda'],\n 'application/oebps-package+xml': ['opf'],\n 'application/ogg': ['ogx'],\n 'application/omdoc+xml': ['omdoc'],\n 'application/onenote': ['onetoc', 'onetoc2', 'onetmp', 'onepkg'],\n 'application/oxps': ['oxps'],\n 'application/patch-ops-error+xml': ['xer'],\n 'application/pdf': ['pdf'],\n 'application/pgp-encrypted': ['pgp'],\n 'application/pgp-signature': ['asc', 'sig'],\n 'application/pics-rules': ['prf'],\n 'application/pkcs10': ['p10'],\n 'application/pkcs7-mime': ['p7m', 'p7c'],\n 'application/pkcs7-signature': ['p7s'],\n 'application/pkcs8': ['p8'],\n 'application/pkix-attr-cert': ['ac'],\n 'application/pkix-cert': ['cer'],\n 'application/pkix-crl': ['crl'],\n 'application/pkix-pkipath': ['pkipath'],\n 'application/pkixcmp': ['pki'],\n 'application/pls+xml': ['pls'],\n 'application/postscript': ['ai', 'eps', 'ps'],\n 'application/pskc+xml': ['pskcxml'],\n 'application/raml+yaml': ['raml'],\n 'application/rdf+xml': ['rdf', 'owl'],\n 'application/reginfo+xml': ['rif'],\n 'application/relax-ng-compact-syntax': ['rnc'],\n 'application/resource-lists+xml': ['rl'],\n 'application/resource-lists-diff+xml': ['rld'],\n 'application/rls-services+xml': ['rs'],\n 'application/rpki-ghostbusters': ['gbr'],\n 'application/rpki-manifest': ['mft'],\n 'application/rpki-roa': ['roa'],\n 'application/rsd+xml': ['rsd'],\n 'application/rss+xml': ['rss'],\n 'application/rtf': ['rtf'],\n 'application/sbml+xml': ['sbml'],\n 'application/scvp-cv-request': ['scq'],\n 'application/scvp-cv-response': ['scs'],\n 'application/scvp-vp-request': ['spq'],\n 'application/scvp-vp-response': ['spp'],\n 'application/sdp': ['sdp'],\n 'application/set-payment-initiation': ['setpay'],\n 'application/set-registration-initiation': ['setreg'],\n 'application/shf+xml': ['shf'],\n 'application/sieve': ['siv', 'sieve'],\n 'application/smil+xml': ['smi', 'smil'],\n 'application/sparql-query': ['rq'],\n 'application/sparql-results+xml': ['srx'],\n 'application/srgs': ['gram'],\n 'application/srgs+xml': ['grxml'],\n 'application/sru+xml': ['sru'],\n 'application/ssdl+xml': ['ssdl'],\n 'application/ssml+xml': ['ssml'],\n 'application/tei+xml': ['tei', 'teicorpus'],\n 'application/thraud+xml': ['tfi'],\n 'application/timestamped-data': ['tsd'],\n 'application/voicexml+xml': ['vxml'],\n 'application/wasm': ['wasm'],\n 'application/widget': ['wgt'],\n 'application/winhlp': ['hlp'],\n 'application/wsdl+xml': ['wsdl'],\n 'application/wspolicy+xml': ['wspolicy'],\n 'application/xaml+xml': ['xaml'],\n 'application/xcap-diff+xml': ['xdf'],\n 'application/xenc+xml': ['xenc'],\n 'application/xhtml+xml': ['xhtml', 'xht'],\n 'application/xml': ['xml', 'xsl', 'xsd', 'rng'],\n 'application/xml-dtd': ['dtd'],\n 'application/xop+xml': ['xop'],\n 'application/xproc+xml': ['xpl'],\n 'application/xslt+xml': ['xslt'],\n 'application/xspf+xml': ['xspf'],\n 'application/xv+xml': ['mxml', 'xhvml', 'xvml', 'xvm'],\n 'application/yang': ['yang'],\n 'application/yin+xml': ['yin'],\n 'application/zip': ['zip'],\n 'audio/3gpp': ['*3gpp'],\n 'audio/adpcm': ['adp'],\n 'audio/basic': ['au', 'snd'],\n 'audio/midi': ['mid', 'midi', 'kar', 'rmi'],\n 'audio/mp3': ['*mp3'],\n 'audio/mp4': ['m4a', 'mp4a'],\n 'audio/mpeg': ['mpga', 'mp2', 'mp2a', 'mp3', 'm2a', 'm3a'],\n 'audio/ogg': ['oga', 'ogg', 'spx'],\n 'audio/s3m': ['s3m'],\n 'audio/silk': ['sil'],\n 'audio/wav': ['wav'],\n 'audio/wave': ['*wav'],\n 'audio/webm': ['weba'],\n 'audio/xm': ['xm'],\n 'font/collection': ['ttc'],\n 'font/otf': ['otf'],\n 'font/ttf': ['ttf'],\n 'font/woff': ['woff'],\n 'font/woff2': ['woff2'],\n 'image/aces': ['exr'],\n 'image/apng': ['apng'],\n 'image/bmp': ['bmp'],\n 'image/cgm': ['cgm'],\n 'image/dicom-rle': ['drle'],\n 'image/emf': ['emf'],\n 'image/fits': ['fits'],\n 'image/g3fax': ['g3'],\n 'image/gif': ['gif'],\n 'image/heic': ['heic'],\n 'image/heic-sequence': ['heics'],\n 'image/heif': ['heif'],\n 'image/heif-sequence': ['heifs'],\n 'image/ief': ['ief'],\n 'image/jls': ['jls'],\n 'image/jp2': ['jp2', 'jpg2'],\n 'image/jpeg': ['jpeg', 'jpg', 'jpe'],\n 'image/jpm': ['jpm'],\n 'image/jpx': ['jpx', 'jpf'],\n 'image/jxr': ['jxr'],\n 'image/ktx': ['ktx'],\n 'image/png': ['png'],\n 'image/sgi': ['sgi'],\n 'image/svg+xml': ['svg', 'svgz'],\n 'image/t38': ['t38'],\n 'image/tiff': ['tif', 'tiff'],\n 'image/tiff-fx': ['tfx'],\n 'image/webp': ['webp'],\n 'image/wmf': ['wmf'],\n 'message/disposition-notification': ['disposition-notification'],\n 'message/global': ['u8msg'],\n 'message/global-delivery-status': ['u8dsn'],\n 'message/global-disposition-notification': ['u8mdn'],\n 'message/global-headers': ['u8hdr'],\n 'message/rfc822': ['eml', 'mime'],\n 'model/3mf': ['3mf'],\n 'model/gltf+json': ['gltf'],\n 'model/gltf-binary': ['glb'],\n 'model/iges': ['igs', 'iges'],\n 'model/mesh': ['msh', 'mesh', 'silo'],\n 'model/stl': ['stl'],\n 'model/vrml': ['wrl', 'vrml'],\n 'model/x3d+binary': ['*x3db', 'x3dbz'],\n 'model/x3d+fastinfoset': ['x3db'],\n 'model/x3d+vrml': ['*x3dv', 'x3dvz'],\n 'model/x3d+xml': ['x3d', 'x3dz'],\n 'model/x3d-vrml': ['x3dv'],\n 'text/cache-manifest': ['appcache', 'manifest'],\n 'text/calendar': ['ics', 'ifb'],\n 'text/coffeescript': ['coffee', 'litcoffee'],\n 'text/css': ['css'],\n 'text/csv': ['csv'],\n 'text/html': ['html', 'htm', 'shtml'],\n 'text/jade': ['jade'],\n 'text/jsx': ['jsx'],\n 'text/less': ['less'],\n 'text/markdown': ['markdown', 'md'],\n 'text/mathml': ['mml'],\n 'text/mdx': ['mdx'],\n 'text/n3': ['n3'],\n 'text/plain': ['txt', 'text', 'conf', 'def', 'list', 'log', 'in', 'ini'],\n 'text/richtext': ['rtx'],\n 'application/font-ttf': 'ttf',\n 'application/vnd.ms-fontobject': 'eot',\n 'application/font-otf': 'otf',\n 'text/rtf': ['*rtf'],\n 'text/sgml': ['sgml', 'sgm'],\n 'text/shex': ['shex'],\n 'text/slim': ['slim', 'slm'],\n 'text/stylus': ['stylus', 'styl'],\n 'text/tab-separated-values': ['tsv'],\n 'text/troff': ['t', 'tr', 'roff', 'man', 'me', 'ms'],\n 'text/turtle': ['ttl'],\n 'text/uri-list': ['uri', 'uris', 'urls'],\n 'text/vcard': ['vcard', 'vcr'],\n 'text/vtt': ['vtt'],\n 'text/xml': ['*xml'],\n 'text/yaml': ['yaml', 'yml'],\n 'video/3gpp': ['3gp', '3gpp'],\n 'video/3gpp2': ['3g2'],\n 'video/h261': ['h261'],\n 'video/h263': ['h263'],\n 'video/h264': ['h264'],\n 'video/jpeg': ['jpgv'],\n 'video/jpm': ['*jpm', 'jpgm'],\n 'video/mj2': ['mj2', 'mjp2'],\n 'video/mp2t': ['ts'],\n 'video/mp4': ['mp4', 'mp4v', 'mpg4'],\n 'video/mpeg': ['mpeg', 'mpg', 'mpe', 'm1v', 'm2v'],\n 'video/ogg': ['ogv'],\n 'video/quicktime': ['qt', 'mov'],\n 'video/webm': ['webm'],\n 'application/prs.cww': ['cww'],\n 'application/vnd.3gpp.pic-bw-large': ['plb'],\n 'application/vnd.3gpp.pic-bw-small': ['psb'],\n 'application/vnd.3gpp.pic-bw-var': ['pvb'],\n 'application/vnd.3gpp2.tcap': ['tcap'],\n 'application/vnd.3m.post-it-notes': ['pwn'],\n 'application/vnd.accpac.simply.aso': ['aso'],\n 'application/vnd.accpac.simply.imp': ['imp'],\n 'application/vnd.acucobol': ['acu'],\n 'application/vnd.acucorp': ['atc', 'acutc'],\n 'application/vnd.adobe.air-application-installer-package+zip': ['air'],\n 'application/vnd.adobe.formscentral.fcdt': ['fcdt'],\n 'application/vnd.adobe.fxp': ['fxp', 'fxpl'],\n 'application/vnd.adobe.xdp+xml': ['xdp'],\n 'application/vnd.adobe.xfdf': ['xfdf'],\n 'application/vnd.ahead.space': ['ahead'],\n 'application/vnd.airzip.filesecure.azf': ['azf'],\n 'application/vnd.airzip.filesecure.azs': ['azs'],\n 'application/vnd.amazon.ebook': ['azw'],\n 'application/vnd.americandynamics.acc': ['acc'],\n 'application/vnd.amiga.ami': ['ami'],\n 'application/vnd.android.package-archive': ['apk'],\n 'application/vnd.anser-web-certificate-issue-initiation': ['cii'],\n 'application/vnd.anser-web-funds-transfer-initiation': ['fti'],\n 'application/vnd.antix.game-component': ['atx'],\n 'application/vnd.apple.installer+xml': ['mpkg'],\n 'application/vnd.apple.keynote': ['keynote', 'key'],\n 'application/vnd.apple.mpegurl': ['m3u8'],\n 'application/vnd.apple.numbers': ['numbers'],\n 'application/vnd.apple.pages': ['pages'],\n 'application/vnd.apple.key': ['key'],\n 'application/vnd.apple.pkpass': ['pkpass'],\n 'application/vnd.aristanetworks.swi': ['swi'],\n 'application/vnd.astraea-software.iota': ['iota'],\n 'application/vnd.audiograph': ['aep'],\n 'application/vnd.blueice.multipass': ['mpm'],\n 'application/vnd.bmi': ['bmi'],\n 'application/vnd.businessobjects': ['rep'],\n 'application/vnd.chemdraw+xml': ['cdxml'],\n 'application/vnd.chipnuts.karaoke-mmd': ['mmd'],\n 'application/vnd.cinderella': ['cdy'],\n 'application/vnd.citationstyles.style+xml': ['csl'],\n 'application/vnd.claymore': ['cla'],\n 'application/vnd.cloanto.rp9': ['rp9'],\n 'application/vnd.clonk.c4group': ['c4g', 'c4d', 'c4f', 'c4p', 'c4u'],\n 'application/vnd.cluetrust.cartomobile-config': ['c11amc'],\n 'application/vnd.cluetrust.cartomobile-config-pkg': ['c11amz'],\n 'application/vnd.commonspace': ['csp'],\n 'application/vnd.contact.cmsg': ['cdbcmsg'],\n 'application/vnd.cosmocaller': ['cmc'],\n 'application/vnd.crick.clicker': ['clkx'],\n 'application/vnd.crick.clicker.keyboard': ['clkk'],\n 'application/vnd.crick.clicker.palette': ['clkp'],\n 'application/vnd.crick.clicker.template': ['clkt'],\n 'application/vnd.crick.clicker.wordbank': ['clkw'],\n 'application/vnd.criticaltools.wbs+xml': ['wbs'],\n 'application/vnd.ctc-posml': ['pml'],\n 'application/vnd.cups-ppd': ['ppd'],\n 'application/vnd.curl.car': ['car'],\n 'application/vnd.curl.pcurl': ['pcurl'],\n 'application/vnd.dart': ['dart'],\n 'application/vnd.data-vision.rdz': ['rdz'],\n 'application/vnd.dece.data': ['uvf', 'uvvf', 'uvd', 'uvvd'],\n 'application/vnd.dece.ttml+xml': ['uvt', 'uvvt'],\n 'application/vnd.dece.unspecified': ['uvx', 'uvvx'],\n 'application/vnd.dece.zip': ['uvz', 'uvvz'],\n 'application/vnd.denovo.fcselayout-link': ['fe_launch'],\n 'application/vnd.dna': ['dna'],\n 'application/vnd.dolby.mlp': ['mlp'],\n 'application/vnd.dpgraph': ['dpg'],\n 'application/vnd.dreamfactory': ['dfac'],\n 'application/vnd.ds-keypoint': ['kpxx'],\n 'application/vnd.dvb.ait': ['ait'],\n 'application/vnd.dvb.service': ['svc'],\n 'application/vnd.dynageo': ['geo'],\n 'application/vnd.ecowin.chart': ['mag'],\n 'application/vnd.enliven': ['nml'],\n 'application/vnd.epson.esf': ['esf'],\n 'application/vnd.epson.msf': ['msf'],\n 'application/vnd.epson.quickanime': ['qam'],\n 'application/vnd.epson.salt': ['slt'],\n 'application/vnd.epson.ssf': ['ssf'],\n 'application/vnd.eszigno3+xml': ['es3', 'et3'],\n 'application/vnd.ezpix-album': ['ez2'],\n 'application/vnd.ezpix-package': ['ez3'],\n 'application/vnd.fdf': ['fdf'],\n 'application/vnd.fdsn.mseed': ['mseed'],\n 'application/vnd.fdsn.seed': ['seed', 'dataless'],\n 'application/vnd.flographit': ['gph'],\n 'application/vnd.fluxtime.clip': ['ftc'],\n 'application/vnd.framemaker': ['fm', 'frame', 'maker', 'book'],\n 'application/vnd.frogans.fnc': ['fnc'],\n 'application/vnd.frogans.ltf': ['ltf'],\n 'application/vnd.fsc.weblaunch': ['fsc'],\n 'application/vnd.fujitsu.oasys': ['oas'],\n 'application/vnd.fujitsu.oasys2': ['oa2'],\n 'application/vnd.fujitsu.oasys3': ['oa3'],\n 'application/vnd.fujitsu.oasysgp': ['fg5'],\n 'application/vnd.fujitsu.oasysprs': ['bh2'],\n 'application/vnd.fujixerox.ddd': ['ddd'],\n 'application/vnd.fujixerox.docuworks': ['xdw'],\n 'application/vnd.fujixerox.docuworks.binder': ['xbd'],\n 'application/vnd.fuzzysheet': ['fzs'],\n 'application/vnd.genomatix.tuxedo': ['txd'],\n 'application/vnd.geogebra.file': ['ggb'],\n 'application/vnd.geogebra.tool': ['ggt'],\n 'application/vnd.geometry-explorer': ['gex', 'gre'],\n 'application/vnd.geonext': ['gxt'],\n 'application/vnd.geoplan': ['g2w'],\n 'application/vnd.geospace': ['g3w'],\n 'application/vnd.gmx': ['gmx'],\n 'application/vnd.google-apps.document': ['gdoc'],\n 'application/vnd.google-apps.presentation': ['gslides'],\n 'application/vnd.google-apps.spreadsheet': ['gsheet'],\n 'application/vnd.google-earth.kml+xml': ['kml'],\n 'application/vnd.google-earth.kmz': ['kmz'],\n 'application/vnd.grafeq': ['gqf', 'gqs'],\n 'application/vnd.groove-account': ['gac'],\n 'application/vnd.groove-help': ['ghf'],\n 'application/vnd.groove-identity-message': ['gim'],\n 'application/vnd.groove-injector': ['grv'],\n 'application/vnd.groove-tool-message': ['gtm'],\n 'application/vnd.groove-tool-template': ['tpl'],\n 'application/vnd.groove-vcard': ['vcg'],\n 'application/vnd.hal+xml': ['hal'],\n 'application/vnd.handheld-entertainment+xml': ['zmm'],\n 'application/vnd.hbci': ['hbci'],\n 'application/vnd.hhe.lesson-player': ['les'],\n 'application/vnd.hp-hpgl': ['hpgl'],\n 'application/vnd.hp-hpid': ['hpid'],\n 'application/vnd.hp-hps': ['hps'],\n 'application/vnd.hp-jlyt': ['jlt'],\n 'application/vnd.hp-pcl': ['pcl'],\n 'application/vnd.hp-pclxl': ['pclxl'],\n 'application/vnd.hydrostatix.sof-data': ['sfd-hdstx'],\n 'application/vnd.ibm.minipay': ['mpy'],\n 'application/vnd.ibm.modcap': ['afp', 'listafp', 'list3820'],\n 'application/vnd.ibm.rights-management': ['irm'],\n 'application/vnd.ibm.secure-container': ['sc'],\n 'application/vnd.iccprofile': ['icc', 'icm'],\n 'application/vnd.igloader': ['igl'],\n 'application/vnd.immervision-ivp': ['ivp'],\n 'application/vnd.immervision-ivu': ['ivu'],\n 'application/vnd.insors.igm': ['igm'],\n 'application/vnd.intercon.formnet': ['xpw', 'xpx'],\n 'application/vnd.intergeo': ['i2g'],\n 'application/vnd.intu.qbo': ['qbo'],\n 'application/vnd.intu.qfx': ['qfx'],\n 'application/vnd.ipunplugged.rcprofile': ['rcprofile'],\n 'application/vnd.irepository.package+xml': ['irp'],\n 'application/vnd.is-xpr': ['xpr'],\n 'application/vnd.isac.fcs': ['fcs'],\n 'application/vnd.jam': ['jam'],\n 'application/vnd.jcp.javame.midlet-rms': ['rms'],\n 'application/vnd.jisp': ['jisp'],\n 'application/vnd.joost.joda-archive': ['joda'],\n 'application/vnd.kahootz': ['ktz', 'ktr'],\n 'application/vnd.kde.karbon': ['karbon'],\n 'application/vnd.kde.kchart': ['chrt'],\n 'application/vnd.kde.kformula': ['kfo'],\n 'application/vnd.kde.kivio': ['flw'],\n 'application/vnd.kde.kontour': ['kon'],\n 'application/vnd.kde.kpresenter': ['kpr', 'kpt'],\n 'application/vnd.kde.kspread': ['ksp'],\n 'application/vnd.kde.kword': ['kwd', 'kwt'],\n 'application/vnd.kenameaapp': ['htke'],\n 'application/vnd.kidspiration': ['kia'],\n 'application/vnd.kinar': ['kne', 'knp'],\n 'application/vnd.koan': ['skp', 'skd', 'skt', 'skm'],\n 'application/vnd.kodak-descriptor': ['sse'],\n 'application/vnd.las.las+xml': ['lasxml'],\n 'application/vnd.llamagraphics.life-balance.desktop': ['lbd'],\n 'application/vnd.llamagraphics.life-balance.exchange+xml': ['lbe'],\n 'application/vnd.lotus-1-2-3': ['123'],\n 'application/vnd.lotus-approach': ['apr'],\n 'application/vnd.lotus-freelance': ['pre'],\n 'application/vnd.lotus-notes': ['nsf'],\n 'application/vnd.lotus-organizer': ['org'],\n 'application/vnd.lotus-screencam': ['scm'],\n 'application/vnd.lotus-wordpro': ['lwp'],\n 'application/vnd.macports.portpkg': ['portpkg'],\n 'application/vnd.mcd': ['mcd'],\n 'application/vnd.medcalcdata': ['mc1'],\n 'application/vnd.mediastation.cdkey': ['cdkey'],\n 'application/vnd.mfer': ['mwf'],\n 'application/vnd.mfmp': ['mfm'],\n 'application/vnd.micrografx.flo': ['flo'],\n 'application/vnd.micrografx.igx': ['igx'],\n 'application/vnd.mif': ['mif'],\n 'application/vnd.mobius.daf': ['daf'],\n 'application/vnd.mobius.dis': ['dis'],\n 'application/vnd.mobius.mbk': ['mbk'],\n 'application/vnd.mobius.mqy': ['mqy'],\n 'application/vnd.mobius.msl': ['msl'],\n 'application/vnd.mobius.plc': ['plc'],\n 'application/vnd.mobius.txf': ['txf'],\n 'application/vnd.mophun.application': ['mpn'],\n 'application/vnd.mophun.certificate': ['mpc'],\n 'application/vnd.mozilla.xul+xml': ['xul'],\n 'application/vnd.ms-artgalry': ['cil'],\n 'application/vnd.ms-cab-compressed': ['cab'],\n 'application/vnd.ms-excel': ['xls', 'xlm', 'xla', 'xlc', 'xlt', 'xlw'],\n 'application/vnd.ms-excel.addin.macroenabled.12': ['xlam'],\n 'application/vnd.ms-excel.sheet.binary.macroenabled.12': ['xlsb'],\n 'application/vnd.ms-excel.sheet.macroenabled.12': ['xlsm'],\n 'application/vnd.ms-excel.template.macroenabled.12': ['xltm'],\n 'application/vnd.ms-htmlhelp': ['chm'],\n 'application/vnd.ms-ims': ['ims'],\n 'application/vnd.ms-lrm': ['lrm'],\n 'application/vnd.ms-officetheme': ['thmx'],\n 'application/vnd.ms-outlook': ['msg'],\n 'application/vnd.ms-pki.seccat': ['cat'],\n 'application/vnd.ms-pki.stl': ['*stl'],\n 'application/vnd.ms-powerpoint': ['ppt', 'pps', 'pot'],\n 'application/vnd.ms-powerpoint.addin.macroenabled.12': ['ppam'],\n 'application/vnd.ms-powerpoint.presentation.macroenabled.12': ['pptm'],\n 'application/vnd.ms-powerpoint.slide.macroenabled.12': ['sldm'],\n 'application/vnd.ms-powerpoint.slideshow.macroenabled.12': ['ppsm'],\n 'application/vnd.ms-powerpoint.template.macroenabled.12': ['potm'],\n 'application/vnd.ms-project': ['mpp', 'mpt'],\n 'application/vnd.ms-word.document.macroenabled.12': ['docm'],\n 'application/vnd.ms-word.template.macroenabled.12': ['dotm'],\n 'application/vnd.ms-works': ['wps', 'wks', 'wcm', 'wdb'],\n 'application/vnd.ms-wpl': ['wpl'],\n 'application/vnd.ms-xpsdocument': ['xps'],\n 'application/vnd.mseq': ['mseq'],\n 'application/vnd.musician': ['mus'],\n 'application/vnd.muvee.style': ['msty'],\n 'application/vnd.mynfc': ['taglet'],\n 'application/vnd.neurolanguage.nlu': ['nlu'],\n 'application/vnd.nitf': ['ntf', 'nitf'],\n 'application/vnd.noblenet-directory': ['nnd'],\n 'application/vnd.noblenet-sealer': ['nns'],\n 'application/vnd.noblenet-web': ['nnw'],\n 'application/vnd.nokia.n-gage.data': ['ngdat'],\n 'application/vnd.nokia.n-gage.symbian.install': ['n-gage'],\n 'application/vnd.nokia.radio-preset': ['rpst'],\n 'application/vnd.nokia.radio-presets': ['rpss'],\n 'application/vnd.novadigm.edm': ['edm'],\n 'application/vnd.novadigm.edx': ['edx'],\n 'application/vnd.novadigm.ext': ['ext'],\n 'application/vnd.oasis.opendocument.chart': ['odc'],\n 'application/vnd.oasis.opendocument.chart-template': ['otc'],\n 'application/vnd.oasis.opendocument.database': ['odb'],\n 'application/vnd.oasis.opendocument.formula': ['odf'],\n 'application/vnd.oasis.opendocument.formula-template': ['odft'],\n 'application/vnd.oasis.opendocument.graphics': ['odg'],\n 'application/vnd.oasis.opendocument.graphics-template': ['otg'],\n 'application/vnd.oasis.opendocument.image': ['odi'],\n 'application/vnd.oasis.opendocument.image-template': ['oti'],\n 'application/vnd.oasis.opendocument.presentation': ['odp'],\n 'application/vnd.oasis.opendocument.presentation-template': ['otp'],\n 'application/vnd.oasis.opendocument.spreadsheet': ['ods'],\n 'application/vnd.oasis.opendocument.spreadsheet-template': ['ots'],\n 'application/vnd.oasis.opendocument.text': ['odt'],\n 'application/vnd.oasis.opendocument.text-master': ['odm'],\n 'application/vnd.oasis.opendocument.text-template': ['ott'],\n 'application/vnd.oasis.opendocument.text-web': ['oth'],\n 'application/vnd.olpc-sugar': ['xo'],\n 'application/vnd.oma.dd2+xml': ['dd2'],\n 'application/vnd.openofficeorg.extension': ['oxt'],\n 'application/vnd.openxmlformats-officedocument.presentationml.presentation': ['pptx'],\n 'application/vnd.openxmlformats-officedocument.presentationml.slide': ['sldx'],\n 'application/vnd.openxmlformats-officedocument.presentationml.slideshow': ['ppsx'],\n 'application/vnd.openxmlformats-officedocument.presentationml.template': ['potx'],\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': ['xlsx'],\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.template': ['xltx'],\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document': ['docx'],\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.template': ['dotx'],\n 'application/vnd.osgeo.mapguide.package': ['mgp'],\n 'application/vnd.osgi.dp': ['dp'],\n 'application/vnd.osgi.subsystem': ['esa'],\n 'application/vnd.palm': ['pdb', 'pqa', 'oprc'],\n 'application/vnd.pawaafile': ['paw'],\n 'application/vnd.pg.format': ['str'],\n 'application/vnd.pg.osasli': ['ei6'],\n 'application/vnd.picsel': ['efif'],\n 'application/vnd.pmi.widget': ['wg'],\n 'application/vnd.pocketlearn': ['plf'],\n 'application/vnd.powerbuilder6': ['pbd'],\n 'application/vnd.previewsystems.box': ['box'],\n 'application/vnd.proteus.magazine': ['mgz'],\n 'application/vnd.publishare-delta-tree': ['qps'],\n 'application/vnd.pvi.ptid1': ['ptid'],\n 'application/vnd.quark.quarkxpress': ['qxd', 'qxt', 'qwd', 'qwt', 'qxl', 'qxb'],\n 'application/vnd.realvnc.bed': ['bed'],\n 'application/vnd.recordare.musicxml': ['mxl'],\n 'application/vnd.recordare.musicxml+xml': ['musicxml'],\n 'application/vnd.rig.cryptonote': ['cryptonote'],\n 'application/vnd.rim.cod': ['cod'],\n 'application/vnd.rn-realmedia': ['rm'],\n 'application/vnd.rn-realmedia-vbr': ['rmvb'],\n 'application/vnd.route66.link66+xml': ['link66'],\n 'application/vnd.sailingtracker.track': ['st'],\n 'application/vnd.seemail': ['see'],\n 'application/vnd.sema': ['sema'],\n 'application/vnd.semd': ['semd'],\n 'application/vnd.semf': ['semf'],\n 'application/vnd.shana.informed.formdata': ['ifm'],\n 'application/vnd.shana.informed.formtemplate': ['itp'],\n 'application/vnd.shana.informed.interchange': ['iif'],\n 'application/vnd.shana.informed.package': ['ipk'],\n 'application/vnd.simtech-mindmapper': ['twd', 'twds'],\n 'application/vnd.smaf': ['mmf'],\n 'application/vnd.smart.teacher': ['teacher'],\n 'application/vnd.solent.sdkm+xml': ['sdkm', 'sdkd'],\n 'application/vnd.spotfire.dxp': ['dxp'],\n 'application/vnd.spotfire.sfs': ['sfs'],\n 'application/vnd.stardivision.calc': ['sdc'],\n 'application/vnd.stardivision.draw': ['sda'],\n 'application/vnd.stardivision.impress': ['sdd'],\n 'application/vnd.stardivision.math': ['smf'],\n 'application/vnd.stardivision.writer': ['sdw', 'vor'],\n 'application/vnd.stardivision.writer-global': ['sgl'],\n 'application/vnd.stepmania.package': ['smzip'],\n 'application/vnd.stepmania.stepchart': ['sm'],\n 'application/vnd.sun.wadl+xml': ['wadl'],\n 'application/vnd.sun.xml.calc': ['sxc'],\n 'application/vnd.sun.xml.calc.template': ['stc'],\n 'application/vnd.sun.xml.draw': ['sxd'],\n 'application/vnd.sun.xml.draw.template': ['std'],\n 'application/vnd.sun.xml.impress': ['sxi'],\n 'application/vnd.sun.xml.impress.template': ['sti'],\n 'application/vnd.sun.xml.math': ['sxm'],\n 'application/vnd.sun.xml.writer': ['sxw'],\n 'application/vnd.sun.xml.writer.global': ['sxg'],\n 'application/vnd.sun.xml.writer.template': ['stw'],\n 'application/vnd.sus-calendar': ['sus', 'susp'],\n 'application/vnd.svd': ['svd'],\n 'application/vnd.symbian.install': ['sis', 'sisx'],\n 'application/vnd.syncml+xml': ['xsm'],\n 'application/vnd.syncml.dm+wbxml': ['bdm'],\n 'application/vnd.syncml.dm+xml': ['xdm'],\n 'application/vnd.tao.intent-module-archive': ['tao'],\n 'application/vnd.tcpdump.pcap': ['pcap', 'cap', 'dmp'],\n 'application/vnd.tmobile-livetv': ['tmo'],\n 'application/vnd.trid.tpt': ['tpt'],\n 'application/vnd.triscape.mxs': ['mxs'],\n 'application/vnd.trueapp': ['tra'],\n 'application/vnd.ufdl': ['ufd', 'ufdl'],\n 'application/vnd.uiq.theme': ['utz'],\n 'application/vnd.umajin': ['umj'],\n 'application/vnd.unity': ['unityweb'],\n 'application/vnd.uoml+xml': ['uoml'],\n 'application/vnd.vcx': ['vcx'],\n 'application/vnd.visio': ['vsd', 'vst', 'vss', 'vsw'],\n 'application/vnd.visionary': ['vis'],\n 'application/vnd.vsf': ['vsf'],\n 'application/vnd.wap.wbxml': ['wbxml'],\n 'application/vnd.wap.wmlc': ['wmlc'],\n 'application/vnd.wap.wmlscriptc': ['wmlsc'],\n 'application/vnd.webturbo': ['wtb'],\n 'application/vnd.wolfram.player': ['nbp'],\n 'application/vnd.wordperfect': ['wpd'],\n 'application/vnd.wqd': ['wqd'],\n 'application/vnd.wt.stf': ['stf'],\n 'application/vnd.xara': ['xar'],\n 'application/vnd.xfdl': ['xfdl'],\n 'application/vnd.yamaha.hv-dic': ['hvd'],\n 'application/vnd.yamaha.hv-script': ['hvs'],\n 'application/vnd.yamaha.hv-voice': ['hvp'],\n 'application/vnd.yamaha.openscoreformat': ['osf'],\n 'application/vnd.yamaha.openscoreformat.osfpvg+xml': ['osfpvg'],\n 'application/vnd.yamaha.smaf-audio': ['saf'],\n 'application/vnd.yamaha.smaf-phrase': ['spf'],\n 'application/vnd.yellowriver-custom-menu': ['cmp'],\n 'application/vnd.zul': ['zir', 'zirz'],\n 'application/vnd.zzazz.deck+xml': ['zaz'],\n 'application/x-7z-compressed': ['7z'],\n 'application/x-abiword': ['abw'],\n 'application/x-ace-compressed': ['ace'],\n 'application/x-apple-diskimage': ['*dmg'],\n 'application/x-arj': ['arj'],\n 'application/x-authorware-bin': ['aab', 'x32', 'u32', 'vox'],\n 'application/x-authorware-map': ['aam'],\n 'application/x-authorware-seg': ['aas'],\n 'application/x-bcpio': ['bcpio'],\n 'application/x-bdoc': ['*bdoc'],\n 'application/x-bittorrent': ['torrent'],\n 'application/x-blorb': ['blb', 'blorb'],\n 'application/x-bzip': ['bz'],\n 'application/x-bzip2': ['bz2', 'boz'],\n 'application/x-cbr': ['cbr', 'cba', 'cbt', 'cbz', 'cb7'],\n 'application/x-cdlink': ['vcd'],\n 'application/x-cfs-compressed': ['cfs'],\n 'application/x-chat': ['chat'],\n 'application/x-chess-pgn': ['pgn'],\n 'application/x-chrome-extension': ['crx'],\n 'application/x-cocoa': ['cco'],\n 'application/x-conference': ['nsc'],\n 'application/x-cpio': ['cpio'],\n 'application/x-csh': ['csh'],\n 'application/x-debian-package': ['*deb', 'udeb'],\n 'application/x-dgc-compressed': ['dgc'],\n 'application/x-director': ['dir', 'dcr', 'dxr', 'cst', 'cct', 'cxt', 'w3d', 'fgd', 'swa'],\n 'application/x-doom': ['wad'],\n 'application/x-dtbncx+xml': ['ncx'],\n 'application/x-dtbook+xml': ['dtb'],\n 'application/x-dtbresource+xml': ['res'],\n 'application/x-dvi': ['dvi'],\n 'application/x-envoy': ['evy'],\n 'application/x-eva': ['eva'],\n 'application/x-font-bdf': ['bdf'],\n 'application/x-font-ghostscript': ['gsf'],\n 'application/x-font-linux-psf': ['psf'],\n 'application/x-font-pcf': ['pcf'],\n 'application/x-font-snf': ['snf'],\n 'application/x-font-type1': ['pfa', 'pfb', 'pfm', 'afm'],\n 'application/x-freearc': ['arc'],\n 'application/x-futuresplash': ['spl'],\n 'application/x-gca-compressed': ['gca'],\n 'application/x-glulx': ['ulx'],\n 'application/x-gnumeric': ['gnumeric'],\n 'application/x-gramps-xml': ['gramps'],\n 'application/x-gtar': ['gtar'],\n 'application/x-hdf': ['hdf'],\n 'application/x-httpd-php': ['php'],\n 'application/x-install-instructions': ['install'],\n 'application/x-iso9660-image': ['*iso'],\n 'application/x-java-archive-diff': ['jardiff'],\n 'application/x-java-jnlp-file': ['jnlp'],\n 'application/x-latex': ['latex'],\n 'application/x-lua-bytecode': ['luac'],\n 'application/x-lzh-compressed': ['lzh', 'lha'],\n 'application/x-makeself': ['run'],\n 'application/x-mie': ['mie'],\n 'application/x-mobipocket-ebook': ['prc', 'mobi'],\n 'application/x-ms-application': ['application'],\n 'application/x-ms-shortcut': ['lnk'],\n 'application/x-ms-wmd': ['wmd'],\n 'application/x-ms-wmz': ['wmz'],\n 'application/x-ms-xbap': ['xbap'],\n 'application/x-msaccess': ['mdb'],\n 'application/x-msbinder': ['obd'],\n 'application/x-mscardfile': ['crd'],\n 'application/x-msclip': ['clp'],\n 'application/x-msdos-program': ['*exe'],\n 'application/x-msdownload': ['*exe', '*dll', 'com', 'bat', '*msi'],\n 'application/x-msmediaview': ['mvb', 'm13', 'm14'],\n 'application/x-msmetafile': ['*wmf', '*wmz', '*emf', 'emz'],\n 'application/x-msmoney': ['mny'],\n 'application/x-mspublisher': ['pub'],\n 'application/x-msschedule': ['scd'],\n 'application/x-msterminal': ['trm'],\n 'application/x-mswrite': ['wri'],\n 'application/x-netcdf': ['nc', 'cdf'],\n 'application/x-ns-proxy-autoconfig': ['pac'],\n 'application/x-nzb': ['nzb'],\n 'application/x-perl': ['pl', 'pm'],\n 'application/x-pilot': ['*prc', '*pdb'],\n 'application/x-pkcs12': ['p12', 'pfx'],\n 'application/x-pkcs7-certificates': ['p7b', 'spc'],\n 'application/x-pkcs7-certreqresp': ['p7r'],\n 'application/x-rar-compressed': ['rar'],\n 'application/x-redhat-package-manager': ['rpm'],\n 'application/x-research-info-systems': ['ris'],\n 'application/x-sea': ['sea'],\n 'application/x-sh': ['sh'],\n 'application/x-shar': ['shar'],\n 'application/x-shockwave-flash': ['swf'],\n 'application/x-silverlight-app': ['xap'],\n 'application/x-sql': ['sql'],\n 'application/x-stuffit': ['sit'],\n 'application/x-stuffitx': ['sitx'],\n 'application/x-subrip': ['srt'],\n 'application/x-sv4cpio': ['sv4cpio'],\n 'application/x-sv4crc': ['sv4crc'],\n 'application/x-t3vm-image': ['t3'],\n 'application/x-tads': ['gam'],\n 'application/x-tar': ['tar'],\n 'application/x-tcl': ['tcl', 'tk'],\n 'application/x-tex': ['tex'],\n 'application/x-tex-tfm': ['tfm'],\n 'application/x-texinfo': ['texinfo', 'texi'],\n 'application/x-tgif': ['obj'],\n 'application/x-ustar': ['ustar'],\n 'application/x-virtualbox-hdd': ['hdd'],\n 'application/x-virtualbox-ova': ['ova'],\n 'application/x-virtualbox-ovf': ['ovf'],\n 'application/x-virtualbox-vbox': ['vbox'],\n 'application/x-virtualbox-vbox-extpack': ['vbox-extpack'],\n 'application/x-virtualbox-vdi': ['vdi'],\n 'application/x-virtualbox-vhd': ['vhd'],\n 'application/x-virtualbox-vmdk': ['vmdk'],\n 'application/x-wais-source': ['src'],\n 'application/x-web-app-manifest+json': ['webapp'],\n 'application/x-x509-ca-cert': ['der', 'crt', 'pem'],\n 'application/x-xfig': ['fig'],\n 'application/x-xliff+xml': ['xlf'],\n 'application/x-xpinstall': ['xpi'],\n 'application/x-xz': ['xz'],\n 'application/x-zmachine': ['z1', 'z2', 'z3', 'z4', 'z5', 'z6', 'z7', 'z8'],\n 'audio/vnd.dece.audio': ['uva', 'uvva'],\n 'audio/vnd.digital-winds': ['eol'],\n 'audio/vnd.dra': ['dra'],\n 'audio/vnd.dts': ['dts'],\n 'audio/vnd.dts.hd': ['dtshd'],\n 'audio/vnd.lucent.voice': ['lvp'],\n 'audio/vnd.ms-playready.media.pya': ['pya'],\n 'audio/vnd.nuera.ecelp4800': ['ecelp4800'],\n 'audio/vnd.nuera.ecelp7470': ['ecelp7470'],\n 'audio/vnd.nuera.ecelp9600': ['ecelp9600'],\n 'audio/vnd.rip': ['rip'],\n 'audio/x-aac': ['aac'],\n 'audio/x-aiff': ['aif', 'aiff', 'aifc'],\n 'audio/x-caf': ['caf'],\n 'audio/x-flac': ['flac'],\n 'audio/x-m4a': ['*m4a'],\n 'audio/x-matroska': ['mka'],\n 'audio/x-mpegurl': ['m3u'],\n 'audio/x-ms-wax': ['wax'],\n 'audio/x-ms-wma': ['wma'],\n 'audio/x-pn-realaudio': ['ram', 'ra'],\n 'audio/x-pn-realaudio-plugin': ['rmp'],\n 'audio/x-realaudio': ['*ra'],\n 'audio/x-wav': ['*wav'],\n 'chemical/x-cdx': ['cdx'],\n 'chemical/x-cif': ['cif'],\n 'chemical/x-cmdf': ['cmdf'],\n 'chemical/x-cml': ['cml'],\n 'chemical/x-csml': ['csml'],\n 'chemical/x-xyz': ['xyz'],\n 'image/prs.btif': ['btif'],\n 'image/prs.pti': ['pti'],\n 'image/vnd.adobe.photoshop': ['psd'],\n 'image/vnd.airzip.accelerator.azv': ['azv'],\n 'image/vnd.dece.graphic': ['uvi', 'uvvi', 'uvg', 'uvvg'],\n 'image/vnd.djvu': ['djvu', 'djv'],\n 'image/vnd.dvb.subtitle': ['*sub'],\n 'image/vnd.dwg': ['dwg'],\n 'image/vnd.dxf': ['dxf'],\n 'image/vnd.fastbidsheet': ['fbs'],\n 'image/vnd.fpx': ['fpx'],\n 'image/vnd.fst': ['fst'],\n 'image/vnd.fujixerox.edmics-mmr': ['mmr'],\n 'image/vnd.fujixerox.edmics-rlc': ['rlc'],\n 'image/vnd.microsoft.icon': ['ico'],\n 'image/vnd.ms-modi': ['mdi'],\n 'image/vnd.ms-photo': ['wdp'],\n 'image/vnd.net-fpx': ['npx'],\n 'image/vnd.tencent.tap': ['tap'],\n 'image/vnd.valve.source.texture': ['vtf'],\n 'image/vnd.wap.wbmp': ['wbmp'],\n 'image/vnd.xiff': ['xif'],\n 'image/vnd.zbrush.pcx': ['pcx'],\n 'image/x-3ds': ['3ds'],\n 'image/x-cmu-raster': ['ras'],\n 'image/x-cmx': ['cmx'],\n 'image/x-freehand': ['fh', 'fhc', 'fh4', 'fh5', 'fh7'],\n 'image/x-icon': ['*ico'],\n 'image/x-jng': ['jng'],\n 'image/x-mrsid-image': ['sid'],\n 'image/x-ms-bmp': ['*bmp'],\n 'image/x-pcx': ['*pcx'],\n 'image/x-pict': ['pic', 'pct'],\n 'image/x-portable-anymap': ['pnm'],\n 'image/x-portable-bitmap': ['pbm'],\n 'image/x-portable-graymap': ['pgm'],\n 'image/x-portable-pixmap': ['ppm'],\n 'image/x-rgb': ['rgb'],\n 'image/x-tga': ['tga'],\n 'image/x-xbitmap': ['xbm'],\n 'image/x-xpixmap': ['xpm'],\n 'image/x-xwindowdump': ['xwd'],\n 'message/vnd.wfa.wsc': ['wsc'],\n 'model/vnd.collada+xml': ['dae'],\n 'model/vnd.dwf': ['dwf'],\n 'model/vnd.gdl': ['gdl'],\n 'model/vnd.gtw': ['gtw'],\n 'model/vnd.mts': ['mts'],\n 'model/vnd.opengex': ['ogex'],\n 'model/vnd.parasolid.transmit.binary': ['x_b'],\n 'model/vnd.parasolid.transmit.text': ['x_t'],\n 'model/vnd.usdz+zip': ['usdz'],\n 'model/vnd.valve.source.compiled-map': ['bsp'],\n 'model/vnd.vtu': ['vtu'],\n 'text/prs.lines.tag': ['dsc'],\n 'text/vnd.curl': ['curl'],\n 'text/vnd.curl.dcurl': ['dcurl'],\n 'text/vnd.curl.mcurl': ['mcurl'],\n 'text/vnd.curl.scurl': ['scurl'],\n 'text/vnd.dvb.subtitle': ['sub'],\n 'text/vnd.fly': ['fly'],\n 'text/vnd.fmi.flexstor': ['flx'],\n 'text/vnd.graphviz': ['gv'],\n 'text/vnd.in3d.3dml': ['3dml'],\n 'text/vnd.in3d.spot': ['spot'],\n 'text/vnd.sun.j2me.app-descriptor': ['jad'],\n 'text/vnd.wap.wml': ['wml'],\n 'text/vnd.wap.wmlscript': ['wmls'],\n 'text/x-asm': ['s', 'asm'],\n 'text/x-c': ['c', 'cc', 'cxx', 'cpp', 'h', 'hh', 'dic'],\n 'text/x-component': ['htc'],\n 'text/x-fortran': ['f', 'for', 'f77', 'f90'],\n 'text/x-handlebars-template': ['hbs'],\n 'text/x-java-source': ['java'],\n 'text/x-lua': ['lua'],\n 'text/x-markdown': ['mkd'],\n 'text/x-nfo': ['nfo'],\n 'text/x-opml': ['opml'],\n 'text/x-org': ['*org'],\n 'text/x-pascal': ['p', 'pas'],\n 'text/x-processing': ['pde'],\n 'text/x-sass': ['sass'],\n 'text/x-scss': ['scss'],\n 'text/x-setext': ['etx'],\n 'text/x-sfv': ['sfv'],\n 'text/x-suse-ymp': ['ymp'],\n 'text/x-uuencode': ['uu'],\n 'text/x-vcalendar': ['vcs'],\n 'text/x-vcard': ['vcf'],\n 'video/vnd.dece.hd': ['uvh', 'uvvh'],\n 'video/vnd.dece.mobile': ['uvm', 'uvvm'],\n 'video/vnd.dece.pd': ['uvp', 'uvvp'],\n 'video/vnd.dece.sd': ['uvs', 'uvvs'],\n 'video/vnd.dece.video': ['uvv', 'uvvv'],\n 'video/vnd.dvb.file': ['dvb'],\n 'video/vnd.fvt': ['fvt'],\n 'video/vnd.mpegurl': ['mxu', 'm4u'],\n 'video/vnd.ms-playready.media.pyv': ['pyv'],\n 'video/vnd.uvvu.mp4': ['uvu', 'uvvu'],\n 'video/vnd.vivo': ['viv'],\n 'video/x-f4v': ['f4v'],\n 'video/x-fli': ['fli'],\n 'video/x-flv': ['flv'],\n 'video/x-m4v': ['m4v'],\n 'video/x-matroska': ['mkv', 'mk3d', 'mks'],\n 'video/x-mng': ['mng'],\n 'video/x-ms-asf': ['asf', 'asx'],\n 'video/x-ms-vob': ['vob'],\n 'video/x-ms-wm': ['wm'],\n 'video/x-ms-wmv': ['wmv'],\n 'video/x-ms-wmx': ['wmx'],\n 'video/x-ms-wvx': ['wvx'],\n 'video/x-msvideo': ['avi'],\n 'video/x-sgi-movie': ['movie'],\n 'video/x-smv': ['smv'],\n 'x-conference/x-cooltalk': ['ice'],\n 'application/x-msi': 'msi',\n 'application/x-ms': 'ms',\n 'application/vnd.geo+json': 'geojson',\n 'application/vnd.debian.binary-package': 'deb',\n 'application/font-woff': 'woff',\n 'application/font-woff2': 'woff2',\n 'application/x-font-ttf': ['ttc', 'ttf'],\n 'font/opentype': 'otf',\n 'application/x-bb-appworld': 'bbaw',\n 'application/x-cd-image': 'iso',\n 'application/x-opera-extension': 'oex',\n 'application/x-ms-dos-executable': 'exe',\n 'text/vnd.rim.location.xloc': 'xloc',\n 'application/x-desktop': 'desktop',\n 'application/x-typescript': 'ts',\n 'application/x-java-archive': 'jar',\n 'application/x-sharedlib': 'so',\n};\n","/*\n * Copyright (c) 2019 by Filestack.\n * Some rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport * as SparkMD5 from 'spark-md5';\nvar mobileRegexp = /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series[46]0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino|android|ipad|playbook|silk/i;\n/**\n * Calculates a MD5 checksum for passed buffer\n * @private\n * @param data Data to be hashed\n * @returns base64 encoded MD5 hash\n */\nexport var md5 = function (data) {\n /* istanbul ignore next */\n return btoa(SparkMD5.ArrayBuffer.hash(data, true));\n};\n/**\n * return based string\n *\n * @param data\n */\nexport var b64 = function (data, safeUrl) {\n if (safeUrl === void 0) { safeUrl = false; }\n var b64 = btoa(data);\n if (safeUrl) {\n return b64.replace(/\\//g, '_').replace(/\\+/g, '-');\n }\n return b64;\n};\n/**\n * Return currently used filestack-js sdk version\n */\nexport var getVersion = function () {\n return 'JS-3.26.1';\n};\n/**\n * Returns if browser is a mobile device (if node env always return false)\n */\n/* istanbul ignore next */\nexport var isMobile = function () { return navigator && navigator.userAgent && mobileRegexp.test(navigator.userAgent); };\n/**\n * Check if application is runned in facebook browser\n */\nexport var isFacebook = function () { return navigator && navigator.userAgent && /\\[FB.*;/i.test(navigator.userAgent); };\n\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvdXRpbHMvaW5kZXguYnJvd3Nlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFDSCxPQUFPLEtBQUssUUFBUSxNQUFNLFdBQVcsQ0FBQztBQUV0QyxJQUFNLFlBQVksR0FBRyw0VkFBNFYsQ0FBQztBQUVsWDs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxJQUFNLEdBQUcsR0FBRyxVQUFDLElBQVM7SUFDM0IsMEJBQTBCO0lBQzFCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3JELENBQUMsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsSUFBTSxHQUFHLEdBQUcsVUFBQyxJQUFZLEVBQUUsT0FBd0I7SUFBeEIsd0JBQUEsRUFBQSxlQUF3QjtJQUN4RCxJQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFdkIsSUFBSSxPQUFPLEVBQUU7UUFDWCxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7S0FDcEQ7SUFFRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLElBQU0sVUFBVSxHQUFHO0lBQ3hCLE9BQU8sZUFBZSxDQUFDO0FBQ3pCLENBQUMsQ0FBQztBQUVGOztHQUVHO0FBQ0gsMEJBQTBCO0FBQzFCLE1BQU0sQ0FBQyxJQUFNLFFBQVEsR0FBRyxjQUFNLE9BQUEsU0FBUyxJQUFJLFNBQVMsQ0FBQyxTQUFTLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEVBQTFFLENBQTBFLENBQUM7QUFFekc7O0dBRUc7QUFDSCxNQUFNLENBQUMsSUFBTSxVQUFVLEdBQUcsY0FBTSxPQUFBLFNBQVMsSUFBSSxTQUFTLENBQUMsU0FBUyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUF4RSxDQUF3RSxDQUFDIiwiZmlsZSI6ImxpYi91dGlscy9pbmRleC5icm93c2VyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOSBieSBGaWxlc3RhY2suXG4gKiBTb21lIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCAqIGFzIFNwYXJrTUQ1IGZyb20gJ3NwYXJrLW1kNSc7XG5cbmNvbnN0IG1vYmlsZVJlZ2V4cCA9IC8oYW5kcm9pZHxiYlxcZCt8bWVlZ28pLittb2JpbGV8YXZhbnRnb3xiYWRhXFwvfGJsYWNrYmVycnl8YmxhemVyfGNvbXBhbHxlbGFpbmV8ZmVubmVjfGhpcHRvcHxpZW1vYmlsZXxpcChob25lfG9kKXxpcmlzfGtpbmRsZXxsZ2UgfG1hZW1vfG1pZHB8bW1wfG1vYmlsZS4rZmlyZWZveHxuZXRmcm9udHxvcGVyYSBtKG9ifGluKWl8cGFsbSggb3MpP3xwaG9uZXxwKGl4aXxyZSlcXC98cGx1Y2tlcnxwb2NrZXR8cHNwfHNlcmllc1s0Nl0wfHN5bWJpYW58dHJlb3x1cFxcLihicm93c2VyfGxpbmspfHZvZGFmb25lfHdhcHx3aW5kb3dzIChjZXxwaG9uZSl8eGRhfHhpaW5vfGFuZHJvaWR8aXBhZHxwbGF5Ym9va3xzaWxrL2k7XG5cbi8qKlxuICogQ2FsY3VsYXRlcyBhIE1ENSBjaGVja3N1bSBmb3IgcGFzc2VkIGJ1ZmZlclxuICogQHByaXZhdGVcbiAqIEBwYXJhbSBkYXRhICBEYXRhIHRvIGJlIGhhc2hlZFxuICogQHJldHVybnMgICAgIGJhc2U2NCBlbmNvZGVkIE1ENSBoYXNoXG4gKi9cbmV4cG9ydCBjb25zdCBtZDUgPSAoZGF0YTogYW55KTogc3RyaW5nID0+IHtcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgcmV0dXJuIGJ0b2EoU3BhcmtNRDUuQXJyYXlCdWZmZXIuaGFzaChkYXRhLCB0cnVlKSk7XG59O1xuXG4vKipcbiAqIHJldHVybiBiYXNlZCBzdHJpbmdcbiAqXG4gKiBAcGFyYW0gZGF0YVxuICovXG5leHBvcnQgY29uc3QgYjY0ID0gKGRhdGE6IHN0cmluZywgc2FmZVVybDogYm9vbGVhbiA9IGZhbHNlKTogc3RyaW5nID0+IHtcbiAgY29uc3QgYjY0ID0gYnRvYShkYXRhKTtcblxuICBpZiAoc2FmZVVybCkge1xuICAgIHJldHVybiBiNjQucmVwbGFjZSgvXFwvL2csICdfJykucmVwbGFjZSgvXFwrL2csICctJyk7XG4gIH1cblxuICByZXR1cm4gYjY0O1xufTtcblxuLyoqXG4gKiBSZXR1cm4gY3VycmVudGx5IHVzZWQgZmlsZXN0YWNrLWpzIHNkayB2ZXJzaW9uXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRWZXJzaW9uID0gKCkgPT4ge1xuICByZXR1cm4gJ0pTLUB7VkVSU0lPTn0nO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIGlmIGJyb3dzZXIgaXMgYSBtb2JpbGUgZGV2aWNlIChpZiBub2RlIGVudiBhbHdheXMgcmV0dXJuIGZhbHNlKVxuICovXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuZXhwb3J0IGNvbnN0IGlzTW9iaWxlID0gKCkgPT4gbmF2aWdhdG9yICYmIG5hdmlnYXRvci51c2VyQWdlbnQgJiYgbW9iaWxlUmVnZXhwLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG5cbi8qKlxuICogQ2hlY2sgaWYgYXBwbGljYXRpb24gaXMgcnVubmVkIGluIGZhY2Vib29rIGJyb3dzZXJcbiAqL1xuZXhwb3J0IGNvbnN0IGlzRmFjZWJvb2sgPSAoKSA9PiBuYXZpZ2F0b3IgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudCAmJiAvXFxbRkIuKjsvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO1xuIl19\n","/*\n * Copyright (c) 2018 by Filestack.\n * Some rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { FsRequestOptions, FsResponse } from './types';\n\n/**\n * Filestack error codes (common for browser and node)\n *\n * @export\n * @enum {number}\n */\nexport enum FsRequestErrorCode {\n ABORTED = 'ABORTED',\n NETWORK = 'NETWORK',\n TIMEOUT = 'TIMEDOUT',\n SERVER = 'SERVER',\n REQUEST = 'REQUEST',\n OTHER = 'OTHER',\n REDIRECT = 'REDIRECT',\n}\n\n/**\n * Custom Filestack Request error class\n *\n * @export\n * @class FsRequestError\n * @extends {Error}\n */\nexport class FsRequestError extends Error {\n /**\n * Error details, ie validation errors\n *\n * @type {*}\n * @memberof FilestackError\n */\n public readonly config: FsRequestOptions;\n public readonly response: FsResponse;\n public readonly code: FsRequestErrorCode;\n\n /**\n * Creates an instance of FsRequestError.\n *\n * @param {string} message\n * @param {*} config\n * @param {FsResponse} [response]\n * @param {FsRequestErrorCode} [code]\n * @memberof FsRequestError\n */\n constructor(message: string, config: any, response?: FsResponse, code?: FsRequestErrorCode) {\n /* istanbul ignore next */\n super(message);\n\n this.config = config;\n this.response = response;\n this.code = code;\n\n // const captureStackTrace: Function = (Error as any).captureStackTrace;\n // captureStackTrace && captureStackTrace(this);\n fixProto(this, new.target.prototype);\n }\n}\n\nfunction fixProto(target: Error, prototype: {}) {\n const setPrototypeOf: Function = (Object as any).setPrototypeOf;\n /* istanbul ignore next */\n setPrototypeOf ? setPrototypeOf(target, prototype) : ((target as any).__proto__ = prototype);\n}\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\nfunction log(...args) {\n\t// This hackery is required for IE8/9, where\n\t// the `console.log` function doesn't have 'apply'\n\treturn typeof console === 'object' &&\n\t\tconsole.log &&\n\t\tconsole.log(...args);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n\nimport { Primitive } from '@sentry/types';\n/**\n * Checks whether given value's type is one of a few Error or Error-like\n * {@link isError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isError(wat: any): boolean {\n switch (Object.prototype.toString.call(wat)) {\n case '[object Error]':\n return true;\n case '[object Exception]':\n return true;\n case '[object DOMException]':\n return true;\n default:\n return isInstanceOf(wat, Error);\n }\n}\n\n/**\n * Checks whether given value's type is ErrorEvent\n * {@link isErrorEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isErrorEvent(wat: any): boolean {\n return Object.prototype.toString.call(wat) === '[object ErrorEvent]';\n}\n\n/**\n * Checks whether given value's type is DOMError\n * {@link isDOMError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMError(wat: any): boolean {\n return Object.prototype.toString.call(wat) === '[object DOMError]';\n}\n\n/**\n * Checks whether given value's type is DOMException\n * {@link isDOMException}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMException(wat: any): boolean {\n return Object.prototype.toString.call(wat) === '[object DOMException]';\n}\n\n/**\n * Checks whether given value's type is a string\n * {@link isString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isString(wat: any): boolean {\n return Object.prototype.toString.call(wat) === '[object String]';\n}\n\n/**\n * Checks whether given value's is a primitive (undefined, null, number, boolean, string, bigint, symbol)\n * {@link isPrimitive}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPrimitive(wat: any): wat is Primitive {\n return wat === null || (typeof wat !== 'object' && typeof wat !== 'function');\n}\n\n/**\n * Checks whether given value's type is an object literal\n * {@link isPlainObject}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPlainObject(wat: any): boolean {\n return Object.prototype.toString.call(wat) === '[object Object]';\n}\n\n/**\n * Checks whether given value's type is an Event instance\n * {@link isEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isEvent(wat: any): boolean {\n return typeof Event !== 'undefined' && isInstanceOf(wat, Event);\n}\n\n/**\n * Checks whether given value's type is an Element instance\n * {@link isElement}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isElement(wat: any): boolean {\n return typeof Element !== 'undefined' && isInstanceOf(wat, Element);\n}\n\n/**\n * Checks whether given value's type is an regexp\n * {@link isRegExp}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isRegExp(wat: any): boolean {\n return Object.prototype.toString.call(wat) === '[object RegExp]';\n}\n\n/**\n * Checks whether given value has a then function.\n * @param wat A value to be checked.\n */\nexport function isThenable(wat: any): boolean {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return Boolean(wat && wat.then && typeof wat.then === 'function');\n}\n\n/**\n * Checks whether given value's type is a SyntheticEvent\n * {@link isSyntheticEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isSyntheticEvent(wat: any): boolean {\n return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in wat;\n}\n/**\n * Checks whether given value's type is an instance of provided constructor.\n * {@link isInstanceOf}.\n *\n * @param wat A value to be checked.\n * @param base A constructor to be used in a check.\n * @returns A boolean representing the result.\n */\nexport function isInstanceOf(wat: any, base: any): boolean {\n try {\n return wat instanceof base;\n } catch (_e) {\n return false;\n }\n}\n","/*\n * Copyright (c) 2018 by Filestack\n * Some rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nexport var isBuffer = function () { return false; };\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nexport var isStream = function () { return false; };\n\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvcmVxdWVzdC91dGlscy5icm93c2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVIOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLElBQU0sUUFBUSxHQUFHLGNBQU0sT0FBQSxLQUFLLEVBQUwsQ0FBSyxDQUFDO0FBRXBDOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLElBQU0sUUFBUSxHQUFHLGNBQU0sT0FBQSxLQUFLLEVBQUwsQ0FBSyxDQUFDIiwiZmlsZSI6ImxpYi9yZXF1ZXN0L3V0aWxzLmJyb3dzZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4IGJ5IEZpbGVzdGFja1xuICogU29tZSByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBCdWZmZXJcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIEJ1ZmZlciwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmV4cG9ydCBjb25zdCBpc0J1ZmZlciA9ICgpID0+IGZhbHNlO1xuXG4vKipcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgU3RyZWFtXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBTdHJlYW0sIG90aGVyd2lzZSBmYWxzZVxuICovXG5leHBvcnQgY29uc3QgaXNTdHJlYW0gPSAoKSA9PiBmYWxzZTtcbiJdfQ==\n","/*\n * Copyright (c) 2018 by Filestack\n * Some rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nexport const isArray = (val: any[]) => Object.prototype.toString.call(val) === '[object Array]';\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nexport const isArrayBuffer = (val: ArrayBuffer) => Object.prototype.toString.call(val) === '[object ArrayBuffer]';\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nexport const isArrayBufferView = (val: ArrayBufferView) => {\n let result;\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n result = ArrayBuffer.isView(val);\n } else {\n result = val && val.buffer && val.buffer instanceof ArrayBuffer;\n }\n\n return result;\n};\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nexport const isObject = (val: any) => val !== null && typeof val === 'object';\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nexport const isString = (val: any) => typeof val === 'string' || val instanceof String;\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nexport const isFile = (val: File) => Object.prototype.toString.call(val) === '[object File]';\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nexport const isBlob = (val: Blob) => Object.prototype.toString.call(val) === '[object Blob]';\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nexport const isURLSearchParams = (val: URLSearchParams) => typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n\n/**\n * Determine if value is form data\n *\n * @param val\n */\nexport const isFormData = val => typeof FormData !== 'undefined' && val instanceof FormData;\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nexport const trim = str => str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n\nexport * from './utils.node';\n","/*\n * Copyright (c) 2018 by Filestack\n * Some rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { FsCancelToken } from './token';\n\nexport enum FsHttpMethod {\n GET = 'GET',\n DELETE = 'DELETE',\n HEAD = 'HEAD',\n PURGE = 'PURGE',\n OPTIONS = 'OPTIONS',\n POST = 'POST',\n PUT = 'PUT',\n PATH = 'PATH',\n}\n\nexport interface FsRetryConfig {\n retry: number;\n onRetry?: (requestConfig: any) => void;\n retryMaxTime?: number;\n retryFactor?: number;\n}\n\nexport interface FsAuthConfig {\n username: string;\n password: string;\n}\n\nexport interface FsRequestHeaders {\n [name: string]: string;\n}\n\nexport interface FsRequestParams {\n [name: string]: string | number;\n}\n\n/**\n * Request runtime data like retryCount etc\n */\nexport interface FsRequestRuntime {\n retryCount?: number;\n [name: string]: any;\n}\n\nexport interface FsRequestOptions {\n url?: string;\n data?: any;\n method?: FsHttpMethod;\n mode?: RequestMode;\n cache?: RequestCache;\n redirect?: RequestRedirect;\n params?: FsRequestParams;\n filestackHeaders?: boolean;\n headers?: FsRequestHeaders;\n blobResponse?: boolean; // blob response only for browsers\n timeout?: number;\n cancelToken?: FsCancelToken;\n retry?: FsRetryConfig;\n onProgress?: (pr: ProgressEvent) => any;\n auth?: FsAuthConfig;\n runtime?: FsRequestRuntime;\n}\n\nexport interface FsResponse {\n status: number;\n statusText: string;\n headers: any;\n data: any;\n config: FsRequestOptions;\n}\n","'use strict';\n\nconst nameStartChar = ':A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\nconst nameChar = nameStartChar + '\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\nconst nameRegexp = '[' + nameStartChar + '][' + nameChar + ']*'\nconst regexName = new RegExp('^' + nameRegexp + '$');\n\nconst getAllMatches = function(string, regex) {\n const matches = [];\n let match = regex.exec(string);\n while (match) {\n const allmatches = [];\n const len = match.length;\n for (let index = 0; index < len; index++) {\n allmatches.push(match[index]);\n }\n matches.push(allmatches);\n match = regex.exec(string);\n }\n return matches;\n};\n\nconst isName = function(string) {\n const match = regexName.exec(string);\n return !(match === null || typeof match === 'undefined');\n};\n\nexports.isExist = function(v) {\n return typeof v !== 'undefined';\n};\n\nexports.isEmptyObject = function(obj) {\n return Object.keys(obj).length === 0;\n};\n\n/**\n * Copy all the properties of a into b.\n * @param {*} target\n * @param {*} a\n */\nexports.merge = function(target, a, arrayMode) {\n if (a) {\n const keys = Object.keys(a); // will return an array of own properties\n const len = keys.length; //don't make it inline\n for (let i = 0; i < len; i++) {\n if(arrayMode === 'strict'){\n target[keys[i]] = [ a[keys[i]] ];\n }else{\n target[keys[i]] = a[keys[i]];\n }\n }\n }\n};\n/* exports.merge =function (b,a){\n return Object.assign(b,a);\n} */\n\nexports.getValue = function(v) {\n if (exports.isExist(v)) {\n return v;\n } else {\n return '';\n }\n};\n\n// const fakeCall = function(a) {return a;};\n// const fakeCallNoReturn = function() {};\n\nexports.buildOptions = function(options, defaultOptions, props) {\n var newOptions = {};\n if (!options) {\n return defaultOptions; //if there are not options\n }\n\n for (let i = 0; i < props.length; i++) {\n if (options[props[i]] !== undefined) {\n newOptions[props[i]] = options[props[i]];\n } else {\n newOptions[props[i]] = defaultOptions[props[i]];\n }\n }\n return newOptions;\n};\n\nexports.isName = isName;\nexports.getAllMatches = getAllMatches;\nexports.nameRegexp = nameRegexp;\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Event, Integration, StackFrame, WrappedFunction } from '@sentry/types';\n\nimport { isNodeEnv } from './node';\nimport { snipLine } from './string';\n\n/** Internal */\ninterface SentryGlobal {\n Sentry?: {\n Integrations?: Integration[];\n };\n SENTRY_ENVIRONMENT?: string;\n SENTRY_DSN?: string;\n SENTRY_RELEASE?: {\n id?: string;\n };\n __SENTRY__: {\n globalEventProcessors: any;\n hub: any;\n logger: any;\n };\n}\n\nconst fallbackGlobalObject = {};\n\n/**\n * Safely get global scope object\n *\n * @returns Global scope object\n */\nexport function getGlobalObject<T>(): T & SentryGlobal {\n return (isNodeEnv()\n ? global\n : typeof window !== 'undefined'\n ? window\n : typeof self !== 'undefined'\n ? self\n : fallbackGlobalObject) as T & SentryGlobal;\n}\n\n/**\n * Extended Window interface that allows for Crypto API usage in IE browsers\n */\ninterface MsCryptoWindow extends Window {\n msCrypto?: Crypto;\n}\n\n/**\n * UUID4 generator\n *\n * @returns string Generated UUID4.\n */\nexport function uuid4(): string {\n const global = getGlobalObject() as MsCryptoWindow;\n const crypto = global.crypto || global.msCrypto;\n\n if (!(crypto === void 0) && crypto.getRandomValues) {\n // Use window.crypto API if available\n const arr = new Uint16Array(8);\n crypto.getRandomValues(arr);\n\n // set 4 in byte 7\n // eslint-disable-next-line no-bitwise\n arr[3] = (arr[3] & 0xfff) | 0x4000;\n // set 2 most significant bits of byte 9 to '10'\n // eslint-disable-next-line no-bitwise\n arr[4] = (arr[4] & 0x3fff) | 0x8000;\n\n const pad = (num: number): string => {\n let v = num.toString(16);\n while (v.length < 4) {\n v = `0${v}`;\n }\n return v;\n };\n\n return (\n pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7])\n );\n }\n // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, c => {\n // eslint-disable-next-line no-bitwise\n const r = (Math.random() * 16) | 0;\n // eslint-disable-next-line no-bitwise\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n\n/**\n * Parses string form of URL into an object\n * // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B\n * // intentionally using regex and not <a/> href parsing trick because React Native and other\n * // environments where DOM might not be available\n * @returns parsed URL object\n */\nexport function parseUrl(\n url: string,\n): {\n host?: string;\n path?: string;\n protocol?: string;\n relative?: string;\n} {\n if (!url) {\n return {};\n }\n\n const match = url.match(/^(([^:/?#]+):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/);\n\n if (!match) {\n return {};\n }\n\n // coerce to undefined values to empty string so we don't get 'undefined'\n const query = match[6] || '';\n const fragment = match[8] || '';\n return {\n host: match[4],\n path: match[5],\n protocol: match[2],\n relative: match[5] + query + fragment, // everything minus origin\n };\n}\n\n/**\n * Extracts either message or type+value from an event that can be used for user-facing logs\n * @returns event's description\n */\nexport function getEventDescription(event: Event): string {\n if (event.message) {\n return event.message;\n }\n if (event.exception && event.exception.values && event.exception.values[0]) {\n const exception = event.exception.values[0];\n\n if (exception.type && exception.value) {\n return `${exception.type}: ${exception.value}`;\n }\n return exception.type || exception.value || event.event_id || '<unknown>';\n }\n return event.event_id || '<unknown>';\n}\n\n/** JSDoc */\ninterface ExtensibleConsole extends Console {\n [key: string]: any;\n}\n\n/** JSDoc */\nexport function consoleSandbox(callback: () => any): any {\n const global = getGlobalObject<Window>();\n const levels = ['debug', 'info', 'warn', 'error', 'log', 'assert'];\n\n if (!('console' in global)) {\n return callback();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const originalConsole = (global as any).console as ExtensibleConsole;\n const wrappedLevels: { [key: string]: any } = {};\n\n // Restore all wrapped console methods\n levels.forEach(level => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (level in (global as any).console && (originalConsole[level] as WrappedFunction).__sentry_original__) {\n wrappedLevels[level] = originalConsole[level] as WrappedFunction;\n originalConsole[level] = (originalConsole[level] as WrappedFunction).__sentry_original__;\n }\n });\n\n // Perform callback manipulations\n const result = callback();\n\n // Revert restoration to wrapped state\n Object.keys(wrappedLevels).forEach(level => {\n originalConsole[level] = wrappedLevels[level];\n });\n\n return result;\n}\n\n/**\n * Adds exception values, type and value to an synthetic Exception.\n * @param event The event to modify.\n * @param value Value of the exception.\n * @param type Type of the exception.\n * @hidden\n */\nexport function addExceptionTypeValue(event: Event, value?: string, type?: string): void {\n event.exception = event.exception || {};\n event.exception.values = event.exception.values || [];\n event.exception.values[0] = event.exception.values[0] || {};\n event.exception.values[0].value = event.exception.values[0].value || value || '';\n event.exception.values[0].type = event.exception.values[0].type || type || 'Error';\n}\n\n/**\n * Adds exception mechanism to a given event.\n * @param event The event to modify.\n * @param mechanism Mechanism of the mechanism.\n * @hidden\n */\nexport function addExceptionMechanism(\n event: Event,\n mechanism: {\n [key: string]: any;\n } = {},\n): void {\n // TODO: Use real type with `keyof Mechanism` thingy and maybe make it better?\n try {\n // @ts-ignore Type 'Mechanism | {}' is not assignable to type 'Mechanism | undefined'\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n event.exception!.values![0].mechanism = event.exception!.values![0].mechanism || {};\n Object.keys(mechanism).forEach(key => {\n // @ts-ignore Mechanism has no index signature\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n event.exception!.values![0].mechanism[key] = mechanism[key];\n });\n } catch (_oO) {\n // no-empty\n }\n}\n\n/**\n * A safe form of location.href\n */\nexport function getLocationHref(): string {\n try {\n return document.location.href;\n } catch (oO) {\n return '';\n }\n}\n\n// https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string\nconst SEMVER_REGEXP = /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\n\n/**\n * Represents Semantic Versioning object\n */\ninterface SemVer {\n major?: number;\n minor?: number;\n patch?: number;\n prerelease?: string;\n buildmetadata?: string;\n}\n\n/**\n * Parses input into a SemVer interface\n * @param input string representation of a semver version\n */\nexport function parseSemver(input: string): SemVer {\n const match = input.match(SEMVER_REGEXP) || [];\n const major = parseInt(match[1], 10);\n const minor = parseInt(match[2], 10);\n const patch = parseInt(match[3], 10);\n return {\n buildmetadata: match[5],\n major: isNaN(major) ? undefined : major,\n minor: isNaN(minor) ? undefined : minor,\n patch: isNaN(patch) ? undefined : patch,\n prerelease: match[4],\n };\n}\n\nconst defaultRetryAfter = 60 * 1000; // 60 seconds\n\n/**\n * Extracts Retry-After value from the request header or returns default value\n * @param now current unix timestamp\n * @param header string representation of 'Retry-After' header\n */\nexport function parseRetryAfterHeader(now: number, header?: string | number | null): number {\n if (!header) {\n return defaultRetryAfter;\n }\n\n const headerDelay = parseInt(`${header}`, 10);\n if (!isNaN(headerDelay)) {\n return headerDelay * 1000;\n }\n\n const headerDate = Date.parse(`${header}`);\n if (!isNaN(headerDate)) {\n return headerDate - now;\n }\n\n return defaultRetryAfter;\n}\n\n/**\n * This function adds context (pre/post/line) lines to the provided frame\n *\n * @param lines string[] containing all lines\n * @param frame StackFrame that will be mutated\n * @param linesOfContext number of context lines we want to add pre/post\n */\nexport function addContextToFrame(lines: string[], frame: StackFrame, linesOfContext: number = 5): void {\n const lineno = frame.lineno || 0;\n const maxLines = lines.length;\n const sourceLine = Math.max(Math.min(maxLines, lineno - 1), 0);\n\n frame.pre_context = lines\n .slice(Math.max(0, sourceLine - linesOfContext), sourceLine)\n .map((line: string) => snipLine(line, 0));\n\n frame.context_line = snipLine(lines[Math.min(maxLines - 1, sourceLine)], frame.colno || 0);\n\n frame.post_context = lines\n .slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext)\n .map((line: string) => snipLine(line, 0));\n}\n\n/**\n * Strip the query string and fragment off of a given URL or path (if present)\n *\n * @param urlPath Full URL or path, including possible query string and/or fragment\n * @returns URL or path without query string or fragment\n */\nexport function stripUrlQueryAndFragment(urlPath: string): string {\n // eslint-disable-next-line no-useless-escape\n return urlPath.split(/[\\?#]/, 1)[0];\n}\n","import { isRegExp, isString } from './is';\n\n/**\n * Truncates given string to the maximum characters count\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string (0 = unlimited)\n * @returns string Encoded\n */\nexport function truncate(str: string, max: number = 0): string {\n if (typeof str !== 'string' || max === 0) {\n return str;\n }\n return str.length <= max ? str : `${str.substr(0, max)}...`;\n}\n\n/**\n * This is basically just `trim_line` from\n * https://github.com/getsentry/sentry/blob/master/src/sentry/lang/javascript/processor.py#L67\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string\n * @returns string Encoded\n */\nexport function snipLine(line: string, colno: number): string {\n let newLine = line;\n const ll = newLine.length;\n if (ll <= 150) {\n return newLine;\n }\n if (colno > ll) {\n // eslint-disable-next-line no-param-reassign\n colno = ll;\n }\n\n let start = Math.max(colno - 60, 0);\n if (start < 5) {\n start = 0;\n }\n\n let end = Math.min(start + 140, ll);\n if (end > ll - 5) {\n end = ll;\n }\n if (end === ll) {\n start = Math.max(end - 140, 0);\n }\n\n newLine = newLine.slice(start, end);\n if (start > 0) {\n newLine = `'{snip} ${newLine}`;\n }\n if (end < ll) {\n newLine += ' {snip}';\n }\n\n return newLine;\n}\n\n/**\n * Join values in array\n * @param input array of values to be joined together\n * @param delimiter string to be placed in-between values\n * @returns Joined values\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function safeJoin(input: any[], delimiter?: string): string {\n if (!Array.isArray(input)) {\n return '';\n }\n\n const output = [];\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < input.length; i++) {\n const value = input[i];\n try {\n output.push(String(value));\n } catch (e) {\n output.push('[value cannot be serialized]');\n }\n }\n\n return output.join(delimiter);\n}\n\n/**\n * Checks if the value matches a regex or includes the string\n * @param value The string value to be checked against\n * @param pattern Either a regex or a string that must be contained in value\n */\nexport function isMatchingPattern(value: string, pattern: RegExp | string): boolean {\n if (!isString(value)) {\n return false;\n }\n\n if (isRegExp(pattern)) {\n return (pattern as RegExp).test(value);\n }\n if (typeof pattern === 'string') {\n return value.indexOf(pattern) !== -1;\n }\n return false;\n}\n","/*\n * Copyright (c) 2018 by Filestack\n * Some rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n /**\n * Save cookie in browser\n *\n * @param name\n * @param value\n * @param expires\n * @param path\n * @param domain\n * @param secure\n */\nexport const write = (name: string, value: string, expires?: number, path?: string, domain?: string, secure?: boolean) => {\n const cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (expires) {\n cookie.push('expires=' + new Date(expires).toUTCString());\n }\n\n if (path) {\n cookie.push('path=' + path);\n }\n\n if (domain) {\n cookie.push('domain=' + domain);\n }\n\n if (secure) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n};\n\n/**\n * Read cookie from browser with given name\n *\n * @param name\n */\nexport const read = (name: string) => {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n};\n\n/**\n * Clear cookie by name\n *\n * @param name\n */\nexport const remove = (name) => {\n write(name, '', Date.now() - 86400000);\n};\n","/*\n * Copyright (c) 2018 by Filestack\n * Some rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { trim } from './../utils';\nimport { FsRequestHeaders } from './../types';\n\nconst ignoreDuplicates = [\n 'expires',\n 'from',\n 'host',\n 'if-modified-since',\n 'if-unmodified-since',\n 'age',\n 'authorization',\n 'content-length',\n 'content-type',\n 'etag',\n 'last-modified',\n 'location',\n 'max-forwards',\n 'proxy-authorization',\n 'referer',\n 'retry-after',\n 'user-agent',\n];\n\n/**\n * Parse response raw header (xhr)\n *\n * @param {string} headers - raw headers string\n */\nexport const parse = headers => {\n let parsed = {};\n let key;\n let val;\n let i;\n\n if (!headers) {\n return parsed;\n }\n\n headers.split('\\n').forEach(line => {\n i = line.indexOf(':');\n key = trim(line.substr(0, i)).toLowerCase();\n val = trim(line.substr(i + 1));\n\n if (!key) {\n return;\n }\n\n if (parsed[key] && ignoreDuplicates.indexOf(key) >= 0) {\n return;\n }\n\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n\n/**\n * Normalize input headers\n *\n * @param headers\n */\nexport const normalizeHeaders = (headers: FsRequestHeaders): FsRequestHeaders => {\n if (!headers) {\n return {};\n }\n\n const toReturn = {};\n\n for (let i in headers) {\n toReturn[normalizeName(i)] = headers[i];\n }\n\n return toReturn;\n};\n\n// expect(set({}, 'set-cookies', 'value')).toEqual({ 'Set-Cookies': 'value' });\n/**\n * Set request headers\n *\n * @param headers - object containing headers\n * @param name - header name\n * @param value - header value\n * @param setIFExists - determine if we should change header value if exists\n */\nexport const set = (headers: FsRequestHeaders, name: string, value: string, setIFExists = false) => {\n const normalizedName = normalizeName(name);\n\n if (!headers) {\n headers = {};\n }\n\n // cleanup headers from undefined vals\n headers = JSON.parse(JSON.stringify(headers));\n if (headers[name] === undefined && headers[normalizedName] === undefined) {\n headers[normalizedName] = value;\n } else if (setIFExists) {\n delete headers[name];\n headers[normalizedName] = value;\n }\n\n return headers;\n};\n\n/**\n * Normalize header names according to rfc spec\n *\n * @param {string} name - header name\n */\nexport const normalizeName = (name: string) => {\n // the exceptions\n let result = {\n 'content-md5': 'Content-MD5',\n dnt: 'DNT',\n etag: 'ETag',\n 'last-event-id': 'Last-Event-ID',\n tcn: 'TCN',\n te: 'TE',\n 'www-authenticate': 'WWW-Authenticate',\n 'x-dnsprefetch-control': 'X-DNSPrefetch-Control',\n }[name.toLowerCase()];\n\n if (result) {\n return result;\n }\n\n // the default\n return name\n .split('-')\n .map(function(text) {\n return text.charAt(0).toUpperCase() + text.substr(1).toLowerCase();\n })\n .join('-');\n};\n","/*\n * Copyright (c) 2018 by Filestack\n * Some rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { isURLSearchParams, isObject, isStream, isFormData, isArrayBuffer, isFile, isBlob, isBuffer } from './../utils';\nimport { getVersion, uniqueId } from './../../utils';\nimport { FsRequestOptions, FsResponse } from './../types';\nimport { set } from './headers';\nimport * as parser from 'fast-xml-parser';\nimport Debug from 'debug';\n\nconst debug = Debug('fs:request:data');\n\n/**\n * Prepare request and set content-type header based on data\n *\n * @param headers\n * @param data\n */\nexport const prepareData = (config: FsRequestOptions) => {\n // set filestack debug headers first\n config = filestackHeaders(config);\n\n if (isFormData(config.data) || isBuffer(config.data) || isStream(config.data) || isFile(config.data) || isBlob(config.data)) {\n return config;\n }\n\n // @todo convert it to ArrayBufferView for browser\n if (isArrayBuffer(config.data)) {\n return config;\n }\n\n if (isURLSearchParams(config.data)) {\n config.headers = set(config.headers, 'content-type', 'application/x-www-form-urlencoded;charset=utf-8');\n config.data = config.data.toString();\n } else if (isObject(config.data)) {\n config.headers = set(config.headers, 'content-type', 'application/json', true);\n config.data = JSON.stringify(config.data);\n }\n\n return config;\n};\n\n/**\n * Add filestack debug headers to request\n *\n * @param config\n */\nexport const filestackHeaders = (config: FsRequestOptions) => {\n if (!config.filestackHeaders) {\n return config;\n }\n\n config.headers = set(config.headers, 'filestack-source', getVersion());\n config.headers = set(config.headers, 'filestack-trace-id', `${Math.floor(Date.now() / 1000)}-${uniqueId()}`);\n config.headers = set(config.headers, 'filestack-trace-span', `jssdk-${uniqueId()}`);\n\n return config;\n};\n\n/**\n * Prepare response data based on content type\n *\n * @param response\n */\nexport const parseResponse = async (response: FsResponse): Promise<FsResponse> => {\n if (!response.headers || !response.headers['content-type']) {\n return Promise.resolve(response);\n }\n\n const contentType = response.headers['content-type'];\n\n if (/application\\/json/.test(contentType)) {\n try {\n response.data = JSON.parse(response.data);\n } catch (e) {\n debug('Cannot parse response %O - %O', response.data, response.headers);\n }\n } else if (/text\\/(plain|html)/.test(contentType)) {\n if (isBuffer(response.data)) {\n response.data = bufferToString(response.data);\n }\n } else if (/application\\/xml/.test(contentType)) {\n let data = response.data;\n\n if (isBuffer(response.data)) {\n data = bufferToString(response.data);\n }\n\n if (parser.validate(data) === true) {\n response.data = parser.parse(data, {\n ignoreAttributes : true,\n trimValues: true,\n });\n }\n }\n\n return Promise.resolve(response);\n};\n\nfunction bufferToString(buffer) {\n const bufView = new Uint16Array(buffer);\n const length = bufView.length;\n\n let result = '';\n let addition = Math.pow(2, 16) - 1;\n\n for (let i = 0; i < length; i += addition) {\n if (i + addition > length) {\n addition = length - i;\n }\n result += String.fromCharCode.apply(null, bufView.subarray(i, i + addition));\n }\n\n return result;\n}\n","/*\n * Copyright (c) 2018 by Filestack\n * Some rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Combine url with qs parameters\n *\n * @param {String} url base url\n * @param {Object} params Query string params object\n */\nexport const combineURL = (url, params) => {\n if (!params) {\n return url;\n }\n\n const serialized = urlfy(params);\n const hashIndex = url.indexOf('#');\n\n if (hashIndex !== -1) {\n url = url.slice(0, hashIndex);\n }\n\n return url + (url.indexOf('?') === -1 ? '?' : '&') + serialized;\n};\n\n/**\n * Change request json params to url search ones\n *\n * @param {Object} obj Object to transform\n */\nexport const urlfy = val =>\n Object.keys(val)\n .filter(k => k && typeof val[k] !== 'undefined')\n .map(k => `${encodeURIComponent(k)}=${encodeURIComponent(val[k])}`)\n .join('&');\n","'use strict';\n\nvar uri = require('url');\n\nvar ValidationError = exports.ValidationError = function ValidationError (message, instance, schema, propertyPath, name, argument) {\n if (propertyPath) {\n this.property = propertyPath;\n }\n if (message) {\n this.message = message;\n }\n if (schema) {\n if (schema.id) {\n this.schema = schema.id;\n } else {\n this.schema = schema;\n }\n }\n if (instance) {\n this.instance = instance;\n }\n this.name = name;\n this.argument = argument;\n this.stack = this.toString();\n};\n\nValidationError.prototype.toString = function toString() {\n return this.property + ' ' + this.message;\n};\n\nvar ValidatorResult = exports.ValidatorResult = function ValidatorResult(instance, schema, options, ctx) {\n this.instance = instance;\n this.schema = schema;\n this.propertyPath = ctx.propertyPath;\n this.errors = [];\n this.throwError = options && options.throwError;\n this.disableFormat = options && options.disableFormat === true;\n};\n\nValidatorResult.prototype.addError = function addError(detail) {\n var err;\n if (typeof detail == 'string') {\n err = new ValidationError(detail, this.instance, this.schema, this.propertyPath);\n } else {\n if (!detail) throw new Error('Missing error detail');\n if (!detail.message) throw new Error('Missing error message');\n if (!detail.name) throw new Error('Missing validator type');\n err = new ValidationError(detail.message, this.instance, this.schema, this.propertyPath, detail.name, detail.argument);\n }\n\n if (this.throwError) {\n throw err;\n }\n this.errors.push(err);\n return err;\n};\n\nValidatorResult.prototype.importErrors = function importErrors(res) {\n if (typeof res == 'string' || (res && res.validatorType)) {\n this.addError(res);\n } else if (res && res.errors) {\n Array.prototype.push.apply(this.errors, res.errors);\n }\n};\n\nfunction stringizer (v,i){\n return i+': '+v.toString()+'\\n';\n}\nValidatorResult.prototype.toString = function toString(res) {\n return this.errors.map(stringizer).join('');\n};\n\nObject.defineProperty(ValidatorResult.prototype, \"valid\", { get: function() {\n return !this.errors.length;\n} });\n\n/**\n * Describes a problem with a Schema which prevents validation of an instance\n * @name SchemaError\n * @constructor\n */\nvar SchemaError = exports.SchemaError = function SchemaError (msg, schema) {\n this.message = msg;\n this.schema = schema;\n Error.call(this, msg);\n Error.captureStackTrace(this, SchemaError);\n};\nSchemaError.prototype = Object.create(Error.prototype,\n { constructor: {value: SchemaError, enumerable: false}\n , name: {value: 'SchemaError', enumerable: false}\n });\n\nvar SchemaContext = exports.SchemaContext = function SchemaContext (schema, options, propertyPath, base, schemas) {\n this.schema = schema;\n this.options = options;\n this.propertyPath = propertyPath;\n this.base = base;\n this.schemas = schemas;\n};\n\nSchemaContext.prototype.resolve = function resolve (target) {\n return uri.resolve(this.base, target);\n};\n\nSchemaContext.prototype.makeChild = function makeChild(schema, propertyName){\n var propertyPath = (propertyName===undefined) ? this.propertyPath : this.propertyPath+makeSuffix(propertyName);\n var base = uri.resolve(this.base, schema.id||'');\n var ctx = new SchemaContext(schema, this.options, propertyPath, base, Object.create(this.schemas));\n if(schema.id && !ctx.schemas[base]){\n ctx.schemas[base] = schema;\n }\n return ctx;\n}\n\nvar FORMAT_REGEXPS = exports.FORMAT_REGEXPS = {\n 'date-time': /^\\d{4}-(?:0[0-9]{1}|1[0-2]{1})-(3[01]|0[1-9]|[12][0-9])[tT ](2[0-4]|[01][0-9]):([0-5][0-9]):(60|[0-5][0-9])(\\.\\d+)?([zZ]|[+-]([0-5][0-9]):(60|[0-5][0-9]))$/,\n 'date': /^\\d{4}-(?:0[0-9]{1}|1[0-2]{1})-(3[01]|0[1-9]|[12][0-9])$/,\n 'time': /^(2[0-4]|[01][0-9]):([0-5][0-9]):(60|[0-5][0-9])$/,\n\n 'email': /^(?:[\\w\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\`\\{\\|\\}\\~]+\\.)*[\\w\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\`\\{\\|\\}\\~]+@(?:(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9\\-](?!\\.)){0,61}[a-zA-Z0-9]?\\.)+[a-zA-Z0-9](?:[a-zA-Z0-9\\-](?!$)){0,61}[a-zA-Z0-9]?)|(?:\\[(?:(?:[01]?\\d{1,2}|2[0-4]\\d|25[0-5])\\.){3}(?:[01]?\\d{1,2}|2[0-4]\\d|25[0-5])\\]))$/,\n 'ip-address': /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,\n 'ipv6': /^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*$/,\n 'uri': /^[a-zA-Z][a-zA-Z0-9+-.]*:[^\\s]*$/,\n\n 'color': /^(#?([0-9A-Fa-f]{3}){1,2}\\b|aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow|(rgb\\(\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*,\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*,\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*\\))|(rgb\\(\\s*(\\d?\\d%|100%)+\\s*,\\s*(\\d?\\d%|100%)+\\s*,\\s*(\\d?\\d%|100%)+\\s*\\)))$/,\n\n // hostname regex from: http://stackoverflow.com/a/1420225/5628\n 'hostname': /^(?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?(?:\\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?)*\\.?$/,\n 'host-name': /^(?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?(?:\\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?)*\\.?$/,\n\n 'alpha': /^[a-zA-Z]+$/,\n 'alphanumeric': /^[a-zA-Z0-9]+$/,\n 'utc-millisec': function (input) {\n return (typeof input === 'string') && parseFloat(input) === parseInt(input, 10) && !isNaN(input);\n },\n 'regex': function (input) {\n var result = true;\n try {\n new RegExp(input);\n } catch (e) {\n result = false;\n }\n return result;\n },\n 'style': /\\s*(.+?):\\s*([^;]+);?/,\n 'phone': /^\\+(?:[0-9] ?){6,14}[0-9]$/\n};\n\nFORMAT_REGEXPS.regexp = FORMAT_REGEXPS.regex;\nFORMAT_REGEXPS.pattern = FORMAT_REGEXPS.regex;\nFORMAT_REGEXPS.ipv4 = FORMAT_REGEXPS['ip-address'];\n\nexports.isFormat = function isFormat (input, format, validator) {\n if (typeof input === 'string' && FORMAT_REGEXPS[format] !== undefined) {\n if (FORMAT_REGEXPS[format] instanceof RegExp) {\n return FORMAT_REGEXPS[format].test(input);\n }\n if (typeof FORMAT_REGEXPS[format] === 'function') {\n return FORMAT_REGEXPS[format](input);\n }\n } else if (validator && validator.customFormats &&\n typeof validator.customFormats[format] === 'function') {\n return validator.customFormats[format](input);\n }\n return true;\n};\n\nvar makeSuffix = exports.makeSuffix = function makeSuffix (key) {\n key = key.toString();\n // This function could be capable of outputting valid a ECMAScript string, but the\n // resulting code for testing which form to use would be tens of thousands of characters long\n // That means this will use the name form for some illegal forms\n if (!key.match(/[.\\s\\[\\]]/) && !key.match(/^[\\d]/)) {\n return '.' + key;\n }\n if (key.match(/^\\d+$/)) {\n return '[' + key + ']';\n }\n return '[' + JSON.stringify(key) + ']';\n};\n\nexports.deepCompareStrict = function deepCompareStrict (a, b) {\n if (typeof a !== typeof b) {\n return false;\n }\n if (a instanceof Array) {\n if (!(b instanceof Array)) {\n return false;\n }\n if (a.length !== b.length) {\n return false;\n }\n return a.every(function (v, i) {\n return deepCompareStrict(a[i], b[i]);\n });\n }\n if (typeof a === 'object') {\n if (!a || !b) {\n return a === b;\n }\n var aKeys = Object.keys(a);\n var bKeys = Object.keys(b);\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n return aKeys.every(function (v) {\n return deepCompareStrict(a[v], b[v]);\n });\n }\n return a === b;\n};\n\nfunction deepMerger (target, dst, e, i) {\n if (typeof e === 'object') {\n dst[i] = deepMerge(target[i], e)\n } else {\n if (target.indexOf(e) === -1) {\n dst.push(e)\n }\n }\n}\n\nfunction copyist (src, dst, key) {\n dst[key] = src[key];\n}\n\nfunction copyistWithDeepMerge (target, src, dst, key) {\n if (typeof src[key] !== 'object' || !src[key]) {\n dst[key] = src[key];\n }\n else {\n if (!target[key]) {\n dst[key] = src[key];\n } else {\n dst[key] = deepMerge(target[key], src[key])\n }\n }\n}\n\nfunction deepMerge (target, src) {\n var array = Array.isArray(src);\n var dst = array && [] || {};\n\n if (array) {\n target = target || [];\n dst = dst.concat(target);\n src.forEach(deepMerger.bind(null, target, dst));\n } else {\n if (target && typeof target === 'object') {\n Object.keys(target).forEach(copyist.bind(null, target, dst));\n }\n Object.keys(src).forEach(copyistWithDeepMerge.bind(null, target, src, dst));\n }\n\n return dst;\n};\n\nmodule.exports.deepMerge = deepMerge;\n\n/**\n * Validates instance against the provided schema\n * Implements URI+JSON Pointer encoding, e.g. \"%7e\"=\"~0\"=>\"~\", \"~1\"=\"%2f\"=>\"/\"\n * @param o\n * @param s The path to walk o along\n * @return any\n */\nexports.objectGetPath = function objectGetPath(o, s) {\n var parts = s.split('/').slice(1);\n var k;\n while (typeof (k=parts.shift()) == 'string') {\n var n = decodeURIComponent(k.replace(/~0/,'~').replace(/~1/g,'/'));\n if (!(n in o)) return;\n o = o[n];\n }\n return o;\n};\n\nfunction pathEncoder (v) {\n return '/'+encodeURIComponent(v).replace(/~/g,'%7E');\n}\n/**\n * Accept an Array of property names and return a JSON Pointer URI fragment\n * @param Array a\n * @return {String}\n */\nexports.encodePath = function encodePointer(a){\n\t// ~ must be encoded explicitly because hacks\n\t// the slash is encoded by encodeURIComponent\n\treturn a.map(pathEncoder).join('');\n};\n\n\n/**\n * Calculate the number of decimal places a number uses\n * We need this to get correct results out of multipleOf and divisibleBy\n * when either figure is has decimal places, due to IEEE-754 float issues.\n * @param number\n * @returns {number}\n */\nexports.getDecimalPlaces = function getDecimalPlaces(number) {\n\n var decimalPlaces = 0;\n if (isNaN(number)) return decimalPlaces;\n\n if (typeof number !== 'number') {\n number = Number(number);\n }\n\n var parts = number.toString().split('e');\n if (parts.length === 2) {\n if (parts[1][0] !== '-') {\n return decimalPlaces;\n } else {\n decimalPlaces = Number(parts[1].slice(1));\n }\n }\n\n var decimalParts = parts[0].split('.');\n if (decimalParts.length === 2) {\n decimalPlaces += decimalParts[1].length;\n }\n\n return decimalPlaces;\n};\n\n","/**\n * Checks whether we're in the Node.js or Browser environment\n *\n * @returns Answer to given question\n */\nexport function isNodeEnv(): boolean {\n return Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]';\n}\n\n/**\n * Requires a module which is protected against bundler minification.\n *\n * @param request The module path to resolve\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\nexport function dynamicRequire(mod: any, request: string): any {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return mod.require(request);\n}\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","'use strict';\n\nconst util = require('./util');\nconst buildOptions = require('./util').buildOptions;\nconst xmlNode = require('./xmlNode');\nconst TagType = {OPENING: 1, CLOSING: 2, SELF: 3, CDATA: 4};\nconst regx =\n '<((!\\\\[CDATA\\\\[([\\\\s\\\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\\\/)(NAME)\\\\s*>))([^<]*)'\n .replace(/NAME/g, util.nameRegexp);\n\n//const tagsRegx = new RegExp(\"<(\\\\/?[\\\\w:\\\\-\\._]+)([^>]*)>(\\\\s*\"+cdataRegx+\")*([^<]+)?\",\"g\");\n//const tagsRegx = new RegExp(\"<(\\\\/?)((\\\\w*:)?([\\\\w:\\\\-\\._]+))([^>]*)>([^<]*)(\"+cdataRegx+\"([^<]*))*([^<]+)?\",\"g\");\n\n//polyfill\nif (!Number.parseInt && window.parseInt) {\n Number.parseInt = window.parseInt;\n}\nif (!Number.parseFloat && window.parseFloat) {\n Number.parseFloat = window.parseFloat;\n}\n\nconst defaultOptions = {\n attributeNamePrefix: '@_',\n attrNodeName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n ignoreNameSpace: false,\n allowBooleanAttributes: false, //a tag can have attributes without any value\n //ignoreRootElement : false,\n parseNodeValue: true,\n parseAttributeValue: false,\n arrayMode: false,\n trimValues: true, //Trim string values of tag and attributes\n cdataTagName: false,\n cdataPositionChar: '\\\\c',\n tagValueProcessor: function(a, tagName) {\n return a;\n },\n attrValueProcessor: function(a, attrName) {\n return a;\n },\n stopNodes: []\n //decodeStrict: false,\n};\n\nexports.defaultOptions = defaultOptions;\n\nconst props = [\n 'attributeNamePrefix',\n 'attrNodeName',\n 'textNodeName',\n 'ignoreAttributes',\n 'ignoreNameSpace',\n 'allowBooleanAttributes',\n 'parseNodeValue',\n 'parseAttributeValue',\n 'arrayMode',\n 'trimValues',\n 'cdataTagName',\n 'cdataPositionChar',\n 'tagValueProcessor',\n 'attrValueProcessor',\n 'parseTrueNumberOnly',\n 'stopNodes'\n];\nexports.props = props;\n\nconst getTraversalObj = function(xmlData, options) {\n options = buildOptions(options, defaultOptions, props);\n //xmlData = xmlData.replace(/\\r?\\n/g, \" \");//make it single line\n xmlData = xmlData.replace(/<!--[\\s\\S]*?-->/g, ''); //Remove comments\n\n const xmlObj = new xmlNode('!xml');\n let currentNode = xmlObj;\n\n const tagsRegx = new RegExp(regx, 'g');\n let tag = tagsRegx.exec(xmlData);\n let nextTag = tagsRegx.exec(xmlData);\n while (tag) {\n const tagType = checkForTagType(tag);\n\n if (tagType === TagType.CLOSING) {\n //add parsed data to parent node\n if (currentNode.parent && tag[12]) {\n currentNode.parent.val = util.getValue(currentNode.parent.val) + '' + processTagValue(tag, options, currentNode.parent.tagname);\n }\n if (options.stopNodes.length && options.stopNodes.includes(currentNode.tagname)) {\n currentNode.child = []\n if (currentNode.attrsMap == undefined) { currentNode.attrsMap = {}}\n currentNode.val = xmlData.substr(currentNode.startIndex + 1, tag.index - currentNode.startIndex - 1)\n }\n currentNode = currentNode.parent;\n } else if (tagType === TagType.CDATA) {\n if (options.cdataTagName) {\n //add cdata node\n const childNode = new xmlNode(options.cdataTagName, currentNode, tag[3]);\n childNode.attrsMap = buildAttributesMap(tag[8], options);\n currentNode.addChild(childNode);\n //for backtracking\n currentNode.val = util.getValue(currentNode.val) + options.cdataPositionChar;\n //add rest value to parent node\n if (tag[12]) {\n currentNode.val += processTagValue(tag, options);\n }\n } else {\n currentNode.val = (currentNode.val || '') + (tag[3] || '') + processTagValue(tag, options);\n }\n } else if (tagType === TagType.SELF) {\n if (currentNode && tag[12]) {\n currentNode.val = util.getValue(currentNode.val) + '' + processTagValue(tag, options);\n }\n\n const childNode = new xmlNode(options.ignoreNameSpace ? tag[7] : tag[5], currentNode, '');\n if (tag[8] && tag[8].length > 0) {\n tag[8] = tag[8].substr(0, tag[8].length - 1);\n }\n childNode.attrsMap = buildAttributesMap(tag[8], options);\n currentNode.addChild(childNode);\n } else {\n //TagType.OPENING\n const childNode = new xmlNode(\n options.ignoreNameSpace ? tag[7] : tag[5],\n currentNode,\n processTagValue(tag, options)\n );\n if (options.stopNodes.length && options.stopNodes.includes(childNode.tagname)) {\n childNode.startIndex=tag.index + tag[1].length\n }\n childNode.attrsMap = buildAttributesMap(tag[8], options);\n currentNode.addChild(childNode);\n currentNode = childNode;\n }\n\n tag = nextTag;\n nextTag = tagsRegx.exec(xmlData);\n }\n\n return xmlObj;\n};\n\nfunction processTagValue(parsedTags, options, parentTagName) {\n const tagName = parsedTags[7] || parentTagName;\n let val = parsedTags[12];\n if (val) {\n if (options.trimValues) {\n val = val.trim();\n }\n val = options.tagValueProcessor(val, tagName);\n val = parseValue(val, options.parseNodeValue, options.parseTrueNumberOnly);\n }\n\n return val;\n}\n\nfunction checkForTagType(match) {\n if (match[4] === ']]>') {\n return TagType.CDATA;\n } else if (match[10] === '/') {\n return TagType.CLOSING;\n } else if (typeof match[8] !== 'undefined' && match[8].substr(match[8].length - 1) === '/') {\n return TagType.SELF;\n } else {\n return TagType.OPENING;\n }\n}\n\nfunction resolveNameSpace(tagname, options) {\n if (options.ignoreNameSpace) {\n const tags = tagname.split(':');\n const prefix = tagname.charAt(0) === '/' ? '/' : '';\n if (tags[0] === 'xmlns') {\n return '';\n }\n if (tags.length === 2) {\n tagname = prefix + tags[1];\n }\n }\n return tagname;\n}\n\nfunction parseValue(val, shouldParse, parseTrueNumberOnly) {\n if (shouldParse && typeof val === 'string') {\n let parsed;\n if (val.trim() === '' || isNaN(val)) {\n parsed = val === 'true' ? true : val === 'false' ? false : val;\n } else {\n if (val.indexOf('0x') !== -1) {\n //support hexa decimal\n parsed = Number.parseInt(val, 16);\n } else if (val.indexOf('.') !== -1) {\n parsed = Number.parseFloat(val);\n val = val.replace(/0+$/,\"\");\n } else {\n parsed = Number.parseInt(val, 10);\n }\n if (parseTrueNumberOnly) {\n parsed = String(parsed) === val ? parsed : val;\n }\n }\n return parsed;\n } else {\n if (util.isExist(val)) {\n return val;\n } else {\n return '';\n }\n }\n}\n\n//TODO: change regex to capture NS\n//const attrsRegx = new RegExp(\"([\\\\w\\\\-\\\\.\\\\:]+)\\\\s*=\\\\s*(['\\\"])((.|\\n)*?)\\\\2\",\"gm\");\nconst attrsRegx = new RegExp('([^\\\\s=]+)\\\\s*(=\\\\s*([\\'\"])(.*?)\\\\3)?', 'g');\n\nfunction buildAttributesMap(attrStr, options) {\n if (!options.ignoreAttributes && typeof attrStr === 'string') {\n attrStr = attrStr.replace(/\\r?\\n/g, ' ');\n //attrStr = attrStr || attrStr.trim();\n\n const matches = util.getAllMatches(attrStr, attrsRegx);\n const len = matches.length; //don't make it inline\n const attrs = {};\n for (let i = 0; i < len; i++) {\n const attrName = resolveNameSpace(matches[i][1], options);\n if (attrName.length) {\n if (matches[i][4] !== undefined) {\n if (options.trimValues) {\n matches[i][4] = matches[i][4].trim();\n }\n matches[i][4] = options.attrValueProcessor(matches[i][4], attrName);\n attrs[options.attributeNamePrefix + attrName] = parseValue(\n matches[i][4],\n options.parseAttributeValue,\n options.parseTrueNumberOnly\n );\n } else if (options.allowBooleanAttributes) {\n attrs[options.attributeNamePrefix + attrName] = true;\n }\n }\n }\n if (!Object.keys(attrs).length) {\n return;\n }\n if (options.attrNodeName) {\n const attrCollection = {};\n attrCollection[options.attrNodeName] = attrs;\n return attrCollection;\n }\n return attrs;\n }\n}\n\nexports.getTraversalObj = getTraversalObj;\n","/*\n * Copyright (c) 2018 by Filestack\n * Some rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FsRequestError, FsRequestErrorCode } from './../error';\nimport Debug from 'debug';\n\nconst debug = Debug('fs:request:shouldRetry');\n\n/**\n * Indicates if method should be retried\n *\n * @private\n * @param {FsRequestError} err\n * @returns\n * @memberof Dispatch\n */\nexport const shouldRetry = (err: FsRequestError) => {\n debug('Checking error for retry. Code: %n, type: %s', (err.response ? err.response.status : 'Malformed response'), err.code);\n\n // we always should retry on network failure\n switch (err.code) {\n case FsRequestErrorCode.NETWORK:\n case FsRequestErrorCode.SERVER:\n case FsRequestErrorCode.TIMEOUT:\n return true;\n // we should not make request on request aborted\n case FsRequestErrorCode.ABORTED:\n return false;\n }\n\n if (!err.response) {\n return false;\n }\n\n // we should retry on all server errors (5xx)\n // this should be handled by FsRequestErrorCode.SERVER but to be sure\n if (500 <= err.response.status && err.response.status <= 599) {\n return true;\n }\n\n // we should not retry on other errors (4xx) ie: BadRequest etc\n return false;\n};\n","'use strict';\nconst toBytes = s => [...s].map(c => c.charCodeAt(0));\nconst xpiZipFilename = toBytes('META-INF/mozilla.rsa');\nconst oxmlContentTypes = toBytes('[Content_Types].xml');\nconst oxmlRels = toBytes('_rels/.rels');\n\nfunction readUInt64LE(buf, offset = 0) {\n\tlet n = buf[offset];\n\tlet mul = 1;\n\tlet i = 0;\n\twhile (++i < 8) {\n\t\tmul *= 0x100;\n\t\tn += buf[offset + i] * mul;\n\t}\n\n\treturn n;\n}\n\nconst fileType = input => {\n\tif (!(input instanceof Uint8Array || input instanceof ArrayBuffer || Buffer.isBuffer(input))) {\n\t\tthrow new TypeError(`Expected the \\`input\\` argument to be of type \\`Uint8Array\\` or \\`Buffer\\` or \\`ArrayBuffer\\`, got \\`${typeof input}\\``);\n\t}\n\n\tconst buf = input instanceof Uint8Array ? input : new Uint8Array(input);\n\n\tif (!(buf && buf.length > 1)) {\n\t\treturn null;\n\t}\n\n\tconst check = (header, options) => {\n\t\toptions = Object.assign({\n\t\t\toffset: 0\n\t\t}, options);\n\n\t\tfor (let i = 0; i < header.length; i++) {\n\t\t\t// If a bitmask is set\n\t\t\tif (options.mask) {\n\t\t\t\t// If header doesn't equal `buf` with bits masked off\n\t\t\t\tif (header[i] !== (options.mask[i] & buf[i + options.offset])) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} else if (header[i] !== buf[i + options.offset]) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t};\n\n\tconst checkString = (header, options) => check(toBytes(header), options);\n\n\tif (check([0xFF, 0xD8, 0xFF])) {\n\t\treturn {\n\t\t\text: 'jpg',\n\t\t\tmime: 'image/jpeg'\n\t\t};\n\t}\n\n\tif (check([0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A])) {\n\t\treturn {\n\t\t\text: 'png',\n\t\t\tmime: 'image/png'\n\t\t};\n\t}\n\n\tif (check([0x47, 0x49, 0x46])) {\n\t\treturn {\n\t\t\text: 'gif',\n\t\t\tmime: 'image/gif'\n\t\t};\n\t}\n\n\tif (check([0x57, 0x45, 0x42, 0x50], {offset: 8})) {\n\t\treturn {\n\t\t\text: 'webp',\n\t\t\tmime: 'image/webp'\n\t\t};\n\t}\n\n\tif (check([0x46, 0x4C, 0x49, 0x46])) {\n\t\treturn {\n\t\t\text: 'flif',\n\t\t\tmime: 'image/flif'\n\t\t};\n\t}\n\n\t// Needs to be before `tif` check\n\tif (\n\t\t(check([0x49, 0x49, 0x2A, 0x0]) || check([0x4D, 0x4D, 0x0, 0x2A])) &&\n\t\tcheck([0x43, 0x52], {offset: 8})\n\t) {\n\t\treturn {\n\t\t\text: 'cr2',\n\t\t\tmime: 'image/x-canon-cr2'\n\t\t};\n\t}\n\n\tif (\n\t\tcheck([0x49, 0x49, 0x2A, 0x0]) ||\n\t\tcheck([0x4D, 0x4D, 0x0, 0x2A])\n\t) {\n\t\treturn {\n\t\t\text: 'tif',\n\t\t\tmime: 'image/tiff'\n\t\t};\n\t}\n\n\tif (check([0x42, 0x4D])) {\n\t\treturn {\n\t\t\text: 'bmp',\n\t\t\tmime: 'image/bmp'\n\t\t};\n\t}\n\n\tif (check([0x49, 0x49, 0xBC])) {\n\t\treturn {\n\t\t\text: 'jxr',\n\t\t\tmime: 'image/vnd.ms-photo'\n\t\t};\n\t}\n\n\tif (check([0x38, 0x42, 0x50, 0x53])) {\n\t\treturn {\n\t\t\text: 'psd',\n\t\t\tmime: 'image/vnd.adobe.photoshop'\n\t\t};\n\t}\n\n\t// Zip-based file formats\n\t// Need to be before the `zip` check\n\tif (check([0x50, 0x4B, 0x3, 0x4])) {\n\t\tif (\n\t\t\tcheck([0x6D, 0x69, 0x6D, 0x65, 0x74, 0x79, 0x70, 0x65, 0x61, 0x70, 0x70, 0x6C, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2F, 0x65, 0x70, 0x75, 0x62, 0x2B, 0x7A, 0x69, 0x70], {offset: 30})\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'epub',\n\t\t\t\tmime: 'application/epub+zip'\n\t\t\t};\n\t\t}\n\n\t\t// Assumes signed `.xpi` from addons.mozilla.org\n\t\tif (check(xpiZipFilename, {offset: 30})) {\n\t\t\treturn {\n\t\t\t\text: 'xpi',\n\t\t\t\tmime: 'application/x-xpinstall'\n\t\t\t};\n\t\t}\n\n\t\tif (checkString('mimetypeapplication/vnd.oasis.opendocument.text', {offset: 30})) {\n\t\t\treturn {\n\t\t\t\text: 'odt',\n\t\t\t\tmime: 'application/vnd.oasis.opendocument.text'\n\t\t\t};\n\t\t}\n\n\t\tif (checkString('mimetypeapplication/vnd.oasis.opendocument.spreadsheet', {offset: 30})) {\n\t\t\treturn {\n\t\t\t\text: 'ods',\n\t\t\t\tmime: 'application/vnd.oasis.opendocument.spreadsheet'\n\t\t\t};\n\t\t}\n\n\t\tif (checkString('mimetypeapplication/vnd.oasis.opendocument.presentation', {offset: 30})) {\n\t\t\treturn {\n\t\t\t\text: 'odp',\n\t\t\t\tmime: 'application/vnd.oasis.opendocument.presentation'\n\t\t\t};\n\t\t}\n\n\t\t// The docx, xlsx and pptx file types extend the Office Open XML file format:\n\t\t// https://en.wikipedia.org/wiki/Office_Open_XML_file_formats\n\t\t// We look for:\n\t\t// - one entry named '[Content_Types].xml' or '_rels/.rels',\n\t\t// - one entry indicating specific type of file.\n\t\t// MS Office, OpenOffice and LibreOffice may put the parts in different order, so the check should not rely on it.\n\t\tconst findNextZipHeaderIndex = (arr, startAt = 0) => arr.findIndex((el, i, arr) => i >= startAt && arr[i] === 0x50 && arr[i + 1] === 0x4B && arr[i + 2] === 0x3 && arr[i + 3] === 0x4);\n\n\t\tlet zipHeaderIndex = 0; // The first zip header was already found at index 0\n\t\tlet oxmlFound = false;\n\t\tlet type = null;\n\n\t\tdo {\n\t\t\tconst offset = zipHeaderIndex + 30;\n\n\t\t\tif (!oxmlFound) {\n\t\t\t\toxmlFound = (check(oxmlContentTypes, {offset}) || check(oxmlRels, {offset}));\n\t\t\t}\n\n\t\t\tif (!type) {\n\t\t\t\tif (checkString('word/', {offset})) {\n\t\t\t\t\ttype = {\n\t\t\t\t\t\text: 'docx',\n\t\t\t\t\t\tmime: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'\n\t\t\t\t\t};\n\t\t\t\t} else if (checkString('ppt/', {offset})) {\n\t\t\t\t\ttype = {\n\t\t\t\t\t\text: 'pptx',\n\t\t\t\t\t\tmime: 'application/vnd.openxmlformats-officedocument.presentationml.presentation'\n\t\t\t\t\t};\n\t\t\t\t} else if (checkString('xl/', {offset})) {\n\t\t\t\t\ttype = {\n\t\t\t\t\t\text: 'xlsx',\n\t\t\t\t\t\tmime: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (oxmlFound && type) {\n\t\t\t\treturn type;\n\t\t\t}\n\n\t\t\tzipHeaderIndex = findNextZipHeaderIndex(buf, offset);\n\t\t} while (zipHeaderIndex >= 0);\n\n\t\t// No more zip parts available in the buffer, but maybe we are almost certain about the type?\n\t\tif (type) {\n\t\t\treturn type;\n\t\t}\n\t}\n\n\tif (\n\t\tcheck([0x50, 0x4B]) &&\n\t\t(buf[2] === 0x3 || buf[2] === 0x5 || buf[2] === 0x7) &&\n\t\t(buf[3] === 0x4 || buf[3] === 0x6 || buf[3] === 0x8)\n\t) {\n\t\treturn {\n\t\t\text: 'zip',\n\t\t\tmime: 'application/zip'\n\t\t};\n\t}\n\n\tif (check([0x75, 0x73, 0x74, 0x61, 0x72], {offset: 257})) {\n\t\treturn {\n\t\t\text: 'tar',\n\t\t\tmime: 'application/x-tar'\n\t\t};\n\t}\n\n\tif (\n\t\tcheck([0x52, 0x61, 0x72, 0x21, 0x1A, 0x7]) &&\n\t\t(buf[6] === 0x0 || buf[6] === 0x1)\n\t) {\n\t\treturn {\n\t\t\text: 'rar',\n\t\t\tmime: 'application/x-rar-compressed'\n\t\t};\n\t}\n\n\tif (check([0x1F, 0x8B, 0x8])) {\n\t\treturn {\n\t\t\text: 'gz',\n\t\t\tmime: 'application/gzip'\n\t\t};\n\t}\n\n\tif (check([0x42, 0x5A, 0x68])) {\n\t\treturn {\n\t\t\text: 'bz2',\n\t\t\tmime: 'application/x-bzip2'\n\t\t};\n\t}\n\n\tif (check([0x37, 0x7A, 0xBC, 0xAF, 0x27, 0x1C])) {\n\t\treturn {\n\t\t\text: '7z',\n\t\t\tmime: 'application/x-7z-compressed'\n\t\t};\n\t}\n\n\tif (check([0x78, 0x01])) {\n\t\treturn {\n\t\t\text: 'dmg',\n\t\t\tmime: 'application/x-apple-diskimage'\n\t\t};\n\t}\n\n\tif (check([0x33, 0x67, 0x70, 0x35]) || // 3gp5\n\t\t(\n\t\t\tcheck([0x0, 0x0, 0x0]) && check([0x66, 0x74, 0x79, 0x70], {offset: 4}) &&\n\t\t\t\t(\n\t\t\t\t\tcheck([0x6D, 0x70, 0x34, 0x31], {offset: 8}) || // MP41\n\t\t\t\t\tcheck([0x6D, 0x70, 0x34, 0x32], {offset: 8}) || // MP42\n\t\t\t\t\tcheck([0x69, 0x73, 0x6F, 0x6D], {offset: 8}) || // ISOM\n\t\t\t\t\tcheck([0x69, 0x73, 0x6F, 0x32], {offset: 8}) || // ISO2\n\t\t\t\t\tcheck([0x6D, 0x6D, 0x70, 0x34], {offset: 8}) || // MMP4\n\t\t\t\t\tcheck([0x4D, 0x34, 0x56], {offset: 8}) || // M4V\n\t\t\t\t\tcheck([0x64, 0x61, 0x73, 0x68], {offset: 8}) // DASH\n\t\t\t\t)\n\t\t)) {\n\t\treturn {\n\t\t\text: 'mp4',\n\t\t\tmime: 'video/mp4'\n\t\t};\n\t}\n\n\tif (check([0x4D, 0x54, 0x68, 0x64])) {\n\t\treturn {\n\t\t\text: 'mid',\n\t\t\tmime: 'audio/midi'\n\t\t};\n\t}\n\n\t// https://github.com/threatstack/libmagic/blob/master/magic/Magdir/matroska\n\tif (check([0x1A, 0x45, 0xDF, 0xA3])) {\n\t\tconst sliced = buf.subarray(4, 4 + 4096);\n\t\tconst idPos = sliced.findIndex((el, i, arr) => arr[i] === 0x42 && arr[i + 1] === 0x82);\n\n\t\tif (idPos !== -1) {\n\t\t\tconst docTypePos = idPos + 3;\n\t\t\tconst findDocType = type => [...type].every((c, i) => sliced[docTypePos + i] === c.charCodeAt(0));\n\n\t\t\tif (findDocType('matroska')) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'mkv',\n\t\t\t\t\tmime: 'video/x-matroska'\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (findDocType('webm')) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'webm',\n\t\t\t\t\tmime: 'video/webm'\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t}\n\n\tif (check([0x0, 0x0, 0x0, 0x14, 0x66, 0x74, 0x79, 0x70, 0x71, 0x74, 0x20, 0x20]) ||\n\t\tcheck([0x66, 0x72, 0x65, 0x65], {offset: 4}) || // Type: `free`\n\t\tcheck([0x66, 0x74, 0x79, 0x70, 0x71, 0x74, 0x20, 0x20], {offset: 4}) ||\n\t\tcheck([0x6D, 0x64, 0x61, 0x74], {offset: 4}) || // MJPEG\n\t\tcheck([0x6D, 0x6F, 0x6F, 0x76], {offset: 4}) || // Type: `moov`\n\t\tcheck([0x77, 0x69, 0x64, 0x65], {offset: 4})) {\n\t\treturn {\n\t\t\text: 'mov',\n\t\t\tmime: 'video/quicktime'\n\t\t};\n\t}\n\n\t// RIFF file format which might be AVI, WAV, QCP, etc\n\tif (check([0x52, 0x49, 0x46, 0x46])) {\n\t\tif (check([0x41, 0x56, 0x49], {offset: 8})) {\n\t\t\treturn {\n\t\t\t\text: 'avi',\n\t\t\t\tmime: 'video/vnd.avi'\n\t\t\t};\n\t\t}\n\n\t\tif (check([0x57, 0x41, 0x56, 0x45], {offset: 8})) {\n\t\t\treturn {\n\t\t\t\text: 'wav',\n\t\t\t\tmime: 'audio/vnd.wave'\n\t\t\t};\n\t\t}\n\n\t\t// QLCM, QCP file\n\t\tif (check([0x51, 0x4C, 0x43, 0x4D], {offset: 8})) {\n\t\t\treturn {\n\t\t\t\text: 'qcp',\n\t\t\t\tmime: 'audio/qcelp'\n\t\t\t};\n\t\t}\n\t}\n\n\t// ASF_Header_Object first 80 bytes\n\tif (check([0x30, 0x26, 0xB2, 0x75, 0x8E, 0x66, 0xCF, 0x11, 0xA6, 0xD9])) {\n\t\t// Search for header should be in first 1KB of file.\n\n\t\tlet offset = 30;\n\t\tdo {\n\t\t\tconst objectSize = readUInt64LE(buf, offset + 16);\n\t\t\tif (check([0x91, 0x07, 0xDC, 0xB7, 0xB7, 0xA9, 0xCF, 0x11, 0x8E, 0xE6, 0x00, 0xC0, 0x0C, 0x20, 0x53, 0x65], {offset})) {\n\t\t\t\t// Sync on Stream-Properties-Object (B7DC0791-A9B7-11CF-8EE6-00C00C205365)\n\t\t\t\tif (check([0x40, 0x9E, 0x69, 0xF8, 0x4D, 0x5B, 0xCF, 0x11, 0xA8, 0xFD, 0x00, 0x80, 0x5F, 0x5C, 0x44, 0x2B], {offset: offset + 24})) {\n\t\t\t\t\t// Found audio:\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'wma',\n\t\t\t\t\t\tmime: 'audio/x-ms-wma'\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tif (check([0xC0, 0xEF, 0x19, 0xBC, 0x4D, 0x5B, 0xCF, 0x11, 0xA8, 0xFD, 0x00, 0x80, 0x5F, 0x5C, 0x44, 0x2B], {offset: offset + 24})) {\n\t\t\t\t\t// Found video:\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'wmv',\n\t\t\t\t\t\tmime: 'video/x-ms-asf'\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\toffset += objectSize;\n\t\t} while (offset + 24 <= buf.length);\n\n\t\t// Default to ASF generic extension\n\t\treturn {\n\t\t\text: 'asf',\n\t\t\tmime: 'application/vnd.ms-asf'\n\t\t};\n\t}\n\n\tif (\n\t\tcheck([0x0, 0x0, 0x1, 0xBA]) ||\n\t\tcheck([0x0, 0x0, 0x1, 0xB3])\n\t) {\n\t\treturn {\n\t\t\text: 'mpg',\n\t\t\tmime: 'video/mpeg'\n\t\t};\n\t}\n\n\tif (check([0x66, 0x74, 0x79, 0x70, 0x33, 0x67], {offset: 4})) {\n\t\treturn {\n\t\t\text: '3gp',\n\t\t\tmime: 'video/3gpp'\n\t\t};\n\t}\n\n\t// Check for MPEG header at different starting offsets\n\tfor (let start = 0; start < 2 && start < (buf.length - 16); start++) {\n\t\tif (\n\t\t\tcheck([0x49, 0x44, 0x33], {offset: start}) || // ID3 header\n\t\t\tcheck([0xFF, 0xE2], {offset: start, mask: [0xFF, 0xE2]}) // MPEG 1 or 2 Layer 3 header\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'mp3',\n\t\t\t\tmime: 'audio/mpeg'\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tcheck([0xFF, 0xE4], {offset: start, mask: [0xFF, 0xE4]}) // MPEG 1 or 2 Layer 2 header\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'mp2',\n\t\t\t\tmime: 'audio/mpeg'\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tcheck([0xFF, 0xF8], {offset: start, mask: [0xFF, 0xFC]}) // MPEG 2 layer 0 using ADTS\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'mp2',\n\t\t\t\tmime: 'audio/mpeg'\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tcheck([0xFF, 0xF0], {offset: start, mask: [0xFF, 0xFC]}) // MPEG 4 layer 0 using ADTS\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'mp4',\n\t\t\t\tmime: 'audio/mpeg'\n\t\t\t};\n\t\t}\n\t}\n\n\tif (\n\t\tcheck([0x66, 0x74, 0x79, 0x70, 0x4D, 0x34, 0x41], {offset: 4})\n\t) {\n\t\treturn { // MPEG-4 layer 3 (audio)\n\t\t\text: 'm4a',\n\t\t\tmime: 'audio/mp4' // RFC 4337\n\t\t};\n\t}\n\n\t// Needs to be before `ogg` check\n\tif (check([0x4F, 0x70, 0x75, 0x73, 0x48, 0x65, 0x61, 0x64], {offset: 28})) {\n\t\treturn {\n\t\t\text: 'opus',\n\t\t\tmime: 'audio/opus'\n\t\t};\n\t}\n\n\t// If 'OggS' in first bytes, then OGG container\n\tif (check([0x4F, 0x67, 0x67, 0x53])) {\n\t\t// This is a OGG container\n\n\t\t// If ' theora' in header.\n\t\tif (check([0x80, 0x74, 0x68, 0x65, 0x6F, 0x72, 0x61], {offset: 28})) {\n\t\t\treturn {\n\t\t\t\text: 'ogv',\n\t\t\t\tmime: 'video/ogg'\n\t\t\t};\n\t\t}\n\n\t\t// If '\\x01video' in header.\n\t\tif (check([0x01, 0x76, 0x69, 0x64, 0x65, 0x6F, 0x00], {offset: 28})) {\n\t\t\treturn {\n\t\t\t\text: 'ogm',\n\t\t\t\tmime: 'video/ogg'\n\t\t\t};\n\t\t}\n\n\t\t// If ' FLAC' in header https://xiph.org/flac/faq.html\n\t\tif (check([0x7F, 0x46, 0x4C, 0x41, 0x43], {offset: 28})) {\n\t\t\treturn {\n\t\t\t\text: 'oga',\n\t\t\t\tmime: 'audio/ogg'\n\t\t\t};\n\t\t}\n\n\t\t// 'Speex ' in header https://en.wikipedia.org/wiki/Speex\n\t\tif (check([0x53, 0x70, 0x65, 0x65, 0x78, 0x20, 0x20], {offset: 28})) {\n\t\t\treturn {\n\t\t\t\text: 'spx',\n\t\t\t\tmime: 'audio/ogg'\n\t\t\t};\n\t\t}\n\n\t\t// If '\\x01vorbis' in header\n\t\tif (check([0x01, 0x76, 0x6F, 0x72, 0x62, 0x69, 0x73], {offset: 28})) {\n\t\t\treturn {\n\t\t\t\text: 'ogg',\n\t\t\t\tmime: 'audio/ogg'\n\t\t\t};\n\t\t}\n\n\t\t// Default OGG container https://www.iana.org/assignments/media-types/application/ogg\n\t\treturn {\n\t\t\text: 'ogx',\n\t\t\tmime: 'application/ogg'\n\t\t};\n\t}\n\n\tif (check([0x66, 0x4C, 0x61, 0x43])) {\n\t\treturn {\n\t\t\text: 'flac',\n\t\t\tmime: 'audio/x-flac'\n\t\t};\n\t}\n\n\tif (check([0x4D, 0x41, 0x43, 0x20])) { // 'MAC '\n\t\treturn {\n\t\t\text: 'ape',\n\t\t\tmime: 'audio/ape'\n\t\t};\n\t}\n\n\tif (check([0x77, 0x76, 0x70, 0x6B])) { // 'wvpk'\n\t\treturn {\n\t\t\text: 'wv',\n\t\t\tmime: 'audio/wavpack'\n\t\t};\n\t}\n\n\tif (check([0x23, 0x21, 0x41, 0x4D, 0x52, 0x0A])) {\n\t\treturn {\n\t\t\text: 'amr',\n\t\t\tmime: 'audio/amr'\n\t\t};\n\t}\n\n\tif (check([0x25, 0x50, 0x44, 0x46])) {\n\t\treturn {\n\t\t\text: 'pdf',\n\t\t\tmime: 'application/pdf'\n\t\t};\n\t}\n\n\tif (check([0x4D, 0x5A])) {\n\t\treturn {\n\t\t\text: 'exe',\n\t\t\tmime: 'application/x-msdownload'\n\t\t};\n\t}\n\n\tif (\n\t\t(buf[0] === 0x43 || buf[0] === 0x46) &&\n\t\tcheck([0x57, 0x53], {offset: 1})\n\t) {\n\t\treturn {\n\t\t\text: 'swf',\n\t\t\tmime: 'application/x-shockwave-flash'\n\t\t};\n\t}\n\n\tif (check([0x7B, 0x5C, 0x72, 0x74, 0x66])) {\n\t\treturn {\n\t\t\text: 'rtf',\n\t\t\tmime: 'application/rtf'\n\t\t};\n\t}\n\n\tif (check([0x00, 0x61, 0x73, 0x6D])) {\n\t\treturn {\n\t\t\text: 'wasm',\n\t\t\tmime: 'application/wasm'\n\t\t};\n\t}\n\n\tif (\n\t\tcheck([0x77, 0x4F, 0x46, 0x46]) &&\n\t\t(\n\t\t\tcheck([0x00, 0x01, 0x00, 0x00], {offset: 4}) ||\n\t\t\tcheck([0x4F, 0x54, 0x54, 0x4F], {offset: 4})\n\t\t)\n\t) {\n\t\treturn {\n\t\t\text: 'woff',\n\t\t\tmime: 'font/woff'\n\t\t};\n\t}\n\n\tif (\n\t\tcheck([0x77, 0x4F, 0x46, 0x32]) &&\n\t\t(\n\t\t\tcheck([0x00, 0x01, 0x00, 0x00], {offset: 4}) ||\n\t\t\tcheck([0x4F, 0x54, 0x54, 0x4F], {offset: 4})\n\t\t)\n\t) {\n\t\treturn {\n\t\t\text: 'woff2',\n\t\t\tmime: 'font/woff2'\n\t\t};\n\t}\n\n\tif (\n\t\tcheck([0x4C, 0x50], {offset: 34}) &&\n\t\t(\n\t\t\tcheck([0x00, 0x00, 0x01], {offset: 8}) ||\n\t\t\tcheck([0x01, 0x00, 0x02], {offset: 8}) ||\n\t\t\tcheck([0x02, 0x00, 0x02], {offset: 8})\n\t\t)\n\t) {\n\t\treturn {\n\t\t\text: 'eot',\n\t\t\tmime: 'application/vnd.ms-fontobject'\n\t\t};\n\t}\n\n\tif (check([0x00, 0x01, 0x00, 0x00, 0x00])) {\n\t\treturn {\n\t\t\text: 'ttf',\n\t\t\tmime: 'font/ttf'\n\t\t};\n\t}\n\n\tif (check([0x4F, 0x54, 0x54, 0x4F, 0x00])) {\n\t\treturn {\n\t\t\text: 'otf',\n\t\t\tmime: 'font/otf'\n\t\t};\n\t}\n\n\tif (check([0x00, 0x00, 0x01, 0x00])) {\n\t\treturn {\n\t\t\text: 'ico',\n\t\t\tmime: 'image/x-icon'\n\t\t};\n\t}\n\n\tif (check([0x00, 0x00, 0x02, 0x00])) {\n\t\treturn {\n\t\t\text: 'cur',\n\t\t\tmime: 'image/x-icon'\n\t\t};\n\t}\n\n\tif (check([0x46, 0x4C, 0x56, 0x01])) {\n\t\treturn {\n\t\t\text: 'flv',\n\t\t\tmime: 'video/x-flv'\n\t\t};\n\t}\n\n\tif (check([0x25, 0x21])) {\n\t\treturn {\n\t\t\text: 'ps',\n\t\t\tmime: 'application/postscript'\n\t\t};\n\t}\n\n\tif (check([0xFD, 0x37, 0x7A, 0x58, 0x5A, 0x00])) {\n\t\treturn {\n\t\t\text: 'xz',\n\t\t\tmime: 'application/x-xz'\n\t\t};\n\t}\n\n\tif (check([0x53, 0x51, 0x4C, 0x69])) {\n\t\treturn {\n\t\t\text: 'sqlite',\n\t\t\tmime: 'application/x-sqlite3'\n\t\t};\n\t}\n\n\tif (check([0x4E, 0x45, 0x53, 0x1A])) {\n\t\treturn {\n\t\t\text: 'nes',\n\t\t\tmime: 'application/x-nintendo-nes-rom'\n\t\t};\n\t}\n\n\tif (check([0x43, 0x72, 0x32, 0x34])) {\n\t\treturn {\n\t\t\text: 'crx',\n\t\t\tmime: 'application/x-google-chrome-extension'\n\t\t};\n\t}\n\n\tif (\n\t\tcheck([0x4D, 0x53, 0x43, 0x46]) ||\n\t\tcheck([0x49, 0x53, 0x63, 0x28])\n\t) {\n\t\treturn {\n\t\t\text: 'cab',\n\t\t\tmime: 'application/vnd.ms-cab-compressed'\n\t\t};\n\t}\n\n\t// Needs to be before `ar` check\n\tif (check([0x21, 0x3C, 0x61, 0x72, 0x63, 0x68, 0x3E, 0x0A, 0x64, 0x65, 0x62, 0x69, 0x61, 0x6E, 0x2D, 0x62, 0x69, 0x6E, 0x61, 0x72, 0x79])) {\n\t\treturn {\n\t\t\text: 'deb',\n\t\t\tmime: 'application/x-deb'\n\t\t};\n\t}\n\n\tif (check([0x21, 0x3C, 0x61, 0x72, 0x63, 0x68, 0x3E])) {\n\t\treturn {\n\t\t\text: 'ar',\n\t\t\tmime: 'application/x-unix-archive'\n\t\t};\n\t}\n\n\tif (check([0xED, 0xAB, 0xEE, 0xDB])) {\n\t\treturn {\n\t\t\text: 'rpm',\n\t\t\tmime: 'application/x-rpm'\n\t\t};\n\t}\n\n\tif (\n\t\tcheck([0x1F, 0xA0]) ||\n\t\tcheck([0x1F, 0x9D])\n\t) {\n\t\treturn {\n\t\t\text: 'Z',\n\t\t\tmime: 'application/x-compress'\n\t\t};\n\t}\n\n\tif (check([0x4C, 0x5A, 0x49, 0x50])) {\n\t\treturn {\n\t\t\text: 'lz',\n\t\t\tmime: 'application/x-lzip'\n\t\t};\n\t}\n\n\tif (check([0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1])) {\n\t\treturn {\n\t\t\text: 'msi',\n\t\t\tmime: 'application/x-msi'\n\t\t};\n\t}\n\n\tif (check([0x06, 0x0E, 0x2B, 0x34, 0x02, 0x05, 0x01, 0x01, 0x0D, 0x01, 0x02, 0x01, 0x01, 0x02])) {\n\t\treturn {\n\t\t\text: 'mxf',\n\t\t\tmime: 'application/mxf'\n\t\t};\n\t}\n\n\tif (check([0x47], {offset: 4}) && (check([0x47], {offset: 192}) || check([0x47], {offset: 196}))) {\n\t\treturn {\n\t\t\text: 'mts',\n\t\t\tmime: 'video/mp2t'\n\t\t};\n\t}\n\n\tif (check([0x42, 0x4C, 0x45, 0x4E, 0x44, 0x45, 0x52])) {\n\t\treturn {\n\t\t\text: 'blend',\n\t\t\tmime: 'application/x-blender'\n\t\t};\n\t}\n\n\tif (check([0x42, 0x50, 0x47, 0xFB])) {\n\t\treturn {\n\t\t\text: 'bpg',\n\t\t\tmime: 'image/bpg'\n\t\t};\n\t}\n\n\tif (check([0x00, 0x00, 0x00, 0x0C, 0x6A, 0x50, 0x20, 0x20, 0x0D, 0x0A, 0x87, 0x0A])) {\n\t\t// JPEG-2000 family\n\n\t\tif (check([0x6A, 0x70, 0x32, 0x20], {offset: 20})) {\n\t\t\treturn {\n\t\t\t\text: 'jp2',\n\t\t\t\tmime: 'image/jp2'\n\t\t\t};\n\t\t}\n\n\t\tif (check([0x6A, 0x70, 0x78, 0x20], {offset: 20})) {\n\t\t\treturn {\n\t\t\t\text: 'jpx',\n\t\t\t\tmime: 'image/jpx'\n\t\t\t};\n\t\t}\n\n\t\tif (check([0x6A, 0x70, 0x6D, 0x20], {offset: 20})) {\n\t\t\treturn {\n\t\t\t\text: 'jpm',\n\t\t\t\tmime: 'image/jpm'\n\t\t\t};\n\t\t}\n\n\t\tif (check([0x6D, 0x6A, 0x70, 0x32], {offset: 20})) {\n\t\t\treturn {\n\t\t\t\text: 'mj2',\n\t\t\t\tmime: 'image/mj2'\n\t\t\t};\n\t\t}\n\t}\n\n\tif (check([0x46, 0x4F, 0x52, 0x4D])) {\n\t\treturn {\n\t\t\text: 'aif',\n\t\t\tmime: 'audio/aiff'\n\t\t};\n\t}\n\n\tif (checkString('<?xml ')) {\n\t\treturn {\n\t\t\text: 'xml',\n\t\t\tmime: 'application/xml'\n\t\t};\n\t}\n\n\tif (check([0x42, 0x4F, 0x4F, 0x4B, 0x4D, 0x4F, 0x42, 0x49], {offset: 60})) {\n\t\treturn {\n\t\t\text: 'mobi',\n\t\t\tmime: 'application/x-mobipocket-ebook'\n\t\t};\n\t}\n\n\t// File Type Box (https://en.wikipedia.org/wiki/ISO_base_media_file_format)\n\tif (check([0x66, 0x74, 0x79, 0x70], {offset: 4})) {\n\t\tif (check([0x6D, 0x69, 0x66, 0x31], {offset: 8})) {\n\t\t\treturn {\n\t\t\t\text: 'heic',\n\t\t\t\tmime: 'image/heif'\n\t\t\t};\n\t\t}\n\n\t\tif (check([0x6D, 0x73, 0x66, 0x31], {offset: 8})) {\n\t\t\treturn {\n\t\t\t\text: 'heic',\n\t\t\t\tmime: 'image/heif-sequence'\n\t\t\t};\n\t\t}\n\n\t\tif (check([0x68, 0x65, 0x69, 0x63], {offset: 8}) || check([0x68, 0x65, 0x69, 0x78], {offset: 8})) {\n\t\t\treturn {\n\t\t\t\text: 'heic',\n\t\t\t\tmime: 'image/heic'\n\t\t\t};\n\t\t}\n\n\t\tif (check([0x68, 0x65, 0x76, 0x63], {offset: 8}) || check([0x68, 0x65, 0x76, 0x78], {offset: 8})) {\n\t\t\treturn {\n\t\t\t\text: 'heic',\n\t\t\t\tmime: 'image/heic-sequence'\n\t\t\t};\n\t\t}\n\t}\n\n\tif (check([0xAB, 0x4B, 0x54, 0x58, 0x20, 0x31, 0x31, 0xBB, 0x0D, 0x0A, 0x1A, 0x0A])) {\n\t\treturn {\n\t\t\text: 'ktx',\n\t\t\tmime: 'image/ktx'\n\t\t};\n\t}\n\n\tif (check([0x44, 0x49, 0x43, 0x4D], {offset: 128})) {\n\t\treturn {\n\t\t\text: 'dcm',\n\t\t\tmime: 'application/dicom'\n\t\t};\n\t}\n\n\t// Musepack, SV7\n\tif (check([0x4D, 0x50, 0x2B])) {\n\t\treturn {\n\t\t\text: 'mpc',\n\t\t\tmime: 'audio/x-musepack'\n\t\t};\n\t}\n\n\t// Musepack, SV8\n\tif (check([0x4D, 0x50, 0x43, 0x4B])) {\n\t\treturn {\n\t\t\text: 'mpc',\n\t\t\tmime: 'audio/x-musepack'\n\t\t};\n\t}\n\n\tif (check([0x42, 0x45, 0x47, 0x49, 0x4E, 0x3A])) {\n\t\treturn {\n\t\t\text: 'ics',\n\t\t\tmime: 'text/calendar'\n\t\t};\n\t}\n\n\tif (check([0x67, 0x6C, 0x54, 0x46, 0x02, 0x00, 0x00, 0x00])) {\n\t\treturn {\n\t\t\text: 'glb',\n\t\t\tmime: 'model/gltf-binary'\n\t\t};\n\t}\n\n\tif (check([0xD4, 0xC3, 0xB2, 0xA1]) || check([0xA1, 0xB2, 0xC3, 0xD4])) {\n\t\treturn {\n\t\t\text: 'pcap',\n\t\t\tmime: 'application/vnd.tcpdump.pcap'\n\t\t};\n\t}\n\n\treturn null;\n};\n\nmodule.exports = fileType;\n// TODO: Remove this for the next major release\nmodule.exports.default = fileType;\n\nObject.defineProperty(fileType, 'minimumBytes', {value: 4100});\n\nmodule.exports.stream = readableStream => new Promise((resolve, reject) => {\n\t// Using `eval` to work around issues when bundling with Webpack\n\tconst stream = eval('require')('stream'); // eslint-disable-line no-eval\n\n\treadableStream.once('readable', () => {\n\t\tconst pass = new stream.PassThrough();\n\t\tconst chunk = readableStream.read(module.exports.minimumBytes) || readableStream.read();\n\t\ttry {\n\t\t\tpass.fileType = fileType(chunk);\n\t\t} catch (error) {\n\t\t\treject(error);\n\t\t}\n\n\t\treadableStream.unshift(chunk);\n\n\t\tif (stream.pipeline) {\n\t\t\tresolve(stream.pipeline(readableStream, pass, () => {}));\n\t\t} else {\n\t\t\tresolve(readableStream.pipe(pass));\n\t\t}\n\t});\n});\n","'use strict';\n\nvar Validator = module.exports.Validator = require('./validator');\n\nmodule.exports.ValidatorResult = require('./helpers').ValidatorResult;\nmodule.exports.ValidationError = require('./helpers').ValidationError;\nmodule.exports.SchemaError = require('./helpers').SchemaError;\nmodule.exports.SchemaScanResult = require('./scan').SchemaScanResult;\nmodule.exports.scan = require('./scan').scan;\n\nmodule.exports.validate = function (instance, schema, options) {\n var v = new Validator();\n return v.validate(instance, schema, options);\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar punycode = require('punycode');\nvar util = require('./util');\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('querystring');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && util.isObject(url) && url instanceof Url) return url;\n\n var u = new Url;\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n if (!util.isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n // Copy chrome, IE, opera backslash-handling behavior.\n // Back slashes before the query string get converted to forward slashes\n // See: https://code.google.com/p/chromium/issues/detail?id=25916\n var queryIndex = url.indexOf('?'),\n splitter =\n (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n\n var rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1)\n hostEnd = rest.length;\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) continue;\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n // IDNA Support: Returns a punycoded representation of \"domain\".\n // It only converts parts of the domain name that\n // have non-ASCII characters, i.e. it doesn't matter if\n // you call it with a domain that already is ASCII-only.\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n // now rest is set to the post-host stuff.\n // chop off any delim chars.\n if (!unsafeProtocol[lowerProto]) {\n\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1)\n continue;\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) this.pathname = rest;\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n //to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (util.isString(obj)) obj = urlParse(obj);\n if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n return obj.format();\n}\n\nUrl.prototype.format = function() {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ?\n this.hostname :\n '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query &&\n util.isObject(this.query) &&\n Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n if (this.slashes ||\n (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n if (search && search.charAt(0) !== '?') search = '?' + search;\n\n pathname = pathname.replace(/[?#]/g, function(match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) return relative;\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n if (util.isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n }\n\n // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol')\n result[rkey] = relative[rkey];\n }\n\n //urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] &&\n result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift()));\n if (!relative.host) relative.host = '';\n if (!relative.hostname) relative.hostname = '';\n if (relPath[0] !== '') relPath.unshift('');\n if (relPath.length < 2) relPath.unshift('');\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n isRelAbs = (\n relative.host ||\n relative.pathname && relative.pathname.charAt(0) === '/'\n ),\n mustEndAbs = (isRelAbs || isSourceAbs ||\n (result.host && relative.pathname)),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') srcPath[0] = result.host;\n else srcPath.unshift(result.host);\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') relPath[0] = relative.host;\n else relPath.unshift(relative.host);\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = (relative.host || relative.host === '') ?\n relative.host : result.host;\n result.hostname = (relative.hostname || relative.hostname === '') ?\n relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath) srcPath = [];\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!util.isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift();\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n //to support http.request\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null;\n //to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (\n (result.host || relative.host || srcPath.length > 1) &&\n (last === '.' || last === '..') || last === '');\n\n // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' &&\n (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' ||\n (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' :\n srcPath.length ? srcPath.shift() : '';\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n }\n\n //to support request.http\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function() {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) this.hostname = host;\n};\n","\nvar urilib = require('url');\nvar helpers = require('./helpers');\n\nmodule.exports.SchemaScanResult = SchemaScanResult;\nfunction SchemaScanResult(found, ref){\n this.id = found;\n this.ref = ref;\n}\n\n/**\n * Adds a schema with a certain urn to the Validator instance.\n * @param string uri\n * @param object schema\n * @return {Object}\n */\nmodule.exports.scan = function scan(base, schema){\n function scanSchema(baseuri, schema){\n if(!schema || typeof schema!='object') return;\n // Mark all referenced schemas so we can tell later which schemas are referred to, but never defined\n if(schema.$ref){\n var resolvedUri = urilib.resolve(baseuri, schema.$ref);\n ref[resolvedUri] = ref[resolvedUri] ? ref[resolvedUri]+1 : 0;\n return;\n }\n var ourBase = schema.id ? urilib.resolve(baseuri, schema.id) : baseuri;\n if (ourBase) {\n // If there's no fragment, append an empty one\n if(ourBase.indexOf('#')<0) ourBase += '#';\n if(found[ourBase]){\n if(!helpers.deepCompareStrict(found[ourBase], schema)){\n throw new Error('Schema <'+schema+'> already exists with different definition');\n }\n return found[ourBase];\n }\n found[ourBase] = schema;\n // strip trailing fragment\n if(ourBase[ourBase.length-1]=='#'){\n found[ourBase.substring(0, ourBase.length-1)] = schema;\n }\n }\n scanArray(ourBase+'/items', ((schema.items instanceof Array)?schema.items:[schema.items]));\n scanArray(ourBase+'/extends', ((schema.extends instanceof Array)?schema.extends:[schema.extends]));\n scanSchema(ourBase+'/additionalItems', schema.additionalItems);\n scanObject(ourBase+'/properties', schema.properties);\n scanSchema(ourBase+'/additionalProperties', schema.additionalProperties);\n scanObject(ourBase+'/definitions', schema.definitions);\n scanObject(ourBase+'/patternProperties', schema.patternProperties);\n scanObject(ourBase+'/dependencies', schema.dependencies);\n scanArray(ourBase+'/disallow', schema.disallow);\n scanArray(ourBase+'/allOf', schema.allOf);\n scanArray(ourBase+'/anyOf', schema.anyOf);\n scanArray(ourBase+'/oneOf', schema.oneOf);\n scanSchema(ourBase+'/not', schema.not);\n }\n function scanArray(baseuri, schemas){\n if(!(schemas instanceof Array)) return;\n for(var i=0; i<schemas.length; i++){\n scanSchema(baseuri+'/'+i, schemas[i]);\n }\n }\n function scanObject(baseuri, schemas){\n if(!schemas || typeof schemas!='object') return;\n for(var p in schemas){\n scanSchema(baseuri+'/'+p, schemas[p]);\n }\n }\n\n var found = {};\n var ref = {};\n var schemaUri = base;\n scanSchema(base, schema);\n return new SchemaScanResult(found, ref);\n}\n","'use strict';\n\nconst nodeToJson = require('./node2json');\nconst xmlToNodeobj = require('./xmlstr2xmlnode');\nconst x2xmlnode = require('./xmlstr2xmlnode');\nconst buildOptions = require('./util').buildOptions;\nconst validator = require('./validator');\n\nexports.parse = function(xmlData, options, validationOption) {\n if( validationOption){\n if(validationOption === true) validationOption = {}\n \n const result = validator.validate(xmlData, validationOption);\n if (result !== true) {\n throw Error( result.err.msg)\n }\n }\n options = buildOptions(options, x2xmlnode.defaultOptions, x2xmlnode.props);\n return nodeToJson.convertToJson(xmlToNodeobj.getTraversalObj(xmlData, options), options);\n};\nexports.convertTonimn = require('../src/nimndata').convert2nimn;\nexports.getTraversalObj = xmlToNodeobj.getTraversalObj;\nexports.convertToJson = nodeToJson.convertToJson;\nexports.convertToJsonString = require('./node2json_str').convertToJsonString;\nexports.validate = validator.validate;\nexports.j2xParser = require('./json2xml');\nexports.parseToNimn = function(xmlData, schema, options) {\n return exports.convertTonimn(exports.getTraversalObj(xmlData, options), schema, options);\n};\n","import { isString } from './is';\n\n/**\n * Given a child DOM element, returns a query-selector statement describing that\n * and its ancestors\n * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nexport function htmlTreeAsString(elem: unknown): string {\n type SimpleNode = {\n parentNode: SimpleNode;\n } | null;\n\n // try/catch both:\n // - accessing event.target (see getsentry/raven-js#838, #768)\n // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly\n // - can throw an exception in some circumstances.\n try {\n let currentElem = elem as SimpleNode;\n const MAX_TRAVERSE_HEIGHT = 5;\n const MAX_OUTPUT_LEN = 80;\n const out = [];\n let height = 0;\n let len = 0;\n const separator = ' > ';\n const sepLength = separator.length;\n let nextStr;\n\n // eslint-disable-next-line no-plusplus\n while (currentElem && height++ < MAX_TRAVERSE_HEIGHT) {\n nextStr = _htmlElementAsString(currentElem);\n // bail out if\n // - nextStr is the 'html' element\n // - the length of the string that would be created exceeds MAX_OUTPUT_LEN\n // (ignore this limit if we are on the first iteration)\n if (nextStr === 'html' || (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN)) {\n break;\n }\n\n out.push(nextStr);\n\n len += nextStr.length;\n currentElem = currentElem.parentNode;\n }\n\n return out.reverse().join(separator);\n } catch (_oO) {\n return '<unknown>';\n }\n}\n\n/**\n * Returns a simple, query-selector representation of a DOM element\n * e.g. [HTMLElement] => input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction _htmlElementAsString(el: unknown): string {\n const elem = el as {\n tagName?: string;\n id?: string;\n className?: string;\n getAttribute(key: string): string;\n };\n\n const out = [];\n let className;\n let classes;\n let key;\n let attr;\n let i;\n\n if (!elem || !elem.tagName) {\n return '';\n }\n\n out.push(elem.tagName.toLowerCase());\n if (elem.id) {\n out.push(`#${elem.id}`);\n }\n\n // eslint-disable-next-line prefer-const\n className = elem.className;\n if (className && isString(className)) {\n classes = className.split(/\\s+/);\n for (i = 0; i < classes.length; i++) {\n out.push(`.${classes[i]}`);\n }\n }\n const allowedAttrs = ['type', 'name', 'title', 'alt'];\n for (i = 0; i < allowedAttrs.length; i++) {\n key = allowedAttrs[i];\n attr = elem.getAttribute(key);\n if (attr) {\n out.push(`[${key}=\"${attr}\"]`);\n }\n }\n return out.join('');\n}\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","'use strict';\n/*\n https://tools.ietf.org/html/rfc3629\n\n UTF8-char = UTF8-1 / UTF8-2 / UTF8-3 / UTF8-4\n\n UTF8-1 = %x00-7F\n\n UTF8-2 = %xC2-DF UTF8-tail\n\n UTF8-3 = %xE0 %xA0-BF UTF8-tail\n %xE1-EC 2( UTF8-tail )\n %xED %x80-9F UTF8-tail\n %xEE-EF 2( UTF8-tail )\n\n UTF8-4 = %xF0 %x90-BF 2( UTF8-tail )\n %xF1-F3 3( UTF8-tail )\n %xF4 %x80-8F 2( UTF8-tail )\n\n UTF8-tail = %x80-BF\n*/\n\n/**\n * Check if a Node.js Buffer or Uint8Array is utf-8\n *\n * @param {Buffer|Uint8Array} buf\n * @returns {boolean}\n */\nfunction isUtf8(buf) {\n if (!buf) {\n return false;\n }\n\n var i = 0, len = buf.length;\n\n while(i < len) {\n // UTF8-1 = %x00-7F\n if (buf[i] <= 0x7F) {\n i++;\n\n continue;\n }\n\n // UTF8-2 = %xC2-DF UTF8-tail\n if (buf[i] >= 0xC2 && buf[i] <= 0xDF) {\n // if(buf[i + 1] >= 0x80 && buf[i + 1] <= 0xBF) {\n if (buf[i + 1] >> 6 === 2) {\n i += 2;\n\n continue;\n } else {\n return false;\n }\n }\n\n // UTF8-3 = %xE0 %xA0-BF UTF8-tail\n // UTF8-3 = %xED %x80-9F UTF8-tail\n if (\n (\n (buf[i] === 0xE0 && buf[i + 1] >= 0xA0 && buf[i + 1] <= 0xBF) ||\n (buf[i] === 0xED && buf[i + 1] >= 0x80 && buf[i + 1] <= 0x9F)\n ) && buf[i + 2] >> 6 === 2\n ) {\n i += 3;\n\n continue;\n }\n\n // UTF8-3 = %xE1-EC 2( UTF8-tail )\n // UTF8-3 = %xEE-EF 2( UTF8-tail )\n if (\n (\n (buf[i] >= 0xE1 && buf[i] <= 0xEC) ||\n (buf[i] >= 0xEE && buf[i] <= 0xEF)\n ) &&\n buf[i + 1] >> 6 === 2 &&\n buf[i + 2] >> 6 === 2\n ) {\n i += 3;\n\n continue;\n }\n\n // UTF8-4 = %xF0 %x90-BF 2( UTF8-tail )\n // %xF1-F3 3( UTF8-tail )\n // %xF4 %x80-8F 2( UTF8-tail )\n if (\n (\n (buf[i] === 0xF0 && buf[i + 1] >= 0x90 && buf[i + 1] <= 0xBF) ||\n (buf[i] >= 0xF1 && buf[i] <= 0xF3 && buf[i + 1] >> 6 === 2) ||\n (buf[i] === 0xF4 && buf[i + 1] >= 0x80 && buf[i + 1] <= 0x8F)\n ) &&\n buf[i + 2] >> 6 === 2 &&\n buf[i + 3] >> 6 === 2\n ) {\n i += 4;\n\n continue;\n }\n\n return false;\n }\n\n return true;\n}\n\nmodule.exports = isUtf8;\n","(function (factory) {\n if (typeof exports === 'object') {\n // Node/CommonJS\n module.exports = factory();\n } else if (typeof define === 'function' && define.amd) {\n // AMD\n define(factory);\n } else {\n // Browser globals (with support for web workers)\n var glob;\n\n try {\n glob = window;\n } catch (e) {\n glob = self;\n }\n\n glob.SparkMD5 = factory();\n }\n}(function (undefined) {\n\n 'use strict';\n\n /*\n * Fastest md5 implementation around (JKM md5).\n * Credits: Joseph Myers\n *\n * @see http://www.myersdaily.org/joseph/javascript/md5-text.html\n * @see http://jsperf.com/md5-shootout/7\n */\n\n /* this function is much faster,\n so if possible we use it. Some IEs\n are the only ones I know of that\n need the idiotic second function,\n generated by an if clause. */\n var add32 = function (a, b) {\n return (a + b) & 0xFFFFFFFF;\n },\n hex_chr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'];\n\n\n function cmn(q, a, b, x, s, t) {\n a = add32(add32(a, q), add32(x, t));\n return add32((a << s) | (a >>> (32 - s)), b);\n }\n\n function md5cycle(x, k) {\n var a = x[0],\n b = x[1],\n c = x[2],\n d = x[3];\n\n a += (b & c | ~b & d) + k[0] - 680876936 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[1] - 389564586 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[2] + 606105819 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[3] - 1044525330 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[4] - 176418897 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[5] + 1200080426 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[6] - 1473231341 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[7] - 45705983 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[8] + 1770035416 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[9] - 1958414417 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[10] - 42063 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[11] - 1990404162 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[12] + 1804603682 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[13] - 40341101 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[14] - 1502002290 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[15] + 1236535329 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n\n a += (b & d | c & ~d) + k[1] - 165796510 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[6] - 1069501632 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[11] + 643717713 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[0] - 373897302 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[5] - 701558691 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[10] + 38016083 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[15] - 660478335 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[4] - 405537848 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[9] + 568446438 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[14] - 1019803690 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[3] - 187363961 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[8] + 1163531501 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[13] - 1444681467 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[2] - 51403784 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[7] + 1735328473 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[12] - 1926607734 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n\n a += (b ^ c ^ d) + k[5] - 378558 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[8] - 2022574463 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[11] + 1839030562 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[14] - 35309556 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[1] - 1530992060 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[4] + 1272893353 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[7] - 155497632 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[10] - 1094730640 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[13] + 681279174 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[0] - 358537222 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[3] - 722521979 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[6] + 76029189 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[9] - 640364487 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[12] - 421815835 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[15] + 530742520 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[2] - 995338651 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n\n a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;\n b = (b << 21 |b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;\n b = (b << 21 |b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;\n b = (b << 21 |b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n\n x[0] = a + x[0] | 0;\n x[1] = b + x[1] | 0;\n x[2] = c + x[2] | 0;\n x[3] = d + x[3] | 0;\n }\n\n function md5blk(s) {\n var md5blks = [],\n i; /* Andy King said do it this way. */\n\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);\n }\n return md5blks;\n }\n\n function md5blk_array(a) {\n var md5blks = [],\n i; /* Andy King said do it this way. */\n\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);\n }\n return md5blks;\n }\n\n function md51(s) {\n var n = s.length,\n state = [1732584193, -271733879, -1732584194, 271733878],\n i,\n length,\n tail,\n tmp,\n lo,\n hi;\n\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk(s.substring(i - 64, i)));\n }\n s = s.substring(i - 64);\n length = s.length;\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= s.charCodeAt(i) << ((i % 4) << 3);\n }\n tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n\n // Beware that the final length might not fit in 32 bits so we take care of that\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n\n tail[14] = lo;\n tail[15] = hi;\n\n md5cycle(state, tail);\n return state;\n }\n\n function md51_array(a) {\n var n = a.length,\n state = [1732584193, -271733879, -1732584194, 271733878],\n i,\n length,\n tail,\n tmp,\n lo,\n hi;\n\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk_array(a.subarray(i - 64, i)));\n }\n\n // Not sure if it is a bug, however IE10 will always produce a sub array of length 1\n // containing the last element of the parent array if the sub array specified starts\n // beyond the length of the parent array - weird.\n // https://connect.microsoft.com/IE/feedback/details/771452/typed-array-subarray-issue\n a = (i - 64) < n ? a.subarray(i - 64) : new Uint8Array(0);\n\n length = a.length;\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= a[i] << ((i % 4) << 3);\n }\n\n tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n\n // Beware that the final length might not fit in 32 bits so we take care of that\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n\n tail[14] = lo;\n tail[15] = hi;\n\n md5cycle(state, tail);\n\n return state;\n }\n\n function rhex(n) {\n var s = '',\n j;\n for (j = 0; j < 4; j += 1) {\n s += hex_chr[(n >> (j * 8 + 4)) & 0x0F] + hex_chr[(n >> (j * 8)) & 0x0F];\n }\n return s;\n }\n\n function hex(x) {\n var i;\n for (i = 0; i < x.length; i += 1) {\n x[i] = rhex(x[i]);\n }\n return x.join('');\n }\n\n // In some cases the fast add32 function cannot be used..\n if (hex(md51('hello')) !== '5d41402abc4b2a76b9719d911017c592') {\n add32 = function (x, y) {\n var lsw = (x & 0xFFFF) + (y & 0xFFFF),\n msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return (msw << 16) | (lsw & 0xFFFF);\n };\n }\n\n // ---------------------------------------------------\n\n /**\n * ArrayBuffer slice polyfill.\n *\n * @see https://github.com/ttaubert/node-arraybuffer-slice\n */\n\n if (typeof ArrayBuffer !== 'undefined' && !ArrayBuffer.prototype.slice) {\n (function () {\n function clamp(val, length) {\n val = (val | 0) || 0;\n\n if (val < 0) {\n return Math.max(val + length, 0);\n }\n\n return Math.min(val, length);\n }\n\n ArrayBuffer.prototype.slice = function (from, to) {\n var length = this.byteLength,\n begin = clamp(from, length),\n end = length,\n num,\n target,\n targetArray,\n sourceArray;\n\n if (to !== undefined) {\n end = clamp(to, length);\n }\n\n if (begin > end) {\n return new ArrayBuffer(0);\n }\n\n num = end - begin;\n target = new ArrayBuffer(num);\n targetArray = new Uint8Array(target);\n\n sourceArray = new Uint8Array(this, begin, num);\n targetArray.set(sourceArray);\n\n return target;\n };\n })();\n }\n\n // ---------------------------------------------------\n\n /**\n * Helpers.\n */\n\n function toUtf8(str) {\n if (/[\\u0080-\\uFFFF]/.test(str)) {\n str = unescape(encodeURIComponent(str));\n }\n\n return str;\n }\n\n function utf8Str2ArrayBuffer(str, returnUInt8Array) {\n var length = str.length,\n buff = new ArrayBuffer(length),\n arr = new Uint8Array(buff),\n i;\n\n for (i = 0; i < length; i += 1) {\n arr[i] = str.charCodeAt(i);\n }\n\n return returnUInt8Array ? arr : buff;\n }\n\n function arrayBuffer2Utf8Str(buff) {\n return String.fromCharCode.apply(null, new Uint8Array(buff));\n }\n\n function concatenateArrayBuffers(first, second, returnUInt8Array) {\n var result = new Uint8Array(first.byteLength + second.byteLength);\n\n result.set(new Uint8Array(first));\n result.set(new Uint8Array(second), first.byteLength);\n\n return returnUInt8Array ? result : result.buffer;\n }\n\n function hexToBinaryString(hex) {\n var bytes = [],\n length = hex.length,\n x;\n\n for (x = 0; x < length - 1; x += 2) {\n bytes.push(parseInt(hex.substr(x, 2), 16));\n }\n\n return String.fromCharCode.apply(String, bytes);\n }\n\n // ---------------------------------------------------\n\n /**\n * SparkMD5 OOP implementation.\n *\n * Use this class to perform an incremental md5, otherwise use the\n * static methods instead.\n */\n\n function SparkMD5() {\n // call reset to init the instance\n this.reset();\n }\n\n /**\n * Appends a string.\n * A conversion will be applied if an utf8 string is detected.\n *\n * @param {String} str The string to be appended\n *\n * @return {SparkMD5} The instance itself\n */\n SparkMD5.prototype.append = function (str) {\n // Converts the string to utf8 bytes if necessary\n // Then append as binary\n this.appendBinary(toUtf8(str));\n\n return this;\n };\n\n /**\n * Appends a binary string.\n *\n * @param {String} contents The binary string to be appended\n *\n * @return {SparkMD5} The instance itself\n */\n SparkMD5.prototype.appendBinary = function (contents) {\n this._buff += contents;\n this._length += contents.length;\n\n var length = this._buff.length,\n i;\n\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk(this._buff.substring(i - 64, i)));\n }\n\n this._buff = this._buff.substring(i - 64);\n\n return this;\n };\n\n /**\n * Finishes the incremental computation, reseting the internal state and\n * returning the result.\n *\n * @param {Boolean} raw True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */\n SparkMD5.prototype.end = function (raw) {\n var buff = this._buff,\n length = buff.length,\n i,\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n ret;\n\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff.charCodeAt(i) << ((i % 4) << 3);\n }\n\n this._finish(tail, length);\n ret = hex(this._hash);\n\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n\n this.reset();\n\n return ret;\n };\n\n /**\n * Resets the internal state of the computation.\n *\n * @return {SparkMD5} The instance itself\n */\n SparkMD5.prototype.reset = function () {\n this._buff = '';\n this._length = 0;\n this._hash = [1732584193, -271733879, -1732584194, 271733878];\n\n return this;\n };\n\n /**\n * Gets the internal state of the computation.\n *\n * @return {Object} The state\n */\n SparkMD5.prototype.getState = function () {\n return {\n buff: this._buff,\n length: this._length,\n hash: this._hash\n };\n };\n\n /**\n * Gets the internal state of the computation.\n *\n * @param {Object} state The state\n *\n * @return {SparkMD5} The instance itself\n */\n SparkMD5.prototype.setState = function (state) {\n this._buff = state.buff;\n this._length = state.length;\n this._hash = state.hash;\n\n return this;\n };\n\n /**\n * Releases memory used by the incremental buffer and other additional\n * resources. If you plan to use the instance again, use reset instead.\n */\n SparkMD5.prototype.destroy = function () {\n delete this._hash;\n delete this._buff;\n delete this._length;\n };\n\n /**\n * Finish the final calculation based on the tail.\n *\n * @param {Array} tail The tail (will be modified)\n * @param {Number} length The length of the remaining buffer\n */\n SparkMD5.prototype._finish = function (tail, length) {\n var i = length,\n tmp,\n lo,\n hi;\n\n tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n if (i > 55) {\n md5cycle(this._hash, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n\n // Do the final computation based on the tail and length\n // Beware that the final length may not fit in 32 bits so we take care of that\n tmp = this._length * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(this._hash, tail);\n };\n\n /**\n * Performs the md5 hash on a string.\n * A conversion will be applied if utf8 string is detected.\n *\n * @param {String} str The string\n * @param {Boolean} raw True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */\n SparkMD5.hash = function (str, raw) {\n // Converts the string to utf8 bytes if necessary\n // Then compute it using the binary function\n return SparkMD5.hashBinary(toUtf8(str), raw);\n };\n\n /**\n * Performs the md5 hash on a binary string.\n *\n * @param {String} content The binary string\n * @param {Boolean} raw True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */\n SparkMD5.hashBinary = function (content, raw) {\n var hash = md51(content),\n ret = hex(hash);\n\n return raw ? hexToBinaryString(ret) : ret;\n };\n\n // ---------------------------------------------------\n\n /**\n * SparkMD5 OOP implementation for array buffers.\n *\n * Use this class to perform an incremental md5 ONLY for array buffers.\n */\n SparkMD5.ArrayBuffer = function () {\n // call reset to init the instance\n this.reset();\n };\n\n /**\n * Appends an array buffer.\n *\n * @param {ArrayBuffer} arr The array to be appended\n *\n * @return {SparkMD5.ArrayBuffer} The instance itself\n */\n SparkMD5.ArrayBuffer.prototype.append = function (arr) {\n var buff = concatenateArrayBuffers(this._buff.buffer, arr, true),\n length = buff.length,\n i;\n\n this._length += arr.byteLength;\n\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk_array(buff.subarray(i - 64, i)));\n }\n\n this._buff = (i - 64) < length ? new Uint8Array(buff.buffer.slice(i - 64)) : new Uint8Array(0);\n\n return this;\n };\n\n /**\n * Finishes the incremental computation, reseting the internal state and\n * returning the result.\n *\n * @param {Boolean} raw True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */\n SparkMD5.ArrayBuffer.prototype.end = function (raw) {\n var buff = this._buff,\n length = buff.length,\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n i,\n ret;\n\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff[i] << ((i % 4) << 3);\n }\n\n this._finish(tail, length);\n ret = hex(this._hash);\n\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n\n this.reset();\n\n return ret;\n };\n\n /**\n * Resets the internal state of the computation.\n *\n * @return {SparkMD5.ArrayBuffer} The instance itself\n */\n SparkMD5.ArrayBuffer.prototype.reset = function () {\n this._buff = new Uint8Array(0);\n this._length = 0;\n this._hash = [1732584193, -271733879, -1732584194, 271733878];\n\n return this;\n };\n\n /**\n * Gets the internal state of the computation.\n *\n * @return {Object} The state\n */\n SparkMD5.ArrayBuffer.prototype.getState = function () {\n var state = SparkMD5.prototype.getState.call(this);\n\n // Convert buffer to a string\n state.buff = arrayBuffer2Utf8Str(state.buff);\n\n return state;\n };\n\n /**\n * Gets the internal state of the computation.\n *\n * @param {Object} state The state\n *\n * @return {SparkMD5.ArrayBuffer} The instance itself\n */\n SparkMD5.ArrayBuffer.prototype.setState = function (state) {\n // Convert string to buffer\n state.buff = utf8Str2ArrayBuffer(state.buff, true);\n\n return SparkMD5.prototype.setState.call(this, state);\n };\n\n SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;\n\n SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;\n\n /**\n * Performs the md5 hash on an array buffer.\n *\n * @param {ArrayBuffer} arr The array buffer\n * @param {Boolean} raw True to get the raw string, false to get the hex one\n *\n * @return {String} The result\n */\n SparkMD5.ArrayBuffer.hash = function (arr, raw) {\n var hash = md51_array(new Uint8Array(arr)),\n ret = hex(hash);\n\n return raw ? hexToBinaryString(ret) : ret;\n };\n\n return SparkMD5;\n}));\n","'use strict';\n\nconst EventEmitter = require('eventemitter3');\n\n// Port of lower_bound from http://en.cppreference.com/w/cpp/algorithm/lower_bound\n// Used to compute insertion index to keep queue sorted after insertion\nfunction lowerBound(array, value, comp) {\n\tlet first = 0;\n\tlet count = array.length;\n\n\twhile (count > 0) {\n\t\tconst step = (count / 2) | 0;\n\t\tlet it = first + step;\n\n\t\tif (comp(array[it], value) <= 0) {\n\t\t\tfirst = ++it;\n\t\t\tcount -= step + 1;\n\t\t} else {\n\t\t\tcount = step;\n\t\t}\n\t}\n\n\treturn first;\n}\n\nclass PriorityQueue {\n\tconstructor() {\n\t\tthis._queue = [];\n\t}\n\n\tenqueue(run, options) {\n\t\toptions = Object.assign({\n\t\t\tpriority: 0\n\t\t}, options);\n\n\t\tconst element = {priority: options.priority, run};\n\n\t\tif (this.size && this._queue[this.size - 1].priority >= options.priority) {\n\t\t\tthis._queue.push(element);\n\t\t\treturn;\n\t\t}\n\n\t\tconst index = lowerBound(this._queue, element, (a, b) => b.priority - a.priority);\n\t\tthis._queue.splice(index, 0, element);\n\t}\n\n\tdequeue() {\n\t\treturn this._queue.shift().run;\n\t}\n\n\tget size() {\n\t\treturn this._queue.length;\n\t}\n}\n\nclass PQueue extends EventEmitter {\n\tconstructor(options) {\n\t\tsuper();\n\n\t\toptions = Object.assign({\n\t\t\tcarryoverConcurrencyCount: false,\n\t\t\tintervalCap: Infinity,\n\t\t\tinterval: 0,\n\t\t\tconcurrency: Infinity,\n\t\t\tautoStart: true,\n\t\t\tqueueClass: PriorityQueue\n\t\t}, options);\n\n\t\tif (!(typeof options.concurrency === 'number' && options.concurrency >= 1)) {\n\t\t\tthrow new TypeError(`Expected \\`concurrency\\` to be a number from 1 and up, got \\`${options.concurrency}\\` (${typeof options.concurrency})`);\n\t\t}\n\n\t\tif (!(typeof options.intervalCap === 'number' && options.intervalCap >= 1)) {\n\t\t\tthrow new TypeError(`Expected \\`intervalCap\\` to be a number from 1 and up, got \\`${options.intervalCap}\\` (${typeof options.intervalCap})`);\n\t\t}\n\n\t\tif (!(Number.isFinite(options.interval) && options.interval >= 0)) {\n\t\t\tthrow new TypeError(`Expected \\`interval\\` to be a finite number >= 0, got \\`${options.interval}\\` (${typeof options.interval})`);\n\t\t}\n\n\t\tthis._carryoverConcurrencyCount = options.carryoverConcurrencyCount;\n\t\tthis._isIntervalIgnored = options.intervalCap === Infinity || options.interval === 0;\n\t\tthis._intervalCount = 0;\n\t\tthis._intervalCap = options.intervalCap;\n\t\tthis._interval = options.interval;\n\t\tthis._intervalId = null;\n\t\tthis._intervalEnd = 0;\n\t\tthis._timeoutId = null;\n\n\t\tthis.queue = new options.queueClass(); // eslint-disable-line new-cap\n\t\tthis._queueClass = options.queueClass;\n\t\tthis._pendingCount = 0;\n\t\tthis._concurrency = options.concurrency;\n\t\tthis._isPaused = options.autoStart === false;\n\t\tthis._resolveEmpty = () => {};\n\t\tthis._resolveIdle = () => {};\n\t}\n\n\tget _doesIntervalAllowAnother() {\n\t\treturn this._isIntervalIgnored || this._intervalCount < this._intervalCap;\n\t}\n\n\tget _doesConcurrentAllowAnother() {\n\t\treturn this._pendingCount < this._concurrency;\n\t}\n\n\t_next() {\n\t\tthis._pendingCount--;\n\t\tthis._tryToStartAnother();\n\t}\n\n\t_resolvePromises() {\n\t\tthis._resolveEmpty();\n\t\tthis._resolveEmpty = () => {};\n\n\t\tif (this._pendingCount === 0) {\n\t\t\tthis._resolveIdle();\n\t\t\tthis._resolveIdle = () => {};\n\t\t}\n\t}\n\n\t_onResumeInterval() {\n\t\tthis._onInterval();\n\t\tthis._initializeIntervalIfNeeded();\n\t\tthis._timeoutId = null;\n\t}\n\n\t_intervalPaused() {\n\t\tconst now = Date.now();\n\n\t\tif (this._intervalId === null) {\n\t\t\tconst delay = this._intervalEnd - now;\n\t\t\tif (delay < 0) {\n\t\t\t\t// Act as the interval was done\n\t\t\t\t// We don't need to resume it here,\n\t\t\t\t// because it'll be resumed on line 160\n\t\t\t\tthis._intervalCount = (this._carryoverConcurrencyCount) ? this._pendingCount : 0;\n\t\t\t} else {\n\t\t\t\t// Act as the interval is pending\n\t\t\t\tif (this._timeoutId === null) {\n\t\t\t\t\tthis._timeoutId = setTimeout(() => this._onResumeInterval(), delay);\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t_tryToStartAnother() {\n\t\tif (this.queue.size === 0) {\n\t\t\t// We can clear the interval (\"pause\")\n\t\t\t// because we can redo it later (\"resume\")\n\t\t\tclearInterval(this._intervalId);\n\t\t\tthis._intervalId = null;\n\n\t\t\tthis._resolvePromises();\n\n\t\t\treturn false;\n\t\t}\n\n\t\tif (!this._isPaused) {\n\t\t\tconst canInitializeInterval = !this._intervalPaused();\n\t\t\tif (this._doesIntervalAllowAnother && this._doesConcurrentAllowAnother) {\n\t\t\t\tthis.emit('active');\n\t\t\t\tthis.queue.dequeue()();\n\t\t\t\tif (canInitializeInterval) {\n\t\t\t\t\tthis._initializeIntervalIfNeeded();\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t_initializeIntervalIfNeeded() {\n\t\tif (this._isIntervalIgnored || this._intervalId !== null) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._intervalId = setInterval(() => this._onInterval(), this._interval);\n\t\tthis._intervalEnd = Date.now() + this._interval;\n\t}\n\n\t_onInterval() {\n\t\tif (this._intervalCount === 0 && this._pendingCount === 0) {\n\t\t\tclearInterval(this._intervalId);\n\t\t\tthis._intervalId = null;\n\t\t}\n\n\t\tthis._intervalCount = (this._carryoverConcurrencyCount) ? this._pendingCount : 0;\n\t\twhile (this._tryToStartAnother()) {} // eslint-disable-line no-empty\n\t}\n\n\tadd(fn, options) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst run = () => {\n\t\t\t\tthis._pendingCount++;\n\t\t\t\tthis._intervalCount++;\n\n\t\t\t\ttry {\n\t\t\t\t\tPromise.resolve(fn()).then(\n\t\t\t\t\t\tval => {\n\t\t\t\t\t\t\tresolve(val);\n\t\t\t\t\t\t\tthis._next();\n\t\t\t\t\t\t},\n\t\t\t\t\t\terr => {\n\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\tthis._next();\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t} catch (error) {\n\t\t\t\t\treject(error);\n\t\t\t\t\tthis._next();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tthis.queue.enqueue(run, options);\n\t\t\tthis._tryToStartAnother();\n\t\t});\n\t}\n\n\taddAll(fns, options) {\n\t\treturn Promise.all(fns.map(fn => this.add(fn, options)));\n\t}\n\n\tstart() {\n\t\tif (!this._isPaused) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._isPaused = false;\n\t\twhile (this._tryToStartAnother()) {} // eslint-disable-line no-empty\n\t}\n\n\tpause() {\n\t\tthis._isPaused = true;\n\t}\n\n\tclear() {\n\t\tthis.queue = new this._queueClass();\n\t}\n\n\tonEmpty() {\n\t\t// Instantly resolve if the queue is empty\n\t\tif (this.queue.size === 0) {\n\t\t\treturn Promise.resolve();\n\t\t}\n\n\t\treturn new Promise(resolve => {\n\t\t\tconst existingResolve = this._resolveEmpty;\n\t\t\tthis._resolveEmpty = () => {\n\t\t\t\texistingResolve();\n\t\t\t\tresolve();\n\t\t\t};\n\t\t});\n\t}\n\n\tonIdle() {\n\t\t// Instantly resolve if none pending and if nothing else is queued\n\t\tif (this._pendingCount === 0 && this.queue.size === 0) {\n\t\t\treturn Promise.resolve();\n\t\t}\n\n\t\treturn new Promise(resolve => {\n\t\t\tconst existingResolve = this._resolveIdle;\n\t\t\tthis._resolveIdle = () => {\n\t\t\t\texistingResolve();\n\t\t\t\tresolve();\n\t\t\t};\n\t\t});\n\t}\n\n\tget size() {\n\t\treturn this.queue.size;\n\t}\n\n\tget pending() {\n\t\treturn this._pendingCount;\n\t}\n\n\tget isPaused() {\n\t\treturn this._isPaused;\n\t}\n}\n\nmodule.exports = PQueue;\nmodule.exports.default = PQueue;\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/**\n * Adds the key-value `pair` to `map`.\n *\n * @private\n * @param {Object} map The map to modify.\n * @param {Array} pair The key-value pair to add.\n * @returns {Object} Returns `map`.\n */\nfunction addMapEntry(map, pair) {\n // Don't return `map.set` because it's not chainable in IE 11.\n map.set(pair[0], pair[1]);\n return map;\n}\n\n/**\n * Adds `value` to `set`.\n *\n * @private\n * @param {Object} set The set to modify.\n * @param {*} value The value to add.\n * @returns {Object} Returns `set`.\n */\nfunction addSetEntry(set, value) {\n // Don't return `set.add` because it's not chainable in IE 11.\n set.add(value);\n return set;\n}\n\n/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array ? array.length : 0;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var cache = this.__data__;\n if (cache instanceof ListCache) {\n var pairs = cache.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n return this;\n }\n cache = this.__data__ = new MapCache(pairs);\n }\n cache.set(key, value);\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @param {boolean} [isFull] Specify a clone including symbols.\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n var result;\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n if (isHostObject(value)) {\n return object ? value : {};\n }\n result = initCloneObject(isFunc ? {} : value);\n if (!isDeep) {\n return copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, baseClone, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (!isArr) {\n var props = isFull ? getAllKeys(value) : keys(value);\n }\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\n });\n return result;\n}\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nfunction baseCreate(proto) {\n return isObject(proto) ? objectCreate(proto) : {};\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var result = new buffer.constructor(buffer.length);\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\n/**\n * Creates a clone of `map`.\n *\n * @private\n * @param {Object} map The map to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned map.\n */\nfunction cloneMap(map, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);\n return arrayReduce(array, addMapEntry, new map.constructor);\n}\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\n/**\n * Creates a clone of `set`.\n *\n * @private\n * @param {Object} set The set to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned set.\n */\nfunction cloneSet(set, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);\n return arrayReduce(array, addSetEntry, new set.constructor);\n}\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n assignValue(object, key, newValue === undefined ? source[key] : newValue);\n }\n return object;\n}\n\n/**\n * Copies own symbol properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Creates an array of the own enumerable symbol properties of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, cloneFunc, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return cloneMap(object, isDeep, cloneFunc);\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return cloneSet(object, isDeep, cloneFunc);\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, true, true);\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = cloneDeep;\n","const defaultFunctionName = '<anonymous>';\n\n/**\n * Safely extract function name from itself\n */\nexport function getFunctionName(fn: unknown): string {\n try {\n if (!fn || typeof fn !== 'function') {\n return defaultFunctionName;\n }\n return fn.name || defaultFunctionName;\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n return defaultFunctionName;\n }\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/**\n * Memo class used for decycle json objects. Uses WeakSet if available otherwise array.\n */\nexport class Memo {\n /** Determines if WeakSet is available */\n private readonly _hasWeakSet: boolean;\n /** Either WeakSet or Array */\n private readonly _inner: any;\n\n public constructor() {\n this._hasWeakSet = typeof WeakSet === 'function';\n this._inner = this._hasWeakSet ? new WeakSet() : [];\n }\n\n /**\n * Sets obj to remember.\n * @param obj Object to remember\n */\n public memoize(obj: any): boolean {\n if (this._hasWeakSet) {\n if (this._inner.has(obj)) {\n return true;\n }\n this._inner.add(obj);\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < this._inner.length; i++) {\n const value = this._inner[i];\n if (value === obj) {\n return true;\n }\n }\n this._inner.push(obj);\n return false;\n }\n\n /**\n * Removes object from internal storage.\n * @param obj Object to forget\n */\n public unmemoize(obj: any): void {\n if (this._hasWeakSet) {\n this._inner.delete(obj);\n } else {\n for (let i = 0; i < this._inner.length; i++) {\n if (this._inner[i] === obj) {\n this._inner.splice(i, 1);\n break;\n }\n }\n }\n }\n}\n","'use strict';\n\nvar urilib = require('url');\n\nvar attribute = require('./attribute');\nvar helpers = require('./helpers');\nvar scanSchema = require('./scan').scan;\nvar ValidatorResult = helpers.ValidatorResult;\nvar SchemaError = helpers.SchemaError;\nvar SchemaContext = helpers.SchemaContext;\n//var anonymousBase = 'vnd.jsonschema:///';\nvar anonymousBase = '/';\n\n/**\n * Creates a new Validator object\n * @name Validator\n * @constructor\n */\nvar Validator = function Validator () {\n // Allow a validator instance to override global custom formats or to have their\n // own custom formats.\n this.customFormats = Object.create(Validator.prototype.customFormats);\n this.schemas = {};\n this.unresolvedRefs = [];\n\n // Use Object.create to make this extensible without Validator instances stepping on each other's toes.\n this.types = Object.create(types);\n this.attributes = Object.create(attribute.validators);\n};\n\n// Allow formats to be registered globally.\nValidator.prototype.customFormats = {};\n\n// Hint at the presence of a property\nValidator.prototype.schemas = null;\nValidator.prototype.types = null;\nValidator.prototype.attributes = null;\nValidator.prototype.unresolvedRefs = null;\n\n/**\n * Adds a schema with a certain urn to the Validator instance.\n * @param schema\n * @param urn\n * @return {Object}\n */\nValidator.prototype.addSchema = function addSchema (schema, base) {\n var self = this;\n if (!schema) {\n return null;\n }\n var scan = scanSchema(base||anonymousBase, schema);\n var ourUri = base || schema.id;\n for(var uri in scan.id){\n this.schemas[uri] = scan.id[uri];\n }\n for(var uri in scan.ref){\n this.unresolvedRefs.push(uri);\n }\n this.unresolvedRefs = this.unresolvedRefs.filter(function(uri){\n return typeof self.schemas[uri]==='undefined';\n });\n return this.schemas[ourUri];\n};\n\nValidator.prototype.addSubSchemaArray = function addSubSchemaArray(baseuri, schemas) {\n if(!(schemas instanceof Array)) return;\n for(var i=0; i<schemas.length; i++){\n this.addSubSchema(baseuri, schemas[i]);\n }\n};\n\nValidator.prototype.addSubSchemaObject = function addSubSchemaArray(baseuri, schemas) {\n if(!schemas || typeof schemas!='object') return;\n for(var p in schemas){\n this.addSubSchema(baseuri, schemas[p]);\n }\n};\n\n\n\n/**\n * Sets all the schemas of the Validator instance.\n * @param schemas\n */\nValidator.prototype.setSchemas = function setSchemas (schemas) {\n this.schemas = schemas;\n};\n\n/**\n * Returns the schema of a certain urn\n * @param urn\n */\nValidator.prototype.getSchema = function getSchema (urn) {\n return this.schemas[urn];\n};\n\n/**\n * Validates instance against the provided schema\n * @param instance\n * @param schema\n * @param [options]\n * @param [ctx]\n * @return {Array}\n */\nValidator.prototype.validate = function validate (instance, schema, options, ctx) {\n if (!options) {\n options = {};\n }\n var propertyName = options.propertyName || 'instance';\n // This will work so long as the function at uri.resolve() will resolve a relative URI to a relative URI\n var base = urilib.resolve(options.base||anonymousBase, schema.id||'');\n if(!ctx){\n ctx = new SchemaContext(schema, options, propertyName, base, Object.create(this.schemas));\n if (!ctx.schemas[base]) {\n ctx.schemas[base] = schema;\n }\n var found = scanSchema(base, schema);\n for(var n in found.id){\n var sch = found.id[n];\n ctx.schemas[n] = sch;\n }\n }\n if (schema) {\n var result = this.validateSchema(instance, schema, options, ctx);\n if (!result) {\n throw new Error('Result undefined');\n }\n return result;\n }\n throw new SchemaError('no schema specified', schema);\n};\n\n/**\n* @param Object schema\n* @return mixed schema uri or false\n*/\nfunction shouldResolve(schema) {\n var ref = (typeof schema === 'string') ? schema : schema.$ref;\n if (typeof ref=='string') return ref;\n return false;\n}\n\n/**\n * Validates an instance against the schema (the actual work horse)\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @private\n * @return {ValidatorResult}\n */\nValidator.prototype.validateSchema = function validateSchema (instance, schema, options, ctx) {\n var result = new ValidatorResult(instance, schema, options, ctx);\n\n // Support for the true/false schemas\n if(typeof schema==='boolean') {\n if(schema===true){\n // `true` is always valid\n schema = {};\n }else if(schema===false){\n // `false` is always invalid\n schema = {type: []};\n }\n }else if(!schema){\n // This might be a string\n throw new Error(\"schema is undefined\");\n }\n\n if (schema['extends']) {\n if (schema['extends'] instanceof Array) {\n var schemaobj = {schema: schema, ctx: ctx};\n schema['extends'].forEach(this.schemaTraverser.bind(this, schemaobj));\n schema = schemaobj.schema;\n schemaobj.schema = null;\n schemaobj.ctx = null;\n schemaobj = null;\n } else {\n schema = helpers.deepMerge(schema, this.superResolve(schema['extends'], ctx));\n }\n }\n\n // If passed a string argument, load that schema URI\n var switchSchema;\n if (switchSchema = shouldResolve(schema)) {\n var resolved = this.resolve(schema, switchSchema, ctx);\n var subctx = new SchemaContext(resolved.subschema, options, ctx.propertyPath, resolved.switchSchema, ctx.schemas);\n return this.validateSchema(instance, resolved.subschema, options, subctx);\n }\n\n var skipAttributes = options && options.skipAttributes || [];\n // Validate each schema attribute against the instance\n for (var key in schema) {\n if (!attribute.ignoreProperties[key] && skipAttributes.indexOf(key) < 0) {\n var validatorErr = null;\n var validator = this.attributes[key];\n if (validator) {\n validatorErr = validator.call(this, instance, schema, options, ctx);\n } else if (options.allowUnknownAttributes === false) {\n // This represents an error with the schema itself, not an invalid instance\n throw new SchemaError(\"Unsupported attribute: \" + key, schema);\n }\n if (validatorErr) {\n result.importErrors(validatorErr);\n }\n }\n }\n\n if (typeof options.rewrite == 'function') {\n var value = options.rewrite.call(this, instance, schema, options, ctx);\n result.instance = value;\n }\n return result;\n};\n\n/**\n* @private\n* @param Object schema\n* @param SchemaContext ctx\n* @returns Object schema or resolved schema\n*/\nValidator.prototype.schemaTraverser = function schemaTraverser (schemaobj, s) {\n schemaobj.schema = helpers.deepMerge(schemaobj.schema, this.superResolve(s, schemaobj.ctx));\n}\n\n/**\n* @private\n* @param Object schema\n* @param SchemaContext ctx\n* @returns Object schema or resolved schema\n*/\nValidator.prototype.superResolve = function superResolve (schema, ctx) {\n var ref;\n if(ref = shouldResolve(schema)) {\n return this.resolve(schema, ref, ctx).subschema;\n }\n return schema;\n}\n\n/**\n* @private\n* @param Object schema\n* @param Object switchSchema\n* @param SchemaContext ctx\n* @return Object resolved schemas {subschema:String, switchSchema: String}\n* @throws SchemaError\n*/\nValidator.prototype.resolve = function resolve (schema, switchSchema, ctx) {\n switchSchema = ctx.resolve(switchSchema);\n // First see if the schema exists under the provided URI\n if (ctx.schemas[switchSchema]) {\n return {subschema: ctx.schemas[switchSchema], switchSchema: switchSchema};\n }\n // Else try walking the property pointer\n var parsed = urilib.parse(switchSchema);\n var fragment = parsed && parsed.hash;\n var document = fragment && fragment.length && switchSchema.substr(0, switchSchema.length - fragment.length);\n if (!document || !ctx.schemas[document]) {\n throw new SchemaError(\"no such schema <\" + switchSchema + \">\", schema);\n }\n var subschema = helpers.objectGetPath(ctx.schemas[document], fragment.substr(1));\n if(subschema===undefined){\n throw new SchemaError(\"no such schema \" + fragment + \" located in <\" + document + \">\", schema);\n }\n return {subschema: subschema, switchSchema: switchSchema};\n};\n\n/**\n * Tests whether the instance if of a certain type.\n * @private\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @param type\n * @return {boolean}\n */\nValidator.prototype.testType = function validateType (instance, schema, options, ctx, type) {\n if (typeof this.types[type] == 'function') {\n return this.types[type].call(this, instance);\n }\n if (type && typeof type == 'object') {\n var res = this.validateSchema(instance, type, options, ctx);\n return res === undefined || !(res && res.errors.length);\n }\n // Undefined or properties not on the list are acceptable, same as not being defined\n return true;\n};\n\nvar types = Validator.prototype.types = {};\ntypes.string = function testString (instance) {\n return typeof instance == 'string';\n};\ntypes.number = function testNumber (instance) {\n // isFinite returns false for NaN, Infinity, and -Infinity\n return typeof instance == 'number' && isFinite(instance);\n};\ntypes.integer = function testInteger (instance) {\n return (typeof instance == 'number') && instance % 1 === 0;\n};\ntypes.boolean = function testBoolean (instance) {\n return typeof instance == 'boolean';\n};\ntypes.array = function testArray (instance) {\n return Array.isArray(instance);\n};\ntypes['null'] = function testNull (instance) {\n return instance === null;\n};\ntypes.date = function testDate (instance) {\n return instance instanceof Date;\n};\ntypes.any = function testAny (instance) {\n return true;\n};\ntypes.object = function testObject (instance) {\n // TODO: fix this - see #15\n return instance && (typeof instance) === 'object' && !(instance instanceof Array) && !(instance instanceof Date);\n};\n\nmodule.exports = Validator;\n","/*! https://mths.be/punycode v1.3.2 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * http://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.3.2',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","'use strict';\n\nmodule.exports = {\n isString: function(arg) {\n return typeof(arg) === 'string';\n },\n isObject: function(arg) {\n return typeof(arg) === 'object' && arg !== null;\n },\n isNull: function(arg) {\n return arg === null;\n },\n isNullOrUndefined: function(arg) {\n return arg == null;\n }\n};\n","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return map(objectKeys(obj), function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (isArray(obj[k])) {\n return map(obj[k], function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n\nfunction map (xs, f) {\n if (xs.map) return xs.map(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n res.push(f(xs[i], i));\n }\n return res;\n}\n\nvar objectKeys = Object.keys || function (obj) {\n var res = [];\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);\n }\n return res;\n};\n","'use strict';\n\nvar helpers = require('./helpers');\n\n/** @type ValidatorResult */\nvar ValidatorResult = helpers.ValidatorResult;\n/** @type SchemaError */\nvar SchemaError = helpers.SchemaError;\n\nvar attribute = {};\n\nattribute.ignoreProperties = {\n // informative properties\n 'id': true,\n 'default': true,\n 'description': true,\n 'title': true,\n // arguments to other properties\n 'exclusiveMinimum': true,\n 'exclusiveMaximum': true,\n 'additionalItems': true,\n // special-handled properties\n '$schema': true,\n '$ref': true,\n 'extends': true\n};\n\n/**\n * @name validators\n */\nvar validators = attribute.validators = {};\n\n/**\n * Validates whether the instance if of a certain type\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {ValidatorResult|null}\n */\nvalidators.type = function validateType (instance, schema, options, ctx) {\n // Ignore undefined instances\n if (instance === undefined) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var types = Array.isArray(schema.type) ? schema.type : [schema.type];\n if (!types.some(this.testType.bind(this, instance, schema, options, ctx))) {\n var list = types.map(function (v) {\n return v.id && ('<' + v.id + '>') || (v+'');\n });\n result.addError({\n name: 'type',\n argument: list,\n message: \"is not of a type(s) \" + list,\n });\n }\n return result;\n};\n\nfunction testSchemaNoThrow(instance, options, ctx, callback, schema){\n var throwError = options.throwError;\n options.throwError = false;\n var res = this.validateSchema(instance, schema, options, ctx);\n options.throwError = throwError;\n\n if (! res.valid && callback instanceof Function) {\n callback(res);\n }\n return res.valid;\n}\n\n/**\n * Validates whether the instance matches some of the given schemas\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {ValidatorResult|null}\n */\nvalidators.anyOf = function validateAnyOf (instance, schema, options, ctx) {\n // Ignore undefined instances\n if (instance === undefined) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var inner = new ValidatorResult(instance, schema, options, ctx);\n if (!Array.isArray(schema.anyOf)){\n throw new SchemaError(\"anyOf must be an array\");\n }\n if (!schema.anyOf.some(\n testSchemaNoThrow.bind(\n this, instance, options, ctx, function(res){inner.importErrors(res);}\n ))) {\n var list = schema.anyOf.map(function (v, i) {\n return (v.id && ('<' + v.id + '>')) || (v.title && JSON.stringify(v.title)) || (v['$ref'] && ('<' + v['$ref'] + '>')) || '[subschema '+i+']';\n });\n if (options.nestedErrors) {\n result.importErrors(inner);\n }\n result.addError({\n name: 'anyOf',\n argument: list,\n message: \"is not any of \" + list.join(','),\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance matches every given schema\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null}\n */\nvalidators.allOf = function validateAllOf (instance, schema, options, ctx) {\n // Ignore undefined instances\n if (instance === undefined) {\n return null;\n }\n if (!Array.isArray(schema.allOf)){\n throw new SchemaError(\"allOf must be an array\");\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var self = this;\n schema.allOf.forEach(function(v, i){\n var valid = self.validateSchema(instance, v, options, ctx);\n if(!valid.valid){\n var msg = (v.id && ('<' + v.id + '>')) || (v.title && JSON.stringify(v.title)) || (v['$ref'] && ('<' + v['$ref'] + '>')) || '[subschema '+i+']';\n result.addError({\n name: 'allOf',\n argument: { id: msg, length: valid.errors.length, valid: valid },\n message: 'does not match allOf schema ' + msg + ' with ' + valid.errors.length + ' error[s]:',\n });\n result.importErrors(valid);\n }\n });\n return result;\n};\n\n/**\n * Validates whether the instance matches exactly one of the given schemas\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null}\n */\nvalidators.oneOf = function validateOneOf (instance, schema, options, ctx) {\n // Ignore undefined instances\n if (instance === undefined) {\n return null;\n }\n if (!Array.isArray(schema.oneOf)){\n throw new SchemaError(\"oneOf must be an array\");\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var inner = new ValidatorResult(instance, schema, options, ctx);\n var count = schema.oneOf.filter(\n testSchemaNoThrow.bind(\n this, instance, options, ctx, function(res) {inner.importErrors(res);}\n ) ).length;\n var list = schema.oneOf.map(function (v, i) {\n return (v.id && ('<' + v.id + '>')) || (v.title && JSON.stringify(v.title)) || (v['$ref'] && ('<' + v['$ref'] + '>')) || '[subschema '+i+']';\n });\n if (count!==1) {\n if (options.nestedErrors) {\n result.importErrors(inner);\n }\n result.addError({\n name: 'oneOf',\n argument: list,\n message: \"is not exactly one from \" + list.join(','),\n });\n }\n return result;\n};\n\n/**\n * Validates properties\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.properties = function validateProperties (instance, schema, options, ctx) {\n if(!this.types.object(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var properties = schema.properties || {};\n for (var property in properties) {\n if (typeof options.preValidateProperty == 'function') {\n options.preValidateProperty(instance, property, properties[property], options, ctx);\n }\n\n var prop = Object.hasOwnProperty.call(instance, property) ? instance[property] : undefined;\n var res = this.validateSchema(prop, properties[property], options, ctx.makeChild(properties[property], property));\n if(res.instance !== result.instance[property]) result.instance[property] = res.instance;\n result.importErrors(res);\n }\n return result;\n};\n\n/**\n * Test a specific property within in instance against the additionalProperties schema attribute\n * This ignores properties with definitions in the properties schema attribute, but no other attributes.\n * If too many more types of property-existance tests pop up they may need their own class of tests (like `type` has)\n * @private\n * @return {boolean}\n */\nfunction testAdditionalProperty (instance, schema, options, ctx, property, result) {\n if(!this.types.object(instance)) return;\n if (schema.properties && schema.properties[property] !== undefined) {\n return;\n }\n if (schema.additionalProperties === false) {\n result.addError({\n name: 'additionalProperties',\n argument: property,\n message: \"additionalProperty \" + JSON.stringify(property) + \" exists in instance when not allowed\",\n });\n } else {\n var additionalProperties = schema.additionalProperties || {};\n\n if (typeof options.preValidateProperty == 'function') {\n options.preValidateProperty(instance, property, additionalProperties, options, ctx);\n }\n\n var res = this.validateSchema(instance[property], additionalProperties, options, ctx.makeChild(additionalProperties, property));\n if(res.instance !== result.instance[property]) result.instance[property] = res.instance;\n result.importErrors(res);\n }\n}\n\n/**\n * Validates patternProperties\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.patternProperties = function validatePatternProperties (instance, schema, options, ctx) {\n if(!this.types.object(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var patternProperties = schema.patternProperties || {};\n\n for (var property in instance) {\n var test = true;\n for (var pattern in patternProperties) {\n var expr = new RegExp(pattern);\n if (!expr.test(property)) {\n continue;\n }\n test = false;\n\n if (typeof options.preValidateProperty == 'function') {\n options.preValidateProperty(instance, property, patternProperties[pattern], options, ctx);\n }\n\n var res = this.validateSchema(instance[property], patternProperties[pattern], options, ctx.makeChild(patternProperties[pattern], property));\n if(res.instance !== result.instance[property]) result.instance[property] = res.instance;\n result.importErrors(res);\n }\n if (test) {\n testAdditionalProperty.call(this, instance, schema, options, ctx, property, result);\n }\n }\n\n return result;\n};\n\n/**\n * Validates additionalProperties\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.additionalProperties = function validateAdditionalProperties (instance, schema, options, ctx) {\n if(!this.types.object(instance)) return;\n // if patternProperties is defined then we'll test when that one is called instead\n if (schema.patternProperties) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n for (var property in instance) {\n testAdditionalProperty.call(this, instance, schema, options, ctx, property, result);\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is at least of a certain length, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.minProperties = function validateMinProperties (instance, schema, options, ctx) {\n if (!this.types.object(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var keys = Object.keys(instance);\n if (!(keys.length >= schema.minProperties)) {\n result.addError({\n name: 'minProperties',\n argument: schema.minProperties,\n message: \"does not meet minimum property length of \" + schema.minProperties,\n })\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is at most of a certain length, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.maxProperties = function validateMaxProperties (instance, schema, options, ctx) {\n if (!this.types.object(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var keys = Object.keys(instance);\n if (!(keys.length <= schema.maxProperties)) {\n result.addError({\n name: 'maxProperties',\n argument: schema.maxProperties,\n message: \"does not meet maximum property length of \" + schema.maxProperties,\n });\n }\n return result;\n};\n\n/**\n * Validates items when instance is an array\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.items = function validateItems (instance, schema, options, ctx) {\n var self = this;\n if (!this.types.array(instance)) return;\n if (!schema.items) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n instance.every(function (value, i) {\n var items = Array.isArray(schema.items) ? (schema.items[i] || schema.additionalItems) : schema.items;\n if (items === undefined) {\n return true;\n }\n if (items === false) {\n result.addError({\n name: 'items',\n message: \"additionalItems not permitted\",\n });\n return false;\n }\n var res = self.validateSchema(value, items, options, ctx.makeChild(items, i));\n if(res.instance !== result.instance[i]) result.instance[i] = res.instance;\n result.importErrors(res);\n return true;\n });\n return result;\n};\n\n/**\n * Validates minimum and exclusiveMinimum when the type of the instance value is a number.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.minimum = function validateMinimum (instance, schema, options, ctx) {\n if (!this.types.number(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var valid = true;\n if (schema.exclusiveMinimum && schema.exclusiveMinimum === true) {\n valid = instance > schema.minimum;\n } else {\n valid = instance >= schema.minimum;\n }\n if (!valid) {\n result.addError({\n name: 'minimum',\n argument: schema.minimum,\n message: \"must have a minimum value of \" + schema.minimum,\n });\n }\n return result;\n};\n\n/**\n * Validates maximum and exclusiveMaximum when the type of the instance value is a number.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.maximum = function validateMaximum (instance, schema, options, ctx) {\n if (!this.types.number(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var valid;\n if (schema.exclusiveMaximum && schema.exclusiveMaximum === true) {\n valid = instance < schema.maximum;\n } else {\n valid = instance <= schema.maximum;\n }\n if (!valid) {\n result.addError({\n name: 'maximum',\n argument: schema.maximum,\n message: \"must have a maximum value of \" + schema.maximum,\n });\n }\n return result;\n};\n\n/**\n * Perform validation for multipleOf and divisibleBy, which are essentially the same.\n * @param instance\n * @param schema\n * @param validationType\n * @param errorMessage\n * @returns {String|null}\n */\nvar validateMultipleOfOrDivisbleBy = function validateMultipleOfOrDivisbleBy (instance, schema, options, ctx, validationType, errorMessage) {\n if (!this.types.number(instance)) return;\n\n var validationArgument = schema[validationType];\n if (validationArgument == 0) {\n throw new SchemaError(validationType + \" cannot be zero\");\n }\n\n var result = new ValidatorResult(instance, schema, options, ctx);\n\n var instanceDecimals = helpers.getDecimalPlaces(instance);\n var divisorDecimals = helpers.getDecimalPlaces(validationArgument);\n\n var maxDecimals = Math.max(instanceDecimals , divisorDecimals);\n var multiplier = Math.pow(10, maxDecimals);\n\n if (Math.round(instance * multiplier) % Math.round(validationArgument * multiplier) !== 0) {\n result.addError({\n name: validationType,\n argument: validationArgument,\n message: errorMessage + JSON.stringify(validationArgument)\n });\n }\n\n return result;\n};\n\n/**\n * Validates divisibleBy when the type of the instance value is a number.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.multipleOf = function validateMultipleOf (instance, schema, options, ctx) {\n return validateMultipleOfOrDivisbleBy.call(this, instance, schema, options, ctx, \"multipleOf\", \"is not a multiple of (divisible by) \");\n};\n\n/**\n * Validates multipleOf when the type of the instance value is a number.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.divisibleBy = function validateDivisibleBy (instance, schema, options, ctx) {\n return validateMultipleOfOrDivisbleBy.call(this, instance, schema, options, ctx, \"divisibleBy\", \"is not divisible by (multiple of) \");\n};\n\n/**\n * Validates whether the instance value is present.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.required = function validateRequired (instance, schema, options, ctx) {\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (instance === undefined && schema.required === true) {\n // A boolean form is implemented for reverse-compatability with schemas written against older drafts\n result.addError({\n name: 'required',\n message: \"is required\"\n });\n } else if (this.types.object(instance) && Array.isArray(schema.required)) {\n schema.required.forEach(function(n){\n if(instance[n]===undefined){\n result.addError({\n name: 'required',\n argument: n,\n message: \"requires property \" + JSON.stringify(n),\n });\n }\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance value matches the regular expression, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.pattern = function validatePattern (instance, schema, options, ctx) {\n if (!this.types.string(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!instance.match(schema.pattern)) {\n result.addError({\n name: 'pattern',\n argument: schema.pattern,\n message: \"does not match pattern \" + JSON.stringify(schema.pattern.toString()),\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is of a certain defined format or a custom\n * format.\n * The following formats are supported for string types:\n * - date-time\n * - date\n * - time\n * - ip-address\n * - ipv6\n * - uri\n * - color\n * - host-name\n * - alpha\n * - alpha-numeric\n * - utc-millisec\n * @param instance\n * @param schema\n * @param [options]\n * @param [ctx]\n * @return {String|null}\n */\nvalidators.format = function validateFormat (instance, schema, options, ctx) {\n if (instance===undefined) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!result.disableFormat && !helpers.isFormat(instance, schema.format, this)) {\n result.addError({\n name: 'format',\n argument: schema.format,\n message: \"does not conform to the \" + JSON.stringify(schema.format) + \" format\",\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is at least of a certain length, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.minLength = function validateMinLength (instance, schema, options, ctx) {\n if (!this.types.string(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var hsp = instance.match(/[\\uDC00-\\uDFFF]/g);\n var length = instance.length - (hsp ? hsp.length : 0);\n if (!(length >= schema.minLength)) {\n result.addError({\n name: 'minLength',\n argument: schema.minLength,\n message: \"does not meet minimum length of \" + schema.minLength,\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is at most of a certain length, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.maxLength = function validateMaxLength (instance, schema, options, ctx) {\n if (!this.types.string(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n // TODO if this was already computed in \"minLength\", use that value instead of re-computing\n var hsp = instance.match(/[\\uDC00-\\uDFFF]/g);\n var length = instance.length - (hsp ? hsp.length : 0);\n if (!(length <= schema.maxLength)) {\n result.addError({\n name: 'maxLength',\n argument: schema.maxLength,\n message: \"does not meet maximum length of \" + schema.maxLength,\n });\n }\n return result;\n};\n\n/**\n * Validates whether instance contains at least a minimum number of items, when the instance is an Array.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.minItems = function validateMinItems (instance, schema, options, ctx) {\n if (!this.types.array(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!(instance.length >= schema.minItems)) {\n result.addError({\n name: 'minItems',\n argument: schema.minItems,\n message: \"does not meet minimum length of \" + schema.minItems,\n });\n }\n return result;\n};\n\n/**\n * Validates whether instance contains no more than a maximum number of items, when the instance is an Array.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.maxItems = function validateMaxItems (instance, schema, options, ctx) {\n if (!this.types.array(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!(instance.length <= schema.maxItems)) {\n result.addError({\n name: 'maxItems',\n argument: schema.maxItems,\n message: \"does not meet maximum length of \" + schema.maxItems,\n });\n }\n return result;\n};\n\n/**\n * Validates that every item in an instance array is unique, when instance is an array\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.uniqueItems = function validateUniqueItems (instance, schema, options, ctx) {\n if (!this.types.array(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n function testArrays (v, i, a) {\n for (var j = i + 1; j < a.length; j++) if (helpers.deepCompareStrict(v, a[j])) {\n return false;\n }\n return true;\n }\n if (!instance.every(testArrays)) {\n result.addError({\n name: 'uniqueItems',\n message: \"contains duplicate item\",\n });\n }\n return result;\n};\n\n/**\n * Deep compares arrays for duplicates\n * @param v\n * @param i\n * @param a\n * @private\n * @return {boolean}\n */\nfunction testArrays (v, i, a) {\n var j, len = a.length;\n for (j = i + 1, len; j < len; j++) {\n if (helpers.deepCompareStrict(v, a[j])) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Validates whether there are no duplicates, when the instance is an Array.\n * @param instance\n * @return {String|null}\n */\nvalidators.uniqueItems = function validateUniqueItems (instance, schema, options, ctx) {\n if (!this.types.array(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!instance.every(testArrays)) {\n result.addError({\n name: 'uniqueItems',\n message: \"contains duplicate item\",\n });\n }\n return result;\n};\n\n/**\n * Validate for the presence of dependency properties, if the instance is an object.\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {null|ValidatorResult}\n */\nvalidators.dependencies = function validateDependencies (instance, schema, options, ctx) {\n if (!this.types.object(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n for (var property in schema.dependencies) {\n if (instance[property] === undefined) {\n continue;\n }\n var dep = schema.dependencies[property];\n var childContext = ctx.makeChild(dep, property);\n if (typeof dep == 'string') {\n dep = [dep];\n }\n if (Array.isArray(dep)) {\n dep.forEach(function (prop) {\n if (instance[prop] === undefined) {\n result.addError({\n // FIXME there's two different \"dependencies\" errors here with slightly different outputs\n // Can we make these the same? Or should we create different error types?\n name: 'dependencies',\n argument: childContext.propertyPath,\n message: \"property \" + prop + \" not found, required by \" + childContext.propertyPath,\n });\n }\n });\n } else {\n var res = this.validateSchema(instance, dep, options, childContext);\n if(result.instance !== res.instance) result.instance = res.instance;\n if (res && res.errors.length) {\n result.addError({\n name: 'dependencies',\n argument: childContext.propertyPath,\n message: \"does not meet dependency required by \" + childContext.propertyPath,\n });\n result.importErrors(res);\n }\n }\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is one of the enumerated values.\n *\n * @param instance\n * @param schema\n * @return {ValidatorResult|null}\n */\nvalidators['enum'] = function validateEnum (instance, schema, options, ctx) {\n if (instance === undefined) {\n return null;\n }\n if (!Array.isArray(schema['enum'])) {\n throw new SchemaError(\"enum expects an array\", schema);\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!schema['enum'].some(helpers.deepCompareStrict.bind(null, instance))) {\n result.addError({\n name: 'enum',\n argument: schema['enum'],\n message: \"is not one of enum values: \" + schema['enum'].map(String).join(','),\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance exactly matches a given value\n *\n * @param instance\n * @param schema\n * @return {ValidatorResult|null}\n */\nvalidators['const'] = function validateEnum (instance, schema, options, ctx) {\n if (instance === undefined) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!helpers.deepCompareStrict(schema['const'], instance)) {\n result.addError({\n name: 'const',\n argument: schema['const'],\n message: \"does not exactly match expected constant: \" + schema['const'],\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance if of a prohibited type.\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {null|ValidatorResult}\n */\nvalidators.not = validators.disallow = function validateNot (instance, schema, options, ctx) {\n var self = this;\n if(instance===undefined) return null;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var notTypes = schema.not || schema.disallow;\n if(!notTypes) return null;\n if(!Array.isArray(notTypes)) notTypes=[notTypes];\n notTypes.forEach(function (type) {\n if (self.testType(instance, schema, options, ctx, type)) {\n var schemaId = type && type.id && ('<' + type.id + '>') || type;\n result.addError({\n name: 'not',\n argument: schemaId,\n message: \"is of prohibited type \" + schemaId,\n });\n }\n });\n return result;\n};\n\nmodule.exports = attribute;\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* Active `debug` instances.\n\t*/\n\tcreateDebug.instances = [];\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn match;\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.enabled = createDebug.enabled(namespace);\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = selectColor(namespace);\n\t\tdebug.destroy = destroy;\n\t\tdebug.extend = extend;\n\t\t// Debug.formatArgs = formatArgs;\n\t\t// debug.rawLog = rawLog;\n\n\t\t// env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\tcreateDebug.instances.push(debug);\n\n\t\treturn debug;\n\t}\n\n\tfunction destroy() {\n\t\tconst index = createDebug.instances.indexOf(this);\n\t\tif (index !== -1) {\n\t\t\tcreateDebug.instances.splice(index, 1);\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tlet i;\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n\t\tconst len = split.length;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (!split[i]) {\n\t\t\t\t// ignore empty strings\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tnamespaces = split[i].replace(/\\*/g, '.*?');\n\n\t\t\tif (namespaces[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(new RegExp('^' + namespaces + '$'));\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0; i < createDebug.instances.length; i++) {\n\t\t\tconst instance = createDebug.instances[i];\n\t\t\tinstance.enabled = createDebug.enabled(instance.namespace);\n\t\t}\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names.map(toNamespace),\n\t\t\t...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tif (name[name.length - 1] === '*') {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet i;\n\t\tlet len;\n\n\t\tfor (i = 0, len = createDebug.skips.length; i < len; i++) {\n\t\t\tif (createDebug.skips[i].test(name)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, len = createDebug.names.length; i < len; i++) {\n\t\t\tif (createDebug.names[i].test(name)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Convert regexp to namespace\n\t*\n\t* @param {RegExp} regxep\n\t* @return {String} namespace\n\t* @api private\n\t*/\n\tfunction toNamespace(regexp) {\n\t\treturn regexp.toString()\n\t\t\t.substring(2, regexp.toString().length - 2)\n\t\t\t.replace(/\\.\\*\\?$/, '*');\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","/*\n * Copyright (c) 2018 by Filestack\n * Some rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport Debug from 'debug';\nimport * as utils from '../utils';\nimport { AdapterInterface } from './interface';\nimport { FsRequestOptions, FsResponse, FsHttpMethod } from '../types';\nimport { FsRequestError, FsRequestErrorCode } from '../error';\nimport { prepareData, parseResponse, parse as parseHeaders, combineURL } from './../helpers';\n\nconst debug = Debug('fs:request:xhr');\nconst CANCEL_CLEAR = `FsCleanMemory`;\n\nexport class XhrAdapter implements AdapterInterface {\n\n request(config: FsRequestOptions) {\n // if this option is unspecified set it by default\n if (typeof config.filestackHeaders === 'undefined') {\n config.filestackHeaders = true;\n }\n\n config = prepareData(config);\n config.headers = config.headers || {};\n\n let { data, headers } = config;\n\n // if data is type of form let browser to set proper content type\n if (utils.isFormData(data)) {\n delete headers['Content-Type'];\n }\n\n let request = new XMLHttpRequest();\n\n if (config.blobResponse) {\n request.responseType = 'blob';\n }\n\n // HTTP basic authentication\n if (config.auth) {\n if (!config.auth.username || config.auth.username.length === 0 || !config.auth.password || config.auth.password.length === 0) {\n return Promise.reject(new FsRequestError(`Basic auth: username and password are required ${config.auth}`, config));\n }\n\n headers.Authorization = 'Basic ' + btoa(unescape(encodeURIComponent(`${config.auth.username}:${config.auth.password}`)));\n debug('Set request authorization to %s', config.auth.username + config.auth.password);\n }\n\n let url = config.url.trim();\n\n if (!/^http(s)?:\\/\\//.test(url)) {\n url = `https://${url}`;\n }\n\n url = combineURL(url, config.params);\n\n debug('Starting request to %s with options %O', url, config);\n\n request.open(config.method.toUpperCase(), url, true);\n\n request.timeout = config.timeout;\n\n return new Promise<FsResponse>((resolve, reject) => {\n let cancelListener;\n\n if (config.cancelToken) {\n cancelListener = (reason) => {\n /* istanbul ignore next: if request is done cancel token should not throw any error */\n if (request) {\n request.abort();\n request = null;\n }\n\n debug('Request canceled by user %s, config: %O', reason, config);\n return reject(new FsRequestError(`Request aborted. Reason: ${reason}`, config, null, FsRequestErrorCode.ABORTED));\n };\n\n config.cancelToken.once('cancel', cancelListener);\n }\n\n request.onreadystatechange = async () => {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n if (request.status === 0 && !request.responseURL) {\n return;\n }\n\n // Prepare the response\n const responseHeaders = parseHeaders(request.getAllResponseHeaders());\n const responseData = request.response;\n\n let response: FsResponse = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n };\n\n request = null;\n response = await parseResponse(response);\n\n if (500 <= response.status && response.status <= 599) {\n // server error throw\n debug('Server error(5xx) - %O', response);\n return reject(new FsRequestError(`Server error ${url}`, config, response, FsRequestErrorCode.SERVER));\n } else if (400 <= response.status && response.status <= 499) {\n debug('Request error(4xx) - %O', response);\n return reject(new FsRequestError(`Request error ${url}`, config, response, FsRequestErrorCode.REQUEST));\n }\n\n // clear cancel token to avoid memory leak\n if (config.cancelToken) {\n config.cancelToken.removeListener('cancel', cancelListener);\n cancelListener = null;\n }\n\n return resolve(response);\n };\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n /* istanbul ignore next: just to be sure that abort was not called twice */\n if (!request) {\n return;\n }\n\n request = null;\n reject(new FsRequestError('Request aborted', config, null, FsRequestErrorCode.ABORTED));\n };\n\n // Handle low level network errors\n request.onerror = function handleError(err) {\n request = null;\n debug('Request error! %O', err);\n reject(new FsRequestError('Network Error', config, null, FsRequestErrorCode.NETWORK));\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n request = null;\n debug('Request timed out. %O', config);\n reject(new FsRequestError('Request timeout', config, null, FsRequestErrorCode.TIMEOUT));\n };\n\n // Add headers to the request\n if ('setRequestHeader' in request && headers && Object.keys(headers).length) {\n for (let key in headers) {\n if (headers[key] === undefined) {\n continue;\n }\n\n debug('Set request header %s to %s', key, headers[key]);\n request.setRequestHeader(key, headers[key]);\n }\n }\n\n if (typeof config.onProgress === 'function' && [FsHttpMethod.POST, FsHttpMethod.PUT].indexOf(config.method) > -1) {\n /* istanbul ignore else: else path is just fallback to normal progress event */\n if (request.upload) {\n debug('Bind to upload progress event');\n request.upload.addEventListener('progress', config.onProgress);\n } else {\n debug('Bind to progress event');\n request.addEventListener('progress', config.onProgress);\n }\n }\n\n if (data === undefined) {\n data = null;\n }\n\n request.send(data);\n });\n }\n}\n","'use strict';\n\nconst util = require('./util');\n\nconst convertToJson = function(node, options) {\n const jObj = {};\n\n //when no child node or attr is present\n if ((!node.child || util.isEmptyObject(node.child)) && (!node.attrsMap || util.isEmptyObject(node.attrsMap))) {\n return util.isExist(node.val) ? node.val : '';\n } else {\n //otherwise create a textnode if node has some text\n if (util.isExist(node.val)) {\n if (!(typeof node.val === 'string' && (node.val === '' || node.val === options.cdataPositionChar))) {\n if(options.arrayMode === \"strict\"){\n jObj[options.textNodeName] = [ node.val ];\n }else{\n jObj[options.textNodeName] = node.val;\n }\n }\n }\n }\n\n util.merge(jObj, node.attrsMap, options.arrayMode);\n\n const keys = Object.keys(node.child);\n for (let index = 0; index < keys.length; index++) {\n var tagname = keys[index];\n if (node.child[tagname] && node.child[tagname].length > 1) {\n jObj[tagname] = [];\n for (var tag in node.child[tagname]) {\n jObj[tagname].push(convertToJson(node.child[tagname][tag], options));\n }\n } else {\n if(options.arrayMode === true){\n const result = convertToJson(node.child[tagname][0], options)\n if(typeof result === 'object')\n jObj[tagname] = [ result ];\n else\n jObj[tagname] = result;\n }else if(options.arrayMode === \"strict\"){\n jObj[tagname] = [convertToJson(node.child[tagname][0], options) ];\n }else{\n jObj[tagname] = convertToJson(node.child[tagname][0], options);\n }\n }\n }\n\n //add value\n return jObj;\n};\n\nexports.convertToJson = convertToJson;\n","'use strict';\n\nmodule.exports = function(tagname, parent, val) {\n this.tagname = tagname;\n this.parent = parent;\n this.child = {}; //child tags\n this.attrsMap = {}; //attributes map\n this.val = val; //text only\n this.addChild = function(child) {\n if (Array.isArray(this.child[child.tagname])) {\n //already presents\n this.child[child.tagname].push(child);\n } else {\n this.child[child.tagname] = [child];\n }\n };\n};\n","'use strict';\n\nconst util = require('./util');\n\nconst defaultOptions = {\n allowBooleanAttributes: false, //A tag can have attributes without any value\n};\n\nconst props = ['allowBooleanAttributes'];\n\n//const tagsPattern = new RegExp(\"<\\\\/?([\\\\w:\\\\-_\\.]+)\\\\s*\\/?>\",\"g\");\nexports.validate = function (xmlData, options) {\n options = util.buildOptions(options, defaultOptions, props);\n\n //xmlData = xmlData.replace(/(\\r\\n|\\n|\\r)/gm,\"\");//make it single line\n //xmlData = xmlData.replace(/(^\\s*<\\?xml.*?\\?>)/g,\"\");//Remove XML starting tag\n //xmlData = xmlData.replace(/(<!DOCTYPE[\\s\\w\\\"\\.\\/\\-\\:]+(\\[.*\\])*\\s*>)/g,\"\");//Remove DOCTYPE\n const tags = [];\n let tagFound = false;\n\n //indicates that the root tag has been closed (aka. depth 0 has been reached)\n let reachedRoot = false;\n\n if (xmlData[0] === '\\ufeff') {\n // check for byte order mark (BOM)\n xmlData = xmlData.substr(1);\n }\n\n for (let i = 0; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n //starting of tag\n //read until you reach to '>' avoiding any '>' in attribute value\n\n i++;\n if (xmlData[i] === '?') {\n i = readPI(xmlData, ++i);\n if (i.err) {\n return i;\n }\n } else if (xmlData[i] === '!') {\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else {\n let closingTag = false;\n if (xmlData[i] === '/') {\n //closing tag\n closingTag = true;\n i++;\n }\n //read tagname\n let tagName = '';\n for (\n ;\n i < xmlData.length &&\n xmlData[i] !== '>' &&\n xmlData[i] !== ' ' &&\n xmlData[i] !== '\\t' &&\n xmlData[i] !== '\\n' &&\n xmlData[i] !== '\\r';\n i++\n ) {\n tagName += xmlData[i];\n }\n tagName = tagName.trim();\n //console.log(tagName);\n\n if (tagName[tagName.length - 1] === '/') {\n //self closing tag without attributes\n tagName = tagName.substring(0, tagName.length - 1);\n //continue;\n i--;\n }\n if (!validateTagName(tagName)) {\n let msg;\n if(tagName.trim().length === 0) {\n msg = \"There is an unnecessary space between tag name and backward slash '</ ..'.\";\n }else{\n msg = `Tag '${tagName}' is an invalid name.`;\n }\n return getErrorObject('InvalidTag', msg, getLineNumberForPosition(xmlData, i));\n }\n\n const result = readAttributeStr(xmlData, i);\n if (result === false) {\n return getErrorObject('InvalidAttr', `Attributes for '${tagName}' have open quote.`, getLineNumberForPosition(xmlData, i));\n }\n let attrStr = result.value;\n i = result.index;\n\n if (attrStr[attrStr.length - 1] === '/') {\n //self closing tag\n attrStr = attrStr.substring(0, attrStr.length - 1);\n const isValid = validateAttributeString(attrStr, options);\n if (isValid === true) {\n tagFound = true;\n //continue; //text may presents after self closing tag\n } else {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line));\n }\n } else if (closingTag) {\n if (!result.tagClosed) {\n return getErrorObject('InvalidTag', `Closing tag '${tagName}' doesn't have proper closing.`, getLineNumberForPosition(xmlData, i));\n } else if (attrStr.trim().length > 0) {\n return getErrorObject('InvalidTag', `Closing tag '${tagName}' can't have attributes or invalid starting.`, getLineNumberForPosition(xmlData, i));\n } else {\n const otg = tags.pop();\n if (tagName !== otg) {\n return getErrorObject('InvalidTag', `Closing tag '${otg}' is expected inplace of '${tagName}'.`, getLineNumberForPosition(xmlData, i));\n }\n\n //when there are no more tags, we reached the root level.\n if(tags.length == 0)\n {\n reachedRoot = true;\n }\n }\n } else {\n const isValid = validateAttributeString(attrStr, options);\n if (isValid !== true) {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line));\n }\n\n //if the root level has been reached before ...\n if(reachedRoot === true) {\n return getErrorObject('InvalidXml', 'Multiple possible root nodes found.', getLineNumberForPosition(xmlData, i));\n } else {\n tags.push(tagName);\n }\n tagFound = true;\n }\n\n //skip tag text value\n //It may include comments and CDATA value\n for (i++; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n if (xmlData[i + 1] === '!') {\n //comment or CADATA\n i++;\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else {\n break;\n }\n } else if (xmlData[i] === '&') {\n const afterAmp = validateAmpersand(xmlData, i);\n if (afterAmp == -1)\n return getErrorObject('InvalidChar', `char '&' is not expected.`, getLineNumberForPosition(xmlData, i));\n i = afterAmp;\n }\n } //end of reading tag text value\n if (xmlData[i] === '<') {\n i--;\n }\n }\n } else {\n if (xmlData[i] === ' ' || xmlData[i] === '\\t' || xmlData[i] === '\\n' || xmlData[i] === '\\r') {\n continue;\n }\n return getErrorObject('InvalidChar', `char '${xmlData[i]}' is not expected.`, getLineNumberForPosition(xmlData, i));\n }\n }\n\n if (!tagFound) {\n return getErrorObject('InvalidXml', 'Start tag expected.', 1);\n } else if (tags.length > 0) {\n return getErrorObject('InvalidXml', `Invalid '${JSON.stringify(tags, null, 4).replace(/\\r?\\n/g, '')}' found.`, 1);\n }\n\n return true;\n};\n\n/**\n * Read Processing insstructions and skip\n * @param {*} xmlData\n * @param {*} i\n */\nfunction readPI(xmlData, i) {\n var start = i;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] == '?' || xmlData[i] == ' ') {\n //tagname\n var tagname = xmlData.substr(start, i - start);\n if (i > 5 && tagname === 'xml') {\n return getErrorObject('InvalidXml', 'XML declaration allowed only at the start of the document.', getLineNumberForPosition(xmlData, i));\n } else if (xmlData[i] == '?' && xmlData[i + 1] == '>') {\n //check if valid attribut string\n i++;\n break;\n } else {\n continue;\n }\n }\n }\n return i;\n}\n\nfunction readCommentAndCDATA(xmlData, i) {\n if (xmlData.length > i + 5 && xmlData[i + 1] === '-' && xmlData[i + 2] === '-') {\n //comment\n for (i += 3; i < xmlData.length; i++) {\n if (xmlData[i] === '-' && xmlData[i + 1] === '-' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n } else if (\n xmlData.length > i + 8 &&\n xmlData[i + 1] === 'D' &&\n xmlData[i + 2] === 'O' &&\n xmlData[i + 3] === 'C' &&\n xmlData[i + 4] === 'T' &&\n xmlData[i + 5] === 'Y' &&\n xmlData[i + 6] === 'P' &&\n xmlData[i + 7] === 'E'\n ) {\n let angleBracketsCount = 1;\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n angleBracketsCount++;\n } else if (xmlData[i] === '>') {\n angleBracketsCount--;\n if (angleBracketsCount === 0) {\n break;\n }\n }\n }\n } else if (\n xmlData.length > i + 9 &&\n xmlData[i + 1] === '[' &&\n xmlData[i + 2] === 'C' &&\n xmlData[i + 3] === 'D' &&\n xmlData[i + 4] === 'A' &&\n xmlData[i + 5] === 'T' &&\n xmlData[i + 6] === 'A' &&\n xmlData[i + 7] === '['\n ) {\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === ']' && xmlData[i + 1] === ']' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n }\n\n return i;\n}\n\nvar doubleQuote = '\"';\nvar singleQuote = \"'\";\n\n/**\n * Keep reading xmlData until '<' is found outside the attribute value.\n * @param {string} xmlData\n * @param {number} i\n */\nfunction readAttributeStr(xmlData, i) {\n let attrStr = '';\n let startChar = '';\n let tagClosed = false;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === doubleQuote || xmlData[i] === singleQuote) {\n if (startChar === '') {\n startChar = xmlData[i];\n } else if (startChar !== xmlData[i]) {\n //if vaue is enclosed with double quote then single quotes are allowed inside the value and vice versa\n continue;\n } else {\n startChar = '';\n }\n } else if (xmlData[i] === '>') {\n if (startChar === '') {\n tagClosed = true;\n break;\n }\n }\n attrStr += xmlData[i];\n }\n if (startChar !== '') {\n return false;\n }\n\n return { value: attrStr, index: i, tagClosed: tagClosed };\n}\n\n/**\n * Select all the attributes whether valid or invalid.\n */\nconst validAttrStrRegxp = new RegExp('(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*([\\'\"])(([\\\\s\\\\S])*?)\\\\5)?', 'g');\n\n//attr, =\"sd\", a=\"amit's\", a=\"sd\"b=\"saf\", ab cd=\"\"\n\nfunction validateAttributeString(attrStr, options) {\n //console.log(\"start:\"+attrStr+\":end\");\n\n //if(attrStr.trim().length === 0) return true; //empty string\n\n const matches = util.getAllMatches(attrStr, validAttrStrRegxp);\n const attrNames = {};\n\n for (let i = 0; i < matches.length; i++) {\n if (matches[i][1].length === 0) {\n //nospace before attribute name: a=\"sd\"b=\"saf\"\n return getErrorObject('InvalidAttr', `Attribute '${matches[i][2]}' has no space in starting.`, getPositionFromMatch(attrStr, matches[i][0]))\n } else if (matches[i][3] === undefined && !options.allowBooleanAttributes) {\n //independent attribute: ab\n return getErrorObject('InvalidAttr', `boolean attribute '${matches[i][2]}' is not allowed.`, getPositionFromMatch(attrStr, matches[i][0]));\n }\n /* else if(matches[i][6] === undefined){//attribute without value: ab=\n return { err: { code:\"InvalidAttr\",msg:\"attribute \" + matches[i][2] + \" has no value assigned.\"}};\n } */\n const attrName = matches[i][2];\n if (!validateAttrName(attrName)) {\n return getErrorObject('InvalidAttr', `Attribute '${attrName}' is an invalid name.`, getPositionFromMatch(attrStr, matches[i][0]));\n }\n if (!attrNames.hasOwnProperty(attrName)) {\n //check for duplicate attribute.\n attrNames[attrName] = 1;\n } else {\n return getErrorObject('InvalidAttr', `Attribute '${attrName}' is repeated.`, getPositionFromMatch(attrStr, matches[i][0]));\n }\n }\n\n return true;\n}\n\nfunction validateNumberAmpersand(xmlData, i) {\n let re = /\\d/;\n if (xmlData[i] === 'x') {\n i++;\n re = /[\\da-fA-F]/;\n }\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === ';')\n return i;\n if (!xmlData[i].match(re))\n break;\n }\n return -1;\n}\n\nfunction validateAmpersand(xmlData, i) {\n // https://www.w3.org/TR/xml/#dt-charref\n i++;\n if (xmlData[i] === ';')\n return -1;\n if (xmlData[i] === '#') {\n i++;\n return validateNumberAmpersand(xmlData, i);\n }\n let count = 0;\n for (; i < xmlData.length; i++, count++) {\n if (xmlData[i].match(/\\w/) && count < 20)\n continue;\n if (xmlData[i] === ';')\n break;\n return -1;\n }\n return i;\n}\n\nfunction getErrorObject(code, message, lineNumber) {\n return {\n err: {\n code: code,\n msg: message,\n line: lineNumber,\n },\n };\n}\n\nfunction validateAttrName(attrName) {\n return util.isName(attrName);\n}\n\n//const startsWithXML = new RegExp(\"^[Xx][Mm][Ll]\");\n// startsWith = /^([a-zA-Z]|_)[\\w.\\-_:]*/;\n\nfunction validateTagName(tagname) {\n /*if(util.doesMatch(tagname,startsWithXML)) return false;\n else*/\n //return !tagname.toLowerCase().startsWith(\"xml\") || !util.doesNotMatch(tagname, regxTagName);\n return util.isName(tagname);\n}\n\n//this function returns the line number for the character at the given index\nfunction getLineNumberForPosition(xmlData, index) {\n var lines = xmlData.substring(0, index).split(/\\r?\\n/);\n return lines.length;\n}\n\n//this function returns the position of the last character of match within attrStr\nfunction getPositionFromMatch(attrStr, match) {\n return attrStr.indexOf(match) + match.length;\n}","'use strict';\nconst char = function(a) {\n return String.fromCharCode(a);\n};\n\nconst chars = {\n nilChar: char(176),\n missingChar: char(201),\n nilPremitive: char(175),\n missingPremitive: char(200),\n\n emptyChar: char(178),\n emptyValue: char(177), //empty Premitive\n\n boundryChar: char(179),\n\n objStart: char(198),\n arrStart: char(204),\n arrayEnd: char(185),\n};\n\nconst charsArr = [\n chars.nilChar,\n chars.nilPremitive,\n chars.missingChar,\n chars.missingPremitive,\n chars.boundryChar,\n chars.emptyChar,\n chars.emptyValue,\n chars.arrayEnd,\n chars.objStart,\n chars.arrStart,\n];\n\nconst _e = function(node, e_schema, options) {\n if (typeof e_schema === 'string') {\n //premitive\n if (node && node[0] && node[0].val !== undefined) {\n return getValue(node[0].val, e_schema);\n } else {\n return getValue(node, e_schema);\n }\n } else {\n const hasValidData = hasData(node);\n if (hasValidData === true) {\n let str = '';\n if (Array.isArray(e_schema)) {\n //attributes can't be repeated. hence check in children tags only\n str += chars.arrStart;\n const itemSchema = e_schema[0];\n //var itemSchemaType = itemSchema;\n const arr_len = node.length;\n\n if (typeof itemSchema === 'string') {\n for (let arr_i = 0; arr_i < arr_len; arr_i++) {\n const r = getValue(node[arr_i].val, itemSchema);\n str = processValue(str, r);\n }\n } else {\n for (let arr_i = 0; arr_i < arr_len; arr_i++) {\n const r = _e(node[arr_i], itemSchema, options);\n str = processValue(str, r);\n }\n }\n str += chars.arrayEnd; //indicates that next item is not array item\n } else {\n //object\n str += chars.objStart;\n const keys = Object.keys(e_schema);\n if (Array.isArray(node)) {\n node = node[0];\n }\n for (let i in keys) {\n const key = keys[i];\n //a property defined in schema can be present either in attrsMap or children tags\n //options.textNodeName will not present in both maps, take it's value from val\n //options.attrNodeName will be present in attrsMap\n let r;\n if (!options.ignoreAttributes && node.attrsMap && node.attrsMap[key]) {\n r = _e(node.attrsMap[key], e_schema[key], options);\n } else if (key === options.textNodeName) {\n r = _e(node.val, e_schema[key], options);\n } else {\n r = _e(node.child[key], e_schema[key], options);\n }\n str = processValue(str, r);\n }\n }\n return str;\n } else {\n return hasValidData;\n }\n }\n};\n\nconst getValue = function(a /*, type*/) {\n switch (a) {\n case undefined:\n return chars.missingPremitive;\n case null:\n return chars.nilPremitive;\n case '':\n return chars.emptyValue;\n default:\n return a;\n }\n};\n\nconst processValue = function(str, r) {\n if (!isAppChar(r[0]) && !isAppChar(str[str.length - 1])) {\n str += chars.boundryChar;\n }\n return str + r;\n};\n\nconst isAppChar = function(ch) {\n return charsArr.indexOf(ch) !== -1;\n};\n\nfunction hasData(jObj) {\n if (jObj === undefined) {\n return chars.missingChar;\n } else if (jObj === null) {\n return chars.nilChar;\n } else if (\n jObj.child &&\n Object.keys(jObj.child).length === 0 &&\n (!jObj.attrsMap || Object.keys(jObj.attrsMap).length === 0)\n ) {\n return chars.emptyChar;\n } else {\n return true;\n }\n}\n\nconst x2j = require('./xmlstr2xmlnode');\nconst buildOptions = require('./util').buildOptions;\n\nconst convert2nimn = function(node, e_schema, options) {\n options = buildOptions(options, x2j.defaultOptions, x2j.props);\n return _e(node, e_schema, options);\n};\n\nexports.convert2nimn = convert2nimn;\n","'use strict';\n\nconst util = require('./util');\nconst buildOptions = require('./util').buildOptions;\nconst x2j = require('./xmlstr2xmlnode');\n\n//TODO: do it later\nconst convertToJsonString = function(node, options) {\n options = buildOptions(options, x2j.defaultOptions, x2j.props);\n\n options.indentBy = options.indentBy || '';\n return _cToJsonStr(node, options, 0);\n};\n\nconst _cToJsonStr = function(node, options, level) {\n let jObj = '{';\n\n //traver through all the children\n const keys = Object.keys(node.child);\n\n for (let index = 0; index < keys.length; index++) {\n var tagname = keys[index];\n if (node.child[tagname] && node.child[tagname].length > 1) {\n jObj += '\"' + tagname + '\" : [ ';\n for (var tag in node.child[tagname]) {\n jObj += _cToJsonStr(node.child[tagname][tag], options) + ' , ';\n }\n jObj = jObj.substr(0, jObj.length - 1) + ' ] '; //remove extra comma in last\n } else {\n jObj += '\"' + tagname + '\" : ' + _cToJsonStr(node.child[tagname][0], options) + ' ,';\n }\n }\n util.merge(jObj, node.attrsMap);\n //add attrsMap as new children\n if (util.isEmptyObject(jObj)) {\n return util.isExist(node.val) ? node.val : '';\n } else {\n if (util.isExist(node.val)) {\n if (!(typeof node.val === 'string' && (node.val === '' || node.val === options.cdataPositionChar))) {\n jObj += '\"' + options.textNodeName + '\" : ' + stringval(node.val);\n }\n }\n }\n //add value\n if (jObj[jObj.length - 1] === ',') {\n jObj = jObj.substr(0, jObj.length - 2);\n }\n return jObj + '}';\n};\n\nfunction stringval(v) {\n if (v === true || v === false || !isNaN(v)) {\n return v;\n } else {\n return '\"' + v + '\"';\n }\n}\n\nfunction indentate(options, level) {\n return options.indentBy.repeat(level);\n}\n\nexports.convertToJsonString = convertToJsonString;\n","'use strict';\n//parse Empty Node as self closing node\nconst buildOptions = require('./util').buildOptions;\n\nconst defaultOptions = {\n attributeNamePrefix: '@_',\n attrNodeName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n cdataTagName: false,\n cdataPositionChar: '\\\\c',\n format: false,\n indentBy: ' ',\n supressEmptyNode: false,\n tagValueProcessor: function(a) {\n return a;\n },\n attrValueProcessor: function(a) {\n return a;\n },\n};\n\nconst props = [\n 'attributeNamePrefix',\n 'attrNodeName',\n 'textNodeName',\n 'ignoreAttributes',\n 'cdataTagName',\n 'cdataPositionChar',\n 'format',\n 'indentBy',\n 'supressEmptyNode',\n 'tagValueProcessor',\n 'attrValueProcessor',\n];\n\nfunction Parser(options) {\n this.options = buildOptions(options, defaultOptions, props);\n if (this.options.ignoreAttributes || this.options.attrNodeName) {\n this.isAttribute = function(/*a*/) {\n return false;\n };\n } else {\n this.attrPrefixLen = this.options.attributeNamePrefix.length;\n this.isAttribute = isAttribute;\n }\n if (this.options.cdataTagName) {\n this.isCDATA = isCDATA;\n } else {\n this.isCDATA = function(/*a*/) {\n return false;\n };\n }\n this.replaceCDATAstr = replaceCDATAstr;\n this.replaceCDATAarr = replaceCDATAarr;\n\n if (this.options.format) {\n this.indentate = indentate;\n this.tagEndChar = '>\\n';\n this.newLine = '\\n';\n } else {\n this.indentate = function() {\n return '';\n };\n this.tagEndChar = '>';\n this.newLine = '';\n }\n\n if (this.options.supressEmptyNode) {\n this.buildTextNode = buildEmptyTextNode;\n this.buildObjNode = buildEmptyObjNode;\n } else {\n this.buildTextNode = buildTextValNode;\n this.buildObjNode = buildObjectNode;\n }\n\n this.buildTextValNode = buildTextValNode;\n this.buildObjectNode = buildObjectNode;\n}\n\nParser.prototype.parse = function(jObj) {\n return this.j2x(jObj, 0).val;\n};\n\nParser.prototype.j2x = function(jObj, level) {\n let attrStr = '';\n let val = '';\n const keys = Object.keys(jObj);\n const len = keys.length;\n for (let i = 0; i < len; i++) {\n const key = keys[i];\n if (typeof jObj[key] === 'undefined') {\n // supress undefined node\n } else if (jObj[key] === null) {\n val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (jObj[key] instanceof Date) {\n val += this.buildTextNode(jObj[key], key, '', level);\n } else if (typeof jObj[key] !== 'object') {\n //premitive type\n const attr = this.isAttribute(key);\n if (attr) {\n attrStr += ' ' + attr + '=\"' + this.options.attrValueProcessor('' + jObj[key]) + '\"';\n } else if (this.isCDATA(key)) {\n if (jObj[this.options.textNodeName]) {\n val += this.replaceCDATAstr(jObj[this.options.textNodeName], jObj[key]);\n } else {\n val += this.replaceCDATAstr('', jObj[key]);\n }\n } else {\n //tag value\n if (key === this.options.textNodeName) {\n if (jObj[this.options.cdataTagName]) {\n //value will added while processing cdata\n } else {\n val += this.options.tagValueProcessor('' + jObj[key]);\n }\n } else {\n val += this.buildTextNode(jObj[key], key, '', level);\n }\n }\n } else if (Array.isArray(jObj[key])) {\n //repeated nodes\n if (this.isCDATA(key)) {\n val += this.indentate(level);\n if (jObj[this.options.textNodeName]) {\n val += this.replaceCDATAarr(jObj[this.options.textNodeName], jObj[key]);\n } else {\n val += this.replaceCDATAarr('', jObj[key]);\n }\n } else {\n //nested nodes\n const arrLen = jObj[key].length;\n for (let j = 0; j < arrLen; j++) {\n const item = jObj[key][j];\n if (typeof item === 'undefined') {\n // supress undefined node\n } else if (item === null) {\n val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (typeof item === 'object') {\n const result = this.j2x(item, level + 1);\n val += this.buildObjNode(result.val, key, result.attrStr, level);\n } else {\n val += this.buildTextNode(item, key, '', level);\n }\n }\n }\n } else {\n //nested node\n if (this.options.attrNodeName && key === this.options.attrNodeName) {\n const Ks = Object.keys(jObj[key]);\n const L = Ks.length;\n for (let j = 0; j < L; j++) {\n attrStr += ' ' + Ks[j] + '=\"' + this.options.attrValueProcessor('' + jObj[key][Ks[j]]) + '\"';\n }\n } else {\n const result = this.j2x(jObj[key], level + 1);\n val += this.buildObjNode(result.val, key, result.attrStr, level);\n }\n }\n }\n return {attrStr: attrStr, val: val};\n};\n\nfunction replaceCDATAstr(str, cdata) {\n str = this.options.tagValueProcessor('' + str);\n if (this.options.cdataPositionChar === '' || str === '') {\n return str + '<![CDATA[' + cdata + ']]' + this.tagEndChar;\n } else {\n return str.replace(this.options.cdataPositionChar, '<![CDATA[' + cdata + ']]' + this.tagEndChar);\n }\n}\n\nfunction replaceCDATAarr(str, cdata) {\n str = this.options.tagValueProcessor('' + str);\n if (this.options.cdataPositionChar === '' || str === '') {\n return str + '<![CDATA[' + cdata.join(']]><![CDATA[') + ']]' + this.tagEndChar;\n } else {\n for (let v in cdata) {\n str = str.replace(this.options.cdataPositionChar, '<![CDATA[' + cdata[v] + ']]>');\n }\n return str + this.newLine;\n }\n}\n\nfunction buildObjectNode(val, key, attrStr, level) {\n if (attrStr && !val.includes('<')) {\n return (\n this.indentate(level) +\n '<' +\n key +\n attrStr +\n '>' +\n val +\n //+ this.newLine\n // + this.indentate(level)\n '</' +\n key +\n this.tagEndChar\n );\n } else {\n return (\n this.indentate(level) +\n '<' +\n key +\n attrStr +\n this.tagEndChar +\n val +\n //+ this.newLine\n this.indentate(level) +\n '</' +\n key +\n this.tagEndChar\n );\n }\n}\n\nfunction buildEmptyObjNode(val, key, attrStr, level) {\n if (val !== '') {\n return this.buildObjectNode(val, key, attrStr, level);\n } else {\n return this.indentate(level) + '<' + key + attrStr + '/' + this.tagEndChar;\n //+ this.newLine\n }\n}\n\nfunction buildTextValNode(val, key, attrStr, level) {\n return (\n this.indentate(level) +\n '<' +\n key +\n attrStr +\n '>' +\n this.options.tagValueProcessor(val) +\n '</' +\n key +\n this.tagEndChar\n );\n}\n\nfunction buildEmptyTextNode(val, key, attrStr, level) {\n if (val !== '') {\n return this.buildTextValNode(val, key, attrStr, level);\n } else {\n return this.indentate(level) + '<' + key + attrStr + '/' + this.tagEndChar;\n }\n}\n\nfunction indentate(level) {\n return this.options.indentBy.repeat(level);\n}\n\nfunction isAttribute(name /*, options*/) {\n if (name.startsWith(this.options.attributeNamePrefix)) {\n return name.substr(this.attrPrefixLen);\n } else {\n return false;\n }\n}\n\nfunction isCDATA(name) {\n return name === this.options.cdataTagName;\n}\n\n//formatting\n//indentation\n//\\n after each closing or self closing tag\n\nmodule.exports = Parser;\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","module.exports = function(originalModule) {\n\tif (!originalModule.webpackPolyfill) {\n\t\tvar module = Object.create(originalModule);\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"exports\", {\n\t\t\tenumerable: true\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","import { Session as SessionInterface, SessionContext, SessionStatus } from '@sentry/types';\nimport { dropUndefinedKeys, uuid4 } from '@sentry/utils';\n\n/**\n * @inheritdoc\n */\nexport class Session implements SessionInterface {\n public userAgent?: string;\n public errors: number = 0;\n public release?: string;\n public sid: string = uuid4();\n public did?: string;\n public timestamp: number = Date.now();\n public started: number = Date.now();\n public duration: number = 0;\n public status: SessionStatus = SessionStatus.Ok;\n public environment?: string;\n public ipAddress?: string;\n public init: boolean = true;\n\n constructor(context?: Omit<SessionContext, 'started' | 'status'>) {\n if (context) {\n this.update(context);\n }\n }\n\n /** JSDoc */\n // eslint-disable-next-line complexity\n update(context: SessionContext = {}): void {\n if (context.user) {\n if (context.user.ip_address) {\n this.ipAddress = context.user.ip_address;\n }\n\n if (!context.did) {\n this.did = context.user.id || context.user.email || context.user.username;\n }\n }\n\n this.timestamp = context.timestamp || Date.now();\n\n if (context.sid) {\n // Good enough uuid validation. — Kamil\n this.sid = context.sid.length === 32 ? context.sid : uuid4();\n }\n if (context.init !== undefined) {\n this.init = context.init;\n }\n if (context.did) {\n this.did = `${context.did}`;\n }\n if (typeof context.started === 'number') {\n this.started = context.started;\n }\n if (typeof context.duration === 'number') {\n this.duration = context.duration;\n } else {\n this.duration = this.timestamp - this.started;\n }\n if (context.release) {\n this.release = context.release;\n }\n if (context.environment) {\n this.environment = context.environment;\n }\n if (context.ipAddress) {\n this.ipAddress = context.ipAddress;\n }\n if (context.userAgent) {\n this.userAgent = context.userAgent;\n }\n if (typeof context.errors === 'number') {\n this.errors = context.errors;\n }\n if (context.status) {\n this.status = context.status;\n }\n }\n\n /** JSDoc */\n close(status?: Exclude<SessionStatus, SessionStatus.Ok>): void {\n if (status) {\n this.update({ status });\n } else if (this.status === SessionStatus.Ok) {\n this.update({ status: SessionStatus.Exited });\n } else {\n this.update();\n }\n }\n\n /** JSDoc */\n toJSON(): {\n init: boolean;\n sid: string;\n did?: string;\n timestamp: string;\n started: string;\n duration: number;\n status: SessionStatus;\n errors: number;\n attrs?: {\n release?: string;\n environment?: string;\n user_agent?: string;\n ip_address?: string;\n };\n } {\n return dropUndefinedKeys({\n sid: `${this.sid}`,\n init: this.init,\n started: new Date(this.started).toISOString(),\n timestamp: new Date(this.timestamp).toISOString(),\n status: this.status,\n errors: this.errors,\n did: typeof this.did === 'number' || typeof this.did === 'string' ? `${this.did}` : undefined,\n duration: this.duration,\n attrs: dropUndefinedKeys({\n release: this.release,\n environment: this.environment,\n ip_address: this.ipAddress,\n user_agent: this.userAgent,\n }),\n });\n }\n}\n"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","const MODULE_PREFIX = 'fs-loader-';\nconst globalHolder = {};\nconst initializeGlobalNamespace = () => {\n let holder;\n // if there is no window obj use nodejs global lib variable\n if (typeof window === 'undefined') {\n holder = globalHolder;\n }\n else {\n holder = window;\n }\n // @ts-ignore\n let namespace = holder.filestackInternals;\n if (!namespace) {\n namespace = {\n modules: {},\n };\n holder.filestackInternals = namespace;\n }\n if (!namespace.modules) {\n namespace.modules = {};\n }\n return namespace;\n};\nconst filestackInternals = initializeGlobalNamespace();\nconst modules = filestackInternals && filestackInternals.modules;\n/**\n * Remove listeners (browser compatible)\n *\n * @param node\n * @param func\n * @param name\n */\nconst removeListener = (node, func, name) => {\n if (node.detachEvent) {\n node.detachEvent('onreadystatechange', func);\n }\n else {\n node.removeEventListener(name, func, false);\n }\n};\n/**\n * Load multiple modules\n *\n * @param {*} modules\n */\nexport const loadModules = (modulesList) => Promise.all(modulesList.map(({ id, url }) => loadModule(id, url))).then((res) => {\n const toReturn = {};\n res.forEach((mod, idx) => {\n const el = modulesList[idx];\n toReturn[el.id] = mod;\n });\n return toReturn;\n});\n/**\n * Load single module from url with given id\n *\n * @param {*} id - module id\n * @param {*} url\n */\nexport const loadModule = (id, url) => {\n if (typeof window === 'undefined') {\n return Promise.reject(new Error('Load module is working only on browser env'));\n }\n if (!id) {\n throw new Error('Module id is required');\n }\n id = MODULE_PREFIX + id;\n let moduleDefinition = modules[id];\n if (!moduleDefinition) {\n modules[id] = {};\n moduleDefinition = modules[id];\n }\n if (moduleDefinition.instance) {\n return Promise.resolve(moduleDefinition.instance);\n }\n if (moduleDefinition.promise) {\n return moduleDefinition.promise;\n }\n return moduleDefinition.promise = new Promise((resolve, reject) => {\n const readyStateChange = (evt) => {\n if (evt.type === 'load' || (/^(complete|loaded)$/.test((evt.currentTarget || evt.srcElement).readyState))) {\n const node = evt.currentTarget || evt.srcElement;\n removeListener(node, readyStateChange, 'load');\n removeListener(node, reject, 'error');\n // slow dow checking if module is loaded to ensure that script that register module is called\n setTimeout(() => resolve(modules[id] ? modules[id].instance : undefined), 10);\n }\n };\n const script = document.createElement('script');\n script.id = id;\n // @ts-ignore fix for IE\n if (script.attachEvent && !(script.attachEvent.toString && script.attachEvent.toString().indexOf('[native code') < 0)) {\n // @ts-ignore\n script.attachEvent('onreadystatechange', readyStateChange);\n }\n else {\n script.addEventListener('load', readyStateChange, false);\n script.addEventListener('onerror', reject, false);\n }\n script.setAttribute('crossorigin', 'anonymous');\n script.setAttribute('charset', 'utf-8');\n script.setAttribute('async', 'true');\n script.src = url;\n document.body.appendChild(script);\n });\n};\n/**\n * Register that module is ready\n *\n * @param {string} id\n * @param {any} instance\n * @param {any} metadata - additional module metadata like version\n */\nexport const registerModule = (id, instance, metadata) => {\n // loader not working on nodejs envs\n if (typeof window === 'undefined') {\n return;\n }\n if (!id) {\n throw new Error('Module id is required');\n }\n if (!modules) {\n throw new Error('Loader is not initialized');\n }\n id = MODULE_PREFIX + id;\n if (modules[id]) {\n modules[id] = { instance, metadata };\n }\n};\n/**\n * Load external css from given url\n *\n * @param {*} url\n */\nexport const loadCss = (url) => {\n const alreadyAddedThisTag = document.querySelector(`link[href=\"${url}\"]`);\n if (alreadyAddedThisTag !== null) {\n return Promise.resolve();\n }\n return new Promise((resolve) => {\n const head = document.getElementsByTagName('head')[0];\n const link = document.createElement('link');\n const loaded = () => {\n resolve();\n link.removeEventListener('load', loaded);\n };\n link.rel = 'stylesheet';\n link.href = url;\n link.addEventListener('load', loaded);\n head.appendChild(link);\n });\n};\n/**\n * Enum just for unify filestack module names\n */\nexport var FILESTACK_MODULES;\n(function (FILESTACK_MODULES) {\n FILESTACK_MODULES[\"FILESTACK_SDK\"] = \"filestack-sdk\";\n FILESTACK_MODULES[\"TRANSFORMS_UI\"] = \"transforms-ui\";\n FILESTACK_MODULES[\"PICKER\"] = \"picker\";\n})(FILESTACK_MODULES || (FILESTACK_MODULES = {}));\n;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxhQUFhLEdBQUcsWUFBWSxDQUFDO0FBQ25DLE1BQU0sWUFBWSxHQUFRLEVBQUUsQ0FBQztBQWU3QixNQUFNLHlCQUF5QixHQUFHLEdBQUcsRUFBRTtJQUNyQyxJQUFJLE1BQVUsQ0FBQztJQUVmLDJEQUEyRDtJQUMzRCxJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsRUFBRTtRQUNqQyxNQUFNLEdBQUcsWUFBWSxDQUFDO0tBQ3ZCO1NBQU07UUFDTCxNQUFNLEdBQUcsTUFBTSxDQUFBO0tBQ2hCO0lBRUQsYUFBYTtJQUNiLElBQUksU0FBUyxHQUFjLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQztJQUVyRCxJQUFJLENBQUMsU0FBUyxFQUFFO1FBQ2QsU0FBUyxHQUFHO1lBQ1YsT0FBTyxFQUFFLEVBQUU7U0FDWixDQUFDO1FBRUYsTUFBTSxDQUFDLGtCQUFrQixHQUFHLFNBQVMsQ0FBQztLQUN2QztJQUVELElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFO1FBQ3RCLFNBQVMsQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO0tBQ3hCO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxrQkFBa0IsR0FBRyx5QkFBeUIsRUFBRSxDQUFDO0FBQ3ZELE1BQU0sT0FBTyxHQUFHLGtCQUFrQixJQUFJLGtCQUFrQixDQUFDLE9BQU8sQ0FBQztBQUVqRTs7Ozs7O0dBTUc7QUFDSCxNQUFNLGNBQWMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFJLEVBQUU7SUFDNUMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1FBQ3BCLElBQUksQ0FBQyxXQUFXLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDOUM7U0FBTTtRQUNMLElBQUksQ0FBQyxtQkFBbUIs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QUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pCLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLENBQU4sSUFBWSxpQkFJWDtBQUpELFdBQVksaUJBQWlCO0lBQzNCLG9EQUErQixDQUFBO0lBQy9CLG9EQUErQixDQUFBO0lBQy9CLHNDQUFpQixDQUFBO0FBQ25CLENBQUMsRUFKVyxpQkFBaUIsS0FBakIsaUJBQWlCLFFBSTVCO0FBQUEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IE1PRFVMRV9QUkVGSVggPSAnZnMtbG9hZGVyLSc7XG5jb25zdCBnbG9iYWxIb2xkZXI6IGFueSA9IHt9O1xuXG5leHBvcnQgdHlwZSBNb2R1bGVEZWYgPSB7XG4gIHByb21pc2U/OiBQcm9taXNlPGFueT5cbiAgcmVzb2x2ZVByb21pc2U/OiBhbnk7XG4gIGluc3RhbmNlPzogYW55O1xuICBtZXRhZGF0YT86IGFueTtcbn1cblxuZXhwb3J0IHR5cGUgTmFtZXNwYWNlID0ge1xuICAgIG1vZHVsZXM6IHtcbiAgICAgW2tleTogc3RyaW5nXTogTW9kdWxlRGVmXG4gICAgfVxufTtcblxuY29uc3QgaW5pdGlhbGl6ZUdsb2JhbE5hbWVzcGFjZSA9ICgpID0+IHtcbiAgbGV0IGhvbGRlcjphbnk7XG5cbiAgLy8gaWYgdGhlcmUgaXMgbm8gd2luZG93IG9iaiB1c2Ugbm9kZWpzIGdsb2JhbCBsaWIgdmFyaWFibGVcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgaG9sZGVyID0gZ2xvYmFsSG9sZGVyO1xuICB9IGVsc2Uge1xuICAgIGhvbGRlciA9IHdpbmRvd1xuICB9XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBsZXQgbmFtZXNwYWNlOiBOYW1lc3BhY2UgPSBob2xkZXIuZmlsZXN0YWNrSW50ZXJuYWxzO1xuXG4gIGlmICghbmFtZXNwYWNlKSB7XG4gICAgbmFtZXNwYWNlID0ge1xuICAgICAgbW9kdWxlczoge30sXG4gICAgfTtcblxuICAgIGhvbGRlci5maWxlc3RhY2tJbnRlcm5hbHMgPSBuYW1lc3BhY2U7XG4gIH1cblxuICBpZiAoIW5hbWVzcGFjZS5tb2R1bGVzKSB7XG4gICAgbmFtZXNwYWNlLm1vZHVsZXMgPSB7fTtcbiAgfVxuICBcbiAgcmV0dXJuIG5hbWVzcGFjZTtcbn07XG5cbmNvbnN0IGZpbGVzdGFja0ludGVybmFscyA9IGluaXRpYWxpemVHbG9iYWxOYW1lc3BhY2UoKTtcbmNvbnN0IG1vZHVsZXMgPSBmaWxlc3RhY2tJbnRlcm5hbHMgJiYgZmlsZXN0YWNrSW50ZXJuYWxzLm1vZHVsZXM7XG5cbi8qKlxuICogUmVtb3ZlIGxpc3RlbmVycyAoYnJvd3NlciBjb21wYXRpYmxlKVxuICogXG4gKiBAcGFyYW0gbm9kZSBcbiAqIEBwYXJhbSBmdW5jIFxuICogQHBhcmFtIG5hbWUgXG4gKi9cbmNvbnN0IHJlbW92ZUxpc3RlbmVyID0gKG5vZGUsIGZ1bmMsIG5hbWUsICkgPT4ge1xuICBpZiAobm9kZS5kZXRhY2hFdmVudCkge1xuICAgIG5vZGUuZGV0YWNoRXZlbnQoJ29ucmVhZHlzdGF0ZWNoYW5nZScsIGZ1bmMpO1xuICB9IGVsc2Uge1xuICAgIG5vZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihuYW1lLCBmdW5jLCBmYWxzZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBMb2FkIG11bHRpcGxlIG1vZHVsZXNcbiAqIFxuICogQHBhcmFtIHsqfSBtb2R1bGVzIFxuICovXG5leHBvcnQgY29uc3QgbG9hZE1vZHVsZXMgPSAobW9kdWxlc0xpc3QpID0+IFByb21pc2UuYWxsKG1vZHVsZXNMaXN0Lm1hcCgoeyBpZCwgdXJsIH0pID0+IGxvYWRNb2R1bGUoaWQsIHVybCkpKS50aGVuKChyZXMpID0+IHtcbiAgY29uc3QgdG9SZXR1cm4gPSB7fTtcblxuICByZXMuZm9yRWFjaCgobW9kLCBpZHgpID0+IHtcbiAgICBjb25zdCBlbCA9IG1vZHVsZXNMaXN0W2lkeF07XG4gICAgdG9SZXR1cm5bZWwuaWRdID0gbW9kO1xuICB9KTtcblxuICByZXR1cm4gdG9SZXR1cm47XG59KTtcblxuLyoqXG4gKiBMb2FkIHNpbmdsZSBtb2R1bGUgZnJvbSB1cmwgd2l0aCBnaXZlbiBpZFxuICpcbiAqIEBwYXJhbSB7Kn0gaWQgLSBtb2R1bGUgaWQgXG4gKiBAcGFyYW0geyp9IHVybFxuICovXG5leHBvcnQgY29uc3QgbG9hZE1vZHVsZSA9IChpZDogc3RyaW5nLCB1cmw6IHN0cmluZykgPT4ge1xuICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCdMb2FkIG1vZHVsZSBpcyB3b3JraW5nIG9ubHkgb24gYnJvd3NlciBlbnYnKSk7XG4gIH1cblxuICBpZiAoIWlkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNb2R1bGUgaWQgaXMgcmVxdWlyZWQnKVxuICB9XG5cbiAgaWQgPSAgTU9EVUxFX1BSRUZJWCArIGlkO1xuICBsZXQgbW9kdWxlRGVmaW5pdGlvbiA9IG1vZHVsZXNbaWRdO1xuXG4gIGlmICghbW9kdWxlRGVmaW5pdGlvbikge1xuICAgIG1vZHVsZXNbaWRdID0ge307XG4gICAgbW9kdWxlRGVmaW5pdGlvbiA9IG1vZHVsZXNbaWRdO1xuICB9XG5cbiAgaWYgKG1vZHVsZURlZmluaXRpb24uaW5zdGFuY2UpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG1vZHVsZURlZmluaXRpb24uaW5zdGFuY2UpO1xuICB9XG5cbiAgaWYgKG1vZHVsZURlZmluaXRpb24ucHJvbWlzZSkge1xuICAgIHJldHVybiBtb2R1bGVEZWZpbml0aW9uLnByb21pc2U7XG4gIH1cblxuICByZXR1cm4gbW9kdWxlRGVmaW5pdGlvbi5wcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHJlYWR5U3RhdGVDaGFuZ2UgPSAoZXZ0OiBhbnkpID0+IHtcbiAgICAgIGlmIChldnQudHlwZSA9PT0gJ2xvYWQnIHx8ICgvXihjb21wbGV0ZXxsb2FkZWQpJC8udGVzdCgoZXZ0LmN1cnJlbnRUYXJnZXQgfHwgZXZ0LnNyY0VsZW1lbnQpLnJlYWR5U3RhdGUpKSkge1xuICAgICAgICBjb25zdCBub2RlID0gIGV2dC5jdXJyZW50VGFyZ2V0IHx8IGV2dC5zcmNFbGVtZW50O1xuXG4gICAgICAgIHJlbW92ZUxpc3RlbmVyKG5vZGUsIHJlYWR5U3RhdGVDaGFuZ2UsICdsb2FkJyk7XG4gICAgICAgIHJlbW92ZUxpc3RlbmVyKG5vZGUsIHJlamVjdCwgJ2Vycm9yJyk7XG5cbiAgICAgICAgLy8gc2xvdyBkb3cgY2hlY2tpbmcgaWYgbW9kdWxlIGlzIGxvYWRlZCB0byBlbnN1cmUgdGhhdCBzY3JpcHQgdGhhdCAgcmVnaXN0ZXIgbW9kdWxlIGlzIGNhbGxlZFxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHJlc29sdmUobW9kdWxlc1tpZF0gPyBtb2R1bGVzW2lkXS5pbnN0YW5jZSA6IHVuZGVmaW5lZCksIDEwKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgICBcbiAgICBzY3JpcHQuaWQgPSBpZDtcblxuICAgIC8vIEB0cy1pZ25vcmUgZml4IGZvciBJRVxuICAgIGlmIChzY3JpcHQuYXR0YWNoRXZlbnQgJiYgIShzY3JpcHQuYXR0YWNoRXZlbnQudG9TdHJpbmcgJiYgc2NyaXB0LmF0dGFjaEV2ZW50LnRvU3RyaW5nKCkuaW5kZXhPZignW25hdGl2ZSBjb2RlJykgPCAwKSkge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgc2NyaXB0LmF0dGFjaEV2ZW50KCdvbnJlYWR5c3RhdGVjaGFuZ2UnLCByZWFkeVN0YXRlQ2hhbmdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2NyaXB0LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCByZWFkeVN0YXRlQ2hhbmdlLCBmYWxzZSk7XG4gICAgICBzY3JpcHQuYWRkRXZlbnRMaXN0ZW5lcignb25lcnJvcicsIHJlamVjdCwgZmFsc2UpO1xuICAgIH1cblxuICAgIHNjcmlwdC5zZXRBdHRyaWJ1dGUoJ2Nyb3Nzb3JpZ2luJywgJ2Fub255bW91cycpO1xuICAgIHNjcmlwdC5zZXRBdHRyaWJ1dGUoJ2NoYXJzZXQnLCAndXRmLTgnKTtcbiAgICBzY3JpcHQuc2V0QXR0cmlidXRlKCdhc3luYycsICd0cnVlJyk7XG5cbiAgICBzY3JpcHQuc3JjID0gdXJsO1xuXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzY3JpcHQpO1xuICB9KTtcbn07XG5cbi8qKlxuICogUmVnaXN0ZXIgdGhhdCBtb2R1bGUgaXMgcmVhZHlcbiAqIFxuICogQHBhcmFtIHtzdHJpbmd9IGlkIFxuICogQHBhcmFtIHthbnl9IGluc3RhbmNlIFxuICogQHBhcmFtIHthbnl9IG1ldGFkYXRhIC0gYWRkaXRpb25hbCBtb2R1bGUgbWV0YWRhdGEgbGlrZSB2ZXJzaW9uXG4gKi9cbmV4cG9ydCBjb25zdCByZWdpc3Rlck1vZHVsZSA9IChpZDogc3RyaW5nLCBpbnN0YW5jZTogYW55LCBtZXRhZGF0YT86IGFueSkgPT4ge1xuICAvLyBsb2FkZXIgbm90IHdvcmtpbmcgb24gbm9kZWpzIGVudnNcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKCFpZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignTW9kdWxlIGlkIGlzIHJlcXVpcmVkJylcbiAgfVxuXG4gIGlmICghbW9kdWxlcykge1xuICAgIHRocm93IG5ldyBFcnJvcignTG9hZGVyIGlzIG5vdCBpbml0aWFsaXplZCcpXG4gIH1cblxuICBpZCA9IE1PRFVMRV9QUkVGSVggKyBpZDtcblxuICBpZiAobW9kdWxlc1tpZF0pIHtcbiAgICBtb2R1bGVzW2lkXSA9IHsgaW5zdGFuY2UsIG1ldGFkYXRhIH1cbiAgfVxufTtcblxuLyoqXG4gKiBMb2FkIGV4dGVybmFsIGNzcyBmcm9tIGdpdmVuIHVybFxuICogXG4gKiBAcGFyYW0geyp9IHVybCBcbiAqL1xuZXhwb3J0IGNvbnN0IGxvYWRDc3MgPSAodXJsKSA9PiB7XG4gIGNvbnN0IGFscmVhZHlBZGRlZFRoaXNUYWcgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBsaW5rW2hyZWY9XCIke3VybH1cIl1gKTtcbiAgaWYgKGFscmVhZHlBZGRlZFRoaXNUYWcgIT09IG51bGwpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gIH1cblxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICBjb25zdCBoZWFkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXTtcbiAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGluaycpO1xuXG4gICAgY29uc3QgbG9hZGVkID0gKCkgPT4ge1xuICAgICAgcmVzb2x2ZSgpO1xuICAgICAgbGluay5yZW1vdmVFdmVudExpc3RlbmVyKCdsb2FkJywgbG9hZGVkKTtcbiAgICB9O1xuXG4gICAgbGluay5yZWwgPSAnc3R5bGVzaGVldCc7XG4gICAgbGluay5ocmVmID0gdXJsO1xuICAgIGxpbmsuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRlZCk7XG4gICAgaGVhZC5hcHBlbmRDaGlsZChsaW5rKTtcbiAgfSk7XG59O1xuXG4vKipcbiAqIEVudW0ganVzdCBmb3IgdW5pZnkgZmlsZXN0YWNrIG1vZHVsZSBuYW1lc1xuICovXG5leHBvcnQgZW51bSBGSUxFU1RBQ0tfTU9EVUxFUyB7XG4gIEZJTEVTVEFDS19TREsgPSAnZmlsZXN0YWNrLXNkaycsXG4gIFRSQU5TRk9STVNfVUkgPSAndHJhbnNmb3Jtcy11aScsXG4gIFBJQ0tFUiA9ICdwaWNrZXInLFxufTtcbiJdfQ==","/*\n * Copyright (c) 2018 by Filestack.\n * Some rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport var getSecurity = function (policyOptions, appSecret) {\n throw new Error('getSecurity is only supported in nodejs');\n};\nexport var validateWebhookSignature = function (secret, rawBody, toCompare) {\n throw new Error('validateWebhookSignature is only supported in nodejs');\n};\n\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvYXBpL3NlY3VyaXR5LmJyb3dzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBS0gsTUFBTSxDQUFDLElBQU0sV0FBVyxHQUFHLFVBQUMsYUFBOEIsRUFBRSxTQUFpQjtJQUMzRSxNQUFNLElBQUksS0FBSyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7QUFDN0QsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLElBQU0sd0JBQXdCLEdBQUcsVUFBQyxNQUFjLEVBQUUsT0FBZSxFQUFFLFNBQWlDO0lBQ3pHLE1BQU0sSUFBSSxLQUFLLENBQUMsc0RBQXNELENBQUMsQ0FBQztBQUMxRSxDQUFDLENBQUMiLCJmaWxlIjoibGliL2FwaS9zZWN1cml0eS5icm93c2VyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOCBieSBGaWxlc3RhY2suXG4gKiBTb21lIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgU2VjdXJpdHkgfSBmcm9tICcuLy4uL2NsaWVudCc7XG5pbXBvcnQgeyBTZWN1cml0eU9wdGlvbnMsIFdlYmhvb2tWYWxpZGF0ZVBheWxvYWQgfSBmcm9tICcuL3NlY3VyaXR5JztcblxuZXhwb3J0IGNvbnN0IGdldFNlY3VyaXR5ID0gKHBvbGljeU9wdGlvbnM6IFNlY3VyaXR5T3B0aW9ucywgYXBwU2VjcmV0OiBzdHJpbmcpOiBTZWN1cml0eSA9PiB7XG4gIHRocm93IG5ldyBFcnJvcignZ2V0U2VjdXJpdHkgaXMgb25seSBzdXBwb3J0ZWQgaW4gbm9kZWpzJyk7XG59O1xuXG5leHBvcnQgY29uc3QgdmFsaWRhdGVXZWJob29rU2lnbmF0dXJlID0gKHNlY3JldDogc3RyaW5nLCByYXdCb2R5OiBzdHJpbmcsIHRvQ29tcGFyZTogV2ViaG9va1ZhbGlkYXRlUGF5bG9hZCkgPT4ge1xuICB0aHJvdyBuZXcgRXJyb3IoJ3ZhbGlkYXRlV2ViaG9va1NpZ25hdHVyZSBpcyBvbmx5IHN1cHBvcnRlZCBpbiBub2RlanMnKTtcbn07XG4iXX0=\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { consoleSandbox, getGlobalObject } from './misc';\n\n// TODO: Implement different loggers for different environments\nconst global = getGlobalObject<Window | NodeJS.Global>();\n\n/** Prefix for logging strings */\nconst PREFIX = 'Sentry Logger ';\n\n/** JSDoc */\nclass Logger {\n /** JSDoc */\n private _enabled: boolean;\n\n /** JSDoc */\n public constructor() {\n this._enabled = false;\n }\n\n /** JSDoc */\n public disable(): void {\n this._enabled = false;\n }\n\n /** JSDoc */\n public enable(): void {\n this._enabled = true;\n }\n\n /** JSDoc */\n public log(...args: any[]): void {\n if (!this._enabled) {\n return;\n }\n consoleSandbox(() => {\n global.console.log(`${PREFIX}[Log]: ${args.join(' ')}`);\n });\n }\n\n /** JSDoc */\n public warn(...args: any[]): void {\n if (!this._enabled) {\n return;\n }\n consoleSandbox(() => {\n global.console.warn(`${PREFIX}[Warn]: ${args.join(' ')}`);\n });\n }\n\n /** JSDoc */\n public error(...args: any[]): void {\n if (!this._enabled) {\n return;\n }\n consoleSandbox(() => {\n global.console.error(`${PREFIX}[Error]: ${args.join(' ')}`);\n });\n }\n}\n\n// Ensure we only have a single logger instance, even if multiple versions of @sentry/utils are being used\nglobal.__SENTRY__ = global.__SENTRY__ || {};\nconst logger = (global.__SENTRY__.logger as Logger) || (global.__SENTRY__.logger = new Logger());\n\nexport { logger };\n","/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable @typescript-eslint/typedef */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isThenable } from './is';\n\n/** SyncPromise internal states */\nenum States {\n /** Pending */\n PENDING = 'PENDING',\n /** Resolved / OK */\n RESOLVED = 'RESOLVED',\n /** Rejected / Error */\n REJECTED = 'REJECTED',\n}\n\n/**\n * Thenable class that behaves like a Promise and follows it's interface\n * but is not async internally\n */\nclass SyncPromise<T> implements PromiseLike<T> {\n private _state: States = States.PENDING;\n private _handlers: Array<{\n done: boolean;\n onfulfilled?: ((value: T) => T | PromiseLike<T>) | null;\n onrejected?: ((reason: any) => any) | null;\n }> = [];\n private _value: any;\n\n public constructor(\n executor: (resolve: (value?: T | PromiseLike<T> | null) => void, reject: (reason?: any) => void) => void,\n ) {\n try {\n executor(this._resolve, this._reject);\n } catch (e) {\n this._reject(e);\n }\n }\n\n /** JSDoc */\n public static resolve<T>(value: T | PromiseLike<T>): PromiseLike<T> {\n return new SyncPromise(resolve => {\n resolve(value);\n });\n }\n\n /** JSDoc */\n public static reject<T = never>(reason?: any): PromiseLike<T> {\n return new SyncPromise((_, reject) => {\n reject(reason);\n });\n }\n\n /** JSDoc */\n public static all<U = any>(collection: Array<U | PromiseLike<U>>): PromiseLike<U[]> {\n return new SyncPromise<U[]>((resolve, reject) => {\n if (!Array.isArray(collection)) {\n reject(new TypeError(`Promise.all requires an array as input.`));\n return;\n }\n\n if (collection.length === 0) {\n resolve([]);\n return;\n }\n\n let counter = collection.length;\n const resolvedCollection: U[] = [];\n\n collection.forEach((item, index) => {\n SyncPromise.resolve(item)\n .then(value => {\n resolvedCollection[index] = value;\n counter -= 1;\n\n if (counter !== 0) {\n return;\n }\n resolve(resolvedCollection);\n })\n .then(null, reject);\n });\n });\n }\n\n /** JSDoc */\n public then<TResult1 = T, TResult2 = never>(\n onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null,\n onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null,\n ): PromiseLike<TResult1 | TResult2> {\n return new SyncPromise((resolve, reject) => {\n this._attachHandler({\n done: false,\n onfulfilled: result => {\n if (!onfulfilled) {\n // TODO: ¯\\_(ツ)_/¯\n // TODO: FIXME\n resolve(result as any);\n return;\n }\n try {\n resolve(onfulfilled(result));\n return;\n } catch (e) {\n reject(e);\n return;\n }\n },\n onrejected: reason => {\n if (!onrejected) {\n reject(reason);\n return;\n }\n try {\n resolve(onrejected(reason));\n return;\n } catch (e) {\n reject(e);\n return;\n }\n },\n });\n });\n }\n\n /** JSDoc */\n public catch<TResult = never>(\n onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null,\n ): PromiseLike<T | TResult> {\n return this.then(val => val, onrejected);\n }\n\n /** JSDoc */\n public finally<TResult>(onfinally?: (() => void) | null): PromiseLike<TResult> {\n return new SyncPromise<TResult>((resolve, reject) => {\n let val: TResult | any;\n let isRejected: boolean;\n\n return this.then(\n value => {\n isRejected = false;\n val = value;\n if (onfinally) {\n onfinally();\n }\n },\n reason => {\n isRejected = true;\n val = reason;\n if (onfinally) {\n onfinally();\n }\n },\n ).then(() => {\n if (isRejected) {\n reject(val);\n return;\n }\n\n resolve((val as unknown) as any);\n });\n });\n }\n\n /** JSDoc */\n public toString(): string {\n return '[object SyncPromise]';\n }\n\n /** JSDoc */\n private readonly _resolve = (value?: T | PromiseLike<T> | null) => {\n this._setResult(States.RESOLVED, value);\n };\n\n /** JSDoc */\n private readonly _reject = (reason?: any) => {\n this._setResult(States.REJECTED, reason);\n };\n\n /** JSDoc */\n private readonly _setResult = (state: States, value?: T | PromiseLike<T> | any) => {\n if (this._state !== States.PENDING) {\n return;\n }\n\n if (isThenable(value)) {\n (value as PromiseLike<T>).then(this._resolve, this._reject);\n return;\n }\n\n this._state = state;\n this._value = value;\n\n this._executeHandlers();\n };\n\n // TODO: FIXME\n /** JSDoc */\n private readonly _attachHandler = (handler: {\n /** JSDoc */\n done: boolean;\n /** JSDoc */\n onfulfilled?(value: T): any;\n /** JSDoc */\n onrejected?(reason: any): any;\n }) => {\n this._handlers = this._handlers.concat(handler);\n this._executeHandlers();\n };\n\n /** JSDoc */\n private readonly _executeHandlers = () => {\n if (this._state === States.PENDING) {\n return;\n }\n\n const cachedHandlers = this._handlers.slice();\n this._handlers = [];\n\n cachedHandlers.forEach(handler => {\n if (handler.done) {\n return;\n }\n\n if (this._state === States.RESOLVED) {\n if (handler.onfulfilled) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n handler.onfulfilled((this._value as unknown) as any);\n }\n }\n\n if (this._state === States.REJECTED) {\n if (handler.onrejected) {\n handler.onrejected(this._value);\n }\n }\n\n handler.done = true;\n });\n };\n}\n\nexport { SyncPromise };\n","/* eslint-disable max-lines */\nimport {\n Breadcrumb,\n CaptureContext,\n Context,\n Contexts,\n Event,\n EventHint,\n EventProcessor,\n Extra,\n Extras,\n Primitive,\n Scope as ScopeInterface,\n ScopeContext,\n Severity,\n Span,\n Transaction,\n User,\n} from '@sentry/types';\nimport { dateTimestampInSeconds, getGlobalObject, isPlainObject, isThenable, SyncPromise } from '@sentry/utils';\n\nimport { Session } from './session';\n\n/**\n * Holds additional event information. {@link Scope.applyToEvent} will be\n * called by the client before an event will be sent.\n */\nexport class Scope implements ScopeInterface {\n /** Flag if notifiying is happening. */\n protected _notifyingListeners: boolean = false;\n\n /** Callback for client to receive scope changes. */\n protected _scopeListeners: Array<(scope: Scope) => void> = [];\n\n /** Callback list that will be called after {@link applyToEvent}. */\n protected _eventProcessors: EventProcessor[] = [];\n\n /** Array of breadcrumbs. */\n protected _breadcrumbs: Breadcrumb[] = [];\n\n /** User */\n protected _user: User = {};\n\n /** Tags */\n protected _tags: { [key: string]: Primitive } = {};\n\n /** Extra */\n protected _extra: Extras = {};\n\n /** Contexts */\n protected _contexts: Contexts = {};\n\n /** Fingerprint */\n protected _fingerprint?: string[];\n\n /** Severity */\n protected _level?: Severity;\n\n /** Transaction Name */\n protected _transactionName?: string;\n\n /** Span */\n protected _span?: Span;\n\n /** Session */\n protected _session?: Session;\n\n /**\n * Inherit values from the parent scope.\n * @param scope to clone.\n */\n public static clone(scope?: Scope): Scope {\n const newScope = new Scope();\n if (scope) {\n newScope._breadcrumbs = [...scope._breadcrumbs];\n newScope._tags = { ...scope._tags };\n newScope._extra = { ...scope._extra };\n newScope._contexts = { ...scope._contexts };\n newScope._user = scope._user;\n newScope._level = scope._level;\n newScope._span = scope._span;\n newScope._session = scope._session;\n newScope._transactionName = scope._transactionName;\n newScope._fingerprint = scope._fingerprint;\n newScope._eventProcessors = [...scope._eventProcessors];\n }\n return newScope;\n }\n\n /**\n * Add internal on change listener. Used for sub SDKs that need to store the scope.\n * @hidden\n */\n public addScopeListener(callback: (scope: Scope) => void): void {\n this._scopeListeners.push(callback);\n }\n\n /**\n * @inheritDoc\n */\n public addEventProcessor(callback: EventProcessor): this {\n this._eventProcessors.push(callback);\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setUser(user: User | null): this {\n this._user = user || {};\n if (this._session) {\n this._session.update({ user });\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getUser(): User | undefined {\n return this._user;\n }\n\n /**\n * @inheritDoc\n */\n public setTags(tags: { [key: string]: Primitive }): this {\n this._tags = {\n ...this._tags,\n ...tags,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTag(key: string, value: Primitive): this {\n this._tags = { ...this._tags, [key]: value };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setExtras(extras: Extras): this {\n this._extra = {\n ...this._extra,\n ...extras,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setExtra(key: string, extra: Extra): this {\n this._extra = { ...this._extra, [key]: extra };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setFingerprint(fingerprint: string[]): this {\n this._fingerprint = fingerprint;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setLevel(level: Severity): this {\n this._level = level;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTransactionName(name?: string): this {\n this._transactionName = name;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Can be removed in major version.\n * @deprecated in favor of {@link this.setTransactionName}\n */\n public setTransaction(name?: string): this {\n return this.setTransactionName(name);\n }\n\n /**\n * @inheritDoc\n */\n public setContext(key: string, context: Context | null): this {\n if (context === null) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._contexts[key];\n } else {\n this._contexts = { ...this._contexts, [key]: context };\n }\n\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setSpan(span?: Span): this {\n this._span = span;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getSpan(): Span | undefined {\n return this._span;\n }\n\n /**\n * @inheritDoc\n */\n public getTransaction(): Transaction | undefined {\n // often, this span will be a transaction, but it's not guaranteed to be\n const span = this.getSpan() as undefined | (Span & { spanRecorder: { spans: Span[] } });\n\n // try it the new way first\n if (span?.transaction) {\n return span?.transaction;\n }\n\n // fallback to the old way (known bug: this only finds transactions with sampled = true)\n if (span?.spanRecorder?.spans[0]) {\n return span.spanRecorder.spans[0] as Transaction;\n }\n\n // neither way found a transaction\n return undefined;\n }\n\n /**\n * @inheritDoc\n */\n public setSession(session?: Session): this {\n if (!session) {\n delete this._session;\n } else {\n this._session = session;\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getSession(): Session | undefined {\n return this._session;\n }\n\n /**\n * @inheritDoc\n */\n public update(captureContext?: CaptureContext): this {\n if (!captureContext) {\n return this;\n }\n\n if (typeof captureContext === 'function') {\n const updatedScope = (captureContext as <T>(scope: T) => T)(this);\n return updatedScope instanceof Scope ? updatedScope : this;\n }\n\n if (captureContext instanceof Scope) {\n this._tags = { ...this._tags, ...captureContext._tags };\n this._extra = { ...this._extra, ...captureContext._extra };\n this._contexts = { ...this._contexts, ...captureContext._contexts };\n if (captureContext._user && Object.keys(captureContext._user).length) {\n this._user = captureContext._user;\n }\n if (captureContext._level) {\n this._level = captureContext._level;\n }\n if (captureContext._fingerprint) {\n this._fingerprint = captureContext._fingerprint;\n }\n } else if (isPlainObject(captureContext)) {\n // eslint-disable-next-line no-param-reassign\n captureContext = captureContext as ScopeContext;\n this._tags = { ...this._tags, ...captureContext.tags };\n this._extra = { ...this._extra, ...captureContext.extra };\n this._contexts = { ...this._contexts, ...captureContext.contexts };\n if (captureContext.user) {\n this._user = captureContext.user;\n }\n if (captureContext.level) {\n this._level = captureContext.level;\n }\n if (captureContext.fingerprint) {\n this._fingerprint = captureContext.fingerprint;\n }\n }\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public clear(): this {\n this._breadcrumbs = [];\n this._tags = {};\n this._extra = {};\n this._user = {};\n this._contexts = {};\n this._level = undefined;\n this._transactionName = undefined;\n this._fingerprint = undefined;\n this._span = undefined;\n this._session = undefined;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public addBreadcrumb(breadcrumb: Breadcrumb, maxBreadcrumbs?: number): this {\n const mergedBreadcrumb = {\n timestamp: dateTimestampInSeconds(),\n ...breadcrumb,\n };\n\n this._breadcrumbs =\n maxBreadcrumbs !== undefined && maxBreadcrumbs >= 0\n ? [...this._breadcrumbs, mergedBreadcrumb].slice(-maxBreadcrumbs)\n : [...this._breadcrumbs, mergedBreadcrumb];\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public clearBreadcrumbs(): this {\n this._breadcrumbs = [];\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Applies the current context and fingerprint to the event.\n * Note that breadcrumbs will be added by the client.\n * Also if the event has already breadcrumbs on it, we do not merge them.\n * @param event Event\n * @param hint May contain additional informartion about the original exception.\n * @hidden\n */\n public applyToEvent(event: Event, hint?: EventHint): PromiseLike<Event | null> {\n if (this._extra && Object.keys(this._extra).length) {\n event.extra = { ...this._extra, ...event.extra };\n }\n if (this._tags && Object.keys(this._tags).length) {\n event.tags = { ...this._tags, ...event.tags };\n }\n if (this._user && Object.keys(this._user).length) {\n event.user = { ...this._user, ...event.user };\n }\n if (this._contexts && Object.keys(this._contexts).length) {\n event.contexts = { ...this._contexts, ...event.contexts };\n }\n if (this._level) {\n event.level = this._level;\n }\n if (this._transactionName) {\n event.transaction = this._transactionName;\n }\n // We want to set the trace context for normal events only if there isn't already\n // a trace context on the event. There is a product feature in place where we link\n // errors with transaction and it relys on that.\n if (this._span) {\n event.contexts = { trace: this._span.getTraceContext(), ...event.contexts };\n const transactionName = this._span.transaction?.name;\n if (transactionName) {\n event.tags = { transaction: transactionName, ...event.tags };\n }\n }\n\n this._applyFingerprint(event);\n\n event.breadcrumbs = [...(event.breadcrumbs || []), ...this._breadcrumbs];\n event.breadcrumbs = event.breadcrumbs.length > 0 ? event.breadcrumbs : undefined;\n\n return this._notifyEventProcessors([...getGlobalEventProcessors(), ...this._eventProcessors], event, hint);\n }\n\n /**\n * This will be called after {@link applyToEvent} is finished.\n */\n protected _notifyEventProcessors(\n processors: EventProcessor[],\n event: Event | null,\n hint?: EventHint,\n index: number = 0,\n ): PromiseLike<Event | null> {\n return new SyncPromise<Event | null>((resolve, reject) => {\n const processor = processors[index];\n if (event === null || typeof processor !== 'function') {\n resolve(event);\n } else {\n const result = processor({ ...event }, hint) as Event | null;\n if (isThenable(result)) {\n (result as PromiseLike<Event | null>)\n .then(final => this._notifyEventProcessors(processors, final, hint, index + 1).then(resolve))\n .then(null, reject);\n } else {\n this._notifyEventProcessors(processors, result, hint, index + 1)\n .then(resolve)\n .then(null, reject);\n }\n }\n });\n }\n\n /**\n * This will be called on every set call.\n */\n protected _notifyScopeListeners(): void {\n // We need this check for this._notifyingListeners to be able to work on scope during updates\n // If this check is not here we'll produce endless recursion when something is done with the scope\n // during the callback.\n if (!this._notifyingListeners) {\n this._notifyingListeners = true;\n this._scopeListeners.forEach(callback => {\n callback(this);\n });\n this._notifyingListeners = false;\n }\n }\n\n /**\n * Applies fingerprint from the scope to the event if there's one,\n * uses message if there's one instead or get rid of empty fingerprint\n */\n private _applyFingerprint(event: Event): void {\n // Make sure it's an array first and we actually have something in place\n event.fingerprint = event.fingerprint\n ? Array.isArray(event.fingerprint)\n ? event.fingerprint\n : [event.fingerprint]\n : [];\n\n // If we have something on the scope, then merge it with event\n if (this._fingerprint) {\n event.fingerprint = event.fingerprint.concat(this._fingerprint);\n }\n\n // If we have no data at all, remove empty array default\n if (event.fingerprint && !event.fingerprint.length) {\n delete event.fingerprint;\n }\n }\n}\n\n/**\n * Retruns the global event processors.\n */\nfunction getGlobalEventProcessors(): EventProcessor[] {\n /* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access */\n const global = getGlobalObject<any>();\n global.__SENTRY__ = global.__SENTRY__ || {};\n global.__SENTRY__.globalEventProcessors = global.__SENTRY__.globalEventProcessors || [];\n return global.__SENTRY__.globalEventProcessors;\n /* eslint-enable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access */\n}\n\n/**\n * Add a EventProcessor to be kept globally.\n * @param callback EventProcessor to add\n */\nexport function addGlobalEventProcessor(callback: EventProcessor): void {\n getGlobalEventProcessors().push(callback);\n}\n","/* eslint-disable max-lines */\nimport {\n Breadcrumb,\n BreadcrumbHint,\n Client,\n CustomSamplingContext,\n Event,\n EventHint,\n Extra,\n Extras,\n Hub as HubInterface,\n Integration,\n IntegrationClass,\n Primitive,\n SessionContext,\n SessionStatus,\n Severity,\n Span,\n SpanContext,\n Transaction,\n TransactionContext,\n User,\n} from '@sentry/types';\nimport { consoleSandbox, dateTimestampInSeconds, getGlobalObject, isNodeEnv, logger, uuid4 } from '@sentry/utils';\n\nimport { Carrier, DomainAsCarrier, Layer } from './interfaces';\nimport { Scope } from './scope';\nimport { Session } from './session';\n\n/**\n * API compatibility version of this hub.\n *\n * WARNING: This number should only be increased when the global interface\n * changes and new methods are introduced.\n *\n * @hidden\n */\nexport const API_VERSION = 3;\n\n/**\n * Default maximum number of breadcrumbs added to an event. Can be overwritten\n * with {@link Options.maxBreadcrumbs}.\n */\nconst DEFAULT_BREADCRUMBS = 100;\n\n/**\n * Absolute maximum number of breadcrumbs added to an event. The\n * `maxBreadcrumbs` option cannot be higher than this value.\n */\nconst MAX_BREADCRUMBS = 100;\n\n/**\n * @inheritDoc\n */\nexport class Hub implements HubInterface {\n /** Is a {@link Layer}[] containing the client and scope */\n private readonly _stack: Layer[] = [{}];\n\n /** Contains the last event id of a captured event. */\n private _lastEventId?: string;\n\n /**\n * Creates a new instance of the hub, will push one {@link Layer} into the\n * internal stack on creation.\n *\n * @param client bound to the hub.\n * @param scope bound to the hub.\n * @param version number, higher number means higher priority.\n */\n public constructor(client?: Client, scope: Scope = new Scope(), private readonly _version: number = API_VERSION) {\n this.getStackTop().scope = scope;\n this.bindClient(client);\n }\n\n /**\n * @inheritDoc\n */\n public isOlderThan(version: number): boolean {\n return this._version < version;\n }\n\n /**\n * @inheritDoc\n */\n public bindClient(client?: Client): void {\n const top = this.getStackTop();\n top.client = client;\n if (client && client.setupIntegrations) {\n client.setupIntegrations();\n }\n }\n\n /**\n * @inheritDoc\n */\n public pushScope(): Scope {\n // We want to clone the content of prev scope\n const scope = Scope.clone(this.getScope());\n this.getStack().push({\n client: this.getClient(),\n scope,\n });\n return scope;\n }\n\n /**\n * @inheritDoc\n */\n public popScope(): boolean {\n if (this.getStack().length <= 1) return false;\n return !!this.getStack().pop();\n }\n\n /**\n * @inheritDoc\n */\n public withScope(callback: (scope: Scope) => void): void {\n const scope = this.pushScope();\n try {\n callback(scope);\n } finally {\n this.popScope();\n }\n }\n\n /**\n * @inheritDoc\n */\n public getClient<C extends Client>(): C | undefined {\n return this.getStackTop().client as C;\n }\n\n /** Returns the scope of the top stack. */\n public getScope(): Scope | undefined {\n return this.getStackTop().scope;\n }\n\n /** Returns the scope stack for domains or the process. */\n public getStack(): Layer[] {\n return this._stack;\n }\n\n /** Returns the topmost scope layer in the order domain > local > process. */\n public getStackTop(): Layer {\n return this._stack[this._stack.length - 1];\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n public captureException(exception: any, hint?: EventHint): string {\n const eventId = (this._lastEventId = uuid4());\n let finalHint = hint;\n\n // If there's no explicit hint provided, mimick the same thing that would happen\n // in the minimal itself to create a consistent behavior.\n // We don't do this in the client, as it's the lowest level API, and doing this,\n // would prevent user from having full control over direct calls.\n if (!hint) {\n let syntheticException: Error;\n try {\n throw new Error('Sentry syntheticException');\n } catch (exception) {\n syntheticException = exception as Error;\n }\n finalHint = {\n originalException: exception,\n syntheticException,\n };\n }\n\n this._invokeClient('captureException', exception, {\n ...finalHint,\n event_id: eventId,\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureMessage(message: string, level?: Severity, hint?: EventHint): string {\n const eventId = (this._lastEventId = uuid4());\n let finalHint = hint;\n\n // If there's no explicit hint provided, mimick the same thing that would happen\n // in the minimal itself to create a consistent behavior.\n // We don't do this in the client, as it's the lowest level API, and doing this,\n // would prevent user from having full control over direct calls.\n if (!hint) {\n let syntheticException: Error;\n try {\n throw new Error(message);\n } catch (exception) {\n syntheticException = exception as Error;\n }\n finalHint = {\n originalException: message,\n syntheticException,\n };\n }\n\n this._invokeClient('captureMessage', message, level, {\n ...finalHint,\n event_id: eventId,\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureEvent(event: Event, hint?: EventHint): string {\n const eventId = (this._lastEventId = uuid4());\n this._invokeClient('captureEvent', event, {\n ...hint,\n event_id: eventId,\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public lastEventId(): string | undefined {\n return this._lastEventId;\n }\n\n /**\n * @inheritDoc\n */\n public addBreadcrumb(breadcrumb: Breadcrumb, hint?: BreadcrumbHint): void {\n const { scope, client } = this.getStackTop();\n\n if (!scope || !client) return;\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const { beforeBreadcrumb = null, maxBreadcrumbs = DEFAULT_BREADCRUMBS } =\n (client.getOptions && client.getOptions()) || {};\n\n if (maxBreadcrumbs <= 0) return;\n\n const timestamp = dateTimestampInSeconds();\n const mergedBreadcrumb = { timestamp, ...breadcrumb };\n const finalBreadcrumb = beforeBreadcrumb\n ? (consoleSandbox(() => beforeBreadcrumb(mergedBreadcrumb, hint)) as Breadcrumb | null)\n : mergedBreadcrumb;\n\n if (finalBreadcrumb === null) return;\n\n scope.addBreadcrumb(finalBreadcrumb, Math.min(maxBreadcrumbs, MAX_BREADCRUMBS));\n }\n\n /**\n * @inheritDoc\n */\n public setUser(user: User | null): void {\n const scope = this.getScope();\n if (scope) scope.setUser(user);\n }\n\n /**\n * @inheritDoc\n */\n public setTags(tags: { [key: string]: Primitive }): void {\n const scope = this.getScope();\n if (scope) scope.setTags(tags);\n }\n\n /**\n * @inheritDoc\n */\n public setExtras(extras: Extras): void {\n const scope = this.getScope();\n if (scope) scope.setExtras(extras);\n }\n\n /**\n * @inheritDoc\n */\n public setTag(key: string, value: Primitive): void {\n const scope = this.getScope();\n if (scope) scope.setTag(key, value);\n }\n\n /**\n * @inheritDoc\n */\n public setExtra(key: string, extra: Extra): void {\n const scope = this.getScope();\n if (scope) scope.setExtra(key, extra);\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public setContext(name: string, context: { [key: string]: any } | null): void {\n const scope = this.getScope();\n if (scope) scope.setContext(name, context);\n }\n\n /**\n * @inheritDoc\n */\n public configureScope(callback: (scope: Scope) => void): void {\n const { scope, client } = this.getStackTop();\n if (scope && client) {\n callback(scope);\n }\n }\n\n /**\n * @inheritDoc\n */\n public run(callback: (hub: Hub) => void): void {\n const oldHub = makeMain(this);\n try {\n callback(this);\n } finally {\n makeMain(oldHub);\n }\n }\n\n /**\n * @inheritDoc\n */\n public getIntegration<T extends Integration>(integration: IntegrationClass<T>): T | null {\n const client = this.getClient();\n if (!client) return null;\n try {\n return client.getIntegration(integration);\n } catch (_oO) {\n logger.warn(`Cannot retrieve integration ${integration.id} from the current Hub`);\n return null;\n }\n }\n\n /**\n * @inheritDoc\n */\n public startSpan(context: SpanContext): Span {\n return this._callExtensionMethod('startSpan', context);\n }\n\n /**\n * @inheritDoc\n */\n public startTransaction(context: TransactionContext, customSamplingContext?: CustomSamplingContext): Transaction {\n return this._callExtensionMethod('startTransaction', context, customSamplingContext);\n }\n\n /**\n * @inheritDoc\n */\n public traceHeaders(): { [key: string]: string } {\n return this._callExtensionMethod<{ [key: string]: string }>('traceHeaders');\n }\n\n /**\n * @inheritDoc\n */\n public captureSession(endSession: boolean = false): void {\n // both send the update and pull the session from the scope\n if (endSession) {\n return this.endSession();\n }\n\n // only send the update\n this._sendSessionUpdate();\n }\n\n /**\n * @inheritDoc\n */\n public endSession(): void {\n this.getStackTop()\n ?.scope?.getSession()\n ?.close();\n this._sendSessionUpdate();\n\n // the session is over; take it off of the scope\n this.getStackTop()?.scope?.setSession();\n }\n\n /**\n * @inheritDoc\n */\n public startSession(context?: SessionContext): Session {\n const { scope, client } = this.getStackTop();\n const { release, environment } = (client && client.getOptions()) || {};\n const session = new Session({\n release,\n environment,\n ...(scope && { user: scope.getUser() }),\n ...context,\n });\n\n if (scope) {\n // End existing session if there's one\n const currentSession = scope.getSession && scope.getSession();\n if (currentSession && currentSession.status === SessionStatus.Ok) {\n currentSession.update({ status: SessionStatus.Exited });\n }\n this.endSession();\n\n // Afterwards we set the new session on the scope\n scope.setSession(session);\n }\n\n return session;\n }\n\n /**\n * Sends the current Session on the scope\n */\n private _sendSessionUpdate(): void {\n const { scope, client } = this.getStackTop();\n if (!scope) return;\n\n const session = scope.getSession && scope.getSession();\n if (session) {\n if (client && client.captureSession) {\n client.captureSession(session);\n }\n }\n }\n\n /**\n * Internal helper function to call a method on the top client if it exists.\n *\n * @param method The method to call on the client.\n * @param args Arguments to pass to the client function.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _invokeClient<M extends keyof Client>(method: M, ...args: any[]): void {\n const { scope, client } = this.getStackTop();\n if (client && client[method]) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n (client as any)[method](...args, scope);\n }\n }\n\n /**\n * Calls global extension method and binding current instance to the function call\n */\n // @ts-ignore Function lacks ending return statement and return type does not include 'undefined'. ts(2366)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _callExtensionMethod<T>(method: string, ...args: any[]): T {\n const carrier = getMainCarrier();\n const sentry = carrier.__SENTRY__;\n if (sentry && sentry.extensions && typeof sentry.extensions[method] === 'function') {\n return sentry.extensions[method].apply(this, args);\n }\n logger.warn(`Extension method ${method} couldn't be found, doing nothing.`);\n }\n}\n\n/** Returns the global shim registry. */\nexport function getMainCarrier(): Carrier {\n const carrier = getGlobalObject();\n carrier.__SENTRY__ = carrier.__SENTRY__ || {\n extensions: {},\n hub: undefined,\n };\n return carrier;\n}\n\n/**\n * Replaces the current main hub with the passed one on the global object\n *\n * @returns The old replaced hub\n */\nexport function makeMain(hub: Hub): Hub {\n const registry = getMainCarrier();\n const oldHub = getHubFromCarrier(registry);\n setHubOnCarrier(registry, hub);\n return oldHub;\n}\n\n/**\n * Returns the default hub instance.\n *\n * If a hub is already registered in the global carrier but this module\n * contains a more recent version, it replaces the registered version.\n * Otherwise, the currently registered hub will be returned.\n */\nexport function getCurrentHub(): Hub {\n // Get main carrier (global for every environment)\n const registry = getMainCarrier();\n\n // If there's no hub, or its an old API, assign a new one\n if (!hasHubOnCarrier(registry) || getHubFromCarrier(registry).isOlderThan(API_VERSION)) {\n setHubOnCarrier(registry, new Hub());\n }\n\n // Prefer domains over global if they are there (applicable only to Node environment)\n if (isNodeEnv()) {\n return getHubFromActiveDomain(registry);\n }\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n}\n\n/**\n * Returns the active domain, if one exists\n * @deprecated No longer used; remove in v7\n * @returns The domain, or undefined if there is no active domain\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function getActiveDomain(): DomainAsCarrier | undefined {\n logger.warn('Function `getActiveDomain` is deprecated and will be removed in a future version.');\n\n const sentry = getMainCarrier().__SENTRY__;\n\n return sentry && sentry.extensions && sentry.extensions.domain && sentry.extensions.domain.active;\n}\n\n/**\n * Try to read the hub from an active domain, and fallback to the registry if one doesn't exist\n * @returns discovered hub\n */\nfunction getHubFromActiveDomain(registry: Carrier): Hub {\n try {\n const activeDomain = getMainCarrier().__SENTRY__?.extensions?.domain?.active;\n\n // If there's no active domain, just return global hub\n if (!activeDomain) {\n return getHubFromCarrier(registry);\n }\n\n // If there's no hub on current domain, or it's an old API, assign a new one\n if (!hasHubOnCarrier(activeDomain) || getHubFromCarrier(activeDomain).isOlderThan(API_VERSION)) {\n const registryHubTopStack = getHubFromCarrier(registry).getStackTop();\n setHubOnCarrier(activeDomain, new Hub(registryHubTopStack.client, Scope.clone(registryHubTopStack.scope)));\n }\n\n // Return hub that lives on a domain\n return getHubFromCarrier(activeDomain);\n } catch (_Oo) {\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n }\n}\n\n/**\n * This will tell whether a carrier has a hub on it or not\n * @param carrier object\n */\nfunction hasHubOnCarrier(carrier: Carrier): boolean {\n return !!(carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub);\n}\n\n/**\n * This will create a new {@link Hub} and add to the passed object on\n * __SENTRY__.hub.\n * @param carrier object\n * @hidden\n */\nexport function getHubFromCarrier(carrier: Carrier): Hub {\n if (carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub) return carrier.__SENTRY__.hub;\n carrier.__SENTRY__ = carrier.__SENTRY__ || {};\n carrier.__SENTRY__.hub = new Hub();\n return carrier.__SENTRY__.hub;\n}\n\n/**\n * This will set passed {@link Hub} on the passed object's __SENTRY__.hub attribute\n * @param carrier object\n * @param hub Hub\n * @returns A boolean indicating success or failure\n */\nexport function setHubOnCarrier(carrier: Carrier, hub: Hub): boolean {\n if (!carrier) return false;\n carrier.__SENTRY__ = carrier.__SENTRY__ || {};\n carrier.__SENTRY__.hub = hub;\n return true;\n}\n","/*\n * Copyright (c) 2018 by Filestack.\n * Some rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { registerModule, FILESTACK_MODULES } from '@filestack/loader';\nimport { SecurityOptions, getSecurity, validateWebhookSignature, WebhookValidatePayload } from './lib/api/security';\nimport { Client, ClientOptions, Security } from './lib/client';\nimport { PickerOptions, PickerInstance, PickerUploadDoneCallback, PickerFileMetadata, PickerResponse, PickerDisplayMode } from './lib/picker';\nimport { TransformSchema } from './schema/transforms.schema';\nimport { TransformOptions } from './lib/api/transform';\nimport { RetrieveOptions, MetadataOptions } from './lib/api/file';\nimport { UploadTags } from './lib/api/upload/file';\nimport { InputFile } from './lib/api/upload/file_tools';\nimport { UploadOptions } from './lib/api/upload/types';\nimport { StoreUploadOptions } from './lib/api/upload';\nimport { PreviewOptions } from './lib/api/preview';\nimport { PrefetchOptions, PrefetchResponse, PrefetchPermissions, PrefetchEvents } from './lib/api/prefetch';\nimport { FilestackError } from './filestack_error';\nimport { getMimetype } from './lib/utils/index';\n\n/**\n * Initialize client with given config\n *\n * @param apikey\n * @param options\n */\nexport const Filestack = (apikey: string, options?: ClientOptions): Client => {\n return new Client(apikey, options);\n};\n\n// This will be deprecated in feature use\nexport const init = Filestack;\n\n/**\n * filestack-js version. Interpolated at build time.\n */\nexport const version = '@{VERSION}';\n\nregisterModule(FILESTACK_MODULES.FILESTACK_SDK, Filestack, { version: '@{VERSION}' });\n\nexport * from './lib/api/transform';\nexport * from './lib/filelink';\nexport * from './filestack_error';\nexport * from './lib/request';\nexport * from './lib/utils';\n\nexport {\n UploadTags,\n TransformSchema,\n SecurityOptions,\n getSecurity,\n validateWebhookSignature,\n WebhookValidatePayload,\n ClientOptions,\n PickerOptions,\n PickerInstance,\n Security,\n TransformOptions,\n RetrieveOptions,\n InputFile,\n UploadOptions,\n StoreUploadOptions,\n MetadataOptions,\n PreviewOptions,\n PickerUploadDoneCallback,\n PickerFileMetadata,\n PickerResponse,\n Client,\n FilestackError,\n PickerDisplayMode,\n getMimetype,\n PrefetchOptions,\n PrefetchResponse,\n PrefetchPermissions,\n PrefetchEvents\n};\n","/*\n * Copyright (c) 2018 by Filestack.\n * Some rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @private\n */\nconst PICKER_VERSION = '1.24.1';\n\n/**\n * @private\n */\nexport interface Hosts {\n [url: string]: string;\n fileApiUrl: string;\n uploadApiUrl: string;\n cloudApiUrl: string;\n cdnUrl: string;\n pickerUrl: string;\n processUrl: string;\n}\n\n/**\n * @private\n */\nexport interface Config {\n urls: Hosts;\n}\n\nexport const config = {\n urls: {\n processUrl: 'https://process.filestackapi.com',\n fileApiUrl: 'https://www.filestackapi.com/api/file',\n uploadApiUrl: 'https://upload.filestackapi.com',\n cloudApiUrl: 'https://cloud.filestackapi.com',\n cdnUrl: 'https://cdn.filestackcontent.com',\n pickerUrl: `https://static.filestackapi.com/picker/${PICKER_VERSION}/picker.js`,\n },\n};\n","/*\n * Copyright (c) 2018 by Filestack.\n * Some rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport enum FilestackErrorType {\n VALIDATION = 'validation',\n REQUEST = 'request',\n ABORTED = 'aborted',\n OTHER = 'other',\n}\n\nexport class FilestackError extends Error {\n\n /**\n * Error details, ie validation errors\n *\n * @type {*}\n * @memberof FilestackError\n */\n public readonly details: any;\n public readonly type: string;\n\n constructor(message?: string, details?: any, type?: FilestackErrorType) {\n\n /* istanbul ignore next */\n super(message);\n Object.setPrototypeOf(this, FilestackError.prototype);\n this.details = details;\n this.type = type;\n }\n\n}\n","/*\n * Copyright (c) 2018 by Filestack.\n * Some rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport const TransformSchema = {\n '$schema': 'http://json-schema.org/draft-07/schema#',\n title: 'Filestack Transformations',\n description: 'Filestack transformations parameters',\n type: 'object',\n additionalProperties: false,\n properties: {\n flip: {\n type: 'boolean',\n additionalProperties: false,\n },\n auto_image: {\n type: 'boolean',\n additionalProperties: false,\n },\n no_metadata: {\n type: 'boolean',\n additionalProperties: false,\n },\n compress: {\n additionalProperties: false,\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n properties: {\n metadata: {\n type: 'boolean',\n default: false,\n },\n },\n }],\n },\n flop: {\n type: 'boolean',\n additionalProperties: false,\n },\n enhance: {\n default: true,\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n additionalProperties: false,\n properties: {\n preset: {\n type: 'string',\n enum: ['auto', 'vivid', 'beautify', 'beautify_plus', 'fix_dark', 'fix_noise', 'fix_tint', 'outdoor', 'fireworks'],\n },\n },\n }],\n },\n redeye: {\n type: 'boolean',\n additionalProperties: false,\n },\n monochrome: {\n type: 'boolean',\n additionalProperties: false,\n },\n negative: {\n type: 'boolean',\n additionalProperties: false,\n },\n tags: {\n type: 'boolean',\n additionalProperties: false,\n },\n sfw: {\n type: 'boolean',\n additionalProperties: false,\n },\n imagesize: {\n type: 'boolean',\n additionalProperties: false,\n },\n smart_crop: {\n width: {\n type: 'integer',\n minimum: 0,\n maximum: 10000,\n },\n height: {\n type: 'integer',\n minimum: 0,\n maximum: 10000,\n },\n mode: {\n type: 'string',\n default: 'auto',\n enum: ['face', 'auto'],\n },\n },\n animate: {\n type: 'object',\n properties: {\n delay: {\n type: 'integer',\n minimum: 0,\n maximum: 10000,\n default: 1000,\n },\n loop: {\n type: 'integer',\n minimum: 0,\n maximum: 1000,\n default: 0,\n },\n width: {\n type: 'integer',\n minimum: 1,\n maximum: 1800,\n },\n height: {\n type: 'integer',\n minimum: 1,\n maximum: 1800,\n },\n fit: {\n type: 'string',\n default: 'clip',\n enum: ['clip', 'scale', 'crop'],\n },\n background: {\n '$ref': 'colorDef',\n default: 'transparent',\n },\n align: {\n '$ref': 'positionDef',\n default: 'center',\n },\n },\n },\n metadata: {\n type: 'object',\n params: {\n type: 'array',\n items: {\n type: 'string',\n enum: [\n 'filename',\n 'mimetype',\n 'size',\n 'width',\n 'height',\n 'writeable',\n 'path',\n 'container',\n 'cloud',\n 'exif',\n 'source_url',\n 'md5',\n 'sha256',\n 'sha1',\n 'sha512',\n ],\n },\n minItems: 0,\n uniqueItems: true,\n additionalItems: false,\n },\n additionalProperties: false,\n },\n resize: {\n type: 'object',\n properties: {\n width: {\n type: 'number',\n minimum: 0,\n maximum: 10000,\n },\n height: {\n type: 'number',\n minimum: 0,\n maximum: 10000,\n },\n fit: {\n type: 'string',\n enum: ['clip', 'crop', 'scale' ,'max'],\n default: 'clip',\n },\n align: {\n '$ref': 'positionDef',\n default: 'center',\n },\n },\n // required: ['width', 'height'],\n additionalProperties: false,\n anyOf: [\n { required: ['width'] },\n { required: ['height'] },\n ],\n },\n crop: {\n type: 'object',\n properties: {\n dim: {\n type: 'array',\n additionalItems: false,\n minItems: 4,\n items: [{\n type: 'integer',\n minimum: 0,\n maximum: 100000,\n }, {\n type: 'integer',\n minimum: 0,\n maximum: 100000,\n }, {\n type: 'integer',\n minimum: 1,\n maximum: 100000,\n }, {\n type: 'integer',\n minimum: 1,\n maximum: 100000,\n }],\n },\n },\n required: ['dim'],\n },\n rotate: {\n type: 'object',\n properties: {\n deg: {\n oneOf: [{\n type: 'string',\n enum: ['exif'],\n }, {\n type: 'number',\n minimum: 0,\n maximum: 359,\n }],\n },\n exif: {\n type: 'boolean',\n },\n background: {\n '$ref': 'colorDef',\n default: 'FFFFFFFF',\n },\n },\n additionalProperties: false,\n },\n detect_faces: {\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n properties: {\n maxsize: {\n type: 'number',\n minimum: 0,\n maximum: 10000,\n default: 0.35,\n },\n minsize: {\n type: 'number',\n minimum: 0,\n maximum: 10000,\n default: 0.35,\n },\n export: {\n type: 'boolean',\n },\n color: {\n '$ref': 'colorDef',\n default: '000000FF',\n },\n },\n additionalProperties: false,\n }],\n },\n crop_faces: {\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n properties: {\n faces: {\n default: 1,\n '$ref': 'facesDef',\n },\n width: {\n type: 'number',\n minimum: 1,\n maximum: 10000,\n },\n height: {\n type: 'number',\n minimum: 1,\n maximum: 10000,\n },\n maxsize: {\n type: 'number',\n minimum: 0,\n maximum: 10000,\n default: 0.35,\n },\n minsize: {\n type: 'number',\n minimum: 0,\n maximum: 10000,\n default: 0.35,\n },\n buffer: {\n type: 'integer',\n minimum: 0,\n maximum: 10000,\n },\n mode: {\n type: 'string',\n enum: ['crop', 'thumb', 'fill'],\n default: 'thumb',\n },\n },\n additionalProperties: false,\n }],\n },\n pixelate_faces: {\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n properties: {\n faces: {\n '$ref': 'facesDef',\n default: 'all',\n },\n maxsize: {\n type: 'number',\n minimum: 0,\n maximum: 10000,\n default: 0.35,\n },\n minsize: {\n type: 'number',\n minimum: 0,\n maximum: 10000,\n default: 0.35,\n },\n buffer: {\n type: 'integer',\n minimum: 0,\n maximum: 10000,\n },\n amount: {\n type: 'integer',\n minimum: 2,\n maximum: 100,\n default: 10,\n },\n blur: {\n type: 'number',\n minimum: 0,\n maximum: 20,\n default: 4,\n },\n type: {\n type: 'string',\n enum: ['rect', 'oval'],\n default: 'rect',\n },\n },\n additionalProperties: false,\n }],\n },\n blur_faces: {\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n properties: {\n faces: {\n '$ref': 'facesDef',\n default: 'all',\n },\n maxsize: {\n type: 'number',\n minimum: 0,\n maximum: 10000,\n default: 0.35,\n },\n minsize: {\n type: 'number',\n minimum: 0,\n maximum: 10000,\n default: 0.35,\n },\n buffer: {\n type: 'integer',\n minimum: 0,\n maximum: 10000,\n },\n amount: {\n type: 'number',\n minimum: 0,\n maximum: 10,\n default: 10,\n },\n blur: {\n type: 'number',\n minimum: 0,\n maximum: 20,\n default: 4,\n },\n type: {\n type: 'string',\n enum: ['rect', 'oval'],\n default: 'rect',\n },\n },\n additionalProperties: false,\n }],\n },\n rounded_corners: {\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n properties: {\n radius: {\n oneOf: [{\n type: 'integer',\n minimum: 1,\n maximum: 10000,\n }, {\n type: 'string',\n enum: ['max'],\n }],\n },\n blur: {\n type: 'number',\n minimum: 0,\n maximum: 20,\n default: 0.3,\n },\n background: {\n '$ref': 'colorDef',\n },\n },\n additionalProperties: false,\n }],\n },\n vignette: {\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n properties: {\n amount: {\n type: 'integer',\n minimum: 0,\n maximum: 100,\n default: 20,\n },\n blurmode: {\n type: 'string',\n enum: ['gaussian', 'linear'],\n default: 'gaussian',\n },\n background: {\n '$ref': 'colorDef',\n },\n },\n additionalProperties: false,\n }],\n },\n polaroid: {\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n properties: {\n rotate: {\n type: 'integer',\n minimum: 0,\n maximum: 359,\n },\n color: {\n '$ref': 'colorDef',\n default: 'snow',\n },\n background: {\n '$ref': 'colorDef',\n },\n },\n additionalProperties: false,\n }],\n },\n torn_edges: {\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n properties: {\n spread: {\n type: 'array',\n additionalItems: false,\n minItems: 2,\n items: [{\n type: 'integer',\n minimum: 1,\n maximum: 10000,\n default: 1,\n }, {\n type: 'integer',\n minimum: 1,\n maximum: 10000,\n default: 10,\n }],\n },\n background: {\n '$ref': 'colorDef',\n },\n },\n additionalProperties: false,\n }],\n },\n shadow: {\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n properties: {\n blur: {\n type: 'number',\n minimum: 0,\n maximum: 20,\n default: 100,\n },\n opacity: {\n type: 'integer',\n minimum: 0,\n maximum: 100,\n default: 60,\n },\n vector: {\n type: 'array',\n additionalItems: false,\n minItems: 2,\n items: [{\n type: 'integer',\n minimum: -1000,\n maximum: 1000,\n default: 4,\n }, {\n type: 'integer',\n minimum: -1000,\n maximum: 1000,\n default: 4,\n }],\n },\n color: {\n '$ref': 'colorDef',\n },\n background: {\n '$ref': 'colorDef',\n },\n },\n additionalProperties: false,\n }],\n },\n circle: {\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n properties: {\n background: {\n '$ref': 'colorDef',\n },\n },\n additionalProperties: false,\n }],\n },\n border: {\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n properties: {\n color: {\n '$ref': 'colorDef',\n },\n background: {\n '$ref': 'colorDef',\n },\n width: {\n type: 'integer',\n minimum: 0,\n maximum: 1000,\n },\n },\n additionalProperties: false,\n }],\n },\n sharpen: {\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n properties: {\n amount: {\n type: 'integer',\n minimum: 0,\n maximum: 20,\n default: 2,\n },\n },\n additionalProperties: false,\n }],\n },\n blur: {\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n properties: {\n amount: {\n type: 'integer',\n minimum: 0,\n maximum: 20,\n default: 2,\n },\n },\n additionalProperties: false,\n }],\n },\n blackwhite: {\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n properties: {\n threshold: {\n type: 'integer',\n minimum: 0,\n maximum: 100,\n default: 50,\n },\n },\n additionalProperties: false,\n }],\n },\n sepia: {\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n properties: {\n tone: {\n type: 'integer',\n minimum: 0,\n maximum: 100,\n default: 80,\n },\n },\n additionalProperties: false,\n }],\n },\n pixelate: {\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n properties: {\n amount: {\n type: 'integer',\n minimum: 2,\n maximum: 100,\n default: 2,\n },\n },\n additionalProperties: false,\n }],\n },\n oil_paint: {\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n properties: {\n amount: {\n type: 'integer',\n minimum: 2,\n maximum: 100,\n default: 2,\n },\n },\n additionalProperties: false,\n }],\n },\n modulate: {\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n properties: {\n brightness: {\n type: 'integer',\n minimum: 0,\n maximum: 10000,\n default: 100,\n },\n saturation: {\n type: 'integer',\n minimum: 0,\n maximum: 10000,\n default: 100,\n },\n hue: {\n type: 'integer',\n minimum: 0,\n maximum: 359,\n default: 0,\n },\n },\n additionalProperties: false,\n }],\n },\n ascii: {\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n properties: {\n foreground: {\n '$ref': 'colorDef',\n default: '000000FF',\n },\n background: {\n '$ref': 'colorDef',\n default: 'FFFFFFFF',\n },\n colored: {\n type: 'boolean',\n default: false,\n },\n size: {\n type: 'integer',\n minimum: 10,\n maximum: 100,\n default: 100,\n },\n reverse: {\n type: 'boolean',\n default: false,\n },\n },\n additionalProperties: false,\n }],\n },\n collage: {\n type: 'object',\n properties: {\n files: {\n type: 'array',\n minItems: 1,\n items: [{\n type: 'string',\n }],\n },\n margin: {\n type: 'integer',\n minimum: 1,\n maximum: 100,\n default: 10,\n },\n width: {\n type: 'integer',\n minimum: 0,\n maximum: 10000,\n },\n height: {\n type: 'integer',\n minimum: 0,\n maximum: 10000,\n },\n color: {\n '$ref': 'colorDef',\n default: 'FFFFFFFF',\n },\n fit: {\n type: 'string',\n enum: ['auto', 'crop'],\n },\n autorotate: {\n type: 'boolean',\n default: false,\n },\n },\n required: ['width', 'height', 'files'],\n additionalProperties: false,\n },\n urlscreenshot: {\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n properties: {\n agent: {\n type : 'string',\n enum: ['desktop', 'mobile'],\n default: 'desktop',\n },\n width: {\n type: 'integer',\n minimum: 1,\n maximum: 1920,\n default: 1024,\n },\n height: {\n type: 'integer',\n minimum: 1,\n maximum: 8000,\n default: 768,\n },\n mode: {\n type: 'string',\n enum: ['all', 'window'],\n default: 'all',\n },\n delay: {\n type: 'integer',\n minimum: 0,\n maximum: 20000,\n default: 1000,\n },\n orientation: {\n type: 'string',\n enum: ['portrait', 'landscape'],\n default: 'portrait',\n },\n device: {\n type: 'string',\n default: '',\n },\n },\n additionalProperties: false,\n }],\n },\n upscale: {\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n properties: {\n noise: {\n type: 'string',\n enum: ['none', 'low', 'medium', 'high'],\n default: 'none',\n },\n upscale: {\n type: 'boolean',\n default: true,\n },\n style: {\n type: 'string',\n enum: ['artwork', 'photo'],\n default: 'photo',\n },\n },\n additionalProperties: false,\n }],\n },\n output: {\n type: 'object',\n additionalProperties: false,\n properties: {\n format: {\n type: 'string',\n enum: ['doc', 'docx', 'html', 'jpg', 'odp', 'ods', 'odt', 'pjpg', 'pdf', 'png', 'ppt', 'pptx', 'svg', 'txt', 'webp', 'xls', 'xlsx'],\n },\n page: {\n type: 'integer',\n minimum: 1,\n maximum: 99999,\n },\n density: {\n type: 'integer',\n minimum: 1,\n maximum: 500,\n },\n compress: {\n type: 'boolean',\n },\n quality: {\n oneOf: [{\n type: 'string',\n enum: ['input'],\n }, {\n type: 'integer',\n minimum: 1,\n maximum: 100,\n default: 95,\n }],\n },\n secure: {\n type: 'boolean',\n default: false,\n },\n docinfo: {\n type: 'boolean',\n default: false,\n },\n strip: {\n type: 'boolean',\n default: false,\n },\n colorspace: {\n type: 'string',\n enum: ['rgb', 'cmyk', 'input'],\n default: 'rgb',\n },\n background: {\n '$ref': 'colorDef',\n },\n pageformat: {\n type: 'string',\n enum: ['a2', 'a3', 'a4', 'a5', 'b4', 'b5', 'letter', 'legal', 'tabloid'],\n },\n pageorientation: {\n type: 'string',\n enum: ['landscape', 'portrait'],\n },\n },\n },\n pjpg: {\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n additionalProperties: false,\n properties: {\n quality: {\n type: 'integer',\n minimum: 0,\n maximum: 100,\n },\n metadata: {\n type: 'boolean',\n default: false,\n },\n },\n }],\n },\n quality: {\n type: 'object',\n additionalProperties: false,\n properties: {\n value: {\n type: 'integer',\n minimum: 1,\n maximum: 100,\n },\n },\n },\n cache: {\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n properties: {\n expiry: {\n type: 'integer',\n },\n },\n }],\n },\n video_convert: {\n type: 'object',\n additionalProperties: false,\n properties: {\n width: {\n type: 'integer',\n minimum: 1,\n maximum: 4096,\n },\n height: {\n type: 'integer',\n minimum: 1,\n maximum: 4096,\n },\n preset: {\n type: 'string',\n },\n force: {\n type: 'boolean',\n },\n title: {\n type: 'string',\n },\n extname: {\n type: 'string',\n },\n upscale: {\n type: 'boolean',\n },\n aspect_mode: {\n type: 'string',\n enum: ['letterbox', 'pad', 'crop', 'preserve', 'constrain'],\n default: 'letterbox',\n },\n audio_sample_rate: {\n type: 'integer',\n minimum: 1,\n maximum: 99999,\n },\n two_pass: {\n type: 'boolean',\n },\n video_bitrate: {\n type: 'integer',\n minimum: 1,\n maximum: 5000,\n },\n fps: {\n type: 'integer',\n minimum: 1,\n maximum: 300,\n },\n keyframe_interval: {\n type: 'integer',\n minimum: 250,\n maximum: 250,\n },\n audio_bitrate: {\n type: 'integer',\n minimum: 1,\n maximum: 999,\n },\n audio_channels: {\n type: 'integer',\n minimum: 1,\n maximum: 12,\n },\n clip_length: {\n type: 'string',\n pattern: `^([0-1]?\\\\d|2[0-3])(?::([0-5]?\\\\d))?(?::([0-5]?\\\\d))?$`,\n },\n clip_offset: {\n type: 'string',\n pattern: `^([0-1]?\\\\d|2[0-3])(?::([0-5]?\\\\d))?(?::([0-5]?\\\\d))?$`,\n },\n watermark_url: {\n type: 'string',\n },\n watermark_top: {\n type: 'integer',\n minimum: 0,\n maximum: 9999,\n },\n watermark_right: {\n type: 'integer',\n minimum: 0,\n maximum: 9999,\n },\n watermark_bottom: {\n type: 'integer',\n minimum: 0,\n maximum: 9999,\n },\n watermark_left: {\n type: 'integer',\n minimum: 0,\n maximum: 9999,\n },\n frame_count: {\n type: 'integer',\n minimum: 1,\n maximum: 1,\n default: 1,\n },\n filename: {\n type: 'string',\n },\n location: {\n '$ref': 'locationsDef',\n },\n path: {\n type: 'string',\n },\n container: {\n type: 'string',\n },\n access: {\n type: 'string',\n enum: ['public', 'private'],\n default: 'public',\n },\n },\n },\n store: {\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n additionalProperties: false,\n properties: {\n filename: {\n type: 'string',\n },\n location: {\n '$ref': 'locationsDef',\n },\n path: {\n type: 'string',\n },\n container: {\n type: 'string',\n },\n region: {\n '$ref': 'regionsDef',\n },\n access: {\n type: 'string',\n enum: ['public', 'private'],\n default: 'private',\n },\n base64decode: {\n type: 'boolean',\n },\n workflows: {\n '$ref': 'workflowsDef',\n },\n },\n }],\n },\n watermark: {\n type: 'object',\n properties: {\n file: {\n type: 'string',\n },\n size: {\n type: 'number',\n minimum: 0,\n maximum: 500,\n },\n position: {\n '$ref': 'positionDef',\n },\n },\n required: [\n 'file',\n ],\n additionalProperties: false,\n },\n partial_blur: {\n type: 'object',\n properties: {\n objects: {\n '$ref': 'objectsDef',\n },\n amount: {\n type: 'number',\n minimum: 0,\n maximum: 20,\n },\n blur: {\n type: 'number',\n minimum: 0,\n maximum: 20,\n },\n type: {\n type: 'string',\n enum: ['rect', 'oval'],\n },\n },\n required: ['objects'],\n },\n partial_pixelate: {\n type: 'object',\n properties: {\n objects: {\n '$ref': 'objectsDef',\n },\n amount: {\n type: 'number',\n minimum: 2,\n maximum: 100,\n },\n blur: {\n type: 'number',\n minimum: 0,\n maximum: 20,\n },\n type: {\n type: 'string',\n enum: ['rect', 'oval'],\n },\n },\n required: ['objects'],\n },\n security: {\n type: 'object',\n additionalProperties: false,\n properties: {\n policy: {\n type: 'string',\n },\n signature: {\n type: 'string',\n },\n },\n required: ['policy', 'signature'],\n },\n pdfinfo: {\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n properties: {\n colorinfo: {\n type: 'boolean',\n },\n },\n }],\n },\n pdfconvert: {\n type: 'object',\n additionalProperties: false,\n properties: {\n pageorientation: {\n type: 'string',\n enum: ['portrait', 'landscape'],\n },\n pageformat: {\n '$ref': 'pageFormatDef',\n },\n pages: {\n '$ref': 'pageRangeDef',\n },\n },\n anyOf: [{\n required: ['pageorientation'],\n }, {\n required: ['pageformat'],\n }, {\n required: ['pages'],\n }],\n },\n fallback: {\n type: 'object',\n additionalProperties: false,\n properties: {\n handle: {\n type: 'string',\n },\n cache: {\n type: 'integer',\n minimum: 1,\n maximum: 31536000,\n },\n },\n required: ['handle'],\n },\n zip: {\n type: 'string',\n },\n minify_css: {\n type: 'object',\n additionalProperties: false,\n properties: {\n gzip: {\n type: 'boolean',\n },\n level: {\n type: 'number',\n enum: [1, 2],\n },\n },\n },\n minify_js: {\n type: 'object',\n additionalProperties: false,\n properties: {\n gzip: {\n type: 'boolean',\n },\n use_babel_polyfill: {\n type: 'boolean',\n },\n keep_fn_name: {\n type: 'boolean',\n },\n keep_class_name: {\n type: 'boolean',\n },\n mangle: {\n type: 'boolean',\n },\n merge_vars: {\n type: 'boolean',\n },\n remove_console: {\n type: 'boolean',\n },\n remove_undefined: {\n type: 'boolean',\n },\n targets: {\n type: 'string',\n },\n },\n },\n },\n};\n","/*\n * Copyright (c) 2018 by Filestack.\n * Some rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport const DefinitionsSchema = {\n '$schema': 'http://json-schema.org/draft-07/schema#',\n title: 'Filestack',\n description: 'Filestack common definitions',\n type: 'object',\n additionalProperties: false,\n definitions: {\n workflowsDef: {\n id: '/workflowsDef',\n type: 'array',\n additionalItems: false,\n minItems: 1,\n maxItems: 20,\n items: [{\n oneOf: [{\n type: 'string',\n }, {\n type: 'object',\n additionalProperties: false,\n properties: {\n id: {\n type: 'string',\n },\n },\n }],\n }],\n },\n securityCallDef: {\n id: '/securityCallDef',\n oneOf: [{\n additionalProperties: false,\n type: 'string',\n enum: ['pick', 'read', 'stat', 'write', 'writeUrl', 'store', 'convert', 'remove', 'exif', 'runWorkflow'],\n }, {\n type: 'array',\n additionalProperties: false,\n items: [{\n minItems: 1,\n maxItems: 10,\n type: 'string',\n additionalProperties: false,\n enum: ['pick', 'read', 'stat', 'write', 'writeUrl', 'store', 'convert', 'remove', 'exif', 'runWorkflow'],\n }],\n }],\n },\n regionsDef: {\n id: '/regionsDef',\n type: 'string',\n // for now we decided to remove validation of regions (AWS + Rackspace)\n // pattern: '^[a-zA-Z]{2}-[a-zA-z]{1,}-[1-9]$',\n // errorMessage: 'AWS Region Param is in invalid format',\n },\n locationsDef: {\n id: '/locationsDef',\n type: 'string',\n enum: ['s3', 'S3', 'rackspace', 'gcs', 'azure', 'dropbox'],\n },\n colorDef: {\n id: 'colorDef',\n oneOf: [{\n type: 'string',\n pattern: '^([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$', // without # at the begining\n }, {\n type: 'string',\n enum: ['aliceblue', 'antiquewhite', 'aqua', 'aquamarine', 'azure', 'beige', 'bisque', 'black', 'blanchedalmond', 'blue', 'blueviolet', 'brown', 'burlywood', 'cadetblue', 'chartreuse', 'chocolate', 'coral', 'cornflowerblue', 'cornsilk', 'crimson', 'cyan', 'darkblue', 'darkcyan', 'darkgoldenrod', 'darkgray', 'darkgreen', 'darkgrey', 'darkkhaki', 'darkmagenta', 'darkolivegreen', 'darkorange', 'darkorchid', 'darkred', 'darksalmon', 'darkseagreen', 'darkslateblue', 'darkslategray', 'darkslategrey', 'darkturquoise', 'darkviolet', 'deeppink', 'deepskyblue', 'dimgray', 'dimgrey', 'dodgerblue', 'firebrick', 'floralwhite', 'forestgreen', 'fractal', 'fuchsia', 'gainsboro', 'ghostwhite', 'gold', 'goldenrod', 'gray0', 'gray1', 'gray2', 'gray3', 'gray4', 'gray5', 'gray6', 'gray7', 'gray8', 'gray9', 'gray10', 'gray11', 'gray12', 'gray13', 'gray14', 'gray15', 'gray16', 'gray17', 'gray18', 'gray19', 'gray20', 'gray21', 'gray22', 'gray23', 'gray24', 'gray25', 'gray26', 'gray27', 'gray28', 'gray29', 'gray30', 'gray31', 'gray32', 'gray33', 'gray34', 'gray35', 'gray36', 'gray37', 'gray38', 'gray39', 'gray40', 'gray41', 'gray42', 'gray43', 'gray44', 'gray45', 'gray46', 'gray47', 'gray48', 'gray49', 'gray50', 'gray51', 'gray52', 'gray53', 'gray54', 'gray55', 'gray56', 'gray57', 'gray58', 'gray59', 'gray60', 'gray61', 'gray62', 'gray63', 'gray64', 'gray65', 'gray66', 'gray67', 'gray68', 'gray69', 'gray70', 'gray71', 'gray72', 'gray73', 'gray74', 'gray75', 'gray76', 'gray77', 'gray78', 'gray79', 'gray80', 'gray81', 'gray82', 'gray83', 'gray84', 'gray85', 'gray86', 'gray87', 'gray88', 'gray89', 'gray90', 'gray91', 'gray92', 'gray93', 'gray94', 'gray95', 'gray96', 'gray97', 'gray98', 'gray99', 'gray100', 'gray', 'green', 'greenyellow', 'grey', 'honeydew', 'hotpink', 'indianred', 'indigo', 'ivory', 'khaki', 'lavender', 'lavenderblush', 'lawngreen', 'lemonchiffon', 'lightblue', 'lightcoral', 'lightcyan', 'lightgoldenrodyellow', 'lightgray', 'lightgreen', 'lightgrey', 'lightpink', 'lightsalmon', 'lightseagreen', 'lightskyblue', 'lightslategray', 'lightslategrey', 'lightsteelblue', 'lightyellow', 'lime', 'limegreen', 'linen', 'magenta', 'maroon', 'mediumaquamarine', 'mediumblue', 'mediumorchid', 'mediumpurple', 'mediumseagreen', 'mediumslateblue', 'mediumspringgreen', 'mediumturquoise', 'mediumvioletred', 'midnightblue', 'mintcream', 'mistyrose', 'moccasin', 'navajowhite', 'navy', 'none', 'oldlace', 'olive', 'olivedrab', 'orange', 'orangered', 'orchid', 'palegoldenrod', 'palegreen', 'paleturquoise', 'palevioletred', 'papayawhip', 'peachpuff', 'peru', 'pink', 'plum', 'powderblue', 'purple', 'red', 'rosybrown', 'royalblue', 'saddlebrown', 'salmon', 'sandybrown', 'seagreen', 'seashell', 'sienna', 'silver', 'skyblue', 'slateblue', 'slategray', 'slategrey', 'snow', 'springgreen', 'steelblue', 'tan', 'teal', 'thistle', 'tomato', 'turquoise', 'violet', 'wheat', 'white', 'whitesmoke', 'yellow', 'yellowgreen', 'transparent'],\n }],\n },\n pageFormatDef: {\n id: '/pageFormatDef',\n type: 'string',\n enum: ['a2', 'a3', 'a4', 'a5', 'b4', 'b5', 'letter', 'legal', 'tabloid'],\n },\n pageRangeDef: {\n id: '/pageRangeDef',\n type: 'array',\n uniqueItems: true,\n items: [{\n oneOf: [{\n type: 'integer',\n minimum: 1,\n }, {\n type: 'string',\n pattern: '^(\\\\d+(?:-\\\\d+)?)$|^(-\\\\d+)$|^(\\\\d+-)$',\n errorMessage: 'Param should be provided in one of the following formats: \"1,2,3,5\", \"1-3\", \"1-\", \"-2\" ',\n }],\n }],\n },\n facesDef: {\n id: '/facesDef',\n oneOf: [{\n type: 'string',\n enum: ['all'],\n }, {\n type: 'integer',\n minimum: 1,\n maximum: 1000,\n }, {\n type: 'array',\n uniqueItems: true,\n items: [{\n type: 'integer',\n minimum: 1,\n maximum: 1000,\n }],\n }],\n },\n objectsDef: {\n id: '/objectsDef',\n type: 'array',\n minItems: 1,\n maxItems: 50,\n items: [{\n type: 'array',\n additionalItems: false,\n minItems: 4,\n items: [{\n type: 'integer',\n minimum: 0,\n maximum: 10000,\n }, {\n type: 'integer',\n minimum: 0,\n maximum: 10000,\n }, {\n type: 'integer',\n minimum: 1,\n maximum: 10000,\n }, {\n type: 'integer',\n minimum: 1,\n maximum: 10000,\n }],\n }],\n },\n positionDef: {\n id: '/positionDef',\n default: ['middle', 'center'],\n oneOf: [\n {\n type: 'string',\n enum: [\n 'top',\n 'middle',\n 'bottom',\n 'left',\n 'center',\n 'right',\n 'faces',\n ],\n },\n {\n type: 'array',\n uniqueItems: true,\n additionalItems: false,\n minItems: 2,\n maxItems: 2,\n default: ['middle', 'center'],\n items: [\n {\n type: 'string',\n enum: [\n 'top',\n 'middle',\n 'bottom',\n ],\n }, {\n type: 'string',\n enum: [\n 'left',\n 'center',\n 'right',\n ],\n },\n ],\n },\n ],\n },\n },\n};\n","/*\n * Copyright (c) 2018 by Filestack.\n * Some rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Validator } from 'jsonschema';\nimport { DefinitionsSchema } from './definitions.schema';\n\nconst v = new Validator();\n\nValidator.prototype.customFormats.callback = (input) => typeof input === 'function';\n// check if element have HTML in to string method ie HTMLDivElement\nValidator.prototype.customFormats.HTMLContainer = (input) => typeof input === 'string' || (input.toString && input.toString().indexOf('HTML') > -1);\n\n/**\n * Returns validator instance\n */\nexport const getValidator = (schema) => {\n return (params) => {\n v.addSchema(DefinitionsSchema);\n return v.validate(params, schema);\n };\n};\n","/*\n * Copyright (c) 2018 by Filestack\n * Some rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { config } from './../config';\nimport { TransformSchema } from './../schema/transforms.schema';\nimport { getValidator } from './../schema/validator';\nimport { resolveHost, b64 } from './utils';\nimport { FilestackError, FilestackErrorType } from './../filestack_error';\nimport Debug from 'debug';\n\nconst debug = Debug('fs:filelink');\n\nexport enum Align {\n left = 'left',\n right = 'right',\n center = 'center',\n bottom = 'bottom',\n top = 'top',\n faces = 'faces',\n middle = 'middle',\n}\n\n/**\n * Align\n */\nexport type AlignOptions = Align | [Align.top | Align.middle | Align.bottom, Align.left | Align.center | Align.right];\n\n/**\n * Fit enum\n */\nexport enum FitOptions {\n clip = 'clip',\n crop = 'crop',\n scale = 'scale',\n max = 'max',\n}\n\n/**\n * Blur enum\n */\nexport enum BlurMode {\n linear = 'linear',\n gaussian = 'gaussian',\n}\n\n/**\n * Shapes enum\n */\nexport enum ShapeType {\n oval = 'oval',\n rect = 'rect',\n}\n\n/**\n * Noise type enum\n */\nexport enum NoiseType {\n none = 'none',\n low = 'low',\n medium = 'medium',\n high = 'high',\n}\n\n/**\n * Style type enum\n */\nexport enum StyleType {\n artwork = 'artwork',\n photo = 'photo',\n}\n\n/**\n * Color space enum\n */\nexport enum ColorspaceType {\n RGB = 'RGB',\n CMYK = 'CMYK',\n Input = 'Input',\n}\n\n/**\n * Crop faces options enum\n */\nexport enum CropfacesType {\n thumb = 'thumb',\n crop = 'crop',\n fill = 'fill',\n}\n\n/**\n * Watermark postion options enum\n */\nexport enum ImageWatermarkPosition {\n top = 'top',\n middle = 'middle',\n bottom = 'bottom',\n left = 'left',\n center = 'center',\n right = 'right',\n}\n\n/**\n * SmartCrop options enum\n */\nexport enum SmartCropMode {\n face = 'face',\n auto = 'auto',\n}\n\n/**\n * Convert to format\n */\nexport enum VideoTypes {\n h264 = 'h264',\n h264_hi = 'h264.hi',\n webm = 'webm',\n 'webm-hi' = 'webm.hi',\n ogg = 'ogg',\n 'ogg-hi' = 'ogg.hi',\n 'hls-variant' = 'hls.variant',\n mp3 = 'mp3',\n oga = 'oga',\n m4a = 'm4a',\n aac = 'aac',\n hls = 'hls.variant.audio',\n}\n\nexport enum URLScreenshotAgent {\n desktop = 'desktop',\n mobile = 'mobile',\n}\n\nexport enum URLScreenshotMode {\n all = 'all',\n window = 'window',\n}\n\nexport enum URLScreenshotOrientation {\n portrait = 'portrait',\n landscape = 'landscape',\n}\n\n/**\n * Video storage location\n */\nexport enum Locations {\n s3 = 's3',\n azure = 'azure',\n gcs = 'gcs',\n rackspace = 'rackspace',\n dropbox = 'dropbox',\n}\n\nexport enum VideoAccess {\n private = 'private',\n public = 'public',\n}\n\nexport enum VideoAccessMode {\n preserve = 'preserve',\n constrain = 'constrain',\n letterbox = 'letterbox',\n pad = 'pad',\n crop = 'crop',\n}\n\nexport interface StoreBaseParams {\n location?: string;\n path?: string;\n container?: string;\n region?: string;\n access?: string;\n disableStorageKey?: boolean;\n}\n\n/**\n * Available options for store transformations\n *\n * @export\n * @interface StoreParams\n */\nexport type StoreParams = StoreBaseParams & {\n filename?: string;\n base64decode?: boolean;\n};\n\nexport interface AnimationParams {\n delay?: number;\n loop?: number;\n width?: number;\n height?: number;\n fit?: FitOptions;\n align?: AlignOptions;\n background?: string;\n}\n\nexport interface ResizeParams {\n width?: number;\n height?: number;\n fit?: FitOptions;\n align?: AlignOptions;\n}\n\nexport interface CropParams {\n dim: [number, number, number, number];\n}\n\nexport interface RotateParams {\n deg: number | string;\n color?: string;\n background?: string;\n}\n\nexport interface DetectFacesParams {\n minsize?: number;\n maxsize?: number;\n color?: string;\n export?: boolean;\n}\n\nexport interface CropFacesParams {\n mode?: CropfacesType;\n width?: number;\n height?: number;\n faces?: number | string;\n buffer?: number;\n}\n\nexport interface PixelateFacesParams {\n faces?: number | string;\n minsize?: number;\n maxsize?: number;\n buffer?: number;\n amount?: number;\n blur?: number;\n type?: ShapeType;\n}\n\nexport interface BlurFacesParams {\n faces?: number | string;\n minsize?: number;\n maxsize?: number;\n buffer?: number;\n amount?: number;\n blur?: number;\n type?: ShapeType;\n}\n\nexport interface RoundedCornersParams {\n radius?: number;\n blur?: number;\n background?: string;\n}\n\nexport interface VignetteParams {\n amount?: number;\n blurmode?: BlurMode;\n background?: string;\n}\n\nexport interface PolaroidParams {\n color?: string;\n rotate?: number;\n background?: string;\n}\n\nexport interface TornEdgesParams {\n spread?: [number, number];\n background?: string;\n}\n\nexport interface ShadowParams {\n blur?: number;\n opacity?: number;\n vector?: [number, number];\n color?: string;\n background?: string;\n}\n\nexport interface CircleParams {\n background?: string;\n}\n\nexport interface BorderParams {\n width?: number;\n color?: string;\n background?: string;\n}\n\nexport interface CompressParams {\n metadata?: boolean;\n}\n\nexport interface WatermarkParams {\n file: string;\n size?: number;\n position?: ImageWatermarkPosition | ImageWatermarkPosition[];\n}\n\nexport interface ProgressiveJpgParams {\n quality: number;\n metadata: boolean;\n}\n\nexport interface SmartCropParams {\n mode: SmartCropMode;\n width: number;\n height: number;\n}\n\nexport interface SharpenParams {\n amount: number;\n}\n\nexport interface BlurParams {\n amount: number;\n}\n\nexport interface BlackwhiteParams {\n threshold: number;\n}\n\nexport interface SepiaParams {\n tone: number;\n}\n\nexport interface PixelateParams {\n amount: number;\n}\n\nexport interface OilPaintParams {\n amount: number;\n}\n\nexport interface ModulateParams {\n brightness?: number;\n hue?: number;\n saturation?: number;\n}\n\nexport interface PartialPixelateParams {\n amount?: number;\n blur?: number;\n type?: ShapeType;\n objects?: [[number, number, number, number]];\n}\n\nexport interface PartialBlurParams {\n amount: number;\n blur?: number;\n type?: ShapeType;\n objects?: [[number, number, number, number]];\n}\n\nexport interface CollageParams {\n margin?: number;\n width?: number;\n height?: number;\n color?: string;\n fit?: FitOptions;\n files: [string];\n}\n\nexport interface UpscaleParams {\n upscale?: boolean;\n noise?: NoiseType;\n style?: StyleType;\n}\n\nexport interface AsciiParams {\n background?: string;\n foreground?: string;\n colored?: boolean;\n size?: number;\n reverse?: boolean;\n}\n\nexport interface QualityParams {\n value: number;\n}\n\nexport interface SecurityParams {\n policy: string;\n signature?: string;\n}\n\nexport interface OutputParams {\n format: string;\n colorspace?: string;\n strip?: boolean;\n quality?: number;\n page?: number;\n compress?: boolean;\n density?: number;\n background?: string;\n secure?: boolean;\n docinfo?: boolean;\n pageformat?: string;\n pageorientation?: string;\n}\n\nexport interface CacheParams {\n cache?: boolean;\n expiry: number;\n}\n\nexport interface VideoConvertParams {\n aspect_mode: VideoAccessMode;\n preset?: VideoTypes;\n force?: boolean;\n title?: string;\n extname?: string;\n filename?: string;\n location?: Locations;\n path?: string;\n access?: VideoAccess;\n container?: string;\n audio_bitrate?: number;\n upscale: boolean;\n video_bitrate?: number;\n audio_sample_rate?: number;\n audio_channels?: number;\n clip_length?: string;\n clip_offset?: string;\n width?: number;\n height?: number;\n two_pass?: boolean;\n fps?: number;\n keyframe_interval?: number;\n watermark_url?: string;\n watermark_top?: number;\n watermark_bottom?: number;\n watermark_right?: number;\n watermark_left?: number;\n watermark_width?: number;\n watermark_height?: number;\n}\n\nexport interface URLScreenshotParams {\n agent?: URLScreenshotAgent;\n width?: number;\n height?: number;\n mode?: URLScreenshotMode;\n delay?: number;\n orientation?: URLScreenshotOrientation;\n device?: string;\n}\n\nexport enum EnhancePreset {\n auto = 'auto',\n vivid = 'vivid',\n beautify = 'beautify',\n beautifyPlus = 'beautify_plus',\n fixDark = 'fix_dark',\n fixNoise = 'fix_noise',\n fixTint = 'fix_tint',\n outdor = 'outdoor',\n fireworks = 'fireworks',\n}\nexport interface EnhanceParams {\n preset?: EnhancePreset;\n}\n\nexport interface PdfInfoParams {\n colorinfo?: boolean;\n}\n\nexport interface PdfConvertParams {\n pageorientation?: string;\n pageformat?: string;\n pages?: (string | number)[];\n}\n\nexport interface FallbackParams {\n handle: string;\n cache?: number;\n}\n\nexport interface MinifyCssParams {\n gzip?: boolean;\n level?: number;\n}\n\nexport interface MinifyJsParams {\n gzip?: boolean;\n use_babel_polyfill?: boolean;\n keep_fn_name?: boolean;\n keep_class_name?: boolean;\n mangle?: boolean;\n merge_vars?: boolean;\n remove_console?: boolean;\n remove_undefined?: boolean;\n targets?: null | string;\n}\n\nconst handleRegexp = /^[\\w\\-]{20}|wf:\\/\\/[\\w\\-\\/]{106}$/;\n\n/**\n * Class for handling filelinks. For now its supports all filestack transforms.\n * It outputs transform url or array of transforms\n * @example\n * const link = new Filelink('handle or externalUrl', 'apikey');\n * link.flip().flop().store();\n *\n * console.log(link.toString());\n * // enable base64 support\n * link.setBase64(true)\n *\n * console.log(link.toString());\n *\n * @export\n * @class Filelink\n */\nexport class Filelink {\n /**\n * Validator instance\n *\n * @private\n * @memberof Filelink\n */\n private static validator = getValidator(TransformSchema);\n\n /**\n * Applied transforms array\n *\n * @private\n * @memberof Filelink\n */\n private transforms = [];\n\n /**\n * Handle or multiple handles in array\n *\n * @private\n * @memberof Filelink\n */\n private source: string | string[];\n\n /**\n * Application key\n *\n * @private\n * @type {string}\n * @memberof Filelink\n */\n private apikey: string;\n\n /**\n * Is base64 support is enabled\n *\n * @private\n * @type {boolean}\n * @memberof Filelink\n */\n private b64: boolean = false;\n\n /**\n * should use a validator to check params of every task\n * @private\n * @type {boolean}\n * @memberof Filelink\n */\n private useValidator: boolean = true;\n\n /**\n * Custom CNAME\n *\n * @private\n * @type {string}\n * @memberof Filelink\n */\n private cname: string;\n\n /**\n * Overwrite domain (test purposes)\n *\n * @private\n * @type {string}\n * @memberof Filelink\n */\n private customDomain: string;\n\n /**\n * Class for generating tranformation urls\n * @param {(string | string[])} source - handle or multiple handles (i.e. for collage)\n * @param {string} [apikey] - your apikey - required for all external sources\n *\n * @memberof Filelink\n */\n constructor(source: string | string[], apikey?: string) {\n this.apikey = apikey;\n this.setSource(source);\n }\n\n /**\n * Enable new base64 link support to avoid problems with special chars in link\n *\n * @param {boolean} flag\n * @returns\n * @memberof Filelink\n */\n setBase64(flag: boolean) {\n this.b64 = flag;\n return this;\n }\n\n /**\n * Switch the useValidator flag\n *\n * @param {boolean} flag\n * @returns\n * @memberof Filelink\n */\n setUseValidator(flag: boolean) {\n this.useValidator = flag;\n return this;\n }\n\n /**\n * Set cname for transformation link\n *\n * @param {string} cname\n * @returns\n * @memberof Filelink\n */\n setCname(cname: string) {\n this.cname = cname;\n return this;\n }\n\n /**\n * Set custom domain. Used for test purpose. It will be removed when after client.transform\n *\n * @param {string} domain\n * @returns\n * @memberof Filelink\n */\n setCustomDomain(domain: string) {\n this.customDomain = domain;\n return this;\n }\n\n setSource(source: string | string[]) {\n this.source = source;\n\n const isExternal = this.isSourceExternal();\n\n debug(`Source ${source} - isExternal? ${isExternal}`);\n\n if (isExternal && !this.apikey) {\n throw new FilestackError('External sources requires apikey to handle transforms');\n }\n\n if (!isExternal && typeof this.source === 'string' && !handleRegexp.test(this.source) && this.source.indexOf('filestackcontent') === -1) {\n throw new FilestackError('Invalid filestack source provided');\n }\n }\n\n /**\n * Returns JSONSchema form transformations params\n *\n * @returns\n * @memberof Filelink\n */\n getValidationSchema() {\n return TransformSchema;\n }\n\n /**\n * Returns transformations in JSON format\n *\n * @returns\n * @memberof Filelink\n */\n getTransformations() {\n if (this.useValidator) {\n this.validateTasks(this.transforms);\n }\n return this.transforms;\n }\n\n /**\n * Returns transform url\n *\n * @returns\n * @memberof Filelink\n */\n toString() {\n const returnUrl = [];\n returnUrl.push(this.getCdnHost());\n\n if (this.useValidator) {\n this.validateTasks(this.transforms);\n }\n\n if (this.apikey) {\n returnUrl.push(this.apikey);\n }\n\n let transformsString = this.generateTransformString();\n\n let source = this.source;\n\n if (this.b64) {\n if (this.transforms.length > 0) {\n transformsString = `b64/${b64(JSON.stringify(this.transforms), true)}`;\n }\n\n if (Array.isArray(source)) {\n source = this.arrayToString(source);\n }\n\n source = `b64://${b64(source, true)}`;\n } else {\n if (Array.isArray(source)) {\n source = this.arrayToString(source);\n } else {\n source = this.escapeValue(source);\n }\n }\n\n if (transformsString.length) {\n returnUrl.push(transformsString);\n }\n\n returnUrl.push(source);\n return returnUrl.join('/');\n }\n\n /**\n * Add task and validate\n *\n * @param {string} name\n * @param {*} [params]\n * @returns\n * @memberof Filelink\n */\n addTask(name: string, params?) {\n Debug(`Add task ${name} with params %O`, params);\n\n if (name !== 'cache' && typeof params === 'boolean') {\n if (!params) {\n return this;\n } else {\n params = undefined;\n }\n } else if (typeof params === 'object' && !Object.keys(params).length) {\n params = undefined;\n }\n\n this.transforms.push({ name, params });\n return this;\n }\n\n /**\n * Returns all tasks added for transformation\n *\n * @memberof Filelink\n */\n getTasks() {\n return this.transforms;\n }\n\n /**\n * Cleanup transformations on filelink\n *\n * @returns\n * @memberof Filelink\n */\n reset() {\n this.transforms = [];\n return this;\n }\n\n /**\n * Transformations part\n */\n\n /**\n * Add autoimage transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#auto-image-conversion\n * @returns this\n * @memberof Filelink\n */\n autoImage() {\n return this.addTask('auto_image', true);\n }\n\n /**\n * Adds flip transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#flip\n * @returns this\n * @memberof Filelink\n */\n flip() {\n return this.addTask('flip', true);\n }\n\n /**\n * Adds flop transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#flop\n * @returns this\n * @memberof Filelink\n */\n flop() {\n return this.addTask('flop', true);\n }\n\n /**\n * Adds imagesize transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#image-size\n * @returns this\n * @memberof Filelink\n */\n imagesize() {\n return this.addTask('imagesize', true);\n }\n\n /**\n * Adds noMetadata transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#strip-metadata\n * @returns this\n * @memberof Filelink\n */\n noMetadata() {\n return this.addTask('no_metadata', true);\n }\n\n /**\n * Adds Progressive JPEG transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#progressive-jpeg\n * @returns this\n * @memberof Filelink\n */\n pjpg(params: ProgressiveJpgParams) {\n return this.addTask('pjpg', params);\n }\n\n /**\n * Adds imagesize transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#smart-crop\n * @returns this\n * @memberof Filelink\n */\n smartCrop(params: SmartCropParams) {\n return this.addTask('smart_crop', params);\n }\n\n /**\n * Adds watermart transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#watermark\n * @returns this\n * @memberof Filelink\n */\n watermark(params: WatermarkParams) {\n return this.addTask('watermark', params);\n }\n\n /**\n * Adds enhance transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#enhance\n * @returns this\n * @memberof Filelink\n */\n enhance(params?: EnhanceParams) {\n return this.addTask('enhance', params || true);\n }\n\n /**\n * Add security to link\n *\n * @see https://www.filestack.com/docs/api/processing/#redeye\n * @returns\n * @memberof Filelink\n */\n redeye() {\n return this.addTask('redeye', true);\n }\n\n /**\n * Add monochrome transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#monochrome\n * @returns this\n * @memberof Filelink\n */\n monochrome() {\n return this.addTask('monochrome', true);\n }\n\n /**\n * Add compress transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#compress\n * @returns this\n * @memberof Filelink\n */\n compress(params?: CompressParams) {\n return this.addTask('compress', params || true);\n }\n\n /**\n * Adds negative transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#negative\n * @returns this\n * @memberof Filelink\n */\n negative() {\n return this.addTask('negative', true);\n }\n\n /**\n * Adds tags transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#tags\n * @returns this\n * @memberof Filelink\n */\n tags() {\n return this.addTask('tags', true);\n }\n\n /**\n * Adds sfw transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#sfw\n * @returns this\n * @memberof Filelink\n */\n sfw() {\n return this.addTask('sfw', true);\n }\n\n /**\n * Add animate transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#animate-images-to-gif\n * @param params\n * @returns this\n * @memberof Filelink\n */\n animate(params: AnimationParams) {\n return this.addTask('animate', params);\n }\n\n /**\n * Adds store transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#store\n * @param {(StoreParams | boolean)} params\n * @returns this\n * @memberof Filelink\n */\n store(params?: StoreParams | boolean) {\n return this.addTask('store', params);\n }\n\n /**\n * Adds cache transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#cache\n * @param {(CacheParams | boolean)} params\n * @returns this\n * @memberof Filelink\n */\n cache(params: CacheParams | boolean) {\n return this.addTask('cache', params);\n }\n\n /**\n * Adds resize transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#resize\n * @param {ResizeParams} params\n * @returns this\n * @memberof Filelink\n */\n resize(params: ResizeParams) {\n return this.addTask('resize', params);\n }\n\n /**\n * Adds crop transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#crop\n * @param {CropParams} params\n * @returns this\n * @memberof Filelink\n */\n crop(params: CropParams) {\n return this.addTask('crop', params);\n }\n\n /**\n * Adds rotate transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#rotate\n * @param {RotateParams} params\n * @returns this\n * @memberof Filelink\n */\n rotate(params: RotateParams) {\n return this.addTask('rotate', params);\n }\n\n /**\n * Adds detect_faces transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#facial-detection\n * @param {(DetectFacesParams | boolean)} params\n * @returns this\n * @memberof Filelink\n */\n detectFaces(params?: DetectFacesParams | boolean) {\n return this.addTask('detect_faces', params);\n }\n\n /**\n * Adds crop faces transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#crop-faces\n * @param {CropFacesParams} params\n * @returns this\n * @memberof Filelink\n */\n cropFaces(params: CropFacesParams) {\n return this.addTask('crop_faces', params);\n }\n\n /**\n * Adds pixelate faces transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#pixelate-faces\n * @param {PixelateFacesParams} params\n * @returns this\n * @memberof Filelink\n */\n pixelateFaces(params: PixelateFacesParams) {\n return this.addTask('pixelate_faces', params);\n }\n\n /**\n * Adds blur faces transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#blur-faces\n * @param {BlurFacesParams} params\n * @returns this\n * @memberof Filelink\n */\n blurFaces(params: BlurFacesParams) {\n return this.addTask('blur_faces', params);\n }\n\n /**\n * Adds rounded corners transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#rounded-corners\n * @param {(RoundedCornersParams | boolean)} params\n * @returns this\n * @memberof Filelink\n */\n roundedCorners(params?: RoundedCornersParams | boolean) {\n return this.addTask('rounded_corners', params);\n }\n\n /**\n * Adds polaroid transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#polaroid\n * @param {(PolaroidParams | boolean)} params\n * @returns this\n * @memberof Filelink\n */\n polaroid(params?: PolaroidParams | boolean) {\n return this.addTask('polaroid', params);\n }\n\n /**\n * Adds vignette transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#vignette\n * @param {(VignetteParams | boolean)} params\n * @returns this\n * @memberof Filelink\n */\n vignette(params?: VignetteParams | boolean) {\n return this.addTask('vignette', params);\n }\n\n /**\n * Adds torn edges transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#torn-edges\n * @param {(TornEdgesParams | boolean)} params\n * @returns this\n * @memberof Filelink\n */\n tornEdges(params?: TornEdgesParams | boolean) {\n return this.addTask('torn_edges', params);\n }\n\n /**\n * Adds shadow transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#shadow\n * @param {(ShadowParams | boolean)} params\n * @returns this\n * @memberof Filelink\n */\n shadow(params?: ShadowParams | boolean) {\n return this.addTask('shadow', params);\n }\n\n /**\n * Adds circle transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#circle\n * @param {(CircleParams | boolean)} params\n * @returns this\n * @memberof Filelink\n */\n circle(params?: CircleParams | boolean) {\n return this.addTask('circle', params);\n }\n\n /**\n * Adds border transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#border\n * @param {(BorderParams | boolean)} params\n * @returns this\n * @memberof Filelink\n */\n border(params?: BorderParams | boolean) {\n return this.addTask('border', params);\n }\n\n /**\n * Adds sharpen transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#sharpen\n * @param {(SharpenParams | boolean)} params\n * @returns this\n * @memberof Filelink\n */\n sharpen(params?: SharpenParams | boolean) {\n return this.addTask('sharpen', params);\n }\n\n /**\n * Adds blur transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#blur\n * @param {(BlurParams | boolean)} params\n * @returns this\n * @memberof Filelink\n */\n blur(params?: BlurParams | boolean) {\n return this.addTask('blur', params);\n }\n\n /**\n * Adds blackwhite transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#blackwhite\n * @param {(BlackwhiteParams | boolean)} params\n * @returns this\n * @memberof Filelink\n */\n blackwhite(params?: BlackwhiteParams | boolean) {\n return this.addTask('blackwhite', params);\n }\n\n /**\n * Adds sepia transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#sepia\n * @param {(SepiaParams | boolean)} params\n * @returns this\n * @memberof Filelink\n */\n sepia(params?: SepiaParams | boolean) {\n return this.addTask('sepia', params);\n }\n\n /**\n * Adds pixelate transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#pixelate\n * @param {(PixelateParams | boolean)} params\n * @returns this\n * @memberof Filelink\n */\n pixelate(params?: PixelateParams | boolean) {\n return this.addTask('pixelate', params);\n }\n\n /**\n * Adds oilpaint transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#oil-paint\n * @param {(OilPaintParams | boolean)} params\n * @returns this\n * @memberof Filelink\n */\n oilPaint(params?: OilPaintParams | boolean) {\n return this.addTask('oil_paint', params);\n }\n\n /**\n * Adds modulate transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#modulate\n * @param {(ModulateParams | boolean)} params\n * @returns this\n * @memberof Filelink\n */\n modulate(params?: ModulateParams | boolean) {\n return this.addTask('modulate', params);\n }\n\n /**\n * Adds partial pixelate transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#partial-pixelate\n * @param {PartialPixelateParams} params\n * @returns this\n * @memberof Filelink\n */\n partialPixelate(params: PartialPixelateParams) {\n return this.addTask('partial_pixelate', params);\n }\n\n /**\n * Adds partial blur transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#partial-blur\n * @param {PartialBlurParams} params\n * @returns this\n * @memberof Filelink\n */\n partialBlur(params: PartialBlurParams) {\n return this.addTask('partial_blur', params);\n }\n\n /**\n * Adds collage transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#collage\n * @param {CollageParams} params\n * @returns this\n * @memberof Filelink\n */\n collage(params: CollageParams) {\n return this.addTask('collage', params);\n }\n\n /**\n * Adds upscale transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#upscale\n * @param {(UpscaleParams | boolean)} params\n * @returns this\n * @memberof Filelink\n */\n upscale(params?: UpscaleParams | boolean) {\n return this.addTask('upscale', params);\n }\n\n /**\n * Adds ascii transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#ascii\n * @param {(AsciiParams | boolean)} params\n * @returns this\n * @memberof Filelink\n */\n ascii(params?: AsciiParams | boolean) {\n return this.addTask('ascii', params);\n }\n\n /**\n * Adds quality transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#quality\n * @param {QualityParams} params\n * @returns this\n * @memberof Filelink\n */\n quality(params: QualityParams) {\n return this.addTask('quality', params);\n }\n\n /**\n * Adds security transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#security\n * @param {SecurityParams} params\n * @returns this\n * @memberof Filelink\n */\n security(params: SecurityParams) {\n return this.addTask('security', params);\n }\n\n /**\n * Adds output transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#output\n * @param {OutputParams} params\n * @returns this\n * @memberof Filelink\n */\n output(params: OutputParams) {\n return this.addTask('output', params);\n }\n\n /**\n * Adds video convert transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#video-convert\n * @param {VideoConvertParams} params\n * @returns this\n * @memberof Filelink\n */\n videoConvert(params: VideoConvertParams) {\n return this.addTask('video_convert', params);\n }\n\n /**\n * Adds URLScreenshot transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#urlscreenshot\n * @param {(URLScreenshotParams | boolean)} params\n * @returns this\n * @memberof Filelink\n */\n URLScreenshot(params?: URLScreenshotParams | boolean) {\n return this.addTask('urlscreenshot', params);\n }\n\n /**\n * Adds pdfinfo transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#pdfinfo\n * @param {(PdfInfoParams | boolean)} params\n * @returns this\n * @memberof Filelink\n */\n PDFInfo(params?: PdfInfoParams | boolean) {\n return this.addTask('pdfinfo', params);\n }\n\n /**\n * Adds pdfconvert transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#pdfconvert\n * @param {(PdfConvertParams | boolean)} params\n * @returns this\n * @memberof Filelink\n */\n PDFConvert(params?: PdfConvertParams | boolean) {\n return this.addTask('pdfconvert', params);\n }\n\n /**\n * Adds fallback transformation\n *\n * @see https://www.filestack.com/docs/api/processing/#fallback\n * @param {(FallbackParams)} params\n * @returns this\n * @memberof Filelink\n */\n fallback(params: FallbackParams) {\n return this.addTask('fallback', params);\n }\n\n /**\n * Add zip transformation which create a zip package on files\n * used on actual context\n *\n * @see https://www.filestack.com/docs/api/processing/#zip\n * @returns this\n * @memberof Filelink\n */\n zip() {\n return this.addTask('zip', true);\n }\n\n /**\n * Add task which minify a css file\n *\n * @returns this\n * @memberof Filelink\n */\n minifyCss(params: MinifyCssParams) {\n return this.addTask('minify_css', params);\n }\n\n /**\n * Add task which minify a javascript file.\n * For better handling of 'targets' param, use with b64 flag enabled.\n *\n * @returns this\n * @memberof Filelink\n */\n minifyJs(params: MinifyJsParams) {\n return this.addTask('minify_js', params);\n }\n\n /**\n * Checks if source is external\n *\n * @private\n * @returns {boolean}\n * @memberof Filelink\n */\n private isSourceExternal(): boolean {\n if (!this.source) {\n throw new FilestackError('Source not Set');\n }\n\n let toTest = Array.isArray(this.source) ? this.source : [this.source];\n for (let i in toTest) {\n /* istanbul ignore next */\n if (!toTest.hasOwnProperty(i)) {\n continue;\n }\n\n if (toTest[i].indexOf('src:') === 0 || (toTest[i].indexOf('http') === 0 && toTest[i].indexOf('filestackcontent') === -1)) {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Validate every task against schema\n *\n * @private\n * @param {object[]} transformations - object which contain all transformations\n * @returns {void}\n * @memberof Filelink\n */\n private validateTasks(transformations: object[]): void {\n const res = Filelink.validator(this.arrayToObject(transformations, 'name', 'params'));\n if (res.errors.length) {\n throw new FilestackError(`Params validation error`, res.errors, FilestackErrorType.VALIDATION);\n }\n\n return;\n }\n\n /**\n * Returns correct cdn url with cname support\n *\n * @private\n * @returns {string}\n * @memberof Filelink\n */\n private getCdnHost(): string {\n let urls = Object.assign({}, config.urls);\n\n if (this.customDomain) {\n urls.cdnUrl = this.customDomain;\n }\n\n urls = resolveHost(urls, this.cname);\n\n return urls.cdnUrl;\n }\n\n /**\n * Returns applied transformations as string\n *\n * @private\n * @returns {string}\n * @memberof Filelink\n */\n private generateTransformString(): string {\n let transforms = [];\n\n this.transforms.forEach(el => {\n transforms.push(this.optionToString(el.name, el.params));\n });\n\n return transforms.join('/');\n }\n\n /**\n * Flatten transformation option to string\n *\n * @private\n * @example {resize:{width: 100,height: 200}} => resize=width:100,height:200\n * @param key - option key\n * @param values - option params\n */\n private optionToString(key: string, values: any): string {\n let optionsString: string[] = [];\n if (typeof values === 'undefined') {\n return key;\n }\n\n // if we just want to enable feature\n if (typeof values === 'boolean') {\n if (!values && key === 'cache') {\n return 'cache=false';\n }\n\n return key;\n }\n\n Object.keys(values).forEach(i => {\n if (Array.isArray(values[i])) {\n optionsString.push(`${i}:${this.arrayToString(values[i])}`);\n return;\n }\n\n optionsString.push(`${i}:${this.escapeValue(values[i])}`);\n });\n\n return `${key}=${optionsString.join(',')}`;\n }\n\n /**\n * Escape params values\n *\n * @private\n * @param {string} value\n * @returns {string}\n * @memberof Filelink\n */\n private escapeValue(value: string): string {\n if (typeof value !== 'string') {\n return value;\n }\n\n if (value.indexOf('/') > -1 || value.indexOf(',') > -1) {\n return `\"${value}\"`;\n }\n\n return value;\n }\n\n /**\n * Converts nested arrays to string\n *\n * @private\n * @example [1,2, [2,3]] => \"[1,2, [2,3]]\"\n * @param arr - any array\n */\n private arrayToString(arr: any[]): string {\n const toReturn = arr.map(el => {\n if (Array.isArray(el)) {\n return this.arrayToString(el);\n }\n\n return this.escapeValue(el);\n });\n\n return `[${toReturn}]`;\n }\n\n /**\n * Converts array of objects to object\n *\n * @private\n * @example [{name: 'resize', params: {height: 125}}] => {resize: {height: 125}}\n * @param arr - any array\n */\n private arrayToObject = (array: object[] = [], nameKey: string, dataKey: string) => {\n return array.reduce((obj, item) => {\n obj[item[nameKey]] = item[dataKey];\n return obj;\n }, {});\n }\n}\n","/*\n * Copyright (c) 2018 by Filestack.\n * Some rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Session } from '../client';\nimport { Filelink } from './../filelink';\n\n/**\n * @private\n */\nconst toSnakeCase = (original: { [index: string]: any }): { [index: string]: any } => {\n let snakeCased: { [index: string]: any } = {};\n\n const keys = Object.keys(original);\n\n for (let i = 0; i < keys.length; i++) {\n let newKey = keys[i].split(/(?=[A-Z])/).join('_').toLowerCase();\n\n if (typeof original[keys[i]] === 'object' && !Array.isArray(original[keys[i]])) {\n snakeCased[newKey] = toSnakeCase(original[keys[i]]);\n } else {\n snakeCased[newKey] = original[keys[i]];\n }\n }\n\n return snakeCased;\n};\n\n/**\n * Align enum\n */\nexport enum EAlignOptions {\n left = 'left',\n right = 'right',\n center = 'center',\n bottom = 'bottom',\n top = 'top',\n}\n\n/**\n * Align enum with faces option\n */\nexport enum EAlignFacesOptions {\n left = 'left',\n right = 'right',\n center = 'center',\n bottom = 'bottom',\n top = 'top',\n faces = 'faces',\n}\n\n/**\n * Fit enum\n */\nexport enum EFitOptions {\n clip = 'clip',\n crop = 'crop',\n scale = 'scale',\n max = 'max',\n}\n\n/**\n * Blur enum\n */\nexport enum EBlurMode {\n linear = 'linear',\n gaussian = 'gaussian',\n}\n\n/**\n * Shapes enum\n */\nexport enum EShapeType {\n oval = 'oval',\n rect = 'rect',\n}\n\n/**\n * Noise type enum\n */\nexport enum ENoiseType {\n none = 'none',\n low = 'low',\n medium = 'medium',\n high = 'high',\n}\n\n/**\n * Style type enum\n */\nexport enum EStyleType {\n artwork = 'artwork',\n photo = 'photo',\n}\n\n/**\n * Color space enum\n */\nexport enum EColorspaceType {\n RGB = 'RGB',\n CMYK = 'CMYK',\n Input = 'Input',\n}\n\n/**\n * Crop faces options enum\n */\nexport enum ECropfacesType {\n thumb = 'thumb',\n crop = 'crop',\n fill = 'fill',\n}\n\n/**\n * SmartCrop mode options enum\n */\nexport enum ESmartCropMode {\n fit = 'fit',\n auto = 'auto',\n}\n\nexport enum EImageWatermarkPosition {\n top = 'top',\n middle = 'middle',\n bottom = 'bottom',\n left = 'left',\n center = 'center',\n right = 'right',\n}\n\n/**\n * Convert to format\n */\nexport enum EVideoTypes {\n h264 = 'h264',\n h264_hi = 'h264.hi',\n webm = 'webm',\n 'webm-hi' = 'webm.hi',\n ogg = 'ogg',\n 'ogg-hi' = 'ogg.hi',\n 'hls-variant' = 'hls.variant',\n mp3 = 'mp3',\n oga = 'oga',\n m4a = 'm4a',\n aac = 'aac',\n hls = 'hls.variant.audio',\n}\n\nexport enum EUrlscreenshotAgent {\n desktop = 'desktop',\n mobile = 'mobile',\n}\n\nexport enum EUrlscreenshotMode {\n all = 'all',\n window = 'window',\n}\n\nexport enum EUrlscreenshotOrientation {\n portrait = 'portrait',\n landscape = 'landscape',\n}\n\n/**\n * Video storage location\n */\nexport enum EVideoLocations {\n s3 = 's3',\n azure = 'azure',\n gcs = 'gcs',\n rackspace = 'rackspace',\n dropbox = 'dropbox',\n}\n\nexport enum EVideoAccess {\n private = 'private',\n public = 'public',\n}\n\nexport enum EVideoAccessMode {\n preserve = 'preserve',\n constrain = 'constrain',\n letterbox = 'letterbox',\n pad = 'pad',\n crop = 'crop',\n}\n\n/**\n * @see https://www.filestack.com/docs/image-transformations\n */\nexport interface TransformOptions {\n flip?: boolean;\n compress?: boolean;\n flop?: boolean;\n no_metadata?: boolean;\n pjpg?: {\n quality: number;\n metadata: boolean;\n };\n smart_crop?: {\n mode?: ESmartCropMode\n width: number;\n height: number;\n };\n watermark?: {\n files: string;\n size?: number;\n position?: EImageWatermarkPosition | EImageWatermarkPosition[];\n };\n imagesize?: boolean;\n enchance?: boolean;\n redeye?: boolean;\n monochrome?: boolean;\n negative?: boolean;\n tags?: boolean;\n sfw?: boolean;\n store?: {\n filename?: string,\n location?: string,\n path?: string,\n container?: string,\n region?: string;\n access?: string;\n base64decode?: boolean;\n };\n resize?: {\n width?: number;\n height?: number;\n fit?: EFitOptions;\n align?: EAlignFacesOptions;\n };\n crop?: {\n dim: [number, number, number, number]\n };\n rotate?: {\n deg: number | string;\n color?: string;\n background?: string;\n };\n detect_faces?: {\n minsize?: number;\n maxsize?: number;\n color?: string;\n export?: boolean;\n } | true;\n crop_faces?: {\n mode?: ECropfacesType;\n width?: number;\n height?: number;\n faces?: number | string;\n buffer?: number;\n };\n pixelate_faces?: {\n faces?: number | string;\n minsize?: number;\n maxsize?: number;\n buffer?: number;\n amount?: number;\n blur?: number;\n type?: EShapeType;\n };\n blur_faces?: {\n faces?: number | string;\n minsize?: number;\n maxsize?: number;\n buffer?: number;\n amount?: number;\n blur?: number;\n type?: EShapeType;\n };\n rounded_corners?: {\n radius?: number;\n blur?: number;\n background?: string;\n } | true;\n vignette?: {\n amount?: number;\n blurmode?: EBlurMode;\n background?: string;\n };\n polaroid?: {\n color?: string;\n rotate?: number;\n background?: string;\n } | true;\n torn_edges?: {\n spread?: [number, number];\n background?: string;\n } | true;\n shadow?: {\n blur?: number;\n opacity?: number;\n vector?: [number, number];\n color?: string;\n background?: string;\n } | true;\n circle?: {\n background?: string;\n } | true;\n border?: {\n width?: number;\n color?: string;\n background?: string;\n } | true;\n sharpen?: {\n amount: number;\n } | true;\n blur?: {\n amount: number;\n } | true;\n blackwhite?: {\n threshold: number;\n } | true;\n sepia?: {\n tone: number;\n } | true;\n pixelate?: {\n amount: number;\n } | true;\n oil_paint?: {\n amount: number;\n } | true;\n modulate?: {\n brightness?: number;\n hue?: number;\n saturation?: number;\n } | true;\n partial_pixelate?: {\n amount?: number;\n blur?: number;\n type?: EShapeType;\n objects?: [[number, number, number, number]];\n };\n partial_blur?: {\n amount: number;\n blur?: number;\n type?: EShapeType;\n objects?: [[number, number, number, number]];\n };\n collage?: {\n margin?: number;\n width?: number;\n height?: number;\n color?: string;\n fit?: EFitOptions,\n files: [string];\n };\n upscale?: {\n upscale?: boolean;\n noise?: ENoiseType;\n style?: EStyleType;\n } | true;\n ascii?: {\n background?: string;\n foreground?: string;\n colored?: boolean;\n size?: number;\n reverse?: boolean;\n } | true;\n quality?: {\n value: number;\n };\n security?: {\n policy: string;\n signature?: string;\n };\n output?: {\n format: string;\n colorspace?: string;\n strip?: boolean;\n quality?: number;\n page?: number;\n compress?: boolean;\n density?: number;\n background?: string;\n secure?: boolean;\n docinfo?: boolean;\n pageformat?: string;\n pageorientation?: string;\n };\n cache?: {\n cache?: boolean;\n expiry: number;\n };\n // audio/video\n video_convert?: {\n aspect_mode: EVideoAccessMode;\n preset?: EVideoTypes;\n force?: boolean;\n title?: string;\n extname?: string;\n filename?: string;\n location?: EVideoLocations;\n path?: string;\n access?: EVideoAccess;\n container?: string;\n audio_bitrate?: number;\n upscale: boolean;\n video_bitrate?: number;\n audio_sample_rate?: number;\n audio_channels?: number;\n clip_length?: string;\n clip_offset?: string;\n width?: number;\n height?: number;\n two_pass?: boolean;\n fps?: number;\n keyframe_interval?: number;\n watermark_url?: string;\n watermark_top?: number;\n watermark_bottom?: number;\n watermark_right?: number;\n watermark_left?: number;\n watermark_width?: number;\n watermark_height?: number;\n };\n urlscreenshot?: {\n agent?: EUrlscreenshotAgent;\n width?: number;\n height?: number;\n mode?: EUrlscreenshotMode;\n delay?: number;\n orientation?: EUrlscreenshotOrientation;\n device?: string;\n } | true;\n pdfinfo?: {\n colorinfo?: boolean\n } | true;\n pdfconvert?: {\n pageorientation?: string\n pageformat?: string\n pages?: (string | number)[]\n };\n}\n\n/**\n * Creates filestack transform url.\n * Transform params can be provided in camelCase or snakeCase style\n *\n * @example\n * ```js\n * // camelCase\n * console.log(transform(session, {\n * partialPixelate: {\n * objects: [[10, 20, 200, 250], [275, 91, 500, 557]],\n * },\n * }, 'testfile'));\n * ```\n * result => https://cdn.filestackcontent.com/partial_pixelate=objects:[[10,20,200,250],[275,91,500,557]]/testfile\n *\n * ```js\n * // snake_case\n * console.log(transform(session, {\n * partial_pixelate: {\n * objects: [[10, 20, 200, 250], [275, 91, 500, 557]],\n * },\n * }, 'testfile'));\n * ```\n * result => https://cdn.filestackcontent.com/partial_pixelate=objects:[[10,20,200,250],[275,91,500,557]]/testfile\n *\n * Client.transform is deprecated. Use Filelink class instead\n *\n * @private\n * @throws Error\n * @param options Transformation options\n * @param url url, handle or array of elements\n */\nexport const transform = (session: Session, url: string | string[], options: TransformOptions = {}, b64: boolean = false): string => {\n options = toSnakeCase(options);\n\n if (session.policy && session.signature) {\n options.security = {\n policy: session.policy,\n signature: session.signature,\n };\n }\n\n const filelink = new Filelink(url, session.apikey);\n filelink.setCname(session.cname);\n filelink.setBase64(b64);\n\n Object.keys(options).forEach((key: keyof TransformOptions) => {\n if (typeof options[key] === 'boolean' && !options[key] && key !== 'cache') {\n return;\n }\n\n filelink.addTask(key, options[key]);\n });\n\n return filelink.toString();\n};\n","/*\n * Copyright (c) 2018 by Filestack.\n * Some rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport const StoreParamsSchema = {\n '$schema': 'http://json-schema.org/draft-07/schema#',\n title: 'Filestack Store',\n description: 'Filestack Store Options',\n type: 'object',\n additionalProperties: false,\n properties: {\n filename: {\n oneOf: [{\n type: 'string',\n }, {\n format: 'callback',\n }],\n },\n location: {\n '$ref': 'locationsDef',\n },\n path: {\n type: 'string',\n },\n container: {\n type: 'string',\n },\n region: {\n '$ref': 'regionsDef',\n },\n access: {\n type: 'string',\n enum: ['public', 'private'],\n default: 'private',\n },\n base64decode: {\n type: 'boolean',\n },\n workflows: {\n '$ref': 'workflowsDef',\n },\n disableStorageKey: {\n type: 'boolean',\n },\n tags: {\n type: 'object',\n additionalProperties: {\n type: 'string',\n },\n },\n sanitizer: {\n oneOf: [{\n type: 'boolean',\n }, {\n type: 'object',\n additionalProperties: false,\n properties: {\n exclude: {\n type: 'array',\n items: [{\n type: 'string',\n }],\n },\n replacement: {\n type: 'string',\n },\n },\n }],\n },\n },\n};\n","/*\n * Copyright (c) 2018 by Filestack.\n * Some rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport const PreviewParamsSchema = {\n '$schema': 'http://json-schema.org/draft-07/schema#',\n title: 'Filestack Preview',\n description: 'Filestack Preview Options',\n type: 'object',\n additionalProperties: false,\n properties: {\n id: {\n type: 'string',\n },\n css: {\n type: 'string',\n },\n },\n};\n","/*\n * Copyright (c) 2018 by Filestack.\n * Some rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport const UploadParamsSchema = {\n $schema: 'http://json-schema.org/draft-07/schema#',\n title: 'Filestack Upload',\n description: 'Filestack Upload Options',\n type: 'object',\n additionalProperties: false,\n properties: {\n partSize: {\n type: 'integer',\n minimum: 5 * 1024 * 1024,\n },\n concurrency: {\n type: 'integer',\n minimum: 1,\n maximum: 20,\n },\n progressInterval: {\n type: 'integer',\n minimum: 1,\n },\n retry: {\n type: 'integer',\n minimum: 0,\n maximum: 20,\n },\n retryFactor: {\n type: 'integer',\n },\n retryMaxTime: {\n type: 'integer',\n },\n timeout: {\n type: 'integer',\n minimum: 1,\n maximum: 60 * 60 * 1000,\n },\n intelligent: {\n oneOf: [\n {\n type: 'boolean',\n },\n {\n type: 'string',\n enum: ['fallback'],\n },\n ],\n },\n intelligentChunkSize: {\n type: 'integer',\n },\n onProgress: {\n format: 'callback',\n },\n onRetry: {\n format: 'callback',\n },\n disableIntegrityCheck: {\n type: 'boolean',\n },\n tags: {\n type: 'object',\n maxItems: 10,\n additionalProperties: {\n type: 'string',\n maxlength: 256,\n },\n },\n },\n};\n","/*\n * Copyright (c) 2018 by Filestack.\n * Some rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { UploadParamsSchema } from './upload.schema';\n\nexport const PickerParamsSchema = {\n $schema: 'http://json-schema.org/draft-07/schema#',\n title: 'Filestack Picker',\n description: 'Filestack Picker Options',\n type: 'object',\n additionalProperties: false,\n // required: ['container'],\n properties: {\n allowManualRetry: {\n type: 'boolean',\n },\n accept: {\n additionalProperties: false,\n oneOf: [\n {\n type: 'string',\n },\n {\n type: 'array',\n minItems: 1,\n items: [\n {\n type: 'string',\n },\n ],\n },\n ],\n },\n acceptFn: {\n format: 'callback',\n },\n fromSources: {\n type: 'array',\n items: [\n {\n type: ['string', 'object'],\n additionalProperties: false,\n enum: [\n 'local_file_system',\n 'url',\n 'imagesearch',\n 'facebook',\n 'instagram',\n 'googledrive',\n 'unsplash',\n 'dropbox',\n 'webcam',\n 'video',\n 'audio',\n 'box',\n 'github',\n 'gmail',\n 'googlephotos',\n 'onedrive',\n 'onedriveforbusiness',\n 'clouddrive',\n 'googlephotos',\n 'customsource',\n 'tint',\n ],\n },\n ],\n },\n container: {\n format: 'HTMLContainer',\n },\n cleanupImageExif: {\n oneOf: [\n {\n type: 'boolean',\n },\n {\n type: 'object',\n additionalProperties: false,\n properties: {\n keepOrientation: {\n type: 'boolean',\n },\n keepICCandAPP: {\n type: 'boolean',\n },\n },\n },\n ],\n },\n displayMode: {\n type: 'string',\n enum: ['inline', 'overlay', 'dropPane'],\n },\n concurrency: {\n type: 'integer',\n minimum: 1,\n maximum: 20,\n },\n supportEmail: {\n type: 'string',\n },\n customSourceContainer: {\n type: 'string',\n },\n customSourcePath: {\n type: 'string',\n },\n customSourceName: {\n type: 'string',\n },\n disableStorageKey: {\n type: 'boolean',\n },\n disableTransformer: {\n type: 'boolean',\n },\n disableThumbnails: {\n type: 'boolean',\n },\n exposeOriginalFile: {\n type: 'boolean',\n },\n globalDropZone: {\n type: 'boolean',\n },\n hideModalWhenUploading: {\n type: 'boolean',\n },\n imageDim: {\n type: 'array',\n minItems: 2,\n maxItems: 2,\n items: [\n {\n type: 'integer',\n minimum: 1,\n },\n ],\n },\n imageMax: {\n type: 'array',\n minItems: 2,\n maxItems: 2,\n items: [\n {\n type: 'integer',\n minimum: 1,\n },\n ],\n },\n imageMin: {\n type: 'array',\n minItems: 2,\n maxItems: 2,\n items: [\n {\n type: 'integer',\n minimum: 1,\n },\n ],\n },\n imageMinMaxBlock: {\n type: 'boolean',\n default: false,\n },\n lang: {\n type: 'string',\n enum: ['ca', 'da', 'de', 'en', 'es', 'fr', 'he', 'it', 'ja', 'ko', 'nl', 'no', 'pl', 'pt', 'sv', 'ru', 'vi', 'zh', 'tr', 'ar'],\n },\n minFiles: {\n type: 'integer',\n minimum: 1,\n maximum: 1000000,\n },\n maxFiles: {\n type: 'integer',\n minimum: 1,\n maximum: 1000000,\n },\n maxSize: {\n type: 'integer',\n minimum: 1,\n },\n modalSize: {\n type: 'array',\n minItems: 2,\n maxItems: 2,\n items: [\n {\n type: 'integer',\n minimum: 1,\n maximum: 1000000,\n },\n ],\n },\n rootId: {\n type: 'string',\n },\n startUploadingWhenMaxFilesReached: {\n type: 'boolean',\n },\n uploadInBackground: {\n type: 'boolean',\n },\n videoResolution: {\n type: 'string',\n },\n onCancel: {\n format: 'callback',\n },\n onClose: {\n format: 'callback',\n },\n onOpen: {\n format: 'callback',\n },\n onFileSelected: {\n format: 'callback',\n },\n onFileUploadCancel: {\n format: 'callback',\n },\n onFileUploadStarted: {\n format: 'callback',\n },\n onFileUploadFinished: {\n format: 'callback',\n },\n onFileUploadFailed: {\n format: 'callback',\n },\n onFileUploadProgress: {\n format: 'callback',\n },\n onUploadStarted: {\n format: 'callback',\n },\n onUploadDone: {\n format: 'callback',\n },\n onFileCropped: {\n format: 'callback',\n },\n storeTo: {\n additionalProperties: false,\n type: 'object',\n properties: {\n filename: {\n type: 'string',\n },\n location: {\n $ref: 'locationsDef',\n },\n container: {\n type: 'string',\n },\n path: {\n type: 'string',\n },\n region: {\n type: 'string',\n },\n access: {\n type: 'string',\n enum: ['public', 'private'],\n },\n workflows: {\n $ref: 'workflowsDef',\n },\n },\n },\n viewType: {\n type: 'string',\n enum: ['grid', 'list'],\n },\n transformations: {\n type: 'object',\n additionalProperties: false,\n properties: {\n circle: {\n type: 'boolean',\n },\n rotate: {\n type: 'boolean',\n },\n force: {\n type: 'boolean',\n },\n crop: {\n oneOf: [\n {\n type: 'boolean',\n },\n {\n type: 'object',\n additionalProperties: false,\n properties: {\n force: {\n type: 'boolean',\n },\n aspectRatio: {\n type: 'number',\n },\n },\n },\n ],\n },\n },\n },\n customText: {\n type: 'object',\n patternProperties: {\n '.*': { type: 'string' },\n },\n },\n cropFiles: {\n type: 'array',\n minItems: 1,\n },\n loadCss: {\n type: 'string',\n },\n failOverMaxFiles: {\n type: 'boolean',\n },\n dropPane: {\n type: 'object',\n properties: {\n cropFiles: {\n type: 'array',\n minItems: 1,\n },\n customText: {\n type: 'string',\n },\n disableClick: {\n type: 'boolean',\n },\n overlay: {\n type: 'boolean',\n },\n showIcon: {\n type: 'boolean',\n },\n showProgress: {\n type: 'boolean',\n },\n onDragEnter: {\n format: 'callback',\n },\n onProgress: {\n format: 'callback',\n },\n onDragLeave: {\n format: 'callback',\n },\n onDragOver: {\n format: 'callback',\n },\n onDrop: {\n format: 'callback',\n },\n onSuccess: {\n format: 'callback',\n },\n onError: {\n format: 'callback',\n },\n onClick: {\n format: 'callback',\n },\n },\n },\n errorsTimeout: {\n type: 'number',\n minimum: 0,\n },\n customAuthText: {\n type: 'object',\n patternProperties: {\n '.*': {\n additionalProperties: false,\n type: 'object',\n required: ['top', 'bottom'],\n properties: {\n top: {\n type: 'string',\n },\n bottom: {\n type: 'string',\n },\n },\n },\n },\n },\n uploadConfig: {\n type: 'object',\n additionalProperties: false,\n properties: {\n // manual import upload definitions\n ...UploadParamsSchema.properties,\n tags: {\n type: 'object',\n additionalProperties: {\n anyOf: [\n {\n type: 'string',\n },\n {\n format: 'callback',\n },\n ],\n },\n },\n },\n },\n useSentryBreadcrumbs: {\n type: 'boolean',\n },\n pasteMode: {\n type: 'object',\n additionalProperties: false,\n properties: {\n pasteToFirstInViewPort: {\n type: 'boolean',\n },\n pasteToFirstInstance: {\n type: 'boolean',\n },\n },\n },\n },\n};\n","/*\n * Copyright (c) 2018 by Filestack.\n * Some rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport const MetadataParamsSchema = {\n '$schema': 'http://json-schema.org/draft-07/schema#',\n title: 'Filestack Metadata',\n description: 'Filestack Metadata Options',\n type: 'object',\n additionalProperties: false,\n properties: {\n size: {\n type: 'boolean',\n },\n mimetype: {\n type: 'boolean',\n },\n filename: {\n type: 'boolean',\n },\n width: {\n type: 'boolean',\n },\n metadata: {\n type: 'boolean',\n },\n height: {\n type: 'boolean',\n },\n uploaded: {\n type: 'boolean',\n },\n writeable: {\n type: 'boolean',\n },\n cloud: {\n type: 'boolean',\n },\n sourceUrl: {\n type: 'boolean',\n },\n md5: {\n type: 'boolean',\n },\n sha1: {\n type: 'boolean',\n },\n sha224: {\n type: 'boolean',\n },\n sha256: {\n type: 'boolean',\n },\n sha384: {\n type: 'boolean',\n },\n sha512: {\n type: 'boolean',\n },\n location: {\n type: 'boolean',\n },\n path: {\n type: 'boolean',\n },\n container: {\n type: 'boolean',\n },\n exif: {\n type: 'boolean',\n },\n },\n};\n","/*\n * Copyright (c) 2018 by Filestack.\n * Some rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport const RetrieveParamsSchema = {\n '$schema': 'http://json-schema.org/draft-07/schema#',\n title: 'Filestack Retrieve',\n description: 'Filestack Retrieve Options',\n type: 'object',\n additionalProperties: false,\n properties: {\n metadata: {\n type: 'boolean',\n },\n head: {\n type: 'boolean',\n },\n dl: {\n type: 'boolean',\n },\n cache: {\n type: 'boolean',\n },\n extension: {\n type: 'string',\n },\n },\n};\n","/*\n * Copyright (c) 2018 by Filestack\n * Some rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { FsRequestOptions, FsResponse } from './types';\nimport { AdapterInterface } from './adapters/interface';\nimport { FsRequestError } from './error';\nimport { shouldRetry } from './helpers/shouldRetry';\nimport Debug from 'debug';\n\nconst debug = Debug('fs:request:dispatch');\n\n/**\n * Request dispatcher\n *\n * @export\n * @class Dispatch\n */\nexport class Dispatch {\n adapter: AdapterInterface;\n\n /**\n * Creates an instance of Dispatch.\n *\n * @param {AdapterInterface} adapter http | XHR adapater\n * @memberof Dispatch\n */\n constructor(adapter: AdapterInterface) {\n this.adapter = adapter;\n }\n\n /**\n * Dispatch request adding retry policy\n * @todo add data preprocesor\n *\n * @param {FsRequestOptions} config\n * @returns {Promise<FsResponse>}\n * @memberof Dispatch\n */\n public request(config: FsRequestOptions): Promise<FsResponse> {\n config.headers = config.headers || {};\n debug('Dispatching request %O', config);\n return this.adapter.request(config).catch((reason: FsRequestError) => {\n debug('Request error \"%s\": %O', reason, reason.response);\n return this.retry(reason);\n });\n }\n\n /**\n * Request retrier\n *\n * @private\n * @param {FsRequestError} err\n * @returns\n * @memberof Dispatch\n */\n private retry(err: FsRequestError) {\n const config = err.config;\n\n if (!shouldRetry(err)) {\n debug('[Retry] Request error is not retriable. Exiting');\n return Promise.reject(err);\n }\n\n if (!config.retry) {\n debug('[Retry] Retry config not found. Exiting');\n return Promise.reject(err);\n }\n\n const retryConfig = config.retry;\n let attempts = config.runtime && config.runtime.retryCount ? config.runtime.retryCount : 0;\n\n if (retryConfig.retry && retryConfig.retry <= attempts) {\n debug('[Retry] Retry attempts reached %d. Exiting', attempts);\n return Promise.reject(err);\n }\n\n const retryDelay = Math.max(Math.min(retryConfig.retryMaxTime, retryConfig.retryFactor ** attempts * 1000), 1);\n\n config.runtime = {\n ...config.runtime,\n retryCount: attempts + 1,\n };\n\n debug(`[Retry] Retrying request to ${config.url}, count ${attempts} of ${retryConfig.retry} - Delay: ${retryDelay}`);\n\n return new Promise<FsResponse>(resolve => {\n setTimeout(() => resolve(this.request(config)), retryDelay);\n });\n }\n}\n","/*\n * Copyright (c) 2018 by Filestack\n * Some rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport var RequestAdapter = require('./adapters/xhr').XhrAdapter;\n\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvcmVxdWVzdC9yZXF1ZXN0X2FkYXB0ZXIuYnJvd3Nlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFDSCxNQUFNLENBQUMsSUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsVUFBVSxDQUFDIiwiZmlsZSI6ImxpYi9yZXF1ZXN0L3JlcXVlc3RfYWRhcHRlci5icm93c2VyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOCBieSBGaWxlc3RhY2tcbiAqIFNvbWUgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuZXhwb3J0IGNvbnN0IFJlcXVlc3RBZGFwdGVyID0gcmVxdWlyZSgnLi9hZGFwdGVycy94aHInKS5YaHJBZGFwdGVyO1xuIl19\n","/*\n * Copyright (c) 2018 by Filestack\n * Some rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { FsRequestOptions, FsHttpMethod, FsResponse } from './types';\nimport { Dispatch } from './dispatch';\nimport { RequestAdapter } from './request_adapter.node';\n\n/**\n * Main isomorphic Filestack request library\n *\n * @export\n * @class FsRequest\n */\nexport class FsRequest {\n /**\n * Request static instance\n *\n * @private\n * @static\n * @type {FsRequest}\n * @memberof FsRequest\n */\n private static instance: FsRequest;\n\n /**\n * Default request options\n *\n * @private\n * @type {RequestOptions}\n * @memberof FsRequest\n */\n private defaults: FsRequestOptions;\n\n /**\n * Request Dispatcher\n *\n * @private\n * @type {Dispatch}\n * @memberof FsRequest\n */\n private dispatcher: Dispatch;\n\n /**\n * Creates an instance of Request.\n *\n * @param {RequestOptions} [config]\n * @memberof FsRequest\n */\n constructor(config?: FsRequestOptions) {\n\n this.defaults = config;\n this.dispatcher = new Dispatch(new RequestAdapter());\n }\n\n /**\n * Returns static FsRequest instance\n *\n * @private\n * @static\n * @returns\n * @memberof FsRequest\n */\n private static getInstance() {\n if (!FsRequest.instance) {\n FsRequest.instance = new FsRequest();\n }\n\n return FsRequest.instance;\n }\n\n /**\n * Run request with given adapter\n *\n * @param {RequestOptions} config\n * @returns\n * @memberof Request\n */\n\n public dispatch(config: FsRequestOptions) {\n if (!config.method) {\n config.method = FsHttpMethod.GET;\n }\n\n return this.dispatcher.request(Object.assign({}, this.defaults, config));\n }\n\n /**\n * Dispatch request\n *\n * @static\n * @param {string} url\n * @param {FsRequestOptions} config\n * @returns {Promise<FsResponse>}\n * @memberof FsRequest\n */\n public static dispatch(url: string, config: FsRequestOptions): Promise<FsResponse> {\n return FsRequest.getInstance().dispatch(Object.assign({}, config || {}, { url }));\n }\n\n /**\n * Dispatch GET request\n *\n * @static\n * @param {string} url\n * @param {FsRequestOptions} config\n * @returns {Promise<FsResponse>}\n * @memberof FsRequest\n */\n public static get(url: string, config?: FsRequestOptions): Promise<FsResponse> {\n return FsRequest.getInstance().dispatch(Object.assign({}, config || {}, { method: FsHttpMethod.GET, url }));\n }\n\n /**\n * Dispatch HEAD request\n *\n * @static\n * @param {string} url\n * @param {FsRequestOptions} config\n * @returns {Promise<FsResponse>}\n * @memberof FsRequest\n */\n public static head(url: string, config?: FsRequestOptions): Promise<FsResponse> {\n return FsRequest.getInstance().dispatch(Object.assign({}, config || {}, { method: FsHttpMethod.HEAD, url }));\n }\n\n /**\n * Dispatch OPTIONS request\n *\n * @static\n * @param {string} url\n * @param {FsRequestOptions} config\n * @returns {Promise<FsResponse>}\n * @memberof FsRequest\n */\n public static options(url: string, config?: FsRequestOptions): Promise<FsResponse> {\n return FsRequest.getInstance().dispatch(Object.assign({}, config || {}, { method: FsHttpMethod.OPTIONS, url }));\n }\n\n /**\n * Dispatch PURGE request\n *\n * @static\n * @param {string} url\n * @param {FsRequestOptions} config\n * @returns {Promise<FsResponse>}\n * @memberof FsRequest\n */\n public static purge(url: string, config?: FsRequestOptions): Promise<FsResponse> {\n return FsRequest.getInstance().dispatch(Object.assign({}, config || {}, { method: FsHttpMethod.PURGE, url }));\n }\n\n /**\n * Dispatch DELETE request\n *\n * @static\n * @param {string} url\n * @param {FsRequestOptions} config\n * @returns {Promise<FsResponse>}\n * @memberof FsRequest\n */\n public static delete(url: string, config?: FsRequestOptions): Promise<FsResponse> {\n return FsRequest.getInstance().dispatch(Object.assign({}, config || {}, { method: FsHttpMethod.DELETE, url }));\n }\n\n /**\n * Dispatch POST request\n *\n * @static\n * @param {string} url\n * @param {*} [data]\n * @param {FsRequestOptions} [config]\n * @returns {Promise<FsResponse>}\n * @memberof FsRequest\n */\n public static post(url: string, data?: any, config?: FsRequestOptions): Promise<FsResponse> {\n return FsRequest.getInstance().dispatch(Object.assign({}, config || {}, { method: FsHttpMethod.POST, url, data }));\n }\n\n /**\n * Dispatch PUT request\n *\n * @static\n * @param {string} url\n * @param {*} [data]\n * @param {FsRequestOptions} [config]\n * @returns {Promise<FsResponse>}\n * @memberof FsRequest\n */\n public static put(url: string, data?: any, config?: FsRequestOptions): Promise<FsResponse> {\n return FsRequest.getInstance().dispatch(Object.assign({}, config || {}, { method: FsHttpMethod.PUT, url, data }));\n }\n\n /**\n * Dispatch PATCH request\n *\n * @static\n * @param {string} url\n * @param {*} [data]\n * @param {FsRequestOptions} [config]\n * @returns {Promise<FsResponse>}\n * @memberof FsRequest\n */\n public static path(url: string, data?: any, config?: FsRequestOptions): Promise<FsResponse> {\n return FsRequest.getInstance().dispatch(Object.assign({}, config || {}, { method: FsHttpMethod.PATH, url, data }));\n }\n}\n\nexport default FsRequest;\n","/*\n * Copyright (c) 2018 by Filestack\n * Some rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { EventEmitter } from 'eventemitter3';\n\n/**\n * Filestack token that allow pause, resume or cancel given upload\n *\n * @export\n * @class FsToken\n * @extends {EventEmitter}\n */\nexport class FsCancelToken extends EventEmitter {\n\n /**\n * Cancel request action\n *\n * @param {(string | Error)} [reason]\n * @memberof Token\n */\n public cancel(reason?: string | Error) {\n this.emit('cancel', reason);\n\n this.removeAllListeners();\n }\n\n}\n","/*\n * Copyright (c) 2018 by Filestack.\n * Some rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Security, Session } from '../client';\nimport { Filelink } from './../filelink';\nimport { removeEmpty } from '../utils';\nimport { FsResponse } from './../request/types';\nimport { FilestackError } from './../../filestack_error';\nimport { getValidator, MetadataParamsSchema, RetrieveParamsSchema } from './../../schema';\nimport { FsRequest, FsHttpMethod } from '../request';\n\n/**\n * Remove given file\n *\n * @private\n * @param session\n * @param handle\n * @param security\n */\nexport const remove = (session: Session, handle?: string, skipStorage?: boolean, security?: Security): Promise<any> => {\n if (!handle || typeof handle !== 'string') {\n throw new FilestackError('A valid Filestack handle is required for remove');\n }\n\n if (!(session.policy && session.signature) && (!security || !(security.policy && security.signature))) {\n throw new FilestackError('Security policy and signature are required for remove');\n }\n\n const fileApiUrl = session.urls.fileApiUrl;\n const baseURL = `${fileApiUrl}/${handle}`;\n const options: any = {\n key: session.apikey,\n policy: (security && security.policy) || session.policy,\n signature: (security && security.signature) || session.signature,\n };\n\n if (skipStorage) {\n options.skip_storage = true;\n }\n\n return FsRequest.delete(baseURL, {\n filestackHeaders: false,\n params: removeEmpty(options),\n });\n};\n\nexport interface MetadataOptions {\n size?: boolean;\n mimetype?: boolean;\n filename?: boolean;\n width?: boolean;\n height?: boolean;\n uploaded?: boolean;\n writeable?: boolean;\n cloud?: boolean;\n sourceUrl?: boolean;\n md5?: boolean;\n sha1?: boolean;\n sha224?: boolean;\n sha256?: boolean;\n sha384?: boolean;\n sha512?: boolean;\n location?: boolean;\n path?: boolean;\n container?: boolean;\n exif?: boolean;\n}\n\n/**\n * Returns file metadata\n *\n * @private\n * @param session\n * @param handle\n * @param opts\n * @param security\n */\nexport const metadata = (session: Session, handle?: string, opts?: MetadataOptions, security?: Security): Promise<any> => {\n if (!handle || typeof handle !== 'string') {\n throw new FilestackError('A valid Filestack handle is required for metadata');\n }\n\n const validateRes = getValidator(MetadataParamsSchema)(opts);\n\n if (validateRes.errors.length) {\n throw new FilestackError(`Invalid metadata params`, validateRes.errors);\n }\n\n const options: any = { ...opts };\n options.source_url = options.sourceUrl; // source_url is snake_case\n options.policy = (security && security.policy) || session.policy;\n options.signature = (security && security.signature) || session.signature;\n\n const baseURL = `${session.urls.fileApiUrl}/${handle}/metadata`;\n return new Promise((resolve, reject) => {\n FsRequest.get(baseURL, { params: removeEmpty(options), filestackHeaders: false })\n .then(res => resolve({ ...res.data, handle }))\n .catch(reject);\n });\n};\n\n/**\n * Download file to blob or buffer format\n *\n * @param session\n * @param handle\n */\nexport const download = (session: Session, handle: string, security?: Security): Promise<FsResponse> => {\n const fl = new Filelink(handle, session.apikey);\n\n const policy = (security && security.policy) || session.policy;\n const signature = (security && security.signature) || session.signature;\n\n if (policy && signature) {\n fl.security({ signature, policy });\n }\n\n return FsRequest.dispatch(fl.toString(), { method: FsHttpMethod.GET, blobResponse: true });\n};\n\nexport interface RetrieveOptions {\n metadata?: boolean;\n head?: boolean;\n dl?: boolean;\n extension?: string;\n cache?: boolean;\n}\n\n/**\n * Returns file information\n *\n * @private\n * @deprecated\n * @param session\n * @param handle\n * @param options\n * @param security\n */\nexport const retrieve = (session: Session, handle: string, options: RetrieveOptions = {}, security?: Security): Promise<Object | Blob> => {\n if (!handle || handle.length === 0 || typeof handle !== 'string') {\n throw new FilestackError('File handle is required');\n }\n\n console.info('Retrieve method is deprecated and it will be removed. Please use metadata or download');\n\n const validateRes = getValidator(RetrieveParamsSchema)(options);\n\n if (validateRes.errors.length) {\n throw new FilestackError(`Invalid retrieve params`, validateRes.errors);\n }\n\n const requestOptions: any = { ...options };\n requestOptions.key = session.apikey;\n requestOptions.policy = (security && security.policy) || session.policy;\n requestOptions.signature = (security && security.signature) || session.signature;\n\n let method: FsHttpMethod = FsHttpMethod.GET;\n\n if (requestOptions.head) {\n method = FsHttpMethod.HEAD;\n delete requestOptions.head;\n }\n\n let extension;\n\n if (requestOptions.extension && requestOptions.extension.length) {\n extension = requestOptions.extension;\n delete requestOptions.extension;\n }\n\n let metadata;\n if (requestOptions.metadata) {\n if (method === FsHttpMethod.HEAD) {\n throw new FilestackError('Head and metadata options cannot be used together');\n }\n\n metadata = requestOptions.metadata;\n delete requestOptions.metadata;\n }\n\n const baseURL = `${session.urls.fileApiUrl}/${handle}` + (extension ? `+${extension}` : '') + (metadata ? '/metadata' : '');\n\n return new Promise((resolve, reject) => {\n FsRequest.dispatch(baseURL, {\n method,\n filestackHeaders: false,\n params: removeEmpty(requestOptions),\n })\n .then(res => resolve(method === FsHttpMethod.HEAD ? res.headers : res.data))\n .catch(reject);\n });\n};\n","/*\n * Copyright (c) 2019 by Filestack.\n * Some rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { md5, sanitizeName, SanitizeOptions } from './../../utils';\n\nexport interface UploadTags {\n [key: string]: string;\n}\n\nexport interface FileInstance {\n name: string;\n type: string;\n size: number;\n slice: (start: number, end: number) => Promise<ArrayBuffer>;\n release?: () => void;\n}\n\nexport const enum FileState {\n INIT = 'Initialized',\n PROGRESS = 'Progress',\n STORED = 'Stored',\n INTRANSIT = 'InTransit',\n FAILED = 'Failed',\n}\n\nexport interface FilePartMetadata {\n startByte: number;\n endByte: number;\n partNumber: number;\n size: number;\n}\n\nexport interface FilePart extends FilePartMetadata {\n buffer: Buffer | ArrayBuffer;\n md5?: string;\n}\n\nexport interface FileChunk extends FilePart {\n offset: number; // offset for chunk - from part start\n}\n\n/**\n * File representation to unify file object in nodejs and browser\n *\n * @export\n * @class File\n */\nexport class File {\n\n public status: FileState;\n\n public handle: string;\n\n public url: string;\n\n public container: string;\n\n public key: string;\n\n public workflows: any[];\n\n public uploadTags: UploadTags;\n\n constructor(private readonly _file: FileInstance, private readonly _sanitizeOptions?: SanitizeOptions) {\n this._file.name = sanitizeName(this._file.name, this._sanitizeOptions);\n }\n\n /**\n * Returns file name\n *\n * @returns {string}\n * @memberof File\n */\n public get name(): string {\n return this._file.name;\n }\n\n /**\n * Alias for name getter\n *\n * @readonly\n * @type {string}\n * @memberof File\n */\n public get filename(): string {\n return this.name;\n }\n\n /**\n * Sets new file name and cleanup extra chars\n *\n * @memberof File\n */\n public set name(val: string) {\n this._file.name = sanitizeName(val, this._sanitizeOptions);\n }\n\n /**\n * Sets custom name using string or function\n * Name will be sanitized\n *\n * @memberof File\n */\n public set customName(val: ((file: this) => string) | string) {\n switch (typeof val) {\n case 'string':\n this.name = val;\n break;\n case 'function':\n const newName = val(this);\n if (typeof newName !== 'string') {\n throw new Error(`Name function must return a string. Current return type is ${typeof val}`);\n }\n\n this.name = val(this);\n break;\n }\n }\n\n /**\n * Returns file type\n *\n * @default 'application/octet-stream'\n * @returns {string}\n * @memberof File\n */\n public get type(): string {\n /* istanbul ignore next */\n return this._file.type || 'application/octet-stream';\n }\n\n /**\n * Alias for file type\n *\n * @readonly\n * @type {string}\n * @memberof File\n */\n public get mimetype(): string {\n return this.type;\n }\n\n /**\n * Returns file size\n *\n * @returns {number}\n * @memberof File\n */\n public get size(): number {\n return this._file.size;\n }\n\n /**\n * Returns number of parts according to part size\n *\n * @param {number} size - part size in bytes\n * @returns {number}\n * @memberof File\n */\n public getPartsCount (size: number): number {\n return Math.ceil(this._file.size / size);\n }\n\n /**\n * Returns part metadata\n *\n * @param {number} [partNum=0]\n * @param {*} size\n * @returns {FilePartMetadata}\n * @memberof File\n */\n public getPartMetadata (partNum: number, size: number): FilePartMetadata {\n const startByte = size * partNum;\n\n if (startByte > this._file.size) {\n throw new Error(`Start byte of the part is higher than buffer size`);\n }\n\n const endByte = Math.min(startByte + size, this._file.size);\n\n return {\n partNumber: partNum,\n startByte,\n endByte,\n size: endByte - startByte,\n };\n }\n\n /**\n * Returns part metadata + buffer\n *\n * @param {FilePartMetadata} meta\n * @returns {FilePart}\n * @memberof File\n */\n public async getPartByMetadata(meta: FilePartMetadata, md5Enabled: boolean = true): Promise<FilePart> {\n let slice = await this._file.slice(meta.startByte, meta.endByte);\n\n return Promise.resolve({\n ...meta,\n buffer: slice,\n md5: md5Enabled ? md5(slice) : undefined,\n });\n }\n\n /**\n * Returns part chunk\n *\n * @param {FilePartMetadata} meta\n * @param {number} offset\n * @param {number} chunkSize\n * @returns {FilePart}\n * @memberof File\n */\n public async getChunkByMetadata(meta: FilePartMetadata, offset: number, chunkSize: number, md5Enabled: boolean = true): Promise<FileChunk> {\n const startByte = meta.startByte + offset;\n const endByte = Math.min(startByte + chunkSize, meta.endByte);\n\n let slice = await this._file.slice(startByte, endByte);\n\n return Promise.resolve({\n ...meta,\n buffer: slice,\n md5: md5Enabled ? md5(slice) : undefined,\n size: slice.byteLength,\n startByte,\n endByte,\n offset,\n });\n }\n /**\n * Cleanup file buffer to release memory\n *\n * @memberof File\n */\n public release() {\n if (this._file.release) {\n this._file.release();\n }\n }\n\n public toJSON() {\n return {\n name: this.name,\n status: this.status,\n type: this.type,\n size: this.size,\n url: this.url,\n handle: this.handle,\n uploadTags: this.uploadTags,\n };\n }\n}\n","/*\n * Copyright (c) 2018 by Filestack.\n * Some rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './store.node';\n\nexport enum STORE_TYPE {\n SESSION = 'sessionStorage',\n LOCAL = 'localStorage',\n}\n","import { __awaiter, __generator } from \"tslib\";\n/*\n * Copyright (c) 2019 by Filestack.\n * Some rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { File as FsFile } from './file';\nimport { getMimetype } from './../../utils';\nimport { FilestackError } from './../../../filestack_error';\nimport fileType from 'file-type';\nvar base64Regexp = /data:([a-zA-Z]*\\/[a-zA-Z]*);base64,([^\\\"]*)/i;\n/**\n * Check if file is blob\n * @param input\n */\nvar isFileBlob = function (input) { return input.toString() === '[object Blob]'; };\n/**\n * Check if input is instance of browser file\n *\n * @browser\n * @param input\n */\nvar isFileBrowser = function (input) { return input instanceof File; };\n/**\n * Check if file is base64 string\n *\n * @param input\n */\nvar isFileBase = function (input) {\n if (typeof input !== 'string') {\n return false;\n }\n if (input.indexOf('base64') > -1) {\n input = input.match(base64Regexp).pop();\n }\n try {\n return btoa(atob(input)) === input;\n }\n catch (err) {\n /* istanbul ignore next */\n return false;\n }\n};\n/**\n * Check if file is instance of named interface\n *\n * @param input\n */\nvar isFileNamed = function (input) { return input && input['file'] && input['name']; };\n/**\n * Convert encoded base64 string or dataURI to blob\n *\n * @browser\n * @param b64data String to decode\n * @param sliceSize Byte quantity to split data into\n * @private\n * @returns {Blob}\n */\nvar b64toBlob = function (b64Data, sliceSize) {\n if (sliceSize === void 0) { sliceSize = 512; }\n var contentType = '';\n if (b64Data.indexOf('base64') > -1) {\n var matches = b64Data.match(base64Regexp);\n b64Data = matches.pop();\n contentType = matches[1];\n }\n var byteCharacters = atob(b64Data);\n var byteArrays = [];\n for (var offset = 0; offset < byteCharacters.length; offset += sliceSize) {\n var slice = byteCharacters.slice(offset, offset + sliceSize);\n var byteNumbers = new Array(slice.length);\n for (var i = 0; i < slice.length; i += 1) {\n byteNumbers[i] = slice.charCodeAt(i);\n }\n byteArrays.push(new Uint8Array(byteNumbers));\n }\n return new Blob(byteArrays, { type: contentType });\n};\n/**\n * Read file as array buffer\n *\n * @browser\n * @private\n * @param blob\n * @returns {Boolean}\n */\nvar readFile = function (file) { return __awaiter(void 0, void 0, void 0, function () {\n return __generator(this, function (_a) {\n /* istanbul ignore next */\n if (!File || !FileReader || !Blob) {\n return [2 /*return*/, Promise.reject(new FilestackError('The File APIs are not fully supported by your browser'))];\n }\n return [2 /*return*/, Promise.resolve({\n slice: function (start, end) {\n return readPart(start, end, file);\n },\n release: function () {\n file = null;\n },\n })];\n });\n}); };\n/**\n * Read file par instead of whole file to avoid browser crashing\n *\n * @param start - star byte\n * @param end - end byte\n * @param file - file to slice\n */\nvar readPart = function (start, end, file) {\n return new Promise(function (resolve, reject) {\n var r = new FileReader();\n var blob = file.slice(start, end);\n r.onload = function () { return resolve(r.result); };\n r.onerror = reject;\n r.readAsArrayBuffer(blob);\n });\n};\n/**\n * Accepts b64string or blob file\n *\n * @browser\n * @param {*} fileOrString\n * @returns {Promise<File>}\n */\nexport var getFile = function (input, sanitizeOptions) {\n var filename;\n var file;\n if (isFileNamed(input)) {\n filename = input.name;\n input = input.file;\n }\n if (isFileBrowser(input)) {\n file = input;\n filename = input.name;\n }\n else if (isFileBase(input)) {\n file = b64toBlob(input);\n }\n else if (isFileBlob(input)) {\n file = input;\n }\n else {\n return Promise.reject(new FilestackError('Unsupported input file type'));\n }\n return readFile(file).then(function (res) { return __awaiter(void 0, void 0, void 0, function () {\n var mime, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n mime = file.type;\n if (!(!file.type || file.type.length === 0 || file.type === 'text/plain')) return [3 /*break*/, 2];\n _a = getMimetype;\n return [4 /*yield*/, res.slice(0, fileType.minimumBytes)];\n case 1:\n mime = _a.apply(void 0, [_b.sent(), filename]);\n _b.label = 2;\n case 2: return [2 /*return*/, new FsFile({\n name: filename,\n size: file.size,\n type: mime,\n slice: res.slice,\n release: res.release,\n }, sanitizeOptions)];\n }\n });\n }); });\n};\n\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvYXBpL3VwbG9hZC9maWxlX3Rvb2xzLmJyb3dzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILE9BQU8sRUFBRSxJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3hDLE9BQU8sRUFBbUIsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RCxPQUFPLFFBQVEsTUFBTSxXQUFXLENBQUM7QUFVakMsSUFBTSxZQUFZLEdBQUcsOENBQThDLENBQUM7QUFFcEU7OztHQUdHO0FBQ0gsSUFBTSxVQUFVLEdBQUcsVUFBQyxLQUFnQixJQUFvQixPQUFBLEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyxlQUFlLEVBQXBDLENBQW9DLENBQUM7QUFFN0Y7Ozs7O0dBS0c7QUFDSCxJQUFNLGFBQWEsR0FBRyxVQUFDLEtBQWdCLElBQW9CLE9BQUEsS0FBSyxZQUFZLElBQUksRUFBckIsQ0FBcUIsQ0FBQztBQUVqRjs7OztHQUlHO0FBQ0gsSUFBTSxVQUFVLEdBQUcsVUFBQyxLQUFnQjtJQUNsQyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtRQUM3QixPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO1FBQ2hDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO0tBQ3pDO0lBRUQsSUFBSTtRQUNGLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQztLQUNwQztJQUFDLE9BQU8sR0FBRyxFQUFFO1FBQ1osMEJBQTBCO1FBQzFCLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7QUFDSCxDQUFDLENBQUM7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QUUsUUFBUSxDQUFDLFlBQVksQ0FBQyxFQUFBOztvQkFBNUQsSUFBSSxHQUFHLGtCQUFZLFNBQXlDLEVBQUUsUUFBUSxFQUFDLENBQUM7O3dCQUcxRSxzQkFBTyxJQUFJLE1BQU0sQ0FDZjt3QkFDRSxJQUFJLEVBQUUsUUFBUTt3QkFDZCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7d0JBQ2YsSUFBSSxFQUFFLElBQUk7d0JBQ1YsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLO3dCQUNoQixPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU87cUJBQ3JCLEVBQ0QsZUFBZSxDQUNoQixFQUFDOzs7U0FDSCxDQUNGLENBQUM7QUFDSixDQUFDLENBQUMiLCJmaWxlIjoibGliL2FwaS91cGxvYWQvZmlsZV90b29scy5icm93c2VyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOSBieSBGaWxlc3RhY2suXG4gKiBTb21lIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7IEZpbGUgYXMgRnNGaWxlIH0gZnJvbSAnLi9maWxlJztcbmltcG9ydCB7IFNhbml0aXplT3B0aW9ucywgZ2V0TWltZXR5cGUgfSBmcm9tICcuLy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IEZpbGVzdGFja0Vycm9yIH0gZnJvbSAnLi8uLi8uLi8uLi9maWxlc3RhY2tfZXJyb3InO1xuaW1wb3J0IGZpbGVUeXBlIGZyb20gJ2ZpbGUtdHlwZSc7XG5cbmV4cG9ydCB0eXBlIFJhd0ZpbGUgPSBCbG9iIHwgQnVmZmVyIHwgRmlsZSB8IHN0cmluZztcbmV4cG9ydCB0eXBlIE5hbWVkSW5wdXRGaWxlID0ge1xuICBuYW1lPzogc3RyaW5nO1xuICBmaWxlOiBSYXdGaWxlO1xufTtcblxudHlwZSBJbnB1dEZpbGUgPSBSYXdGaWxlIHwgTmFtZWRJbnB1dEZpbGU7XG5cbmNvbnN0IGJhc2U2NFJlZ2V4cCA9IC9kYXRhOihbYS16QS1aXSpcXC9bYS16QS1aXSopO2Jhc2U2NCwoW15cXFwiXSopL2k7XG5cbi8qKlxuICogQ2hlY2sgaWYgZmlsZSBpcyBibG9iXG4gKiBAcGFyYW0gaW5wdXRcbiAqL1xuY29uc3QgaXNGaWxlQmxvYiA9IChpbnB1dDogSW5wdXRGaWxlKTogaW5wdXQgaXMgQmxvYiA9PiBpbnB1dC50b1N0cmluZygpID09PSAnW29iamVjdCBCbG9iXSc7XG5cbi8qKlxuICogQ2hlY2sgaWYgaW5wdXQgaXMgaW5zdGFuY2Ugb2YgYnJvd3NlciBmaWxlXG4gKlxuICogQGJyb3dzZXJcbiAqIEBwYXJhbSBpbnB1dFxuICovXG5jb25zdCBpc0ZpbGVCcm93c2VyID0gKGlucHV0OiBJbnB1dEZpbGUpOiBpbnB1dCBpcyBGaWxlID0+IGlucHV0IGluc3RhbmNlb2YgRmlsZTtcblxuLyoqXG4gKiBDaGVjayBpZiBmaWxlIGlzIGJhc2U2NCBzdHJpbmdcbiAqXG4gKiBAcGFyYW0gaW5wdXRcbiAqL1xuY29uc3QgaXNGaWxlQmFzZSA9IChpbnB1dDogSW5wdXRGaWxlKTogaW5wdXQgaXMgc3RyaW5nID0+IHtcbiAgaWYgKHR5cGVvZiBpbnB1dCAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoaW5wdXQuaW5kZXhPZignYmFzZTY0JykgPiAtMSkge1xuICAgIGlucHV0ID0gaW5wdXQubWF0Y2goYmFzZTY0UmVnZXhwKS5wb3AoKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgcmV0dXJuIGJ0b2EoYXRvYihpbnB1dCkpID09PSBpbnB1dDtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn07XG5cbi8qKlxuICogQ2hlY2sgaWYgZmlsZSBpcyBpbnN0YW5jZSBvZiBuYW1lZCBpbnRlcmZhY2VcbiAqXG4gKiBAcGFyYW0gaW5wdXRcbiAqL1xuY29uc3QgaXNGaWxlTmFtZWQgPSAoaW5wdXQ6IElucHV0RmlsZSk6IGlucHV0IGlzIE5hbWVkSW5wdXRGaWxlID0+IGlucHV0ICYmIGlucHV0WydmaWxlJ10gJiYgaW5wdXRbJ25hbWUnXTtcblxuLyoqXG4gKiBDb252ZXJ0IGVuY29kZWQgYmFzZTY0IHN0cmluZyBvciBkYXRhVVJJIHRvIGJsb2JcbiAqXG4gKiBAYnJvd3NlclxuICogQHBhcmFtIGI2NGRhdGEgICAgIFN0cmluZyB0byBkZWNvZGVcbiAqIEBwYXJhbSBzbGljZVNpemUgICBCeXRlIHF1YW50aXR5IHRvIHNwbGl0IGRhdGEgaW50b1xuICogQHByaXZhdGVcbiAqIEByZXR1cm5zIHtCbG9ifVxuICovXG5jb25zdCBiNjR0b0Jsb2IgPSAoYjY0RGF0YTogc3RyaW5nLCBzbGljZVNpemUgPSA1MTIpOiBCbG9iID0+IHtcbiAgbGV0IGNvbnRlbnRUeXBlID0gJyc7XG5cbiAgaWYgKGI2NERhdGEuaW5kZXhPZignYmFzZTY0JykgPiAtMSkge1xuICAgIGNvbnN0IG1hdGNoZXMgPSBiNjREYXRhLm1hdGNoKGJhc2U2NFJlZ2V4cCk7XG4gICAgYjY0RGF0YSA9IG1hdGNoZXMucG9wKCk7XG4gICAgY29udGVudFR5cGUgPSBtYXRjaGVzWzFdO1xuICB9XG5cbiAgY29uc3QgYnl0ZUNoYXJhY3RlcnMgPSBhdG9iKGI2NERhdGEpO1xuICBjb25zdCBieXRlQXJyYXlzOiBhbnlbXSA9IFtdO1xuXG4gIGZvciAobGV0IG9mZnNldCA9IDA7IG9mZnNldCA8IGJ5dGVDaGFyYWN0ZXJzLmxlbmd0aDsgb2Zmc2V0ICs9IHNsaWNlU2l6ZSkge1xuICAgIGNvbnN0IHNsaWNlID0gYnl0ZUNoYXJhY3RlcnMuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyBzbGljZVNpemUpO1xuICAgIGNvbnN0IGJ5dGVOdW1iZXJzID0gbmV3IEFycmF5KHNsaWNlLmxlbmd0aCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzbGljZS5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgYnl0ZU51bWJlcnNbaV0gPSBzbGljZS5jaGFyQ29kZUF0KGkpO1xuICAgIH1cblxuICAgIGJ5dGVBcnJheXMucHVzaChuZXcgVWludDhBcnJheShieXRlTnVtYmVycykpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBCbG9iKGJ5dGVBcnJheXMsIHsgdHlwZTogY29udGVudFR5cGUgfSk7XG59O1xuXG4vKipcbiAqIFJlYWQgZmlsZSBhcyBhcnJheSBidWZmZXJcbiAqXG4gKiBAYnJvd3NlclxuICogQHByaXZhdGVcbiAqIEBwYXJhbSBibG9iXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn1cbiAqL1xuY29uc3QgcmVhZEZpbGUgPSBhc3luYyAoZmlsZSk6IFByb21pc2U8YW55PiA9PiB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIGlmICghRmlsZSB8fCAhRmlsZVJlYWRlciB8fCAhQmxvYikge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRmlsZXN0YWNrRXJyb3IoJ1RoZSBGaWxlIEFQSXMgYXJlIG5vdCBmdWxseSBzdXBwb3J0ZWQgYnkgeW91ciBicm93c2VyJykpO1xuICB9XG5cbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7XG4gICAgc2xpY2U6IGZ1bmN0aW9uKHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyKSB7XG4gICAgICByZXR1cm4gcmVhZFBhcnQoc3RhcnQsIGVuZCwgZmlsZSk7XG4gICAgfSxcbiAgICByZWxlYXNlOiAoKSA9PiB7XG4gICAgICBmaWxlID0gbnVsbDtcbiAgICB9LFxuICB9KTtcbn07XG5cbi8qKlxuICogUmVhZCBmaWxlIHBhciBpbnN0ZWFkIG9mIHdob2xlIGZpbGUgdG8gYXZvaWQgYnJvd3NlciBjcmFzaGluZ1xuICpcbiAqIEBwYXJhbSBzdGFydCAtIHN0YXIgYnl0ZVxuICogQHBhcmFtIGVuZCAgLSBlbmQgYnl0ZVxuICogQHBhcmFtIGZpbGUgLSBmaWxlIHRvIHNsaWNlXG4gKi9cbmNvbnN0IHJlYWRQYXJ0ID0gKHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyLCBmaWxlKTogUHJvbWlzZTxhbnk+ID0+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByID0gbmV3IEZpbGVSZWFkZXIoKTtcblxuICAgIGNvbnN0IGJsb2IgPSBmaWxlLnNsaWNlKHN0YXJ0LCBlbmQpO1xuICAgIHIub25sb2FkID0gKCkgPT4gcmVzb2x2ZShyLnJlc3VsdCk7XG4gICAgci5vbmVycm9yID0gcmVqZWN0O1xuICAgIHIucmVhZEFzQXJyYXlCdWZmZXIoYmxvYik7XG4gIH0pO1xufTtcblxuLyoqXG4gKiBBY2NlcHRzIGI2NHN0cmluZyBvciBibG9iIGZpbGVcbiAqXG4gKiBAYnJvd3NlclxuICogQHBhcmFtIHsqfSBmaWxlT3JTdHJpbmdcbiAqIEByZXR1cm5zIHtQcm9taXNlPEZpbGU+fVxuICovXG5leHBvcnQgY29uc3QgZ2V0RmlsZSA9IChpbnB1dDogSW5wdXRGaWxlLCBzYW5pdGl6ZU9wdGlvbnM/OiBTYW5pdGl6ZU9wdGlvbnMpOiBQcm9taXNlPEZzRmlsZT4gPT4ge1xuICBsZXQgZmlsZW5hbWU7XG4gIGxldCBmaWxlOiBCbG9iO1xuXG4gIGlmIChpc0ZpbGVOYW1lZChpbnB1dCkpIHtcbiAgICBmaWxlbmFtZSA9IGlucHV0Lm5hbWU7XG4gICAgaW5wdXQgPSBpbnB1dC5maWxlO1xuICB9XG5cbiAgaWYgKGlzRmlsZUJyb3dzZXIoaW5wdXQpKSB7XG4gICAgZmlsZSA9IGlucHV0O1xuICAgIGZpbGVuYW1lID0gaW5wdXQubmFtZTtcbiAgfSBlbHNlIGlmIChpc0ZpbGVCYXNlKGlucHV0KSkge1xuICAgIGZpbGUgPSBiNjR0b0Jsb2IoaW5wdXQpO1xuICB9IGVsc2UgaWYgKGlzRmlsZUJsb2IoaW5wdXQpKSB7XG4gICAgZmlsZSA9IGlucHV0O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRmlsZXN0YWNrRXJyb3IoJ1Vuc3VwcG9ydGVkIGlucHV0IGZpbGUgdHlwZScpKTtcbiAgfVxuXG4gIHJldHVybiByZWFkRmlsZShmaWxlKS50aGVuKFxuICAgIGFzeW5jIHJlcyA9PiB7XG4gICAgICBsZXQgbWltZSA9IGZpbGUudHlwZTtcbiAgICAgIGlmICghZmlsZS50eXBlICB8fCBmaWxlLnR5cGUubGVuZ3RoID09PSAwIHx8IGZpbGUudHlwZSA9PT0gJ3RleHQvcGxhaW4nKSB7XG4gICAgICAgIG1pbWUgPSBnZXRNaW1ldHlwZShhd2FpdCByZXMuc2xpY2UoMCwgZmlsZVR5cGUubWluaW11bUJ5dGVzKSwgZmlsZW5hbWUpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbmV3IEZzRmlsZShcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IGZpbGVuYW1lLFxuICAgICAgICAgIHNpemU6IGZpbGUuc2l6ZSxcbiAgICAgICAgICB0eXBlOiBtaW1lLFxuICAgICAgICAgIHNsaWNlOiByZXMuc2xpY2UsXG4gICAgICAgICAgcmVsZWFzZTogcmVzLnJlbGVhc2UsXG4gICAgICAgIH0sXG4gICAgICAgIHNhbml0aXplT3B0aW9uc1xuICAgICAgKTtcbiAgICB9XG4gICk7XG59O1xuIl19\n","/*\n * Copyright (c) 2019 by Filestack.\n * Some rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport Debug from 'debug';\nimport * as EventEmitter from 'eventemitter3';\n\nimport { File, UploadTags } from './../file';\nimport { StoreUploadOptions } from './../types';\nimport { Security } from './../../../client';\nimport { FsRetryConfig } from './../../../request';\nimport { isMobile } from './../../../utils';\nimport { FilestackError } from './../../../../filestack_error';\n\n// regular part size\nexport const DEFAULT_PART_SIZE = 6 * 1024 * 1024;\n\n// Minimum part size for upload by multipart\nexport const MIN_PART_SIZE = 5 * 1024 * 1024;\n\n// when mode is set to fallback or intelligent, this part size is required\nexport const INTELLIGENT_CHUNK_SIZE = 8 * 1024 * 1024;\n\n// Mobile Chunk size for ii\nexport const INTELLIGENT_MOBILE_CHUNK_SIZE = 1024 * 1024;\n\n// minimum intelligent chunk size\nexport const MIN_CHUNK_SIZE = 32 * 1024;\n\nexport const DEFAULT_STORE_LOCATION = 's3';\n\nconst debug = Debug('fs:upload:abstract');\n\nexport const enum UploadMode {\n DEFAULT = 'default',\n INTELLIGENT = 'intelligent',\n FALLBACK = 'fallback',\n}\n\nexport abstract class UploaderAbstract extends EventEmitter {\n // Parts size options\n protected partSize: number = DEFAULT_PART_SIZE;\n\n // chunk size for ii uploads\n protected intelligentChunkSize: number = isMobile() ? INTELLIGENT_MOBILE_CHUNK_SIZE : INTELLIGENT_CHUNK_SIZE;\n\n // upload options\n protected url: string;\n protected timeout: number = 30 * 1000;\n protected uploadMode: UploadMode = UploadMode.DEFAULT;\n\n // application settings\n protected apikey: string;\n protected security: Security;\n\n protected isModeLocked: boolean = false; // if account does not support ii in fallback mode we should abort\n protected retryConfig: FsRetryConfig;\n protected integrityCheck: boolean = true;\n\n protected uploadTags: UploadTags = null;\n\n constructor(protected readonly storeOptions: StoreUploadOptions, protected readonly concurrency: number = 3) {\n super();\n }\n\n public setSecurity(security: Security): void {\n debug('Set security %O', security);\n this.security = security;\n }\n\n public setApikey(apikey: string): void {\n debug(`Set apikey to ${apikey}`);\n this.apikey = apikey;\n }\n\n public setTimeout(timeout: number): void {\n debug(`Set request timeout to ${timeout}`);\n this.timeout = timeout;\n }\n\n public setRetryConfig(cfg: FsRetryConfig) {\n debug(`Set retry config to ${cfg}`);\n this.retryConfig = cfg;\n }\n\n public setUrl(url: string): void {\n debug(`Set upload url to ${url}`);\n this.url = url;\n }\n\n public setUploadTags(tags: UploadTags) {\n debug(`Set tags to %O`, tags);\n this.uploadTags = tags;\n }\n\n /**\n * Set state of checking file integrity\n * @param state\n */\n public setIntegrityCheck(state) {\n this.integrityCheck = state;\n }\n\n /**\n * Sets upload mode\n *\n * @param {UploadMode} mode\n * @param {boolean} [lock=false]\n * @returns\n * @memberof MultipartUploader\n */\n public setUploadMode(mode: UploadMode, lock: boolean = false): void {\n // this shouldnt happend but for safety reasons if will stay\n /* istanbul ignore next */\n if (this.isModeLocked === true) {\n debug(`Cannot switch mode to ${mode}. Locked! Probably mode is not supported at this apikey`);\n return;\n }\n\n this.isModeLocked = lock;\n\n debug(`Set upload mode to ${mode}`);\n\n this.uploadMode = mode;\n }\n\n /**\n * Set upload part size\n * if part size is smaller than minimum 5mb it will throw error\n *\n * @param {number} size\n * @returns {void}\n * @memberof S3Uploader\n */\n public setPartSize(size: number): void {\n if (this.uploadMode !== UploadMode.DEFAULT) {\n debug('Cannot set part size because upload mode is other than default. ');\n return;\n }\n\n debug(`Set part size to ${size}`);\n\n if (size < MIN_PART_SIZE) {\n throw new FilestackError('Minimum part size is 5MB');\n }\n\n this.partSize = size;\n }\n\n /**\n * Returns current part size\n */\n public getPartSize() {\n return this.partSize;\n }\n\n /**\n * Set start part size for ii\n *\n * @param {number} size\n * @memberof S3Uploader\n */\n public setIntelligentChunkSize(size: number): void {\n debug(`Set inteligent chunk size to ${size}`);\n if (size < MIN_CHUNK_SIZE) {\n throw new FilestackError(`Minimum intelligent chunk size is ${MIN_CHUNK_SIZE}`);\n }\n this.intelligentChunkSize = size;\n }\n\n /**\n * Returns intelligent chunk size\n */\n public getIntelligentChunkSize(): number {\n return this.intelligentChunkSize;\n }\n\n /**\n * Returns filestack upload url\n *\n * @private\n * @returns\n * @memberof MultipartUploader\n */\n public getUrl(): string {\n if (!this.url) {\n throw new FilestackError('Upload url not set');\n }\n\n return this.url;\n }\n\n /**\n * Pause upload queue\n *\n * @memberof MultipartUploader\n */\n public abstract pause(): void;\n /**\n * resume upload queue if its paused\n *\n * @memberof MultipartUploader\n */\n public abstract resume(): void;\n\n /**\n * Aborts queue (all pending requests with will be aborted)\n *\n * @memberof MultipartUploader\n */\n public abstract abort(msg?: string): void;\n\n public abstract addFile(file: File): string;\n\n public abstract async execute(): Promise<any>;\n}\n","/*\n * Copyright (c) 2019 by Filestack.\n * Some rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport Debug from 'debug';\nimport PQueue from 'p-queue';\n\nimport { FilestackError, FilestackErrorType } from './../../../../filestack_error';\nimport { FsCancelToken, FsRequest, FsRequestError, FsRequestErrorCode, FsResponse } from './../../../request';\nimport { shouldRetry } from './../../../request/helpers';\nimport { filterObject, uniqueId, uniqueTime } from './../../../utils';\nimport { File, FilePart, FilePartMetadata, FileState } from './../file';\nimport { StoreUploadOptions } from './../types';\nimport { DEFAULT_STORE_LOCATION, INTELLIGENT_CHUNK_SIZE, MIN_CHUNK_SIZE, UploaderAbstract, UploadMode } from './abstract';\n\nconst debug = Debug('fs:upload:s3');\n\nconst COMPLETE_TIMEOUT = 1000 * 1;\n\nexport interface UploadPart extends FilePartMetadata {\n etag?: string;\n offset?: number;\n progress?: number;\n}\n\nexport interface UploadPayload {\n file: File;\n parts: UploadPart[];\n handle?: string;\n uri?: string;\n region?: string;\n upload_id?: number;\n location_url?: string;\n location_region?: string;\n}\n\nexport class S3Uploader extends UploaderAbstract {\n private partsQueue;\n private cancelToken: FsCancelToken; // global cancel token for all requests\n\n private payloads: { [key: string]: UploadPayload } = {};\n\n constructor(storeOptions: StoreUploadOptions, concurrency?) {\n super(storeOptions, concurrency);\n\n this.partsQueue = new PQueue({\n autoStart: false,\n concurrency: this.concurrency,\n });\n\n this.cancelToken = new FsCancelToken();\n }\n\n /**\n * Pause upload queue\n *\n * @memberof S3Uploader\n */\n public pause(): void {\n this.partsQueue.pause();\n }\n\n /**\n * resume upload queue if its paused\n *\n * @memberof S3Uploader\n */\n public resume(): void {\n /* istanbul ignore next */\n if (this.partsQueue.isPaused) {\n this.partsQueue.start();\n }\n }\n\n /**\n * Aborts queue (all pending requests with will be aborted)\n *\n * @memberof S3Uploader\n */\n public abort(msg?: string): void {\n this.partsQueue.pause();\n this.partsQueue.clear();\n\n this.cancelToken.cancel(msg || 'Aborted by user');\n }\n\n /**\n * Execute all queued files\n *\n * @returns {Promise<any>}\n * @memberof S3Uploader\n */\n public async execute(): Promise<any> {\n const tasks = Object.keys(this.payloads).map(\n id =>\n new Promise(async resolve => {\n try {\n await this.startRequest(id);\n await this.prepareParts(id);\n await this.startPartsQueue(id);\n await this.completeRequest(id);\n } catch (e) {\n /* istanbul ignore next */\n this.emit('error', e);\n debug(`[${id}] File upload failed. %O, \\nDetails: %O `, e.message, e.details);\n }\n\n const file = this.getPayloadById(id).file;\n\n // release file buffer\n file.release();\n\n // cleanup payloads\n delete this.payloads[id];\n\n resolve(file);\n })\n );\n\n return Promise.all(tasks);\n }\n\n /**\n * Add file to upload queue\n *\n * @param {File} file\n * @returns\n * @memberof S3Uploader\n */\n public addFile(file: File): string {\n debug('Add file to queue: \\n %o', file);\n\n const id = `${uniqueId(15)}_${uniqueTime()}`;\n\n file.status = FileState.INIT;\n\n // split file into parts and set it as waiting\n this.payloads[id] = {\n file,\n parts: [],\n };\n\n return id;\n }\n\n /**\n * Returns host for upload (region based)\n *\n * @private\n * @returns\n * @memberof S3Uploader\n */\n private getUploadUrl(id: string): string {\n const { location_url } = this.getDefaultFields(id, ['location_url']);\n return location_url.indexOf('http') === 0 ? location_url : `https://${location_url}`;\n }\n\n /**\n * Returns formatted store options\n *\n * @private\n * @returns\n * @memberof S3Uploader\n */\n private getStoreOptions(id: string): StoreUploadOptions {\n let options = {\n location: DEFAULT_STORE_LOCATION, // this parameter is required, if not set use default one\n ...this.storeOptions,\n };\n\n if (this.storeOptions.disableStorageKey) {\n const payload = this.getPayloadById(id);\n\n if (options.path && options.path.substr(-1) !== '/') {\n options.path = `${options.path}/`;\n }\n\n options.path = `${options.path ? options.path : '/'}${payload.file.name}`;\n\n delete options.disableStorageKey;\n }\n\n return options;\n }\n\n /**\n * Returns all default fields for filestack requests\n *\n * @private\n * @returns\n * @memberof S3Uploader\n */\n private getDefaultFields(id: string, requiredFields: string[], fiiFallback: boolean = false) {\n const payload = this.getPayloadById(id);\n\n let fields = {\n ...this.security,\n apikey: this.apikey,\n uri: payload.uri,\n location_url: payload.location_url,\n upload_id: payload.upload_id,\n region: payload.region,\n };\n\n if (this.uploadMode === UploadMode.INTELLIGENT || (this.uploadMode === UploadMode.FALLBACK && fiiFallback)) {\n fields['fii'] = true;\n }\n\n return {\n ...filterObject(fields, requiredFields),\n store: this.getStoreOptions(id),\n };\n }\n\n /**\n * Returns default headers needed for filestack request\n *\n * @private\n * @returns\n * @memberof S3Uploader\n */\n private getDefaultHeaders(id: string) {\n let headers = {};\n const file = this.getPayloadById(id);\n\n if (file.location_region) {\n headers['Filestack-Upload-Region'] = file.location_region;\n }\n\n return headers;\n }\n\n private getPayloadById(id: string): UploadPayload {\n return this.payloads[id];\n }\n\n /**\n * Split file onto parts for uploading with multipart mechanism and setup start\n *\n * @private\n * @memberof S3Uploader\n */\n private prepareParts(id: string): Promise<void> {\n const file = this.getPayloadById(id).file;\n\n // for intelligent or fallback mode we cant overwrite part size - requires 8MB\n if ([UploadMode.INTELLIGENT, UploadMode.FALLBACK].indexOf(this.uploadMode) > -1) {\n this.partSize = INTELLIGENT_CHUNK_SIZE;\n }\n\n const partsCount = file.getPartsCount(this.partSize);\n\n const parts = [];\n\n for (let i = 0; i < partsCount; i++) {\n parts[i] = {\n ...file.getPartMetadata(i, this.partSize),\n offset: 0,\n };\n }\n\n // split file into parts and set it as waiting\n this.payloads[id].parts = parts;\n\n return Promise.resolve();\n }\n\n /**\n * Make start request for getting needed upload fields\n *\n * @private\n * @returns {Promise<any>}\n * @memberof S3Uploader\n */\n private startRequest(id: string): Promise<any> {\n const payload = this.getPayloadById(id);\n\n if (payload.file.size === 0) {\n this.setPayloadStatus(id, FileState.FAILED);\n return Promise.reject(new FilestackError(`Invalid file \"${payload.file.name}\" size - 0`, {}, FilestackErrorType.VALIDATION));\n }\n\n debug(`[${id}] Make start request`);\n return FsRequest.post(\n `${this.getUrl()}/multipart/start`,\n {\n filename: payload.file.name,\n mimetype: payload.file.type,\n size: payload.file.size,\n ...this.getDefaultFields(id, ['apikey', 'policy', 'signature', 'fii'], true),\n },\n {\n timeout: this.timeout,\n cancelToken: this.cancelToken,\n headers: this.getDefaultHeaders(id),\n retry: this.retryConfig,\n }\n )\n .then(({ data }) => {\n if (!data || !data.location_url || !data.region || !data.upload_id || !data.uri) {\n debug(`[${id}] Incorrect start response: \\n%O\\n`, data);\n this.setPayloadStatus(id, FileState.FAILED);\n return Promise.reject(new FilestackError('Incorrect start response', data, FilestackErrorType.REQUEST));\n }\n\n debug(`[${id}] Assign payload data: \\n%O\\n`, data);\n\n this.updatePayload(id, data);\n\n // ii is not enabled in backend switch back to default upload mode\n if ([UploadMode.INTELLIGENT, UploadMode.FALLBACK].indexOf(this.uploadMode) > -1 && (!data.upload_type || data.upload_type !== 'intelligent_ingestion')) {\n debug(`[${id}] Intelligent Ingestion is not enabled on account, switch back to regular upload and lock mode change`);\n this.setUploadMode(UploadMode.DEFAULT, true);\n }\n\n return data;\n })\n .catch(err => {\n debug(`[${id}] Start request error %O`, err);\n this.setPayloadStatus(id, FileState.FAILED);\n\n return this.rejectUpload('Cannot upload file. Start request failed', err);\n });\n }\n\n /**\n * Enqueue file parts to upload\n *\n * @private\n * @returns\n * @memberof S3Uploader\n */\n private async startPartsQueue(id: string): Promise<any> {\n const payload = this.getPayloadById(id);\n const parts = payload.parts;\n const waitingLength = parts.length;\n\n debug(`[${id}] Create uploading queue from file. parts count - %d`, waitingLength);\n\n return new Promise(async (resolve, reject) => {\n parts.forEach(part =>\n this.partsQueue\n .add(() => this.startPart(id, part.partNumber))\n .catch(e => {\n this.setPayloadStatus(id, FileState.FAILED);\n debug(`[${id}] Failed to upload part %s`, e.message);\n\n this.partsQueue.pause();\n this.partsQueue.clear();\n return reject(e);\n })\n );\n\n debug(`[${id}] All tasks for %s enqueued. Start processing main upload queue`, id);\n this.emit('start');\n this.partsQueue.start();\n\n resolve(await this.partsQueue.onIdle());\n });\n }\n\n /**\n * Decide if upload should be made using ii or regular upload\n * It allows change upload mode during upload queue\n *\n * @private\n * @param {number} partNumber\n * @returns {Promise<any>}\n * @memberof S3Uploader\n */\n private startPart(id: string, partNumber: number): Promise<any> {\n debug(`[${id}] Start processing part ${partNumber} with mode ${this.uploadMode}`);\n\n let payload = this.getPayloadById(id);\n\n payload.file.status = FileState.PROGRESS;\n return (this.uploadMode !== UploadMode.INTELLIGENT ? this.uploadRegular : this.uploadIntelligent).apply(this, [id, partNumber]);\n }\n\n /**\n * Returns part data needed for upload\n *\n * @private\n * @param {string} id - id of a currently uploading file\n * @param {FilePart} part\n * @returns\n * @memberof S3Uploader\n */\n private getS3PartMetadata(id: string, part: FilePart, offset?: number): Promise<any> {\n const url = this.getUploadUrl(id);\n\n debug(`[${id}] Get data for part ${part.partNumber}, url ${url}, Md5: ${part.md5}, Size: ${part.size}`);\n\n const data = {\n ...this.getDefaultFields(id, ['apikey', 'uri', 'region', 'signature', 'policy', 'upload_id', 'fii']),\n // method specific keys\n part: part.partNumber + 1,\n size: part.size,\n offset,\n };\n\n if (this.integrityCheck && part.md5) {\n data.md5 = part.md5;\n }\n\n return FsRequest.post(`${url}/multipart/upload`, data, {\n headers: this.getDefaultHeaders(id),\n cancelToken: this.cancelToken,\n timeout: this.timeout,\n retry: this.retryConfig,\n }).catch(err => {\n this.setPayloadStatus(id, FileState.FAILED);\n\n return this.rejectUpload('Cannot get part metadata', err);\n });\n }\n\n /**\n * Regular multipart request to amazon\n *\n * @private\n * @param {number} partNumber\n * @returns {Promise<any>}\n * @memberof S3Uploader\n */\n private async uploadRegular(id: string, partNumber: number): Promise<any> {\n let payload = this.getPayloadById(id);\n const partMetadata = payload.parts[partNumber];\n let part = await payload.file.getPartByMetadata(partMetadata, this.integrityCheck);\n\n const { data, headers } = await this.getS3PartMetadata(id, part);\n debug(`[${id}] Received part ${partNumber} info body: \\n%O\\n headers: \\n%O\\n`, data, headers);\n return FsRequest.put(data.url, part.buffer, {\n cancelToken: this.cancelToken,\n timeout: this.timeout,\n headers: data.headers,\n filestackHeaders: false,\n // for now we cant test progress callback from upload\n /* istanbul ignore next */\n onProgress: (pr: ProgressEvent) => this.onProgressUpdate(id, partNumber, pr.loaded),\n retry: this.retryConfig && this.uploadMode !== UploadMode.FALLBACK ? this.retryConfig : undefined,\n })\n .then(res => {\n if (res.headers.etag) {\n this.setPartETag(id, partNumber, res.headers.etag);\n } else {\n // release memory\n part = null;\n throw new FilestackError('Cannot upload file, check S3 bucket settings', 'Etag header is not exposed in CORS settings', FilestackErrorType.REQUEST);\n }\n\n debug(`[${id}] S3 Upload response headers for ${partNumber}: \\n%O\\n`, res.headers);\n\n this.onProgressUpdate(id, partNumber, part.size);\n\n // release memory\n part = null;\n\n return res;\n })\n .catch(err => {\n const resp = err && err.response ? err.response : null;\n\n /* istanbul ignore next */\n if (resp && resp.status === 403) {\n if (resp.data && resp.data.Error && resp.data.Error.code) {\n let code = resp.data.Error.code;\n\n if (Array.isArray(code)) {\n code = code.pop();\n }\n\n switch (code) {\n case 'RequestTimeTooSkewed':\n return this.startPart(id, partNumber);\n default:\n return Promise.reject(new FilestackError('Cannot upload file', resp.data.Error, FilestackErrorType.REQUEST));\n }\n }\n }\n\n // release memory\n part = null;\n\n if (err instanceof FilestackError) {\n return Promise.reject(err);\n }\n // reset upload progress on failed part\n this.onProgressUpdate(id, partNumber, 0);\n\n // if fallback, set upload mode to intelligent and restart current part\n if ((this.uploadMode === UploadMode.FALLBACK && !this.isModeLocked) || this.uploadMode === UploadMode.INTELLIGENT) {\n debug(`[${id}] Regular upload failed. Switching to intelligent ingestion mode`);\n this.setUploadMode(UploadMode.INTELLIGENT);\n // restart part\n return this.startPart(id, partNumber);\n }\n\n return this.rejectUpload('Cannot upload file part', err);\n });\n }\n\n /**\n * Upload file using intelligent mechanism\n *\n * @private\n * @param {string} id\n * @param {number} partNumber\n * @returns {Promise<any>}\n * @memberof S3Uploader\n */\n private async uploadIntelligent(id: string, partNumber: number): Promise<any> {\n return this.uploadNextChunk(id, partNumber).then(() => this.commitPart(id, partNumber));\n }\n\n /**\n * Recursively upload file in chunk mode (intelligent ingession)\n *\n * @private\n * @param {string} id\n * @param {number} partNumber\n * @param {number} chunkSize\n * @returns\n * @memberof S3Uploader\n */\n private async uploadNextChunk(id: string, partNumber: number, chunkSize: number = this.intelligentChunkSize) {\n const payload = this.getPayloadById(id);\n let part = payload.parts[partNumber];\n chunkSize = Math.min(chunkSize, part.size - part.offset);\n\n let chunk = await payload.file.getChunkByMetadata(part, part.offset, chunkSize, this.integrityCheck);\n\n debug(\n `[${id}] PartNum: ${partNumber}, PartSize: ${part.size}, StartByte: ${part.startByte}, Offset: ${part.offset}, ChunkSize: ${chunk.size},\n Left: ${part.size - part.offset - chunk.size}`\n );\n\n // catch error for debug purposes\n const { data } = await this.getS3PartMetadata(id, chunk, part.offset).catch(err => {\n debug(`[${id}] Getting chunk data for ii failed %O, Chunk size: ${chunkSize}, offset ${part.offset}, part ${partNumber}`, err);\n return Promise.reject(err);\n });\n\n return FsRequest.put(data.url, chunk.buffer, {\n cancelToken: this.cancelToken,\n timeout: this.timeout,\n headers: data.headers,\n filestackHeaders: false,\n // for now we cant test progress callback from upload\n /* istanbul ignore next */\n onProgress: (pr: ProgressEvent) => part ? this.onProgressUpdate(id, partNumber, part.offset + pr.loaded) : null,\n })\n .then(res => {\n this.onProgressUpdate(id, partNumber, part.offset + chunk.size);\n const newOffset = Math.min(part.offset + chunkSize, part.size);\n debug(`[${id}] S3 Chunk uploaded! offset: ${part.offset}, part ${partNumber}! response headers for ${partNumber}: \\n%O\\n`, res.headers);\n this.setPartData(id, partNumber, 'offset', newOffset);\n\n // if all chunks was uploaded then return resolve\n if (newOffset === part.size) {\n return Promise.resolve(res);\n }\n\n // release memory\n part = null;\n chunk = null;\n\n return this.uploadNextChunk(id, partNumber, chunkSize);\n })\n .catch(err => {\n const resp = err && err.response ? err.response : null;\n /* istanbul ignore next */\n if (resp && resp.status === 403) {\n if (resp.data && resp.data.Error && resp.data.Error.code) {\n let code = resp.data.Error.code;\n\n if (Array.isArray(code)) {\n code = code.pop();\n }\n\n switch (code) {\n case 'RequestTimeTooSkewed':\n return this.startPart(id, partNumber);\n default:\n return Promise.reject(new FilestackError('Cannot upload file', resp.data.Error, FilestackErrorType.REQUEST));\n }\n }\n }\n\n // reset progress on failed upload\n this.onProgressUpdate(id, partNumber, part.offset);\n const nextChunkSize = Math.ceil(chunkSize / 2);\n\n if (nextChunkSize < MIN_CHUNK_SIZE) {\n debug(`[${id}] Minimal chunk size limit. Upload file failed!`);\n return Promise.reject(new FilestackError('Min chunk size reached', err.data, FilestackErrorType.REQUEST));\n }\n\n if (shouldRetry(err)) {\n debug(`[${id}] Request network error. Retry with new chunk size: ${nextChunkSize}`);\n return this.uploadNextChunk(id, partNumber, nextChunkSize);\n }\n\n // release memory\n part = null;\n chunk = null;\n\n return this.rejectUpload('Cannot upload file part (FII)', err);\n });\n }\n\n /**\n * Commit after upload all chunks of the part in ii mode\n *\n * @private\n * @param {string} id\n * @param {FilePart} part\n * @returns\n * @memberof S3Uploader\n */\n private commitPart(id: string, partNumber: number) {\n const payload = this.getPayloadById(id);\n const part = payload.parts[partNumber];\n\n return FsRequest.post(\n `${this.getUploadUrl(id)}/multipart/commit`,\n {\n ...this.getDefaultFields(id, ['apikey', 'region', 'upload_id', 'policy', 'signature', 'uri']),\n size: payload.file.size,\n part: part.partNumber + 1,\n },\n {\n cancelToken: this.cancelToken,\n timeout: this.timeout,\n headers: this.getDefaultHeaders(id),\n retry: this.retryConfig,\n }\n )\n .then((res: FsResponse) => {\n debug(`[${id}] Commit Part number ${part.partNumber}. Response: %O`, res.data);\n\n return res;\n })\n .catch(err => {\n return this.rejectUpload('Cannot commit file part metadata', err);\n });\n }\n\n /**\n * Complete request to merge all parts and get file handle etc\n *\n * @private\n * @returns\n * @memberof S3Uploader\n */\n private completeRequest(id: string): Promise<any> {\n const payload = this.getPayloadById(id);\n let parts = [];\n\n debug(`[${id}] Run complete request`);\n\n const partsHandle = payload.parts;\n const partLen = partsHandle.length;\n\n for (let i = 0; i < partLen; i++) {\n if (partsHandle[i].etag) {\n parts.push({ part_number: i + 1, etag: partsHandle[i].etag });\n }\n }\n\n debug(`[${id}] Etags %O`, parts);\n\n return FsRequest.post(\n `${this.getUploadUrl(id)}/multipart/complete`,\n {\n ...this.getDefaultFields(id, ['apikey', 'policy', 'signature', 'uri', 'region', 'upload_id', 'fii'], true),\n // method specific keys\n filename: payload.file.name,\n mimetype: payload.file.type,\n size: payload.file.size,\n upload_tags: this.uploadTags && Object.keys(this.uploadTags).length ? this.uploadTags : undefined,\n parts: parts.length ? parts : undefined,\n },\n {\n timeout: this.timeout,\n cancelToken: this.cancelToken,\n headers: this.getDefaultHeaders(id),\n retry: this.retryConfig,\n }\n )\n .then(res => {\n // if parts hasnt been merged, retry complete request again\n if (res.status === 202) {\n return new Promise((resolve, reject) => {\n setTimeout(\n () =>\n this.completeRequest(id)\n .then(resolve)\n .catch(reject),\n COMPLETE_TIMEOUT\n );\n });\n }\n\n // update file object\n let file = this.getPayloadById(id).file;\n\n file.handle = res.data.handle;\n file.url = res.data.url;\n file.container = res.data.container;\n file.key = res.data.key;\n file.uploadTags = res.data.upload_tags;\n file.workflows = res.data.workflows;\n file.status = res.data.status;\n\n return file;\n })\n .catch(err => {\n this.setPayloadStatus(id, FileState.FAILED);\n\n return this.rejectUpload('Cannot complete file', err);\n });\n }\n\n /**\n * UUpgrade upload progress and run progress event\n *\n * @private\n * @param {string} id\n * @param {number} partNumber\n * @param {number} loaded\n * @memberof S3Uploader\n */\n private onProgressUpdate(id: string, partNumber: number, loaded: number) {\n this.setPartData(id, partNumber, 'progress', loaded);\n this.emitProgress();\n }\n\n /**\n * Emits normalized progress event\n *\n * @private\n * @memberof S3Uploader\n */\n private emitProgress() {\n let totalSize = 0;\n let totalBytes = 0;\n\n let filesProgress = {};\n for (let i in this.payloads) {\n const payload = this.payloads[i];\n // omit all failed files in progress event\n // this shouldn't happend because of promises rejection in execute. Left to be sure\n /* istanbul ignore next */\n if (payload.file.status === FileState.FAILED) {\n continue;\n }\n\n const totalParts = payload.parts.map(p => p.progress || 0).reduce((a, b) => a + b, 0);\n\n totalBytes = totalBytes + totalParts;\n\n filesProgress[i] = {\n totalBytes: totalParts,\n totalPercent: Math.round((totalParts * 100) / payload.file.size) || 0,\n };\n\n totalSize = totalSize + payload.file.size;\n }\n\n const res = {\n totalBytes: totalBytes || 0,\n totalPercent: Math.round((totalBytes * 100) / totalSize) || 0,\n files: filesProgress,\n };\n\n debug(`Upload progress %O`, res);\n this.emit('progress', res);\n }\n\n /**\n * Apply provided data to given payload\n *\n * @private\n * @param {string} id\n * @param {*} data\n * @memberof S3Uploader\n */\n private updatePayload(id: string, data: any) {\n this.payloads[id] = {\n ...this.payloads[id],\n ...data,\n };\n }\n\n /**\n * Sets etag for part\n *\n * @private\n * @param {number} partNumber\n * @param {string} etag\n * @memberof S3Uploader\n */\n private setPartETag(id: string, partNumber: number, etag: string) {\n debug(`[${id}] Set ${etag} etag for part ${partNumber}`);\n this.getPayloadById(id).parts[partNumber].etag = etag;\n }\n\n /**\n * Sets part value for a key\n *\n * @private\n * @param {number} partNumber\n * @param {string} etag\n * @memberof S3Uploader\n */\n private setPartData(id: string, partNumber: number, key: string, value: any) {\n debug(`[${id}] Set ${key} = ${value} for part ${partNumber}`);\n\n const payload = this.getPayloadById(id);\n\n /* istanbul ignore next */\n if (!payload) {\n debug(`[${id}] Cannot set ${key} = ${value} for part ${partNumber}`);\n return;\n }\n\n payload.parts[partNumber][key] = value;\n }\n\n /**\n * Set payload file state\n *\n * @param id\n * @param status\n */\n private setPayloadStatus(id: string, status: FileState) {\n debug(`[${id}] Set payload status to ${status}`);\n /* istanbul ignore next: additional check in case if file will be deleted before setting status */\n if (!this.payloads[id]) {\n return;\n }\n\n this.payloads[id].file.status = status;\n }\n\n /**\n * Returns error details if response exists\n *\n * @param err\n */\n private parseError(err: FsRequestError) {\n if (!err.response) {\n return {};\n }\n\n return {\n code: err.response.status,\n data: err.response.data,\n headers: err.response.headers,\n };\n }\n\n private rejectUpload(message: string, err: FsRequestError) {\n if (err instanceof FsRequestError && err.code === FsRequestErrorCode.ABORTED) {\n return Promise.reject(new FilestackError(message, { reason: err.message }, FilestackErrorType.ABORTED));\n }\n return Promise.reject(new FilestackError(message, this.parseError(err), FilestackErrorType.REQUEST));\n }\n}\n","/*\n * Copyright (c) 2019 by Filestack.\n * Some rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { EventEmitter } from 'eventemitter3';\nimport { Session, Security } from '../../client';\nimport { S3Uploader } from './uploaders/s3';\nimport { FilestackError, FilestackErrorType } from './../../../filestack_error';\nimport { SanitizeOptions } from './../../utils';\n\nimport { UploadOptions, StoreUploadOptions } from '../upload/types';\nimport { getFile, InputFile } from './file_tools';\nimport { FileState, UploadTags } from './file';\nimport { UploadMode } from './uploaders/abstract';\nimport { getValidator, UploadParamsSchema, StoreParamsSchema } from './../../../schema';\n\nexport interface ProgressEvent {\n totalPercent: number;\n totalBytes: number;\n files?: { (key: string): ProgressEvent };\n}\n\nconst DEFAULT_PROGRESS_INTERVAL = 1000;\n\nconst normalizeProgress = (current, last) => {\n current.totalBytes = Math.max(current.totalBytes, last.totalBytes);\n current.totalPercent = Math.max(current.totalPercent, last.totalPercent);\n\n return current;\n};\n\n/**\n * Uploader main class for now its supporting only s3 upload type\n *\n * @export\n * @class Upload\n */\nexport class Upload extends EventEmitter {\n\n /**\n * Uploader instance\n *\n * @private\n * @type {S3Uploader}\n * @memberof Upload\n */\n private uploader: S3Uploader;\n\n /**\n * Should we overwrite file name\n *\n * @private\n * @memberof Upload\n */\n private overrideFileName;\n\n private lastProgress: ProgressEvent = {\n totalBytes: 0,\n totalPercent: 0,\n };\n\n private progressIntervalHandler;\n private sanitizerOptions: SanitizeOptions;\n\n constructor(private readonly options: UploadOptions = {}, private storeOptions: StoreUploadOptions = {}) {\n super();\n\n // do not delete filename from original options reference - copy it first\n this.storeOptions = Object.assign({}, storeOptions);\n\n const validateRes = getValidator(UploadParamsSchema)(options);\n\n if (validateRes.errors.length) {\n throw new FilestackError(`Invalid upload params`, validateRes.errors, FilestackErrorType.VALIDATION);\n }\n\n const storeValidateRes = getValidator(StoreParamsSchema)(storeOptions);\n if (storeValidateRes.errors.length) {\n throw new FilestackError(`Invalid store upload params`, storeValidateRes.errors, FilestackErrorType.VALIDATION);\n }\n\n if (storeOptions.filename) {\n this.overrideFileName = storeOptions.filename;\n delete this.storeOptions.filename;\n }\n\n if (this.storeOptions.sanitizer) {\n this.sanitizerOptions = this.storeOptions.sanitizer;\n delete this.storeOptions.sanitizer;\n }\n\n this.uploader = new S3Uploader(this.storeOptions, options.concurrency);\n\n this.uploader.setRetryConfig({\n retry: options.retry || 10,\n onRetry: options.onRetry, // @todo bind file to retry in s3 uploader\n retryFactor: options.retryFactor || 2,\n retryMaxTime: options.retryMaxTime || 15000,\n });\n\n this.uploader.setTimeout(options.timeout || 120000);\n\n if (options.partSize) {\n this.uploader.setPartSize(options.partSize);\n }\n\n if (options.intelligentChunkSize) {\n this.uploader.setIntelligentChunkSize(options.intelligentChunkSize);\n }\n\n if (options.disableIntegrityCheck) {\n this.uploader.setIntegrityCheck(false);\n }\n\n if (options.intelligent) {\n this.uploader.setUploadMode(options.intelligent === 'fallback' ? UploadMode.FALLBACK : UploadMode.INTELLIGENT);\n }\n\n this.uploader.setUploadTags(options.tags);\n\n this.uploader.on('start', () => this.emit('start'));\n this.uploader.on('error', (e) => this.emit('error', e));\n this.uploader.on('progress', this.handleProgress.bind(this));\n }\n\n /**\n * Set session object to uploader\n *\n * @deprecated\n * @param {Session} session\n * @memberof Upload\n */\n setSession(session: Session) {\n this.uploader.setApikey(session.apikey);\n\n if (session.policy && session.signature) {\n this.uploader.setSecurity({\n policy: session.policy,\n signature: session.signature,\n });\n }\n\n this.uploader.setUrl(session.urls.uploadApiUrl);\n }\n\n /**\n * Set cancel token to controll upload flow\n *\n * @param {*} token\n * @returns\n * @memberof Upload\n */\n public setToken(token: any) {\n if (!token || token !== Object(token)) {\n throw new Error('Incorrect upload token. Must be instance of object');\n }\n\n token.pause = () => this.uploader.pause();\n token.resume = () => this.uploader.resume();\n token.cancel = () => this.uploader.abort();\n\n return token;\n }\n\n /**\n * Sets security to uploader instance\n *\n * @param {Security} security\n * @memberof Upload\n */\n public setSecurity(security: Security) {\n this.uploader.setSecurity(security);\n }\n\n /**\n * Set upload tags\n *\n * @param {Tags} tags\n * @memberof Upload\n */\n public setUploadTags(tags: UploadTags) {\n this.uploader.setUploadTags(tags);\n }\n\n /**\n * Upload single file\n *\n * @param {(InputFile)} file\n * @returns {Promise<any>}\n * @memberof Upload\n */\n async upload(input: InputFile): Promise<any> {\n\n const f = await getFile(input, this.sanitizerOptions);\n f.customName = this.overrideFileName;\n this.uploader.addFile(f);\n\n this.startProgressInterval();\n const res = (await this.uploader.execute()).shift();\n this.stopProgressInterval();\n\n this.uploader.removeAllListeners();\n\n if (res.status === FileState.FAILED) {\n return Promise.reject(res);\n }\n\n return Promise.resolve(res);\n }\n\n /**\n * Upload multiple files at once\n *\n * @param {(InputFile[])} input\n * @returns {Promise<any>}\n * @memberof Upload\n */\n async multiupload(input: InputFile[]): Promise<any> {\n for (let i in input) {\n /* istanbul ignore next */\n if (!input.hasOwnProperty(i)) {\n continue;\n }\n\n const f = await getFile(input[i], this.sanitizerOptions);\n f.customName = this.overrideFileName;\n this.uploader.addFile(f);\n }\n\n this.startProgressInterval();\n const res = await this.uploader.execute();\n this.stopProgressInterval();\n\n this.uploader.removeAllListeners();\n\n return Promise.resolve(res);\n }\n\n /**\n * RUn progress with userdefined interval\n *\n * @private\n * @returns\n * @memberof Upload\n */\n private startProgressInterval() {\n if (typeof this.options.onProgress !== 'function') {\n return;\n }\n\n this.progressIntervalHandler = setInterval(() => {\n this.options.onProgress(this.lastProgress);\n }, this.options.progressInterval || DEFAULT_PROGRESS_INTERVAL);\n\n this.options.onProgress(this.lastProgress);\n }\n\n /**\n * Stop progress interval after upload\n *\n * @private\n * @memberof Upload\n */\n private stopProgressInterval() {\n clearInterval(this.progressIntervalHandler);\n }\n\n /**\n * Handle upload interval and normalize values\n *\n * @private\n * @param {ProgressEvent} progress\n * @memberof Upload\n */\n private handleProgress(progress: ProgressEvent) {\n // get max progress data to avoid progress jumps on any part error\n progress = normalizeProgress(progress, this.lastProgress);\n\n if (this.lastProgress.files) {\n for (let i in progress.files) {\n if (this.lastProgress.files[i]) {\n progress.files[i] = normalizeProgress(progress.files[i], this.lastProgress.files[i]);\n }\n }\n }\n\n this.lastProgress = progress;\n }\n}\n","/*\n * Copyright (c) 2018 by Filestack.\n * Some rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport Debug from 'debug';\nimport { STORE_TYPE } from './store';\nvar debug = Debug('fs:storage');\nvar Store = /** @class */ (function () {\n function Store() {\n this.availableTypes = [];\n if (window.localStorage !== undefined) {\n this.availableTypes.push(STORE_TYPE.LOCAL);\n debug('Local storage exists');\n }\n if (window.sessionStorage !== undefined) {\n this.availableTypes.push(STORE_TYPE.SESSION);\n debug('Session storage exists');\n }\n debug('availableTypes - %O', this.availableTypes);\n }\n Store.prototype.hasAccess = function (prefType) {\n debug('Checking access to storage for %s. Available types: %O', prefType, this.availableTypes);\n if (prefType) {\n return this.availableTypes.indexOf(prefType) > -1;\n }\n return !!this.availableTypes.length;\n };\n Store.prototype.getItem = function (key, prefType) {\n var store = this.getStore(prefType);\n debug('getItem %s from %O', key, store);\n if (!store) {\n return undefined;\n }\n return store.getItem(key);\n };\n Store.prototype.setItem = function (key, value, prefType) {\n var store = this.getStore(prefType);\n debug('setItem %s to %O', key, store);\n if (!store) {\n return undefined;\n }\n return store.setItem(key, value);\n };\n Store.prototype.removeItem = function (key, prefType) {\n var store = this.getStore(prefType);\n debug('removeItem %s from %O', key, store);\n if (!store) {\n return undefined;\n }\n return store.removeItem(key);\n };\n Store.prototype.getStore = function (prefType) {\n debug('get store with pref type - %s', prefType);\n if (!this.hasAccess(prefType)) {\n debug('User dont have access to any storage');\n return undefined;\n }\n switch (prefType) {\n case STORE_TYPE.LOCAL:\n return window.localStorage;\n case STORE_TYPE.SESSION:\n return window.sessionStorage;\n default:\n // @ts-ignore\n return window[this.availableTypes[0]];\n }\n };\n return Store;\n}());\nexport { Store };\n\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvdXRpbHMvc3RvcmUuYnJvd3Nlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFDSCxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUVyQyxJQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7QUFFbEM7SUFJRTtRQUZRLG1CQUFjLEdBQUcsRUFBRSxDQUFDO1FBRzFCLElBQUksTUFBTSxDQUFDLFlBQVksS0FBSyxTQUFTLEVBQUU7WUFDckMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNDLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1NBQy9CO1FBRUQsSUFBSSxNQUFNLENBQUMsY0FBYyxLQUFLLFNBQVMsRUFBRTtZQUN2QyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDN0MsS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7U0FDakM7UUFFRCxLQUFLLENBQUMscUJBQXFCLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFTSx5QkFBUyxHQUFoQixVQUFpQixRQUFxQjtRQUNwQyxLQUFLLENBQUMsd0RBQXdELEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUUvRixJQUFJLFFBQVEsRUFBRTtZQUNaLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDbkQ7UUFFRCxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQztJQUN0QyxDQUFDO0lBRU0sdUJBQU8sR0FBZCxVQUFlLEdBQVcsRUFBRSxRQUFxQjtRQUMvQyxJQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3RDLEtBQUssQ0FBQyxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFeEMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO1FBRUQsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFTSx1QkFBTyxHQUFkLFVBQWUsR0FBVyxFQUFFLEtBQWEsRUFBRSxRQUFxQjtRQUM5RCxJQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3RDLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFdEMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO1FBRUQsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRU0sMEJBQVUsR0FBakIsVUFBa0IsR0FBVyxFQUFFLFFBQXFCO1FBQ2xELElBQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdEMsS0FBSyxDQUFDLHVCQUF1QixFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUUzQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1YsT0FBTyxTQUFTLENBQUM7U0FDbEI7UUFFRCxPQUFPLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVPLHdCQUFRLEdBQWhCLFVBQWlCLFFBQXFCO1FBQ3BDLEtBQUssQ0FBQywrQkFBK0IsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUVqRCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUM3QixLQUFLLENBQUMsc0NBQXNDLENBQUMsQ0FBQztZQUM5QyxPQUFPLFNBQVMsQ0FBQztTQUNsQjtRQUVELFFBQVEsUUFBUSxFQUFFO1lBQ2hCLEtBQUssVUFBVSxDQUFDLEtBQUs7Z0JBQ25CLE9BQU8sTUFBTSxDQUFDLFlBQVksQ0FBQztZQUM3QixLQUFLLFVBQVUsQ0FBQyxPQUFPO2dCQUNyQixPQUFPLE1BQU0sQ0FBQyxjQUFjLENBQUM7WUFDL0I7Z0JBQ0UsYUFBYTtnQkFDYixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFZLENBQUM7U0FDcEQ7SUFDSCxDQUFDO0lBQ0gsWUFBQztBQUFELENBL0VBLEFBK0VDLElBQUEiLCJmaWxlIjoibGliL3V0aWxzL3N0b3JlLmJyb3dzZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4IGJ5IEZpbGVzdGFjay5cbiAqIFNvbWUgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IERlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCB7IFNUT1JFX1RZUEUgfSBmcm9tICcuL3N0b3JlJztcblxuY29uc3QgZGVidWcgPSBEZWJ1ZygnZnM6c3RvcmFnZScpO1xuXG5leHBvcnQgY2xhc3MgU3RvcmUge1xuXG4gIHByaXZhdGUgYXZhaWxhYmxlVHlwZXMgPSBbXTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBpZiAod2luZG93LmxvY2FsU3RvcmFnZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmF2YWlsYWJsZVR5cGVzLnB1c2goU1RPUkVfVFlQRS5MT0NBTCk7XG4gICAgICBkZWJ1ZygnTG9jYWwgc3RvcmFnZSBleGlzdHMnKTtcbiAgICB9XG5cbiAgICBpZiAod2luZG93LnNlc3Npb25TdG9yYWdlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuYXZhaWxhYmxlVHlwZXMucHVzaChTVE9SRV9UWVBFLlNFU1NJT04pO1xuICAgICAgZGVidWcoJ1Nlc3Npb24gc3RvcmFnZSBleGlzdHMnKTtcbiAgICB9XG5cbiAgICBkZWJ1ZygnYXZhaWxhYmxlVHlwZXMgLSAlTycsIHRoaXMuYXZhaWxhYmxlVHlwZXMpO1xuICB9XG5cbiAgcHVibGljIGhhc0FjY2VzcyhwcmVmVHlwZT86IFNUT1JFX1RZUEUpOiBib29sZWFuIHtcbiAgICBkZWJ1ZygnQ2hlY2tpbmcgYWNjZXNzIHRvIHN0b3JhZ2UgZm9yICVzLiBBdmFpbGFibGUgdHlwZXM6ICVPJywgcHJlZlR5cGUsIHRoaXMuYXZhaWxhYmxlVHlwZXMpO1xuXG4gICAgaWYgKHByZWZUeXBlKSB7XG4gICAgICByZXR1cm4gdGhpcy5hdmFpbGFibGVUeXBlcy5pbmRleE9mKHByZWZUeXBlKSA+IC0xO1xuICAgIH1cblxuICAgIHJldHVybiAhIXRoaXMuYXZhaWxhYmxlVHlwZXMubGVuZ3RoO1xuICB9XG5cbiAgcHVibGljIGdldEl0ZW0oa2V5OiBzdHJpbmcsIHByZWZUeXBlPzogU1RPUkVfVFlQRSkge1xuICAgIGNvbnN0IHN0b3JlID0gdGhpcy5nZXRTdG9yZShwcmVmVHlwZSk7XG4gICAgZGVidWcoJ2dldEl0ZW0gJXMgZnJvbSAlTycsIGtleSwgc3RvcmUpO1xuXG4gICAgaWYgKCFzdG9yZSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RvcmUuZ2V0SXRlbShrZXkpO1xuICB9XG5cbiAgcHVibGljIHNldEl0ZW0oa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIHByZWZUeXBlPzogU1RPUkVfVFlQRSkge1xuICAgIGNvbnN0IHN0b3JlID0gdGhpcy5nZXRTdG9yZShwcmVmVHlwZSk7XG4gICAgZGVidWcoJ3NldEl0ZW0gJXMgdG8gJU8nLCBrZXksIHN0b3JlKTtcblxuICAgIGlmICghc3RvcmUpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0b3JlLnNldEl0ZW0oa2V5LCB2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlSXRlbShrZXk6IHN0cmluZywgcHJlZlR5cGU/OiBTVE9SRV9UWVBFKSB7XG4gICAgY29uc3Qgc3RvcmUgPSB0aGlzLmdldFN0b3JlKHByZWZUeXBlKTtcbiAgICBkZWJ1ZygncmVtb3ZlSXRlbSAlcyBmcm9tICVPJywga2V5LCBzdG9yZSk7XG5cbiAgICBpZiAoIXN0b3JlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJldHVybiBzdG9yZS5yZW1vdmVJdGVtKGtleSk7XG4gIH1cblxuICBwcml2YXRlIGdldFN0b3JlKHByZWZUeXBlPzogU1RPUkVfVFlQRSk6IGZhbHNlIHwgU3RvcmFnZSB7XG4gICAgZGVidWcoJ2dldCBzdG9yZSB3aXRoIHByZWYgdHlwZSAtICVzJywgcHJlZlR5cGUpO1xuXG4gICAgaWYgKCF0aGlzLmhhc0FjY2VzcyhwcmVmVHlwZSkpIHtcbiAgICAgIGRlYnVnKCdVc2VyIGRvbnQgaGF2ZSBhY2Nlc3MgdG8gYW55IHN0b3JhZ2UnKTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgc3dpdGNoIChwcmVmVHlwZSkge1xuICAgICAgY2FzZSBTVE9SRV9UWVBFLkxPQ0FMOlxuICAgICAgICByZXR1cm4gd2luZG93LmxvY2FsU3RvcmFnZTtcbiAgICAgIGNhc2UgU1RPUkVfVFlQRS5TRVNTSU9OOlxuICAgICAgICByZXR1cm4gd2luZG93LnNlc3Npb25TdG9yYWdlO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICByZXR1cm4gd2luZG93W3RoaXMuYXZhaWxhYmxlVHlwZXNbMF1dIGFzIFN0b3JhZ2U7XG4gICAgfVxuICB9XG59XG4iXX0=\n","/*\n * Copyright (c) 2018 by Filestack.\n * Some rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { removeEmpty } from '../utils';\nimport { StoreParams } from '../filelink';\nimport { ClientOptions, Session } from '../client';\nimport { FilestackError } from './../../filestack_error';\nimport { UploadTags } from './upload/file';\nimport { FsRequest, FsCancelToken } from '../request';\nimport { Store, STORE_TYPE } from './../utils/store';\n\n/**\n * @private\n */\nexport const PICKER_KEY = '__fs_picker_token';\n\n/**\n * key for picker callback url (specifies which tab will be opened after opening picker)\n * @private\n */\nexport const CALLBACK_URL_KEY = 'fs-tab';\n\n/**\n * @private\n */\nexport class CloudClient {\n session: Session;\n cloudApiUrl: string;\n\n /**\n * Returns flag if token should be cached in local storage\n *\n * @private\n * @type {boolean}\n * @memberof CloudClient\n */\n private cache: boolean = false;\n\n /**\n * Token returned from api for accessing clouds\n *\n * @private\n * @type {string}\n * @memberof CloudClient\n */\n private _token: string;\n\n /**\n * Store adapter instance\n *\n * @private\n * @type {Store}\n * @memberof CloudClient\n */\n private storeAdapter: Store;\n\n constructor(session: Session, options?: ClientOptions) {\n this.session = session;\n this.storeAdapter = new Store();\n\n this.cloudApiUrl = session.urls.cloudApiUrl;\n\n if (options && options.sessionCache) {\n this.cache = options.sessionCache;\n }\n }\n\n get token() {\n if (this.cache) {\n const token = this.storeAdapter.getItem(PICKER_KEY, STORE_TYPE.LOCAL);\n if (token) return token;\n }\n\n if (this.isInAppBrowser) {\n return this.storeAdapter.getItem(PICKER_KEY, STORE_TYPE.SESSION);\n }\n\n return this._token;\n }\n\n set token(key) {\n if (this.cache) {\n this.storeAdapter.setItem(PICKER_KEY, key, STORE_TYPE.LOCAL);\n }\n\n if (this.isInAppBrowser) {\n this.storeAdapter.setItem(PICKER_KEY, key, STORE_TYPE.SESSION);\n }\n\n this._token = key;\n }\n\n /**\n * Return information is inappbrowser flag is set\n *\n * @readonly\n * @memberof CloudClient\n */\n private get isInAppBrowser() {\n if (this.session\n && this.session.prefetch\n && this.session.prefetch.settings\n && this.session.prefetch.settings.inapp_browser) {\n return this.session.prefetch.settings.inapp_browser;\n }\n\n return false;\n }\n\n list(clouds: any, cancelTokenInput?: any, accept?: string[] | string) {\n const payload: any = {\n apikey: this.session.apikey,\n clouds,\n flow: 'web',\n token: this.token,\n };\n\n if (accept) {\n if (!Array.isArray(accept)) {\n accept = [accept];\n }\n // filtering mimetypes in clouds\n payload.accept = accept;\n }\n\n if (this.isInAppBrowser) {\n payload.appurl = this.currentAppUrl();\n }\n\n if (this.session.policy && this.session.signature) {\n payload.policy = this.session.policy;\n payload.signature = this.session.signature;\n }\n\n let options: any = {};\n\n if (cancelTokenInput) {\n const cancelToken = new FsCancelToken();\n cancelTokenInput.cancel = cancelToken.cancel.bind(cancelToken);\n options.cancelToken = cancelToken;\n }\n\n return FsRequest.post(`${this.cloudApiUrl}/folder/list`, payload, options).then(res => {\n if (res.data && res.data.token) {\n this.token = res.data.token;\n }\n\n return res.data;\n });\n }\n\n store(name: string, path: string, options: StoreParams = {}, customSource: any = {}, cancelTokenInput?: any, uploadTags: UploadTags = null) {\n // Default to S3\n if (options.location === undefined) {\n options.location = 's3';\n }\n\n const payload: any = {\n apikey: this.session.apikey,\n token: this.token,\n flow: 'web',\n upload_tags: uploadTags ? uploadTags : undefined,\n clouds: {\n [name]: {\n path,\n store: removeEmpty(options),\n },\n },\n };\n\n if (name === 'customsource' && customSource.customSourcePath) {\n payload.clouds.customsource.customSourcePath = customSource.customSourcePath;\n }\n\n if (name === 'customsource' && customSource.customSourceContainer) {\n payload.clouds.customsource.customSourceContainer = customSource.customSourceContainer;\n }\n\n if (this.session.policy && this.session.signature) {\n payload.policy = this.session.policy;\n payload.signature = this.session.signature;\n }\n\n let requestOptions: any = {};\n\n if (cancelTokenInput) {\n const cancelToken = new FsCancelToken();\n cancelTokenInput.cancel = cancelToken.cancel.bind(cancelToken);\n requestOptions.cancelToken = cancelToken;\n }\n\n return FsRequest.post(`${this.cloudApiUrl}/store/`, payload, requestOptions).then(res => {\n if (res.data && res.data.token) {\n this.token = res.data.token;\n }\n\n if (res.data && res.data[name]) {\n return res.data[name];\n }\n\n return res.data;\n });\n }\n\n logout(name?: string) {\n const payload: any = {\n apikey: this.session.apikey,\n flow: 'web',\n token: this.token,\n };\n\n if (name) {\n payload.clouds = { [name]: {} };\n } else {\n if (this.cache) {\n // No name means logout of ALL clouds. Clear local session.\n this.storeAdapter.removeItem(PICKER_KEY, STORE_TYPE.LOCAL);\n }\n\n if (this.isInAppBrowser) {\n this.storeAdapter.removeItem(PICKER_KEY, STORE_TYPE.SESSION);\n }\n }\n\n return FsRequest.post(`${this.cloudApiUrl}/auth/logout`, payload).then(res => {\n if (res.data && res.data[name]) {\n return res.data[name];\n }\n return res.data;\n });\n }\n\n metadata(url: string, headers?: {[key: string]: string}) {\n const payload: any = {\n apikey: this.session.apikey,\n url,\n headers,\n };\n\n if (this.session.policy && this.session.signature) {\n payload.policy = this.session.policy;\n payload.signature = this.session.signature;\n }\n\n return FsRequest.post(`${this.cloudApiUrl}/metadata`, payload).then(res => res.data);\n }\n\n // OpenTok API Endpoints\n tokInit(type: string) {\n if (type !== 'video' && type !== 'audio') {\n throw new FilestackError('Type must be one of video or audio.');\n }\n return FsRequest.post(`${this.cloudApiUrl}/recording/${type}/init`).then(res => res.data);\n }\n\n tokStart(type: string, key: string, sessionId: string) {\n if (type !== 'video' && type !== 'audio') {\n throw new FilestackError('Type must be one of video or audio.');\n }\n const payload = {\n apikey: key,\n session_id: sessionId,\n };\n\n return FsRequest.post(`${this.cloudApiUrl}/recording/${type}/start`, payload).then(res => res.data);\n }\n\n tokStop(type: string, key: string, sessionId: string, archiveId: string) {\n if (type !== 'video' && type !== 'audio') {\n throw new FilestackError('Type must be one of video or audio.');\n }\n\n const payload = {\n apikey: key,\n session_id: sessionId,\n archive_id: archiveId,\n };\n\n return FsRequest.post(`${this.cloudApiUrl}/recording/${type}/stop`, payload).then(res => res.data);\n }\n\n private currentAppUrl() {\n if (!window.URLSearchParams) {\n return undefined;\n }\n\n // set init string for clouds backend,\n // After this cloud service can make redirect back to current page url with selected tab for given cloud\n // if param exists and its value is init, backend will fill it with cloud name\n const searchParams = new URLSearchParams(window.location.search);\n searchParams.set(CALLBACK_URL_KEY, 'init');\n\n return `${window.location.protocol}//${window.location.host}${window.location.pathname}?${searchParams.toString()}`;\n }\n}\n","/*\n * Copyright (c) 2018 by Filestack.\n * Some rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// import Debug from 'debug';\nimport { FilestackError } from './../../filestack_error';\nimport { Session, Security, Client } from './../client';\nimport { PickerOptions } from './../picker';\nimport { FsRequest } from '../request';\nimport { cleanUpCallbacks } from './../utils';\nimport * as cloneDeep from 'lodash.clonedeep';\n\n// const debug = Debug('fs:prefetch');\n\nexport type PrefetchSettings = {\n inapp_browser?: boolean;\n};\n\nexport type PrefetchPermissions = {\n intelligent_ingestion?: boolean;\n whitelabel?: boolean;\n transforms_ui?: boolean;\n enhance?: boolean;\n advanced_enhance?: boolean;\n};\n\nexport enum PrefetchEvents {\n PICKER = 'picker',\n TRANSFORM_UI = 'transform_ui',\n}\n\nexport type PrefetchOptions = {\n pickerOptions?: PickerOptions;\n settings?: Array<keyof PrefetchSettings>;\n permissions?: Array<keyof PrefetchPermissions>;\n events?: PrefetchEvents[];\n};\n\ninterface PrefetchRequest {\n apikey: string;\n security?: Security;\n permissions?: Array<keyof PrefetchPermissions>;\n settings?: Array<keyof PrefetchSettings>;\n events?: PrefetchEvents[];\n picker_config?: PickerOptions;\n}\n\nexport type PrefetchResponse = {\n blocked?: boolean | string;\n settings?: PrefetchSettings;\n permissions?: PrefetchPermissions;\n pickerOptions: PickerOptions;\n};\n\n/**\n * @private\n */\nexport class Prefetch {\n\n private session: Session;\n\n constructor(param: Session | Client) {\n if (param instanceof Client) {\n this.session = param.session;\n } else {\n this.session = param;\n }\n }\n\n /**\n * Returns filestack options from backend according to input params\n *\n * @param param0\n */\n async getConfig({ pickerOptions, settings, permissions, events }: PrefetchOptions): Promise<PrefetchResponse> {\n let paramsToSend: PrefetchRequest = {\n apikey: this.session.apikey,\n };\n\n if (this.session.policy && this.session.signature) {\n paramsToSend.security = { policy: this.session.policy, signature: this.session.signature };\n }\n\n // if (this.session.prefetch && events) {\n // return FsRequest.post(`${this.session.urls.uploadApiUrl}/prefetch`, { ...paramsToSend, events }).then(() => this.session.prefetch);\n // }\n\n // we should always ask for this setting for picker\n if (!settings) {\n settings = ['inapp_browser'];\n } else {\n settings = settings.concat(['inapp_browser']);\n // make arrray unique\n settings = settings.filter((v, i) => settings.indexOf(v) === i);\n }\n\n let pickerOptionsToSend;\n if (pickerOptions && Object.keys(pickerOptions).length) {\n pickerOptionsToSend = cleanUpCallbacks(cloneDeep({ ...pickerOptions }));\n }\n\n paramsToSend = {\n ...paramsToSend,\n permissions,\n settings,\n picker_config: pickerOptionsToSend,\n events,\n };\n\n this.session.prefetch = null;\n\n return FsRequest.post(`${this.session.urls.uploadApiUrl}/prefetch`, paramsToSend).then((res) => {\n /* istanbul ignore if */\n if (res.status !== 200) {\n throw new FilestackError('There is a problem with prefetch request');\n }\n\n let data = res.data;\n\n // if backend not returning updated_config cay we take old config and return\n if (data.updated_config) {\n // reassign callback from old config to new one returned from backend\n data.pickerOptions = this.reassignCallbacks(pickerOptions, data.updated_config || {});\n delete data.updated_config;\n } else {\n data.pickerOptions = pickerOptions;\n }\n\n this.session.prefetch = data;\n\n return data;\n });\n }\n\n /**\n * Reassign callbacks from old picker configuration\n *\n * @param objOld\n * @param objTarget\n */\n private reassignCallbacks(objOld, objTarget) {\n if (!objOld || Object.keys(objOld).length === 0) {\n return objOld;\n }\n\n for (const k in objOld) {\n if (typeof objOld[k] === 'function') {\n objTarget[k] = objOld[k];\n }\n\n if (objOld[k] === Object(objOld[k])) {\n objTarget[k] = this.reassignCallbacks(objOld[k], objTarget[k]);\n }\n }\n\n return objTarget;\n }\n}\n","/*\n * Copyright (c) 2018 by Filestack\n * Some rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { loadModule, FILESTACK_MODULES } from '@filestack/loader';\nimport { FilestackError, FilestackErrorType } from './../filestack_error';\nimport { Client } from './client';\nimport { FSProgressEvent, UploadOptions, WorkflowConfig } from './api/upload/types';\nimport { getValidator, PickerParamsSchema } from './../schema';\n\nexport interface PickerInstance {\n /**\n * Close picker. This operation is idempotent.\n */\n close: () => Promise<void>;\n\n /**\n * Cancel picker uploads. This operation is idempotent.\n */\n cancel: () => Promise<void>;\n\n /**\n * Open picker. This operation is idempotent.\n */\n open: () => Promise<void>;\n\n /**\n * Specify a list of files to open in the picker for cropping\n *\n * ### Example\n *\n * ```js\n * // <input id=\"fileSelect\" type=\"file\">\n *\n * const inputEl = document.getElementById('fileSelect');\n * const picker = client.picker({\n * onUploadDone: res => console.log(res),\n * });\n *\n * inputEl.addEventListener('change', (e) => {\n * picker.crop(e.target.files);\n * });\n *\n * // Or pass an array of URL strings\n * const urls = [\n * 'https://d1wtqaffaaj63z.cloudfront.net/images/fox_in_forest1.jpg',\n * 'https://d1wtqaffaaj63z.cloudfront.net/images/sail.jpg',\n * ];\n * picker.crop(urls);\n * ```\n */\n crop: (files: any[]) => Promise<void>;\n}\n\nexport interface PickerCroppedData {\n cropArea: {\n /**\n * [x, y]\n */\n position: [number, number];\n /**\n * [width, height]\n */\n size: [number, number];\n };\n /**\n * [width, height]\n */\n originalImageSize: [number, number];\n}\n\nexport enum RotateDirection {\n cw = 'CW',\n ccw= 'CCW',\n}\n\nexport interface PickerRotatedData {\n /**\n * Amount rotated in degrees.\n */\n value: number;\n /**\n * Can be CW or CCW (clockwise / counter-clockwise)\n */\n direction: RotateDirection;\n}\n\nexport interface PickerFileMetadata {\n /**\n * The cloud container for the uploaded file.\n */\n container?: string;\n /**\n * Position and size information for cropped images.\n */\n cropped?: PickerCroppedData;\n /**\n * Name of the file.\n */\n filename: string;\n /**\n * Filestack handle for the uploaded file.\n */\n handle: string;\n /**\n * The hash-prefixed cloud storage path.\n */\n key?: string;\n /**\n * The MIME type of the file.\n */\n mimetype: string;\n /**\n * Properties of the local binary file. Also see the pick option `exposeOriginalFile` if you want the underlying `File` object.\n */\n originalFile?: object | File;\n /**\n * The origin of the file, e.g. /Folder/file.jpg.\n */\n originalPath: string;\n /**\n * Direction and value information for rotated images.\n */\n rotated?: PickerRotatedData;\n /**\n * Size in bytes of the uploaded file.\n */\n size: number;\n /**\n * The source from where the file was picked.\n */\n source: string;\n /**\n * Indicates Filestack transit status.\n */\n status?: string;\n /**\n * A uuid for tracking this file in callbacks.\n */\n uploadId: string;\n /**\n * The Filestack CDN URL for the uploaded file.\n */\n url: string;\n}\n\nexport interface CustomAuthTextOptions {\n [key: string]: {\n top?: string[],\n bottom?: string[]\n };\n}\n\nexport interface PickerResponse {\n filesUploaded: PickerFileMetadata[];\n filesFailed: PickerFileMetadata[];\n}\n\nexport interface PickerFileCallback {\n (file: PickerFileMetadata): void | Promise<any>;\n}\nexport interface PickerFileWithTokenCallback {\n (file: PickerFileMetadata, token?: {pause?: () => void, resume?: () => void, cancel?: () => void}): void | Promise<any>;\n}\n\nexport interface PickerFileCancelCallback {\n (file: PickerFileMetadata): void;\n}\n\nexport interface PickerFileErrorCallback {\n (file: PickerFileMetadata, error: Error): void;\n}\n\nexport interface PickerFileProgressCallback {\n (file: PickerFileMetadata, event: FSProgressEvent): void;\n}\n\nexport interface PickerUploadStartedCallback {\n (files: PickerFileMetadata[]): void;\n}\n\nexport interface PickerUploadDoneCallback {\n (files: PickerResponse): void;\n}\n\nexport enum PickerDisplayMode {\n inline = 'inline',\n overlay = 'overlay',\n dropPane = 'dropPane',\n}\n\nexport interface PickerDropPaneOptions {\n /**\n * Toggle the crop UI for dropped files.\n */\n cropFiles?: boolean;\n /**\n * Customize the text content in the drop pane.\n */\n customText?: string;\n /**\n * Disable the file input on click. This does not disable the `onClick` callback.\n */\n disableClick?: boolean;\n /**\n * Toggle the full-page drop zone overlay.\n */\n overlay?: boolean;\n onDragEnter?: (evt: DragEvent) => void;\n onDragLeave?: () => void;\n onDragOver?: (evt: DragEvent) => void;\n onDrop?: (evt: DragEvent) => void;\n /**\n * `onSuccess` must be used instead of `onUploadDone`. The drop pane uses its own callbacks for compatibility purposes. This might eventually change.\n */\n onSuccess?: (files: PickerFileMetadata[]) => void;\n onError?: (files: PickerFileMetadata[]) => void;\n onProgress?: (percent: number) => void;\n onClick?: (evt: any) => void;\n /**\n * Toggle icon element in drop pane.\n */\n showIcon?: boolean;\n /**\n * Toggle upload progress display.\n */\n showProgress?: boolean;\n}\n\nexport interface PickerStoreOptions {\n /**\n * Location for stored file. One of 's3', 'gcs', 'azure', 'rackspace', or 'dropbox'.\n */\n location?: string;\n /**\n * Specify storage container.\n */\n container?: string;\n /**\n * Set container path. Indicate a folder by adding a trailing slash. Without a trailing slash all files will be stored to the same object.\n */\n path?: string;\n /**\n * Specify S3 region.\n */\n region?: string;\n /**\n * S3 container access. 'public' or 'private'.\n */\n access?: string;\n\n /**\n * Workflows ids to run after upload\n */\n workflows?: string[] | WorkflowConfig[];\n}\n\nexport interface PickerCustomText {\n // Actions\n Upload?: string;\n 'Upload more'?: string;\n 'Deselect All'?: string;\n 'View/Edit Selected'?: string;\n 'Sign Out'?: string;\n\n // Source Labels\n 'My Device'?: string;\n 'Web Search'?: string;\n 'Take Photo'?: string;\n 'Link (URL)'?: string;\n 'Record Video'?: string;\n 'Record Audio'?: string;\n\n // Custom Source\n 'Custom Source'?: string;\n\n // Footer Text\n Add?: string;\n 'more file'?: string;\n 'more files'?: string;\n\n // Cloud\n 'Connect {providerName}'?: string;\n 'Select Files from {providerName}'?: string;\n 'You need to authenticate with {providerName}.'?: string;\n 'A new page will open to connect your account.'?: string;\n 'We only extract images and never modify or delete them.'?: string;\n 'To disconnect from {providerName} click \"Sign out\" button in the menu.'?: string;\n 'Sign in with Google'?: string;\n 'Go back'?: string;\n 'This folder is empty.'?: string;\n\n // Summary\n Files?: string;\n Images?: string;\n Uploaded?: string;\n Uploading?: string;\n Completed?: string;\n Filter?: string;\n 'Cropped Images'?: string;\n 'Edited Images'?: string;\n 'Selected Files'?: string;\n 'Crop is required on images'?: string;\n\n // Transform\n Crop?: string;\n Circle?: string;\n Rotate?: string;\n Mask?: string;\n Revert?: string;\n Edit?: string;\n Reset?: string;\n Done?: string;\n Save?: string;\n Next?: string;\n 'Edit Image'?: string;\n 'This image cannot be edited'?: string;\n\n // Retry messaging\n 'Connection Lost'?: string;\n 'Failed While Uploading'?: string;\n 'Retrying in'?: string;\n 'Try again'?: string;\n 'Try now'?: string;\n\n // Local File Source\n 'Drag and Drop, Copy and Paste Files'?: string;\n 'or Drag and Drop, Copy and Paste Files'?: string;\n 'Select Files to Upload'?: string;\n 'Select From'?: string;\n 'Drop your files anywhere'?: string;\n\n // Input placeholders\n 'Enter a URL'?: string;\n 'Search images'?: string;\n\n // Webcam Source\n 'Webcam Disabled'?: string;\n 'Webcam Not Supported'?: string;\n 'Please enable your webcam to take a photo.'?: string;\n 'Your current browser does not support webcam functionality.'?: string;\n 'We suggest using Chrome or Firefox.'?: string;\n\n // Error Notifications\n 'File {displayName} is not an accepted file type. The accepted file types are {types}'?: string;\n 'File {displayName} is too big. The accepted file size is less than {roundFileSize}'?: string;\n 'Our file upload limit is {maxFiles} {filesText}'?: string;\n 'No search results found for \"{search}\"'?: string;\n 'An error occurred. Please try again.'?: string;\n}\n\nexport interface PickerOptions {\n /**\n * Restrict file types that are allowed to be picked. Formats accepted:\n * - .pdf <- any file extension\n * - image/jpeg <- any mime type commonly known by browsers\n * - image/* <- accept all types of images\n * - video/* <- accept all types of video files\n * - audio/* <- accept all types of audio files\n * - application/* <- accept all types of application files\n * - text/* <- accept all types of text files\n */\n accept?: string | string[];\n /**\n * Custom accept check function\n * ```javascript\n * acceptFn: (file, options) => {\n * return options.mimeFromMagicBytes(file.originalFile).then((res) => { // we can check mimetype from magic bytes\n * //console.log(options.mimeFromExtension(file.originalFile.name)); // or check extension from filestack extensions database\n * // throw new Error('Cannot accept that file') // we can throw exception to block file upload\n * // return Promise.reject('Cannot accept that file'') // or reject a promise\n * return Promise.resolve();\n * });\n * }\n * ```\n */\n acceptFn?: (PickerFileMetadata, PickerAcceptFnOptions) => Promise<string>;\n /**\n * Prevent modal close on upload failure and allow users to retry.\n */\n allowManualRetry?: boolean;\n /**\n * Valid sources are:\n * - local_file_system - Default\n * - url - Default\n * - imagesearch - Default\n * - facebook - Default\n * - instagram - Default\n * - googledrive - Default\n * - dropbox - Default\n * - webcam - Uses device menu on mobile. Not currently supported in Safari and IE.\n * - video - Uses device menu on mobile. Not currently supported in Safari and IE.\n * - audio - Uses device menu on mobile. Not currently supported in Safari and IE.\n * - box\n * - github\n * - gmail\n * - googlephotos\n * - onedrive\n * - onedriveforbusiness\n * - customsource - Configure this in your Filestack Dev Portal.\n * - unsplash\n */\n fromSources?: string[];\n /**\n * Container where picker should be appended. Only relevant for `inline` and `dropPane` display modes.\n */\n container?: string | Node;\n\n /**\n * Turn on cleaning JPEG image exif. Method can keep image orientation or color profiles\n * ```javascript\n * cleanupImageExif: {\n * keepOrientation: true\n * keepICCandAPP: true\n * }\n * ```\n */\n cleanupImageExif?: boolean | {\n keepOrientation?: boolean,\n keepICCandAPP?: boolean\n };\n /**\n * Customize the text on the cloud authentication screen in Picker.\n * Use a cloud source name (see [[PickerOptions.fromSources]])\n * or a 'default' as a key, then put your custom notice or consent\n * to the 'top' or the 'bottom' key to show it respectivly above or under 'Connect button'.\n *\n * ```javascript\n * customAuthText: {\n * // use it for every cloud authentication screen\n * default: {\n * top: [\n * 'default top first line',\n * 'default top second line'\n * ],\n * bottom: [\n * 'default bottom first line',\n * 'default bottom second line'\n * ]\n * },\n * // override a default bottom text for only gmail\n * gmail: {\n * bottom: [\n * 'We need your permission to access your data and',\n * 'process it with our machine learning system.'\n * ]\n * }\n * }\n * ```\n */\n customAuthText?: CustomAuthTextOptions;\n /**\n * Picker display mode, one of `'inline'`, `'overlay'`, `'dropPane'` - default is `'overlay'`.\n */\n displayMode?: PickerDisplayMode;\n /**\n * Max number of files to upload concurrently. Default is 4.\n */\n concurrency?: number;\n /**\n * Set the default container for your custom source.\n */\n customSourceContainer?: string;\n /**\n * Set the default path for your custom source container.\n */\n customSourcePath?: string;\n /**\n * Set the display name for the custom source.\n */\n customSourceName?: string;\n /**\n * Provide an object for mapping picker strings to your own strings.\n * Strings surrounded by brackets, `{ foobar }`, are interpolated with runtime values.\n * Source labels are also available to override, e.g. Facebook, Instagram, Dropbox, etc.\n */\n customText?: PickerCustomText;\n /**\n * set support email to display in case of error\n */\n supportEmail?: string;\n /**\n * When true removes the hash prefix on stored files.\n */\n disableStorageKey?: boolean;\n /**\n * When true removes ability to edit images.\n */\n disableTransformer?: boolean;\n /**\n * Disables local image thumbnail previews in the summary screen.\n */\n disableThumbnails?: boolean;\n /**\n * Configure the drop pane behavior, i.e. when `displayMode` is `dropPane`.\n */\n dropPane?: PickerDropPaneOptions;\n /**\n * When true the `originalFile` metadata will be the actual `File` object instead of a POJO\n */\n exposeOriginalFile?: boolean;\n /**\n * Toggle the drop zone to be active on all views. Default is active only on local file source.\n */\n globalDropZone?: boolean;\n /**\n * Hide the picker modal UI once uploading begins. Defaults to `false`.\n */\n hideModalWhenUploading?: boolean;\n\n /**\n * Specify image dimensions. e.g. [800, 600]. Only for JPEG, PNG, and BMP files.\n * Local and cropped images will be resized (upscaled or downscaled) to the specified dimensions before uploading.\n * The original height to width ratio is maintained. To resize all images based on the width, set [width, null], e.g. [800, null].\n * For the height set [null, height], e.g. [null, 600].\n */\n imageDim?: [number, number];\n /**\n * Specify maximum image dimensions. e.g. [800, 600]. Only for JPEG, PNG, and BMP files.\n * Images bigger than the specified dimensions will be resized to the maximum size while maintaining the original aspect ratio.\n * The output will not be exactly 800x600 unless the imageMax matches the aspect ratio of the original image.\n */\n imageMax?: [number, number];\n /**\n * Specify minimum image dimensions. e.g. [800, 600]. Only for JPEG, PNG, and BMP files.\n * Images smaller than the specified dimensions will be upscaled to the minimum size while maintaining the original aspect ratio.\n * The output will not be exactly 800x600 unless the imageMin matches the aspect ratio of the original image.\n */\n imageMin?: [number, number];\n /**\n * Sets locale. Accepts: ca, da, de, en, es, fr, he, it, ja, ko, nl, no, pl, pt, sv, ru, vi, zh, tr\n */\n lang?: string;\n /**\n * Minimum number of files required to start uploading. Defaults to 1.\n */\n minFiles?: number;\n /**\n * Maximum number of files allowed to upload. Defaults to 1.\n */\n maxFiles?: number;\n /**\n * Restrict selected files to a maximum number of bytes. (e.g. 10 \\* 1024 \\* 1024 for 10MB limit).\n */\n maxSize?: number;\n\n /**\n * Default view type option for file browser\n */\n viewType?: 'grid' | 'list';\n\n /**\n * Timeout for error messages\n */\n errorsTimeout?: number;\n /**\n * Specify [width, height] in pixels of the desktop modal.\n */\n modalSize?: [number, number];\n /**\n * Called when all uploads in a pick are cancelled.\n */\n onCancel?: PickerUploadDoneCallback;\n /**\n * Called when the UI is exited.\n */\n onClose?: () => void;\n /**\n * Called when the UI is mounted.\n * @param PickerInstance application handle\n */\n onOpen?: (handle: PickerInstance) => void;\n /**\n * Called whenever user selects a file.\n * ### Example\n *\n * ```js\n * // Using to veto file selection\n * // If you throw any error in this function it will reject the file selection.\n * // The error message will be displayed to the user as an alert.\n * onFileSelected(file) {\n * if (file.size > 1000 * 1000) {\n * throw new Error('File too big, select something smaller than 1MB');\n * }\n * }\n *\n * // Using to change selected file name\n * // NOTE: This currently only works for local uploads\n * onFileSelected(file) {\n * // It's important to return a new file by the end of this function.\n * return { ...file, name: 'foo' };\n * }\n * ```\n *\n * The callback function can also return a Promise to allow asynchronous validation logic.\n * You can pass a file object to `resolve` for changing the file name, it will behave the same as when\n * the file is returned from the non-async callback.\n *\n * ```js\n * onFileSelected(file) {\n * return new Promise((resolve, reject) => {\n * // Do something async\n * resolve();\n * // Or reject the selection with reject()\n * });\n * }\n * ```\n */\n onFileSelected?: PickerFileCallback;\n /**\n * Called when a file upload has been canceled.\n */\n onFileUploadCancel?: PickerFileCancelCallback;\n /**\n * Called when a file begins uploading.\n */\n onFileUploadStarted?: PickerFileWithTokenCallback;\n /**\n * Called when a file is done uploading.\n */\n onFileUploadFinished?: PickerFileCallback;\n /**\n * Called when uploading a file fails.\n */\n onFileUploadFailed?: PickerFileErrorCallback;\n /**\n * Called during multi-part upload progress events. Local files only.\n */\n onFileUploadProgress?: PickerFileProgressCallback;\n /**\n * Called when file is cropped in picker\n */\n onFileCropped?: PickerFileCallback;\n /**\n * Called when uploading starts (user initiates uploading).\n */\n onUploadStarted?: PickerUploadStartedCallback;\n /**\n * Called when all files have been uploaded.\n */\n onUploadDone?: PickerUploadDoneCallback;\n\n /**\n * Define a unique id for the application mount point.\n * May be useful for more advanced use cases.\n * For example, if you wish to have more than one picker instance open at once,\n * then each will need their own unique rootId.\n *\n * **Note:** This option is ignored when `displayMode` is `dropPane`.\n */\n rootId?: string;\n /**\n * Whether to start uploading automatically when maxFiles is hit. Defaults to `false`.\n */\n startUploadingWhenMaxFilesReached?: boolean;\n /**\n * Options for file storage.\n */\n storeTo?: PickerStoreOptions;\n /**\n * Specify options for images passed to the crop UI.\n */\n transformations?: PickerTransformationOptions;\n /**\n * Options for local file uploads.\n */\n uploadConfig?: UploadOptions;\n /**\n * Start uploading immediately on file selection. Defaults to `true`.\n * @important The feature is can be enabled only if crop is disabled - disableTransformer: true\n */\n uploadInBackground?: boolean;\n /**\n * Sets the resolution of recorded video. One of \"320x240\", \"640x480\" or \"1280x720\". Default is `\"640x480\"`.\n */\n videoResolution?: string;\n /**\n * Use Sentry Breadcrumbs mechanism to log information about occured errors.\n * It can override global objects like console, error etc. Defaults to `true`.\n */\n useSentryBreadcrumbs?: boolean;\n /**\n * Specify which Picker instance should respond to paste event.\n * By default only hovered instance responds to event.\n * @param {boolean = false} pasteToFirstInViewPort If none instance is hovered take first picker instance fully visible in viewport\n * @param {boolean = false} pasteToFirstInstance If none instance is hovered take first picker instance that is initialized\n * @pasteToFirstInViewPort is checked first\n */\n pasteMode?: {\n pasteToFirstInViewPort?: boolean,\n pasteToFirstInstance?: boolean\n };\n}\n\nexport interface PickerCropOptions {\n /**\n * Maintain aspect ratio for crop selection. (e.g. 16/9, 800/600).\n */\n aspectRatio?: number;\n /**\n * Force all images to be cropped before uploading.\n */\n force?: boolean;\n}\n\nexport interface PickerTransformationOptions {\n /**\n * Enable crop. Defaults to `true`.\n */\n crop?: boolean | PickerCropOptions;\n /**\n * Enable circle crop. Disabled if crop.aspectRatio is defined and not 1. Converts to PNG. Defaults to `true`.\n */\n circle?: boolean;\n /**\n * Enable image rotation. Defaults to `true`.\n */\n rotate?: boolean;\n\n /**\n * Global force crop option. Can be use ie with circle\n */\n force?: boolean;\n}\n\nexport interface PickerAcceptFnOptions {\n /**\n * Provided accept string\n */\n accept: string[];\n /**\n * Accept string converted to mimetype\n */\n acceptMime: string[];\n /**\n * Mimetype based magic bytes\n * {@link https://filestack.github.io/filestack-js/globals.html#getmimetype}\n */\n mimeFromMagicBytes: Promise<string>;\n /**\n * Mimetype based on file extension\n * {@link https://filestack.github.io/filestack-js/globals.html#extensiontomime}\n */\n mimeFromExtension: string;\n}\n\n/**\n * @private\n * A synchronous-looking wrapper for loading the picker and calling its methods.\n * This is currently needed because the picker module is loaded asynchronously.\n * Eventually we should offer a bundle with the picker module included.\n */\nclass PickerLoader {\n\n private _initialized: Promise<PickerInstance>;\n constructor(client: Client, options?: PickerOptions) {\n const validateRes = getValidator(PickerParamsSchema)(options);\n\n if (validateRes.errors.length) {\n throw new FilestackError(`Invalid picker params`, validateRes.errors, FilestackErrorType.VALIDATION);\n }\n\n this._initialized = this.loadModule(client, options);\n }\n\n async open(): Promise<void> {\n const picker = await this._initialized;\n await picker.open();\n }\n\n async crop(files: any[]): Promise<void> {\n const picker = await this._initialized;\n await picker.crop(files);\n }\n\n async close(): Promise<void> {\n const picker = await this._initialized;\n await picker.close();\n }\n\n async cancel(): Promise<void> {\n const picker = await this._initialized;\n await picker.cancel();\n }\n\n private async loadModule(client: Client, options?: PickerOptions): Promise<PickerInstance> {\n const { session: { urls: { pickerUrl: url } } } = client;\n const Picker = await loadModule(FILESTACK_MODULES.PICKER, url);\n return new Picker(client, options);\n }\n}\n\n/**\n * Loads and creates picker instance\n *\n * @private\n * @param client\n * @param options\n */\nexport const picker = (client: Client, options?: PickerOptions): PickerInstance => {\n return new PickerLoader(client, options);\n};\n","/*\n * Copyright (c) 2018 by Filestack\n * Some rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { EventEmitter } from 'eventemitter3';\nimport * as Sentry from '@sentry/minimal';\nimport { config, Hosts } from '../config';\nimport { FilestackError } from './../filestack_error';\nimport { metadata, MetadataOptions, remove, retrieve, RetrieveOptions, download } from './api/file';\nimport { transform, TransformOptions } from './api/transform';\nimport { storeURL } from './api/store';\nimport * as Utils from './utils';\nimport { Upload, InputFile, UploadOptions, StoreUploadOptions, UploadTags } from './api/upload';\nimport { preview, PreviewOptions } from './api/preview';\nimport { CloudClient } from './api/cloud';\nimport { Prefetch, PrefetchResponse, PrefetchOptions } from './api/prefetch';\nimport { FsResponse } from './request/types';\nimport { StoreParams } from './filelink';\n\nimport { picker, PickerInstance, PickerOptions } from './picker';\n\n/* istanbul ignore next */\nSentry.addBreadcrumb({ category: 'sdk', message: 'filestack-js-sdk scope' });\n\nexport interface Session {\n apikey: string;\n urls: Hosts;\n cname?: string;\n policy?: string;\n signature?: string;\n prefetch?: PrefetchResponse;\n}\n\nexport interface Security {\n policy: string;\n signature: string;\n}\n\nexport interface ClientOptions {\n [option: string]: any;\n /**\n * Security object with policy and signature keys.\n * Can be used to limit client capabilities and protect public URLs.\n * It is intended to be used with server-side policy and signature generation.\n * Read about [security policies](https://www.filestack.com/docs/concepts/security).\n */\n security?: Security;\n /**\n * Domain to use for all URLs. __Requires the custom CNAME addon__.\n * If this is enabled then you must also set up your own OAuth applications\n * for each cloud source you wish to use in the picker.\n */\n cname?: string;\n /**\n * Enable/disable caching of the cloud session token. Default is false.\n * This ensures that users will be remembered on your domain when calling the cloud API from the browser.\n * Please be aware that tokens stored in localStorage are accessible by other scripts on the same domain.\n */\n sessionCache?: boolean;\n\n /**\n * Enable forwarding error logs to sentry\n * @default false\n */\n forwardErrors?: boolean;\n}\n\n/**\n * The Filestack client, the entry point for all public methods. Encapsulates session information.\n *\n * ### Example\n * ```js\n * // ES module\n * import * as filestack from 'filestack-js';\n * const client = filestack.init('apikey');\n * ```\n *\n * ```js\n * // UMD module in browser\n * <script src=\"https://static.filestackapi.com/filestack-js/3.x.x/filestack.min.js\"></script>\n * const client = filestack.init('apikey');\n * ```\n */\nexport class Client extends EventEmitter {\n public session: Session;\n private cloud: CloudClient;\n private prefetchInstance: Prefetch;\n\n private forwardErrors: boolean = true;\n\n /**\n * Returns filestack utils\n *\n * @readonly\n * @memberof Client\n */\n get utils() {\n return Utils;\n }\n\n constructor(apikey: string, private options?: ClientOptions) {\n super();\n\n /* istanbul ignore if */\n if (options && options.forwardErrors) {\n this.forwardErrors = options.forwardErrors;\n }\n\n if (!apikey || typeof apikey !== 'string' || apikey.length === 0) {\n throw new Error('An apikey is required to initialize the Filestack client');\n }\n const { urls } = config;\n this.session = { apikey, urls };\n\n if (options) {\n const { cname, security } = options;\n\n this.setSecurity(security);\n this.setCname(cname);\n }\n\n this.prefetchInstance = new Prefetch(this.session);\n this.cloud = new CloudClient(this.session, options);\n }\n\n /**\n * Make basic prefetch request to check permissions\n *\n * @param params\n */\n prefetch(params: PrefetchOptions) {\n return this.prefetchInstance.getConfig(params);\n }\n\n /**\n * Set security object\n *\n * @param {Security} security\n * @memberof Client\n */\n setSecurity(security: Security) {\n if (security && !(security.policy && security.signature)) {\n throw new FilestackError('Both policy and signature are required for client security');\n }\n\n if (security && security.policy && security.signature) {\n this.session.policy = security.policy;\n this.session.signature = security.signature;\n }\n }\n\n /**\n * Set custom cname\n *\n * @param {string} cname\n * @returns\n * @memberof Client\n */\n setCname(cname: string) {\n if (!cname || cname.length === 0) {\n return;\n }\n\n this.session.cname = cname;\n this.session.urls = Utils.resolveHost(this.session.urls, cname);\n }\n\n /**\n * Clear all current cloud sessions in the picker.\n * Optionally pass a cloud source name to only log out of that cloud source.\n * This essentially clears the OAuth authorization codes from the Filestack session.\n * @param name Optional cloud source name.\n */\n logout(name?: string) {\n return this.cloud.logout(name);\n }\n /**\n * Retrieve detailed data of stored files.\n *\n * ### Example\n *\n * ```js\n * client\n * .metadata('DCL5K46FS3OIxb5iuKby')\n * .then((res) => {\n * console.log(res);\n * })\n * .catch((err) => {\n * console.log(err);\n * }));\n * ```\n * @see [File API - Metadata](https://www.filestack.com/docs/api/file#metadata).\n * @param handle Valid Filestack handle.\n * @param options Metadata fields to enable on response.\n * @param security Optional security override.\n */\n metadata(handle: string, options?: MetadataOptions, security?: Security) {\n /* istanbul ignore next */\n return metadata(this.session, handle, options, security);\n }\n /**\n * Construct a new picker instance.\n */\n picker(options?: PickerOptions): PickerInstance {\n /* istanbul ignore next */\n return picker(this, options);\n }\n /**\n * Used for viewing files via Filestack handles or storage aliases, __requires Document Viewer addon to your Filestack application__.\n * Opens document viewer in new window if id option is not provided.\n *\n * ### Example\n *\n * ```js\n * // <div id=\"preview\"></div>\n *\n * client.preview('DCL5K46FS3OIxb5iuKby', { id: 'preview' });\n * ```\n * @param handle Valid Filestack handle.\n * @param options Preview options\n */\n preview(handle: string, options?: PreviewOptions) {\n /* istanbul ignore next */\n return preview(this.session, handle, options);\n }\n /**\n * Remove a file from storage and the Filestack system.\n *\n * __Requires a valid security policy and signature__. The policy and signature will be pulled from the client session, or it can be overridden with the security parameter.\n *\n * ### Example\n *\n * ```js\n * client\n * .remove('DCL5K46FS3OIxb5iuKby')\n * .then((res) => {\n * console.log(res);\n * })\n * .catch((err) => {\n * console.log(err);\n * }));\n * ```\n * @see [File API - Delete](https://www.filestack.com/docs/api/file#delete)\n * @param handle Valid Filestack handle.\n * @param security Optional security override.\n */\n remove(handle: string, security?: Security): Promise<any> {\n /* istanbul ignore next */\n return remove(this.session, handle, false, security);\n }\n /**\n * Remove a file **only** from the Filestack system. The file remains in storage.\n *\n * __Requires a valid security policy and signature__. The policy and signature will be pulled from the client session, or it can be overridden with the security parameter.\n *\n * ### Example\n *\n * ```js\n * client\n * .removeMetadata('DCL5K46FS3OIxb5iuKby')\n * .then((res) => {\n * console.log(res);\n * })\n * .catch((err) => {\n * console.log(err);\n * }));\n * ```\n * @see [File API - Delete](https://www.filestack.com/docs/api/file#delete)\n * @param handle Valid Filestack handle.\n * @param security Optional security override.\n */\n removeMetadata(handle: string, security?: Security): Promise<any> {\n /* istanbul ignore next */\n return remove(this.session, handle, true, security);\n }\n /**\n * Store a file from its URL.\n *\n * ### Example\n *\n * ```js\n * client\n * .storeURL('https://d1wtqaffaaj63z.cloudfront.net/images/NY_199_E_of_Hammertown_2014.jpg')\n * .then(res => console.log(res));\n * ```\n * @see [File API - Store](https://www.filestack.com/docs/api/file#store)\n * @param url Valid URL to a file.\n * @param options Configure file storage.\n * @param token Optional control token to call .cancel()\n * @param security Optional security override.\n * @param uploadTags Optional tags visible in webhooks.\n * @param headers Optional headers to send\n * @param workflowIds Optional workflowIds to send\n */\n storeURL(url: string, storeParams?: StoreParams, token?: any, security?: Security, uploadTags?: UploadTags, headers?: {[key: string]: string}, workflowIds?: string[]): Promise<Object> {\n return storeURL({\n session: this.session,\n url,\n storeParams,\n token,\n security,\n uploadTags,\n headers,\n workflowIds,\n });\n }\n\n /**\n * Access files via their Filestack handles.\n *\n * If head option is provided - request headers are returned in promise\n * If metadata option is provided - metadata object is returned in promise\n * Otherwise file blob is returned\n * Metadata and head options cannot be mixed\n *\n * ### Example\n *\n * ```js\n * client.retrieve('fileHandle', {\n * metadata: true,\n * }).then((response) => {\n * console.log(response);\n * }).catch((err) => {\n * console.error(err);\n * })\n * ```\n *\n * @see [File API - Download](https://www.filestack.com/docs/api/file#download)\n * @deprecated use metadata or download methods instead\n * @param handle Valid file handle\n * @param options RetrieveOptions\n * @param security Optional security override.\n * @throws Error\n */\n retrieve(handle: string, options?: RetrieveOptions, security?: Security): Promise<Object | Blob> {\n /* istanbul ignore next */\n return retrieve(this.session, handle, options, security);\n }\n\n /**\n * Download file by handle\n *\n *\n * ### Browser Example\n *\n * ```js\n * client.download('fileHandle').then((response) => {\n * const img = new Image();\n * img.src = URL.createObjectURL(res.data)\n * document.body.appendChild(img);\n * }).catch((err) => {\n * console.error(err);\n * })\n * ```\n *\n * @see [File API - Download](https://www.filestack.com/docs/api/file#download)\n * @param handle Valid file handle\n * @throws Error\n */\n download(handle: string, security?: Security): Promise<FsResponse> {\n /* istanbul ignore next */\n return download(this.session, handle, security);\n }\n\n /**\n * Interface to the Filestack [Processing API](https://www.filestack.com/docs/api/processing).\n * Convert a URL, handle, or storage alias to another URL which links to the transformed file.\n * You can optionally store the returned URL with client.storeURL.\n *\n * Transform params can be provided in camelCase or snakeCase style ie: partial_pixelate or partialPixelate\n *\n * ### Example\n *\n * ```js\n * const transformedUrl = client.transform(url, {\n * crop: {\n * dim: [x, y, width, height],\n * },\n * vignette: {\n * blurmode: 'gaussian',\n * amount: 50,\n * },\n * flip: true,\n * partial_pixelate: {\n * objects: [[10, 20, 200, 250], [275, 91, 500, 557]],\n * },\n * };\n *\n * // optionally store the new URL\n * client.storeURL(transformedUrl).then(res => console.log(res));\n * ```\n * @see [Filestack Processing API](https://www.filestack.com/docs/api/processing)\n * @param url Single or multiple valid URLs (http(s)://), file handles, or storage aliases (src://) to an image.\n * @param options Transformations are applied in the order specified by this object.\n * @param b64 Use new more safe format for generating transforms url (default=false) Note: If there will be any issues with url please test it with enabled b64 support\n * @returns A new URL that points to the transformed resource.\n */\n transform(url: string | string[], options: TransformOptions, b64: boolean = false) {\n /* istanbul ignore next */\n return transform(this.session, url, options, b64);\n }\n\n /**\n * Initiates a multi-part upload flow. Use this for Filestack CIN and FII uploads.\n *\n * In Node runtimes the file argument is treated as a file path.\n * Uploading from a Node buffer is not yet implemented.\n *\n * ### Example\n *\n * ```js\n * const token = {};\n * const onRetry = (obj) => {\n * console.log(`Retrying ${obj.location} for ${obj.filename}. Attempt ${obj.attempt} of 10.`);\n * };\n *\n * client.upload(file, { onRetry }, { filename: 'foobar.jpg' }, token)\n * .then(res => console.log(res));\n *\n * client.upload({file, name}, { onRetry }, { filename: 'foobar.jpg' }, token)\n * .then(res => console.log(res));\n *\n * token.pause(); // Pause flow\n * token.resume(); // Resume flow\n * token.cancel(); // Cancel flow (rejects)\n * ```\n * @param {InputFile} file Must be a valid [File | Blob | Buffer | string]\n * @param uploadOptions Uploader options.\n * @param storeOptions Storage options.\n * @param token A control token that can be used to call cancel(), pause(), and resume().\n * @param security Optional security policy and signature override.\n *\n * @returns {Promise}\n */\n upload(file: InputFile, options?: UploadOptions, storeOptions?: StoreUploadOptions, token?: any, security?: Security) {\n let upload = new Upload(options, storeOptions);\n upload.setSession(this.session);\n\n if (token) {\n upload.setToken(token);\n }\n\n if (security) {\n upload.setSecurity(security);\n }\n\n upload.on('start', () => this.emit('upload.start'));\n /* istanbul ignore next */\n upload.on('error', e => {\n if (this.forwardErrors) {\n Sentry.withScope(scope => {\n scope.setTag('filestack-apikey', this.session.apikey);\n scope.setTag('filestack-version', Utils.getVersion());\n scope.setExtra('filestack-options', this.options);\n scope.setExtras({ uploadOptions: options, storeOptions, details: e.details });\n e.message = `FS-${e.message}`;\n\n Sentry.captureException(e);\n });\n }\n\n this.emit('upload.error', e);\n });\n\n return upload.upload(file);\n }\n\n /**\n * Initiates a multi-part upload flow. Use this for Filestack CIN and FII uploads.\n *\n * In Node runtimes the file argument is treated as a file path.\n * Uploading from a Node buffer is not yet implemented.\n *\n * ### Example\n *\n * ```js\n * const token = {};\n * const onRetry = (obj) => {\n * console.log(`Retrying ${obj.location} for ${obj.filename}. Attempt ${obj.attempt} of 10.`);\n * };\n *\n * client.multiupload([file], { onRetry }, token)\n * .then(res => console.log(res));\n *\n * client.multiupload([{file, name}], { onRetry }, token)\n * .then(res => console.log(res));\n *\n * token.pause(); // Pause flow\n * token.resume(); // Resume flow\n * token.cancel(); // Cancel flow (rejects)\n * ```\n * @param {InputFile[]} file Must be a valid [File | Blob | Buffer | string (base64)]\n * @param uploadOptions Upload options.\n * @param storeOptions Storage options.\n * @param token A control token that can be used to call cancel(), pause(), and resume().\n * @param security Optional security policy and signature override.\n *\n * @returns {Promise}\n */\n multiupload(file: InputFile[], options?: UploadOptions, storeOptions?: StoreUploadOptions, token?: any, security?: Security) {\n let upload = new Upload(options, storeOptions);\n\n upload.setSession(this.session);\n\n if (token) {\n upload.setToken(token);\n }\n\n if (security) {\n upload.setSecurity(security);\n }\n\n upload.on('start', () => this.emit('upload.start'));\n /* istanbul ignore next */\n upload.on('error', e => {\n Sentry.withScope(scope => {\n scope.setTag('filestack-apikey', this.session.apikey);\n scope.setTag('filestack-version', Utils.getVersion());\n scope.setExtra('filestack-options', this.options);\n scope.setExtras(e.details);\n scope.setExtras({ uploadOptions: options, storeOptions });\n Sentry.captureException(e);\n });\n\n this.emit('upload.error', e);\n });\n\n return upload.multiupload(file);\n }\n}\n","/*\n * Copyright (c) 2018 by Filestack.\n * Some rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Security, Session } from '../client';\nimport { removeEmpty } from '../utils';\nimport { getValidator, PreviewParamsSchema } from './../../schema';\nimport { FilestackError, FilestackErrorType } from './../../filestack_error';\n\nexport interface PreviewOptions {\n /**\n * Id for DOM element to embed preview into.\n * Omit this to open the preview in a new tab\n */\n id: string;\n /**\n * URL to custom CSS\n */\n css?: string;\n}\n\n/**\n * Returns file preview url\n *\n * @private\n * @param session\n * @param handle\n * @param opts\n * @param security\n */\nexport const getUrl = (\n session: Session,\n handle: string,\n opts?: any,\n security?: Security\n) => {\n const options = { ...opts };\n const policy = security && security.policy || session.policy;\n const signature = security && security.signature || session.signature;\n const hasSecurity = signature && policy;\n const baseUrl = [session.urls.cdnUrl];\n const css = options.css && encodeURIComponent(`\"${options.css}\"`);\n const previewTask = css ? `preview=css:${css}` : 'preview';\n\n // @todo move to utils?\n if (handle.indexOf('src:') !== -1) {\n baseUrl.push(`${session.apikey}/${previewTask}`);\n } else {\n baseUrl.push(previewTask);\n }\n if (hasSecurity) {\n baseUrl.push(`security=policy:${policy},signature:${signature}`);\n }\n\n baseUrl.push(handle);\n return baseUrl.join('/');\n};\n\n/**\n * Appends image preview into page\n *\n * @private\n * @param session\n * @param handle\n * @param opts\n */\nexport const preview = (session: Session, handle?: string, opts?: PreviewOptions) => {\n if (!handle || typeof handle !== 'string') {\n throw new Error('A valid Filestack handle or storage alias is required for preview');\n }\n\n const validateRes = getValidator(PreviewParamsSchema)(opts);\n\n if (validateRes.errors.length) {\n throw new FilestackError(`Invalid preview params`, validateRes.errors, FilestackErrorType.VALIDATION);\n }\n\n const options = removeEmpty(opts || {});\n const url = getUrl(session, handle, options);\n\n if (options && options.id) {\n const id = options.id;\n const iframe = document.createElement('iframe');\n const domElement = document.getElementById(id);\n\n iframe.src = url;\n iframe.width = '100%';\n iframe.height = '100%';\n\n if (!domElement) {\n throw new Error(`DOM Element with id \"${id}\" not found.`);\n }\n return domElement.appendChild(iframe);\n }\n return window.open(url, handle);\n};\n","/*\n * Copyright (c) 2018 by Filestack.\n * Some rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Security, Session } from '../client';\nimport { Filelink, StoreParams } from './../filelink';\nimport { FilestackError } from './../../filestack_error';\nimport { getValidator, StoreParamsSchema } from './../../schema';\nimport { FsRequest, FsCancelToken } from '../request';\nimport { UploadTags } from './upload/file';\n\nexport type StoreUrlParams = {\n session: Session;\n url?: string;\n storeParams?: StoreParams;\n token?: any;\n security?: Security;\n uploadTags?: UploadTags;\n headers?: {[key: string]: string},\n workflowIds?: string[]\n};\n\n/**\n * Store given url with options and\n *\n * @param session\n * @param url\n * @param storeOpts\n * @param token\n * @param security\n * @param uploadTags\n * @param workflowIds\n */\nexport const storeURL = ({\n session,\n url,\n storeParams,\n token,\n security,\n uploadTags,\n headers,\n workflowIds,\n}: StoreUrlParams): Promise<any> => {\n if (!url || typeof url !== 'string') {\n return Promise.reject(new FilestackError('url is required for storeURL'));\n }\n\n const validateRes = getValidator(StoreParamsSchema)(storeParams);\n\n if (validateRes.errors.length) {\n return Promise.reject(new FilestackError(`Invalid store params`, validateRes.errors));\n }\n\n session.policy = security && security.policy || session.policy;\n session.signature = security && security.signature || session.signature;\n\n const filelink = new Filelink(url, session.apikey);\n filelink.store(storeParams);\n\n if (session.policy && session.signature) {\n filelink.security({\n policy: session.policy,\n signature: session.signature,\n });\n }\n\n let options: any = {};\n\n if (token) {\n const cancelToken = new FsCancelToken();\n token.cancel = cancelToken.cancel.bind(cancelToken);\n options.cancelToken = cancelToken;\n }\n\n let sources: any = [ url ];\n\n if (headers) {\n sources = [{\n source: url,\n headers,\n }];\n }\n\n if (workflowIds && workflowIds.length > 0) {\n filelink.addTask('store', { workflows: workflowIds });\n }\n\n return FsRequest.post(`${session.urls.processUrl}/process`, {\n apikey: session.apikey,\n sources,\n tasks: filelink.getTasks(),\n upload_tags: uploadTags,\n }, options).then((res) => {\n if (res.data && res.data.handle) {\n if (res.data.upload_tags) {\n res.data.uploadTags = res.data.upload_tags;\n delete res.data.upload_tags;\n }\n\n return { ...res.data, mimetype: res.data.type };\n }\n\n throw new FilestackError(`Invalid store response ${JSON.stringify(res.data)}`);\n });\n};\n","import { getGlobalObject } from './misc';\nimport { dynamicRequire, isNodeEnv } from './node';\n\n/**\n * An object that can return the current timestamp in seconds since the UNIX epoch.\n */\ninterface TimestampSource {\n nowSeconds(): number;\n}\n\n/**\n * A TimestampSource implementation for environments that do not support the Performance Web API natively.\n *\n * Note that this TimestampSource does not use a monotonic clock. A call to `nowSeconds` may return a timestamp earlier\n * than a previously returned value. We do not try to emulate a monotonic behavior in order to facilitate debugging. It\n * is more obvious to explain \"why does my span have negative duration\" than \"why my spans have zero duration\".\n */\nconst dateTimestampSource: TimestampSource = {\n nowSeconds: () => Date.now() / 1000,\n};\n\n/**\n * A partial definition of the [Performance Web API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Performance}\n * for accessing a high resolution monotonic clock.\n */\ninterface Performance {\n /**\n * The millisecond timestamp at which measurement began, measured in Unix time.\n */\n timeOrigin: number;\n /**\n * Returns the current millisecond timestamp, where 0 represents the start of measurement.\n */\n now(): number;\n}\n\n/**\n * Returns a wrapper around the native Performance API browser implementation, or undefined for browsers that do not\n * support the API.\n *\n * Wrapping the native API works around differences in behavior from different browsers.\n */\nfunction getBrowserPerformance(): Performance | undefined {\n const { performance } = getGlobalObject<Window>();\n if (!performance || !performance.now) {\n return undefined;\n }\n\n // Replace performance.timeOrigin with our own timeOrigin based on Date.now().\n //\n // This is a partial workaround for browsers reporting performance.timeOrigin such that performance.timeOrigin +\n // performance.now() gives a date arbitrarily in the past.\n //\n // Additionally, computing timeOrigin in this way fills the gap for browsers where performance.timeOrigin is\n // undefined.\n //\n // The assumption that performance.timeOrigin + performance.now() ~= Date.now() is flawed, but we depend on it to\n // interact with data coming out of performance entries.\n //\n // Note that despite recommendations against it in the spec, browsers implement the Performance API with a clock that\n // might stop when the computer is asleep (and perhaps under other circumstances). Such behavior causes\n // performance.timeOrigin + performance.now() to have an arbitrary skew over Date.now(). In laptop computers, we have\n // observed skews that can be as long as days, weeks or months.\n //\n // See https://github.com/getsentry/sentry-javascript/issues/2590.\n //\n // BUG: despite our best intentions, this workaround has its limitations. It mostly addresses timings of pageload\n // transactions, but ignores the skew built up over time that can aversely affect timestamps of navigation\n // transactions of long-lived web pages.\n const timeOrigin = Date.now() - performance.now();\n\n return {\n now: () => performance.now(),\n timeOrigin,\n };\n}\n\n/**\n * Returns the native Performance API implementation from Node.js. Returns undefined in old Node.js versions that don't\n * implement the API.\n */\nfunction getNodePerformance(): Performance | undefined {\n try {\n const perfHooks = dynamicRequire(module, 'perf_hooks') as { performance: Performance };\n return perfHooks.performance;\n } catch (_) {\n return undefined;\n }\n}\n\n/**\n * The Performance API implementation for the current platform, if available.\n */\nconst platformPerformance: Performance | undefined = isNodeEnv() ? getNodePerformance() : getBrowserPerformance();\n\nconst timestampSource: TimestampSource =\n platformPerformance === undefined\n ? dateTimestampSource\n : {\n nowSeconds: () => (platformPerformance.timeOrigin + platformPerformance.now()) / 1000,\n };\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using the Date API.\n */\nexport const dateTimestampInSeconds = dateTimestampSource.nowSeconds.bind(dateTimestampSource);\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using either the Performance or Date APIs, depending on the\n * availability of the Performance API.\n *\n * See `usingPerformanceAPI` to test whether the Performance API is used.\n *\n * BUG: Note that because of how browsers implement the Performance API, the clock might stop when the computer is\n * asleep. This creates a skew between `dateTimestampInSeconds` and `timestampInSeconds`. The\n * skew can grow to arbitrary amounts like days, weeks or months.\n * See https://github.com/getsentry/sentry-javascript/issues/2590.\n */\nexport const timestampInSeconds = timestampSource.nowSeconds.bind(timestampSource);\n\n// Re-exported with an old name for backwards-compatibility.\nexport const timestampWithMs = timestampInSeconds;\n\n/**\n * A boolean that is true when timestampInSeconds uses the Performance API to produce monotonic timestamps.\n */\nexport const usingPerformanceAPI = platformPerformance !== undefined;\n\n/**\n * The number of milliseconds since the UNIX epoch. This value is only usable in a browser, and only when the\n * performance API is available.\n */\nexport const browserPerformanceTimeOrigin = ((): number | undefined => {\n const { performance } = getGlobalObject<Window>();\n if (!performance) {\n return undefined;\n }\n if (performance.timeOrigin) {\n return performance.timeOrigin;\n }\n // While performance.timing.navigationStart is deprecated in favor of performance.timeOrigin, performance.timeOrigin\n // is not as widely supported. Namely, performance.timeOrigin is undefined in Safari as of writing.\n // Also as of writing, performance.timing is not available in Web Workers in mainstream browsers, so it is not always\n // a valid fallback. In the absence of an initial time provided by the browser, fallback to the current time from the\n // Date API.\n // eslint-disable-next-line deprecation/deprecation\n return (performance.timing && performance.timing.navigationStart) || Date.now();\n})();\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ExtendedError, WrappedFunction } from '@sentry/types';\n\nimport { htmlTreeAsString } from './browser';\nimport { isElement, isError, isEvent, isInstanceOf, isPlainObject, isPrimitive, isSyntheticEvent } from './is';\nimport { Memo } from './memo';\nimport { getFunctionName } from './stacktrace';\nimport { truncate } from './string';\n\n/**\n * Wrap a given object method with a higher-order function\n *\n * @param source An object that contains a method to be wrapped.\n * @param name A name of method to be wrapped.\n * @param replacementFactory A function that should be used to wrap a given method, returning the wrapped method which\n * will be substituted in for `source[name]`.\n * @returns void\n */\nexport function fill(source: { [key: string]: any }, name: string, replacementFactory: (...args: any[]) => any): void {\n if (!(name in source)) {\n return;\n }\n\n const original = source[name] as () => any;\n const wrapped = replacementFactory(original) as WrappedFunction;\n\n // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n if (typeof wrapped === 'function') {\n try {\n wrapped.prototype = wrapped.prototype || {};\n Object.defineProperties(wrapped, {\n __sentry_original__: {\n enumerable: false,\n value: original,\n },\n });\n } catch (_Oo) {\n // This can throw if multiple fill happens on a global object like XMLHttpRequest\n // Fixes https://github.com/getsentry/sentry-javascript/issues/2043\n }\n }\n\n source[name] = wrapped;\n}\n\n/**\n * Encodes given object into url-friendly format\n *\n * @param object An object that contains serializable values\n * @returns string Encoded\n */\nexport function urlEncode(object: { [key: string]: any }): string {\n return Object.keys(object)\n .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(object[key])}`)\n .join('&');\n}\n\n/**\n * Transforms any object into an object literal with all its attributes\n * attached to it.\n *\n * @param value Initial source that we have to transform in order for it to be usable by the serializer\n */\nfunction getWalkSource(\n value: any,\n): {\n [key: string]: any;\n} {\n if (isError(value)) {\n const error = value as ExtendedError;\n const err: {\n [key: string]: any;\n stack: string | undefined;\n message: string;\n name: string;\n } = {\n message: error.message,\n name: error.name,\n stack: error.stack,\n };\n\n for (const i in error) {\n if (Object.prototype.hasOwnProperty.call(error, i)) {\n err[i] = error[i];\n }\n }\n\n return err;\n }\n\n if (isEvent(value)) {\n /**\n * Event-like interface that's usable in browser and node\n */\n interface SimpleEvent {\n [key: string]: unknown;\n type: string;\n target?: unknown;\n currentTarget?: unknown;\n }\n\n const event = value as SimpleEvent;\n\n const source: {\n [key: string]: any;\n } = {};\n\n source.type = event.type;\n\n // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n try {\n source.target = isElement(event.target)\n ? htmlTreeAsString(event.target)\n : Object.prototype.toString.call(event.target);\n } catch (_oO) {\n source.target = '<unknown>';\n }\n\n try {\n source.currentTarget = isElement(event.currentTarget)\n ? htmlTreeAsString(event.currentTarget)\n : Object.prototype.toString.call(event.currentTarget);\n } catch (_oO) {\n source.currentTarget = '<unknown>';\n }\n\n if (typeof CustomEvent !== 'undefined' && isInstanceOf(value, CustomEvent)) {\n source.detail = event.detail;\n }\n\n for (const i in event) {\n if (Object.prototype.hasOwnProperty.call(event, i)) {\n source[i] = event;\n }\n }\n\n return source;\n }\n\n return value as {\n [key: string]: any;\n };\n}\n\n/** Calculates bytes size of input string */\nfunction utf8Length(value: string): number {\n // eslint-disable-next-line no-bitwise\n return ~-encodeURI(value).split(/%..|./).length;\n}\n\n/** Calculates bytes size of input object */\nfunction jsonSize(value: any): number {\n return utf8Length(JSON.stringify(value));\n}\n\n/** JSDoc */\nexport function normalizeToSize<T>(\n object: { [key: string]: any },\n // Default Node.js REPL depth\n depth: number = 3,\n // 100kB, as 200kB is max payload size, so half sounds reasonable\n maxSize: number = 100 * 1024,\n): T {\n const serialized = normalize(object, depth);\n\n if (jsonSize(serialized) > maxSize) {\n return normalizeToSize(object, depth - 1, maxSize);\n }\n\n return serialized as T;\n}\n\n/**\n * Transform any non-primitive, BigInt, or Symbol-type value into a string. Acts as a no-op on strings, numbers,\n * booleans, null, and undefined.\n *\n * @param value The value to stringify\n * @returns For non-primitive, BigInt, and Symbol-type values, a string denoting the value's type, type and value, or\n * type and `description` property, respectively. For non-BigInt, non-Symbol primitives, returns the original value,\n * unchanged.\n */\nfunction serializeValue(value: any): any {\n const type = Object.prototype.toString.call(value);\n\n // Node.js REPL notation\n if (typeof value === 'string') {\n return value;\n }\n if (type === '[object Object]') {\n return '[Object]';\n }\n if (type === '[object Array]') {\n return '[Array]';\n }\n\n const normalized = normalizeValue(value);\n return isPrimitive(normalized) ? normalized : type;\n}\n\n/**\n * normalizeValue()\n *\n * Takes unserializable input and make it serializable friendly\n *\n * - translates undefined/NaN values to \"[undefined]\"/\"[NaN]\" respectively,\n * - serializes Error objects\n * - filter global objects\n */\nfunction normalizeValue<T>(value: T, key?: any): T | string {\n if (key === 'domain' && value && typeof value === 'object' && ((value as unknown) as { _events: any })._events) {\n return '[Domain]';\n }\n\n if (key === 'domainEmitter') {\n return '[DomainEmitter]';\n }\n\n if (typeof (global as any) !== 'undefined' && (value as unknown) === global) {\n return '[Global]';\n }\n\n if (typeof (window as any) !== 'undefined' && (value as unknown) === window) {\n return '[Window]';\n }\n\n if (typeof (document as any) !== 'undefined' && (value as unknown) === document) {\n return '[Document]';\n }\n\n // React's SyntheticEvent thingy\n if (isSyntheticEvent(value)) {\n return '[SyntheticEvent]';\n }\n\n if (typeof value === 'number' && value !== value) {\n return '[NaN]';\n }\n\n if (value === void 0) {\n return '[undefined]';\n }\n\n if (typeof value === 'function') {\n return `[Function: ${getFunctionName(value)}]`;\n }\n\n // symbols and bigints are considered primitives by TS, but aren't natively JSON-serilaizable\n\n if (typeof value === 'symbol') {\n return `[${String(value)}]`;\n }\n\n if (typeof value === 'bigint') {\n return `[BigInt: ${String(value)}]`;\n }\n\n return value;\n}\n\n/**\n * Walks an object to perform a normalization on it\n *\n * @param key of object that's walked in current iteration\n * @param value object to be walked\n * @param depth Optional number indicating how deep should walking be performed\n * @param memo Optional Memo class handling decycling\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function walk(key: string, value: any, depth: number = +Infinity, memo: Memo = new Memo()): any {\n // If we reach the maximum depth, serialize whatever has left\n if (depth === 0) {\n return serializeValue(value);\n }\n\n /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n // If value implements `toJSON` method, call it and return early\n if (value !== null && value !== undefined && typeof value.toJSON === 'function') {\n return value.toJSON();\n }\n /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n\n // If normalized value is a primitive, there are no branches left to walk, so we can just bail out, as theres no point in going down that branch any further\n const normalized = normalizeValue(value, key);\n if (isPrimitive(normalized)) {\n return normalized;\n }\n\n // Create source that we will use for next itterations, either objectified error object (Error type with extracted keys:value pairs) or the input itself\n const source = getWalkSource(value);\n\n // Create an accumulator that will act as a parent for all future itterations of that branch\n const acc = Array.isArray(value) ? [] : {};\n\n // If we already walked that branch, bail out, as it's circular reference\n if (memo.memoize(value)) {\n return '[Circular ~]';\n }\n\n // Walk all keys of the source\n for (const innerKey in source) {\n // Avoid iterating over fields in the prototype if they've somehow been exposed to enumeration.\n if (!Object.prototype.hasOwnProperty.call(source, innerKey)) {\n continue;\n }\n // Recursively walk through all the child nodes\n (acc as { [key: string]: any })[innerKey] = walk(innerKey, source[innerKey], depth - 1, memo);\n }\n\n // Once walked through all the branches, remove the parent from memo storage\n memo.unmemoize(value);\n\n // Return accumulated values\n return acc;\n}\n\n/**\n * normalize()\n *\n * - Creates a copy to prevent original input mutation\n * - Skip non-enumerablers\n * - Calls `toJSON` if implemented\n * - Removes circular references\n * - Translates non-serializeable values (undefined/NaN/Functions) to serializable format\n * - Translates known global objects/Classes to a string representations\n * - Takes care of Error objects serialization\n * - Optionally limit depth of final output\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function normalize(input: any, depth?: number): any {\n try {\n return JSON.parse(JSON.stringify(input, (key: string, value: any) => walk(key, value, depth)));\n } catch (_oO) {\n return '**non-serializable**';\n }\n}\n\n/**\n * Given any captured exception, extract its keys and create a sorted\n * and truncated list that will be used inside the event message.\n * eg. `Non-error exception captured with keys: foo, bar, baz`\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function extractExceptionKeysForMessage(exception: any, maxLength: number = 40): string {\n const keys = Object.keys(getWalkSource(exception));\n keys.sort();\n\n if (!keys.length) {\n return '[object has no keys]';\n }\n\n if (keys[0].length >= maxLength) {\n return truncate(keys[0], maxLength);\n }\n\n for (let includedKeys = keys.length; includedKeys > 0; includedKeys--) {\n const serialized = keys.slice(0, includedKeys).join(', ');\n if (serialized.length > maxLength) {\n continue;\n }\n if (includedKeys === keys.length) {\n return serialized;\n }\n return truncate(serialized, maxLength);\n }\n\n return '';\n}\n\n/**\n * Given any object, return the new object with removed keys that value was `undefined`.\n * Works recursively on objects and arrays.\n */\nexport function dropUndefinedKeys<T>(val: T): T {\n if (isPlainObject(val)) {\n const obj = val as { [key: string]: any };\n const rv: { [key: string]: any } = {};\n for (const key of Object.keys(obj)) {\n if (typeof obj[key] !== 'undefined') {\n rv[key] = dropUndefinedKeys(obj[key]);\n }\n }\n return rv as T;\n }\n\n if (Array.isArray(val)) {\n return (val as any[]).map(dropUndefinedKeys) as any;\n }\n\n return val;\n}\n","import memoize from 'lodash.memoize';\n\nfunction resolver(options) {\n return JSON.stringify(options);\n}\n\nfunction uniqDefined(arr) {\n return arr.filter(function (el, index) {\n return el && arr.indexOf(el) === index;\n });\n}\n\nfunction normalizeLocales(arr) {\n return arr.map(function (el) {\n if (!el || el.indexOf('-') === -1 || el.toLowerCase() !== el) {\n return el;\n }\n\n var splitEl = el.split('-');\n return splitEl[0] + \"-\" + splitEl[1].toUpperCase();\n });\n}\n\nfunction getUserLocalesInternal(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$useFallbackLocal = _ref.useFallbackLocale,\n useFallbackLocale = _ref$useFallbackLocal === void 0 ? true : _ref$useFallbackLocal,\n _ref$fallbackLocale = _ref.fallbackLocale,\n fallbackLocale = _ref$fallbackLocale === void 0 ? 'en-US' : _ref$fallbackLocale;\n\n var languageList = [];\n\n if (typeof window !== 'undefined') {\n var _window = window,\n navigator = _window.navigator;\n languageList = languageList.concat(navigator.languages, navigator.language, navigator.userLanguage, navigator.browserLanguage, navigator.systemLanguage);\n }\n\n if (useFallbackLocale) {\n languageList.push(fallbackLocale);\n }\n\n return normalizeLocales(uniqDefined(languageList));\n}\n\nexport var getUserLocales = memoize(getUserLocalesInternal, resolver);\n\nfunction getUserLocaleInternal(options) {\n return getUserLocales(options)[0] || null;\n}\n\nexport var getUserLocale = memoize(getUserLocaleInternal, resolver);\nexport default getUserLocale;","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result);\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Assign cache to `_.memoize`.\nmemoize.Cache = MapCache;\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\nmodule.exports = memoize;\n","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\n// As defined on the list of supported events: https://reactjs.org/docs/events.html\nexport var clipboardEvents = ['onCopy', 'onCut', 'onPaste'];\nexport var compositionEvents = [\n 'onCompositionEnd',\n 'onCompositionStart',\n 'onCompositionUpdate',\n];\nexport var keyboardEvents = ['onKeyDown', 'onKeyPress', 'onKeyUp'];\nexport var focusEvents = ['onFocus', 'onBlur'];\nexport var formEvents = ['onChange', 'onInput', 'onInvalid', 'onReset', 'onSubmit'];\nexport var genericEvents = ['onError', 'onLoad'];\nexport var mouseEvents = [\n 'onClick',\n 'onContextMenu',\n 'onDoubleClick',\n 'onDrag',\n 'onDragEnd',\n 'onDragEnter',\n 'onDragExit',\n 'onDragLeave',\n 'onDragOver',\n 'onDragStart',\n 'onDrop',\n 'onMouseDown',\n 'onMouseEnter',\n 'onMouseLeave',\n 'onMouseMove',\n 'onMouseOut',\n 'onMouseOver',\n 'onMouseUp',\n];\nexport var pointerEvents = [\n 'onPointerDown',\n 'onPointerMove',\n 'onPointerUp',\n 'onPointerCancel',\n 'onGotPointerCapture',\n 'onLostPointerCapture',\n 'onPointerEnter',\n 'onPointerLeave',\n 'onPointerOver',\n 'onPointerOut',\n];\nexport var selectionEvents = ['onSelect'];\nexport var touchEvents = ['onTouchCancel', 'onTouchEnd', 'onTouchMove', 'onTouchStart'];\nexport var uiEvents = ['onScroll'];\nexport var wheelEvents = ['onWheel'];\nexport var mediaEvents = [\n 'onAbort',\n 'onCanPlay',\n 'onCanPlayThrough',\n 'onDurationChange',\n 'onEmptied',\n 'onEncrypted',\n 'onEnded',\n 'onError',\n 'onLoadedData',\n 'onLoadedMetadata',\n 'onLoadStart',\n 'onPause',\n 'onPlay',\n 'onPlaying',\n 'onProgress',\n 'onRateChange',\n 'onSeeked',\n 'onSeeking',\n 'onStalled',\n 'onSuspend',\n 'onTimeUpdate',\n 'onVolumeChange',\n 'onWaiting',\n];\nexport var imageEvents = ['onLoad', 'onError'];\nexport var animationEvents = [\n 'onAnimationStart',\n 'onAnimationEnd',\n 'onAnimationIteration',\n];\nexport var transitionEvents = ['onTransitionEnd'];\nexport var otherEvents = ['onToggle'];\nexport var allEvents = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], clipboardEvents, true), compositionEvents, true), keyboardEvents, true), focusEvents, true), formEvents, true), genericEvents, true), mouseEvents, true), pointerEvents, true), selectionEvents, true), touchEvents, true), uiEvents, true), wheelEvents, true), mediaEvents, true), imageEvents, true), animationEvents, true), transitionEvents, true), otherEvents, true);\n/**\n * Returns an object with on-event callback props curried with provided args.\n * @param {Object} props Props passed to a component.\n * @param {Function=} getArgs A function that returns argument(s) on-event callbacks\n * shall be curried with.\n */\nexport default function makeEventProps(props, getArgs) {\n var eventProps = {};\n allEvents.forEach(function (eventName) {\n var eventHandler = props[eventName];\n if (!eventHandler) {\n return;\n }\n if (!getArgs) {\n eventProps[eventName] = eventHandler;\n return;\n }\n eventProps[eventName] = function (event) { return eventHandler(event, getArgs(eventName)); };\n });\n return eventProps;\n}\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = all;\n\nvar _createChainableTypeChecker = require('./utils/createChainableTypeChecker');\n\nvar _createChainableTypeChecker2 = _interopRequireDefault(_createChainableTypeChecker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction all() {\n for (var _len = arguments.length, validators = Array(_len), _key = 0; _key < _len; _key++) {\n validators[_key] = arguments[_key];\n }\n\n function allPropTypes() {\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var error = null;\n\n validators.forEach(function (validator) {\n if (error != null) {\n return;\n }\n\n var result = validator.apply(undefined, args);\n if (result != null) {\n error = result;\n }\n });\n\n return error;\n }\n\n return (0, _createChainableTypeChecker2.default)(allPropTypes);\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createChainableTypeChecker;\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n// Mostly taken from ReactPropTypes.\n\nfunction createChainableTypeChecker(validate) {\n function checkType(isRequired, props, propName, componentName, location, propFullName) {\n var componentNameSafe = componentName || '<<anonymous>>';\n var propFullNameSafe = propFullName || propName;\n\n if (props[propName] == null) {\n if (isRequired) {\n return new Error('Required ' + location + ' `' + propFullNameSafe + '` was not specified ' + ('in `' + componentNameSafe + '`.'));\n }\n\n return null;\n }\n\n for (var _len = arguments.length, args = Array(_len > 6 ? _len - 6 : 0), _key = 6; _key < _len; _key++) {\n args[_key - 6] = arguments[_key];\n }\n\n return validate.apply(undefined, [props, propName, componentNameSafe, location, propFullNameSafe].concat(args));\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n}\nmodule.exports = exports['default'];","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","var _CALENDAR_TYPE_LOCALE;\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nexport var CALENDAR_TYPES = {\n ARABIC: 'Arabic',\n HEBREW: 'Hebrew',\n ISO_8601: 'ISO 8601',\n US: 'US'\n};\nexport var CALENDAR_TYPE_LOCALES = (_CALENDAR_TYPE_LOCALE = {}, _defineProperty(_CALENDAR_TYPE_LOCALE, CALENDAR_TYPES.US, ['en-CA', 'en-US', 'es-AR', 'es-BO', 'es-CL', 'es-CO', 'es-CR', 'es-DO', 'es-EC', 'es-GT', 'es-HN', 'es-MX', 'es-NI', 'es-PA', 'es-PE', 'es-PR', 'es-SV', 'es-VE', 'pt-BR']), _defineProperty(_CALENDAR_TYPE_LOCALE, CALENDAR_TYPES.ARABIC, [\n// ar-LB, ar-MA intentionally missing\n'ar', 'ar-AE', 'ar-BH', 'ar-DZ', 'ar-EG', 'ar-IQ', 'ar-JO', 'ar-KW', 'ar-LY', 'ar-OM', 'ar-QA', 'ar-SA', 'ar-SD', 'ar-SY', 'ar-YE', 'dv', 'dv-MV', 'ps', 'ps-AR']), _defineProperty(_CALENDAR_TYPE_LOCALE, CALENDAR_TYPES.HEBREW, ['he', 'he-IL']), _CALENDAR_TYPE_LOCALE);\nexport var WEEKDAYS = _toConsumableArray(Array(7)).map(function (el, index) {\n return index;\n});","import getUserLocale from 'get-user-locale';\nvar formatterCache = new Map();\nfunction getFormatter(options) {\n return function (locale, date) {\n var localeWithDefault = locale || getUserLocale();\n if (!formatterCache.has(localeWithDefault)) {\n formatterCache.set(localeWithDefault, new Map());\n }\n var formatterCacheLocale = formatterCache.get(localeWithDefault);\n if (!formatterCacheLocale.has(options)) {\n formatterCacheLocale.set(options, new Intl.DateTimeFormat(localeWithDefault, options).format);\n }\n return formatterCacheLocale.get(options)(date);\n };\n}\n\n/**\n * Changes the hour in a Date to ensure right date formatting even if DST is messed up.\n * Workaround for bug in WebKit and Firefox with historical dates.\n * For more details, see:\n * https://bugs.chromium.org/p/chromium/issues/detail?id=750465\n * https://bugzilla.mozilla.org/show_bug.cgi?id=1385643\n *\n * @param {Date} date Date.\n */\nfunction toSafeHour(date) {\n var safeDate = new Date(date);\n return new Date(safeDate.setHours(12));\n}\nfunction getSafeFormatter(options) {\n return function (locale, date) {\n return getFormatter(options)(locale, toSafeHour(date));\n };\n}\nvar formatDateOptions = {\n day: 'numeric',\n month: 'numeric',\n year: 'numeric'\n};\nvar formatDayOptions = {\n day: 'numeric'\n};\nvar formatLongDateOptions = {\n day: 'numeric',\n month: 'long',\n year: 'numeric'\n};\nvar formatMonthOptions = {\n month: 'long'\n};\nvar formatMonthYearOptions = {\n month: 'long',\n year: 'numeric'\n};\nvar formatShortWeekdayOptions = {\n weekday: 'short'\n};\nvar formatWeekdayOptions = {\n weekday: 'long'\n};\nvar formatYearOptions = {\n year: 'numeric'\n};\nexport var formatDate = getSafeFormatter(formatDateOptions);\nexport var formatDay = getSafeFormatter(formatDayOptions);\nexport var formatLongDate = getSafeFormatter(formatLongDateOptions);\nexport var formatMonth = getSafeFormatter(formatMonthOptions);\nexport var formatMonthYear = getSafeFormatter(formatMonthYearOptions);\nexport var formatShortWeekday = getSafeFormatter(formatShortWeekdayOptions);\nexport var formatWeekday = getSafeFormatter(formatWeekdayOptions);\nexport var formatYear = getSafeFormatter(formatYearOptions);","import { getYear, getMonth as getMonthIndex, getCenturyStart, getPreviousCenturyStart, getNextCenturyStart, getCenturyEnd, getPreviousCenturyEnd, getCenturyRange, getDecadeStart, getPreviousDecadeStart, getNextDecadeStart, getDecadeEnd, getPreviousDecadeEnd, getDecadeRange, getYearStart, getPreviousYearStart, getNextYearStart, getYearEnd, getPreviousYearEnd, getYearRange, getMonthStart, getPreviousMonthStart, getNextMonthStart, getMonthEnd, getPreviousMonthEnd, getMonthRange, getDayStart, getDayEnd, getDayRange } from '@wojtekmaj/date-utils';\nimport { CALENDAR_TYPES, WEEKDAYS } from './const';\nimport { formatYear as defaultFormatYear } from './dateFormatter';\nvar SUNDAY = WEEKDAYS[0];\nvar FRIDAY = WEEKDAYS[5];\nvar SATURDAY = WEEKDAYS[6];\n\n/* Simple getters - getting a property of a given point in time */\n\nexport function getDayOfWeek(date) {\n var calendarType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : CALENDAR_TYPES.ISO_8601;\n var weekday = date.getDay();\n switch (calendarType) {\n case CALENDAR_TYPES.ISO_8601:\n // Shifts days of the week so that Monday is 0, Sunday is 6\n return (weekday + 6) % 7;\n case CALENDAR_TYPES.ARABIC:\n return (weekday + 1) % 7;\n case CALENDAR_TYPES.HEBREW:\n case CALENDAR_TYPES.US:\n return weekday;\n default:\n throw new Error('Unsupported calendar type.');\n }\n}\n\n/**\n * Century\n */\n\nexport function getBeginOfCenturyYear(date) {\n var beginOfCentury = getCenturyStart(date);\n return getYear(beginOfCentury);\n}\n\n/**\n * Decade\n */\nexport function getBeginOfDecadeYear(date) {\n var beginOfDecade = getDecadeStart(date);\n return getYear(beginOfDecade);\n}\n\n/**\n * Week\n */\n\n/**\n * Returns the beginning of a given week.\n *\n * @param {Date} date Date.\n * @param {string} calendarType Calendar type. Can be ISO 8601 or US.\n */\nexport function getBeginOfWeek(date) {\n var calendarType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : CALENDAR_TYPES.ISO_8601;\n var year = getYear(date);\n var monthIndex = getMonthIndex(date);\n var day = date.getDate() - getDayOfWeek(date, calendarType);\n return new Date(year, monthIndex, day);\n}\n\n/**\n * Gets week number according to ISO 8601 or US standard.\n * In ISO 8601, Arabic and Hebrew week 1 is the one with January 4.\n * In US calendar week 1 is the one with January 1.\n *\n * @param {Date} date Date.\n * @param {string} calendarType Calendar type. Can be ISO 8601 or US.\n */\nexport function getWeekNumber(date) {\n var calendarType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : CALENDAR_TYPES.ISO_8601;\n var calendarTypeForWeekNumber = calendarType === CALENDAR_TYPES.US ? CALENDAR_TYPES.US : CALENDAR_TYPES.ISO_8601;\n var beginOfWeek = getBeginOfWeek(date, calendarType);\n var year = getYear(date) + 1;\n var dayInWeekOne;\n var beginOfFirstWeek;\n\n // Look for the first week one that does not come after a given date\n do {\n dayInWeekOne = new Date(year, 0, calendarTypeForWeekNumber === CALENDAR_TYPES.ISO_8601 ? 4 : 1);\n beginOfFirstWeek = getBeginOfWeek(dayInWeekOne, calendarType);\n year -= 1;\n } while (date < beginOfFirstWeek);\n return Math.round((beginOfWeek - beginOfFirstWeek) / (8.64e7 * 7)) + 1;\n}\n\n/**\n * Others\n */\n\n/**\n * Returns the beginning of a given range.\n *\n * @param {string} rangeType Range type (e.g. 'day')\n * @param {Date} date Date.\n */\nexport function getBegin(rangeType, date) {\n switch (rangeType) {\n case 'century':\n return getCenturyStart(date);\n case 'decade':\n return getDecadeStart(date);\n case 'year':\n return getYearStart(date);\n case 'month':\n return getMonthStart(date);\n case 'day':\n return getDayStart(date);\n default:\n throw new Error(\"Invalid rangeType: \".concat(rangeType));\n }\n}\nexport function getBeginPrevious(rangeType, date) {\n switch (rangeType) {\n case 'century':\n return getPreviousCenturyStart(date);\n case 'decade':\n return getPreviousDecadeStart(date);\n case 'year':\n return getPreviousYearStart(date);\n case 'month':\n return getPreviousMonthStart(date);\n default:\n throw new Error(\"Invalid rangeType: \".concat(rangeType));\n }\n}\nexport function getBeginNext(rangeType, date) {\n switch (rangeType) {\n case 'century':\n return getNextCenturyStart(date);\n case 'decade':\n return getNextDecadeStart(date);\n case 'year':\n return getNextYearStart(date);\n case 'month':\n return getNextMonthStart(date);\n default:\n throw new Error(\"Invalid rangeType: \".concat(rangeType));\n }\n}\nexport var getBeginPrevious2 = function getBeginPrevious2(rangeType, date) {\n switch (rangeType) {\n case 'decade':\n return getPreviousDecadeStart(date, -100);\n case 'year':\n return getPreviousYearStart(date, -10);\n case 'month':\n return getPreviousMonthStart(date, -12);\n default:\n throw new Error(\"Invalid rangeType: \".concat(rangeType));\n }\n};\nexport var getBeginNext2 = function getBeginNext2(rangeType, date) {\n switch (rangeType) {\n case 'decade':\n return getNextDecadeStart(date, 100);\n case 'year':\n return getNextYearStart(date, 10);\n case 'month':\n return getNextMonthStart(date, 12);\n default:\n throw new Error(\"Invalid rangeType: \".concat(rangeType));\n }\n};\n\n/**\n * Returns the end of a given range.\n *\n * @param {string} rangeType Range type (e.g. 'day')\n * @param {Date} date Date.\n */\nexport function getEnd(rangeType, date) {\n switch (rangeType) {\n case 'century':\n return getCenturyEnd(date);\n case 'decade':\n return getDecadeEnd(date);\n case 'year':\n return getYearEnd(date);\n case 'month':\n return getMonthEnd(date);\n case 'day':\n return getDayEnd(date);\n default:\n throw new Error(\"Invalid rangeType: \".concat(rangeType));\n }\n}\nexport function getEndPrevious(rangeType, date) {\n switch (rangeType) {\n case 'century':\n return getPreviousCenturyEnd(date);\n case 'decade':\n return getPreviousDecadeEnd(date);\n case 'year':\n return getPreviousYearEnd(date);\n case 'month':\n return getPreviousMonthEnd(date);\n default:\n throw new Error(\"Invalid rangeType: \".concat(rangeType));\n }\n}\nexport var getEndPrevious2 = function getEndPrevious2(rangeType, date) {\n switch (rangeType) {\n case 'decade':\n return getPreviousDecadeEnd(date, -100);\n case 'year':\n return getPreviousYearEnd(date, -10);\n case 'month':\n return getPreviousMonthEnd(date, -12);\n default:\n throw new Error(\"Invalid rangeType: \".concat(rangeType));\n }\n};\n\n/**\n * Returns an array with the beginning and the end of a given range.\n *\n * @param {string} rangeType Range type (e.g. 'day')\n * @param {Date} date Date.\n */\nexport function getRange(rangeType, date) {\n switch (rangeType) {\n case 'century':\n return getCenturyRange(date);\n case 'decade':\n return getDecadeRange(date);\n case 'year':\n return getYearRange(date);\n case 'month':\n return getMonthRange(date);\n case 'day':\n return getDayRange(date);\n default:\n throw new Error(\"Invalid rangeType: \".concat(rangeType));\n }\n}\n\n/**\n * Creates a range out of two values, ensuring they are in order and covering entire period ranges.\n *\n * @param {string} rangeType Range type (e.g. 'day')\n * @param {Date} date1 First date.\n * @param {Date} date2 Second date.\n */\nexport function getValueRange(rangeType, date1, date2) {\n var rawNextValue = [date1, date2].sort(function (a, b) {\n return a - b;\n });\n return [getBegin(rangeType, rawNextValue[0]), getEnd(rangeType, rawNextValue[1])];\n}\nfunction toYearLabel(locale) {\n var formatYear = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultFormatYear;\n var dates = arguments.length > 2 ? arguments[2] : undefined;\n return dates.map(function (date) {\n return formatYear(locale, date);\n }).join(' – ');\n}\n\n/**\n * Returns a string labelling a century of a given date.\n * For example, for 2017 it will return 2001-2100.\n *\n * @param {Date|String|Number} date Date or a year as a string or as a number.\n */\nexport function getCenturyLabel(locale, formatYear, date) {\n return toYearLabel(locale, formatYear, getCenturyRange(date));\n}\n\n/**\n * Returns a string labelling a century of a given date.\n * For example, for 2017 it will return 2011-2020.\n *\n * @param {Date|String|Number} date Date or a year as a string or as a number.\n */\nexport function getDecadeLabel(locale, formatYear, date) {\n return toYearLabel(locale, formatYear, getDecadeRange(date));\n}\n\n/**\n * Returns a boolean determining whether a given date is on Saturday or Sunday.\n *\n * @param {Date} date Date.\n */\nexport function isWeekend(date) {\n var calendarType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : CALENDAR_TYPES.ISO_8601;\n var weekday = date.getDay();\n switch (calendarType) {\n case CALENDAR_TYPES.ARABIC:\n case CALENDAR_TYPES.HEBREW:\n return weekday === FRIDAY || weekday === SATURDAY;\n case CALENDAR_TYPES.ISO_8601:\n case CALENDAR_TYPES.US:\n return weekday === SATURDAY || weekday === SUNDAY;\n default:\n throw new Error('Unsupported calendar type.');\n }\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nimport PropTypes from 'prop-types';\nimport { CALENDAR_TYPES } from './const';\nvar calendarTypes = Object.values(CALENDAR_TYPES);\nvar allViews = ['century', 'decade', 'year', 'month'];\nexport var isCalendarType = PropTypes.oneOf(calendarTypes);\nexport var isClassName = PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]);\nexport var isMinDate = function isMinDate(props, propName, componentName) {\n var minDate = props[propName];\n if (!minDate) {\n return null;\n }\n if (!(minDate instanceof Date)) {\n return new Error(\"Invalid prop `\".concat(propName, \"` of type `\").concat(_typeof(minDate), \"` supplied to `\").concat(componentName, \"`, expected instance of `Date`.\"));\n }\n var maxDate = props.maxDate;\n if (maxDate && minDate > maxDate) {\n return new Error(\"Invalid prop `\".concat(propName, \"` of type `\").concat(_typeof(minDate), \"` supplied to `\").concat(componentName, \"`, minDate cannot be larger than maxDate.\"));\n }\n return null;\n};\nexport var isMaxDate = function isMaxDate(props, propName, componentName) {\n var maxDate = props[propName];\n if (!maxDate) {\n return null;\n }\n if (!(maxDate instanceof Date)) {\n return new Error(\"Invalid prop `\".concat(propName, \"` of type `\").concat(_typeof(maxDate), \"` supplied to `\").concat(componentName, \"`, expected instance of `Date`.\"));\n }\n var minDate = props.minDate;\n if (minDate && maxDate < minDate) {\n return new Error(\"Invalid prop `\".concat(propName, \"` of type `\").concat(_typeof(maxDate), \"` supplied to `\").concat(componentName, \"`, maxDate cannot be smaller than minDate.\"));\n }\n return null;\n};\nexport var isRef = PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n current: PropTypes.any\n})]);\nexport var isValue = PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.arrayOf(PropTypes.instanceOf(Date))]);\nexport var isViews = PropTypes.arrayOf(PropTypes.oneOf(allViews));\nexport var isView = function isView(props, propName, componentName) {\n var view = props[propName];\n var views = props.views;\n var allowedViews = views || allViews;\n if (view !== undefined && allowedViews.indexOf(view) === -1) {\n return new Error(\"Invalid prop `\".concat(propName, \"` of value `\").concat(view, \"` supplied to `\").concat(componentName, \"`, expected one of [\").concat(allowedViews.map(function (a) {\n return \"\\\"\".concat(a, \"\\\"\");\n }).join(', '), \"].\"));\n }\n\n // Everything is fine\n return null;\n};\nisView.isRequired = function (props, propName, componentName) {\n var view = props[propName];\n if (!view) {\n return new Error(\"The prop `\".concat(propName, \"` is marked as required in `\").concat(componentName, \"`, but its value is `\").concat(view, \"`.\"));\n }\n return isView(props, propName, componentName);\n};\nexport var tileGroupProps = {\n activeStartDate: PropTypes.instanceOf(Date).isRequired,\n hover: PropTypes.instanceOf(Date),\n locale: PropTypes.string,\n maxDate: isMaxDate,\n minDate: isMinDate,\n onClick: PropTypes.func,\n onMouseOver: PropTypes.func,\n tileClassName: PropTypes.oneOfType([PropTypes.func, isClassName]),\n tileContent: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n value: isValue,\n valueType: PropTypes.string\n};\nexport var tileProps = {\n activeStartDate: PropTypes.instanceOf(Date).isRequired,\n classes: PropTypes.arrayOf(PropTypes.string).isRequired,\n date: PropTypes.instanceOf(Date).isRequired,\n locale: PropTypes.string,\n maxDate: isMaxDate,\n minDate: isMinDate,\n onClick: PropTypes.func,\n onMouseOver: PropTypes.func,\n style: PropTypes.objectOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])),\n tileClassName: PropTypes.oneOfType([PropTypes.func, isClassName]),\n tileContent: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n tileDisabled: PropTypes.func\n};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { getUserLocale } from 'get-user-locale';\nimport { getCenturyLabel, getDecadeLabel, getBeginNext, getBeginNext2, getBeginPrevious, getBeginPrevious2, getEndPrevious, getEndPrevious2 } from '../shared/dates';\nimport { formatMonthYear as defaultFormatMonthYear, formatYear as defaultFormatYear } from '../shared/dateFormatter';\nimport { isView, isViews } from '../shared/propTypes';\nvar className = 'react-calendar__navigation';\nexport default function Navigation(_ref) {\n var activeStartDate = _ref.activeStartDate,\n drillUp = _ref.drillUp,\n _ref$formatMonthYear = _ref.formatMonthYear,\n formatMonthYear = _ref$formatMonthYear === void 0 ? defaultFormatMonthYear : _ref$formatMonthYear,\n _ref$formatYear = _ref.formatYear,\n formatYear = _ref$formatYear === void 0 ? defaultFormatYear : _ref$formatYear,\n locale = _ref.locale,\n maxDate = _ref.maxDate,\n minDate = _ref.minDate,\n _ref$navigationAriaLa = _ref.navigationAriaLabel,\n navigationAriaLabel = _ref$navigationAriaLa === void 0 ? '' : _ref$navigationAriaLa,\n navigationAriaLive = _ref.navigationAriaLive,\n navigationLabel = _ref.navigationLabel,\n _ref$next2AriaLabel = _ref.next2AriaLabel,\n next2AriaLabel = _ref$next2AriaLabel === void 0 ? '' : _ref$next2AriaLabel,\n _ref$next2Label = _ref.next2Label,\n next2Label = _ref$next2Label === void 0 ? '»' : _ref$next2Label,\n _ref$nextAriaLabel = _ref.nextAriaLabel,\n nextAriaLabel = _ref$nextAriaLabel === void 0 ? '' : _ref$nextAriaLabel,\n _ref$nextLabel = _ref.nextLabel,\n nextLabel = _ref$nextLabel === void 0 ? '›' : _ref$nextLabel,\n _ref$prev2AriaLabel = _ref.prev2AriaLabel,\n prev2AriaLabel = _ref$prev2AriaLabel === void 0 ? '' : _ref$prev2AriaLabel,\n _ref$prev2Label = _ref.prev2Label,\n prev2Label = _ref$prev2Label === void 0 ? '«' : _ref$prev2Label,\n _ref$prevAriaLabel = _ref.prevAriaLabel,\n prevAriaLabel = _ref$prevAriaLabel === void 0 ? '' : _ref$prevAriaLabel,\n _ref$prevLabel = _ref.prevLabel,\n prevLabel = _ref$prevLabel === void 0 ? '‹' : _ref$prevLabel,\n setActiveStartDate = _ref.setActiveStartDate,\n showDoubleView = _ref.showDoubleView,\n view = _ref.view,\n views = _ref.views;\n var drillUpAvailable = views.indexOf(view) > 0;\n var shouldShowPrevNext2Buttons = view !== 'century';\n var previousActiveStartDate = getBeginPrevious(view, activeStartDate);\n var previousActiveStartDate2 = shouldShowPrevNext2Buttons && getBeginPrevious2(view, activeStartDate);\n var nextActiveStartDate = getBeginNext(view, activeStartDate);\n var nextActiveStartDate2 = shouldShowPrevNext2Buttons && getBeginNext2(view, activeStartDate);\n var prevButtonDisabled = function () {\n if (previousActiveStartDate.getFullYear() < 0) {\n return true;\n }\n var previousActiveEndDate = getEndPrevious(view, activeStartDate);\n return minDate && minDate >= previousActiveEndDate;\n }();\n var prev2ButtonDisabled = shouldShowPrevNext2Buttons && function () {\n if (previousActiveStartDate2.getFullYear() < 0) {\n return true;\n }\n var previousActiveEndDate = getEndPrevious2(view, activeStartDate);\n return minDate && minDate >= previousActiveEndDate;\n }();\n var nextButtonDisabled = maxDate && maxDate < nextActiveStartDate;\n var next2ButtonDisabled = shouldShowPrevNext2Buttons && maxDate && maxDate < nextActiveStartDate2;\n function onClickPrevious() {\n setActiveStartDate(previousActiveStartDate, 'prev');\n }\n function onClickPrevious2() {\n setActiveStartDate(previousActiveStartDate2, 'prev2');\n }\n function onClickNext() {\n setActiveStartDate(nextActiveStartDate, 'next');\n }\n function onClickNext2() {\n setActiveStartDate(nextActiveStartDate2, 'next2');\n }\n function renderLabel(date) {\n var label = function () {\n switch (view) {\n case 'century':\n return getCenturyLabel(locale, formatYear, date);\n case 'decade':\n return getDecadeLabel(locale, formatYear, date);\n case 'year':\n return formatYear(locale, date);\n case 'month':\n return formatMonthYear(locale, date);\n default:\n throw new Error(\"Invalid view: \".concat(view, \".\"));\n }\n }();\n return navigationLabel ? navigationLabel({\n date: date,\n label: label,\n locale: locale || getUserLocale(),\n view: view\n }) : label;\n }\n function renderButton() {\n var labelClassName = \"\".concat(className, \"__label\");\n return /*#__PURE__*/React.createElement(\"button\", {\n \"aria-label\": navigationAriaLabel,\n \"aria-live\": navigationAriaLive,\n className: labelClassName,\n disabled: !drillUpAvailable,\n onClick: drillUp,\n style: {\n flexGrow: 1\n },\n type: \"button\"\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(labelClassName, \"__labelText \").concat(labelClassName, \"__labelText--from\")\n }, renderLabel(activeStartDate)), showDoubleView && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(labelClassName, \"__divider\")\n }, \" \\u2013 \"), /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(labelClassName, \"__labelText \").concat(labelClassName, \"__labelText--to\")\n }, renderLabel(nextActiveStartDate))));\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n className: className\n }, prev2Label !== null && shouldShowPrevNext2Buttons && /*#__PURE__*/React.createElement(\"button\", {\n \"aria-label\": prev2AriaLabel,\n className: \"\".concat(className, \"__arrow \").concat(className, \"__prev2-button\"),\n disabled: prev2ButtonDisabled,\n onClick: onClickPrevious2,\n type: \"button\"\n }, prev2Label), prevLabel !== null && /*#__PURE__*/React.createElement(\"button\", {\n \"aria-label\": prevAriaLabel,\n className: \"\".concat(className, \"__arrow \").concat(className, \"__prev-button\"),\n disabled: prevButtonDisabled,\n onClick: onClickPrevious,\n type: \"button\"\n }, prevLabel), renderButton(), nextLabel !== null && /*#__PURE__*/React.createElement(\"button\", {\n \"aria-label\": nextAriaLabel,\n className: \"\".concat(className, \"__arrow \").concat(className, \"__next-button\"),\n disabled: nextButtonDisabled,\n onClick: onClickNext,\n type: \"button\"\n }, nextLabel), next2Label !== null && shouldShowPrevNext2Buttons && /*#__PURE__*/React.createElement(\"button\", {\n \"aria-label\": next2AriaLabel,\n className: \"\".concat(className, \"__arrow \").concat(className, \"__next2-button\"),\n disabled: next2ButtonDisabled,\n onClick: onClickNext2,\n type: \"button\"\n }, next2Label));\n}\nNavigation.propTypes = {\n activeStartDate: PropTypes.instanceOf(Date).isRequired,\n drillUp: PropTypes.func.isRequired,\n formatMonthYear: PropTypes.func,\n formatYear: PropTypes.func,\n locale: PropTypes.string,\n maxDate: PropTypes.instanceOf(Date),\n minDate: PropTypes.instanceOf(Date),\n navigationAriaLabel: PropTypes.string,\n navigationAriaLive: PropTypes.string,\n navigationLabel: PropTypes.func,\n next2AriaLabel: PropTypes.string,\n next2Label: PropTypes.node,\n nextAriaLabel: PropTypes.string,\n nextLabel: PropTypes.node,\n prev2AriaLabel: PropTypes.string,\n prev2Label: PropTypes.node,\n prevAriaLabel: PropTypes.string,\n prevLabel: PropTypes.node,\n setActiveStartDate: PropTypes.func.isRequired,\n showDoubleView: PropTypes.bool,\n view: isView.isRequired,\n views: isViews.isRequired\n};","var _excluded = [\"children\", \"className\", \"direction\", \"count\", \"offset\", \"style\", \"wrap\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nfunction toPercent(num) {\n return \"\".concat(num, \"%\");\n}\nexport default function Flex(_ref) {\n var children = _ref.children,\n className = _ref.className,\n direction = _ref.direction,\n count = _ref.count,\n offset = _ref.offset,\n style = _ref.style,\n wrap = _ref.wrap,\n otherProps = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n className: className,\n style: _objectSpread({\n display: 'flex',\n flexDirection: direction,\n flexWrap: wrap ? 'wrap' : 'no-wrap'\n }, style)\n }, otherProps), React.Children.map(children, function (child, index) {\n return /*#__PURE__*/React.cloneElement(child, _objectSpread(_objectSpread({}, child.props), {}, {\n style: {\n flexBasis: toPercent(100 / count),\n flexShrink: 0,\n flexGrow: 0,\n overflow: 'hidden',\n marginLeft: offset && index === 0 ? toPercent(100 * offset / count) : null\n }\n }));\n }));\n}\nFlex.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string,\n count: PropTypes.number.isRequired,\n direction: PropTypes.string,\n offset: PropTypes.number,\n style: PropTypes.objectOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])),\n wrap: PropTypes.bool\n};","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\nimport { getRange } from './dates';\n\n/**\n * Returns a value no smaller than min and no larger than max.\n *\n * @param {*} value Value to return.\n * @param {*} min Minimum return value.\n * @param {*} max Maximum return value.\n */\nexport function between(value, min, max) {\n if (min && min > value) {\n return min;\n }\n if (max && max < value) {\n return max;\n }\n return value;\n}\nexport function isValueWithinRange(value, range) {\n return range[0] <= value && range[1] >= value;\n}\nexport function isRangeWithinRange(greaterRange, smallerRange) {\n return greaterRange[0] <= smallerRange[0] && greaterRange[1] >= smallerRange[1];\n}\nexport function doRangesOverlap(range1, range2) {\n return isValueWithinRange(range1[0], range2) || isValueWithinRange(range1[1], range2);\n}\nfunction getRangeClassNames(valueRange, dateRange, baseClassName) {\n var isRange = doRangesOverlap(dateRange, valueRange);\n var classes = [];\n if (isRange) {\n classes.push(baseClassName);\n var isRangeStart = isValueWithinRange(valueRange[0], dateRange);\n var isRangeEnd = isValueWithinRange(valueRange[1], dateRange);\n if (isRangeStart) {\n classes.push(\"\".concat(baseClassName, \"Start\"));\n }\n if (isRangeEnd) {\n classes.push(\"\".concat(baseClassName, \"End\"));\n }\n if (isRangeStart && isRangeEnd) {\n classes.push(\"\".concat(baseClassName, \"BothEnds\"));\n }\n }\n return classes;\n}\nexport function getTileClasses() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n value = _ref.value,\n valueType = _ref.valueType,\n date = _ref.date,\n dateType = _ref.dateType,\n hover = _ref.hover;\n var className = 'react-calendar__tile';\n var classes = [className];\n if (!date) {\n return classes;\n }\n if (!Array.isArray(date) && !dateType) {\n throw new Error('getTileClasses(): Unable to get tile activity classes because one or more required arguments were not passed.');\n }\n var now = new Date();\n var dateRange = Array.isArray(date) ? date : getRange(dateType, date);\n if (isValueWithinRange(now, dateRange)) {\n classes.push(\"\".concat(className, \"--now\"));\n }\n if (!value) {\n return classes;\n }\n if (!Array.isArray(value) && !valueType) {\n throw new Error('getTileClasses(): Unable to get tile activity classes because one or more required arguments were not passed.');\n }\n var valueRange = Array.isArray(value) ? value : getRange(valueType, value);\n if (isRangeWithinRange(valueRange, dateRange)) {\n classes.push(\"\".concat(className, \"--active\"));\n } else if (doRangesOverlap(valueRange, dateRange)) {\n classes.push(\"\".concat(className, \"--hasActive\"));\n }\n var valueRangeClassNames = getRangeClassNames(valueRange, dateRange, \"\".concat(className, \"--range\"));\n classes.push.apply(classes, _toConsumableArray(valueRangeClassNames));\n var valueArray = [].concat(value);\n if (hover && valueArray.length === 1) {\n var hoverRange = hover > valueRange[0] ? [valueRange[0], hover] : [hover, valueRange[0]];\n var hoverRangeClassNames = getRangeClassNames(hoverRange, dateRange, \"\".concat(className, \"--hover\"));\n classes.push.apply(classes, _toConsumableArray(hoverRangeClassNames));\n }\n return classes;\n}","var _excluded = [\"className\", \"count\", \"dateTransform\", \"dateType\", \"end\", \"hover\", \"offset\", \"start\", \"step\", \"tile\", \"value\", \"valueType\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport Flex from './Flex';\nimport { getTileClasses } from './shared/utils';\nimport { tileGroupProps } from './shared/propTypes';\nexport default function TileGroup(_ref) {\n var className = _ref.className,\n _ref$count = _ref.count,\n count = _ref$count === void 0 ? 3 : _ref$count,\n dateTransform = _ref.dateTransform,\n dateType = _ref.dateType,\n end = _ref.end,\n hover = _ref.hover,\n offset = _ref.offset,\n start = _ref.start,\n _ref$step = _ref.step,\n step = _ref$step === void 0 ? 1 : _ref$step,\n Tile = _ref.tile,\n value = _ref.value,\n valueType = _ref.valueType,\n tileProps = _objectWithoutProperties(_ref, _excluded);\n var tiles = [];\n for (var point = start; point <= end; point += step) {\n var date = dateTransform(point);\n tiles.push( /*#__PURE__*/React.createElement(Tile, _extends({\n key: date.getTime(),\n classes: getTileClasses({\n value: value,\n valueType: valueType,\n date: date,\n dateType: dateType,\n hover: hover\n }),\n date: date,\n point: point\n }, tileProps)));\n }\n return /*#__PURE__*/React.createElement(Flex, {\n className: className,\n count: count,\n offset: offset,\n wrap: true\n }, tiles);\n}\nTileGroup.propTypes = _objectSpread(_objectSpread({}, tileGroupProps), {}, {\n activeStartDate: PropTypes.instanceOf(Date),\n count: PropTypes.number,\n dateTransform: PropTypes.func.isRequired,\n dateType: PropTypes.string,\n offset: PropTypes.number,\n step: PropTypes.number,\n tile: PropTypes.func.isRequired\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { tileProps } from './shared/propTypes';\nfunction datesAreDifferent(date1, date2) {\n return date1 && !date2 || !date1 && date2 || date1 && date2 && date1.getTime() !== date2.getTime();\n}\nfunction getValue(nextProps, prop) {\n var activeStartDate = nextProps.activeStartDate,\n date = nextProps.date,\n view = nextProps.view;\n return typeof prop === 'function' ? prop({\n activeStartDate: activeStartDate,\n date: date,\n view: view\n }) : prop;\n}\nvar Tile = /*#__PURE__*/function (_Component) {\n _inherits(Tile, _Component);\n var _super = _createSuper(Tile);\n function Tile() {\n var _this;\n _classCallCheck(this, Tile);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"state\", {});\n return _this;\n }\n _createClass(Tile, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n activeStartDate = _this$props.activeStartDate,\n children = _this$props.children,\n classes = _this$props.classes,\n date = _this$props.date,\n formatAbbr = _this$props.formatAbbr,\n locale = _this$props.locale,\n maxDate = _this$props.maxDate,\n maxDateTransform = _this$props.maxDateTransform,\n minDate = _this$props.minDate,\n minDateTransform = _this$props.minDateTransform,\n onClick = _this$props.onClick,\n onMouseOver = _this$props.onMouseOver,\n style = _this$props.style,\n tileDisabled = _this$props.tileDisabled,\n view = _this$props.view;\n var _this$state = this.state,\n tileClassName = _this$state.tileClassName,\n tileContent = _this$state.tileContent;\n return /*#__PURE__*/React.createElement(\"button\", {\n className: clsx(classes, tileClassName),\n disabled: minDate && minDateTransform(minDate) > date || maxDate && maxDateTransform(maxDate) < date || tileDisabled && tileDisabled({\n activeStartDate: activeStartDate,\n date: date,\n view: view\n }),\n onClick: onClick && function (event) {\n return onClick(date, event);\n },\n onFocus: onMouseOver && function () {\n return onMouseOver(date);\n },\n onMouseOver: onMouseOver && function () {\n return onMouseOver(date);\n },\n style: style,\n type: \"button\"\n }, formatAbbr ? /*#__PURE__*/React.createElement(\"abbr\", {\n \"aria-label\": formatAbbr(locale, date)\n }, children) : children, tileContent);\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n var activeStartDate = nextProps.activeStartDate,\n tileClassName = nextProps.tileClassName,\n tileContent = nextProps.tileContent;\n var nextState = {};\n if (tileClassName !== prevState.tileClassNameProps || datesAreDifferent(activeStartDate, prevState.activeStartDateProps)) {\n nextState.tileClassName = getValue(nextProps, tileClassName);\n nextState.tileClassNameProps = tileClassName;\n }\n if (tileContent !== prevState.tileContentProps || datesAreDifferent(activeStartDate, prevState.activeStartDateProps)) {\n nextState.tileContent = getValue(nextProps, tileContent);\n nextState.tileContentProps = tileContent;\n }\n nextState.activeStartDateProps = activeStartDate;\n return nextState;\n }\n }]);\n return Tile;\n}(Component);\nexport { Tile as default };\nTile.propTypes = _objectSpread(_objectSpread({}, tileProps), {}, {\n children: PropTypes.node.isRequired,\n formatAbbr: PropTypes.func,\n maxDateTransform: PropTypes.func.isRequired,\n minDateTransform: PropTypes.func.isRequired\n});","var _excluded = [\"classes\", \"formatYear\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { getDecadeStart, getDecadeEnd } from '@wojtekmaj/date-utils';\nimport Tile from '../Tile';\nimport { getDecadeLabel } from '../shared/dates';\nimport { formatYear as defaultFormatYear } from '../shared/dateFormatter';\nimport { tileProps } from '../shared/propTypes';\nvar className = 'react-calendar__century-view__decades__decade';\nexport default function Decade(_ref) {\n var classes = _ref.classes,\n _ref$formatYear = _ref.formatYear,\n formatYear = _ref$formatYear === void 0 ? defaultFormatYear : _ref$formatYear,\n otherProps = _objectWithoutProperties(_ref, _excluded);\n var date = otherProps.date,\n locale = otherProps.locale;\n return /*#__PURE__*/React.createElement(Tile, _extends({}, otherProps, {\n classes: [].concat(classes, className),\n maxDateTransform: getDecadeEnd,\n minDateTransform: getDecadeStart,\n view: \"century\"\n }), getDecadeLabel(locale, formatYear, date));\n}\nDecade.propTypes = _objectSpread(_objectSpread({}, tileProps), {}, {\n formatYear: PropTypes.func\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from 'react';\nimport { getDecadeStart } from '@wojtekmaj/date-utils';\nimport TileGroup from '../TileGroup';\nimport Decade from './Decade';\nimport { getBeginOfCenturyYear } from '../shared/dates';\nimport { tileGroupProps } from '../shared/propTypes';\nexport default function Decades(props) {\n var activeStartDate = props.activeStartDate;\n var start = getBeginOfCenturyYear(activeStartDate);\n var end = start + 99;\n return /*#__PURE__*/React.createElement(TileGroup, _extends({}, props, {\n className: \"react-calendar__century-view__decades\",\n dateTransform: getDecadeStart,\n dateType: \"decade\",\n end: end,\n start: start,\n step: 10,\n tile: Decade\n }));\n}\nDecades.propTypes = _objectSpread({}, tileGroupProps);","import React from 'react';\nimport Decades from './CenturyView/Decades';\nexport default function CenturyView(props) {\n function renderDecades() {\n return /*#__PURE__*/React.createElement(Decades, props);\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"react-calendar__century-view\"\n }, renderDecades());\n}","var _excluded = [\"classes\", \"formatYear\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { getYearStart, getYearEnd } from '@wojtekmaj/date-utils';\nimport Tile from '../Tile';\nimport { formatYear as defaultFormatYear } from '../shared/dateFormatter';\nimport { tileProps } from '../shared/propTypes';\nvar className = 'react-calendar__decade-view__years__year';\nexport default function Year(_ref) {\n var classes = _ref.classes,\n _ref$formatYear = _ref.formatYear,\n formatYear = _ref$formatYear === void 0 ? defaultFormatYear : _ref$formatYear,\n otherProps = _objectWithoutProperties(_ref, _excluded);\n var date = otherProps.date,\n locale = otherProps.locale;\n return /*#__PURE__*/React.createElement(Tile, _extends({}, otherProps, {\n classes: [].concat(classes, className),\n maxDateTransform: getYearEnd,\n minDateTransform: getYearStart,\n view: \"decade\"\n }), formatYear(locale, date));\n}\nYear.propTypes = _objectSpread(_objectSpread({}, tileProps), {}, {\n formatYear: PropTypes.func\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from 'react';\nimport TileGroup from '../TileGroup';\nimport Year from './Year';\nimport { getBeginOfDecadeYear } from '../shared/dates';\nimport { tileGroupProps } from '../shared/propTypes';\nexport default function Years(props) {\n var activeStartDate = props.activeStartDate;\n var start = getBeginOfDecadeYear(activeStartDate);\n var end = start + 9;\n return /*#__PURE__*/React.createElement(TileGroup, _extends({}, props, {\n className: \"react-calendar__decade-view__years\",\n dateTransform: function dateTransform(year) {\n var date = new Date();\n date.setFullYear(year, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n },\n dateType: \"year\",\n end: end,\n start: start,\n tile: Year\n }));\n}\nYears.propTypes = _objectSpread({}, tileGroupProps);","import React from 'react';\nimport Years from './DecadeView/Years';\nexport default function DecadeView(props) {\n function renderYears() {\n return /*#__PURE__*/React.createElement(Years, props);\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"react-calendar__decade-view\"\n }, renderYears());\n}","var _excluded = [\"classes\", \"formatMonth\", \"formatMonthYear\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { getMonthStart, getMonthEnd } from '@wojtekmaj/date-utils';\nimport Tile from '../Tile';\nimport { formatMonth as defaultFormatMonth, formatMonthYear as defaultFormatMonthYear } from '../shared/dateFormatter';\nimport { tileProps } from '../shared/propTypes';\nvar className = 'react-calendar__year-view__months__month';\nexport default function Month(_ref) {\n var classes = _ref.classes,\n _ref$formatMonth = _ref.formatMonth,\n formatMonth = _ref$formatMonth === void 0 ? defaultFormatMonth : _ref$formatMonth,\n _ref$formatMonthYear = _ref.formatMonthYear,\n formatMonthYear = _ref$formatMonthYear === void 0 ? defaultFormatMonthYear : _ref$formatMonthYear,\n otherProps = _objectWithoutProperties(_ref, _excluded);\n var date = otherProps.date,\n locale = otherProps.locale;\n return /*#__PURE__*/React.createElement(Tile, _extends({}, otherProps, {\n classes: [].concat(classes, className),\n formatAbbr: formatMonthYear,\n maxDateTransform: getMonthEnd,\n minDateTransform: getMonthStart,\n view: \"year\"\n }), formatMonth(locale, date));\n}\nMonth.propTypes = _objectSpread(_objectSpread({}, tileProps), {}, {\n formatMonth: PropTypes.func,\n formatMonthYear: PropTypes.func\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { getYear } from '@wojtekmaj/date-utils';\nimport TileGroup from '../TileGroup';\nimport Month from './Month';\nimport { tileGroupProps } from '../shared/propTypes';\nexport default function Months(props) {\n var activeStartDate = props.activeStartDate;\n var start = 0;\n var end = 11;\n var year = getYear(activeStartDate);\n return /*#__PURE__*/React.createElement(TileGroup, _extends({}, props, {\n className: \"react-calendar__year-view__months\",\n dateTransform: function dateTransform(monthIndex) {\n var date = new Date();\n date.setFullYear(year, monthIndex, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n },\n dateType: \"month\",\n end: end,\n start: start,\n tile: Month\n }));\n}\nMonths.propTypes = _objectSpread(_objectSpread({}, tileGroupProps), {}, {\n locale: PropTypes.string\n});","import React from 'react';\nimport Months from './YearView/Months';\nexport default function YearView(props) {\n function renderMonths() {\n return /*#__PURE__*/React.createElement(Months, props);\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"react-calendar__year-view\"\n }, renderMonths());\n}","var _excluded = [\"formatDay\", \"formatLongDate\", \"calendarType\", \"classes\", \"currentMonthIndex\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { getDayStart, getDayEnd } from '@wojtekmaj/date-utils';\nimport Tile from '../Tile';\nimport { isWeekend } from '../shared/dates';\nimport { formatDay as defaultFormatDay, formatLongDate as defaultFormatLongDate } from '../shared/dateFormatter';\nimport { tileProps } from '../shared/propTypes';\nvar className = 'react-calendar__month-view__days__day';\nexport default function Day(_ref) {\n var _ref$formatDay = _ref.formatDay,\n formatDay = _ref$formatDay === void 0 ? defaultFormatDay : _ref$formatDay,\n _ref$formatLongDate = _ref.formatLongDate,\n formatLongDate = _ref$formatLongDate === void 0 ? defaultFormatLongDate : _ref$formatLongDate,\n calendarType = _ref.calendarType,\n classes = _ref.classes,\n currentMonthIndex = _ref.currentMonthIndex,\n otherProps = _objectWithoutProperties(_ref, _excluded);\n var date = otherProps.date,\n locale = otherProps.locale;\n return /*#__PURE__*/React.createElement(Tile, _extends({}, otherProps, {\n classes: [].concat(classes, className, isWeekend(date, calendarType) ? \"\".concat(className, \"--weekend\") : null, date.getMonth() !== currentMonthIndex ? \"\".concat(className, \"--neighboringMonth\") : null),\n formatAbbr: formatLongDate,\n maxDateTransform: getDayEnd,\n minDateTransform: getDayStart,\n view: \"month\"\n }), formatDay(locale, date));\n}\nDay.propTypes = _objectSpread(_objectSpread({}, tileProps), {}, {\n currentMonthIndex: PropTypes.number.isRequired,\n formatDay: PropTypes.func,\n formatLongDate: PropTypes.func\n});","var _excluded = [\"showFixedNumberOfWeeks\", \"showNeighboringMonth\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { getYear, getMonth, getDaysInMonth } from '@wojtekmaj/date-utils';\nimport TileGroup from '../TileGroup';\nimport Day from './Day';\nimport { getDayOfWeek } from '../shared/dates';\nimport { isCalendarType, tileGroupProps } from '../shared/propTypes';\nexport default function Days(props) {\n var activeStartDate = props.activeStartDate,\n calendarType = props.calendarType;\n var showFixedNumberOfWeeks = props.showFixedNumberOfWeeks,\n showNeighboringMonth = props.showNeighboringMonth,\n otherProps = _objectWithoutProperties(props, _excluded);\n var year = getYear(activeStartDate);\n var monthIndex = getMonth(activeStartDate);\n var hasFixedNumberOfWeeks = showFixedNumberOfWeeks || showNeighboringMonth;\n var dayOfWeek = getDayOfWeek(activeStartDate, calendarType);\n var offset = hasFixedNumberOfWeeks ? 0 : dayOfWeek;\n\n /**\n * Defines on which day of the month the grid shall start. If we simply show current\n * month, we obviously start on day one, but if showNeighboringMonth is set to\n * true, we need to find the beginning of the week the first day of the month is in.\n */\n var start = (hasFixedNumberOfWeeks ? -dayOfWeek : 0) + 1;\n\n /**\n * Defines on which day of the month the grid shall end. If we simply show current\n * month, we need to stop on the last day of the month, but if showNeighboringMonth\n * is set to true, we need to find the end of the week the last day of the month is in.\n */\n var end = function () {\n if (showFixedNumberOfWeeks) {\n // Always show 6 weeks\n return start + 6 * 7 - 1;\n }\n var daysInMonth = getDaysInMonth(activeStartDate);\n if (showNeighboringMonth) {\n var activeEndDate = new Date();\n activeEndDate.setFullYear(year, monthIndex, daysInMonth);\n activeEndDate.setHours(0, 0, 0, 0);\n var daysUntilEndOfTheWeek = 7 - getDayOfWeek(activeEndDate, calendarType) - 1;\n return daysInMonth + daysUntilEndOfTheWeek;\n }\n return daysInMonth;\n }();\n return /*#__PURE__*/React.createElement(TileGroup, _extends({}, otherProps, {\n className: \"react-calendar__month-view__days\",\n count: 7,\n currentMonthIndex: monthIndex,\n dateTransform: function dateTransform(day) {\n var date = new Date();\n date.setFullYear(year, monthIndex, day);\n date.setHours(0, 0, 0, 0);\n return date;\n },\n dateType: \"day\",\n end: end,\n offset: offset,\n start: start,\n tile: Day\n }));\n}\nDays.propTypes = _objectSpread({\n calendarType: isCalendarType.isRequired,\n showFixedNumberOfWeeks: PropTypes.bool,\n showNeighboringMonth: PropTypes.bool\n}, tileGroupProps);","import React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { getYear, getMonth, getMonthStart } from '@wojtekmaj/date-utils';\nimport Flex from '../Flex';\nimport { getDayOfWeek, isWeekend } from '../shared/dates';\nimport { formatShortWeekday as defaultFormatShortWeekday, formatWeekday as defaultFormatWeekday } from '../shared/dateFormatter';\nimport { isCalendarType } from '../shared/propTypes';\nvar className = 'react-calendar__month-view__weekdays';\nvar weekdayClassName = \"\".concat(className, \"__weekday\");\nexport default function Weekdays(props) {\n var calendarType = props.calendarType,\n _props$formatShortWee = props.formatShortWeekday,\n formatShortWeekday = _props$formatShortWee === void 0 ? defaultFormatShortWeekday : _props$formatShortWee,\n _props$formatWeekday = props.formatWeekday,\n formatWeekday = _props$formatWeekday === void 0 ? defaultFormatWeekday : _props$formatWeekday,\n locale = props.locale,\n onMouseLeave = props.onMouseLeave;\n var anyDate = new Date();\n var beginOfMonth = getMonthStart(anyDate);\n var year = getYear(beginOfMonth);\n var monthIndex = getMonth(beginOfMonth);\n var weekdays = [];\n for (var weekday = 1; weekday <= 7; weekday += 1) {\n var weekdayDate = new Date(year, monthIndex, weekday - getDayOfWeek(beginOfMonth, calendarType));\n var abbr = formatWeekday(locale, weekdayDate);\n weekdays.push( /*#__PURE__*/React.createElement(\"div\", {\n key: weekday,\n className: clsx(weekdayClassName, isWeekend(weekdayDate, calendarType) && \"\".concat(weekdayClassName, \"--weekend\"))\n }, /*#__PURE__*/React.createElement(\"abbr\", {\n \"aria-label\": abbr,\n title: abbr\n }, formatShortWeekday(locale, weekdayDate).replace('.', ''))));\n }\n return /*#__PURE__*/React.createElement(Flex, {\n className: className,\n count: 7,\n onFocus: onMouseLeave,\n onMouseOver: onMouseLeave\n }, weekdays);\n}\nWeekdays.propTypes = {\n calendarType: isCalendarType.isRequired,\n formatShortWeekday: PropTypes.func,\n formatWeekday: PropTypes.func,\n locale: PropTypes.string,\n onMouseLeave: PropTypes.func\n};","var _excluded = [\"date\", \"onClickWeekNumber\", \"weekNumber\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nvar className = 'react-calendar__tile';\nexport default function WeekNumber(_ref) {\n var date = _ref.date,\n onClickWeekNumber = _ref.onClickWeekNumber,\n weekNumber = _ref.weekNumber,\n otherProps = _objectWithoutProperties(_ref, _excluded);\n var props = _objectSpread({\n className: className\n }, otherProps);\n var children = /*#__PURE__*/React.createElement(\"span\", null, weekNumber);\n return onClickWeekNumber ? /*#__PURE__*/React.createElement(\"button\", _extends({}, props, {\n onClick: function onClick(event) {\n return onClickWeekNumber(weekNumber, date, event);\n },\n type: \"button\"\n }), children) : /*#__PURE__*/React.createElement(\"div\", props, children);\n}\nWeekNumber.propTypes = {\n date: PropTypes.instanceOf(Date).isRequired,\n onClickWeekNumber: PropTypes.func,\n weekNumber: PropTypes.node.isRequired\n};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { getYear, getMonth, getDate, getDaysInMonth } from '@wojtekmaj/date-utils';\nimport WeekNumber from './WeekNumber';\nimport Flex from '../Flex';\nimport { getBeginOfWeek, getDayOfWeek, getWeekNumber } from '../shared/dates';\nimport { isCalendarType } from '../shared/propTypes';\nexport default function WeekNumbers(props) {\n var activeStartDate = props.activeStartDate,\n calendarType = props.calendarType,\n onClickWeekNumber = props.onClickWeekNumber,\n onMouseLeave = props.onMouseLeave,\n showFixedNumberOfWeeks = props.showFixedNumberOfWeeks;\n var numberOfWeeks = function () {\n if (showFixedNumberOfWeeks) {\n return 6;\n }\n var numberOfDays = getDaysInMonth(activeStartDate);\n var startWeekday = getDayOfWeek(activeStartDate, calendarType);\n var days = numberOfDays - (7 - startWeekday);\n return 1 + Math.ceil(days / 7);\n }();\n var dates = function () {\n var year = getYear(activeStartDate);\n var monthIndex = getMonth(activeStartDate);\n var day = getDate(activeStartDate);\n var result = [];\n for (var index = 0; index < numberOfWeeks; index += 1) {\n result.push(getBeginOfWeek(new Date(year, monthIndex, day + index * 7), calendarType));\n }\n return result;\n }();\n var weekNumbers = dates.map(function (date) {\n return getWeekNumber(date, calendarType);\n });\n return /*#__PURE__*/React.createElement(Flex, {\n className: \"react-calendar__month-view__weekNumbers\",\n count: numberOfWeeks,\n direction: \"column\",\n onFocus: onMouseLeave,\n onMouseOver: onMouseLeave,\n style: {\n flexBasis: 'calc(100% * (1 / 8)',\n flexShrink: 0\n }\n }, weekNumbers.map(function (weekNumber, weekIndex) {\n return /*#__PURE__*/React.createElement(WeekNumber, {\n key: weekNumber,\n date: dates[weekIndex],\n onClickWeekNumber: onClickWeekNumber,\n weekNumber: weekNumber\n });\n }));\n}\nWeekNumbers.propTypes = {\n activeStartDate: PropTypes.instanceOf(Date).isRequired,\n calendarType: isCalendarType.isRequired,\n onClickWeekNumber: PropTypes.func,\n onMouseLeave: PropTypes.func,\n showFixedNumberOfWeeks: PropTypes.bool\n};","var _excluded = [\"calendarType\", \"formatShortWeekday\", \"formatWeekday\", \"onClickWeekNumber\", \"showWeekNumbers\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport Days from './MonthView/Days';\nimport Weekdays from './MonthView/Weekdays';\nimport WeekNumbers from './MonthView/WeekNumbers';\nimport { CALENDAR_TYPES, CALENDAR_TYPE_LOCALES } from './shared/const';\nimport { isCalendarType } from './shared/propTypes';\nfunction getCalendarTypeFromLocale(locale) {\n return Object.keys(CALENDAR_TYPE_LOCALES).find(function (calendarType) {\n return CALENDAR_TYPE_LOCALES[calendarType].includes(locale);\n }) || CALENDAR_TYPES.ISO_8601;\n}\nexport default function MonthView(props) {\n var activeStartDate = props.activeStartDate,\n locale = props.locale,\n onMouseLeave = props.onMouseLeave,\n showFixedNumberOfWeeks = props.showFixedNumberOfWeeks;\n var _props$calendarType = props.calendarType,\n calendarType = _props$calendarType === void 0 ? getCalendarTypeFromLocale(locale) : _props$calendarType,\n formatShortWeekday = props.formatShortWeekday,\n formatWeekday = props.formatWeekday,\n onClickWeekNumber = props.onClickWeekNumber,\n showWeekNumbers = props.showWeekNumbers,\n childProps = _objectWithoutProperties(props, _excluded);\n function renderWeekdays() {\n return /*#__PURE__*/React.createElement(Weekdays, {\n calendarType: calendarType,\n formatShortWeekday: formatShortWeekday,\n formatWeekday: formatWeekday,\n locale: locale,\n onMouseLeave: onMouseLeave\n });\n }\n function renderWeekNumbers() {\n if (!showWeekNumbers) {\n return null;\n }\n return /*#__PURE__*/React.createElement(WeekNumbers, {\n activeStartDate: activeStartDate,\n calendarType: calendarType,\n onClickWeekNumber: onClickWeekNumber,\n onMouseLeave: onMouseLeave,\n showFixedNumberOfWeeks: showFixedNumberOfWeeks\n });\n }\n function renderDays() {\n return /*#__PURE__*/React.createElement(Days, _extends({\n calendarType: calendarType\n }, childProps));\n }\n var className = 'react-calendar__month-view';\n return /*#__PURE__*/React.createElement(\"div\", {\n className: clsx(className, showWeekNumbers ? \"\".concat(className, \"--weekNumbers\") : '')\n }, /*#__PURE__*/React.createElement(\"div\", {\n style: {\n display: 'flex',\n alignItems: 'flex-end'\n }\n }, renderWeekNumbers(), /*#__PURE__*/React.createElement(\"div\", {\n style: {\n flexGrow: 1,\n width: '100%'\n }\n }, renderWeekdays(), renderDays())));\n}\nMonthView.propTypes = {\n activeStartDate: PropTypes.instanceOf(Date).isRequired,\n calendarType: isCalendarType,\n formatShortWeekday: PropTypes.func,\n formatWeekday: PropTypes.func,\n locale: PropTypes.string,\n onClickWeekNumber: PropTypes.func,\n onMouseLeave: PropTypes.func,\n showFixedNumberOfWeeks: PropTypes.bool,\n showWeekNumbers: PropTypes.bool\n};","var _excluded = [\"activeStartDate\", \"defaultActiveStartDate\", \"defaultValue\", \"defaultView\", \"maxDetail\", \"minDetail\", \"value\", \"view\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport Navigation from './Calendar/Navigation';\nimport CenturyView from './CenturyView';\nimport DecadeView from './DecadeView';\nimport YearView from './YearView';\nimport MonthView from './MonthView';\nimport { getBegin, getBeginNext, getEnd, getValueRange } from './shared/dates';\nimport { isCalendarType, isClassName, isMaxDate, isMinDate, isRef, isValue, isView } from './shared/propTypes';\nimport { between } from './shared/utils';\nvar defaultMinDate = new Date();\ndefaultMinDate.setFullYear(1, 0, 1);\ndefaultMinDate.setHours(0, 0, 0, 0);\nvar defaultMaxDate = new Date(8.64e15);\nvar baseClassName = 'react-calendar';\nvar allViews = ['century', 'decade', 'year', 'month'];\nvar allValueTypes = [].concat(_toConsumableArray(allViews.slice(1)), ['day']);\nfunction toDate(value) {\n if (value instanceof Date) {\n return value;\n }\n return new Date(value);\n}\n\n/**\n * Returns views array with disallowed values cut off.\n */\nfunction getLimitedViews(minDetail, maxDetail) {\n return allViews.slice(allViews.indexOf(minDetail), allViews.indexOf(maxDetail) + 1);\n}\n\n/**\n * Determines whether a given view is allowed with currently applied settings.\n */\nfunction isViewAllowed(view, minDetail, maxDetail) {\n var views = getLimitedViews(minDetail, maxDetail);\n return views.indexOf(view) !== -1;\n}\n\n/**\n * Gets either provided view if allowed by minDetail and maxDetail, or gets\n * the default view if not allowed.\n */\nfunction getView(view, minDetail, maxDetail) {\n if (isViewAllowed(view, minDetail, maxDetail)) {\n return view;\n }\n return maxDetail;\n}\n\n/**\n * Returns value type that can be returned with currently applied settings.\n */\nfunction getValueType(maxDetail) {\n return allValueTypes[allViews.indexOf(maxDetail)];\n}\nfunction getValue(value, index) {\n if (!value) {\n return null;\n }\n var rawValue = Array.isArray(value) && value.length === 2 ? value[index] : value;\n if (!rawValue) {\n return null;\n }\n var valueDate = toDate(rawValue);\n if (isNaN(valueDate.getTime())) {\n throw new Error(\"Invalid date: \".concat(value));\n }\n return valueDate;\n}\nfunction getDetailValue(_ref, index) {\n var value = _ref.value,\n minDate = _ref.minDate,\n maxDate = _ref.maxDate,\n maxDetail = _ref.maxDetail;\n var valuePiece = getValue(value, index);\n if (!valuePiece) {\n return null;\n }\n var valueType = getValueType(maxDetail);\n var detailValueFrom = [getBegin, getEnd][index](valueType, valuePiece);\n return between(detailValueFrom, minDate, maxDate);\n}\nvar getDetailValueFrom = function getDetailValueFrom(args) {\n return getDetailValue(args, 0);\n};\nvar getDetailValueTo = function getDetailValueTo(args) {\n return getDetailValue(args, 1);\n};\nvar getDetailValueArray = function getDetailValueArray(args) {\n var value = args.value;\n if (Array.isArray(value)) {\n return value;\n }\n return [getDetailValueFrom, getDetailValueTo].map(function (fn) {\n return fn(args);\n });\n};\nfunction getActiveStartDate(props) {\n var maxDate = props.maxDate,\n maxDetail = props.maxDetail,\n minDate = props.minDate,\n minDetail = props.minDetail,\n value = props.value,\n view = props.view;\n var rangeType = getView(view, minDetail, maxDetail);\n var valueFrom = getDetailValueFrom({\n value: value,\n minDate: minDate,\n maxDate: maxDate,\n maxDetail: maxDetail\n }) || new Date();\n return getBegin(rangeType, valueFrom);\n}\nfunction getInitialActiveStartDate(props) {\n var activeStartDate = props.activeStartDate,\n defaultActiveStartDate = props.defaultActiveStartDate,\n defaultValue = props.defaultValue,\n defaultView = props.defaultView,\n maxDetail = props.maxDetail,\n minDetail = props.minDetail,\n value = props.value,\n view = props.view,\n otherProps = _objectWithoutProperties(props, _excluded);\n var rangeType = getView(view, minDetail, maxDetail);\n var valueFrom = activeStartDate || defaultActiveStartDate;\n if (valueFrom) {\n return getBegin(rangeType, valueFrom);\n }\n return getActiveStartDate(_objectSpread({\n maxDetail: maxDetail,\n minDetail: minDetail,\n value: value || defaultValue,\n view: view || defaultView\n }, otherProps));\n}\nvar getIsSingleValue = function getIsSingleValue(value) {\n return value && [].concat(value).length === 1;\n};\nvar Calendar = /*#__PURE__*/function (_Component) {\n _inherits(Calendar, _Component);\n var _super = _createSuper(Calendar);\n function Calendar() {\n var _this;\n _classCallCheck(this, Calendar);\n for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n _args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(_args));\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n activeStartDate: _this.props.defaultActiveStartDate,\n value: _this.props.defaultValue,\n view: _this.props.defaultView\n });\n _defineProperty(_assertThisInitialized(_this), \"setStateAndCallCallbacks\", function (nextState, event, callback) {\n var _assertThisInitialize = _assertThisInitialized(_this),\n previousActiveStartDate = _assertThisInitialize.activeStartDate,\n previousView = _assertThisInitialize.view;\n var _this$props = _this.props,\n allowPartialRange = _this$props.allowPartialRange,\n onActiveStartDateChange = _this$props.onActiveStartDateChange,\n onChange = _this$props.onChange,\n onViewChange = _this$props.onViewChange,\n selectRange = _this$props.selectRange;\n var prevArgs = {\n activeStartDate: previousActiveStartDate,\n view: previousView\n };\n _this.setState(nextState, function () {\n var args = {\n action: nextState.action,\n activeStartDate: nextState.activeStartDate || _this.activeStartDate,\n value: nextState.value || _this.value,\n view: nextState.view || _this.view\n };\n function shouldUpdate(key) {\n return (\n // Key must exist, and…\n key in nextState && (\n // …key changed from undefined to defined or the other way around, or…\n _typeof(nextState[key]) !== _typeof(prevArgs[key]) || (\n // …value changed.\n nextState[key] instanceof Date ? nextState[key].getTime() !== prevArgs[key].getTime() : nextState[key] !== prevArgs[key]))\n );\n }\n if (shouldUpdate('activeStartDate')) {\n if (onActiveStartDateChange) onActiveStartDateChange(args);\n }\n if (shouldUpdate('view')) {\n if (onViewChange) onViewChange(args);\n }\n if (shouldUpdate('value')) {\n if (onChange) {\n if (selectRange) {\n var isSingleValue = getIsSingleValue(nextState.value);\n if (!isSingleValue) {\n onChange(nextState.value, event);\n } else if (allowPartialRange) {\n onChange([nextState.value], event);\n }\n } else {\n onChange(nextState.value, event);\n }\n }\n }\n if (callback) callback(args);\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"setActiveStartDate\", function (nextActiveStartDate, action) {\n _this.setStateAndCallCallbacks({\n action: action,\n activeStartDate: nextActiveStartDate\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"drillDown\", function (nextActiveStartDate, event) {\n if (!_this.drillDownAvailable) {\n return;\n }\n _this.onClickTile(nextActiveStartDate, event);\n var _assertThisInitialize2 = _assertThisInitialized(_this),\n view = _assertThisInitialize2.view,\n views = _assertThisInitialize2.views;\n var onDrillDown = _this.props.onDrillDown;\n var nextView = views[views.indexOf(view) + 1];\n _this.setStateAndCallCallbacks({\n action: 'drillDown',\n activeStartDate: nextActiveStartDate,\n view: nextView\n }, undefined, onDrillDown);\n });\n _defineProperty(_assertThisInitialized(_this), \"drillUp\", function () {\n if (!_this.drillUpAvailable) {\n return;\n }\n var _assertThisInitialize3 = _assertThisInitialized(_this),\n activeStartDate = _assertThisInitialize3.activeStartDate,\n view = _assertThisInitialize3.view,\n views = _assertThisInitialize3.views;\n var onDrillUp = _this.props.onDrillUp;\n var nextView = views[views.indexOf(view) - 1];\n var nextActiveStartDate = getBegin(nextView, activeStartDate);\n _this.setStateAndCallCallbacks({\n action: 'drillUp',\n activeStartDate: nextActiveStartDate,\n view: nextView\n }, undefined, onDrillUp);\n });\n _defineProperty(_assertThisInitialized(_this), \"onChange\", function (value, event) {\n var _assertThisInitialize4 = _assertThisInitialized(_this),\n previousValue = _assertThisInitialize4.value;\n var _this$props2 = _this.props,\n goToRangeStartOnSelect = _this$props2.goToRangeStartOnSelect,\n selectRange = _this$props2.selectRange;\n _this.onClickTile(value, event);\n var isFirstValueInRange = selectRange && !getIsSingleValue(previousValue);\n var nextValue;\n if (selectRange) {\n // Range selection turned on\n var _assertThisInitialize5 = _assertThisInitialized(_this),\n valueType = _assertThisInitialize5.valueType;\n if (isFirstValueInRange) {\n // Value has 0 or 2 elements - either way we're starting a new array\n // First value\n nextValue = getBegin(valueType, value);\n } else {\n // Second value\n nextValue = getValueRange(valueType, previousValue, value);\n }\n } else {\n // Range selection turned off\n nextValue = _this.getProcessedValue(value);\n }\n var nextActiveStartDate =\n // Range selection turned off\n !selectRange ||\n // Range selection turned on, first value\n isFirstValueInRange ||\n // Range selection turned on, second value, goToRangeStartOnSelect toggled on\n goToRangeStartOnSelect ? getActiveStartDate(_objectSpread(_objectSpread({}, _this.props), {}, {\n value: nextValue\n })) : null;\n event.persist();\n _this.setStateAndCallCallbacks({\n action: 'onChange',\n activeStartDate: nextActiveStartDate,\n value: nextValue\n }, event);\n });\n _defineProperty(_assertThisInitialized(_this), \"onClickTile\", function (value, event) {\n var _assertThisInitialize6 = _assertThisInitialized(_this),\n view = _assertThisInitialize6.view;\n var _this$props3 = _this.props,\n onClickDay = _this$props3.onClickDay,\n onClickDecade = _this$props3.onClickDecade,\n onClickMonth = _this$props3.onClickMonth,\n onClickYear = _this$props3.onClickYear;\n var callback = function () {\n switch (view) {\n case 'century':\n return onClickDecade;\n case 'decade':\n return onClickYear;\n case 'year':\n return onClickMonth;\n case 'month':\n return onClickDay;\n default:\n throw new Error(\"Invalid view: \".concat(view, \".\"));\n }\n }();\n if (callback) callback(value, event);\n });\n _defineProperty(_assertThisInitialized(_this), \"onMouseOver\", function (value) {\n _this.setState(function (prevState) {\n if (prevState.hover && prevState.hover.getTime() === value.getTime()) {\n return null;\n }\n return {\n hover: value\n };\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"onMouseLeave\", function () {\n _this.setState({\n hover: null\n });\n });\n return _this;\n }\n _createClass(Calendar, [{\n key: \"activeStartDate\",\n get: function get() {\n var activeStartDateProps = this.props.activeStartDate;\n var activeStartDateState = this.state.activeStartDate;\n return activeStartDateProps || activeStartDateState || getInitialActiveStartDate(this.props);\n }\n }, {\n key: \"value\",\n get: function get() {\n var _this$props4 = this.props,\n selectRange = _this$props4.selectRange,\n valueProps = _this$props4.value;\n var valueState = this.state.value;\n\n // In the middle of range selection, use value from state\n if (selectRange && getIsSingleValue(valueState)) {\n return valueState;\n }\n return valueProps !== undefined ? valueProps : valueState;\n }\n }, {\n key: \"valueType\",\n get: function get() {\n var maxDetail = this.props.maxDetail;\n return getValueType(maxDetail);\n }\n }, {\n key: \"view\",\n get: function get() {\n var _this$props5 = this.props,\n minDetail = _this$props5.minDetail,\n maxDetail = _this$props5.maxDetail,\n viewProps = _this$props5.view;\n var viewState = this.state.view;\n return getView(viewProps || viewState, minDetail, maxDetail);\n }\n }, {\n key: \"views\",\n get: function get() {\n var _this$props6 = this.props,\n minDetail = _this$props6.minDetail,\n maxDetail = _this$props6.maxDetail;\n return getLimitedViews(minDetail, maxDetail);\n }\n }, {\n key: \"hover\",\n get: function get() {\n var selectRange = this.props.selectRange;\n var hover = this.state.hover;\n return selectRange ? hover : null;\n }\n }, {\n key: \"drillDownAvailable\",\n get: function get() {\n var view = this.view,\n views = this.views;\n return views.indexOf(view) < views.length - 1;\n }\n }, {\n key: \"drillUpAvailable\",\n get: function get() {\n var view = this.view,\n views = this.views;\n return views.indexOf(view) > 0;\n }\n\n /**\n * Gets current value in a desired format.\n */\n }, {\n key: \"getProcessedValue\",\n value: function getProcessedValue(value) {\n var _this$props7 = this.props,\n minDate = _this$props7.minDate,\n maxDate = _this$props7.maxDate,\n maxDetail = _this$props7.maxDetail,\n returnValue = _this$props7.returnValue;\n var processFunction = function () {\n switch (returnValue) {\n case 'start':\n return getDetailValueFrom;\n case 'end':\n return getDetailValueTo;\n case 'range':\n return getDetailValueArray;\n default:\n throw new Error('Invalid returnValue.');\n }\n }();\n return processFunction({\n value: value,\n minDate: minDate,\n maxDate: maxDate,\n maxDetail: maxDetail\n });\n }\n }, {\n key: \"renderContent\",\n value: function renderContent(next) {\n var currentActiveStartDate = this.activeStartDate,\n onMouseOver = this.onMouseOver,\n valueType = this.valueType,\n value = this.value,\n view = this.view;\n var _this$props8 = this.props,\n calendarType = _this$props8.calendarType,\n locale = _this$props8.locale,\n maxDate = _this$props8.maxDate,\n minDate = _this$props8.minDate,\n selectRange = _this$props8.selectRange,\n tileClassName = _this$props8.tileClassName,\n tileContent = _this$props8.tileContent,\n tileDisabled = _this$props8.tileDisabled;\n var hover = this.hover;\n var activeStartDate = next ? getBeginNext(view, currentActiveStartDate) : getBegin(view, currentActiveStartDate);\n var onClick = this.drillDownAvailable ? this.drillDown : this.onChange;\n var commonProps = {\n activeStartDate: activeStartDate,\n hover: hover,\n locale: locale,\n maxDate: maxDate,\n minDate: minDate,\n onClick: onClick,\n onMouseOver: selectRange ? onMouseOver : null,\n tileClassName: tileClassName,\n tileContent: tileContent,\n tileDisabled: tileDisabled,\n value: value,\n valueType: valueType\n };\n switch (view) {\n case 'century':\n {\n var formatYear = this.props.formatYear;\n return /*#__PURE__*/React.createElement(CenturyView, _extends({\n formatYear: formatYear\n }, commonProps));\n }\n case 'decade':\n {\n var _formatYear = this.props.formatYear;\n return /*#__PURE__*/React.createElement(DecadeView, _extends({\n formatYear: _formatYear\n }, commonProps));\n }\n case 'year':\n {\n var _this$props9 = this.props,\n formatMonth = _this$props9.formatMonth,\n formatMonthYear = _this$props9.formatMonthYear;\n return /*#__PURE__*/React.createElement(YearView, _extends({\n formatMonth: formatMonth,\n formatMonthYear: formatMonthYear\n }, commonProps));\n }\n case 'month':\n {\n var _this$props10 = this.props,\n formatDay = _this$props10.formatDay,\n formatLongDate = _this$props10.formatLongDate,\n formatShortWeekday = _this$props10.formatShortWeekday,\n formatWeekday = _this$props10.formatWeekday,\n onClickWeekNumber = _this$props10.onClickWeekNumber,\n showDoubleView = _this$props10.showDoubleView,\n showFixedNumberOfWeeks = _this$props10.showFixedNumberOfWeeks,\n showNeighboringMonth = _this$props10.showNeighboringMonth,\n showWeekNumbers = _this$props10.showWeekNumbers;\n var onMouseLeave = this.onMouseLeave;\n return /*#__PURE__*/React.createElement(MonthView, _extends({\n calendarType: calendarType,\n formatDay: formatDay,\n formatLongDate: formatLongDate,\n formatShortWeekday: formatShortWeekday,\n formatWeekday: formatWeekday,\n onClickWeekNumber: onClickWeekNumber,\n onMouseLeave: selectRange ? onMouseLeave : null,\n showFixedNumberOfWeeks: typeof showFixedNumberOfWeeks !== 'undefined' ? showFixedNumberOfWeeks : showDoubleView,\n showNeighboringMonth: showNeighboringMonth,\n showWeekNumbers: showWeekNumbers\n }, commonProps));\n }\n default:\n throw new Error(\"Invalid view: \".concat(view, \".\"));\n }\n }\n }, {\n key: \"renderNavigation\",\n value: function renderNavigation() {\n var showNavigation = this.props.showNavigation;\n if (!showNavigation) {\n return null;\n }\n var activeStartDate = this.activeStartDate,\n view = this.view,\n views = this.views;\n var _this$props11 = this.props,\n formatMonthYear = _this$props11.formatMonthYear,\n formatYear = _this$props11.formatYear,\n locale = _this$props11.locale,\n maxDate = _this$props11.maxDate,\n minDate = _this$props11.minDate,\n navigationAriaLabel = _this$props11.navigationAriaLabel,\n navigationAriaLive = _this$props11.navigationAriaLive,\n navigationLabel = _this$props11.navigationLabel,\n next2AriaLabel = _this$props11.next2AriaLabel,\n next2Label = _this$props11.next2Label,\n nextAriaLabel = _this$props11.nextAriaLabel,\n nextLabel = _this$props11.nextLabel,\n prev2AriaLabel = _this$props11.prev2AriaLabel,\n prev2Label = _this$props11.prev2Label,\n prevAriaLabel = _this$props11.prevAriaLabel,\n prevLabel = _this$props11.prevLabel,\n showDoubleView = _this$props11.showDoubleView;\n return /*#__PURE__*/React.createElement(Navigation, {\n activeStartDate: activeStartDate,\n drillUp: this.drillUp,\n formatMonthYear: formatMonthYear,\n formatYear: formatYear,\n locale: locale,\n maxDate: maxDate,\n minDate: minDate,\n navigationAriaLabel: navigationAriaLabel,\n navigationAriaLive: navigationAriaLive,\n navigationLabel: navigationLabel,\n next2AriaLabel: next2AriaLabel,\n next2Label: next2Label,\n nextAriaLabel: nextAriaLabel,\n nextLabel: nextLabel,\n prev2AriaLabel: prev2AriaLabel,\n prev2Label: prev2Label,\n prevAriaLabel: prevAriaLabel,\n prevLabel: prevLabel,\n setActiveStartDate: this.setActiveStartDate,\n showDoubleView: showDoubleView,\n view: view,\n views: views\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props12 = this.props,\n className = _this$props12.className,\n inputRef = _this$props12.inputRef,\n selectRange = _this$props12.selectRange,\n showDoubleView = _this$props12.showDoubleView;\n var onMouseLeave = this.onMouseLeave,\n value = this.value;\n var valueArray = [].concat(value);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: clsx(baseClassName, selectRange && valueArray.length === 1 && \"\".concat(baseClassName, \"--selectRange\"), showDoubleView && \"\".concat(baseClassName, \"--doubleView\"), className),\n ref: inputRef\n }, this.renderNavigation(), /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(baseClassName, \"__viewContainer\"),\n onBlur: selectRange ? onMouseLeave : null,\n onMouseLeave: selectRange ? onMouseLeave : null\n }, this.renderContent(), showDoubleView && this.renderContent(true)));\n }\n }]);\n return Calendar;\n}(Component);\nexport { Calendar as default };\nCalendar.defaultProps = {\n goToRangeStartOnSelect: true,\n maxDate: defaultMaxDate,\n maxDetail: 'month',\n minDate: defaultMinDate,\n minDetail: 'century',\n returnValue: 'start',\n showNavigation: true,\n showNeighboringMonth: true\n};\nvar isActiveStartDate = PropTypes.instanceOf(Date);\nvar isLooseValue = PropTypes.oneOfType([PropTypes.string, isValue]);\nCalendar.propTypes = {\n activeStartDate: isActiveStartDate,\n allowPartialRange: PropTypes.bool,\n calendarType: isCalendarType,\n className: isClassName,\n defaultActiveStartDate: isActiveStartDate,\n defaultValue: isLooseValue,\n defaultView: isView,\n formatDay: PropTypes.func,\n formatLongDate: PropTypes.func,\n formatMonth: PropTypes.func,\n formatMonthYear: PropTypes.func,\n formatShortWeekday: PropTypes.func,\n formatWeekday: PropTypes.func,\n formatYear: PropTypes.func,\n goToRangeStartOnSelect: PropTypes.bool,\n inputRef: isRef,\n locale: PropTypes.string,\n maxDate: isMaxDate,\n maxDetail: PropTypes.oneOf(allViews),\n minDate: isMinDate,\n minDetail: PropTypes.oneOf(allViews),\n navigationAriaLabel: PropTypes.string,\n navigationAriaLive: PropTypes.oneOf(['off', 'polite', 'assertive']),\n navigationLabel: PropTypes.func,\n next2AriaLabel: PropTypes.string,\n next2Label: PropTypes.node,\n nextAriaLabel: PropTypes.string,\n nextLabel: PropTypes.node,\n onActiveStartDateChange: PropTypes.func,\n onChange: PropTypes.func,\n onClickDay: PropTypes.func,\n onClickDecade: PropTypes.func,\n onClickMonth: PropTypes.func,\n onClickWeekNumber: PropTypes.func,\n onClickYear: PropTypes.func,\n onDrillDown: PropTypes.func,\n onDrillUp: PropTypes.func,\n onViewChange: PropTypes.func,\n prev2AriaLabel: PropTypes.string,\n prev2Label: PropTypes.node,\n prevAriaLabel: PropTypes.string,\n prevLabel: PropTypes.node,\n returnValue: PropTypes.oneOf(['start', 'end', 'range']),\n selectRange: PropTypes.bool,\n showDoubleView: PropTypes.bool,\n showFixedNumberOfWeeks: PropTypes.bool,\n showNavigation: PropTypes.bool,\n showNeighboringMonth: PropTypes.bool,\n showWeekNumbers: PropTypes.bool,\n tileClassName: PropTypes.oneOfType([PropTypes.func, isClassName]),\n tileContent: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n tileDisabled: PropTypes.func,\n value: isLooseValue,\n view: isView\n};","import Calendar from './Calendar';\nimport Navigation from './Calendar/Navigation';\nimport CenturyView from './CenturyView';\nimport DecadeView from './DecadeView';\nimport YearView from './YearView';\nimport MonthView from './MonthView';\nexport default Calendar;\nexport { Calendar, Navigation, CenturyView, DecadeView, YearView, MonthView };","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\nvar _react = _interopRequireWildcard(require(\"react\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _dateUtils = require(\"@wojtekmaj/date-utils\");\nvar _Divider = _interopRequireDefault(require(\"./Divider\"));\nvar _DayInput = _interopRequireDefault(require(\"./DateInput/DayInput\"));\nvar _MonthInput = _interopRequireDefault(require(\"./DateInput/MonthInput\"));\nvar _MonthSelect = _interopRequireDefault(require(\"./DateInput/MonthSelect\"));\nvar _YearInput = _interopRequireDefault(require(\"./DateInput/YearInput\"));\nvar _NativeInput = _interopRequireDefault(require(\"./DateInput/NativeInput\"));\nvar _dateFormatter = require(\"./shared/dateFormatter\");\nvar _dates = require(\"./shared/dates\");\nvar _propTypes2 = require(\"./shared/propTypes\");\nvar _utils = require(\"./shared/utils\");\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nvar getFormatterOptionsCache = {};\nvar defaultMinDate = new Date();\ndefaultMinDate.setFullYear(1, 0, 1);\ndefaultMinDate.setHours(0, 0, 0, 0);\nvar defaultMaxDate = new Date(8.64e15);\nvar allViews = ['century', 'decade', 'year', 'month'];\nvar allValueTypes = [].concat(_toConsumableArray(allViews.slice(1)), ['day']);\nfunction toDate(value) {\n if (value instanceof Date) {\n return value;\n }\n return new Date(value);\n}\nfunction datesAreDifferent(date1, date2) {\n return date1 && !date2 || !date1 && date2 || date1 && date2 && date1.getTime() !== date2.getTime();\n}\n\n/**\n * Returns value type that can be returned with currently applied settings.\n */\nfunction getValueType(maxDetail) {\n return allValueTypes[allViews.indexOf(maxDetail)];\n}\nfunction getValue(value, index) {\n if (!value) {\n return null;\n }\n var rawValue = Array.isArray(value) && value.length === 2 ? value[index] : value;\n if (!rawValue) {\n return null;\n }\n var valueDate = toDate(rawValue);\n if (isNaN(valueDate.getTime())) {\n throw new Error(\"Invalid date: \".concat(value));\n }\n return valueDate;\n}\nfunction getDetailValue(_ref, index) {\n var value = _ref.value,\n minDate = _ref.minDate,\n maxDate = _ref.maxDate,\n maxDetail = _ref.maxDetail;\n var valuePiece = getValue(value, index);\n if (!valuePiece) {\n return null;\n }\n var valueType = getValueType(maxDetail);\n var detailValueFrom = [_dates.getBegin, _dates.getEnd][index](valueType, valuePiece);\n return (0, _utils.between)(detailValueFrom, minDate, maxDate);\n}\nvar getDetailValueFrom = function getDetailValueFrom(args) {\n return getDetailValue(args, 0);\n};\nvar getDetailValueTo = function getDetailValueTo(args) {\n return getDetailValue(args, 1);\n};\nvar getDetailValueArray = function getDetailValueArray(args) {\n var value = args.value;\n if (Array.isArray(value)) {\n return value;\n }\n return [getDetailValueFrom, getDetailValueTo].map(function (fn) {\n return fn(args);\n });\n};\nfunction isInternalInput(element) {\n return element.dataset.input === 'true';\n}\nfunction findInput(element, property) {\n var nextElement = element;\n do {\n nextElement = nextElement[property];\n } while (nextElement && !isInternalInput(nextElement));\n return nextElement;\n}\nfunction focus(element) {\n if (element) {\n element.focus();\n }\n}\nfunction _renderCustomInputs(placeholder, elementFunctions, allowMultipleInstances) {\n var usedFunctions = [];\n var pattern = new RegExp(Object.keys(elementFunctions).map(function (el) {\n return \"\".concat(el, \"+\");\n }).join('|'), 'g');\n var matches = placeholder.match(pattern);\n return placeholder.split(pattern).reduce(function (arr, element, index) {\n var divider = element &&\n /*#__PURE__*/\n // eslint-disable-next-line react/no-array-index-key\n _react[\"default\"].createElement(_Divider[\"default\"], {\n key: \"separator_\".concat(index)\n }, element);\n var res = [].concat(_toConsumableArray(arr), [divider]);\n var currentMatch = matches && matches[index];\n if (currentMatch) {\n var renderFunction = elementFunctions[currentMatch] || elementFunctions[Object.keys(elementFunctions).find(function (elementFunction) {\n return currentMatch.match(elementFunction);\n })];\n if (!allowMultipleInstances && usedFunctions.includes(renderFunction)) {\n res.push(currentMatch);\n } else {\n res.push(renderFunction(currentMatch, index));\n usedFunctions.push(renderFunction);\n }\n }\n return res;\n }, []);\n}\nvar DateInput = /*#__PURE__*/function (_PureComponent) {\n _inherits(DateInput, _PureComponent);\n var _super = _createSuper(DateInput);\n function DateInput() {\n var _this;\n _classCallCheck(this, DateInput);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n year: null,\n month: null,\n day: null\n });\n _defineProperty(_assertThisInitialized(_this), \"dayInput\", /*#__PURE__*/(0, _react.createRef)());\n _defineProperty(_assertThisInitialized(_this), \"monthInput\", /*#__PURE__*/(0, _react.createRef)());\n _defineProperty(_assertThisInitialized(_this), \"yearInput\", /*#__PURE__*/(0, _react.createRef)());\n _defineProperty(_assertThisInitialized(_this), \"onClick\", function (event) {\n if (event.target === event.currentTarget) {\n // Wrapper was directly clicked\n var firstInput = event.target.children[1];\n focus(firstInput);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"onKeyDown\", function (event) {\n switch (event.key) {\n case 'ArrowLeft':\n case 'ArrowRight':\n case _this.divider:\n {\n event.preventDefault();\n var input = event.target;\n var property = event.key === 'ArrowLeft' ? 'previousElementSibling' : 'nextElementSibling';\n var nextInput = findInput(input, property);\n focus(nextInput);\n break;\n }\n default:\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"onKeyUp\", function (event) {\n var key = event.key,\n input = event.target;\n var isNumberKey = !isNaN(parseInt(key, 10));\n if (!isNumberKey) {\n return;\n }\n var value = input.value;\n var max = input.getAttribute('max');\n\n /**\n * Given 1, the smallest possible number the user could type by adding another digit is 10.\n * 10 would be a valid value given max = 12, so we won't jump to the next input.\n * However, given 2, smallers possible number would be 20, and thus keeping the focus in\n * this field doesn't make sense.\n */\n if (value * 10 > max || value.length >= max.length) {\n var property = 'nextElementSibling';\n var nextInput = findInput(input, property);\n focus(nextInput);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"onChange\", function (event) {\n var _event$target = event.target,\n name = _event$target.name,\n value = _event$target.value;\n _this.setState(_defineProperty({}, name, value), _this.onChangeExternal);\n });\n _defineProperty(_assertThisInitialized(_this), \"onChangeNative\", function (event) {\n var onChange = _this.props.onChange;\n var value = event.target.value;\n if (!onChange) {\n return;\n }\n var processedValue = function () {\n if (!value) {\n return null;\n }\n var _value$split = value.split('-'),\n _value$split2 = _slicedToArray(_value$split, 3),\n yearString = _value$split2[0],\n monthString = _value$split2[1],\n dayString = _value$split2[2];\n var year = parseInt(yearString, 10);\n var monthIndex = parseInt(monthString, 10) - 1 || 0;\n var day = parseInt(dayString, 10) || 1;\n var proposedValue = new Date();\n proposedValue.setFullYear(year, monthIndex, day);\n proposedValue.setHours(0, 0, 0, 0);\n return proposedValue;\n }();\n onChange(processedValue, false);\n });\n _defineProperty(_assertThisInitialized(_this), \"onChangeExternal\", function () {\n var onChange = _this.props.onChange;\n if (!onChange) {\n return;\n }\n var formElements = [_this.dayInput.current, _this.monthInput.current, _this.yearInput.current].filter(Boolean);\n var values = {};\n formElements.forEach(function (formElement) {\n values[formElement.name] = formElement.value;\n });\n if (formElements.every(function (formElement) {\n return !formElement.value;\n })) {\n onChange(null, false);\n } else if (formElements.every(function (formElement) {\n return formElement.value && formElement.validity.valid;\n })) {\n var year = parseInt(values.year, 10) || new Date().getFullYear();\n var monthIndex = parseInt(values.month || 1, 10) - 1;\n var day = parseInt(values.day || 1, 10);\n var proposedValue = new Date();\n proposedValue.setFullYear(year, monthIndex, day);\n proposedValue.setHours(0, 0, 0, 0);\n var processedValue = _this.getProcessedValue(proposedValue);\n onChange(processedValue, false);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"renderDay\", function (currentMatch, index) {\n var _this$props = _this.props,\n autoFocus = _this$props.autoFocus,\n dayAriaLabel = _this$props.dayAriaLabel,\n dayPlaceholder = _this$props.dayPlaceholder,\n showLeadingZeros = _this$props.showLeadingZeros;\n var _this$state = _this.state,\n day = _this$state.day,\n month = _this$state.month,\n year = _this$state.year;\n if (currentMatch && currentMatch.length > 2) {\n throw new Error(\"Unsupported token: \".concat(currentMatch));\n }\n var showLeadingZerosFromFormat = currentMatch && currentMatch.length === 2;\n return /*#__PURE__*/_react[\"default\"].createElement(_DayInput[\"default\"], _extends({\n key: \"day\"\n }, _this.commonInputProps, {\n ariaLabel: dayAriaLabel\n // eslint-disable-next-line jsx-a11y/no-autofocus\n ,\n autoFocus: index === 0 && autoFocus,\n inputRef: _this.dayInput,\n month: month,\n placeholder: dayPlaceholder,\n showLeadingZeros: showLeadingZerosFromFormat || showLeadingZeros,\n value: day,\n year: year\n }));\n });\n _defineProperty(_assertThisInitialized(_this), \"renderMonth\", function (currentMatch, index) {\n var _this$props2 = _this.props,\n autoFocus = _this$props2.autoFocus,\n locale = _this$props2.locale,\n monthAriaLabel = _this$props2.monthAriaLabel,\n monthPlaceholder = _this$props2.monthPlaceholder,\n showLeadingZeros = _this$props2.showLeadingZeros;\n var _this$state2 = _this.state,\n month = _this$state2.month,\n year = _this$state2.year;\n if (currentMatch && currentMatch.length > 4) {\n throw new Error(\"Unsupported token: \".concat(currentMatch));\n }\n if (currentMatch.length > 2) {\n return /*#__PURE__*/_react[\"default\"].createElement(_MonthSelect[\"default\"], _extends({\n key: \"month\"\n }, _this.commonInputProps, {\n ariaLabel: monthAriaLabel\n // eslint-disable-next-line jsx-a11y/no-autofocus\n ,\n autoFocus: index === 0 && autoFocus,\n inputRef: _this.monthInput,\n locale: locale,\n placeholder: monthPlaceholder,\n \"short\": currentMatch.length === 3,\n value: month,\n year: year\n }));\n }\n var showLeadingZerosFromFormat = currentMatch && currentMatch.length === 2;\n return /*#__PURE__*/_react[\"default\"].createElement(_MonthInput[\"default\"], _extends({\n key: \"month\"\n }, _this.commonInputProps, {\n ariaLabel: monthAriaLabel\n // eslint-disable-next-line jsx-a11y/no-autofocus\n ,\n autoFocus: index === 0 && autoFocus,\n inputRef: _this.monthInput,\n placeholder: monthPlaceholder,\n showLeadingZeros: showLeadingZerosFromFormat || showLeadingZeros,\n value: month,\n year: year\n }));\n });\n _defineProperty(_assertThisInitialized(_this), \"renderYear\", function (currentMatch, index) {\n var _this$props3 = _this.props,\n autoFocus = _this$props3.autoFocus,\n yearAriaLabel = _this$props3.yearAriaLabel,\n yearPlaceholder = _this$props3.yearPlaceholder;\n var year = _this.state.year;\n return /*#__PURE__*/_react[\"default\"].createElement(_YearInput[\"default\"], _extends({\n key: \"year\"\n }, _this.commonInputProps, {\n ariaLabel: yearAriaLabel\n // eslint-disable-next-line jsx-a11y/no-autofocus\n ,\n autoFocus: index === 0 && autoFocus,\n inputRef: _this.yearInput,\n placeholder: yearPlaceholder,\n value: year,\n valueType: _this.valueType\n }));\n });\n return _this;\n }\n _createClass(DateInput, [{\n key: \"formatDate\",\n get: function get() {\n var maxDetail = this.props.maxDetail;\n var level = allViews.indexOf(maxDetail);\n var formatterOptions = getFormatterOptionsCache[level] || function () {\n var options = {\n year: 'numeric'\n };\n if (level >= 2) {\n options.month = 'numeric';\n }\n if (level >= 3) {\n options.day = 'numeric';\n }\n getFormatterOptionsCache[level] = options;\n return options;\n }();\n return (0, _dateFormatter.getFormatter)(formatterOptions);\n }\n\n /**\n * Gets current value in a desired format.\n */\n }, {\n key: \"getProcessedValue\",\n value: function getProcessedValue(value) {\n var _this$props4 = this.props,\n minDate = _this$props4.minDate,\n maxDate = _this$props4.maxDate,\n maxDetail = _this$props4.maxDetail,\n returnValue = _this$props4.returnValue;\n var processFunction = function () {\n switch (returnValue) {\n case 'start':\n return getDetailValueFrom;\n case 'end':\n return getDetailValueTo;\n case 'range':\n return getDetailValueArray;\n default:\n throw new Error('Invalid returnValue.');\n }\n }();\n return processFunction({\n value: value,\n minDate: minDate,\n maxDate: maxDate,\n maxDetail: maxDetail\n });\n }\n }, {\n key: \"divider\",\n get: function get() {\n var dividers = this.placeholder.match(/[^0-9a-z]/i);\n return dividers ? dividers[0] : null;\n }\n }, {\n key: \"placeholder\",\n get: function get() {\n var _this$props5 = this.props,\n format = _this$props5.format,\n locale = _this$props5.locale;\n if (format) {\n return format;\n }\n var year = 2017;\n var monthIndex = 11;\n var day = 11;\n var date = new Date(year, monthIndex, day);\n var formattedDate = this.formatDate(locale, date);\n var datePieces = ['year', 'month', 'day'];\n var datePieceReplacements = ['y', 'M', 'd'];\n function formatDatePiece(name, dateToFormat) {\n var formatterOptions = getFormatterOptionsCache[name] || function () {\n var options = _defineProperty({\n useGrouping: false\n }, name, 'numeric');\n getFormatterOptionsCache[name] = options;\n return options;\n }();\n return (0, _dateFormatter.getFormatter)(formatterOptions)(locale, dateToFormat).match(/\\d{1,}/);\n }\n var placeholder = formattedDate;\n datePieces.forEach(function (datePiece, index) {\n var formattedDatePiece = formatDatePiece(datePiece, date);\n var datePieceReplacement = datePieceReplacements[index];\n placeholder = placeholder.replace(formattedDatePiece, datePieceReplacement);\n });\n // See: https://github.com/wojtekmaj/react-date-picker/issues/396\n placeholder = placeholder.replace('17', 'y');\n return placeholder;\n }\n }, {\n key: \"commonInputProps\",\n get: function get() {\n var _this$props6 = this.props,\n className = _this$props6.className,\n disabled = _this$props6.disabled,\n isCalendarOpen = _this$props6.isCalendarOpen,\n maxDate = _this$props6.maxDate,\n minDate = _this$props6.minDate,\n required = _this$props6.required;\n return {\n className: className,\n disabled: disabled,\n maxDate: maxDate || defaultMaxDate,\n minDate: minDate || defaultMinDate,\n onChange: this.onChange,\n onKeyDown: this.onKeyDown,\n onKeyUp: this.onKeyUp,\n // This is only for showing validity when editing\n required: required || isCalendarOpen\n };\n }\n }, {\n key: \"valueType\",\n get: function get() {\n var maxDetail = this.props.maxDetail;\n return getValueType(maxDetail);\n }\n }, {\n key: \"renderCustomInputs\",\n value: function renderCustomInputs() {\n var placeholder = this.placeholder;\n var format = this.props.format;\n var elementFunctions = {\n d: this.renderDay,\n M: this.renderMonth,\n y: this.renderYear\n };\n var allowMultipleInstances = typeof format !== 'undefined';\n return _renderCustomInputs(placeholder, elementFunctions, allowMultipleInstances);\n }\n }, {\n key: \"renderNativeInput\",\n value: function renderNativeInput() {\n var _this$props7 = this.props,\n disabled = _this$props7.disabled,\n maxDate = _this$props7.maxDate,\n minDate = _this$props7.minDate,\n name = _this$props7.name,\n nativeInputAriaLabel = _this$props7.nativeInputAriaLabel,\n required = _this$props7.required;\n var value = this.state.value;\n return /*#__PURE__*/_react[\"default\"].createElement(_NativeInput[\"default\"], {\n key: \"date\",\n ariaLabel: nativeInputAriaLabel,\n disabled: disabled,\n maxDate: maxDate || defaultMaxDate,\n minDate: minDate || defaultMinDate,\n name: name,\n onChange: this.onChangeNative,\n required: required,\n value: value,\n valueType: this.valueType\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var className = this.props.className;\n return (\n /*#__PURE__*/\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions\n _react[\"default\"].createElement(\"div\", {\n className: className,\n onClick: this.onClick\n }, this.renderNativeInput(), this.renderCustomInputs())\n );\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n var minDate = nextProps.minDate,\n maxDate = nextProps.maxDate,\n maxDetail = nextProps.maxDetail;\n var nextState = {};\n\n /**\n * If isCalendarOpen flag has changed, we have to update it.\n * It's saved in state purely for use in getDerivedStateFromProps.\n */\n if (nextProps.isCalendarOpen !== prevState.isCalendarOpen) {\n nextState.isCalendarOpen = nextProps.isCalendarOpen;\n }\n\n /**\n * If the next value is different from the current one (with an exception of situation in\n * which values provided are limited by minDate and maxDate so that the dates are the same),\n * get a new one.\n */\n var nextValue = getDetailValueFrom({\n value: nextProps.value,\n minDate: minDate,\n maxDate: maxDate,\n maxDetail: maxDetail\n });\n var values = [nextValue, prevState.value];\n if (\n // Toggling calendar visibility resets values\n nextState.isCalendarOpen ||\n // Flag was toggled\n datesAreDifferent.apply(void 0, _toConsumableArray(values.map(function (value) {\n return getDetailValueFrom({\n value: value,\n minDate: minDate,\n maxDate: maxDate,\n maxDetail: maxDetail\n });\n }))) || datesAreDifferent.apply(void 0, _toConsumableArray(values.map(function (value) {\n return getDetailValueTo({\n value: value,\n minDate: minDate,\n maxDate: maxDate,\n maxDetail: maxDetail\n });\n })))) {\n if (nextValue) {\n nextState.year = (0, _dateUtils.getYear)(nextValue).toString();\n nextState.month = (0, _dateUtils.getMonthHuman)(nextValue).toString();\n nextState.day = (0, _dateUtils.getDate)(nextValue).toString();\n } else {\n nextState.year = null;\n nextState.month = null;\n nextState.day = null;\n }\n nextState.value = nextValue;\n }\n return nextState;\n }\n }]);\n return DateInput;\n}(_react.PureComponent);\nexports[\"default\"] = DateInput;\nDateInput.defaultProps = {\n maxDetail: 'month',\n name: 'date',\n returnValue: 'start'\n};\nvar isValue = _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].instanceOf(Date)]);\nDateInput.propTypes = {\n autoFocus: _propTypes[\"default\"].bool,\n className: _propTypes[\"default\"].string.isRequired,\n dayAriaLabel: _propTypes[\"default\"].string,\n dayPlaceholder: _propTypes[\"default\"].string,\n disabled: _propTypes[\"default\"].bool,\n format: _propTypes[\"default\"].string,\n isCalendarOpen: _propTypes[\"default\"].bool,\n locale: _propTypes[\"default\"].string,\n maxDate: _propTypes2.isMaxDate,\n maxDetail: _propTypes[\"default\"].oneOf(allViews),\n minDate: _propTypes2.isMinDate,\n monthAriaLabel: _propTypes[\"default\"].string,\n monthPlaceholder: _propTypes[\"default\"].string,\n name: _propTypes[\"default\"].string,\n nativeInputAriaLabel: _propTypes[\"default\"].string,\n onChange: _propTypes[\"default\"].func,\n required: _propTypes[\"default\"].bool,\n returnValue: _propTypes[\"default\"].oneOf(['start', 'end', 'range']),\n showLeadingZeros: _propTypes[\"default\"].bool,\n value: _propTypes[\"default\"].oneOfType([isValue, _propTypes[\"default\"].arrayOf(isValue)]),\n yearAriaLabel: _propTypes[\"default\"].string,\n yearPlaceholder: _propTypes[\"default\"].string\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = DayInput;\nvar _react = _interopRequireDefault(require(\"react\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _dateUtils = require(\"@wojtekmaj/date-utils\");\nvar _Input = _interopRequireDefault(require(\"./Input\"));\nvar _propTypes2 = require(\"../shared/propTypes\");\nvar _utils = require(\"../shared/utils\");\nvar _excluded = [\"maxDate\", \"minDate\", \"month\", \"year\"];\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction DayInput(_ref) {\n var maxDate = _ref.maxDate,\n minDate = _ref.minDate,\n month = _ref.month,\n year = _ref.year,\n otherProps = _objectWithoutProperties(_ref, _excluded);\n var currentMonthMaxDays = function () {\n if (!month) {\n return 31;\n }\n return (0, _dateUtils.getDaysInMonth)(new Date(year, month - 1, 1));\n }();\n function isSameMonth(date) {\n return date && year === (0, _dateUtils.getYear)(date).toString() && month === (0, _dateUtils.getMonthHuman)(date).toString();\n }\n var maxDay = (0, _utils.safeMin)(currentMonthMaxDays, isSameMonth(maxDate) && (0, _dateUtils.getDate)(maxDate));\n var minDay = (0, _utils.safeMax)(1, isSameMonth(minDate) && (0, _dateUtils.getDate)(minDate));\n return /*#__PURE__*/_react[\"default\"].createElement(_Input[\"default\"], _extends({\n max: maxDay,\n min: minDay,\n name: \"day\"\n }, otherProps));\n}\nDayInput.propTypes = {\n ariaLabel: _propTypes[\"default\"].string,\n className: _propTypes[\"default\"].string.isRequired,\n disabled: _propTypes[\"default\"].bool,\n inputRef: _propTypes2.isRef,\n maxDate: _propTypes2.isMaxDate,\n minDate: _propTypes2.isMinDate,\n month: _propTypes[\"default\"].string,\n onChange: _propTypes[\"default\"].func,\n onKeyDown: _propTypes[\"default\"].func,\n onKeyUp: _propTypes[\"default\"].func,\n placeholder: _propTypes[\"default\"].string,\n required: _propTypes[\"default\"].bool,\n showLeadingZeros: _propTypes[\"default\"].bool,\n value: _propTypes[\"default\"].string,\n year: _propTypes[\"default\"].string\n};","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = Input;\nvar _react = _interopRequireWildcard(require(\"react\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _clsx = _interopRequireDefault(require(\"clsx\"));\nvar _updateInputWidth = _interopRequireWildcard(require(\"update-input-width\"));\nvar _propTypes2 = require(\"../shared/propTypes\");\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n/* eslint-disable jsx-a11y/no-autofocus */\n\nvar isBrowser = typeof document !== 'undefined';\nvar useIsomorphicLayoutEffect = isBrowser ? _react.useLayoutEffect : _react.useEffect;\nvar isIEOrEdgeLegacy = isBrowser && /(MSIE|Trident\\/|Edge\\/)/.test(navigator.userAgent);\nvar isFirefox = isBrowser && /Firefox/.test(navigator.userAgent);\nfunction onFocus(event) {\n var target = event.target;\n if (isIEOrEdgeLegacy) {\n requestAnimationFrame(function () {\n return target.select();\n });\n } else {\n target.select();\n }\n}\nfunction updateInputWidthOnLoad(element) {\n if (document.readyState === 'complete') {\n return;\n }\n function onLoad() {\n (0, _updateInputWidth[\"default\"])(element);\n }\n window.addEventListener('load', onLoad);\n}\nfunction updateInputWidthOnFontLoad(element) {\n if (!document.fonts) {\n return;\n }\n var font = (0, _updateInputWidth.getFontShorthand)(element);\n if (!font) {\n return;\n }\n var isFontLoaded = document.fonts.check(font);\n if (isFontLoaded) {\n return;\n }\n function onLoadingDone() {\n (0, _updateInputWidth[\"default\"])(element);\n }\n document.fonts.addEventListener('loadingdone', onLoadingDone);\n}\nfunction getSelectionString(input) {\n /**\n * window.getSelection().toString() returns empty string in IE11 and Firefox,\n * so alternatives come first.\n */\n if (input && 'selectionStart' in input && input.selectionStart !== null) {\n return input.value.slice(input.selectionStart, input.selectionEnd);\n }\n if ('getSelection' in window) {\n return window.getSelection().toString();\n }\n return null;\n}\nfunction makeOnKeyPress(maxLength) {\n /**\n * Prevents keystrokes that would not produce a number or when value after keystroke would\n * exceed maxLength.\n */\n return function onKeyPress(event) {\n if (isFirefox) {\n // See https://github.com/wojtekmaj/react-time-picker/issues/92\n return;\n }\n var key = event.key,\n input = event.target;\n var value = input.value;\n var isNumberKey = key.length === 1 && /\\d/.test(key);\n var selection = getSelectionString(input);\n if (!isNumberKey || !(selection || value.length < maxLength)) {\n event.preventDefault();\n }\n };\n}\nfunction Input(_ref) {\n var ariaLabel = _ref.ariaLabel,\n autoFocus = _ref.autoFocus,\n className = _ref.className,\n disabled = _ref.disabled,\n inputRef = _ref.inputRef,\n max = _ref.max,\n min = _ref.min,\n name = _ref.name,\n nameForClass = _ref.nameForClass,\n onChange = _ref.onChange,\n onKeyDown = _ref.onKeyDown,\n _onKeyUp = _ref.onKeyUp,\n _ref$placeholder = _ref.placeholder,\n placeholder = _ref$placeholder === void 0 ? '--' : _ref$placeholder,\n required = _ref.required,\n showLeadingZeros = _ref.showLeadingZeros,\n step = _ref.step,\n value = _ref.value;\n useIsomorphicLayoutEffect(function () {\n if (!inputRef || !inputRef.current) {\n return;\n }\n (0, _updateInputWidth[\"default\"])(inputRef.current);\n updateInputWidthOnLoad(inputRef.current);\n updateInputWidthOnFontLoad(inputRef.current);\n }, [inputRef, value]);\n var hasLeadingZero = showLeadingZeros && value && value < 10 && (value === '0' || !value.toString().startsWith('0'));\n var maxLength = max ? max.toString().length : null;\n return [hasLeadingZero && /*#__PURE__*/_react[\"default\"].createElement(\"span\", {\n key: \"leadingZero\",\n className: \"\".concat(className, \"__leadingZero\")\n }, \"0\"), /*#__PURE__*/_react[\"default\"].createElement(\"input\", {\n key: \"input\",\n \"aria-label\": ariaLabel,\n autoComplete: \"off\",\n autoFocus: autoFocus,\n className: (0, _clsx[\"default\"])(\"\".concat(className, \"__input\"), \"\".concat(className, \"__\").concat(nameForClass || name), hasLeadingZero && \"\".concat(className, \"__input--hasLeadingZero\")),\n \"data-input\": \"true\",\n disabled: disabled,\n inputMode: \"numeric\",\n max: max,\n min: min,\n name: name,\n onChange: onChange,\n onFocus: onFocus,\n onKeyDown: onKeyDown,\n onKeyPress: makeOnKeyPress(maxLength),\n onKeyUp: function onKeyUp(event) {\n (0, _updateInputWidth[\"default\"])(event.target);\n if (_onKeyUp) {\n _onKeyUp(event);\n }\n },\n placeholder: placeholder,\n ref: inputRef,\n required: required,\n step: step,\n type: \"number\",\n value: value !== null ? value : ''\n })];\n}\nInput.propTypes = {\n ariaLabel: _propTypes[\"default\"].string,\n autoFocus: _propTypes[\"default\"].bool,\n className: _propTypes[\"default\"].string.isRequired,\n disabled: _propTypes[\"default\"].bool,\n inputRef: _propTypes2.isRef,\n max: _propTypes[\"default\"].number,\n min: _propTypes[\"default\"].number,\n name: _propTypes[\"default\"].string,\n nameForClass: _propTypes[\"default\"].string,\n onChange: _propTypes[\"default\"].func,\n onKeyDown: _propTypes[\"default\"].func,\n onKeyUp: _propTypes[\"default\"].func,\n placeholder: _propTypes[\"default\"].string,\n required: _propTypes[\"default\"].bool,\n showLeadingZeros: _propTypes[\"default\"].bool,\n step: _propTypes[\"default\"].number,\n value: _propTypes[\"default\"].string\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = MonthInput;\nvar _react = _interopRequireDefault(require(\"react\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _dateUtils = require(\"@wojtekmaj/date-utils\");\nvar _Input = _interopRequireDefault(require(\"./Input\"));\nvar _propTypes2 = require(\"../shared/propTypes\");\nvar _utils = require(\"../shared/utils\");\nvar _excluded = [\"maxDate\", \"minDate\", \"year\"];\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction MonthInput(_ref) {\n var maxDate = _ref.maxDate,\n minDate = _ref.minDate,\n year = _ref.year,\n otherProps = _objectWithoutProperties(_ref, _excluded);\n function isSameYear(date) {\n return date && year === (0, _dateUtils.getYear)(date).toString();\n }\n var maxMonth = (0, _utils.safeMin)(12, isSameYear(maxDate) && (0, _dateUtils.getMonthHuman)(maxDate));\n var minMonth = (0, _utils.safeMax)(1, isSameYear(minDate) && (0, _dateUtils.getMonthHuman)(minDate));\n return /*#__PURE__*/_react[\"default\"].createElement(_Input[\"default\"], _extends({\n max: maxMonth,\n min: minMonth,\n name: \"month\"\n }, otherProps));\n}\nMonthInput.propTypes = {\n ariaLabel: _propTypes[\"default\"].string,\n className: _propTypes[\"default\"].string.isRequired,\n disabled: _propTypes[\"default\"].bool,\n inputRef: _propTypes2.isRef,\n maxDate: _propTypes2.isMaxDate,\n minDate: _propTypes2.isMinDate,\n onChange: _propTypes[\"default\"].func,\n onKeyDown: _propTypes[\"default\"].func,\n onKeyUp: _propTypes[\"default\"].func,\n placeholder: _propTypes[\"default\"].string,\n required: _propTypes[\"default\"].bool,\n showLeadingZeros: _propTypes[\"default\"].bool,\n value: _propTypes[\"default\"].string,\n year: _propTypes[\"default\"].string\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = MonthSelect;\nvar _react = _interopRequireDefault(require(\"react\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _clsx = _interopRequireDefault(require(\"clsx\"));\nvar _dateUtils = require(\"@wojtekmaj/date-utils\");\nvar _dateFormatter = require(\"../shared/dateFormatter\");\nvar _propTypes2 = require(\"../shared/propTypes\");\nvar _utils = require(\"../shared/utils\");\nvar _excluded = [\"ariaLabel\", \"className\", \"inputRef\", \"locale\", \"maxDate\", \"minDate\", \"placeholder\", \"short\", \"value\", \"year\"];\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction MonthSelect(_ref) {\n var ariaLabel = _ref.ariaLabel,\n className = _ref.className,\n inputRef = _ref.inputRef,\n locale = _ref.locale,\n maxDate = _ref.maxDate,\n minDate = _ref.minDate,\n _ref$placeholder = _ref.placeholder,\n placeholder = _ref$placeholder === void 0 ? '--' : _ref$placeholder,\n _short = _ref[\"short\"],\n value = _ref.value,\n year = _ref.year,\n otherProps = _objectWithoutProperties(_ref, _excluded);\n function isSameYear(date) {\n return date && year === (0, _dateUtils.getYear)(date).toString();\n }\n var maxMonth = (0, _utils.safeMin)(12, isSameYear(maxDate) && (0, _dateUtils.getMonthHuman)(maxDate));\n var minMonth = (0, _utils.safeMax)(1, isSameYear(minDate) && (0, _dateUtils.getMonthHuman)(minDate));\n var dates = _toConsumableArray(Array(12)).map(function (el, index) {\n return new Date(2019, index, 1);\n });\n var name = 'month';\n var formatter = _short ? _dateFormatter.formatShortMonth : _dateFormatter.formatMonth;\n return /*#__PURE__*/_react[\"default\"].createElement(\"select\", _extends({\n \"aria-label\": ariaLabel,\n className: (0, _clsx[\"default\"])(\"\".concat(className, \"__input\"), \"\".concat(className, \"__\").concat(name)),\n \"data-input\": \"true\",\n \"data-select\": \"true\",\n name: name,\n ref: inputRef,\n value: value !== null ? value : ''\n }, otherProps), !value && /*#__PURE__*/_react[\"default\"].createElement(\"option\", {\n value: \"\"\n }, placeholder), dates.map(function (date) {\n var month = (0, _dateUtils.getMonthHuman)(date);\n var disabled = month < minMonth || month > maxMonth;\n return /*#__PURE__*/_react[\"default\"].createElement(\"option\", {\n key: month,\n disabled: disabled,\n value: month\n }, formatter(locale, date));\n }));\n}\nMonthSelect.propTypes = {\n ariaLabel: _propTypes[\"default\"].string,\n className: _propTypes[\"default\"].string.isRequired,\n disabled: _propTypes[\"default\"].bool,\n inputRef: _propTypes2.isRef,\n locale: _propTypes[\"default\"].string,\n maxDate: _propTypes2.isMaxDate,\n minDate: _propTypes2.isMinDate,\n onChange: _propTypes[\"default\"].func,\n onKeyDown: _propTypes[\"default\"].func,\n onKeyUp: _propTypes[\"default\"].func,\n placeholder: _propTypes[\"default\"].string,\n required: _propTypes[\"default\"].bool,\n \"short\": _propTypes[\"default\"].bool,\n value: _propTypes[\"default\"].string,\n year: _propTypes[\"default\"].string\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = NativeInput;\nvar _react = _interopRequireDefault(require(\"react\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _dateUtils = require(\"@wojtekmaj/date-utils\");\nvar _propTypes2 = require(\"../shared/propTypes\");\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\nfunction NativeInput(_ref) {\n var ariaLabel = _ref.ariaLabel,\n disabled = _ref.disabled,\n maxDate = _ref.maxDate,\n minDate = _ref.minDate,\n name = _ref.name,\n onChange = _ref.onChange,\n required = _ref.required,\n value = _ref.value,\n valueType = _ref.valueType;\n var nativeInputType = function () {\n switch (valueType) {\n case 'decade':\n case 'year':\n return 'number';\n case 'month':\n return 'month';\n case 'day':\n return 'date';\n default:\n throw new Error('Invalid valueType.');\n }\n }();\n var nativeValueParser = function () {\n switch (valueType) {\n case 'century':\n case 'decade':\n case 'year':\n return _dateUtils.getYear;\n case 'month':\n return _dateUtils.getISOLocalMonth;\n case 'day':\n return _dateUtils.getISOLocalDate;\n default:\n throw new Error('Invalid valueType.');\n }\n }();\n function stopPropagation(event) {\n event.stopPropagation();\n }\n return /*#__PURE__*/_react[\"default\"].createElement(\"input\", {\n \"aria-label\": ariaLabel,\n disabled: disabled,\n hidden: true,\n max: maxDate ? nativeValueParser(maxDate) : null,\n min: minDate ? nativeValueParser(minDate) : null,\n name: name,\n onChange: onChange,\n onFocus: stopPropagation,\n required: required,\n style: {\n visibility: 'hidden',\n position: 'absolute',\n zIndex: '-999'\n },\n type: nativeInputType,\n value: value ? nativeValueParser(value) : ''\n });\n}\nNativeInput.propTypes = {\n ariaLabel: _propTypes[\"default\"].string,\n disabled: _propTypes[\"default\"].bool,\n maxDate: _propTypes2.isMaxDate,\n minDate: _propTypes2.isMinDate,\n name: _propTypes[\"default\"].string,\n onChange: _propTypes[\"default\"].func,\n required: _propTypes[\"default\"].bool,\n value: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].instanceOf(Date)]),\n valueType: _propTypes2.isValueType\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = YearInput;\nvar _react = _interopRequireDefault(require(\"react\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _dateUtils = require(\"@wojtekmaj/date-utils\");\nvar _Input = _interopRequireDefault(require(\"./Input\"));\nvar _propTypes2 = require(\"../shared/propTypes\");\nvar _utils = require(\"../shared/utils\");\nvar _excluded = [\"maxDate\", \"minDate\", \"placeholder\", \"valueType\"];\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction YearInput(_ref) {\n var maxDate = _ref.maxDate,\n minDate = _ref.minDate,\n _ref$placeholder = _ref.placeholder,\n placeholder = _ref$placeholder === void 0 ? '----' : _ref$placeholder,\n valueType = _ref.valueType,\n otherProps = _objectWithoutProperties(_ref, _excluded);\n var maxYear = (0, _utils.safeMin)(275760, maxDate && (0, _dateUtils.getYear)(maxDate));\n var minYear = (0, _utils.safeMax)(1, minDate && (0, _dateUtils.getYear)(minDate));\n var yearStep = function () {\n if (valueType === 'century') {\n return 10;\n }\n return 1;\n }();\n return /*#__PURE__*/_react[\"default\"].createElement(_Input[\"default\"], _extends({\n max: maxYear,\n min: minYear,\n name: \"year\",\n placeholder: placeholder,\n step: yearStep\n }, otherProps));\n}\nYearInput.propTypes = {\n ariaLabel: _propTypes[\"default\"].string,\n className: _propTypes[\"default\"].string.isRequired,\n disabled: _propTypes[\"default\"].bool,\n inputRef: _propTypes2.isRef,\n maxDate: _propTypes2.isMaxDate,\n minDate: _propTypes2.isMinDate,\n onChange: _propTypes[\"default\"].func,\n onKeyDown: _propTypes[\"default\"].func,\n onKeyUp: _propTypes[\"default\"].func,\n placeholder: _propTypes[\"default\"].string,\n required: _propTypes[\"default\"].bool,\n value: _propTypes[\"default\"].string,\n valueType: _propTypes2.isValueType\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\nvar _react = _interopRequireWildcard(require(\"react\"));\nvar _reactDom = require(\"react-dom\");\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _makeEventProps = _interopRequireDefault(require(\"make-event-props\"));\nvar _clsx = _interopRequireDefault(require(\"clsx\"));\nvar _reactCalendar = _interopRequireDefault(require(\"react-calendar\"));\nvar _reactFit = _interopRequireDefault(require(\"react-fit\"));\nvar _DateInput = _interopRequireDefault(require(\"./DateInput\"));\nvar _propTypes2 = require(\"./shared/propTypes\");\nvar _excluded = [\"calendarClassName\", \"className\", \"onChange\", \"portalContainer\", \"value\"],\n _excluded2 = [\"onChange\"];\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar baseClassName = 'react-date-picker';\nvar outsideActionEvents = ['mousedown', 'focusin', 'touchstart'];\nvar allViews = ['century', 'decade', 'year', 'month'];\nvar DatePicker = /*#__PURE__*/function (_PureComponent) {\n _inherits(DatePicker, _PureComponent);\n var _super = _createSuper(DatePicker);\n function DatePicker() {\n var _this;\n _classCallCheck(this, DatePicker);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"state\", {});\n _defineProperty(_assertThisInitialized(_this), \"wrapper\", /*#__PURE__*/(0, _react.createRef)());\n _defineProperty(_assertThisInitialized(_this), \"calendarWrapper\", /*#__PURE__*/(0, _react.createRef)());\n _defineProperty(_assertThisInitialized(_this), \"onOutsideAction\", function (event) {\n var _assertThisInitialize = _assertThisInitialized(_this),\n wrapper = _assertThisInitialize.wrapper,\n calendarWrapper = _assertThisInitialize.calendarWrapper;\n\n // Try event.composedPath first to handle clicks inside a Shadow DOM.\n var target = 'composedPath' in event ? event.composedPath()[0] : event.target;\n if (wrapper.current && !wrapper.current.contains(target) && (!calendarWrapper.current || !calendarWrapper.current.contains(target))) {\n _this.closeCalendar();\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"onChange\", function (value) {\n var closeCalendar = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _this.props.closeCalendar;\n var onChange = _this.props.onChange;\n if (closeCalendar) {\n _this.closeCalendar();\n }\n if (onChange) {\n onChange(value);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"onFocus\", function (event) {\n var _this$props = _this.props,\n disabled = _this$props.disabled,\n onFocus = _this$props.onFocus,\n openCalendarOnFocus = _this$props.openCalendarOnFocus;\n if (onFocus) {\n onFocus(event);\n }\n\n // Internet Explorer still fires onFocus on disabled elements\n if (disabled) {\n return;\n }\n if (openCalendarOnFocus) {\n if (event.target.dataset.select === 'true') {\n return;\n }\n _this.openCalendar();\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"onKeyDown\", function (event) {\n if (event.key === 'Escape') {\n _this.closeCalendar();\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"openCalendar\", function () {\n _this.setState({\n isOpen: true\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"closeCalendar\", function () {\n _this.setState(function (prevState) {\n if (!prevState.isOpen) {\n return null;\n }\n return {\n isOpen: false\n };\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"toggleCalendar\", function () {\n _this.setState(function (prevState) {\n return {\n isOpen: !prevState.isOpen\n };\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"stopPropagation\", function (event) {\n return event.stopPropagation();\n });\n _defineProperty(_assertThisInitialized(_this), \"clear\", function () {\n return _this.onChange(null);\n });\n return _this;\n }\n _createClass(DatePicker, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.handleOutsideActionListeners();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n var isOpen = this.state.isOpen;\n var _this$props2 = this.props,\n onCalendarClose = _this$props2.onCalendarClose,\n onCalendarOpen = _this$props2.onCalendarOpen;\n if (isOpen !== prevState.isOpen) {\n this.handleOutsideActionListeners();\n var callback = isOpen ? onCalendarOpen : onCalendarClose;\n if (callback) callback();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.handleOutsideActionListeners(false);\n }\n }, {\n key: \"eventProps\",\n get: function get() {\n return (0, _makeEventProps[\"default\"])(this.props);\n }\n }, {\n key: \"handleOutsideActionListeners\",\n value: function handleOutsideActionListeners(shouldListen) {\n var _this2 = this;\n var isOpen = this.state.isOpen;\n var shouldListenWithFallback = typeof shouldListen !== 'undefined' ? shouldListen : isOpen;\n var fnName = shouldListenWithFallback ? 'addEventListener' : 'removeEventListener';\n outsideActionEvents.forEach(function (eventName) {\n return document[fnName](eventName, _this2.onOutsideAction);\n });\n document[fnName]('keydown', this.onKeyDown);\n }\n }, {\n key: \"renderInputs\",\n value: function renderInputs() {\n var _this$props3 = this.props,\n autoFocus = _this$props3.autoFocus,\n calendarAriaLabel = _this$props3.calendarAriaLabel,\n calendarIcon = _this$props3.calendarIcon,\n clearAriaLabel = _this$props3.clearAriaLabel,\n clearIcon = _this$props3.clearIcon,\n dayAriaLabel = _this$props3.dayAriaLabel,\n dayPlaceholder = _this$props3.dayPlaceholder,\n disableCalendar = _this$props3.disableCalendar,\n disabled = _this$props3.disabled,\n format = _this$props3.format,\n locale = _this$props3.locale,\n maxDate = _this$props3.maxDate,\n maxDetail = _this$props3.maxDetail,\n minDate = _this$props3.minDate,\n monthAriaLabel = _this$props3.monthAriaLabel,\n monthPlaceholder = _this$props3.monthPlaceholder,\n name = _this$props3.name,\n nativeInputAriaLabel = _this$props3.nativeInputAriaLabel,\n required = _this$props3.required,\n returnValue = _this$props3.returnValue,\n showLeadingZeros = _this$props3.showLeadingZeros,\n value = _this$props3.value,\n yearAriaLabel = _this$props3.yearAriaLabel,\n yearPlaceholder = _this$props3.yearPlaceholder;\n var isOpen = this.state.isOpen;\n var _concat = [].concat(value),\n _concat2 = _slicedToArray(_concat, 1),\n valueFrom = _concat2[0];\n var ariaLabelProps = {\n dayAriaLabel: dayAriaLabel,\n monthAriaLabel: monthAriaLabel,\n nativeInputAriaLabel: nativeInputAriaLabel,\n yearAriaLabel: yearAriaLabel\n };\n var placeholderProps = {\n dayPlaceholder: dayPlaceholder,\n monthPlaceholder: monthPlaceholder,\n yearPlaceholder: yearPlaceholder\n };\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: \"\".concat(baseClassName, \"__wrapper\")\n }, /*#__PURE__*/_react[\"default\"].createElement(_DateInput[\"default\"], _extends({}, ariaLabelProps, placeholderProps, {\n // eslint-disable-next-line jsx-a11y/no-autofocus\n autoFocus: autoFocus,\n className: \"\".concat(baseClassName, \"__inputGroup\"),\n disabled: disabled,\n format: format,\n isCalendarOpen: isOpen,\n locale: locale,\n maxDate: maxDate,\n maxDetail: maxDetail,\n minDate: minDate,\n name: name,\n onChange: this.onChange,\n required: required,\n returnValue: returnValue,\n showLeadingZeros: showLeadingZeros,\n value: valueFrom\n })), clearIcon !== null && /*#__PURE__*/_react[\"default\"].createElement(\"button\", {\n \"aria-label\": clearAriaLabel,\n className: \"\".concat(baseClassName, \"__clear-button \").concat(baseClassName, \"__button\"),\n disabled: disabled,\n onClick: this.clear,\n onFocus: this.stopPropagation,\n type: \"button\"\n }, clearIcon), calendarIcon !== null && !disableCalendar && /*#__PURE__*/_react[\"default\"].createElement(\"button\", {\n \"aria-label\": calendarAriaLabel,\n className: \"\".concat(baseClassName, \"__calendar-button \").concat(baseClassName, \"__button\"),\n disabled: disabled,\n onBlur: this.resetValue,\n onClick: this.toggleCalendar,\n onFocus: this.stopPropagation,\n type: \"button\"\n }, calendarIcon));\n }\n }, {\n key: \"renderCalendar\",\n value: function renderCalendar() {\n var _this3 = this;\n var disableCalendar = this.props.disableCalendar;\n var isOpen = this.state.isOpen;\n if (isOpen === null || disableCalendar) {\n return null;\n }\n var _this$props4 = this.props,\n calendarClassName = _this$props4.calendarClassName,\n datePickerClassName = _this$props4.className,\n onChange = _this$props4.onChange,\n portalContainer = _this$props4.portalContainer,\n value = _this$props4.value,\n calendarProps = _objectWithoutProperties(_this$props4, _excluded);\n var className = \"\".concat(baseClassName, \"__calendar\");\n var classNames = (0, _clsx[\"default\"])(className, \"\".concat(className, \"--\").concat(isOpen ? 'open' : 'closed'));\n var calendar = /*#__PURE__*/_react[\"default\"].createElement(_reactCalendar[\"default\"], _extends({\n className: calendarClassName,\n onChange: function onChange(value) {\n return _this3.onChange(value);\n },\n value: value || null\n }, calendarProps));\n return portalContainer ? /*#__PURE__*/(0, _reactDom.createPortal)( /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n ref: this.calendarWrapper,\n className: classNames\n }, calendar), portalContainer) : /*#__PURE__*/_react[\"default\"].createElement(_reactFit[\"default\"], null, /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n ref: function ref(_ref) {\n if (_ref && !isOpen) {\n _ref.removeAttribute('style');\n }\n },\n className: classNames\n }, calendar));\n }\n }, {\n key: \"render\",\n value: function render() {\n var eventProps = this.eventProps;\n var _this$props5 = this.props,\n className = _this$props5.className,\n dataTestid = _this$props5['data-testid'],\n disabled = _this$props5.disabled;\n var isOpen = this.state.isOpen;\n var onChange = eventProps.onChange,\n eventPropsWithoutOnChange = _objectWithoutProperties(eventProps, _excluded2);\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", _extends({\n className: (0, _clsx[\"default\"])(baseClassName, \"\".concat(baseClassName, \"--\").concat(isOpen ? 'open' : 'closed'), \"\".concat(baseClassName, \"--\").concat(disabled ? 'disabled' : 'enabled'), className),\n \"data-testid\": dataTestid\n }, eventPropsWithoutOnChange, {\n onFocus: this.onFocus,\n ref: this.wrapper\n }), this.renderInputs(), this.renderCalendar());\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.isOpen !== prevState.isOpenProps) {\n return {\n isOpen: nextProps.isOpen,\n isOpenProps: nextProps.isOpen\n };\n }\n return null;\n }\n }]);\n return DatePicker;\n}(_react.PureComponent);\nexports[\"default\"] = DatePicker;\nvar iconProps = {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 19,\n height: 19,\n viewBox: '0 0 19 19',\n stroke: 'black',\n strokeWidth: 2\n};\nvar CalendarIcon = /*#__PURE__*/_react[\"default\"].createElement(\"svg\", _extends({}, iconProps, {\n className: \"\".concat(baseClassName, \"__calendar-button__icon \").concat(baseClassName, \"__button__icon\")\n}), /*#__PURE__*/_react[\"default\"].createElement(\"rect\", {\n fill: \"none\",\n height: \"15\",\n width: \"15\",\n x: \"2\",\n y: \"2\"\n}), /*#__PURE__*/_react[\"default\"].createElement(\"line\", {\n x1: \"6\",\n x2: \"6\",\n y1: \"0\",\n y2: \"4\"\n}), /*#__PURE__*/_react[\"default\"].createElement(\"line\", {\n x1: \"13\",\n x2: \"13\",\n y1: \"0\",\n y2: \"4\"\n}));\nvar ClearIcon = /*#__PURE__*/_react[\"default\"].createElement(\"svg\", _extends({}, iconProps, {\n className: \"\".concat(baseClassName, \"__clear-button__icon \").concat(baseClassName, \"__button__icon\")\n}), /*#__PURE__*/_react[\"default\"].createElement(\"line\", {\n x1: \"4\",\n x2: \"15\",\n y1: \"4\",\n y2: \"15\"\n}), /*#__PURE__*/_react[\"default\"].createElement(\"line\", {\n x1: \"15\",\n x2: \"4\",\n y1: \"4\",\n y2: \"15\"\n}));\nDatePicker.defaultProps = {\n calendarIcon: CalendarIcon,\n clearIcon: ClearIcon,\n closeCalendar: true,\n isOpen: null,\n openCalendarOnFocus: true,\n returnValue: 'start'\n};\nvar isValue = _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].instanceOf(Date)]);\nDatePicker.propTypes = {\n autoFocus: _propTypes[\"default\"].bool,\n calendarAriaLabel: _propTypes[\"default\"].string,\n calendarClassName: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].string)]),\n calendarIcon: _propTypes[\"default\"].node,\n className: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].string)]),\n clearAriaLabel: _propTypes[\"default\"].string,\n clearIcon: _propTypes[\"default\"].node,\n closeCalendar: _propTypes[\"default\"].bool,\n 'data-testid': _propTypes[\"default\"].string,\n dayAriaLabel: _propTypes[\"default\"].string,\n dayPlaceholder: _propTypes[\"default\"].string,\n disableCalendar: _propTypes[\"default\"].bool,\n disabled: _propTypes[\"default\"].bool,\n format: _propTypes[\"default\"].string,\n isOpen: _propTypes[\"default\"].bool,\n locale: _propTypes[\"default\"].string,\n maxDate: _propTypes2.isMaxDate,\n maxDetail: _propTypes[\"default\"].oneOf(allViews),\n minDate: _propTypes2.isMinDate,\n monthAriaLabel: _propTypes[\"default\"].string,\n monthPlaceholder: _propTypes[\"default\"].string,\n name: _propTypes[\"default\"].string,\n nativeInputAriaLabel: _propTypes[\"default\"].string,\n onCalendarClose: _propTypes[\"default\"].func,\n onCalendarOpen: _propTypes[\"default\"].func,\n onChange: _propTypes[\"default\"].func,\n onFocus: _propTypes[\"default\"].func,\n openCalendarOnFocus: _propTypes[\"default\"].bool,\n portalContainer: _propTypes[\"default\"].object,\n required: _propTypes[\"default\"].bool,\n returnValue: _propTypes[\"default\"].oneOf(['start', 'end', 'range']),\n showLeadingZeros: _propTypes[\"default\"].bool,\n value: _propTypes[\"default\"].oneOfType([isValue, _propTypes[\"default\"].arrayOf(isValue)]),\n yearAriaLabel: _propTypes[\"default\"].string,\n yearPlaceholder: _propTypes[\"default\"].string\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = Divider;\nvar _react = _interopRequireDefault(require(\"react\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\nfunction Divider(_ref) {\n var children = _ref.children;\n return /*#__PURE__*/_react[\"default\"].createElement(\"span\", {\n className: \"react-date-picker__inputGroup__divider\"\n }, children);\n}\nDivider.propTypes = {\n children: _propTypes[\"default\"].node\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\nrequire(\"react-calendar/dist/Calendar.css\");\nvar _DatePicker = _interopRequireDefault(require(\"./DatePicker\"));\nrequire(\"./DatePicker.css\");\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n// File is created during build phase and placed in dist directory\n// eslint-disable-next-line import/no-unresolved\nvar _default = _DatePicker[\"default\"];\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.formatShortMonth = exports.formatMonth = void 0;\nexports.getFormatter = getFormatter;\nvar _getUserLocale = _interopRequireDefault(require(\"get-user-locale\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\nvar formatterCache = new Map();\nfunction getFormatter(options) {\n return function (locale, date) {\n var localeWithDefault = locale || (0, _getUserLocale[\"default\"])();\n if (!formatterCache.has(localeWithDefault)) {\n formatterCache.set(localeWithDefault, new Map());\n }\n var formatterCacheLocale = formatterCache.get(localeWithDefault);\n if (!formatterCacheLocale.has(options)) {\n formatterCacheLocale.set(options, new Intl.DateTimeFormat(localeWithDefault, options).format);\n }\n return formatterCacheLocale.get(options)(date);\n };\n}\n\n/**\n * Changes the hour in a Date to ensure right date formatting even if DST is messed up.\n * Workaround for bug in WebKit and Firefox with historical dates.\n * For more details, see:\n * https://bugs.chromium.org/p/chromium/issues/detail?id=750465\n * https://bugzilla.mozilla.org/show_bug.cgi?id=1385643\n *\n * @param {Date} date Date.\n */\nfunction toSafeHour(date) {\n var safeDate = new Date(date);\n return new Date(safeDate.setHours(12));\n}\nfunction getSafeFormatter(options) {\n return function (locale, date) {\n return getFormatter(options)(locale, toSafeHour(date));\n };\n}\nvar formatMonthOptions = {\n month: 'long'\n};\nvar formatShortMonthOptions = {\n month: 'short'\n};\nvar formatMonth = getSafeFormatter(formatMonthOptions);\nexports.formatMonth = formatMonth;\nvar formatShortMonth = getSafeFormatter(formatShortMonthOptions);\nexports.formatShortMonth = formatShortMonth;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getBegin = getBegin;\nexports.getEnd = getEnd;\nvar _dateUtils = require(\"@wojtekmaj/date-utils\");\n/**\n * Returns the beginning of a given range.\n *\n * @param {string} rangeType Range type (e.g. 'day')\n * @param {Date} date Date.\n */\nfunction getBegin(rangeType, date) {\n switch (rangeType) {\n case 'century':\n return (0, _dateUtils.getCenturyStart)(date);\n case 'decade':\n return (0, _dateUtils.getDecadeStart)(date);\n case 'year':\n return (0, _dateUtils.getYearStart)(date);\n case 'month':\n return (0, _dateUtils.getMonthStart)(date);\n case 'day':\n return (0, _dateUtils.getDayStart)(date);\n default:\n throw new Error(\"Invalid rangeType: \".concat(rangeType));\n }\n}\n\n/**\n * Returns the end of a given range.\n *\n * @param {string} rangeType Range type (e.g. 'day')\n * @param {Date} date Date.\n */\nfunction getEnd(rangeType, date) {\n switch (rangeType) {\n case 'century':\n return (0, _dateUtils.getCenturyEnd)(date);\n case 'decade':\n return (0, _dateUtils.getDecadeEnd)(date);\n case 'year':\n return (0, _dateUtils.getYearEnd)(date);\n case 'month':\n return (0, _dateUtils.getMonthEnd)(date);\n case 'day':\n return (0, _dateUtils.getDayEnd)(date);\n default:\n throw new Error(\"Invalid rangeType: \".concat(rangeType));\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isValueType = exports.isRef = exports.isMinDate = exports.isMaxDate = void 0;\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nvar allViews = ['century', 'decade', 'year', 'month'];\nvar allValueTypes = [].concat(_toConsumableArray(allViews.slice(1)), ['day']);\nvar isValueType = _propTypes[\"default\"].oneOf(allValueTypes);\nexports.isValueType = isValueType;\nvar isMinDate = function isMinDate(props, propName, componentName) {\n var minDate = props[propName];\n if (!minDate) {\n return null;\n }\n if (!(minDate instanceof Date)) {\n return new Error(\"Invalid prop `\".concat(propName, \"` of type `\").concat(_typeof(minDate), \"` supplied to `\").concat(componentName, \"`, expected instance of `Date`.\"));\n }\n var maxDate = props.maxDate;\n if (maxDate && minDate > maxDate) {\n return new Error(\"Invalid prop `\".concat(propName, \"` of type `\").concat(_typeof(minDate), \"` supplied to `\").concat(componentName, \"`, minDate cannot be larger than maxDate.\"));\n }\n return null;\n};\nexports.isMinDate = isMinDate;\nvar isMaxDate = function isMaxDate(props, propName, componentName) {\n var maxDate = props[propName];\n if (!maxDate) {\n return null;\n }\n if (!(maxDate instanceof Date)) {\n return new Error(\"Invalid prop `\".concat(propName, \"` of type `\").concat(_typeof(maxDate), \"` supplied to `\").concat(componentName, \"`, expected instance of `Date`.\"));\n }\n var minDate = props.minDate;\n if (minDate && maxDate < minDate) {\n return new Error(\"Invalid prop `\".concat(propName, \"` of type `\").concat(_typeof(maxDate), \"` supplied to `\").concat(componentName, \"`, maxDate cannot be smaller than minDate.\"));\n }\n return null;\n};\nexports.isMaxDate = isMaxDate;\nvar isRef = _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].func, _propTypes[\"default\"].shape({\n current: _propTypes[\"default\"].any\n})]);\nexports.isRef = isRef;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.between = between;\nexports.safeMax = safeMax;\nexports.safeMin = safeMin;\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\n/**\n * Returns a value no smaller than min and no larger than max.\n *\n * @param {*} value Value to return.\n * @param {*} min Minimum return value.\n * @param {*} max Maximum return value.\n */\nfunction between(value, min, max) {\n if (min && min > value) {\n return min;\n }\n if (max && max < value) {\n return max;\n }\n return value;\n}\nfunction isValidNumber(num) {\n return num !== null && num !== false && !Number.isNaN(Number(num));\n}\nfunction safeMin() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return Math.min.apply(Math, _toConsumableArray(args.filter(isValidNumber)));\n}\nfunction safeMax() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return Math.max.apply(Math, _toConsumableArray(args.filter(isValidNumber)));\n}","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var da=new Set,ea={};function fa(a,b){ha(a,b);ha(a+\"Capture\",b)}\nfunction ha(a,b){ea[a]=b;for(a=0;a<b.length;a++)da.add(b[a])}\nvar ia=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),ja=Object.prototype.hasOwnProperty,ka=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,la=\n{},ma={};function oa(a){if(ja.call(ma,a))return!0;if(ja.call(la,a))return!1;if(ka.test(a))return ma[a]=!0;la[a]=!0;return!1}function pa(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction qa(a,b,c,d){if(null===b||\"undefined\"===typeof b||pa(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1])qa(b,c,e,d)&&(c=null),d||null===e?oa(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c)))}\nvar ua=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,va=Symbol.for(\"react.element\"),wa=Symbol.for(\"react.portal\"),ya=Symbol.for(\"react.fragment\"),za=Symbol.for(\"react.strict_mode\"),Aa=Symbol.for(\"react.profiler\"),Ba=Symbol.for(\"react.provider\"),Ca=Symbol.for(\"react.context\"),Da=Symbol.for(\"react.forward_ref\"),Ea=Symbol.for(\"react.suspense\"),Fa=Symbol.for(\"react.suspense_list\"),Ga=Symbol.for(\"react.memo\"),Ha=Symbol.for(\"react.lazy\");Symbol.for(\"react.scope\");Symbol.for(\"react.debug_trace_mode\");\nvar Ia=Symbol.for(\"react.offscreen\");Symbol.for(\"react.legacy_hidden\");Symbol.for(\"react.cache\");Symbol.for(\"react.tracing_marker\");var Ja=Symbol.iterator;function Ka(a){if(null===a||\"object\"!==typeof a)return null;a=Ja&&a[Ja]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}var A=Object.assign,La;function Ma(a){if(void 0===La)try{throw Error();}catch(c){var b=c.stack.trim().match(/\\n( *(at )?)/);La=b&&b[1]||\"\"}return\"\\n\"+La+a}var Na=!1;\nfunction Oa(a,b){if(!a||Na)return\"\";Na=!0;var c=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(b)if(b=function(){throw Error();},Object.defineProperty(b.prototype,\"props\",{set:function(){throw Error();}}),\"object\"===typeof Reflect&&Reflect.construct){try{Reflect.construct(b,[])}catch(l){var d=l}Reflect.construct(a,[],b)}else{try{b.call()}catch(l){d=l}a.call(b.prototype)}else{try{throw Error();}catch(l){d=l}a()}}catch(l){if(l&&d&&\"string\"===typeof l.stack){for(var e=l.stack.split(\"\\n\"),\nf=d.stack.split(\"\\n\"),g=e.length-1,h=f.length-1;1<=g&&0<=h&&e[g]!==f[h];)h--;for(;1<=g&&0<=h;g--,h--)if(e[g]!==f[h]){if(1!==g||1!==h){do if(g--,h--,0>h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"<anonymous>\")&&(k=k.replace(\"<anonymous>\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+Sa(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction gb(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(p(91));return A({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function hb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(p(92));if(eb(c)){if(1<c.length)throw Error(p(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}function kb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}\nfunction lb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?kb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar mb,nb=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(\"http://www.w3.org/2000/svg\"!==a.namespaceURI||\"innerHTML\"in a)a.innerHTML=b;else{mb=mb||document.createElement(\"div\");mb.innerHTML=\"<svg>\"+b.valueOf().toString()+\"</svg>\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a<b.length;a++)Bb(b[a])}}function Gb(a,b){return a(b)}function Hb(){}var Ib=!1;function Jb(a,b,c){if(Ib)return a(b,c);Ib=!0;try{return Gb(a,b,c)}finally{if(Ib=!1,null!==zb||null!==Ab)Hb(),Fb()}}\nfunction Kb(a,b){var c=a.stateNode;if(null===c)return null;var d=Db(c);if(null===d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==\ntypeof c)throw Error(p(231,b,typeof c));return c}var Lb=!1;if(ia)try{var Mb={};Object.defineProperty(Mb,\"passive\",{get:function(){Lb=!0}});window.addEventListener(\"test\",Mb,Mb);window.removeEventListener(\"test\",Mb,Mb)}catch(a){Lb=!1}function Nb(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(m){this.onError(m)}}var Ob=!1,Pb=null,Qb=!1,Rb=null,Sb={onError:function(a){Ob=!0;Pb=a}};function Tb(a,b,c,d,e,f,g,h,k){Ob=!1;Pb=null;Nb.apply(Sb,arguments)}\nfunction Ub(a,b,c,d,e,f,g,h,k){Tb.apply(this,arguments);if(Ob){if(Ob){var l=Pb;Ob=!1;Pb=null}else throw Error(p(198));Qb||(Qb=!0,Rb=l)}}function Vb(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.flags&4098)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function Wb(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function Xb(a){if(Vb(a)!==a)throw Error(p(188));}\nfunction Yb(a){var b=a.alternate;if(!b){b=Vb(a);if(null===b)throw Error(p(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return Xb(e),a;if(f===d)return Xb(e),b;f=f.sibling}throw Error(p(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(p(189));}}if(c.alternate!==d)throw Error(p(190));}if(3!==c.tag)throw Error(p(188));return c.stateNode.current===c?a:b}function Zb(a){a=Yb(a);return null!==a?$b(a):null}function $b(a){if(5===a.tag||6===a.tag)return a;for(a=a.child;null!==a;){var b=$b(a);if(null!==b)return b;a=a.sibling}return null}\nvar ac=ca.unstable_scheduleCallback,bc=ca.unstable_cancelCallback,cc=ca.unstable_shouldYield,dc=ca.unstable_requestPaint,B=ca.unstable_now,ec=ca.unstable_getCurrentPriorityLevel,fc=ca.unstable_ImmediatePriority,gc=ca.unstable_UserBlockingPriority,hc=ca.unstable_NormalPriority,ic=ca.unstable_LowPriority,jc=ca.unstable_IdlePriority,kc=null,lc=null;function mc(a){if(lc&&\"function\"===typeof lc.onCommitFiberRoot)try{lc.onCommitFiberRoot(kc,a,void 0,128===(a.current.flags&128))}catch(b){}}\nvar oc=Math.clz32?Math.clz32:nc,pc=Math.log,qc=Math.LN2;function nc(a){a>>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0<b;)c=31-oc(b),e=1<<c,d|=a[c],b&=~e;return d}\nfunction vc(a,b){switch(a){case 1:case 2:case 4:return b+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return b+5E3;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return-1;case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}\nfunction wc(a,b){for(var c=a.suspendedLanes,d=a.pingedLanes,e=a.expirationTimes,f=a.pendingLanes;0<f;){var g=31-oc(f),h=1<<g,k=e[g];if(-1===k){if(0===(h&c)||0!==(h&d))e[g]=vc(h,b)}else k<=b&&(a.expiredLanes|=h);f&=~h}}function xc(a){a=a.pendingLanes&-1073741825;return 0!==a?a:a&1073741824?1073741824:0}function yc(){var a=rc;rc<<=1;0===(rc&4194240)&&(rc=64);return a}function zc(a){for(var b=[],c=0;31>c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0<c;){var e=31-oc(c),f=1<<e;b[e]=0;d[e]=-1;a[e]=-1;c&=~f}}\nfunction Cc(a,b){var c=a.entangledLanes|=b;for(a=a.entanglements;c;){var d=31-oc(c),e=1<<d;e&b|a[d]&b&&(a[d]|=b);c&=~e}}var C=0;function Dc(a){a&=-a;return 1<a?4<a?0!==(a&268435455)?16:536870912:4:1}var Ec,Fc,Gc,Hc,Ic,Jc=!1,Kc=[],Lc=null,Mc=null,Nc=null,Oc=new Map,Pc=new Map,Qc=[],Rc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit\".split(\" \");\nfunction Sc(a,b){switch(a){case \"focusin\":case \"focusout\":Lc=null;break;case \"dragenter\":case \"dragleave\":Mc=null;break;case \"mouseover\":case \"mouseout\":Nc=null;break;case \"pointerover\":case \"pointerout\":Oc.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":Pc.delete(b.pointerId)}}\nfunction Tc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a={blockedOn:b,domEventName:c,eventSystemFlags:d,nativeEvent:f,targetContainers:[e]},null!==b&&(b=Cb(b),null!==b&&Fc(b)),a;a.eventSystemFlags|=d;b=a.targetContainers;null!==e&&-1===b.indexOf(e)&&b.push(e);return a}\nfunction Uc(a,b,c,d,e){switch(b){case \"focusin\":return Lc=Tc(Lc,a,b,c,d,e),!0;case \"dragenter\":return Mc=Tc(Mc,a,b,c,d,e),!0;case \"mouseover\":return Nc=Tc(Nc,a,b,c,d,e),!0;case \"pointerover\":var f=e.pointerId;Oc.set(f,Tc(Oc.get(f)||null,a,b,c,d,e));return!0;case \"gotpointercapture\":return f=e.pointerId,Pc.set(f,Tc(Pc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction Vc(a){var b=Wc(a.target);if(null!==b){var c=Vb(b);if(null!==c)if(b=c.tag,13===b){if(b=Wb(c),null!==b){a.blockedOn=b;Ic(a.priority,function(){Gc(c)});return}}else if(3===b&&c.stateNode.current.memoizedState.isDehydrated){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}\nfunction Xc(a){if(null!==a.blockedOn)return!1;for(var b=a.targetContainers;0<b.length;){var c=Yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null===c){c=a.nativeEvent;var d=new c.constructor(c.type,c);wb=d;c.target.dispatchEvent(d);wb=null}else return b=Cb(c),null!==b&&Fc(b),a.blockedOn=c,!1;b.shift()}return!0}function Zc(a,b,c){Xc(a)&&c.delete(b)}function $c(){Jc=!1;null!==Lc&&Xc(Lc)&&(Lc=null);null!==Mc&&Xc(Mc)&&(Mc=null);null!==Nc&&Xc(Nc)&&(Nc=null);Oc.forEach(Zc);Pc.forEach(Zc)}\nfunction ad(a,b){a.blockedOn===b&&(a.blockedOn=null,Jc||(Jc=!0,ca.unstable_scheduleCallback(ca.unstable_NormalPriority,$c)))}\nfunction bd(a){function b(b){return ad(b,a)}if(0<Kc.length){ad(Kc[0],a);for(var c=1;c<Kc.length;c++){var d=Kc[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==Lc&&ad(Lc,a);null!==Mc&&ad(Mc,a);null!==Nc&&ad(Nc,a);Oc.forEach(b);Pc.forEach(b);for(c=0;c<Qc.length;c++)d=Qc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<Qc.length&&(c=Qc[0],null===c.blockedOn);)Vc(c),null===c.blockedOn&&Qc.shift()}var cd=ua.ReactCurrentBatchConfig,dd=!0;\nfunction ed(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=1,fd(a,b,c,d)}finally{C=e,cd.transition=f}}function gd(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=4,fd(a,b,c,d)}finally{C=e,cd.transition=f}}\nfunction fd(a,b,c,d){if(dd){var e=Yc(a,b,c,d);if(null===e)hd(a,b,d,id,c),Sc(a,d);else if(Uc(e,a,b,c,d))d.stopPropagation();else if(Sc(a,d),b&4&&-1<Rc.indexOf(a)){for(;null!==e;){var f=Cb(e);null!==f&&Ec(f);f=Yc(a,b,c,d);null===f&&hd(a,b,d,id,c);if(f===e)break;e=f}null!==e&&d.stopPropagation()}else hd(a,b,d,null,c)}}var id=null;\nfunction Yc(a,b,c,d){id=null;a=xb(d);a=Wc(a);if(null!==a)if(b=Vb(a),null===b)a=null;else if(c=b.tag,13===c){a=Wb(b);if(null!==a)return a;a=null}else if(3===c){if(b.stateNode.current.memoizedState.isDehydrated)return 3===b.tag?b.stateNode.containerInfo:null;a=null}else b!==a&&(a=null);id=a;return null}\nfunction jd(a){switch(a){case \"cancel\":case \"click\":case \"close\":case \"contextmenu\":case \"copy\":case \"cut\":case \"auxclick\":case \"dblclick\":case \"dragend\":case \"dragstart\":case \"drop\":case \"focusin\":case \"focusout\":case \"input\":case \"invalid\":case \"keydown\":case \"keypress\":case \"keyup\":case \"mousedown\":case \"mouseup\":case \"paste\":case \"pause\":case \"play\":case \"pointercancel\":case \"pointerdown\":case \"pointerup\":case \"ratechange\":case \"reset\":case \"resize\":case \"seeked\":case \"submit\":case \"touchcancel\":case \"touchend\":case \"touchstart\":case \"volumechange\":case \"change\":case \"selectionchange\":case \"textInput\":case \"compositionstart\":case \"compositionend\":case \"compositionupdate\":case \"beforeblur\":case \"afterblur\":case \"beforeinput\":case \"blur\":case \"fullscreenchange\":case \"focus\":case \"hashchange\":case \"popstate\":case \"select\":case \"selectstart\":return 1;case \"drag\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"mousemove\":case \"mouseout\":case \"mouseover\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"scroll\":case \"toggle\":case \"touchmove\":case \"wheel\":case \"mouseenter\":case \"mouseleave\":case \"pointerenter\":case \"pointerleave\":return 4;\ncase \"message\":switch(ec()){case fc:return 1;case gc:return 4;case hc:case ic:return 16;case jc:return 536870912;default:return 16}default:return 16}}var kd=null,ld=null,md=null;function nd(){if(md)return md;var a,b=ld,c=b.length,d,e=\"value\"in kd?kd.value:kd.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return md=e.slice(a,1<d?1-d:void 0)}\nfunction od(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}function pd(){return!0}function qd(){return!1}\nfunction rd(a){function b(b,d,e,f,g){this._reactName=b;this._targetInst=e;this.type=d;this.nativeEvent=f;this.target=g;this.currentTarget=null;for(var c in a)a.hasOwnProperty(c)&&(b=a[c],this[c]=b?b(f):f[c]);this.isDefaultPrevented=(null!=f.defaultPrevented?f.defaultPrevented:!1===f.returnValue)?pd:qd;this.isPropagationStopped=qd;return this}A(b.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&\n(a.returnValue=!1),this.isDefaultPrevented=pd)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=pd)},persist:function(){},isPersistent:pd});return b}\nvar sd={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},td=rd(sd),ud=A({},sd,{view:0,detail:0}),vd=rd(ud),wd,xd,yd,Ad=A({},ud,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:zd,button:0,buttons:0,relatedTarget:function(a){return void 0===a.relatedTarget?a.fromElement===a.srcElement?a.toElement:a.fromElement:a.relatedTarget},movementX:function(a){if(\"movementX\"in\na)return a.movementX;a!==yd&&(yd&&\"mousemove\"===a.type?(wd=a.screenX-yd.screenX,xd=a.screenY-yd.screenY):xd=wd=0,yd=a);return wd},movementY:function(a){return\"movementY\"in a?a.movementY:xd}}),Bd=rd(Ad),Cd=A({},Ad,{dataTransfer:0}),Dd=rd(Cd),Ed=A({},ud,{relatedTarget:0}),Fd=rd(Ed),Gd=A({},sd,{animationName:0,elapsedTime:0,pseudoElement:0}),Hd=rd(Gd),Id=A({},sd,{clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),Jd=rd(Id),Kd=A({},sd,{data:0}),Ld=rd(Kd),Md={Esc:\"Escape\",\nSpacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},Nd={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",\n119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},Od={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pd(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Od[a])?!!b[a]:!1}function zd(){return Pd}\nvar Qd=A({},ud,{key:function(a){if(a.key){var b=Md[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=od(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?Nd[a.keyCode]||\"Unidentified\":\"\"},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:zd,charCode:function(a){return\"keypress\"===a.type?od(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===\na.type?od(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),Rd=rd(Qd),Sd=A({},Ad,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Td=rd(Sd),Ud=A({},ud,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:zd}),Vd=rd(Ud),Wd=A({},sd,{propertyName:0,elapsedTime:0,pseudoElement:0}),Xd=rd(Wd),Yd=A({},Ad,{deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in a?-a.wheelDeltaX:0},\ndeltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:0,deltaMode:0}),Zd=rd(Yd),$d=[9,13,27,32],ae=ia&&\"CompositionEvent\"in window,be=null;ia&&\"documentMode\"in document&&(be=document.documentMode);var ce=ia&&\"TextEvent\"in window&&!be,de=ia&&(!ae||be&&8<be&&11>=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return de&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar le={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function me(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!le[a.type]:\"textarea\"===b?!0:!1}function ne(a,b,c,d){Eb(d);b=oe(b,\"onChange\");0<b.length&&(c=new td(\"onChange\",\"change\",null,c,d),a.push({event:c,listeners:b}))}var pe=null,qe=null;function re(a){se(a,0)}function te(a){var b=ue(a);if(Wa(b))return a}\nfunction ve(a,b){if(\"change\"===a)return b}var we=!1;if(ia){var xe;if(ia){var ye=\"oninput\"in document;if(!ye){var ze=document.createElement(\"div\");ze.setAttribute(\"oninput\",\"return;\");ye=\"function\"===typeof ze.oninput}xe=ye}else xe=!1;we=xe&&(!document.documentMode||9<document.documentMode)}function Ae(){pe&&(pe.detachEvent(\"onpropertychange\",Be),qe=pe=null)}function Be(a){if(\"value\"===a.propertyName&&te(qe)){var b=[];ne(b,qe,a,xb(a));Jb(re,b)}}\nfunction Ce(a,b,c){\"focusin\"===a?(Ae(),pe=b,qe=c,pe.attachEvent(\"onpropertychange\",Be)):\"focusout\"===a&&Ae()}function De(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return te(qe)}function Ee(a,b){if(\"click\"===a)return te(b)}function Fe(a,b){if(\"input\"===a||\"change\"===a)return te(b)}function Ge(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var He=\"function\"===typeof Object.is?Object.is:Ge;\nfunction Ie(a,b){if(He(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++){var e=c[d];if(!ja.call(b,e)||!He(a[e],b[e]))return!1}return!0}function Je(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Ke(a,b){var c=Je(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c<b.length;c++)a=b[c],a.element.scrollLeft=a.left,a.element.scrollTop=a.top}}\nvar Pe=ia&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0<d.length&&(b=new td(\"onSelect\",\"select\",null,b,c),a.push({event:b,listeners:d}),b.target=Qe)))}\nfunction Ve(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var We={animationend:Ve(\"Animation\",\"AnimationEnd\"),animationiteration:Ve(\"Animation\",\"AnimationIteration\"),animationstart:Ve(\"Animation\",\"AnimationStart\"),transitionend:Ve(\"Transition\",\"TransitionEnd\")},Xe={},Ye={};\nia&&(Ye=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete We.animationend.animation,delete We.animationiteration.animation,delete We.animationstart.animation),\"TransitionEvent\"in window||delete We.transitionend.transition);function Ze(a){if(Xe[a])return Xe[a];if(!We[a])return a;var b=We[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Ye)return Xe[a]=b[c];return a}var $e=Ze(\"animationend\"),af=Ze(\"animationiteration\"),bf=Ze(\"animationstart\"),cf=Ze(\"transitionend\"),df=new Map,ef=\"abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel\".split(\" \");\nfunction ff(a,b){df.set(a,b);fa(b,[a])}for(var gf=0;gf<ef.length;gf++){var hf=ef[gf],jf=hf.toLowerCase(),kf=hf[0].toUpperCase()+hf.slice(1);ff(jf,\"on\"+kf)}ff($e,\"onAnimationEnd\");ff(af,\"onAnimationIteration\");ff(bf,\"onAnimationStart\");ff(\"dblclick\",\"onDoubleClick\");ff(\"focusin\",\"onFocus\");ff(\"focusout\",\"onBlur\");ff(cf,\"onTransitionEnd\");ha(\"onMouseEnter\",[\"mouseout\",\"mouseover\"]);ha(\"onMouseLeave\",[\"mouseout\",\"mouseover\"]);ha(\"onPointerEnter\",[\"pointerout\",\"pointerover\"]);\nha(\"onPointerLeave\",[\"pointerout\",\"pointerover\"]);fa(\"onChange\",\"change click focusin focusout input keydown keyup selectionchange\".split(\" \"));fa(\"onSelect\",\"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \"));fa(\"onBeforeInput\",[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]);fa(\"onCompositionEnd\",\"compositionend focusout keydown keypress keyup mousedown\".split(\" \"));fa(\"onCompositionStart\",\"compositionstart focusout keydown keypress keyup mousedown\".split(\" \"));\nfa(\"onCompositionUpdate\",\"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));var lf=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),mf=new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat(lf));\nfunction nf(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=c;Ub(d,b,void 0,a);a.currentTarget=null}\nfunction se(a,b){b=0!==(b&4);for(var c=0;c<a.length;c++){var d=a[c],e=d.event;d=d.listeners;a:{var f=void 0;if(b)for(var g=d.length-1;0<=g;g--){var h=d[g],k=h.instance,l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}else for(g=0;g<d.length;g++){h=d[g];k=h.instance;l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}}}if(Qb)throw a=Rb,Qb=!1,Rb=null,a;}\nfunction D(a,b){var c=b[of];void 0===c&&(c=b[of]=new Set);var d=a+\"__bubble\";c.has(d)||(pf(b,a,2,!1),c.add(d))}function qf(a,b,c){var d=0;b&&(d|=4);pf(c,a,d,b)}var rf=\"_reactListening\"+Math.random().toString(36).slice(2);function sf(a){if(!a[rf]){a[rf]=!0;da.forEach(function(b){\"selectionchange\"!==b&&(mf.has(b)||qf(b,!1,a),qf(b,!0,a))});var b=9===a.nodeType?a:a.ownerDocument;null===b||b[rf]||(b[rf]=!0,qf(\"selectionchange\",!1,b))}}\nfunction pf(a,b,c,d){switch(jd(b)){case 1:var e=ed;break;case 4:e=gd;break;default:e=fd}c=e.bind(null,b,c,a);e=void 0;!Lb||\"touchstart\"!==b&&\"touchmove\"!==b&&\"wheel\"!==b||(e=!0);d?void 0!==e?a.addEventListener(b,c,{capture:!0,passive:e}):a.addEventListener(b,c,!0):void 0!==e?a.addEventListener(b,c,{passive:e}):a.addEventListener(b,c,!1)}\nfunction hd(a,b,c,d,e){var f=d;if(0===(b&1)&&0===(b&2)&&null!==d)a:for(;;){if(null===d)return;var g=d.tag;if(3===g||4===g){var h=d.stateNode.containerInfo;if(h===e||8===h.nodeType&&h.parentNode===e)break;if(4===g)for(g=d.return;null!==g;){var k=g.tag;if(3===k||4===k)if(k=g.stateNode.containerInfo,k===e||8===k.nodeType&&k.parentNode===e)return;g=g.return}for(;null!==h;){g=Wc(h);if(null===g)return;k=g.tag;if(5===k||6===k){d=f=g;continue a}h=h.parentNode}}d=d.return}Jb(function(){var d=f,e=xb(c),g=[];\na:{var h=df.get(a);if(void 0!==h){var k=td,n=a;switch(a){case \"keypress\":if(0===od(c))break a;case \"keydown\":case \"keyup\":k=Rd;break;case \"focusin\":n=\"focus\";k=Fd;break;case \"focusout\":n=\"blur\";k=Fd;break;case \"beforeblur\":case \"afterblur\":k=Fd;break;case \"click\":if(2===c.button)break a;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":k=Bd;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":k=\nDd;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":k=Vd;break;case $e:case af:case bf:k=Hd;break;case cf:k=Xd;break;case \"scroll\":k=vd;break;case \"wheel\":k=Zd;break;case \"copy\":case \"cut\":case \"paste\":k=Jd;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":k=Td}var t=0!==(b&4),J=!t&&\"scroll\"===a,x=t?null!==h?h+\"Capture\":null:h;t=[];for(var w=d,u;null!==\nw;){u=w;var F=u.stateNode;5===u.tag&&null!==F&&(u=F,null!==x&&(F=Kb(w,x),null!=F&&t.push(tf(w,F,u))));if(J)break;w=w.return}0<t.length&&(h=new k(h,n,null,c,e),g.push({event:h,listeners:t}))}}if(0===(b&7)){a:{h=\"mouseover\"===a||\"pointerover\"===a;k=\"mouseout\"===a||\"pointerout\"===a;if(h&&c!==wb&&(n=c.relatedTarget||c.fromElement)&&(Wc(n)||n[uf]))break a;if(k||h){h=e.window===e?e:(h=e.ownerDocument)?h.defaultView||h.parentWindow:window;if(k){if(n=c.relatedTarget||c.toElement,k=d,n=n?Wc(n):null,null!==\nn&&(J=Vb(n),n!==J||5!==n.tag&&6!==n.tag))n=null}else k=null,n=d;if(k!==n){t=Bd;F=\"onMouseLeave\";x=\"onMouseEnter\";w=\"mouse\";if(\"pointerout\"===a||\"pointerover\"===a)t=Td,F=\"onPointerLeave\",x=\"onPointerEnter\",w=\"pointer\";J=null==k?h:ue(k);u=null==n?h:ue(n);h=new t(F,w+\"leave\",k,c,e);h.target=J;h.relatedTarget=u;F=null;Wc(e)===d&&(t=new t(x,w+\"enter\",n,c,e),t.target=u,t.relatedTarget=J,F=t);J=F;if(k&&n)b:{t=k;x=n;w=0;for(u=t;u;u=vf(u))w++;u=0;for(F=x;F;F=vf(F))u++;for(;0<w-u;)t=vf(t),w--;for(;0<u-w;)x=\nvf(x),u--;for(;w--;){if(t===x||null!==x&&t===x.alternate)break b;t=vf(t);x=vf(x)}t=null}else t=null;null!==k&&wf(g,h,k,t,!1);null!==n&&null!==J&&wf(g,J,n,t,!0)}}}a:{h=d?ue(d):window;k=h.nodeName&&h.nodeName.toLowerCase();if(\"select\"===k||\"input\"===k&&\"file\"===h.type)var na=ve;else if(me(h))if(we)na=Fe;else{na=De;var xa=Ce}else(k=h.nodeName)&&\"input\"===k.toLowerCase()&&(\"checkbox\"===h.type||\"radio\"===h.type)&&(na=Ee);if(na&&(na=na(a,d))){ne(g,na,c,e);break a}xa&&xa(a,h,d);\"focusout\"===a&&(xa=h._wrapperState)&&\nxa.controlled&&\"number\"===h.type&&cb(h,\"number\",h.value)}xa=d?ue(d):window;switch(a){case \"focusin\":if(me(xa)||\"true\"===xa.contentEditable)Qe=xa,Re=d,Se=null;break;case \"focusout\":Se=Re=Qe=null;break;case \"mousedown\":Te=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":Te=!1;Ue(g,c,e);break;case \"selectionchange\":if(Pe)break;case \"keydown\":case \"keyup\":Ue(g,c,e)}var $a;if(ae)b:{switch(a){case \"compositionstart\":var ba=\"onCompositionStart\";break b;case \"compositionend\":ba=\"onCompositionEnd\";\nbreak b;case \"compositionupdate\":ba=\"onCompositionUpdate\";break b}ba=void 0}else ie?ge(a,c)&&(ba=\"onCompositionEnd\"):\"keydown\"===a&&229===c.keyCode&&(ba=\"onCompositionStart\");ba&&(de&&\"ko\"!==c.locale&&(ie||\"onCompositionStart\"!==ba?\"onCompositionEnd\"===ba&&ie&&($a=nd()):(kd=e,ld=\"value\"in kd?kd.value:kd.textContent,ie=!0)),xa=oe(d,ba),0<xa.length&&(ba=new Ld(ba,a,null,c,e),g.push({event:ba,listeners:xa}),$a?ba.data=$a:($a=he(c),null!==$a&&(ba.data=$a))));if($a=ce?je(a,c):ke(a,c))d=oe(d,\"onBeforeInput\"),\n0<d.length&&(e=new Ld(\"onBeforeInput\",\"beforeinput\",null,c,e),g.push({event:e,listeners:d}),e.data=$a)}se(g,b)})}function tf(a,b,c){return{instance:a,listener:b,currentTarget:c}}function oe(a,b){for(var c=b+\"Capture\",d=[];null!==a;){var e=a,f=e.stateNode;5===e.tag&&null!==f&&(e=f,f=Kb(a,c),null!=f&&d.unshift(tf(a,f,e)),f=Kb(a,b),null!=f&&d.push(tf(a,f,e)));a=a.return}return d}function vf(a){if(null===a)return null;do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction wf(a,b,c,d,e){for(var f=b._reactName,g=[];null!==c&&c!==d;){var h=c,k=h.alternate,l=h.stateNode;if(null!==k&&k===d)break;5===h.tag&&null!==l&&(h=l,e?(k=Kb(c,f),null!=k&&g.unshift(tf(c,k,h))):e||(k=Kb(c,f),null!=k&&g.push(tf(c,k,h))));c=c.return}0!==g.length&&a.push({event:b,listeners:g})}var xf=/\\r\\n?/g,yf=/\\u0000|\\uFFFD/g;function zf(a){return(\"string\"===typeof a?a:\"\"+a).replace(xf,\"\\n\").replace(yf,\"\")}function Af(a,b,c){b=zf(b);if(zf(a)!==b&&c)throw Error(p(425));}function Bf(){}\nvar Cf=null,Df=null;function Ef(a,b){return\"textarea\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}\nvar Ff=\"function\"===typeof setTimeout?setTimeout:void 0,Gf=\"function\"===typeof clearTimeout?clearTimeout:void 0,Hf=\"function\"===typeof Promise?Promise:void 0,Jf=\"function\"===typeof queueMicrotask?queueMicrotask:\"undefined\"!==typeof Hf?function(a){return Hf.resolve(null).then(a).catch(If)}:Ff;function If(a){setTimeout(function(){throw a;})}\nfunction Kf(a,b){var c=b,d=0;do{var e=c.nextSibling;a.removeChild(c);if(e&&8===e.nodeType)if(c=e.data,\"/$\"===c){if(0===d){a.removeChild(e);bd(b);return}d--}else\"$\"!==c&&\"$?\"!==c&&\"$!\"!==c||d++;c=e}while(c);bd(b)}function Lf(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break;if(8===b){b=a.data;if(\"$\"===b||\"$!\"===b||\"$?\"===b)break;if(\"/$\"===b)return null}}return a}\nfunction Mf(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(\"$\"===c||\"$!\"===c||\"$?\"===c){if(0===b)return a;b--}else\"/$\"===c&&b++}a=a.previousSibling}return null}var Nf=Math.random().toString(36).slice(2),Of=\"__reactFiber$\"+Nf,Pf=\"__reactProps$\"+Nf,uf=\"__reactContainer$\"+Nf,of=\"__reactEvents$\"+Nf,Qf=\"__reactListeners$\"+Nf,Rf=\"__reactHandles$\"+Nf;\nfunction Wc(a){var b=a[Of];if(b)return b;for(var c=a.parentNode;c;){if(b=c[uf]||c[Of]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=Mf(a);null!==a;){if(c=a[Of])return c;a=Mf(a)}return b}a=c;c=a.parentNode}return null}function Cb(a){a=a[Of]||a[uf];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function ue(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(p(33));}function Db(a){return a[Pf]||null}var Sf=[],Tf=-1;function Uf(a){return{current:a}}\nfunction E(a){0>Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a<c.length;a++){var d=c[a];do d=d(!0);while(null!==d)}eg=null;fg=!1}catch(e){throw null!==eg&&(eg=eg.slice(a+1)),ac(fc,jg),e;}finally{C=b,gg=!1}}return null}var kg=[],lg=0,mg=null,ng=0,og=[],pg=0,qg=null,rg=1,sg=\"\";function tg(a,b){kg[lg++]=ng;kg[lg++]=mg;mg=a;ng=b}\nfunction ug(a,b,c){og[pg++]=rg;og[pg++]=sg;og[pg++]=qg;qg=a;var d=rg;a=sg;var e=32-oc(d)-1;d&=~(1<<e);c+=1;var f=32-oc(b)+e;if(30<f){var g=e-e%5;f=(d&(1<<g)-1).toString(32);d>>=g;e-=g;rg=1<<32-oc(b)+e|c<<e|d;sg=f+a}else rg=1<<f|c<<e|d,sg=a}function vg(a){null!==a.return&&(tg(a,1),ug(a,1,0))}function wg(a){for(;a===mg;)mg=kg[--lg],kg[lg]=null,ng=kg[--lg],kg[lg]=null;for(;a===qg;)qg=og[--pg],og[pg]=null,sg=og[--pg],og[pg]=null,rg=og[--pg],og[pg]=null}var xg=null,yg=null,I=!1,zg=null;\nfunction Ag(a,b){var c=Bg(5,null,null,0);c.elementType=\"DELETED\";c.stateNode=b;c.return=a;b=a.deletions;null===b?(a.deletions=[c],a.flags|=16):b.push(c)}\nfunction Cg(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,xg=a,yg=Lf(b.firstChild),!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,xg=a,yg=null,!0):!1;case 13:return b=8!==b.nodeType?null:b,null!==b?(c=null!==qg?{id:rg,overflow:sg}:null,a.memoizedState={dehydrated:b,treeContext:c,retryLane:1073741824},c=Bg(18,null,null,0),c.stateNode=b,c.return=a,a.child=c,xg=a,yg=\nnull,!0):!1;default:return!1}}function Dg(a){return 0!==(a.mode&1)&&0===(a.flags&128)}function Eg(a){if(I){var b=yg;if(b){var c=b;if(!Cg(a,b)){if(Dg(a))throw Error(p(418));b=Lf(c.nextSibling);var d=xg;b&&Cg(a,b)?Ag(d,c):(a.flags=a.flags&-4097|2,I=!1,xg=a)}}else{if(Dg(a))throw Error(p(418));a.flags=a.flags&-4097|2;I=!1;xg=a}}}function Fg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;xg=a}\nfunction Gg(a){if(a!==xg)return!1;if(!I)return Fg(a),I=!0,!1;var b;(b=3!==a.tag)&&!(b=5!==a.tag)&&(b=a.type,b=\"head\"!==b&&\"body\"!==b&&!Ef(a.type,a.memoizedProps));if(b&&(b=yg)){if(Dg(a))throw Hg(),Error(p(418));for(;b;)Ag(a,b),b=Lf(b.nextSibling)}Fg(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(p(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){yg=Lf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}yg=\nnull}}else yg=xg?Lf(a.stateNode.nextSibling):null;return!0}function Hg(){for(var a=yg;a;)a=Lf(a.nextSibling)}function Ig(){yg=xg=null;I=!1}function Jg(a){null===zg?zg=[a]:zg.push(a)}var Kg=ua.ReactCurrentBatchConfig;function Lg(a,b){if(a&&a.defaultProps){b=A({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b}return b}var Mg=Uf(null),Ng=null,Og=null,Pg=null;function Qg(){Pg=Og=Ng=null}function Rg(a){var b=Mg.current;E(Mg);a._currentValue=b}\nfunction Sg(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}function Tg(a,b){Ng=a;Pg=Og=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(Ug=!0),a.firstContext=null)}\nfunction Vg(a){var b=a._currentValue;if(Pg!==a)if(a={context:a,memoizedValue:b,next:null},null===Og){if(null===Ng)throw Error(p(308));Og=a;Ng.dependencies={lanes:0,firstContext:a}}else Og=Og.next=a;return b}var Wg=null;function Xg(a){null===Wg?Wg=[a]:Wg.push(a)}function Yg(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,Xg(b)):(c.next=e.next,e.next=c);b.interleaved=c;return Zg(a,d)}\nfunction Zg(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var $g=!1;function ah(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction bh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function ch(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction dh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return Zg(a,c)}e=d.interleaved;null===e?(b.next=b,Xg(d)):(b.next=e.next,e.next=b);d.interleaved=b;return Zg(a,c)}function eh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction fh(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction gh(a,b,c,d){var e=a.updateQueue;$g=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:$g=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);hh|=g;a.lanes=g;a.memoizedState=q}}\nfunction ih(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=c;if(\"function\"!==typeof e)throw Error(p(191,e));e.call(d)}}}var jh=(new aa.Component).refs;function kh(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:A({},b,c);a.memoizedState=c;0===a.lanes&&(a.updateQueue.baseState=c)}\nvar nh={isMounted:function(a){return(a=a._reactInternals)?Vb(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternals;var d=L(),e=lh(a),f=ch(d,e);f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=dh(a,f,e);null!==b&&(mh(b,a,e,d),eh(b,a,e))},enqueueReplaceState:function(a,b,c){a=a._reactInternals;var d=L(),e=lh(a),f=ch(d,e);f.tag=1;f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=dh(a,f,e);null!==b&&(mh(b,a,e,d),eh(b,a,e))},enqueueForceUpdate:function(a,b){a=a._reactInternals;var c=L(),d=\nlh(a),e=ch(c,d);e.tag=2;void 0!==b&&null!==b&&(e.callback=b);b=dh(a,e,d);null!==b&&(mh(b,a,d,c),eh(b,a,d))}};function oh(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!Ie(c,d)||!Ie(e,f):!0}\nfunction ph(a,b,c){var d=!1,e=Vf;var f=b.contextType;\"object\"===typeof f&&null!==f?f=Vg(f):(e=Zf(b)?Xf:H.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Yf(a,e):Vf);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=nh;a.stateNode=b;b._reactInternals=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction qh(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&nh.enqueueReplaceState(b,b.state,null)}\nfunction rh(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=jh;ah(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=Vg(f):(f=Zf(b)?Xf:H.current,e.context=Yf(a,f));e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(kh(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof e.componentWillMount||(b=e.state,\n\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&nh.enqueueReplaceState(e,e.state,null),gh(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.flags|=4194308)}\nfunction sh(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(p(309));var d=c.stateNode}if(!d)throw Error(p(147,a));var e=d,f=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===f)return b.ref;b=function(a){var b=e.refs;b===jh&&(b=e.refs={});null===a?delete b[f]:b[f]=a};b._stringRef=f;return b}if(\"string\"!==typeof a)throw Error(p(284));if(!c._owner)throw Error(p(290,a));}return a}\nfunction th(a,b){a=Object.prototype.toString.call(b);throw Error(p(31,\"[object Object]\"===a?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":a));}function uh(a){var b=a._init;return b(a._payload)}\nfunction vh(a){function b(b,c){if(a){var d=b.deletions;null===d?(b.deletions=[c],b.flags|=16):d.push(c)}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=wh(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return b.flags|=1048576,c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.flags|=2,c):d;b.flags|=2;return c}function g(b){a&&\nnull===b.alternate&&(b.flags|=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=xh(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){var f=c.type;if(f===ya)return m(a,b,c.props.children,d,c.key);if(null!==b&&(b.elementType===f||\"object\"===typeof f&&null!==f&&f.$$typeof===Ha&&uh(f)===b.type))return d=e(b,c.props),d.ref=sh(a,b,c),d.return=a,d;d=yh(c.type,c.key,c.props,null,a.mode,d);d.ref=sh(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||\nb.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==c.implementation)return b=zh(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function m(a,b,c,d,f){if(null===b||7!==b.tag)return b=Ah(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function q(a,b,c){if(\"string\"===typeof b&&\"\"!==b||\"number\"===typeof b)return b=xh(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case va:return c=yh(b.type,b.key,b.props,null,a.mode,c),\nc.ref=sh(a,null,b),c.return=a,c;case wa:return b=zh(b,a.mode,c),b.return=a,b;case Ha:var d=b._init;return q(a,d(b._payload),c)}if(eb(b)||Ka(b))return b=Ah(b,a.mode,c,null),b.return=a,b;th(a,b)}return null}function r(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c&&\"\"!==c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case va:return c.key===e?k(a,b,c,d):null;case wa:return c.key===e?l(a,b,c,d):null;case Ha:return e=c._init,r(a,\nb,e(c._payload),d)}if(eb(c)||Ka(c))return null!==e?null:m(a,b,c,d,null);th(a,c)}return null}function y(a,b,c,d,e){if(\"string\"===typeof d&&\"\"!==d||\"number\"===typeof d)return a=a.get(c)||null,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case va:return a=a.get(null===d.key?c:d.key)||null,k(b,a,d,e);case wa:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e);case Ha:var f=d._init;return y(a,b,c,f(d._payload),e)}if(eb(d)||Ka(d))return a=a.get(c)||null,m(b,a,d,e,null);th(b,d)}return null}\nfunction n(e,g,h,k){for(var l=null,m=null,u=g,w=g=0,x=null;null!==u&&w<h.length;w++){u.index>w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;w<h.length;w++)u=q(e,h[w],k),null!==u&&(g=f(u,g,w),null===m?l=u:m.sibling=u,m=u);I&&tg(e,w);return l}for(u=d(e,u);w<h.length;w++)x=y(u,e,w,h[w],k),null!==x&&(a&&null!==x.alternate&&u.delete(null===\nx.key?w:x.key),g=f(x,g,w),null===m?l=x:m.sibling=x,m=x);a&&u.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function t(e,g,h,k){var l=Ka(h);if(\"function\"!==typeof l)throw Error(p(150));h=l.call(h);if(null==h)throw Error(p(151));for(var u=l=null,m=g,w=g=0,x=null,n=h.next();null!==m&&!n.done;w++,n=h.next()){m.index>w?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;a<Nh.length;a++)Nh[a]._workInProgressVersionPrimary=null;Nh.length=0}var Ph=ua.ReactCurrentDispatcher,Qh=ua.ReactCurrentBatchConfig,Rh=0,N=null,O=null,P=null,Sh=!1,Th=!1,Uh=0,Vh=0;function Q(){throw Error(p(321));}function Wh(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!He(a[c],b[c]))return!1;return!0}\nfunction Xh(a,b,c,d,e,f){Rh=f;N=b;b.memoizedState=null;b.updateQueue=null;b.lanes=0;Ph.current=null===a||null===a.memoizedState?Yh:Zh;a=c(d,e);if(Th){f=0;do{Th=!1;Uh=0;if(25<=f)throw Error(p(301));f+=1;P=O=null;b.updateQueue=null;Ph.current=$h;a=c(d,e)}while(Th)}Ph.current=ai;b=null!==O&&null!==O.next;Rh=0;P=O=N=null;Sh=!1;if(b)throw Error(p(300));return a}function bi(){var a=0!==Uh;Uh=0;return a}\nfunction ci(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===P?N.memoizedState=P=a:P=P.next=a;return P}function di(){if(null===O){var a=N.alternate;a=null!==a?a.memoizedState:null}else a=O.next;var b=null===P?N.memoizedState:P.next;if(null!==b)P=b,O=a;else{if(null===a)throw Error(p(310));O=a;a={memoizedState:O.memoizedState,baseState:O.baseState,baseQueue:O.baseQueue,queue:O.queue,next:null};null===P?N.memoizedState=P=a:P=P.next=a}return P}\nfunction ei(a,b){return\"function\"===typeof b?b(a):b}\nfunction fi(a){var b=di(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=O,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){f=e.next;d=d.baseState;var h=g=null,k=null,l=f;do{var m=l.lane;if((Rh&m)===m)null!==k&&(k=k.next={lane:0,action:l.action,hasEagerState:l.hasEagerState,eagerState:l.eagerState,next:null}),d=l.hasEagerState?l.eagerState:a(d,l.action);else{var q={lane:m,action:l.action,hasEagerState:l.hasEagerState,\neagerState:l.eagerState,next:null};null===k?(h=k=q,g=d):k=k.next=q;N.lanes|=m;hh|=m}l=l.next}while(null!==l&&l!==f);null===k?g=d:k.next=h;He(d,b.memoizedState)||(Ug=!0);b.memoizedState=d;b.baseState=g;b.baseQueue=k;c.lastRenderedState=d}a=c.interleaved;if(null!==a){e=a;do f=e.lane,N.lanes|=f,hh|=f,e=e.next;while(e!==a)}else null===e&&(c.lanes=0);return[b.memoizedState,c.dispatch]}\nfunction gi(a){var b=di(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(Ug=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}function hi(){}\nfunction ii(a,b){var c=N,d=di(),e=b(),f=!He(d.memoizedState,e);f&&(d.memoizedState=e,Ug=!0);d=d.queue;ji(ki.bind(null,c,d,a),[a]);if(d.getSnapshot!==b||f||null!==P&&P.memoizedState.tag&1){c.flags|=2048;li(9,mi.bind(null,c,d,e,b),void 0,null);if(null===R)throw Error(p(349));0!==(Rh&30)||ni(c,b,e)}return e}function ni(a,b,c){a.flags|=16384;a={getSnapshot:b,value:c};b=N.updateQueue;null===b?(b={lastEffect:null,stores:null},N.updateQueue=b,b.stores=[a]):(c=b.stores,null===c?b.stores=[a]:c.push(a))}\nfunction mi(a,b,c,d){b.value=c;b.getSnapshot=d;oi(b)&&pi(a)}function ki(a,b,c){return c(function(){oi(b)&&pi(a)})}function oi(a){var b=a.getSnapshot;a=a.value;try{var c=b();return!He(a,c)}catch(d){return!0}}function pi(a){var b=Zg(a,1);null!==b&&mh(b,a,1,-1)}\nfunction qi(a){var b=ci();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:ei,lastRenderedState:a};b.queue=a;a=a.dispatch=ri.bind(null,N,a);return[b.memoizedState,a]}\nfunction li(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=N.updateQueue;null===b?(b={lastEffect:null,stores:null},N.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}function si(){return di().memoizedState}function ti(a,b,c,d){var e=ci();N.flags|=a;e.memoizedState=li(1|b,c,void 0,void 0===d?null:d)}\nfunction ui(a,b,c,d){var e=di();d=void 0===d?null:d;var f=void 0;if(null!==O){var g=O.memoizedState;f=g.destroy;if(null!==d&&Wh(d,g.deps)){e.memoizedState=li(b,c,f,d);return}}N.flags|=a;e.memoizedState=li(1|b,c,f,d)}function vi(a,b){return ti(8390656,8,a,b)}function ji(a,b){return ui(2048,8,a,b)}function wi(a,b){return ui(4,2,a,b)}function xi(a,b){return ui(4,4,a,b)}\nfunction yi(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function zi(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ui(4,4,yi.bind(null,b,a),c)}function Ai(){}function Bi(a,b){var c=di();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Wh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}\nfunction Ci(a,b){var c=di();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Wh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}function Di(a,b,c){if(0===(Rh&21))return a.baseState&&(a.baseState=!1,Ug=!0),a.memoizedState=c;He(c,b)||(c=yc(),N.lanes|=c,hh|=c,a.baseState=!0);return b}function Ei(a,b){var c=C;C=0!==c&&4>c?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0<c&&(b+=\"H\"+c.toString(32));b+=\":\"}else c=Vh++,b=\":\"+b+\"r\"+c.toString(32)+\":\";return a.memoizedState=b},unstable_isNewReconciler:!1},Zh={readContext:Vg,useCallback:Bi,useContext:Vg,useEffect:ji,useImperativeHandle:zi,useInsertionEffect:wi,useLayoutEffect:xi,useMemo:Ci,useReducer:fi,useRef:si,useState:function(){return fi(ei)},\nuseDebugValue:Ai,useDeferredValue:function(a){var b=di();return Di(b,O.memoizedState,a)},useTransition:function(){var a=fi(ei)[0],b=di().memoizedState;return[a,b]},useMutableSource:hi,useSyncExternalStore:ii,useId:Fi,unstable_isNewReconciler:!1},$h={readContext:Vg,useCallback:Bi,useContext:Vg,useEffect:ji,useImperativeHandle:zi,useInsertionEffect:wi,useLayoutEffect:xi,useMemo:Ci,useReducer:gi,useRef:si,useState:function(){return gi(ei)},useDebugValue:Ai,useDeferredValue:function(a){var b=di();return null===\nO?b.memoizedState=a:Di(b,O.memoizedState,a)},useTransition:function(){var a=gi(ei)[0],b=di().memoizedState;return[a,b]},useMutableSource:hi,useSyncExternalStore:ii,useId:Fi,unstable_isNewReconciler:!1};function Ki(a,b){try{var c=\"\",d=b;do c+=Pa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e,digest:null}}function Li(a,b,c){return{value:a,source:null,stack:null!=c?c:null,digest:null!=b?b:null}}\nfunction Mi(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Ni=\"function\"===typeof WeakMap?WeakMap:Map;function Oi(a,b,c){c=ch(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Pi||(Pi=!0,Qi=d);Mi(a,b)};return c}\nfunction Ri(a,b,c){c=ch(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){return d(e)};c.callback=function(){Mi(a,b)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){Mi(a,b);\"function\"!==typeof d&&(null===Si?Si=new Set([this]):Si.add(this));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}\nfunction Ti(a,b,c){var d=a.pingCache;if(null===d){d=a.pingCache=new Ni;var e=new Set;d.set(b,e)}else e=d.get(b),void 0===e&&(e=new Set,d.set(b,e));e.has(c)||(e.add(c),a=Ui.bind(null,a,b,c),b.then(a,a))}function Vi(a){do{var b;if(b=13===a.tag)b=a.memoizedState,b=null!==b?null!==b.dehydrated?!0:!1:!0;if(b)return a;a=a.return}while(null!==a);return null}\nfunction Wi(a,b,c,d,e){if(0===(a.mode&1))return a===b?a.flags|=65536:(a.flags|=128,c.flags|=131072,c.flags&=-52805,1===c.tag&&(null===c.alternate?c.tag=17:(b=ch(-1,1),b.tag=2,dh(c,b,1))),c.lanes|=1),a;a.flags|=65536;a.lanes=e;return a}var Xi=ua.ReactCurrentOwner,Ug=!1;function Yi(a,b,c,d){b.child=null===a?Ch(b,null,c,d):Bh(b,a.child,c,d)}\nfunction Zi(a,b,c,d,e){c=c.render;var f=b.ref;Tg(b,e);d=Xh(a,b,c,d,f,e);c=bi();if(null!==a&&!Ug)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,$i(a,b,e);I&&c&&vg(b);b.flags|=1;Yi(a,b,d,e);return b.child}\nfunction aj(a,b,c,d,e){if(null===a){var f=c.type;if(\"function\"===typeof f&&!bj(f)&&void 0===f.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=f,cj(a,b,f,d,e);a=yh(c.type,null,d,b,b.mode,e);a.ref=b.ref;a.return=b;return b.child=a}f=a.child;if(0===(a.lanes&e)){var g=f.memoizedProps;c=c.compare;c=null!==c?c:Ie;if(c(g,d)&&a.ref===b.ref)return $i(a,b,e)}b.flags|=1;a=wh(f,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction cj(a,b,c,d,e){if(null!==a){var f=a.memoizedProps;if(Ie(f,d)&&a.ref===b.ref)if(Ug=!1,b.pendingProps=d=f,0!==(a.lanes&e))0!==(a.flags&131072)&&(Ug=!0);else return b.lanes=a.lanes,$i(a,b,e)}return dj(a,b,c,d,e)}\nfunction ej(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if(\"hidden\"===d.mode)if(0===(b.mode&1))b.memoizedState={baseLanes:0,cachePool:null,transitions:null},G(fj,gj),gj|=c;else{if(0===(c&1073741824))return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a,cachePool:null,transitions:null},b.updateQueue=null,G(fj,gj),gj|=a,null;b.memoizedState={baseLanes:0,cachePool:null,transitions:null};d=null!==f?f.baseLanes:c;G(fj,gj);gj|=d}else null!==\nf?(d=f.baseLanes|c,b.memoizedState=null):d=c,G(fj,gj),gj|=d;Yi(a,b,e,c);return b.child}function hj(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=512,b.flags|=2097152}function dj(a,b,c,d,e){var f=Zf(c)?Xf:H.current;f=Yf(b,f);Tg(b,e);c=Xh(a,b,c,d,f,e);d=bi();if(null!==a&&!Ug)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,$i(a,b,e);I&&d&&vg(b);b.flags|=1;Yi(a,b,c,e);return b.child}\nfunction ij(a,b,c,d,e){if(Zf(c)){var f=!0;cg(b)}else f=!1;Tg(b,e);if(null===b.stateNode)jj(a,b),ph(b,c,d),rh(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=Vg(l):(l=Zf(c)?Xf:H.current,l=Yf(b,l));var m=c.getDerivedStateFromProps,q=\"function\"===typeof m||\"function\"===typeof g.getSnapshotBeforeUpdate;q||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||\n(h!==d||k!==l)&&qh(b,g,d,l);$g=!1;var r=b.memoizedState;g.state=r;gh(b,d,g,e);k=b.memoizedState;h!==d||r!==k||Wf.current||$g?(\"function\"===typeof m&&(kh(b,c,m,d),k=b.memoizedState),(h=$g||oh(b,c,h,d,r,k,l))?(q||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===typeof g.componentDidMount&&(b.flags|=4194308)):\n(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),d=!1)}else{g=b.stateNode;bh(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:Lg(b.type,h);g.props=l;q=b.pendingProps;r=g.context;k=c.contextType;\"object\"===typeof k&&null!==k?k=Vg(k):(k=Zf(c)?Xf:H.current,k=Yf(b,k));var y=c.getDerivedStateFromProps;(m=\"function\"===typeof y||\"function\"===typeof g.getSnapshotBeforeUpdate)||\n\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==q||r!==k)&&qh(b,g,d,k);$g=!1;r=b.memoizedState;g.state=r;gh(b,d,g,e);var n=b.memoizedState;h!==q||r!==n||Wf.current||$g?(\"function\"===typeof y&&(kh(b,c,y,d),n=b.memoizedState),(l=$g||oh(b,c,l,d,r,n,k)||!1)?(m||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,n,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&\ng.UNSAFE_componentWillUpdate(d,n,k)),\"function\"===typeof g.componentDidUpdate&&(b.flags|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=1024)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),b.memoizedProps=d,b.memoizedState=n),g.props=d,g.state=n,g.context=k,d=l):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===\na.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),d=!1)}return kj(a,b,c,d,f,e)}\nfunction kj(a,b,c,d,e,f){hj(a,b);var g=0!==(b.flags&128);if(!d&&!g)return e&&dg(b,c,!1),$i(a,b,f);d=b.stateNode;Xi.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=Bh(b,a.child,null,f),b.child=Bh(b,null,h,f)):Yi(a,b,h,f);b.memoizedState=d.state;e&&dg(b,c,!0);return b.child}function lj(a){var b=a.stateNode;b.pendingContext?ag(a,b.pendingContext,b.pendingContext!==b.context):b.context&&ag(a,b.context,!1);Ih(a,b.containerInfo)}\nfunction mj(a,b,c,d,e){Ig();Jg(e);b.flags|=256;Yi(a,b,c,d);return b.child}var nj={dehydrated:null,treeContext:null,retryLane:0};function oj(a){return{baseLanes:a,cachePool:null,transitions:null}}\nfunction pj(a,b,c){var d=b.pendingProps,e=M.current,f=!1,g=0!==(b.flags&128),h;(h=g)||(h=null!==a&&null===a.memoizedState?!1:0!==(e&2));if(h)f=!0,b.flags&=-129;else if(null===a||null!==a.memoizedState)e|=1;G(M,e&1);if(null===a){Eg(b);a=b.memoizedState;if(null!==a&&(a=a.dehydrated,null!==a))return 0===(b.mode&1)?b.lanes=1:\"$!\"===a.data?b.lanes=8:b.lanes=1073741824,null;g=d.children;a=d.fallback;return f?(d=b.mode,f=b.child,g={mode:\"hidden\",children:g},0===(d&1)&&null!==f?(f.childLanes=0,f.pendingProps=\ng):f=qj(g,d,0,null),a=Ah(a,d,c,null),f.return=b,a.return=b,f.sibling=a,b.child=f,b.child.memoizedState=oj(c),b.memoizedState=nj,a):rj(b,g)}e=a.memoizedState;if(null!==e&&(h=e.dehydrated,null!==h))return sj(a,b,g,d,h,e,c);if(f){f=d.fallback;g=b.mode;e=a.child;h=e.sibling;var k={mode:\"hidden\",children:d.children};0===(g&1)&&b.child!==e?(d=b.child,d.childLanes=0,d.pendingProps=k,b.deletions=null):(d=wh(e,k),d.subtreeFlags=e.subtreeFlags&14680064);null!==h?f=wh(h,f):(f=Ah(f,g,c,null),f.flags|=2);f.return=\nb;d.return=b;d.sibling=f;b.child=d;d=f;f=b.child;g=a.child.memoizedState;g=null===g?oj(c):{baseLanes:g.baseLanes|c,cachePool:null,transitions:g.transitions};f.memoizedState=g;f.childLanes=a.childLanes&~c;b.memoizedState=nj;return d}f=a.child;a=f.sibling;d=wh(f,{mode:\"visible\",children:d.children});0===(b.mode&1)&&(d.lanes=c);d.return=b;d.sibling=null;null!==a&&(c=b.deletions,null===c?(b.deletions=[a],b.flags|=16):c.push(a));b.child=d;b.memoizedState=null;return d}\nfunction rj(a,b){b=qj({mode:\"visible\",children:b},a.mode,0,null);b.return=a;return a.child=b}function tj(a,b,c,d){null!==d&&Jg(d);Bh(b,a.child,null,c);a=rj(b,b.pendingProps.children);a.flags|=2;b.memoizedState=null;return a}\nfunction sj(a,b,c,d,e,f,g){if(c){if(b.flags&256)return b.flags&=-257,d=Li(Error(p(422))),tj(a,b,g,d);if(null!==b.memoizedState)return b.child=a.child,b.flags|=128,null;f=d.fallback;e=b.mode;d=qj({mode:\"visible\",children:d.children},e,0,null);f=Ah(f,e,g,null);f.flags|=2;d.return=b;f.return=b;d.sibling=f;b.child=d;0!==(b.mode&1)&&Bh(b,a.child,null,g);b.child.memoizedState=oj(g);b.memoizedState=nj;return f}if(0===(b.mode&1))return tj(a,b,g,null);if(\"$!\"===e.data){d=e.nextSibling&&e.nextSibling.dataset;\nif(d)var h=d.dgst;d=h;f=Error(p(419));d=Li(f,d,void 0);return tj(a,b,g,d)}h=0!==(g&a.childLanes);if(Ug||h){d=R;if(null!==d){switch(g&-g){case 4:e=2;break;case 16:e=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:e=32;break;case 536870912:e=268435456;break;default:e=0}e=0!==(e&(d.suspendedLanes|g))?0:e;\n0!==e&&e!==f.retryLane&&(f.retryLane=e,Zg(a,e),mh(d,a,e,-1))}uj();d=Li(Error(p(421)));return tj(a,b,g,d)}if(\"$?\"===e.data)return b.flags|=128,b.child=a.child,b=vj.bind(null,a),e._reactRetry=b,null;a=f.treeContext;yg=Lf(e.nextSibling);xg=b;I=!0;zg=null;null!==a&&(og[pg++]=rg,og[pg++]=sg,og[pg++]=qg,rg=a.id,sg=a.overflow,qg=b);b=rj(b,d.children);b.flags|=4096;return b}function wj(a,b,c){a.lanes|=b;var d=a.alternate;null!==d&&(d.lanes|=b);Sg(a.return,b,c)}\nfunction xj(a,b,c,d,e){var f=a.memoizedState;null===f?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e}:(f.isBackwards=b,f.rendering=null,f.renderingStartTime=0,f.last=d,f.tail=c,f.tailMode=e)}\nfunction yj(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;Yi(a,b,d.children,c);d=M.current;if(0!==(d&2))d=d&1|2,b.flags|=128;else{if(null!==a&&0!==(a.flags&128))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&wj(a,c,b);else if(19===a.tag)wj(a,c,b);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}G(M,d);if(0===(b.mode&1))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===Mh(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);xj(b,!1,e,c,f);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===Mh(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}xj(b,!0,c,null,f);break;case \"together\":xj(b,!1,null,null,void 0);break;default:b.memoizedState=null}return b.child}\nfunction jj(a,b){0===(b.mode&1)&&null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2)}function $i(a,b,c){null!==a&&(b.dependencies=a.dependencies);hh|=b.lanes;if(0===(c&b.childLanes))return null;if(null!==a&&b.child!==a.child)throw Error(p(153));if(null!==b.child){a=b.child;c=wh(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=wh(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}\nfunction zj(a,b,c){switch(b.tag){case 3:lj(b);Ig();break;case 5:Kh(b);break;case 1:Zf(b.type)&&cg(b);break;case 4:Ih(b,b.stateNode.containerInfo);break;case 10:var d=b.type._context,e=b.memoizedProps.value;G(Mg,d._currentValue);d._currentValue=e;break;case 13:d=b.memoizedState;if(null!==d){if(null!==d.dehydrated)return G(M,M.current&1),b.flags|=128,null;if(0!==(c&b.child.childLanes))return pj(a,b,c);G(M,M.current&1);a=$i(a,b,c);return null!==a?a.sibling:null}G(M,M.current&1);break;case 19:d=0!==(c&\nb.childLanes);if(0!==(a.flags&128)){if(d)return yj(a,b,c);b.flags|=128}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);G(M,M.current);if(d)break;else return null;case 22:case 23:return b.lanes=0,ej(a,b,c)}return $i(a,b,c)}var Aj,Bj,Cj,Dj;\nAj=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};Bj=function(){};\nCj=function(a,b,c,d){var e=a.memoizedProps;if(e!==d){a=b.stateNode;Hh(Eh.current);var f=null;switch(c){case \"input\":e=Ya(a,e);d=Ya(a,d);f=[];break;case \"select\":e=A({},e,{value:void 0});d=A({},d,{value:void 0});f=[];break;case \"textarea\":e=gb(a,e);d=gb(a,d);f=[];break;default:\"function\"!==typeof e.onClick&&\"function\"===typeof d.onClick&&(a.onclick=Bf)}ub(c,d);var g;c=null;for(l in e)if(!d.hasOwnProperty(l)&&e.hasOwnProperty(l)&&null!=e[l])if(\"style\"===l){var h=e[l];for(g in h)h.hasOwnProperty(g)&&\n(c||(c={}),c[g]=\"\")}else\"dangerouslySetInnerHTML\"!==l&&\"children\"!==l&&\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&\"autoFocus\"!==l&&(ea.hasOwnProperty(l)?f||(f=[]):(f=f||[]).push(l,null));for(l in d){var k=d[l];h=null!=e?e[l]:void 0;if(d.hasOwnProperty(l)&&k!==h&&(null!=k||null!=h))if(\"style\"===l)if(h){for(g in h)!h.hasOwnProperty(g)||k&&k.hasOwnProperty(g)||(c||(c={}),c[g]=\"\");for(g in k)k.hasOwnProperty(g)&&h[g]!==k[g]&&(c||(c={}),c[g]=k[g])}else c||(f||(f=[]),f.push(l,\nc)),c=k;else\"dangerouslySetInnerHTML\"===l?(k=k?k.__html:void 0,h=h?h.__html:void 0,null!=k&&h!==k&&(f=f||[]).push(l,k)):\"children\"===l?\"string\"!==typeof k&&\"number\"!==typeof k||(f=f||[]).push(l,\"\"+k):\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&(ea.hasOwnProperty(l)?(null!=k&&\"onScroll\"===l&&D(\"scroll\",a),f||h===k||(f=[])):(f=f||[]).push(l,k))}c&&(f=f||[]).push(\"style\",c);var l=f;if(b.updateQueue=l)b.flags|=4}};Dj=function(a,b,c,d){c!==d&&(b.flags|=4)};\nfunction Ej(a,b){if(!I)switch(a.tailMode){case \"hidden\":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case \"collapsed\":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}\nfunction S(a){var b=null!==a.alternate&&a.alternate.child===a.child,c=0,d=0;if(b)for(var e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags&14680064,d|=e.flags&14680064,e.return=a,e=e.sibling;else for(e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags,d|=e.flags,e.return=a,e=e.sibling;a.subtreeFlags|=d;a.childLanes=c;return b}\nfunction Fj(a,b,c){var d=b.pendingProps;wg(b);switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return S(b),null;case 1:return Zf(b.type)&&$f(),S(b),null;case 3:d=b.stateNode;Jh();E(Wf);E(H);Oh();d.pendingContext&&(d.context=d.pendingContext,d.pendingContext=null);if(null===a||null===a.child)Gg(b)?b.flags|=4:null===a||a.memoizedState.isDehydrated&&0===(b.flags&256)||(b.flags|=1024,null!==zg&&(Gj(zg),zg=null));Bj(a,b);S(b);return null;case 5:Lh(b);var e=Hh(Gh.current);\nc=b.type;if(null!==a&&null!=b.stateNode)Cj(a,b,c,d,e),a.ref!==b.ref&&(b.flags|=512,b.flags|=2097152);else{if(!d){if(null===b.stateNode)throw Error(p(166));S(b);return null}a=Hh(Eh.current);if(Gg(b)){d=b.stateNode;c=b.type;var f=b.memoizedProps;d[Of]=b;d[Pf]=f;a=0!==(b.mode&1);switch(c){case \"dialog\":D(\"cancel\",d);D(\"close\",d);break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",d);break;case \"video\":case \"audio\":for(e=0;e<lf.length;e++)D(lf[e],d);break;case \"source\":D(\"error\",d);break;case \"img\":case \"image\":case \"link\":D(\"error\",\nd);D(\"load\",d);break;case \"details\":D(\"toggle\",d);break;case \"input\":Za(d,f);D(\"invalid\",d);break;case \"select\":d._wrapperState={wasMultiple:!!f.multiple};D(\"invalid\",d);break;case \"textarea\":hb(d,f),D(\"invalid\",d)}ub(c,f);e=null;for(var g in f)if(f.hasOwnProperty(g)){var h=f[g];\"children\"===g?\"string\"===typeof h?d.textContent!==h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,h,a),e=[\"children\",h]):\"number\"===typeof h&&d.textContent!==\"\"+h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,\nh,a),e=[\"children\",\"\"+h]):ea.hasOwnProperty(g)&&null!=h&&\"onScroll\"===g&&D(\"scroll\",d)}switch(c){case \"input\":Va(d);db(d,f,!0);break;case \"textarea\":Va(d);jb(d);break;case \"select\":case \"option\":break;default:\"function\"===typeof f.onClick&&(d.onclick=Bf)}d=e;b.updateQueue=d;null!==d&&(b.flags|=4)}else{g=9===e.nodeType?e:e.ownerDocument;\"http://www.w3.org/1999/xhtml\"===a&&(a=kb(c));\"http://www.w3.org/1999/xhtml\"===a?\"script\"===c?(a=g.createElement(\"div\"),a.innerHTML=\"<script>\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;e<lf.length;e++)D(lf[e],a);e=d;break;case \"source\":D(\"error\",a);e=d;break;case \"img\":case \"image\":case \"link\":D(\"error\",\na);D(\"load\",a);e=d;break;case \"details\":D(\"toggle\",a);e=d;break;case \"input\":Za(a,d);e=Ya(a,d);D(\"invalid\",a);break;case \"option\":e=d;break;case \"select\":a._wrapperState={wasMultiple:!!d.multiple};e=A({},d,{value:void 0});D(\"invalid\",a);break;case \"textarea\":hb(a,d);e=gb(a,d);D(\"invalid\",a);break;default:e=d}ub(c,e);h=e;for(f in h)if(h.hasOwnProperty(f)){var k=h[f];\"style\"===f?sb(a,k):\"dangerouslySetInnerHTML\"===f?(k=k?k.__html:void 0,null!=k&&nb(a,k)):\"children\"===f?\"string\"===typeof k?(\"textarea\"!==\nc||\"\"!==k)&&ob(a,k):\"number\"===typeof k&&ob(a,\"\"+k):\"suppressContentEditableWarning\"!==f&&\"suppressHydrationWarning\"!==f&&\"autoFocus\"!==f&&(ea.hasOwnProperty(f)?null!=k&&\"onScroll\"===f&&D(\"scroll\",a):null!=k&&ta(a,f,k,g))}switch(c){case \"input\":Va(a);db(a,d,!1);break;case \"textarea\":Va(a);jb(a);break;case \"option\":null!=d.value&&a.setAttribute(\"value\",\"\"+Sa(d.value));break;case \"select\":a.multiple=!!d.multiple;f=d.value;null!=f?fb(a,!!d.multiple,f,!1):null!=d.defaultValue&&fb(a,!!d.multiple,d.defaultValue,\n!0);break;default:\"function\"===typeof e.onClick&&(a.onclick=Bf)}switch(c){case \"button\":case \"input\":case \"select\":case \"textarea\":d=!!d.autoFocus;break a;case \"img\":d=!0;break a;default:d=!1}}d&&(b.flags|=4)}null!==b.ref&&(b.flags|=512,b.flags|=2097152)}S(b);return null;case 6:if(a&&null!=b.stateNode)Dj(a,b,a.memoizedProps,d);else{if(\"string\"!==typeof d&&null===b.stateNode)throw Error(p(166));c=Hh(Gh.current);Hh(Eh.current);if(Gg(b)){d=b.stateNode;c=b.memoizedProps;d[Of]=b;if(f=d.nodeValue!==c)if(a=\nxg,null!==a)switch(a.tag){case 3:Af(d.nodeValue,c,0!==(a.mode&1));break;case 5:!0!==a.memoizedProps.suppressHydrationWarning&&Af(d.nodeValue,c,0!==(a.mode&1))}f&&(b.flags|=4)}else d=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),d[Of]=b,b.stateNode=d}S(b);return null;case 13:E(M);d=b.memoizedState;if(null===a||null!==a.memoizedState&&null!==a.memoizedState.dehydrated){if(I&&null!==yg&&0!==(b.mode&1)&&0===(b.flags&128))Hg(),Ig(),b.flags|=98560,f=!1;else if(f=Gg(b),null!==d&&null!==d.dehydrated){if(null===\na){if(!f)throw Error(p(318));f=b.memoizedState;f=null!==f?f.dehydrated:null;if(!f)throw Error(p(317));f[Of]=b}else Ig(),0===(b.flags&128)&&(b.memoizedState=null),b.flags|=4;S(b);f=!1}else null!==zg&&(Gj(zg),zg=null),f=!0;if(!f)return b.flags&65536?b:null}if(0!==(b.flags&128))return b.lanes=c,b;d=null!==d;d!==(null!==a&&null!==a.memoizedState)&&d&&(b.child.flags|=8192,0!==(b.mode&1)&&(null===a||0!==(M.current&1)?0===T&&(T=3):uj()));null!==b.updateQueue&&(b.flags|=4);S(b);return null;case 4:return Jh(),\nBj(a,b),null===a&&sf(b.stateNode.containerInfo),S(b),null;case 10:return Rg(b.type._context),S(b),null;case 17:return Zf(b.type)&&$f(),S(b),null;case 19:E(M);f=b.memoizedState;if(null===f)return S(b),null;d=0!==(b.flags&128);g=f.rendering;if(null===g)if(d)Ej(f,!1);else{if(0!==T||null!==a&&0!==(a.flags&128))for(a=b.child;null!==a;){g=Mh(a);if(null!==g){b.flags|=128;Ej(f,!1);d=g.updateQueue;null!==d&&(b.updateQueue=d,b.flags|=4);b.subtreeFlags=0;d=c;for(c=b.child;null!==c;)f=c,a=d,f.flags&=14680066,\ng=f.alternate,null===g?(f.childLanes=0,f.lanes=a,f.child=null,f.subtreeFlags=0,f.memoizedProps=null,f.memoizedState=null,f.updateQueue=null,f.dependencies=null,f.stateNode=null):(f.childLanes=g.childLanes,f.lanes=g.lanes,f.child=g.child,f.subtreeFlags=0,f.deletions=null,f.memoizedProps=g.memoizedProps,f.memoizedState=g.memoizedState,f.updateQueue=g.updateQueue,f.type=g.type,a=g.dependencies,f.dependencies=null===a?null:{lanes:a.lanes,firstContext:a.firstContext}),c=c.sibling;G(M,M.current&1|2);return b.child}a=\na.sibling}null!==f.tail&&B()>Hj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;d<c.length;d++){var e=c[d];try{var f=a,g=b,h=g;a:for(;null!==h;){switch(h.tag){case 5:X=h.stateNode;Yj=!1;break a;case 3:X=h.stateNode.containerInfo;Yj=!0;break a;case 4:X=h.stateNode.containerInfo;Yj=!0;break a}h=h.return}if(null===X)throw Error(p(160));ak(f,g,e);X=null;Yj=!1;var k=e.alternate;null!==k&&(k.return=null);e.return=null}catch(l){W(e,b,l)}}if(b.subtreeFlags&12854)for(b=b.child;null!==b;)ek(b,a),b=b.sibling}\nfunction ek(a,b){var c=a.alternate,d=a.flags;switch(a.tag){case 0:case 11:case 14:case 15:dk(b,a);fk(a);if(d&4){try{Qj(3,a,a.return),Rj(3,a)}catch(t){W(a,a.return,t)}try{Qj(5,a,a.return)}catch(t){W(a,a.return,t)}}break;case 1:dk(b,a);fk(a);d&512&&null!==c&&Mj(c,c.return);break;case 5:dk(b,a);fk(a);d&512&&null!==c&&Mj(c,c.return);if(a.flags&32){var e=a.stateNode;try{ob(e,\"\")}catch(t){W(a,a.return,t)}}if(d&4&&(e=a.stateNode,null!=e)){var f=a.memoizedProps,g=null!==c?c.memoizedProps:f,h=a.type,k=a.updateQueue;\na.updateQueue=null;if(null!==k)try{\"input\"===h&&\"radio\"===f.type&&null!=f.name&&ab(e,f);vb(h,g);var l=vb(h,f);for(g=0;g<k.length;g+=2){var m=k[g],q=k[g+1];\"style\"===m?sb(e,q):\"dangerouslySetInnerHTML\"===m?nb(e,q):\"children\"===m?ob(e,q):ta(e,m,q,l)}switch(h){case \"input\":bb(e,f);break;case \"textarea\":ib(e,f);break;case \"select\":var r=e._wrapperState.wasMultiple;e._wrapperState.wasMultiple=!!f.multiple;var y=f.value;null!=y?fb(e,!!f.multiple,y,!1):r!==!!f.multiple&&(null!=f.defaultValue?fb(e,!!f.multiple,\nf.defaultValue,!0):fb(e,!!f.multiple,f.multiple?[]:\"\",!1))}e[Pf]=f}catch(t){W(a,a.return,t)}}break;case 6:dk(b,a);fk(a);if(d&4){if(null===a.stateNode)throw Error(p(162));e=a.stateNode;f=a.memoizedProps;try{e.nodeValue=f}catch(t){W(a,a.return,t)}}break;case 3:dk(b,a);fk(a);if(d&4&&null!==c&&c.memoizedState.isDehydrated)try{bd(b.containerInfo)}catch(t){W(a,a.return,t)}break;case 4:dk(b,a);fk(a);break;case 13:dk(b,a);fk(a);e=a.child;e.flags&8192&&(f=null!==e.memoizedState,e.stateNode.isHidden=f,!f||\nnull!==e.alternate&&null!==e.alternate.memoizedState||(gk=B()));d&4&&bk(a);break;case 22:m=null!==c&&null!==c.memoizedState;a.mode&1?(U=(l=U)||m,dk(b,a),U=l):dk(b,a);fk(a);if(d&8192){l=null!==a.memoizedState;if((a.stateNode.isHidden=l)&&!m&&0!==(a.mode&1))for(V=a,m=a.child;null!==m;){for(q=V=m;null!==V;){r=V;y=r.child;switch(r.tag){case 0:case 11:case 14:case 15:Qj(4,r,r.return);break;case 1:Mj(r,r.return);var n=r.stateNode;if(\"function\"===typeof n.componentWillUnmount){d=r;c=r.return;try{b=d,n.props=\nb.memoizedProps,n.state=b.memoizedState,n.componentWillUnmount()}catch(t){W(d,c,t)}}break;case 5:Mj(r,r.return);break;case 22:if(null!==r.memoizedState){hk(q);continue}}null!==y?(y.return=r,V=y):hk(q)}m=m.sibling}a:for(m=null,q=a;;){if(5===q.tag){if(null===m){m=q;try{e=q.stateNode,l?(f=e.style,\"function\"===typeof f.setProperty?f.setProperty(\"display\",\"none\",\"important\"):f.display=\"none\"):(h=q.stateNode,k=q.memoizedProps.style,g=void 0!==k&&null!==k&&k.hasOwnProperty(\"display\")?k.display:null,h.style.display=\nrb(\"display\",g))}catch(t){W(a,a.return,t)}}}else if(6===q.tag){if(null===m)try{q.stateNode.nodeValue=l?\"\":q.memoizedProps}catch(t){W(a,a.return,t)}}else if((22!==q.tag&&23!==q.tag||null===q.memoizedState||q===a)&&null!==q.child){q.child.return=q;q=q.child;continue}if(q===a)break a;for(;null===q.sibling;){if(null===q.return||q.return===a)break a;m===q&&(m=null);q=q.return}m===q&&(m=null);q.sibling.return=q.return;q=q.sibling}}break;case 19:dk(b,a);fk(a);d&4&&bk(a);break;case 21:break;default:dk(b,\na),fk(a)}}function fk(a){var b=a.flags;if(b&2){try{a:{for(var c=a.return;null!==c;){if(Uj(c)){var d=c;break a}c=c.return}throw Error(p(160));}switch(d.tag){case 5:var e=d.stateNode;d.flags&32&&(ob(e,\"\"),d.flags&=-33);var f=Vj(a);Xj(a,f,e);break;case 3:case 4:var g=d.stateNode.containerInfo,h=Vj(a);Wj(a,h,g);break;default:throw Error(p(161));}}catch(k){W(a,a.return,k)}a.flags&=-3}b&4096&&(a.flags&=-4097)}function ik(a,b,c){V=a;jk(a,b,c)}\nfunction jk(a,b,c){for(var d=0!==(a.mode&1);null!==V;){var e=V,f=e.child;if(22===e.tag&&d){var g=null!==e.memoizedState||Kj;if(!g){var h=e.alternate,k=null!==h&&null!==h.memoizedState||U;h=Kj;var l=U;Kj=g;if((U=k)&&!l)for(V=e;null!==V;)g=V,k=g.child,22===g.tag&&null!==g.memoizedState?kk(e):null!==k?(k.return=g,V=k):kk(e);for(;null!==f;)V=f,jk(f,b,c),f=f.sibling;V=e;Kj=h;U=l}lk(a,b,c)}else 0!==(e.subtreeFlags&8772)&&null!==f?(f.return=e,V=f):lk(a,b,c)}}\nfunction lk(a){for(;null!==V;){var b=V;if(0!==(b.flags&8772)){var c=b.alternate;try{if(0!==(b.flags&8772))switch(b.tag){case 0:case 11:case 15:U||Rj(5,b);break;case 1:var d=b.stateNode;if(b.flags&4&&!U)if(null===c)d.componentDidMount();else{var e=b.elementType===b.type?c.memoizedProps:Lg(b.type,c.memoizedProps);d.componentDidUpdate(e,c.memoizedState,d.__reactInternalSnapshotBeforeUpdate)}var f=b.updateQueue;null!==f&&ih(b,f,d);break;case 3:var g=b.updateQueue;if(null!==g){c=null;if(null!==b.child)switch(b.child.tag){case 5:c=\nb.child.stateNode;break;case 1:c=b.child.stateNode}ih(b,g,c)}break;case 5:var h=b.stateNode;if(null===c&&b.flags&4){c=h;var k=b.memoizedProps;switch(b.type){case \"button\":case \"input\":case \"select\":case \"textarea\":k.autoFocus&&c.focus();break;case \"img\":k.src&&(c.src=k.src)}}break;case 6:break;case 4:break;case 12:break;case 13:if(null===b.memoizedState){var l=b.alternate;if(null!==l){var m=l.memoizedState;if(null!==m){var q=m.dehydrated;null!==q&&bd(q)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;\ndefault:throw Error(p(163));}U||b.flags&512&&Sj(b)}catch(r){W(b,b.return,r)}}if(b===a){V=null;break}c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}function hk(a){for(;null!==V;){var b=V;if(b===a){V=null;break}var c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}\nfunction kk(a){for(;null!==V;){var b=V;try{switch(b.tag){case 0:case 11:case 15:var c=b.return;try{Rj(4,b)}catch(k){W(b,c,k)}break;case 1:var d=b.stateNode;if(\"function\"===typeof d.componentDidMount){var e=b.return;try{d.componentDidMount()}catch(k){W(b,e,k)}}var f=b.return;try{Sj(b)}catch(k){W(b,f,k)}break;case 5:var g=b.return;try{Sj(b)}catch(k){W(b,g,k)}}}catch(k){W(b,b.return,k)}if(b===a){V=null;break}var h=b.sibling;if(null!==h){h.return=b.return;V=h;break}V=b.return}}\nvar mk=Math.ceil,nk=ua.ReactCurrentDispatcher,ok=ua.ReactCurrentOwner,pk=ua.ReactCurrentBatchConfig,K=0,R=null,Y=null,Z=0,gj=0,fj=Uf(0),T=0,qk=null,hh=0,rk=0,sk=0,tk=null,uk=null,gk=0,Hj=Infinity,vk=null,Pi=!1,Qi=null,Si=null,wk=!1,xk=null,yk=0,zk=0,Ak=null,Bk=-1,Ck=0;function L(){return 0!==(K&6)?B():-1!==Bk?Bk:Bk=B()}\nfunction lh(a){if(0===(a.mode&1))return 1;if(0!==(K&2)&&0!==Z)return Z&-Z;if(null!==Kg.transition)return 0===Ck&&(Ck=yc()),Ck;a=C;if(0!==a)return a;a=window.event;a=void 0===a?16:jd(a.type);return a}function mh(a,b,c,d){if(50<zk)throw zk=0,Ak=null,Error(p(185));Ac(a,c,d);if(0===(K&2)||a!==R)a===R&&(0===(K&2)&&(rk|=c),4===T&&Dk(a,Z)),Ek(a,d),1===c&&0===K&&0===(b.mode&1)&&(Hj=B()+500,fg&&jg())}\nfunction Ek(a,b){var c=a.callbackNode;wc(a,b);var d=uc(a,a===R?Z:0);if(0===d)null!==c&&bc(c),a.callbackNode=null,a.callbackPriority=0;else if(b=d&-d,a.callbackPriority!==b){null!=c&&bc(c);if(1===b)0===a.tag?ig(Fk.bind(null,a)):hg(Fk.bind(null,a)),Jf(function(){0===(K&6)&&jg()}),c=null;else{switch(Dc(d)){case 1:c=fc;break;case 4:c=gc;break;case 16:c=hc;break;case 536870912:c=jc;break;default:c=hc}c=Gk(c,Hk.bind(null,a))}a.callbackPriority=b;a.callbackNode=c}}\nfunction Hk(a,b){Bk=-1;Ck=0;if(0!==(K&6))throw Error(p(327));var c=a.callbackNode;if(Ik()&&a.callbackNode!==c)return null;var d=uc(a,a===R?Z:0);if(0===d)return null;if(0!==(d&30)||0!==(d&a.expiredLanes)||b)b=Jk(a,d);else{b=d;var e=K;K|=2;var f=Kk();if(R!==a||Z!==b)vk=null,Hj=B()+500,Lk(a,b);do try{Mk();break}catch(h){Nk(a,h)}while(1);Qg();nk.current=f;K=e;null!==Y?b=0:(R=null,Z=0,b=T)}if(0!==b){2===b&&(e=xc(a),0!==e&&(d=e,b=Ok(a,e)));if(1===b)throw c=qk,Lk(a,0),Dk(a,d),Ek(a,B()),c;if(6===b)Dk(a,d);\nelse{e=a.current.alternate;if(0===(d&30)&&!Pk(e)&&(b=Jk(a,d),2===b&&(f=xc(a),0!==f&&(d=f,b=Ok(a,f))),1===b))throw c=qk,Lk(a,0),Dk(a,d),Ek(a,B()),c;a.finishedWork=e;a.finishedLanes=d;switch(b){case 0:case 1:throw Error(p(345));case 2:Qk(a,uk,vk);break;case 3:Dk(a,d);if((d&130023424)===d&&(b=gk+500-B(),10<b)){if(0!==uc(a,0))break;e=a.suspendedLanes;if((e&d)!==d){L();a.pingedLanes|=a.suspendedLanes&e;break}a.timeoutHandle=Ff(Qk.bind(null,a,uk,vk),b);break}Qk(a,uk,vk);break;case 4:Dk(a,d);if((d&4194240)===\nd)break;b=a.eventTimes;for(e=-1;0<d;){var g=31-oc(d);f=1<<g;g=b[g];g>e&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10<d){a.timeoutHandle=Ff(Qk.bind(null,a,uk,vk),d);break}Qk(a,uk,vk);break;case 5:Qk(a,uk,vk);break;default:throw Error(p(329));}}}Ek(a,B());return a.callbackNode===c?Hk.bind(null,a):null}\nfunction Ok(a,b){var c=tk;a.current.memoizedState.isDehydrated&&(Lk(a,b).flags|=256);a=Jk(a,b);2!==a&&(b=uk,uk=c,null!==b&&Gj(b));return a}function Gj(a){null===uk?uk=a:uk.push.apply(uk,a)}\nfunction Pk(a){for(var b=a;;){if(b.flags&16384){var c=b.updateQueue;if(null!==c&&(c=c.stores,null!==c))for(var d=0;d<c.length;d++){var e=c[d],f=e.getSnapshot;e=e.value;try{if(!He(f(),e))return!1}catch(g){return!1}}}c=b.child;if(b.subtreeFlags&16384&&null!==c)c.return=b,b=c;else{if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return!0;b=b.return}b.sibling.return=b.return;b=b.sibling}}return!0}\nfunction Dk(a,b){b&=~sk;b&=~rk;a.suspendedLanes|=b;a.pingedLanes&=~b;for(a=a.expirationTimes;0<b;){var c=31-oc(b),d=1<<c;a[c]=-1;b&=~d}}function Fk(a){if(0!==(K&6))throw Error(p(327));Ik();var b=uc(a,0);if(0===(b&1))return Ek(a,B()),null;var c=Jk(a,b);if(0!==a.tag&&2===c){var d=xc(a);0!==d&&(b=d,c=Ok(a,d))}if(1===c)throw c=qk,Lk(a,0),Dk(a,b),Ek(a,B()),c;if(6===c)throw Error(p(345));a.finishedWork=a.current.alternate;a.finishedLanes=b;Qk(a,uk,vk);Ek(a,B());return null}\nfunction Rk(a,b){var c=K;K|=1;try{return a(b)}finally{K=c,0===K&&(Hj=B()+500,fg&&jg())}}function Sk(a){null!==xk&&0===xk.tag&&0===(K&6)&&Ik();var b=K;K|=1;var c=pk.transition,d=C;try{if(pk.transition=null,C=1,a)return a()}finally{C=d,pk.transition=c,K=b,0===(K&6)&&jg()}}function Ij(){gj=fj.current;E(fj)}\nfunction Lk(a,b){a.finishedWork=null;a.finishedLanes=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,Gf(c));if(null!==Y)for(c=Y.return;null!==c;){var d=c;wg(d);switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&$f();break;case 3:Jh();E(Wf);E(H);Oh();break;case 5:Lh(d);break;case 4:Jh();break;case 13:E(M);break;case 19:E(M);break;case 10:Rg(d.type._context);break;case 22:case 23:Ij()}c=c.return}R=a;Y=a=wh(a.current,null);Z=gj=b;T=0;qk=null;sk=rk=hh=0;uk=tk=null;if(null!==Wg){for(b=\n0;b<Wg.length;b++)if(c=Wg[b],d=c.interleaved,null!==d){c.interleaved=null;var e=d.next,f=c.pending;if(null!==f){var g=f.next;f.next=e;d.next=g}c.pending=d}Wg=null}return a}\nfunction Nk(a,b){do{var c=Y;try{Qg();Ph.current=ai;if(Sh){for(var d=N.memoizedState;null!==d;){var e=d.queue;null!==e&&(e.pending=null);d=d.next}Sh=!1}Rh=0;P=O=N=null;Th=!1;Uh=0;ok.current=null;if(null===c||null===c.return){T=1;qk=b;Y=null;break}a:{var f=a,g=c.return,h=c,k=b;b=Z;h.flags|=32768;if(null!==k&&\"object\"===typeof k&&\"function\"===typeof k.then){var l=k,m=h,q=m.tag;if(0===(m.mode&1)&&(0===q||11===q||15===q)){var r=m.alternate;r?(m.updateQueue=r.updateQueue,m.memoizedState=r.memoizedState,\nm.lanes=r.lanes):(m.updateQueue=null,m.memoizedState=null)}var y=Vi(g);if(null!==y){y.flags&=-257;Wi(y,g,h,f,b);y.mode&1&&Ti(f,l,b);b=y;k=l;var n=b.updateQueue;if(null===n){var t=new Set;t.add(k);b.updateQueue=t}else n.add(k);break a}else{if(0===(b&1)){Ti(f,l,b);uj();break a}k=Error(p(426))}}else if(I&&h.mode&1){var J=Vi(g);if(null!==J){0===(J.flags&65536)&&(J.flags|=256);Wi(J,g,h,f,b);Jg(Ki(k,h));break a}}f=k=Ki(k,h);4!==T&&(T=2);null===tk?tk=[f]:tk.push(f);f=g;do{switch(f.tag){case 3:f.flags|=65536;\nb&=-b;f.lanes|=b;var x=Oi(f,k,b);fh(f,x);break a;case 1:h=k;var w=f.type,u=f.stateNode;if(0===(f.flags&128)&&(\"function\"===typeof w.getDerivedStateFromError||null!==u&&\"function\"===typeof u.componentDidCatch&&(null===Si||!Si.has(u)))){f.flags|=65536;b&=-b;f.lanes|=b;var F=Ri(f,h,b);fh(f,F);break a}}f=f.return}while(null!==f)}Tk(c)}catch(na){b=na;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}function Kk(){var a=nk.current;nk.current=ai;return null===a?ai:a}\nfunction uj(){if(0===T||3===T||2===T)T=4;null===R||0===(hh&268435455)&&0===(rk&268435455)||Dk(R,Z)}function Jk(a,b){var c=K;K|=2;var d=Kk();if(R!==a||Z!==b)vk=null,Lk(a,b);do try{Uk();break}catch(e){Nk(a,e)}while(1);Qg();K=c;nk.current=d;if(null!==Y)throw Error(p(261));R=null;Z=0;return T}function Uk(){for(;null!==Y;)Vk(Y)}function Mk(){for(;null!==Y&&!cc();)Vk(Y)}function Vk(a){var b=Wk(a.alternate,a,gj);a.memoizedProps=a.pendingProps;null===b?Tk(a):Y=b;ok.current=null}\nfunction Tk(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&32768)){if(c=Fj(c,b,gj),null!==c){Y=c;return}}else{c=Jj(c,b);if(null!==c){c.flags&=32767;Y=c;return}if(null!==a)a.flags|=32768,a.subtreeFlags=0,a.deletions=null;else{T=6;Y=null;return}}b=b.sibling;if(null!==b){Y=b;return}Y=b=a}while(null!==b);0===T&&(T=5)}function Qk(a,b,c){var d=C,e=pk.transition;try{pk.transition=null,C=1,Xk(a,b,c,d)}finally{pk.transition=e,C=d}return null}\nfunction Xk(a,b,c,d){do Ik();while(null!==xk);if(0!==(K&6))throw Error(p(327));c=a.finishedWork;var e=a.finishedLanes;if(null===c)return null;a.finishedWork=null;a.finishedLanes=0;if(c===a.current)throw Error(p(177));a.callbackNode=null;a.callbackPriority=0;var f=c.lanes|c.childLanes;Bc(a,f);a===R&&(Y=R=null,Z=0);0===(c.subtreeFlags&2064)&&0===(c.flags&2064)||wk||(wk=!0,Gk(hc,function(){Ik();return null}));f=0!==(c.flags&15990);if(0!==(c.subtreeFlags&15990)||f){f=pk.transition;pk.transition=null;\nvar g=C;C=1;var h=K;K|=4;ok.current=null;Pj(a,c);ek(c,a);Oe(Df);dd=!!Cf;Df=Cf=null;a.current=c;ik(c,a,e);dc();K=h;C=g;pk.transition=f}else a.current=c;wk&&(wk=!1,xk=a,yk=e);f=a.pendingLanes;0===f&&(Si=null);mc(c.stateNode,d);Ek(a,B());if(null!==b)for(d=a.onRecoverableError,c=0;c<b.length;c++)e=b[c],d(e.value,{componentStack:e.stack,digest:e.digest});if(Pi)throw Pi=!1,a=Qi,Qi=null,a;0!==(yk&1)&&0!==a.tag&&Ik();f=a.pendingLanes;0!==(f&1)?a===Ak?zk++:(zk=0,Ak=a):zk=0;jg();return null}\nfunction Ik(){if(null!==xk){var a=Dc(yk),b=pk.transition,c=C;try{pk.transition=null;C=16>a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;k<h.length;k++){var l=h[k];for(V=l;null!==V;){var m=V;switch(m.tag){case 0:case 11:case 15:Qj(8,m,f)}var q=m.child;if(null!==q)q.return=m,V=q;else for(;null!==V;){m=V;var r=m.sibling,y=m.return;Tj(m);if(m===\nl){V=null;break}if(null!==r){r.return=y;V=r;break}V=y}}}var n=f.alternate;if(null!==n){var t=n.child;if(null!==t){n.child=null;do{var J=t.sibling;t.sibling=null;t=J}while(null!==t)}}V=f}}if(0!==(f.subtreeFlags&2064)&&null!==g)g.return=f,V=g;else b:for(;null!==V;){f=V;if(0!==(f.flags&2048))switch(f.tag){case 0:case 11:case 15:Qj(9,f,f.return)}var x=f.sibling;if(null!==x){x.return=f.return;V=x;break b}V=f.return}}var w=a.current;for(V=w;null!==V;){g=V;var u=g.child;if(0!==(g.subtreeFlags&2064)&&null!==\nu)u.return=g,V=u;else b:for(g=w;null!==V;){h=V;if(0!==(h.flags&2048))try{switch(h.tag){case 0:case 11:case 15:Rj(9,h)}}catch(na){W(h,h.return,na)}if(h===g){V=null;break b}var F=h.sibling;if(null!==F){F.return=h.return;V=F;break b}V=h.return}}K=e;jg();if(lc&&\"function\"===typeof lc.onPostCommitFiberRoot)try{lc.onPostCommitFiberRoot(kc,a)}catch(na){}d=!0}return d}finally{C=c,pk.transition=b}}return!1}function Yk(a,b,c){b=Ki(c,b);b=Oi(a,b,1);a=dh(a,b,1);b=L();null!==a&&(Ac(a,1,b),Ek(a,b))}\nfunction W(a,b,c){if(3===a.tag)Yk(a,a,c);else for(;null!==b;){if(3===b.tag){Yk(b,a,c);break}else if(1===b.tag){var d=b.stateNode;if(\"function\"===typeof b.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===Si||!Si.has(d))){a=Ki(c,a);a=Ri(b,a,1);b=dh(b,a,1);a=L();null!==b&&(Ac(b,1,a),Ek(b,a));break}}b=b.return}}\nfunction Ui(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);b=L();a.pingedLanes|=a.suspendedLanes&c;R===a&&(Z&c)===c&&(4===T||3===T&&(Z&130023424)===Z&&500>B()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:wa,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nfunction el(a){if(!a)return Vf;a=a._reactInternals;a:{if(Vb(a)!==a||1!==a.tag)throw Error(p(170));var b=a;do{switch(b.tag){case 3:b=b.stateNode.context;break a;case 1:if(Zf(b.type)){b=b.stateNode.__reactInternalMemoizedMergedChildContext;break a}}b=b.return}while(null!==b);throw Error(p(171));}if(1===a.tag){var c=a.type;if(Zf(c))return bg(a,c,b)}return b}\nfunction fl(a,b,c,d,e,f,g,h,k){a=cl(c,d,!0,a,e,f,g,h,k);a.context=el(null);c=a.current;d=L();e=lh(c);f=ch(d,e);f.callback=void 0!==b&&null!==b?b:null;dh(c,f,e);a.current.lanes=e;Ac(a,e,d);Ek(a,d);return a}function gl(a,b,c,d){var e=b.current,f=L(),g=lh(e);c=el(c);null===b.context?b.context=c:b.pendingContext=c;b=ch(f,g);b.payload={element:a};d=void 0===d?null:d;null!==d&&(b.callback=d);a=dh(e,b,g);null!==a&&(mh(a,e,g,f),eh(a,e,g));return g}\nfunction hl(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function il(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;a.retryLane=0!==c&&c<b?c:b}}function jl(a,b){il(a,b);(a=a.alternate)&&il(a,b)}function kl(){return null}var ll=\"function\"===typeof reportError?reportError:function(a){console.error(a)};function ml(a){this._internalRoot=a}\nnl.prototype.render=ml.prototype.render=function(a){var b=this._internalRoot;if(null===b)throw Error(p(409));gl(a,b,null,null)};nl.prototype.unmount=ml.prototype.unmount=function(){var a=this._internalRoot;if(null!==a){this._internalRoot=null;var b=a.containerInfo;Sk(function(){gl(null,a,null,null)});b[uf]=null}};function nl(a){this._internalRoot=a}\nnl.prototype.unstable_scheduleHydration=function(a){if(a){var b=Hc();a={blockedOn:null,target:a,priority:b};for(var c=0;c<Qc.length&&0!==b&&b<Qc[c].priority;c++);Qc.splice(c,0,a);0===c&&Vc(a)}};function ol(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType)}function pl(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}function ql(){}\nfunction rl(a,b,c,d,e){if(e){if(\"function\"===typeof d){var f=d;d=function(){var a=hl(g);f.call(a)}}var g=fl(b,d,a,0,null,!1,!1,\"\",ql);a._reactRootContainer=g;a[uf]=g.current;sf(8===a.nodeType?a.parentNode:a);Sk();return g}for(;e=a.lastChild;)a.removeChild(e);if(\"function\"===typeof d){var h=d;d=function(){var a=hl(k);h.call(a)}}var k=cl(a,0,!1,null,null,!1,!1,\"\",ql);a._reactRootContainer=k;a[uf]=k.current;sf(8===a.nodeType?a.parentNode:a);Sk(function(){gl(b,k,c,d)});return k}\nfunction sl(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f;if(\"function\"===typeof e){var h=e;e=function(){var a=hl(g);h.call(a)}}gl(b,g,a,e)}else g=rl(c,b,a,e,d);return hl(g)}Ec=function(a){switch(a.tag){case 3:var b=a.stateNode;if(b.current.memoizedState.isDehydrated){var c=tc(b.pendingLanes);0!==c&&(Cc(b,c|1),Ek(b,B()),0===(K&6)&&(Hj=B()+500,jg()))}break;case 13:Sk(function(){var b=Zg(a,1);if(null!==b){var c=L();mh(b,a,1,c)}}),jl(a,1)}};\nFc=function(a){if(13===a.tag){var b=Zg(a,134217728);if(null!==b){var c=L();mh(b,a,134217728,c)}jl(a,134217728)}};Gc=function(a){if(13===a.tag){var b=lh(a),c=Zg(a,b);if(null!==c){var d=L();mh(c,a,b,d)}jl(a,b)}};Hc=function(){return C};Ic=function(a,b){var c=C;try{return C=a,b()}finally{C=c}};\nyb=function(a,b,c){switch(b){case \"input\":bb(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Db(d);if(!e)throw Error(p(90));Wa(d);bb(d,e)}}}break;case \"textarea\":ib(a,c);break;case \"select\":b=c.value,null!=b&&fb(a,!!c.multiple,b,!1)}};Gb=Rk;Hb=Sk;\nvar tl={usingClientEntryPoint:!1,Events:[Cb,ue,Db,Eb,Fb,Rk]},ul={findFiberByHostInstance:Wc,bundleType:0,version:\"18.2.0\",rendererPackageName:\"react-dom\"};\nvar vl={bundleType:ul.bundleType,version:ul.version,rendererPackageName:ul.rendererPackageName,rendererConfig:ul.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ua.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=Zb(a);return null===a?null:a.stateNode},findFiberByHostInstance:ul.findFiberByHostInstance||\nkl,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:\"18.2.0-next-9e3b772b8-20220608\"};if(\"undefined\"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var wl=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!wl.isDisabled&&wl.supportsFiber)try{kc=wl.inject(vl),lc=wl}catch(a){}}exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=tl;\nexports.createPortal=function(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!ol(b))throw Error(p(200));return dl(a,b,null,c)};exports.createRoot=function(a,b){if(!ol(a))throw Error(p(299));var c=!1,d=\"\",e=ll;null!==b&&void 0!==b&&(!0===b.unstable_strictMode&&(c=!0),void 0!==b.identifierPrefix&&(d=b.identifierPrefix),void 0!==b.onRecoverableError&&(e=b.onRecoverableError));b=cl(a,1,!1,null,null,c,!1,d,e);a[uf]=b.current;sf(8===a.nodeType?a.parentNode:a);return new ml(b)};\nexports.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternals;if(void 0===b){if(\"function\"===typeof a.render)throw Error(p(188));a=Object.keys(a).join(\",\");throw Error(p(268,a));}a=Zb(b);a=null===a?null:a.stateNode;return a};exports.flushSync=function(a){return Sk(a)};exports.hydrate=function(a,b,c){if(!pl(b))throw Error(p(200));return sl(null,a,b,!0,c)};\nexports.hydrateRoot=function(a,b,c){if(!ol(a))throw Error(p(405));var d=null!=c&&c.hydratedSources||null,e=!1,f=\"\",g=ll;null!==c&&void 0!==c&&(!0===c.unstable_strictMode&&(e=!0),void 0!==c.identifierPrefix&&(f=c.identifierPrefix),void 0!==c.onRecoverableError&&(g=c.onRecoverableError));b=fl(b,null,a,1,null!=c?c:null,e,!1,f,g);a[uf]=b.current;sf(a);if(d)for(a=0;a<d.length;a++)c=d[a],e=c._getVersion,e=e(c._source),null==b.mutableSourceEagerHydrationData?b.mutableSourceEagerHydrationData=[c,e]:b.mutableSourceEagerHydrationData.push(c,\ne);return new nl(b)};exports.render=function(a,b,c){if(!pl(b))throw Error(p(200));return sl(null,a,b,!1,c)};exports.unmountComponentAtNode=function(a){if(!pl(a))throw Error(p(40));return a._reactRootContainer?(Sk(function(){sl(null,null,a,!1,function(){a._reactRootContainer=null;a[uf]=null})}),!0):!1};exports.unstable_batchedUpdates=Rk;\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!pl(c))throw Error(p(200));if(null==a||void 0===a._reactInternals)throw Error(p(38));return sl(a,b,c,!1,d)};exports.version=\"18.2.0-next-9e3b772b8-20220608\";\n","'use strict';\n\nvar m = require('react-dom');\nif (process.env.NODE_ENV === 'production') {\n exports.createRoot = m.createRoot;\n exports.hydrateRoot = m.hydrateRoot;\n} else {\n var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n exports.createRoot = function(c, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.createRoot(c, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n exports.hydrateRoot = function(c, h, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.hydrateRoot(c, h, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n}\n","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"DraggableCore\", {\n enumerable: true,\n get: function () {\n return _DraggableCore.default;\n }\n});\nexports.default = void 0;\nvar React = _interopRequireWildcard(require(\"react\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\nvar _clsx = _interopRequireDefault(require(\"clsx\"));\nvar _domFns = require(\"./utils/domFns\");\nvar _positionFns = require(\"./utils/positionFns\");\nvar _shims = require(\"./utils/shims\");\nvar _DraggableCore = _interopRequireDefault(require(\"./DraggableCore\"));\nvar _log = _interopRequireDefault(require(\"./utils/log\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); } /*:: import type {ControlPosition, PositionOffsetControlPosition, DraggableCoreProps, DraggableCoreDefaultProps} from './DraggableCore';*/\n/*:: import type {Bounds, DraggableEventHandler} from './utils/types';*/\n/*:: import type {Element as ReactElement} from 'react';*/\n/*:: type DraggableState = {\n dragging: boolean,\n dragged: boolean,\n x: number, y: number,\n slackX: number, slackY: number,\n isElementSVG: boolean,\n prevPropsPosition: ?ControlPosition,\n};*/\n/*:: export type DraggableDefaultProps = {\n ...DraggableCoreDefaultProps,\n axis: 'both' | 'x' | 'y' | 'none',\n bounds: Bounds | string | false,\n defaultClassName: string,\n defaultClassNameDragging: string,\n defaultClassNameDragged: string,\n defaultPosition: ControlPosition,\n scale: number,\n};*/\n/*:: export type DraggableProps = {\n ...DraggableCoreProps,\n ...DraggableDefaultProps,\n positionOffset: PositionOffsetControlPosition,\n position: ControlPosition,\n};*/\n//\n// Define <Draggable>\n//\nclass Draggable extends React.Component /*:: <DraggableProps, DraggableState>*/{\n // React 16.3+\n // Arity (props, state)\n static getDerivedStateFromProps(_ref /*:: */, _ref2 /*:: */) /*: ?Partial<DraggableState>*/{\n let {\n position\n } /*: DraggableProps*/ = _ref /*: DraggableProps*/;\n let {\n prevPropsPosition\n } /*: DraggableState*/ = _ref2 /*: DraggableState*/;\n // Set x/y if a new position is provided in props that is different than the previous.\n if (position && (!prevPropsPosition || position.x !== prevPropsPosition.x || position.y !== prevPropsPosition.y)) {\n (0, _log.default)('Draggable: getDerivedStateFromProps %j', {\n position,\n prevPropsPosition\n });\n return {\n x: position.x,\n y: position.y,\n prevPropsPosition: {\n ...position\n }\n };\n }\n return null;\n }\n constructor(props /*: DraggableProps*/) {\n super(props);\n _defineProperty(this, \"onDragStart\", (e, coreData) => {\n (0, _log.default)('Draggable: onDragStart: %j', coreData);\n\n // Short-circuit if user's callback killed it.\n const shouldStart = this.props.onStart(e, (0, _positionFns.createDraggableData)(this, coreData));\n // Kills start event on core as well, so move handlers are never bound.\n if (shouldStart === false) return false;\n this.setState({\n dragging: true,\n dragged: true\n });\n });\n _defineProperty(this, \"onDrag\", (e, coreData) => {\n if (!this.state.dragging) return false;\n (0, _log.default)('Draggable: onDrag: %j', coreData);\n const uiData = (0, _positionFns.createDraggableData)(this, coreData);\n const newState = {\n x: uiData.x,\n y: uiData.y,\n slackX: 0,\n slackY: 0\n };\n\n // Keep within bounds.\n if (this.props.bounds) {\n // Save original x and y.\n const {\n x,\n y\n } = newState;\n\n // Add slack to the values used to calculate bound position. This will ensure that if\n // we start removing slack, the element won't react to it right away until it's been\n // completely removed.\n newState.x += this.state.slackX;\n newState.y += this.state.slackY;\n\n // Get bound position. This will ceil/floor the x and y within the boundaries.\n const [newStateX, newStateY] = (0, _positionFns.getBoundPosition)(this, newState.x, newState.y);\n newState.x = newStateX;\n newState.y = newStateY;\n\n // Recalculate slack by noting how much was shaved by the boundPosition handler.\n newState.slackX = this.state.slackX + (x - newState.x);\n newState.slackY = this.state.slackY + (y - newState.y);\n\n // Update the event we fire to reflect what really happened after bounds took effect.\n uiData.x = newState.x;\n uiData.y = newState.y;\n uiData.deltaX = newState.x - this.state.x;\n uiData.deltaY = newState.y - this.state.y;\n }\n\n // Short-circuit if user's callback killed it.\n const shouldUpdate = this.props.onDrag(e, uiData);\n if (shouldUpdate === false) return false;\n this.setState(newState);\n });\n _defineProperty(this, \"onDragStop\", (e, coreData) => {\n if (!this.state.dragging) return false;\n\n // Short-circuit if user's callback killed it.\n const shouldContinue = this.props.onStop(e, (0, _positionFns.createDraggableData)(this, coreData));\n if (shouldContinue === false) return false;\n (0, _log.default)('Draggable: onDragStop: %j', coreData);\n const newState /*: Partial<DraggableState>*/ = {\n dragging: false,\n slackX: 0,\n slackY: 0\n };\n\n // If this is a controlled component, the result of this operation will be to\n // revert back to the old position. We expect a handler on `onDragStop`, at the least.\n const controlled = Boolean(this.props.position);\n if (controlled) {\n const {\n x,\n y\n } = this.props.position;\n newState.x = x;\n newState.y = y;\n }\n this.setState(newState);\n });\n this.state = {\n // Whether or not we are currently dragging.\n dragging: false,\n // Whether or not we have been dragged before.\n dragged: false,\n // Current transform x and y.\n x: props.position ? props.position.x : props.defaultPosition.x,\n y: props.position ? props.position.y : props.defaultPosition.y,\n prevPropsPosition: {\n ...props.position\n },\n // Used for compensating for out-of-bounds drags\n slackX: 0,\n slackY: 0,\n // Can only determine if SVG after mounting\n isElementSVG: false\n };\n if (props.position && !(props.onDrag || props.onStop)) {\n // eslint-disable-next-line no-console\n console.warn('A `position` was applied to this <Draggable>, without drag handlers. This will make this ' + 'component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the ' + '`position` of this element.');\n }\n }\n componentDidMount() {\n // Check to see if the element passed is an instanceof SVGElement\n if (typeof window.SVGElement !== 'undefined' && this.findDOMNode() instanceof window.SVGElement) {\n this.setState({\n isElementSVG: true\n });\n }\n }\n componentWillUnmount() {\n this.setState({\n dragging: false\n }); // prevents invariant if unmounted while dragging\n }\n\n // React Strict Mode compatibility: if `nodeRef` is passed, we will use it instead of trying to find\n // the underlying DOM node ourselves. See the README for more information.\n findDOMNode() /*: ?HTMLElement*/{\n var _this$props$nodeRef$c, _this$props;\n return (_this$props$nodeRef$c = (_this$props = this.props) === null || _this$props === void 0 || (_this$props = _this$props.nodeRef) === null || _this$props === void 0 ? void 0 : _this$props.current) !== null && _this$props$nodeRef$c !== void 0 ? _this$props$nodeRef$c : _reactDom.default.findDOMNode(this);\n }\n render() /*: ReactElement<any>*/{\n const {\n axis,\n bounds,\n children,\n defaultPosition,\n defaultClassName,\n defaultClassNameDragging,\n defaultClassNameDragged,\n position,\n positionOffset,\n scale,\n ...draggableCoreProps\n } = this.props;\n let style = {};\n let svgTransform = null;\n\n // If this is controlled, we don't want to move it - unless it's dragging.\n const controlled = Boolean(position);\n const draggable = !controlled || this.state.dragging;\n const validPosition = position || defaultPosition;\n const transformOpts = {\n // Set left if horizontal drag is enabled\n x: (0, _positionFns.canDragX)(this) && draggable ? this.state.x : validPosition.x,\n // Set top if vertical drag is enabled\n y: (0, _positionFns.canDragY)(this) && draggable ? this.state.y : validPosition.y\n };\n\n // If this element was SVG, we use the `transform` attribute.\n if (this.state.isElementSVG) {\n svgTransform = (0, _domFns.createSVGTransform)(transformOpts, positionOffset);\n } else {\n // Add a CSS transform to move the element around. This allows us to move the element around\n // without worrying about whether or not it is relatively or absolutely positioned.\n // If the item you are dragging already has a transform set, wrap it in a <span> so <Draggable>\n // has a clean slate.\n style = (0, _domFns.createCSSTransform)(transformOpts, positionOffset);\n }\n\n // Mark with class while dragging\n const className = (0, _clsx.default)(children.props.className || '', defaultClassName, {\n [defaultClassNameDragging]: this.state.dragging,\n [defaultClassNameDragged]: this.state.dragged\n });\n\n // Reuse the child provided\n // This makes it flexible to use whatever element is wanted (div, ul, etc)\n return /*#__PURE__*/React.createElement(_DraggableCore.default, _extends({}, draggableCoreProps, {\n onStart: this.onDragStart,\n onDrag: this.onDrag,\n onStop: this.onDragStop\n }), /*#__PURE__*/React.cloneElement(React.Children.only(children), {\n className: className,\n style: {\n ...children.props.style,\n ...style\n },\n transform: svgTransform\n }));\n }\n}\nexports.default = Draggable;\n_defineProperty(Draggable, \"displayName\", 'Draggable');\n_defineProperty(Draggable, \"propTypes\", {\n // Accepts all props <DraggableCore> accepts.\n ..._DraggableCore.default.propTypes,\n /**\n * `axis` determines which axis the draggable can move.\n *\n * Note that all callbacks will still return data as normal. This only\n * controls flushing to the DOM.\n *\n * 'both' allows movement horizontally and vertically.\n * 'x' limits movement to horizontal axis.\n * 'y' limits movement to vertical axis.\n * 'none' limits all movement.\n *\n * Defaults to 'both'.\n */\n axis: _propTypes.default.oneOf(['both', 'x', 'y', 'none']),\n /**\n * `bounds` determines the range of movement available to the element.\n * Available values are:\n *\n * 'parent' restricts movement within the Draggable's parent node.\n *\n * Alternatively, pass an object with the following properties, all of which are optional:\n *\n * {left: LEFT_BOUND, right: RIGHT_BOUND, bottom: BOTTOM_BOUND, top: TOP_BOUND}\n *\n * All values are in px.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * <Draggable bounds={{right: 300, bottom: 300}}>\n * <div>Content</div>\n * </Draggable>\n * );\n * }\n * });\n * ```\n */\n bounds: _propTypes.default.oneOfType([_propTypes.default.shape({\n left: _propTypes.default.number,\n right: _propTypes.default.number,\n top: _propTypes.default.number,\n bottom: _propTypes.default.number\n }), _propTypes.default.string, _propTypes.default.oneOf([false])]),\n defaultClassName: _propTypes.default.string,\n defaultClassNameDragging: _propTypes.default.string,\n defaultClassNameDragged: _propTypes.default.string,\n /**\n * `defaultPosition` specifies the x and y that the dragged item should start at\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * <Draggable defaultPosition={{x: 25, y: 25}}>\n * <div>I start with transformX: 25px and transformY: 25px;</div>\n * </Draggable>\n * );\n * }\n * });\n * ```\n */\n defaultPosition: _propTypes.default.shape({\n x: _propTypes.default.number,\n y: _propTypes.default.number\n }),\n positionOffset: _propTypes.default.shape({\n x: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),\n y: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string])\n }),\n /**\n * `position`, if present, defines the current position of the element.\n *\n * This is similar to how form elements in React work - if no `position` is supplied, the component\n * is uncontrolled.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * <Draggable position={{x: 25, y: 25}}>\n * <div>I start with transformX: 25px and transformY: 25px;</div>\n * </Draggable>\n * );\n * }\n * });\n * ```\n */\n position: _propTypes.default.shape({\n x: _propTypes.default.number,\n y: _propTypes.default.number\n }),\n /**\n * These properties should be defined on the child, not here.\n */\n className: _shims.dontSetMe,\n style: _shims.dontSetMe,\n transform: _shims.dontSetMe\n});\n_defineProperty(Draggable, \"defaultProps\", {\n ..._DraggableCore.default.defaultProps,\n axis: 'both',\n bounds: false,\n defaultClassName: 'react-draggable',\n defaultClassNameDragging: 'react-draggable-dragging',\n defaultClassNameDragged: 'react-draggable-dragged',\n defaultPosition: {\n x: 0,\n y: 0\n },\n scale: 1\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar React = _interopRequireWildcard(require(\"react\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\nvar _domFns = require(\"./utils/domFns\");\nvar _positionFns = require(\"./utils/positionFns\");\nvar _shims = require(\"./utils/shims\");\nvar _log = _interopRequireDefault(require(\"./utils/log\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/*:: import type {EventHandler, MouseTouchEvent} from './utils/types';*/\n/*:: import type {Element as ReactElement} from 'react';*/\n// Simple abstraction for dragging events names.\nconst eventsFor = {\n touch: {\n start: 'touchstart',\n move: 'touchmove',\n stop: 'touchend'\n },\n mouse: {\n start: 'mousedown',\n move: 'mousemove',\n stop: 'mouseup'\n }\n};\n\n// Default to mouse events.\nlet dragEventFor = eventsFor.mouse;\n/*:: export type DraggableData = {\n node: HTMLElement,\n x: number, y: number,\n deltaX: number, deltaY: number,\n lastX: number, lastY: number,\n};*/\n/*:: export type DraggableEventHandler = (e: MouseEvent, data: DraggableData) => void | false;*/\n/*:: export type ControlPosition = {x: number, y: number};*/\n/*:: export type PositionOffsetControlPosition = {x: number|string, y: number|string};*/\n/*:: export type DraggableCoreDefaultProps = {\n allowAnyClick: boolean,\n disabled: boolean,\n enableUserSelectHack: boolean,\n onStart: DraggableEventHandler,\n onDrag: DraggableEventHandler,\n onStop: DraggableEventHandler,\n onMouseDown: (e: MouseEvent) => void,\n scale: number,\n};*/\n/*:: export type DraggableCoreProps = {\n ...DraggableCoreDefaultProps,\n cancel: string,\n children: ReactElement<any>,\n offsetParent: HTMLElement,\n grid: [number, number],\n handle: string,\n nodeRef?: ?React.ElementRef<any>,\n};*/\n//\n// Define <DraggableCore>.\n//\n// <DraggableCore> is for advanced usage of <Draggable>. It maintains minimal internal state so it can\n// work well with libraries that require more control over the element.\n//\n\nclass DraggableCore extends React.Component /*:: <DraggableCoreProps>*/{\n constructor() {\n super(...arguments);\n _defineProperty(this, \"dragging\", false);\n // Used while dragging to determine deltas.\n _defineProperty(this, \"lastX\", NaN);\n _defineProperty(this, \"lastY\", NaN);\n _defineProperty(this, \"touchIdentifier\", null);\n _defineProperty(this, \"mounted\", false);\n _defineProperty(this, \"handleDragStart\", e => {\n // Make it possible to attach event handlers on top of this one.\n this.props.onMouseDown(e);\n\n // Only accept left-clicks.\n if (!this.props.allowAnyClick && typeof e.button === 'number' && e.button !== 0) return false;\n\n // Get nodes. Be sure to grab relative document (could be iframed)\n const thisNode = this.findDOMNode();\n if (!thisNode || !thisNode.ownerDocument || !thisNode.ownerDocument.body) {\n throw new Error('<DraggableCore> not mounted on DragStart!');\n }\n const {\n ownerDocument\n } = thisNode;\n\n // Short circuit if handle or cancel prop was provided and selector doesn't match.\n if (this.props.disabled || !(e.target instanceof ownerDocument.defaultView.Node) || this.props.handle && !(0, _domFns.matchesSelectorAndParentsTo)(e.target, this.props.handle, thisNode) || this.props.cancel && (0, _domFns.matchesSelectorAndParentsTo)(e.target, this.props.cancel, thisNode)) {\n return;\n }\n\n // Prevent scrolling on mobile devices, like ipad/iphone.\n // Important that this is after handle/cancel.\n if (e.type === 'touchstart') e.preventDefault();\n\n // Set touch identifier in component state if this is a touch event. This allows us to\n // distinguish between individual touches on multitouch screens by identifying which\n // touchpoint was set to this element.\n const touchIdentifier = (0, _domFns.getTouchIdentifier)(e);\n this.touchIdentifier = touchIdentifier;\n\n // Get the current drag point from the event. This is used as the offset.\n const position = (0, _positionFns.getControlPosition)(e, touchIdentifier, this);\n if (position == null) return; // not possible but satisfies flow\n const {\n x,\n y\n } = position;\n\n // Create an event object with all the data parents need to make a decision here.\n const coreEvent = (0, _positionFns.createCoreData)(this, x, y);\n (0, _log.default)('DraggableCore: handleDragStart: %j', coreEvent);\n\n // Call event handler. If it returns explicit false, cancel.\n (0, _log.default)('calling', this.props.onStart);\n const shouldUpdate = this.props.onStart(e, coreEvent);\n if (shouldUpdate === false || this.mounted === false) return;\n\n // Add a style to the body to disable user-select. This prevents text from\n // being selected all over the page.\n if (this.props.enableUserSelectHack) (0, _domFns.addUserSelectStyles)(ownerDocument);\n\n // Initiate dragging. Set the current x and y as offsets\n // so we know how much we've moved during the drag. This allows us\n // to drag elements around even if they have been moved, without issue.\n this.dragging = true;\n this.lastX = x;\n this.lastY = y;\n\n // Add events to the document directly so we catch when the user's mouse/touch moves outside of\n // this element. We use different events depending on whether or not we have detected that this\n // is a touch-capable device.\n (0, _domFns.addEvent)(ownerDocument, dragEventFor.move, this.handleDrag);\n (0, _domFns.addEvent)(ownerDocument, dragEventFor.stop, this.handleDragStop);\n });\n _defineProperty(this, \"handleDrag\", e => {\n // Get the current drag point from the event. This is used as the offset.\n const position = (0, _positionFns.getControlPosition)(e, this.touchIdentifier, this);\n if (position == null) return;\n let {\n x,\n y\n } = position;\n\n // Snap to grid if prop has been provided\n if (Array.isArray(this.props.grid)) {\n let deltaX = x - this.lastX,\n deltaY = y - this.lastY;\n [deltaX, deltaY] = (0, _positionFns.snapToGrid)(this.props.grid, deltaX, deltaY);\n if (!deltaX && !deltaY) return; // skip useless drag\n x = this.lastX + deltaX, y = this.lastY + deltaY;\n }\n const coreEvent = (0, _positionFns.createCoreData)(this, x, y);\n (0, _log.default)('DraggableCore: handleDrag: %j', coreEvent);\n\n // Call event handler. If it returns explicit false, trigger end.\n const shouldUpdate = this.props.onDrag(e, coreEvent);\n if (shouldUpdate === false || this.mounted === false) {\n try {\n // $FlowIgnore\n this.handleDragStop(new MouseEvent('mouseup'));\n } catch (err) {\n // Old browsers\n const event = ((document.createEvent('MouseEvents') /*: any*/) /*: MouseTouchEvent*/);\n // I see why this insanity was deprecated\n // $FlowIgnore\n event.initMouseEvent('mouseup', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n this.handleDragStop(event);\n }\n return;\n }\n this.lastX = x;\n this.lastY = y;\n });\n _defineProperty(this, \"handleDragStop\", e => {\n if (!this.dragging) return;\n const position = (0, _positionFns.getControlPosition)(e, this.touchIdentifier, this);\n if (position == null) return;\n let {\n x,\n y\n } = position;\n\n // Snap to grid if prop has been provided\n if (Array.isArray(this.props.grid)) {\n let deltaX = x - this.lastX || 0;\n let deltaY = y - this.lastY || 0;\n [deltaX, deltaY] = (0, _positionFns.snapToGrid)(this.props.grid, deltaX, deltaY);\n x = this.lastX + deltaX, y = this.lastY + deltaY;\n }\n const coreEvent = (0, _positionFns.createCoreData)(this, x, y);\n\n // Call event handler\n const shouldContinue = this.props.onStop(e, coreEvent);\n if (shouldContinue === false || this.mounted === false) return false;\n const thisNode = this.findDOMNode();\n if (thisNode) {\n // Remove user-select hack\n if (this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)(thisNode.ownerDocument);\n }\n (0, _log.default)('DraggableCore: handleDragStop: %j', coreEvent);\n\n // Reset the el.\n this.dragging = false;\n this.lastX = NaN;\n this.lastY = NaN;\n if (thisNode) {\n // Remove event handlers\n (0, _log.default)('DraggableCore: Removing handlers');\n (0, _domFns.removeEvent)(thisNode.ownerDocument, dragEventFor.move, this.handleDrag);\n (0, _domFns.removeEvent)(thisNode.ownerDocument, dragEventFor.stop, this.handleDragStop);\n }\n });\n _defineProperty(this, \"onMouseDown\", e => {\n dragEventFor = eventsFor.mouse; // on touchscreen laptops we could switch back to mouse\n\n return this.handleDragStart(e);\n });\n _defineProperty(this, \"onMouseUp\", e => {\n dragEventFor = eventsFor.mouse;\n return this.handleDragStop(e);\n });\n // Same as onMouseDown (start drag), but now consider this a touch device.\n _defineProperty(this, \"onTouchStart\", e => {\n // We're on a touch device now, so change the event handlers\n dragEventFor = eventsFor.touch;\n return this.handleDragStart(e);\n });\n _defineProperty(this, \"onTouchEnd\", e => {\n // We're on a touch device now, so change the event handlers\n dragEventFor = eventsFor.touch;\n return this.handleDragStop(e);\n });\n }\n componentDidMount() {\n this.mounted = true;\n // Touch handlers must be added with {passive: false} to be cancelable.\n // https://developers.google.com/web/updates/2017/01/scrolling-intervention\n const thisNode = this.findDOMNode();\n if (thisNode) {\n (0, _domFns.addEvent)(thisNode, eventsFor.touch.start, this.onTouchStart, {\n passive: false\n });\n }\n }\n componentWillUnmount() {\n this.mounted = false;\n // Remove any leftover event handlers. Remove both touch and mouse handlers in case\n // some browser quirk caused a touch event to fire during a mouse move, or vice versa.\n const thisNode = this.findDOMNode();\n if (thisNode) {\n const {\n ownerDocument\n } = thisNode;\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.mouse.move, this.handleDrag);\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.touch.move, this.handleDrag);\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.mouse.stop, this.handleDragStop);\n (0, _domFns.removeEvent)(ownerDocument, eventsFor.touch.stop, this.handleDragStop);\n (0, _domFns.removeEvent)(thisNode, eventsFor.touch.start, this.onTouchStart, {\n passive: false\n });\n if (this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)(ownerDocument);\n }\n }\n\n // React Strict Mode compatibility: if `nodeRef` is passed, we will use it instead of trying to find\n // the underlying DOM node ourselves. See the README for more information.\n findDOMNode() /*: ?HTMLElement*/{\n var _this$props, _this$props2;\n return (_this$props = this.props) !== null && _this$props !== void 0 && _this$props.nodeRef ? (_this$props2 = this.props) === null || _this$props2 === void 0 || (_this$props2 = _this$props2.nodeRef) === null || _this$props2 === void 0 ? void 0 : _this$props2.current : _reactDom.default.findDOMNode(this);\n }\n render() /*: React.Element<any>*/{\n // Reuse the child provided\n // This makes it flexible to use whatever element is wanted (div, ul, etc)\n return /*#__PURE__*/React.cloneElement(React.Children.only(this.props.children), {\n // Note: mouseMove handler is attached to document so it will still function\n // when the user drags quickly and leaves the bounds of the element.\n onMouseDown: this.onMouseDown,\n onMouseUp: this.onMouseUp,\n // onTouchStart is added on `componentDidMount` so they can be added with\n // {passive: false}, which allows it to cancel. See\n // https://developers.google.com/web/updates/2017/01/scrolling-intervention\n onTouchEnd: this.onTouchEnd\n });\n }\n}\nexports.default = DraggableCore;\n_defineProperty(DraggableCore, \"displayName\", 'DraggableCore');\n_defineProperty(DraggableCore, \"propTypes\", {\n /**\n * `allowAnyClick` allows dragging using any mouse button.\n * By default, we only accept the left button.\n *\n * Defaults to `false`.\n */\n allowAnyClick: _propTypes.default.bool,\n children: _propTypes.default.node.isRequired,\n /**\n * `disabled`, if true, stops the <Draggable> from dragging. All handlers,\n * with the exception of `onMouseDown`, will not fire.\n */\n disabled: _propTypes.default.bool,\n /**\n * By default, we add 'user-select:none' attributes to the document body\n * to prevent ugly text selection during drag. If this is causing problems\n * for your app, set this to `false`.\n */\n enableUserSelectHack: _propTypes.default.bool,\n /**\n * `offsetParent`, if set, uses the passed DOM node to compute drag offsets\n * instead of using the parent node.\n */\n offsetParent: function (props /*: DraggableCoreProps*/, propName /*: $Keys<DraggableCoreProps>*/) {\n if (props[propName] && props[propName].nodeType !== 1) {\n throw new Error('Draggable\\'s offsetParent must be a DOM Node.');\n }\n },\n /**\n * `grid` specifies the x and y that dragging should snap to.\n */\n grid: _propTypes.default.arrayOf(_propTypes.default.number),\n /**\n * `handle` specifies a selector to be used as the handle that initiates drag.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * <Draggable handle=\".handle\">\n * <div>\n * <div className=\"handle\">Click me to drag</div>\n * <div>This is some other content</div>\n * </div>\n * </Draggable>\n * );\n * }\n * });\n * ```\n */\n handle: _propTypes.default.string,\n /**\n * `cancel` specifies a selector to be used to prevent drag initialization.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return(\n * <Draggable cancel=\".cancel\">\n * <div>\n * <div className=\"cancel\">You can't drag from here</div>\n * <div>Dragging here works fine</div>\n * </div>\n * </Draggable>\n * );\n * }\n * });\n * ```\n */\n cancel: _propTypes.default.string,\n /* If running in React Strict mode, ReactDOM.findDOMNode() is deprecated.\n * Unfortunately, in order for <Draggable> to work properly, we need raw access\n * to the underlying DOM node. If you want to avoid the warning, pass a `nodeRef`\n * as in this example:\n *\n * function MyComponent() {\n * const nodeRef = React.useRef(null);\n * return (\n * <Draggable nodeRef={nodeRef}>\n * <div ref={nodeRef}>Example Target</div>\n * </Draggable>\n * );\n * }\n *\n * This can be used for arbitrarily nested components, so long as the ref ends up\n * pointing to the actual child DOM node and not a custom component.\n */\n nodeRef: _propTypes.default.object,\n /**\n * Called when dragging starts.\n * If this function returns the boolean false, dragging will be canceled.\n */\n onStart: _propTypes.default.func,\n /**\n * Called while dragging.\n * If this function returns the boolean false, dragging will be canceled.\n */\n onDrag: _propTypes.default.func,\n /**\n * Called when dragging stops.\n * If this function returns the boolean false, the drag will remain active.\n */\n onStop: _propTypes.default.func,\n /**\n * A workaround option which can be passed if onMouseDown needs to be accessed,\n * since it'll always be blocked (as there is internal use of onMouseDown)\n */\n onMouseDown: _propTypes.default.func,\n /**\n * `scale`, if set, applies scaling while dragging an element\n */\n scale: _propTypes.default.number,\n /**\n * These properties should be defined on the child, not here.\n */\n className: _shims.dontSetMe,\n style: _shims.dontSetMe,\n transform: _shims.dontSetMe\n});\n_defineProperty(DraggableCore, \"defaultProps\", {\n allowAnyClick: false,\n // by default only accept left click\n disabled: false,\n enableUserSelectHack: true,\n onStart: function () {},\n onDrag: function () {},\n onStop: function () {},\n onMouseDown: function () {},\n scale: 1\n});","\"use strict\";\n\nconst {\n default: Draggable,\n DraggableCore\n} = require('./Draggable');\n\n// Previous versions of this lib exported <Draggable> as the root export. As to no-// them, or TypeScript, we export *both* as the root and as 'default'.\n// See https://github.com/mzabriskie/react-draggable/pull/254\n// and https://github.com/mzabriskie/react-draggable/issues/266\nmodule.exports = Draggable;\nmodule.exports.default = Draggable;\nmodule.exports.DraggableCore = DraggableCore;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.addClassName = addClassName;\nexports.addEvent = addEvent;\nexports.addUserSelectStyles = addUserSelectStyles;\nexports.createCSSTransform = createCSSTransform;\nexports.createSVGTransform = createSVGTransform;\nexports.getTouch = getTouch;\nexports.getTouchIdentifier = getTouchIdentifier;\nexports.getTranslation = getTranslation;\nexports.innerHeight = innerHeight;\nexports.innerWidth = innerWidth;\nexports.matchesSelector = matchesSelector;\nexports.matchesSelectorAndParentsTo = matchesSelectorAndParentsTo;\nexports.offsetXYFromParent = offsetXYFromParent;\nexports.outerHeight = outerHeight;\nexports.outerWidth = outerWidth;\nexports.removeClassName = removeClassName;\nexports.removeEvent = removeEvent;\nexports.removeUserSelectStyles = removeUserSelectStyles;\nvar _shims = require(\"./shims\");\nvar _getPrefix = _interopRequireWildcard(require(\"./getPrefix\"));\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n/*:: import type {ControlPosition, PositionOffsetControlPosition, MouseTouchEvent} from './types';*/\nlet matchesSelectorFunc = '';\nfunction matchesSelector(el /*: Node*/, selector /*: string*/) /*: boolean*/{\n if (!matchesSelectorFunc) {\n matchesSelectorFunc = (0, _shims.findInArray)(['matches', 'webkitMatchesSelector', 'mozMatchesSelector', 'msMatchesSelector', 'oMatchesSelector'], function (method) {\n // $FlowIgnore: Doesn't think elements are indexable\n return (0, _shims.isFunction)(el[method]);\n });\n }\n\n // Might not be found entirely (not an Element?) - in that case, bail\n // $FlowIgnore: Doesn't think elements are indexable\n if (!(0, _shims.isFunction)(el[matchesSelectorFunc])) return false;\n\n // $FlowIgnore: Doesn't think elements are indexable\n return el[matchesSelectorFunc](selector);\n}\n\n// Works up the tree to the draggable itself attempting to match selector.\nfunction matchesSelectorAndParentsTo(el /*: Node*/, selector /*: string*/, baseNode /*: Node*/) /*: boolean*/{\n let node = el;\n do {\n if (matchesSelector(node, selector)) return true;\n if (node === baseNode) return false;\n // $FlowIgnore[incompatible-type]\n node = node.parentNode;\n } while (node);\n return false;\n}\nfunction addEvent(el /*: ?Node*/, event /*: string*/, handler /*: Function*/, inputOptions /*: Object*/) /*: void*/{\n if (!el) return;\n const options = {\n capture: true,\n ...inputOptions\n };\n // $FlowIgnore[method-unbinding]\n if (el.addEventListener) {\n el.addEventListener(event, handler, options);\n } else if (el.attachEvent) {\n el.attachEvent('on' + event, handler);\n } else {\n // $FlowIgnore: Doesn't think elements are indexable\n el['on' + event] = handler;\n }\n}\nfunction removeEvent(el /*: ?Node*/, event /*: string*/, handler /*: Function*/, inputOptions /*: Object*/) /*: void*/{\n if (!el) return;\n const options = {\n capture: true,\n ...inputOptions\n };\n // $FlowIgnore[method-unbinding]\n if (el.removeEventListener) {\n el.removeEventListener(event, handler, options);\n } else if (el.detachEvent) {\n el.detachEvent('on' + event, handler);\n } else {\n // $FlowIgnore: Doesn't think elements are indexable\n el['on' + event] = null;\n }\n}\nfunction outerHeight(node /*: HTMLElement*/) /*: number*/{\n // This is deliberately excluding margin for our calculations, since we are using\n // offsetTop which is including margin. See getBoundPosition\n let height = node.clientHeight;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n height += (0, _shims.int)(computedStyle.borderTopWidth);\n height += (0, _shims.int)(computedStyle.borderBottomWidth);\n return height;\n}\nfunction outerWidth(node /*: HTMLElement*/) /*: number*/{\n // This is deliberately excluding margin for our calculations, since we are using\n // offsetLeft which is including margin. See getBoundPosition\n let width = node.clientWidth;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n width += (0, _shims.int)(computedStyle.borderLeftWidth);\n width += (0, _shims.int)(computedStyle.borderRightWidth);\n return width;\n}\nfunction innerHeight(node /*: HTMLElement*/) /*: number*/{\n let height = node.clientHeight;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n height -= (0, _shims.int)(computedStyle.paddingTop);\n height -= (0, _shims.int)(computedStyle.paddingBottom);\n return height;\n}\nfunction innerWidth(node /*: HTMLElement*/) /*: number*/{\n let width = node.clientWidth;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n width -= (0, _shims.int)(computedStyle.paddingLeft);\n width -= (0, _shims.int)(computedStyle.paddingRight);\n return width;\n}\n/*:: interface EventWithOffset {\n clientX: number, clientY: number\n}*/\n// Get from offsetParent\nfunction offsetXYFromParent(evt /*: EventWithOffset*/, offsetParent /*: HTMLElement*/, scale /*: number*/) /*: ControlPosition*/{\n const isBody = offsetParent === offsetParent.ownerDocument.body;\n const offsetParentRect = isBody ? {\n left: 0,\n top: 0\n } : offsetParent.getBoundingClientRect();\n const x = (evt.clientX + offsetParent.scrollLeft - offsetParentRect.left) / scale;\n const y = (evt.clientY + offsetParent.scrollTop - offsetParentRect.top) / scale;\n return {\n x,\n y\n };\n}\nfunction createCSSTransform(controlPos /*: ControlPosition*/, positionOffset /*: PositionOffsetControlPosition*/) /*: Object*/{\n const translation = getTranslation(controlPos, positionOffset, 'px');\n return {\n [(0, _getPrefix.browserPrefixToKey)('transform', _getPrefix.default)]: translation\n };\n}\nfunction createSVGTransform(controlPos /*: ControlPosition*/, positionOffset /*: PositionOffsetControlPosition*/) /*: string*/{\n const translation = getTranslation(controlPos, positionOffset, '');\n return translation;\n}\nfunction getTranslation(_ref /*:: */, positionOffset /*: PositionOffsetControlPosition*/, unitSuffix /*: string*/) /*: string*/{\n let {\n x,\n y\n } /*: ControlPosition*/ = _ref /*: ControlPosition*/;\n let translation = \"translate(\".concat(x).concat(unitSuffix, \",\").concat(y).concat(unitSuffix, \")\");\n if (positionOffset) {\n const defaultX = \"\".concat(typeof positionOffset.x === 'string' ? positionOffset.x : positionOffset.x + unitSuffix);\n const defaultY = \"\".concat(typeof positionOffset.y === 'string' ? positionOffset.y : positionOffset.y + unitSuffix);\n translation = \"translate(\".concat(defaultX, \", \").concat(defaultY, \")\") + translation;\n }\n return translation;\n}\nfunction getTouch(e /*: MouseTouchEvent*/, identifier /*: number*/) /*: ?{clientX: number, clientY: number}*/{\n return e.targetTouches && (0, _shims.findInArray)(e.targetTouches, t => identifier === t.identifier) || e.changedTouches && (0, _shims.findInArray)(e.changedTouches, t => identifier === t.identifier);\n}\nfunction getTouchIdentifier(e /*: MouseTouchEvent*/) /*: ?number*/{\n if (e.targetTouches && e.targetTouches[0]) return e.targetTouches[0].identifier;\n if (e.changedTouches && e.changedTouches[0]) return e.changedTouches[0].identifier;\n}\n\n// User-select Hacks:\n//\n// Useful for preventing blue highlights all over everything when dragging.\n\n// Note we're passing `document` b/c we could be iframed\nfunction addUserSelectStyles(doc /*: ?Document*/) {\n if (!doc) return;\n let styleEl = doc.getElementById('react-draggable-style-el');\n if (!styleEl) {\n styleEl = doc.createElement('style');\n styleEl.type = 'text/css';\n styleEl.id = 'react-draggable-style-el';\n styleEl.innerHTML = '.react-draggable-transparent-selection *::-moz-selection {all: inherit;}\\n';\n styleEl.innerHTML += '.react-draggable-transparent-selection *::selection {all: inherit;}\\n';\n doc.getElementsByTagName('head')[0].appendChild(styleEl);\n }\n if (doc.body) addClassName(doc.body, 'react-draggable-transparent-selection');\n}\nfunction removeUserSelectStyles(doc /*: ?Document*/) {\n if (!doc) return;\n try {\n if (doc.body) removeClassName(doc.body, 'react-draggable-transparent-selection');\n // $FlowIgnore: IE\n if (doc.selection) {\n // $FlowIgnore: IE\n doc.selection.empty();\n } else {\n // Remove selection caused by scroll, unless it's a focused input\n // (we use doc.defaultView in case we're in an iframe)\n const selection = (doc.defaultView || window).getSelection();\n if (selection && selection.type !== 'Caret') {\n selection.removeAllRanges();\n }\n }\n } catch (e) {\n // probably IE\n }\n}\nfunction addClassName(el /*: HTMLElement*/, className /*: string*/) {\n if (el.classList) {\n el.classList.add(className);\n } else {\n if (!el.className.match(new RegExp(\"(?:^|\\\\s)\".concat(className, \"(?!\\\\S)\")))) {\n el.className += \" \".concat(className);\n }\n }\n}\nfunction removeClassName(el /*: HTMLElement*/, className /*: string*/) {\n if (el.classList) {\n el.classList.remove(className);\n } else {\n el.className = el.className.replace(new RegExp(\"(?:^|\\\\s)\".concat(className, \"(?!\\\\S)\"), 'g'), '');\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.browserPrefixToKey = browserPrefixToKey;\nexports.browserPrefixToStyle = browserPrefixToStyle;\nexports.default = void 0;\nexports.getPrefix = getPrefix;\nconst prefixes = ['Moz', 'Webkit', 'O', 'ms'];\nfunction getPrefix() /*: string*/{\n var _window$document;\n let prop /*: string*/ = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'transform';\n // Ensure we're running in an environment where there is actually a global\n // `window` obj\n if (typeof window === 'undefined') return '';\n\n // If we're in a pseudo-browser server-side environment, this access\n // path may not exist, so bail out if it doesn't.\n const style = (_window$document = window.document) === null || _window$document === void 0 || (_window$document = _window$document.documentElement) === null || _window$document === void 0 ? void 0 : _window$document.style;\n if (!style) return '';\n if (prop in style) return '';\n for (let i = 0; i < prefixes.length; i++) {\n if (browserPrefixToKey(prop, prefixes[i]) in style) return prefixes[i];\n }\n return '';\n}\nfunction browserPrefixToKey(prop /*: string*/, prefix /*: string*/) /*: string*/{\n return prefix ? \"\".concat(prefix).concat(kebabToTitleCase(prop)) : prop;\n}\nfunction browserPrefixToStyle(prop /*: string*/, prefix /*: string*/) /*: string*/{\n return prefix ? \"-\".concat(prefix.toLowerCase(), \"-\").concat(prop) : prop;\n}\nfunction kebabToTitleCase(str /*: string*/) /*: string*/{\n let out = '';\n let shouldCapitalize = true;\n for (let i = 0; i < str.length; i++) {\n if (shouldCapitalize) {\n out += str[i].toUpperCase();\n shouldCapitalize = false;\n } else if (str[i] === '-') {\n shouldCapitalize = true;\n } else {\n out += str[i];\n }\n }\n return out;\n}\n\n// Default export is the prefix itself, like 'Moz', 'Webkit', etc\n// Note that you may have to re-test for certain things; for instance, Chrome 50\n// can handle unprefixed `transform`, but not unprefixed `user-select`\nvar _default = exports.default = (getPrefix() /*: string*/);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = log;\n/*eslint no-console:0*/\nfunction log() {\n if (undefined) console.log(...arguments);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.canDragX = canDragX;\nexports.canDragY = canDragY;\nexports.createCoreData = createCoreData;\nexports.createDraggableData = createDraggableData;\nexports.getBoundPosition = getBoundPosition;\nexports.getControlPosition = getControlPosition;\nexports.snapToGrid = snapToGrid;\nvar _shims = require(\"./shims\");\nvar _domFns = require(\"./domFns\");\n/*:: import type Draggable from '../Draggable';*/\n/*:: import type {Bounds, ControlPosition, DraggableData, MouseTouchEvent} from './types';*/\n/*:: import type DraggableCore from '../DraggableCore';*/\nfunction getBoundPosition(draggable /*: Draggable*/, x /*: number*/, y /*: number*/) /*: [number, number]*/{\n // If no bounds, short-circuit and move on\n if (!draggable.props.bounds) return [x, y];\n\n // Clone new bounds\n let {\n bounds\n } = draggable.props;\n bounds = typeof bounds === 'string' ? bounds : cloneBounds(bounds);\n const node = findDOMNode(draggable);\n if (typeof bounds === 'string') {\n const {\n ownerDocument\n } = node;\n const ownerWindow = ownerDocument.defaultView;\n let boundNode;\n if (bounds === 'parent') {\n boundNode = node.parentNode;\n } else {\n boundNode = ownerDocument.querySelector(bounds);\n }\n if (!(boundNode instanceof ownerWindow.HTMLElement)) {\n throw new Error('Bounds selector \"' + bounds + '\" could not find an element.');\n }\n const boundNodeEl /*: HTMLElement*/ = boundNode; // for Flow, can't seem to refine correctly\n const nodeStyle = ownerWindow.getComputedStyle(node);\n const boundNodeStyle = ownerWindow.getComputedStyle(boundNodeEl);\n // Compute bounds. This is a pain with padding and offsets but this gets it exactly right.\n bounds = {\n left: -node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingLeft) + (0, _shims.int)(nodeStyle.marginLeft),\n top: -node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingTop) + (0, _shims.int)(nodeStyle.marginTop),\n right: (0, _domFns.innerWidth)(boundNodeEl) - (0, _domFns.outerWidth)(node) - node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingRight) - (0, _shims.int)(nodeStyle.marginRight),\n bottom: (0, _domFns.innerHeight)(boundNodeEl) - (0, _domFns.outerHeight)(node) - node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingBottom) - (0, _shims.int)(nodeStyle.marginBottom)\n };\n }\n\n // Keep x and y below right and bottom limits...\n if ((0, _shims.isNum)(bounds.right)) x = Math.min(x, bounds.right);\n if ((0, _shims.isNum)(bounds.bottom)) y = Math.min(y, bounds.bottom);\n\n // But above left and top limits.\n if ((0, _shims.isNum)(bounds.left)) x = Math.max(x, bounds.left);\n if ((0, _shims.isNum)(bounds.top)) y = Math.max(y, bounds.top);\n return [x, y];\n}\nfunction snapToGrid(grid /*: [number, number]*/, pendingX /*: number*/, pendingY /*: number*/) /*: [number, number]*/{\n const x = Math.round(pendingX / grid[0]) * grid[0];\n const y = Math.round(pendingY / grid[1]) * grid[1];\n return [x, y];\n}\nfunction canDragX(draggable /*: Draggable*/) /*: boolean*/{\n return draggable.props.axis === 'both' || draggable.props.axis === 'x';\n}\nfunction canDragY(draggable /*: Draggable*/) /*: boolean*/{\n return draggable.props.axis === 'both' || draggable.props.axis === 'y';\n}\n\n// Get {x, y} positions from event.\nfunction getControlPosition(e /*: MouseTouchEvent*/, touchIdentifier /*: ?number*/, draggableCore /*: DraggableCore*/) /*: ?ControlPosition*/{\n const touchObj = typeof touchIdentifier === 'number' ? (0, _domFns.getTouch)(e, touchIdentifier) : null;\n if (typeof touchIdentifier === 'number' && !touchObj) return null; // not the right touch\n const node = findDOMNode(draggableCore);\n // User can provide an offsetParent if desired.\n const offsetParent = draggableCore.props.offsetParent || node.offsetParent || node.ownerDocument.body;\n return (0, _domFns.offsetXYFromParent)(touchObj || e, offsetParent, draggableCore.props.scale);\n}\n\n// Create an data object exposed by <DraggableCore>'s events\nfunction createCoreData(draggable /*: DraggableCore*/, x /*: number*/, y /*: number*/) /*: DraggableData*/{\n const isStart = !(0, _shims.isNum)(draggable.lastX);\n const node = findDOMNode(draggable);\n if (isStart) {\n // If this is our first move, use the x and y as last coords.\n return {\n node,\n deltaX: 0,\n deltaY: 0,\n lastX: x,\n lastY: y,\n x,\n y\n };\n } else {\n // Otherwise calculate proper values.\n return {\n node,\n deltaX: x - draggable.lastX,\n deltaY: y - draggable.lastY,\n lastX: draggable.lastX,\n lastY: draggable.lastY,\n x,\n y\n };\n }\n}\n\n// Create an data exposed by <Draggable>'s events\nfunction createDraggableData(draggable /*: Draggable*/, coreData /*: DraggableData*/) /*: DraggableData*/{\n const scale = draggable.props.scale;\n return {\n node: coreData.node,\n x: draggable.state.x + coreData.deltaX / scale,\n y: draggable.state.y + coreData.deltaY / scale,\n deltaX: coreData.deltaX / scale,\n deltaY: coreData.deltaY / scale,\n lastX: draggable.state.x,\n lastY: draggable.state.y\n };\n}\n\n// A lot faster than stringify/parse\nfunction cloneBounds(bounds /*: Bounds*/) /*: Bounds*/{\n return {\n left: bounds.left,\n top: bounds.top,\n right: bounds.right,\n bottom: bounds.bottom\n };\n}\nfunction findDOMNode(draggable /*: Draggable | DraggableCore*/) /*: HTMLElement*/{\n const node = draggable.findDOMNode();\n if (!node) {\n throw new Error('<DraggableCore>: Unmounted during event!');\n }\n // $FlowIgnore we can't assert on HTMLElement due to tests... FIXME\n return node;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.dontSetMe = dontSetMe;\nexports.findInArray = findInArray;\nexports.int = int;\nexports.isFunction = isFunction;\nexports.isNum = isNum;\n// @credits https://gist.github.com/rogozhnikoff/a43cfed27c41e4e68cdc\nfunction findInArray(array /*: Array<any> | TouchList*/, callback /*: Function*/) /*: any*/{\n for (let i = 0, length = array.length; i < length; i++) {\n if (callback.apply(callback, [array[i], i, array])) return array[i];\n }\n}\nfunction isFunction(func /*: any*/) /*: boolean %checks*/{\n // $FlowIgnore[method-unbinding]\n return typeof func === 'function' || Object.prototype.toString.call(func) === '[object Function]';\n}\nfunction isNum(num /*: any*/) /*: boolean %checks*/{\n return typeof num === 'number' && !isNaN(num);\n}\nfunction int(a /*: string*/) /*: number*/{\n return parseInt(a, 10);\n}\nfunction dontSetMe(props /*: Object*/, propName /*: string*/, componentName /*: string*/) /*: ?Error*/{\n if (props[propName]) {\n return new Error(\"Invalid prop \".concat(propName, \" passed to \").concat(componentName, \" - do not set this, set it on the child.\"));\n }\n}","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.1\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n // START: Modifications:\n // 1. Extra `has<Type> &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","/*!\n * react-filepond v7.1.2\n * A handy FilePond adapter component for React\n * \n * Copyright (c) 2022 PQINA\n * https://pqina.nl/filepond\n * \n * Licensed under the MIT license.\n */\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.FilePond = exports.FileStatus = exports.registerPlugin = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _filepond = require(\"filepond\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// Import required methods and styles from the FilePond module, should not need anything else\n\n\n// We need to be able to call the registerPlugin method directly so we can add plugins\nexports.registerPlugin = _filepond.registerPlugin;\nexports.FileStatus = _filepond.FileStatus;\n\n// Do this once\n\nvar isSupported = (0, _filepond.supported)();\n\n// filtered methods\nvar filteredMethods = [\"setOptions\", \"on\", \"off\", \"onOnce\", \"appendTo\", \"insertAfter\", \"insertBefore\", \"isAttachedTo\", \"replaceElement\", \"restoreElement\", \"destroy\"];\n\n// The React <FilePond/> wrapper\n\nvar FilePond = exports.FilePond = function (_React$Component) {\n _inherits(FilePond, _React$Component);\n\n function FilePond(props) {\n _classCallCheck(this, FilePond);\n\n var _this = _possibleConstructorReturn(this, (FilePond.__proto__ || Object.getPrototypeOf(FilePond)).call(this, props));\n\n _this.allowFilesSync = true;\n return _this;\n }\n\n // Will setup FilePond instance when mounted\n\n\n _createClass(FilePond, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this2 = this;\n\n // clone the input so we can restore it in unmount\n this._input = this._element.querySelector('input[type=\"file\"]');\n this._inputClone = this._input.cloneNode();\n\n // exit here if not supported\n if (!isSupported) return;\n\n var options = Object.assign({}, this.props);\n\n // if onupdate files is defined, make sure setFiles does not cause race condition\n if (options.onupdatefiles) {\n var cb = options.onupdatefiles;\n options.onupdatefiles = function (items) {\n _this2.allowFilesSync = false;\n cb(items);\n };\n }\n\n // Create our pond\n this._pond = (0, _filepond.create)(this._input, options);\n\n // Reference pond methods to FilePond component instance\n Object.keys(this._pond).filter(function (key) {\n return !filteredMethods.includes(key);\n }).forEach(function (key) {\n _this2[key] = _this2._pond[key];\n });\n }\n\n // Will clean up FilePond instance when unmounted\n\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n // exit when no pond defined\n if (!this._pond) return;\n\n // This fixed <Strict> errors\n\n // FilePond destroy is async so we have to move FilePond to a bin element so it can no longer affect current element tree as React unmount / mount is sync\n var bin = document.createElement(\"div\");\n bin.append(this._pond.element);\n bin.id = \"foo\";\n\n // now we call destroy so FilePond can start it's destroy logic\n this._pond.destroy();\n this._pond = undefined;\n\n // we re-add the original file input element so everything is as it was before\n this._element.append(this._inputClone);\n }\n }, {\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate() {\n if (!this.allowFilesSync) {\n this.allowFilesSync = true;\n return false;\n }\n return true;\n }\n\n // Something changed\n\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n // exit when no pond defined\n if (!this._pond) return;\n\n var options = Object.assign({}, this.props);\n\n // this is only set onces, on didmount\n delete options.onupdatefiles;\n\n // update pond options based on new props\n this._pond.setOptions(options);\n }\n\n // Renders basic element hook for FilePond to attach to\n\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n\n var _props = this.props,\n id = _props.id,\n name = _props.name,\n className = _props.className,\n allowMultiple = _props.allowMultiple,\n required = _props.required,\n captureMethod = _props.captureMethod,\n acceptedFileTypes = _props.acceptedFileTypes;\n\n return (0, _react.createElement)(\"div\", {\n className: \"filepond--wrapper\",\n ref: function ref(element) {\n return _this3._element = element;\n }\n }, (0, _react.createElement)(\"input\", {\n type: \"file\",\n name: name,\n id: id,\n accept: acceptedFileTypes,\n multiple: allowMultiple,\n required: required,\n className: className,\n capture: captureMethod\n }));\n }\n }]);\n\n return FilePond;\n}(_react2.default.Component);\n\n\n","function getRect(element) {\n return element.getBoundingClientRect();\n}\nexport default function detectElementOverflow(element, container) {\n return {\n get collidedTop() {\n return getRect(element).top < getRect(container).top;\n },\n get collidedBottom() {\n return getRect(element).bottom > getRect(container).bottom;\n },\n get collidedLeft() {\n return getRect(element).left < getRect(container).left;\n },\n get collidedRight() {\n return getRect(element).right > getRect(container).right;\n },\n get overflowTop() {\n return getRect(container).top - getRect(element).top;\n },\n get overflowBottom() {\n return getRect(element).bottom - getRect(container).bottom;\n },\n get overflowLeft() {\n return getRect(container).left - getRect(element).left;\n },\n get overflowRight() {\n return getRect(element).right - getRect(container).right;\n },\n };\n}\n","var isProduction = process.env.NODE_ENV === 'production';\nfunction warning(condition, message) {\n if (!isProduction) {\n if (condition) {\n return;\n }\n\n var text = \"Warning: \" + message;\n\n if (typeof console !== 'undefined') {\n console.warn(text);\n }\n\n try {\n throw Error(text);\n } catch (x) {}\n }\n}\n\nexport default warning;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport React, { Component } from 'react';\nimport { findDOMNode } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport detectElementOverflow from 'detect-element-overflow';\nimport warning from 'tiny-warning';\nvar isBrowser = typeof document !== 'undefined';\nvar isDisplayContentsSupported = isBrowser && 'CSS' in window && 'supports' in window.CSS && CSS.supports('display', 'contents');\nvar isMutationObserverSupported = isBrowser && 'MutationObserver' in window;\nfunction capitalize(string) {\n return (string.charAt(0).toUpperCase() + string.slice(1));\n}\nfunction findScrollContainer(element) {\n var parent = element.parentElement;\n while (parent) {\n var overflow = window.getComputedStyle(parent).overflow;\n if (overflow.split(' ').every(function (o) { return o === 'auto' || o === 'scroll'; })) {\n return parent;\n }\n parent = parent.parentElement;\n }\n return document.documentElement;\n}\nfunction alignAxis(_a) {\n var axis = _a.axis, container = _a.container, element = _a.element, invertAxis = _a.invertAxis, secondary = _a.secondary, scrollContainer = _a.scrollContainer, spacing = _a.spacing;\n var style = window.getComputedStyle(element);\n var parent = container.parentElement;\n if (!parent) {\n return;\n }\n var scrollContainerCollisions = detectElementOverflow(parent, scrollContainer);\n var documentCollisions = detectElementOverflow(parent, document.documentElement);\n var isX = axis === 'x';\n var startProperty = isX ? 'left' : 'top';\n var endProperty = isX ? 'right' : 'bottom';\n var sizeProperty = isX ? 'width' : 'height';\n var overflowStartProperty = \"overflow\".concat(capitalize(startProperty));\n var overflowEndProperty = \"overflow\".concat(capitalize(endProperty));\n var scrollProperty = \"scroll\".concat(capitalize(startProperty));\n var uppercasedSizeProperty = capitalize(sizeProperty);\n var offsetSizeProperty = \"offset\".concat(uppercasedSizeProperty);\n var clientSizeProperty = \"client\".concat(uppercasedSizeProperty);\n var minSizeProperty = \"min-\".concat(sizeProperty);\n var scrollbarWidth = scrollContainer[offsetSizeProperty] - scrollContainer[clientSizeProperty];\n var startSpacing = typeof spacing === 'object' ? spacing[startProperty] : spacing;\n var availableStartSpace = -Math.max(scrollContainerCollisions[overflowStartProperty], documentCollisions[overflowStartProperty] + document.documentElement[scrollProperty]) - startSpacing;\n var endSpacing = typeof spacing === 'object' ? spacing[endProperty] : spacing;\n var availableEndSpace = -Math.max(scrollContainerCollisions[overflowEndProperty], documentCollisions[overflowEndProperty] - document.documentElement[scrollProperty]) -\n endSpacing -\n scrollbarWidth;\n if (secondary) {\n availableStartSpace += parent[clientSizeProperty];\n availableEndSpace += parent[clientSizeProperty];\n }\n var offsetSize = element[offsetSizeProperty];\n function displayStart() {\n element.style[startProperty] = 'auto';\n element.style[endProperty] = secondary ? '0' : '100%';\n }\n function displayEnd() {\n element.style[startProperty] = secondary ? '0' : '100%';\n element.style[endProperty] = 'auto';\n }\n function displayIfFits(availableSpace, display) {\n var fits = offsetSize <= availableSpace;\n if (fits) {\n display();\n }\n return fits;\n }\n function displayStartIfFits() {\n return displayIfFits(availableStartSpace, displayStart);\n }\n function displayEndIfFits() {\n return displayIfFits(availableEndSpace, displayEnd);\n }\n function displayWhereverShrinkedFits() {\n var moreSpaceStart = availableStartSpace > availableEndSpace;\n var rawMinSize = style.getPropertyValue(minSizeProperty);\n var minSize = rawMinSize ? parseInt(rawMinSize, 10) : null;\n function shrinkToSize(size) {\n warning(!minSize || size >= minSize, \"<Fit />'s child will not fit anywhere with its current \".concat(minSizeProperty, \" of \").concat(minSize, \"px.\"));\n var newSize = Math.max(size, minSize || 0);\n warning(false, \"<Fit />'s child needed to have its \".concat(sizeProperty, \" decreased to \").concat(newSize, \"px.\"));\n element.style[sizeProperty] = \"\".concat(newSize, \"px\");\n }\n if (moreSpaceStart) {\n shrinkToSize(availableStartSpace);\n displayStart();\n }\n else {\n shrinkToSize(availableEndSpace);\n displayEnd();\n }\n }\n var fits;\n if (invertAxis) {\n fits = displayStartIfFits() || displayEndIfFits();\n }\n else {\n fits = displayEndIfFits() || displayStartIfFits();\n }\n if (!fits) {\n displayWhereverShrinkedFits();\n }\n}\nfunction alignMainAxis(args) {\n alignAxis(args);\n}\nfunction alignSecondaryAxis(args) {\n alignAxis(__assign(__assign({}, args), { axis: args.axis === 'x' ? 'y' : 'x', secondary: true }));\n}\nfunction alignBothAxis(args) {\n var invertAxis = args.invertAxis, invertSecondaryAxis = args.invertSecondaryAxis, commonArgs = __rest(args, [\"invertAxis\", \"invertSecondaryAxis\"]);\n alignMainAxis(__assign(__assign({}, commonArgs), { invertAxis: invertAxis }));\n alignSecondaryAxis(__assign(__assign({}, commonArgs), { invertAxis: invertSecondaryAxis }));\n}\nvar Fit = /** @class */ (function (_super) {\n __extends(Fit, _super);\n function Fit() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.fit = function () {\n var _a = _this, scrollContainer = _a.scrollContainer, container = _a.container, element = _a.element;\n if (!scrollContainer || !container || !element) {\n return;\n }\n var elementWidth = element.clientWidth;\n var elementHeight = element.clientHeight;\n // No need to recalculate - already did that for current dimensions\n if (_this.elementWidth === elementWidth && _this.elementHeight === elementHeight) {\n return;\n }\n // Save the dimensions so that we know we don't need to repeat the function if unchanged\n _this.elementWidth = elementWidth;\n _this.elementHeight = elementHeight;\n var parent = container.parentElement;\n // Container was unmounted\n if (!parent) {\n return;\n }\n /**\n * We need to ensure that <Fit />'s child has a absolute position. Otherwise,\n * we wouldn't be able to place the child in the correct position.\n */\n var style = window.getComputedStyle(element);\n var position = style.position;\n if (position !== 'absolute') {\n element.style.position = 'absolute';\n }\n /**\n * We need to ensure that <Fit />'s parent has a relative or absolute position. Otherwise,\n * we wouldn't be able to place the child in the correct position.\n */\n var parentStyle = window.getComputedStyle(parent);\n var parentPosition = parentStyle.position;\n if (parentPosition !== 'relative' && parentPosition !== 'absolute') {\n parent.style.position = 'relative';\n }\n var _b = _this.props, invertAxis = _b.invertAxis, invertSecondaryAxis = _b.invertSecondaryAxis, _c = _b.mainAxis, mainAxis = _c === void 0 ? 'y' : _c, _d = _b.spacing, spacing = _d === void 0 ? 8 : _d;\n alignBothAxis({\n container: container,\n element: element,\n invertAxis: invertAxis,\n invertSecondaryAxis: invertSecondaryAxis,\n axis: mainAxis,\n scrollContainer: scrollContainer,\n spacing: spacing,\n });\n };\n return _this;\n }\n Fit.prototype.componentDidMount = function () {\n var _this = this;\n if (!isDisplayContentsSupported) {\n // eslint-disable-next-line react/no-find-dom-node\n var element = findDOMNode(this);\n if (!element || !(element instanceof HTMLElement)) {\n return;\n }\n this.container = element;\n this.element = element;\n this.scrollContainer = findScrollContainer(element);\n }\n this.fit();\n var onMutation = function () {\n _this.fit();\n };\n if (isMutationObserverSupported && this.element) {\n var mutationObserver = new MutationObserver(onMutation);\n mutationObserver.observe(this.element, {\n attributes: true,\n attributeFilter: ['class', 'style'],\n });\n }\n };\n Fit.prototype.render = function () {\n var _this = this;\n var children = this.props.children;\n var child = React.Children.only(children);\n if (isDisplayContentsSupported) {\n return (React.createElement(\"span\", { ref: function (container) {\n _this.container = container;\n var element = container && container.firstElementChild;\n if (!element || !(element instanceof HTMLElement)) {\n return;\n }\n _this.element = element;\n _this.scrollContainer = findScrollContainer(element);\n }, style: { display: 'contents' } }, child));\n }\n return child;\n };\n Fit.propTypes = {\n children: PropTypes.node.isRequired,\n invertAxis: PropTypes.bool,\n invertSecondaryAxis: PropTypes.bool,\n mainAxis: PropTypes.oneOf(['x', 'y']),\n spacing: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.shape({\n bottom: PropTypes.number.isRequired,\n left: PropTypes.number.isRequired,\n right: PropTypes.number.isRequired,\n top: PropTypes.number.isRequired,\n }),\n ]),\n };\n return Fit;\n}(Component));\nexport default Fit;\n","import Fit from './Fit';\nexport { Fit };\nexport default Fit;\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react')) :\n typeof define === 'function' && define.amd ? define(['exports', 'react'], factory) :\n (global = global || self, factory(global.PlaidLink = {}, global.React));\n}(this, (function (exports, react) { 'use strict';\n\n var react__default = 'default' in react ? react['default'] : react;\n\n function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n }\n\n function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n }\n\n function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n }\n\n function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n }\n\n function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n }\n\n function _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n }\n\n function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n }\n\n function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n }\n\n function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n\n function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\n function unwrapExports (x) {\n \treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n }\n\n function createCommonjsModule(fn, module) {\n \treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n }\n\n var useScript_1 = createCommonjsModule(function (module, exports) {\n\n var __rest = commonjsGlobal && commonjsGlobal.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n };\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.scripts = void 0;\n\n // Previously loading/loaded scripts and their current status\n\n\n exports.scripts = {}; // Check for existing <script> tags with this src. If so, update scripts[src]\n // and return the new status; otherwise, return undefined.\n\n var checkExisting = function (src) {\n var existing = document.querySelector(\"script[src=\\\"\" + src + \"\\\"]\");\n\n if (existing) {\n // Assume existing <script> tag is already loaded,\n // and cache that data for future use.\n return exports.scripts[src] = {\n loading: false,\n error: null,\n scriptEl: existing\n };\n }\n\n return undefined;\n };\n\n function useScript(_a) {\n var src = _a.src,\n _b = _a.checkForExisting,\n checkForExisting = _b === void 0 ? false : _b,\n attributes = __rest(_a, [\"src\", \"checkForExisting\"]); // Check whether some instance of this hook considered this src.\n\n\n var status = src ? exports.scripts[src] : undefined; // If requested, check for existing <script> tags with this src\n // (unless we've already loaded the script ourselves).\n\n if (!status && checkForExisting && src && isBrowser) {\n status = checkExisting(src);\n }\n\n var _c = (0, react__default.useState)(status ? status.loading : Boolean(src)),\n loading = _c[0],\n setLoading = _c[1];\n\n var _d = (0, react__default.useState)(status ? status.error : null),\n error = _d[0],\n setError = _d[1];\n\n (0, react__default.useEffect)(function () {\n // Nothing to do on server, or if no src specified, or\n // if loading has already resolved to \"loaded\" or \"error\" state.\n if (!isBrowser || !src || !loading || error) return; // Check again for existing <script> tags with this src\n // in case it's changed since mount.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n\n status = exports.scripts[src];\n\n if (!status && checkForExisting) {\n status = checkExisting(src);\n } // Determine or create <script> element to listen to.\n\n\n var scriptEl;\n\n if (status) {\n scriptEl = status.scriptEl;\n } else {\n scriptEl = document.createElement('script');\n scriptEl.src = src;\n Object.keys(attributes).forEach(function (key) {\n if (scriptEl[key] === undefined) {\n scriptEl.setAttribute(key, attributes[key]);\n } else {\n scriptEl[key] = attributes[key];\n }\n });\n status = exports.scripts[src] = {\n loading: true,\n error: null,\n scriptEl: scriptEl\n };\n } // `status` is now guaranteed to be defined: either the old status\n // from a previous load, or a newly created one.\n\n\n var handleLoad = function () {\n if (status) status.loading = false;\n setLoading(false);\n };\n\n var handleError = function (error) {\n if (status) status.error = error;\n setError(error);\n };\n\n scriptEl.addEventListener('load', handleLoad);\n scriptEl.addEventListener('error', handleError);\n document.body.appendChild(scriptEl);\n return function () {\n scriptEl.removeEventListener('load', handleLoad);\n scriptEl.removeEventListener('error', handleError);\n }; // we need to ignore the attributes as they're a new object per call, so we'd never skip an effect call\n }, [src]);\n return [loading, error];\n }\n\n exports.default = useScript;\n var isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n });\n\n unwrapExports(useScript_1);\n var useScript_2 = useScript_1.scripts;\n\n var lib = createCommonjsModule(function (module, exports) {\n\n var __importDefault = commonjsGlobal && commonjsGlobal.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n };\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.scripts = exports.default = void 0;\n\n\n\n Object.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function () {\n return __importDefault(useScript_1).default;\n }\n });\n Object.defineProperty(exports, \"scripts\", {\n enumerable: true,\n get: function () {\n return useScript_1.scripts;\n }\n });\n });\n\n var useScript = unwrapExports(lib);\n var lib_1 = lib.scripts;\n\n var renameKeyInObject = function renameKeyInObject(o, oldKey, newKey) {\n var newObject = {};\n delete Object.assign(newObject, o, _defineProperty({}, newKey, o[oldKey]))[oldKey];\n return newObject;\n };\n /**\n * Wrap link handler creation and instance to clean up iframe via destroy() method\n */\n\n\n var createPlaid = function createPlaid(options) {\n var state = {\n plaid: null,\n open: false,\n onExitCallback: null\n }; // If Plaid is not available, throw an Error\n\n if (typeof window === 'undefined' || !window.Plaid) {\n throw new Error('Plaid not loaded');\n }\n\n var config = renameKeyInObject(options, 'publicKey', 'key');\n state.plaid = window.Plaid.create(_objectSpread2(_objectSpread2({}, config), {}, {\n onExit: function onExit(error, metadata) {\n state.open = false;\n config.onExit && config.onExit(error, metadata);\n state.onExitCallback && state.onExitCallback();\n }\n }));\n\n var open = function open() {\n if (!state.plaid) {\n return;\n }\n\n state.open = true;\n state.onExitCallback = null;\n state.plaid.open();\n };\n\n var exit = function exit(exitOptions, callback) {\n if (!state.open || !state.plaid) {\n callback && callback();\n return;\n }\n\n state.onExitCallback = callback;\n state.plaid.exit(exitOptions);\n\n if (exitOptions && exitOptions.force) {\n state.open = false;\n }\n };\n\n var destroy = function destroy() {\n if (!state.plaid) {\n return;\n }\n\n state.plaid.destroy();\n state.plaid = null;\n };\n\n return {\n open: open,\n exit: exit,\n destroy: destroy\n };\n };\n\n var PLAID_LINK_STABLE_URL = 'https://cdn.plaid.com/link/v2/stable/link-initialize.js';\n\n var noop = function noop() {};\n /**\n * This hook loads Plaid script and manages the Plaid Link creation for you.\n * You get easy open & exit methods to call and loading & error states.\n *\n * This will destroy the Plaid UI on un-mounting so it's up to you to be\n * graceful to the user.\n *\n * A new Plaid instance is created every time the token and products options change.\n * It's up to you to prevent unnecessary re-creations on re-render.\n */\n\n\n var usePlaidLink = function usePlaidLink(options) {\n // Asynchronously load the plaid/link/stable url into the DOM\n var _useScript = useScript({\n src: PLAID_LINK_STABLE_URL,\n checkForExisting: true\n }),\n _useScript2 = _slicedToArray(_useScript, 2),\n loading = _useScript2[0],\n error = _useScript2[1]; // internal state\n\n\n var _useState = react.useState(null),\n _useState2 = _slicedToArray(_useState, 2),\n plaid = _useState2[0],\n setPlaid = _useState2[1];\n\n var _useState3 = react.useState(false),\n _useState4 = _slicedToArray(_useState3, 2),\n iframeLoaded = _useState4[0],\n setIframeLoaded = _useState4[1];\n\n var products = (options.product || []).slice().sort().join(',');\n react.useEffect(function () {\n // If the link.js script is still loading, return prematurely\n if (loading) {\n return;\n } // If the token and publicKey is undefined, return prematurely\n\n\n if (!options.token && !options.publicKey) {\n return;\n }\n\n if (error || !window.Plaid) {\n // eslint-disable-next-line no-console\n console.error('Error loading Plaid', error);\n return;\n } // if an old plaid instance exists, destroy it before\n // creating a new one\n\n\n if (plaid != null) {\n plaid.exit({\n force: true\n }, function () {\n return plaid.destroy();\n });\n }\n\n var next = createPlaid(_objectSpread2(_objectSpread2({}, options), {}, {\n onLoad: function onLoad() {\n setIframeLoaded(true);\n options.onLoad && options.onLoad();\n }\n }));\n setPlaid(next); // destroy the Plaid iframe factory\n\n return function () {\n return next.exit({\n force: true\n }, function () {\n return next.destroy();\n });\n };\n }, [loading, error, options.publicKey, options.token, products]);\n var ready = plaid != null && (!loading || iframeLoaded);\n\n var openNoOp = function openNoOp() {\n if (!options.token) {\n console.warn('react-plaid-link: You cannot call open() without a valid token supplied to usePlaidLink. This is a no-op.');\n }\n };\n\n return {\n error: error,\n ready: ready,\n exit: plaid ? plaid.exit : noop,\n open: plaid ? plaid.open : openNoOp\n };\n };\n\n var _excluded = [\"children\", \"style\", \"className\"];\n var PlaidLink = function PlaidLink(props) {\n var children = props.children,\n style = props.style,\n className = props.className,\n config = _objectWithoutProperties(props, _excluded);\n\n var _usePlaidLink = usePlaidLink(_objectSpread2({}, config)),\n error = _usePlaidLink.error,\n open = _usePlaidLink.open;\n\n return /*#__PURE__*/react__default.createElement(\"button\", {\n disabled: Boolean(error),\n type: \"button\",\n className: className,\n style: _objectSpread2({\n padding: '6px 4px',\n outline: 'none',\n background: '#FFFFFF',\n border: '2px solid #F1F1F1',\n borderRadius: '4px'\n }, style),\n onClick: function onClick() {\n return open();\n }\n }, children);\n };\n PlaidLink.displayName = 'PlaidLink';\n\n // The following event names are stable and will not be deprecated or changed\n\n (function (PlaidLinkStableEvent) {\n PlaidLinkStableEvent[\"OPEN\"] = \"OPEN\";\n PlaidLinkStableEvent[\"EXIT\"] = \"EXIT\";\n PlaidLinkStableEvent[\"HANDOFF\"] = \"HANDOFF\";\n PlaidLinkStableEvent[\"SELECT_INSTITUTION\"] = \"SELECT_INSTITUTION\";\n PlaidLinkStableEvent[\"ERROR\"] = \"ERROR\";\n })(exports.PlaidLinkStableEvent || (exports.PlaidLinkStableEvent = {}));\n\n exports.PlaidLink = PlaidLink;\n exports.usePlaidLink = usePlaidLink;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];c.children=f}if(a&&a.defaultProps)for(d in g=a.defaultProps,g)void 0===c[d]&&(c[d]=g[d]);return{$$typeof:l,type:a,key:k,ref:h,props:c,_owner:K.current}}\nfunction N(a,b){return{$$typeof:l,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function O(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===l}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+a.replace(/[=:]/g,function(a){return b[a]})}var P=/\\/+/g;function Q(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(\"\"+a.key):b.toString(36)}\nfunction R(a,b,e,d,c){var k=typeof a;if(\"undefined\"===k||\"boolean\"===k)a=null;var h=!1;if(null===a)h=!0;else switch(k){case \"string\":case \"number\":h=!0;break;case \"object\":switch(a.$$typeof){case l:case n:h=!0}}if(h)return h=a,c=c(h),a=\"\"===d?\".\"+Q(h,0):d,I(c)?(e=\"\",null!=a&&(e=a.replace(P,\"$&/\")+\"/\"),R(c,b,e,\"\",function(a){return a})):null!=c&&(O(c)&&(c=N(c,e+(!c.key||h&&h.key===c.key?\"\":(\"\"+c.key).replace(P,\"$&/\")+\"/\")+a)),b.push(c)),1;h=0;d=\"\"===d?\".\":d+\":\";if(I(a))for(var g=0;g<a.length;g++){k=\na[g];var f=d+Q(k,g);h+=R(k,b,e,f,c)}else if(f=A(a),\"function\"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=d+Q(k,g++),h+=R(k,b,e,f,c);else if(\"object\"===k)throw b=String(a),Error(\"Objects are not valid as a React child (found: \"+(\"[object Object]\"===b?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":b)+\"). If you meant to render a collection of children, use an array instead.\");return h}\nfunction S(a,b,e){if(null==a)return a;var d=[],c=0;R(a,d,\"\",\"\",function(a){return b.call(e,a,c++)});return d}function T(a){if(-1===a._status){var b=a._result;b=b();b.then(function(b){if(0===a._status||-1===a._status)a._status=1,a._result=b},function(b){if(0===a._status||-1===a._status)a._status=2,a._result=b});-1===a._status&&(a._status=0,a._result=b)}if(1===a._status)return a._result.default;throw a._result;}\nvar U={current:null},V={transition:null},W={ReactCurrentDispatcher:U,ReactCurrentBatchConfig:V,ReactCurrentOwner:K};exports.Children={map:S,forEach:function(a,b,e){S(a,function(){b.apply(this,arguments)},e)},count:function(a){var b=0;S(a,function(){b++});return b},toArray:function(a){return S(a,function(a){return a})||[]},only:function(a){if(!O(a))throw Error(\"React.Children.only expected to receive a single React element child.\");return a}};exports.Component=E;exports.Fragment=p;\nexports.Profiler=r;exports.PureComponent=G;exports.StrictMode=q;exports.Suspense=w;exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=W;\nexports.cloneElement=function(a,b,e){if(null===a||void 0===a)throw Error(\"React.cloneElement(...): The argument must be a React element, but you passed \"+a+\".\");var d=C({},a.props),c=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=K.current);void 0!==b.key&&(c=\"\"+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)J.call(b,f)&&!L.hasOwnProperty(f)&&(d[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)d.children=e;else if(1<f){g=Array(f);\nfor(var m=0;m<f;m++)g[m]=arguments[m+2];d.children=g}return{$$typeof:l,type:a.type,key:c,ref:k,props:d,_owner:h}};exports.createContext=function(a){a={$$typeof:u,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null};a.Provider={$$typeof:t,_context:a};return a.Consumer=a};exports.createElement=M;exports.createFactory=function(a){var b=M.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};\nexports.forwardRef=function(a){return{$$typeof:v,render:a}};exports.isValidElement=O;exports.lazy=function(a){return{$$typeof:y,_payload:{_status:-1,_result:a},_init:T}};exports.memo=function(a,b){return{$$typeof:x,type:a,compare:void 0===b?null:b}};exports.startTransition=function(a){var b=V.transition;V.transition={};try{a()}finally{V.transition=b}};exports.unstable_act=function(){throw Error(\"act(...) is not supported in production builds of React.\");};\nexports.useCallback=function(a,b){return U.current.useCallback(a,b)};exports.useContext=function(a){return U.current.useContext(a)};exports.useDebugValue=function(){};exports.useDeferredValue=function(a){return U.current.useDeferredValue(a)};exports.useEffect=function(a,b){return U.current.useEffect(a,b)};exports.useId=function(){return U.current.useId()};exports.useImperativeHandle=function(a,b,e){return U.current.useImperativeHandle(a,b,e)};\nexports.useInsertionEffect=function(a,b){return U.current.useInsertionEffect(a,b)};exports.useLayoutEffect=function(a,b){return U.current.useLayoutEffect(a,b)};exports.useMemo=function(a,b){return U.current.useMemo(a,b)};exports.useReducer=function(a,b,e){return U.current.useReducer(a,b,e)};exports.useRef=function(a){return U.current.useRef(a)};exports.useState=function(a){return U.current.useState(a)};exports.useSyncExternalStore=function(a,b,e){return U.current.useSyncExternalStore(a,b,e)};\nexports.useTransition=function(){return U.current.useTransition()};exports.version=\"18.2.0\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/**\n * @license React\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';function f(a,b){var c=a.length;a.push(b);a:for(;0<c;){var d=c-1>>>1,e=a[d];if(0<g(e,b))a[d]=b,a[c]=e,c=d;else break a}}function h(a){return 0===a.length?null:a[0]}function k(a){if(0===a.length)return null;var b=a[0],c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length,w=e>>>1;d<w;){var m=2*(d+1)-1,C=a[m],n=m+1,x=a[n];if(0>g(C,c))n<e&&0>g(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(n<e&&0>g(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Q<P?!1:!0}function R(){if(null!==O){var a=exports.unstable_now();Q=a;var b=!0;try{b=O(!0,a)}finally{b?S():(N=!1,O=null)}}else N=!1}var S;if(\"function\"===typeof F)S=function(){F(R)};else if(\"undefined\"!==typeof MessageChannel){var T=new MessageChannel,U=T.port2;T.port1.onmessage=R;S=function(){U.postMessage(null)}}else S=function(){D(R,0)};function I(a){O=a;N||(N=!0,S())}function K(a,b){L=D(function(){a(exports.unstable_now())},b)}\nexports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){A||z||(A=!0,I(J))};\nexports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):P=0<a?Math.floor(1E3/a):5};exports.unstable_getCurrentPriorityLevel=function(){return y};exports.unstable_getFirstCallbackNode=function(){return h(r)};exports.unstable_next=function(a){switch(y){case 1:case 2:case 3:var b=3;break;default:b=y}var c=y;y=b;try{return a()}finally{y=c}};exports.unstable_pauseExecution=function(){};\nexports.unstable_requestPaint=function(){};exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=y;y=a;try{return b()}finally{y=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0<c?d+c:d):c=d;switch(a){case 1:var e=-1;break;case 2:e=250;break;case 5:e=1073741823;break;case 4:e=1E4;break;default:e=5E3}e=c+e;a={id:u++,callback:b,priorityLevel:a,startTime:c,expirationTime:e,sortIndex:-1};c>d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","var allowedVariants = ['normal', 'small-caps'];\n/**\n * Gets font CSS shorthand property given element.\n *\n * @param {HTMLElement} element Element to get font CSS shorthand property from\n */\nexport function getFontShorthand(element) {\n if (!element) {\n return '';\n }\n var style = window.getComputedStyle(element);\n if (style.font) {\n return style.font;\n }\n var isFontDefined = style.fontFamily !== '';\n if (!isFontDefined) {\n return '';\n }\n var fontVariant = allowedVariants.includes(style.fontVariant) ? style.fontVariant : 'normal';\n return \"\".concat(style.fontStyle, \" \").concat(fontVariant, \" \").concat(style.fontWeight, \" \").concat(style.fontSize, \" / \").concat(style.lineHeight, \" \").concat(style.fontFamily);\n}\nvar cachedCanvas;\n/**\n * Measures text width given text and font CSS shorthand.\n *\n * @param {string} text Text to measure\n * @param {string} font Font to use when measuring the text\n */\nexport function measureText(text, font) {\n var canvas = cachedCanvas || (cachedCanvas = document.createElement('canvas'));\n var context = canvas.getContext('2d');\n // Context type not supported\n if (!context) {\n return null;\n }\n context.font = font;\n var width = context.measureText(text).width;\n return Math.ceil(width);\n}\n/**\n * Updates input element width to fit its content given input element\n * @param {HTMLInputElement} element\n */\nexport function updateInputWidth(element) {\n if (typeof document === 'undefined' || !element) {\n return null;\n }\n var font = getFontShorthand(element);\n var text = element.value || element.placeholder;\n var width = measureText(text, font);\n if (width === null) {\n return null;\n }\n element.style.width = \"\".concat(width, \"px\");\n return width;\n}\nexport default updateInputWidth;\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 1 ? len - 1 : 0);\n for (var key = 1; key < len; key++) {\n args[key - 1] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","// extracted by mini-css-extract-plugin\nexport default {};","// extracted by mini-css-extract-plugin\nexport default {};","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\n\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\n\nvar isNativeReflectConstruct = require(\"./isNativeReflectConstruct.js\");\n\nvar possibleConstructorReturn = require(\"./possibleConstructorReturn.js\");\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return possibleConstructorReturn(this, result);\n };\n}\n\nmodule.exports = _createSuper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nmodule.exports = _isNativeReflectConstruct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var defineProperty = require(\"./defineProperty.js\");\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nmodule.exports = _objectSpread2, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose.js\");\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutProperties, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\n\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithHoles = require(\"./arrayWithHoles.js\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableRest = require(\"./nonIterableRest.js\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\n\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + \"9fd17690\" + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"doddl.customerportal.web:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkdoddl_customerportal_web\"] = self[\"webpackChunkdoddl_customerportal_web\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nexport default function _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return possibleConstructorReturn(this, result);\n };\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import defineProperty from \"./defineProperty.js\";\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}","var rHyphen = /-(.)/g;\nexport default function camelize(string) {\n return string.replace(rHyphen, function (_, chr) {\n return chr.toUpperCase();\n });\n}","import * as React from 'react';\nimport { useContext, useMemo } from 'react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const DEFAULT_BREAKPOINTS = ['xxl', 'xl', 'lg', 'md', 'sm', 'xs'];\nexport const DEFAULT_MIN_BREAKPOINT = 'xs';\nconst ThemeContext = /*#__PURE__*/React.createContext({\n prefixes: {},\n breakpoints: DEFAULT_BREAKPOINTS,\n minBreakpoint: DEFAULT_MIN_BREAKPOINT\n});\nconst {\n Consumer,\n Provider\n} = ThemeContext;\n\nfunction ThemeProvider({\n prefixes = {},\n breakpoints = DEFAULT_BREAKPOINTS,\n minBreakpoint = DEFAULT_MIN_BREAKPOINT,\n dir,\n children\n}) {\n const contextValue = useMemo(() => ({\n prefixes: { ...prefixes\n },\n breakpoints,\n minBreakpoint,\n dir\n }), [prefixes, breakpoints, minBreakpoint, dir]);\n return /*#__PURE__*/_jsx(Provider, {\n value: contextValue,\n children: children\n });\n}\n\nexport function useBootstrapPrefix(prefix, defaultPrefix) {\n const {\n prefixes\n } = useContext(ThemeContext);\n return prefix || prefixes[defaultPrefix] || defaultPrefix;\n}\nexport function useBootstrapBreakpoints() {\n const {\n breakpoints\n } = useContext(ThemeContext);\n return breakpoints;\n}\nexport function useBootstrapMinBreakpoint() {\n const {\n minBreakpoint\n } = useContext(ThemeContext);\n return minBreakpoint;\n}\nexport function useIsRTL() {\n const {\n dir\n } = useContext(ThemeContext);\n return dir === 'rtl';\n}\n\nfunction createBootstrapComponent(Component, opts) {\n if (typeof opts === 'string') opts = {\n prefix: opts\n };\n const isClassy = Component.prototype && Component.prototype.isReactComponent; // If it's a functional component make sure we don't break it with a ref\n\n const {\n prefix,\n forwardRefAs = isClassy ? 'ref' : 'innerRef'\n } = opts;\n const Wrapped = /*#__PURE__*/React.forwardRef(({ ...props\n }, ref) => {\n props[forwardRefAs] = ref;\n const bsPrefix = useBootstrapPrefix(props.bsPrefix, prefix);\n return /*#__PURE__*/_jsx(Component, { ...props,\n bsPrefix: bsPrefix\n });\n });\n Wrapped.displayName = `Bootstrap(${Component.displayName || Component.name})`;\n return Wrapped;\n}\n\nexport { createBootstrapComponent, Consumer as ThemeConsumer };\nexport default ThemeProvider;","import classNames from 'classnames';\nimport camelize from 'dom-helpers/camelize';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst pascalCase = str => str[0].toUpperCase() + camelize(str).slice(1);\n\n// TODO: emstricten & fix the typing here! `createWithBsPrefix<TElementType>...`\nexport default function createWithBsPrefix(prefix, {\n displayName = pascalCase(prefix),\n Component,\n defaultProps\n} = {}) {\n const BsComponent = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Tag = Component || 'div',\n ...props\n }, ref) => {\n const resolvedPrefix = useBootstrapPrefix(bsPrefix, prefix);\n return /*#__PURE__*/_jsx(Tag, {\n ref: ref,\n className: classNames(className, resolvedPrefix),\n ...props\n });\n });\n BsComponent.defaultProps = defaultProps;\n BsComponent.displayName = displayName;\n return BsComponent;\n}","import createWithBsPrefix from './createWithBsPrefix';\nexport default createWithBsPrefix('nav-item');","import * as React from 'react';\nconst SelectableContext = /*#__PURE__*/React.createContext(null);\nexport const makeEventKey = (eventKey, href = null) => {\n if (eventKey != null) return String(eventKey);\n return href || null;\n};\nexport default SelectableContext;","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n return _extends.apply(this, arguments);\n}","import invariant from 'invariant';\n\nvar noop = function noop() {};\n\nfunction readOnlyPropType(handler, name) {\n return function (props, propName) {\n if (props[propName] !== undefined) {\n if (!props[handler]) {\n return new Error(\"You have provided a `\" + propName + \"` prop to `\" + name + \"` \" + (\"without an `\" + handler + \"` handler prop. This will render a read-only field. \") + (\"If the field should be mutable use `\" + defaultKey(propName) + \"`. \") + (\"Otherwise, set `\" + handler + \"`.\"));\n }\n }\n };\n}\n\nexport function uncontrolledPropTypes(controlledValues, displayName) {\n var propTypes = {};\n Object.keys(controlledValues).forEach(function (prop) {\n // add default propTypes for folks that use runtime checks\n propTypes[defaultKey(prop)] = noop;\n\n if (process.env.NODE_ENV !== 'production') {\n var handler = controlledValues[prop];\n !(typeof handler === 'string' && handler.trim().length) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Uncontrollable - [%s]: the prop `%s` needs a valid handler key name in order to make it uncontrollable', displayName, prop) : invariant(false) : void 0;\n propTypes[prop] = readOnlyPropType(handler, displayName);\n }\n });\n return propTypes;\n}\nexport function isProp(props, prop) {\n return props[prop] !== undefined;\n}\nexport function defaultKey(key) {\n return 'default' + key.charAt(0).toUpperCase() + key.substr(1);\n}\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\nexport function canAcceptRef(component) {\n return !!component && (typeof component !== 'function' || component.prototype && component.prototype.isReactComponent);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\n\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\n\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n\nimport { useCallback, useRef, useState } from 'react';\nimport * as Utils from './utils';\n\nfunction useUncontrolledProp(propValue, defaultValue, handler) {\n var wasPropRef = useRef(propValue !== undefined);\n\n var _useState = useState(defaultValue),\n stateValue = _useState[0],\n setState = _useState[1];\n\n var isProp = propValue !== undefined;\n var wasProp = wasPropRef.current;\n wasPropRef.current = isProp;\n /**\n * If a prop switches from controlled to Uncontrolled\n * reset its value to the defaultValue\n */\n\n if (!isProp && wasProp && stateValue !== defaultValue) {\n setState(defaultValue);\n }\n\n return [isProp ? propValue : stateValue, useCallback(function (value) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (handler) handler.apply(void 0, [value].concat(args));\n setState(value);\n }, [handler])];\n}\n\nexport { useUncontrolledProp };\nexport default function useUncontrolled(props, config) {\n return Object.keys(config).reduce(function (result, fieldName) {\n var _extends2;\n\n var _ref = result,\n defaultValue = _ref[Utils.defaultKey(fieldName)],\n propsValue = _ref[fieldName],\n rest = _objectWithoutPropertiesLoose(_ref, [Utils.defaultKey(fieldName), fieldName].map(_toPropertyKey));\n\n var handlerName = config[fieldName];\n\n var _useUncontrolledProp = useUncontrolledProp(propsValue, defaultValue, props[handlerName]),\n value = _useUncontrolledProp[0],\n handler = _useUncontrolledProp[1];\n\n return _extends({}, rest, (_extends2 = {}, _extends2[fieldName] = value, _extends2[handlerName] = handler, _extends2));\n }, props);\n}","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction componentWillMount() {\n // Call this.constructor.gDSFP to support sub-classes.\n var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n if (state !== null && state !== undefined) {\n this.setState(state);\n }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n // Call this.constructor.gDSFP to support sub-classes.\n // Use the setState() updater to ensure state isn't stale in certain edge cases.\n function updater(prevState) {\n var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n return state !== null && state !== undefined ? state : null;\n }\n // Binding \"this\" is important for shallow renderer support.\n this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n try {\n var prevProps = this.props;\n var prevState = this.state;\n this.props = nextProps;\n this.state = nextState;\n this.__reactInternalSnapshotFlag = true;\n this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n prevProps,\n prevState\n );\n } finally {\n this.props = prevProps;\n this.state = prevState;\n }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n var prototype = Component.prototype;\n\n if (!prototype || !prototype.isReactComponent) {\n throw new Error('Can only polyfill class components');\n }\n\n if (\n typeof Component.getDerivedStateFromProps !== 'function' &&\n typeof prototype.getSnapshotBeforeUpdate !== 'function'\n ) {\n return Component;\n }\n\n // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n // Error if any of these lifecycles are present,\n // Because they would work differently between older and newer (16.3+) versions of React.\n var foundWillMountName = null;\n var foundWillReceivePropsName = null;\n var foundWillUpdateName = null;\n if (typeof prototype.componentWillMount === 'function') {\n foundWillMountName = 'componentWillMount';\n } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n foundWillMountName = 'UNSAFE_componentWillMount';\n }\n if (typeof prototype.componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'componentWillReceiveProps';\n } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n }\n if (typeof prototype.componentWillUpdate === 'function') {\n foundWillUpdateName = 'componentWillUpdate';\n } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n }\n if (\n foundWillMountName !== null ||\n foundWillReceivePropsName !== null ||\n foundWillUpdateName !== null\n ) {\n var componentName = Component.displayName || Component.name;\n var newApiName =\n typeof Component.getDerivedStateFromProps === 'function'\n ? 'getDerivedStateFromProps()'\n : 'getSnapshotBeforeUpdate()';\n\n throw Error(\n 'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n componentName +\n ' uses ' +\n newApiName +\n ' but also contains the following legacy lifecycles:' +\n (foundWillMountName !== null ? '\\n ' + foundWillMountName : '') +\n (foundWillReceivePropsName !== null\n ? '\\n ' + foundWillReceivePropsName\n : '') +\n (foundWillUpdateName !== null ? '\\n ' + foundWillUpdateName : '') +\n '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n 'https://fb.me/react-async-component-lifecycle-hooks'\n );\n }\n\n // React <= 16.2 does not support static getDerivedStateFromProps.\n // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n // Newer versions of React will ignore these lifecycles if gDSFP exists.\n if (typeof Component.getDerivedStateFromProps === 'function') {\n prototype.componentWillMount = componentWillMount;\n prototype.componentWillReceiveProps = componentWillReceiveProps;\n }\n\n // React <= 16.2 does not support getSnapshotBeforeUpdate.\n // As a workaround, use cWU to invoke the new lifecycle.\n // Newer versions of React will ignore that lifecycle if gSBU exists.\n if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n if (typeof prototype.componentDidUpdate !== 'function') {\n throw new Error(\n 'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n );\n }\n\n prototype.componentWillUpdate = componentWillUpdate;\n\n var componentDidUpdate = prototype.componentDidUpdate;\n\n prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n prevProps,\n prevState,\n maybeSnapshot\n ) {\n // 16.3+ will not execute our will-update method;\n // It will pass a snapshot value to did-update though.\n // Older versions will require our polyfilled will-update value.\n // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n // Because for <= 15.x versions this might be a \"prevContext\" object.\n // We also can't just check \"__reactInternalSnapshot\",\n // Because get-snapshot might return a falsy value.\n // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n var snapshot = this.__reactInternalSnapshotFlag\n ? this.__reactInternalSnapshot\n : maybeSnapshot;\n\n componentDidUpdate.call(this, prevProps, prevState, snapshot);\n };\n }\n\n return Component;\n}\n\nexport { polyfill };\n","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst NavbarBrand = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n as,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'navbar-brand');\n const Component = as || (props.href ? 'a' : 'span');\n return /*#__PURE__*/_jsx(Component, { ...props,\n ref: ref,\n className: classNames(className, bsPrefix)\n });\n});\nNavbarBrand.displayName = 'NavbarBrand';\nexport default NavbarBrand;","/**\n * Returns the owner document of a given element.\n * \n * @param node the element\n */\nexport default function ownerDocument(node) {\n return node && node.ownerDocument || document;\n}","import ownerWindow from './ownerWindow';\n/**\n * Returns one or all computed style properties of an element.\n * \n * @param node the element\n * @param psuedoElement the style property\n */\n\nexport default function getComputedStyle(node, psuedoElement) {\n return ownerWindow(node).getComputedStyle(node, psuedoElement);\n}","import ownerDocument from './ownerDocument';\n/**\n * Returns the owner window of a given element.\n * \n * @param node the element\n */\n\nexport default function ownerWindow(node) {\n var doc = ownerDocument(node);\n return doc && doc.defaultView || window;\n}","var rUpper = /([A-Z])/g;\nexport default function hyphenate(string) {\n return string.replace(rUpper, '-$1').toLowerCase();\n}","/**\n * Copyright 2013-2014, Facebook, Inc.\n * All rights reserved.\n * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/hyphenateStyleName.js\n */\nimport hyphenate from './hyphenate';\nvar msPattern = /^ms-/;\nexport default function hyphenateStyleName(string) {\n return hyphenate(string).replace(msPattern, '-ms-');\n}","var supportedTransforms = /^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i;\nexport default function isTransform(value) {\n return !!(value && supportedTransforms.test(value));\n}","import getComputedStyle from './getComputedStyle';\nimport hyphenate from './hyphenateStyle';\nimport isTransform from './isTransform';\n\nfunction style(node, property) {\n var css = '';\n var transforms = '';\n\n if (typeof property === 'string') {\n return node.style.getPropertyValue(hyphenate(property)) || getComputedStyle(node).getPropertyValue(hyphenate(property));\n }\n\n Object.keys(property).forEach(function (key) {\n var value = property[key];\n\n if (!value && value !== 0) {\n node.style.removeProperty(hyphenate(key));\n } else if (isTransform(key)) {\n transforms += key + \"(\" + value + \") \";\n } else {\n css += hyphenate(key) + \": \" + value + \";\";\n }\n });\n\n if (transforms) {\n css += \"transform: \" + transforms + \";\";\n }\n\n node.style.cssText += \";\" + css;\n}\n\nexport default style;","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","export default {\n disabled: false\n};","import React from 'react';\nexport default React.createContext(null);","export var forceReflow = function forceReflow(node) {\n return node.scrollTop;\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { forceReflow } from './utils/reflow';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * <Transition in={inProp} timeout={duration}>\n * {state => (\n * <div style={{\n * ...defaultStyle,\n * ...transitionStyles[state]\n * }}>\n * I'm a fade Transition!\n * </div>\n * )}\n * </Transition>\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n * <div>\n * <Transition in={inProp} timeout={500}>\n * {state => (\n * // ...\n * )}\n * </Transition>\n * <button onClick={() => setInProp(true)}>\n * Click to Enter\n * </button>\n * </div>\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n } // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n ;\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n if (nextStatus === ENTERING) {\n if (this.props.unmountOnExit || this.props.mountOnEnter) {\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this); // https://github.com/reactjs/react-transition-group/pull/749\n // With unmountOnExit or mountOnEnter, the enter animation should happen at the transition between `exited` and `entering`.\n // To make the animation happen, we have to separate each rendering and avoid being processed as batched.\n\n if (node) forceReflow(node);\n }\n\n this.performEnter(mounting);\n } else {\n this.performExit();\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n\n var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n maybeNode = _ref2[0],\n maybeAppearing = _ref2[1];\n\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode);\n });\n return;\n }\n\n this.props.onEnter(maybeNode, maybeAppearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(maybeNode, maybeAppearing);\n\n _this2.onTransitionEnd(enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode, maybeAppearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit() {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts();\n var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n return;\n }\n\n this.props.onExit(maybeNode);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(maybeNode);\n\n _this3.onTransitionEnd(timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n this.setNextCallback(handler);\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n maybeNode = _ref3[0],\n maybeNextCallback = _ref3[1];\n\n this.props.addEndListener(maybeNode, maybeNextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n _in = _this$props.in,\n _mountOnEnter = _this$props.mountOnEnter,\n _unmountOnExit = _this$props.unmountOnExit,\n _appear = _this$props.appear,\n _enter = _this$props.enter,\n _exit = _this$props.exit,\n _timeout = _this$props.timeout,\n _addEndListener = _this$props.addEndListener,\n _onEnter = _this$props.onEnter,\n _onEntering = _this$props.onEntering,\n _onEntered = _this$props.onEntered,\n _onExit = _this$props.onExit,\n _onExiting = _this$props.onExiting,\n _onExited = _this$props.onExited,\n _nodeRef = _this$props.nodeRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n return (\n /*#__PURE__*/\n // allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A React reference to DOM element that need to transition:\n * https://stackoverflow.com/a/51127130/4671932\n *\n * - When `nodeRef` prop is used, `node` is not passed to callback functions\n * (e.g. `onEnter`) because user already has direct access to the node.\n * - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n * `nodeRef` need to be provided to `Transition` with changed `key` prop\n * (see\n * [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n */\n nodeRef: PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n var value = propValue[key];\n return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n }\n }),\n\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * <Transition in={this.state.in} timeout={150}>\n * {state => (\n * <MyComponent className={`fade fade-${state}`} />\n * )}\n * </Transition>\n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * By default the child component does not perform the enter transition when\n * it first mounts, regardless of the value of `in`. If you want this\n * behavior, set both `appear` and `in` to `true`.\n *\n * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n * > only adds an additional enter transition. However, in the\n * > `<CSSTransition>` component that first enter transition does result in\n * > additional `.appear-*` classes, that way you can choose to style it\n * > differently.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. Timeouts are still used as a fallback if provided.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","export default !!(typeof window !== 'undefined' && window.document && window.document.createElement);","/* eslint-disable no-return-assign */\nimport canUseDOM from './canUseDOM';\nexport var optionsSupported = false;\nexport var onceSupported = false;\n\ntry {\n var options = {\n get passive() {\n return optionsSupported = true;\n },\n\n get once() {\n // eslint-disable-next-line no-multi-assign\n return onceSupported = optionsSupported = true;\n }\n\n };\n\n if (canUseDOM) {\n window.addEventListener('test', options, options);\n window.removeEventListener('test', options, true);\n }\n} catch (e) {\n /* */\n}\n\n/**\n * An `addEventListener` ponyfill, supports the `once` option\n * \n * @param node the element\n * @param eventName the event name\n * @param handle the handler\n * @param options event options\n */\nfunction addEventListener(node, eventName, handler, options) {\n if (options && typeof options !== 'boolean' && !onceSupported) {\n var once = options.once,\n capture = options.capture;\n var wrappedHandler = handler;\n\n if (!onceSupported && once) {\n wrappedHandler = handler.__once || function onceHandler(event) {\n this.removeEventListener(eventName, onceHandler, capture);\n handler.call(this, event);\n };\n\n handler.__once = wrappedHandler;\n }\n\n node.addEventListener(eventName, wrappedHandler, optionsSupported ? options : capture);\n }\n\n node.addEventListener(eventName, handler, options);\n}\n\nexport default addEventListener;","/**\n * A `removeEventListener` ponyfill\n * \n * @param node the element\n * @param eventName the event name\n * @param handle the handler\n * @param options event options\n */\nfunction removeEventListener(node, eventName, handler, options) {\n var capture = options && typeof options !== 'boolean' ? options.capture : options;\n node.removeEventListener(eventName, handler, capture);\n\n if (handler.__once) {\n node.removeEventListener(eventName, handler.__once, capture);\n }\n}\n\nexport default removeEventListener;","import addEventListener from './addEventListener';\nimport removeEventListener from './removeEventListener';\n\nfunction listen(node, eventName, handler, options) {\n addEventListener(node, eventName, handler, options);\n return function () {\n removeEventListener(node, eventName, handler, options);\n };\n}\n\nexport default listen;","import css from './css';\nimport listen from './listen';\nimport triggerEvent from './triggerEvent';\n\nfunction parseDuration(node) {\n var str = css(node, 'transitionDuration') || '';\n var mult = str.indexOf('ms') === -1 ? 1000 : 1;\n return parseFloat(str) * mult;\n}\n\nfunction emulateTransitionEnd(element, duration, padding) {\n if (padding === void 0) {\n padding = 5;\n }\n\n var called = false;\n var handle = setTimeout(function () {\n if (!called) triggerEvent(element, 'transitionend', true);\n }, duration + padding);\n var remove = listen(element, 'transitionend', function () {\n called = true;\n }, {\n once: true\n });\n return function () {\n clearTimeout(handle);\n remove();\n };\n}\n\nexport default function transitionEnd(element, handler, duration, padding) {\n if (duration == null) duration = parseDuration(element) || 0;\n var removeEmulate = emulateTransitionEnd(element, duration, padding);\n var remove = listen(element, 'transitionend', handler);\n return function () {\n removeEmulate();\n remove();\n };\n}","/**\n * Triggers an event on a given element.\n * \n * @param node the element\n * @param eventName the event name to trigger\n * @param bubbles whether the event should bubble up\n * @param cancelable whether the event should be cancelable\n */\nexport default function triggerEvent(node, eventName, bubbles, cancelable) {\n if (bubbles === void 0) {\n bubbles = false;\n }\n\n if (cancelable === void 0) {\n cancelable = true;\n }\n\n if (node) {\n var event = document.createEvent('HTMLEvents');\n event.initEvent(eventName, bubbles, cancelable);\n node.dispatchEvent(event);\n }\n}","import css from 'dom-helpers/css';\nimport transitionEnd from 'dom-helpers/transitionEnd';\n\nfunction parseDuration(node, property) {\n const str = css(node, property) || '';\n const mult = str.indexOf('ms') === -1 ? 1000 : 1;\n return parseFloat(str) * mult;\n}\n\nexport default function transitionEndListener(element, handler) {\n const duration = parseDuration(element, 'transitionDuration');\n const delay = parseDuration(element, 'transitionDelay');\n const remove = transitionEnd(element, e => {\n if (e.target === element) {\n remove();\n handler(e);\n }\n }, duration + delay);\n}","/**\n * Safe chained function\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n *\n * @param {function} functions to chain\n * @returns {function|null}\n */\nfunction createChainedFunction(...funcs) {\n return funcs.filter(f => f != null).reduce((acc, f) => {\n if (typeof f !== 'function') {\n throw new Error('Invalid Argument Type, must only provide functions, undefined, or null.');\n }\n\n if (acc === null) return f;\n return function chainedFunction(...args) {\n // @ts-ignore\n acc.apply(this, args); // @ts-ignore\n\n f.apply(this, args);\n };\n }, null);\n}\n\nexport default createChainedFunction;","// reading a dimension prop will cause the browser to recalculate,\n// which will let our animations work\nexport default function triggerBrowserReflow(node) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n node.offsetHeight;\n}","import { useMemo } from 'react';\n\nvar toFnRef = function toFnRef(ref) {\n return !ref || typeof ref === 'function' ? ref : function (value) {\n ref.current = value;\n };\n};\n\nexport function mergeRefs(refA, refB) {\n var a = toFnRef(refA);\n var b = toFnRef(refB);\n return function (value) {\n if (a) a(value);\n if (b) b(value);\n };\n}\n/**\n * Create and returns a single callback ref composed from two other Refs.\n *\n * ```tsx\n * const Button = React.forwardRef((props, ref) => {\n * const [element, attachRef] = useCallbackRef<HTMLButtonElement>();\n * const mergedRef = useMergedRefs(ref, attachRef);\n *\n * return <button ref={mergedRef} {...props}/>\n * })\n * ```\n *\n * @param refA A Callback or mutable Ref\n * @param refB A Callback or mutable Ref\n * @category refs\n */\n\nfunction useMergedRefs(refA, refB) {\n return useMemo(function () {\n return mergeRefs(refA, refB);\n }, [refA, refB]);\n}\n\nexport default useMergedRefs;","import ReactDOM from 'react-dom';\nexport default function safeFindDOMNode(componentOrElement) {\n if (componentOrElement && 'setState' in componentOrElement) {\n return ReactDOM.findDOMNode(componentOrElement);\n }\n\n return componentOrElement != null ? componentOrElement : null;\n}","import React, { useCallback, useRef } from 'react';\nimport Transition from 'react-transition-group/Transition';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport safeFindDOMNode from './safeFindDOMNode';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n// Normalizes Transition callbacks when nodeRef is used.\nconst TransitionWrapper = /*#__PURE__*/React.forwardRef(({\n onEnter,\n onEntering,\n onEntered,\n onExit,\n onExiting,\n onExited,\n addEndListener,\n children,\n childRef,\n ...props\n}, ref) => {\n const nodeRef = useRef(null);\n const mergedRef = useMergedRefs(nodeRef, childRef);\n\n const attachRef = r => {\n mergedRef(safeFindDOMNode(r));\n };\n\n const normalize = callback => param => {\n if (callback && nodeRef.current) {\n callback(nodeRef.current, param);\n }\n };\n /* eslint-disable react-hooks/exhaustive-deps */\n\n\n const handleEnter = useCallback(normalize(onEnter), [onEnter]);\n const handleEntering = useCallback(normalize(onEntering), [onEntering]);\n const handleEntered = useCallback(normalize(onEntered), [onEntered]);\n const handleExit = useCallback(normalize(onExit), [onExit]);\n const handleExiting = useCallback(normalize(onExiting), [onExiting]);\n const handleExited = useCallback(normalize(onExited), [onExited]);\n const handleAddEndListener = useCallback(normalize(addEndListener), [addEndListener]);\n /* eslint-enable react-hooks/exhaustive-deps */\n\n return /*#__PURE__*/_jsx(Transition, {\n ref: ref,\n ...props,\n onEnter: handleEnter,\n onEntered: handleEntered,\n onEntering: handleEntering,\n onExit: handleExit,\n onExited: handleExited,\n onExiting: handleExiting,\n addEndListener: handleAddEndListener,\n nodeRef: nodeRef,\n children: typeof children === 'function' ? (status, innerProps) => children(status, { ...innerProps,\n ref: attachRef\n }) : /*#__PURE__*/React.cloneElement(children, {\n ref: attachRef\n })\n });\n});\nexport default TransitionWrapper;","import classNames from 'classnames';\nimport css from 'dom-helpers/css';\nimport React, { useMemo } from 'react';\nimport { ENTERED, ENTERING, EXITED, EXITING } from 'react-transition-group/Transition';\nimport transitionEndListener from './transitionEndListener';\nimport createChainedFunction from './createChainedFunction';\nimport triggerBrowserReflow from './triggerBrowserReflow';\nimport TransitionWrapper from './TransitionWrapper';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst MARGINS = {\n height: ['marginTop', 'marginBottom'],\n width: ['marginLeft', 'marginRight']\n};\n\nfunction getDefaultDimensionValue(dimension, elem) {\n const offset = `offset${dimension[0].toUpperCase()}${dimension.slice(1)}`;\n const value = elem[offset];\n const margins = MARGINS[dimension];\n return value + // @ts-ignore\n parseInt(css(elem, margins[0]), 10) + // @ts-ignore\n parseInt(css(elem, margins[1]), 10);\n}\n\nconst collapseStyles = {\n [EXITED]: 'collapse',\n [EXITING]: 'collapsing',\n [ENTERING]: 'collapsing',\n [ENTERED]: 'collapse show'\n};\nconst defaultProps = {\n in: false,\n timeout: 300,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n getDimensionValue: getDefaultDimensionValue\n};\nconst Collapse = /*#__PURE__*/React.forwardRef(({\n onEnter,\n onEntering,\n onEntered,\n onExit,\n onExiting,\n className,\n children,\n dimension = 'height',\n getDimensionValue = getDefaultDimensionValue,\n ...props\n}, ref) => {\n /* Compute dimension */\n const computedDimension = typeof dimension === 'function' ? dimension() : dimension;\n /* -- Expanding -- */\n\n const handleEnter = useMemo(() => createChainedFunction(elem => {\n elem.style[computedDimension] = '0';\n }, onEnter), [computedDimension, onEnter]);\n const handleEntering = useMemo(() => createChainedFunction(elem => {\n const scroll = `scroll${computedDimension[0].toUpperCase()}${computedDimension.slice(1)}`;\n elem.style[computedDimension] = `${elem[scroll]}px`;\n }, onEntering), [computedDimension, onEntering]);\n const handleEntered = useMemo(() => createChainedFunction(elem => {\n elem.style[computedDimension] = null;\n }, onEntered), [computedDimension, onEntered]);\n /* -- Collapsing -- */\n\n const handleExit = useMemo(() => createChainedFunction(elem => {\n elem.style[computedDimension] = `${getDimensionValue(computedDimension, elem)}px`;\n triggerBrowserReflow(elem);\n }, onExit), [onExit, getDimensionValue, computedDimension]);\n const handleExiting = useMemo(() => createChainedFunction(elem => {\n elem.style[computedDimension] = null;\n }, onExiting), [computedDimension, onExiting]);\n return /*#__PURE__*/_jsx(TransitionWrapper, {\n ref: ref,\n addEndListener: transitionEndListener,\n ...props,\n \"aria-expanded\": props.role ? props.in : null,\n onEnter: handleEnter,\n onEntering: handleEntering,\n onEntered: handleEntered,\n onExit: handleExit,\n onExiting: handleExiting,\n childRef: children.ref,\n children: (state, innerProps) => /*#__PURE__*/React.cloneElement(children, { ...innerProps,\n className: classNames(className, children.props.className, collapseStyles[state], computedDimension === 'width' && 'collapse-horizontal')\n })\n });\n}); // @ts-ignore\n\n// @ts-ignore\nCollapse.defaultProps = defaultProps;\nexport default Collapse;","import * as React from 'react'; // TODO: check\n\nconst context = /*#__PURE__*/React.createContext(null);\ncontext.displayName = 'NavbarContext';\nexport default context;","import * as React from 'react';\nimport { useContext } from 'react';\nimport Collapse from './Collapse';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport NavbarContext from './NavbarContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst NavbarCollapse = /*#__PURE__*/React.forwardRef(({\n children,\n bsPrefix,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'navbar-collapse');\n const context = useContext(NavbarContext);\n return /*#__PURE__*/_jsx(Collapse, {\n in: !!(context && context.expanded),\n ...props,\n children: /*#__PURE__*/_jsx(\"div\", {\n ref: ref,\n className: bsPrefix,\n children: children\n })\n });\n});\nNavbarCollapse.displayName = 'NavbarCollapse';\nexport default NavbarCollapse;","import { useEffect, useRef } from 'react';\n/**\n * Creates a `Ref` whose value is updated in an effect, ensuring the most recent\n * value is the one rendered with. Generally only required for Concurrent mode usage\n * where previous work in `render()` may be discarded before being used.\n *\n * This is safe to access in an event handler.\n *\n * @param value The `Ref` value\n */\n\nfunction useCommittedRef(value) {\n var ref = useRef(value);\n useEffect(function () {\n ref.current = value;\n }, [value]);\n return ref;\n}\n\nexport default useCommittedRef;","import { useCallback } from 'react';\nimport useCommittedRef from './useCommittedRef';\nexport default function useEventCallback(fn) {\n var ref = useCommittedRef(fn);\n return useCallback(function () {\n return ref.current && ref.current.apply(ref, arguments);\n }, [ref]);\n}","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport NavbarContext from './NavbarContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultProps = {\n label: 'Toggle navigation'\n};\nconst NavbarToggle = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n children,\n label,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'button',\n onClick,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'navbar-toggler');\n const {\n onToggle,\n expanded\n } = useContext(NavbarContext) || {};\n const handleClick = useEventCallback(e => {\n if (onClick) onClick(e);\n if (onToggle) onToggle();\n });\n\n if (Component === 'button') {\n props.type = 'button';\n }\n\n return /*#__PURE__*/_jsx(Component, { ...props,\n ref: ref,\n onClick: handleClick,\n \"aria-label\": label,\n className: classNames(className, bsPrefix, !expanded && 'collapsed'),\n children: children || /*#__PURE__*/_jsx(\"span\", {\n className: `${bsPrefix}-icon`\n })\n });\n});\nNavbarToggle.displayName = 'NavbarToggle';\nNavbarToggle.defaultProps = defaultProps;\nexport default NavbarToggle;","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import { useEffect, useLayoutEffect } from 'react';\nvar isReactNative = typeof global !== 'undefined' && // @ts-ignore\nglobal.navigator && // @ts-ignore\nglobal.navigator.product === 'ReactNative';\nvar isDOM = typeof document !== 'undefined';\n/**\n * Is `useLayoutEffect` in a DOM or React Native environment, otherwise resolves to useEffect\n * Only useful to avoid the console warning.\n *\n * PREFER `useEffect` UNLESS YOU KNOW WHAT YOU ARE DOING.\n *\n * @category effects\n */\n\nexport default isDOM || isReactNative ? useLayoutEffect : useEffect;","import useEffect from './useIsomorphicEffect';\nimport { useState } from 'react';\nvar matchersByWindow = new WeakMap();\n\nvar getMatcher = function getMatcher(query, targetWindow) {\n if (!query || !targetWindow) return undefined;\n var matchers = matchersByWindow.get(targetWindow) || new Map();\n matchersByWindow.set(targetWindow, matchers);\n var mql = matchers.get(query);\n\n if (!mql) {\n mql = targetWindow.matchMedia(query);\n mql.refCount = 0;\n matchers.set(mql.media, mql);\n }\n\n return mql;\n};\n/**\n * Match a media query and get updates as the match changes. The media string is\n * passed directly to `window.matchMedia` and run as a Layout Effect, so initial\n * matches are returned before the browser has a chance to paint.\n *\n * ```tsx\n * function Page() {\n * const isWide = useMediaQuery('min-width: 1000px')\n *\n * return isWide ? \"very wide\" : 'not so wide'\n * }\n * ```\n *\n * Media query lists are also reused globally, hook calls for the same query\n * will only create a matcher once under the hood.\n *\n * @param query A media query\n * @param targetWindow The window to match against, uses the globally available one as a default.\n */\n\n\nexport default function useMediaQuery(query, targetWindow) {\n if (targetWindow === void 0) {\n targetWindow = typeof window === 'undefined' ? undefined : window;\n }\n\n var mql = getMatcher(query, targetWindow);\n\n var _useState = useState(function () {\n return mql ? mql.matches : false;\n }),\n matches = _useState[0],\n setMatches = _useState[1];\n\n useEffect(function () {\n var mql = getMatcher(query, targetWindow);\n\n if (!mql) {\n return setMatches(false);\n }\n\n var matchers = matchersByWindow.get(targetWindow);\n\n var handleChange = function handleChange() {\n setMatches(mql.matches);\n };\n\n mql.refCount++;\n mql.addListener(handleChange);\n handleChange();\n return function () {\n mql.removeListener(handleChange);\n mql.refCount--;\n\n if (mql.refCount <= 0) {\n matchers == null ? void 0 : matchers.delete(mql.media);\n }\n\n mql = undefined;\n };\n }, [query]);\n return matches;\n}","import useMediaQuery from './useMediaQuery';\nimport { useMemo } from 'react';\n\n/**\n * Create a responsive hook we a set of breakpoint names and widths.\n * You can use any valid css units as well as a numbers (for pixels).\n *\n * **NOTE:** The object key order is important! it's assumed to be in order from smallest to largest\n *\n * ```ts\n * const useBreakpoint = createBreakpointHook({\n * xs: 0,\n * sm: 576,\n * md: 768,\n * lg: 992,\n * xl: 1200,\n * })\n * ```\n *\n * **Watch out!** using string values will sometimes construct media queries using css `calc()` which\n * is NOT supported in media queries by all browsers at the moment. use numbers for\n * the widest range of browser support.\n *\n * @param breakpointValues A object hash of names to breakpoint dimensions\n */\nexport function createBreakpointHook(breakpointValues) {\n var names = Object.keys(breakpointValues);\n\n function and(query, next) {\n if (query === next) {\n return next;\n }\n\n return query ? query + \" and \" + next : next;\n }\n\n function getNext(breakpoint) {\n return names[Math.min(names.indexOf(breakpoint) + 1, names.length - 1)];\n }\n\n function getMaxQuery(breakpoint) {\n var next = getNext(breakpoint);\n var value = breakpointValues[next];\n if (typeof value === 'number') value = value - 0.2 + \"px\";else value = \"calc(\" + value + \" - 0.2px)\";\n return \"(max-width: \" + value + \")\";\n }\n\n function getMinQuery(breakpoint) {\n var value = breakpointValues[breakpoint];\n\n if (typeof value === 'number') {\n value = value + \"px\";\n }\n\n return \"(min-width: \" + value + \")\";\n }\n /**\n * Match a set of breakpoints\n *\n * ```tsx\n * const MidSizeOnly = () => {\n * const isMid = useBreakpoint({ lg: 'down', sm: 'up' });\n *\n * if (isMid) return <div>On a Reasonable sized Screen!</div>\n * return null;\n * }\n * ```\n * @param breakpointMap An object map of breakpoints and directions, queries are constructed using \"and\" to join\n * breakpoints together\n * @param window Optionally specify the target window to match against (useful when rendering into iframes)\n */\n\n\n function useBreakpoint(breakpointOrMap, direction, window) {\n var breakpointMap;\n\n if (typeof breakpointOrMap === 'object') {\n breakpointMap = breakpointOrMap;\n window = direction;\n direction = true;\n } else {\n var _breakpointMap;\n\n direction = direction || true;\n breakpointMap = (_breakpointMap = {}, _breakpointMap[breakpointOrMap] = direction, _breakpointMap);\n }\n\n var query = useMemo(function () {\n return Object.entries(breakpointMap).reduce(function (query, _ref) {\n var key = _ref[0],\n direction = _ref[1];\n\n if (direction === 'up' || direction === true) {\n query = and(query, getMinQuery(key));\n }\n\n if (direction === 'down' || direction === true) {\n query = and(query, getMaxQuery(key));\n }\n\n return query;\n }, '');\n }, [JSON.stringify(breakpointMap)]);\n return useMediaQuery(query, window);\n }\n\n return useBreakpoint;\n}\nvar useBreakpoint = createBreakpointHook({\n xs: 0,\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200,\n xxl: 1400\n});\nexport default useBreakpoint;","import ownerDocument from './ownerDocument';\n/**\n * Returns the actively focused element safely.\n *\n * @param doc the document to check\n */\n\nexport default function activeElement(doc) {\n if (doc === void 0) {\n doc = ownerDocument();\n }\n\n // Support: IE 9 only\n // IE9 throws an \"Unspecified error\" accessing document.activeElement from an <iframe>\n try {\n var active = doc.activeElement; // IE11 returns a seemingly empty object in some cases when accessing\n // document.activeElement from an <iframe>\n\n if (!active || !active.nodeName) return null;\n return active;\n } catch (e) {\n /* ie throws if no active element */\n return doc.body;\n }\n}","/* eslint-disable no-bitwise, no-cond-assign */\n\n/**\n * Checks if an element contains another given element.\n * \n * @param context the context element\n * @param node the element to check\n */\nexport default function contains(context, node) {\n // HTML DOM and SVG DOM may have different support levels,\n // so we need to check on context instead of a document root element.\n if (context.contains) return context.contains(node);\n if (context.compareDocumentPosition) return context === node || !!(context.compareDocumentPosition(node) & 16);\n}","import { useRef, useEffect } from 'react';\n/**\n * Track whether a component is current mounted. Generally less preferable than\n * properlly canceling effects so they don't run after a component is unmounted,\n * but helpful in cases where that isn't feasible, such as a `Promise` resolution.\n *\n * @returns a function that returns the current isMounted state of the component\n *\n * ```ts\n * const [data, setData] = useState(null)\n * const isMounted = useMounted()\n *\n * useEffect(() => {\n * fetchdata().then((newData) => {\n * if (isMounted()) {\n * setData(newData);\n * }\n * })\n * })\n * ```\n */\n\nexport default function useMounted() {\n var mounted = useRef(true);\n var isMounted = useRef(function () {\n return mounted.current;\n });\n useEffect(function () {\n mounted.current = true;\n return function () {\n mounted.current = false;\n };\n }, []);\n return isMounted.current;\n}","import useUpdatedRef from './useUpdatedRef';\nimport { useEffect } from 'react';\n/**\n * Attach a callback that fires when a component unmounts\n *\n * @param fn Handler to run when the component unmounts\n * @category effects\n */\n\nexport default function useWillUnmount(fn) {\n var onUnmount = useUpdatedRef(fn);\n useEffect(function () {\n return function () {\n return onUnmount.current();\n };\n }, []);\n}","import { useRef } from 'react';\n/**\n * Returns a ref that is immediately updated with the new value\n *\n * @param value The Ref value\n * @category refs\n */\n\nexport default function useUpdatedRef(value) {\n var valueRef = useRef(value);\n valueRef.current = value;\n return valueRef;\n}","import { useEffect, useRef } from 'react';\n/**\n * Store the last of some value. Tracked via a `Ref` only updating it\n * after the component renders.\n *\n * Helpful if you need to compare a prop value to it's previous value during render.\n *\n * ```ts\n * function Component(props) {\n * const lastProps = usePrevious(props)\n *\n * if (lastProps.foo !== props.foo)\n * resetValueFromProps(props.foo)\n * }\n * ```\n *\n * @param value the value to track\n */\n\nexport default function usePrevious(value) {\n var ref = useRef(null);\n useEffect(function () {\n ref.current = value;\n });\n return ref.current;\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","export const ATTRIBUTE_PREFIX = `data-rr-ui-`;\nexport const PROPERTY_PREFIX = `rrUi`;\nexport function dataAttr(property) {\n return `${ATTRIBUTE_PREFIX}${property}`;\n}\nexport function dataProp(property) {\n return `${PROPERTY_PREFIX}${property}`;\n}","import css from 'dom-helpers/css';\nimport { dataAttr } from './DataKey';\nimport getBodyScrollbarWidth from './getScrollbarWidth';\nexport const OPEN_DATA_ATTRIBUTE = dataAttr('modal-open');\n/**\n * Manages a stack of Modals as well as ensuring\n * body scrolling is is disabled and padding accounted for\n */\n\nclass ModalManager {\n constructor({\n ownerDocument,\n handleContainerOverflow = true,\n isRTL = false\n } = {}) {\n this.handleContainerOverflow = handleContainerOverflow;\n this.isRTL = isRTL;\n this.modals = [];\n this.ownerDocument = ownerDocument;\n }\n\n getScrollbarWidth() {\n return getBodyScrollbarWidth(this.ownerDocument);\n }\n\n getElement() {\n return (this.ownerDocument || document).body;\n }\n\n setModalAttributes(_modal) {// For overriding\n }\n\n removeModalAttributes(_modal) {// For overriding\n }\n\n setContainerStyle(containerState) {\n const style = {\n overflow: 'hidden'\n }; // we are only interested in the actual `style` here\n // because we will override it\n\n const paddingProp = this.isRTL ? 'paddingLeft' : 'paddingRight';\n const container = this.getElement();\n containerState.style = {\n overflow: container.style.overflow,\n [paddingProp]: container.style[paddingProp]\n };\n\n if (containerState.scrollBarWidth) {\n // use computed style, here to get the real padding\n // to add our scrollbar width\n style[paddingProp] = `${parseInt(css(container, paddingProp) || '0', 10) + containerState.scrollBarWidth}px`;\n }\n\n container.setAttribute(OPEN_DATA_ATTRIBUTE, '');\n css(container, style);\n }\n\n reset() {\n [...this.modals].forEach(m => this.remove(m));\n }\n\n removeContainerStyle(containerState) {\n const container = this.getElement();\n container.removeAttribute(OPEN_DATA_ATTRIBUTE);\n Object.assign(container.style, containerState.style);\n }\n\n add(modal) {\n let modalIdx = this.modals.indexOf(modal);\n\n if (modalIdx !== -1) {\n return modalIdx;\n }\n\n modalIdx = this.modals.length;\n this.modals.push(modal);\n this.setModalAttributes(modal);\n\n if (modalIdx !== 0) {\n return modalIdx;\n }\n\n this.state = {\n scrollBarWidth: this.getScrollbarWidth(),\n style: {}\n };\n\n if (this.handleContainerOverflow) {\n this.setContainerStyle(this.state);\n }\n\n return modalIdx;\n }\n\n remove(modal) {\n const modalIdx = this.modals.indexOf(modal);\n\n if (modalIdx === -1) {\n return;\n }\n\n this.modals.splice(modalIdx, 1); // if that was the last modal in a container,\n // clean up the container\n\n if (!this.modals.length && this.handleContainerOverflow) {\n this.removeContainerStyle(this.state);\n }\n\n this.removeModalAttributes(modal);\n }\n\n isTopModal(modal) {\n return !!this.modals.length && this.modals[this.modals.length - 1] === modal;\n }\n\n}\n\nexport default ModalManager;","/**\n * Get the width of the vertical window scrollbar if it's visible\n */\nexport default function getBodyScrollbarWidth(ownerDocument = document) {\n const window = ownerDocument.defaultView;\n return Math.abs(window.innerWidth - ownerDocument.documentElement.clientWidth);\n}","import { createContext, useContext } from 'react';\nimport canUseDOM from 'dom-helpers/canUseDOM';\nconst Context = /*#__PURE__*/createContext(canUseDOM ? window : undefined);\nexport const WindowProvider = Context.Provider;\n/**\n * The document \"window\" placed in React context. Helpful for determining\n * SSR context, or when rendering into an iframe.\n *\n * @returns the current window\n */\n\nexport default function useWindow() {\n return useContext(Context);\n}","import ownerDocument from 'dom-helpers/ownerDocument';\nimport canUseDOM from 'dom-helpers/canUseDOM';\nimport { useState, useEffect } from 'react';\nimport useWindow from './useWindow';\nexport const resolveContainerRef = (ref, document) => {\n if (!canUseDOM) return null;\n if (ref == null) return (document || ownerDocument()).body;\n if (typeof ref === 'function') ref = ref();\n if (ref && 'current' in ref) ref = ref.current;\n if (ref && ('nodeType' in ref || ref.getBoundingClientRect)) return ref;\n return null;\n};\nexport default function useWaitForDOMRef(ref, onResolved) {\n const window = useWindow();\n const [resolvedRef, setRef] = useState(() => resolveContainerRef(ref, window == null ? void 0 : window.document));\n\n if (!resolvedRef) {\n const earlyRef = resolveContainerRef(ref);\n if (earlyRef) setRef(earlyRef);\n }\n\n useEffect(() => {\n if (onResolved && resolvedRef) {\n onResolved(resolvedRef);\n }\n }, [onResolved, resolvedRef]);\n useEffect(() => {\n const nextRef = resolveContainerRef(ref);\n\n if (nextRef !== resolvedRef) {\n setRef(nextRef);\n }\n }, [ref, resolvedRef]);\n return resolvedRef;\n}","const _excluded = [\"show\", \"role\", \"className\", \"style\", \"children\", \"backdrop\", \"keyboard\", \"onBackdropClick\", \"onEscapeKeyDown\", \"transition\", \"backdropTransition\", \"autoFocus\", \"enforceFocus\", \"restoreFocus\", \"restoreFocusOptions\", \"renderDialog\", \"renderBackdrop\", \"manager\", \"container\", \"onShow\", \"onHide\", \"onExit\", \"onExited\", \"onExiting\", \"onEnter\", \"onEntering\", \"onEntered\"];\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* eslint-disable @typescript-eslint/no-use-before-define, react/prop-types */\nimport activeElement from 'dom-helpers/activeElement';\nimport contains from 'dom-helpers/contains';\nimport canUseDOM from 'dom-helpers/canUseDOM';\nimport listen from 'dom-helpers/listen';\nimport { useState, useRef, useCallback, useImperativeHandle, forwardRef, useEffect } from 'react';\nimport * as React from 'react';\nimport ReactDOM from 'react-dom';\nimport useMounted from '@restart/hooks/useMounted';\nimport useWillUnmount from '@restart/hooks/useWillUnmount';\nimport usePrevious from '@restart/hooks/usePrevious';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport ModalManager from './ModalManager';\nimport useWaitForDOMRef from './useWaitForDOMRef';\nimport useWindow from './useWindow';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nlet manager;\n\nfunction getManager(window) {\n if (!manager) manager = new ModalManager({\n ownerDocument: window == null ? void 0 : window.document\n });\n return manager;\n}\n\nfunction useModalManager(provided) {\n const window = useWindow();\n const modalManager = provided || getManager(window);\n const modal = useRef({\n dialog: null,\n backdrop: null\n });\n return Object.assign(modal.current, {\n add: () => modalManager.add(modal.current),\n remove: () => modalManager.remove(modal.current),\n isTopModal: () => modalManager.isTopModal(modal.current),\n setDialogRef: useCallback(ref => {\n modal.current.dialog = ref;\n }, []),\n setBackdropRef: useCallback(ref => {\n modal.current.backdrop = ref;\n }, [])\n });\n}\n\nconst Modal = /*#__PURE__*/forwardRef((_ref, ref) => {\n let {\n show = false,\n role = 'dialog',\n className,\n style,\n children,\n backdrop = true,\n keyboard = true,\n onBackdropClick,\n onEscapeKeyDown,\n transition,\n backdropTransition,\n autoFocus = true,\n enforceFocus = true,\n restoreFocus = true,\n restoreFocusOptions,\n renderDialog,\n renderBackdrop = props => /*#__PURE__*/_jsx(\"div\", Object.assign({}, props)),\n manager: providedManager,\n container: containerRef,\n onShow,\n onHide = () => {},\n onExit,\n onExited,\n onExiting,\n onEnter,\n onEntering,\n onEntered\n } = _ref,\n rest = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n const container = useWaitForDOMRef(containerRef);\n const modal = useModalManager(providedManager);\n const isMounted = useMounted();\n const prevShow = usePrevious(show);\n const [exited, setExited] = useState(!show);\n const lastFocusRef = useRef(null);\n useImperativeHandle(ref, () => modal, [modal]);\n\n if (canUseDOM && !prevShow && show) {\n lastFocusRef.current = activeElement();\n }\n\n if (!transition && !show && !exited) {\n setExited(true);\n } else if (show && exited) {\n setExited(false);\n }\n\n const handleShow = useEventCallback(() => {\n modal.add();\n removeKeydownListenerRef.current = listen(document, 'keydown', handleDocumentKeyDown);\n removeFocusListenerRef.current = listen(document, 'focus', // the timeout is necessary b/c this will run before the new modal is mounted\n // and so steals focus from it\n () => setTimeout(handleEnforceFocus), true);\n\n if (onShow) {\n onShow();\n } // autofocus after onShow to not trigger a focus event for previous\n // modals before this one is shown.\n\n\n if (autoFocus) {\n const currentActiveElement = activeElement(document);\n\n if (modal.dialog && currentActiveElement && !contains(modal.dialog, currentActiveElement)) {\n lastFocusRef.current = currentActiveElement;\n modal.dialog.focus();\n }\n }\n });\n const handleHide = useEventCallback(() => {\n modal.remove();\n removeKeydownListenerRef.current == null ? void 0 : removeKeydownListenerRef.current();\n removeFocusListenerRef.current == null ? void 0 : removeFocusListenerRef.current();\n\n if (restoreFocus) {\n var _lastFocusRef$current;\n\n // Support: <=IE11 doesn't support `focus()` on svg elements (RB: #917)\n (_lastFocusRef$current = lastFocusRef.current) == null ? void 0 : _lastFocusRef$current.focus == null ? void 0 : _lastFocusRef$current.focus(restoreFocusOptions);\n lastFocusRef.current = null;\n }\n }); // TODO: try and combine these effects: https://github.com/react-bootstrap/react-overlays/pull/794#discussion_r409954120\n // Show logic when:\n // - show is `true` _and_ `container` has resolved\n\n useEffect(() => {\n if (!show || !container) return;\n handleShow();\n }, [show, container,\n /* should never change: */\n handleShow]); // Hide cleanup logic when:\n // - `exited` switches to true\n // - component unmounts;\n\n useEffect(() => {\n if (!exited) return;\n handleHide();\n }, [exited, handleHide]);\n useWillUnmount(() => {\n handleHide();\n }); // --------------------------------\n\n const handleEnforceFocus = useEventCallback(() => {\n if (!enforceFocus || !isMounted() || !modal.isTopModal()) {\n return;\n }\n\n const currentActiveElement = activeElement();\n\n if (modal.dialog && currentActiveElement && !contains(modal.dialog, currentActiveElement)) {\n modal.dialog.focus();\n }\n });\n const handleBackdropClick = useEventCallback(e => {\n if (e.target !== e.currentTarget) {\n return;\n }\n\n onBackdropClick == null ? void 0 : onBackdropClick(e);\n\n if (backdrop === true) {\n onHide();\n }\n });\n const handleDocumentKeyDown = useEventCallback(e => {\n if (keyboard && e.keyCode === 27 && modal.isTopModal()) {\n onEscapeKeyDown == null ? void 0 : onEscapeKeyDown(e);\n\n if (!e.defaultPrevented) {\n onHide();\n }\n }\n });\n const removeFocusListenerRef = useRef();\n const removeKeydownListenerRef = useRef();\n\n const handleHidden = (...args) => {\n setExited(true);\n onExited == null ? void 0 : onExited(...args);\n };\n\n const Transition = transition;\n\n if (!container || !(show || Transition && !exited)) {\n return null;\n }\n\n const dialogProps = Object.assign({\n role,\n ref: modal.setDialogRef,\n // apparently only works on the dialog role element\n 'aria-modal': role === 'dialog' ? true : undefined\n }, rest, {\n style,\n className,\n tabIndex: -1\n });\n let dialog = renderDialog ? renderDialog(dialogProps) : /*#__PURE__*/_jsx(\"div\", Object.assign({}, dialogProps, {\n children: /*#__PURE__*/React.cloneElement(children, {\n role: 'document'\n })\n }));\n\n if (Transition) {\n dialog = /*#__PURE__*/_jsx(Transition, {\n appear: true,\n unmountOnExit: true,\n in: !!show,\n onExit: onExit,\n onExiting: onExiting,\n onExited: handleHidden,\n onEnter: onEnter,\n onEntering: onEntering,\n onEntered: onEntered,\n children: dialog\n });\n }\n\n let backdropElement = null;\n\n if (backdrop) {\n const BackdropTransition = backdropTransition;\n backdropElement = renderBackdrop({\n ref: modal.setBackdropRef,\n onClick: handleBackdropClick\n });\n\n if (BackdropTransition) {\n backdropElement = /*#__PURE__*/_jsx(BackdropTransition, {\n appear: true,\n in: !!show,\n children: backdropElement\n });\n }\n }\n\n return /*#__PURE__*/_jsx(_Fragment, {\n children: /*#__PURE__*/ReactDOM.createPortal( /*#__PURE__*/_jsxs(_Fragment, {\n children: [backdropElement, dialog]\n }), container)\n });\n});\nModal.displayName = 'Modal';\nexport default Object.assign(Modal, {\n Manager: ModalManager\n});","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useCallback } from 'react';\nimport { ENTERED, ENTERING } from 'react-transition-group/Transition';\nimport transitionEndListener from './transitionEndListener';\nimport triggerBrowserReflow from './triggerBrowserReflow';\nimport TransitionWrapper from './TransitionWrapper';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultProps = {\n in: false,\n timeout: 300,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false\n};\nconst fadeStyles = {\n [ENTERING]: 'show',\n [ENTERED]: 'show'\n};\nconst Fade = /*#__PURE__*/React.forwardRef(({\n className,\n children,\n transitionClasses = {},\n ...props\n}, ref) => {\n const handleEnter = useCallback((node, isAppearing) => {\n triggerBrowserReflow(node);\n props.onEnter == null ? void 0 : props.onEnter(node, isAppearing);\n }, [props]);\n return /*#__PURE__*/_jsx(TransitionWrapper, {\n ref: ref,\n addEndListener: transitionEndListener,\n ...props,\n onEnter: handleEnter,\n childRef: children.ref,\n children: (status, innerProps) => /*#__PURE__*/React.cloneElement(children, { ...innerProps,\n className: classNames('fade', className, children.props.className, fadeStyles[status], transitionClasses[status])\n })\n });\n});\nFade.defaultProps = defaultProps;\nFade.displayName = 'Fade';\nexport default Fade;","import createWithBsPrefix from './createWithBsPrefix';\nexport default createWithBsPrefix('offcanvas-body');","import classNames from 'classnames';\nimport * as React from 'react';\nimport { ENTERED, ENTERING, EXITING } from 'react-transition-group/Transition';\nimport transitionEndListener from './transitionEndListener';\nimport TransitionWrapper from './TransitionWrapper';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false\n};\nconst transitionStyles = {\n [ENTERING]: 'show',\n [ENTERED]: 'show'\n};\nconst OffcanvasToggling = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n children,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'offcanvas');\n return /*#__PURE__*/_jsx(TransitionWrapper, {\n ref: ref,\n addEndListener: transitionEndListener,\n ...props,\n childRef: children.ref,\n children: (status, innerProps) => /*#__PURE__*/React.cloneElement(children, { ...innerProps,\n className: classNames(className, children.props.className, (status === ENTERING || status === EXITING) && `${bsPrefix}-toggling`, transitionStyles[status])\n })\n });\n});\nOffcanvasToggling.defaultProps = defaultProps;\nOffcanvasToggling.displayName = 'OffcanvasToggling';\nexport default OffcanvasToggling;","import * as React from 'react';\nconst ModalContext = /*#__PURE__*/React.createContext({\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onHide() {}\n\n});\nexport default ModalContext;","import PropTypes from 'prop-types';\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst propTypes = {\n 'aria-label': PropTypes.string,\n onClick: PropTypes.func,\n\n /**\n * Render different color variant for the button.\n *\n * Omitting this will render the default dark color.\n */\n variant: PropTypes.oneOf(['white'])\n};\nconst defaultProps = {\n 'aria-label': 'Close'\n};\nconst CloseButton = /*#__PURE__*/React.forwardRef(({\n className,\n variant,\n ...props\n}, ref) => /*#__PURE__*/_jsx(\"button\", {\n ref: ref,\n type: \"button\",\n className: classNames('btn-close', variant && `btn-close-${variant}`, className),\n ...props\n}));\nCloseButton.displayName = 'CloseButton';\nCloseButton.propTypes = propTypes;\nCloseButton.defaultProps = defaultProps;\nexport default CloseButton;","import * as React from 'react';\nimport { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport CloseButton from './CloseButton';\nimport ModalContext from './ModalContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst defaultProps = {\n closeLabel: 'Close',\n closeButton: false\n};\nconst AbstractModalHeader = /*#__PURE__*/React.forwardRef(({\n closeLabel,\n closeVariant,\n closeButton,\n onHide,\n children,\n ...props\n}, ref) => {\n const context = useContext(ModalContext);\n const handleClick = useEventCallback(() => {\n context == null ? void 0 : context.onHide();\n onHide == null ? void 0 : onHide();\n });\n return /*#__PURE__*/_jsxs(\"div\", {\n ref: ref,\n ...props,\n children: [children, closeButton && /*#__PURE__*/_jsx(CloseButton, {\n \"aria-label\": closeLabel,\n variant: closeVariant,\n onClick: handleClick\n })]\n });\n});\nAbstractModalHeader.defaultProps = defaultProps;\nexport default AbstractModalHeader;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport AbstractModalHeader from './AbstractModalHeader';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultProps = {\n closeLabel: 'Close',\n closeButton: false\n};\nconst OffcanvasHeader = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'offcanvas-header');\n return /*#__PURE__*/_jsx(AbstractModalHeader, {\n ref: ref,\n ...props,\n className: classNames(className, bsPrefix)\n });\n});\nOffcanvasHeader.displayName = 'OffcanvasHeader';\nOffcanvasHeader.defaultProps = defaultProps;\nexport default OffcanvasHeader;","import * as React from 'react';\nimport classNames from 'classnames';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default (className => /*#__PURE__*/React.forwardRef((p, ref) => /*#__PURE__*/_jsx(\"div\", { ...p,\n ref: ref,\n className: classNames(p.className, className)\n})));","import createWithBsPrefix from './createWithBsPrefix';\nimport divWithClassName from './divWithClassName';\nconst DivStyledAsH5 = divWithClassName('h5');\nexport default createWithBsPrefix('offcanvas-title', {\n Component: DivStyledAsH5\n});","import getPrototypeOf from \"./getPrototypeOf.js\";\nexport default function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}","import superPropBase from \"./superPropBase.js\";\nexport default function _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get.bind();\n } else {\n _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get.apply(this, arguments);\n}","/**\n * Checks if a given element has a CSS class.\n * \n * @param element the element\n * @param className the CSS class name\n */\nexport default function hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);\n return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}","import hasClass from './hasClass';\n/**\n * Adds a CSS class to a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\nexport default function addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!hasClass(element, className)) if (typeof element.className === 'string') element.className = element.className + \" \" + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + \" \" + className);\n}","var toArray = Function.prototype.bind.call(Function.prototype.call, [].slice);\n/**\n * Runs `querySelectorAll` on a given element.\n * \n * @param element the element\n * @param selector the selector\n */\n\nexport default function qsa(element, selector) {\n return toArray(element.querySelectorAll(selector));\n}","function replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp(\"(^|\\\\s)\" + classToRemove + \"(?:\\\\s|$)\", 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n/**\n * Removes a CSS class from a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\n\nexport default function removeClass(element, className) {\n if (element.classList) {\n element.classList.remove(className);\n } else if (typeof element.className === 'string') {\n element.className = replaceClassName(element.className, className);\n } else {\n element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n }\n}","import addClass from 'dom-helpers/addClass';\nimport css from 'dom-helpers/css';\nimport qsa from 'dom-helpers/querySelectorAll';\nimport removeClass from 'dom-helpers/removeClass';\nimport ModalManager from '@restart/ui/ModalManager';\nconst Selector = {\n FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',\n STICKY_CONTENT: '.sticky-top',\n NAVBAR_TOGGLER: '.navbar-toggler'\n};\n\nclass BootstrapModalManager extends ModalManager {\n adjustAndStore(prop, element, adjust) {\n const actual = element.style[prop]; // TODO: DOMStringMap and CSSStyleDeclaration aren't strictly compatible\n // @ts-ignore\n\n element.dataset[prop] = actual;\n css(element, {\n [prop]: `${parseFloat(css(element, prop)) + adjust}px`\n });\n }\n\n restore(prop, element) {\n const value = element.dataset[prop];\n\n if (value !== undefined) {\n delete element.dataset[prop];\n css(element, {\n [prop]: value\n });\n }\n }\n\n setContainerStyle(containerState) {\n super.setContainerStyle(containerState);\n const container = this.getElement();\n addClass(container, 'modal-open');\n if (!containerState.scrollBarWidth) return;\n const paddingProp = this.isRTL ? 'paddingLeft' : 'paddingRight';\n const marginProp = this.isRTL ? 'marginLeft' : 'marginRight';\n qsa(container, Selector.FIXED_CONTENT).forEach(el => this.adjustAndStore(paddingProp, el, containerState.scrollBarWidth));\n qsa(container, Selector.STICKY_CONTENT).forEach(el => this.adjustAndStore(marginProp, el, -containerState.scrollBarWidth));\n qsa(container, Selector.NAVBAR_TOGGLER).forEach(el => this.adjustAndStore(marginProp, el, containerState.scrollBarWidth));\n }\n\n removeContainerStyle(containerState) {\n super.removeContainerStyle(containerState);\n const container = this.getElement();\n removeClass(container, 'modal-open');\n const paddingProp = this.isRTL ? 'paddingLeft' : 'paddingRight';\n const marginProp = this.isRTL ? 'marginLeft' : 'marginRight';\n qsa(container, Selector.FIXED_CONTENT).forEach(el => this.restore(paddingProp, el));\n qsa(container, Selector.STICKY_CONTENT).forEach(el => this.restore(marginProp, el));\n qsa(container, Selector.NAVBAR_TOGGLER).forEach(el => this.restore(marginProp, el));\n }\n\n}\n\nlet sharedManager;\nexport function getSharedManager(options) {\n if (!sharedManager) sharedManager = new BootstrapModalManager(options);\n return sharedManager;\n}\nexport default BootstrapModalManager;","import classNames from 'classnames';\nimport useBreakpoint from '@restart/hooks/useBreakpoint';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport * as React from 'react';\nimport { useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';\nimport BaseModal from '@restart/ui/Modal';\nimport Fade from './Fade';\nimport OffcanvasBody from './OffcanvasBody';\nimport OffcanvasToggling from './OffcanvasToggling';\nimport ModalContext from './ModalContext';\nimport NavbarContext from './NavbarContext';\nimport OffcanvasHeader from './OffcanvasHeader';\nimport OffcanvasTitle from './OffcanvasTitle';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport BootstrapModalManager, { getSharedManager } from './BootstrapModalManager';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst defaultProps = {\n show: false,\n backdrop: true,\n keyboard: true,\n scroll: false,\n autoFocus: true,\n enforceFocus: true,\n restoreFocus: true,\n placement: 'start',\n renderStaticNode: false\n};\n\nfunction DialogTransition(props) {\n return /*#__PURE__*/_jsx(OffcanvasToggling, { ...props\n });\n}\n\nfunction BackdropTransition(props) {\n return /*#__PURE__*/_jsx(Fade, { ...props\n });\n}\n\nconst Offcanvas = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n children,\n 'aria-labelledby': ariaLabelledby,\n placement,\n responsive,\n\n /* BaseModal props */\n show,\n backdrop,\n keyboard,\n scroll,\n onEscapeKeyDown,\n onShow,\n onHide,\n container,\n autoFocus,\n enforceFocus,\n restoreFocus,\n restoreFocusOptions,\n onEntered,\n onExit,\n onExiting,\n onEnter,\n onEntering,\n onExited,\n backdropClassName,\n manager: propsManager,\n renderStaticNode,\n ...props\n}, ref) => {\n const modalManager = useRef();\n bsPrefix = useBootstrapPrefix(bsPrefix, 'offcanvas');\n const {\n onToggle\n } = useContext(NavbarContext) || {};\n const [showOffcanvas, setShowOffcanvas] = useState(false);\n const hideResponsiveOffcanvas = useBreakpoint(responsive || 'xs', 'up');\n useEffect(() => {\n // Handles the case where screen is resized while the responsive\n // offcanvas is shown. If `responsive` not provided, just use `show`.\n setShowOffcanvas(responsive ? show && !hideResponsiveOffcanvas : show);\n }, [show, responsive, hideResponsiveOffcanvas]);\n const handleHide = useEventCallback(() => {\n onToggle == null ? void 0 : onToggle();\n onHide == null ? void 0 : onHide();\n });\n const modalContext = useMemo(() => ({\n onHide: handleHide\n }), [handleHide]);\n\n function getModalManager() {\n if (propsManager) return propsManager;\n\n if (scroll) {\n // Have to use a different modal manager since the shared\n // one handles overflow.\n if (!modalManager.current) modalManager.current = new BootstrapModalManager({\n handleContainerOverflow: false\n });\n return modalManager.current;\n }\n\n return getSharedManager();\n }\n\n const handleEnter = (node, ...args) => {\n if (node) node.style.visibility = 'visible';\n onEnter == null ? void 0 : onEnter(node, ...args);\n };\n\n const handleExited = (node, ...args) => {\n if (node) node.style.visibility = '';\n onExited == null ? void 0 : onExited(...args);\n };\n\n const renderBackdrop = useCallback(backdropProps => /*#__PURE__*/_jsx(\"div\", { ...backdropProps,\n className: classNames(`${bsPrefix}-backdrop`, backdropClassName)\n }), [backdropClassName, bsPrefix]);\n\n const renderDialog = dialogProps => /*#__PURE__*/_jsx(\"div\", { ...dialogProps,\n ...props,\n className: classNames(className, responsive ? `${bsPrefix}-${responsive}` : bsPrefix, `${bsPrefix}-${placement}`),\n \"aria-labelledby\": ariaLabelledby,\n children: children\n });\n\n return /*#__PURE__*/_jsxs(_Fragment, {\n children: [!showOffcanvas && (responsive || renderStaticNode) && renderDialog({}), /*#__PURE__*/_jsx(ModalContext.Provider, {\n value: modalContext,\n children: /*#__PURE__*/_jsx(BaseModal, {\n show: showOffcanvas,\n ref: ref,\n backdrop: backdrop,\n container: container,\n keyboard: keyboard,\n autoFocus: autoFocus,\n enforceFocus: enforceFocus && !scroll,\n restoreFocus: restoreFocus,\n restoreFocusOptions: restoreFocusOptions,\n onEscapeKeyDown: onEscapeKeyDown,\n onShow: onShow,\n onHide: handleHide,\n onEnter: handleEnter,\n onEntering: onEntering,\n onEntered: onEntered,\n onExit: onExit,\n onExiting: onExiting,\n onExited: handleExited,\n manager: getModalManager(),\n transition: DialogTransition,\n backdropTransition: BackdropTransition,\n renderBackdrop: renderBackdrop,\n renderDialog: renderDialog\n })\n })]\n });\n});\nOffcanvas.displayName = 'Offcanvas';\nOffcanvas.defaultProps = defaultProps;\nexport default Object.assign(Offcanvas, {\n Body: OffcanvasBody,\n Header: OffcanvasHeader,\n Title: OffcanvasTitle\n});","import * as React from 'react';\nimport { useContext } from 'react';\nimport Offcanvas from './Offcanvas';\nimport NavbarContext from './NavbarContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst NavbarOffcanvas = /*#__PURE__*/React.forwardRef((props, ref) => {\n const context = useContext(NavbarContext);\n return /*#__PURE__*/_jsx(Offcanvas, {\n ref: ref,\n show: !!(context != null && context.expanded),\n ...props,\n renderStaticNode: true\n });\n});\nNavbarOffcanvas.displayName = 'NavbarOffcanvas';\nexport default NavbarOffcanvas;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useCallback, useMemo } from 'react';\nimport SelectableContext from '@restart/ui/SelectableContext';\nimport { useUncontrolled } from 'uncontrollable';\nimport createWithBsPrefix from './createWithBsPrefix';\nimport NavbarBrand from './NavbarBrand';\nimport NavbarCollapse from './NavbarCollapse';\nimport NavbarToggle from './NavbarToggle';\nimport NavbarOffcanvas from './NavbarOffcanvas';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport NavbarContext from './NavbarContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst NavbarText = createWithBsPrefix('navbar-text', {\n Component: 'span'\n});\nconst defaultProps = {\n expand: true,\n variant: 'light',\n collapseOnSelect: false\n};\nconst Navbar = /*#__PURE__*/React.forwardRef((props, ref) => {\n const {\n bsPrefix: initialBsPrefix,\n expand,\n variant,\n bg,\n fixed,\n sticky,\n className,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'nav',\n expanded,\n onToggle,\n onSelect,\n collapseOnSelect,\n ...controlledProps\n } = useUncontrolled(props, {\n expanded: 'onToggle'\n });\n const bsPrefix = useBootstrapPrefix(initialBsPrefix, 'navbar');\n const handleCollapse = useCallback((...args) => {\n onSelect == null ? void 0 : onSelect(...args);\n\n if (collapseOnSelect && expanded) {\n onToggle == null ? void 0 : onToggle(false);\n }\n }, [onSelect, collapseOnSelect, expanded, onToggle]); // will result in some false positives but that seems better\n // than false negatives. strict `undefined` check allows explicit\n // \"nulling\" of the role if the user really doesn't want one\n\n if (controlledProps.role === undefined && Component !== 'nav') {\n controlledProps.role = 'navigation';\n }\n\n let expandClass = `${bsPrefix}-expand`;\n if (typeof expand === 'string') expandClass = `${expandClass}-${expand}`;\n const navbarContext = useMemo(() => ({\n onToggle: () => onToggle == null ? void 0 : onToggle(!expanded),\n bsPrefix,\n expanded: !!expanded,\n expand\n }), [bsPrefix, expanded, expand, onToggle]);\n return /*#__PURE__*/_jsx(NavbarContext.Provider, {\n value: navbarContext,\n children: /*#__PURE__*/_jsx(SelectableContext.Provider, {\n value: handleCollapse,\n children: /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...controlledProps,\n className: classNames(className, bsPrefix, expand && expandClass, variant && `${bsPrefix}-${variant}`, bg && `bg-${bg}`, sticky && `sticky-${sticky}`, fixed && `fixed-${fixed}`)\n })\n })\n });\n});\nNavbar.defaultProps = defaultProps;\nNavbar.displayName = 'Navbar';\nexport default Object.assign(Navbar, {\n Brand: NavbarBrand,\n Collapse: NavbarCollapse,\n Offcanvas: NavbarOffcanvas,\n Text: NavbarText,\n Toggle: NavbarToggle\n});","import { useReducer } from 'react';\n/**\n * Returns a function that triggers a component update. the hook equivalent to\n * `this.forceUpdate()` in a class component. In most cases using a state value directly\n * is preferable but may be required in some advanced usages of refs for interop or\n * when direct DOM manipulation is required.\n *\n * ```ts\n * const forceUpdate = useForceUpdate();\n *\n * const updateOnClick = useCallback(() => {\n * forceUpdate()\n * }, [forceUpdate])\n *\n * return <button type=\"button\" onClick={updateOnClick}>Hi there</button>\n * ```\n */\n\nexport default function useForceUpdate() {\n // The toggling state value is designed to defeat React optimizations for skipping\n // updates when they are stricting equal to the last state value\n var _useReducer = useReducer(function (state) {\n return !state;\n }, false),\n dispatch = _useReducer[1];\n\n return dispatch;\n}","import * as React from 'react';\nconst DropdownContext = /*#__PURE__*/React.createContext(null);\nexport default DropdownContext;","import { useState } from 'react';\n/**\n * A convenience hook around `useState` designed to be paired with\n * the component [callback ref](https://reactjs.org/docs/refs-and-the-dom.html#callback-refs) api.\n * Callback refs are useful over `useRef()` when you need to respond to the ref being set\n * instead of lazily accessing it in an effect.\n *\n * ```ts\n * const [element, attachRef] = useCallbackRef<HTMLDivElement>()\n *\n * useEffect(() => {\n * if (!element) return\n *\n * const calendar = new FullCalendar.Calendar(element)\n *\n * return () => {\n * calendar.destroy()\n * }\n * }, [element])\n *\n * return <div ref={attachRef} />\n * ```\n *\n * @category refs\n */\n\nexport default function useCallbackRef() {\n return useState(null);\n}","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function F() {};\n\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","var has = Object.prototype.hasOwnProperty;\n\nfunction find(iter, tar, key) {\n\tfor (key of iter.keys()) {\n\t\tif (dequal(key, tar)) return key;\n\t}\n}\n\nexport function dequal(foo, bar) {\n\tvar ctor, len, tmp;\n\tif (foo === bar) return true;\n\n\tif (foo && bar && (ctor=foo.constructor) === bar.constructor) {\n\t\tif (ctor === Date) return foo.getTime() === bar.getTime();\n\t\tif (ctor === RegExp) return foo.toString() === bar.toString();\n\n\t\tif (ctor === Array) {\n\t\t\tif ((len=foo.length) === bar.length) {\n\t\t\t\twhile (len-- && dequal(foo[len], bar[len]));\n\t\t\t}\n\t\t\treturn len === -1;\n\t\t}\n\n\t\tif (ctor === Set) {\n\t\t\tif (foo.size !== bar.size) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfor (len of foo) {\n\t\t\t\ttmp = len;\n\t\t\t\tif (tmp && typeof tmp === 'object') {\n\t\t\t\t\ttmp = find(bar, tmp);\n\t\t\t\t\tif (!tmp) return false;\n\t\t\t\t}\n\t\t\t\tif (!bar.has(tmp)) return false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\tif (ctor === Map) {\n\t\t\tif (foo.size !== bar.size) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfor (len of foo) {\n\t\t\t\ttmp = len[0];\n\t\t\t\tif (tmp && typeof tmp === 'object') {\n\t\t\t\t\ttmp = find(bar, tmp);\n\t\t\t\t\tif (!tmp) return false;\n\t\t\t\t}\n\t\t\t\tif (!dequal(len[1], bar.get(tmp))) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\tif (ctor === ArrayBuffer) {\n\t\t\tfoo = new Uint8Array(foo);\n\t\t\tbar = new Uint8Array(bar);\n\t\t} else if (ctor === DataView) {\n\t\t\tif ((len=foo.byteLength) === bar.byteLength) {\n\t\t\t\twhile (len-- && foo.getInt8(len) === bar.getInt8(len));\n\t\t\t}\n\t\t\treturn len === -1;\n\t\t}\n\n\t\tif (ArrayBuffer.isView(foo)) {\n\t\t\tif ((len=foo.byteLength) === bar.byteLength) {\n\t\t\t\twhile (len-- && foo[len] === bar[len]);\n\t\t\t}\n\t\t\treturn len === -1;\n\t\t}\n\n\t\tif (!ctor || typeof foo === 'object') {\n\t\t\tlen = 0;\n\t\t\tfor (ctor in foo) {\n\t\t\t\tif (has.call(foo, ctor) && ++len && !has.call(bar, ctor)) return false;\n\t\t\t\tif (!(ctor in bar) || !dequal(foo[ctor], bar[ctor])) return false;\n\t\t\t}\n\t\t\treturn Object.keys(bar).length === len;\n\t\t}\n\t}\n\n\treturn foo !== foo && bar !== bar;\n}\n","import { useCallback } from 'react';\nimport useMounted from './useMounted';\n\nfunction useSafeState(state) {\n var isMounted = useMounted();\n return [state[0], useCallback(function (nextState) {\n if (!isMounted()) return;\n return state[1](nextState);\n }, [isMounted, state[1]])];\n}\n\nexport default useSafeState;","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n if (!isHTMLElement(arrowElement)) {\n console.error(['Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: \"arrow\" modifier\\'s `element` must be a child of the popper', 'element.'].join(' '));\n }\n\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref) {\n var x = _ref.x,\n y = _ref.y;\n var win = window;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n\n if (process.env.NODE_ENV !== \"production\") {\n var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || '';\n\n if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {\n return transitionProperty.indexOf(property) >= 0;\n })) {\n console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', '\\n\\n', 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\\n\\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));\n }\n }\n\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on <html>\n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, \"auto\" cannot be used to allow \"bottom-start\".', 'Use \"auto-start\" instead.'].join(' '));\n }\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport getComputedStyle from \"./dom-utils/getComputedStyle.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport validateModifiers from \"./utils/validateModifiers.js\";\nimport uniqueBy from \"./utils/uniqueBy.js\";\nimport getBasePlacement from \"./utils/getBasePlacement.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nimport { auto } from \"./enums.js\";\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n }); // Validate the provided modifiers so that the consumer will get warned\n // if one of the modifiers is invalid for any reason\n\n if (process.env.NODE_ENV !== \"production\") {\n var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n var name = _ref.name;\n return name;\n });\n validateModifiers(modifiers);\n\n if (getBasePlacement(state.options.placement) === auto) {\n var flipModifier = state.orderedModifiers.find(function (_ref2) {\n var name = _ref2.name;\n return name === 'flip';\n });\n\n if (!flipModifier) {\n console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n }\n }\n\n var _getComputedStyle = getComputedStyle(popper),\n marginTop = _getComputedStyle.marginTop,\n marginRight = _getComputedStyle.marginRight,\n marginBottom = _getComputedStyle.marginBottom,\n marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n // cause bugs with positioning, so we'll warn the consumer\n\n\n if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n return parseFloat(margin);\n })) {\n console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n }\n }\n\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n var __debug_loops__ = 0;\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (process.env.NODE_ENV !== \"production\") {\n __debug_loops__ += 1;\n\n if (__debug_loops__ > 100) {\n console.error(INFINITE_LOOP_ERROR);\n break;\n }\n }\n\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref3) {\n var name = _ref3.name,\n _ref3$options = _ref3.options,\n options = _ref3$options === void 0 ? {} : _ref3$options,\n effect = _ref3.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import arrow from '@popperjs/core/lib/modifiers/arrow';\nimport computeStyles from '@popperjs/core/lib/modifiers/computeStyles';\nimport eventListeners from '@popperjs/core/lib/modifiers/eventListeners';\nimport flip from '@popperjs/core/lib/modifiers/flip';\nimport hide from '@popperjs/core/lib/modifiers/hide';\nimport offset from '@popperjs/core/lib/modifiers/offset';\nimport popperOffsets from '@popperjs/core/lib/modifiers/popperOffsets';\nimport preventOverflow from '@popperjs/core/lib/modifiers/preventOverflow';\nimport { placements } from '@popperjs/core/lib/enums';\nimport { popperGenerator } from '@popperjs/core/lib/popper-base'; // For the common JS build we will turn this file into a bundle with no imports.\n// This is b/c the Popper lib is all esm files, and would break in a common js only environment\n\nexport const createPopper = popperGenerator({\n defaultModifiers: [hide, popperOffsets, computeStyles, eventListeners, offset, flip, preventOverflow, arrow]\n});\nexport { placements };","const _excluded = [\"enabled\", \"placement\", \"strategy\", \"modifiers\"];\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { dequal } from 'dequal';\nimport useSafeState from '@restart/hooks/useSafeState';\nimport { createPopper } from './popper';\nconst disabledApplyStylesModifier = {\n name: 'applyStyles',\n enabled: false,\n phase: 'afterWrite',\n fn: () => undefined\n}; // until docjs supports type exports...\n\nconst ariaDescribedByModifier = {\n name: 'ariaDescribedBy',\n enabled: true,\n phase: 'afterWrite',\n effect: ({\n state\n }) => () => {\n const {\n reference,\n popper\n } = state.elements;\n\n if ('removeAttribute' in reference) {\n const ids = (reference.getAttribute('aria-describedby') || '').split(',').filter(id => id.trim() !== popper.id);\n if (!ids.length) reference.removeAttribute('aria-describedby');else reference.setAttribute('aria-describedby', ids.join(','));\n }\n },\n fn: ({\n state\n }) => {\n var _popper$getAttribute;\n\n const {\n popper,\n reference\n } = state.elements;\n const role = (_popper$getAttribute = popper.getAttribute('role')) == null ? void 0 : _popper$getAttribute.toLowerCase();\n\n if (popper.id && role === 'tooltip' && 'setAttribute' in reference) {\n const ids = reference.getAttribute('aria-describedby');\n\n if (ids && ids.split(',').indexOf(popper.id) !== -1) {\n return;\n }\n\n reference.setAttribute('aria-describedby', ids ? `${ids},${popper.id}` : popper.id);\n }\n }\n};\nconst EMPTY_MODIFIERS = [];\n/**\n * Position an element relative some reference element using Popper.js\n *\n * @param referenceElement\n * @param popperElement\n * @param {object} options\n * @param {object=} options.modifiers Popper.js modifiers\n * @param {boolean=} options.enabled toggle the popper functionality on/off\n * @param {string=} options.placement The popper element placement relative to the reference element\n * @param {string=} options.strategy the positioning strategy\n * @param {function=} options.onCreate called when the popper is created\n * @param {function=} options.onUpdate called when the popper is updated\n *\n * @returns {UsePopperState} The popper state\n */\n\nfunction usePopper(referenceElement, popperElement, _ref = {}) {\n let {\n enabled = true,\n placement = 'bottom',\n strategy = 'absolute',\n modifiers = EMPTY_MODIFIERS\n } = _ref,\n config = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n const prevModifiers = useRef(modifiers);\n const popperInstanceRef = useRef();\n const update = useCallback(() => {\n var _popperInstanceRef$cu;\n\n (_popperInstanceRef$cu = popperInstanceRef.current) == null ? void 0 : _popperInstanceRef$cu.update();\n }, []);\n const forceUpdate = useCallback(() => {\n var _popperInstanceRef$cu2;\n\n (_popperInstanceRef$cu2 = popperInstanceRef.current) == null ? void 0 : _popperInstanceRef$cu2.forceUpdate();\n }, []);\n const [popperState, setState] = useSafeState(useState({\n placement,\n update,\n forceUpdate,\n attributes: {},\n styles: {\n popper: {},\n arrow: {}\n }\n }));\n const updateModifier = useMemo(() => ({\n name: 'updateStateModifier',\n enabled: true,\n phase: 'write',\n requires: ['computeStyles'],\n fn: ({\n state\n }) => {\n const styles = {};\n const attributes = {};\n Object.keys(state.elements).forEach(element => {\n styles[element] = state.styles[element];\n attributes[element] = state.attributes[element];\n });\n setState({\n state,\n styles,\n attributes,\n update,\n forceUpdate,\n placement: state.placement\n });\n }\n }), [update, forceUpdate, setState]);\n const nextModifiers = useMemo(() => {\n if (!dequal(prevModifiers.current, modifiers)) {\n prevModifiers.current = modifiers;\n }\n\n return prevModifiers.current;\n }, [modifiers]);\n useEffect(() => {\n if (!popperInstanceRef.current || !enabled) return;\n popperInstanceRef.current.setOptions({\n placement,\n strategy,\n modifiers: [...nextModifiers, updateModifier, disabledApplyStylesModifier]\n });\n }, [strategy, placement, updateModifier, enabled, nextModifiers]);\n useEffect(() => {\n if (!enabled || referenceElement == null || popperElement == null) {\n return undefined;\n }\n\n popperInstanceRef.current = createPopper(referenceElement, popperElement, Object.assign({}, config, {\n placement,\n strategy,\n modifiers: [...nextModifiers, ariaDescribedByModifier, updateModifier]\n }));\n return () => {\n if (popperInstanceRef.current != null) {\n popperInstanceRef.current.destroy();\n popperInstanceRef.current = undefined;\n setState(s => Object.assign({}, s, {\n attributes: {},\n styles: {\n popper: {}\n }\n }));\n }\n }; // This is only run once to _create_ the popper\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [enabled, referenceElement, popperElement]);\n return popperState;\n}\n\nexport default usePopper;","import contains from 'dom-helpers/contains';\nimport listen from 'dom-helpers/listen';\nimport ownerDocument from 'dom-helpers/ownerDocument';\nimport { useCallback, useEffect, useRef } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport warning from 'warning';\n\nconst noop = () => {};\n\nfunction isLeftClickEvent(event) {\n return event.button === 0;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nexport const getRefTarget = ref => ref && ('current' in ref ? ref.current : ref);\nconst InitialTriggerEvents = {\n click: 'mousedown',\n mouseup: 'mousedown',\n pointerup: 'pointerdown'\n};\n/**\n * The `useClickOutside` hook registers your callback on the document that fires\n * when a pointer event is registered outside of the provided ref or element.\n *\n * @param {Ref<HTMLElement>| HTMLElement} ref The element boundary\n * @param {function} onClickOutside\n * @param {object=} options\n * @param {boolean=} options.disabled\n * @param {string=} options.clickTrigger The DOM event name (click, mousedown, etc) to attach listeners on\n */\n\nfunction useClickOutside(ref, onClickOutside = noop, {\n disabled,\n clickTrigger = 'click'\n} = {}) {\n const preventMouseClickOutsideRef = useRef(false);\n const waitingForTrigger = useRef(false);\n const handleMouseCapture = useCallback(e => {\n const currentTarget = getRefTarget(ref);\n warning(!!currentTarget, 'ClickOutside captured a close event but does not have a ref to compare it to. ' + 'useClickOutside(), should be passed a ref that resolves to a DOM node');\n preventMouseClickOutsideRef.current = !currentTarget || isModifiedEvent(e) || !isLeftClickEvent(e) || !!contains(currentTarget, e.target) || waitingForTrigger.current;\n waitingForTrigger.current = false;\n }, [ref]);\n const handleInitialMouse = useEventCallback(e => {\n const currentTarget = getRefTarget(ref);\n\n if (currentTarget && contains(currentTarget, e.target)) {\n waitingForTrigger.current = true;\n }\n });\n const handleMouse = useEventCallback(e => {\n if (!preventMouseClickOutsideRef.current) {\n onClickOutside(e);\n }\n });\n useEffect(() => {\n if (disabled || ref == null) return undefined;\n const doc = ownerDocument(getRefTarget(ref)); // Store the current event to avoid triggering handlers immediately\n // https://github.com/facebook/react/issues/20074\n\n let currentEvent = (doc.defaultView || window).event;\n let removeInitialTriggerListener = null;\n\n if (InitialTriggerEvents[clickTrigger]) {\n removeInitialTriggerListener = listen(doc, InitialTriggerEvents[clickTrigger], handleInitialMouse, true);\n } // Use capture for this listener so it fires before React's listener, to\n // avoid false positives in the contains() check below if the target DOM\n // element is removed in the React mouse callback.\n\n\n const removeMouseCaptureListener = listen(doc, clickTrigger, handleMouseCapture, true);\n const removeMouseListener = listen(doc, clickTrigger, e => {\n // skip if this event is the same as the one running when we added the handlers\n if (e === currentEvent) {\n currentEvent = undefined;\n return;\n }\n\n handleMouse(e);\n });\n let mobileSafariHackListeners = [];\n\n if ('ontouchstart' in doc.documentElement) {\n mobileSafariHackListeners = [].slice.call(doc.body.children).map(el => listen(el, 'mousemove', noop));\n }\n\n return () => {\n removeInitialTriggerListener == null ? void 0 : removeInitialTriggerListener();\n removeMouseCaptureListener();\n removeMouseListener();\n mobileSafariHackListeners.forEach(remove => remove());\n };\n }, [ref, disabled, clickTrigger, handleMouseCapture, handleInitialMouse, handleMouse]);\n}\n\nexport default useClickOutside;","export function toModifierMap(modifiers) {\n const result = {};\n\n if (!Array.isArray(modifiers)) {\n return modifiers || result;\n } // eslint-disable-next-line no-unused-expressions\n\n\n modifiers == null ? void 0 : modifiers.forEach(m => {\n result[m.name] = m;\n });\n return result;\n}\nexport function toModifierArray(map = {}) {\n if (Array.isArray(map)) return map;\n return Object.keys(map).map(k => {\n map[k].name = k;\n return map[k];\n });\n}\nexport default function mergeOptionsWithPopperConfig({\n enabled,\n enableEvents,\n placement,\n flip,\n offset,\n fixed,\n containerPadding,\n arrowElement,\n popperConfig = {}\n}) {\n var _modifiers$preventOve, _modifiers$preventOve2, _modifiers$offset, _modifiers$arrow;\n\n const modifiers = toModifierMap(popperConfig.modifiers);\n return Object.assign({}, popperConfig, {\n placement,\n enabled,\n strategy: fixed ? 'fixed' : popperConfig.strategy,\n modifiers: toModifierArray(Object.assign({}, modifiers, {\n eventListeners: {\n enabled: enableEvents\n },\n preventOverflow: Object.assign({}, modifiers.preventOverflow, {\n options: containerPadding ? Object.assign({\n padding: containerPadding\n }, (_modifiers$preventOve = modifiers.preventOverflow) == null ? void 0 : _modifiers$preventOve.options) : (_modifiers$preventOve2 = modifiers.preventOverflow) == null ? void 0 : _modifiers$preventOve2.options\n }),\n offset: {\n options: Object.assign({\n offset\n }, (_modifiers$offset = modifiers.offset) == null ? void 0 : _modifiers$offset.options)\n },\n arrow: Object.assign({}, modifiers.arrow, {\n enabled: !!arrowElement,\n options: Object.assign({}, (_modifiers$arrow = modifiers.arrow) == null ? void 0 : _modifiers$arrow.options, {\n element: arrowElement\n })\n }),\n flip: Object.assign({\n enabled: !!flip\n }, modifiers.flip)\n }))\n });\n}","const _excluded = [\"children\"];\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport { useContext, useRef } from 'react';\nimport * as React from 'react';\nimport useCallbackRef from '@restart/hooks/useCallbackRef';\nimport DropdownContext from './DropdownContext';\nimport usePopper from './usePopper';\nimport useClickOutside from './useClickOutside';\nimport mergeOptionsWithPopperConfig from './mergeOptionsWithPopperConfig';\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst noop = () => {};\n/**\n * @memberOf Dropdown\n * @param {object} options\n * @param {boolean} options.flip Automatically adjust the menu `drop` position based on viewport edge detection\n * @param {[number, number]} options.offset Define an offset distance between the Menu and the Toggle\n * @param {boolean} options.show Display the menu manually, ignored in the context of a `Dropdown`\n * @param {boolean} options.usePopper opt in/out of using PopperJS to position menus. When disabled you must position it yourself.\n * @param {string} options.rootCloseEvent The pointer event to listen for when determining \"clicks outside\" the menu for triggering a close.\n * @param {object} options.popperConfig Options passed to the [`usePopper`](/api/usePopper) hook.\n */\n\n\nexport function useDropdownMenu(options = {}) {\n const context = useContext(DropdownContext);\n const [arrowElement, attachArrowRef] = useCallbackRef();\n const hasShownRef = useRef(false);\n const {\n flip,\n offset,\n rootCloseEvent,\n fixed = false,\n placement: placementOverride,\n popperConfig = {},\n enableEventListeners = true,\n usePopper: shouldUsePopper = !!context\n } = options;\n const show = (context == null ? void 0 : context.show) == null ? !!options.show : context.show;\n\n if (show && !hasShownRef.current) {\n hasShownRef.current = true;\n }\n\n const handleClose = e => {\n context == null ? void 0 : context.toggle(false, e);\n };\n\n const {\n placement,\n setMenu,\n menuElement,\n toggleElement\n } = context || {};\n const popper = usePopper(toggleElement, menuElement, mergeOptionsWithPopperConfig({\n placement: placementOverride || placement || 'bottom-start',\n enabled: shouldUsePopper,\n enableEvents: enableEventListeners == null ? show : enableEventListeners,\n offset,\n flip,\n fixed,\n arrowElement,\n popperConfig\n }));\n const menuProps = Object.assign({\n ref: setMenu || noop,\n 'aria-labelledby': toggleElement == null ? void 0 : toggleElement.id\n }, popper.attributes.popper, {\n style: popper.styles.popper\n });\n const metadata = {\n show,\n placement,\n hasShown: hasShownRef.current,\n toggle: context == null ? void 0 : context.toggle,\n popper: shouldUsePopper ? popper : null,\n arrowProps: shouldUsePopper ? Object.assign({\n ref: attachArrowRef\n }, popper.attributes.arrow, {\n style: popper.styles.arrow\n }) : {}\n };\n useClickOutside(menuElement, handleClose, {\n clickTrigger: rootCloseEvent,\n disabled: !show\n });\n return [menuProps, metadata];\n}\nconst defaultProps = {\n usePopper: true\n};\n\n/**\n * Also exported as `<Dropdown.Menu>` from `Dropdown`.\n *\n * @displayName DropdownMenu\n * @memberOf Dropdown\n */\nfunction DropdownMenu(_ref) {\n let {\n children\n } = _ref,\n options = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n const [props, meta] = useDropdownMenu(options);\n return /*#__PURE__*/_jsx(_Fragment, {\n children: children(props, meta)\n });\n}\n\nDropdownMenu.displayName = 'DropdownMenu';\nDropdownMenu.defaultProps = defaultProps;\n/** @component */\n\nexport default DropdownMenu;","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// We must avoid a circular dependency with @react-aria/utils, and this useLayoutEffect is\n// guarded by a check that it only runs on the client side.\n// eslint-disable-next-line rulesdir/useLayoutEffectRule\nimport React, {ReactNode, useContext, useLayoutEffect, useMemo, useState} from 'react';\n\n// To support SSR, the auto incrementing id counter is stored in a context. This allows\n// it to be reset on every request to ensure the client and server are consistent.\n// There is also a prefix string that is used to support async loading components\n// Each async boundary must be wrapped in an SSR provider, which appends to the prefix\n// and resets the current id counter. This ensures that async loaded components have\n// consistent ids regardless of the loading order.\ninterface SSRContextValue {\n prefix: string,\n current: number\n}\n\n// Default context value to use in case there is no SSRProvider. This is fine for\n// client-only apps. In order to support multiple copies of React Aria potentially\n// being on the page at once, the prefix is set to a random number. SSRProvider\n// will reset this to zero for consistency between server and client, so in the\n// SSR case multiple copies of React Aria is not supported.\nconst defaultContext: SSRContextValue = {\n prefix: String(Math.round(Math.random() * 10000000000)),\n current: 0\n};\n\nconst SSRContext = React.createContext<SSRContextValue>(defaultContext);\n\nexport interface SSRProviderProps {\n /** Your application here. */\n children: ReactNode\n}\n\n/**\n * When using SSR with React Aria, applications must be wrapped in an SSRProvider.\n * This ensures that auto generated ids are consistent between the client and server.\n */\nexport function SSRProvider(props: SSRProviderProps): JSX.Element {\n let cur = useContext(SSRContext);\n let value: SSRContextValue = useMemo(() => ({\n // If this is the first SSRProvider, start with an empty string prefix, otherwise\n // append and increment the counter.\n prefix: cur === defaultContext ? '' : `${cur.prefix}-${++cur.current}`,\n current: 0\n }), [cur]);\n\n return (\n <SSRContext.Provider value={value}>\n {props.children}\n </SSRContext.Provider>\n );\n}\n\nlet canUseDOM = Boolean(\n typeof window !== 'undefined' &&\n window.document &&\n window.document.createElement\n);\n\n/** @private */\nexport function useSSRSafeId(defaultId?: string): string {\n let ctx = useContext(SSRContext);\n\n // If we are rendering in a non-DOM environment, and there's no SSRProvider,\n // provide a warning to hint to the developer to add one.\n if (ctx === defaultContext && !canUseDOM) {\n console.warn('When server rendering, you must wrap your application in an <SSRProvider> to ensure consistent ids are generated between the client and server.');\n }\n\n return useMemo(() => defaultId || `react-aria${ctx.prefix}-${++ctx.current}`, [defaultId]);\n}\n\n/**\n * Returns whether the component is currently being server side rendered or\n * hydrated on the client. Can be used to delay browser-specific rendering\n * until after hydration.\n */\nexport function useIsSSR(): boolean {\n let cur = useContext(SSRContext);\n let isInSSRContext = cur !== defaultContext;\n let [isSSR, setIsSSR] = useState(isInSSRContext);\n\n // If on the client, and the component was initially server rendered,\n // then schedule a layout effect to update the component after hydration.\n if (typeof window !== 'undefined' && isInSSRContext) {\n // This if statement technically breaks the rules of hooks, but is safe\n // because the condition never changes after mounting.\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useLayoutEffect(() => {\n setIsSSR(false);\n }, []);\n }\n\n return isSSR;\n}\n","import { useContext, useCallback } from 'react';\nimport * as React from 'react';\nimport { useSSRSafeId } from './ssr';\nimport DropdownContext from './DropdownContext';\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const isRoleMenu = el => {\n var _el$getAttribute;\n\n return ((_el$getAttribute = el.getAttribute('role')) == null ? void 0 : _el$getAttribute.toLowerCase()) === 'menu';\n};\n\nconst noop = () => {};\n/**\n * Wires up Dropdown toggle functionality, returning a set a props to attach\n * to the element that functions as the dropdown toggle (generally a button).\n *\n * @memberOf Dropdown\n */\n\n\nexport function useDropdownToggle() {\n const id = useSSRSafeId();\n const {\n show = false,\n toggle = noop,\n setToggle,\n menuElement\n } = useContext(DropdownContext) || {};\n const handleClick = useCallback(e => {\n toggle(!show, e);\n }, [show, toggle]);\n const props = {\n id,\n ref: setToggle || noop,\n onClick: handleClick,\n 'aria-expanded': !!show\n }; // This is maybe better down in an effect, but\n // the component is going to update anyway when the menu element\n // is set so might return new props.\n\n if (menuElement && isRoleMenu(menuElement)) {\n props['aria-haspopup'] = true;\n }\n\n return [props, {\n show,\n toggle\n }];\n}\n\n/**\n * Also exported as `<Dropdown.Toggle>` from `Dropdown`.\n *\n * @displayName DropdownToggle\n * @memberOf Dropdown\n */\nfunction DropdownToggle({\n children\n}) {\n const [props, meta] = useDropdownToggle();\n return /*#__PURE__*/_jsx(_Fragment, {\n children: children(props, meta)\n });\n}\n\nDropdownToggle.displayName = 'DropdownToggle';\n/** @component */\n\nexport default DropdownToggle;","import * as React from 'react';\nconst NavContext = /*#__PURE__*/React.createContext(null);\nNavContext.displayName = 'NavContext';\nexport default NavContext;","const _excluded = [\"as\", \"disabled\"];\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from 'react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function isTrivialHref(href) {\n return !href || href.trim() === '#';\n}\nexport function useButtonProps({\n tagName,\n disabled,\n href,\n target,\n rel,\n role,\n onClick,\n tabIndex = 0,\n type\n}) {\n if (!tagName) {\n if (href != null || target != null || rel != null) {\n tagName = 'a';\n } else {\n tagName = 'button';\n }\n }\n\n const meta = {\n tagName\n };\n\n if (tagName === 'button') {\n return [{\n type: type || 'button',\n disabled\n }, meta];\n }\n\n const handleClick = event => {\n if (disabled || tagName === 'a' && isTrivialHref(href)) {\n event.preventDefault();\n }\n\n if (disabled) {\n event.stopPropagation();\n return;\n }\n\n onClick == null ? void 0 : onClick(event);\n };\n\n const handleKeyDown = event => {\n if (event.key === ' ') {\n event.preventDefault();\n handleClick(event);\n }\n };\n\n if (tagName === 'a') {\n // Ensure there's a href so Enter can trigger anchor button.\n href || (href = '#');\n\n if (disabled) {\n href = undefined;\n }\n }\n\n return [{\n role: role != null ? role : 'button',\n // explicitly undefined so that it overrides the props disabled in a spread\n // e.g. <Tag {...props} {...hookProps} />\n disabled: undefined,\n tabIndex: disabled ? undefined : tabIndex,\n href,\n target: tagName === 'a' ? target : undefined,\n 'aria-disabled': !disabled ? undefined : disabled,\n rel: tagName === 'a' ? rel : undefined,\n onClick: handleClick,\n onKeyDown: handleKeyDown\n }, meta];\n}\nconst Button = /*#__PURE__*/React.forwardRef((_ref, ref) => {\n let {\n as: asProp,\n disabled\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n const [buttonProps, {\n tagName: Component\n }] = useButtonProps(Object.assign({\n tagName: asProp,\n disabled\n }, props));\n return /*#__PURE__*/_jsx(Component, Object.assign({}, props, buttonProps, {\n ref: ref\n }));\n});\nButton.displayName = 'Button';\nexport default Button;","const _excluded = [\"eventKey\", \"disabled\", \"onClick\", \"active\", \"as\"];\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport SelectableContext, { makeEventKey } from './SelectableContext';\nimport NavContext from './NavContext';\nimport Button from './Button';\nimport { dataAttr } from './DataKey';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\n/**\n * Create a dropdown item. Returns a set of props for the dropdown item component\n * including an `onClick` handler that prevents selection when the item is disabled\n */\nexport function useDropdownItem({\n key,\n href,\n active,\n disabled,\n onClick\n}) {\n const onSelectCtx = useContext(SelectableContext);\n const navContext = useContext(NavContext);\n const {\n activeKey\n } = navContext || {};\n const eventKey = makeEventKey(key, href);\n const isActive = active == null && key != null ? makeEventKey(activeKey) === eventKey : active;\n const handleClick = useEventCallback(event => {\n if (disabled) return;\n onClick == null ? void 0 : onClick(event);\n\n if (onSelectCtx && !event.isPropagationStopped()) {\n onSelectCtx(eventKey, event);\n }\n });\n return [{\n onClick: handleClick,\n 'aria-disabled': disabled || undefined,\n 'aria-selected': isActive,\n [dataAttr('dropdown-item')]: ''\n }, {\n isActive\n }];\n}\nconst DropdownItem = /*#__PURE__*/React.forwardRef((_ref, ref) => {\n let {\n eventKey,\n disabled,\n onClick,\n active,\n as: Component = Button\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n const [dropdownItemProps] = useDropdownItem({\n key: eventKey,\n href: props.href,\n disabled,\n onClick,\n active\n });\n return /*#__PURE__*/_jsx(Component, Object.assign({}, props, {\n ref: ref\n }, dropdownItemProps));\n});\nDropdownItem.displayName = 'DropdownItem';\nexport default DropdownItem;","import qsa from 'dom-helpers/querySelectorAll';\nimport addEventListener from 'dom-helpers/addEventListener';\nimport { useCallback, useRef, useEffect, useMemo, useContext } from 'react';\nimport * as React from 'react';\nimport { useUncontrolledProp } from 'uncontrollable';\nimport usePrevious from '@restart/hooks/usePrevious';\nimport useForceUpdate from '@restart/hooks/useForceUpdate';\nimport useEventListener from '@restart/hooks/useEventListener';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport DropdownContext from './DropdownContext';\nimport DropdownMenu from './DropdownMenu';\nimport DropdownToggle, { isRoleMenu } from './DropdownToggle';\nimport DropdownItem from './DropdownItem';\nimport SelectableContext from './SelectableContext';\nimport { dataAttr } from './DataKey';\nimport useWindow from './useWindow';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nfunction useRefWithUpdate() {\n const forceUpdate = useForceUpdate();\n const ref = useRef(null);\n const attachRef = useCallback(element => {\n ref.current = element; // ensure that a menu set triggers an update for consumers\n\n forceUpdate();\n }, [forceUpdate]);\n return [ref, attachRef];\n}\n/**\n * @displayName Dropdown\n * @public\n */\n\n\nfunction Dropdown({\n defaultShow,\n show: rawShow,\n onSelect,\n onToggle: rawOnToggle,\n itemSelector = `* [${dataAttr('dropdown-item')}]`,\n focusFirstItemOnShow,\n placement = 'bottom-start',\n children\n}) {\n const window = useWindow();\n const [show, onToggle] = useUncontrolledProp(rawShow, defaultShow, rawOnToggle); // We use normal refs instead of useCallbackRef in order to populate the\n // the value as quickly as possible, otherwise the effect to focus the element\n // may run before the state value is set\n\n const [menuRef, setMenu] = useRefWithUpdate();\n const menuElement = menuRef.current;\n const [toggleRef, setToggle] = useRefWithUpdate();\n const toggleElement = toggleRef.current;\n const lastShow = usePrevious(show);\n const lastSourceEvent = useRef(null);\n const focusInDropdown = useRef(false);\n const onSelectCtx = useContext(SelectableContext);\n const toggle = useCallback((nextShow, event, source = event == null ? void 0 : event.type) => {\n onToggle(nextShow, {\n originalEvent: event,\n source\n });\n }, [onToggle]);\n const handleSelect = useEventCallback((key, event) => {\n onSelect == null ? void 0 : onSelect(key, event);\n toggle(false, event, 'select');\n\n if (!event.isPropagationStopped()) {\n onSelectCtx == null ? void 0 : onSelectCtx(key, event);\n }\n });\n const context = useMemo(() => ({\n toggle,\n placement,\n show,\n menuElement,\n toggleElement,\n setMenu,\n setToggle\n }), [toggle, placement, show, menuElement, toggleElement, setMenu, setToggle]);\n\n if (menuElement && lastShow && !show) {\n focusInDropdown.current = menuElement.contains(menuElement.ownerDocument.activeElement);\n }\n\n const focusToggle = useEventCallback(() => {\n if (toggleElement && toggleElement.focus) {\n toggleElement.focus();\n }\n });\n const maybeFocusFirst = useEventCallback(() => {\n const type = lastSourceEvent.current;\n let focusType = focusFirstItemOnShow;\n\n if (focusType == null) {\n focusType = menuRef.current && isRoleMenu(menuRef.current) ? 'keyboard' : false;\n }\n\n if (focusType === false || focusType === 'keyboard' && !/^key.+$/.test(type)) {\n return;\n }\n\n const first = qsa(menuRef.current, itemSelector)[0];\n if (first && first.focus) first.focus();\n });\n useEffect(() => {\n if (show) maybeFocusFirst();else if (focusInDropdown.current) {\n focusInDropdown.current = false;\n focusToggle();\n } // only `show` should be changing\n }, [show, focusInDropdown, focusToggle, maybeFocusFirst]);\n useEffect(() => {\n lastSourceEvent.current = null;\n });\n\n const getNextFocusedChild = (current, offset) => {\n if (!menuRef.current) return null;\n const items = qsa(menuRef.current, itemSelector);\n let index = items.indexOf(current) + offset;\n index = Math.max(0, Math.min(index, items.length));\n return items[index];\n };\n\n useEventListener(useCallback(() => window.document, [window]), 'keydown', event => {\n var _menuRef$current, _toggleRef$current;\n\n const {\n key\n } = event;\n const target = event.target;\n const fromMenu = (_menuRef$current = menuRef.current) == null ? void 0 : _menuRef$current.contains(target);\n const fromToggle = (_toggleRef$current = toggleRef.current) == null ? void 0 : _toggleRef$current.contains(target); // Second only to https://github.com/twbs/bootstrap/blob/8cfbf6933b8a0146ac3fbc369f19e520bd1ebdac/js/src/dropdown.js#L400\n // in inscrutability\n\n const isInput = /input|textarea/i.test(target.tagName);\n\n if (isInput && (key === ' ' || key !== 'Escape' && fromMenu || key === 'Escape' && target.type === 'search')) {\n return;\n }\n\n if (!fromMenu && !fromToggle) {\n return;\n }\n\n if (key === 'Tab' && (!menuRef.current || !show)) {\n return;\n }\n\n lastSourceEvent.current = event.type;\n const meta = {\n originalEvent: event,\n source: event.type\n };\n\n switch (key) {\n case 'ArrowUp':\n {\n const next = getNextFocusedChild(target, -1);\n if (next && next.focus) next.focus();\n event.preventDefault();\n return;\n }\n\n case 'ArrowDown':\n event.preventDefault();\n\n if (!show) {\n onToggle(true, meta);\n } else {\n const next = getNextFocusedChild(target, 1);\n if (next && next.focus) next.focus();\n }\n\n return;\n\n case 'Tab':\n // on keydown the target is the element being tabbed FROM, we need that\n // to know if this event is relevant to this dropdown (e.g. in this menu).\n // On `keyup` the target is the element being tagged TO which we use to check\n // if focus has left the menu\n addEventListener(target.ownerDocument, 'keyup', e => {\n var _menuRef$current2;\n\n if (e.key === 'Tab' && !e.target || !((_menuRef$current2 = menuRef.current) != null && _menuRef$current2.contains(e.target))) {\n onToggle(false, meta);\n }\n }, {\n once: true\n });\n break;\n\n case 'Escape':\n if (key === 'Escape') {\n event.preventDefault();\n event.stopPropagation();\n }\n\n onToggle(false, meta);\n break;\n\n default:\n }\n });\n return /*#__PURE__*/_jsx(SelectableContext.Provider, {\n value: handleSelect,\n children: /*#__PURE__*/_jsx(DropdownContext.Provider, {\n value: context,\n children: children\n })\n });\n}\n\nDropdown.displayName = 'Dropdown';\nDropdown.Menu = DropdownMenu;\nDropdown.Toggle = DropdownToggle;\nDropdown.Item = DropdownItem;\nexport default Dropdown;","import { useEffect } from 'react';\nimport useEventCallback from './useEventCallback';\n\n/**\n * Attaches an event handler outside directly to specified DOM element\n * bypassing the react synthetic event system.\n *\n * @param element The target to listen for events on\n * @param event The DOM event name\n * @param handler An event handler\n * @param capture Whether or not to listen during the capture event phase\n */\nexport default function useEventListener(eventTarget, event, listener, capture) {\n if (capture === void 0) {\n capture = false;\n }\n\n var handler = useEventCallback(listener);\n useEffect(function () {\n var target = typeof eventTarget === 'function' ? eventTarget() : eventTarget;\n target.addEventListener(event, handler, capture);\n return function () {\n return target.removeEventListener(event, handler, capture);\n };\n }, [eventTarget]);\n}","import * as React from 'react';\nconst DropdownContext = /*#__PURE__*/React.createContext({});\nDropdownContext.displayName = 'DropdownContext';\nexport default DropdownContext;","import { useState } from 'react';\nimport useEffect from './useIsomorphicEffect';\nvar targetMap = new WeakMap();\nvar resizeObserver;\n\nfunction getResizeObserver() {\n // eslint-disable-next-line no-return-assign\n return resizeObserver = resizeObserver || new window.ResizeObserver(function (entries) {\n entries.forEach(function (entry) {\n var handler = targetMap.get(entry.target);\n if (handler) handler(entry.contentRect);\n });\n });\n}\n/**\n * Efficiently observe size changes on an element. Depends on the `ResizeObserver` api,\n * and polyfills are needed in older browsers.\n *\n * ```ts\n * const [ref, attachRef] = useCallbackRef(null);\n *\n * const rect = useResizeObserver(ref);\n *\n * return (\n * <div ref={attachRef}>\n * {JSON.stringify(rect)}\n * </div>\n * )\n * ```\n *\n * @param element The DOM element to observe\n */\n\n\nexport default function useResizeObserver(element) {\n var _useState = useState(null),\n rect = _useState[0],\n setRect = _useState[1];\n\n useEffect(function () {\n if (!element) return;\n getResizeObserver().observe(element);\n setRect(element.getBoundingClientRect());\n targetMap.set(element, function (rect) {\n setRect(rect);\n });\n return function () {\n targetMap.delete(element);\n };\n }, [element]);\n return rect;\n}","const _excluded = [\"onKeyDown\"];\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* eslint-disable jsx-a11y/no-static-element-interactions */\n\n/* eslint-disable jsx-a11y/anchor-has-content */\nimport * as React from 'react';\nimport { useEventCallback } from '@restart/hooks';\nimport { useButtonProps } from './Button';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function isTrivialHref(href) {\n return !href || href.trim() === '#';\n}\n\n/**\n * An generic `<a>` component that covers a few A11y cases, ensuring that\n * cases where the `href` is missing or trivial like \"#\" are treated like buttons.\n */\nconst Anchor = /*#__PURE__*/React.forwardRef((_ref, ref) => {\n let {\n onKeyDown\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n const [buttonProps] = useButtonProps(Object.assign({\n tagName: 'a'\n }, props));\n const handleKeyDown = useEventCallback(e => {\n buttonProps.onKeyDown(e);\n onKeyDown == null ? void 0 : onKeyDown(e);\n });\n\n if (isTrivialHref(props.href) || props.role === 'button') {\n return /*#__PURE__*/_jsx(\"a\", Object.assign({\n ref: ref\n }, props, buttonProps, {\n onKeyDown: handleKeyDown\n }));\n }\n\n return /*#__PURE__*/_jsx(\"a\", Object.assign({\n ref: ref\n }, props, {\n onKeyDown: onKeyDown\n }));\n});\nAnchor.displayName = 'Anchor';\nexport default Anchor;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useDropdownItem } from '@restart/ui/DropdownItem';\nimport Anchor from '@restart/ui/Anchor';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DropdownItem = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n eventKey,\n disabled = false,\n onClick,\n active,\n as: Component = Anchor,\n ...props\n}, ref) => {\n const prefix = useBootstrapPrefix(bsPrefix, 'dropdown-item');\n const [dropdownItemProps, meta] = useDropdownItem({\n key: eventKey,\n href: props.href,\n disabled,\n onClick,\n active\n });\n return /*#__PURE__*/_jsx(Component, { ...props,\n ...dropdownItemProps,\n ref: ref,\n className: classNames(className, prefix, meta.isActive && 'active', disabled && 'disabled')\n });\n});\nDropdownItem.displayName = 'DropdownItem';\nexport default DropdownItem;","import * as React from 'react';\nconst context = /*#__PURE__*/React.createContext(null);\ncontext.displayName = 'InputGroupContext';\nexport default context;","import invariant from 'invariant';\nimport { useCallback } from 'react';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nexport default function useWrappedRefWithWarning(ref, componentName) {\n // @ts-ignore\n if (!(process.env.NODE_ENV !== \"production\")) return ref; // eslint-disable-next-line react-hooks/rules-of-hooks\n\n const warningRef = useCallback(refValue => {\n !(refValue == null || !refValue.isReactComponent) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `${componentName} injected a ref to a provided \\`as\\` component that resolved to a component instance instead of a DOM element. ` + 'Use `React.forwardRef` to provide the injected ref to the class component as a prop in order to pass it directly to a DOM element') : invariant(false) : void 0;\n }, [componentName]); // eslint-disable-next-line react-hooks/rules-of-hooks\n\n return useMergedRefs(warningRef, ref);\n}","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport { useDropdownMenu } from '@restart/ui/DropdownMenu';\nimport useIsomorphicEffect from '@restart/hooks/useIsomorphicEffect';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport warning from 'warning';\nimport DropdownContext from './DropdownContext';\nimport InputGroupContext from './InputGroupContext';\nimport NavbarContext from './NavbarContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport useWrappedRefWithWarning from './useWrappedRefWithWarning';\nimport { alignPropType } from './types';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultProps = {\n flip: true\n};\nexport function getDropdownMenuPlacement(alignEnd, dropDirection, isRTL) {\n const topStart = isRTL ? 'top-end' : 'top-start';\n const topEnd = isRTL ? 'top-start' : 'top-end';\n const bottomStart = isRTL ? 'bottom-end' : 'bottom-start';\n const bottomEnd = isRTL ? 'bottom-start' : 'bottom-end';\n const leftStart = isRTL ? 'right-start' : 'left-start';\n const leftEnd = isRTL ? 'right-end' : 'left-end';\n const rightStart = isRTL ? 'left-start' : 'right-start';\n const rightEnd = isRTL ? 'left-end' : 'right-end';\n let placement = alignEnd ? bottomEnd : bottomStart;\n if (dropDirection === 'up') placement = alignEnd ? topEnd : topStart;else if (dropDirection === 'end') placement = alignEnd ? rightEnd : rightStart;else if (dropDirection === 'start') placement = alignEnd ? leftEnd : leftStart;\n return placement;\n}\nconst DropdownMenu = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n align,\n rootCloseEvent,\n flip,\n show: showProps,\n renderOnMount,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n popperConfig,\n variant,\n ...props\n}, ref) => {\n let alignEnd = false;\n const isNavbar = useContext(NavbarContext);\n const prefix = useBootstrapPrefix(bsPrefix, 'dropdown-menu');\n const {\n align: contextAlign,\n drop,\n isRTL\n } = useContext(DropdownContext);\n align = align || contextAlign;\n const isInputGroup = useContext(InputGroupContext);\n const alignClasses = [];\n\n if (align) {\n if (typeof align === 'object') {\n const keys = Object.keys(align);\n process.env.NODE_ENV !== \"production\" ? warning(keys.length === 1, 'There should only be 1 breakpoint when passing an object to `align`') : void 0;\n\n if (keys.length) {\n const brkPoint = keys[0];\n const direction = align[brkPoint]; // .dropdown-menu-end is required for responsively aligning\n // left in addition to align left classes.\n\n alignEnd = direction === 'start';\n alignClasses.push(`${prefix}-${brkPoint}-${direction}`);\n }\n } else if (align === 'end') {\n alignEnd = true;\n }\n }\n\n const placement = getDropdownMenuPlacement(alignEnd, drop, isRTL);\n const [menuProps, {\n hasShown,\n popper,\n show,\n toggle\n }] = useDropdownMenu({\n flip,\n rootCloseEvent,\n show: showProps,\n usePopper: !isNavbar && alignClasses.length === 0,\n offset: [0, 2],\n popperConfig,\n placement\n });\n menuProps.ref = useMergedRefs(useWrappedRefWithWarning(ref, 'DropdownMenu'), menuProps.ref);\n useIsomorphicEffect(() => {\n // Popper's initial position for the menu is incorrect when\n // renderOnMount=true. Need to call update() to correct it.\n if (show) popper == null ? void 0 : popper.update();\n }, [show]);\n if (!hasShown && !renderOnMount && !isInputGroup) return null; // For custom components provide additional, non-DOM, props;\n\n if (typeof Component !== 'string') {\n menuProps.show = show;\n\n menuProps.close = () => toggle == null ? void 0 : toggle(false);\n\n menuProps.align = align;\n }\n\n let style = props.style;\n\n if (popper != null && popper.placement) {\n // we don't need the default popper style,\n // menus are display: none when not shown.\n style = { ...props.style,\n ...menuProps.style\n };\n props['x-placement'] = popper.placement;\n }\n\n return /*#__PURE__*/_jsx(Component, { ...props,\n ...menuProps,\n style: style // Bootstrap css requires this data attrib to style responsive menus.\n ,\n ...((alignClasses.length || isNavbar) && {\n 'data-bs-popper': 'static'\n }),\n className: classNames(className, prefix, show && 'show', alignEnd && `${prefix}-end`, variant && `${prefix}-${variant}`, ...alignClasses)\n });\n});\nDropdownMenu.displayName = 'DropdownMenu';\nDropdownMenu.defaultProps = defaultProps;\nexport default DropdownMenu;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useButtonProps } from '@restart/ui/Button';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultProps = {\n variant: 'primary',\n active: false,\n disabled: false\n};\nconst Button = /*#__PURE__*/React.forwardRef(({\n as,\n bsPrefix,\n variant,\n size,\n active,\n className,\n ...props\n}, ref) => {\n const prefix = useBootstrapPrefix(bsPrefix, 'btn');\n const [buttonProps, {\n tagName\n }] = useButtonProps({\n tagName: as,\n ...props\n });\n const Component = tagName;\n return /*#__PURE__*/_jsx(Component, { ...buttonProps,\n ...props,\n ref: ref,\n className: classNames(className, prefix, active && 'active', variant && `${prefix}-${variant}`, size && `${prefix}-${size}`, props.href && props.disabled && 'disabled')\n });\n});\nButton.displayName = 'Button';\nButton.defaultProps = defaultProps;\nexport default Button;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport { useDropdownToggle } from '@restart/ui/DropdownToggle';\nimport DropdownContext from '@restart/ui/DropdownContext';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport Button from './Button';\nimport InputGroupContext from './InputGroupContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport useWrappedRefWithWarning from './useWrappedRefWithWarning';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DropdownToggle = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n split,\n className,\n childBsPrefix,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = Button,\n ...props\n}, ref) => {\n const prefix = useBootstrapPrefix(bsPrefix, 'dropdown-toggle');\n const dropdownContext = useContext(DropdownContext);\n const isInputGroup = useContext(InputGroupContext);\n\n if (childBsPrefix !== undefined) {\n props.bsPrefix = childBsPrefix;\n }\n\n const [toggleProps] = useDropdownToggle();\n toggleProps.ref = useMergedRefs(toggleProps.ref, useWrappedRefWithWarning(ref, 'DropdownToggle')); // This intentionally forwards size and variant (if set) to the\n // underlying component, to allow it to render size and style variants.\n\n return /*#__PURE__*/_jsx(Component, {\n className: classNames(className, prefix, split && `${prefix}-split`, !!isInputGroup && (dropdownContext == null ? void 0 : dropdownContext.show) && 'show'),\n ...toggleProps,\n ...props\n });\n});\nDropdownToggle.displayName = 'DropdownToggle';\nexport default DropdownToggle;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext, useMemo } from 'react';\nimport BaseDropdown from '@restart/ui/Dropdown';\nimport { useUncontrolled } from 'uncontrollable';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport DropdownContext from './DropdownContext';\nimport DropdownItem from './DropdownItem';\nimport DropdownMenu, { getDropdownMenuPlacement } from './DropdownMenu';\nimport DropdownToggle from './DropdownToggle';\nimport InputGroupContext from './InputGroupContext';\nimport { useBootstrapPrefix, useIsRTL } from './ThemeProvider';\nimport createWithBsPrefix from './createWithBsPrefix';\nimport { alignPropType } from './types';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DropdownHeader = createWithBsPrefix('dropdown-header', {\n defaultProps: {\n role: 'heading'\n }\n});\nconst DropdownDivider = createWithBsPrefix('dropdown-divider', {\n Component: 'hr',\n defaultProps: {\n role: 'separator'\n }\n});\nconst DropdownItemText = createWithBsPrefix('dropdown-item-text', {\n Component: 'span'\n});\nconst defaultProps = {\n navbar: false,\n align: 'start',\n autoClose: true\n};\nconst Dropdown = /*#__PURE__*/React.forwardRef((pProps, ref) => {\n const {\n bsPrefix,\n drop,\n show,\n className,\n align,\n onSelect,\n onToggle,\n focusFirstItemOnShow,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n navbar: _4,\n autoClose,\n ...props\n } = useUncontrolled(pProps, {\n show: 'onToggle'\n });\n const isInputGroup = useContext(InputGroupContext);\n const prefix = useBootstrapPrefix(bsPrefix, 'dropdown');\n const isRTL = useIsRTL();\n\n const isClosingPermitted = source => {\n // autoClose=false only permits close on button click\n if (autoClose === false) return source === 'click'; // autoClose=inside doesn't permit close on rootClose\n\n if (autoClose === 'inside') return source !== 'rootClose'; // autoClose=outside doesn't permit close on select\n\n if (autoClose === 'outside') return source !== 'select';\n return true;\n };\n\n const handleToggle = useEventCallback((nextShow, meta) => {\n if (meta.originalEvent.currentTarget === document && (meta.source !== 'keydown' || meta.originalEvent.key === 'Escape')) meta.source = 'rootClose';\n if (isClosingPermitted(meta.source)) onToggle == null ? void 0 : onToggle(nextShow, meta);\n });\n const alignEnd = align === 'end';\n const placement = getDropdownMenuPlacement(alignEnd, drop, isRTL);\n const contextValue = useMemo(() => ({\n align,\n drop,\n isRTL\n }), [align, drop, isRTL]);\n return /*#__PURE__*/_jsx(DropdownContext.Provider, {\n value: contextValue,\n children: /*#__PURE__*/_jsx(BaseDropdown, {\n placement: placement,\n show: show,\n onSelect: onSelect,\n onToggle: handleToggle,\n focusFirstItemOnShow: focusFirstItemOnShow,\n itemSelector: `.${prefix}-item:not(.disabled):not(:disabled)`,\n children: isInputGroup ? props.children : /*#__PURE__*/_jsx(Component, { ...props,\n ref: ref,\n className: classNames(className, show && 'show', (!drop || drop === 'down') && prefix, drop === 'up' && 'dropup', drop === 'end' && 'dropend', drop === 'start' && 'dropstart')\n })\n })\n });\n});\nDropdown.displayName = 'Dropdown';\nDropdown.defaultProps = defaultProps;\nexport default Object.assign(Dropdown, {\n Toggle: DropdownToggle,\n Menu: DropdownMenu,\n Item: DropdownItem,\n ItemText: DropdownItemText,\n Divider: DropdownDivider,\n Header: DropdownHeader\n});","import * as React from 'react';\nconst TabContext = /*#__PURE__*/React.createContext(null);\nexport default TabContext;","const _excluded = [\"as\", \"active\", \"eventKey\"];\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport NavContext from './NavContext';\nimport SelectableContext, { makeEventKey } from './SelectableContext';\nimport Button from './Button';\nimport { dataAttr } from './DataKey';\nimport TabContext from './TabContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function useNavItem({\n key,\n onClick,\n active,\n id,\n role,\n disabled\n}) {\n const parentOnSelect = useContext(SelectableContext);\n const navContext = useContext(NavContext);\n const tabContext = useContext(TabContext);\n let isActive = active;\n const props = {\n role\n };\n\n if (navContext) {\n if (!role && navContext.role === 'tablist') props.role = 'tab';\n const contextControllerId = navContext.getControllerId(key != null ? key : null);\n const contextControlledId = navContext.getControlledId(key != null ? key : null); // @ts-ignore\n\n props[dataAttr('event-key')] = key;\n props.id = contextControllerId || id;\n isActive = active == null && key != null ? navContext.activeKey === key : active;\n /**\n * Simplified scenario for `mountOnEnter`.\n *\n * While it would make sense to keep 'aria-controls' for tabs that have been mounted at least\n * once, it would also complicate the code quite a bit, for very little gain.\n * The following implementation is probably good enough.\n *\n * @see https://github.com/react-restart/ui/pull/40#issuecomment-1009971561\n */\n\n if (isActive || !(tabContext != null && tabContext.unmountOnExit) && !(tabContext != null && tabContext.mountOnEnter)) props['aria-controls'] = contextControlledId;\n }\n\n if (props.role === 'tab') {\n props['aria-selected'] = isActive;\n\n if (!isActive) {\n props.tabIndex = -1;\n }\n\n if (disabled) {\n props.tabIndex = -1;\n props['aria-disabled'] = true;\n }\n }\n\n props.onClick = useEventCallback(e => {\n if (disabled) return;\n onClick == null ? void 0 : onClick(e);\n\n if (key == null) {\n return;\n }\n\n if (parentOnSelect && !e.isPropagationStopped()) {\n parentOnSelect(key, e);\n }\n });\n return [props, {\n isActive\n }];\n}\nconst NavItem = /*#__PURE__*/React.forwardRef((_ref, ref) => {\n let {\n as: Component = Button,\n active,\n eventKey\n } = _ref,\n options = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n const [props, meta] = useNavItem(Object.assign({\n key: makeEventKey(eventKey, options.href),\n active\n }, options)); // @ts-ignore\n\n props[dataAttr('active')] = meta.isActive;\n return /*#__PURE__*/_jsx(Component, Object.assign({}, options, props, {\n ref: ref\n }));\n});\nNavItem.displayName = 'NavItem';\nexport default NavItem;","import classNames from 'classnames';\nimport * as React from 'react';\nimport Anchor from '@restart/ui/Anchor';\nimport { useNavItem } from '@restart/ui/NavItem';\nimport { makeEventKey } from '@restart/ui/SelectableContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultProps = {\n disabled: false\n};\nconst NavLink = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n as: Component = Anchor,\n active,\n eventKey,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'nav-link');\n const [navItemProps, meta] = useNavItem({\n key: makeEventKey(eventKey, props.href),\n active,\n ...props\n });\n return /*#__PURE__*/_jsx(Component, { ...props,\n ...navItemProps,\n ref: ref,\n className: classNames(className, bsPrefix, props.disabled && 'disabled', meta.isActive && 'active')\n });\n});\nNavLink.displayName = 'NavLink';\nNavLink.defaultProps = defaultProps;\nexport default NavLink;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport Dropdown from './Dropdown';\nimport NavLink from './NavLink';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst NavDropdown = /*#__PURE__*/React.forwardRef(({\n id,\n title,\n children,\n bsPrefix,\n className,\n rootCloseEvent,\n menuRole,\n disabled,\n active,\n renderMenuOnMount,\n menuVariant,\n ...props\n}, ref) => {\n /* NavItem has no additional logic, it's purely presentational. Can set nav item class here to support \"as\" */\n const navItemPrefix = useBootstrapPrefix(undefined, 'nav-item');\n return /*#__PURE__*/_jsxs(Dropdown, {\n ref: ref,\n ...props,\n className: classNames(className, navItemPrefix),\n children: [/*#__PURE__*/_jsx(Dropdown.Toggle, {\n id: id,\n eventKey: null,\n active: active,\n disabled: disabled,\n childBsPrefix: bsPrefix,\n as: NavLink,\n children: title\n }), /*#__PURE__*/_jsx(Dropdown.Menu, {\n role: menuRole,\n renderOnMount: renderMenuOnMount,\n rootCloseEvent: rootCloseEvent,\n variant: menuVariant,\n children: children\n })]\n });\n});\nNavDropdown.displayName = 'NavDropdown';\nexport default Object.assign(NavDropdown, {\n Item: Dropdown.Item,\n ItemText: Dropdown.ItemText,\n Divider: Dropdown.Divider,\n Header: Dropdown.Header\n});","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport const Constants = {\n LIBRARY_NAME: \"MSAL.JS\",\n SKU: \"msal.js.common\",\n // Prefix for all library cache entries\n CACHE_PREFIX: \"msal\",\n // default authority\n DEFAULT_AUTHORITY: \"https://login.microsoftonline.com/common/\",\n DEFAULT_AUTHORITY_HOST: \"login.microsoftonline.com\",\n DEFAULT_COMMON_TENANT: \"common\",\n // ADFS String\n ADFS: \"adfs\",\n // Default AAD Instance Discovery Endpoint\n AAD_INSTANCE_DISCOVERY_ENDPT: \"https://login.microsoftonline.com/common/discovery/instance?api-version=1.1&authorization_endpoint=\",\n // Resource delimiter - used for certain cache entries\n RESOURCE_DELIM: \"|\",\n // Placeholder for non-existent account ids/objects\n NO_ACCOUNT: \"NO_ACCOUNT\",\n // Claims\n CLAIMS: \"claims\",\n // Consumer UTID\n CONSUMER_UTID: \"9188040d-6c67-4c5b-b112-36a304b66dad\",\n // Default scopes\n OPENID_SCOPE: \"openid\",\n PROFILE_SCOPE: \"profile\",\n OFFLINE_ACCESS_SCOPE: \"offline_access\",\n EMAIL_SCOPE: \"email\",\n // Default response type for authorization code flow\n CODE_RESPONSE_TYPE: \"code\",\n CODE_GRANT_TYPE: \"authorization_code\",\n RT_GRANT_TYPE: \"refresh_token\",\n FRAGMENT_RESPONSE_MODE: \"fragment\",\n S256_CODE_CHALLENGE_METHOD: \"S256\",\n URL_FORM_CONTENT_TYPE: \"application/x-www-form-urlencoded;charset=utf-8\",\n AUTHORIZATION_PENDING: \"authorization_pending\",\n NOT_DEFINED: \"not_defined\",\n EMPTY_STRING: \"\",\n FORWARD_SLASH: \"/\",\n IMDS_ENDPOINT: \"http://169.254.169.254/metadata/instance/compute/location\",\n IMDS_VERSION: \"2020-06-01\",\n IMDS_TIMEOUT: 2000,\n AZURE_REGION_AUTO_DISCOVER_FLAG: \"TryAutoDetect\",\n REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX: \"login.microsoft.com\",\n KNOWN_PUBLIC_CLOUDS: [\"login.microsoftonline.com\", \"login.windows.net\", \"login.microsoft.com\", \"sts.windows.net\"],\n TOKEN_RESPONSE_TYPE: \"token\",\n ID_TOKEN_RESPONSE_TYPE: \"id_token\",\n SHR_NONCE_VALIDITY: 240\n};\n\nexport const OIDC_DEFAULT_SCOPES = [\n Constants.OPENID_SCOPE,\n Constants.PROFILE_SCOPE,\n Constants.OFFLINE_ACCESS_SCOPE\n];\n\nexport const OIDC_SCOPES = [\n ...OIDC_DEFAULT_SCOPES,\n Constants.EMAIL_SCOPE\n];\n\n/**\n * Request header names\n */\nexport enum HeaderNames {\n CONTENT_TYPE = \"Content-Type\",\n RETRY_AFTER = \"Retry-After\",\n CCS_HEADER = \"X-AnchorMailbox\",\n WWWAuthenticate = \"WWW-Authenticate\",\n AuthenticationInfo = \"Authentication-Info\"\n}\n\n/**\n * Persistent cache keys MSAL which stay while user is logged in.\n */\nexport enum PersistentCacheKeys {\n ID_TOKEN = \"idtoken\",\n CLIENT_INFO = \"client.info\",\n ADAL_ID_TOKEN = \"adal.idtoken\",\n ERROR = \"error\",\n ERROR_DESC = \"error.description\",\n ACTIVE_ACCOUNT = \"active-account\", // Legacy active-account cache key, use new key instead\n ACTIVE_ACCOUNT_FILTERS = \"active-account-filters\" // new cache entry for active_account for a more robust version for browser\n}\n\n/**\n * String constants related to AAD Authority\n */\nexport enum AADAuthorityConstants {\n COMMON = \"common\",\n ORGANIZATIONS = \"organizations\",\n CONSUMERS = \"consumers\"\n}\n\n/**\n * Keys in the hashParams sent by AAD Server\n */\nexport enum AADServerParamKeys {\n CLIENT_ID = \"client_id\",\n REDIRECT_URI = \"redirect_uri\",\n RESPONSE_TYPE = \"response_type\",\n RESPONSE_MODE = \"response_mode\",\n GRANT_TYPE = \"grant_type\",\n CLAIMS = \"claims\",\n SCOPE = \"scope\",\n ERROR = \"error\",\n ERROR_DESCRIPTION = \"error_description\",\n ACCESS_TOKEN = \"access_token\",\n ID_TOKEN = \"id_token\",\n REFRESH_TOKEN = \"refresh_token\",\n EXPIRES_IN = \"expires_in\",\n STATE = \"state\",\n NONCE = \"nonce\",\n PROMPT = \"prompt\",\n SESSION_STATE = \"session_state\",\n CLIENT_INFO = \"client_info\",\n CODE = \"code\",\n CODE_CHALLENGE = \"code_challenge\",\n CODE_CHALLENGE_METHOD = \"code_challenge_method\",\n CODE_VERIFIER = \"code_verifier\",\n CLIENT_REQUEST_ID = \"client-request-id\",\n X_CLIENT_SKU = \"x-client-SKU\",\n X_CLIENT_VER = \"x-client-VER\",\n X_CLIENT_OS = \"x-client-OS\",\n X_CLIENT_CPU = \"x-client-CPU\",\n X_CLIENT_CURR_TELEM = \"x-client-current-telemetry\",\n X_CLIENT_LAST_TELEM = \"x-client-last-telemetry\",\n X_MS_LIB_CAPABILITY = \"x-ms-lib-capability\",\n X_APP_NAME = \"x-app-name\",\n X_APP_VER = \"x-app-ver\",\n POST_LOGOUT_URI = \"post_logout_redirect_uri\",\n ID_TOKEN_HINT = \"id_token_hint\",\n DEVICE_CODE = \"device_code\",\n CLIENT_SECRET = \"client_secret\",\n CLIENT_ASSERTION = \"client_assertion\",\n CLIENT_ASSERTION_TYPE = \"client_assertion_type\",\n TOKEN_TYPE = \"token_type\",\n REQ_CNF = \"req_cnf\",\n OBO_ASSERTION = \"assertion\",\n REQUESTED_TOKEN_USE = \"requested_token_use\",\n ON_BEHALF_OF = \"on_behalf_of\",\n FOCI = \"foci\",\n CCS_HEADER = \"X-AnchorMailbox\",\n RETURN_SPA_CODE = \"return_spa_code\",\n NATIVE_BROKER = \"nativebroker\",\n LOGOUT_HINT = \"logout_hint\"\n}\n\n/**\n * Claims request keys\n */\nexport enum ClaimsRequestKeys {\n ACCESS_TOKEN = \"access_token\",\n XMS_CC = \"xms_cc\"\n}\n\n/**\n * we considered making this \"enum\" in the request instead of string, however it looks like the allowed list of\n * prompt values kept changing over past couple of years. There are some undocumented prompt values for some\n * internal partners too, hence the choice of generic \"string\" type instead of the \"enum\"\n */\nexport const PromptValue = {\n LOGIN: \"login\",\n SELECT_ACCOUNT: \"select_account\",\n CONSENT: \"consent\",\n NONE: \"none\",\n CREATE: \"create\"\n};\n\n/**\n * SSO Types - generated to populate hints\n */\nexport enum SSOTypes {\n ACCOUNT = \"account\",\n SID = \"sid\",\n LOGIN_HINT = \"login_hint\",\n ID_TOKEN = \"id_token\",\n DOMAIN_HINT = \"domain_hint\",\n ORGANIZATIONS = \"organizations\",\n CONSUMERS = \"consumers\",\n ACCOUNT_ID = \"accountIdentifier\",\n HOMEACCOUNT_ID = \"homeAccountIdentifier\"\n}\n\n/**\n * Disallowed extra query parameters.\n */\nexport const BlacklistedEQParams = [\n SSOTypes.SID,\n SSOTypes.LOGIN_HINT\n];\n\n/**\n * allowed values for codeVerifier\n */\nexport const CodeChallengeMethodValues = {\n PLAIN: \"plain\",\n S256: \"S256\"\n};\n\n/**\n * The method used to encode the code verifier for the code challenge parameter. can be one\n * of plain or s256. if excluded, code challenge is assumed to be plaintext. for more\n * information, see the pkce rcf: https://tools.ietf.org/html/rfc7636\n */\nexport const CodeChallengeMethodValuesArray: string[] = [\n CodeChallengeMethodValues.PLAIN,\n CodeChallengeMethodValues.S256\n];\n\n/**\n * allowed values for response_mode\n */\nexport enum ResponseMode {\n QUERY = \"query\",\n FRAGMENT = \"fragment\",\n FORM_POST = \"form_post\"\n}\n\n/**\n * allowed grant_type\n */\nexport enum GrantType {\n IMPLICIT_GRANT = \"implicit\",\n AUTHORIZATION_CODE_GRANT = \"authorization_code\",\n CLIENT_CREDENTIALS_GRANT = \"client_credentials\",\n RESOURCE_OWNER_PASSWORD_GRANT = \"password\",\n REFRESH_TOKEN_GRANT = \"refresh_token\",\n DEVICE_CODE_GRANT = \"device_code\",\n JWT_BEARER = \"urn:ietf:params:oauth:grant-type:jwt-bearer\"\n}\n\n/**\n * Account types in Cache\n */\nexport enum CacheAccountType {\n MSSTS_ACCOUNT_TYPE = \"MSSTS\",\n ADFS_ACCOUNT_TYPE = \"ADFS\",\n MSAV1_ACCOUNT_TYPE = \"MSA\",\n GENERIC_ACCOUNT_TYPE = \"Generic\" // NTLM, Kerberos, FBA, Basic etc\n}\n\n/**\n * Separators used in cache\n */\nexport enum Separators {\n CACHE_KEY_SEPARATOR = \"-\",\n CLIENT_INFO_SEPARATOR = \".\"\n}\n\n/**\n * Credential Type stored in the cache\n */\nexport enum CredentialType {\n ID_TOKEN = \"IdToken\",\n ACCESS_TOKEN = \"AccessToken\",\n ACCESS_TOKEN_WITH_AUTH_SCHEME = \"AccessToken_With_AuthScheme\",\n REFRESH_TOKEN = \"RefreshToken\",\n}\n\n/**\n * Credential Type stored in the cache\n */\nexport enum CacheSchemaType {\n ACCOUNT = \"Account\",\n CREDENTIAL = \"Credential\",\n ID_TOKEN = \"IdToken\",\n ACCESS_TOKEN = \"AccessToken\",\n REFRESH_TOKEN = \"RefreshToken\",\n APP_METADATA = \"AppMetadata\",\n TEMPORARY = \"TempCache\",\n TELEMETRY = \"Telemetry\",\n UNDEFINED = \"Undefined\",\n THROTTLING = \"Throttling\"\n}\n\n/**\n * Combine all cache types\n */\nexport enum CacheType {\n ADFS = 1001,\n MSA = 1002,\n MSSTS = 1003,\n GENERIC = 1004,\n ACCESS_TOKEN = 2001,\n REFRESH_TOKEN = 2002,\n ID_TOKEN = 2003,\n APP_METADATA = 3001,\n UNDEFINED = 9999\n}\n\n/**\n * More Cache related constants\n */\nexport const APP_METADATA = \"appmetadata\";\nexport const CLIENT_INFO = \"client_info\";\nexport const THE_FAMILY_ID = \"1\";\n\nexport const AUTHORITY_METADATA_CONSTANTS = {\n CACHE_KEY: \"authority-metadata\",\n REFRESH_TIME_SECONDS: 3600 * 24 // 24 Hours\n};\n\nexport enum AuthorityMetadataSource {\n CONFIG = \"config\",\n CACHE = \"cache\",\n NETWORK = \"network\",\n HARDCODED_VALUES= \"hardcoded_values\",\n}\n\nexport const SERVER_TELEM_CONSTANTS = {\n SCHEMA_VERSION: 5,\n MAX_CUR_HEADER_BYTES: 80, // ESTS limit is 100B, set to 80 to provide a 20B buffer\n MAX_LAST_HEADER_BYTES: 330, // ESTS limit is 350B, set to 330 to provide a 20B buffer,\n MAX_CACHED_ERRORS: 50, // Limit the number of errors that can be stored to prevent uncontrolled size gains\n CACHE_KEY: \"server-telemetry\",\n CATEGORY_SEPARATOR: \"|\",\n VALUE_SEPARATOR: \",\",\n OVERFLOW_TRUE: \"1\",\n OVERFLOW_FALSE: \"0\",\n UNKNOWN_ERROR: \"unknown_error\"\n};\n\n/**\n * Type of the authentication request\n */\nexport enum AuthenticationScheme {\n BEARER = \"Bearer\",\n POP = \"pop\",\n SSH = \"ssh-cert\"\n}\n\n/**\n * Constants related to throttling\n */\nexport const ThrottlingConstants = {\n // Default time to throttle RequestThumbprint in seconds\n DEFAULT_THROTTLE_TIME_SECONDS: 60,\n // Default maximum time to throttle in seconds, overrides what the server sends back\n DEFAULT_MAX_THROTTLE_TIME_SECONDS: 3600,\n // Prefix for storing throttling entries\n THROTTLING_PREFIX: \"throttling\",\n // Value assigned to the x-ms-lib-capability header to indicate to the server the library supports throttling\n X_MS_LIB_CAPABILITY_VALUE: \"retry-after, h429\"\n};\n\nexport const Errors = {\n INVALID_GRANT_ERROR: \"invalid_grant\",\n CLIENT_MISMATCH_ERROR: \"client_mismatch\",\n};\n\n/**\n * Password grant parameters\n */\nexport enum PasswordGrantConstants {\n username = \"username\",\n password = \"password\"\n}\n\n/**\n * Response codes\n */\nexport enum ResponseCodes {\n httpSuccess = 200,\n httpBadRequest = 400\n}\n\n/**\n * Region Discovery Sources\n */\nexport enum RegionDiscoverySources {\n FAILED_AUTO_DETECTION = \"1\",\n INTERNAL_CACHE = \"2\",\n ENVIRONMENT_VARIABLE = \"3\",\n IMDS = \"4\",\n}\n\n/**\n * Region Discovery Outcomes\n */\nexport enum RegionDiscoveryOutcomes {\n CONFIGURED_MATCHES_DETECTED = \"1\",\n CONFIGURED_NO_AUTO_DETECTION = \"2\",\n CONFIGURED_NOT_DETECTED = \"3\",\n AUTO_DETECTION_REQUESTED_SUCCESSFUL = \"4\",\n AUTO_DETECTION_REQUESTED_FAILED = \"5\"\n}\n\nexport enum CacheOutcome {\n NO_CACHE_HIT = \"0\",\n FORCE_REFRESH = \"1\",\n NO_CACHED_ACCESS_TOKEN = \"2\",\n CACHED_ACCESS_TOKEN_EXPIRED = \"3\",\n REFRESH_CACHED_ACCESS_TOKEN = \"4\"\n}\n\nexport enum JsonTypes {\n Jwt = \"JWT\",\n Jwk = \"JWK\"\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Constants } from \"../utils/Constants\";\n\n/**\n * AuthErrorMessage class containing string constants used by error codes and messages.\n */\nexport const AuthErrorMessage = {\n unexpectedError: {\n code: \"unexpected_error\",\n desc: \"Unexpected error in authentication.\"\n },\n postRequestFailed: {\n code: \"post_request_failed\",\n desc: \"Post request failed from the network, could be a 4xx/5xx or a network unavailability. Please check the exact error code for details.\"\n }\n};\n\n/**\n * General error class thrown by the MSAL.js library.\n */\nexport class AuthError extends Error {\n\n /**\n * Short string denoting error\n */\n errorCode: string;\n\n /**\n * Detailed description of error\n */\n errorMessage: string;\n\n /**\n * Describes the subclass of an error\n */\n subError: string;\n\n /**\n * CorrelationId associated with the error\n */\n correlationId: string;\n\n constructor(errorCode?: string, errorMessage?: string, suberror?: string) {\n const errorString = errorMessage ? `${errorCode}: ${errorMessage}` : errorCode;\n super(errorString);\n Object.setPrototypeOf(this, AuthError.prototype);\n\n this.errorCode = errorCode || Constants.EMPTY_STRING;\n this.errorMessage = errorMessage || Constants.EMPTY_STRING;\n this.subError = suberror || Constants.EMPTY_STRING;\n this.name = \"AuthError\";\n }\n\n setCorrelationId(correlationId: string): void {\n this.correlationId = correlationId;\n }\n\n /**\n * Creates an error that is thrown when something unexpected happens in the library.\n * @param errDesc\n */\n static createUnexpectedError(errDesc: string): AuthError {\n return new AuthError(AuthErrorMessage.unexpectedError.code, `${AuthErrorMessage.unexpectedError.desc}: ${errDesc}`);\n }\n\n /**\n * Creates an error for post request failures.\n * @param errDesc \n * @returns \n */\n static createPostRequestFailed(errDesc: string): AuthError {\n return new AuthError(AuthErrorMessage.postRequestFailed.code, `${AuthErrorMessage.postRequestFailed.desc}: ${errDesc}`);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { OIDC_DEFAULT_SCOPES } from \"@azure/msal-common\";\nimport { PopupRequest } from \"../request/PopupRequest\";\nimport { RedirectRequest } from \"../request/RedirectRequest\";\n\n/**\n * Constants\n */\nexport const BrowserConstants = {\n /**\n * Interaction in progress cache value\n */\n INTERACTION_IN_PROGRESS_VALUE: \"interaction_in_progress\",\n /**\n * Invalid grant error code\n */\n INVALID_GRANT_ERROR: \"invalid_grant\",\n /**\n * Default popup window width\n */\n POPUP_WIDTH: 483,\n /**\n * Default popup window height\n */\n POPUP_HEIGHT: 600,\n /**\n * Name of the popup window starts with\n */\n POPUP_NAME_PREFIX: \"msal\",\n /**\n * Default popup monitor poll interval in milliseconds\n */\n POLL_INTERVAL_MS: 50,\n /**\n * Msal-browser SKU\n */\n MSAL_SKU: \"msal.js.browser\",\n};\n\nexport const NativeConstants = {\n CHANNEL_ID: \"53ee284d-920a-4b59-9d30-a60315b26836\",\n PREFERRED_EXTENSION_ID: \"ppnbnpeolgkicgegkbkbjmhlideopiji\",\n MATS_TELEMETRY: \"MATS\"\n};\n\nexport enum NativeExtensionMethod {\n HandshakeRequest = \"Handshake\",\n HandshakeResponse = \"HandshakeResponse\",\n GetToken = \"GetToken\",\n Response = \"Response\"\n}\n\nexport enum BrowserCacheLocation {\n LocalStorage = \"localStorage\",\n SessionStorage = \"sessionStorage\",\n MemoryStorage = \"memoryStorage\"\n}\n\n/**\n * HTTP Request types supported by MSAL.\n */\nexport enum HTTP_REQUEST_TYPE {\n GET = \"GET\",\n POST = \"POST\"\n}\n\n/**\n * Temporary cache keys for MSAL, deleted after any request.\n */\nexport enum TemporaryCacheKeys {\n AUTHORITY = \"authority\",\n ACQUIRE_TOKEN_ACCOUNT = \"acquireToken.account\",\n SESSION_STATE = \"session.state\",\n REQUEST_STATE = \"request.state\",\n NONCE_IDTOKEN = \"nonce.id_token\",\n ORIGIN_URI = \"request.origin\",\n RENEW_STATUS = \"token.renew.status\",\n URL_HASH = \"urlHash\",\n REQUEST_PARAMS = \"request.params\",\n SCOPES = \"scopes\",\n INTERACTION_STATUS_KEY = \"interaction.status\",\n CCS_CREDENTIAL = \"ccs.credential\",\n CORRELATION_ID = \"request.correlationId\",\n NATIVE_REQUEST = \"request.native\"\n}\n\n/**\n * Cache keys stored in-memory\n */\nexport enum InMemoryCacheKeys {\n WRAPPER_SKU = \"wrapper.sku\",\n WRAPPER_VER = \"wrapper.version\"\n}\n\n/**\n * API Codes for Telemetry purposes. \n * Before adding a new code you must claim it in the MSAL Telemetry tracker as these number spaces are shared across all MSALs\n * 0-99 Silent Flow\n * 800-899 Auth Code Flow\n */\nexport enum ApiId {\n acquireTokenRedirect = 861,\n acquireTokenPopup = 862,\n ssoSilent = 863,\n acquireTokenSilent_authCode = 864,\n handleRedirectPromise = 865,\n acquireTokenByCode = 866,\n acquireTokenSilent_silentFlow = 61,\n logout = 961,\n logoutPopup = 962\n}\n\n/*\n * Interaction type of the API - used for state and telemetry\n */\nexport enum InteractionType {\n Redirect = \"redirect\",\n Popup = \"popup\",\n Silent = \"silent\",\n None = \"none\"\n}\n\n/**\n * Types of interaction currently in progress.\n * Used in events in wrapper libraries to invoke functions when certain interaction is in progress or all interactions are complete.\n */\nexport enum InteractionStatus {\n /**\n * Initial status before interaction occurs\n */\n Startup = \"startup\",\n /**\n * Status set when all login calls occuring\n */\n Login = \"login\",\n /**\n * Status set when logout call occuring\n */ \n Logout = \"logout\",\n /**\n * Status set for acquireToken calls\n */\n AcquireToken = \"acquireToken\",\n /**\n * Status set for ssoSilent calls\n */\n SsoSilent = \"ssoSilent\",\n /**\n * Status set when handleRedirect in progress\n */\n HandleRedirect = \"handleRedirect\",\n /**\n * Status set when interaction is complete\n */\n None = \"none\"\n}\n\nexport const DEFAULT_REQUEST: RedirectRequest|PopupRequest = {\n scopes: OIDC_DEFAULT_SCOPES\n};\n\n/**\n * JWK Key Format string (Type MUST be defined for window crypto APIs)\n */\nexport const KEY_FORMAT_JWK = \"jwk\";\n\n// Supported wrapper SKUs\nexport enum WrapperSKU {\n React = \"@azure/msal-react\",\n Angular = \"@azure/msal-angular\"\n}\n\n// DatabaseStorage Constants\nexport const DB_NAME = \"msal.db\";\nexport const DB_VERSION = 1;\nexport const DB_TABLE_NAME = `${DB_NAME}.keys`;\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthError } from \"@azure/msal-common\";\n\n/**\n * BrowserAuthErrorMessage class containing string constants used by error codes and messages.\n */\nexport const BrowserConfigurationAuthErrorMessage = {\n redirectUriNotSet: {\n code: \"redirect_uri_empty\",\n desc: \"A redirect URI is required for all calls, and none has been set.\"\n },\n postLogoutUriNotSet: {\n code: \"post_logout_uri_empty\",\n desc: \"A post logout redirect has not been set.\"\n },\n storageNotSupportedError: {\n code: \"storage_not_supported\",\n desc: \"Given storage configuration option was not supported.\"\n },\n noRedirectCallbacksSet: {\n code: \"no_redirect_callbacks\",\n desc: \"No redirect callbacks have been set. Please call setRedirectCallbacks() with the appropriate function arguments before continuing. \" +\n \"More information is available here: https://github.com/AzureAD/microsoft-authentication-library-for-js/wiki/MSAL-basics.\"\n },\n invalidCallbackObject: {\n code: \"invalid_callback_object\",\n desc: \"The object passed for the callback was invalid. \" +\n \"More information is available here: https://github.com/AzureAD/microsoft-authentication-library-for-js/wiki/MSAL-basics.\"\n },\n stubPcaInstanceCalled: {\n code: \"stubbed_public_client_application_called\",\n desc: \"Stub instance of Public Client Application was called. If using msal-react, please ensure context is not used without a provider. For more visit: aka.ms/msaljs/browser-errors\"\n },\n inMemRedirectUnavailable: {\n code: \"in_mem_redirect_unavailable\",\n desc: \"Redirect cannot be supported. In-memory storage was selected and storeAuthStateInCookie=false, which would cause the library to be unable to handle the incoming hash. If you would like to use the redirect API, please use session/localStorage or set storeAuthStateInCookie=true.\"\n }\n};\n\n/**\n * Browser library error class thrown by the MSAL.js library for SPAs\n */\nexport class BrowserConfigurationAuthError extends AuthError {\n\n constructor(errorCode: string, errorMessage?: string) {\n super(errorCode, errorMessage);\n this.name = \"BrowserConfigurationAuthError\";\n\n Object.setPrototypeOf(this, BrowserConfigurationAuthError.prototype);\n }\n\n /**\n * Creates an error thrown when the redirect uri is empty (not set by caller)\n */\n static createRedirectUriEmptyError(): BrowserConfigurationAuthError {\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.redirectUriNotSet.code,\n BrowserConfigurationAuthErrorMessage.redirectUriNotSet.desc);\n }\n\n /**\n * Creates an error thrown when the post-logout redirect uri is empty (not set by caller)\n */\n static createPostLogoutRedirectUriEmptyError(): BrowserConfigurationAuthError {\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.postLogoutUriNotSet.code,\n BrowserConfigurationAuthErrorMessage.postLogoutUriNotSet.desc);\n }\n\n /**\n * Creates error thrown when given storage location is not supported.\n * @param givenStorageLocation \n */\n static createStorageNotSupportedError(givenStorageLocation: string): BrowserConfigurationAuthError {\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.storageNotSupportedError.code, `${BrowserConfigurationAuthErrorMessage.storageNotSupportedError.desc} Given Location: ${givenStorageLocation}`);\n }\n\n /**\n * Creates error thrown when redirect callbacks are not set before calling loginRedirect() or acquireTokenRedirect().\n */\n static createRedirectCallbacksNotSetError(): BrowserConfigurationAuthError {\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.noRedirectCallbacksSet.code, \n BrowserConfigurationAuthErrorMessage.noRedirectCallbacksSet.desc);\n }\n\n /**\n * Creates error thrown when the stub instance of PublicClientApplication is called.\n */\n static createStubPcaInstanceCalledError(): BrowserConfigurationAuthError {\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.stubPcaInstanceCalled.code,\n BrowserConfigurationAuthErrorMessage.stubPcaInstanceCalled.desc);\n }\n\n /*\n * Create an error thrown when in-memory storage is used and storeAuthStateInCookie=false.\n */\n static createInMemoryRedirectUnavailableError(): BrowserConfigurationAuthError {\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.inMemRedirectUnavailable.code, BrowserConfigurationAuthErrorMessage.inMemRedirectUnavailable.desc);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthenticationResult, AccountInfo, Logger, PerformanceCallbackFunction } from \"@azure/msal-common\";\nimport { RedirectRequest } from \"../request/RedirectRequest\";\nimport { PopupRequest } from \"../request/PopupRequest\";\nimport { SilentRequest } from \"../request/SilentRequest\";\nimport { SsoSilentRequest } from \"../request/SsoSilentRequest\";\nimport { EndSessionRequest } from \"../request/EndSessionRequest\";\nimport { BrowserConfigurationAuthError } from \"../error/BrowserConfigurationAuthError\";\nimport { WrapperSKU } from \"../utils/BrowserConstants\";\nimport { INavigationClient } from \"../navigation/INavigationClient\";\nimport { EndSessionPopupRequest } from \"../request/EndSessionPopupRequest\";\nimport { ITokenCache } from \"../cache/ITokenCache\";\nimport { AuthorizationCodeRequest } from \"../request/AuthorizationCodeRequest\";\nimport { BrowserConfiguration } from \"../config/Configuration\";\n\nexport interface IPublicClientApplication {\n initialize(): Promise<void>;\n acquireTokenPopup(request: PopupRequest): Promise<AuthenticationResult>;\n acquireTokenRedirect(request: RedirectRequest): Promise<void>;\n acquireTokenSilent(silentRequest: SilentRequest): Promise<AuthenticationResult>;\n acquireTokenByCode(request: AuthorizationCodeRequest): Promise<AuthenticationResult>;\n addEventCallback(callback: Function): string | null;\n removeEventCallback(callbackId: string): void;\n addPerformanceCallback(callback: PerformanceCallbackFunction): string;\n removePerformanceCallback(callbackId: string): boolean;\n enableAccountStorageEvents(): void;\n disableAccountStorageEvents(): void;\n getAccountByHomeId(homeAccountId: string): AccountInfo | null;\n getAccountByLocalId(localId: string): AccountInfo | null;\n getAccountByUsername(userName: string): AccountInfo | null;\n getAllAccounts(): AccountInfo[];\n handleRedirectPromise(hash?: string): Promise<AuthenticationResult | null>;\n loginPopup(request?: PopupRequest): Promise<AuthenticationResult>;\n loginRedirect(request?: RedirectRequest): Promise<void>;\n logout(logoutRequest?: EndSessionRequest): Promise<void>;\n logoutRedirect(logoutRequest?: EndSessionRequest): Promise<void>;\n logoutPopup(logoutRequest?: EndSessionPopupRequest): Promise<void>;\n ssoSilent(request: SsoSilentRequest): Promise<AuthenticationResult>;\n getTokenCache(): ITokenCache;\n getLogger(): Logger;\n setLogger(logger: Logger): void;\n setActiveAccount(account: AccountInfo | null): void;\n getActiveAccount(): AccountInfo | null;\n initializeWrapperLibrary(sku: WrapperSKU, version: string): void;\n setNavigationClient(navigationClient: INavigationClient): void;\n getConfiguration(): BrowserConfiguration;\n}\n\nexport const stubbedPublicClientApplication: IPublicClientApplication = {\n initialize: () => {\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\n },\n acquireTokenPopup: () => {\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\n },\n acquireTokenRedirect: () => {\t\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\n },\t\n acquireTokenSilent: () => {\t\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\n },\n acquireTokenByCode: () => {\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\n },\n getAllAccounts: () => {\n return [];\t\n },\t\n getAccountByHomeId: () => {\n return null;\n },\n getAccountByUsername: () => {\t\n return null;\t\n },\t\n getAccountByLocalId: () => {\n return null;\n },\n handleRedirectPromise: () => {\t\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\n },\t\n loginPopup: () => {\t\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\n },\t\n loginRedirect: () => {\t\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\n },\t\n logout: () => {\t\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\n },\t\n logoutRedirect: () => {\t\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\n },\n logoutPopup: () => {\t\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\n },\n ssoSilent: () => {\t\n return Promise.reject(BrowserConfigurationAuthError.createStubPcaInstanceCalledError());\t\n },\n addEventCallback: () => {\n return null;\n },\n removeEventCallback: () => {\n return;\n },\n addPerformanceCallback: () => {\n return \"\";\n },\n removePerformanceCallback: () => {\n return false;\n },\n enableAccountStorageEvents: () => {\n return;\n },\n disableAccountStorageEvents: () => {\n return;\n },\n getTokenCache: () => {\n throw BrowserConfigurationAuthError.createStubPcaInstanceCalledError();\n },\n getLogger: () => {\n throw BrowserConfigurationAuthError.createStubPcaInstanceCalledError();\n },\n setLogger: () => {\n return;\n },\n setActiveAccount: () => {\n return;\n },\n getActiveAccount: () => {\n return null;\n },\n initializeWrapperLibrary: () => {\n return;\n },\n setNavigationClient: () => {\n return;\n },\n getConfiguration: () => {\n throw BrowserConfigurationAuthError.createStubPcaInstanceCalledError();\n }\n};\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { StringUtils } from \"../utils/StringUtils\";\nimport { LoggerOptions } from \"../config/ClientConfiguration\";\nimport { Constants } from \"../utils/Constants\";\n\n/**\n * Options for logger messages.\n */\nexport type LoggerMessageOptions = {\n logLevel: LogLevel,\n containsPii?: boolean,\n context?: string,\n correlationId?: string\n};\n\n/**\n * Log message level.\n */\nexport enum LogLevel {\n Error,\n Warning,\n Info,\n Verbose,\n Trace\n}\n\n/**\n * Callback to send the messages to.\n */\nexport interface ILoggerCallback {\n (level: LogLevel, message: string, containsPii: boolean): void;\n}\n\n/**\n * Class which facilitates logging of messages to a specific place.\n */\nexport class Logger {\n\n // Correlation ID for request, usually set by user.\n private correlationId: string;\n\n // Current log level, defaults to info.\n private level: LogLevel = LogLevel.Info;\n\n // Boolean describing whether PII logging is allowed.\n private piiLoggingEnabled: boolean;\n\n // Callback to send messages to.\n private localCallback: ILoggerCallback;\n\n // Package name implementing this logger\n private packageName: string;\n\n // Package version implementing this logger\n private packageVersion: string;\n\n constructor(loggerOptions: LoggerOptions, packageName?: string, packageVersion?: string) {\n const defaultLoggerCallback = () => {\n return;\n };\n this.localCallback = loggerOptions.loggerCallback || defaultLoggerCallback;\n this.piiLoggingEnabled = loggerOptions.piiLoggingEnabled || false;\n this.level = typeof(loggerOptions.logLevel) === \"number\" ? loggerOptions.logLevel : LogLevel.Info;\n this.correlationId = loggerOptions.correlationId || Constants.EMPTY_STRING;\n\n this.packageName = packageName || Constants.EMPTY_STRING;\n this.packageVersion = packageVersion || Constants.EMPTY_STRING;\n }\n\n /**\n * Create new Logger with existing configurations.\n */\n public clone(packageName: string, packageVersion: string, correlationId?: string): Logger {\n return new Logger({loggerCallback: this.localCallback, piiLoggingEnabled: this.piiLoggingEnabled, logLevel: this.level, correlationId: correlationId || this.correlationId}, packageName, packageVersion);\n }\n\n /**\n * Log message with required options.\n */\n private logMessage(logMessage: string, options: LoggerMessageOptions): void {\n if ((options.logLevel > this.level) || (!this.piiLoggingEnabled && options.containsPii)) {\n return;\n }\n const timestamp = new Date().toUTCString();\n\n // Add correlationId to logs if set, correlationId provided on log messages take precedence\n let logHeader: string;\n if (!StringUtils.isEmpty(options.correlationId)) {\n logHeader = `[${timestamp}] : [${options.correlationId}]`;\n } else if (!StringUtils.isEmpty(this.correlationId)) {\n logHeader = `[${timestamp}] : [${this.correlationId}]`;\n } else {\n logHeader = `[${timestamp}]`;\n }\n\n const log = `${logHeader} : ${this.packageName}@${this.packageVersion} : ${LogLevel[options.logLevel]} - ${logMessage}`;\n // debug(`msal:${LogLevel[options.logLevel]}${options.containsPii ? \"-Pii\": Constants.EMPTY_STRING}${options.context ? `:${options.context}` : Constants.EMPTY_STRING}`)(logMessage);\n this.executeCallback(options.logLevel, log, options.containsPii || false);\n }\n\n /**\n * Execute callback with message.\n */\n executeCallback(level: LogLevel, message: string, containsPii: boolean): void {\n if (this.localCallback) {\n this.localCallback(level, message, containsPii);\n }\n }\n\n /**\n * Logs error messages.\n */\n error(message: string, correlationId?: string): void {\n this.logMessage(message, {\n logLevel: LogLevel.Error,\n containsPii: false,\n correlationId: correlationId || Constants.EMPTY_STRING\n });\n }\n\n /**\n * Logs error messages with PII.\n */\n errorPii(message: string, correlationId?: string): void {\n this.logMessage(message, {\n logLevel: LogLevel.Error,\n containsPii: true,\n correlationId: correlationId || Constants.EMPTY_STRING\n });\n }\n\n /**\n * Logs warning messages.\n */\n warning(message: string, correlationId?: string): void {\n this.logMessage(message, {\n logLevel: LogLevel.Warning,\n containsPii: false,\n correlationId: correlationId || Constants.EMPTY_STRING\n });\n }\n\n /**\n * Logs warning messages with PII.\n */\n warningPii(message: string, correlationId?: string): void {\n this.logMessage(message, {\n logLevel: LogLevel.Warning,\n containsPii: true,\n correlationId: correlationId || Constants.EMPTY_STRING\n });\n }\n\n /**\n * Logs info messages.\n */\n info(message: string, correlationId?: string): void {\n this.logMessage(message, {\n logLevel: LogLevel.Info,\n containsPii: false,\n correlationId: correlationId || Constants.EMPTY_STRING\n });\n }\n\n /**\n * Logs info messages with PII.\n */\n infoPii(message: string, correlationId?: string): void {\n this.logMessage(message, {\n logLevel: LogLevel.Info,\n containsPii: true,\n correlationId: correlationId || Constants.EMPTY_STRING\n });\n }\n\n /**\n * Logs verbose messages.\n */\n verbose(message: string, correlationId?: string): void {\n this.logMessage(message, {\n logLevel: LogLevel.Verbose,\n containsPii: false,\n correlationId: correlationId || Constants.EMPTY_STRING\n });\n }\n\n /**\n * Logs verbose messages with PII.\n */\n verbosePii(message: string, correlationId?: string): void {\n this.logMessage(message, {\n logLevel: LogLevel.Verbose,\n containsPii: true,\n correlationId: correlationId || Constants.EMPTY_STRING\n });\n }\n\n /**\n * Logs trace messages.\n */\n trace(message: string, correlationId?: string): void {\n this.logMessage(message, {\n logLevel: LogLevel.Trace,\n containsPii: false,\n correlationId: correlationId || Constants.EMPTY_STRING\n });\n }\n\n /**\n * Logs trace messages with PII.\n */\n tracePii(message: string, correlationId?: string): void {\n this.logMessage(message, {\n logLevel: LogLevel.Trace,\n containsPii: true,\n correlationId: correlationId || Constants.EMPTY_STRING\n });\n }\n\n /**\n * Returns whether PII Logging is enabled or not.\n */\n isPiiLoggingEnabled(): boolean {\n return this.piiLoggingEnabled || false;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthError } from \"./AuthError\";\n\n/**\n * ClientAuthErrorMessage class containing string constants used by error codes and messages.\n */\nexport const ClientAuthErrorMessage = {\n clientInfoDecodingError: {\n code: \"client_info_decoding_error\",\n desc: \"The client info could not be parsed/decoded correctly. Please review the trace to determine the root cause.\"\n },\n clientInfoEmptyError: {\n code: \"client_info_empty_error\",\n desc: \"The client info was empty. Please review the trace to determine the root cause.\"\n },\n tokenParsingError: {\n code: \"token_parsing_error\",\n desc: \"Token cannot be parsed. Please review stack trace to determine root cause.\"\n },\n nullOrEmptyToken: {\n code: \"null_or_empty_token\",\n desc: \"The token is null or empty. Please review the trace to determine the root cause.\"\n },\n endpointResolutionError: {\n code: \"endpoints_resolution_error\",\n desc: \"Error: could not resolve endpoints. Please check network and try again.\"\n },\n networkError: {\n code: \"network_error\",\n desc: \"Network request failed. Please check network trace to determine root cause.\"\n },\n unableToGetOpenidConfigError: {\n code: \"openid_config_error\",\n desc: \"Could not retrieve endpoints. Check your authority and verify the .well-known/openid-configuration endpoint returns the required endpoints.\"\n },\n hashNotDeserialized: {\n code: \"hash_not_deserialized\",\n desc: \"The hash parameters could not be deserialized. Please review the trace to determine the root cause.\"\n },\n blankGuidGenerated: {\n code: \"blank_guid_generated\",\n desc: \"The guid generated was blank. Please review the trace to determine the root cause.\"\n },\n invalidStateError: {\n code: \"invalid_state\",\n desc: \"State was not the expected format. Please check the logs to determine whether the request was sent using ProtocolUtils.setRequestState().\"\n },\n stateMismatchError: {\n code: \"state_mismatch\",\n desc: \"State mismatch error. Please check your network. Continued requests may cause cache overflow.\"\n },\n stateNotFoundError: {\n code: \"state_not_found\",\n desc: \"State not found\"\n },\n nonceMismatchError: {\n code: \"nonce_mismatch\",\n desc: \"Nonce mismatch error. This may be caused by a race condition in concurrent requests.\"\n },\n nonceNotFoundError: {\n code: \"nonce_not_found\",\n desc: \"nonce not found\"\n },\n noTokensFoundError: {\n code: \"no_tokens_found\",\n desc: \"No tokens were found for the given scopes, and no authorization code was passed to acquireToken. You must retrieve an authorization code before making a call to acquireToken().\"\n },\n multipleMatchingTokens: {\n code: \"multiple_matching_tokens\",\n desc: \"The cache contains multiple tokens satisfying the requirements. \" +\n \"Call AcquireToken again providing more requirements such as authority or account.\"\n },\n multipleMatchingAccounts: {\n code: \"multiple_matching_accounts\",\n desc: \"The cache contains multiple accounts satisfying the given parameters. Please pass more info to obtain the correct account\"\n },\n multipleMatchingAppMetadata: {\n code: \"multiple_matching_appMetadata\",\n desc: \"The cache contains multiple appMetadata satisfying the given parameters. Please pass more info to obtain the correct appMetadata\"\n },\n tokenRequestCannotBeMade: {\n code: \"request_cannot_be_made\",\n desc: \"Token request cannot be made without authorization code or refresh token.\"\n },\n appendEmptyScopeError: {\n code: \"cannot_append_empty_scope\",\n desc: \"Cannot append null or empty scope to ScopeSet. Please check the stack trace for more info.\"\n },\n removeEmptyScopeError: {\n code: \"cannot_remove_empty_scope\",\n desc: \"Cannot remove null or empty scope from ScopeSet. Please check the stack trace for more info.\"\n },\n appendScopeSetError: {\n code: \"cannot_append_scopeset\",\n desc: \"Cannot append ScopeSet due to error.\"\n },\n emptyInputScopeSetError: {\n code: \"empty_input_scopeset\",\n desc: \"Empty input ScopeSet cannot be processed.\"\n },\n DeviceCodePollingCancelled: {\n code: \"device_code_polling_cancelled\",\n desc: \"Caller has cancelled token endpoint polling during device code flow by setting DeviceCodeRequest.cancel = true.\"\n },\n DeviceCodeExpired: {\n code: \"device_code_expired\",\n desc: \"Device code is expired.\"\n },\n DeviceCodeUnknownError: {\n code: \"device_code_unknown_error\",\n desc: \"Device code stopped polling for unknown reasons.\"\n },\n NoAccountInSilentRequest: {\n code: \"no_account_in_silent_request\",\n desc: \"Please pass an account object, silent flow is not supported without account information\"\n },\n invalidCacheRecord: {\n code: \"invalid_cache_record\",\n desc: \"Cache record object was null or undefined.\"\n },\n invalidCacheEnvironment: {\n code: \"invalid_cache_environment\",\n desc: \"Invalid environment when attempting to create cache entry\"\n },\n noAccountFound: {\n code: \"no_account_found\",\n desc: \"No account found in cache for given key.\"\n },\n CachePluginError: {\n code: \"no cache plugin set on CacheManager\",\n desc: \"ICachePlugin needs to be set before using readFromStorage or writeFromStorage\"\n },\n noCryptoObj: {\n code: \"no_crypto_object\",\n desc: \"No crypto object detected. This is required for the following operation: \"\n },\n invalidCacheType: {\n code: \"invalid_cache_type\",\n desc: \"Invalid cache type\"\n },\n unexpectedAccountType: {\n code: \"unexpected_account_type\",\n desc: \"Unexpected account type.\"\n },\n unexpectedCredentialType: {\n code: \"unexpected_credential_type\",\n desc: \"Unexpected credential type.\"\n },\n invalidAssertion: {\n code: \"invalid_assertion\",\n desc: \"Client assertion must meet requirements described in https://tools.ietf.org/html/rfc7515\"\n },\n invalidClientCredential: {\n code: \"invalid_client_credential\",\n desc: \"Client credential (secret, certificate, or assertion) must not be empty when creating a confidential client. An application should at most have one credential\"\n },\n tokenRefreshRequired: {\n code: \"token_refresh_required\",\n desc: \"Cannot return token from cache because it must be refreshed. This may be due to one of the following reasons: forceRefresh parameter is set to true, claims have been requested, there is no cached access token or it is expired.\"\n },\n userTimeoutReached: {\n code: \"user_timeout_reached\",\n desc: \"User defined timeout for device code polling reached\",\n },\n tokenClaimsRequired: {\n code: \"token_claims_cnf_required_for_signedjwt\",\n desc: \"Cannot generate a POP jwt if the token_claims are not populated\"\n },\n noAuthorizationCodeFromServer: {\n code: \"authorization_code_missing_from_server_response\",\n desc: \"Server response does not contain an authorization code to proceed\"\n },\n noAzureRegionDetected: {\n code: \"no_azure_region_detected\",\n desc: \"No azure region was detected and no fallback was made available\"\n },\n accessTokenEntityNullError: {\n code: \"access_token_entity_null\",\n desc: \"Access token entity is null, please check logs and cache to ensure a valid access token is present.\"\n },\n bindingKeyNotRemovedError: {\n code: \"binding_key_not_removed\",\n desc: \"Could not remove the credential's binding key from storage.\"\n },\n logoutNotSupported: {\n code: \"end_session_endpoint_not_supported\",\n desc: \"Provided authority does not support logout.\"\n },\n keyIdMissing: {\n code: \"key_id_missing\",\n desc: \"A keyId value is missing from the requested bound token's cache record and is required to match the token to it's stored binding key.\"\n }\n};\n\n/**\n * Error thrown when there is an error in the client code running on the browser.\n */\nexport class ClientAuthError extends AuthError {\n\n constructor(errorCode: string, errorMessage?: string) {\n super(errorCode, errorMessage);\n this.name = \"ClientAuthError\";\n\n Object.setPrototypeOf(this, ClientAuthError.prototype);\n }\n\n /**\n * Creates an error thrown when client info object doesn't decode correctly.\n * @param caughtError\n */\n static createClientInfoDecodingError(caughtError: string): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.clientInfoDecodingError.code,\n `${ClientAuthErrorMessage.clientInfoDecodingError.desc} Failed with error: ${caughtError}`);\n }\n\n /**\n * Creates an error thrown if the client info is empty.\n * @param rawClientInfo\n */\n static createClientInfoEmptyError(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.clientInfoEmptyError.code,\n `${ClientAuthErrorMessage.clientInfoEmptyError.desc}`);\n }\n\n /**\n * Creates an error thrown when the id token extraction errors out.\n * @param err\n */\n static createTokenParsingError(caughtExtractionError: string): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.tokenParsingError.code,\n `${ClientAuthErrorMessage.tokenParsingError.desc} Failed with error: ${caughtExtractionError}`);\n }\n\n /**\n * Creates an error thrown when the id token string is null or empty.\n * @param invalidRawTokenString\n */\n static createTokenNullOrEmptyError(invalidRawTokenString: string) : ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.nullOrEmptyToken.code,\n `${ClientAuthErrorMessage.nullOrEmptyToken.desc} Raw Token Value: ${invalidRawTokenString}`);\n }\n\n /**\n * Creates an error thrown when the endpoint discovery doesn't complete correctly.\n */\n static createEndpointDiscoveryIncompleteError(errDetail: string): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.endpointResolutionError.code,\n `${ClientAuthErrorMessage.endpointResolutionError.desc} Detail: ${errDetail}`);\n }\n\n /**\n * Creates an error thrown when the fetch client throws\n */\n static createNetworkError(endpoint: string, errDetail: string): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.networkError.code,\n `${ClientAuthErrorMessage.networkError.desc} | Fetch client threw: ${errDetail} | Attempted to reach: ${endpoint.split(\"?\")[0]}`);\n }\n\n /**\n * Creates an error thrown when the openid-configuration endpoint cannot be reached or does not contain the required data\n */\n static createUnableToGetOpenidConfigError(errDetail: string): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.unableToGetOpenidConfigError.code,\n `${ClientAuthErrorMessage.unableToGetOpenidConfigError.desc} Attempted to retrieve endpoints from: ${errDetail}`);\n }\n\n /**\n * Creates an error thrown when the hash cannot be deserialized.\n * @param hashParamObj\n */\n static createHashNotDeserializedError(hashParamObj: string): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.hashNotDeserialized.code,\n `${ClientAuthErrorMessage.hashNotDeserialized.desc} Given Object: ${hashParamObj}`);\n }\n\n /**\n * Creates an error thrown when the state cannot be parsed.\n * @param invalidState\n */\n static createInvalidStateError(invalidState: string, errorString?: string): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.invalidStateError.code,\n `${ClientAuthErrorMessage.invalidStateError.desc} Invalid State: ${invalidState}, Root Err: ${errorString}`);\n }\n\n /**\n * Creates an error thrown when two states do not match.\n */\n static createStateMismatchError(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.stateMismatchError.code,\n ClientAuthErrorMessage.stateMismatchError.desc);\n }\n\n /**\n * Creates an error thrown when the state is not present\n * @param missingState\n */\n static createStateNotFoundError(missingState: string): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.stateNotFoundError.code,\n `${ClientAuthErrorMessage.stateNotFoundError.desc}: ${missingState}`);\n }\n\n /**\n * Creates an error thrown when the nonce does not match.\n */\n static createNonceMismatchError(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.nonceMismatchError.code,\n ClientAuthErrorMessage.nonceMismatchError.desc);\n }\n\n /**\n * Creates an error thrown when the mnonce is not present\n * @param missingNonce\n */\n static createNonceNotFoundError(missingNonce: string): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.nonceNotFoundError.code,\n `${ClientAuthErrorMessage.nonceNotFoundError.desc}: ${missingNonce}`);\n }\n\n /**\n * Throws error when multiple tokens are in cache.\n */\n static createMultipleMatchingTokensInCacheError(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.multipleMatchingTokens.code,\n `${ClientAuthErrorMessage.multipleMatchingTokens.desc}.`);\n }\n\n /**\n * Throws error when multiple accounts are in cache for the given params\n */\n static createMultipleMatchingAccountsInCacheError(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.multipleMatchingAccounts.code,\n ClientAuthErrorMessage.multipleMatchingAccounts.desc);\n }\n\n /**\n * Throws error when multiple appMetada are in cache for the given clientId.\n */\n static createMultipleMatchingAppMetadataInCacheError(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.multipleMatchingAppMetadata.code,\n ClientAuthErrorMessage.multipleMatchingAppMetadata.desc);\n }\n\n /**\n * Throws error when no auth code or refresh token is given to ServerTokenRequestParameters.\n */\n static createTokenRequestCannotBeMadeError(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.tokenRequestCannotBeMade.code, ClientAuthErrorMessage.tokenRequestCannotBeMade.desc);\n }\n\n /**\n * Throws error when attempting to append a null, undefined or empty scope to a set\n * @param givenScope\n */\n static createAppendEmptyScopeToSetError(givenScope: string): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.appendEmptyScopeError.code, `${ClientAuthErrorMessage.appendEmptyScopeError.desc} Given Scope: ${givenScope}`);\n }\n\n /**\n * Throws error when attempting to append a null, undefined or empty scope to a set\n * @param givenScope\n */\n static createRemoveEmptyScopeFromSetError(givenScope: string): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.removeEmptyScopeError.code, `${ClientAuthErrorMessage.removeEmptyScopeError.desc} Given Scope: ${givenScope}`);\n }\n\n /**\n * Throws error when attempting to append null or empty ScopeSet.\n * @param appendError\n */\n static createAppendScopeSetError(appendError: string): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.appendScopeSetError.code, `${ClientAuthErrorMessage.appendScopeSetError.desc} Detail Error: ${appendError}`);\n }\n\n /**\n * Throws error if ScopeSet is null or undefined.\n * @param givenScopeSet\n */\n static createEmptyInputScopeSetError(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.emptyInputScopeSetError.code, `${ClientAuthErrorMessage.emptyInputScopeSetError.desc}`);\n }\n\n /**\n * Throws error if user sets CancellationToken.cancel = true during polling of token endpoint during device code flow\n */\n static createDeviceCodeCancelledError(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.DeviceCodePollingCancelled.code, `${ClientAuthErrorMessage.DeviceCodePollingCancelled.desc}`);\n }\n\n /**\n * Throws error if device code is expired\n */\n static createDeviceCodeExpiredError(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.DeviceCodeExpired.code, `${ClientAuthErrorMessage.DeviceCodeExpired.desc}`);\n }\n\n /**\n * Throws error if device code is expired\n */\n static createDeviceCodeUnknownError(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.DeviceCodeUnknownError.code, `${ClientAuthErrorMessage.DeviceCodeUnknownError.desc}`);\n }\n\n /**\n * Throws error when silent requests are made without an account object\n */\n static createNoAccountInSilentRequestError(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.NoAccountInSilentRequest.code, `${ClientAuthErrorMessage.NoAccountInSilentRequest.desc}`);\n }\n\n /**\n * Throws error when cache record is null or undefined.\n */\n static createNullOrUndefinedCacheRecord(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.invalidCacheRecord.code, ClientAuthErrorMessage.invalidCacheRecord.desc);\n }\n\n /**\n * Throws error when provided environment is not part of the CloudDiscoveryMetadata object\n */\n static createInvalidCacheEnvironmentError(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.invalidCacheEnvironment.code, ClientAuthErrorMessage.invalidCacheEnvironment.desc);\n }\n\n /**\n * Throws error when account is not found in cache.\n */\n static createNoAccountFoundError(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.noAccountFound.code, ClientAuthErrorMessage.noAccountFound.desc);\n }\n\n /**\n * Throws error if ICachePlugin not set on CacheManager.\n */\n static createCachePluginError(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.CachePluginError.code, `${ClientAuthErrorMessage.CachePluginError.desc}`);\n }\n\n /**\n * Throws error if crypto object not found.\n * @param operationName\n */\n static createNoCryptoObjectError(operationName: string): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.noCryptoObj.code, `${ClientAuthErrorMessage.noCryptoObj.desc}${operationName}`);\n }\n\n /**\n * Throws error if cache type is invalid.\n */\n static createInvalidCacheTypeError(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.invalidCacheType.code, `${ClientAuthErrorMessage.invalidCacheType.desc}`);\n }\n\n /**\n * Throws error if unexpected account type.\n */\n static createUnexpectedAccountTypeError(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.unexpectedAccountType.code, `${ClientAuthErrorMessage.unexpectedAccountType.desc}`);\n }\n\n /**\n * Throws error if unexpected credential type.\n */\n static createUnexpectedCredentialTypeError(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.unexpectedCredentialType.code, `${ClientAuthErrorMessage.unexpectedCredentialType.desc}`);\n }\n\n /**\n * Throws error if client assertion is not valid.\n */\n static createInvalidAssertionError(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.invalidAssertion.code, `${ClientAuthErrorMessage.invalidAssertion.desc}`);\n }\n\n /**\n * Throws error if client assertion is not valid.\n */\n static createInvalidCredentialError(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.invalidClientCredential.code, `${ClientAuthErrorMessage.invalidClientCredential.desc}`);\n }\n\n /**\n * Throws error if token cannot be retrieved from cache due to refresh being required.\n */\n static createRefreshRequiredError(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.tokenRefreshRequired.code, ClientAuthErrorMessage.tokenRefreshRequired.desc);\n }\n\n /**\n * Throws error if the user defined timeout is reached.\n */\n static createUserTimeoutReachedError(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.userTimeoutReached.code, ClientAuthErrorMessage.userTimeoutReached.desc);\n }\n\n /*\n * Throws error if token claims are not populated for a signed jwt generation\n */\n static createTokenClaimsRequiredError(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.tokenClaimsRequired.code, ClientAuthErrorMessage.tokenClaimsRequired.desc);\n }\n\n /**\n * Throws error when the authorization code is missing from the server response\n */\n static createNoAuthCodeInServerResponseError(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.noAuthorizationCodeFromServer.code, ClientAuthErrorMessage.noAuthorizationCodeFromServer.desc);\n }\n\n static createBindingKeyNotRemovedError(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.bindingKeyNotRemovedError.code, ClientAuthErrorMessage.bindingKeyNotRemovedError.desc);\n }\n\n /**\n * Thrown when logout is attempted for an authority that doesnt have an end_session_endpoint\n */\n static createLogoutNotSupportedError(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.logoutNotSupported.code, ClientAuthErrorMessage.logoutNotSupported.desc);\n }\n\n /**\n * Create an error when kid attribute is missing from a PoP token's cache record\n */\n static createKeyIdMissingError(): ClientAuthError {\n return new ClientAuthError(ClientAuthErrorMessage.keyIdMissing.code, ClientAuthErrorMessage.keyIdMissing.desc);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { DecodedAuthToken } from \"../account/DecodedAuthToken\";\nimport { ClientAuthError } from \"../error/ClientAuthError\";\n\n/**\n * @hidden\n */\nexport class StringUtils {\n\n /**\n * decode a JWT\n *\n * @param authToken\n */\n static decodeAuthToken(authToken: string): DecodedAuthToken {\n if (StringUtils.isEmpty(authToken)) {\n throw ClientAuthError.createTokenNullOrEmptyError(authToken);\n }\n const tokenPartsRegex = /^([^\\.\\s]*)\\.([^\\.\\s]+)\\.([^\\.\\s]*)$/;\n const matches = tokenPartsRegex.exec(authToken);\n if (!matches || matches.length < 4) {\n throw ClientAuthError.createTokenParsingError(`Given token is malformed: ${JSON.stringify(authToken)}`);\n }\n const crackedToken: DecodedAuthToken = {\n header: matches[1],\n JWSPayload: matches[2],\n JWSSig: matches[3]\n };\n return crackedToken;\n }\n\n /**\n * Check if a string is empty.\n *\n * @param str\n */\n static isEmpty(str?: string): boolean {\n return (typeof str === \"undefined\" || !str || 0 === str.length);\n }\n\n /**\n * Check if stringified object is empty\n * @param strObj \n */\n static isEmptyObj(strObj?: string): boolean {\n if (strObj && !StringUtils.isEmpty(strObj)) {\n try {\n const obj = JSON.parse(strObj);\n return Object.keys(obj).length === 0;\n } catch (e) {}\n }\n return true;\n }\n\n static startsWith(str: string, search: string): boolean {\n return str.indexOf(search) === 0;\n }\n\n static endsWith(str: string, search: string): boolean {\n return (str.length >= search.length) && (str.lastIndexOf(search) === (str.length - search.length));\n }\n\n /**\n * Parses string into an object.\n *\n * @param query\n */\n static queryStringToObject<T>(query: string): T {\n const obj: {} = {};\n const params = query.split(\"&\");\n const decode = (s: string) => decodeURIComponent(s.replace(/\\+/g, \" \"));\n params.forEach((pair) => {\n if (pair.trim()) {\n const [key, value] = pair.split(/=(.+)/g, 2); // Split on the first occurence of the '=' character\n if (key && value) {\n obj[decode(key)] = decode(value);\n }\n }\n });\n return obj as T;\n }\n\n /**\n * Trims entries in an array.\n *\n * @param arr\n */\n static trimArrayEntries(arr: Array<string>): Array<string> {\n return arr.map(entry => entry.trim());\n }\n\n /**\n * Removes empty strings from array\n * @param arr\n */\n static removeEmptyStringsFromArray(arr: Array<string>): Array<string> {\n return arr.filter(entry => {\n return !StringUtils.isEmpty(entry);\n });\n }\n\n /**\n * Attempts to parse a string into JSON\n * @param str\n */\n static jsonParseHelper<T>(str: string): T | null {\n try {\n return JSON.parse(str) as T;\n } catch (e) {\n return null;\n }\n }\n\n /**\n * Tests if a given string matches a given pattern, with support for wildcards and queries.\n * @param pattern Wildcard pattern to string match. Supports \"*\" for wildcards and \"?\" for queries\n * @param input String to match against\n */\n static matchPattern(pattern: string, input: string): boolean {\n /**\n * Wildcard support: https://stackoverflow.com/a/3117248/4888559\n * Queries: replaces \"?\" in string with escaped \"\\?\" for regex test\n */\n const regex: RegExp = new RegExp(pattern.replace(/\\\\/g, \"\\\\\\\\\").replace(/\\*/g, \"[^ ]*\").replace(/\\?/g, \"\\\\\\?\")); // eslint-disable-line security/detect-non-literal-regexp\n\n return regex.test(input);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport enum EventType {\n INITIALIZE_START = \"msal:initializeStart\",\n INITIALIZE_END = \"msal:initializeEnd\",\n ACCOUNT_ADDED = \"msal:accountAdded\",\n ACCOUNT_REMOVED = \"msal:accountRemoved\",\n LOGIN_START = \"msal:loginStart\",\n LOGIN_SUCCESS = \"msal:loginSuccess\",\n LOGIN_FAILURE = \"msal:loginFailure\",\n ACQUIRE_TOKEN_START = \"msal:acquireTokenStart\",\n ACQUIRE_TOKEN_SUCCESS = \"msal:acquireTokenSuccess\",\n ACQUIRE_TOKEN_FAILURE = \"msal:acquireTokenFailure\",\n ACQUIRE_TOKEN_NETWORK_START = \"msal:acquireTokenFromNetworkStart\",\n SSO_SILENT_START = \"msal:ssoSilentStart\",\n SSO_SILENT_SUCCESS = \"msal:ssoSilentSuccess\",\n SSO_SILENT_FAILURE = \"msal:ssoSilentFailure\",\n ACQUIRE_TOKEN_BY_CODE_START = \"msal:acquireTokenByCodeStart\",\n ACQUIRE_TOKEN_BY_CODE_SUCCESS = \"msal:acquireTokenByCodeSuccess\",\n ACQUIRE_TOKEN_BY_CODE_FAILURE = \"msal:acquireTokenByCodeFailure\",\n HANDLE_REDIRECT_START = \"msal:handleRedirectStart\",\n HANDLE_REDIRECT_END = \"msal:handleRedirectEnd\",\n POPUP_OPENED = \"msal:popupOpened\",\n LOGOUT_START = \"msal:logoutStart\",\n LOGOUT_SUCCESS = \"msal:logoutSuccess\",\n LOGOUT_FAILURE = \"msal:logoutFailure\",\n LOGOUT_END = \"msal:logoutEnd\"\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Authority types supported by MSAL.\n */\nexport enum AuthorityType {\n Default,\n Adfs\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthenticationResult, AuthError, AccountInfo } from \"@azure/msal-common\";\nimport { EventType } from \"./EventType\";\nimport { InteractionStatus, InteractionType } from \"../utils/BrowserConstants\";\nimport { PopupRequest, RedirectRequest, SilentRequest, SsoSilentRequest, EndSessionRequest } from \"..\";\n\nexport type EventMessage = {\n eventType: EventType;\n interactionType: InteractionType | null;\n payload: EventPayload;\n error: EventError;\n timestamp: number;\n};\n\nexport type PopupEvent = {\n popupWindow: Window;\n};\n\nexport type EventPayload = AccountInfo | PopupRequest | RedirectRequest | SilentRequest | SsoSilentRequest | EndSessionRequest | AuthenticationResult | PopupEvent | null;\n\nexport type EventError = AuthError | Error | null;\n\nexport type EventCallbackFunction = (message: EventMessage) => void;\n\nexport class EventMessageUtils {\n\n /**\n * Gets interaction status from event message\n * @param message\n * @param currentStatus\n */\n static getInteractionStatusFromEvent(message: EventMessage, currentStatus?: InteractionStatus): InteractionStatus|null {\n switch (message.eventType) {\n case EventType.LOGIN_START:\n return InteractionStatus.Login;\n case EventType.SSO_SILENT_START:\n return InteractionStatus.SsoSilent;\n case EventType.ACQUIRE_TOKEN_START:\n if (message.interactionType === InteractionType.Redirect || message.interactionType === InteractionType.Popup) {\n return InteractionStatus.AcquireToken;\n }\n break;\n case EventType.HANDLE_REDIRECT_START:\n return InteractionStatus.HandleRedirect;\n case EventType.LOGOUT_START:\n return InteractionStatus.Logout;\n case EventType.SSO_SILENT_SUCCESS:\n case EventType.SSO_SILENT_FAILURE:\n if (currentStatus && currentStatus !== InteractionStatus.SsoSilent) {\n // Prevent this event from clearing any status other than ssoSilent\n break;\n }\n return InteractionStatus.None;\n case EventType.LOGOUT_END:\n if (currentStatus && currentStatus !== InteractionStatus.Logout) {\n // Prevent this event from clearing any status other than logout\n break;\n }\n return InteractionStatus.None;\n case EventType.HANDLE_REDIRECT_END:\n if (currentStatus && currentStatus !== InteractionStatus.HandleRedirect) {\n // Prevent this event from clearing any status other than handleRedirect\n break;\n }\n return InteractionStatus.None;\n case EventType.LOGIN_SUCCESS:\n case EventType.LOGIN_FAILURE:\n case EventType.ACQUIRE_TOKEN_SUCCESS:\n case EventType.ACQUIRE_TOKEN_FAILURE:\n if (message.interactionType === InteractionType.Redirect || message.interactionType === InteractionType.Popup) {\n if (currentStatus && currentStatus !== InteractionStatus.Login && currentStatus !== InteractionStatus.AcquireToken) {\n // Prevent this event from clearing any status other than login or acquireToken\n break;\n }\n return InteractionStatus.None;\n }\n break;\n default:\n break;\n }\n return null;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ClientAuthError } from \"../error/ClientAuthError\";\nimport { StringUtils } from \"../utils/StringUtils\";\nimport { ICrypto } from \"../crypto/ICrypto\";\nimport { Separators, Constants } from \"../utils/Constants\";\n\n/**\n * Client info object which consists of two IDs. Need to add more info here.\n */\nexport type ClientInfo = {\n uid: string,\n utid: string\n};\n\n/**\n * Function to build a client info object from server clientInfo string\n * @param rawClientInfo\n * @param crypto\n */\nexport function buildClientInfo(rawClientInfo: string, crypto: ICrypto): ClientInfo {\n if (StringUtils.isEmpty(rawClientInfo)) {\n throw ClientAuthError.createClientInfoEmptyError();\n }\n\n try {\n const decodedClientInfo: string = crypto.base64Decode(rawClientInfo);\n return JSON.parse(decodedClientInfo) as ClientInfo;\n } catch (e) {\n throw ClientAuthError.createClientInfoDecodingError((e as ClientAuthError).message);\n }\n}\n\n/**\n * Function to build a client info object from cached homeAccountId string\n * @param homeAccountId \n */\nexport function buildClientInfoFromHomeAccountId(homeAccountId: string): ClientInfo {\n if (StringUtils.isEmpty(homeAccountId)) {\n throw ClientAuthError.createClientInfoDecodingError(\"Home account ID was empty.\");\n }\n const clientInfoParts: string[] = homeAccountId.split(Separators.CLIENT_INFO_SEPARATOR, 2);\n return {\n uid: clientInfoParts[0],\n utid: clientInfoParts.length < 2 ? Constants.EMPTY_STRING : clientInfoParts[1]\n };\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n Separators,\n CacheAccountType,\n CacheType,\n Constants,\n} from \"../../utils/Constants\";\nimport { Authority } from \"../../authority/Authority\";\nimport { AuthToken } from \"../../account/AuthToken\";\nimport { ICrypto } from \"../../crypto/ICrypto\";\nimport { buildClientInfo } from \"../../account/ClientInfo\";\nimport { StringUtils } from \"../../utils/StringUtils\";\nimport { AccountInfo } from \"../../account/AccountInfo\";\nimport { ClientAuthError } from \"../../error/ClientAuthError\";\nimport { AuthorityType } from \"../../authority/AuthorityType\";\nimport { Logger } from \"../../logger/Logger\";\nimport { TokenClaims } from \"../../account/TokenClaims\";\n\n/**\n * Type that defines required and optional parameters for an Account field (based on universal cache schema implemented by all MSALs).\n *\n * Key : Value Schema\n *\n * Key: <home_account_id>-<environment>-<realm*>\n *\n * Value Schema:\n * {\n * homeAccountId: home account identifier for the auth scheme,\n * environment: entity that issued the token, represented as a full host\n * realm: Full tenant or organizational identifier that the account belongs to\n * localAccountId: Original tenant-specific accountID, usually used for legacy cases\n * username: primary username that represents the user, usually corresponds to preferred_username in the v2 endpt\n * authorityType: Accounts authority type as a string\n * name: Full name for the account, including given name and family name,\n * clientInfo: Full base64 encoded client info received from ESTS\n * lastModificationTime: last time this entity was modified in the cache\n * lastModificationApp:\n * idTokenClaims: Object containing claims parsed from ID token\n * nativeAccountId: Account identifier on the native device\n * }\n */\nexport class AccountEntity {\n homeAccountId: string;\n environment: string;\n realm: string;\n localAccountId: string;\n username: string;\n authorityType: string;\n name?: string;\n clientInfo?: string;\n lastModificationTime?: string;\n lastModificationApp?: string;\n cloudGraphHostName?: string;\n msGraphHost?: string;\n idTokenClaims?: TokenClaims;\n nativeAccountId?: string;\n\n /**\n * Generate Account Id key component as per the schema: <home_account_id>-<environment>\n */\n generateAccountId(): string {\n const accountId: Array<string> = [this.homeAccountId, this.environment];\n return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\n }\n\n /**\n * Generate Account Cache Key as per the schema: <home_account_id>-<environment>-<realm*>\n */\n generateAccountKey(): string {\n return AccountEntity.generateAccountCacheKey({\n homeAccountId: this.homeAccountId,\n environment: this.environment,\n tenantId: this.realm,\n username: this.username,\n localAccountId: this.localAccountId\n });\n }\n\n /**\n * returns the type of the cache (in this case account)\n */\n generateType(): number {\n switch (this.authorityType) {\n case CacheAccountType.ADFS_ACCOUNT_TYPE:\n return CacheType.ADFS;\n case CacheAccountType.MSAV1_ACCOUNT_TYPE:\n return CacheType.MSA;\n case CacheAccountType.MSSTS_ACCOUNT_TYPE:\n return CacheType.MSSTS;\n case CacheAccountType.GENERIC_ACCOUNT_TYPE:\n return CacheType.GENERIC;\n default: {\n throw ClientAuthError.createUnexpectedAccountTypeError();\n }\n }\n }\n\n /**\n * Returns the AccountInfo interface for this account.\n */\n getAccountInfo(): AccountInfo {\n return {\n homeAccountId: this.homeAccountId,\n environment: this.environment,\n tenantId: this.realm,\n username: this.username,\n localAccountId: this.localAccountId,\n name: this.name,\n idTokenClaims: this.idTokenClaims,\n nativeAccountId: this.nativeAccountId\n };\n }\n\n /**\n * Generates account key from interface\n * @param accountInterface\n */\n static generateAccountCacheKey(accountInterface: AccountInfo): string {\n const accountKey = [\n accountInterface.homeAccountId,\n accountInterface.environment || Constants.EMPTY_STRING,\n accountInterface.tenantId || Constants.EMPTY_STRING,\n ];\n\n return accountKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\n }\n\n /**\n * Build Account cache from IdToken, clientInfo and authority/policy. Associated with AAD.\n * @param clientInfo\n * @param authority\n * @param idToken\n * @param policy\n */\n static createAccount(\n clientInfo: string,\n homeAccountId: string,\n idToken: AuthToken,\n authority?: Authority,\n cloudGraphHostName?: string,\n msGraphHost?: string,\n environment?: string,\n nativeAccountId?: string\n ): AccountEntity {\n const account: AccountEntity = new AccountEntity();\n\n account.authorityType = CacheAccountType.MSSTS_ACCOUNT_TYPE;\n account.clientInfo = clientInfo;\n account.homeAccountId = homeAccountId;\n account.nativeAccountId = nativeAccountId;\n\n const env = environment || (authority && authority.getPreferredCache());\n\n if (!env) {\n throw ClientAuthError.createInvalidCacheEnvironmentError();\n }\n\n account.environment = env;\n // non AAD scenarios can have empty realm\n account.realm = idToken?.claims?.tid || Constants.EMPTY_STRING;\n\n if (idToken) {\n account.idTokenClaims = idToken.claims;\n\n // How do you account for MSA CID here?\n account.localAccountId = idToken?.claims?.oid || idToken?.claims?.sub || Constants.EMPTY_STRING;\n\n /*\n * In B2C scenarios the emails claim is used instead of preferred_username and it is an array. In most cases it will contain a single email.\n * This field should not be relied upon if a custom policy is configured to return more than 1 email.\n */\n account.username = idToken?.claims?.preferred_username || (idToken?.claims?.emails? idToken.claims.emails[0]: Constants.EMPTY_STRING);\n account.name = idToken?.claims?.name;\n }\n\n account.cloudGraphHostName = cloudGraphHostName;\n account.msGraphHost = msGraphHost;\n\n return account;\n }\n\n /**\n * Builds non-AAD/ADFS account.\n * @param authority\n * @param idToken\n */\n static createGenericAccount(\n homeAccountId: string,\n idToken: AuthToken,\n authority?: Authority,\n cloudGraphHostName?: string,\n msGraphHost?: string,\n environment?: string\n ): AccountEntity {\n const account: AccountEntity = new AccountEntity();\n\n account.authorityType = (authority && authority.authorityType === AuthorityType.Adfs) ? CacheAccountType.ADFS_ACCOUNT_TYPE : CacheAccountType.GENERIC_ACCOUNT_TYPE;\n account.homeAccountId = homeAccountId;\n // non AAD scenarios can have empty realm\n account.realm = Constants.EMPTY_STRING;\n\n const env = environment || authority && authority.getPreferredCache();\n\n if (!env) {\n throw ClientAuthError.createInvalidCacheEnvironmentError();\n }\n\n if (idToken) {\n // How do you account for MSA CID here?\n account.localAccountId = idToken?.claims?.oid || idToken?.claims?.sub || Constants.EMPTY_STRING;\n // upn claim for most ADFS scenarios\n account.username = idToken?.claims?.upn || Constants.EMPTY_STRING;\n account.name = idToken?.claims?.name || Constants.EMPTY_STRING;\n account.idTokenClaims = idToken?.claims;\n }\n\n account.environment = env;\n\n account.cloudGraphHostName = cloudGraphHostName;\n account.msGraphHost = msGraphHost;\n\n /*\n * add uniqueName to claims\n * account.name = idToken.claims.uniqueName;\n */\n\n return account;\n }\n\n /**\n * Generate HomeAccountId from server response\n * @param serverClientInfo\n * @param authType\n */\n static generateHomeAccountId(serverClientInfo: string, authType: AuthorityType, logger: Logger, cryptoObj: ICrypto, idToken?: AuthToken): string {\n\n const accountId = idToken?.claims?.sub ? idToken.claims.sub : Constants.EMPTY_STRING;\n\n // since ADFS does not have tid and does not set client_info\n if (authType === AuthorityType.Adfs) {\n return accountId;\n }\n\n // for cases where there is clientInfo\n if (serverClientInfo) {\n try {\n const clientInfo = buildClientInfo(serverClientInfo, cryptoObj);\n if (!StringUtils.isEmpty(clientInfo.uid) && !StringUtils.isEmpty(clientInfo.utid)) {\n return `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`;\n }\n } catch (e) {}\n }\n\n // default to \"sub\" claim\n logger.verbose(\"No client info in response\");\n return accountId;\n }\n\n /**\n * Validates an entity: checks for all expected params\n * @param entity\n */\n static isAccountEntity(entity: object): boolean {\n\n if (!entity) {\n return false;\n }\n\n return (\n entity.hasOwnProperty(\"homeAccountId\") &&\n entity.hasOwnProperty(\"environment\") &&\n entity.hasOwnProperty(\"realm\") &&\n entity.hasOwnProperty(\"localAccountId\") &&\n entity.hasOwnProperty(\"username\") &&\n entity.hasOwnProperty(\"authorityType\")\n );\n }\n\n /**\n * Helper function to determine whether 2 accountInfo objects represent the same account\n * @param accountA\n * @param accountB\n * @param compareClaims - If set to true idTokenClaims will also be compared to determine account equality\n */\n static accountInfoIsEqual(accountA: AccountInfo | null, accountB: AccountInfo | null, compareClaims?: boolean): boolean {\n if (!accountA || !accountB) {\n return false;\n }\n\n let claimsMatch = true; // default to true so as to not fail comparison below if compareClaims: false\n if (compareClaims) {\n const accountAClaims = (accountA.idTokenClaims || {}) as TokenClaims;\n const accountBClaims = (accountB.idTokenClaims || {}) as TokenClaims;\n\n // issued at timestamp and nonce are expected to change each time a new id token is acquired\n claimsMatch = (accountAClaims.iat === accountBClaims.iat) &&\n (accountAClaims.nonce === accountBClaims.nonce);\n }\n\n return (accountA.homeAccountId === accountB.homeAccountId) &&\n (accountA.localAccountId === accountB.localAccountId) &&\n (accountA.username === accountB.username) &&\n (accountA.tenantId === accountB.tenantId) &&\n (accountA.environment === accountB.environment) &&\n (accountA.nativeAccountId === accountB.nativeAccountId) &&\n claimsMatch;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport * as React from \"react\";\nimport { IPublicClientApplication, stubbedPublicClientApplication, Logger, InteractionStatus, AccountInfo } from \"@azure/msal-browser\";\n\nexport interface IMsalContext {\n instance: IPublicClientApplication;\n inProgress: InteractionStatus;\n accounts: AccountInfo[];\n logger: Logger;\n}\n\n/*\n * Stubbed context implementation\n * Only used when there is no provider, which is an unsupported scenario\n */\nconst defaultMsalContext: IMsalContext = {\n instance: stubbedPublicClientApplication,\n inProgress: InteractionStatus.None,\n accounts: [],\n logger: new Logger({})\n};\n\nexport const MsalContext = React.createContext<IMsalContext>(\n defaultMsalContext\n);\nexport const MsalConsumer = MsalContext.Consumer;\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AccountIdentifiers } from \"../types/AccountIdentifiers\";\nimport { AccountInfo } from \"@azure/msal-browser\";\n\ntype FaaCFunction = <T>(args: T) => React.ReactNode;\n\nexport function getChildrenOrFunction<T>(\n children: React.ReactNode | FaaCFunction,\n args: T\n): React.ReactNode {\n if (typeof children === \"function\") {\n return children(args);\n }\n return children;\n}\n\n/*\n * Utility types\n * Reference: https://github.com/piotrwitek/utility-types\n */\ntype SetDifference<A, B> = A extends B ? never : A;\ntype SetComplement<A, A1 extends A> = SetDifference<A, A1>;\nexport type Subtract<T extends T1, T1 extends object> = Pick<T,SetComplement<keyof T, keyof T1>>;\n\n/**\n * Helper function to determine whether 2 arrays are equal\n * Used to avoid unnecessary state updates\n * @param arrayA \n * @param arrayB \n */\nexport function accountArraysAreEqual(arrayA: Array<AccountIdentifiers>, arrayB: Array<AccountIdentifiers>): boolean {\n if (arrayA.length !== arrayB.length) {\n return false;\n }\n\n const comparisonArray = [...arrayB];\n\n return arrayA.every((elementA) => {\n const elementB = comparisonArray.shift();\n if (!elementA || !elementB) {\n return false;\n }\n\n return (elementA.homeAccountId === elementB.homeAccountId) && \n (elementA.localAccountId === elementB.localAccountId) &&\n (elementA.username === elementB.username);\n });\n}\n\nexport function getAccountByIdentifiers(allAccounts: AccountInfo[], accountIdentifiers: AccountIdentifiers): AccountInfo | null {\n if (allAccounts.length > 0 && (accountIdentifiers.homeAccountId || accountIdentifiers.localAccountId || accountIdentifiers.username)) {\n const matchedAccounts = allAccounts.filter(accountObj => {\n if (accountIdentifiers.username && accountIdentifiers.username.toLowerCase() !== accountObj.username.toLowerCase()) {\n return false;\n }\n if (accountIdentifiers.homeAccountId && accountIdentifiers.homeAccountId.toLowerCase() !== accountObj.homeAccountId.toLowerCase()) {\n return false;\n }\n if (accountIdentifiers.localAccountId && accountIdentifiers.localAccountId.toLowerCase() !== accountObj.localAccountId.toLowerCase()) {\n return false;\n }\n\n return true;\n });\n\n return matchedAccounts[0] || null;\n } else {\n return null;\n }\n}\n","/* eslint-disable header/header */\nexport const name = \"@azure/msal-react\";\nexport const version = \"1.4.7\";\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport React, { useEffect, useReducer, PropsWithChildren, useMemo} from \"react\";\nimport {\n IPublicClientApplication,\n EventMessage,\n EventMessageUtils,\n InteractionStatus,\n Logger,\n WrapperSKU,\n AccountInfo\n} from \"@azure/msal-browser\";\nimport { MsalContext, IMsalContext } from \"./MsalContext\";\nimport { accountArraysAreEqual } from \"./utils/utilities\";\nimport { name as SKU, version } from \"./packageMetadata\";\n\nexport type MsalProviderProps = PropsWithChildren<{\n instance: IPublicClientApplication;\n}>;\n\ntype MsalState = {\n inProgress: InteractionStatus;\n accounts: AccountInfo[];\n};\n\nenum MsalProviderActionType {\n UNBLOCK_INPROGRESS = \"UNBLOCK_INPROGRESS\",\n EVENT = \"EVENT\"\n}\n\ntype MsalProviderReducerAction = {\n type: MsalProviderActionType,\n payload: {\n logger: Logger;\n instance: IPublicClientApplication;\n message?: EventMessage;\n };\n};\n\n/**\n * Returns the next inProgress and accounts state based on event message\n * @param previousState \n * @param action \n */\nconst reducer = (previousState: MsalState, action: MsalProviderReducerAction): MsalState => {\n const { type, payload } = action;\n let newInProgress = previousState.inProgress;\n\n switch (type) {\n case MsalProviderActionType.UNBLOCK_INPROGRESS:\n if (previousState.inProgress === InteractionStatus.Startup){\n newInProgress = InteractionStatus.None;\n payload.logger.info(\"MsalProvider - handleRedirectPromise resolved, setting inProgress to 'none'\");\n }\n break;\n case MsalProviderActionType.EVENT:\n const message = payload.message as EventMessage;\n const status = EventMessageUtils.getInteractionStatusFromEvent(message, previousState.inProgress);\n if (status) {\n payload.logger.info(`MsalProvider - ${message.eventType} results in setting inProgress from ${previousState.inProgress} to ${status}`);\n newInProgress = status;\n }\n break;\n default:\n throw new Error(`Unknown action type: ${type}`);\n }\n \n const currentAccounts = payload.instance.getAllAccounts();\n if (newInProgress !== previousState.inProgress && \n !accountArraysAreEqual(currentAccounts, previousState.accounts)) {\n // Both inProgress and accounts changed\n return {\n ...previousState,\n inProgress: newInProgress,\n accounts: currentAccounts\n };\n } else if (newInProgress !== previousState.inProgress) {\n // Only only inProgress changed\n return {\n ...previousState,\n inProgress: newInProgress\n };\n } else if (!accountArraysAreEqual(currentAccounts, previousState.accounts)) {\n // Only accounts changed\n return {\n ...previousState,\n accounts: currentAccounts\n };\n } else {\n // Nothing changed\n return previousState;\n }\n};\n\n/**\n * MSAL context provider component. This must be rendered above any other components that use MSAL.\n */\nexport function MsalProvider({instance, children}: MsalProviderProps): React.ReactElement {\n useEffect(() => {\n instance.initializeWrapperLibrary(WrapperSKU.React, version);\n }, [instance]);\n // Create a logger instance for msal-react with the same options as PublicClientApplication\n const logger = useMemo(() => {\n return instance.getLogger().clone(SKU, version);\n }, [instance]);\n\n const [state, updateState] = useReducer(reducer, undefined, () => {\n // Lazy initialization of the initial state\n return {\n inProgress: InteractionStatus.Startup,\n accounts: instance.getAllAccounts()\n };\n });\n \n useEffect(() => {\n const callbackId = instance.addEventCallback((message: EventMessage) => {\n updateState({\n payload: {\n instance,\n logger,\n message\n }, \n type: MsalProviderActionType.EVENT\n });\n });\n logger.verbose(`MsalProvider - Registered event callback with id: ${callbackId}`);\n\n instance.initialize().then(() => {\n instance.handleRedirectPromise().catch(() => {\n // Errors should be handled by listening to the LOGIN_FAILURE event\n return;\n }).finally(() => {\n /*\n * If handleRedirectPromise returns a cached promise the necessary events may not be fired\n * This is a fallback to prevent inProgress from getting stuck in 'startup'\n */\n updateState({\n payload: {\n instance,\n logger\n },\n type: MsalProviderActionType.UNBLOCK_INPROGRESS \n });\n });\n });\n\n return () => {\n // Remove callback when component unmounts or accounts change\n if (callbackId) {\n logger.verbose(`MsalProvider - Removing event callback ${callbackId}`);\n instance.removeEventCallback(callbackId);\n }\n };\n }, [instance, logger]);\n\n const contextValue: IMsalContext = {\n instance,\n inProgress: state.inProgress,\n accounts: state.accounts,\n logger\n };\n\n return (\n <MsalContext.Provider value={contextValue}>\n {children}\n </MsalContext.Provider>\n );\n}\n\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { useContext } from \"react\";\nimport { IMsalContext, MsalContext } from \"../MsalContext\";\n\n/**\n * Returns Msal Context values\n */\nexport const useMsal = (): IMsalContext => useContext(MsalContext);\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { useState, useEffect } from \"react\";\nimport { useMsal } from \"./useMsal\";\nimport { AccountIdentifiers } from \"../types/AccountIdentifiers\";\nimport { AccountInfo } from \"@azure/msal-browser\";\nimport { getAccountByIdentifiers } from \"../utils/utilities\";\n\nfunction isAuthenticated(allAccounts: AccountInfo[], matchAccount?: AccountIdentifiers): boolean {\n if(matchAccount && (matchAccount.username || matchAccount.homeAccountId || matchAccount.localAccountId)) {\n return !!getAccountByIdentifiers(allAccounts, matchAccount);\n } \n\n return allAccounts.length > 0;\n}\n\n/**\n * Returns whether or not a user is currently signed-in. Optionally provide 1 or more accountIdentifiers to determine if a specific user is signed-in\n * @param matchAccount \n */\nexport function useIsAuthenticated(matchAccount?: AccountIdentifiers): boolean {\n const { accounts: allAccounts } = useMsal();\n\n const [hasAuthenticated, setHasAuthenticated] = useState<boolean>(() => isAuthenticated(allAccounts, matchAccount));\n\n useEffect(() => {\n setHasAuthenticated(isAuthenticated(allAccounts, matchAccount));\n }, [allAccounts, matchAccount]);\n\n return hasAuthenticated;\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport React, { PropsWithChildren, useMemo } from \"react\";\nimport { AccountIdentifiers } from \"../types/AccountIdentifiers\";\nimport { getChildrenOrFunction } from \"../utils/utilities\";\nimport { useMsal } from \"../hooks/useMsal\";\nimport { useIsAuthenticated } from \"../hooks/useIsAuthenticated\";\nimport { InteractionStatus } from \"@azure/msal-browser\";\n\nexport type AuthenticatedTemplateProps = PropsWithChildren<AccountIdentifiers>;\n\n/**\n * Renders child components if user is authenticated\n * @param props \n */\nexport function AuthenticatedTemplate({ username, homeAccountId, localAccountId, children }: AuthenticatedTemplateProps): React.ReactElement|null {\n const context = useMsal();\n const accountIdentifier: AccountIdentifiers = useMemo(() => {\n return {\n username,\n homeAccountId,\n localAccountId\n };\n }, [username, homeAccountId, localAccountId]);\n const isAuthenticated = useIsAuthenticated(accountIdentifier);\n\n if (isAuthenticated && context.inProgress !== InteractionStatus.Startup) {\n return (\n <React.Fragment>\n {getChildrenOrFunction(children, context)}\n </React.Fragment>\n );\n }\n return null;\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport React, { PropsWithChildren, useMemo } from \"react\";\nimport { useMsal } from \"../hooks/useMsal\";\nimport { useIsAuthenticated } from \"../hooks/useIsAuthenticated\";\nimport { getChildrenOrFunction } from \"../utils/utilities\";\nimport { AccountIdentifiers } from \"../types/AccountIdentifiers\";\nimport { InteractionStatus } from \"@azure/msal-browser\";\n\nexport type UnauthenticatedTemplateProps = PropsWithChildren<AccountIdentifiers>;\n\n/**\n * Renders child components if user is unauthenticated\n * @param props \n */\nexport function UnauthenticatedTemplate({ username, homeAccountId, localAccountId, children }: UnauthenticatedTemplateProps): React.ReactElement|null {\n const context = useMsal();\n const accountIdentifier: AccountIdentifiers = useMemo(() => {\n return {\n username,\n homeAccountId,\n localAccountId\n };\n }, [username, homeAccountId, localAccountId]);\n const isAuthenticated = useIsAuthenticated(accountIdentifier);\n\n if (!isAuthenticated && context.inProgress !== InteractionStatus.Startup && context.inProgress !== InteractionStatus.HandleRedirect) {\n return (\n <React.Fragment>\n {getChildrenOrFunction(children, context)}\n </React.Fragment>\n );\n }\n return null;\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { useState, useEffect } from \"react\";\nimport { AccountInfo, IPublicClientApplication, AccountEntity } from \"@azure/msal-browser\";\nimport { useMsal } from \"./useMsal\";\nimport { AccountIdentifiers } from \"../types/AccountIdentifiers\";\nimport { getAccountByIdentifiers } from \"../utils/utilities\";\n\nfunction getAccount(instance: IPublicClientApplication, accountIdentifiers?: AccountIdentifiers): AccountInfo | null {\n if (!accountIdentifiers || (!accountIdentifiers.homeAccountId && !accountIdentifiers.localAccountId && !accountIdentifiers.username)) {\n // If no account identifiers are provided, return active account\n return instance.getActiveAccount();\n }\n\n return getAccountByIdentifiers(instance.getAllAccounts(), accountIdentifiers);\n}\n\n/**\n * Given 1 or more accountIdentifiers, returns the Account object if the user is signed-in\n * @param accountIdentifiers \n */\nexport function useAccount(accountIdentifiers?: AccountIdentifiers): AccountInfo | null {\n const { instance, inProgress, logger } = useMsal();\n\n const [account, setAccount] = useState<AccountInfo|null>(() => getAccount(instance, accountIdentifiers));\n\n useEffect(() => {\n setAccount((currentAccount: AccountInfo | null) => {\n const nextAccount = getAccount(instance, accountIdentifiers);\n if (!AccountEntity.accountInfoIsEqual(currentAccount, nextAccount, true)) {\n logger.info(\"useAccount - Updating account\");\n return nextAccount;\n }\n\n return currentAccount;\n });\n }, [inProgress, accountIdentifiers, instance, logger]);\n\n return account;\n}\n","/**\r\n * Enter here the user flows and custom policies for your B2C application\r\n * To learn more about user flows, visit: https://docs.microsoft.com/en-us/azure/active-directory-b2c/user-flow-overview\r\n * To learn more about custom policies, visit: https://docs.microsoft.com/en-us/azure/active-directory-b2c/custom-policy-overview\r\n */\r\n\r\nfunction getParameter(p: string | undefined) {\r\n //logger.log(p);\r\n return p == undefined ? \"\" : p;\r\n}\r\n\r\nexport const b2cPolicies = { \r\n names: {\r\n signUpSignIn: getParameter(process.env.REACT_APP_MSAL_SIGNINSIGNUP_PROFILE),\r\n forgotPassword: getParameter(process.env.REACT_APP_MSAL_FORGOT_PASSWORD_PROFILE),\r\n editProfile: getParameter(process.env.REACT_APP_MSAL_EDIT_PROFILE_PROFILE)\r\n },\r\n authorities: {\r\n signUpSignIn: {\r\n authority: getParameter(process.env.REACT_APP_MSAL_SIGNINSIGNUP_AUTHORITY),\r\n },\r\n forgotPassword: {\r\n authority: getParameter(process.env.REACT_APP_MSAL_FORGOT_PASSWORD_AUTHORITY),\r\n },\r\n editProfile: {\r\n authority: getParameter(process.env.REACT_APP_MSAL_EDIT_PROFILE_AUTHORITY)\r\n }\r\n },\r\n authorityDomain: getParameter(process.env.REACT_APP_MSAL_AUTHORITY_DOMAIN)\r\n}\r\n\r\n\r\n/**\r\n * Configuration object to be passed to MSAL instance on creation. \r\n * For a full list of MSAL.js configuration parameters, visit:\r\n * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/configuration.md \r\n */\r\nexport const msalConfig = {\r\n auth: {\r\n clientId: getParameter(process.env.REACT_APP_MSAL_CLIENT_ID), // This is the ONLY mandatory field that you need to supply.\r\n authority: b2cPolicies.authorities.signUpSignIn.authority, // Choose SUSI as your default authority. //'https://login.microsoftonline.com/PUT_YOUR_TENANT_ID_HERE', // Tenant ID of the React.JS App Registration\r\n knownAuthorities: [b2cPolicies.authorityDomain], // Mark your B2C tenant's domain as trusted.\r\n redirectUri: \"/\", // You must register this URI on Azure Portal/App Registration. Defaults to window.location.origin\r\n postLogoutRedirectUri: \"/\", // Indicates the page to navigate after logout.\r\n navigateToLoginRequestUrl: false, // If \"true\", will navigate back to the original request location before processing the auth code response.\r\n },\r\n cache: {\r\n cacheLocation: \"sessionStorage\", // Configures cache location. \"sessionStorage\" is more secure, but \"localStorage\" gives you SSO between tabs.\r\n storeAuthStateInCookie: false, // Set this to \"true\" if you are having issues on IE11 or Edge\r\n },\r\n /*system: {\r\n loggerOptions: {\r\n loggerCallback: (level, message, containsPii) => {\r\n if (containsPii) {\r\n return;\r\n }\r\n switch (level) {\r\n case LogLevel.Error:\r\n console.error(message);\r\n return;\r\n case LogLevel.Info:\r\n console.info(message);\r\n return;\r\n case LogLevel.Verbose:\r\n console.debug(message);\r\n return;\r\n case LogLevel.Warning:\r\n console.warn(message);\r\n return;\r\n }\r\n }\r\n }\r\n }*/\r\n};\r\n\r\n/**\r\n * Add here the endpoints and scopes when obtaining an access token for protected web APIs. For more information, see:\r\n * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/resources-and-scopes.md\r\n */\r\nexport const protectedResources = {\r\n apiHello: {\r\n endpoint: \"http://localhost:5000/hello\",\r\n scopes: [getParameter(process.env.REACT_APP_MSAL_SCOPE)], // e.g. api://xxxxxx/access_as_user\r\n },\r\n}\r\n\r\n/**\r\n * Scopes you add here will be prompted for user consent during sign-in.\r\n * By default, MSAL.js will add OIDC scopes (openid, profile, email) to any login request.\r\n * For more information about OIDC scopes, visit: \r\n * https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-permissions-and-consent#openid-connect-scopes\r\n */\r\nexport const loginApiRequest = {\r\n scopes: [getParameter(process.env.REACT_APP_MSAL_SCOPE)],\r\n};\r\n\r\n","import React from \"react\";\r\nimport { useMsal } from \"@azure/msal-react\";\r\nimport { loginApiRequest } from \"../helper/authConfig\";\r\n\r\nexport const SignInButton = () => {\r\n const { instance } = useMsal();\r\n\r\n const handleLogin = () => {\r\n instance.loginRedirect(loginApiRequest).catch((e) => {\r\n });\r\n };\r\n return <button className='btn btn-standard-transparent btn-round-lg' onClick={handleLogin}>Sign In</button>;\r\n};","import { useMsal } from \"@azure/msal-react\";\r\n\r\nexport const SignOutButton = () => {\r\n const { instance } = useMsal();\r\n\r\n const handleLogout = () => {\r\n sessionStorage.clear();\r\n instance.logout();\r\n // instance.logoutRedirect({\r\n // postLogoutRedirectUri: \"/SignOutComplete\", \r\n // });\r\n };\r\n return <a className=\"signout-button\" onClick={handleLogout}><i className=\"fa-solid fa-right-from-bracket signout-icon\"></i> Sign Out</a>;\r\n};","import React from \"react\";\r\nimport { Nav, NavDropdown, NavItem, Navbar } from 'react-bootstrap';\r\nimport { AuthenticatedTemplate, UnauthenticatedTemplate} from \"@azure/msal-react\";\r\nimport { SignInButton } from \"./SignIn\";\r\nimport { SignOutButton } from \"./SignOut\";\r\nimport { ImpersonateContactButton } from \"./ImpersonateContactButton\";\r\n\r\nexport const Menu = () => {\r\n\r\n return (\r\n <div className=\"login-container\">\r\n <UnauthenticatedTemplate>\r\n <NavItem>\r\n <SignInButton />\r\n </NavItem>\r\n </UnauthenticatedTemplate>\r\n <AuthenticatedTemplate>\r\n <Navbar>\r\n <NavDropdown title={<i className=\"fa fa-user fa-lg\"></i>}>\r\n <NavItem className=\"mr-34\" >\r\n <SignOutButton />\r\n </NavItem>\r\n </NavDropdown>\r\n </Navbar>\r\n </AuthenticatedTemplate>\r\n </div>\r\n);\r\n};","import * as React from \"react\";\nimport type {\n History,\n InitialEntry,\n Location,\n MemoryHistory,\n Path,\n To\n} from \"history\";\nimport {\n Action as NavigationType,\n createMemoryHistory,\n parsePath\n} from \"history\";\n\nexport type { Location, Path, To, NavigationType };\n\nfunction invariant(cond: any, message: string): asserts cond {\n if (!cond) throw new Error(message);\n}\n\nfunction warning(cond: any, message: string): void {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging React Router!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nconst alreadyWarned: Record<string, boolean> = {};\nfunction warningOnce(key: string, cond: boolean, message: string) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n warning(false, message);\n }\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// CONTEXT\n///////////////////////////////////////////////////////////////////////////////\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level <Router> API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport type Navigator = Pick<History, \"go\" | \"push\" | \"replace\" | \"createHref\">;\n\ninterface NavigationContextObject {\n basename: string;\n navigator: Navigator;\n static: boolean;\n}\n\nconst NavigationContext = React.createContext<NavigationContextObject>(null!);\n\nif (__DEV__) {\n NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n location: Location;\n navigationType: NavigationType;\n}\n\nconst LocationContext = React.createContext<LocationContextObject>(null!);\n\nif (__DEV__) {\n LocationContext.displayName = \"Location\";\n}\n\ninterface RouteContextObject {\n outlet: React.ReactElement | null;\n matches: RouteMatch[];\n}\n\nconst RouteContext = React.createContext<RouteContextObject>({\n outlet: null,\n matches: []\n});\n\nif (__DEV__) {\n RouteContext.displayName = \"Route\";\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// COMPONENTS\n///////////////////////////////////////////////////////////////////////////////\n\nexport interface MemoryRouterProps {\n basename?: string;\n children?: React.ReactNode;\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n}\n\n/**\n * A <Router> that stores all entries in memory.\n *\n * @see https://reactrouter.com/docs/en/v6/api#memoryrouter\n */\nexport function MemoryRouter({\n basename,\n children,\n initialEntries,\n initialIndex\n}: MemoryRouterProps): React.ReactElement {\n let historyRef = React.useRef<MemoryHistory>();\n if (historyRef.current == null) {\n historyRef.current = createMemoryHistory({ initialEntries, initialIndex });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n <Router\n basename={basename}\n children={children}\n location={state.location}\n navigationType={state.action}\n navigator={history}\n />\n );\n}\n\nexport interface NavigateProps {\n to: To;\n replace?: boolean;\n state?: any;\n}\n\n/**\n * Changes the current location.\n *\n * Note: This API is mostly useful in React.Component subclasses that are not\n * able to use hooks. In functional components, we recommend you use the\n * `useNavigate` hook instead.\n *\n * @see https://reactrouter.com/docs/en/v6/api#navigate\n */\nexport function Navigate({ to, replace, state }: NavigateProps): null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of\n // the router loaded. We can help them understand how to avoid that.\n `<Navigate> may be used only in the context of a <Router> component.`\n );\n\n warning(\n !React.useContext(NavigationContext).static,\n `<Navigate> must not be used on the initial render in a <StaticRouter>. ` +\n `This is a no-op, but you should modify your code so the <Navigate> is ` +\n `only ever rendered in response to some user interaction or state change.`\n );\n\n let navigate = useNavigate();\n React.useEffect(() => {\n navigate(to, { replace, state });\n });\n\n return null;\n}\n\nexport interface OutletProps {\n context?: unknown;\n}\n\n/**\n * Renders the child route's element, if there is one.\n *\n * @see https://reactrouter.com/docs/en/v6/api#outlet\n */\nexport function Outlet(props: OutletProps): React.ReactElement | null {\n return useOutlet(props.context);\n}\n\nexport interface RouteProps {\n caseSensitive?: boolean;\n children?: React.ReactNode;\n element?: React.ReactNode | null;\n index?: boolean;\n path?: string;\n}\n\nexport interface PathRouteProps {\n caseSensitive?: boolean;\n children?: React.ReactNode;\n element?: React.ReactNode | null;\n index?: false;\n path: string;\n}\n\nexport interface LayoutRouteProps {\n children?: React.ReactNode;\n element?: React.ReactNode | null;\n}\n\nexport interface IndexRouteProps {\n element?: React.ReactNode | null;\n index: true;\n}\n\n/**\n * Declares an element that should be rendered at a certain URL path.\n *\n * @see https://reactrouter.com/docs/en/v6/api#route\n */\nexport function Route(\n _props: PathRouteProps | LayoutRouteProps | IndexRouteProps\n): React.ReactElement | null {\n invariant(\n false,\n `A <Route> is only ever to be used as the child of <Routes> element, ` +\n `never rendered directly. Please wrap your <Route> in a <Routes>.`\n );\n}\n\nexport interface RouterProps {\n basename?: string;\n children?: React.ReactNode;\n location: Partial<Location> | string;\n navigationType?: NavigationType;\n navigator: Navigator;\n static?: boolean;\n}\n\n/**\n * Provides location context for the rest of the app.\n *\n * Note: You usually won't render a <Router> directly. Instead, you'll render a\n * router that is more specific to your environment such as a <BrowserRouter>\n * in web browsers or a <StaticRouter> for server rendering.\n *\n * @see https://reactrouter.com/docs/en/v6/api#router\n */\nexport function Router({\n basename: basenameProp = \"/\",\n children = null,\n location: locationProp,\n navigationType = NavigationType.Pop,\n navigator,\n static: staticProp = false\n}: RouterProps): React.ReactElement | null {\n invariant(\n !useInRouterContext(),\n `You cannot render a <Router> inside another <Router>.` +\n ` You should never have more than one in your app.`\n );\n\n let basename = normalizePathname(basenameProp);\n let navigationContext = React.useMemo(\n () => ({ basename, navigator, static: staticProp }),\n [basename, navigator, staticProp]\n );\n\n if (typeof locationProp === \"string\") {\n locationProp = parsePath(locationProp);\n }\n\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n state = null,\n key = \"default\"\n } = locationProp;\n\n let location = React.useMemo(() => {\n let trailingPathname = stripBasename(pathname, basename);\n\n if (trailingPathname == null) {\n return null;\n }\n\n return {\n pathname: trailingPathname,\n search,\n hash,\n state,\n key\n };\n }, [basename, pathname, search, hash, state, key]);\n\n warning(\n location != null,\n `<Router basename=\"${basename}\"> is not able to match the URL ` +\n `\"${pathname}${search}${hash}\" because it does not start with the ` +\n `basename, so the <Router> won't render anything.`\n );\n\n if (location == null) {\n return null;\n }\n\n return (\n <NavigationContext.Provider value={navigationContext}>\n <LocationContext.Provider\n children={children}\n value={{ location, navigationType }}\n />\n </NavigationContext.Provider>\n );\n}\n\nexport interface RoutesProps {\n children?: React.ReactNode;\n location?: Partial<Location> | string;\n}\n\n/**\n * A container for a nested tree of <Route> elements that renders the branch\n * that best matches the current location.\n *\n * @see https://reactrouter.com/docs/en/v6/api#routes\n */\nexport function Routes({\n children,\n location\n}: RoutesProps): React.ReactElement | null {\n return useRoutes(createRoutesFromChildren(children), location);\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// HOOKS\n///////////////////////////////////////////////////////////////////////////////\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/docs/en/v6/api#usehref\n */\nexport function useHref(to: To): string {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useHref() may be used only in the context of a <Router> component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { hash, pathname, search } = useResolvedPath(to);\n\n let joinedPathname = pathname;\n if (basename !== \"/\") {\n let toPathname = getToPathname(to);\n let endsWithSlash = toPathname != null && toPathname.endsWith(\"/\");\n joinedPathname =\n pathname === \"/\"\n ? basename + (endsWithSlash ? \"/\" : \"\")\n : joinPaths([basename, pathname]);\n }\n\n return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a <Router>.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useinroutercontext\n */\nexport function useInRouterContext(): boolean {\n return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/docs/en/v6/api#uselocation\n */\nexport function useLocation(): Location {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useLocation() may be used only in the context of a <Router> component.`\n );\n\n return React.useContext(LocationContext).location;\n}\n\ntype ParamParseFailed = { failed: true };\n\ntype ParamParseSegment<Segment extends string> =\n // Check here if there exists a forward slash in the string.\n Segment extends `${infer LeftSegment}/${infer RightSegment}`\n ? // If there is a forward slash, then attempt to parse each side of the\n // forward slash.\n ParamParseSegment<LeftSegment> extends infer LeftResult\n ? ParamParseSegment<RightSegment> extends infer RightResult\n ? LeftResult extends string\n ? // If the left side is successfully parsed as a param, then check if\n // the right side can be successfully parsed as well. If both sides\n // can be parsed, then the result is a union of the two sides\n // (read: \"foo\" | \"bar\").\n RightResult extends string\n ? LeftResult | RightResult\n : LeftResult\n : // If the left side is not successfully parsed as a param, then check\n // if only the right side can be successfully parse as a param. If it\n // can, then the result is just right, else it's a failure.\n RightResult extends string\n ? RightResult\n : ParamParseFailed\n : ParamParseFailed\n : // If the left side didn't parse into a param, then just check the right\n // side.\n ParamParseSegment<RightSegment> extends infer RightResult\n ? RightResult extends string\n ? RightResult\n : ParamParseFailed\n : ParamParseFailed\n : // If there's no forward slash, then check if this segment starts with a\n // colon. If it does, then this is a dynamic segment, so the result is\n // just the remainder of the string. Otherwise, it's a failure.\n Segment extends `:${infer Remaining}`\n ? Remaining\n : ParamParseFailed;\n\n// Attempt to parse the given string segment. If it fails, then just return the\n// plain string type as a default fallback. Otherwise return the union of the\n// parsed string literals that were referenced as dynamic segments in the route.\ntype ParamParseKey<Segment extends string> =\n ParamParseSegment<Segment> extends string\n ? ParamParseSegment<Segment>\n : string;\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/docs/en/v6/api#usenavigationtype\n */\nexport function useNavigationType(): NavigationType {\n return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns true if the URL for the given \"to\" value matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * <NavLink>.\n *\n * @see https://reactrouter.com/docs/en/v6/api#usematch\n */\nexport function useMatch<\n ParamKey extends ParamParseKey<Path>,\n Path extends string\n>(pattern: PathPattern<Path> | Path): PathMatch<ParamKey> | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useMatch() may be used only in the context of a <Router> component.`\n );\n\n let { pathname } = useLocation();\n return React.useMemo(\n () => matchPath<ParamKey, Path>(pattern, pathname),\n [pathname, pattern]\n );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n (to: To, options?: NavigateOptions): void;\n (delta: number): void;\n}\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\n}\n\n/**\n * Returns an imperative method for changing the location. Used by <Link>s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/docs/en/v6/api#usenavigate\n */\nexport function useNavigate(): NavigateFunction {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useNavigate() may be used only in the context of a <Router> component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n matches.map(match => match.pathnameBase)\n );\n\n let activeRef = React.useRef(false);\n React.useEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(\n activeRef.current,\n `You should call navigate() in a React.useEffect(), not when ` +\n `your component is first rendered.`\n );\n\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n\n let path = resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname\n );\n\n if (basename !== \"/\") {\n path.pathname = joinPaths([basename, path.pathname]);\n }\n\n (!!options.replace ? navigator.replace : navigator.push)(\n path,\n options.state\n );\n },\n [basename, navigator, routePathnamesJson, locationPathname]\n );\n\n return navigate;\n}\n\nconst OutletContext = React.createContext<unknown>(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/docs/en/v6/api#useoutletcontext\n */\nexport function useOutletContext<Context = unknown>(): Context {\n return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by <Outlet> to render child routes.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useoutlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n let outlet = React.useContext(RouteContext).outlet;\n if (outlet) {\n return (\n <OutletContext.Provider value={context}>{outlet}</OutletContext.Provider>\n );\n }\n return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useparams\n */\nexport function useParams<\n ParamsOrKey extends string | Record<string, string | undefined> = string\n>(): Readonly<\n [ParamsOrKey] extends [string] ? Params<ParamsOrKey> : Partial<ParamsOrKey>\n> {\n let { matches } = React.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useresolvedpath\n */\nexport function useResolvedPath(to: To): Path {\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n matches.map(match => match.pathnameBase)\n );\n\n return React.useMemo(\n () => resolveTo(to, JSON.parse(routePathnamesJson), locationPathname),\n [to, routePathnamesJson, locationPathname]\n );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an <Outlet> to render their child route's\n * element.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useroutes\n */\nexport function useRoutes(\n routes: RouteObject[],\n locationArg?: Partial<Location> | string\n): React.ReactElement | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useRoutes() may be used only in the context of a <Router> component.`\n );\n\n let { matches: parentMatches } = React.useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n\n if (__DEV__) {\n // You won't get a warning about 2 different <Routes> under a <Route>\n // without a trailing *, but this is a best-effort warning anyway since we\n // cannot even give the warning unless they land at the parent route.\n //\n // Example:\n //\n // <Routes>\n // {/* This route path MUST end with /* because otherwise\n // it will never match /blog/post/123 */}\n // <Route path=\"blog\" element={<Blog />} />\n // <Route path=\"blog/feed\" element={<BlogFeed />} />\n // </Routes>\n //\n // function Blog() {\n // return (\n // <Routes>\n // <Route path=\"post/:id\" element={<Post />} />\n // </Routes>\n // );\n // }\n let parentPath = (parentRoute && parentRoute.path) || \"\";\n warningOnce(\n parentPathname,\n !parentRoute || parentPath.endsWith(\"*\"),\n `You rendered descendant <Routes> (or called \\`useRoutes()\\`) at ` +\n `\"${parentPathname}\" (under <Route path=\"${parentPath}\">) but the ` +\n `parent route path has no trailing \"*\". This means if you navigate ` +\n `deeper, the parent won't match anymore and therefore the child ` +\n `routes will never render.\\n\\n` +\n `Please change the parent <Route path=\"${parentPath}\"> to <Route ` +\n `path=\"${parentPath === \"/\" ? \"*\" : `${parentPath}/*`}\">.`\n );\n }\n\n let locationFromContext = useLocation();\n\n let location;\n if (locationArg) {\n let parsedLocationArg =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n invariant(\n parentPathnameBase === \"/\" ||\n parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n `When overriding the location using \\`<Routes location>\\` or \\`useRoutes(routes, location)\\`, ` +\n `the location pathname must begin with the portion of the URL pathname that was ` +\n `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n );\n\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n\n let pathname = location.pathname || \"/\";\n let remainingPathname =\n parentPathnameBase === \"/\"\n ? pathname\n : pathname.slice(parentPathnameBase.length) || \"/\";\n let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n if (__DEV__) {\n warning(\n parentRoute || matches != null,\n `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n );\n\n warning(\n matches == null ||\n matches[matches.length - 1].route.element !== undefined,\n `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" does not have an element. ` +\n `This means it will render an <Outlet /> with a null value by default resulting in an \"empty\" page.`\n );\n }\n\n return _renderMatches(\n matches &&\n matches.map(match =>\n Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([parentPathnameBase, match.pathname]),\n pathnameBase:\n match.pathnameBase === \"/\"\n ? parentPathnameBase\n : joinPaths([parentPathnameBase, match.pathnameBase])\n })\n ),\n parentMatches\n );\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// UTILS\n///////////////////////////////////////////////////////////////////////////////\n\n/**\n * Creates a route config from a React \"children\" object, which is usually\n * either a `<Route>` element or an array of them. Used internally by\n * `<Routes>` to create a route config from its children.\n *\n * @see https://reactrouter.com/docs/en/v6/api#createroutesfromchildren\n */\nexport function createRoutesFromChildren(\n children: React.ReactNode\n): RouteObject[] {\n let routes: RouteObject[] = [];\n\n React.Children.forEach(children, element => {\n if (!React.isValidElement(element)) {\n // Ignore non-elements. This allows people to more easily inline\n // conditionals in their route config.\n return;\n }\n\n if (element.type === React.Fragment) {\n // Transparently support React.Fragment and its children.\n routes.push.apply(\n routes,\n createRoutesFromChildren(element.props.children)\n );\n return;\n }\n\n invariant(\n element.type === Route,\n `[${\n typeof element.type === \"string\" ? element.type : element.type.name\n }] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`\n );\n\n let route: RouteObject = {\n caseSensitive: element.props.caseSensitive,\n element: element.props.element,\n index: element.props.index,\n path: element.props.path\n };\n\n if (element.props.children) {\n route.children = createRoutesFromChildren(element.props.children);\n }\n\n routes.push(route);\n });\n\n return routes;\n}\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params<Key extends string = string> = {\n readonly [key in Key]: string | undefined;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport interface RouteObject {\n caseSensitive?: boolean;\n children?: RouteObject[];\n element?: React.ReactNode;\n index?: boolean;\n path?: string;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/docs/en/v6/api#generatepath\n */\nexport function generatePath(path: string, params: Params = {}): string {\n return path\n .replace(/:(\\w+)/g, (_, key) => {\n invariant(params[key] != null, `Missing \":${key}\" param`);\n return params[key]!;\n })\n .replace(/\\/*\\*$/, _ =>\n params[\"*\"] == null ? \"\" : params[\"*\"].replace(/^\\/*/, \"/\")\n );\n}\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface RouteMatch<ParamKey extends string = string> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params<ParamKey>;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The route object that was used to match.\n */\n route: RouteObject;\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/docs/en/v6/api#matchroutes\n */\nexport function matchRoutes(\n routes: RouteObject[],\n locationArg: Partial<Location> | string,\n basename = \"/\"\n): RouteMatch[] | null {\n let location =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n let pathname = stripBasename(location.pathname || \"/\", basename);\n\n if (pathname == null) {\n return null;\n }\n\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n matches = matchRouteBranch(branches[i], pathname);\n }\n\n return matches;\n}\n\ninterface RouteMeta {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n route: RouteObject;\n}\n\ninterface RouteBranch {\n path: string;\n score: number;\n routesMeta: RouteMeta[];\n}\n\nfunction flattenRoutes(\n routes: RouteObject[],\n branches: RouteBranch[] = [],\n parentsMeta: RouteMeta[] = [],\n parentPath = \"\"\n): RouteBranch[] {\n routes.forEach((route, index) => {\n let meta: RouteMeta = {\n relativePath: route.path || \"\",\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route\n };\n\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path ` +\n `\"${parentPath}\" is not valid. An absolute child route path ` +\n `must start with the combined path of all its parent routes.`\n );\n\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n\n // Add the children before adding this route to the array so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\n\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n\n branches.push({ path, score: computeScore(path, route.index), routesMeta });\n });\n\n return branches;\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n branches.sort((a, b) =>\n a.score !== b.score\n ? b.score - a.score // Higher score first\n : compareIndexes(\n a.routesMeta.map(meta => meta.childrenIndex),\n b.routesMeta.map(meta => meta.childrenIndex)\n )\n );\n}\n\nconst paramRe = /^:\\w+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n\n if (index) {\n initialScore += indexRouteValue;\n }\n\n return segments\n .filter(s => !isSplat(s))\n .reduce(\n (score, segment) =>\n score +\n (paramRe.test(segment)\n ? dynamicSegmentValue\n : segment === \"\"\n ? emptySegmentValue\n : staticSegmentValue),\n initialScore\n );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n let siblings =\n a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n return siblings\n ? // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\n\nfunction matchRouteBranch<ParamKey extends string = string>(\n branch: RouteBranch,\n pathname: string\n): RouteMatch<ParamKey>[] | null {\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: RouteMatch[] = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname =\n matchedPathname === \"/\"\n ? pathname\n : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath(\n { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n remainingPathname\n );\n\n if (!match) return null;\n\n Object.assign(matchedParams, match.params);\n\n let route = meta.route;\n\n matches.push({\n params: matchedParams,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: joinPaths([matchedPathname, match.pathnameBase]),\n route\n });\n\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n\n return matches;\n}\n\n/**\n * Renders the result of `matchRoutes()` into a React element.\n */\nexport function renderMatches(\n matches: RouteMatch[] | null\n): React.ReactElement | null {\n return _renderMatches(matches);\n}\n\nfunction _renderMatches(\n matches: RouteMatch[] | null,\n parentMatches: RouteMatch[] = []\n): React.ReactElement | null {\n if (matches == null) return null;\n\n return matches.reduceRight((outlet, match, index) => {\n return (\n <RouteContext.Provider\n children={\n match.route.element !== undefined ? match.route.element : <Outlet />\n }\n value={{\n outlet,\n matches: parentMatches.concat(matches.slice(0, index + 1))\n }}\n />\n );\n }, null as React.ReactElement | null);\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern<Path extends string = string> {\n /**\n * A string to match against a URL pathname. May contain `:id`-style segments\n * to indicate placeholders for dynamic parameters. May also end with `/*` to\n * indicate matching the rest of the URL pathname.\n */\n path: Path;\n /**\n * Should be `true` if the static portions of the `path` should be matched in\n * the same case.\n */\n caseSensitive?: boolean;\n /**\n * Should be `true` if this pattern should match the entire URL pathname.\n */\n end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch<ParamKey extends string = string> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params<ParamKey>;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The pattern that was used to match.\n */\n pattern: PathPattern;\n}\n\ntype Mutable<T> = {\n -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/docs/en/v6/api#matchpath\n */\nexport function matchPath<\n ParamKey extends ParamParseKey<Path>,\n Path extends string\n>(\n pattern: PathPattern<Path> | Path,\n pathname: string\n): PathMatch<ParamKey> | null {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n\n let [matcher, paramNames] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\n\n let match = pathname.match(matcher);\n if (!match) return null;\n\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params: Params = paramNames.reduce<Mutable<Params>>(\n (memo, paramName, index) => {\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname\n .slice(0, matchedPathname.length - splatValue.length)\n .replace(/(.)\\/+$/, \"$1\");\n }\n\n memo[paramName] = safelyDecodeURIComponent(\n captureGroups[index] || \"\",\n paramName\n );\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern\n };\n}\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, string[]] {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n\n let paramNames: string[] = [];\n let regexpSource =\n \"^\" +\n path\n .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^$?{}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(/:(\\w+)/g, (_: string, paramName: string) => {\n paramNames.push(paramName);\n return \"([^\\\\/]+)\";\n });\n\n if (path.endsWith(\"*\")) {\n paramNames.push(\"*\");\n regexpSource +=\n path === \"*\" || path === \"/*\"\n ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else {\n regexpSource += end\n ? \"\\\\/*$\" // When matching to the end, ignore trailing slashes\n : // Otherwise, match a word boundary or a proceeding /. The word boundary restricts\n // parent routes to matching only their own words and nothing more, e.g. parent\n // route \"/home\" should not match \"/home2\".\n \"(?:\\\\b|\\\\/|$)\";\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, paramNames];\n}\n\nfunction safelyDecodeURIComponent(value: string, paramName: string) {\n try {\n return decodeURIComponent(value);\n } catch (error) {\n warning(\n false,\n `The value for the URL param \"${paramName}\" will not be decoded because` +\n ` the string \"${value}\" is a malformed URL segment. This is probably` +\n ` due to a bad percent encoding (${error}).`\n );\n\n return value;\n }\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/docs/en/v6/api#resolvepath\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\"\n } = typeof to === \"string\" ? parsePath(to) : to;\n\n let pathname = toPathname\n ? toPathname.startsWith(\"/\")\n ? toPathname\n : resolvePathname(toPathname, fromPathname)\n : fromPathname;\n\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash)\n };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n\n relativeSegments.forEach(segment => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nfunction resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string\n): Path {\n let to = typeof toArg === \"string\" ? parsePath(toArg) : toArg;\n let toPathname = toArg === \"\" || to.pathname === \"\" ? \"/\" : to.pathname;\n\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `<Link to>` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n let from: string;\n if (toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n if (toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n // Each leading .. segment means \"go up one route\" instead of \"go up one\n // URL segment\". This is a key difference from how <a href> works and a\n // major reason we call this a \"to\" value instead of a \"href\".\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n // If there are more \"..\" segments than parent routes, resolve relative to\n // the root / URL.\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n\n let path = resolvePath(to, from);\n\n // Ensure the pathname has a trailing slash if the original to value had one.\n if (\n toPathname &&\n toPathname !== \"/\" &&\n toPathname.endsWith(\"/\") &&\n !path.pathname.endsWith(\"/\")\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\n\nfunction getToPathname(to: To): string | undefined {\n // Empty strings should be treated the same as / paths\n return to === \"\" || (to as Path).pathname === \"\"\n ? \"/\"\n : typeof to === \"string\"\n ? parsePath(to).pathname\n : to.pathname;\n}\n\nfunction stripBasename(pathname: string, basename: string): string | null {\n if (basename === \"/\") return pathname;\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n\n let nextChar = pathname.charAt(basename.length);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(basename.length) || \"/\";\n}\n\nconst joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\nconst normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\nconst normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\nconst normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n\n///////////////////////////////////////////////////////////////////////////////\n// DANGER! PLEASE READ ME!\n// We provide these exports as an escape hatch in the event that you need any\n// routing data that we don't provide an explicit API for. With that said, we\n// want to cover your use case if we can, so if you feel the need to use these\n// we want to hear from you. Let us know what you're building and we'll do our\n// best to make sure we can support you!\n//\n// We consider these exports an implementation detail and do not guarantee\n// against any breaking changes, regardless of the semver release. Use with\n// extreme caution and only if you understand the consequences. Godspeed.\n///////////////////////////////////////////////////////////////////////////////\n\n/** @internal */\nexport {\n NavigationContext as UNSAFE_NavigationContext,\n LocationContext as UNSAFE_LocationContext,\n RouteContext as UNSAFE_RouteContext\n};\n","import * as React from \"react\";\nimport type { BrowserHistory, HashHistory, History } from \"history\";\nimport { createBrowserHistory, createHashHistory, createPath } from \"history\";\nimport {\n MemoryRouter,\n Navigate,\n Outlet,\n Route,\n Router,\n Routes,\n createRoutesFromChildren,\n generatePath,\n matchRoutes,\n matchPath,\n resolvePath,\n renderMatches,\n useHref,\n useInRouterContext,\n useLocation,\n useMatch,\n useNavigate,\n useNavigationType,\n useOutlet,\n useParams,\n useResolvedPath,\n useRoutes,\n useOutletContext\n} from \"react-router\";\nimport type { To } from \"react-router\";\n\nfunction warning(cond: boolean, message: string): void {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging React Router!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// RE-EXPORTS\n////////////////////////////////////////////////////////////////////////////////\n\n// Note: Keep in sync with react-router exports!\nexport {\n MemoryRouter,\n Navigate,\n Outlet,\n Route,\n Router,\n Routes,\n createRoutesFromChildren,\n generatePath,\n matchRoutes,\n matchPath,\n renderMatches,\n resolvePath,\n useHref,\n useInRouterContext,\n useLocation,\n useMatch,\n useNavigate,\n useNavigationType,\n useOutlet,\n useParams,\n useResolvedPath,\n useRoutes,\n useOutletContext\n};\n\nexport type {\n Location,\n Path,\n To,\n NavigationType,\n MemoryRouterProps,\n NavigateFunction,\n NavigateOptions,\n NavigateProps,\n Navigator,\n OutletProps,\n Params,\n PathMatch,\n RouteMatch,\n RouteObject,\n RouteProps,\n PathRouteProps,\n LayoutRouteProps,\n IndexRouteProps,\n RouterProps,\n RoutesProps\n} from \"react-router\";\n\n///////////////////////////////////////////////////////////////////////////////\n// DANGER! PLEASE READ ME!\n// We provide these exports as an escape hatch in the event that you need any\n// routing data that we don't provide an explicit API for. With that said, we\n// want to cover your use case if we can, so if you feel the need to use these\n// we want to hear from you. Let us know what you're building and we'll do our\n// best to make sure we can support you!\n//\n// We consider these exports an implementation detail and do not guarantee\n// against any breaking changes, regardless of the semver release. Use with\n// extreme caution and only if you understand the consequences. Godspeed.\n///////////////////////////////////////////////////////////////////////////////\n\n/** @internal */\nexport {\n UNSAFE_NavigationContext,\n UNSAFE_LocationContext,\n UNSAFE_RouteContext\n} from \"react-router\";\n\n////////////////////////////////////////////////////////////////////////////////\n// COMPONENTS\n////////////////////////////////////////////////////////////////////////////////\n\nexport interface BrowserRouterProps {\n basename?: string;\n children?: React.ReactNode;\n window?: Window;\n}\n\n/**\n * A `<Router>` for use in web browsers. Provides the cleanest URLs.\n */\nexport function BrowserRouter({\n basename,\n children,\n window\n}: BrowserRouterProps) {\n let historyRef = React.useRef<BrowserHistory>();\n if (historyRef.current == null) {\n historyRef.current = createBrowserHistory({ window });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n <Router\n basename={basename}\n children={children}\n location={state.location}\n navigationType={state.action}\n navigator={history}\n />\n );\n}\n\nexport interface HashRouterProps {\n basename?: string;\n children?: React.ReactNode;\n window?: Window;\n}\n\n/**\n * A `<Router>` for use in web browsers. Stores the location in the hash\n * portion of the URL so it is not sent to the server.\n */\nexport function HashRouter({ basename, children, window }: HashRouterProps) {\n let historyRef = React.useRef<HashHistory>();\n if (historyRef.current == null) {\n historyRef.current = createHashHistory({ window });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n <Router\n basename={basename}\n children={children}\n location={state.location}\n navigationType={state.action}\n navigator={history}\n />\n );\n}\n\nexport interface HistoryRouterProps {\n basename?: string;\n children?: React.ReactNode;\n history: History;\n}\n\n/**\n * A `<Router>` that accepts a pre-instantiated history object. It's important\n * to note that using your own history object is highly discouraged and may add\n * two versions of the history library to your bundles unless you use the same\n * version of the history library that React Router uses internally.\n */\nfunction HistoryRouter({ basename, children, history }: HistoryRouterProps) {\n const [state, setState] = React.useState({\n action: history.action,\n location: history.location\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n <Router\n basename={basename}\n children={children}\n location={state.location}\n navigationType={state.action}\n navigator={history}\n />\n );\n}\n\nif (__DEV__) {\n HistoryRouter.displayName = \"unstable_HistoryRouter\";\n}\n\nexport { HistoryRouter as unstable_HistoryRouter };\n\nfunction isModifiedEvent(event: React.MouseEvent) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nexport interface LinkProps\n extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, \"href\"> {\n reloadDocument?: boolean;\n replace?: boolean;\n state?: any;\n to: To;\n}\n\n/**\n * The public API for rendering a history-aware <a>.\n */\nexport const Link = React.forwardRef<HTMLAnchorElement, LinkProps>(\n function LinkWithRef(\n { onClick, reloadDocument, replace = false, state, target, to, ...rest },\n ref\n ) {\n let href = useHref(to);\n let internalOnClick = useLinkClickHandler(to, { replace, state, target });\n function handleClick(\n event: React.MouseEvent<HTMLAnchorElement, MouseEvent>\n ) {\n if (onClick) onClick(event);\n if (!event.defaultPrevented && !reloadDocument) {\n internalOnClick(event);\n }\n }\n\n return (\n // eslint-disable-next-line jsx-a11y/anchor-has-content\n <a\n {...rest}\n href={href}\n onClick={handleClick}\n ref={ref}\n target={target}\n />\n );\n }\n);\n\nif (__DEV__) {\n Link.displayName = \"Link\";\n}\n\nexport interface NavLinkProps\n extends Omit<LinkProps, \"className\" | \"style\" | \"children\"> {\n children:\n | React.ReactNode\n | ((props: { isActive: boolean }) => React.ReactNode);\n caseSensitive?: boolean;\n className?: string | ((props: { isActive: boolean }) => string);\n end?: boolean;\n style?:\n | React.CSSProperties\n | ((props: { isActive: boolean }) => React.CSSProperties);\n}\n\n/**\n * A <Link> wrapper that knows if it's \"active\" or not.\n */\nexport const NavLink = React.forwardRef<HTMLAnchorElement, NavLinkProps>(\n function NavLinkWithRef(\n {\n \"aria-current\": ariaCurrentProp = \"page\",\n caseSensitive = false,\n className: classNameProp = \"\",\n end = false,\n style: styleProp,\n to,\n children,\n ...rest\n },\n ref\n ) {\n let location = useLocation();\n let path = useResolvedPath(to);\n\n let locationPathname = location.pathname;\n let toPathname = path.pathname;\n if (!caseSensitive) {\n locationPathname = locationPathname.toLowerCase();\n toPathname = toPathname.toLowerCase();\n }\n\n let isActive =\n locationPathname === toPathname ||\n (!end &&\n locationPathname.startsWith(toPathname) &&\n locationPathname.charAt(toPathname.length) === \"/\");\n\n let ariaCurrent = isActive ? ariaCurrentProp : undefined;\n\n let className: string;\n if (typeof classNameProp === \"function\") {\n className = classNameProp({ isActive });\n } else {\n // If the className prop is not a function, we use a default `active`\n // class for <NavLink />s that are active. In v5 `active` was the default\n // value for `activeClassName`, but we are removing that API and can still\n // use the old default behavior for a cleaner upgrade path and keep the\n // simple styling rules working as they currently do.\n className = [classNameProp, isActive ? \"active\" : null]\n .filter(Boolean)\n .join(\" \");\n }\n\n let style =\n typeof styleProp === \"function\" ? styleProp({ isActive }) : styleProp;\n\n return (\n <Link\n {...rest}\n aria-current={ariaCurrent}\n className={className}\n ref={ref}\n style={style}\n to={to}\n >\n {typeof children === \"function\" ? children({ isActive }) : children}\n </Link>\n );\n }\n);\n\nif (__DEV__) {\n NavLink.displayName = \"NavLink\";\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// HOOKS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Handles the click behavior for router `<Link>` components. This is useful if\n * you need to create custom `<Link>` components with the same click behavior we\n * use in our exported `<Link>`.\n */\nexport function useLinkClickHandler<E extends Element = HTMLAnchorElement>(\n to: To,\n {\n target,\n replace: replaceProp,\n state\n }: {\n target?: React.HTMLAttributeAnchorTarget;\n replace?: boolean;\n state?: any;\n } = {}\n): (event: React.MouseEvent<E, MouseEvent>) => void {\n let navigate = useNavigate();\n let location = useLocation();\n let path = useResolvedPath(to);\n\n return React.useCallback(\n (event: React.MouseEvent<E, MouseEvent>) => {\n if (\n event.button === 0 && // Ignore everything but left clicks\n (!target || target === \"_self\") && // Let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // Ignore clicks with modifier keys\n ) {\n event.preventDefault();\n\n // If the URL hasn't changed, a regular <a> will do a replace instead of\n // a push, so do the same here.\n let replace =\n !!replaceProp || createPath(location) === createPath(path);\n\n navigate(to, { replace, state });\n }\n },\n [location, navigate, path, replaceProp, state, target, to]\n );\n}\n\n/**\n * A convenient wrapper for reading and writing search parameters via the\n * URLSearchParams interface.\n */\nexport function useSearchParams(defaultInit?: URLSearchParamsInit) {\n warning(\n typeof URLSearchParams !== \"undefined\",\n `You cannot use the \\`useSearchParams\\` hook in a browser that does not ` +\n `support the URLSearchParams API. If you need to support Internet ` +\n `Explorer 11, we recommend you load a polyfill such as ` +\n `https://github.com/ungap/url-search-params\\n\\n` +\n `If you're unsure how to load polyfills, we recommend you check out ` +\n `https://polyfill.io/v3/ which provides some recommendations about how ` +\n `to load polyfills only for users that need them, instead of for every ` +\n `user.`\n );\n\n let defaultSearchParamsRef = React.useRef(createSearchParams(defaultInit));\n\n let location = useLocation();\n let searchParams = React.useMemo(() => {\n let searchParams = createSearchParams(location.search);\n\n for (let key of defaultSearchParamsRef.current.keys()) {\n if (!searchParams.has(key)) {\n defaultSearchParamsRef.current.getAll(key).forEach(value => {\n searchParams.append(key, value);\n });\n }\n }\n\n return searchParams;\n }, [location.search]);\n\n let navigate = useNavigate();\n let setSearchParams = React.useCallback(\n (\n nextInit: URLSearchParamsInit,\n navigateOptions?: { replace?: boolean; state?: any }\n ) => {\n navigate(\"?\" + createSearchParams(nextInit), navigateOptions);\n },\n [navigate]\n );\n\n return [searchParams, setSearchParams] as const;\n}\n\nexport type ParamKeyValuePair = [string, string];\n\nexport type URLSearchParamsInit =\n | string\n | ParamKeyValuePair[]\n | Record<string, string | string[]>\n | URLSearchParams;\n\n/**\n * Creates a URLSearchParams object using the given initializer.\n *\n * This is identical to `new URLSearchParams(init)` except it also\n * supports arrays as values in the object form of the initializer\n * instead of just strings. This is convenient when you need multiple\n * values for a given key, but don't want to use an array initializer.\n *\n * For example, instead of:\n *\n * let searchParams = new URLSearchParams([\n * ['sort', 'name'],\n * ['sort', 'price']\n * ]);\n *\n * you can do:\n *\n * let searchParams = createSearchParams({\n * sort: ['name', 'price']\n * });\n */\nexport function createSearchParams(\n init: URLSearchParamsInit = \"\"\n): URLSearchParams {\n return new URLSearchParams(\n typeof init === \"string\" ||\n Array.isArray(init) ||\n init instanceof URLSearchParams\n ? init\n : Object.keys(init).reduce((memo, key) => {\n let value = init[key];\n return memo.concat(\n Array.isArray(value) ? value.map(v => [key, v]) : [[key, value]]\n );\n }, [] as ParamKeyValuePair[])\n );\n}\n","import _typeof from \"./typeof.js\";\nexport default function _regeneratorRuntime() {\n \"use strict\";\n /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n\n _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n };\n\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return generator._invoke = function (innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }(innerFn, self, context), generator;\n }\n\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n\n exports.wrap = wrap;\n var ContinueSentinel = {};\n\n function Generator() {}\n\n function GeneratorFunction() {}\n\n function GeneratorFunctionPrototype() {}\n\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n\n reject(record.arg);\n }\n\n var previousPromise;\n\n this._invoke = function (method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n };\n }\n\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n\n if (undefined === method) {\n if (context.delegate = null, \"throw\" === context.method) {\n if (delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method)) return ContinueSentinel;\n context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) {\n if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n }\n\n return next.value = undefined, next.done = !0, next;\n };\n\n return next.next = next;\n }\n }\n\n return {\n next: doneResult\n };\n }\n\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, define(Gp, \"constructor\", GeneratorFunctionPrototype), define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (object) {\n var keys = [];\n\n for (var key in object) {\n keys.push(key);\n }\n\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) {\n \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n }\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n\n return thrown;\n }\n }\n\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","import { PortalContactModel } from \"./PortalContactModel\";\r\nimport { PortalOwnerModel } from \"./PortalOwnerModel\";\r\n\r\nexport enum PortalStatus {\r\n New = 755980000,\r\n Profile = 755980001,\r\n Documentation = 755980002,\r\n DocumentReview = 755980003,\r\n LenderAdvice = 755980004,\r\n AIPClarifications = 755980005,\r\n AIPSubmitted = 755980009,\r\n AIPApproved = 755980010,\r\n SaleAgreed = 755980006,\r\n PreLoan = 755980007,\r\n Loan = 755980008\r\n}\r\n\r\nexport enum MortgageSubType {\r\n FirstTimeBuyer = 755980002,\r\n Switching = 755980005,\r\n InvestmentProperty = 755980006,\r\n HolidayHome = 755980007,\r\n EquityReleaseTopup = 755980001,\r\n EquityReleaseWithWorks = 755980000,\r\n EquityReleaseNoWorks = 755980004,\r\n SecondTimeBuyer = 755980003,\r\n}\r\n\r\nexport enum MortgageType\r\n{\r\n\tPurchasingaNewHome = 755980000,\r\n\tRemortgagingExistingLoan = 755980001,\r\n}\r\n\r\nexport enum PropertyType {\r\n NewBuild = 755980000,\r\n SelfBuild = 755980001,\r\n SecondHand = 755980002\r\n}\r\n\r\nexport enum SelfOwnedSite\r\n{\r\n Yes = 755980000,\r\n No = 755980001,\r\n}\r\n\r\nexport enum MortgageStatus {\r\n NewLead = 755980000,\r\n ClientContacted = 755980001,\r\n PortalSetup = 755980014,\r\n PortalLogin = 755980017,\r\n InformationGathering = 755980002,\r\n AIPSubmitted = 755980003,\r\n PreAIPClarification = 755980011,\r\n AIPApproved = 755980004,\r\n LoanOfferRequested = 755980005,\r\n PreLoanOfferClarification = 755980012,\r\n LoanOfferReceived = 755980006,\r\n Completions = 755980007,\r\n Closed = 755980008,\r\n NotProceeding = 755980009,\r\n OnHold = 755980010,\r\n BacklogLead = 755980013,\r\n}\r\n\r\nexport enum YesNoBlank\r\n{\r\n No = 755980001,\r\n Yes = 755980000,\r\n} \r\n\r\nexport enum ArrangeSolicitor\r\n{\r\n Requested = 755980000,\r\n Complete = 755980001,\r\n}\r\n\r\nexport interface PortalMortgageModel {\r\n mortgageId: string;\r\n status: number;\r\n type: number | null;\r\n subType: number | null;\r\n subTypeFormatted: string | null;\r\n saleAgreed: boolean;\r\n applicationType: string;\r\n primaryApplicant: PortalContactModel;\r\n secondaryApplicant: PortalContactModel;\r\n solicitor: PortalContactModel;\r\n owner?: PortalOwnerModel;\r\n propertyValue: number;\r\n propertyValueFormatted: string;\r\n purchasePrice: number;\r\n purchasePriceFormatted: string;\r\n grossVariableIncome: number | null;\r\n grossVariableIncomeFormatted: string;\r\n grossBasicIncome: number | null;\r\n grossBasicIncomeFormatted: string;\r\n mortgageAmountProposed: number | null;\r\n mortgageAmountProposedFormatted: string;\r\n preferredProduct: string;\r\n preferredLenders: string[];\r\n preferredLender: string;\r\n berRating: number | null;\r\n berRatingFormatted: string | null;\r\n portalStatus: number | null;\r\n percentageOfCompletion: number | null;\r\n chosenLender: string;\r\n chosenLenderFullName: string;\r\n chosenLenderLogo: string | null;\r\n chosenLenderProduct: string;\r\n loanOfferExpiryDate: string | null;\r\n consentToBeReady: boolean | null;\r\n lenderSpecialConditions: string | null;\r\n mortgageDetailsPercentage: number;\r\n propertyDetailsPercentage: number;\r\n solicitorDetailsPercentage: number;\r\n documentsPercentComplete: number;\r\n portalFirstLogin?: Date;\r\n noOfApplications: number;\r\n noOfSubmittedApplications: number;\r\n topUpAmount: number | null;\r\n mortgageTerm: number | null;\r\n termAdditionalMonths: number | null;\r\n fixedTermYearsProposed: number | null;\r\n propertyAddress: string | null;\r\n offeredInterestRate: number | null;\r\n confirmedChosenLender: boolean | null;\r\n loanOfferRequested: string | null;\r\n loanOfferReceived: string | null;\r\n estimatedLoanOfferIssueDate: string | null;\r\n confirmedTitleDeeds: number | null;\r\n estimatedClosingDate?: Date | null;\r\n clientAdvisedClosingDate?: Date | null;\r\n metWithSolicitor: boolean | null,\r\n closedDate: Date | null;\r\n fundsReleaseDate: Date | null;\r\n arrangeSolicitor: number | null;\r\n isLoanOfferAvailable: boolean | null;\r\n isValuationAvailable: boolean | null;\r\n isEsisAvailable: boolean | null;\r\n isEsisDownloaded: boolean | null;\r\n firstRepaymentDate: Date | null;\r\n hasInsuranceQuote: boolean | null;\r\n approvalType: number | null;\r\n useLegacyUploader: boolean | null;\r\n useLetsBeam: boolean | null;\r\n deferredPayment: boolean | null;\r\n isCostOfCreditAvailable: boolean;\r\n isCostOfCreditDownloaded: boolean | null;\r\n}","export class ProfileItemModel {\r\n id: number;\r\n title: string;\r\n description: string;\r\n duration: any;\r\n durationClass: string;\r\n percent: number;\r\n progress: string;\r\n progressClass: string;\r\n url: string|null;\r\n initials: string;\r\n initialsClass: string;\r\n icon: any;\r\n\r\n constructor(id: number, title: string, description: string, duration: any, durationClass:string, percent:number, progress:string, progressClass:string, url: string|null, initials: any, initialsClass:string, icon:any) {\r\n this.id = id;\r\n this.title = title;\r\n this.description = description;\r\n this.duration = duration;\r\n this.durationClass = durationClass;\r\n this.percent = percent ?? null;\r\n this.progress = progress;\r\n this.progressClass = progressClass;\r\n this.url = url;\r\n this.initials = initials;\r\n this.initialsClass = initialsClass;\r\n this.icon = icon;\r\n }\r\n}","import PropTypes from 'prop-types';\nimport { DEFAULT_BREAKPOINTS, DEFAULT_MIN_BREAKPOINT } from './ThemeProvider';\nexport function responsivePropType(propType) {\n return PropTypes.oneOfType([propType, PropTypes.shape({\n xs: propType,\n sm: propType,\n md: propType,\n lg: propType,\n xl: propType,\n xxl: propType\n })]);\n}\nexport default function createUtilityClassName(utilityValues, breakpoints = DEFAULT_BREAKPOINTS, minBreakpoint = DEFAULT_MIN_BREAKPOINT) {\n const classes = [];\n Object.entries(utilityValues).forEach(([utilName, utilValue]) => {\n if (utilValue != null) {\n if (typeof utilValue === 'object') {\n breakpoints.forEach(brkPoint => {\n const bpValue = utilValue[brkPoint];\n\n if (bpValue != null) {\n const infix = brkPoint !== minBreakpoint ? `-${brkPoint}` : '';\n classes.push(`${utilName}${infix}-${bpValue}`);\n }\n });\n } else {\n classes.push(`${utilName}-${utilValue}`);\n }\n }\n });\n return classes;\n}","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix, useBootstrapBreakpoints, useBootstrapMinBreakpoint } from './ThemeProvider';\nimport createUtilityClassName, { responsivePropType } from './createUtilityClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Stack = /*#__PURE__*/React.forwardRef(({\n as: Component = 'div',\n bsPrefix,\n className,\n direction,\n gap,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, direction === 'horizontal' ? 'hstack' : 'vstack');\n const breakpoints = useBootstrapBreakpoints();\n const minBreakpoint = useBootstrapMinBreakpoint();\n return /*#__PURE__*/_jsx(Component, { ...props,\n ref: ref,\n className: classNames(className, bsPrefix, ...createUtilityClassName({\n gap,\n breakpoints,\n minBreakpoint\n }))\n });\n});\nStack.displayName = 'Stack';\nexport default Stack;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix, useBootstrapBreakpoints, useBootstrapMinBreakpoint } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Row = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n ...props\n}, ref) => {\n const decoratedBsPrefix = useBootstrapPrefix(bsPrefix, 'row');\n const breakpoints = useBootstrapBreakpoints();\n const minBreakpoint = useBootstrapMinBreakpoint();\n const sizePrefix = `${decoratedBsPrefix}-cols`;\n const classes = [];\n breakpoints.forEach(brkPoint => {\n const propValue = props[brkPoint];\n delete props[brkPoint];\n let cols;\n\n if (propValue != null && typeof propValue === 'object') {\n ({\n cols\n } = propValue);\n } else {\n cols = propValue;\n }\n\n const infix = brkPoint !== minBreakpoint ? `-${brkPoint}` : '';\n if (cols != null) classes.push(`${sizePrefix}${infix}-${cols}`);\n });\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, decoratedBsPrefix, ...classes)\n });\n});\nRow.displayName = 'Row';\nexport default Row;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix, useBootstrapBreakpoints, useBootstrapMinBreakpoint } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function useCol({\n as,\n bsPrefix,\n className,\n ...props\n}) {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'col');\n const breakpoints = useBootstrapBreakpoints();\n const minBreakpoint = useBootstrapMinBreakpoint();\n const spans = [];\n const classes = [];\n breakpoints.forEach(brkPoint => {\n const propValue = props[brkPoint];\n delete props[brkPoint];\n let span;\n let offset;\n let order;\n\n if (typeof propValue === 'object' && propValue != null) {\n ({\n span,\n offset,\n order\n } = propValue);\n } else {\n span = propValue;\n }\n\n const infix = brkPoint !== minBreakpoint ? `-${brkPoint}` : '';\n if (span) spans.push(span === true ? `${bsPrefix}${infix}` : `${bsPrefix}${infix}-${span}`);\n if (order != null) classes.push(`order${infix}-${order}`);\n if (offset != null) classes.push(`offset${infix}-${offset}`);\n });\n return [{ ...props,\n className: classNames(className, ...spans, ...classes)\n }, {\n as,\n bsPrefix,\n spans\n }];\n}\nconst Col = /*#__PURE__*/React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n(props, ref) => {\n const [{\n className,\n ...colProps\n }, {\n as: Component = 'div',\n bsPrefix,\n spans\n }] = useCol(props);\n return /*#__PURE__*/_jsx(Component, { ...colProps,\n ref: ref,\n className: classNames(className, !spans.length && bsPrefix)\n });\n});\nCol.displayName = 'Col';\nexport default Col;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultProps = {\n fluid: false\n};\nconst Container = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n fluid,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n className,\n ...props\n}, ref) => {\n const prefix = useBootstrapPrefix(bsPrefix, 'container');\n const suffix = typeof fluid === 'string' ? `-${fluid}` : '-fluid';\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, fluid ? `${prefix}${suffix}` : prefix)\n });\n});\nContainer.displayName = 'Container';\nContainer.defaultProps = defaultProps;\nexport default Container;","export interface PortalMortgageDocumentModel {\r\n mortgageDocumentId: string;\r\n name: string;\r\n portalName: string;\r\n description: string;\r\n category: string | null;\r\n categoryId: string | null;\r\n document: string | null;\r\n institution: string | null;\r\n applicableTo: number | null;\r\n statusReason: number | null;\r\n mortgageId: string | null;\r\n documentId: string | null;\r\n institutionId: string | null;\r\n currentBalance: number | 0;\r\n order: number | null;\r\n helpText: string | null;\r\n documentType: number | null;\r\n limit?: number | 0;\r\n termLeft?: string;\r\n termPeriod: number | null;\r\n categoryUniqueCode: string;\r\n accountNumber?: string | null;\r\n planOnClearingTheBalance?: number | null;\r\n recurringMonthlyValue: number | null;\r\n recurringYearlyValue: number | null;\r\n sellBeforePurchasing: boolean | null;\r\n primaryApplicantMetFaceToFace: boolean | null;\r\n secondaryApplicantMetFaceToFace: boolean | null;\r\n hasAny: number | null;\r\n loanType: number | null;\r\n mortgageBalanceOutstanding: number | null;\r\n otherInstitutionName: string;\r\n usedForDeposit: boolean | null;\r\n isJoint: boolean | null;\r\n categoryOrder: number | null;\r\n termRemaining: number | null;\r\n overdraftLimit: number | null;\r\n comments: string | null;\r\n houseHunterDocument: boolean | null;\r\n displayToCustomer: boolean | null;\r\n transactionSource: number | null;\r\n //allowDocUpload: boolean | null;\r\n}\r\n\r\nexport enum HasAny\r\n{\r\n No = 755980001,\r\n Yes = 755980000\r\n}\r\n\r\nexport enum PortalDocumentType {\r\n Document = 755980000,\r\n Category = 755980001,\r\n IDPal = 755980002,\r\n OpenBanking = 755980003\r\n}\r\n\r\nexport enum ApplicableTo {\r\n Primary = 755980000,\r\n Secondary = 755980001,\r\n Shared = 755980002\r\n}\r\n\r\nexport enum MortgageDocumentStatusCode {\r\n Active = 1,\r\n Inactive = 2,\r\n Uploaded = 755980001,\r\n NeedsAction = 755980002,\r\n Approved = 755980003,\r\n InProgress = 755980004\r\n}\r\n\r\nexport enum LoanType\r\n{\r\n Car = 755980000,\r\n Personal = 755980001,\r\n HomeImprovement = 755980002,\r\n Mortgage = 755980005,\r\n Other = 755980004\r\n}\r\n\r\nexport enum TransactionSource\r\n{\r\n OpenBanking = 680200000,\r\n UploadedStatements = 680200001\r\n}","import { createContext } from \"react\";\r\nimport { PortalHelperTextModel } from \"../models/PortalHelperTextModel\";\r\nimport { FormLookupItem } from \"../models/PortalMetadata\";\r\nimport { PortalMortgageDocumentModel } from \"../models/PortalMortgageDocumentModel\";\r\nimport { PortalMortgageModel } from \"../models/PortalMortgageModel\";\r\nimport { PortalUserModel } from \"../models/PortalUserModel\";\r\nimport { PortalSettingsModel } from \"../models/PortalSettingsModel\";\r\nimport { IFileItem } from \"./DocumentManager\";\r\n\r\nexport interface CalculatorState {\r\n homeValue?: number;\r\n mortgageAmount?: number;\r\n mortgageTerm?: number;\r\n berRating?: string;\r\n cashbackOnly?: boolean;\r\n}\r\n\r\ninterface UserContextState {\r\n contact: PortalUserModel | null;\r\n mortgage: PortalMortgageModel | null;\r\n tooltips: PortalHelperTextModel[] | null;\r\n reloadMortgage(): void;\r\n isDirty: boolean;\r\n setIsDirty(dirty: boolean): void;\r\n impersonateContact(contactId: string): void;\r\n impersonatedId: string | null;\r\n refreshMenuState(): void;\r\n mortgageDocumentList: PortalMortgageDocumentModel[] | null;\r\n getMortgageDocuments(): void;\r\n addDoc(doc: any): void;\r\n updateDoc(doc: any): void;\r\n deleteDoc(doc: any): void;\r\n updateId(oldId: string, newId: string): void;\r\n //loading: boolean;\r\n institutions: FormLookupItem[];\r\n applicantNo: number | null;\r\n settings: PortalSettingsModel | null;\r\n loadingFiles: boolean;\r\n files: IFileItem[] | null;\r\n calculatorState: CalculatorState;\r\n updateCalculatorState(calculatorState: CalculatorState): void;\r\n setPageRefreshListener(listener: any): void;\r\n callPageRefreshListener(): void;\r\n}\r\n\r\nexport const UserContext = createContext<UserContextState | null>({\r\n contact: null,\r\n mortgage: null,\r\n tooltips: null,\r\n reloadMortgage: () => {},\r\n isDirty: false,\r\n setIsDirty: (dirty: boolean) => {},\r\n impersonateContact: (contactId: string) => {},\r\n impersonatedId: null,\r\n refreshMenuState: () => {},\r\n mortgageDocumentList: [],\r\n getMortgageDocuments: () => {},\r\n addDoc: (doc: any) => {},\r\n updateDoc: (doc: any) => {},\r\n deleteDoc: (doc: any) => {},\r\n updateId: (oldId: string, newId: string) => {},\r\n institutions: [],\r\n applicantNo: null,\r\n settings: null,\r\n loadingFiles: false,\r\n files: [],\r\n calculatorState: {},\r\n updateCalculatorState: (calculatorState: CalculatorState) => {},\r\n setPageRefreshListener: (listener: any) => {},\r\n callPageRefreshListener: () => {},\r\n});\r\n\r\nexport default UserContextState;\r\n","import React from \"react\";\r\nimport UserContextState, { UserContext } from \"./UserContext\";\r\n\r\nexport class Intercom extends React.Component<any, any> {\r\n static contextType = UserContext;\r\n \r\n render() {\r\n const context = this.context as UserContextState;\r\n \r\n if (!context.contact?.emailAddress) return <>{this.props.children}</>;\r\n\r\n let intercomScript = document.createElement(\"script\");\r\n let script = document.createElement(\"script\");\r\n\r\n intercomScript.innerHTML = '(function () { var w = window; var ic = w.Intercom; if (typeof ic === \"function\") { ic(\\'reattach_activator\\'); ic(\\'update\\', w.intercomSettings); } else { var d = document; var i = function () { i.c(arguments); }; i.q = []; i.c = function (args) { i.q.push(args); }; w.Intercom = i; var l = function () { var s = d.createElement(\\'script\\'); s.type = \\'text/javascript\\'; s.async = true; s.src = \\'https://widget.intercom.io/widget/qxvr34fd\\'; var x = d.getElementsByTagName(\\'script\\')[0]; x.parentNode.insertBefore(s, x); }; if (document.readyState === \\'complete\\') { l(); } else if (w.attachEvent) { w.attachEvent(\\'onload\\', l); } else { w.addEventListener(\\'load\\', l, false); } } })(); ';\r\n intercomScript.setAttribute(\"type\", \"text/javascript\");\r\n\r\n script.innerHTML = 'window.intercomSettings = { api_base: \"https://api-iam.intercom.io\",app_id: \"qxvr34fd\",name: \"' + context.contact?.fullName + '\", email: \"' + context.contact?.emailAddress + '\"}; ';\r\n script.setAttribute(\"type\", \"text/javascript\");\r\n\r\n document.head.appendChild(script);\r\n document.head.appendChild(intercomScript);\r\n\r\n return (<>\r\n {this.props.children}\r\n </>\r\n );\r\n }\r\n}","import { Component } from \"react\";\r\nimport { UserContext } from \"./UserContext\";\r\nimport UserContextState from \"./UserContext\";\r\nimport { ApplicableTo } from \"../models/PortalMortgageDocumentModel\";\r\n\r\nexport class UserContextComponent<P, S> extends Component<P, S> {\r\n static contextType = UserContext;\r\n\r\n public getContext(): UserContextState {\r\n const context = this.context as UserContextState;\r\n return context;\r\n }\r\n\r\n componentDidUpdate() {\r\n let context = this.getContext();\r\n if (context.refreshMenuState) {\r\n context.refreshMenuState();\r\n }\r\n }\r\n\r\n public getApplicantNames(): string {\r\n let context = this.getContext();\r\n let mortgage = context.mortgage;\r\n if (mortgage == null) return \"\";\r\n return mortgage.secondaryApplicant == null\r\n ? mortgage.primaryApplicant.firstName\r\n : mortgage.primaryApplicant.firstName +\r\n \" and \" +\r\n mortgage.secondaryApplicant.firstName;\r\n }\r\n\r\n public getApplicableTo(): ApplicableTo {\r\n let context = this.getContext();\r\n return context.applicantNo === 1\r\n ? ApplicableTo.Primary\r\n : ApplicableTo.Secondary;\r\n }\r\n}\r\n","import React from \"react\";\r\nimport { Navigate } from \"react-router-dom\";\r\nimport { UserContextComponent } from \"./UserContextComponent\";\r\nimport UserContextState from \"./UserContext\";\r\n\r\ninterface IState {\r\n impersonate: boolean;\r\n toggleRefresh: boolean;\r\n}\r\n\r\nexport class ImpersonateContactButton extends UserContextComponent<any,IState> {\r\n\r\n constructor(props:any) {\r\n super(props);\r\n this.state = {impersonate: false, toggleRefresh: false};\r\n }\r\n \r\n render() {\r\n //let context = this.getContext();\r\n const context = this.context as UserContextState;\r\n if (!context.contact) {\r\n setTimeout(() => this.setState({toggleRefresh: !this.state.toggleRefresh}), 1000);\r\n return <></>;\r\n }\r\n\r\n if (!context.contact?.isAdmin) return <></>;\r\n if (this.state.impersonate) return <Navigate to=\"/_impersonate\" />;\r\n return <a className=\"ic-button\" onClick={() => this.setState({impersonate: true})}><i className=\"fa fa-user-ninja\"></i> </a>;\r\n }\r\n};","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nvar _a;\r\n;\r\nvar UNDEFINED = \"undefined\";\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar Constructor = 'constructor';\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar Prototype = 'prototype';\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar strFunction = 'function';\r\n/**\r\n * Used to define the name of the instance function lookup table\r\n * @ignore\r\n */\r\nvar DynInstFuncTable = '_dynInstFuncs';\r\n/**\r\n * Name used to tag the dynamic prototype function\r\n * @ignore\r\n */\r\nvar DynProxyTag = '_isDynProxy';\r\n/**\r\n * Name added to a prototype to define the dynamic prototype \"class\" name used to lookup the function table\r\n * @ignore\r\n */\r\nvar DynClassName = '_dynClass';\r\n/**\r\n * Prefix added to the classname to avoid any name clashes with other instance level properties\r\n * @ignore\r\n */\r\nvar DynClassNamePrefix = '_dynCls$';\r\n/**\r\n * A tag which is used to check if we have already to attempted to set the instance function if one is not present\r\n * @ignore\r\n */\r\nvar DynInstChkTag = '_dynInstChk';\r\n/**\r\n * A tag which is used to check if we are allows to try and set an instance function is one is not present. Using the same\r\n * tag name as the function level but a different const name for readability only.\r\n */\r\nvar DynAllowInstChkTag = DynInstChkTag;\r\n/**\r\n * The global (imported) instances where the global performance options are stored\r\n */\r\nvar DynProtoDefaultOptions = '_dfOpts';\r\n/**\r\n * Value used as the name of a class when it cannot be determined\r\n * @ignore\r\n */\r\nvar UnknownValue = '_unknown_';\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar str__Proto = \"__proto__\";\r\n/**\r\n * The polyfill version of __proto__ so that it doesn't cause issues for anyone not expecting it to exist\r\n */\r\nvar DynProtoBaseProto = \"_dyn\" + str__Proto;\r\n/**\r\n * Runtime Global holder for dynamicProto settings\r\n */\r\nvar DynProtoGlobalSettings = \"__dynProto$Gbl\";\r\n/**\r\n * Track the current prototype for IE8 as you can't look back to get the prototype\r\n */\r\nvar DynProtoCurrent = \"_dynInstProto\";\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar strUseBaseInst = 'useBaseInst';\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar strSetInstFuncs = 'setInstFuncs';\r\nvar Obj = Object;\r\n/**\r\n * Pre-lookup to check if we are running on a modern browser (i.e. not IE8)\r\n * @ignore\r\n */\r\nvar _objGetPrototypeOf = Obj[\"getPrototypeOf\"];\r\n/**\r\n * Pre-lookup to check for the existence of this function\r\n */\r\nvar _objGetOwnProps = Obj[\"getOwnPropertyNames\"];\r\n/**\r\n * Gets the runtime global reference\r\n * @returns\r\n */\r\nfunction _getGlobal() {\r\n var result;\r\n if (typeof globalThis !== UNDEFINED) {\r\n result = globalThis;\r\n }\r\n if (!result && typeof self !== UNDEFINED) {\r\n result = self;\r\n }\r\n if (!result && typeof window !== UNDEFINED) {\r\n result = window;\r\n }\r\n if (!result && typeof global !== UNDEFINED) {\r\n result = global;\r\n }\r\n return result || {};\r\n}\r\n// Since 1.1.7 moving these to the runtime global to work around mixed version and module issues\r\n// See Issue https://github.com/microsoft/DynamicProto-JS/issues/57 for details\r\nvar _gbl = _getGlobal();\r\nvar _gblInst = _gbl[DynProtoGlobalSettings] || (_gbl[DynProtoGlobalSettings] = {\r\n o: (_a = {},\r\n _a[strSetInstFuncs] = true,\r\n _a[strUseBaseInst] = true,\r\n _a),\r\n n: 1000 // Start new global index @ 1000 so we \"fix\" some cases when mixed with 1.1.6 or earlier\r\n});\r\n/**\r\n * Helper to check if the object contains a property of the name\r\n * @ignore\r\n */\r\nfunction _hasOwnProperty(obj, prop) {\r\n return obj && Obj[Prototype].hasOwnProperty.call(obj, prop);\r\n}\r\n/**\r\n * Helper used to check whether the target is an Object prototype or Array prototype\r\n * @ignore\r\n */\r\nfunction _isObjectOrArrayPrototype(target) {\r\n return target && (target === Obj[Prototype] || target === Array[Prototype]);\r\n}\r\n/**\r\n * Helper used to check whether the target is an Object prototype, Array prototype or Function prototype\r\n * @ignore\r\n */\r\nfunction _isObjectArrayOrFunctionPrototype(target) {\r\n return _isObjectOrArrayPrototype(target) || target === Function[Prototype];\r\n}\r\n/**\r\n * Helper used to get the prototype of the target object as getPrototypeOf is not available in an ES3 environment.\r\n * @ignore\r\n */\r\nfunction _getObjProto(target) {\r\n var newProto;\r\n if (target) {\r\n // This method doesn't exist in older browsers (e.g. IE8)\r\n if (_objGetPrototypeOf) {\r\n return _objGetPrototypeOf(target);\r\n }\r\n var curProto = target[str__Proto] || target[Prototype] || (target[Constructor] ? target[Constructor][Prototype] : null);\r\n // Using the pre-calculated value as IE8 doesn't support looking up the prototype of a prototype and thus fails for more than 1 base class\r\n newProto = target[DynProtoBaseProto] || curProto;\r\n if (!_hasOwnProperty(target, DynProtoBaseProto)) {\r\n // As this prototype doesn't have this property then this is from an inherited class so newProto is the base to return so save it\r\n // so we can look it up value (which for a multiple hierarchy dynamicProto will be the base class)\r\n delete target[DynProtoCurrent]; // Delete any current value allocated to this instance so we pick up the value from prototype hierarchy\r\n newProto = target[DynProtoBaseProto] = target[DynProtoCurrent] || target[DynProtoBaseProto];\r\n target[DynProtoCurrent] = curProto;\r\n }\r\n }\r\n return newProto;\r\n}\r\n/**\r\n * Helper to get the properties of an object, including none enumerable ones as functions on a prototype in ES6\r\n * are not enumerable.\r\n * @param target\r\n */\r\nfunction _forEachProp(target, func) {\r\n var props = [];\r\n if (_objGetOwnProps) {\r\n props = _objGetOwnProps(target);\r\n }\r\n else {\r\n for (var name_1 in target) {\r\n if (typeof name_1 === \"string\" && _hasOwnProperty(target, name_1)) {\r\n props.push(name_1);\r\n }\r\n }\r\n }\r\n if (props && props.length > 0) {\r\n for (var lp = 0; lp < props.length; lp++) {\r\n func(props[lp]);\r\n }\r\n }\r\n}\r\n/**\r\n * Helper function to check whether the provided function name is a potential candidate for dynamic\r\n * callback and prototype generation.\r\n * @param target The target object, may be a prototype or class object\r\n * @param funcName The function name\r\n * @param skipOwn Skips the check for own property\r\n * @ignore\r\n */\r\nfunction _isDynamicCandidate(target, funcName, skipOwn) {\r\n return (funcName !== Constructor && typeof target[funcName] === strFunction && (skipOwn || _hasOwnProperty(target, funcName)));\r\n}\r\n/**\r\n * Helper to throw a TypeError exception\r\n * @param message the message\r\n * @ignore\r\n */\r\nfunction _throwTypeError(message) {\r\n throw new TypeError(\"DynamicProto: \" + message);\r\n}\r\n/**\r\n * Returns a collection of the instance functions that are defined directly on the thisTarget object, it does\r\n * not return any inherited functions\r\n * @param thisTarget The object to get the instance functions from\r\n * @ignore\r\n */\r\nfunction _getInstanceFuncs(thisTarget) {\r\n // Get the base proto\r\n var instFuncs = {};\r\n // Save any existing instance functions\r\n _forEachProp(thisTarget, function (name) {\r\n // Don't include any dynamic prototype instances - as we only want the real functions\r\n if (!instFuncs[name] && _isDynamicCandidate(thisTarget, name, false)) {\r\n // Create an instance callback for passing the base function to the caller\r\n instFuncs[name] = thisTarget[name];\r\n }\r\n });\r\n return instFuncs;\r\n}\r\n/**\r\n * Returns whether the value is included in the array\r\n * @param values The array of values\r\n * @param value The value\r\n */\r\nfunction _hasVisited(values, value) {\r\n for (var lp = values.length - 1; lp >= 0; lp--) {\r\n if (values[lp] === value) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\n/**\r\n * Returns an object that contains callback functions for all \"base/super\" functions, this is used to \"save\"\r\n * enabling calling super.xxx() functions without requiring that the base \"class\" has defined a prototype references\r\n * @param target The current instance\r\n * @ignore\r\n */\r\nfunction _getBaseFuncs(classProto, thisTarget, instFuncs, useBaseInst) {\r\n function _instFuncProxy(target, funcHost, funcName) {\r\n var theFunc = funcHost[funcName];\r\n if (theFunc[DynProxyTag] && useBaseInst) {\r\n // grab and reuse the hosted looking function (if available) otherwise the original passed function\r\n var instFuncTable = target[DynInstFuncTable] || {};\r\n if (instFuncTable[DynAllowInstChkTag] !== false) {\r\n theFunc = (instFuncTable[funcHost[DynClassName]] || {})[funcName] || theFunc;\r\n }\r\n }\r\n return function () {\r\n // eslint-disable-next-line prefer-rest-params\r\n return theFunc.apply(target, arguments);\r\n };\r\n }\r\n // Start creating a new baseFuncs by creating proxies for the instance functions (as they may get replaced)\r\n var baseFuncs = {};\r\n _forEachProp(instFuncs, function (name) {\r\n // Create an instance callback for passing the base function to the caller\r\n baseFuncs[name] = _instFuncProxy(thisTarget, instFuncs, name);\r\n });\r\n // Get the base prototype functions\r\n var baseProto = _getObjProto(classProto);\r\n var visited = [];\r\n // Don't include base object functions for Object, Array or Function\r\n while (baseProto && !_isObjectArrayOrFunctionPrototype(baseProto) && !_hasVisited(visited, baseProto)) {\r\n // look for prototype functions\r\n _forEachProp(baseProto, function (name) {\r\n // Don't include any dynamic prototype instances - as we only want the real functions\r\n // For IE 7/8 the prototype lookup doesn't provide the full chain so we need to bypass the \r\n // hasOwnProperty check we get all of the methods, main difference is that IE7/8 doesn't return\r\n // the Object prototype methods while bypassing the check\r\n if (!baseFuncs[name] && _isDynamicCandidate(baseProto, name, !_objGetPrototypeOf)) {\r\n // Create an instance callback for passing the base function to the caller\r\n baseFuncs[name] = _instFuncProxy(thisTarget, baseProto, name);\r\n }\r\n });\r\n // We need to find all possible functions that might be overloaded by walking the entire prototype chain\r\n // This avoids the caller from needing to check whether it's direct base class implements the function or not\r\n // by walking the entire chain it simplifies the usage and issues from upgrading any of the base classes.\r\n visited.push(baseProto);\r\n baseProto = _getObjProto(baseProto);\r\n }\r\n return baseFuncs;\r\n}\r\nfunction _getInstFunc(target, funcName, proto, currentDynProtoProxy) {\r\n var instFunc = null;\r\n // We need to check whether the class name is defined directly on this prototype otherwise\r\n // it will walk the proto chain and return any parent proto classname.\r\n if (target && _hasOwnProperty(proto, DynClassName)) {\r\n var instFuncTable = target[DynInstFuncTable] || {};\r\n instFunc = (instFuncTable[proto[DynClassName]] || {})[funcName];\r\n if (!instFunc) {\r\n // Avoid stack overflow from recursive calling the same function\r\n _throwTypeError(\"Missing [\" + funcName + \"] \" + strFunction);\r\n }\r\n // We have the instance function, lets check it we can speed up further calls\r\n // by adding the instance function back directly on the instance (avoiding the dynamic func lookup)\r\n if (!instFunc[DynInstChkTag] && instFuncTable[DynAllowInstChkTag] !== false) {\r\n // If the instance already has an instance function we can't replace it\r\n var canAddInst = !_hasOwnProperty(target, funcName);\r\n // Get current prototype\r\n var objProto = _getObjProto(target);\r\n var visited = [];\r\n // Lookup the function starting at the top (instance level prototype) and traverse down, if the first matching function\r\n // if nothing is found or if the first hit is a dynamic proto instance then we can safely add an instance shortcut\r\n while (canAddInst && objProto && !_isObjectArrayOrFunctionPrototype(objProto) && !_hasVisited(visited, objProto)) {\r\n var protoFunc = objProto[funcName];\r\n if (protoFunc) {\r\n canAddInst = (protoFunc === currentDynProtoProxy);\r\n break;\r\n }\r\n // We need to find all possible initial functions to ensure that we don't bypass a valid override function\r\n visited.push(objProto);\r\n objProto = _getObjProto(objProto);\r\n }\r\n try {\r\n if (canAddInst) {\r\n // This instance doesn't have an instance func and the class hierarchy does have a higher level prototype version\r\n // so it's safe to directly assign for any subsequent calls (for better performance)\r\n target[funcName] = instFunc;\r\n }\r\n // Block further attempts to set the instance function for any\r\n instFunc[DynInstChkTag] = 1;\r\n }\r\n catch (e) {\r\n // Don't crash if the object is readonly or the runtime doesn't allow changing this\r\n // And set a flag so we don't try again for any function\r\n instFuncTable[DynAllowInstChkTag] = false;\r\n }\r\n }\r\n }\r\n return instFunc;\r\n}\r\nfunction _getProtoFunc(funcName, proto, currentDynProtoProxy) {\r\n var protoFunc = proto[funcName];\r\n // Check that the prototype function is not a self reference -- try to avoid stack overflow!\r\n if (protoFunc === currentDynProtoProxy) {\r\n // It is so lookup the base prototype\r\n protoFunc = _getObjProto(proto)[funcName];\r\n }\r\n if (typeof protoFunc !== strFunction) {\r\n _throwTypeError(\"[\" + funcName + \"] is not a \" + strFunction);\r\n }\r\n return protoFunc;\r\n}\r\n/**\r\n * Add the required dynamic prototype methods to the the class prototype\r\n * @param proto - The class prototype\r\n * @param className - The instance classname\r\n * @param target - The target instance\r\n * @param baseInstFuncs - The base instance functions\r\n * @param setInstanceFunc - Flag to allow prototype function to reset the instance function if one does not exist\r\n * @ignore\r\n */\r\nfunction _populatePrototype(proto, className, target, baseInstFuncs, setInstanceFunc) {\r\n function _createDynamicPrototype(proto, funcName) {\r\n var dynProtoProxy = function () {\r\n // Use the instance or prototype function\r\n var instFunc = _getInstFunc(this, funcName, proto, dynProtoProxy) || _getProtoFunc(funcName, proto, dynProtoProxy);\r\n // eslint-disable-next-line prefer-rest-params\r\n return instFunc.apply(this, arguments);\r\n };\r\n // Tag this function as a proxy to support replacing dynamic proxy elements (primary use case is for unit testing\r\n // via which can dynamically replace the prototype function reference)\r\n dynProtoProxy[DynProxyTag] = 1;\r\n return dynProtoProxy;\r\n }\r\n if (!_isObjectOrArrayPrototype(proto)) {\r\n var instFuncTable = target[DynInstFuncTable] = target[DynInstFuncTable] || {};\r\n var instFuncs_1 = instFuncTable[className] = (instFuncTable[className] || {}); // fetch and assign if as it may not exist yet\r\n // Set whether we are allow to lookup instances, if someone has set to false then do not re-enable\r\n if (instFuncTable[DynAllowInstChkTag] !== false) {\r\n instFuncTable[DynAllowInstChkTag] = !!setInstanceFunc;\r\n }\r\n _forEachProp(target, function (name) {\r\n // Only add overridden functions\r\n if (_isDynamicCandidate(target, name, false) && target[name] !== baseInstFuncs[name]) {\r\n // Save the instance Function to the lookup table and remove it from the instance as it's not a dynamic proto function\r\n instFuncs_1[name] = target[name];\r\n delete target[name];\r\n // Add a dynamic proto if one doesn't exist or if a prototype function exists and it's not a dynamic one\r\n if (!_hasOwnProperty(proto, name) || (proto[name] && !proto[name][DynProxyTag])) {\r\n proto[name] = _createDynamicPrototype(proto, name);\r\n }\r\n }\r\n });\r\n }\r\n}\r\n/**\r\n * Checks whether the passed prototype object appears to be correct by walking the prototype hierarchy of the instance\r\n * @param classProto The class prototype instance\r\n * @param thisTarget The current instance that will be checked whether the passed prototype instance is in the hierarchy\r\n * @ignore\r\n */\r\nfunction _checkPrototype(classProto, thisTarget) {\r\n // This method doesn't existing in older browsers (e.g. IE8)\r\n if (_objGetPrototypeOf) {\r\n // As this is primarily a coding time check, don't bother checking if running in IE8 or lower\r\n var visited = [];\r\n var thisProto = _getObjProto(thisTarget);\r\n while (thisProto && !_isObjectArrayOrFunctionPrototype(thisProto) && !_hasVisited(visited, thisProto)) {\r\n if (thisProto === classProto) {\r\n return true;\r\n }\r\n // This avoids the caller from needing to check whether it's direct base class implements the function or not\r\n // by walking the entire chain it simplifies the usage and issues from upgrading any of the base classes.\r\n visited.push(thisProto);\r\n thisProto = _getObjProto(thisProto);\r\n }\r\n return false;\r\n }\r\n // If objGetPrototypeOf doesn't exist then just assume everything is ok.\r\n return true;\r\n}\r\n/**\r\n * Gets the current prototype name using the ES6 name if available otherwise falling back to a use unknown as the name.\r\n * It's not critical for this to return a name, it's used to decorate the generated unique name for easier debugging only.\r\n * @param target\r\n * @param unknownValue\r\n * @ignore\r\n */\r\nfunction _getObjName(target, unknownValue) {\r\n if (_hasOwnProperty(target, Prototype)) {\r\n // Look like a prototype\r\n return target.name || unknownValue || UnknownValue;\r\n }\r\n return (((target || {})[Constructor]) || {}).name || unknownValue || UnknownValue;\r\n}\r\n/**\r\n * Helper function when creating dynamic (inline) functions for classes, this helper performs the following tasks :-\r\n * - Saves references to all defined base class functions\r\n * - Calls the delegateFunc with the current target (this) and a base object reference that can be used to call all \"super\" functions.\r\n * - Will populate the class prototype for all overridden functions to support class extension that call the prototype instance.\r\n * Callers should use this helper when declaring all function within the constructor of a class, as mentioned above the delegateFunc is\r\n * passed both the target \"this\" and an object that can be used to call any base (super) functions, using this based object in place of\r\n * super.XXX() (which gets expanded to _super.prototype.XXX()) provides a better minification outcome and also ensures the correct \"this\"\r\n * context is maintained as TypeScript creates incorrect references using super.XXXX() for dynamically defined functions i.e. Functions\r\n * defined in the constructor or some other function (rather than declared as complete typescript functions).\r\n * ### Usage\r\n * ```typescript\r\n * import dynamicProto from \"@microsoft/dynamicproto-js\";\r\n * class ExampleClass extends BaseClass {\r\n * constructor() {\r\n * dynamicProto(ExampleClass, this, (_self, base) => {\r\n * // This will define a function that will be converted to a prototype function\r\n * _self.newFunc = () => {\r\n * // Access any \"this\" instance property\r\n * if (_self.someProperty) {\r\n * ...\r\n * }\r\n * }\r\n * // This will define a function that will be converted to a prototype function\r\n * _self.myFunction = () => {\r\n * // Access any \"this\" instance property\r\n * if (_self.someProperty) {\r\n * // Call the base version of the function that we are overriding\r\n * base.myFunction();\r\n * }\r\n * ...\r\n * }\r\n * _self.initialize = () => {\r\n * ...\r\n * }\r\n * // Warnings: While the following will work as _self is simply a reference to\r\n * // this, if anyone overrides myFunction() the overridden will be called first\r\n * // as the normal JavaScript method resolution will occur and the defined\r\n * // _self.initialize() function is actually gets removed from the instance and\r\n * // a proxy prototype version is created to reference the created method.\r\n * _self.initialize();\r\n * });\r\n * }\r\n * }\r\n * ```\r\n * @typeparam DPType This is the generic type of the class, used to keep intellisense valid\r\n * @typeparam DPCls The type that contains the prototype of the current class\r\n * @param theClass - This is the current class instance which contains the prototype for the current class\r\n * @param target - The current \"this\" (target) reference, when the class has been extended this.prototype will not be the 'theClass' value.\r\n * @param delegateFunc - The callback function (closure) that will create the dynamic function\r\n * @param options - Additional options to configure how the dynamic prototype operates\r\n */\r\nexport default function dynamicProto(theClass, target, delegateFunc, options) {\r\n // Make sure that the passed theClass argument looks correct\r\n if (!_hasOwnProperty(theClass, Prototype)) {\r\n _throwTypeError(\"theClass is an invalid class definition.\");\r\n }\r\n // Quick check to make sure that the passed theClass argument looks correct (this is a common copy/paste error)\r\n var classProto = theClass[Prototype];\r\n if (!_checkPrototype(classProto, target)) {\r\n _throwTypeError(\"[\" + _getObjName(theClass) + \"] not in hierarchy of [\" + _getObjName(target) + \"]\");\r\n }\r\n var className = null;\r\n if (_hasOwnProperty(classProto, DynClassName)) {\r\n // Only grab the class name if it's defined on this prototype (i.e. don't walk the prototype chain)\r\n className = classProto[DynClassName];\r\n }\r\n else {\r\n // As not all browser support name on the prototype creating a unique dynamic one if we have not already\r\n // assigned one, so we can use a simple string as the lookup rather than an object for the dynamic instance\r\n // function table lookup.\r\n className = DynClassNamePrefix + _getObjName(theClass, \"_\") + \"$\" + _gblInst.n;\r\n _gblInst.n++;\r\n classProto[DynClassName] = className;\r\n }\r\n var perfOptions = dynamicProto[DynProtoDefaultOptions];\r\n var useBaseInst = !!perfOptions[strUseBaseInst];\r\n if (useBaseInst && options && options[strUseBaseInst] !== undefined) {\r\n useBaseInst = !!options[strUseBaseInst];\r\n }\r\n // Get the current instance functions\r\n var instFuncs = _getInstanceFuncs(target);\r\n // Get all of the functions for any base instance (before they are potentially overridden)\r\n var baseFuncs = _getBaseFuncs(classProto, target, instFuncs, useBaseInst);\r\n // Execute the delegate passing in both the current target \"this\" and \"base\" function references\r\n // Note casting the same type as we don't actually have the base class here and this will provide some intellisense support\r\n delegateFunc(target, baseFuncs);\r\n // Don't allow setting instance functions for older IE instances\r\n var setInstanceFunc = !!_objGetPrototypeOf && !!perfOptions[strSetInstFuncs];\r\n if (setInstanceFunc && options) {\r\n setInstanceFunc = !!options[strSetInstFuncs];\r\n }\r\n // Populate the Prototype for any overridden instance functions\r\n _populatePrototype(classProto, className, target, instFuncs, setInstanceFunc !== false);\r\n}\r\n/**\r\n * Exposes the default global options to allow global configuration, if the global values are disabled these will override\r\n * any passed values. This is primarily exposed to support unit-testing without the need for individual classes to expose\r\n * their internal usage of dynamic proto.\r\n */\r\ndynamicProto[DynProtoDefaultOptions] = _gblInst.o;\r\n//# sourceMappingURL=DynamicProto.js.map","import React from \"react\";\r\nimport { Col, Container, Row } from \"react-bootstrap\";\r\nimport { Intercom } from \"./Intercom\";\r\nimport { ImpersonateContactButton } from \"./ImpersonateContactButton\";\r\n\r\nexport class PortalPage extends React.Component<any, any> {\r\n render() {\r\n return (\r\n <Intercom>\r\n <Container\r\n className={`portal-page menu-pad ${this.props.className ?? \"\"}`}\r\n >\r\n <div\r\n className={`portal-page-container ${\r\n this.props.containerClassName ?? \"\"\r\n }`}\r\n >\r\n <div\r\n className={`page-title text-md-left max-w-wide ${\r\n this.props.titleClassName ?? \"\"\r\n }`}\r\n >\r\n <h1\r\n className={\r\n \"d-none d-lg-block d-xl-block\" +\r\n (this.props.lightTitle ? \" light\" : \"\") +\r\n (this.props.alignTitleLeft\r\n ? \" text-start\"\r\n : \" justify-center\")\r\n }\r\n >\r\n {this.props.title}\r\n </h1>\r\n <h1 className=\"d-sm-block d-md-block d-lg-none d-xl-none\">\r\n {this.props.mobileTitle ?? this.props.title}\r\n </h1>\r\n <Row className=\"\">\r\n {/* <Col lg={1} className=\"d-none d-lg-block d-xl-block\"></Col> */}\r\n <Col xs={12} className={\"subtext\"}>\r\n <span\r\n className={\r\n \"subtext\" +\r\n (this.props.alignTitleLeft\r\n ? \" text-start\"\r\n : \" justify-center\")\r\n }\r\n >\r\n {this.props.description}\r\n </span>\r\n {this.props.subtitle && (\r\n <div className=\"doddl-grey subtitle\">\r\n {this.props.subtitle}\r\n </div>\r\n )}\r\n </Col>\r\n <Col className=\"col-2\"></Col>\r\n </Row>\r\n </div>\r\n {this.props.children}\r\n <ImpersonateContactButton />\r\n </div>\r\n </Container>\r\n </Intercom>\r\n );\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nexport const strShimFunction = \"function\";\r\nexport const strShimObject = \"object\";\r\nexport const strShimUndefined = \"undefined\";\r\nexport const strShimPrototype = \"prototype\";\r\nexport const strShimHasOwnProperty = \"hasOwnProperty\";\r\nexport const strDefault = \"default\";\r\n\r\nexport const ObjClass = Object;\r\nexport const ObjProto = ObjClass[strShimPrototype];\r\nexport const ObjAssign = ObjClass[\"assign\"];\r\nexport const ObjCreate = ObjClass[\"create\"];\r\nexport const ObjDefineProperty = ObjClass[\"defineProperty\"];\r\nexport const ObjHasOwnProperty = ObjProto[strShimHasOwnProperty];\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { ObjCreate, strShimFunction, strShimObject, strShimPrototype, strShimUndefined } from \"./Constants\";\r\n\r\ndeclare var globalThis: Window;\r\ndeclare var global: Window;\r\n\r\nlet _cachedGlobal: Window = null;\r\n\r\n/**\r\n * Returns the current global scope object, for a normal web page this will be the current\r\n * window, for a Web Worker this will be current worker global scope via \"self\". The internal\r\n * implementation returns the first available instance object in the following order\r\n * - globalThis (New standard)\r\n * - self (Will return the current window instance for supported browsers)\r\n * - window (fallback for older browser implementations)\r\n * - global (NodeJS standard)\r\n * - <null> (When all else fails)\r\n * While the return type is a Window for the normal case, not all environments will support all\r\n * of the properties or functions.\r\n */\r\n export function getGlobal(useCached: boolean = true): Window {\r\n if (!_cachedGlobal || !useCached) {\r\n\r\n if (typeof globalThis !== strShimUndefined && globalThis) {\r\n _cachedGlobal = globalThis;\r\n }\r\n\r\n if (typeof self !== strShimUndefined && self) {\r\n _cachedGlobal = self;\r\n }\r\n\r\n if (typeof window !== strShimUndefined && window) {\r\n _cachedGlobal = window;\r\n }\r\n\r\n if (typeof global !== strShimUndefined && global) {\r\n _cachedGlobal = global;\r\n }\r\n }\r\n\r\n return _cachedGlobal;\r\n}\r\n\r\nexport function throwTypeError(message: string): never {\r\n throw new TypeError(message);\r\n}\r\n\r\n/**\r\n * Creates an object that has the specified prototype, and that optionally contains specified properties. This helper exists to avoid adding a polyfil\r\n * for older browsers that do not define Object.create eg. ES3 only, IE8 just in case any page checks for presence/absence of the prototype implementation.\r\n * Note: For consistency this will not use the Object.create implementation if it exists as this would cause a testing requirement to test with and without the implementations\r\n * @param obj Object to use as a prototype. May be null\r\n */\r\nexport function objCreateFn(obj: any): any {\r\n var func = ObjCreate;\r\n // Use build in Object.create\r\n if (func) {\r\n // Use Object create method if it exists\r\n return func(obj);\r\n }\r\n if (obj == null) {\r\n return {};\r\n }\r\n var type = typeof obj;\r\n if (type !== strShimObject && type !== strShimFunction) {\r\n throwTypeError(\"Object prototype may only be an Object:\" + obj);\r\n }\r\n\r\n function tmpFunc() {}\r\n tmpFunc[strShimPrototype] = obj;\r\n\r\n return new (tmpFunc as any)();\r\n}\r\n\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport {\r\n ObjAssign, ObjClass, ObjCreate, ObjDefineProperty, ObjHasOwnProperty, ObjProto,\r\n strDefault, strShimFunction, strShimHasOwnProperty, strShimPrototype\r\n} from \"./Constants\";\r\nimport { getGlobal, objCreateFn, throwTypeError } from \"./Helpers\";\r\n\r\n// Most of these functions have been directly shamelessly \"lifted\" from the https://github.com/@microsoft/tslib and\r\n// modified to be ES3 compatible and applying several minification and tree-shaking techniques so that Application Insights\r\n// can successfully use TypeScript \"importHelpers\" which imports tslib during compilation but it will use these at runtime\r\n// Which is also why all of the functions have not been included as Application Insights currently doesn't use or require\r\n// them.\r\n\r\nexport const SymbolObj = (getGlobal()||{})[\"Symbol\"];\r\nexport const ReflectObj = (getGlobal()||{})[\"Reflect\"];\r\nexport const __hasSymbol = !!SymbolObj;\r\nexport const __hasReflect = !!ReflectObj;\r\n\r\nconst strDecorate = \"decorate\";\r\nconst strMetadata = \"metadata\";\r\nconst strGetOwnPropertySymbols = \"getOwnPropertySymbols\";\r\nconst strIterator = \"iterator\";\r\n\r\nexport declare type ObjAssignFunc = (t: any, ...sources:any[]) => any;\r\n\r\nexport var __objAssignFnImpl: ObjAssignFunc = function(t: any): any {\r\n // tslint:disable-next-line: ban-comma-operator\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) {\r\n if (ObjProto[strShimHasOwnProperty].call(s, p)) {\r\n (t as any)[p] = s[p];\r\n }\r\n }\r\n }\r\n return t;\r\n};\r\n\r\nexport var __assignFn: ObjAssignFunc = ObjAssign || __objAssignFnImpl;\r\n\r\n// tslint:disable-next-line: only-arrow-functions\r\nvar extendStaticsFn = function(d: any, b: any): any {\r\n extendStaticsFn = ObjClass[\"setPrototypeOf\"] ||\r\n // tslint:disable-next-line: only-arrow-functions\r\n ({ __proto__: [] } instanceof Array && function (d: any, b: any) { d.__proto__ = b; }) ||\r\n // tslint:disable-next-line: only-arrow-functions\r\n function (d: any, b: any) {\r\n for (var p in b) {\r\n if (b[strShimHasOwnProperty](p)) {\r\n d[p] = b[p];\r\n }\r\n }\r\n };\r\n return extendStaticsFn(d, b);\r\n};\r\n\r\nexport function __extendsFn(d: any, b: any) {\r\n if (typeof b !== strShimFunction && b !== null) {\r\n throwTypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n }\r\n extendStaticsFn(d, b);\r\n function __() { this.constructor = d; }\r\n // tslint:disable-next-line: ban-comma-operator\r\n d[strShimPrototype] = b === null ? objCreateFn(b) : (__[strShimPrototype] = b[strShimPrototype], new (__ as any)());\r\n}\r\n\r\nexport function __restFn(s: any, e: any) {\r\n var t = {};\r\n for (var k in s) {\r\n if (ObjHasOwnProperty.call(s, k) && e.indexOf(k) < 0) {\r\n t[k] = s[k];\r\n }\r\n }\r\n if (s != null && typeof ObjClass[strGetOwnPropertySymbols] === strShimFunction) {\r\n for (var i = 0, p = ObjClass[strGetOwnPropertySymbols](s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && ObjProto[\"propertyIsEnumerable\"].call(s, p[i])) {\r\n t[p[i]] = s[p[i]];\r\n }\r\n }\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorateFn(decorators: any, target: any, key: any, desc: any) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = ObjClass[\"getOwnPropertyDescriptor\"](target, key) : desc, d;\r\n if (__hasReflect && typeof ReflectObj[strDecorate] === strShimFunction) {\r\n r = ReflectObj[strDecorate](decorators, target, key, desc);\r\n } else {\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n // eslint-disable-next-line no-cond-assign\r\n if (d = decorators[i]) {\r\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n }\r\n }\r\n }\r\n\r\n // tslint:disable-next-line:ban-comma-operator\r\n return c > 3 && r && ObjDefineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __paramFn(paramIndex: number, decorator: Function) {\r\n return function (target: any, key: any) {\r\n decorator(target, key, paramIndex);\r\n }\r\n}\r\n\r\nexport function __metadataFn(metadataKey: any, metadataValue: any) {\r\n if (__hasReflect && ReflectObj[strMetadata] === strShimFunction) {\r\n return ReflectObj[strMetadata](metadataKey, metadataValue);\r\n }\r\n}\r\n\r\nexport function __exportStarFn(m: any, o: any) {\r\n for (var p in m) {\r\n if (p !== strDefault && !ObjHasOwnProperty.call(o, p)) {\r\n __createBindingFn(o, m, p);\r\n }\r\n }\r\n}\r\n\r\nexport function __createBindingFn(o: any, m: any, k: any, k2?: any) {\r\n if (k2 === undefined) {\r\n k2 = k;\r\n }\r\n \r\n if (ObjCreate) {\r\n ObjDefineProperty(o, k2, {\r\n enumerable: true,\r\n get() {\r\n return m[k];\r\n }\r\n });\r\n } else {\r\n o[k2] = m[k];\r\n }\r\n}\r\n\r\nexport function __valuesFn(o: any) {\r\n var s = typeof SymbolObj === strShimFunction && SymbolObj[strIterator], m = s && o[s], i = 0;\r\n if (m) {\r\n return m.call(o);\r\n }\r\n\r\n if (o && typeof o.length === \"number\") {\r\n return {\r\n next () {\r\n if (o && i >= o.length) {\r\n o = void 0;\r\n }\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n }\r\n\r\n throwTypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __readFn(o: any, n: any) {\r\n var m = typeof SymbolObj === strShimFunction && o[SymbolObj[strIterator]];\r\n if (!m) {\r\n return o;\r\n }\r\n\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\r\n ar.push(r.value);\r\n }\r\n } catch (error) {\r\n e = {\r\n error\r\n };\r\n } finally {\r\n try {\r\n // tslint:disable-next-line:no-conditional-assignment\r\n if (r && !r.done && (m = i[\"return\"])) {\r\n m.call(i);\r\n }\r\n } finally {\r\n if (e) {\r\n // eslint-disable-next-line no-unsafe-finally\r\n throw e.error;\r\n }\r\n }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArraysFn() {\r\n var theArgs = arguments;\r\n // Calculate new total size\r\n for (var s = 0, i = 0, il = theArgs.length; i < il; i++) {\r\n s += theArgs[i].length;\r\n }\r\n\r\n // Create new full array\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++) {\r\n for (var a = theArgs[i], j = 0, jl = a.length; j < jl; j++, k++) {\r\n r[k] = a[j];\r\n }\r\n }\r\n\r\n return r;\r\n}\r\n\r\nexport function __spreadArrayFn(to: any, from: any) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) {\r\n to[j] = from[i];\r\n }\r\n\r\n return to;\r\n}\r\n\r\nexport function __makeTemplateObjectFn(cooked: any, raw: any) {\r\n if (ObjDefineProperty) {\r\n ObjDefineProperty(cooked, \"raw\", { value: raw });\r\n } else {\r\n cooked.raw = raw;\r\n }\r\n\r\n return cooked;\r\n}\r\n\r\nexport function __importStarFn(mod: any) {\r\n if (mod && mod.__esModule) {\r\n return mod;\r\n }\r\n\r\n var result = {};\r\n if (mod != null) {\r\n for (var k in mod) {\r\n if (k !== strDefault && Object.prototype.hasOwnProperty.call(mod, k)) {\r\n __createBindingFn(result, mod, k);\r\n }\r\n }\r\n }\r\n\r\n // Set default module\r\n if (ObjCreate) {\r\n ObjDefineProperty( result, strDefault, { enumerable: true, value: mod });\r\n } else {\r\n result[strDefault] = mod;\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport function __importDefaultFn(mod:any) {\r\n return (mod && mod.__esModule) ? mod : { strDefault: mod };\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n// @skip-file-minify\r\n// ##############################################################\r\n// AUTO GENERATED FILE: This file is Auto Generated during build.\r\n// ##############################################################\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\nexport var _DYN_INITIALIZE = \"initialize\"; // Count: 8\r\nexport var _DYN_NAME = \"name\"; // Count: 11\r\nexport var _DYN_GET_NOTIFY_MGR = \"getNotifyMgr\"; // Count: 3\r\nexport var _DYN_IDENTIFIER = \"identifier\"; // Count: 8\r\nexport var _DYN_PUSH = \"push\"; // Count: 30\r\nexport var _DYN_IS_INITIALIZED = \"isInitialized\"; // Count: 10\r\nexport var _DYN_CONFIG = \"config\"; // Count: 7\r\nexport var _DYN_INSTRUMENTATION_KEY = \"instrumentationKey\"; // Count: 3\r\nexport var _DYN_LOGGER = \"logger\"; // Count: 9\r\nexport var _DYN_LENGTH = \"length\"; // Count: 43\r\nexport var _DYN_TIME = \"time\"; // Count: 5\r\nexport var _DYN_PROCESS_NEXT = \"processNext\"; // Count: 21\r\nexport var _DYN_GET_PROCESS_TEL_CONT0 = \"getProcessTelContext\"; // Count: 2\r\nexport var _DYN_ADD_NOTIFICATION_LIS1 = \"addNotificationListener\"; // Count: 5\r\nexport var _DYN_REMOVE_NOTIFICATION_2 = \"removeNotificationListener\"; // Count: 5\r\nexport var _DYN_STOP_POLLING_INTERNA3 = \"stopPollingInternalLogs\"; // Count: 2\r\nexport var _DYN_ON_COMPLETE = \"onComplete\"; // Count: 4\r\nexport var _DYN_GET_PLUGIN = \"getPlugin\"; // Count: 5\r\nexport var _DYN_FLUSH = \"flush\"; // Count: 5\r\nexport var _DYN__EXTENSIONS = \"_extensions\"; // Count: 4\r\nexport var _DYN_SPLICE = \"splice\"; // Count: 6\r\nexport var _DYN_TEARDOWN = \"teardown\"; // Count: 10\r\nexport var _DYN_MESSAGE_ID = \"messageId\"; // Count: 4\r\nexport var _DYN_MESSAGE = \"message\"; // Count: 7\r\nexport var _DYN_IS_ASYNC = \"isAsync\"; // Count: 7\r\nexport var _DYN__DO_TEARDOWN = \"_doTeardown\"; // Count: 4\r\nexport var _DYN_UPDATE = \"update\"; // Count: 7\r\nexport var _DYN_GET_NEXT = \"getNext\"; // Count: 12\r\nexport var _DYN_DIAG_LOG = \"diagLog\"; // Count: 8\r\nexport var _DYN_SET_NEXT_PLUGIN = \"setNextPlugin\"; // Count: 5\r\nexport var _DYN_CREATE_NEW = \"createNew\"; // Count: 6\r\nexport var _DYN_COOKIE_CFG = \"cookieCfg\"; // Count: 3\r\nexport var _DYN_INDEX_OF = \"indexOf\"; // Count: 6\r\nexport var _DYN_SUBSTRING = \"substring\"; // Count: 10\r\nexport var _DYN_USER_AGENT = \"userAgent\"; // Count: 5\r\nexport var _DYN_SPLIT = \"split\"; // Count: 5\r\nexport var _DYN_SET_ENABLED = \"setEnabled\"; // Count: 5\r\nexport var _DYN_SUBSTR = \"substr\"; // Count: 6\r\nexport var _DYN_NODE_TYPE = \"nodeType\"; // Count: 3\r\nexport var _DYN_APPLY = \"apply\"; // Count: 6\r\nexport var _DYN_REPLACE = \"replace\"; // Count: 9\r\nexport var _DYN_ENABLE_DEBUG_EXCEPTI4 = \"enableDebugExceptions\"; // Count: 2\r\nexport var _DYN_LOG_INTERNAL_MESSAGE = \"logInternalMessage\"; // Count: 2\r\nexport var _DYN_TO_LOWER_CASE = \"toLowerCase\"; // Count: 5\r\nexport var _DYN_CALL = \"call\"; // Count: 18\r\nexport var _DYN_TYPE = \"type\"; // Count: 14\r\nexport var _DYN_HANDLER = \"handler\"; // Count: 5\r\nexport var _DYN_LISTENERS = \"listeners\"; // Count: 6\r\nexport var _DYN_IS_CHILD_EVT = \"isChildEvt\"; // Count: 3\r\nexport var _DYN_GET_CTX = \"getCtx\"; // Count: 6\r\nexport var _DYN_SET_CTX = \"setCtx\"; // Count: 10\r\nexport var _DYN_COMPLETE = \"complete\"; // Count: 3\r\nexport var _DYN_TRACE_ID = \"traceId\"; // Count: 5\r\nexport var _DYN_SPAN_ID = \"spanId\"; // Count: 5\r\nexport var _DYN_TRACE_FLAGS = \"traceFlags\"; // Count: 6\r\nexport var _DYN_VERSION = \"version\"; // Count: 4\r\n//# sourceMappingURL=__DynamicConstants.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\nexport var STR_EMPTY = \"\";\r\nexport var STR_CHANNELS = \"channels\";\r\nexport var STR_CORE = \"core\";\r\nexport var STR_CREATE_PERF_MGR = \"createPerfMgr\";\r\nexport var STR_DISABLED = \"disabled\";\r\nexport var STR_EXTENSION_CONFIG = \"extensionConfig\";\r\nexport var STR_EXTENSIONS = \"extensions\";\r\nexport var STR_PROCESS_TELEMETRY = \"processTelemetry\";\r\nexport var STR_PRIORITY = \"priority\";\r\nexport var STR_EVENTS_SENT = \"eventsSent\";\r\nexport var STR_EVENTS_DISCARDED = \"eventsDiscarded\";\r\nexport var STR_EVENTS_SEND_REQUEST = \"eventsSendRequest\";\r\nexport var STR_PERF_EVENT = \"perfEvent\";\r\nexport var STR_ERROR_TO_CONSOLE = \"errorToConsole\";\r\nexport var STR_WARN_TO_CONSOLE = \"warnToConsole\";\r\nexport var STR_GET_PERF_MGR = \"getPerfMgr\";\r\n//# sourceMappingURL=InternalConstants.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { ObjAssign, ObjClass, ObjDefineProperty, ObjHasOwnProperty, ObjProto, strShimFunction, strShimObject, strShimPrototype, strShimUndefined, throwTypeError } from \"@microsoft/applicationinsights-shims\";\r\nimport { _DYN_APPLY, _DYN_CALL, _DYN_INDEX_OF, _DYN_LENGTH, _DYN_NAME, _DYN_PUSH, _DYN_REPLACE } from \"../__DynamicConstants\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\n// RESTRICT and AVOID circular dependencies you should not import other contained modules or export the contents of this file directly\r\n// Added to help with minfication\r\nvar strToISOString = \"toISOString\";\r\nvar cStrEndsWith = \"endsWith\";\r\nvar cStrStartsWith = \"startsWith\";\r\nvar strIndexOf = \"indexOf\";\r\nvar strMap = \"map\";\r\nvar strReduce = \"reduce\";\r\nvar cStrTrim = \"trim\";\r\nvar strToString = \"toString\";\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar str__Proto = \"__proto__\";\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar strConstructor = \"constructor\";\r\nvar _objDefineProperty = ObjDefineProperty;\r\nvar _objFreeze = ObjClass.freeze;\r\nvar _objSeal = ObjClass.seal;\r\nvar _objKeys = ObjClass.keys;\r\nvar StringProto = String[strShimPrototype];\r\nvar _strTrim = StringProto[cStrTrim];\r\nvar _strEndsWith = StringProto[cStrEndsWith];\r\nvar _strStartsWith = StringProto[cStrStartsWith];\r\nvar DateProto = Date[strShimPrototype];\r\nvar _dataToISOString = DateProto[strToISOString];\r\nvar _isArray = Array.isArray;\r\nvar _objToString = ObjProto[strToString];\r\nvar _fnToString = ObjHasOwnProperty[strToString];\r\n// Cache what this browser reports as the object function constructor (as a string)\r\nvar _objFunctionString = _fnToString[_DYN_CALL /* @min:%2ecall */](ObjClass);\r\nvar rCamelCase = /-([a-z])/g;\r\nvar rNormalizeInvalid = /([^\\w\\d_$])/g;\r\nvar rLeadingNumeric = /^(\\d+[\\w\\d_$])/;\r\n/**\r\n * Pre-lookup to check if we are running on a modern browser (i.e. not IE8)\r\n * @ignore\r\n */\r\nvar _objGetPrototypeOf = Object[\"getPrototypeOf\"];\r\n/**\r\n * Helper used to get the prototype of the target object as getPrototypeOf is not available in an ES3 environment.\r\n * @ignore\r\n */\r\nexport function _getObjProto(target) {\r\n if (target) {\r\n // This method doesn't existing in older browsers (e.g. IE8)\r\n if (_objGetPrototypeOf) {\r\n return _objGetPrototypeOf(target);\r\n }\r\n // target[Constructor] May break if the constructor has been changed or removed\r\n var newProto = target[str__Proto] || target[strShimPrototype] || target[strConstructor];\r\n if (newProto) {\r\n return newProto;\r\n }\r\n }\r\n return null;\r\n}\r\nexport function objToString(obj) {\r\n return _objToString[_DYN_CALL /* @min:%2ecall */](obj);\r\n}\r\nexport function isTypeof(value, theType) {\r\n return typeof value === theType;\r\n}\r\nexport function isUndefined(value) {\r\n return value === undefined || typeof value === strShimUndefined;\r\n}\r\nexport function isNotUndefined(value) {\r\n return !isUndefined(value);\r\n}\r\nexport function isNullOrUndefined(value) {\r\n return (value === null || isUndefined(value));\r\n}\r\nexport function isNotNullOrUndefined(value) {\r\n return !isNullOrUndefined(value);\r\n}\r\nexport function hasOwnProperty(obj, prop) {\r\n return !!(obj && ObjHasOwnProperty[_DYN_CALL /* @min:%2ecall */](obj, prop));\r\n}\r\nexport function isObject(value) {\r\n // Changing to inline for performance\r\n return !!(value && typeof value === strShimObject);\r\n}\r\nexport function isFunction(value) {\r\n // Changing to inline for performance\r\n return !!(value && typeof value === strShimFunction);\r\n}\r\nexport function isPromiseLike(value) {\r\n return value && isFunction(value.then);\r\n}\r\n/**\r\n * Validates that the string name conforms to the JS IdentifierName specification and if not\r\n * normalizes the name so that it would. This method does not identify or change any keywords\r\n * meaning that if you pass in a known keyword the same value will be returned.\r\n * This is a simplified version\r\n * @param name The name to validate\r\n */\r\nexport function normalizeJsName(name) {\r\n var value = name;\r\n if (value && isString(value)) {\r\n // CamelCase everything after the \"-\" and remove the dash\r\n value = value[_DYN_REPLACE /* @min:%2ereplace */](rCamelCase, function (_all, letter) {\r\n return letter.toUpperCase();\r\n });\r\n value = value[_DYN_REPLACE /* @min:%2ereplace */](rNormalizeInvalid, \"_\");\r\n value = value[_DYN_REPLACE /* @min:%2ereplace */](rLeadingNumeric, function (_all, match) {\r\n return \"_\" + match;\r\n });\r\n }\r\n return value;\r\n}\r\n/**\r\n * This is a helper function for the equivalent of arForEach(objKeys(target), callbackFn), this is a\r\n * performance optimization to avoid the creation of a new array for large objects\r\n * @param target The target object to find and process the keys\r\n * @param callbackfn The function to call with the details\r\n */\r\nexport function objForEachKey(target, callbackfn) {\r\n if (target) {\r\n for (var prop in target) {\r\n if (ObjHasOwnProperty[_DYN_CALL /* @min:%2ecall */](target, prop)) {\r\n callbackfn[_DYN_CALL /* @min:%2ecall */](target, prop, target[prop]);\r\n }\r\n }\r\n }\r\n}\r\n/**\r\n * The strEndsWith() method determines whether a string ends with the characters of a specified string, returning true or false as appropriate.\r\n * @param value - The value to check whether it ends with the search value.\r\n * @param search - The characters to be searched for at the end of the value.\r\n * @returns true if the given search value is found at the end of the string, otherwise false.\r\n */\r\nexport function strEndsWith(value, search) {\r\n var result = false;\r\n if (value && search && !(result = value === search)) {\r\n // For Performance try and use the native instance, using string lookup of the function to easily pass the ES3 build checks and minification\r\n result = _strEndsWith ? value[cStrEndsWith](search) : _strEndsWithPoly(value, search);\r\n }\r\n return result;\r\n}\r\n/**\r\n * The _strEndsWith() method determines whether a string ends with the characters of a specified string, returning true or false as appropriate.\r\n * @param value - The value to check whether it ends with the search value.\r\n * @param search - The characters to be searched for at the end of the value.\r\n * @returns true if the given search value is found at the end of the string, otherwise false.\r\n */\r\nexport function _strEndsWithPoly(value, search) {\r\n var result = false;\r\n var searchLen = search ? search[_DYN_LENGTH /* @min:%2elength */] : 0;\r\n var valLen = value ? value[_DYN_LENGTH /* @min:%2elength */] : 0;\r\n if (searchLen && valLen && valLen >= searchLen && !(result = value === search)) {\r\n var pos = valLen - 1;\r\n for (var lp = searchLen - 1; lp >= 0; lp--) {\r\n if (value[pos] != search[lp]) {\r\n return false;\r\n }\r\n pos--;\r\n }\r\n result = true;\r\n }\r\n return result;\r\n}\r\n/**\r\n * The strStartsWith() method determines whether a string starts with the characters of the specified string, returning true or false as appropriate.\r\n * @param value - The value to check whether it ends with the search value.\r\n * @param checkValue - The characters to be searched for at the start of the value.\r\n * @returns true if the given search value is found at the start of the string, otherwise false.\r\n */\r\nexport function strStartsWith(value, checkValue) {\r\n var result = false;\r\n if (value && checkValue && !(result = value === checkValue)) {\r\n // For Performance try and use the native instance, using string lookup of the function to easily pass the ES3 build checks and minification\r\n result = _strStartsWith ? value[cStrStartsWith](checkValue) : _strStartsWithPoly(value, checkValue);\r\n }\r\n return result;\r\n}\r\n/**\r\n * The strStartsWith() method determines whether a string starts with the characters of the specified string, returning true or false as appropriate.\r\n * @param value - The value to check whether it ends with the search value.\r\n * @param checkValue - The characters to be searched for at the start of the value.\r\n * @returns true if the given search value is found at the start of the string, otherwise false.\r\n */\r\nexport function _strStartsWithPoly(value, checkValue) {\r\n // Using helper for performance and because string startsWith() is not available on IE\r\n var result = false;\r\n var chkLen = checkValue ? checkValue[_DYN_LENGTH /* @min:%2elength */] : 0;\r\n if (value && chkLen && value[_DYN_LENGTH /* @min:%2elength */] >= chkLen && !(result = value === checkValue)) {\r\n for (var lp = 0; lp < chkLen; lp++) {\r\n if (value[lp] !== checkValue[lp]) {\r\n return false;\r\n }\r\n }\r\n result = true;\r\n }\r\n return result;\r\n}\r\n/**\r\n * A simple wrapper (for minification support) to check if the value contains the search string.\r\n * @param value - The string value to check for the existence of the search value\r\n * @param search - The value search within the value\r\n */\r\nexport function strContains(value, search) {\r\n if (value && search) {\r\n return value[_DYN_INDEX_OF /* @min:%2eindexOf */](search) !== -1;\r\n }\r\n return false;\r\n}\r\n/**\r\n * Check if an object is of type Date\r\n */\r\nexport function isDate(obj) {\r\n return !!(obj && _objToString[_DYN_CALL /* @min:%2ecall */](obj) === \"[object Date]\");\r\n}\r\n/**\r\n * Check if an object is of type Array with optional generic T, the generic type is not validated\r\n * and exists to help with TypeScript validation only.\r\n */\r\nexport var isArray = _isArray || _isArrayPoly;\r\nfunction _isArrayPoly(obj) {\r\n return !!(obj && _objToString[_DYN_CALL /* @min:%2ecall */](obj) === \"[object Array]\");\r\n}\r\n/**\r\n * Check if an object is of type Error\r\n */\r\nexport function isError(obj) {\r\n return !!(obj && _objToString[_DYN_CALL /* @min:%2ecall */](obj) === \"[object Error]\");\r\n}\r\n/**\r\n * Checks if the type of value is a string.\r\n * @param {any} value - Value to be checked.\r\n * @return {boolean} True if the value is a string, false otherwise.\r\n */\r\nexport function isString(value) {\r\n // Changing to inline for performance\r\n return typeof value === \"string\";\r\n}\r\n/**\r\n * Checks if the type of value is a number.\r\n * @param {any} value - Value to be checked.\r\n * @return {boolean} True if the value is a number, false otherwise.\r\n */\r\nexport function isNumber(value) {\r\n // Changing to inline for performance\r\n return typeof value === \"number\";\r\n}\r\n/**\r\n * Checks if the type of value is a boolean.\r\n * @param {any} value - Value to be checked.\r\n * @return {boolean} True if the value is a boolean, false otherwise.\r\n */\r\nexport function isBoolean(value) {\r\n // Changing to inline for performance\r\n return typeof value === \"boolean\";\r\n}\r\n/**\r\n * Checks if the type of value is a Symbol.\r\n * This only returns a boolean as returning value is Symbol will cause issues for older TypeScript consumers\r\n * @param {any} value - Value to be checked.\r\n * @return {boolean} True if the value is a Symbol, false otherwise.\r\n */\r\nexport function isSymbol(value) {\r\n return typeof value === \"symbol\";\r\n}\r\n/**\r\n * Checks if the type of the value is a normal plain object (not a null or data)\r\n * @param value\r\n */\r\nexport function isPlainObject(value) {\r\n var result = false;\r\n if (value && typeof value === \"object\") {\r\n // Inlining _objGetPrototypeOf for performance to avoid an additional function call\r\n var proto = _objGetPrototypeOf ? _objGetPrototypeOf(value) : _getObjProto(value);\r\n if (!proto) {\r\n // No prototype found so this is a plain Object eg. 'Object.create(null)'\r\n result = true;\r\n }\r\n else {\r\n // Objects that have a prototype are plain only if they were created using the Object global (native) function\r\n if (proto[strConstructor] && ObjHasOwnProperty[_DYN_CALL /* @min:%2ecall */](proto, strConstructor)) {\r\n proto = proto[strConstructor];\r\n }\r\n result = typeof proto === strShimFunction && _fnToString[_DYN_CALL /* @min:%2ecall */](proto) === _objFunctionString;\r\n }\r\n }\r\n return result;\r\n}\r\n/**\r\n * Convert a date to I.S.O. format in IE8\r\n */\r\nexport function toISOString(date) {\r\n if (date) {\r\n // For Performance try and use the native instance, using string lookup of the function to easily pass the ES3 build checks and minification\r\n return _dataToISOString ? date[strToISOString]() : _toISOStringPoly(date);\r\n }\r\n}\r\n/**\r\n * Convert a date to I.S.O. format in IE8\r\n */\r\nexport function _toISOStringPoly(date) {\r\n if (date && date.getUTCFullYear) {\r\n var pad = function (num) {\r\n var r = String(num);\r\n if (r[_DYN_LENGTH /* @min:%2elength */] === 1) {\r\n r = \"0\" + r;\r\n }\r\n return r;\r\n };\r\n return date.getUTCFullYear()\r\n + \"-\" + pad(date.getUTCMonth() + 1)\r\n + \"-\" + pad(date.getUTCDate())\r\n + \"T\" + pad(date.getUTCHours())\r\n + \":\" + pad(date.getUTCMinutes())\r\n + \":\" + pad(date.getUTCSeconds())\r\n + \".\" + String((date.getUTCMilliseconds() / 1000).toFixed(3)).slice(2, 5)\r\n + \"Z\";\r\n }\r\n}\r\n/**\r\n * Performs the specified action for each element in an array. This helper exists to avoid adding a polyfil for older browsers\r\n * that do not define Array.prototype.xxxx (eg. ES3 only, IE8) just in case any page checks for presence/absence of the prototype\r\n * implementation. Note: For consistency this will not use the Array.prototype.xxxx implementation if it exists as this would\r\n * cause a testing requirement to test with and without the implementations\r\n * @param callbackfn A function that accepts up to three arguments. forEach calls the callbackfn function one time for each element in the array. It can return -1 to break out of the loop\r\n * @param thisArg [Optional] An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.\r\n */\r\nexport function arrForEach(arr, callbackfn, thisArg) {\r\n var len = arr[_DYN_LENGTH /* @min:%2elength */];\r\n try {\r\n for (var idx = 0; idx < len; idx++) {\r\n if (idx in arr) {\r\n if (callbackfn[_DYN_CALL /* @min:%2ecall */](thisArg || arr, arr[idx], idx, arr) === -1) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // This can happen with some native browser objects, but should not happen for the type we are checking for\r\n }\r\n}\r\n/**\r\n * Returns the index of the first occurrence of a value in an array. This helper exists to avoid adding a polyfil for older browsers\r\n * that do not define Array.prototype.xxxx (eg. ES3 only, IE8) just in case any page checks for presence/absence of the prototype\r\n * implementation. Note: For consistency this will not use the Array.prototype.xxxx implementation if it exists as this would\r\n * cause a testing requirement to test with and without the implementations\r\n * @param searchElement The value to locate in the array.\r\n * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the search starts at index 0.\r\n */\r\nexport function arrIndexOf(arr, searchElement, fromIndex) {\r\n if (arr) {\r\n // For Performance try and use the native instance, using string lookup of the function to easily pass the ES3 build checks and minification\r\n if (arr[strIndexOf]) {\r\n return arr[strIndexOf](searchElement, fromIndex);\r\n }\r\n var len = arr[_DYN_LENGTH /* @min:%2elength */];\r\n var from = fromIndex || 0;\r\n try {\r\n for (var lp = Math.max(from >= 0 ? from : len - Math.abs(from), 0); lp < len; lp++) {\r\n if (lp in arr && arr[lp] === searchElement) {\r\n return lp;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // This can happen with some native browser objects, but should not happen for the type we are checking for\r\n }\r\n }\r\n return -1;\r\n}\r\n/**\r\n * Calls a defined callback function on each element of an array, and returns an array that contains the results. This helper exists\r\n * to avoid adding a polyfil for older browsers that do not define Array.prototype.xxxx (eg. ES3 only, IE8) just in case any page\r\n * checks for presence/absence of the prototype implementation. Note: For consistency this will not use the Array.prototype.xxxx\r\n * implementation if it exists as this would cause a testing requirement to test with and without the implementations\r\n * @param callbackfn A function that accepts up to three arguments. The map method calls the callbackfn function one time for each element in the array.\r\n * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.\r\n */\r\nexport function arrMap(arr, callbackfn, thisArg) {\r\n var results;\r\n if (arr) {\r\n // For Performance try and use the native instance, using string lookup of the function to easily pass the ES3 build checks and minification\r\n if (arr[strMap]) {\r\n return arr[strMap](callbackfn, thisArg);\r\n }\r\n var len = arr[_DYN_LENGTH /* @min:%2elength */];\r\n var _this = thisArg || arr;\r\n results = new Array(len);\r\n try {\r\n for (var lp = 0; lp < len; lp++) {\r\n if (lp in arr) {\r\n results[lp] = callbackfn[_DYN_CALL /* @min:%2ecall */](_this, arr[lp], arr);\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // This can happen with some native browser objects, but should not happen for the type we are checking for\r\n }\r\n }\r\n return results;\r\n}\r\n/**\r\n * Calls the specified callback function for all the elements in an array. The return value of the callback function is the accumulated result, and is\r\n * provided as an argument in the next call to the callback function. This helper exists to avoid adding a polyfil for older browsers that do not define\r\n * Array.prototype.xxxx (eg. ES3 only, IE8) just in case any page checks for presence/absence of the prototype implementation. Note: For consistency\r\n * this will not use the Array.prototype.xxxx implementation if it exists as this would cause a testing requirement to test with and without the implementations\r\n * @param callbackfn A function that accepts up to four arguments. The reduce method calls the callbackfn function one time for each element in the array.\r\n * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value.\r\n */\r\nexport function arrReduce(arr, callbackfn, initialValue) {\r\n var value;\r\n if (arr) {\r\n // For Performance try and use the native instance, using string lookup of the function to easily pass the ES3 build checks and minification\r\n if (arr[strReduce]) {\r\n return arr[strReduce](callbackfn, initialValue);\r\n }\r\n var len = arr[_DYN_LENGTH /* @min:%2elength */];\r\n var lp = 0;\r\n // Specifically checking the number of passed arguments as the value could be anything\r\n if (arguments[_DYN_LENGTH /* @min:%2elength */] >= 3) {\r\n value = arguments[2];\r\n }\r\n else {\r\n while (lp < len && !(lp in arr)) {\r\n lp++;\r\n }\r\n value = arr[lp++];\r\n }\r\n while (lp < len) {\r\n if (lp in arr) {\r\n value = callbackfn(value, arr[lp], lp, arr);\r\n }\r\n lp++;\r\n }\r\n }\r\n return value;\r\n}\r\n/**\r\n * helper method to trim strings (IE8 does not implement String.prototype.trim)\r\n */\r\nexport function strTrim(str) {\r\n if (str) {\r\n // For Performance try and use the native instance, using string lookup of the function to easily pass the ES3 build checks and minification\r\n str = (_strTrim && str[cStrTrim]) ? str[cStrTrim]() : (str[_DYN_REPLACE /* @min:%2ereplace */] ? str[_DYN_REPLACE /* @min:%2ereplace */](/^\\s+|\\s+$/g, STR_EMPTY) : str);\r\n }\r\n return str;\r\n}\r\nvar _objKeysHasDontEnumBug = !({ toString: null }).propertyIsEnumerable(\"toString\");\r\nvar _objKeysDontEnums = [\r\n \"toString\",\r\n \"toLocaleString\",\r\n \"valueOf\",\r\n \"hasOwnProperty\",\r\n \"isPrototypeOf\",\r\n \"propertyIsEnumerable\",\r\n \"constructor\"\r\n];\r\n/**\r\n * Returns the names of the enumerable string properties and methods of an object. This helper exists to avoid adding a polyfil for older browsers\r\n * that do not define Object.keys eg. ES3 only, IE8 just in case any page checks for presence/absence of the prototype implementation.\r\n * Note: For consistency this will not use the Object.keys implementation if it exists as this would cause a testing requirement to test with and without the implementations\r\n * @param obj Object that contains the properties and methods. This can be an object that you created or an existing Document Object Model (DOM) object.\r\n */\r\nexport function objKeys(obj) {\r\n var objType = typeof obj;\r\n if (objType !== strShimFunction && (objType !== strShimObject || obj === null)) {\r\n throwTypeError(\"objKeys called on non-object\");\r\n }\r\n // For Performance try and use the native instance, using string lookup of the function to easily pass the ES3 build checks and minification\r\n if (!_objKeysHasDontEnumBug && _objKeys) {\r\n return _objKeys(obj);\r\n }\r\n var result = [];\r\n for (var prop in obj) {\r\n if (obj && ObjHasOwnProperty[_DYN_CALL /* @min:%2ecall */](obj, prop)) {\r\n result[_DYN_PUSH /* @min:%2epush */](prop);\r\n }\r\n }\r\n if (_objKeysHasDontEnumBug) {\r\n var dontEnumsLength = _objKeysDontEnums[_DYN_LENGTH /* @min:%2elength */];\r\n for (var lp = 0; lp < dontEnumsLength; lp++) {\r\n if (obj && ObjHasOwnProperty[_DYN_CALL /* @min:%2ecall */](obj, _objKeysDontEnums[lp])) {\r\n result[_DYN_PUSH /* @min:%2epush */](_objKeysDontEnums[lp]);\r\n }\r\n }\r\n }\r\n return result;\r\n}\r\n/**\r\n * Try to define get/set object property accessors for the target object/prototype, this will provide compatibility with\r\n * existing API definition when run within an ES5+ container that supports accessors but still enable the code to be loaded\r\n * and executed in an ES3 container, providing basic IE8 compatibility.\r\n * @param target The object on which to define the property.\r\n * @param prop The name of the property to be defined or modified.\r\n * @param getProp The getter function to wire against the getter.\r\n * @param setProp The setter function to wire against the setter.\r\n * @returns True if it was able to create the accessors otherwise false\r\n */\r\nexport function objDefineAccessors(target, prop, getProp, setProp) {\r\n if (_objDefineProperty) {\r\n try {\r\n var descriptor = {\r\n enumerable: true,\r\n configurable: true\r\n };\r\n if (getProp) {\r\n descriptor.get = getProp;\r\n }\r\n if (setProp) {\r\n descriptor.set = setProp;\r\n }\r\n _objDefineProperty(target, prop, descriptor);\r\n return true;\r\n }\r\n catch (e) {\r\n // IE8 Defines a defineProperty on Object but it's only supported for DOM elements so it will throw\r\n // We will just ignore this here.\r\n }\r\n }\r\n return false;\r\n}\r\nfunction _doNothing(value) {\r\n return value;\r\n}\r\nexport function deepFreeze(obj) {\r\n if (_objFreeze) {\r\n objForEachKey(obj, function (name, value) {\r\n if (isArray(value) || isObject(value)) {\r\n _objFreeze(value);\r\n }\r\n });\r\n }\r\n return objFreeze(obj);\r\n}\r\nexport var objFreeze = _objFreeze || _doNothing;\r\nexport var objSeal = _objSeal || _doNothing;\r\n/**\r\n * Return the current time via the Date now() function (if available) and falls back to (new Date()).getTime() if now() is unavailable (IE8 or less)\r\n * https://caniuse.com/#search=Date.now\r\n */\r\nexport function dateNow() {\r\n var dt = Date;\r\n return dt.now ? dt.now() : new dt().getTime();\r\n}\r\n/**\r\n * Returns the name of object if it's an Error. Otherwise, returns empty string.\r\n */\r\nexport function getExceptionName(object) {\r\n if (isError(object)) {\r\n return object[_DYN_NAME /* @min:%2ename */];\r\n }\r\n return STR_EMPTY;\r\n}\r\n/**\r\n * Sets the provided value on the target instance using the field name when the provided chk function returns true, the chk\r\n * function will only be called if the new value is no equal to the original value.\r\n * @param target - The target object\r\n * @param field - The key of the target\r\n * @param value - The value to set\r\n * @param valChk - [Optional] Callback to check the value that if supplied will be called check if the new value can be set\r\n * @param srcChk - [Optional] Callback to check to original value that if supplied will be called if the new value should be set (if allowed)\r\n * @returns The existing or new value, depending what was set\r\n */\r\nexport function setValue(target, field, value, valChk, srcChk) {\r\n var theValue = value;\r\n if (target) {\r\n theValue = target[field];\r\n if (theValue !== value && (!srcChk || srcChk(theValue)) && (!valChk || valChk(value))) {\r\n theValue = value;\r\n target[field] = theValue;\r\n }\r\n }\r\n return theValue;\r\n}\r\n/**\r\n * Returns the current value from the target object if not null or undefined otherwise sets the new value and returns it\r\n * @param target - The target object to return or set the default value\r\n * @param field - The key for the field to set on the target\r\n * @param defValue - [Optional] The value to set if not already present, when not provided a empty object will be added\r\n */\r\nexport function getSetValue(target, field, defValue) {\r\n var theValue;\r\n if (target) {\r\n theValue = target[field];\r\n if (!theValue && isNullOrUndefined(theValue)) {\r\n // Supports having the default as null\r\n theValue = !isUndefined(defValue) ? defValue : {};\r\n target[field] = theValue;\r\n }\r\n }\r\n else {\r\n // Expanded for performance so we only check defValue if required\r\n theValue = !isUndefined(defValue) ? defValue : {};\r\n }\r\n return theValue;\r\n}\r\n/**\r\n * Get the mapped config value, if null or undefined any supplied defaultValue will be returned.\r\n * @param field - The name of the field as the named enum value (number) or the string name.\r\n * @param defaultValue - The default value to return if the config field is not present, null or undefined.\r\n */\r\nexport function getCfgValue(theValue, defaultValue) {\r\n return !isNullOrUndefined(theValue) ? theValue : defaultValue;\r\n}\r\nexport function isNotTruthy(value) {\r\n return !value;\r\n}\r\nexport function isTruthy(value) {\r\n return !!value;\r\n}\r\nexport function throwError(message) {\r\n throw new Error(message);\r\n}\r\nfunction _createProxyFunction(source, funcName) {\r\n var srcFunc = null;\r\n var src = null;\r\n if (isFunction(source)) {\r\n srcFunc = source;\r\n }\r\n else {\r\n src = source;\r\n }\r\n return function () {\r\n // Capture the original arguments passed to the method\r\n var originalArguments = arguments;\r\n if (srcFunc) {\r\n src = srcFunc();\r\n }\r\n if (src) {\r\n return src[funcName][_DYN_APPLY /* @min:%2eapply */](src, originalArguments);\r\n }\r\n };\r\n}\r\n/**\r\n * Effectively assigns all enumerable properties (not just own properties) and functions (including inherited prototype) from\r\n * the source object to the target, it attempts to use proxy getters / setters (if possible) and proxy functions to avoid potential\r\n * implementation issues by assigning prototype functions as instance ones\r\n *\r\n * This method is the primary method used to \"update\" the snippet proxy with the ultimate implementations.\r\n *\r\n * Special ES3 Notes:\r\n * Updates (setting) of direct property values on the target or indirectly on the source object WILL NOT WORK PROPERLY, updates to the\r\n * properties of \"referenced\" object will work (target.context.newValue = 10 => will be reflected in the source.context as it's the\r\n * same object). ES3 Failures: assigning target.myProp = 3 -> Won't change source.myProp = 3, likewise the reverse would also fail.\r\n * @param target - The target object to be assigned with the source properties and functions\r\n * @param source - The source object which will be assigned / called by setting / calling the targets proxies\r\n * @param chkSet - An optional callback to determine whether a specific property/function should be proxied\r\n */\r\nexport function proxyAssign(target, source, chkSet) {\r\n if (target && source && isObject(target) && isObject(source)) {\r\n var _loop_1 = function (field) {\r\n if (isString(field)) {\r\n var value = source[field];\r\n if (isFunction(value)) {\r\n if (!chkSet || chkSet(field, true, source, target)) {\r\n // Create a proxy function rather than just copying the (possible) prototype to the new object as an instance function\r\n target[field] = _createProxyFunction(source, field);\r\n }\r\n }\r\n else if (!chkSet || chkSet(field, false, source, target)) {\r\n if (hasOwnProperty(target, field)) {\r\n // Remove any previous instance property\r\n delete target[field];\r\n }\r\n if (!objDefineAccessors(target, field, function () {\r\n return source[field];\r\n }, function (theValue) {\r\n source[field] = theValue;\r\n })) {\r\n // Unable to create an accessor, so just assign the values as a fallback\r\n // -- this will (mostly) work for objects\r\n // -- but will fail for accessing primitives (if the source changes it) and all types of \"setters\" as the source won't be modified\r\n target[field] = value;\r\n }\r\n }\r\n }\r\n };\r\n // effectively apply/proxy full source to the target instance\r\n for (var field in source) {\r\n _loop_1(field);\r\n }\r\n }\r\n return target;\r\n}\r\n/**\r\n * Creates a proxy function on the target which internally will call the source version with all arguments passed to the target method.\r\n *\r\n * @param target - The target object to be assigned with the source properties and functions\r\n * @param name - The function name that will be added on the target\r\n * @param source - The source object which will be assigned / called by setting / calling the targets proxies\r\n * @param theFunc - The function name on the source that will be proxied on the target\r\n * @param overwriteTarget - If `false` this will not replace any pre-existing name otherwise (the default) it will overwrite any existing name\r\n */\r\nexport function proxyFunctionAs(target, name, source, theFunc, overwriteTarget) {\r\n if (target && name && source) {\r\n if (overwriteTarget !== false || isUndefined(target[name])) {\r\n target[name] = _createProxyFunction(source, theFunc);\r\n }\r\n }\r\n}\r\n/**\r\n * Creates proxy functions on the target which internally will call the source version with all arguments passed to the target method.\r\n *\r\n * @param target - The target object to be assigned with the source properties and functions\r\n * @param source - The source object which will be assigned / called by setting / calling the targets proxies\r\n * @param functionsToProxy - An array of function names that will be proxied on the target\r\n * @param overwriteTarget - If false this will not replace any pre-existing name otherwise (the default) it will overwrite any existing name\r\n */\r\nexport function proxyFunctions(target, source, functionsToProxy, overwriteTarget) {\r\n if (target && source && isObject(target) && isArray(functionsToProxy)) {\r\n arrForEach(functionsToProxy, function (theFuncName) {\r\n if (isString(theFuncName)) {\r\n proxyFunctionAs(target, theFuncName, source, theFuncName, overwriteTarget);\r\n }\r\n });\r\n }\r\n return target;\r\n}\r\n/**\r\n * Simpler helper to create a dynamic class that implements the interface and populates the values with the defaults.\r\n * Only instance properties (hasOwnProperty) values are copied from the defaults to the new instance\r\n * @param defaults Simple helper\r\n */\r\nexport function createClassFromInterface(defaults) {\r\n return /** @class */ (function () {\r\n function class_1() {\r\n var _this_1 = this;\r\n if (defaults) {\r\n objForEachKey(defaults, function (field, value) {\r\n _this_1[field] = value;\r\n });\r\n }\r\n }\r\n return class_1;\r\n }());\r\n}\r\n/**\r\n * A helper function to assist with JIT performance for objects that have properties added / removed dynamically\r\n * this is primarily for chromium based browsers and has limited effects on Firefox and none of IE. Only call this\r\n * function after you have finished \"updating\" the object, calling this within loops reduces or defeats the benefits.\r\n * This helps when iterating using for..in, objKeys() and objForEach()\r\n * @param theObject - The object to be optimized if possible\r\n */\r\nexport function optimizeObject(theObject) {\r\n // V8 Optimization to cause the JIT compiler to create a new optimized object for looking up the own properties\r\n // primarily for object with <= 19 properties for >= 20 the effect is reduced or non-existent\r\n if (theObject && ObjAssign) {\r\n theObject = ObjClass(ObjAssign({}, theObject));\r\n }\r\n return theObject;\r\n}\r\nexport function objExtend(obj1, obj2, obj3, obj4, obj5, obj6) {\r\n // Variables\r\n var theArgs = arguments;\r\n var extended = theArgs[0] || {};\r\n var argLen = theArgs[_DYN_LENGTH /* @min:%2elength */];\r\n var deep = false;\r\n var idx = 1;\r\n // Check for \"Deep\" flag\r\n if (argLen > 0 && isBoolean(extended)) {\r\n deep = extended;\r\n extended = theArgs[idx] || {};\r\n idx++;\r\n }\r\n // Handle case when target is a string or something (possible in deep copy)\r\n if (!isObject(extended)) {\r\n extended = {};\r\n }\r\n // Loop through each remaining object and conduct a merge\r\n for (; idx < argLen; idx++) {\r\n var arg = theArgs[idx];\r\n var isArgArray = isArray(arg);\r\n var isArgObj = isObject(arg);\r\n for (var prop in arg) {\r\n var propOk = (isArgArray && (prop in arg)) || (isArgObj && (ObjHasOwnProperty[_DYN_CALL /* @min:%2ecall */](arg, prop)));\r\n if (!propOk) {\r\n continue;\r\n }\r\n var newValue = arg[prop];\r\n var isNewArray = void 0;\r\n // If deep merge and property is an object, merge properties\r\n if (deep && newValue && ((isNewArray = isArray(newValue)) || isPlainObject(newValue))) {\r\n // Grab the current value of the extended object\r\n var clone = extended[prop];\r\n if (isNewArray) {\r\n if (!isArray(clone)) {\r\n // We can't \"merge\" an array with a non-array so overwrite the original\r\n clone = [];\r\n }\r\n }\r\n else if (!isPlainObject(clone)) {\r\n // We can't \"merge\" an object with a non-object\r\n clone = {};\r\n }\r\n // Never move the original objects always clone them\r\n newValue = objExtend(deep, clone, newValue);\r\n }\r\n // Assign the new (or previous) value (unless undefined)\r\n if (newValue !== undefined) {\r\n extended[prop] = newValue;\r\n }\r\n }\r\n }\r\n return extended;\r\n}\r\n//# sourceMappingURL=HelperFuncs.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n// @skip-file-minify\r\n// ##############################################################\r\n// AUTO GENERATED FILE: This file is Auto Generated during build.\r\n// ##############################################################\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\nexport var _DYN_SPLIT = \"split\"; // Count: 6\r\nexport var _DYN_LENGTH = \"length\"; // Count: 40\r\nexport var _DYN_TO_LOWER_CASE = \"toLowerCase\"; // Count: 6\r\nexport var _DYN_INGESTIONENDPOINT = \"ingestionendpoint\"; // Count: 4\r\nexport var _DYN_TO_STRING = \"toString\"; // Count: 12\r\nexport var _DYN_REMOVE_ITEM = \"removeItem\"; // Count: 3\r\nexport var _DYN_NAME = \"name\"; // Count: 11\r\nexport var _DYN_PATHNAME = \"pathname\"; // Count: 4\r\nexport var _DYN_CORRELATION_HEADER_E0 = \"correlationHeaderExcludePatterns\"; // Count: 2\r\nexport var _DYN_INDEX_OF = \"indexOf\"; // Count: 4\r\nexport var _DYN_EXTENSION_CONFIG = \"extensionConfig\"; // Count: 4\r\nexport var _DYN_EXCEPTIONS = \"exceptions\"; // Count: 6\r\nexport var _DYN_PARSED_STACK = \"parsedStack\"; // Count: 11\r\nexport var _DYN_PROPERTIES = \"properties\"; // Count: 9\r\nexport var _DYN_MEASUREMENTS = \"measurements\"; // Count: 9\r\nexport var _DYN_STRINGIFY = \"stringify\"; // Count: 3\r\nexport var _DYN_MESSAGE = \"message\"; // Count: 8\r\nexport var _DYN_SIZE_IN_BYTES = \"sizeInBytes\"; // Count: 11\r\nexport var _DYN_TYPE_NAME = \"typeName\"; // Count: 11\r\nexport var _DYN_SEVERITY_LEVEL = \"severityLevel\"; // Count: 5\r\nexport var _DYN_PROBLEM_GROUP = \"problemGroup\"; // Count: 3\r\nexport var _DYN_IS_MANUAL = \"isManual\"; // Count: 3\r\nexport var _DYN__CREATE_FROM_INTERFA1 = \"CreateFromInterface\"; // Count: 2\r\nexport var _DYN_HAS_FULL_STACK = \"hasFullStack\"; // Count: 6\r\nexport var _DYN_LEVEL = \"level\"; // Count: 5\r\nexport var _DYN_METHOD = \"method\"; // Count: 7\r\nexport var _DYN_ASSEMBLY = \"assembly\"; // Count: 5\r\nexport var _DYN_FILE_NAME = \"fileName\"; // Count: 6\r\nexport var _DYN_LINE = \"line\"; // Count: 6\r\nexport var _DYN_DURATION = \"duration\"; // Count: 4\r\nexport var _DYN_RECEIVED_RESPONSE = \"receivedResponse\"; // Count: 2\r\nexport var _DYN_SUBSTRING = \"substring\"; // Count: 6\r\nexport var _DYN_SANITIZE_KEY_AND_ADD2 = \"sanitizeKeyAndAddUniqueness\"; // Count: 2\r\nexport var _DYN_SANITIZE_EXCEPTION = \"sanitizeException\"; // Count: 2\r\nexport var _DYN_SANITIZE_PROPERTIES = \"sanitizeProperties\"; // Count: 2\r\nexport var _DYN_SANITIZE_MEASUREMENT3 = \"sanitizeMeasurements\"; // Count: 2\r\n//# sourceMappingURL=__DynamicConstants.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { arrForEach, isString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_LENGTH, _DYN_TO_LOWER_CASE } from \"./__DynamicConstants\";\r\nvar strEmpty = \"\";\r\nexport function stringToBoolOrDefault(str, defaultValue) {\r\n if (defaultValue === void 0) { defaultValue = false; }\r\n if (str === undefined || str === null) {\r\n return defaultValue;\r\n }\r\n return str.toString()[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]() === \"true\";\r\n}\r\n/**\r\n * Convert ms to c# time span format\r\n */\r\nexport function msToTimeSpan(totalms) {\r\n if (isNaN(totalms) || totalms < 0) {\r\n totalms = 0;\r\n }\r\n totalms = Math.round(totalms);\r\n var ms = strEmpty + totalms % 1000;\r\n var sec = strEmpty + Math.floor(totalms / 1000) % 60;\r\n var min = strEmpty + Math.floor(totalms / (1000 * 60)) % 60;\r\n var hour = strEmpty + Math.floor(totalms / (1000 * 60 * 60)) % 24;\r\n var days = Math.floor(totalms / (1000 * 60 * 60 * 24));\r\n ms = ms[_DYN_LENGTH /* @min:%2elength */] === 1 ? \"00\" + ms : ms[_DYN_LENGTH /* @min:%2elength */] === 2 ? \"0\" + ms : ms;\r\n sec = sec[_DYN_LENGTH /* @min:%2elength */] < 2 ? \"0\" + sec : sec;\r\n min = min[_DYN_LENGTH /* @min:%2elength */] < 2 ? \"0\" + min : min;\r\n hour = hour[_DYN_LENGTH /* @min:%2elength */] < 2 ? \"0\" + hour : hour;\r\n return (days > 0 ? days + \".\" : strEmpty) + hour + \":\" + min + \":\" + sec + \".\" + ms;\r\n}\r\nexport function getExtensionByName(extensions, identifier) {\r\n var extension = null;\r\n arrForEach(extensions, function (value) {\r\n if (value.identifier === identifier) {\r\n extension = value;\r\n return -1;\r\n }\r\n });\r\n return extension;\r\n}\r\nexport function isCrossOriginError(message, url, lineNumber, columnNumber, error) {\r\n return !error && isString(message) && (message === \"Script error.\" || message === \"Script error\");\r\n}\r\n//# sourceMappingURL=HelperFuncs.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\"use strict\";\r\nimport { getGlobal, strShimObject, strShimPrototype, strShimUndefined } from \"@microsoft/applicationinsights-shims\";\r\nimport { _DYN_CALL, _DYN_INDEX_OF, _DYN_LENGTH, _DYN_NAME, _DYN_SPLIT, _DYN_TO_LOWER_CASE, _DYN_USER_AGENT } from \"../__DynamicConstants\";\r\nimport { isString, isUndefined, strContains } from \"./HelperFuncs\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\n/**\r\n * This file exists to hold environment utilities that are required to check and\r\n * validate the current operating environment. Unless otherwise required, please\r\n * only use defined methods (functions) in this class so that users of these\r\n * functions/properties only need to include those that are used within their own modules.\r\n */\r\nvar strWindow = \"window\";\r\nvar strDocument = \"document\";\r\nvar strDocumentMode = \"documentMode\";\r\nvar strNavigator = \"navigator\";\r\nvar strHistory = \"history\";\r\nvar strLocation = \"location\";\r\nvar strConsole = \"console\";\r\nvar strPerformance = \"performance\";\r\nvar strJSON = \"JSON\";\r\nvar strCrypto = \"crypto\";\r\nvar strMsCrypto = \"msCrypto\";\r\nvar strReactNative = \"ReactNative\";\r\nvar strMsie = \"msie\";\r\nvar strTrident = \"trident/\";\r\nvar strXMLHttpRequest = \"XMLHttpRequest\";\r\nvar _isTrident = null;\r\nvar _navUserAgentCheck = null;\r\nvar _enableMocks = false;\r\nvar _useXDomainRequest = null;\r\nvar _beaconsSupported = null;\r\nfunction _hasProperty(theClass, property) {\r\n var supported = false;\r\n if (theClass) {\r\n try {\r\n supported = property in theClass;\r\n if (!supported) {\r\n var proto = theClass[strShimPrototype];\r\n if (proto) {\r\n supported = property in proto;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // Do Nothing\r\n }\r\n if (!supported) {\r\n try {\r\n var tmp = new theClass();\r\n supported = !isUndefined(tmp[property]);\r\n }\r\n catch (e) {\r\n // Do Nothing\r\n }\r\n }\r\n }\r\n return supported;\r\n}\r\n/**\r\n * Enable the lookup of test mock objects if requested\r\n * @param enabled\r\n */\r\nexport function setEnableEnvMocks(enabled) {\r\n _enableMocks = enabled;\r\n}\r\n/**\r\n * Return the named global object if available, will return null if the object is not available.\r\n * @param name The globally named object\r\n */\r\nexport function getGlobalInst(name) {\r\n var gbl = getGlobal();\r\n if (gbl && gbl[name]) {\r\n return gbl[name];\r\n }\r\n // Test workaround, for environments where <global>.window (when global == window) doesn't return the base window\r\n if (name === strWindow && hasWindow()) {\r\n // tslint:disable-next-line: no-angle-bracket-type-assertion\r\n return window;\r\n }\r\n return null;\r\n}\r\n/**\r\n * Checks if window object is available, this is required as we support the API running without a\r\n * window /document (eg. Node server, electron webworkers) and if we attempt to assign a window\r\n * object to a local variable or pass as an argument an \"Uncaught ReferenceError: window is not defined\"\r\n * exception will be thrown.\r\n * Defined as a function to support lazy / late binding environments.\r\n */\r\nexport function hasWindow() {\r\n return Boolean(typeof window === strShimObject && window);\r\n}\r\n/**\r\n * Returns the global window object if it is present otherwise null.\r\n * This helper is used to access the window object without causing an exception\r\n * \"Uncaught ReferenceError: window is not defined\"\r\n */\r\nexport function getWindow() {\r\n if (hasWindow()) {\r\n return window;\r\n }\r\n // Return the global instance or null\r\n return getGlobalInst(strWindow);\r\n}\r\n/**\r\n * Checks if document object is available, this is required as we support the API running without a\r\n * window /document (eg. Node server, electron webworkers) and if we attempt to assign a document\r\n * object to a local variable or pass as an argument an \"Uncaught ReferenceError: document is not defined\"\r\n * exception will be thrown.\r\n * Defined as a function to support lazy / late binding environments.\r\n */\r\nexport function hasDocument() {\r\n return Boolean(typeof document === strShimObject && document);\r\n}\r\n/**\r\n * Returns the global document object if it is present otherwise null.\r\n * This helper is used to access the document object without causing an exception\r\n * \"Uncaught ReferenceError: document is not defined\"\r\n */\r\nexport function getDocument() {\r\n if (hasDocument()) {\r\n return document;\r\n }\r\n return getGlobalInst(strDocument);\r\n}\r\n/**\r\n * Checks if navigator object is available, this is required as we support the API running without a\r\n * window /document (eg. Node server, electron webworkers) and if we attempt to assign a navigator\r\n * object to a local variable or pass as an argument an \"Uncaught ReferenceError: navigator is not defined\"\r\n * exception will be thrown.\r\n * Defined as a function to support lazy / late binding environments.\r\n */\r\nexport function hasNavigator() {\r\n return Boolean(typeof navigator === strShimObject && navigator);\r\n}\r\n/**\r\n * Returns the global navigator object if it is present otherwise null.\r\n * This helper is used to access the navigator object without causing an exception\r\n * \"Uncaught ReferenceError: navigator is not defined\"\r\n */\r\nexport function getNavigator() {\r\n if (hasNavigator()) {\r\n return navigator;\r\n }\r\n return getGlobalInst(strNavigator);\r\n}\r\n/**\r\n * Checks if history object is available, this is required as we support the API running without a\r\n * window /document (eg. Node server, electron webworkers) and if we attempt to assign a history\r\n * object to a local variable or pass as an argument an \"Uncaught ReferenceError: history is not defined\"\r\n * exception will be thrown.\r\n * Defined as a function to support lazy / late binding environments.\r\n */\r\nexport function hasHistory() {\r\n return Boolean(typeof history === strShimObject && history);\r\n}\r\n/**\r\n * Returns the global history object if it is present otherwise null.\r\n * This helper is used to access the history object without causing an exception\r\n * \"Uncaught ReferenceError: history is not defined\"\r\n */\r\nexport function getHistory() {\r\n if (hasHistory()) {\r\n return history;\r\n }\r\n return getGlobalInst(strHistory);\r\n}\r\n/**\r\n * Returns the global location object if it is present otherwise null.\r\n * This helper is used to access the location object without causing an exception\r\n * \"Uncaught ReferenceError: location is not defined\"\r\n */\r\nexport function getLocation(checkForMock) {\r\n if (checkForMock && _enableMocks) {\r\n var mockLocation = getGlobalInst(\"__mockLocation\");\r\n if (mockLocation) {\r\n return mockLocation;\r\n }\r\n }\r\n if (typeof location === strShimObject && location) {\r\n return location;\r\n }\r\n return getGlobalInst(strLocation);\r\n}\r\n/**\r\n * Returns the global console object\r\n */\r\nexport function getConsole() {\r\n if (typeof console !== strShimUndefined) {\r\n return console;\r\n }\r\n return getGlobalInst(strConsole);\r\n}\r\n/**\r\n * Returns the performance object if it is present otherwise null.\r\n * This helper is used to access the performance object from the current\r\n * global instance which could be window or globalThis for a web worker\r\n */\r\nexport function getPerformance() {\r\n return getGlobalInst(strPerformance);\r\n}\r\n/**\r\n * Checks if JSON object is available, this is required as we support the API running without a\r\n * window /document (eg. Node server, electron webworkers) and if we attempt to assign a history\r\n * object to a local variable or pass as an argument an \"Uncaught ReferenceError: JSON is not defined\"\r\n * exception will be thrown.\r\n * Defined as a function to support lazy / late binding environments.\r\n */\r\nexport function hasJSON() {\r\n return Boolean((typeof JSON === strShimObject && JSON) || getGlobalInst(strJSON) !== null);\r\n}\r\n/**\r\n * Returns the global JSON object if it is present otherwise null.\r\n * This helper is used to access the JSON object without causing an exception\r\n * \"Uncaught ReferenceError: JSON is not defined\"\r\n */\r\nexport function getJSON() {\r\n if (hasJSON()) {\r\n return JSON || getGlobalInst(strJSON);\r\n }\r\n return null;\r\n}\r\n/**\r\n * Returns the crypto object if it is present otherwise null.\r\n * This helper is used to access the crypto object from the current\r\n * global instance which could be window or globalThis for a web worker\r\n */\r\nexport function getCrypto() {\r\n return getGlobalInst(strCrypto);\r\n}\r\n/**\r\n * Returns the crypto object if it is present otherwise null.\r\n * This helper is used to access the crypto object from the current\r\n * global instance which could be window or globalThis for a web worker\r\n */\r\nexport function getMsCrypto() {\r\n return getGlobalInst(strMsCrypto);\r\n}\r\n/**\r\n * Returns whether the environment is reporting that we are running in a React Native Environment\r\n */\r\nexport function isReactNative() {\r\n // If running in React Native, navigator.product will be populated\r\n var nav = getNavigator();\r\n if (nav && nav.product) {\r\n return nav.product === strReactNative;\r\n }\r\n return false;\r\n}\r\n/**\r\n * Identifies whether the current environment appears to be IE\r\n */\r\nexport function isIE() {\r\n var nav = getNavigator();\r\n if (nav && (nav[_DYN_USER_AGENT /* @min:%2euserAgent */] !== _navUserAgentCheck || _isTrident === null)) {\r\n // Added to support test mocking of the user agent\r\n _navUserAgentCheck = nav[_DYN_USER_AGENT /* @min:%2euserAgent */];\r\n var userAgent = (_navUserAgentCheck || STR_EMPTY)[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n _isTrident = (strContains(userAgent, strMsie) || strContains(userAgent, strTrident));\r\n }\r\n return _isTrident;\r\n}\r\n/**\r\n * Gets IE version returning the document emulation mode if we are running on IE, or null otherwise\r\n */\r\nexport function getIEVersion(userAgentStr) {\r\n if (userAgentStr === void 0) { userAgentStr = null; }\r\n if (!userAgentStr) {\r\n var navigator_1 = getNavigator() || {};\r\n userAgentStr = navigator_1 ? (navigator_1[_DYN_USER_AGENT /* @min:%2euserAgent */] || STR_EMPTY)[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]() : STR_EMPTY;\r\n }\r\n var ua = (userAgentStr || STR_EMPTY)[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n // Also check for documentMode in case X-UA-Compatible meta tag was included in HTML.\r\n if (strContains(ua, strMsie)) {\r\n var doc = getDocument() || {};\r\n return Math.max(parseInt(ua[_DYN_SPLIT /* @min:%2esplit */](strMsie)[1]), (doc[strDocumentMode] || 0));\r\n }\r\n else if (strContains(ua, strTrident)) {\r\n var tridentVer = parseInt(ua[_DYN_SPLIT /* @min:%2esplit */](strTrident)[1]);\r\n if (tridentVer) {\r\n return tridentVer + 4;\r\n }\r\n }\r\n return null;\r\n}\r\n/**\r\n * Returns string representation of an object suitable for diagnostics logging.\r\n */\r\nexport function dumpObj(object) {\r\n var objectTypeDump = Object[strShimPrototype].toString[_DYN_CALL /* @min:%2ecall */](object);\r\n var propertyValueDump = STR_EMPTY;\r\n if (objectTypeDump === \"[object Error]\") {\r\n propertyValueDump = \"{ stack: '\" + object.stack + \"', message: '\" + object.message + \"', name: '\" + object[_DYN_NAME /* @min:%2ename */] + \"'\";\r\n }\r\n else if (hasJSON()) {\r\n propertyValueDump = getJSON().stringify(object);\r\n }\r\n return objectTypeDump + propertyValueDump;\r\n}\r\nexport function isSafari(userAgentStr) {\r\n if (!userAgentStr || !isString(userAgentStr)) {\r\n var navigator_2 = getNavigator() || {};\r\n userAgentStr = navigator_2 ? (navigator_2[_DYN_USER_AGENT /* @min:%2euserAgent */] || STR_EMPTY)[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]() : STR_EMPTY;\r\n }\r\n var ua = (userAgentStr || STR_EMPTY)[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n return (ua[_DYN_INDEX_OF /* @min:%2eindexOf */](\"safari\") >= 0);\r\n}\r\n/**\r\n * Checks if HTML5 Beacons are supported in the current environment.\r\n * @returns True if supported, false otherwise.\r\n */\r\nexport function isBeaconsSupported() {\r\n if (_beaconsSupported === null) {\r\n _beaconsSupported = hasNavigator() && Boolean(getNavigator().sendBeacon);\r\n }\r\n return _beaconsSupported;\r\n}\r\n/**\r\n * Checks if the Fetch API is supported in the current environment.\r\n * @param withKeepAlive - [Optional] If True, check if fetch is available and it supports the keepalive feature, otherwise only check if fetch is supported\r\n * @returns True if supported, otherwise false\r\n */\r\nexport function isFetchSupported(withKeepAlive) {\r\n var isSupported = false;\r\n try {\r\n isSupported = !!getGlobalInst(\"fetch\");\r\n var request = getGlobalInst(\"Request\");\r\n if (isSupported && withKeepAlive && request) {\r\n isSupported = _hasProperty(request, \"keepalive\");\r\n }\r\n }\r\n catch (e) {\r\n // Just Swallow any failure during availability checks\r\n }\r\n return isSupported;\r\n}\r\nexport function useXDomainRequest() {\r\n if (_useXDomainRequest === null) {\r\n _useXDomainRequest = (typeof XDomainRequest !== strShimUndefined);\r\n if (_useXDomainRequest && isXhrSupported()) {\r\n _useXDomainRequest = _useXDomainRequest && !_hasProperty(getGlobalInst(strXMLHttpRequest), \"withCredentials\");\r\n }\r\n }\r\n return _useXDomainRequest;\r\n}\r\n/**\r\n * Checks if XMLHttpRequest is supported\r\n * @returns True if supported, otherwise false\r\n */\r\nexport function isXhrSupported() {\r\n var isSupported = false;\r\n try {\r\n var xmlHttpRequest = getGlobalInst(strXMLHttpRequest);\r\n isSupported = !!xmlHttpRequest;\r\n }\r\n catch (e) {\r\n // Just Swallow any failure during availability checks\r\n }\r\n return isSupported;\r\n}\r\nfunction _getNamedValue(values, name) {\r\n if (values) {\r\n for (var i = 0; i < values[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n var value = values[i];\r\n if (value[_DYN_NAME /* @min:%2ename */]) {\r\n if (value[_DYN_NAME /* @min:%2ename */] === name) {\r\n return value;\r\n }\r\n }\r\n }\r\n }\r\n return {};\r\n}\r\n/**\r\n * Helper function to fetch the named meta-tag from the page.\r\n * @param name\r\n */\r\nexport function findMetaTag(name) {\r\n var doc = getDocument();\r\n if (doc && name) {\r\n // Look for a meta-tag\r\n return _getNamedValue(doc.querySelectorAll(\"meta\"), name).content;\r\n }\r\n return null;\r\n}\r\n/**\r\n * Helper function to fetch the named server timing value from the page response (first navigation event).\r\n * @param name\r\n */\r\nexport function findNamedServerTiming(name) {\r\n var value;\r\n var perf = getPerformance();\r\n if (perf) {\r\n // Try looking for a server-timing header\r\n var navPerf = perf.getEntriesByType(\"navigation\") || [];\r\n value = _getNamedValue((navPerf[_DYN_LENGTH /* @min:%2elength */] > 0 ? navPerf[0] : {}).serverTiming, name).description;\r\n }\r\n return value;\r\n}\r\n//# sourceMappingURL=EnvUtils.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { _DYN_APPLY, _DYN_LENGTH } from \"../__DynamicConstants\";\r\nimport { getGlobalInst } from \"./EnvUtils\";\r\nvar listenerFuncs = [\"eventsSent\", \"eventsDiscarded\", \"eventsSendRequest\", \"perfEvent\"];\r\nvar _aiNamespace = null;\r\nvar _debugListener;\r\nfunction _listenerProxyFunc(name, config) {\r\n return function () {\r\n var args = arguments;\r\n var dbgExt = getDebugExt(config);\r\n if (dbgExt) {\r\n var listener = dbgExt.listener;\r\n if (listener && listener[name]) {\r\n listener[name][_DYN_APPLY /* @min:%2eapply */](listener, args);\r\n }\r\n }\r\n };\r\n}\r\nfunction _getExtensionNamespace() {\r\n // Cache the lookup of the global namespace object\r\n var target = getGlobalInst(\"Microsoft\");\r\n if (target) {\r\n _aiNamespace = target[\"ApplicationInsights\"];\r\n }\r\n return _aiNamespace;\r\n}\r\nexport function getDebugExt(config) {\r\n var ns = _aiNamespace;\r\n if (!ns && config.disableDbgExt !== true) {\r\n ns = _aiNamespace || _getExtensionNamespace();\r\n }\r\n return ns ? ns[\"ChromeDbgExt\"] : null;\r\n}\r\nexport function getDebugListener(config) {\r\n if (!_debugListener) {\r\n _debugListener = {};\r\n for (var lp = 0; lp < listenerFuncs[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n _debugListener[listenerFuncs[lp]] = _listenerProxyFunc(listenerFuncs[lp], config);\r\n }\r\n }\r\n return _debugListener;\r\n}\r\n//# sourceMappingURL=DbgExtensionUtils.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\"use strict\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { _DYN_DIAG_LOG, _DYN_ENABLE_DEBUG_EXCEPTI4, _DYN_LOGGER, _DYN_LOG_INTERNAL_MESSAGE, _DYN_MESSAGE, _DYN_MESSAGE_ID, _DYN_PUSH, _DYN_REPLACE } from \"../__DynamicConstants\";\r\nimport { getDebugExt } from \"./DbgExtensionUtils\";\r\nimport { dumpObj, getConsole, getJSON, hasJSON } from \"./EnvUtils\";\r\nimport { getCfgValue, isFunction, isUndefined } from \"./HelperFuncs\";\r\nimport { STR_EMPTY, STR_ERROR_TO_CONSOLE, STR_WARN_TO_CONSOLE } from \"./InternalConstants\";\r\n/**\r\n * For user non actionable traces use AI Internal prefix.\r\n */\r\nvar AiNonUserActionablePrefix = \"AI (Internal): \";\r\n/**\r\n * Prefix of the traces in portal.\r\n */\r\nvar AiUserActionablePrefix = \"AI: \";\r\n/**\r\n * Session storage key for the prefix for the key indicating message type already logged\r\n */\r\nvar AIInternalMessagePrefix = \"AITR_\";\r\nfunction _sanitizeDiagnosticText(text) {\r\n if (text) {\r\n return \"\\\"\" + text[_DYN_REPLACE /* @min:%2ereplace */](/\\\"/g, STR_EMPTY) + \"\\\"\";\r\n }\r\n return STR_EMPTY;\r\n}\r\nfunction _logToConsole(func, message) {\r\n var theConsole = getConsole();\r\n if (!!theConsole) {\r\n var logFunc = \"log\";\r\n if (theConsole[func]) {\r\n logFunc = func;\r\n }\r\n if (isFunction(theConsole[logFunc])) {\r\n theConsole[logFunc](message);\r\n }\r\n }\r\n}\r\nvar _InternalLogMessage = /** @class */ (function () {\r\n function _InternalLogMessage(msgId, msg, isUserAct, properties) {\r\n if (isUserAct === void 0) { isUserAct = false; }\r\n var _self = this;\r\n _self[_DYN_MESSAGE_ID /* @min:%2emessageId */] = msgId;\r\n _self[_DYN_MESSAGE /* @min:%2emessage */] =\r\n (isUserAct ? AiUserActionablePrefix : AiNonUserActionablePrefix) +\r\n msgId;\r\n var strProps = STR_EMPTY;\r\n if (hasJSON()) {\r\n strProps = getJSON().stringify(properties);\r\n }\r\n var diagnosticText = (msg ? \" message:\" + _sanitizeDiagnosticText(msg) : STR_EMPTY) +\r\n (properties ? \" props:\" + _sanitizeDiagnosticText(strProps) : STR_EMPTY);\r\n _self[_DYN_MESSAGE /* @min:%2emessage */] += diagnosticText;\r\n }\r\n _InternalLogMessage.dataType = \"MessageData\";\r\n return _InternalLogMessage;\r\n}());\r\nexport { _InternalLogMessage };\r\nexport function safeGetLogger(core, config) {\r\n return (core || {})[_DYN_LOGGER /* @min:%2elogger */] || new DiagnosticLogger(config);\r\n}\r\nvar DiagnosticLogger = /** @class */ (function () {\r\n function DiagnosticLogger(config) {\r\n this.identifier = \"DiagnosticLogger\";\r\n /**\r\n * The internal logging queue\r\n */\r\n this.queue = [];\r\n /**\r\n * Count of internal messages sent\r\n */\r\n var _messageCount = 0;\r\n /**\r\n * Holds information about what message types were already logged to console or sent to server.\r\n */\r\n var _messageLogged = {};\r\n var _loggingLevelConsole;\r\n var _loggingLevelTelemetry;\r\n var _maxInternalMessageLimit;\r\n var _enableDebugExceptions;\r\n dynamicProto(DiagnosticLogger, this, function (_self) {\r\n _setDefaultsFromConfig(config || {});\r\n _self.consoleLoggingLevel = function () { return _loggingLevelConsole; };\r\n _self.telemetryLoggingLevel = function () { return _loggingLevelTelemetry; };\r\n _self.maxInternalMessageLimit = function () { return _maxInternalMessageLimit; };\r\n _self[_DYN_ENABLE_DEBUG_EXCEPTI4 /* @min:%2eenableDebugExceptions */] = function () { return _enableDebugExceptions; };\r\n /**\r\n * This method will throw exceptions in debug mode or attempt to log the error as a console warning.\r\n * @param severity {LoggingSeverity} - The severity of the log message\r\n * @param message {_InternalLogMessage} - The log message.\r\n */\r\n _self.throwInternal = function (severity, msgId, msg, properties, isUserAct) {\r\n if (isUserAct === void 0) { isUserAct = false; }\r\n var message = new _InternalLogMessage(msgId, msg, isUserAct, properties);\r\n if (_enableDebugExceptions) {\r\n throw dumpObj(message);\r\n }\r\n else {\r\n // Get the logging function and fallback to warnToConsole of for some reason errorToConsole doesn't exist\r\n var logFunc = severity === 1 /* eLoggingSeverity.CRITICAL */ ? STR_ERROR_TO_CONSOLE : STR_WARN_TO_CONSOLE;\r\n if (!isUndefined(message[_DYN_MESSAGE /* @min:%2emessage */])) {\r\n if (isUserAct) {\r\n // check if this message type was already logged to console for this page view and if so, don't log it again\r\n var messageKey = +message[_DYN_MESSAGE_ID /* @min:%2emessageId */];\r\n if (!_messageLogged[messageKey] && _loggingLevelConsole >= severity) {\r\n _self[logFunc](message[_DYN_MESSAGE /* @min:%2emessage */]);\r\n _messageLogged[messageKey] = true;\r\n }\r\n }\r\n else {\r\n // Only log traces if the console Logging Level is >= the throwInternal severity level\r\n if (_loggingLevelConsole >= severity) {\r\n _self[logFunc](message[_DYN_MESSAGE /* @min:%2emessage */]);\r\n }\r\n }\r\n _logInternalMessage(severity, message);\r\n }\r\n else {\r\n _debugExtMsg(\"throw\" + (severity === 1 /* eLoggingSeverity.CRITICAL */ ? \"Critical\" : \"Warning\"), message);\r\n }\r\n }\r\n };\r\n /**\r\n * This will write a warning to the console if possible\r\n * @param message {string} - The warning message\r\n */\r\n _self[STR_WARN_TO_CONSOLE /* @min:%2ewarnToConsole */] = function (message) {\r\n _logToConsole(\"warn\", message);\r\n _debugExtMsg(\"warning\", message);\r\n };\r\n /**\r\n * This will write an error to the console if possible\r\n * @param message {string} - The error message\r\n */\r\n _self[STR_ERROR_TO_CONSOLE /* @min:%2eerrorToConsole */] = function (message) {\r\n _logToConsole(\"error\", message);\r\n _debugExtMsg(\"error\", message);\r\n };\r\n /**\r\n * Resets the internal message count\r\n */\r\n _self.resetInternalMessageCount = function () {\r\n _messageCount = 0;\r\n _messageLogged = {};\r\n };\r\n /**\r\n * Logs a message to the internal queue.\r\n * @param severity {LoggingSeverity} - The severity of the log message\r\n * @param message {_InternalLogMessage} - The message to log.\r\n */\r\n _self[_DYN_LOG_INTERNAL_MESSAGE /* @min:%2elogInternalMessage */] = _logInternalMessage;\r\n function _logInternalMessage(severity, message) {\r\n if (_areInternalMessagesThrottled()) {\r\n return;\r\n }\r\n // check if this message type was already logged for this session and if so, don't log it again\r\n var logMessage = true;\r\n var messageKey = AIInternalMessagePrefix + message[_DYN_MESSAGE_ID /* @min:%2emessageId */];\r\n // if the session storage is not available, limit to only one message type per page view\r\n if (_messageLogged[messageKey]) {\r\n logMessage = false;\r\n }\r\n else {\r\n _messageLogged[messageKey] = true;\r\n }\r\n if (logMessage) {\r\n // Push the event in the internal queue\r\n if (severity <= _loggingLevelTelemetry) {\r\n _self.queue[_DYN_PUSH /* @min:%2epush */](message);\r\n _messageCount++;\r\n _debugExtMsg((severity === 1 /* eLoggingSeverity.CRITICAL */ ? \"error\" : \"warn\"), message);\r\n }\r\n // When throttle limit reached, send a special event\r\n if (_messageCount === _maxInternalMessageLimit) {\r\n var throttleLimitMessage = \"Internal events throttle limit per PageView reached for this app.\";\r\n var throttleMessage = new _InternalLogMessage(23 /* _eInternalMessageId.MessageLimitPerPVExceeded */, throttleLimitMessage, false);\r\n _self.queue[_DYN_PUSH /* @min:%2epush */](throttleMessage);\r\n if (severity === 1 /* eLoggingSeverity.CRITICAL */) {\r\n _self[STR_ERROR_TO_CONSOLE /* @min:%2eerrorToConsole */](throttleLimitMessage);\r\n }\r\n else {\r\n _self[STR_WARN_TO_CONSOLE /* @min:%2ewarnToConsole */](throttleLimitMessage);\r\n }\r\n }\r\n }\r\n }\r\n function _setDefaultsFromConfig(config) {\r\n _loggingLevelConsole = getCfgValue(config.loggingLevelConsole, 0);\r\n _loggingLevelTelemetry = getCfgValue(config.loggingLevelTelemetry, 1);\r\n _maxInternalMessageLimit = getCfgValue(config.maxMessageLimit, 25);\r\n _enableDebugExceptions = getCfgValue(config[_DYN_ENABLE_DEBUG_EXCEPTI4 /* @min:%2eenableDebugExceptions */], false);\r\n }\r\n function _areInternalMessagesThrottled() {\r\n return _messageCount >= _maxInternalMessageLimit;\r\n }\r\n function _debugExtMsg(name, data) {\r\n var dbgExt = getDebugExt(config || {});\r\n if (dbgExt && dbgExt[_DYN_DIAG_LOG /* @min:%2ediagLog */]) {\r\n dbgExt[_DYN_DIAG_LOG /* @min:%2ediagLog */](name, data);\r\n }\r\n }\r\n });\r\n }\r\n /**\r\n * When this is true the SDK will throw exceptions to aid in debugging.\r\n */\r\n DiagnosticLogger.prototype.enableDebugExceptions = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return false;\r\n };\r\n /**\r\n * 0: OFF (default)\r\n * 1: CRITICAL\r\n * 2: >= WARNING\r\n */\r\n DiagnosticLogger.prototype.consoleLoggingLevel = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return 0;\r\n };\r\n /**\r\n * 0: OFF\r\n * 1: CRITICAL (default)\r\n * 2: >= WARNING\r\n */\r\n DiagnosticLogger.prototype.telemetryLoggingLevel = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return 1;\r\n };\r\n /**\r\n * The maximum number of internal messages allowed to be sent per page view\r\n */\r\n DiagnosticLogger.prototype.maxInternalMessageLimit = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return 25;\r\n };\r\n /**\r\n * This method will throw exceptions in debug mode or attempt to log the error as a console warning.\r\n * @param severity {LoggingSeverity} - The severity of the log message\r\n * @param message {_InternalLogMessage} - The log message.\r\n */\r\n DiagnosticLogger.prototype.throwInternal = function (severity, msgId, msg, properties, isUserAct) {\r\n if (isUserAct === void 0) { isUserAct = false; }\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * This will write a warning to the console if possible\r\n * @param message {string} - The warning message\r\n */\r\n DiagnosticLogger.prototype.warnToConsole = function (message) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * This will write an error to the console if possible\r\n * @param message {string} - The warning message\r\n */\r\n DiagnosticLogger.prototype.errorToConsole = function (message) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Resets the internal message count\r\n */\r\n DiagnosticLogger.prototype.resetInternalMessageCount = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Logs a message to the internal queue.\r\n * @param severity {LoggingSeverity} - The severity of the log message\r\n * @param message {_InternalLogMessage} - The message to log.\r\n */\r\n DiagnosticLogger.prototype.logInternalMessage = function (severity, message) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n return DiagnosticLogger;\r\n}());\r\nexport { DiagnosticLogger };\r\nfunction _getLogger(logger) {\r\n return (logger || new DiagnosticLogger());\r\n}\r\n/**\r\n * This is a helper method which will call throwInternal on the passed logger, will throw exceptions in\r\n * debug mode or attempt to log the error as a console warning. This helper is provided mostly to better\r\n * support minification as logger.throwInternal() will not compress the publish \"throwInternal\" used throughout\r\n * the code.\r\n * @param logger - The Diagnostic Logger instance to use.\r\n * @param severity {LoggingSeverity} - The severity of the log message\r\n * @param message {_InternalLogMessage} - The log message.\r\n */\r\nexport function _throwInternal(logger, severity, msgId, msg, properties, isUserAct) {\r\n if (isUserAct === void 0) { isUserAct = false; }\r\n _getLogger(logger).throwInternal(severity, msgId, msg, properties, isUserAct);\r\n}\r\n/**\r\n * This is a helper method which will call warnToConsole on the passed logger with the provided message.\r\n * @param logger - The Diagnostic Logger instance to use.\r\n * @param message {_InternalLogMessage} - The log message.\r\n */\r\nexport function _warnToConsole(logger, message) {\r\n _getLogger(logger)[STR_WARN_TO_CONSOLE /* @min:%2ewarnToConsole */](message);\r\n}\r\n/**\r\n * Logs a message to the internal queue.\r\n * @param logger - The Diagnostic Logger instance to use.\r\n * @param severity {LoggingSeverity} - The severity of the log message\r\n * @param message {_InternalLogMessage} - The message to log.\r\n */\r\nexport function _logInternalMessage(logger, severity, message) {\r\n _getLogger(logger)[_DYN_LOG_INTERNAL_MESSAGE /* @min:%2elogInternalMessage */](severity, message);\r\n}\r\n//# sourceMappingURL=DiagnosticLogger.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { objForEachKey, deepFreeze } from \"../JavaScriptSDK/HelperFuncs\";\r\n/**\r\n * Create an enum style object which has both the key => value and value => key mappings\r\n * @param values - The values to populate on the new object\r\n * @returns\r\n */\r\nexport function createEnumStyle(values) {\r\n var enumClass = {};\r\n objForEachKey(values, function (field, value) {\r\n enumClass[field] = value;\r\n enumClass[value] = field;\r\n });\r\n return deepFreeze(enumClass);\r\n}\r\n/**\r\n * Create a 2 index map that maps an enum's key as both the key and value, X[\"key\"] => \"key\" and X[0] => \"keyof 0\".\r\n * @param values - The values to populate on the new object\r\n * @returns\r\n */\r\nexport function createEnumMap(values) {\r\n var mapClass = {};\r\n objForEachKey(values, function (field, value) {\r\n mapClass[field] = field;\r\n mapClass[value] = field;\r\n });\r\n return deepFreeze(mapClass);\r\n}\r\n/**\r\n * Create a 2 index map that maps an enum's key and value to the defined map value, X[\"key\"] => mapValue and X[0] => mapValue.\r\n * Generic values\r\n * - E = the const enum type (typeof eRequestHeaders);\r\n * - V = Identifies the valid values for the keys, this should include both the enum numeric and string key of the type. The\r\n * resulting \"Value\" of each entry identifies the valid values withing the assignments.\r\n * @param values - The values to populate on the new object\r\n * @returns\r\n */\r\nexport function createValueMap(values) {\r\n var mapClass = {};\r\n objForEachKey(values, function (field, value) {\r\n mapClass[field] = value[1];\r\n mapClass[value[0]] = value[1];\r\n });\r\n return deepFreeze(mapClass);\r\n}\r\n//# sourceMappingURL=EnumHelperFuncs.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { createEnumStyle } from \"@microsoft/applicationinsights-core-js\";\r\nexport var StorageType = createEnumStyle({\r\n LocalStorage: 0 /* eStorageType.LocalStorage */,\r\n SessionStorage: 1 /* eStorageType.SessionStorage */\r\n});\r\nexport var DistributedTracingModes = createEnumStyle({\r\n AI: 0 /* eDistributedTracingModes.AI */,\r\n AI_AND_W3C: 1 /* eDistributedTracingModes.AI_AND_W3C */,\r\n W3C: 2 /* eDistributedTracingModes.W3C */\r\n});\r\n//# sourceMappingURL=Enums.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { _throwInternal, dumpObj, getExceptionName, getGlobal, getGlobalInst, isNullOrUndefined, objForEachKey } from \"@microsoft/applicationinsights-core-js\";\r\nimport { StorageType } from \"./Enums\";\r\nimport { _DYN_REMOVE_ITEM, _DYN_TO_STRING } from \"./__DynamicConstants\";\r\nvar _canUseLocalStorage = undefined;\r\nvar _canUseSessionStorage = undefined;\r\n/**\r\n * Gets the localStorage object if available\r\n * @return {Storage} - Returns the storage object if available else returns null\r\n */\r\nfunction _getLocalStorageObject() {\r\n if (utlCanUseLocalStorage()) {\r\n return _getVerifiedStorageObject(StorageType.LocalStorage);\r\n }\r\n return null;\r\n}\r\n/**\r\n * Tests storage object (localStorage or sessionStorage) to verify that it is usable\r\n * More details here: https://mathiasbynens.be/notes/localstorage-pattern\r\n * @param storageType Type of storage\r\n * @return {Storage} Returns storage object verified that it is usable\r\n */\r\nfunction _getVerifiedStorageObject(storageType) {\r\n try {\r\n if (isNullOrUndefined(getGlobal())) {\r\n return null;\r\n }\r\n var uid = (new Date)[_DYN_TO_STRING /* @min:%2etoString */]();\r\n var storage = getGlobalInst(storageType === StorageType.LocalStorage ? \"localStorage\" : \"sessionStorage\");\r\n storage.setItem(uid, uid);\r\n var fail = storage.getItem(uid) !== uid;\r\n storage[_DYN_REMOVE_ITEM /* @min:%2eremoveItem */](uid);\r\n if (!fail) {\r\n return storage;\r\n }\r\n }\r\n catch (exception) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n return null;\r\n}\r\n/**\r\n * Gets the sessionStorage object if available\r\n * @return {Storage} - Returns the storage object if available else returns null\r\n */\r\nfunction _getSessionStorageObject() {\r\n if (utlCanUseSessionStorage()) {\r\n return _getVerifiedStorageObject(StorageType.SessionStorage);\r\n }\r\n return null;\r\n}\r\n/**\r\n * Disables the global SDK usage of local or session storage if available\r\n */\r\nexport function utlDisableStorage() {\r\n _canUseLocalStorage = false;\r\n _canUseSessionStorage = false;\r\n}\r\n/**\r\n * Re-enables the global SDK usage of local or session storage if available\r\n */\r\nexport function utlEnableStorage() {\r\n _canUseLocalStorage = utlCanUseLocalStorage(true);\r\n _canUseSessionStorage = utlCanUseSessionStorage(true);\r\n}\r\n/**\r\n * Returns whether LocalStorage can be used, if the reset parameter is passed a true this will override\r\n * any previous disable calls.\r\n * @param reset - Should the usage be reset and determined only based on whether LocalStorage is available\r\n */\r\nexport function utlCanUseLocalStorage(reset) {\r\n if (reset || _canUseLocalStorage === undefined) {\r\n _canUseLocalStorage = !!_getVerifiedStorageObject(StorageType.LocalStorage);\r\n }\r\n return _canUseLocalStorage;\r\n}\r\nexport function utlGetLocalStorage(logger, name) {\r\n var storage = _getLocalStorageObject();\r\n if (storage !== null) {\r\n try {\r\n return storage.getItem(name);\r\n }\r\n catch (e) {\r\n _canUseLocalStorage = false;\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 1 /* _eInternalMessageId.BrowserCannotReadLocalStorage */, \"Browser failed read of local storage. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return null;\r\n}\r\nexport function utlSetLocalStorage(logger, name, data) {\r\n var storage = _getLocalStorageObject();\r\n if (storage !== null) {\r\n try {\r\n storage.setItem(name, data);\r\n return true;\r\n }\r\n catch (e) {\r\n _canUseLocalStorage = false;\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 3 /* _eInternalMessageId.BrowserCannotWriteLocalStorage */, \"Browser failed write to local storage. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return false;\r\n}\r\nexport function utlRemoveStorage(logger, name) {\r\n var storage = _getLocalStorageObject();\r\n if (storage !== null) {\r\n try {\r\n storage[_DYN_REMOVE_ITEM /* @min:%2eremoveItem */](name);\r\n return true;\r\n }\r\n catch (e) {\r\n _canUseLocalStorage = false;\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 5 /* _eInternalMessageId.BrowserFailedRemovalFromLocalStorage */, \"Browser failed removal of local storage item. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return false;\r\n}\r\nexport function utlCanUseSessionStorage(reset) {\r\n if (reset || _canUseSessionStorage === undefined) {\r\n _canUseSessionStorage = !!_getVerifiedStorageObject(StorageType.SessionStorage);\r\n }\r\n return _canUseSessionStorage;\r\n}\r\nexport function utlGetSessionStorageKeys() {\r\n var keys = [];\r\n if (utlCanUseSessionStorage()) {\r\n objForEachKey(getGlobalInst(\"sessionStorage\"), function (key) {\r\n keys.push(key);\r\n });\r\n }\r\n return keys;\r\n}\r\nexport function utlGetSessionStorage(logger, name) {\r\n var storage = _getSessionStorageObject();\r\n if (storage !== null) {\r\n try {\r\n return storage.getItem(name);\r\n }\r\n catch (e) {\r\n _canUseSessionStorage = false;\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 2 /* _eInternalMessageId.BrowserCannotReadSessionStorage */, \"Browser failed read of session storage. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return null;\r\n}\r\nexport function utlSetSessionStorage(logger, name, data) {\r\n var storage = _getSessionStorageObject();\r\n if (storage !== null) {\r\n try {\r\n storage.setItem(name, data);\r\n return true;\r\n }\r\n catch (e) {\r\n _canUseSessionStorage = false;\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 4 /* _eInternalMessageId.BrowserCannotWriteSessionStorage */, \"Browser failed write to session storage. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return false;\r\n}\r\nexport function utlRemoveSessionStorage(logger, name) {\r\n var storage = _getSessionStorageObject();\r\n if (storage !== null) {\r\n try {\r\n storage[_DYN_REMOVE_ITEM /* @min:%2eremoveItem */](name);\r\n return true;\r\n }\r\n catch (e) {\r\n _canUseSessionStorage = false;\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 6 /* _eInternalMessageId.BrowserFailedRemovalFromSessionStorage */, \"Browser failed removal of session storage item. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return false;\r\n}\r\n//# sourceMappingURL=StorageHelperFuncs.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the\r\nexport { Util, CorrelationIdHelper, DateTimeUtils, dateTimeUtilsNow, dateTimeUtilsDuration, UrlHelper, isInternalApplicationInsightsEndpoint, createDistributedTraceContextFromTrace } from \"./Util\";\r\nexport { parseConnectionString, ConnectionStringParser } from \"./ConnectionStringParser\";\r\nexport { RequestHeaders } from \"./RequestResponseHeaders\";\r\nexport { DisabledPropertyName, ProcessLegacy, SampleRate, HttpMethod, DEFAULT_BREEZE_ENDPOINT, DEFAULT_BREEZE_PATH, strNotSpecified } from \"./Constants\";\r\nexport { Envelope } from \"./Telemetry/Common/Envelope\";\r\nexport { Event } from \"./Telemetry/Event\";\r\nexport { Exception } from \"./Telemetry/Exception\";\r\nexport { Metric } from \"./Telemetry/Metric\";\r\nexport { PageView } from \"./Telemetry/PageView\";\r\nexport { RemoteDependencyData } from \"./Telemetry/RemoteDependencyData\";\r\nexport { Trace } from \"./Telemetry/Trace\";\r\nexport { PageViewPerformance } from \"./Telemetry/PageViewPerformance\";\r\nexport { Data } from \"./Telemetry/Common/Data\";\r\nexport { SeverityLevel } from \"./Interfaces/Contracts/SeverityLevel\";\r\nexport { ConfigurationManager } from \"./Interfaces/IConfig\";\r\nexport { ContextTagKeys } from \"./Interfaces/Contracts/ContextTagKeys\";\r\nexport { DataSanitizer, dataSanitizeKeyAndAddUniqueness, dataSanitizeKey, dataSanitizeString, dataSanitizeUrl, dataSanitizeMessage, dataSanitizeException, dataSanitizeProperties, dataSanitizeMeasurements, dataSanitizeId, dataSanitizeInput, dsPadNumber } from \"./Telemetry/Common/DataSanitizer\";\r\nexport { TelemetryItemCreator, createTelemetryItem } from \"./TelemetryItemCreator\";\r\nexport { CtxTagKeys, Extensions } from \"./Interfaces/PartAExtensions\";\r\nexport { DistributedTracingModes } from \"./Enums\";\r\nexport { stringToBoolOrDefault, msToTimeSpan, getExtensionByName, isCrossOriginError } from \"./HelperFuncs\";\r\nexport { isBeaconsSupported as isBeaconApiSupported, createTraceParent, parseTraceParent, isValidTraceId, isValidSpanId, isValidTraceParent, isSampledFlag, formatTraceParent, findW3cTraceParent } from \"@microsoft/applicationinsights-core-js\";\r\nexport { createDomEvent } from \"./DomHelperFuncs\";\r\nexport { utlDisableStorage, utlEnableStorage, utlCanUseLocalStorage, utlGetLocalStorage, utlSetLocalStorage, utlRemoveStorage, utlCanUseSessionStorage, utlGetSessionStorageKeys, utlGetSessionStorage, utlSetSessionStorage, utlRemoveSessionStorage } from \"./StorageHelperFuncs\";\r\nexport { urlParseUrl, urlGetAbsoluteUrl, urlGetPathName, urlGetCompleteUrl, urlParseHost, urlParseFullHost } from \"./UrlHelperFuncs\";\r\nexport var PropertiesPluginIdentifier = \"AppInsightsPropertiesPlugin\";\r\nexport var BreezeChannelIdentifier = \"AppInsightsChannelPlugin\";\r\nexport var AnalyticsPluginIdentifier = \"ApplicationInsightsAnalytics\";\r\n//# sourceMappingURL=applicationinsights-common.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nvar _a;\r\nimport { _throwInternal, getJSON, hasJSON, isObject, objForEachKey, strTrim } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_LENGTH, _DYN_SANITIZE_EXCEPTION, _DYN_SANITIZE_KEY_AND_ADD2, _DYN_SANITIZE_MEASUREMENT3, _DYN_SANITIZE_PROPERTIES, _DYN_STRINGIFY, _DYN_SUBSTRING, _DYN_TO_STRING } from \"../../__DynamicConstants\";\r\nexport function dataSanitizeKeyAndAddUniqueness(logger, key, map) {\r\n var origLength = key[_DYN_LENGTH /* @min:%2elength */];\r\n var field = dataSanitizeKey(logger, key);\r\n // validation truncated the length. We need to add uniqueness\r\n if (field[_DYN_LENGTH /* @min:%2elength */] !== origLength) {\r\n var i = 0;\r\n var uniqueField = field;\r\n while (map[uniqueField] !== undefined) {\r\n i++;\r\n uniqueField = field[_DYN_SUBSTRING /* @min:%2esubstring */](0, 150 /* DataSanitizerValues.MAX_NAME_LENGTH */ - 3) + dsPadNumber(i);\r\n }\r\n field = uniqueField;\r\n }\r\n return field;\r\n}\r\nexport function dataSanitizeKey(logger, name) {\r\n var nameTrunc;\r\n if (name) {\r\n // Remove any leading or trailing whitespace\r\n name = strTrim(name[_DYN_TO_STRING /* @min:%2etoString */]());\r\n // truncate the string to 150 chars\r\n if (name[_DYN_LENGTH /* @min:%2elength */] > 150 /* DataSanitizerValues.MAX_NAME_LENGTH */) {\r\n nameTrunc = name[_DYN_SUBSTRING /* @min:%2esubstring */](0, 150 /* DataSanitizerValues.MAX_NAME_LENGTH */);\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 57 /* _eInternalMessageId.NameTooLong */, \"name is too long. It has been truncated to \" + 150 /* DataSanitizerValues.MAX_NAME_LENGTH */ + \" characters.\", { name: name }, true);\r\n }\r\n }\r\n return nameTrunc || name;\r\n}\r\nexport function dataSanitizeString(logger, value, maxLength) {\r\n if (maxLength === void 0) { maxLength = 1024 /* DataSanitizerValues.MAX_STRING_LENGTH */; }\r\n var valueTrunc;\r\n if (value) {\r\n maxLength = maxLength ? maxLength : 1024 /* DataSanitizerValues.MAX_STRING_LENGTH */; // in case default parameters dont work\r\n value = strTrim(value);\r\n if (value.toString()[_DYN_LENGTH /* @min:%2elength */] > maxLength) {\r\n valueTrunc = value[_DYN_TO_STRING /* @min:%2etoString */]()[_DYN_SUBSTRING /* @min:%2esubstring */](0, maxLength);\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 61 /* _eInternalMessageId.StringValueTooLong */, \"string value is too long. It has been truncated to \" + maxLength + \" characters.\", { value: value }, true);\r\n }\r\n }\r\n return valueTrunc || value;\r\n}\r\nexport function dataSanitizeUrl(logger, url) {\r\n return dataSanitizeInput(logger, url, 2048 /* DataSanitizerValues.MAX_URL_LENGTH */, 66 /* _eInternalMessageId.UrlTooLong */);\r\n}\r\nexport function dataSanitizeMessage(logger, message) {\r\n var messageTrunc;\r\n if (message) {\r\n if (message[_DYN_LENGTH /* @min:%2elength */] > 32768 /* DataSanitizerValues.MAX_MESSAGE_LENGTH */) {\r\n messageTrunc = message[_DYN_SUBSTRING /* @min:%2esubstring */](0, 32768 /* DataSanitizerValues.MAX_MESSAGE_LENGTH */);\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 56 /* _eInternalMessageId.MessageTruncated */, \"message is too long, it has been truncated to \" + 32768 /* DataSanitizerValues.MAX_MESSAGE_LENGTH */ + \" characters.\", { message: message }, true);\r\n }\r\n }\r\n return messageTrunc || message;\r\n}\r\nexport function dataSanitizeException(logger, exception) {\r\n var exceptionTrunc;\r\n if (exception) {\r\n // Make surte its a string\r\n var value = \"\" + exception;\r\n if (value[_DYN_LENGTH /* @min:%2elength */] > 32768 /* DataSanitizerValues.MAX_EXCEPTION_LENGTH */) {\r\n exceptionTrunc = value[_DYN_SUBSTRING /* @min:%2esubstring */](0, 32768 /* DataSanitizerValues.MAX_EXCEPTION_LENGTH */);\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 52 /* _eInternalMessageId.ExceptionTruncated */, \"exception is too long, it has been truncated to \" + 32768 /* DataSanitizerValues.MAX_EXCEPTION_LENGTH */ + \" characters.\", { exception: exception }, true);\r\n }\r\n }\r\n return exceptionTrunc || exception;\r\n}\r\nexport function dataSanitizeProperties(logger, properties) {\r\n if (properties) {\r\n var tempProps_1 = {};\r\n objForEachKey(properties, function (prop, value) {\r\n if (isObject(value) && hasJSON()) {\r\n // Stringify any part C properties\r\n try {\r\n value = getJSON()[_DYN_STRINGIFY /* @min:%2estringify */](value);\r\n }\r\n catch (e) {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 49 /* _eInternalMessageId.CannotSerializeObjectNonSerializable */, \"custom property is not valid\", { exception: e }, true);\r\n }\r\n }\r\n value = dataSanitizeString(logger, value, 8192 /* DataSanitizerValues.MAX_PROPERTY_LENGTH */);\r\n prop = dataSanitizeKeyAndAddUniqueness(logger, prop, tempProps_1);\r\n tempProps_1[prop] = value;\r\n });\r\n properties = tempProps_1;\r\n }\r\n return properties;\r\n}\r\nexport function dataSanitizeMeasurements(logger, measurements) {\r\n if (measurements) {\r\n var tempMeasurements_1 = {};\r\n objForEachKey(measurements, function (measure, value) {\r\n measure = dataSanitizeKeyAndAddUniqueness(logger, measure, tempMeasurements_1);\r\n tempMeasurements_1[measure] = value;\r\n });\r\n measurements = tempMeasurements_1;\r\n }\r\n return measurements;\r\n}\r\nexport function dataSanitizeId(logger, id) {\r\n return id ? dataSanitizeInput(logger, id, 128 /* DataSanitizerValues.MAX_ID_LENGTH */, 69 /* _eInternalMessageId.IdTooLong */)[_DYN_TO_STRING /* @min:%2etoString */]() : id;\r\n}\r\nexport function dataSanitizeInput(logger, input, maxLength, _msgId) {\r\n var inputTrunc;\r\n if (input) {\r\n input = strTrim(input);\r\n if (input[_DYN_LENGTH /* @min:%2elength */] > maxLength) {\r\n inputTrunc = input[_DYN_SUBSTRING /* @min:%2esubstring */](0, maxLength);\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, _msgId, \"input is too long, it has been truncated to \" + maxLength + \" characters.\", { data: input }, true);\r\n }\r\n }\r\n return inputTrunc || input;\r\n}\r\nexport function dsPadNumber(num) {\r\n var s = \"00\" + num;\r\n return s.substr(s[_DYN_LENGTH /* @min:%2elength */] - 3);\r\n}\r\n/**\r\n * Provides the DataSanitizer functions within the previous namespace.\r\n */\r\nexport var DataSanitizer = (_a = {\r\n MAX_NAME_LENGTH: 150 /* DataSanitizerValues.MAX_NAME_LENGTH */,\r\n MAX_ID_LENGTH: 128 /* DataSanitizerValues.MAX_ID_LENGTH */,\r\n MAX_PROPERTY_LENGTH: 8192 /* DataSanitizerValues.MAX_PROPERTY_LENGTH */,\r\n MAX_STRING_LENGTH: 1024 /* DataSanitizerValues.MAX_STRING_LENGTH */,\r\n MAX_URL_LENGTH: 2048 /* DataSanitizerValues.MAX_URL_LENGTH */,\r\n MAX_MESSAGE_LENGTH: 32768 /* DataSanitizerValues.MAX_MESSAGE_LENGTH */,\r\n MAX_EXCEPTION_LENGTH: 32768 /* DataSanitizerValues.MAX_EXCEPTION_LENGTH */\r\n },\r\n _a[_DYN_SANITIZE_KEY_AND_ADD2 /* @min:sanitizeKeyAndAddUniqueness */] = dataSanitizeKeyAndAddUniqueness,\r\n _a.sanitizeKey = dataSanitizeKey,\r\n _a.sanitizeString = dataSanitizeString,\r\n _a.sanitizeUrl = dataSanitizeUrl,\r\n _a.sanitizeMessage = dataSanitizeMessage,\r\n _a[_DYN_SANITIZE_EXCEPTION /* @min:sanitizeException */] = dataSanitizeException,\r\n _a[_DYN_SANITIZE_PROPERTIES /* @min:sanitizeProperties */] = dataSanitizeProperties,\r\n _a[_DYN_SANITIZE_MEASUREMENT3 /* @min:sanitizeMeasurements */] = dataSanitizeMeasurements,\r\n _a.sanitizeId = dataSanitizeId,\r\n _a.sanitizeInput = dataSanitizeInput,\r\n _a.padNumber = dsPadNumber,\r\n _a.trim = strTrim,\r\n _a);\r\n//# sourceMappingURL=DataSanitizer.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n/**\r\n * This is an internal property used to cause internal (reporting) requests to be ignored from reporting\r\n * additional telemetry, to handle polyfil implementations ALL urls used with a disabled request will\r\n * also be ignored for future requests even when this property is not provided.\r\n * Tagging as Ignore as this is an internal value and is not expected to be used outside of the SDK\r\n * @ignore\r\n */\r\nexport var DisabledPropertyName = \"Microsoft_ApplicationInsights_BypassAjaxInstrumentation\";\r\nexport var SampleRate = \"sampleRate\";\r\nexport var ProcessLegacy = \"ProcessLegacy\";\r\nexport var HttpMethod = \"http.method\";\r\nexport var DEFAULT_BREEZE_ENDPOINT = \"https://dc.services.visualstudio.com\";\r\nexport var DEFAULT_BREEZE_PATH = \"/v2/track\";\r\nexport var strNotSpecified = \"not_specified\";\r\nexport var strIkey = \"iKey\";\r\n//# sourceMappingURL=Constants.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { isNullOrUndefined, objForEachKey, throwError, toISOString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { strIkey, strNotSpecified } from \"./Constants\";\r\nimport { dataSanitizeString } from \"./Telemetry/Common/DataSanitizer\";\r\nimport { _DYN_NAME } from \"./__DynamicConstants\";\r\n/**\r\n * Create a telemetry item that the 1DS channel understands\r\n * @param item domain specific properties; part B\r\n * @param baseType telemetry item type. ie PageViewData\r\n * @param envelopeName name of the envelope. ie Microsoft.ApplicationInsights.<instrumentation key>.PageView\r\n * @param customProperties user defined custom properties; part C\r\n * @param systemProperties system properties that are added to the context; part A\r\n * @returns ITelemetryItem that is sent to channel\r\n */\r\nexport function createTelemetryItem(item, baseType, envelopeName, logger, customProperties, systemProperties) {\r\n var _a;\r\n envelopeName = dataSanitizeString(logger, envelopeName) || strNotSpecified;\r\n if (isNullOrUndefined(item) ||\r\n isNullOrUndefined(baseType) ||\r\n isNullOrUndefined(envelopeName)) {\r\n throwError(\"Input doesn't contain all required fields\");\r\n }\r\n var iKey = \"\";\r\n if (item[strIkey]) {\r\n iKey = item[strIkey];\r\n delete item[strIkey];\r\n }\r\n var telemetryItem = (_a = {},\r\n _a[_DYN_NAME /* @min:name */] = envelopeName,\r\n _a.time = toISOString(new Date()),\r\n _a.iKey = iKey,\r\n _a.ext = systemProperties ? systemProperties : {},\r\n _a.tags = [],\r\n _a.data = {},\r\n _a.baseType = baseType,\r\n _a.baseData = item // Part B\r\n ,\r\n _a);\r\n // Part C\r\n if (!isNullOrUndefined(customProperties)) {\r\n objForEachKey(customProperties, function (prop, value) {\r\n telemetryItem.data[prop] = value;\r\n });\r\n }\r\n return telemetryItem;\r\n}\r\nvar TelemetryItemCreator = /** @class */ (function () {\r\n function TelemetryItemCreator() {\r\n }\r\n /**\r\n * Create a telemetry item that the 1DS channel understands\r\n * @param item domain specific properties; part B\r\n * @param baseType telemetry item type. ie PageViewData\r\n * @param envelopeName name of the envelope. ie Microsoft.ApplicationInsights.<instrumentation key>.PageView\r\n * @param customProperties user defined custom properties; part C\r\n * @param systemProperties system properties that are added to the context; part A\r\n * @returns ITelemetryItem that is sent to channel\r\n */\r\n TelemetryItemCreator.create = createTelemetryItem;\r\n return TelemetryItemCreator;\r\n}());\r\nexport { TelemetryItemCreator };\r\n//# sourceMappingURL=TelemetryItemCreator.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { strNotSpecified } from \"../Constants\";\r\nimport { _DYN_MEASUREMENTS, _DYN_NAME, _DYN_PROPERTIES } from \"../__DynamicConstants\";\r\nimport { dataSanitizeMeasurements, dataSanitizeProperties, dataSanitizeString } from \"./Common/DataSanitizer\";\r\nvar Event = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the EventTelemetry object\r\n */\r\n function Event(logger, name, properties, measurements) {\r\n this.aiDataContract = {\r\n ver: 1 /* FieldType.Required */,\r\n name: 1 /* FieldType.Required */,\r\n properties: 0 /* FieldType.Default */,\r\n measurements: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self.ver = 2;\r\n _self[_DYN_NAME /* @min:%2ename */] = dataSanitizeString(logger, name) || strNotSpecified;\r\n _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n }\r\n Event.envelopeType = \"Microsoft.ApplicationInsights.{0}.Event\";\r\n Event.dataType = \"EventData\";\r\n return Event;\r\n}());\r\nexport { Event };\r\n//# sourceMappingURL=Event.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { strNotSpecified } from \"../Constants\";\r\nimport { _DYN_MEASUREMENTS, _DYN_MESSAGE, _DYN_PROPERTIES, _DYN_SEVERITY_LEVEL } from \"../__DynamicConstants\";\r\nimport { dataSanitizeMeasurements, dataSanitizeMessage, dataSanitizeProperties } from \"./Common/DataSanitizer\";\r\nvar Trace = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the TraceTelemetry object\r\n */\r\n function Trace(logger, message, severityLevel, properties, measurements) {\r\n this.aiDataContract = {\r\n ver: 1 /* FieldType.Required */,\r\n message: 1 /* FieldType.Required */,\r\n severityLevel: 0 /* FieldType.Default */,\r\n properties: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self.ver = 2;\r\n message = message || strNotSpecified;\r\n _self[_DYN_MESSAGE /* @min:%2emessage */] = dataSanitizeMessage(logger, message);\r\n _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n if (severityLevel) {\r\n _self[_DYN_SEVERITY_LEVEL /* @min:%2eseverityLevel */] = severityLevel;\r\n }\r\n }\r\n Trace.envelopeType = \"Microsoft.ApplicationInsights.{0}.Message\";\r\n Trace.dataType = \"MessageData\";\r\n return Trace;\r\n}());\r\nexport { Trace };\r\n//# sourceMappingURL=Trace.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nvar DataPoint = /** @class */ (function () {\r\n function DataPoint() {\r\n /**\r\n * The data contract for serializing this object.\r\n */\r\n this.aiDataContract = {\r\n name: 1 /* FieldType.Required */,\r\n kind: 0 /* FieldType.Default */,\r\n value: 1 /* FieldType.Required */,\r\n count: 0 /* FieldType.Default */,\r\n min: 0 /* FieldType.Default */,\r\n max: 0 /* FieldType.Default */,\r\n stdDev: 0 /* FieldType.Default */\r\n };\r\n /**\r\n * Metric type. Single measurement or the aggregated value.\r\n */\r\n this.kind = 0 /* DataPointType.Measurement */;\r\n }\r\n return DataPoint;\r\n}());\r\nexport { DataPoint };\r\n//# sourceMappingURL=DataPoint.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { strNotSpecified } from \"../Constants\";\r\nimport { _DYN_MEASUREMENTS, _DYN_NAME, _DYN_PROPERTIES } from \"../__DynamicConstants\";\r\nimport { DataPoint } from \"./Common/DataPoint\";\r\nimport { dataSanitizeMeasurements, dataSanitizeProperties, dataSanitizeString } from \"./Common/DataSanitizer\";\r\nvar Metric = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the MetricTelemetry object\r\n */\r\n function Metric(logger, name, value, count, min, max, stdDev, properties, measurements) {\r\n this.aiDataContract = {\r\n ver: 1 /* FieldType.Required */,\r\n metrics: 1 /* FieldType.Required */,\r\n properties: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self.ver = 2;\r\n var dataPoint = new DataPoint();\r\n dataPoint.count = count > 0 ? count : undefined;\r\n dataPoint.max = isNaN(max) || max === null ? undefined : max;\r\n dataPoint.min = isNaN(min) || min === null ? undefined : min;\r\n dataPoint[_DYN_NAME /* @min:%2ename */] = dataSanitizeString(logger, name) || strNotSpecified;\r\n dataPoint.value = value;\r\n dataPoint.stdDev = isNaN(stdDev) || stdDev === null ? undefined : stdDev;\r\n _self.metrics = [dataPoint];\r\n _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n }\r\n Metric.envelopeType = \"Microsoft.ApplicationInsights.{0}.Metric\";\r\n Metric.dataType = \"MetricData\";\r\n return Metric;\r\n}());\r\nexport { Metric };\r\n//# sourceMappingURL=Metric.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { strNotSpecified } from \"../Constants\";\r\nimport { msToTimeSpan } from \"../HelperFuncs\";\r\nimport { _DYN_DURATION, _DYN_MEASUREMENTS, _DYN_NAME, _DYN_PROPERTIES } from \"../__DynamicConstants\";\r\nimport { dataSanitizeId, dataSanitizeMeasurements, dataSanitizeProperties, dataSanitizeString, dataSanitizeUrl } from \"./Common/DataSanitizer\";\r\nvar PageView = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the PageEventTelemetry object\r\n */\r\n function PageView(logger, name, url, durationMs, properties, measurements, id) {\r\n this.aiDataContract = {\r\n ver: 1 /* FieldType.Required */,\r\n name: 0 /* FieldType.Default */,\r\n url: 0 /* FieldType.Default */,\r\n duration: 0 /* FieldType.Default */,\r\n properties: 0 /* FieldType.Default */,\r\n measurements: 0 /* FieldType.Default */,\r\n id: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self.ver = 2;\r\n _self.id = dataSanitizeId(logger, id);\r\n _self.url = dataSanitizeUrl(logger, url);\r\n _self[_DYN_NAME /* @min:%2ename */] = dataSanitizeString(logger, name) || strNotSpecified;\r\n if (!isNaN(durationMs)) {\r\n _self[_DYN_DURATION /* @min:%2eduration */] = msToTimeSpan(durationMs);\r\n }\r\n _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n }\r\n PageView.envelopeType = \"Microsoft.ApplicationInsights.{0}.Pageview\";\r\n PageView.dataType = \"PageviewData\";\r\n return PageView;\r\n}());\r\nexport { PageView };\r\n//# sourceMappingURL=PageView.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { strNotSpecified } from \"../Constants\";\r\nimport { _DYN_DURATION, _DYN_MEASUREMENTS, _DYN_NAME, _DYN_PROPERTIES, _DYN_RECEIVED_RESPONSE } from \"../__DynamicConstants\";\r\nimport { dataSanitizeMeasurements, dataSanitizeProperties, dataSanitizeString, dataSanitizeUrl } from \"./Common/DataSanitizer\";\r\nvar PageViewPerformance = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the PageEventTelemetry object\r\n */\r\n function PageViewPerformance(logger, name, url, unused, properties, measurements, cs4BaseData) {\r\n this.aiDataContract = {\r\n ver: 1 /* FieldType.Required */,\r\n name: 0 /* FieldType.Default */,\r\n url: 0 /* FieldType.Default */,\r\n duration: 0 /* FieldType.Default */,\r\n perfTotal: 0 /* FieldType.Default */,\r\n networkConnect: 0 /* FieldType.Default */,\r\n sentRequest: 0 /* FieldType.Default */,\r\n receivedResponse: 0 /* FieldType.Default */,\r\n domProcessing: 0 /* FieldType.Default */,\r\n properties: 0 /* FieldType.Default */,\r\n measurements: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self.ver = 2;\r\n _self.url = dataSanitizeUrl(logger, url);\r\n _self[_DYN_NAME /* @min:%2ename */] = dataSanitizeString(logger, name) || strNotSpecified;\r\n _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n if (cs4BaseData) {\r\n _self.domProcessing = cs4BaseData.domProcessing;\r\n _self[_DYN_DURATION /* @min:%2eduration */] = cs4BaseData[_DYN_DURATION /* @min:%2eduration */];\r\n _self.networkConnect = cs4BaseData.networkConnect;\r\n _self.perfTotal = cs4BaseData.perfTotal;\r\n _self[_DYN_RECEIVED_RESPONSE /* @min:%2ereceivedResponse */] = cs4BaseData[_DYN_RECEIVED_RESPONSE /* @min:%2ereceivedResponse */];\r\n _self.sentRequest = cs4BaseData.sentRequest;\r\n }\r\n }\r\n PageViewPerformance.envelopeType = \"Microsoft.ApplicationInsights.{0}.PageviewPerformance\";\r\n PageViewPerformance.dataType = \"PageviewPerformanceData\";\r\n return PageViewPerformance;\r\n}());\r\nexport { PageViewPerformance };\r\n//# sourceMappingURL=PageViewPerformance.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { __assign } from \"tslib\";\r\nimport { arrForEach, arrMap, isArray, isError, isFunction, isNullOrUndefined, isObject, isString, strTrim } from \"@microsoft/applicationinsights-core-js\";\r\nimport { strNotSpecified } from \"../Constants\";\r\nimport { _DYN_ASSEMBLY, _DYN_EXCEPTIONS, _DYN_FILE_NAME, _DYN_HAS_FULL_STACK, _DYN_INDEX_OF, _DYN_IS_MANUAL, _DYN_LENGTH, _DYN_LEVEL, _DYN_LINE, _DYN_MEASUREMENTS, _DYN_MESSAGE, _DYN_METHOD, _DYN_NAME, _DYN_PARSED_STACK, _DYN_PROBLEM_GROUP, _DYN_PROPERTIES, _DYN_SEVERITY_LEVEL, _DYN_SIZE_IN_BYTES, _DYN_SPLIT, _DYN_STRINGIFY, _DYN_TO_STRING, _DYN_TYPE_NAME, _DYN__CREATE_FROM_INTERFA1 } from \"../__DynamicConstants\";\r\nimport { dataSanitizeException, dataSanitizeMeasurements, dataSanitizeMessage, dataSanitizeProperties, dataSanitizeString } from \"./Common/DataSanitizer\";\r\nvar NoMethod = \"<no_method>\";\r\nvar strError = \"error\";\r\nvar strStack = \"stack\";\r\nvar strStackDetails = \"stackDetails\";\r\nvar strErrorSrc = \"errorSrc\";\r\nvar strMessage = \"message\";\r\nvar strDescription = \"description\";\r\nfunction _stringify(value, convertToString) {\r\n var result = value;\r\n if (result && !isString(result)) {\r\n if (JSON && JSON[_DYN_STRINGIFY /* @min:%2estringify */]) {\r\n result = JSON[_DYN_STRINGIFY /* @min:%2estringify */](value);\r\n if (convertToString && (!result || result === \"{}\")) {\r\n if (isFunction(value[_DYN_TO_STRING /* @min:%2etoString */])) {\r\n result = value[_DYN_TO_STRING /* @min:%2etoString */]();\r\n }\r\n else {\r\n result = \"\" + value;\r\n }\r\n }\r\n }\r\n else {\r\n result = \"\" + value + \" - (Missing JSON.stringify)\";\r\n }\r\n }\r\n return result || \"\";\r\n}\r\nfunction _formatMessage(theEvent, errorType) {\r\n var evtMessage = theEvent;\r\n if (theEvent) {\r\n if (evtMessage && !isString(evtMessage)) {\r\n evtMessage = theEvent[strMessage] || theEvent[strDescription] || evtMessage;\r\n }\r\n // Make sure the message is a string\r\n if (evtMessage && !isString(evtMessage)) {\r\n // tslint:disable-next-line: prefer-conditional-expression\r\n evtMessage = _stringify(evtMessage, true);\r\n }\r\n if (theEvent[\"filename\"]) {\r\n // Looks like an event object with filename\r\n evtMessage = evtMessage + \" @\" + (theEvent[\"filename\"] || \"\") + \":\" + (theEvent[\"lineno\"] || \"?\") + \":\" + (theEvent[\"colno\"] || \"?\");\r\n }\r\n }\r\n // Automatically add the error type to the message if it does already appear to be present\r\n if (errorType && errorType !== \"String\" && errorType !== \"Object\" && errorType !== \"Error\" && (evtMessage || \"\")[_DYN_INDEX_OF /* @min:%2eindexOf */](errorType) === -1) {\r\n evtMessage = errorType + \": \" + evtMessage;\r\n }\r\n return evtMessage || \"\";\r\n}\r\nfunction _isExceptionDetailsInternal(value) {\r\n try {\r\n if (isObject(value)) {\r\n return \"hasFullStack\" in value && \"typeName\" in value;\r\n }\r\n }\r\n catch (e) {\r\n // This can happen with some native browser objects, but should not happen for the type we are checking for\r\n }\r\n return false;\r\n}\r\nfunction _isExceptionInternal(value) {\r\n try {\r\n if (isObject(value)) {\r\n return (\"ver\" in value && \"exceptions\" in value && \"properties\" in value);\r\n }\r\n }\r\n catch (e) {\r\n // This can happen with some native browser objects, but should not happen for the type we are checking for\r\n }\r\n return false;\r\n}\r\nfunction _isStackDetails(details) {\r\n return details && details.src && isString(details.src) && details.obj && isArray(details.obj);\r\n}\r\nfunction _convertStackObj(errorStack) {\r\n var src = errorStack || \"\";\r\n if (!isString(src)) {\r\n if (isString(src[strStack])) {\r\n src = src[strStack];\r\n }\r\n else {\r\n src = \"\" + src;\r\n }\r\n }\r\n var items = src[_DYN_SPLIT /* @min:%2esplit */](\"\\n\");\r\n return {\r\n src: src,\r\n obj: items\r\n };\r\n}\r\nfunction _getOperaStack(errorMessage) {\r\n var stack = [];\r\n var lines = errorMessage[_DYN_SPLIT /* @min:%2esplit */](\"\\n\");\r\n for (var lp = 0; lp < lines[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n var entry = lines[lp];\r\n if (lines[lp + 1]) {\r\n entry += \"@\" + lines[lp + 1];\r\n lp++;\r\n }\r\n stack.push(entry);\r\n }\r\n return {\r\n src: errorMessage,\r\n obj: stack\r\n };\r\n}\r\nfunction _getStackFromErrorObj(errorObj) {\r\n var details = null;\r\n if (errorObj) {\r\n try {\r\n /* Using bracket notation is support older browsers (IE 7/8 -- dont remember the version) that throw when using dot\r\n notation for undefined objects and we don't want to loose the error from being reported */\r\n if (errorObj[strStack]) {\r\n // Chrome/Firefox\r\n details = _convertStackObj(errorObj[strStack]);\r\n }\r\n else if (errorObj[strError] && errorObj[strError][strStack]) {\r\n // Edge error event provides the stack and error object\r\n details = _convertStackObj(errorObj[strError][strStack]);\r\n }\r\n else if (errorObj[\"exception\"] && errorObj.exception[strStack]) {\r\n details = _convertStackObj(errorObj.exception[strStack]);\r\n }\r\n else if (_isStackDetails(errorObj)) {\r\n details = errorObj;\r\n }\r\n else if (_isStackDetails(errorObj[strStackDetails])) {\r\n details = errorObj[strStackDetails];\r\n }\r\n else if (window && window[\"opera\"] && errorObj[strMessage]) {\r\n // Opera\r\n details = _getOperaStack(errorObj[_DYN_MESSAGE /* @min:%2emessage */]);\r\n }\r\n else if (errorObj[\"reason\"] && errorObj.reason[strStack]) {\r\n // UnhandledPromiseRejection\r\n details = _convertStackObj(errorObj.reason[strStack]);\r\n }\r\n else if (isString(errorObj)) {\r\n details = _convertStackObj(errorObj);\r\n }\r\n else {\r\n var evtMessage = errorObj[strMessage] || errorObj[strDescription] || \"\";\r\n if (isString(errorObj[strErrorSrc])) {\r\n if (evtMessage) {\r\n evtMessage += \"\\n\";\r\n }\r\n evtMessage += \" from \" + errorObj[strErrorSrc];\r\n }\r\n if (evtMessage) {\r\n details = _convertStackObj(evtMessage);\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // something unexpected happened so to avoid failing to report any error lets swallow the exception\r\n // and fallback to the callee/caller method\r\n details = _convertStackObj(e);\r\n }\r\n }\r\n return details || {\r\n src: \"\",\r\n obj: null\r\n };\r\n}\r\nfunction _formatStackTrace(stackDetails) {\r\n var stack = \"\";\r\n if (stackDetails) {\r\n if (stackDetails.obj) {\r\n arrForEach(stackDetails.obj, function (entry) {\r\n stack += entry + \"\\n\";\r\n });\r\n }\r\n else {\r\n stack = stackDetails.src || \"\";\r\n }\r\n }\r\n return stack;\r\n}\r\nfunction _parseStack(stack) {\r\n var parsedStack;\r\n var frames = stack.obj;\r\n if (frames && frames[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n parsedStack = [];\r\n var level_1 = 0;\r\n var totalSizeInBytes_1 = 0;\r\n arrForEach(frames, function (frame) {\r\n var theFrame = frame[_DYN_TO_STRING /* @min:%2etoString */]();\r\n if (_StackFrame.regex.test(theFrame)) {\r\n var parsedFrame = new _StackFrame(theFrame, level_1++);\r\n totalSizeInBytes_1 += parsedFrame[_DYN_SIZE_IN_BYTES /* @min:%2esizeInBytes */];\r\n parsedStack.push(parsedFrame);\r\n }\r\n });\r\n // DP Constraint - exception parsed stack must be < 32KB\r\n // remove frames from the middle to meet the threshold\r\n var exceptionParsedStackThreshold = 32 * 1024;\r\n if (totalSizeInBytes_1 > exceptionParsedStackThreshold) {\r\n var left = 0;\r\n var right = parsedStack[_DYN_LENGTH /* @min:%2elength */] - 1;\r\n var size = 0;\r\n var acceptedLeft = left;\r\n var acceptedRight = right;\r\n while (left < right) {\r\n // check size\r\n var lSize = parsedStack[left][_DYN_SIZE_IN_BYTES /* @min:%2esizeInBytes */];\r\n var rSize = parsedStack[right][_DYN_SIZE_IN_BYTES /* @min:%2esizeInBytes */];\r\n size += lSize + rSize;\r\n if (size > exceptionParsedStackThreshold) {\r\n // remove extra frames from the middle\r\n var howMany = acceptedRight - acceptedLeft + 1;\r\n parsedStack.splice(acceptedLeft, howMany);\r\n break;\r\n }\r\n // update pointers\r\n acceptedLeft = left;\r\n acceptedRight = right;\r\n left++;\r\n right--;\r\n }\r\n }\r\n }\r\n return parsedStack;\r\n}\r\nfunction _getErrorType(errorType) {\r\n // Gets the Error Type by passing the constructor (used to get the true type of native error object).\r\n var typeName = \"\";\r\n if (errorType) {\r\n typeName = errorType.typeName || errorType[_DYN_NAME /* @min:%2ename */] || \"\";\r\n if (!typeName) {\r\n try {\r\n var funcNameRegex = /function (.{1,200})\\(/;\r\n var results = (funcNameRegex).exec((errorType).constructor[_DYN_TO_STRING /* @min:%2etoString */]());\r\n typeName = (results && results[_DYN_LENGTH /* @min:%2elength */] > 1) ? results[1] : \"\";\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty -- Ignoring any failures as nothing we can do\r\n }\r\n }\r\n }\r\n return typeName;\r\n}\r\n/**\r\n * Formats the provided errorObj for display and reporting, it may be a String, Object, integer or undefined depending on the browser.\r\n * @param errorObj The supplied errorObj\r\n */\r\nexport function _formatErrorCode(errorObj) {\r\n if (errorObj) {\r\n try {\r\n if (!isString(errorObj)) {\r\n var errorType = _getErrorType(errorObj);\r\n var result = _stringify(errorObj, false);\r\n if (!result || result === \"{}\") {\r\n if (errorObj[strError]) {\r\n // Looks like an MS Error Event\r\n errorObj = errorObj[strError];\r\n errorType = _getErrorType(errorObj);\r\n }\r\n result = _stringify(errorObj, true);\r\n }\r\n if (result[_DYN_INDEX_OF /* @min:%2eindexOf */](errorType) !== 0 && errorType !== \"String\") {\r\n return errorType + \":\" + result;\r\n }\r\n return result;\r\n }\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty -- Ignoring any failures as nothing we can do\r\n }\r\n }\r\n // Fallback to just letting the object format itself into a string\r\n return \"\" + (errorObj || \"\");\r\n}\r\nvar Exception = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the ExceptionTelemetry object\r\n */\r\n function Exception(logger, exception, properties, measurements, severityLevel, id) {\r\n this.aiDataContract = {\r\n ver: 1 /* FieldType.Required */,\r\n exceptions: 1 /* FieldType.Required */,\r\n severityLevel: 0 /* FieldType.Default */,\r\n properties: 0 /* FieldType.Default */,\r\n measurements: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self.ver = 2; // TODO: handle the CS\"4.0\" ==> breeze 2 conversion in a better way\r\n if (!_isExceptionInternal(exception)) {\r\n if (!properties) {\r\n properties = {};\r\n }\r\n _self[_DYN_EXCEPTIONS /* @min:%2eexceptions */] = [new _ExceptionDetails(logger, exception, properties)];\r\n _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n if (severityLevel) {\r\n _self[_DYN_SEVERITY_LEVEL /* @min:%2eseverityLevel */] = severityLevel;\r\n }\r\n if (id) {\r\n _self.id = id;\r\n }\r\n }\r\n else {\r\n _self[_DYN_EXCEPTIONS /* @min:%2eexceptions */] = exception[_DYN_EXCEPTIONS /* @min:%2eexceptions */] || [];\r\n _self[_DYN_PROPERTIES /* @min:%2eproperties */] = exception[_DYN_PROPERTIES /* @min:%2eproperties */];\r\n _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = exception[_DYN_MEASUREMENTS /* @min:%2emeasurements */];\r\n if (exception[_DYN_SEVERITY_LEVEL /* @min:%2eseverityLevel */]) {\r\n _self[_DYN_SEVERITY_LEVEL /* @min:%2eseverityLevel */] = exception[_DYN_SEVERITY_LEVEL /* @min:%2eseverityLevel */];\r\n }\r\n if (exception.id) {\r\n _self.id = exception.id;\r\n }\r\n if (exception[_DYN_PROBLEM_GROUP /* @min:%2eproblemGroup */]) {\r\n _self[_DYN_PROBLEM_GROUP /* @min:%2eproblemGroup */] = exception[_DYN_PROBLEM_GROUP /* @min:%2eproblemGroup */];\r\n }\r\n // bool/int types, use isNullOrUndefined\r\n if (!isNullOrUndefined(exception[_DYN_IS_MANUAL /* @min:%2eisManual */])) {\r\n _self[_DYN_IS_MANUAL /* @min:%2eisManual */] = exception[_DYN_IS_MANUAL /* @min:%2eisManual */];\r\n }\r\n }\r\n }\r\n Exception.CreateAutoException = function (message, url, lineNumber, columnNumber, error, evt, stack, errorSrc) {\r\n var _a;\r\n var errorType = _getErrorType(error || evt || message);\r\n return _a = {},\r\n _a[_DYN_MESSAGE /* @min:message */] = _formatMessage(message, errorType),\r\n _a.url = url,\r\n _a.lineNumber = lineNumber,\r\n _a.columnNumber = columnNumber,\r\n _a.error = _formatErrorCode(error || evt || message),\r\n _a.evt = _formatErrorCode(evt || message),\r\n _a[_DYN_TYPE_NAME /* @min:typeName */] = errorType,\r\n _a.stackDetails = _getStackFromErrorObj(stack || error || evt),\r\n _a.errorSrc = errorSrc,\r\n _a;\r\n };\r\n Exception.CreateFromInterface = function (logger, exception, properties, measurements) {\r\n var exceptions = exception[_DYN_EXCEPTIONS /* @min:%2eexceptions */]\r\n && arrMap(exception[_DYN_EXCEPTIONS /* @min:%2eexceptions */], function (ex) { return _ExceptionDetails[_DYN__CREATE_FROM_INTERFA1 /* @min:%2eCreateFromInterface */](logger, ex); });\r\n var exceptionData = new Exception(logger, __assign(__assign({}, exception), { exceptions: exceptions }), properties, measurements);\r\n return exceptionData;\r\n };\r\n Exception.prototype.toInterface = function () {\r\n var _a;\r\n var _b = this, exceptions = _b.exceptions, properties = _b.properties, measurements = _b.measurements, severityLevel = _b.severityLevel, problemGroup = _b.problemGroup, id = _b.id, isManual = _b.isManual;\r\n var exceptionDetailsInterface = exceptions instanceof Array\r\n && arrMap(exceptions, function (exception) { return exception.toInterface(); })\r\n || undefined;\r\n return _a = {\r\n ver: \"4.0\"\r\n },\r\n _a[_DYN_EXCEPTIONS /* @min:exceptions */] = exceptionDetailsInterface,\r\n _a.severityLevel = severityLevel,\r\n _a.properties = properties,\r\n _a.measurements = measurements,\r\n _a.problemGroup = problemGroup,\r\n _a.id = id,\r\n _a.isManual = isManual,\r\n _a;\r\n };\r\n /**\r\n * Creates a simple exception with 1 stack frame. Useful for manual constracting of exception.\r\n */\r\n Exception.CreateSimpleException = function (message, typeName, assembly, fileName, details, line) {\r\n var _a;\r\n return {\r\n exceptions: [\r\n (_a = {},\r\n _a[_DYN_HAS_FULL_STACK /* @min:hasFullStack */] = true,\r\n _a.message = message,\r\n _a.stack = details,\r\n _a.typeName = typeName,\r\n _a)\r\n ]\r\n };\r\n };\r\n Exception.envelopeType = \"Microsoft.ApplicationInsights.{0}.Exception\";\r\n Exception.dataType = \"ExceptionData\";\r\n Exception.formatError = _formatErrorCode;\r\n return Exception;\r\n}());\r\nexport { Exception };\r\nvar _ExceptionDetails = /** @class */ (function () {\r\n function _ExceptionDetails(logger, exception, properties) {\r\n this.aiDataContract = {\r\n id: 0 /* FieldType.Default */,\r\n outerId: 0 /* FieldType.Default */,\r\n typeName: 1 /* FieldType.Required */,\r\n message: 1 /* FieldType.Required */,\r\n hasFullStack: 0 /* FieldType.Default */,\r\n stack: 0 /* FieldType.Default */,\r\n parsedStack: 2 /* FieldType.Array */\r\n };\r\n var _self = this;\r\n if (!_isExceptionDetailsInternal(exception)) {\r\n var error = exception;\r\n var evt = error && error.evt;\r\n if (!isError(error)) {\r\n error = error[strError] || evt || error;\r\n }\r\n _self[_DYN_TYPE_NAME /* @min:%2etypeName */] = dataSanitizeString(logger, _getErrorType(error)) || strNotSpecified;\r\n _self[_DYN_MESSAGE /* @min:%2emessage */] = dataSanitizeMessage(logger, _formatMessage(exception || error, _self[_DYN_TYPE_NAME /* @min:%2etypeName */])) || strNotSpecified;\r\n var stack = exception[strStackDetails] || _getStackFromErrorObj(exception);\r\n _self[_DYN_PARSED_STACK /* @min:%2eparsedStack */] = _parseStack(stack);\r\n _self[strStack] = dataSanitizeException(logger, _formatStackTrace(stack));\r\n _self.hasFullStack = isArray(_self.parsedStack) && _self.parsedStack[_DYN_LENGTH /* @min:%2elength */] > 0;\r\n if (properties) {\r\n properties[_DYN_TYPE_NAME /* @min:%2etypeName */] = properties[_DYN_TYPE_NAME /* @min:%2etypeName */] || _self[_DYN_TYPE_NAME /* @min:%2etypeName */];\r\n }\r\n }\r\n else {\r\n _self[_DYN_TYPE_NAME /* @min:%2etypeName */] = exception[_DYN_TYPE_NAME /* @min:%2etypeName */];\r\n _self[_DYN_MESSAGE /* @min:%2emessage */] = exception[_DYN_MESSAGE /* @min:%2emessage */];\r\n _self[strStack] = exception[strStack];\r\n _self[_DYN_PARSED_STACK /* @min:%2eparsedStack */] = exception[_DYN_PARSED_STACK /* @min:%2eparsedStack */] || [];\r\n _self[_DYN_HAS_FULL_STACK /* @min:%2ehasFullStack */] = exception[_DYN_HAS_FULL_STACK /* @min:%2ehasFullStack */];\r\n }\r\n }\r\n _ExceptionDetails.prototype.toInterface = function () {\r\n var _a;\r\n var _self = this;\r\n var parsedStack = _self[_DYN_PARSED_STACK /* @min:%2eparsedStack */] instanceof Array\r\n && arrMap(_self[_DYN_PARSED_STACK /* @min:%2eparsedStack */], function (frame) { return frame.toInterface(); });\r\n var exceptionDetailsInterface = (_a = {\r\n id: _self.id,\r\n outerId: _self.outerId,\r\n typeName: _self[_DYN_TYPE_NAME /* @min:%2etypeName */],\r\n message: _self[_DYN_MESSAGE /* @min:%2emessage */],\r\n hasFullStack: _self[_DYN_HAS_FULL_STACK /* @min:%2ehasFullStack */],\r\n stack: _self[strStack]\r\n },\r\n _a[_DYN_PARSED_STACK /* @min:parsedStack */] = parsedStack || undefined,\r\n _a);\r\n return exceptionDetailsInterface;\r\n };\r\n _ExceptionDetails.CreateFromInterface = function (logger, exception) {\r\n var parsedStack = (exception[_DYN_PARSED_STACK /* @min:%2eparsedStack */] instanceof Array\r\n && arrMap(exception[_DYN_PARSED_STACK /* @min:%2eparsedStack */], function (frame) { return _StackFrame[_DYN__CREATE_FROM_INTERFA1 /* @min:%2eCreateFromInterface */](frame); }))\r\n || exception[_DYN_PARSED_STACK /* @min:%2eparsedStack */];\r\n var exceptionDetails = new _ExceptionDetails(logger, __assign(__assign({}, exception), { parsedStack: parsedStack }));\r\n return exceptionDetails;\r\n };\r\n return _ExceptionDetails;\r\n}());\r\nexport { _ExceptionDetails };\r\nvar _StackFrame = /** @class */ (function () {\r\n function _StackFrame(sourceFrame, level) {\r\n this.aiDataContract = {\r\n level: 1 /* FieldType.Required */,\r\n method: 1 /* FieldType.Required */,\r\n assembly: 0 /* FieldType.Default */,\r\n fileName: 0 /* FieldType.Default */,\r\n line: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self[_DYN_SIZE_IN_BYTES /* @min:%2esizeInBytes */] = 0;\r\n // Not converting this to isString() as typescript uses this logic to \"understand\" the different\r\n // types for the 2 different code paths\r\n if (typeof sourceFrame === \"string\") {\r\n var frame = sourceFrame;\r\n _self[_DYN_LEVEL /* @min:%2elevel */] = level;\r\n _self[_DYN_METHOD /* @min:%2emethod */] = NoMethod;\r\n _self[_DYN_ASSEMBLY /* @min:%2eassembly */] = strTrim(frame);\r\n _self[_DYN_FILE_NAME /* @min:%2efileName */] = \"\";\r\n _self[_DYN_LINE /* @min:%2eline */] = 0;\r\n var matches = frame.match(_StackFrame.regex);\r\n if (matches && matches[_DYN_LENGTH /* @min:%2elength */] >= 5) {\r\n _self[_DYN_METHOD /* @min:%2emethod */] = strTrim(matches[2]) || _self[_DYN_METHOD /* @min:%2emethod */];\r\n _self[_DYN_FILE_NAME /* @min:%2efileName */] = strTrim(matches[4]);\r\n _self[_DYN_LINE /* @min:%2eline */] = parseInt(matches[5]) || 0;\r\n }\r\n }\r\n else {\r\n _self[_DYN_LEVEL /* @min:%2elevel */] = sourceFrame[_DYN_LEVEL /* @min:%2elevel */];\r\n _self[_DYN_METHOD /* @min:%2emethod */] = sourceFrame[_DYN_METHOD /* @min:%2emethod */];\r\n _self[_DYN_ASSEMBLY /* @min:%2eassembly */] = sourceFrame[_DYN_ASSEMBLY /* @min:%2eassembly */];\r\n _self[_DYN_FILE_NAME /* @min:%2efileName */] = sourceFrame[_DYN_FILE_NAME /* @min:%2efileName */];\r\n _self[_DYN_LINE /* @min:%2eline */] = sourceFrame[_DYN_LINE /* @min:%2eline */];\r\n _self[_DYN_SIZE_IN_BYTES /* @min:%2esizeInBytes */] = 0;\r\n }\r\n _self.sizeInBytes += _self.method[_DYN_LENGTH /* @min:%2elength */];\r\n _self.sizeInBytes += _self.fileName[_DYN_LENGTH /* @min:%2elength */];\r\n _self.sizeInBytes += _self.assembly[_DYN_LENGTH /* @min:%2elength */];\r\n // todo: these might need to be removed depending on how the back-end settles on their size calculation\r\n _self[_DYN_SIZE_IN_BYTES /* @min:%2esizeInBytes */] += _StackFrame.baseSize;\r\n _self.sizeInBytes += _self.level.toString()[_DYN_LENGTH /* @min:%2elength */];\r\n _self.sizeInBytes += _self.line.toString()[_DYN_LENGTH /* @min:%2elength */];\r\n }\r\n _StackFrame.CreateFromInterface = function (frame) {\r\n return new _StackFrame(frame, null /* level is available in frame interface */);\r\n };\r\n _StackFrame.prototype.toInterface = function () {\r\n var _self = this;\r\n return {\r\n level: _self[_DYN_LEVEL /* @min:%2elevel */],\r\n method: _self[_DYN_METHOD /* @min:%2emethod */],\r\n assembly: _self[_DYN_ASSEMBLY /* @min:%2eassembly */],\r\n fileName: _self[_DYN_FILE_NAME /* @min:%2efileName */],\r\n line: _self[_DYN_LINE /* @min:%2eline */]\r\n };\r\n };\r\n // regex to match stack frames from ie/chrome/ff\r\n // methodName=$2, fileName=$4, lineNo=$5, column=$6\r\n _StackFrame.regex = /^([\\s]+at)?[\\s]{0,50}([^\\@\\()]+?)[\\s]{0,50}(\\@|\\()([^\\(\\n]+):([0-9]+):([0-9]+)(\\)?)$/;\r\n _StackFrame.baseSize = 58; // '{\"method\":\"\",\"level\":,\"assembly\":\"\",\"fileName\":\"\",\"line\":}'.length\r\n return _StackFrame;\r\n}());\r\nexport { _StackFrame };\r\n//# sourceMappingURL=Exception.js.map","import { _DYN_COOKIE_CFG, _DYN_INDEX_OF, _DYN_LENGTH, _DYN_LOGGER, _DYN_SET_ENABLED, _DYN_SPLIT, _DYN_SUBSTRING, _DYN_USER_AGENT } from \"../__DynamicConstants\";\r\nimport { _throwInternal } from \"./DiagnosticLogger\";\r\nimport { dumpObj, getDocument, getLocation, getNavigator, isIE } from \"./EnvUtils\";\r\nimport { arrForEach, dateNow, getExceptionName, isArray, isFunction, isNotNullOrUndefined, isNullOrUndefined, isString, isTruthy, isUndefined, objForEachKey, setValue, strContains, strEndsWith, strTrim } from \"./HelperFuncs\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\nvar strToGMTString = \"toGMTString\";\r\nvar strToUTCString = \"toUTCString\";\r\nvar strCookie = \"cookie\";\r\nvar strExpires = \"expires\";\r\nvar strEnabled = \"enabled\";\r\nvar strIsCookieUseDisabled = \"isCookieUseDisabled\";\r\nvar strDisableCookiesUsage = \"disableCookiesUsage\";\r\nvar strConfigCookieMgr = \"_ckMgr\";\r\nvar _supportsCookies = null;\r\nvar _allowUaSameSite = null;\r\nvar _parsedCookieValue = null;\r\nvar _doc = getDocument();\r\nvar _cookieCache = {};\r\nvar _globalCookieConfig = {};\r\n/**\r\n * @ignore\r\n * DO NOT USE or export from the module, this is exposed as public to support backward compatibility of previous static utility methods only.\r\n * If you want to manager cookies either use the ICookieMgr available from the core instance via getCookieMgr() or create\r\n * your own instance of the CookieMgr and use that.\r\n * Using this directly for enabling / disabling cookie handling will not only affect your usage but EVERY user of cookies.\r\n * Example, if you are using a shared component that is also using Application Insights you will affect their cookie handling.\r\n * @param logger - The DiagnosticLogger to use for reporting errors.\r\n */\r\nexport function _gblCookieMgr(config, logger) {\r\n // Stash the global instance against the BaseCookieMgr class\r\n var inst = createCookieMgr[strConfigCookieMgr] || _globalCookieConfig[strConfigCookieMgr];\r\n if (!inst) {\r\n // Note: not using the getSetValue() helper as that would require always creating a temporary cookieMgr\r\n // that ultimately is never used\r\n inst = createCookieMgr[strConfigCookieMgr] = createCookieMgr(config, logger);\r\n _globalCookieConfig[strConfigCookieMgr] = inst;\r\n }\r\n return inst;\r\n}\r\nfunction _isMgrEnabled(cookieMgr) {\r\n if (cookieMgr) {\r\n return cookieMgr.isEnabled();\r\n }\r\n return true;\r\n}\r\nfunction _createCookieMgrConfig(rootConfig) {\r\n var cookieMgrCfg = rootConfig[_DYN_COOKIE_CFG /* @min:%2ecookieCfg */] = rootConfig[_DYN_COOKIE_CFG /* @min:%2ecookieCfg */] || {};\r\n // Sets the values from the root config if not already present on the cookieMgrCfg\r\n setValue(cookieMgrCfg, \"domain\", rootConfig.cookieDomain, isNotNullOrUndefined, isNullOrUndefined);\r\n setValue(cookieMgrCfg, \"path\", rootConfig.cookiePath || \"/\", null, isNullOrUndefined);\r\n if (isNullOrUndefined(cookieMgrCfg[strEnabled])) {\r\n // Set the enabled from the provided setting or the legacy root values\r\n var cookieEnabled = void 0;\r\n if (!isUndefined(rootConfig[strIsCookieUseDisabled])) {\r\n cookieEnabled = !rootConfig[strIsCookieUseDisabled];\r\n }\r\n if (!isUndefined(rootConfig[strDisableCookiesUsage])) {\r\n cookieEnabled = !rootConfig[strDisableCookiesUsage];\r\n }\r\n cookieMgrCfg[strEnabled] = cookieEnabled;\r\n }\r\n return cookieMgrCfg;\r\n}\r\nfunction _isIgnoredCookie(cookieMgrCfg, name) {\r\n if (name && cookieMgrCfg && isArray(cookieMgrCfg.ignoreCookies)) {\r\n return cookieMgrCfg.ignoreCookies[_DYN_INDEX_OF /* @min:%2eindexOf */](name) !== -1;\r\n }\r\n return false;\r\n}\r\nfunction _isBlockedCookie(cookieMgrCfg, name) {\r\n if (name && cookieMgrCfg && isArray(cookieMgrCfg.blockedCookies)) {\r\n if (cookieMgrCfg.blockedCookies[_DYN_INDEX_OF /* @min:%2eindexOf */](name) !== -1) {\r\n return true;\r\n }\r\n }\r\n return _isIgnoredCookie(cookieMgrCfg, name);\r\n}\r\n/**\r\n * Helper to return the ICookieMgr from the core (if not null/undefined) or a default implementation\r\n * associated with the configuration or a legacy default.\r\n * @param core\r\n * @param config\r\n * @returns\r\n */\r\nexport function safeGetCookieMgr(core, config) {\r\n var cookieMgr;\r\n if (core) {\r\n // Always returns an instance\r\n cookieMgr = core.getCookieMgr();\r\n }\r\n else if (config) {\r\n var cookieCfg = config[_DYN_COOKIE_CFG /* @min:%2ecookieCfg */];\r\n if (cookieCfg[strConfigCookieMgr]) {\r\n cookieMgr = cookieCfg[strConfigCookieMgr];\r\n }\r\n else {\r\n cookieMgr = createCookieMgr(config);\r\n }\r\n }\r\n if (!cookieMgr) {\r\n // Get or initialize the default global (legacy) cookie manager if we couldn't find one\r\n cookieMgr = _gblCookieMgr(config, (core || {})[_DYN_LOGGER /* @min:%2elogger */]);\r\n }\r\n return cookieMgr;\r\n}\r\nexport function createCookieMgr(rootConfig, logger) {\r\n var _a;\r\n var cookieMgrConfig = _createCookieMgrConfig(rootConfig || _globalCookieConfig);\r\n var _path = cookieMgrConfig.path || \"/\";\r\n var _domain = cookieMgrConfig.domain;\r\n // Explicitly checking against false, so that setting to undefined will === true\r\n var _enabled = cookieMgrConfig[strEnabled] !== false;\r\n var cookieMgr = (_a = {\r\n isEnabled: function () {\r\n var enabled = _enabled && areCookiesSupported(logger);\r\n // Using an indirect lookup for any global cookie manager to support tree shaking for SDK's\r\n // that don't use the \"applicationinsights-core\" version of the default cookie function\r\n var gblManager = _globalCookieConfig[strConfigCookieMgr];\r\n if (enabled && gblManager && cookieMgr !== gblManager) {\r\n // Make sure the GlobalCookie Manager instance (if not this instance) is also enabled.\r\n // As the global (deprecated) functions may have been called (for backward compatibility)\r\n enabled = _isMgrEnabled(gblManager);\r\n }\r\n return enabled;\r\n }\r\n },\r\n _a[_DYN_SET_ENABLED /* @min:setEnabled */] = function (value) {\r\n // Explicitly checking against false, so that setting to undefined will === true\r\n _enabled = value !== false;\r\n },\r\n _a.set = function (name, value, maxAgeSec, domain, path) {\r\n var result = false;\r\n if (_isMgrEnabled(cookieMgr) && !_isBlockedCookie(cookieMgrConfig, name)) {\r\n var values = {};\r\n var theValue = strTrim(value || STR_EMPTY);\r\n var idx = theValue[_DYN_INDEX_OF /* @min:%2eindexOf */](\";\");\r\n if (idx !== -1) {\r\n theValue = strTrim(value[_DYN_SUBSTRING /* @min:%2esubstring */](0, idx));\r\n values = _extractParts(value[_DYN_SUBSTRING /* @min:%2esubstring */](idx + 1));\r\n }\r\n // Only update domain if not already present (isUndefined) and the value is truthy (not null, undefined or empty string)\r\n setValue(values, \"domain\", domain || _domain, isTruthy, isUndefined);\r\n if (!isNullOrUndefined(maxAgeSec)) {\r\n var _isIE = isIE();\r\n if (isUndefined(values[strExpires])) {\r\n var nowMs = dateNow();\r\n // Only add expires if not already present\r\n var expireMs = nowMs + (maxAgeSec * 1000);\r\n // Sanity check, if zero or -ve then ignore\r\n if (expireMs > 0) {\r\n var expiry = new Date();\r\n expiry.setTime(expireMs);\r\n setValue(values, strExpires, _formatDate(expiry, !_isIE ? strToUTCString : strToGMTString) || _formatDate(expiry, _isIE ? strToGMTString : strToUTCString) || STR_EMPTY, isTruthy);\r\n }\r\n }\r\n if (!_isIE) {\r\n // Only replace if not already present\r\n setValue(values, \"max-age\", STR_EMPTY + maxAgeSec, null, isUndefined);\r\n }\r\n }\r\n var location_1 = getLocation();\r\n if (location_1 && location_1.protocol === \"https:\") {\r\n setValue(values, \"secure\", null, null, isUndefined);\r\n // Only set same site if not also secure\r\n if (_allowUaSameSite === null) {\r\n _allowUaSameSite = !uaDisallowsSameSiteNone((getNavigator() || {})[_DYN_USER_AGENT /* @min:%2euserAgent */]);\r\n }\r\n if (_allowUaSameSite) {\r\n setValue(values, \"SameSite\", \"None\", null, isUndefined);\r\n }\r\n }\r\n setValue(values, \"path\", path || _path, null, isUndefined);\r\n var setCookieFn = cookieMgrConfig.setCookie || _setCookieValue;\r\n setCookieFn(name, _formatCookieValue(theValue, values));\r\n result = true;\r\n }\r\n return result;\r\n },\r\n _a.get = function (name) {\r\n var value = STR_EMPTY;\r\n if (_isMgrEnabled(cookieMgr) && !_isIgnoredCookie(cookieMgrConfig, name)) {\r\n value = (cookieMgrConfig.getCookie || _getCookieValue)(name);\r\n }\r\n return value;\r\n },\r\n _a.del = function (name, path) {\r\n var result = false;\r\n if (_isMgrEnabled(cookieMgr)) {\r\n // Only remove the cookie if the manager and cookie support has not been disabled\r\n result = cookieMgr.purge(name, path);\r\n }\r\n return result;\r\n },\r\n _a.purge = function (name, path) {\r\n var _a;\r\n var result = false;\r\n if (areCookiesSupported(logger)) {\r\n // Setting the expiration date in the past immediately removes the cookie\r\n var values = (_a = {},\r\n _a[\"path\"] = path ? path : \"/\",\r\n _a[strExpires] = \"Thu, 01 Jan 1970 00:00:01 GMT\",\r\n _a);\r\n if (!isIE()) {\r\n // Set max age to expire now\r\n values[\"max-age\"] = \"0\";\r\n }\r\n var delCookie = cookieMgrConfig.delCookie || _setCookieValue;\r\n delCookie(name, _formatCookieValue(STR_EMPTY, values));\r\n result = true;\r\n }\r\n return result;\r\n },\r\n _a);\r\n // Associated this cookie manager with the config\r\n cookieMgr[strConfigCookieMgr] = cookieMgr;\r\n return cookieMgr;\r\n}\r\n/*\r\n* Helper method to tell if document.cookie object is supported by the runtime\r\n*/\r\nexport function areCookiesSupported(logger) {\r\n if (_supportsCookies === null) {\r\n _supportsCookies = false;\r\n try {\r\n var doc = _doc || {};\r\n _supportsCookies = doc[strCookie] !== undefined;\r\n }\r\n catch (e) {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 68 /* _eInternalMessageId.CannotAccessCookie */, \"Cannot access document.cookie - \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return _supportsCookies;\r\n}\r\nfunction _extractParts(theValue) {\r\n var values = {};\r\n if (theValue && theValue[_DYN_LENGTH /* @min:%2elength */]) {\r\n var parts = strTrim(theValue)[_DYN_SPLIT /* @min:%2esplit */](\";\");\r\n arrForEach(parts, function (thePart) {\r\n thePart = strTrim(thePart || STR_EMPTY);\r\n if (thePart) {\r\n var idx = thePart[_DYN_INDEX_OF /* @min:%2eindexOf */](\"=\");\r\n if (idx === -1) {\r\n values[thePart] = null;\r\n }\r\n else {\r\n values[strTrim(thePart[_DYN_SUBSTRING /* @min:%2esubstring */](0, idx))] = strTrim(thePart[_DYN_SUBSTRING /* @min:%2esubstring */](idx + 1));\r\n }\r\n }\r\n });\r\n }\r\n return values;\r\n}\r\nfunction _formatDate(theDate, func) {\r\n if (isFunction(theDate[func])) {\r\n return theDate[func]();\r\n }\r\n return null;\r\n}\r\nfunction _formatCookieValue(value, values) {\r\n var cookieValue = value || STR_EMPTY;\r\n objForEachKey(values, function (name, theValue) {\r\n cookieValue += \"; \" + name + (!isNullOrUndefined(theValue) ? \"=\" + theValue : STR_EMPTY);\r\n });\r\n return cookieValue;\r\n}\r\nfunction _getCookieValue(name) {\r\n var cookieValue = STR_EMPTY;\r\n if (_doc) {\r\n var theCookie = _doc[strCookie] || STR_EMPTY;\r\n if (_parsedCookieValue !== theCookie) {\r\n _cookieCache = _extractParts(theCookie);\r\n _parsedCookieValue = theCookie;\r\n }\r\n cookieValue = strTrim(_cookieCache[name] || STR_EMPTY);\r\n }\r\n return cookieValue;\r\n}\r\nfunction _setCookieValue(name, cookieValue) {\r\n if (_doc) {\r\n _doc[strCookie] = name + \"=\" + cookieValue;\r\n }\r\n}\r\nexport function uaDisallowsSameSiteNone(userAgent) {\r\n if (!isString(userAgent)) {\r\n return false;\r\n }\r\n // Cover all iOS based browsers here. This includes:\r\n // - Safari on iOS 12 for iPhone, iPod Touch, iPad\r\n // - WkWebview on iOS 12 for iPhone, iPod Touch, iPad\r\n // - Chrome on iOS 12 for iPhone, iPod Touch, iPad\r\n // All of which are broken by SameSite=None, because they use the iOS networking stack\r\n if (strContains(userAgent, \"CPU iPhone OS 12\") || strContains(userAgent, \"iPad; CPU OS 12\")) {\r\n return true;\r\n }\r\n // Cover Mac OS X based browsers that use the Mac OS networking stack. This includes:\r\n // - Safari on Mac OS X\r\n // This does not include:\r\n // - Internal browser on Mac OS X\r\n // - Chrome on Mac OS X\r\n // - Chromium on Mac OS X\r\n // Because they do not use the Mac OS networking stack.\r\n if (strContains(userAgent, \"Macintosh; Intel Mac OS X 10_14\") && strContains(userAgent, \"Version/\") && strContains(userAgent, \"Safari\")) {\r\n return true;\r\n }\r\n // Cover Mac OS X internal browsers that use the Mac OS networking stack. This includes:\r\n // - Internal browser on Mac OS X\r\n // This does not include:\r\n // - Safari on Mac OS X\r\n // - Chrome on Mac OS X\r\n // - Chromium on Mac OS X\r\n // Because they do not use the Mac OS networking stack.\r\n if (strContains(userAgent, \"Macintosh; Intel Mac OS X 10_14\") && strEndsWith(userAgent, \"AppleWebKit/605.1.15 (KHTML, like Gecko)\")) {\r\n return true;\r\n }\r\n // Cover Chrome 50-69, because some versions are broken by SameSite=None, and none in this range require it.\r\n // Note: this covers some pre-Chromium Edge versions, but pre-Chromim Edge does not require SameSite=None, so this is fine.\r\n // Note: this regex applies to Windows, Mac OS X, and Linux, deliberately.\r\n if (strContains(userAgent, \"Chrome/5\") || strContains(userAgent, \"Chrome/6\")) {\r\n return true;\r\n }\r\n // Unreal Engine runs Chromium 59, but does not advertise as Chrome until 4.23. Treat versions of Unreal\r\n // that don't specify their Chrome version as lacking support for SameSite=None.\r\n if (strContains(userAgent, \"UnrealEngine\") && !strContains(userAgent, \"Chrome\")) {\r\n return true;\r\n }\r\n // UCBrowser < 12.13.2 ignores Set-Cookie headers with SameSite=None\r\n // NB: this rule isn't complete - you need regex to make a complete rule.\r\n // See: https://www.chromium.org/updates/same-site/incompatible-clients\r\n if (strContains(userAgent, \"UCBrowser/12\") || strContains(userAgent, \"UCBrowser/11\")) {\r\n return true;\r\n }\r\n return false;\r\n}\r\n//# sourceMappingURL=CookieMgr.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { _DYN_LENGTH } from \"../__DynamicConstants\";\r\nimport { getCrypto, getMsCrypto, isIE } from \"./EnvUtils\";\r\nimport { dateNow } from \"./HelperFuncs\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\nvar UInt32Mask = 0x100000000;\r\nvar MaxUInt32 = 0xffffffff;\r\n// MWC based Random generator (for IE)\r\nvar _mwcSeeded = false;\r\nvar _mwcW = 123456789;\r\nvar _mwcZ = 987654321;\r\n// Takes any integer\r\nfunction _mwcSeed(seedValue) {\r\n if (seedValue < 0) {\r\n // Make sure we end up with a positive number and not -ve one.\r\n seedValue >>>= 0;\r\n }\r\n _mwcW = (123456789 + seedValue) & MaxUInt32;\r\n _mwcZ = (987654321 - seedValue) & MaxUInt32;\r\n _mwcSeeded = true;\r\n}\r\nfunction _autoSeedMwc() {\r\n // Simple initialization using default Math.random() - So we inherit any entropy from the browser\r\n // and bitwise XOR with the current milliseconds\r\n try {\r\n var now = dateNow() & 0x7fffffff;\r\n _mwcSeed(((Math.random() * UInt32Mask) ^ now) + now);\r\n }\r\n catch (e) {\r\n // Don't crash if something goes wrong\r\n }\r\n}\r\n/**\r\n * Generate a random value between 0 and maxValue, max value should be limited to a 32-bit maximum.\r\n * So maxValue(16) will produce a number from 0..16 (range of 17)\r\n * @param maxValue\r\n */\r\nexport function randomValue(maxValue) {\r\n if (maxValue > 0) {\r\n return Math.floor((random32() / MaxUInt32) * (maxValue + 1)) >>> 0;\r\n }\r\n return 0;\r\n}\r\n/**\r\n * generate a random 32-bit number (0x000000..0xFFFFFFFF) or (-0x80000000..0x7FFFFFFF), defaults un-unsigned.\r\n * @param signed - True to return a signed 32-bit number (-0x80000000..0x7FFFFFFF) otherwise an unsigned one (0x000000..0xFFFFFFFF)\r\n */\r\nexport function random32(signed) {\r\n var value = 0;\r\n var c = getCrypto() || getMsCrypto();\r\n if (c && c.getRandomValues) {\r\n // Make sure the number is converted into the specified range (-0x80000000..0x7FFFFFFF)\r\n value = c.getRandomValues(new Uint32Array(1))[0] & MaxUInt32;\r\n }\r\n if (value === 0 && isIE()) {\r\n // For IE 6, 7, 8 (especially on XP) Math.random is not very random\r\n if (!_mwcSeeded) {\r\n // Set the seed for the Mwc algorithm\r\n _autoSeedMwc();\r\n }\r\n // Don't use Math.random for IE\r\n // Make sure the number is converted into the specified range (-0x80000000..0x7FFFFFFF)\r\n value = mwcRandom32() & MaxUInt32;\r\n }\r\n if (value === 0) {\r\n // Make sure the number is converted into the specified range (-0x80000000..0x7FFFFFFF)\r\n value = Math.floor((UInt32Mask * Math.random()) | 0);\r\n }\r\n if (!signed) {\r\n // Make sure we end up with a positive number and not -ve one.\r\n value >>>= 0;\r\n }\r\n return value;\r\n}\r\n/**\r\n * Seed the MWC random number generator with the specified seed or a random value\r\n * @param value - optional the number to used as the seed, if undefined, null or zero a random value will be chosen\r\n */\r\nexport function mwcRandomSeed(value) {\r\n if (!value) {\r\n _autoSeedMwc();\r\n }\r\n else {\r\n _mwcSeed(value);\r\n }\r\n}\r\n/**\r\n * Generate a random 32-bit number between (0x000000..0xFFFFFFFF) or (-0x80000000..0x7FFFFFFF), using MWC (Multiply with carry)\r\n * instead of Math.random() defaults to un-signed.\r\n * Used as a replacement random generator for IE to avoid issues with older IE instances.\r\n * @param signed - True to return a signed 32-bit number (-0x80000000..0x7FFFFFFF) otherwise an unsigned one (0x000000..0xFFFFFFFF)\r\n */\r\nexport function mwcRandom32(signed) {\r\n _mwcZ = (36969 * (_mwcZ & 0xFFFF) + (_mwcZ >> 16)) & MaxUInt32;\r\n _mwcW = (18000 * (_mwcW & 0xFFFF) + (_mwcW >> 16)) & MaxUInt32;\r\n var value = (((_mwcZ << 16) + (_mwcW & 0xFFFF)) >>> 0) & MaxUInt32 | 0;\r\n if (!signed) {\r\n // Make sure we end up with a positive number and not -ve one.\r\n value >>>= 0;\r\n }\r\n return value;\r\n}\r\n/**\r\n * Generate random base64 id string.\r\n * The default length is 22 which is 132-bits so almost the same as a GUID but as base64 (the previous default was 5)\r\n * @param maxLength - Optional value to specify the length of the id to be generated, defaults to 22\r\n */\r\nexport function newId(maxLength) {\r\n if (maxLength === void 0) { maxLength = 22; }\r\n var base64chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\r\n // Start with an initial random number, consuming the value in reverse byte order\r\n var number = random32() >>> 0; // Make sure it's a +ve number\r\n var chars = 0;\r\n var result = STR_EMPTY;\r\n while (result[_DYN_LENGTH /* @min:%2elength */] < maxLength) {\r\n chars++;\r\n result += base64chars.charAt(number & 0x3F);\r\n number >>>= 6; // Zero fill with right shift\r\n if (chars === 5) {\r\n // 5 base64 characters === 30 bits so we don't have enough bits for another base64 char\r\n // So add on another 30 bits and make sure it's +ve\r\n number = (((random32() << 2) & 0xFFFFFFFF) | (number & 0x03)) >>> 0;\r\n chars = 0; // We need to reset the number every 5 chars (30 bits)\r\n }\r\n }\r\n return result;\r\n}\r\n//# sourceMappingURL=RandomHelper.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { ObjDefineProperty } from \"@microsoft/applicationinsights-shims\";\r\nimport { _DYN_NODE_TYPE } from \"../__DynamicConstants\";\r\nimport { normalizeJsName } from \"./HelperFuncs\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\nimport { newId } from \"./RandomHelper\";\r\nvar _objDefineProperty = ObjDefineProperty;\r\nvar version = '2.8.8';\r\nvar instanceName = \".\" + newId(6);\r\nvar _dataUid = 0;\r\nfunction _createAccessor(target, prop, value) {\r\n if (_objDefineProperty) {\r\n try {\r\n _objDefineProperty(target, prop, {\r\n value: value,\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return true;\r\n }\r\n catch (e) {\r\n // IE8 Defines a defineProperty on Object but it's only supported for DOM elements so it will throw\r\n // We will just ignore this here.\r\n }\r\n }\r\n return false;\r\n}\r\n// Accepts only:\r\n// - Node\r\n// - Node.ELEMENT_NODE\r\n// - Node.DOCUMENT_NODE\r\n// - Object\r\n// - Any\r\nfunction _canAcceptData(target) {\r\n return target[_DYN_NODE_TYPE /* @min:%2enodeType */] === 1 || target[_DYN_NODE_TYPE /* @min:%2enodeType */] === 9 || !(+target[_DYN_NODE_TYPE /* @min:%2enodeType */]);\r\n}\r\nfunction _getCache(data, target) {\r\n var theCache = target[data.id];\r\n if (!theCache) {\r\n theCache = {};\r\n try {\r\n if (_canAcceptData(target)) {\r\n if (!_createAccessor(target, data.id, theCache)) {\r\n // Environment doesn't support accessor, so just use direct assignment\r\n target[data.id] = theCache;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // Not all environments allow extending all objects, so just ignore the cache in those cases\r\n }\r\n }\r\n return theCache;\r\n}\r\nexport function createUniqueNamespace(name, includeVersion) {\r\n if (includeVersion === void 0) { includeVersion = false; }\r\n return normalizeJsName(name + (_dataUid++) + (includeVersion ? \".\" + version : STR_EMPTY) + instanceName);\r\n}\r\nexport function createElmNodeData(name) {\r\n var data = {\r\n id: createUniqueNamespace(\"_aiData-\" + (name || STR_EMPTY) + \".\" + version),\r\n accept: function (target) {\r\n return _canAcceptData(target);\r\n },\r\n get: function (target, name, defValue, addDefault) {\r\n var theCache = target[data.id];\r\n if (!theCache) {\r\n if (addDefault) {\r\n // Side effect is adds the cache\r\n theCache = _getCache(data, target);\r\n theCache[normalizeJsName(name)] = defValue;\r\n }\r\n return defValue;\r\n }\r\n return theCache[normalizeJsName(name)];\r\n },\r\n kill: function (target, name) {\r\n if (target && target[name]) {\r\n try {\r\n delete target[name];\r\n }\r\n catch (e) {\r\n // Just cleaning up, so if this fails -- ignore\r\n }\r\n }\r\n }\r\n };\r\n return data;\r\n}\r\n//# sourceMappingURL=DataCacheHelper.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { _DYN_HANDLER, _DYN_LENGTH, _DYN_NAME, _DYN_PUSH, _DYN_REPLACE, _DYN_SPLICE, _DYN_SPLIT, _DYN_TYPE } from \"../__DynamicConstants\";\r\nimport { createElmNodeData, createUniqueNamespace } from \"./DataCacheHelper\";\r\nimport { getDocument, getWindow } from \"./EnvUtils\";\r\nimport { arrForEach, arrIndexOf, isArray, objForEachKey, objKeys } from \"./HelperFuncs\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\n// Added to help with minfication\r\nvar strOnPrefix = \"on\";\r\nvar strAttachEvent = \"attachEvent\";\r\nvar strAddEventHelper = \"addEventListener\";\r\nvar strDetachEvent = \"detachEvent\";\r\nvar strRemoveEventListener = \"removeEventListener\";\r\nvar strEvents = \"events\";\r\nvar strVisibilityChangeEvt = \"visibilitychange\";\r\nvar strPageHide = \"pagehide\";\r\nvar strPageShow = \"pageshow\";\r\nvar strUnload = \"unload\";\r\nvar strBeforeUnload = \"beforeunload\";\r\nvar strPageHideNamespace = createUniqueNamespace(\"aiEvtPageHide\");\r\nvar strPageShowNamespace = createUniqueNamespace(\"aiEvtPageShow\");\r\nvar rRemoveEmptyNs = /\\.[\\.]+/g;\r\nvar rRemoveTrailingEmptyNs = /[\\.]+$/;\r\nvar _guid = 1;\r\nvar elmNodeData = createElmNodeData(\"events\");\r\nvar eventNamespace = /^([^.]*)(?:\\.(.+)|)/;\r\nfunction _normalizeNamespace(name) {\r\n if (name && name[_DYN_REPLACE /* @min:%2ereplace */]) {\r\n return name.replace(/^\\s*\\.*|\\.*\\s*$/g, STR_EMPTY);\r\n }\r\n return name;\r\n}\r\nfunction _getEvtNamespace(eventName, evtNamespace) {\r\n var _a;\r\n if (evtNamespace) {\r\n var theNamespace_1 = STR_EMPTY;\r\n if (isArray(evtNamespace)) {\r\n theNamespace_1 = STR_EMPTY;\r\n arrForEach(evtNamespace, function (name) {\r\n name = _normalizeNamespace(name);\r\n if (name) {\r\n if (name[0] !== \".\") {\r\n name = \".\" + name;\r\n }\r\n theNamespace_1 += name;\r\n }\r\n });\r\n }\r\n else {\r\n theNamespace_1 = _normalizeNamespace(evtNamespace);\r\n }\r\n if (theNamespace_1) {\r\n if (theNamespace_1[0] !== \".\") {\r\n theNamespace_1 = \".\" + theNamespace_1;\r\n }\r\n // We may only have the namespace and not an eventName\r\n eventName = (eventName || STR_EMPTY) + theNamespace_1;\r\n }\r\n }\r\n var parsedEvent = (eventNamespace.exec(eventName || STR_EMPTY) || []);\r\n return _a = {},\r\n _a[_DYN_TYPE /* @min:type */] = parsedEvent[1],\r\n _a.ns = ((parsedEvent[2] || STR_EMPTY).replace(rRemoveEmptyNs, \".\").replace(rRemoveTrailingEmptyNs, STR_EMPTY)[_DYN_SPLIT /* @min:%2esplit */](\".\").sort()).join(\".\"),\r\n _a;\r\n}\r\n/**\r\n * Get all of the registered events on the target object, this is primarily used for testing cleanup but may also be used by\r\n * applications to remove their own events\r\n * @param target - The EventTarget that has registered events\r\n * @param eventName - [Optional] The name of the event to return the registered handlers and full name (with namespaces)\r\n * @param evtNamespace - [Optional] Additional namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace,\r\n * if the eventName also includes a namespace the namespace(s) are merged into a single namespace\r\n */\r\nexport function __getRegisteredEvents(target, eventName, evtNamespace) {\r\n var theEvents = [];\r\n var eventCache = elmNodeData.get(target, strEvents, {}, false);\r\n var evtName = _getEvtNamespace(eventName, evtNamespace);\r\n objForEachKey(eventCache, function (evtType, registeredEvents) {\r\n arrForEach(registeredEvents, function (value) {\r\n var _a;\r\n if (!evtName[_DYN_TYPE /* @min:%2etype */] || evtName[_DYN_TYPE /* @min:%2etype */] === value.evtName[_DYN_TYPE /* @min:%2etype */]) {\r\n if (!evtName.ns || evtName.ns === evtName.ns) {\r\n theEvents[_DYN_PUSH /* @min:%2epush */]((_a = {},\r\n _a[_DYN_NAME /* @min:name */] = value.evtName[_DYN_TYPE /* @min:%2etype */] + (value.evtName.ns ? \".\" + value.evtName.ns : STR_EMPTY),\r\n _a.handler = value[_DYN_HANDLER /* @min:%2ehandler */],\r\n _a));\r\n }\r\n }\r\n });\r\n });\r\n return theEvents;\r\n}\r\n// Exported for internal unit testing only\r\nfunction _getRegisteredEvents(target, evtName, addDefault) {\r\n if (addDefault === void 0) { addDefault = true; }\r\n var aiEvts = elmNodeData.get(target, strEvents, {}, addDefault);\r\n var registeredEvents = aiEvts[evtName];\r\n if (!registeredEvents) {\r\n registeredEvents = aiEvts[evtName] = [];\r\n }\r\n return registeredEvents;\r\n}\r\nfunction _doDetach(obj, evtName, handlerRef, useCapture) {\r\n if (obj && evtName && evtName[_DYN_TYPE /* @min:%2etype */]) {\r\n if (obj[strRemoveEventListener]) {\r\n obj[strRemoveEventListener](evtName[_DYN_TYPE /* @min:%2etype */], handlerRef, useCapture);\r\n }\r\n else if (obj[strDetachEvent]) {\r\n obj[strDetachEvent](strOnPrefix + evtName[_DYN_TYPE /* @min:%2etype */], handlerRef);\r\n }\r\n }\r\n}\r\nfunction _doAttach(obj, evtName, handlerRef, useCapture) {\r\n var result = false;\r\n if (obj && evtName && evtName[_DYN_TYPE /* @min:%2etype */] && handlerRef) {\r\n if (obj[strAddEventHelper]) {\r\n // all browsers except IE before version 9\r\n obj[strAddEventHelper](evtName[_DYN_TYPE /* @min:%2etype */], handlerRef, useCapture);\r\n result = true;\r\n }\r\n else if (obj[strAttachEvent]) {\r\n // IE before version 9\r\n obj[strAttachEvent](strOnPrefix + evtName[_DYN_TYPE /* @min:%2etype */], handlerRef);\r\n result = true;\r\n }\r\n }\r\n return result;\r\n}\r\nfunction _doUnregister(target, events, evtName, unRegFn) {\r\n var idx = events[_DYN_LENGTH /* @min:%2elength */];\r\n while (idx--) {\r\n var theEvent = events[idx];\r\n if (theEvent) {\r\n if (!evtName.ns || evtName.ns === theEvent.evtName.ns) {\r\n if (!unRegFn || unRegFn(theEvent)) {\r\n _doDetach(target, theEvent.evtName, theEvent[_DYN_HANDLER /* @min:%2ehandler */], theEvent.capture);\r\n // Remove the registered event\r\n events[_DYN_SPLICE /* @min:%2esplice */](idx, 1);\r\n }\r\n }\r\n }\r\n }\r\n}\r\nfunction _unregisterEvents(target, evtName, unRegFn) {\r\n if (evtName[_DYN_TYPE /* @min:%2etype */]) {\r\n _doUnregister(target, _getRegisteredEvents(target, evtName[_DYN_TYPE /* @min:%2etype */]), evtName, unRegFn);\r\n }\r\n else {\r\n var eventCache = elmNodeData.get(target, strEvents, {});\r\n objForEachKey(eventCache, function (evtType, events) {\r\n _doUnregister(target, events, evtName, unRegFn);\r\n });\r\n // Cleanup\r\n if (objKeys(eventCache)[_DYN_LENGTH /* @min:%2elength */] === 0) {\r\n elmNodeData.kill(target, strEvents);\r\n }\r\n }\r\n}\r\nexport function mergeEvtNamespace(theNamespace, namespaces) {\r\n var newNamespaces;\r\n if (namespaces) {\r\n if (isArray(namespaces)) {\r\n newNamespaces = [theNamespace].concat(namespaces);\r\n }\r\n else {\r\n newNamespaces = [theNamespace, namespaces];\r\n }\r\n // resort the namespaces so they are always in order\r\n newNamespaces = (_getEvtNamespace(\"xx\", newNamespaces).ns)[_DYN_SPLIT /* @min:%2esplit */](\".\");\r\n }\r\n else {\r\n newNamespaces = theNamespace;\r\n }\r\n return newNamespaces;\r\n}\r\n/**\r\n * Binds the specified function to an event, so that the function gets called whenever the event fires on the object\r\n * @param obj Object to add the event too.\r\n * @param eventName String that specifies any of the standard DHTML Events without \"on\" prefix, if may also include an optional (dot \".\" prefixed)\r\n * namespaces \"click\" \"click.mynamespace\" in addition to specific namespaces.\r\n * @param handlerRef Pointer that specifies the function to call when event fires\r\n * @param evtNamespace - [Optional] Additional namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace,\r\n * if the eventName also includes a namespace the namespace(s) are merged into a single namespace\r\n * @param useCapture [Optional] Defaults to false\r\n * @returns True if the function was bound successfully to the event, otherwise false\r\n */\r\nexport function eventOn(target, eventName, handlerRef, evtNamespace, useCapture) {\r\n var _a;\r\n if (useCapture === void 0) { useCapture = false; }\r\n var result = false;\r\n if (target) {\r\n try {\r\n var evtName = _getEvtNamespace(eventName, evtNamespace);\r\n result = _doAttach(target, evtName, handlerRef, useCapture);\r\n if (result && elmNodeData.accept(target)) {\r\n var registeredEvent = (_a = {\r\n guid: _guid++,\r\n evtName: evtName\r\n },\r\n _a[_DYN_HANDLER /* @min:handler */] = handlerRef,\r\n _a.capture = useCapture,\r\n _a);\r\n _getRegisteredEvents(target, evtName.type)[_DYN_PUSH /* @min:%2epush */](registeredEvent);\r\n }\r\n }\r\n catch (e) {\r\n // Just Ignore any error so that we don't break any execution path\r\n }\r\n }\r\n return result;\r\n}\r\n/**\r\n * Removes an event handler for the specified event\r\n * @param Object to remove the event from\r\n * @param eventName {string} - The name of the event, with optional namespaces or just the namespaces,\r\n * such as \"click\", \"click.mynamespace\" or \".mynamespace\"\r\n * @param handlerRef {any} - The callback function that needs to be removed from the given event, when using a\r\n * namespace (with or without a qualifying event) this may be null to remove all previously attached event handlers\r\n * otherwise this will only remove events with this specific handler.\r\n * @param evtNamespace - [Optional] Additional namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace,\r\n * if the eventName also includes a namespace the namespace(s) are merged into a single namespace\r\n * @param useCapture [Optional] Defaults to false\r\n */\r\nexport function eventOff(target, eventName, handlerRef, evtNamespace, useCapture) {\r\n if (useCapture === void 0) { useCapture = false; }\r\n if (target) {\r\n try {\r\n var evtName_1 = _getEvtNamespace(eventName, evtNamespace);\r\n var found_1 = false;\r\n _unregisterEvents(target, evtName_1, function (regEvent) {\r\n if ((evtName_1.ns && !handlerRef) || regEvent[_DYN_HANDLER /* @min:%2ehandler */] === handlerRef) {\r\n found_1 = true;\r\n return true;\r\n }\r\n return false;\r\n });\r\n if (!found_1) {\r\n // fallback to try and remove as requested\r\n _doDetach(target, evtName_1, handlerRef, useCapture);\r\n }\r\n }\r\n catch (e) {\r\n // Just Ignore any error so that we don't break any execution path\r\n }\r\n }\r\n}\r\n/**\r\n * Binds the specified function to an event, so that the function gets called whenever the event fires on the object\r\n * @param obj Object to add the event too.\r\n * @param eventNameWithoutOn String that specifies any of the standard DHTML Events without \"on\" prefix and optional (dot \".\" prefixed) namespaces \"click\" \"click.mynamespace\".\r\n * @param handlerRef Pointer that specifies the function to call when event fires\r\n * @param useCapture [Optional] Defaults to false\r\n * @returns True if the function was bound successfully to the event, otherwise false\r\n */\r\nexport function attachEvent(obj, eventNameWithoutOn, handlerRef, useCapture) {\r\n if (useCapture === void 0) { useCapture = false; }\r\n return eventOn(obj, eventNameWithoutOn, handlerRef, null, useCapture);\r\n}\r\n/**\r\n * Removes an event handler for the specified event\r\n * @param Object to remove the event from\r\n * @param eventNameWithoutOn {string} - The name of the event, with optional namespaces or just the namespaces,\r\n * such as \"click\", \"click.mynamespace\" or \".mynamespace\"\r\n * @param handlerRef {any} - The callback function that needs to be removed from the given event, when using a\r\n * namespace (with or without a qualifying event) this may be null to remove all previously attached event handlers\r\n * otherwise this will only remove events with this specific handler.\r\n * @param useCapture [Optional] Defaults to false\r\n */\r\nexport function detachEvent(obj, eventNameWithoutOn, handlerRef, useCapture) {\r\n if (useCapture === void 0) { useCapture = false; }\r\n eventOff(obj, eventNameWithoutOn, handlerRef, null, useCapture);\r\n}\r\n/**\r\n * Trys to add an event handler for the specified event to the window, body and document\r\n * @param eventName {string} - The name of the event\r\n * @param callback {any} - The callback function that needs to be executed for the given event\r\n * @param evtNamespace - [Optional] Namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace.\r\n * @return {boolean} - true if the handler was successfully added\r\n */\r\nexport function addEventHandler(eventName, callback, evtNamespace) {\r\n var result = false;\r\n var w = getWindow();\r\n if (w) {\r\n result = eventOn(w, eventName, callback, evtNamespace);\r\n result = eventOn(w[\"body\"], eventName, callback, evtNamespace) || result;\r\n }\r\n var doc = getDocument();\r\n if (doc) {\r\n result = eventOn(doc, eventName, callback, evtNamespace) || result;\r\n }\r\n return result;\r\n}\r\n/**\r\n * Trys to remove event handler(s) for the specified event/namespace to the window, body and document\r\n * @param eventName {string} - The name of the event, with optional namespaces or just the namespaces,\r\n * such as \"click\", \"click.mynamespace\" or \".mynamespace\"\r\n * @param callback {any} - - The callback function that needs to be removed from the given event, when using a\r\n * namespace (with or without a qualifying event) this may be null to remove all previously attached event handlers\r\n * otherwise this will only remove events with this specific handler.\r\n * @param evtNamespace - [Optional] Namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace.\r\n */\r\nexport function removeEventHandler(eventName, callback, evtNamespace) {\r\n var w = getWindow();\r\n if (w) {\r\n eventOff(w, eventName, callback, evtNamespace);\r\n eventOff(w[\"body\"], eventName, callback, evtNamespace);\r\n }\r\n var doc = getDocument();\r\n if (doc) {\r\n eventOff(doc, eventName, callback, evtNamespace);\r\n }\r\n}\r\n/**\r\n * Bind the listener to the array of events\r\n * @param events An string array of event names to bind the listener to\r\n * @param listener The event callback to call when the event is triggered\r\n * @param excludeEvents - [Optional] An array of events that should not be hooked (if possible), unless no other events can be.\r\n * @param evtNamespace - [Optional] Namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace.\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nfunction _addEventListeners(events, listener, excludeEvents, evtNamespace) {\r\n var added = false;\r\n if (listener && events && events[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n arrForEach(events, function (name) {\r\n if (name) {\r\n if (!excludeEvents || arrIndexOf(excludeEvents, name) === -1) {\r\n added = addEventHandler(name, listener, evtNamespace) || added;\r\n }\r\n }\r\n });\r\n }\r\n return added;\r\n}\r\n/**\r\n * Bind the listener to the array of events\r\n * @param events An string array of event names to bind the listener to\r\n * @param listener The event callback to call when the event is triggered\r\n * @param excludeEvents - [Optional] An array of events that should not be hooked (if possible), unless no other events can be.\r\n * @param evtNamespace - [Optional] Namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace.\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nexport function addEventListeners(events, listener, excludeEvents, evtNamespace) {\r\n var added = false;\r\n if (listener && events && isArray(events)) {\r\n added = _addEventListeners(events, listener, excludeEvents, evtNamespace);\r\n if (!added && excludeEvents && excludeEvents[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n // Failed to add any listeners and we excluded some, so just attempt to add the excluded events\r\n added = _addEventListeners(events, listener, null, evtNamespace);\r\n }\r\n }\r\n return added;\r\n}\r\n/**\r\n * Remove the listener from the array of events\r\n * @param events An string array of event names to bind the listener to\r\n * @param listener The event callback to call when the event is triggered\r\n * @param evtNamespace - [Optional] Namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace.\r\n */\r\nexport function removeEventListeners(events, listener, evtNamespace) {\r\n if (events && isArray(events)) {\r\n arrForEach(events, function (name) {\r\n if (name) {\r\n removeEventHandler(name, listener, evtNamespace);\r\n }\r\n });\r\n }\r\n}\r\n/**\r\n * Listen to the 'beforeunload', 'unload' and 'pagehide' events which indicates a page unload is occurring,\r\n * this does NOT listen to the 'visibilitychange' event as while it does indicate that the page is being hidden\r\n * it does not *necessarily* mean that the page is being completely unloaded, it can mean that the user is\r\n * just navigating to a different Tab and may come back (without unloading the page). As such you may also\r\n * need to listen to the 'addPageHideEventListener' and 'addPageShowEventListener' events.\r\n * @param listener - The event callback to call when a page unload event is triggered\r\n * @param excludeEvents - [Optional] An array of events that should not be hooked, unless no other events can be.\r\n * @param evtNamespace - [Optional] Namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace.\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nexport function addPageUnloadEventListener(listener, excludeEvents, evtNamespace) {\r\n // Hook the unload event for the document, window and body to ensure that the client events are flushed to the server\r\n // As just hooking the window does not always fire (on chrome) for page navigation's.\r\n return addEventListeners([strBeforeUnload, strUnload, strPageHide], listener, excludeEvents, evtNamespace);\r\n}\r\n/**\r\n * Remove any matching 'beforeunload', 'unload' and 'pagehide' events that may have been added via addEventListener,\r\n * addEventListeners, addPageUnloadEventListener or addPageHideEventListener.\r\n * @param listener - The specific event callback to to be removed\r\n * @param evtNamespace - [Optional] Namespace(s) uniquely identified and removed based on this namespace.\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nexport function removePageUnloadEventListener(listener, evtNamespace) {\r\n removeEventListeners([strBeforeUnload, strUnload, strPageHide], listener, evtNamespace);\r\n}\r\n/**\r\n * Listen to the pagehide and visibility changing to 'hidden' events, because the 'visibilitychange' uses\r\n * an internal proxy to detect the visibility state you SHOULD use a unique namespace when if you plan to call\r\n * removePageShowEventListener as the remove ignores the listener argument for the 'visibilitychange' event.\r\n * @param listener - The event callback to call when a page hide event is triggered\r\n * @param excludeEvents - [Optional] An array of events that should not be hooked (if possible), unless no other events can be.\r\n * @param evtNamespace - [Optional] A Namespace to append to the event listeners so they can be uniquely identified and removed\r\n * based on this namespace. This call also adds an additional unique \"pageshow\" namespace to the events\r\n * so that only the matching \"removePageHideEventListener\" can remove these events.\r\n * Suggestion: pass as true if you are also calling addPageUnloadEventListener as that also hooks pagehide\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nexport function addPageHideEventListener(listener, excludeEvents, evtNamespace) {\r\n function _handlePageVisibility(evt) {\r\n var doc = getDocument();\r\n if (listener && doc && doc.visibilityState === \"hidden\") {\r\n listener(evt);\r\n }\r\n }\r\n // add the unique page show namespace to any provided namespace so we can only remove the ones added by \"pagehide\"\r\n var newNamespaces = mergeEvtNamespace(strPageHideNamespace, evtNamespace);\r\n var pageUnloadAdded = _addEventListeners([strPageHide], listener, excludeEvents, newNamespaces);\r\n if (!excludeEvents || arrIndexOf(excludeEvents, strVisibilityChangeEvt) === -1) {\r\n pageUnloadAdded = _addEventListeners([strVisibilityChangeEvt], _handlePageVisibility, excludeEvents, newNamespaces) || pageUnloadAdded;\r\n }\r\n if (!pageUnloadAdded && excludeEvents) {\r\n // Failed to add any listeners and we where requested to exclude some, so just call again without excluding anything\r\n pageUnloadAdded = addPageHideEventListener(listener, null, evtNamespace);\r\n }\r\n return pageUnloadAdded;\r\n}\r\n/**\r\n * Removes the pageHide event listeners added by addPageHideEventListener, because the 'visibilitychange' uses\r\n * an internal proxy to detect the visibility state you SHOULD use a unique namespace when calling addPageHideEventListener\r\n * as the remove ignores the listener argument for the 'visibilitychange' event.\r\n * @param listener - The specific listener to remove for the 'pageshow' event only (ignored for 'visibilitychange')\r\n * @param evtNamespace - The unique namespace used when calling addPageShowEventListener\r\n */\r\nexport function removePageHideEventListener(listener, evtNamespace) {\r\n // add the unique page show namespace to any provided namespace so we only remove the ones added by \"pagehide\"\r\n var newNamespaces = mergeEvtNamespace(strPageHideNamespace, evtNamespace);\r\n removeEventListeners([strPageHide], listener, newNamespaces);\r\n removeEventListeners([strVisibilityChangeEvt], null, newNamespaces);\r\n}\r\n/**\r\n * Listen to the pageshow and visibility changing to 'visible' events, because the 'visibilitychange' uses\r\n * an internal proxy to detect the visibility state you SHOULD use a unique namespace when if you plan to call\r\n * removePageShowEventListener as the remove ignores the listener argument for the 'visibilitychange' event.\r\n * @param listener - The event callback to call when a page is show event is triggered\r\n * @param excludeEvents - [Optional] An array of events that should not be hooked (if possible), unless no other events can be.\r\n * @param evtNamespace - [Optional/Recommended] A Namespace to append to the event listeners so they can be uniquely\r\n * identified and removed based on this namespace. This call also adds an additional unique \"pageshow\" namespace to the events\r\n * so that only the matching \"removePageShowEventListener\" can remove these events.\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nexport function addPageShowEventListener(listener, excludeEvents, evtNamespace) {\r\n function _handlePageVisibility(evt) {\r\n var doc = getDocument();\r\n if (listener && doc && doc.visibilityState === \"visible\") {\r\n listener(evt);\r\n }\r\n }\r\n // add the unique page show namespace to any provided namespace so we can only remove the ones added by \"pageshow\"\r\n var newNamespaces = mergeEvtNamespace(strPageShowNamespace, evtNamespace);\r\n var pageShowAdded = _addEventListeners([strPageShow], listener, excludeEvents, newNamespaces);\r\n pageShowAdded = _addEventListeners([strVisibilityChangeEvt], _handlePageVisibility, excludeEvents, newNamespaces) || pageShowAdded;\r\n if (!pageShowAdded && excludeEvents) {\r\n // Failed to add any listeners and we where requested to exclude some, so just call again without excluding anything\r\n pageShowAdded = addPageShowEventListener(listener, null, evtNamespace);\r\n }\r\n return pageShowAdded;\r\n}\r\n/**\r\n * Removes the pageShow event listeners added by addPageShowEventListener, because the 'visibilitychange' uses\r\n * an internal proxy to detect the visibility state you SHOULD use a unique namespace when calling addPageShowEventListener\r\n * as the remove ignores the listener argument for the 'visibilitychange' event.\r\n * @param listener - The specific listener to remove for the 'pageshow' event only (ignored for 'visibilitychange')\r\n * @param evtNamespace - The unique namespace used when calling addPageShowEventListener\r\n */\r\nexport function removePageShowEventListener(listener, evtNamespace) {\r\n // add the unique page show namespace to any provided namespace so we only remove the ones added by \"pageshow\"\r\n var newNamespaces = mergeEvtNamespace(strPageShowNamespace, evtNamespace);\r\n removeEventListeners([strPageShow], listener, newNamespaces);\r\n removeEventListeners([strVisibilityChangeEvt], null, newNamespaces);\r\n}\r\n//# sourceMappingURL=EventHelpers.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\"use strict\";\r\nimport { objCreateFn, strShimUndefined } from \"@microsoft/applicationinsights-shims\";\r\nimport { _DYN_LENGTH, _DYN_PUSH, _DYN_SET_ENABLED, _DYN_SUBSTR, _DYN_SUBSTRING } from \"../__DynamicConstants\";\r\nimport { _gblCookieMgr } from \"./CookieMgr\";\r\nimport { getPerformance, isIE } from \"./EnvUtils\";\r\nimport { addEventHandler, attachEvent, detachEvent } from \"./EventHelpers\";\r\nimport { arrForEach, arrIndexOf, arrMap, arrReduce, dateNow, hasOwnProperty, isArray, isBoolean, isDate, isError, isFunction, isNullOrUndefined, isNumber, isObject, isString, isTypeof, isUndefined, objDefineAccessors, objKeys, strTrim, toISOString } from \"./HelperFuncs\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\nimport { mwcRandom32, mwcRandomSeed, newId, random32, randomValue } from \"./RandomHelper\";\r\nvar _cookieMgrs = null;\r\nvar _canUseCookies; // legacy supported config\r\n// Added to help with minfication\r\nexport var Undefined = strShimUndefined;\r\nexport function newGuid() {\r\n var uuid = generateW3CId();\r\n return uuid[_DYN_SUBSTRING /* @min:%2esubstring */](0, 8) + \"-\" + uuid[_DYN_SUBSTRING /* @min:%2esubstring */](8, 12) + \"-\" + uuid[_DYN_SUBSTRING /* @min:%2esubstring */](12, 16) + \"-\" + uuid[_DYN_SUBSTRING /* @min:%2esubstring */](16, 20) + \"-\" + uuid[_DYN_SUBSTRING /* @min:%2esubstring */](20);\r\n}\r\n/**\r\n * Return the current value of the Performance Api now() function (if available) and fallback to dateNow() if it is unavailable (IE9 or less)\r\n * https://caniuse.com/#search=performance.now\r\n */\r\nexport function perfNow() {\r\n var perf = getPerformance();\r\n if (perf && perf.now) {\r\n return perf.now();\r\n }\r\n return dateNow();\r\n}\r\n/**\r\n * The strEndsWith() method determines whether a string ends with the characters of a specified string, returning true or false as appropriate.\r\n * @param value - The value to check whether it ends with the search value.\r\n * @param search - The characters to be searched for at the end of the value.\r\n * @returns true if the given search value is found at the end of the string, otherwise false.\r\n */\r\nexport function strEndsWith(value, search) {\r\n if (value && search) {\r\n var len = value[_DYN_LENGTH /* @min:%2elength */];\r\n var start = len - search[_DYN_LENGTH /* @min:%2elength */];\r\n return value[_DYN_SUBSTRING /* @min:%2esubstring */](start >= 0 ? start : 0, len) === search;\r\n }\r\n return false;\r\n}\r\n/**\r\n * generate W3C trace id\r\n */\r\nexport function generateW3CId() {\r\n var hexValues = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\"];\r\n // rfc4122 version 4 UUID without dashes and with lowercase letters\r\n var oct = STR_EMPTY, tmp;\r\n for (var a = 0; a < 4; a++) {\r\n tmp = random32();\r\n oct +=\r\n hexValues[tmp & 0xF] +\r\n hexValues[tmp >> 4 & 0xF] +\r\n hexValues[tmp >> 8 & 0xF] +\r\n hexValues[tmp >> 12 & 0xF] +\r\n hexValues[tmp >> 16 & 0xF] +\r\n hexValues[tmp >> 20 & 0xF] +\r\n hexValues[tmp >> 24 & 0xF] +\r\n hexValues[tmp >> 28 & 0xF];\r\n }\r\n // \"Set the two most significant bits (bits 6 and 7) of the clock_seq_hi_and_reserved to zero and one, respectively\"\r\n var clockSequenceHi = hexValues[8 + (random32() & 0x03) | 0];\r\n return oct[_DYN_SUBSTR /* @min:%2esubstr */](0, 8) + oct[_DYN_SUBSTR /* @min:%2esubstr */](9, 4) + \"4\" + oct[_DYN_SUBSTR /* @min:%2esubstr */](13, 3) + clockSequenceHi + oct[_DYN_SUBSTR /* @min:%2esubstr */](16, 3) + oct[_DYN_SUBSTR /* @min:%2esubstr */](19, 12);\r\n}\r\n/**\r\n * Provides a collection of utility functions, included for backward compatibility with previous releases.\r\n * @deprecated Marking this instance as deprecated in favor of direct usage of the helper functions\r\n * as direct usage provides better tree-shaking and minification by avoiding the inclusion of the unused items\r\n * in your resulting code.\r\n */\r\nexport var CoreUtils = {\r\n _canUseCookies: undefined,\r\n isTypeof: isTypeof,\r\n isUndefined: isUndefined,\r\n isNullOrUndefined: isNullOrUndefined,\r\n hasOwnProperty: hasOwnProperty,\r\n isFunction: isFunction,\r\n isObject: isObject,\r\n isDate: isDate,\r\n isArray: isArray,\r\n isError: isError,\r\n isString: isString,\r\n isNumber: isNumber,\r\n isBoolean: isBoolean,\r\n toISOString: toISOString,\r\n arrForEach: arrForEach,\r\n arrIndexOf: arrIndexOf,\r\n arrMap: arrMap,\r\n arrReduce: arrReduce,\r\n strTrim: strTrim,\r\n objCreate: objCreateFn,\r\n objKeys: objKeys,\r\n objDefineAccessors: objDefineAccessors,\r\n addEventHandler: addEventHandler,\r\n dateNow: dateNow,\r\n isIE: isIE,\r\n disableCookies: disableCookies,\r\n newGuid: newGuid,\r\n perfNow: perfNow,\r\n newId: newId,\r\n randomValue: randomValue,\r\n random32: random32,\r\n mwcRandomSeed: mwcRandomSeed,\r\n mwcRandom32: mwcRandom32,\r\n generateW3CId: generateW3CId\r\n};\r\nvar GuidRegex = /[xy]/g;\r\nexport var EventHelper = {\r\n Attach: attachEvent,\r\n AttachEvent: attachEvent,\r\n Detach: detachEvent,\r\n DetachEvent: detachEvent\r\n};\r\n/**\r\n * Helper to support backward compatibility for users that use the legacy cookie handling functions and the use the internal\r\n * CoreUtils._canUseCookies global flag to enable/disable cookies usage.\r\n * Note: This has the following deliberate side-effects\r\n * - Creates the global (legacy) cookie manager if it does not already exist\r\n * - Attempts to add \"listeners\" to the CoreUtils._canUseCookies property to support the legacy usage\r\n * @param config\r\n * @param logger\r\n * @returns\r\n */\r\nexport function _legacyCookieMgr(config, logger) {\r\n var cookieMgr = _gblCookieMgr(config, logger);\r\n var legacyCanUseCookies = CoreUtils._canUseCookies;\r\n if (_cookieMgrs === null) {\r\n _cookieMgrs = [];\r\n _canUseCookies = legacyCanUseCookies;\r\n // Dynamically create get/set property accessors for backward compatibility for enabling / disabling cookies\r\n // this WILL NOT work for ES3 browsers (< IE8)\r\n objDefineAccessors(CoreUtils, \"_canUseCookies\", function () {\r\n return _canUseCookies;\r\n }, function (value) {\r\n _canUseCookies = value;\r\n arrForEach(_cookieMgrs, function (mgr) {\r\n mgr[_DYN_SET_ENABLED /* @min:%2esetEnabled */](value);\r\n });\r\n });\r\n }\r\n if (arrIndexOf(_cookieMgrs, cookieMgr) === -1) {\r\n _cookieMgrs[_DYN_PUSH /* @min:%2epush */](cookieMgr);\r\n }\r\n if (isBoolean(legacyCanUseCookies)) {\r\n cookieMgr[_DYN_SET_ENABLED /* @min:%2esetEnabled */](legacyCanUseCookies);\r\n }\r\n if (isBoolean(_canUseCookies)) {\r\n cookieMgr[_DYN_SET_ENABLED /* @min:%2esetEnabled */](_canUseCookies);\r\n }\r\n return cookieMgr;\r\n}\r\n/**\r\n * @deprecated - Use the core.getCookieMgr().disable()\r\n * Force the SDK not to store and read any data from cookies.\r\n */\r\nexport function disableCookies() {\r\n _legacyCookieMgr()[_DYN_SET_ENABLED /* @min:%2esetEnabled */](false);\r\n}\r\n/**\r\n * @deprecated - Use the core.getCookieMgr().isEnabled()\r\n * Helper method to tell if document.cookie object is available and whether it can be used.\r\n */\r\nexport function canUseCookies(logger) {\r\n return _legacyCookieMgr(null, logger).isEnabled();\r\n}\r\n/**\r\n * @deprecated - Use the core.getCookieMgr().get()\r\n * helper method to access userId and sessionId cookie\r\n */\r\nexport function getCookie(logger, name) {\r\n return _legacyCookieMgr(null, logger).get(name);\r\n}\r\n/**\r\n * @deprecated - Use the core.getCookieMgr().set()\r\n * helper method to set userId and sessionId cookie\r\n */\r\nexport function setCookie(logger, name, value, domain) {\r\n _legacyCookieMgr(null, logger).set(name, value, null, domain);\r\n}\r\n/**\r\n * @deprecated - Use the core.getCookieMgr().del()\r\n * Deletes a cookie by setting it's expiration time in the past.\r\n * @param name - The name of the cookie to delete.\r\n */\r\nexport function deleteCookie(logger, name) {\r\n return _legacyCookieMgr(null, logger).del(name);\r\n}\r\n//# sourceMappingURL=CoreUtils.js.map","import { _DYN_LENGTH, _DYN_SPAN_ID, _DYN_SUBSTR, _DYN_TRACE_FLAGS, _DYN_TRACE_ID, _DYN_VERSION } from \"../__DynamicConstants\";\r\nimport { generateW3CId } from \"./CoreUtils\";\r\nimport { findMetaTag, findNamedServerTiming } from \"./EnvUtils\";\r\nimport { isArray, isString, strTrim } from \"./HelperFuncs\";\r\n// using {0,16} for leading and trailing whitespace just to constrain the possible runtime of a random string\r\nvar TRACE_PARENT_REGEX = /^([\\da-f]{2})-([\\da-f]{32})-([\\da-f]{16})-([\\da-f]{2})(-[^\\s]*)?$/;\r\nvar DEFAULT_VERSION = \"00\";\r\nvar INVALID_VERSION = \"ff\";\r\nvar INVALID_TRACE_ID = \"00000000000000000000000000000000\";\r\nvar INVALID_SPAN_ID = \"0000000000000000\";\r\nvar SAMPLED_FLAG = 0x01;\r\nfunction _isValid(value, len, invalidValue) {\r\n if (value && value[_DYN_LENGTH /* @min:%2elength */] === len && value !== invalidValue) {\r\n return !!value.match(/^[\\da-f]*$/);\r\n }\r\n return false;\r\n}\r\nfunction _formatValue(value, len, defValue) {\r\n if (_isValid(value, len)) {\r\n return value;\r\n }\r\n return defValue;\r\n}\r\nfunction _formatFlags(value) {\r\n if (isNaN(value) || value < 0 || value > 255) {\r\n value = 0x01;\r\n }\r\n var result = value.toString(16);\r\n while (result[_DYN_LENGTH /* @min:%2elength */] < 2) {\r\n result = \"0\" + result;\r\n }\r\n return result;\r\n}\r\n/**\r\n * Create a new ITraceParent instance using the provided values.\r\n * @param traceId - The traceId to use, when invalid a new random W3C id will be generated.\r\n * @param spanId - The parent/span id to use, a new random value will be generated if it is invalid.\r\n * @param flags - The traceFlags to use, defaults to zero (0) if not supplied or invalid\r\n * @param version - The version to used, defaults to version \"01\" if not supplied or invalid.\r\n * @returns\r\n */\r\nexport function createTraceParent(traceId, spanId, flags, version) {\r\n var _a;\r\n return _a = {},\r\n _a[_DYN_VERSION /* @min:version */] = _isValid(version, 2, INVALID_VERSION) ? version : DEFAULT_VERSION,\r\n _a[_DYN_TRACE_ID /* @min:traceId */] = isValidTraceId(traceId) ? traceId : generateW3CId(),\r\n _a.spanId = isValidSpanId(spanId) ? spanId : generateW3CId()[_DYN_SUBSTR /* @min:%2esubstr */](0, 16),\r\n _a.traceFlags = flags >= 0 && flags <= 0xFF ? flags : 1,\r\n _a;\r\n}\r\n/**\r\n * Attempt to parse the provided string as a W3C TraceParent header value (https://www.w3.org/TR/trace-context/#traceparent-header)\r\n *\r\n * @param value\r\n * @returns\r\n */\r\nexport function parseTraceParent(value) {\r\n var _a;\r\n if (!value) {\r\n // Don't pass a null/undefined or empty string\r\n return null;\r\n }\r\n if (isArray(value)) {\r\n // The value may have been encoded on the page into an array so handle this automatically\r\n value = value[0] || \"\";\r\n }\r\n if (!value || !isString(value) || value[_DYN_LENGTH /* @min:%2elength */] > 8192) {\r\n // limit potential processing based on total length\r\n return null;\r\n }\r\n // See https://www.w3.org/TR/trace-context/#versioning-of-traceparent\r\n var match = TRACE_PARENT_REGEX.exec(strTrim(value));\r\n if (!match || // No match\r\n match[1] === INVALID_VERSION || // version ff is forbidden\r\n match[2] === INVALID_TRACE_ID || // All zeros is considered to be invalid\r\n match[3] === INVALID_SPAN_ID) { // All zeros is considered to be invalid\r\n return null;\r\n }\r\n return _a = {},\r\n _a[_DYN_VERSION /* @min:version */] = match[1],\r\n _a[_DYN_TRACE_ID /* @min:traceId */] = match[2],\r\n _a[_DYN_SPAN_ID /* @min:spanId */] = match[3],\r\n _a[_DYN_TRACE_FLAGS /* @min:traceFlags */] = parseInt(match[4], 16),\r\n _a;\r\n}\r\n/**\r\n * Is the provided W3c Trace Id a valid string representation, it must be a 32-character string\r\n * of lowercase hexadecimal characters for example, 4bf92f3577b34da6a3ce929d0e0e4736.\r\n * If all characters as zero (00000000000000000000000000000000) it will be considered an invalid value.\r\n * @param value - The W3c trace Id to be validated\r\n * @returns true if valid otherwise false\r\n */\r\nexport function isValidTraceId(value) {\r\n return _isValid(value, 32, INVALID_TRACE_ID);\r\n}\r\n/**\r\n * Is the provided W3c span id (aka. parent id) a valid string representation, it must be a 16-character\r\n * string of lowercase hexadecimal characters, for example, 00f067aa0ba902b7.\r\n * If all characters are zero (0000000000000000) this is considered an invalid value.\r\n * @param value - The W3c span id to be validated\r\n * @returns true if valid otherwise false\r\n */\r\nexport function isValidSpanId(value) {\r\n return _isValid(value, 16, INVALID_SPAN_ID);\r\n}\r\n/**\r\n * Validates that the provided ITraceParent instance conforms to the currently supported specifications\r\n * @param value\r\n * @returns\r\n */\r\nexport function isValidTraceParent(value) {\r\n if (!value ||\r\n !_isValid(value[_DYN_VERSION /* @min:%2eversion */], 2, INVALID_VERSION) ||\r\n !_isValid(value[_DYN_TRACE_ID /* @min:%2etraceId */], 32, INVALID_TRACE_ID) ||\r\n !_isValid(value[_DYN_SPAN_ID /* @min:%2espanId */], 16, INVALID_SPAN_ID) ||\r\n !_isValid(_formatFlags(value[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */]), 2)) {\r\n // Each known field must contain a valid value\r\n return false;\r\n }\r\n return true;\r\n}\r\n/**\r\n * Is the parsed traceParent indicating that the trace is currently sampled.\r\n * @param value - The parsed traceParent value\r\n * @returns\r\n */\r\nexport function isSampledFlag(value) {\r\n if (isValidTraceParent(value)) {\r\n return (value[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] & SAMPLED_FLAG) === SAMPLED_FLAG;\r\n }\r\n return false;\r\n}\r\n/**\r\n * Format the ITraceParent value as a string using the supported and know version formats.\r\n * So even if the passed traceParent is a later version the string value returned from this\r\n * function will convert it to only the known version formats.\r\n * This currently only supports version \"00\" and invalid \"ff\"\r\n * @param value - The parsed traceParent value\r\n * @returns\r\n */\r\nexport function formatTraceParent(value) {\r\n if (value) {\r\n // Special Note: This only supports formatting as version 00, future versions should encode any known supported version\r\n // So parsing a future version will populate the correct version value but reformatting will reduce it to version 00.\r\n var flags = _formatFlags(value[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */]);\r\n if (!_isValid(flags, 2)) {\r\n flags = \"01\";\r\n }\r\n var version = value[_DYN_VERSION /* @min:%2eversion */] || DEFAULT_VERSION;\r\n if (version !== \"00\" && version !== \"ff\") {\r\n // Reduce version to \"00\"\r\n version = DEFAULT_VERSION;\r\n }\r\n // Format as version 00\r\n return \"\".concat(version, \"-\").concat(_formatValue(value.traceId, 32, INVALID_TRACE_ID), \"-\").concat(_formatValue(value.spanId, 16, INVALID_SPAN_ID), \"-\").concat(flags);\r\n }\r\n return \"\";\r\n}\r\n/**\r\n * Helper function to fetch the passed traceparent from the page, looking for it as a meta-tag or a Server-Timing header.\r\n * @returns\r\n */\r\nexport function findW3cTraceParent() {\r\n var name = \"traceparent\";\r\n var traceParent = parseTraceParent(findMetaTag(name));\r\n if (!traceParent) {\r\n traceParent = parseTraceParent(findNamedServerTiming(name));\r\n }\r\n return traceParent;\r\n}\r\n//# sourceMappingURL=W3cTraceParent.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { isFunction, getDocument } from \"@microsoft/applicationinsights-core-js\";\r\nexport function createDomEvent(eventName) {\r\n var event = null;\r\n if (isFunction(Event)) { // Use Event constructor when available\r\n event = new Event(eventName);\r\n }\r\n else { // Event has no constructor in IE\r\n var doc = getDocument();\r\n if (doc && doc.createEvent) {\r\n event = doc.createEvent(\"Event\");\r\n event.initEvent(eventName, true, true);\r\n }\r\n }\r\n return event;\r\n}\r\n//# sourceMappingURL=DomHelperFuncs.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { createValueMap } from \"@microsoft/applicationinsights-core-js\";\r\nexport var RequestHeaders = createValueMap({\r\n requestContextHeader: [0 /* eRequestHeaders.requestContextHeader */, \"Request-Context\"],\r\n requestContextTargetKey: [1 /* eRequestHeaders.requestContextTargetKey */, \"appId\"],\r\n requestContextAppIdFormat: [2 /* eRequestHeaders.requestContextAppIdFormat */, \"appId=cid-v1:\"],\r\n requestIdHeader: [3 /* eRequestHeaders.requestIdHeader */, \"Request-Id\"],\r\n traceParentHeader: [4 /* eRequestHeaders.traceParentHeader */, \"traceparent\"],\r\n traceStateHeader: [5 /* eRequestHeaders.traceStateHeader */, \"tracestate\"],\r\n sdkContextHeader: [6 /* eRequestHeaders.sdkContextHeader */, \"Sdk-Context\"],\r\n sdkContextHeaderAppIdRequest: [7 /* eRequestHeaders.sdkContextHeaderAppIdRequest */, \"appId\"],\r\n requestContextHeaderLowerCase: [8 /* eRequestHeaders.requestContextHeaderLowerCase */, \"request-context\"]\r\n});\r\n//# sourceMappingURL=RequestResponseHeaders.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { getDocument, isString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_LENGTH, _DYN_PATHNAME, _DYN_TO_LOWER_CASE } from \"./__DynamicConstants\";\r\nvar _document = getDocument() || {};\r\nvar _htmlAnchorIdx = 0;\r\n// Use an array of temporary values as it's possible for multiple calls to parseUrl() will be called with different URLs\r\n// Using a cache size of 5 for now as it current depth usage is at least 2, so adding a minor buffer to handle future updates\r\nvar _htmlAnchorElement = [null, null, null, null, null];\r\nexport function urlParseUrl(url) {\r\n var anchorIdx = _htmlAnchorIdx;\r\n var anchorCache = _htmlAnchorElement;\r\n var tempAnchor = anchorCache[anchorIdx];\r\n if (!_document.createElement) {\r\n // Always create the temp instance if createElement is not available\r\n tempAnchor = { host: urlParseHost(url, true) };\r\n }\r\n else if (!anchorCache[anchorIdx]) {\r\n // Create and cache the unattached anchor instance\r\n tempAnchor = anchorCache[anchorIdx] = _document.createElement(\"a\");\r\n }\r\n tempAnchor.href = url;\r\n // Move the cache index forward\r\n anchorIdx++;\r\n if (anchorIdx >= anchorCache[_DYN_LENGTH /* @min:%2elength */]) {\r\n anchorIdx = 0;\r\n }\r\n _htmlAnchorIdx = anchorIdx;\r\n return tempAnchor;\r\n}\r\nexport function urlGetAbsoluteUrl(url) {\r\n var result;\r\n var a = urlParseUrl(url);\r\n if (a) {\r\n result = a.href;\r\n }\r\n return result;\r\n}\r\nexport function urlGetPathName(url) {\r\n var result;\r\n var a = urlParseUrl(url);\r\n if (a) {\r\n result = a[_DYN_PATHNAME /* @min:%2epathname */];\r\n }\r\n return result;\r\n}\r\nexport function urlGetCompleteUrl(method, absoluteUrl) {\r\n if (method) {\r\n return method.toUpperCase() + \" \" + absoluteUrl;\r\n }\r\n return absoluteUrl;\r\n}\r\n// Fallback method to grab host from url if document.createElement method is not available\r\nexport function urlParseHost(url, inclPort) {\r\n var fullHost = urlParseFullHost(url, inclPort) || \"\";\r\n if (fullHost) {\r\n var match = fullHost.match(/(www[0-9]?\\.)?(.[^/:]+)(\\:[\\d]+)?/i);\r\n if (match != null && match[_DYN_LENGTH /* @min:%2elength */] > 3 && isString(match[2]) && match[2][_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n return match[2] + (match[3] || \"\");\r\n }\r\n }\r\n return fullHost;\r\n}\r\nexport function urlParseFullHost(url, inclPort) {\r\n var result = null;\r\n if (url) {\r\n var match = url.match(/(\\w*):\\/\\/(.[^/:]+)(\\:[\\d]+)?/i);\r\n if (match != null && match[_DYN_LENGTH /* @min:%2elength */] > 2 && isString(match[2]) && match[2][_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n result = match[2] || \"\";\r\n if (inclPort && match[_DYN_LENGTH /* @min:%2elength */] > 2) {\r\n var protocol = (match[1] || \"\")[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n var port = match[3] || \"\";\r\n // IE includes the standard port so pass it off if it's the same as the protocol\r\n if (protocol === \"http\" && port === \":80\") {\r\n port = \"\";\r\n }\r\n else if (protocol === \"https\" && port === \":443\") {\r\n port = \"\";\r\n }\r\n result += port;\r\n }\r\n }\r\n }\r\n return result;\r\n}\r\n//# sourceMappingURL=UrlHelperFuncs.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { arrForEach, arrIndexOf, attachEvent, canUseCookies as coreCanUseCookies, dateNow, deleteCookie as coreDeleteCookie, disableCookies as coreDisableCookies, dumpObj, generateW3CId, getCookie as coreGetCookie, getExceptionName as coreGetExceptionName, getIEVersion, getPerformance, isArray, isBeaconsSupported, isDate, isError, isNullOrUndefined, isValidSpanId, isValidTraceId, newId, random32, setCookie as coreSetCookie, strTrim, toISOString, uaDisallowsSameSiteNone } from \"@microsoft/applicationinsights-core-js\";\r\nimport { DEFAULT_BREEZE_ENDPOINT, DEFAULT_BREEZE_PATH, strNotSpecified } from \"./Constants\";\r\nimport { createDomEvent } from \"./DomHelperFuncs\";\r\nimport { getExtensionByName, isCrossOriginError, msToTimeSpan, stringToBoolOrDefault } from \"./HelperFuncs\";\r\nimport { RequestHeaders } from \"./RequestResponseHeaders\";\r\nimport { utlCanUseLocalStorage, utlCanUseSessionStorage, utlDisableStorage, utlGetLocalStorage, utlGetSessionStorage, utlGetSessionStorageKeys, utlRemoveSessionStorage, utlRemoveStorage, utlSetLocalStorage, utlSetSessionStorage } from \"./StorageHelperFuncs\";\r\nimport { dataSanitizeString } from \"./Telemetry/Common/DataSanitizer\";\r\nimport { urlGetAbsoluteUrl, urlGetCompleteUrl, urlGetPathName, urlParseFullHost, urlParseHost, urlParseUrl } from \"./UrlHelperFuncs\";\r\nimport { _DYN_CORRELATION_HEADER_E0, _DYN_INDEX_OF, _DYN_LENGTH, _DYN_NAME, _DYN_PATHNAME, _DYN_SPLIT, _DYN_TO_LOWER_CASE } from \"./__DynamicConstants\";\r\n// listing only non-geo specific locations\r\nvar _internalEndpoints = [\r\n DEFAULT_BREEZE_ENDPOINT + DEFAULT_BREEZE_PATH,\r\n \"https://breeze.aimon.applicationinsights.io\" + DEFAULT_BREEZE_PATH,\r\n \"https://dc-int.services.visualstudio.com\" + DEFAULT_BREEZE_PATH\r\n];\r\nexport function isInternalApplicationInsightsEndpoint(endpointUrl) {\r\n return arrIndexOf(_internalEndpoints, endpointUrl[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]()) !== -1;\r\n}\r\nexport var Util = {\r\n NotSpecified: strNotSpecified,\r\n createDomEvent: createDomEvent,\r\n disableStorage: utlDisableStorage,\r\n isInternalApplicationInsightsEndpoint: isInternalApplicationInsightsEndpoint,\r\n canUseLocalStorage: utlCanUseLocalStorage,\r\n getStorage: utlGetLocalStorage,\r\n setStorage: utlSetLocalStorage,\r\n removeStorage: utlRemoveStorage,\r\n canUseSessionStorage: utlCanUseSessionStorage,\r\n getSessionStorageKeys: utlGetSessionStorageKeys,\r\n getSessionStorage: utlGetSessionStorage,\r\n setSessionStorage: utlSetSessionStorage,\r\n removeSessionStorage: utlRemoveSessionStorage,\r\n disableCookies: coreDisableCookies,\r\n canUseCookies: coreCanUseCookies,\r\n disallowsSameSiteNone: uaDisallowsSameSiteNone,\r\n setCookie: coreSetCookie,\r\n stringToBoolOrDefault: stringToBoolOrDefault,\r\n getCookie: coreGetCookie,\r\n deleteCookie: coreDeleteCookie,\r\n trim: strTrim,\r\n newId: newId,\r\n random32: function () {\r\n return random32(true);\r\n },\r\n generateW3CId: generateW3CId,\r\n isArray: isArray,\r\n isError: isError,\r\n isDate: isDate,\r\n toISOStringForIE8: toISOString,\r\n getIEVersion: getIEVersion,\r\n msToTimeSpan: msToTimeSpan,\r\n isCrossOriginError: isCrossOriginError,\r\n dump: dumpObj,\r\n getExceptionName: coreGetExceptionName,\r\n addEventHandler: attachEvent,\r\n IsBeaconApiSupported: isBeaconsSupported,\r\n getExtension: getExtensionByName\r\n};\r\nexport var UrlHelper = {\r\n parseUrl: urlParseUrl,\r\n getAbsoluteUrl: urlGetAbsoluteUrl,\r\n getPathName: urlGetPathName,\r\n getCompleteUrl: urlGetCompleteUrl,\r\n parseHost: urlParseHost,\r\n parseFullHost: urlParseFullHost\r\n};\r\nexport var CorrelationIdHelper = {\r\n correlationIdPrefix: \"cid-v1:\",\r\n /**\r\n * Checks if a request url is not on a excluded domain list and if it is safe to add correlation headers.\r\n * Headers are always included if the current domain matches the request domain. If they do not match (CORS),\r\n * they are regex-ed across correlationHeaderDomains and correlationHeaderExcludedDomains to determine if headers are included.\r\n * Some environments don't give information on currentHost via window.location.host (e.g. Cordova). In these cases, the user must\r\n * manually supply domains to include correlation headers on. Else, no headers will be included at all.\r\n */\r\n canIncludeCorrelationHeader: function (config, requestUrl, currentHost) {\r\n if (!requestUrl || (config && config.disableCorrelationHeaders)) {\r\n return false;\r\n }\r\n if (config && config[_DYN_CORRELATION_HEADER_E0 /* @min:%2ecorrelationHeaderExcludePatterns */]) {\r\n for (var i = 0; i < config.correlationHeaderExcludePatterns[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n if (config[_DYN_CORRELATION_HEADER_E0 /* @min:%2ecorrelationHeaderExcludePatterns */][i].test(requestUrl)) {\r\n return false;\r\n }\r\n }\r\n }\r\n var requestHost = urlParseUrl(requestUrl).host[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n if (requestHost && (requestHost[_DYN_INDEX_OF /* @min:%2eindexOf */](\":443\") !== -1 || requestHost[_DYN_INDEX_OF /* @min:%2eindexOf */](\":80\") !== -1)) {\r\n // [Bug #1260] IE can include the port even for http and https URLs so if present\r\n // try and parse it to remove if it matches the default protocol port\r\n requestHost = (urlParseFullHost(requestUrl, true) || \"\")[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n }\r\n if ((!config || !config.enableCorsCorrelation) && (requestHost && requestHost !== currentHost)) {\r\n return false;\r\n }\r\n var includedDomains = config && config.correlationHeaderDomains;\r\n if (includedDomains) {\r\n var matchExists_1;\r\n arrForEach(includedDomains, function (domain) {\r\n var regex = new RegExp(domain.toLowerCase().replace(/\\\\/g, \"\\\\\\\\\").replace(/\\./g, \"\\\\.\").replace(/\\*/g, \".*\"));\r\n matchExists_1 = matchExists_1 || regex.test(requestHost);\r\n });\r\n if (!matchExists_1) {\r\n return false;\r\n }\r\n }\r\n var excludedDomains = config && config.correlationHeaderExcludedDomains;\r\n if (!excludedDomains || excludedDomains[_DYN_LENGTH /* @min:%2elength */] === 0) {\r\n return true;\r\n }\r\n for (var i = 0; i < excludedDomains[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n var regex = new RegExp(excludedDomains[i].toLowerCase().replace(/\\\\/g, \"\\\\\\\\\").replace(/\\./g, \"\\\\.\").replace(/\\*/g, \".*\"));\r\n if (regex.test(requestHost)) {\r\n return false;\r\n }\r\n }\r\n // if we don't know anything about the requestHost, require the user to use included/excludedDomains.\r\n // Previously we always returned false for a falsy requestHost\r\n return requestHost && requestHost[_DYN_LENGTH /* @min:%2elength */] > 0;\r\n },\r\n /**\r\n * Combines target appId and target role name from response header.\r\n */\r\n getCorrelationContext: function (responseHeader) {\r\n if (responseHeader) {\r\n var correlationId = CorrelationIdHelper.getCorrelationContextValue(responseHeader, RequestHeaders[1 /* eRequestHeaders.requestContextTargetKey */]);\r\n if (correlationId && correlationId !== CorrelationIdHelper.correlationIdPrefix) {\r\n return correlationId;\r\n }\r\n }\r\n },\r\n /**\r\n * Gets key from correlation response header\r\n */\r\n getCorrelationContextValue: function (responseHeader, key) {\r\n if (responseHeader) {\r\n var keyValues = responseHeader[_DYN_SPLIT /* @min:%2esplit */](\",\");\r\n for (var i = 0; i < keyValues[_DYN_LENGTH /* @min:%2elength */]; ++i) {\r\n var keyValue = keyValues[i][_DYN_SPLIT /* @min:%2esplit */](\"=\");\r\n if (keyValue[_DYN_LENGTH /* @min:%2elength */] === 2 && keyValue[0] === key) {\r\n return keyValue[1];\r\n }\r\n }\r\n }\r\n }\r\n};\r\nexport function AjaxHelperParseDependencyPath(logger, absoluteUrl, method, commandName) {\r\n var target, name = commandName, data = commandName;\r\n if (absoluteUrl && absoluteUrl[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n var parsedUrl = urlParseUrl(absoluteUrl);\r\n target = parsedUrl.host;\r\n if (!name) {\r\n if (parsedUrl[_DYN_PATHNAME /* @min:%2epathname */] != null) {\r\n var pathName = (parsedUrl.pathname[_DYN_LENGTH /* @min:%2elength */] === 0) ? \"/\" : parsedUrl[_DYN_PATHNAME /* @min:%2epathname */];\r\n if (pathName.charAt(0) !== \"/\") {\r\n pathName = \"/\" + pathName;\r\n }\r\n data = parsedUrl[_DYN_PATHNAME /* @min:%2epathname */];\r\n name = dataSanitizeString(logger, method ? method + \" \" + pathName : pathName);\r\n }\r\n else {\r\n name = dataSanitizeString(logger, absoluteUrl);\r\n }\r\n }\r\n }\r\n else {\r\n target = commandName;\r\n name = commandName;\r\n }\r\n return {\r\n target: target,\r\n name: name,\r\n data: data\r\n };\r\n}\r\nexport function dateTimeUtilsNow() {\r\n // returns the window or webworker performance object\r\n var perf = getPerformance();\r\n if (perf && perf.now && perf.timing) {\r\n var now = perf.now() + perf.timing.navigationStart;\r\n // Known issue with IE where this calculation can be negative, so if it is then ignore and fallback\r\n if (now > 0) {\r\n return now;\r\n }\r\n }\r\n return dateNow();\r\n}\r\nexport function dateTimeUtilsDuration(start, end) {\r\n var result = null;\r\n if (start !== 0 && end !== 0 && !isNullOrUndefined(start) && !isNullOrUndefined(end)) {\r\n result = end - start;\r\n }\r\n return result;\r\n}\r\n/**\r\n * A utility class that helps getting time related parameters\r\n */\r\nexport var DateTimeUtils = {\r\n Now: dateTimeUtilsNow,\r\n GetDuration: dateTimeUtilsDuration\r\n};\r\n/**\r\n * Creates a IDistributedTraceContext from an optional telemetryTrace\r\n * @param telemetryTrace - The telemetryTrace instance that is being wrapped\r\n * @param parentCtx - An optional parent distributed trace instance, almost always undefined as this scenario is only used in the case of multiple property handlers.\r\n * @returns A new IDistributedTraceContext instance that is backed by the telemetryTrace or temporary object\r\n */\r\nexport function createDistributedTraceContextFromTrace(telemetryTrace, parentCtx) {\r\n var trace = telemetryTrace || {};\r\n return {\r\n getName: function () {\r\n return trace[_DYN_NAME /* @min:%2ename */];\r\n },\r\n setName: function (newValue) {\r\n parentCtx && parentCtx.setName(newValue);\r\n trace[_DYN_NAME /* @min:%2ename */] = newValue;\r\n },\r\n getTraceId: function () {\r\n return trace.traceID;\r\n },\r\n setTraceId: function (newValue) {\r\n parentCtx && parentCtx.setTraceId(newValue);\r\n if (isValidTraceId(newValue)) {\r\n trace.traceID = newValue;\r\n }\r\n },\r\n getSpanId: function () {\r\n return trace.parentID;\r\n },\r\n setSpanId: function (newValue) {\r\n parentCtx && parentCtx.setSpanId(newValue);\r\n if (isValidSpanId(newValue)) {\r\n trace.parentID = newValue;\r\n }\r\n },\r\n getTraceFlags: function () {\r\n return trace.traceFlags;\r\n },\r\n setTraceFlags: function (newTraceFlags) {\r\n parentCtx && parentCtx.setTraceFlags(newTraceFlags);\r\n trace.traceFlags = newTraceFlags;\r\n }\r\n };\r\n}\r\n//# sourceMappingURL=Util.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { msToTimeSpan } from \"../HelperFuncs\";\r\nimport { AjaxHelperParseDependencyPath } from \"../Util\";\r\nimport { _DYN_DURATION, _DYN_MEASUREMENTS, _DYN_NAME, _DYN_PROPERTIES } from \"../__DynamicConstants\";\r\nimport { dataSanitizeMeasurements, dataSanitizeProperties, dataSanitizeString, dataSanitizeUrl } from \"./Common/DataSanitizer\";\r\nvar RemoteDependencyData = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the RemoteDependencyData object\r\n */\r\n function RemoteDependencyData(logger, id, absoluteUrl, commandName, value, success, resultCode, method, requestAPI, correlationContext, properties, measurements) {\r\n if (requestAPI === void 0) { requestAPI = \"Ajax\"; }\r\n this.aiDataContract = {\r\n id: 1 /* FieldType.Required */,\r\n ver: 1 /* FieldType.Required */,\r\n name: 0 /* FieldType.Default */,\r\n resultCode: 0 /* FieldType.Default */,\r\n duration: 0 /* FieldType.Default */,\r\n success: 0 /* FieldType.Default */,\r\n data: 0 /* FieldType.Default */,\r\n target: 0 /* FieldType.Default */,\r\n type: 0 /* FieldType.Default */,\r\n properties: 0 /* FieldType.Default */,\r\n measurements: 0 /* FieldType.Default */,\r\n kind: 0 /* FieldType.Default */,\r\n value: 0 /* FieldType.Default */,\r\n count: 0 /* FieldType.Default */,\r\n min: 0 /* FieldType.Default */,\r\n max: 0 /* FieldType.Default */,\r\n stdDev: 0 /* FieldType.Default */,\r\n dependencyKind: 0 /* FieldType.Default */,\r\n dependencySource: 0 /* FieldType.Default */,\r\n commandName: 0 /* FieldType.Default */,\r\n dependencyTypeName: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self.ver = 2;\r\n _self.id = id;\r\n _self[_DYN_DURATION /* @min:%2eduration */] = msToTimeSpan(value);\r\n _self.success = success;\r\n _self.resultCode = resultCode + \"\";\r\n _self.type = dataSanitizeString(logger, requestAPI);\r\n var dependencyFields = AjaxHelperParseDependencyPath(logger, absoluteUrl, method, commandName);\r\n _self.data = dataSanitizeUrl(logger, commandName) || dependencyFields.data; // get a value from hosturl if commandName not available\r\n _self.target = dataSanitizeString(logger, dependencyFields.target);\r\n if (correlationContext) {\r\n _self.target = \"\".concat(_self.target, \" | \").concat(correlationContext);\r\n }\r\n _self[_DYN_NAME /* @min:%2ename */] = dataSanitizeString(logger, dependencyFields[_DYN_NAME /* @min:%2ename */]);\r\n _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n }\r\n RemoteDependencyData.envelopeType = \"Microsoft.ApplicationInsights.{0}.RemoteDependency\";\r\n RemoteDependencyData.dataType = \"RemoteDependencyData\";\r\n return RemoteDependencyData;\r\n}());\r\nexport { RemoteDependencyData };\r\n//# sourceMappingURL=RemoteDependencyData.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { _DYN_COMPLETE, _DYN_GET_CTX, _DYN_IS_ASYNC, _DYN_IS_CHILD_EVT, _DYN_LENGTH, _DYN_NAME, _DYN_PUSH, _DYN_SET_CTX, _DYN_TIME } from \"../__DynamicConstants\";\r\nimport { dateNow, isArray, isFunction, objDefineAccessors } from \"./HelperFuncs\";\r\nimport { STR_GET_PERF_MGR, STR_PERF_EVENT } from \"./InternalConstants\";\r\nvar strExecutionContextKey = \"ctx\";\r\nvar strParentContextKey = \"ParentContextKey\";\r\nvar strChildrenContextKey = \"ChildrenContextKey\";\r\nvar _defaultPerfManager = null;\r\nvar PerfEvent = /** @class */ (function () {\r\n function PerfEvent(name, payloadDetails, isAsync) {\r\n var _self = this;\r\n var accessorDefined = false;\r\n _self.start = dateNow();\r\n _self[_DYN_NAME /* @min:%2ename */] = name;\r\n _self[_DYN_IS_ASYNC /* @min:%2eisAsync */] = isAsync;\r\n _self[_DYN_IS_CHILD_EVT /* @min:%2eisChildEvt */] = function () { return false; };\r\n if (isFunction(payloadDetails)) {\r\n // Create an accessor to minimize the potential performance impact of executing the payloadDetails callback\r\n var theDetails_1;\r\n accessorDefined = objDefineAccessors(_self, \"payload\", function () {\r\n // Delay the execution of the payloadDetails until needed\r\n if (!theDetails_1 && isFunction(payloadDetails)) {\r\n theDetails_1 = payloadDetails();\r\n // clear it out now so the referenced objects can be garbage collected\r\n payloadDetails = null;\r\n }\r\n return theDetails_1;\r\n });\r\n }\r\n _self[_DYN_GET_CTX /* @min:%2egetCtx */] = function (key) {\r\n if (key) {\r\n // The parent and child links are located directly on the object (for better viewing in the DebugPlugin)\r\n if (key === PerfEvent[strParentContextKey] || key === PerfEvent[strChildrenContextKey]) {\r\n return _self[key];\r\n }\r\n return (_self[strExecutionContextKey] || {})[key];\r\n }\r\n return null;\r\n };\r\n _self[_DYN_SET_CTX /* @min:%2esetCtx */] = function (key, value) {\r\n if (key) {\r\n // Put the parent and child links directly on the object (for better viewing in the DebugPlugin)\r\n if (key === PerfEvent[strParentContextKey]) {\r\n // Simple assumption, if we are setting a parent then we must be a child\r\n if (!_self[key]) {\r\n _self[_DYN_IS_CHILD_EVT /* @min:%2eisChildEvt */] = function () { return true; };\r\n }\r\n _self[key] = value;\r\n }\r\n else if (key === PerfEvent[strChildrenContextKey]) {\r\n _self[key] = value;\r\n }\r\n else {\r\n var ctx = _self[strExecutionContextKey] = _self[strExecutionContextKey] || {};\r\n ctx[key] = value;\r\n }\r\n }\r\n };\r\n _self[_DYN_COMPLETE /* @min:%2ecomplete */] = function () {\r\n var childTime = 0;\r\n var childEvts = _self[_DYN_GET_CTX /* @min:%2egetCtx */](PerfEvent[strChildrenContextKey]);\r\n if (isArray(childEvts)) {\r\n for (var lp = 0; lp < childEvts[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n var childEvt = childEvts[lp];\r\n if (childEvt) {\r\n childTime += childEvt[_DYN_TIME /* @min:%2etime */];\r\n }\r\n }\r\n }\r\n _self[_DYN_TIME /* @min:%2etime */] = dateNow() - _self.start;\r\n _self.exTime = _self[_DYN_TIME /* @min:%2etime */] - childTime;\r\n _self[_DYN_COMPLETE /* @min:%2ecomplete */] = function () { };\r\n if (!accessorDefined && isFunction(payloadDetails)) {\r\n // If we couldn't define the property set during complete -- to minimize the perf impact until after the time\r\n _self.payload = payloadDetails();\r\n }\r\n };\r\n }\r\n PerfEvent.ParentContextKey = \"parent\";\r\n PerfEvent.ChildrenContextKey = \"childEvts\";\r\n return PerfEvent;\r\n}());\r\nexport { PerfEvent };\r\nvar PerfManager = /** @class */ (function () {\r\n function PerfManager(manager) {\r\n /**\r\n * General bucket used for execution context set and retrieved via setCtx() and getCtx.\r\n * Defined as private so it can be visualized via the DebugPlugin\r\n */\r\n this.ctx = {};\r\n dynamicProto(PerfManager, this, function (_self) {\r\n _self.create = function (src, payloadDetails, isAsync) {\r\n // TODO (@MSNev): at some point we will want to add additional configuration to \"select\" which events to instrument\r\n // for now this is just a simple do everything.\r\n return new PerfEvent(src, payloadDetails, isAsync);\r\n };\r\n _self.fire = function (perfEvent) {\r\n if (perfEvent) {\r\n perfEvent[_DYN_COMPLETE /* @min:%2ecomplete */]();\r\n if (manager && isFunction(manager[STR_PERF_EVENT /* @min:%2eperfEvent */])) {\r\n manager[STR_PERF_EVENT /* @min:%2eperfEvent */](perfEvent);\r\n }\r\n }\r\n };\r\n _self[_DYN_SET_CTX /* @min:%2esetCtx */] = function (key, value) {\r\n if (key) {\r\n var ctx = _self[strExecutionContextKey] = _self[strExecutionContextKey] || {};\r\n ctx[key] = value;\r\n }\r\n };\r\n _self[_DYN_GET_CTX /* @min:%2egetCtx */] = function (key) {\r\n return (_self[strExecutionContextKey] || {})[key];\r\n };\r\n });\r\n }\r\n /**\r\n * Create a new event and start timing, the manager may return null/undefined to indicate that it does not\r\n * want to monitor this source event.\r\n * @param src The source name of the event\r\n * @param payloadDetails - An optional callback function to fetch the payload details for the event.\r\n * @param isAsync - Is the event occurring from a async event\r\n */\r\n PerfManager.prototype.create = function (src, payload, isAsync) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n /**\r\n * Complete the perfEvent and fire any notifications.\r\n * @param perfEvent Fire the event which will also complete the passed event\r\n */\r\n PerfManager.prototype.fire = function (perfEvent) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Set an execution context value\r\n * @param key - The context key name\r\n * @param value - The value\r\n */\r\n PerfManager.prototype.setCtx = function (key, value) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Get the execution context value\r\n * @param key - The context key\r\n */\r\n PerfManager.prototype.getCtx = function (key) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n return PerfManager;\r\n}());\r\nexport { PerfManager };\r\nvar doPerfActiveKey = \"CoreUtils.doPerf\";\r\n/**\r\n * Helper function to wrap a function with a perf event\r\n * @param mgrSource - The Performance Manager or a Performance provider source (may be null)\r\n * @param getSource - The callback to create the source name for the event (if perf monitoring is enabled)\r\n * @param func - The function to call and measure\r\n * @param details - A function to return the payload details\r\n * @param isAsync - Is the event / function being call asynchronously or synchronously\r\n */\r\nexport function doPerf(mgrSource, getSource, func, details, isAsync) {\r\n if (mgrSource) {\r\n var perfMgr = mgrSource;\r\n if (perfMgr[STR_GET_PERF_MGR]) {\r\n // Looks like a perf manager provider object\r\n perfMgr = perfMgr[STR_GET_PERF_MGR]();\r\n }\r\n if (perfMgr) {\r\n var perfEvt = void 0;\r\n var currentActive = perfMgr[_DYN_GET_CTX /* @min:%2egetCtx */](doPerfActiveKey);\r\n try {\r\n perfEvt = perfMgr.create(getSource(), details, isAsync);\r\n if (perfEvt) {\r\n if (currentActive && perfEvt[_DYN_SET_CTX /* @min:%2esetCtx */]) {\r\n perfEvt[_DYN_SET_CTX /* @min:%2esetCtx */](PerfEvent[strParentContextKey], currentActive);\r\n if (currentActive[_DYN_GET_CTX /* @min:%2egetCtx */] && currentActive[_DYN_SET_CTX /* @min:%2esetCtx */]) {\r\n var children = currentActive[_DYN_GET_CTX /* @min:%2egetCtx */](PerfEvent[strChildrenContextKey]);\r\n if (!children) {\r\n children = [];\r\n currentActive[_DYN_SET_CTX /* @min:%2esetCtx */](PerfEvent[strChildrenContextKey], children);\r\n }\r\n children[_DYN_PUSH /* @min:%2epush */](perfEvt);\r\n }\r\n }\r\n // Set this event as the active event now\r\n perfMgr[_DYN_SET_CTX /* @min:%2esetCtx */](doPerfActiveKey, perfEvt);\r\n return func(perfEvt);\r\n }\r\n }\r\n catch (ex) {\r\n if (perfEvt && perfEvt[_DYN_SET_CTX /* @min:%2esetCtx */]) {\r\n perfEvt[_DYN_SET_CTX /* @min:%2esetCtx */](\"exception\", ex);\r\n }\r\n }\r\n finally {\r\n // fire the perf event\r\n if (perfEvt) {\r\n perfMgr.fire(perfEvt);\r\n }\r\n // Reset the active event to the previous value\r\n perfMgr[_DYN_SET_CTX /* @min:%2esetCtx */](doPerfActiveKey, currentActive);\r\n }\r\n }\r\n }\r\n return func();\r\n}\r\n/**\r\n * Set the global performance manager to use when there is no core instance or it has not been initialized yet.\r\n * @param perfManager - The IPerfManager instance to use when no performance manager is supplied.\r\n */\r\nexport function setGblPerfMgr(perfManager) {\r\n _defaultPerfManager = perfManager;\r\n}\r\n/**\r\n * Get the current global performance manager that will be used with no performance manager is supplied.\r\n * @returns - The current default manager\r\n */\r\nexport function getGblPerfMgr() {\r\n return _defaultPerfManager;\r\n}\r\n//# sourceMappingURL=PerfManager.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\"use strict\";\r\nimport { _DYN_CALL, _DYN_GET_NEXT, _DYN_GET_PLUGIN, _DYN_INITIALIZE, _DYN_IS_INITIALIZED, _DYN_LENGTH, _DYN_NAME, _DYN_PUSH, _DYN_SET_NEXT_PLUGIN, _DYN_SPAN_ID, _DYN_TEARDOWN, _DYN_TRACE_FLAGS, _DYN_TRACE_ID, _DYN__DO_TEARDOWN } from \"../__DynamicConstants\";\r\nimport { createElmNodeData } from \"./DataCacheHelper\";\r\nimport { arrForEach, isFunction } from \"./HelperFuncs\";\r\nimport { STR_CORE, STR_PRIORITY, STR_PROCESS_TELEMETRY } from \"./InternalConstants\";\r\nimport { isValidSpanId, isValidTraceId } from \"./W3cTraceParent\";\r\nvar pluginStateData = createElmNodeData(\"plugin\");\r\nexport function _getPluginState(plugin) {\r\n return pluginStateData.get(plugin, \"state\", {}, true);\r\n}\r\n/**\r\n * Initialize the queue of plugins\r\n * @param plugins - The array of plugins to initialize and setting of the next plugin\r\n * @param config The current config for the instance\r\n * @param core THe current core instance\r\n * @param extensions The extensions\r\n */\r\nexport function initializePlugins(processContext, extensions) {\r\n // Set the next plugin and identified the uninitialized plugins\r\n var initPlugins = [];\r\n var lastPlugin = null;\r\n var proxy = processContext[_DYN_GET_NEXT /* @min:%2egetNext */]();\r\n var pluginState;\r\n while (proxy) {\r\n var thePlugin = proxy[_DYN_GET_PLUGIN /* @min:%2egetPlugin */]();\r\n if (thePlugin) {\r\n if (lastPlugin &&\r\n isFunction(lastPlugin[_DYN_SET_NEXT_PLUGIN /* @min:%2esetNextPlugin */]) &&\r\n isFunction(thePlugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */])) {\r\n // Set this plugin as the next for the previous one\r\n lastPlugin[_DYN_SET_NEXT_PLUGIN /* @min:%2esetNextPlugin */](thePlugin);\r\n }\r\n var isInitialized = false;\r\n if (isFunction(thePlugin[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */])) {\r\n isInitialized = thePlugin[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */]();\r\n }\r\n else {\r\n pluginState = _getPluginState(thePlugin);\r\n isInitialized = pluginState[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */];\r\n }\r\n if (!isInitialized) {\r\n initPlugins[_DYN_PUSH /* @min:%2epush */](thePlugin);\r\n }\r\n lastPlugin = thePlugin;\r\n proxy = proxy[_DYN_GET_NEXT /* @min:%2egetNext */]();\r\n }\r\n }\r\n // Now initialize the plugins\r\n arrForEach(initPlugins, function (thePlugin) {\r\n var core = processContext[STR_CORE]();\r\n thePlugin[_DYN_INITIALIZE /* @min:%2einitialize */](processContext.getCfg(), core, extensions, processContext[_DYN_GET_NEXT /* @min:%2egetNext */]());\r\n pluginState = _getPluginState(thePlugin);\r\n // Only add the core to the state if the plugin didn't set it (doesn't extent from BaseTelemetryPlugin)\r\n if (!thePlugin[STR_CORE] && !pluginState[STR_CORE]) {\r\n pluginState[STR_CORE] = core;\r\n }\r\n pluginState[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */] = true;\r\n delete pluginState[_DYN_TEARDOWN /* @min:%2eteardown */];\r\n });\r\n}\r\nexport function sortPlugins(plugins) {\r\n // Sort by priority\r\n return plugins.sort(function (extA, extB) {\r\n var result = 0;\r\n if (extB) {\r\n var bHasProcess = isFunction(extB[STR_PROCESS_TELEMETRY]);\r\n if (isFunction(extA[STR_PROCESS_TELEMETRY])) {\r\n result = bHasProcess ? extA[STR_PRIORITY] - extB[STR_PRIORITY] : 1;\r\n }\r\n else if (bHasProcess) {\r\n result = -1;\r\n }\r\n }\r\n else {\r\n result = extA ? 1 : -1;\r\n }\r\n return result;\r\n });\r\n // sort complete\r\n}\r\n/**\r\n * Teardown / Unload helper to perform teardown/unloading operations for the provided components synchronously or asynchronously, this will call any\r\n * _doTeardown() or _doUnload() functions on the provided components to allow them to finish removal.\r\n * @param components - The components you want to unload\r\n * @param unloadCtx - This is the context that should be used during unloading.\r\n * @param unloadState - The details / state of the unload process, it holds details like whether it should be unloaded synchronously or asynchronously and the reason for the unload.\r\n * @param asyncCallback - An optional callback that the plugin must call if it returns true to inform the caller that it has completed any async unload/teardown operations.\r\n * @returns boolean - true if the plugin has or will call asyncCallback, this allows the plugin to perform any asynchronous operations.\r\n */\r\nexport function unloadComponents(components, unloadCtx, unloadState, asyncCallback) {\r\n var idx = 0;\r\n function _doUnload() {\r\n while (idx < components[_DYN_LENGTH /* @min:%2elength */]) {\r\n var component = components[idx++];\r\n if (component) {\r\n var func = component._doUnload || component[_DYN__DO_TEARDOWN /* @min:%2e_doTeardown */];\r\n if (isFunction(func)) {\r\n if (func[_DYN_CALL /* @min:%2ecall */](component, unloadCtx, unloadState, _doUnload) === true) {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return _doUnload();\r\n}\r\n/**\r\n * Creates a IDistributedTraceContext which optionally also \"sets\" the value on a parent\r\n * @param parentCtx - An optional parent distributed trace instance\r\n * @returns A new IDistributedTraceContext instance that uses an internal temporary object\r\n */\r\nexport function createDistributedTraceContext(parentCtx) {\r\n var trace = {};\r\n return {\r\n getName: function () {\r\n return trace[_DYN_NAME /* @min:%2ename */];\r\n },\r\n setName: function (newValue) {\r\n parentCtx && parentCtx.setName(newValue);\r\n trace[_DYN_NAME /* @min:%2ename */] = newValue;\r\n },\r\n getTraceId: function () {\r\n return trace[_DYN_TRACE_ID /* @min:%2etraceId */];\r\n },\r\n setTraceId: function (newValue) {\r\n parentCtx && parentCtx.setTraceId(newValue);\r\n if (isValidTraceId(newValue)) {\r\n trace[_DYN_TRACE_ID /* @min:%2etraceId */] = newValue;\r\n }\r\n },\r\n getSpanId: function () {\r\n return trace[_DYN_SPAN_ID /* @min:%2espanId */];\r\n },\r\n setSpanId: function (newValue) {\r\n parentCtx && parentCtx.setSpanId(newValue);\r\n if (isValidSpanId(newValue)) {\r\n trace[_DYN_SPAN_ID /* @min:%2espanId */] = newValue;\r\n }\r\n },\r\n getTraceFlags: function () {\r\n return trace[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */];\r\n },\r\n setTraceFlags: function (newTraceFlags) {\r\n parentCtx && parentCtx.setTraceFlags(newTraceFlags);\r\n trace[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] = newTraceFlags;\r\n }\r\n };\r\n}\r\n//# sourceMappingURL=TelemetryHelpers.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\"use strict\";\r\nimport { _DYN_CALL, _DYN_CONFIG, _DYN_CREATE_NEW, _DYN_DIAG_LOG, _DYN_GET_NEXT, _DYN_GET_PLUGIN, _DYN_IDENTIFIER, _DYN_IS_ASYNC, _DYN_IS_INITIALIZED, _DYN_LENGTH, _DYN_LOGGER, _DYN_PROCESS_NEXT, _DYN_PUSH, _DYN_SET_NEXT_PLUGIN, _DYN_TEARDOWN, _DYN_UPDATE } from \"../__DynamicConstants\";\r\nimport { _throwInternal, safeGetLogger } from \"./DiagnosticLogger\";\r\nimport { dumpObj } from \"./EnvUtils\";\r\nimport { arrForEach, isArray, isFunction, isNullOrUndefined, isObject, isUndefined, objExtend, objForEachKey, objFreeze, objKeys, proxyFunctions } from \"./HelperFuncs\";\r\nimport { STR_CORE, STR_DISABLED, STR_EMPTY, STR_EXTENSION_CONFIG, STR_PRIORITY, STR_PROCESS_TELEMETRY } from \"./InternalConstants\";\r\nimport { doPerf } from \"./PerfManager\";\r\nimport { _getPluginState } from \"./TelemetryHelpers\";\r\nvar strTelemetryPluginChain = \"TelemetryPluginChain\";\r\nvar strHasRunFlags = \"_hasRun\";\r\nvar strGetTelCtx = \"_getTelCtx\";\r\nvar _chainId = 0;\r\nfunction _getNextProxyStart(proxy, core, startAt) {\r\n while (proxy) {\r\n if (proxy[_DYN_GET_PLUGIN /* @min:%2egetPlugin */]() === startAt) {\r\n return proxy;\r\n }\r\n proxy = proxy[_DYN_GET_NEXT /* @min:%2egetNext */]();\r\n }\r\n // This wasn't found in the existing chain so create an isolated one with just this plugin\r\n return createTelemetryProxyChain([startAt], core[_DYN_CONFIG /* @min:%2econfig */] || {}, core);\r\n}\r\n/**\r\n * @ignore\r\n * @param telemetryChain\r\n * @param config\r\n * @param core\r\n * @param startAt - Identifies the next plugin to execute, if null there is no \"next\" plugin and if undefined it should assume the start of the chain\r\n * @returns\r\n */\r\nfunction _createInternalContext(telemetryChain, config, core, startAt) {\r\n // We have a special case where we want to start execution from this specific plugin\r\n // or we simply reuse the existing telemetry plugin chain (normal execution case)\r\n var _nextProxy = null; // By Default set as no next plugin\r\n var _onComplete = [];\r\n if (startAt !== null) {\r\n // There is no next element (null) vs not defined (undefined) so use the full chain\r\n _nextProxy = startAt ? _getNextProxyStart(telemetryChain, core, startAt) : telemetryChain;\r\n }\r\n var context = {\r\n _next: _moveNext,\r\n ctx: {\r\n core: function () {\r\n return core;\r\n },\r\n diagLog: function () {\r\n return safeGetLogger(core, config);\r\n },\r\n getCfg: function () {\r\n return config;\r\n },\r\n getExtCfg: _getExtCfg,\r\n getConfig: _getConfig,\r\n hasNext: function () {\r\n return !!_nextProxy;\r\n },\r\n getNext: function () {\r\n return _nextProxy;\r\n },\r\n setNext: function (nextPlugin) {\r\n _nextProxy = nextPlugin;\r\n },\r\n iterate: _iterateChain,\r\n onComplete: _addOnComplete\r\n }\r\n };\r\n function _addOnComplete(onComplete, that) {\r\n var args = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n args[_i - 2] = arguments[_i];\r\n }\r\n if (onComplete) {\r\n _onComplete[_DYN_PUSH /* @min:%2epush */]({\r\n func: onComplete,\r\n self: !isUndefined(that) ? that : context.ctx,\r\n args: args\r\n });\r\n }\r\n }\r\n function _moveNext() {\r\n var nextProxy = _nextProxy;\r\n // Automatically move to the next plugin\r\n _nextProxy = nextProxy ? nextProxy[_DYN_GET_NEXT /* @min:%2egetNext */]() : null;\r\n if (!nextProxy) {\r\n var onComplete = _onComplete;\r\n if (onComplete && onComplete[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n arrForEach(onComplete, function (completeDetails) {\r\n try {\r\n completeDetails.func[_DYN_CALL /* @min:%2ecall */](completeDetails.self, completeDetails.args);\r\n }\r\n catch (e) {\r\n _throwInternal(core[_DYN_LOGGER /* @min:%2elogger */], 2 /* eLoggingSeverity.WARNING */, 73 /* _eInternalMessageId.PluginException */, \"Unexpected Exception during onComplete - \" + dumpObj(e));\r\n }\r\n });\r\n _onComplete = [];\r\n }\r\n }\r\n return nextProxy;\r\n }\r\n function _getExtCfg(identifier, defaultValue, mergeDefault) {\r\n if (defaultValue === void 0) { defaultValue = {}; }\r\n if (mergeDefault === void 0) { mergeDefault = 0 /* GetExtCfgMergeType.None */; }\r\n var theConfig;\r\n if (config) {\r\n var extConfig = config[STR_EXTENSION_CONFIG /* @min:%2eextensionConfig */];\r\n if (extConfig && identifier) {\r\n theConfig = extConfig[identifier];\r\n }\r\n }\r\n if (!theConfig) {\r\n // Just use the defaults\r\n theConfig = defaultValue;\r\n }\r\n else if (isObject(defaultValue)) {\r\n if (mergeDefault !== 0 /* GetExtCfgMergeType.None */) {\r\n // Merge the defaults and configured values\r\n var newConfig_1 = objExtend(true, defaultValue, theConfig);\r\n if (config && mergeDefault === 2 /* GetExtCfgMergeType.MergeDefaultFromRootOrDefault */) {\r\n // Enumerate over the defaultValues and if not already populated attempt to\r\n // find a value from the root config\r\n objForEachKey(defaultValue, function (field) {\r\n // for each unspecified field, set the default value\r\n if (isNullOrUndefined(newConfig_1[field])) {\r\n var cfgValue = config[field];\r\n if (!isNullOrUndefined(cfgValue)) {\r\n newConfig_1[field] = cfgValue;\r\n }\r\n }\r\n });\r\n }\r\n theConfig = newConfig_1;\r\n }\r\n }\r\n return theConfig;\r\n }\r\n function _getConfig(identifier, field, defaultValue) {\r\n if (defaultValue === void 0) { defaultValue = false; }\r\n var theValue;\r\n var extConfig = _getExtCfg(identifier, null);\r\n if (extConfig && !isNullOrUndefined(extConfig[field])) {\r\n theValue = extConfig[field];\r\n }\r\n else if (config && !isNullOrUndefined(config[field])) {\r\n theValue = config[field];\r\n }\r\n return !isNullOrUndefined(theValue) ? theValue : defaultValue;\r\n }\r\n function _iterateChain(cb) {\r\n // Keep processing until we reach the end of the chain\r\n var nextPlugin;\r\n while (!!(nextPlugin = context._next())) {\r\n var plugin = nextPlugin[_DYN_GET_PLUGIN /* @min:%2egetPlugin */]();\r\n if (plugin) {\r\n // callback with the current on\r\n cb(plugin);\r\n }\r\n }\r\n }\r\n return context;\r\n}\r\n/**\r\n * Creates a new Telemetry Item context with the current config, core and plugin execution chain\r\n * @param plugins - The plugin instances that will be executed\r\n * @param config - The current config\r\n * @param core - The current core instance\r\n * @param startAt - Identifies the next plugin to execute, if null there is no \"next\" plugin and if undefined it should assume the start of the chain\r\n */\r\nexport function createProcessTelemetryContext(telemetryChain, config, core, startAt) {\r\n var internalContext = _createInternalContext(telemetryChain, config, core, startAt);\r\n var context = internalContext.ctx;\r\n function _processNext(env) {\r\n var nextPlugin = internalContext._next();\r\n // Run the next plugin which will call \"processNext()\"\r\n nextPlugin && nextPlugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */](env, context);\r\n return !nextPlugin;\r\n }\r\n function _createNew(plugins, startAt) {\r\n if (plugins === void 0) { plugins = null; }\r\n if (isArray(plugins)) {\r\n plugins = createTelemetryProxyChain(plugins, config, core, startAt);\r\n }\r\n return createProcessTelemetryContext(plugins || context[_DYN_GET_NEXT /* @min:%2egetNext */](), config, core, startAt);\r\n }\r\n context[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */] = _processNext;\r\n context[_DYN_CREATE_NEW /* @min:%2ecreateNew */] = _createNew;\r\n return context;\r\n}\r\n/**\r\n * Creates a new Telemetry Item context with the current config, core and plugin execution chain for handling the unloading of the chain\r\n * @param plugins - The plugin instances that will be executed\r\n * @param config - The current config\r\n * @param core - The current core instance\r\n * @param startAt - Identifies the next plugin to execute, if null there is no \"next\" plugin and if undefined it should assume the start of the chain\r\n */\r\nexport function createProcessTelemetryUnloadContext(telemetryChain, core, startAt) {\r\n var config = core[_DYN_CONFIG /* @min:%2econfig */] || {};\r\n var internalContext = _createInternalContext(telemetryChain, config, core, startAt);\r\n var context = internalContext.ctx;\r\n function _processNext(unloadState) {\r\n var nextPlugin = internalContext._next();\r\n nextPlugin && nextPlugin.unload(context, unloadState);\r\n return !nextPlugin;\r\n }\r\n function _createNew(plugins, startAt) {\r\n if (plugins === void 0) { plugins = null; }\r\n if (isArray(plugins)) {\r\n plugins = createTelemetryProxyChain(plugins, config, core, startAt);\r\n }\r\n return createProcessTelemetryUnloadContext(plugins || context[_DYN_GET_NEXT /* @min:%2egetNext */](), core, startAt);\r\n }\r\n context[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */] = _processNext;\r\n context[_DYN_CREATE_NEW /* @min:%2ecreateNew */] = _createNew;\r\n return context;\r\n}\r\n/**\r\n * Creates a new Telemetry Item context with the current config, core and plugin execution chain for updating the configuration\r\n * @param plugins - The plugin instances that will be executed\r\n * @param config - The current config\r\n * @param core - The current core instance\r\n * @param startAt - Identifies the next plugin to execute, if null there is no \"next\" plugin and if undefined it should assume the start of the chain\r\n */\r\nexport function createProcessTelemetryUpdateContext(telemetryChain, core, startAt) {\r\n var config = core[_DYN_CONFIG /* @min:%2econfig */] || {};\r\n var internalContext = _createInternalContext(telemetryChain, config, core, startAt);\r\n var context = internalContext.ctx;\r\n function _processNext(updateState) {\r\n return context.iterate(function (plugin) {\r\n if (isFunction(plugin[_DYN_UPDATE /* @min:%2eupdate */])) {\r\n plugin[_DYN_UPDATE /* @min:%2eupdate */](context, updateState);\r\n }\r\n });\r\n }\r\n function _createNew(plugins, startAt) {\r\n if (plugins === void 0) { plugins = null; }\r\n if (isArray(plugins)) {\r\n plugins = createTelemetryProxyChain(plugins, config, core, startAt);\r\n }\r\n return createProcessTelemetryUpdateContext(plugins || context[_DYN_GET_NEXT /* @min:%2egetNext */](), core, startAt);\r\n }\r\n context[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */] = _processNext;\r\n context[_DYN_CREATE_NEW /* @min:%2ecreateNew */] = _createNew;\r\n return context;\r\n}\r\n/**\r\n * Creates an execution chain from the array of plugins\r\n * @param plugins - The array of plugins that will be executed in this order\r\n * @param defItemCtx - The default execution context to use when no telemetry context is passed to processTelemetry(), this\r\n * should be for legacy plugins only. Currently, only used for passing the current core instance and to provide better error\r\n * reporting (hasRun) when errors occur.\r\n */\r\nexport function createTelemetryProxyChain(plugins, config, core, startAt) {\r\n var firstProxy = null;\r\n var add = startAt ? false : true;\r\n if (isArray(plugins) && plugins[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n // Create the proxies and wire up the next plugin chain\r\n var lastProxy_1 = null;\r\n arrForEach(plugins, function (thePlugin) {\r\n if (!add && startAt === thePlugin) {\r\n add = true;\r\n }\r\n if (add && thePlugin && isFunction(thePlugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */])) {\r\n // Only add plugins that are processors\r\n var newProxy = createTelemetryPluginProxy(thePlugin, config, core);\r\n if (!firstProxy) {\r\n firstProxy = newProxy;\r\n }\r\n if (lastProxy_1) {\r\n // Set this new proxy as the next for the previous one\r\n lastProxy_1._setNext(newProxy);\r\n }\r\n lastProxy_1 = newProxy;\r\n }\r\n });\r\n }\r\n if (startAt && !firstProxy) {\r\n // Special case where the \"startAt\" was not in the original list of plugins\r\n return createTelemetryProxyChain([startAt], config, core);\r\n }\r\n return firstProxy;\r\n}\r\n/**\r\n * Create the processing telemetry proxy instance, the proxy is used to abstract the current plugin to allow monitoring and\r\n * execution plugins while passing around the dynamic execution state (IProcessTelemetryContext), the proxy instance no longer\r\n * contains any execution state and can be reused between requests (this was not the case for 2.7.2 and earlier with the\r\n * TelemetryPluginChain class).\r\n * @param plugin - The plugin instance to proxy\r\n * @param config - The default execution context to use when no telemetry context is passed to processTelemetry(), this\r\n * should be for legacy plugins only. Currently, only used for passing the current core instance and to provide better error\r\n * reporting (hasRun) when errors occur.\r\n * @returns\r\n */\r\nexport function createTelemetryPluginProxy(plugin, config, core) {\r\n var nextProxy = null;\r\n var hasProcessTelemetry = isFunction(plugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */]);\r\n var hasSetNext = isFunction(plugin[_DYN_SET_NEXT_PLUGIN /* @min:%2esetNextPlugin */]);\r\n var chainId;\r\n if (plugin) {\r\n chainId = plugin[_DYN_IDENTIFIER /* @min:%2eidentifier */] + \"-\" + plugin[STR_PRIORITY /* @min:%2epriority */] + \"-\" + _chainId++;\r\n }\r\n else {\r\n chainId = \"Unknown-0-\" + _chainId++;\r\n }\r\n var proxyChain = {\r\n getPlugin: function () {\r\n return plugin;\r\n },\r\n getNext: function () {\r\n return nextProxy;\r\n },\r\n processTelemetry: _processTelemetry,\r\n unload: _unloadPlugin,\r\n update: _updatePlugin,\r\n _id: chainId,\r\n _setNext: function (nextPlugin) {\r\n nextProxy = nextPlugin;\r\n }\r\n };\r\n function _getTelCtx() {\r\n var itemCtx;\r\n // Looks like a plugin didn't pass the (optional) context, so create a new one\r\n if (plugin && isFunction(plugin[strGetTelCtx])) {\r\n // This plugin extends from the BaseTelemetryPlugin so lets use it\r\n itemCtx = plugin[strGetTelCtx]();\r\n }\r\n if (!itemCtx) {\r\n // Create a temporary one\r\n itemCtx = createProcessTelemetryContext(proxyChain, config, core);\r\n }\r\n return itemCtx;\r\n }\r\n function _processChain(itemCtx, processPluginFn, name, details, isAsync) {\r\n var hasRun = false;\r\n var identifier = plugin ? plugin[_DYN_IDENTIFIER /* @min:%2eidentifier */] : strTelemetryPluginChain;\r\n var hasRunContext = itemCtx[strHasRunFlags];\r\n if (!hasRunContext) {\r\n // Assign and populate\r\n hasRunContext = itemCtx[strHasRunFlags] = {};\r\n }\r\n // Ensure that we keep the context in sync\r\n itemCtx.setNext(nextProxy);\r\n if (plugin) {\r\n doPerf(itemCtx[STR_CORE /* @min:%2ecore */](), function () { return identifier + \":\" + name; }, function () {\r\n // Mark this component as having run\r\n hasRunContext[chainId] = true;\r\n try {\r\n // Set a flag on the next plugin so we know if it was attempted to be executed\r\n var nextId = nextProxy ? nextProxy._id : STR_EMPTY;\r\n if (nextId) {\r\n hasRunContext[nextId] = false;\r\n }\r\n hasRun = processPluginFn(itemCtx);\r\n }\r\n catch (error) {\r\n var hasNextRun = nextProxy ? hasRunContext[nextProxy._id] : true;\r\n if (hasNextRun) {\r\n // The next plugin after us has already run so set this one as complete\r\n hasRun = true;\r\n }\r\n if (!nextProxy || !hasNextRun) {\r\n // Either we have no next plugin or the current one did not attempt to call the next plugin\r\n // Which means the current one is the root of the failure so log/report this failure\r\n _throwInternal(itemCtx[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 73 /* _eInternalMessageId.PluginException */, \"Plugin [\" + identifier + \"] failed during \" + name + \" - \" + dumpObj(error) + \", run flags: \" + dumpObj(hasRunContext));\r\n }\r\n }\r\n }, details, isAsync);\r\n }\r\n return hasRun;\r\n }\r\n function _processTelemetry(env, itemCtx) {\r\n itemCtx = itemCtx || _getTelCtx();\r\n function _callProcessTelemetry(itemCtx) {\r\n if (!plugin || !hasProcessTelemetry) {\r\n return false;\r\n }\r\n var pluginState = _getPluginState(plugin);\r\n if (pluginState[_DYN_TEARDOWN /* @min:%2eteardown */] || pluginState[STR_DISABLED]) {\r\n return false;\r\n }\r\n // Ensure that we keep the context in sync (for processNext()), just in case a plugin\r\n // doesn't calls processTelemetry() instead of itemContext.processNext() or some\r\n // other form of error occurred\r\n if (hasSetNext) {\r\n // Backward compatibility setting the next plugin on the instance\r\n plugin[_DYN_SET_NEXT_PLUGIN /* @min:%2esetNextPlugin */](nextProxy);\r\n }\r\n plugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */](env, itemCtx);\r\n // Process Telemetry is expected to call itemCtx.processNext() or nextPlugin.processTelemetry()\r\n return true;\r\n }\r\n if (!_processChain(itemCtx, _callProcessTelemetry, \"processTelemetry\", function () { return ({ item: env }); }, !(env.sync))) {\r\n // The underlying plugin is either not defined, not enabled or does not have a processTelemetry implementation\r\n // so we still want the next plugin to be executed.\r\n itemCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](env);\r\n }\r\n }\r\n function _unloadPlugin(unloadCtx, unloadState) {\r\n function _callTeardown() {\r\n // Setting default of hasRun as false so the proxyProcessFn() is called as teardown() doesn't have to exist or call unloadNext().\r\n var hasRun = false;\r\n if (plugin) {\r\n var pluginState = _getPluginState(plugin);\r\n var pluginCore = plugin[STR_CORE] || pluginState[STR_CORE /* @min:%2ecore */];\r\n // Only teardown the plugin if it was initialized by the current core (i.e. It's not a shared plugin)\r\n if (plugin && (!pluginCore || pluginCore === unloadCtx.core()) && !pluginState[_DYN_TEARDOWN /* @min:%2eteardown */]) {\r\n // Handle plugins that don't extend from the BaseTelemetryPlugin\r\n pluginState[STR_CORE /* @min:%2ecore */] = null;\r\n pluginState[_DYN_TEARDOWN /* @min:%2eteardown */] = true;\r\n pluginState[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */] = false;\r\n if (plugin[_DYN_TEARDOWN /* @min:%2eteardown */] && plugin[_DYN_TEARDOWN /* @min:%2eteardown */](unloadCtx, unloadState) === true) {\r\n // plugin told us that it was going to (or has) call unloadCtx.processNext()\r\n hasRun = true;\r\n }\r\n }\r\n }\r\n return hasRun;\r\n }\r\n if (!_processChain(unloadCtx, _callTeardown, \"unload\", function () { }, unloadState[_DYN_IS_ASYNC /* @min:%2eisAsync */])) {\r\n // Only called if we hasRun was not true\r\n unloadCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](unloadState);\r\n }\r\n }\r\n function _updatePlugin(updateCtx, updateState) {\r\n function _callUpdate() {\r\n // Setting default of hasRun as false so the proxyProcessFn() is called as teardown() doesn't have to exist or call unloadNext().\r\n var hasRun = false;\r\n if (plugin) {\r\n var pluginState = _getPluginState(plugin);\r\n var pluginCore = plugin[STR_CORE] || pluginState[STR_CORE /* @min:%2ecore */];\r\n // Only update the plugin if it was initialized by the current core (i.e. It's not a shared plugin)\r\n if (plugin && (!pluginCore || pluginCore === updateCtx.core()) && !pluginState[_DYN_TEARDOWN /* @min:%2eteardown */]) {\r\n if (plugin[_DYN_UPDATE /* @min:%2eupdate */] && plugin[_DYN_UPDATE /* @min:%2eupdate */](updateCtx, updateState) === true) {\r\n // plugin told us that it was going to (or has) call unloadCtx.processNext()\r\n hasRun = true;\r\n }\r\n }\r\n }\r\n return hasRun;\r\n }\r\n if (!_processChain(updateCtx, _callUpdate, \"update\", function () { }, false)) {\r\n // Only called if we hasRun was not true\r\n updateCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](updateState);\r\n }\r\n }\r\n return objFreeze(proxyChain);\r\n}\r\n/**\r\n * This class will be removed!\r\n * @deprecated use createProcessTelemetryContext() instead\r\n */\r\nvar ProcessTelemetryContext = /** @class */ (function () {\r\n /**\r\n * Creates a new Telemetry Item context with the current config, core and plugin execution chain\r\n * @param plugins - The plugin instances that will be executed\r\n * @param config - The current config\r\n * @param core - The current core instance\r\n */\r\n function ProcessTelemetryContext(pluginChain, config, core, startAt) {\r\n var _self = this;\r\n var context = createProcessTelemetryContext(pluginChain, config, core, startAt);\r\n // Proxy all functions of the context to this object\r\n proxyFunctions(_self, context, objKeys(context));\r\n }\r\n return ProcessTelemetryContext;\r\n}());\r\nexport { ProcessTelemetryContext };\r\n//# sourceMappingURL=ProcessTelemetryContext.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { strShimFunction, strShimPrototype } from \"@microsoft/applicationinsights-shims\";\r\nimport { _DYN_APPLY, _DYN_LENGTH, _DYN_NAME, _DYN_PUSH, _DYN_SPLICE } from \"../__DynamicConstants\";\r\nimport { getGlobalInst } from \"./EnvUtils\";\r\nimport { _getObjProto, hasOwnProperty } from \"./HelperFuncs\";\r\nvar aiInstrumentHooks = \"_aiHooks\";\r\nvar cbNames = [\r\n \"req\", \"rsp\", \"hkErr\", \"fnErr\"\r\n];\r\n/** @ignore */\r\nfunction _arrLoop(arr, fn) {\r\n if (arr) {\r\n for (var lp = 0; lp < arr[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n if (fn(arr[lp], lp)) {\r\n break;\r\n }\r\n }\r\n }\r\n}\r\n/** @ignore */\r\nfunction _doCallbacks(hooks, callDetails, cbArgs, hookCtx, type) {\r\n if (type >= 0 /* CallbackType.Request */ && type <= 2 /* CallbackType.HookError */) {\r\n _arrLoop(hooks, function (hook, idx) {\r\n var cbks = hook.cbks;\r\n var cb = cbks[cbNames[type]];\r\n if (cb) {\r\n // Set the specific hook context implementation using a lazy creation pattern\r\n callDetails.ctx = function () {\r\n var ctx = hookCtx[idx] = (hookCtx[idx] || {});\r\n return ctx;\r\n };\r\n try {\r\n cb[_DYN_APPLY /* @min:%2eapply */](callDetails.inst, cbArgs);\r\n }\r\n catch (err) {\r\n var orgEx = callDetails.err;\r\n try {\r\n // Report Hook error via the callback\r\n var hookErrorCb = cbks[cbNames[2 /* CallbackType.HookError */]];\r\n if (hookErrorCb) {\r\n callDetails.err = err;\r\n hookErrorCb[_DYN_APPLY /* @min:%2eapply */](callDetails.inst, cbArgs);\r\n }\r\n }\r\n catch (e) {\r\n // Not much we can do here -- swallowing the exception to avoid crashing the hosting app\r\n }\r\n finally {\r\n // restore the original exception (if any)\r\n callDetails.err = orgEx;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n}\r\n/** @ignore */\r\nfunction _createFunctionHook(aiHook) {\r\n // Define a temporary method that queues-up a the real method call\r\n return function () {\r\n var _a;\r\n var funcThis = this;\r\n // Capture the original arguments passed to the method\r\n var orgArgs = arguments;\r\n var hooks = aiHook.h;\r\n var funcArgs = (_a = {},\r\n _a[_DYN_NAME /* @min:name */] = aiHook.n,\r\n _a.inst = funcThis,\r\n _a.ctx = null,\r\n _a.set = _replaceArg,\r\n _a);\r\n var hookCtx = [];\r\n var cbArgs = _createArgs([funcArgs], orgArgs);\r\n funcArgs.evt = getGlobalInst(\"event\");\r\n function _createArgs(target, theArgs) {\r\n _arrLoop(theArgs, function (arg) {\r\n target[_DYN_PUSH /* @min:%2epush */](arg);\r\n });\r\n return target;\r\n }\r\n function _replaceArg(idx, value) {\r\n orgArgs = _createArgs([], orgArgs);\r\n orgArgs[idx] = value;\r\n cbArgs = _createArgs([funcArgs], orgArgs);\r\n }\r\n // Call the pre-request hooks\r\n _doCallbacks(hooks, funcArgs, cbArgs, hookCtx, 0 /* CallbackType.Request */);\r\n // Call the original function was called\r\n var theFunc = aiHook.f;\r\n if (theFunc) {\r\n try {\r\n funcArgs.rslt = theFunc[_DYN_APPLY /* @min:%2eapply */](funcThis, orgArgs);\r\n }\r\n catch (err) {\r\n // Report the request callback\r\n funcArgs.err = err;\r\n _doCallbacks(hooks, funcArgs, cbArgs, hookCtx, 3 /* CallbackType.FunctionError */);\r\n // rethrow the original exception so anyone listening for it can catch the exception\r\n throw err;\r\n }\r\n }\r\n // Call the post-request hooks\r\n _doCallbacks(hooks, funcArgs, cbArgs, hookCtx, 1 /* CallbackType.Response */);\r\n return funcArgs.rslt;\r\n };\r\n}\r\n/** @ignore */\r\nfunction _getOwner(target, name, checkPrototype) {\r\n var owner = null;\r\n if (target) {\r\n if (hasOwnProperty(target, name)) {\r\n owner = target;\r\n }\r\n else if (checkPrototype) {\r\n owner = _getOwner(_getObjProto(target), name, false);\r\n }\r\n }\r\n return owner;\r\n}\r\n/**\r\n * Intercept the named prototype functions for the target class / object\r\n * @param target - The target object\r\n * @param funcName - The function name\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n */\r\nexport function InstrumentProto(target, funcName, callbacks) {\r\n if (target) {\r\n return InstrumentFunc(target[strShimPrototype], funcName, callbacks, false);\r\n }\r\n return null;\r\n}\r\n/**\r\n * Intercept the named prototype functions for the target class / object\r\n * @param target - The target object\r\n * @param funcNames - The function names to intercept and call\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n */\r\nexport function InstrumentProtos(target, funcNames, callbacks) {\r\n if (target) {\r\n return InstrumentFuncs(target[strShimPrototype], funcNames, callbacks, false);\r\n }\r\n return null;\r\n}\r\nfunction _createInstrumentHook(owner, funcName, fn, callbacks) {\r\n var aiHook = fn && fn[aiInstrumentHooks];\r\n if (!aiHook) {\r\n // Only hook the function once\r\n aiHook = {\r\n i: 0,\r\n n: funcName,\r\n f: fn,\r\n h: []\r\n };\r\n // Override (hook) the original function\r\n var newFunc = _createFunctionHook(aiHook);\r\n newFunc[aiInstrumentHooks] = aiHook; // Tag and store the function hooks\r\n owner[funcName] = newFunc;\r\n }\r\n var theHook = {\r\n // tslint:disable:object-literal-shorthand\r\n id: aiHook.i,\r\n cbks: callbacks,\r\n rm: function () {\r\n // DO NOT Use () => { shorthand for the function as the this gets replaced\r\n // with the outer this and not the this for theHook instance.\r\n var id = this.id;\r\n _arrLoop(aiHook.h, function (hook, idx) {\r\n if (hook.id === id) {\r\n aiHook.h[_DYN_SPLICE /* @min:%2esplice */](idx, 1);\r\n return 1;\r\n }\r\n });\r\n }\r\n // tslint:enable:object-literal-shorthand\r\n };\r\n aiHook.i++;\r\n aiHook.h[_DYN_PUSH /* @min:%2epush */](theHook);\r\n return theHook;\r\n}\r\n/**\r\n * Intercept the named prototype functions for the target class / object\r\n * @param target - The target object\r\n * @param funcName - The function name\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n * @param checkPrototype - If the function doesn't exist on the target should it attempt to hook the prototype function\r\n */\r\nexport function InstrumentFunc(target, funcName, callbacks, checkPrototype) {\r\n if (checkPrototype === void 0) { checkPrototype = true; }\r\n if (target && funcName && callbacks) {\r\n var owner = _getOwner(target, funcName, checkPrototype);\r\n if (owner) {\r\n var fn = owner[funcName];\r\n if (typeof fn === strShimFunction) {\r\n return _createInstrumentHook(owner, funcName, fn, callbacks);\r\n }\r\n }\r\n }\r\n return null;\r\n}\r\n/**\r\n * Intercept the named functions for the target class / object\r\n * @param target - The target object\r\n * @param funcNames - The function names to intercept and call\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n * @param checkPrototype - If the function doesn't exist on the target should it attempt to hook the prototype function\r\n */\r\nexport function InstrumentFuncs(target, funcNames, callbacks, checkPrototype) {\r\n if (checkPrototype === void 0) { checkPrototype = true; }\r\n var hooks = null;\r\n _arrLoop(funcNames, function (funcName) {\r\n var hook = InstrumentFunc(target, funcName, callbacks, checkPrototype);\r\n if (hook) {\r\n if (!hooks) {\r\n hooks = [];\r\n }\r\n hooks[_DYN_PUSH /* @min:%2epush */](hook);\r\n }\r\n });\r\n return hooks;\r\n}\r\n/**\r\n * Add an instrumentation hook to the provided named \"event\" for the target class / object, this doesn't check whether the\r\n * named \"event\" is in fact a function and just assigns the instrumentation hook to the target[evtName]\r\n * @param target - The target object\r\n * @param evtName - The name of the event\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n * @param checkPrototype - If the function doesn't exist on the target should it attempt to hook the prototype function\r\n */\r\nexport function InstrumentEvent(target, evtName, callbacks, checkPrototype) {\r\n if (target && evtName && callbacks) {\r\n var owner = _getOwner(target, evtName, checkPrototype) || target;\r\n if (owner) {\r\n return _createInstrumentHook(owner, evtName, owner[evtName], callbacks);\r\n }\r\n }\r\n return null;\r\n}\r\n//# sourceMappingURL=InstrumentHooks.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { _DYN_DIAG_LOG, _DYN_PUSH } from \"../__DynamicConstants\";\r\nimport { _throwInternal } from \"./DiagnosticLogger\";\r\nimport { dumpObj } from \"./EnvUtils\";\r\nimport { arrForEach } from \"./HelperFuncs\";\r\nexport function createUnloadHandlerContainer() {\r\n var handlers = [];\r\n function _addHandler(handler) {\r\n if (handler) {\r\n handlers[_DYN_PUSH /* @min:%2epush */](handler);\r\n }\r\n }\r\n function _runHandlers(unloadCtx, unloadState) {\r\n arrForEach(handlers, function (handler) {\r\n try {\r\n handler(unloadCtx, unloadState);\r\n }\r\n catch (e) {\r\n _throwInternal(unloadCtx[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 73 /* _eInternalMessageId.PluginException */, \"Unexpected error calling unload handler - \" + dumpObj(e));\r\n }\r\n });\r\n handlers = [];\r\n }\r\n return {\r\n add: _addHandler,\r\n run: _runHandlers\r\n };\r\n}\r\n//# sourceMappingURL=UnloadHandlerContainer.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\"use strict\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { _DYN_CREATE_NEW, _DYN_DIAG_LOG, _DYN_GET_NEXT, _DYN_GET_PROCESS_TEL_CONT0, _DYN_INITIALIZE, _DYN_IS_ASYNC, _DYN_IS_INITIALIZED, _DYN_PROCESS_NEXT, _DYN_PUSH, _DYN_SET_NEXT_PLUGIN, _DYN_TEARDOWN, _DYN_UPDATE, _DYN__DO_TEARDOWN } from \"../__DynamicConstants\";\r\nimport { arrForEach, isArray, isFunction, isNullOrUndefined, proxyFunctionAs, setValue } from \"./HelperFuncs\";\r\nimport { STR_CORE, STR_EXTENSION_CONFIG, STR_PROCESS_TELEMETRY } from \"./InternalConstants\";\r\nimport { createProcessTelemetryContext, createProcessTelemetryUnloadContext, createProcessTelemetryUpdateContext } from \"./ProcessTelemetryContext\";\r\nimport { createUnloadHandlerContainer } from \"./UnloadHandlerContainer\";\r\nvar strGetPlugin = \"getPlugin\";\r\n/**\r\n * BaseTelemetryPlugin provides a basic implementation of the ITelemetryPlugin interface so that plugins\r\n * can avoid implementation the same set of boiler plate code as well as provide a base\r\n * implementation so that new default implementations can be added without breaking all plugins.\r\n */\r\nvar BaseTelemetryPlugin = /** @class */ (function () {\r\n function BaseTelemetryPlugin() {\r\n var _self = this; // Setting _self here as it's used outside of the dynamicProto as well\r\n // NOTE!: DON'T set default values here, instead set them in the _initDefaults() function as it is also called during teardown()\r\n var _isinitialized;\r\n var _rootCtx; // Used as the root context, holding the current config and initialized core\r\n var _nextPlugin; // Used for backward compatibility where plugins don't call the main pipeline\r\n var _unloadHandlerContainer;\r\n var _hooks;\r\n _initDefaults();\r\n dynamicProto(BaseTelemetryPlugin, _self, function (_self) {\r\n _self[_DYN_INITIALIZE /* @min:%2einitialize */] = function (config, core, extensions, pluginChain) {\r\n _setDefaults(config, core, pluginChain);\r\n _isinitialized = true;\r\n };\r\n _self[_DYN_TEARDOWN /* @min:%2eteardown */] = function (unloadCtx, unloadState) {\r\n var _a;\r\n // If this plugin has already been torn down (not operational) or is not initialized (core is not set)\r\n // or the core being used for unload was not the same core used for initialization.\r\n var core = _self[STR_CORE /* @min:%2ecore */];\r\n if (!core || (unloadCtx && core !== unloadCtx[STR_CORE /* @min:%2ecore */]())) {\r\n // Do Nothing as either the plugin is not initialized or was not initialized by the current core\r\n return;\r\n }\r\n var result;\r\n var unloadDone = false;\r\n var theUnloadCtx = unloadCtx || createProcessTelemetryUnloadContext(null, core, _nextPlugin && _nextPlugin[strGetPlugin] ? _nextPlugin[strGetPlugin]() : _nextPlugin);\r\n var theUnloadState = unloadState || (_a = {\r\n reason: 0 /* TelemetryUnloadReason.ManualTeardown */\r\n },\r\n _a[_DYN_IS_ASYNC /* @min:isAsync */] = false,\r\n _a);\r\n function _unloadCallback() {\r\n if (!unloadDone) {\r\n unloadDone = true;\r\n _unloadHandlerContainer.run(theUnloadCtx, unloadState);\r\n var oldHooks = _hooks;\r\n _hooks = [];\r\n // Remove all instrumentation hooks\r\n arrForEach(oldHooks, function (fn) {\r\n fn.rm();\r\n });\r\n if (result === true) {\r\n theUnloadCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](theUnloadState);\r\n }\r\n _initDefaults();\r\n }\r\n }\r\n if (!_self[_DYN__DO_TEARDOWN /* @min:%2e_doTeardown */] || _self[_DYN__DO_TEARDOWN /* @min:%2e_doTeardown */](theUnloadCtx, theUnloadState, _unloadCallback) !== true) {\r\n _unloadCallback();\r\n }\r\n else {\r\n // Tell the caller that we will be calling processNext()\r\n result = true;\r\n }\r\n return result;\r\n };\r\n _self[_DYN_UPDATE /* @min:%2eupdate */] = function (updateCtx, updateState) {\r\n // If this plugin has already been torn down (not operational) or is not initialized (core is not set)\r\n // or the core being used for unload was not the same core used for initialization.\r\n var core = _self[STR_CORE /* @min:%2ecore */];\r\n if (!core || (updateCtx && core !== updateCtx[STR_CORE /* @min:%2ecore */]())) {\r\n // Do Nothing\r\n return;\r\n }\r\n var result;\r\n var updateDone = false;\r\n var theUpdateCtx = updateCtx || createProcessTelemetryUpdateContext(null, core, _nextPlugin && _nextPlugin[strGetPlugin] ? _nextPlugin[strGetPlugin]() : _nextPlugin);\r\n var theUpdateState = updateState || {\r\n reason: 0 /* TelemetryUpdateReason.Unknown */\r\n };\r\n function _updateCallback() {\r\n if (!updateDone) {\r\n updateDone = true;\r\n _setDefaults(theUpdateCtx.getCfg(), theUpdateCtx.core(), theUpdateCtx[_DYN_GET_NEXT /* @min:%2egetNext */]());\r\n }\r\n }\r\n if (!_self._doUpdate || _self._doUpdate(theUpdateCtx, theUpdateState, _updateCallback) !== true) {\r\n _updateCallback();\r\n }\r\n else {\r\n result = true;\r\n }\r\n return result;\r\n };\r\n _self._addHook = function (hooks) {\r\n if (hooks) {\r\n if (isArray(hooks)) {\r\n _hooks = _hooks.concat(hooks);\r\n }\r\n else {\r\n _hooks[_DYN_PUSH /* @min:%2epush */](hooks);\r\n }\r\n }\r\n };\r\n proxyFunctionAs(_self, \"_addUnloadCb\", function () { return _unloadHandlerContainer; }, \"add\");\r\n });\r\n // These are added after the dynamicProto so that are not moved to the prototype\r\n _self[_DYN_DIAG_LOG /* @min:%2ediagLog */] = function (itemCtx) {\r\n return _getTelCtx(itemCtx)[_DYN_DIAG_LOG /* @min:%2ediagLog */]();\r\n };\r\n _self[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */] = function () {\r\n return _isinitialized;\r\n };\r\n _self.setInitialized = function (isInitialized) {\r\n _isinitialized = isInitialized;\r\n };\r\n // _self.getNextPlugin = () => DO NOT IMPLEMENT\r\n // Sub-classes of this base class *should* not be relying on this value and instead\r\n // should use processNext() function. If you require access to the plugin use the\r\n // IProcessTelemetryContext.getNext().getPlugin() while in the pipeline, Note getNext() may return null.\r\n _self[_DYN_SET_NEXT_PLUGIN /* @min:%2esetNextPlugin */] = function (next) {\r\n _nextPlugin = next;\r\n };\r\n _self[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */] = function (env, itemCtx) {\r\n if (itemCtx) {\r\n // Normal core execution sequence\r\n itemCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](env);\r\n }\r\n else if (_nextPlugin && isFunction(_nextPlugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */])) {\r\n // Looks like backward compatibility or out of band processing. And as it looks\r\n // like a ITelemetryPlugin or ITelemetryPluginChain, just call processTelemetry\r\n _nextPlugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */](env, null);\r\n }\r\n };\r\n _self._getTelCtx = _getTelCtx;\r\n function _getTelCtx(currentCtx) {\r\n if (currentCtx === void 0) { currentCtx = null; }\r\n var itemCtx = currentCtx;\r\n if (!itemCtx) {\r\n var rootCtx = _rootCtx || createProcessTelemetryContext(null, {}, _self[STR_CORE /* @min:%2ecore */]);\r\n // tslint:disable-next-line: prefer-conditional-expression\r\n if (_nextPlugin && _nextPlugin[strGetPlugin]) {\r\n // Looks like a chain object\r\n itemCtx = rootCtx[_DYN_CREATE_NEW /* @min:%2ecreateNew */](null, _nextPlugin[strGetPlugin]);\r\n }\r\n else {\r\n itemCtx = rootCtx[_DYN_CREATE_NEW /* @min:%2ecreateNew */](null, _nextPlugin);\r\n }\r\n }\r\n return itemCtx;\r\n }\r\n function _setDefaults(config, core, pluginChain) {\r\n if (config) {\r\n // Make sure the extensionConfig exists\r\n setValue(config, STR_EXTENSION_CONFIG, [], null, isNullOrUndefined);\r\n }\r\n if (!pluginChain && core) {\r\n // Get the first plugin from the core\r\n pluginChain = core[_DYN_GET_PROCESS_TEL_CONT0 /* @min:%2egetProcessTelContext */]()[_DYN_GET_NEXT /* @min:%2egetNext */]();\r\n }\r\n var nextPlugin = _nextPlugin;\r\n if (_nextPlugin && _nextPlugin[strGetPlugin]) {\r\n // If it looks like a proxy/chain then get the plugin\r\n nextPlugin = _nextPlugin[strGetPlugin]();\r\n }\r\n // Support legacy plugins where core was defined as a property\r\n _self[STR_CORE /* @min:%2ecore */] = core;\r\n _rootCtx = createProcessTelemetryContext(pluginChain, config, core, nextPlugin);\r\n }\r\n function _initDefaults() {\r\n _isinitialized = false;\r\n _self[STR_CORE /* @min:%2ecore */] = null;\r\n _rootCtx = null;\r\n _nextPlugin = null;\r\n _hooks = [];\r\n _unloadHandlerContainer = createUnloadHandlerContainer();\r\n }\r\n }\r\n BaseTelemetryPlugin.prototype.initialize = function (config, core, extensions, pluginChain) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Tear down the plugin and remove any hooked value, the plugin should be removed so that it is no longer initialized and\r\n * therefore could be re-initialized after being torn down. The plugin should ensure that once this has been called any further\r\n * processTelemetry calls are ignored and it just calls the processNext() with the provided context.\r\n * @param unloadCtx - This is the context that should be used during unloading.\r\n * @param unloadState - The details / state of the unload process, it holds details like whether it should be unloaded synchronously or asynchronously and the reason for the unload.\r\n * @returns boolean - true if the plugin has or will call processNext(), this for backward compatibility as previously teardown was synchronous and returned nothing.\r\n */\r\n BaseTelemetryPlugin.prototype.teardown = function (unloadCtx, unloadState) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return false;\r\n };\r\n /**\r\n * The the plugin should re-evaluate configuration and update any cached configuration settings.\r\n * @param updateCtx - This is the context that should be used during updating.\r\n * @param updateState - The details / state of the update process, it holds details like the current and previous configuration.\r\n * @returns boolean - true if the plugin has or will call updateCtx.processNext(), this allows the plugin to perform any asynchronous operations.\r\n */\r\n BaseTelemetryPlugin.prototype.update = function (updateCtx, updateState) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Add an unload handler that will be called when the SDK is being unloaded\r\n * @param handler - the handler\r\n */\r\n BaseTelemetryPlugin.prototype._addUnloadCb = function (handler) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Add this hook so that it is automatically removed during unloading\r\n * @param hooks - The single hook or an array of IInstrumentHook objects\r\n */\r\n BaseTelemetryPlugin.prototype._addHook = function (hooks) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n return BaseTelemetryPlugin;\r\n}());\r\nexport { BaseTelemetryPlugin };\r\n//# sourceMappingURL=BaseTelemetryPlugin.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n// @skip-file-minify\r\n// ##############################################################\r\n// AUTO GENERATED FILE: This file is Auto Generated during build.\r\n// ##############################################################\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\nexport var _DYN_TO_STRING = \"toString\"; // Count: 4\r\nexport var _DYN_DISABLE_EXCEPTION_TR0 = \"disableExceptionTracking\"; // Count: 3\r\nexport var _DYN_AUTO_TRACK_PAGE_VISI1 = \"autoTrackPageVisitTime\"; // Count: 4\r\nexport var _DYN_OVERRIDE_PAGE_VIEW_D2 = \"overridePageViewDuration\"; // Count: 3\r\nexport var _DYN_ENABLE_UNHANDLED_PRO3 = \"enableUnhandledPromiseRejectionTracking\"; // Count: 3\r\nexport var _DYN_SAMPLING_PERCENTAGE = \"samplingPercentage\"; // Count: 4\r\nexport var _DYN_IS_STORAGE_USE_DISAB4 = \"isStorageUseDisabled\"; // Count: 4\r\nexport var _DYN_IS_BROWSER_LINK_TRAC5 = \"isBrowserLinkTrackingEnabled\"; // Count: 4\r\nexport var _DYN_ENABLE_AUTO_ROUTE_TR6 = \"enableAutoRouteTracking\"; // Count: 3\r\nexport var _DYN_NAME_PREFIX = \"namePrefix\"; // Count: 3\r\nexport var _DYN_DISABLE_FLUSH_ON_BEF7 = \"disableFlushOnBeforeUnload\"; // Count: 3\r\nexport var _DYN_DISABLE_FLUSH_ON_UNL8 = \"disableFlushOnUnload\"; // Count: 2\r\nexport var _DYN_CORE = \"core\"; // Count: 7\r\nexport var _DYN_DATA_TYPE = \"dataType\"; // Count: 8\r\nexport var _DYN_ENVELOPE_TYPE = \"envelopeType\"; // Count: 7\r\nexport var _DYN_DIAG_LOG = \"diagLog\"; // Count: 13\r\nexport var _DYN_TRACK = \"track\"; // Count: 7\r\nexport var _DYN_TRACK_PAGE_VIEW = \"trackPageView\"; // Count: 4\r\nexport var _DYN_TRACK_PREVIOUS_PAGE_9 = \"trackPreviousPageVisit\"; // Count: 3\r\nexport var _DYN_SEND_PAGE_VIEW_INTER10 = \"sendPageViewInternal\"; // Count: 7\r\nexport var _DYN_SEND_PAGE_VIEW_PERFO11 = \"sendPageViewPerformanceInternal\"; // Count: 3\r\nexport var _DYN_POPULATE_PAGE_VIEW_P12 = \"populatePageViewPerformanceEvent\"; // Count: 3\r\nexport var _DYN_HREF = \"href\"; // Count: 6\r\nexport var _DYN_SEND_EXCEPTION_INTER13 = \"sendExceptionInternal\"; // Count: 2\r\nexport var _DYN_EXCEPTION = \"exception\"; // Count: 3\r\nexport var _DYN_ERROR = \"error\"; // Count: 5\r\nexport var _DYN__ONERROR = \"_onerror\"; // Count: 3\r\nexport var _DYN_ERROR_SRC = \"errorSrc\"; // Count: 3\r\nexport var _DYN_LINE_NUMBER = \"lineNumber\"; // Count: 5\r\nexport var _DYN_COLUMN_NUMBER = \"columnNumber\"; // Count: 5\r\nexport var _DYN_MESSAGE = \"message\"; // Count: 4\r\nexport var _DYN__CREATE_AUTO_EXCEPTI14 = \"CreateAutoException\"; // Count: 3\r\nexport var _DYN_ADD_TELEMETRY_INITIA15 = \"addTelemetryInitializer\"; // Count: 4\r\nexport var _DYN_DURATION = \"duration\"; // Count: 10\r\nexport var _DYN_LENGTH = \"length\"; // Count: 5\r\nexport var _DYN_IS_PERFORMANCE_TIMIN16 = \"isPerformanceTimingSupported\"; // Count: 2\r\nexport var _DYN_GET_PERFORMANCE_TIMI17 = \"getPerformanceTiming\"; // Count: 2\r\nexport var _DYN_NAVIGATION_START = \"navigationStart\"; // Count: 4\r\nexport var _DYN_SHOULD_COLLECT_DURAT18 = \"shouldCollectDuration\"; // Count: 3\r\nexport var _DYN_IS_PERFORMANCE_TIMIN19 = \"isPerformanceTimingDataReady\"; // Count: 2\r\nexport var _DYN_GET_ENTRIES_BY_TYPE = \"getEntriesByType\"; // Count: 3\r\nexport var _DYN_RESPONSE_START = \"responseStart\"; // Count: 5\r\nexport var _DYN_REQUEST_START = \"requestStart\"; // Count: 3\r\nexport var _DYN_LOAD_EVENT_END = \"loadEventEnd\"; // Count: 4\r\nexport var _DYN_RESPONSE_END = \"responseEnd\"; // Count: 5\r\nexport var _DYN_CONNECT_END = \"connectEnd\"; // Count: 4\r\nexport var _DYN_PAGE_VISIT_START_TIM20 = \"pageVisitStartTime\"; // Count: 2\r\n//# sourceMappingURL=__DynamicConstants.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { dateTimeUtilsDuration } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal, arrForEach, dumpObj, getDocument, getExceptionName, getLocation, isNullOrUndefined } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_DURATION, _DYN_GET_PERFORMANCE_TIMI17, _DYN_HREF, _DYN_IS_PERFORMANCE_TIMIN16, _DYN_IS_PERFORMANCE_TIMIN19, _DYN_LENGTH, _DYN_NAVIGATION_START, _DYN_POPULATE_PAGE_VIEW_P12, _DYN_SEND_PAGE_VIEW_INTER10, _DYN_SEND_PAGE_VIEW_PERFO11, _DYN_SHOULD_COLLECT_DURAT18, _DYN_TRACK_PAGE_VIEW } from \"../../__DynamicConstants\";\r\n/**\r\n * Class encapsulates sending page views and page view performance telemetry.\r\n */\r\nvar PageViewManager = /** @class */ (function () {\r\n function PageViewManager(appInsights, overridePageViewDuration, core, pageViewPerformanceManager) {\r\n dynamicProto(PageViewManager, this, function (_self) {\r\n var intervalHandle = null;\r\n var itemQueue = [];\r\n var pageViewPerformanceSent = false;\r\n var _logger;\r\n if (core) {\r\n _logger = core.logger;\r\n }\r\n function _flushChannels(isAsync) {\r\n if (core) {\r\n core.flush(isAsync);\r\n }\r\n }\r\n function _addQueue(cb) {\r\n itemQueue.push(cb);\r\n if (!intervalHandle) {\r\n intervalHandle = setInterval((function () {\r\n var allItems = itemQueue.slice(0);\r\n var doFlush = false;\r\n itemQueue = [];\r\n arrForEach(allItems, function (item) {\r\n if (!item()) {\r\n // Not processed so rescheduled\r\n itemQueue.push(item);\r\n }\r\n else {\r\n doFlush = true;\r\n }\r\n });\r\n if (itemQueue[_DYN_LENGTH /* @min:%2elength */] === 0) {\r\n clearInterval(intervalHandle);\r\n intervalHandle = null;\r\n }\r\n if (doFlush) {\r\n // We process at least one item so flush the queue\r\n _flushChannels(true);\r\n }\r\n }), 100);\r\n }\r\n }\r\n _self[_DYN_TRACK_PAGE_VIEW /* @min:%2etrackPageView */] = function (pageView, customProperties) {\r\n var name = pageView.name;\r\n if (isNullOrUndefined(name) || typeof name !== \"string\") {\r\n var doc = getDocument();\r\n name = pageView.name = doc && doc.title || \"\";\r\n }\r\n var uri = pageView.uri;\r\n if (isNullOrUndefined(uri) || typeof uri !== \"string\") {\r\n var location_1 = getLocation();\r\n uri = pageView.uri = location_1 && location_1[_DYN_HREF /* @min:%2ehref */] || \"\";\r\n }\r\n // case 1a. if performance timing is not supported by the browser, send the page view telemetry with the duration provided by the user. If the user\r\n // do not provide the duration, set duration to undefined\r\n // Also this is case 4\r\n if (!pageViewPerformanceManager[_DYN_IS_PERFORMANCE_TIMIN16 /* @min:%2eisPerformanceTimingSupported */]()) {\r\n appInsights[_DYN_SEND_PAGE_VIEW_INTER10 /* @min:%2esendPageViewInternal */](pageView, customProperties);\r\n _flushChannels(true);\r\n // no navigation timing (IE 8, iOS Safari 8.4, Opera Mini 8 - see http://caniuse.com/#feat=nav-timing)\r\n _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 25 /* _eInternalMessageId.NavigationTimingNotSupported */, \"trackPageView: navigation timing API used for calculation of page duration is not supported in this browser. This page view will be collected without duration and timing info.\");\r\n return;\r\n }\r\n var pageViewSent = false;\r\n var customDuration;\r\n // if the performance timing is supported by the browser, calculate the custom duration\r\n var start = pageViewPerformanceManager[_DYN_GET_PERFORMANCE_TIMI17 /* @min:%2egetPerformanceTiming */]()[_DYN_NAVIGATION_START /* @min:%2enavigationStart */];\r\n if (start > 0) {\r\n customDuration = dateTimeUtilsDuration(start, +new Date);\r\n if (!pageViewPerformanceManager[_DYN_SHOULD_COLLECT_DURAT18 /* @min:%2eshouldCollectDuration */](customDuration)) {\r\n customDuration = undefined;\r\n }\r\n }\r\n // if the user has provided duration, send a page view telemetry with the provided duration. Otherwise, if\r\n // overridePageViewDuration is set to true, send a page view telemetry with the custom duration calculated earlier\r\n var duration;\r\n if (!isNullOrUndefined(customProperties) &&\r\n !isNullOrUndefined(customProperties[_DYN_DURATION /* @min:%2eduration */])) {\r\n duration = customProperties[_DYN_DURATION /* @min:%2eduration */];\r\n }\r\n if (overridePageViewDuration || !isNaN(duration)) {\r\n if (isNaN(duration)) {\r\n // case 3\r\n if (!customProperties) {\r\n customProperties = {};\r\n }\r\n customProperties[_DYN_DURATION /* @min:%2eduration */] = customDuration;\r\n }\r\n // case 2\r\n appInsights[_DYN_SEND_PAGE_VIEW_INTER10 /* @min:%2esendPageViewInternal */](pageView, customProperties);\r\n _flushChannels(true);\r\n pageViewSent = true;\r\n }\r\n // now try to send the page view performance telemetry\r\n var maxDurationLimit = 60000;\r\n if (!customProperties) {\r\n customProperties = {};\r\n }\r\n // Queue the event for processing\r\n _addQueue(function () {\r\n var processed = false;\r\n try {\r\n if (pageViewPerformanceManager[_DYN_IS_PERFORMANCE_TIMIN19 /* @min:%2eisPerformanceTimingDataReady */]()) {\r\n processed = true;\r\n var pageViewPerformance = {\r\n name: name,\r\n uri: uri\r\n };\r\n pageViewPerformanceManager[_DYN_POPULATE_PAGE_VIEW_P12 /* @min:%2epopulatePageViewPerformanceEvent */](pageViewPerformance);\r\n if (!pageViewPerformance.isValid && !pageViewSent) {\r\n // If navigation timing gives invalid numbers, then go back to \"override page view duration\" mode.\r\n // That's the best value we can get that makes sense.\r\n customProperties[_DYN_DURATION /* @min:%2eduration */] = customDuration;\r\n appInsights[_DYN_SEND_PAGE_VIEW_INTER10 /* @min:%2esendPageViewInternal */](pageView, customProperties);\r\n }\r\n else {\r\n if (!pageViewSent) {\r\n customProperties[_DYN_DURATION /* @min:%2eduration */] = pageViewPerformance.durationMs;\r\n appInsights[_DYN_SEND_PAGE_VIEW_INTER10 /* @min:%2esendPageViewInternal */](pageView, customProperties);\r\n }\r\n if (!pageViewPerformanceSent) {\r\n appInsights[_DYN_SEND_PAGE_VIEW_PERFO11 /* @min:%2esendPageViewPerformanceInternal */](pageViewPerformance, customProperties);\r\n pageViewPerformanceSent = true;\r\n }\r\n }\r\n }\r\n else if (start > 0 && dateTimeUtilsDuration(start, +new Date) > maxDurationLimit) {\r\n // if performance timings are not ready but we exceeded the maximum duration limit, just log a page view telemetry\r\n // with the maximum duration limit. Otherwise, keep waiting until performance timings are ready\r\n processed = true;\r\n if (!pageViewSent) {\r\n customProperties[_DYN_DURATION /* @min:%2eduration */] = maxDurationLimit;\r\n appInsights[_DYN_SEND_PAGE_VIEW_INTER10 /* @min:%2esendPageViewInternal */](pageView, customProperties);\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _throwInternal(_logger, 1 /* eLoggingSeverity.CRITICAL */, 38 /* _eInternalMessageId.TrackPVFailedCalc */, \"trackPageView failed on page load calculation: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n return processed;\r\n });\r\n };\r\n _self.teardown = function (unloadCtx, unloadState) {\r\n if (intervalHandle) {\r\n clearInterval(intervalHandle);\r\n intervalHandle = null;\r\n var allItems = itemQueue.slice(0);\r\n var doFlush_1 = false;\r\n itemQueue = [];\r\n arrForEach(allItems, function (item) {\r\n if (item()) {\r\n doFlush_1 = true;\r\n }\r\n });\r\n }\r\n };\r\n });\r\n }\r\n /**\r\n * Currently supported cases:\r\n * 1) (default case) track page view called with default parameters, overridePageViewDuration = false. Page view is sent with page view performance when navigation timing data is available.\r\n * a. If navigation timing is not supported then page view is sent right away with undefined duration. Page view performance is not sent.\r\n * 2) overridePageViewDuration = true, custom duration provided. Custom duration is used, page view sends right away.\r\n * 3) overridePageViewDuration = true, custom duration NOT provided. Page view is sent right away, duration is time spent from page load till now (or undefined if navigation timing is not supported).\r\n * 4) overridePageViewDuration = false, custom duration is provided. Page view is sent right away with custom duration.\r\n *\r\n * In all cases page view performance is sent once (only for the 1st call of trackPageView), or not sent if navigation timing is not supported.\r\n */\r\n PageViewManager.prototype.trackPageView = function (pageView, customProperties) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n PageViewManager.prototype.teardown = function (unloadCtx, unloadState) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n return PageViewManager;\r\n}());\r\nexport { PageViewManager };\r\n//# sourceMappingURL=PageViewManager.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { dateTimeUtilsDuration, msToTimeSpan } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal, getNavigator, getPerformance, safeGetLogger } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_CONNECT_END, _DYN_DURATION, _DYN_GET_ENTRIES_BY_TYPE, _DYN_GET_PERFORMANCE_TIMI17, _DYN_IS_PERFORMANCE_TIMIN16, _DYN_IS_PERFORMANCE_TIMIN19, _DYN_LENGTH, _DYN_LOAD_EVENT_END, _DYN_NAVIGATION_START, _DYN_POPULATE_PAGE_VIEW_P12, _DYN_REQUEST_START, _DYN_RESPONSE_END, _DYN_RESPONSE_START, _DYN_SHOULD_COLLECT_DURAT18 } from \"../../__DynamicConstants\";\r\nvar MAX_DURATION_ALLOWED = 3600000; // 1h\r\nvar botAgentNames = [\"googlebot\", \"adsbot-google\", \"apis-google\", \"mediapartners-google\"];\r\nfunction _isPerformanceTimingSupported() {\r\n var perf = getPerformance();\r\n return perf && !!perf.timing;\r\n}\r\nfunction _isPerformanceNavigationTimingSupported() {\r\n var perf = getPerformance();\r\n return perf && perf.getEntriesByType && perf.getEntriesByType(\"navigation\")[_DYN_LENGTH /* @min:%2elength */] > 0;\r\n}\r\nfunction _isPerformanceTimingDataReady() {\r\n var perf = getPerformance();\r\n var timing = perf ? perf.timing : 0;\r\n return timing\r\n && timing.domainLookupStart > 0\r\n && timing[_DYN_NAVIGATION_START /* @min:%2enavigationStart */] > 0\r\n && timing[_DYN_RESPONSE_START /* @min:%2eresponseStart */] > 0\r\n && timing[_DYN_REQUEST_START /* @min:%2erequestStart */] > 0\r\n && timing[_DYN_LOAD_EVENT_END /* @min:%2eloadEventEnd */] > 0\r\n && timing[_DYN_RESPONSE_END /* @min:%2eresponseEnd */] > 0\r\n && timing[_DYN_CONNECT_END /* @min:%2econnectEnd */] > 0\r\n && timing.domLoading > 0;\r\n}\r\nfunction _getPerformanceTiming() {\r\n if (_isPerformanceTimingSupported()) {\r\n return getPerformance().timing;\r\n }\r\n return null;\r\n}\r\nfunction _getPerformanceNavigationTiming() {\r\n if (_isPerformanceNavigationTimingSupported()) {\r\n return getPerformance()[_DYN_GET_ENTRIES_BY_TYPE /* @min:%2egetEntriesByType */](\"navigation\")[0];\r\n }\r\n return null;\r\n}\r\n/**\r\n* This method tells if given durations should be excluded from collection.\r\n*/\r\nfunction _shouldCollectDuration() {\r\n var durations = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n durations[_i] = arguments[_i];\r\n }\r\n var _navigator = getNavigator() || {};\r\n // a full list of Google crawlers user agent strings - https://support.google.com/webmasters/answer/1061943?hl=en\r\n var userAgent = _navigator.userAgent;\r\n var isGoogleBot = false;\r\n if (userAgent) {\r\n for (var i = 0; i < botAgentNames[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n isGoogleBot = isGoogleBot || userAgent.toLowerCase().indexOf(botAgentNames[i]) !== -1;\r\n }\r\n }\r\n if (isGoogleBot) {\r\n // Don't report durations for GoogleBot, it is returning invalid values in performance.timing API.\r\n return false;\r\n }\r\n else {\r\n // for other page views, don't report if it's outside of a reasonable range\r\n for (var i = 0; i < durations[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n if (durations[i] < 0 || durations[i] >= MAX_DURATION_ALLOWED) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n}\r\n/**\r\n * Class encapsulates sending page view performance telemetry.\r\n */\r\nvar PageViewPerformanceManager = /** @class */ (function () {\r\n function PageViewPerformanceManager(core) {\r\n var _this = this;\r\n var _logger = safeGetLogger(core);\r\n dynamicProto(PageViewPerformanceManager, this, function (_self) {\r\n _self[_DYN_POPULATE_PAGE_VIEW_P12 /* @min:%2epopulatePageViewPerformanceEvent */] = function (pageViewPerformance) {\r\n pageViewPerformance.isValid = false;\r\n /*\r\n * http://www.w3.org/TR/navigation-timing/#processing-model\r\n * |-navigationStart\r\n * | |-connectEnd\r\n * | ||-requestStart\r\n * | || |-responseStart\r\n * | || | |-responseEnd\r\n * | || | |\r\n * | || | | |-loadEventEnd\r\n * |---network---||---request---|---response---|---dom---|\r\n * |--------------------------total----------------------|\r\n *\r\n * total = The difference between the load event of the current document is completed and the first recorded timestamp of the performance entry : https://developer.mozilla.org/en-US/docs/Web/Performance/Navigation_and_resource_timings#duration\r\n * network = Redirect time + App Cache + DNS lookup time + TCP connection time\r\n * request = Request time : https://developer.mozilla.org/en-US/docs/Web/Performance/Navigation_and_resource_timings#request_time\r\n * response = Response time\r\n * dom = Document load time : https://html.spec.whatwg.org/multipage/dom.html#document-load-timing-info\r\n * = Document processing time : https://developers.google.com/web/fundamentals/performance/navigation-and-resource-timing/#document_processing\r\n * + Loading time : https://developers.google.com/web/fundamentals/performance/navigation-and-resource-timing/#loading\r\n */\r\n var navigationTiming = _getPerformanceNavigationTiming();\r\n var timing = _getPerformanceTiming();\r\n var total = 0;\r\n var network = 0;\r\n var request = 0;\r\n var response = 0;\r\n var dom = 0;\r\n if (navigationTiming || timing) {\r\n if (navigationTiming) {\r\n total = navigationTiming[_DYN_DURATION /* @min:%2eduration */];\r\n /**\r\n * support both cases:\r\n * - startTime is always zero: https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigationTiming\r\n * - for older browsers where the startTime is not zero\r\n */\r\n network = navigationTiming.startTime === 0 ? navigationTiming[_DYN_CONNECT_END /* @min:%2econnectEnd */] : dateTimeUtilsDuration(navigationTiming.startTime, navigationTiming[_DYN_CONNECT_END /* @min:%2econnectEnd */]);\r\n request = dateTimeUtilsDuration(navigationTiming.requestStart, navigationTiming[_DYN_RESPONSE_START /* @min:%2eresponseStart */]);\r\n response = dateTimeUtilsDuration(navigationTiming[_DYN_RESPONSE_START /* @min:%2eresponseStart */], navigationTiming[_DYN_RESPONSE_END /* @min:%2eresponseEnd */]);\r\n dom = dateTimeUtilsDuration(navigationTiming.responseEnd, navigationTiming[_DYN_LOAD_EVENT_END /* @min:%2eloadEventEnd */]);\r\n }\r\n else {\r\n total = dateTimeUtilsDuration(timing[_DYN_NAVIGATION_START /* @min:%2enavigationStart */], timing[_DYN_LOAD_EVENT_END /* @min:%2eloadEventEnd */]);\r\n network = dateTimeUtilsDuration(timing[_DYN_NAVIGATION_START /* @min:%2enavigationStart */], timing[_DYN_CONNECT_END /* @min:%2econnectEnd */]);\r\n request = dateTimeUtilsDuration(timing.requestStart, timing[_DYN_RESPONSE_START /* @min:%2eresponseStart */]);\r\n response = dateTimeUtilsDuration(timing[_DYN_RESPONSE_START /* @min:%2eresponseStart */], timing[_DYN_RESPONSE_END /* @min:%2eresponseEnd */]);\r\n dom = dateTimeUtilsDuration(timing.responseEnd, timing[_DYN_LOAD_EVENT_END /* @min:%2eloadEventEnd */]);\r\n }\r\n if (total === 0) {\r\n _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 10 /* _eInternalMessageId.ErrorPVCalc */, \"error calculating page view performance.\", { total: total, network: network, request: request, response: response, dom: dom });\r\n }\r\n else if (!_this[_DYN_SHOULD_COLLECT_DURAT18 /* @min:%2eshouldCollectDuration */](total, network, request, response, dom)) {\r\n _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 45 /* _eInternalMessageId.InvalidDurationValue */, \"Invalid page load duration value. Browser perf data won't be sent.\", { total: total, network: network, request: request, response: response, dom: dom });\r\n }\r\n else if (total < Math.floor(network) + Math.floor(request) + Math.floor(response) + Math.floor(dom)) {\r\n // some browsers may report individual components incorrectly so that the sum of the parts will be bigger than total PLT\r\n // in this case, don't report client performance from this page\r\n _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 8 /* _eInternalMessageId.ClientPerformanceMathError */, \"client performance math error.\", { total: total, network: network, request: request, response: response, dom: dom });\r\n }\r\n else {\r\n pageViewPerformance.durationMs = total;\r\n // // convert to timespans\r\n pageViewPerformance.perfTotal = pageViewPerformance[_DYN_DURATION /* @min:%2eduration */] = msToTimeSpan(total);\r\n pageViewPerformance.networkConnect = msToTimeSpan(network);\r\n pageViewPerformance.sentRequest = msToTimeSpan(request);\r\n pageViewPerformance.receivedResponse = msToTimeSpan(response);\r\n pageViewPerformance.domProcessing = msToTimeSpan(dom);\r\n pageViewPerformance.isValid = true;\r\n }\r\n }\r\n };\r\n _self[_DYN_GET_PERFORMANCE_TIMI17 /* @min:%2egetPerformanceTiming */] = _getPerformanceTiming;\r\n _self[_DYN_IS_PERFORMANCE_TIMIN16 /* @min:%2eisPerformanceTimingSupported */] = _isPerformanceTimingSupported;\r\n _self[_DYN_IS_PERFORMANCE_TIMIN19 /* @min:%2eisPerformanceTimingDataReady */] = _isPerformanceTimingDataReady;\r\n _self[_DYN_SHOULD_COLLECT_DURAT18 /* @min:%2eshouldCollectDuration */] = _shouldCollectDuration;\r\n });\r\n }\r\n PageViewPerformanceManager.prototype.populatePageViewPerformanceEvent = function (pageViewPerformance) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n PageViewPerformanceManager.prototype.getPerformanceTiming = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n /**\r\n * Returns true is window performance timing API is supported, false otherwise.\r\n */\r\n PageViewPerformanceManager.prototype.isPerformanceTimingSupported = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return true;\r\n };\r\n /**\r\n * As page loads different parts of performance timing numbers get set. When all of them are set we can report it.\r\n * Returns true if ready, false otherwise.\r\n */\r\n PageViewPerformanceManager.prototype.isPerformanceTimingDataReady = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return true;\r\n };\r\n /**\r\n * This method tells if given durations should be excluded from collection.\r\n */\r\n PageViewPerformanceManager.prototype.shouldCollectDuration = function () {\r\n var durations = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n durations[_i] = arguments[_i];\r\n }\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return true;\r\n };\r\n return PageViewPerformanceManager;\r\n}());\r\nexport { PageViewPerformanceManager };\r\n//# sourceMappingURL=PageViewPerformanceManager.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { utlCanUseSessionStorage, utlGetSessionStorage, utlRemoveSessionStorage, utlSetSessionStorage } from \"@microsoft/applicationinsights-common\";\r\nimport { _warnToConsole, dateNow, dumpObj, getJSON, hasJSON, objDefineAccessors, throwError } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_PAGE_VISIT_START_TIM20, _DYN_TRACK_PREVIOUS_PAGE_9 } from \"../../__DynamicConstants\";\r\n/**\r\n * Used to track page visit durations\r\n */\r\nvar PageVisitTimeManager = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of PageVisitTimeManager\r\n * @param pageVisitTimeTrackingHandler Delegate that will be called to send telemetry data to AI (when trackPreviousPageVisit is called)\r\n * @returns {}\r\n */\r\n function PageVisitTimeManager(logger, pageVisitTimeTrackingHandler) {\r\n var prevPageVisitDataKeyName = \"prevPageVisitData\";\r\n dynamicProto(PageVisitTimeManager, this, function (_self) {\r\n _self[_DYN_TRACK_PREVIOUS_PAGE_9 /* @min:%2etrackPreviousPageVisit */] = function (currentPageName, currentPageUrl) {\r\n try {\r\n // Restart timer for new page view\r\n var prevPageVisitTimeData = restartPageVisitTimer(currentPageName, currentPageUrl);\r\n // If there was a page already being timed, track the visit time for it now.\r\n if (prevPageVisitTimeData) {\r\n pageVisitTimeTrackingHandler(prevPageVisitTimeData.pageName, prevPageVisitTimeData.pageUrl, prevPageVisitTimeData.pageVisitTime);\r\n }\r\n }\r\n catch (e) {\r\n _warnToConsole(logger, \"Auto track page visit time failed, metric will not be collected: \" + dumpObj(e));\r\n }\r\n };\r\n /**\r\n * Stops timing of current page (if exists) and starts timing for duration of visit to pageName\r\n * @param pageName Name of page to begin timing visit duration\r\n * @returns {PageVisitData} Page visit data (including duration) of pageName from last call to start or restart, if exists. Null if not.\r\n */\r\n function restartPageVisitTimer(pageName, pageUrl) {\r\n var prevPageVisitData = null;\r\n try {\r\n prevPageVisitData = stopPageVisitTimer();\r\n startPageVisitTimer(pageName, pageUrl);\r\n }\r\n catch (e) {\r\n _warnToConsole(logger, \"Call to restart failed: \" + dumpObj(e));\r\n prevPageVisitData = null;\r\n }\r\n return prevPageVisitData;\r\n }\r\n /**\r\n * Starts timing visit duration of pageName\r\n * @param pageName\r\n * @returns {}\r\n */\r\n function startPageVisitTimer(pageName, pageUrl) {\r\n try {\r\n if (utlCanUseSessionStorage()) {\r\n if (utlGetSessionStorage(logger, prevPageVisitDataKeyName) != null) {\r\n throwError(\"Cannot call startPageVisit consecutively without first calling stopPageVisit\");\r\n }\r\n var currPageVisitData = new PageVisitData(pageName, pageUrl);\r\n var currPageVisitDataStr = getJSON().stringify(currPageVisitData);\r\n utlSetSessionStorage(logger, prevPageVisitDataKeyName, currPageVisitDataStr);\r\n }\r\n }\r\n catch (e) {\r\n // TODO: Remove this catch in next phase, since if start is called twice in a row the exception needs to be propagated out\r\n _warnToConsole(logger, \"Call to start failed: \" + dumpObj(e));\r\n }\r\n }\r\n /**\r\n * Stops timing of current page, if exists.\r\n * @returns {PageVisitData} Page visit data (including duration) of pageName from call to start, if exists. Null if not.\r\n */\r\n function stopPageVisitTimer() {\r\n var prevPageVisitData = null;\r\n try {\r\n if (utlCanUseSessionStorage()) {\r\n // Define end time of page's visit\r\n var pageVisitEndTime = dateNow();\r\n // Try to retrieve page name and start time from session storage\r\n var pageVisitDataJsonStr = utlGetSessionStorage(logger, prevPageVisitDataKeyName);\r\n if (pageVisitDataJsonStr && hasJSON()) {\r\n // if previous page data exists, set end time of visit\r\n prevPageVisitData = getJSON().parse(pageVisitDataJsonStr);\r\n prevPageVisitData.pageVisitTime = pageVisitEndTime - prevPageVisitData[_DYN_PAGE_VISIT_START_TIM20 /* @min:%2epageVisitStartTime */];\r\n // Remove data from storage since we already used it\r\n utlRemoveSessionStorage(logger, prevPageVisitDataKeyName);\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _warnToConsole(logger, \"Stop page visit timer failed: \" + dumpObj(e));\r\n prevPageVisitData = null;\r\n }\r\n return prevPageVisitData;\r\n }\r\n // For backward compatibility\r\n objDefineAccessors(_self, \"_logger\", function () { return logger; });\r\n objDefineAccessors(_self, \"pageVisitTimeTrackingHandler\", function () { return pageVisitTimeTrackingHandler; });\r\n });\r\n }\r\n /**\r\n * Tracks the previous page visit time telemetry (if exists) and starts timing of new page visit time\r\n * @param currentPageName Name of page to begin timing for visit duration\r\n * @param currentPageUrl Url of page to begin timing for visit duration\r\n */\r\n PageVisitTimeManager.prototype.trackPreviousPageVisit = function (currentPageName, currentPageUrl) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n return PageVisitTimeManager;\r\n}());\r\nexport { PageVisitTimeManager };\r\nvar PageVisitData = /** @class */ (function () {\r\n function PageVisitData(pageName, pageUrl) {\r\n this[_DYN_PAGE_VISIT_START_TIM20 /* @min:%2epageVisitStartTime */] = dateNow();\r\n this.pageName = pageName;\r\n this.pageUrl = pageUrl;\r\n }\r\n return PageVisitData;\r\n}());\r\nexport { PageVisitData };\r\n//# sourceMappingURL=PageVisitTimeManager.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { dateTimeUtilsDuration } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal } from \"@microsoft/applicationinsights-core-js\";\r\n/**\r\n * Used to record timed events and page views.\r\n */\r\nvar Timing = /** @class */ (function () {\r\n function Timing(logger, name) {\r\n var _self = this;\r\n var _events = {};\r\n _self.start = function (name) {\r\n if (typeof _events[name] !== \"undefined\") {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 62 /* _eInternalMessageId.StartCalledMoreThanOnce */, \"start was called more than once for this event without calling stop.\", { name: name, key: name }, true);\r\n }\r\n _events[name] = +new Date;\r\n };\r\n _self.stop = function (name, url, properties, measurements) {\r\n var start = _events[name];\r\n if (isNaN(start)) {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 63 /* _eInternalMessageId.StopCalledWithoutStart */, \"stop was called without a corresponding start.\", { name: name, key: name }, true);\r\n }\r\n else {\r\n var end = +new Date;\r\n var duration = dateTimeUtilsDuration(start, end);\r\n _self.action(name, url, duration, properties, measurements);\r\n }\r\n delete _events[name];\r\n _events[name] = undefined;\r\n };\r\n }\r\n return Timing;\r\n}());\r\nexport { Timing };\r\n//# sourceMappingURL=Timing.js.map","/**\r\n* ApplicationInsights.ts\r\n* @copyright Microsoft 2018\r\n*/\r\nimport { __assign, __extends } from \"tslib\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { AnalyticsPluginIdentifier, Event as EventTelemetry, Exception, Metric, PageView, PageViewPerformance, PropertiesPluginIdentifier, RemoteDependencyData, Trace, createDistributedTraceContextFromTrace, createDomEvent, createTelemetryItem, dataSanitizeString, isCrossOriginError, strNotSpecified, stringToBoolOrDefault, utlDisableStorage, utlEnableStorage } from \"@microsoft/applicationinsights-common\";\r\nimport { BaseTelemetryPlugin, InstrumentEvent, arrForEach, createProcessTelemetryContext, createUniqueNamespace, dumpObj, eventOff, eventOn, generateW3CId, getDocument, getExceptionName, getHistory, getLocation, getWindow, hasHistory, hasWindow, isFunction, isNullOrUndefined, isString, isUndefined, mergeEvtNamespace, objDefineAccessors, objForEachKey, safeGetCookieMgr, strUndefined, throwError } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_ADD_TELEMETRY_INITIA15, _DYN_AUTO_TRACK_PAGE_VISI1, _DYN_COLUMN_NUMBER, _DYN_CORE, _DYN_DATA_TYPE, _DYN_DIAG_LOG, _DYN_DISABLE_EXCEPTION_TR0, _DYN_DISABLE_FLUSH_ON_BEF7, _DYN_ENABLE_AUTO_ROUTE_TR6, _DYN_ENABLE_UNHANDLED_PRO3, _DYN_ENVELOPE_TYPE, _DYN_ERROR, _DYN_ERROR_SRC, _DYN_EXCEPTION, _DYN_HREF, _DYN_IS_BROWSER_LINK_TRAC5, _DYN_IS_STORAGE_USE_DISAB4, _DYN_LENGTH, _DYN_LINE_NUMBER, _DYN_MESSAGE, _DYN_NAME_PREFIX, _DYN_OVERRIDE_PAGE_VIEW_D2, _DYN_POPULATE_PAGE_VIEW_P12, _DYN_SAMPLING_PERCENTAGE, _DYN_SEND_EXCEPTION_INTER13, _DYN_SEND_PAGE_VIEW_INTER10, _DYN_SEND_PAGE_VIEW_PERFO11, _DYN_TO_STRING, _DYN_TRACK, _DYN_TRACK_PAGE_VIEW, _DYN_TRACK_PREVIOUS_PAGE_9, _DYN__CREATE_AUTO_EXCEPTI14, _DYN__ONERROR } from \"../__DynamicConstants\";\r\nimport { PageViewManager } from \"./Telemetry/PageViewManager\";\r\nimport { PageViewPerformanceManager } from \"./Telemetry/PageViewPerformanceManager\";\r\nimport { PageVisitTimeManager } from \"./Telemetry/PageVisitTimeManager\";\r\nimport { Timing } from \"./Timing\";\r\nvar strEvent = \"event\";\r\nfunction _dispatchEvent(target, evnt) {\r\n if (target && target.dispatchEvent && evnt) {\r\n target.dispatchEvent(evnt);\r\n }\r\n}\r\nfunction _getReason(error) {\r\n if (error && error.reason) {\r\n var reason = error.reason;\r\n if (!isString(reason) && isFunction(reason[_DYN_TO_STRING /* @min:%2etoString */])) {\r\n return reason[_DYN_TO_STRING /* @min:%2etoString */]();\r\n }\r\n return dumpObj(reason);\r\n }\r\n // Pass the original object down which will eventually get evaluated for any message or description\r\n return error || \"\";\r\n}\r\nvar MinMilliSeconds = 60000;\r\nfunction _configMilliseconds(value, defValue) {\r\n value = value || defValue;\r\n if (value < MinMilliSeconds) {\r\n value = MinMilliSeconds;\r\n }\r\n return value;\r\n}\r\nfunction _getDefaultConfig(config) {\r\n if (!config) {\r\n config = {};\r\n }\r\n // set default values\r\n config.sessionRenewalMs = _configMilliseconds(config.sessionRenewalMs, 30 * 60 * 1000);\r\n config.sessionExpirationMs = _configMilliseconds(config.sessionExpirationMs, 24 * 60 * 60 * 1000);\r\n config[_DYN_DISABLE_EXCEPTION_TR0 /* @min:%2edisableExceptionTracking */] = stringToBoolOrDefault(config[_DYN_DISABLE_EXCEPTION_TR0 /* @min:%2edisableExceptionTracking */]);\r\n config[_DYN_AUTO_TRACK_PAGE_VISI1 /* @min:%2eautoTrackPageVisitTime */] = stringToBoolOrDefault(config[_DYN_AUTO_TRACK_PAGE_VISI1 /* @min:%2eautoTrackPageVisitTime */]);\r\n config[_DYN_OVERRIDE_PAGE_VIEW_D2 /* @min:%2eoverridePageViewDuration */] = stringToBoolOrDefault(config[_DYN_OVERRIDE_PAGE_VIEW_D2 /* @min:%2eoverridePageViewDuration */]);\r\n config[_DYN_ENABLE_UNHANDLED_PRO3 /* @min:%2eenableUnhandledPromiseRejectionTracking */] = stringToBoolOrDefault(config[_DYN_ENABLE_UNHANDLED_PRO3 /* @min:%2eenableUnhandledPromiseRejectionTracking */]);\r\n if (isNaN(config[_DYN_SAMPLING_PERCENTAGE /* @min:%2esamplingPercentage */]) || config[_DYN_SAMPLING_PERCENTAGE /* @min:%2esamplingPercentage */] <= 0 || config[_DYN_SAMPLING_PERCENTAGE /* @min:%2esamplingPercentage */] >= 100) {\r\n config[_DYN_SAMPLING_PERCENTAGE /* @min:%2esamplingPercentage */] = 100;\r\n }\r\n config[_DYN_IS_STORAGE_USE_DISAB4 /* @min:%2eisStorageUseDisabled */] = stringToBoolOrDefault(config[_DYN_IS_STORAGE_USE_DISAB4 /* @min:%2eisStorageUseDisabled */]);\r\n config[_DYN_IS_BROWSER_LINK_TRAC5 /* @min:%2eisBrowserLinkTrackingEnabled */] = stringToBoolOrDefault(config[_DYN_IS_BROWSER_LINK_TRAC5 /* @min:%2eisBrowserLinkTrackingEnabled */]);\r\n config[_DYN_ENABLE_AUTO_ROUTE_TR6 /* @min:%2eenableAutoRouteTracking */] = stringToBoolOrDefault(config[_DYN_ENABLE_AUTO_ROUTE_TR6 /* @min:%2eenableAutoRouteTracking */]);\r\n config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */] = config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */] || \"\";\r\n config.enableDebug = stringToBoolOrDefault(config.enableDebug);\r\n config[_DYN_DISABLE_FLUSH_ON_BEF7 /* @min:%2edisableFlushOnBeforeUnload */] = stringToBoolOrDefault(config[_DYN_DISABLE_FLUSH_ON_BEF7 /* @min:%2edisableFlushOnBeforeUnload */]);\r\n config.disableFlushOnUnload = stringToBoolOrDefault(config.disableFlushOnUnload, config[_DYN_DISABLE_FLUSH_ON_BEF7 /* @min:%2edisableFlushOnBeforeUnload */]);\r\n return config;\r\n}\r\nfunction _updateStorageUsage(extConfig) {\r\n // Not resetting the storage usage as someone may have manually called utlDisableStorage, so this will only\r\n // reset based if the configuration option is provided\r\n if (!isUndefined(extConfig[_DYN_IS_STORAGE_USE_DISAB4 /* @min:%2eisStorageUseDisabled */])) {\r\n if (extConfig[_DYN_IS_STORAGE_USE_DISAB4 /* @min:%2eisStorageUseDisabled */]) {\r\n utlDisableStorage();\r\n }\r\n else {\r\n utlEnableStorage();\r\n }\r\n }\r\n}\r\nvar AnalyticsPlugin = /** @class */ (function (_super) {\r\n __extends(AnalyticsPlugin, _super);\r\n function AnalyticsPlugin() {\r\n var _this = _super.call(this) || this;\r\n _this.identifier = AnalyticsPluginIdentifier; // do not change name or priority\r\n _this.priority = 180; // take from reserved priority range 100- 200\r\n _this.autoRoutePVDelay = 500; // ms; Time to wait after a route change before triggering a pageview to allow DOM changes to take place\r\n var _eventTracking;\r\n var _pageTracking;\r\n var _pageViewManager;\r\n var _pageViewPerformanceManager;\r\n var _pageVisitTimeManager;\r\n var _preInitTelemetryInitializers;\r\n var _isBrowserLinkTrackingEnabled;\r\n var _browserLinkInitializerAdded;\r\n var _enableAutoRouteTracking;\r\n var _historyListenerAdded;\r\n var _disableExceptionTracking;\r\n var _autoExceptionInstrumented;\r\n var _enableUnhandledPromiseRejectionTracking;\r\n var _autoUnhandledPromiseInstrumented;\r\n // Counts number of trackAjax invocations.\r\n // By default we only monitor X ajax call per view to avoid too much load.\r\n // Default value is set in config.\r\n // This counter keeps increasing even after the limit is reached.\r\n var _trackAjaxAttempts = 0;\r\n // array with max length of 2 that store current url and previous url for SPA page route change trackPageview use.\r\n var _prevUri; // Assigned in the constructor\r\n var _currUri;\r\n var _evtNamespace;\r\n dynamicProto(AnalyticsPlugin, _this, function (_self, _base) {\r\n var _addHook = _base._addHook;\r\n _initDefaults();\r\n _self.getCookieMgr = function () {\r\n return safeGetCookieMgr(_self[_DYN_CORE /* @min:%2ecore */]);\r\n };\r\n _self.processTelemetry = function (env, itemCtx) {\r\n _self.processNext(env, itemCtx);\r\n };\r\n _self.trackEvent = function (event, customProperties) {\r\n try {\r\n var telemetryItem = createTelemetryItem(event, EventTelemetry[_DYN_DATA_TYPE /* @min:%2edataType */], EventTelemetry[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), customProperties);\r\n _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n }\r\n catch (e) {\r\n _throwInternal(2 /* eLoggingSeverity.WARNING */, 39 /* _eInternalMessageId.TrackTraceFailed */, \"trackTrace failed, trace will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * Start timing an extended event. Call `stopTrackEvent` to log the event when it ends.\r\n * @param name A string that identifies this event uniquely within the document.\r\n */\r\n _self.startTrackEvent = function (name) {\r\n try {\r\n _eventTracking.start(name);\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 29 /* _eInternalMessageId.StartTrackEventFailed */, \"startTrackEvent failed, event will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * Log an extended event that you started timing with `startTrackEvent`.\r\n * @param name The string you used to identify this event in `startTrackEvent`.\r\n * @param properties map[string, string] - additional data used to filter events and metrics in the portal. Defaults to empty.\r\n * @param measurements map[string, number] - metrics associated with this event, displayed in Metrics Explorer on the portal. Defaults to empty.\r\n */\r\n _self.stopTrackEvent = function (name, properties, measurements) {\r\n try {\r\n _eventTracking.stop(name, undefined, properties, measurements);\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 30 /* _eInternalMessageId.StopTrackEventFailed */, \"stopTrackEvent failed, event will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * @description Log a diagnostic message\r\n * @param {ITraceTelemetry} trace\r\n * @param ICustomProperties.\r\n * @memberof ApplicationInsights\r\n */\r\n _self.trackTrace = function (trace, customProperties) {\r\n try {\r\n var telemetryItem = createTelemetryItem(trace, Trace[_DYN_DATA_TYPE /* @min:%2edataType */], Trace[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), customProperties);\r\n _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n }\r\n catch (e) {\r\n _throwInternal(2 /* eLoggingSeverity.WARNING */, 39 /* _eInternalMessageId.TrackTraceFailed */, \"trackTrace failed, trace will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * @description Log a numeric value that is not associated with a specific event. Typically\r\n * used to send regular reports of performance indicators. To send single measurement, just\r\n * use the name and average fields of {@link IMetricTelemetry}. If you take measurements\r\n * frequently, you can reduce the telemetry bandwidth by aggregating multiple measurements\r\n * and sending the resulting average at intervals\r\n * @param {IMetricTelemetry} metric input object argument. Only name and average are mandatory.\r\n * @param {{[key: string]: any}} customProperties additional data used to filter metrics in the\r\n * portal. Defaults to empty.\r\n * @memberof ApplicationInsights\r\n */\r\n _self.trackMetric = function (metric, customProperties) {\r\n try {\r\n var telemetryItem = createTelemetryItem(metric, Metric[_DYN_DATA_TYPE /* @min:%2edataType */], Metric[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), customProperties);\r\n _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 36 /* _eInternalMessageId.TrackMetricFailed */, \"trackMetric failed, metric will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * Logs that a page or other item was viewed.\r\n * @param IPageViewTelemetry The string you used as the name in startTrackPage. Defaults to the document title.\r\n * @param customProperties Additional data used to filter events and metrics. Defaults to empty.\r\n * If a user wants to provide duration for pageLoad, it'll have to be in pageView.properties.duration\r\n */\r\n _self[_DYN_TRACK_PAGE_VIEW /* @min:%2etrackPageView */] = function (pageView, customProperties) {\r\n try {\r\n var inPv = pageView || {};\r\n _pageViewManager[_DYN_TRACK_PAGE_VIEW /* @min:%2etrackPageView */](inPv, __assign(__assign(__assign({}, inPv.properties), inPv.measurements), customProperties));\r\n if (_self.config[_DYN_AUTO_TRACK_PAGE_VISI1 /* @min:%2eautoTrackPageVisitTime */]) {\r\n _pageVisitTimeManager[_DYN_TRACK_PREVIOUS_PAGE_9 /* @min:%2etrackPreviousPageVisit */](inPv.name, inPv.uri);\r\n }\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 37 /* _eInternalMessageId.TrackPVFailed */, \"trackPageView failed, page view will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * Create a page view telemetry item and send it to the SDK pipeline through the core.track API\r\n * @param pageView Page view item to be sent\r\n * @param properties Custom properties (Part C) that a user can add to the telemetry item\r\n * @param systemProperties System level properties (Part A) that a user can add to the telemetry item\r\n */\r\n _self[_DYN_SEND_PAGE_VIEW_INTER10 /* @min:%2esendPageViewInternal */] = function (pageView, properties, systemProperties) {\r\n var doc = getDocument();\r\n if (doc) {\r\n pageView.refUri = pageView.refUri === undefined ? doc.referrer : pageView.refUri;\r\n }\r\n var telemetryItem = createTelemetryItem(pageView, PageView[_DYN_DATA_TYPE /* @min:%2edataType */], PageView[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), properties, systemProperties);\r\n _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n // reset ajaxes counter\r\n _trackAjaxAttempts = 0;\r\n };\r\n /**\r\n * @ignore INTERNAL ONLY\r\n * @param pageViewPerformance\r\n * @param properties\r\n */\r\n _self[_DYN_SEND_PAGE_VIEW_PERFO11 /* @min:%2esendPageViewPerformanceInternal */] = function (pageViewPerformance, properties, systemProperties) {\r\n var telemetryItem = createTelemetryItem(pageViewPerformance, PageViewPerformance[_DYN_DATA_TYPE /* @min:%2edataType */], PageViewPerformance[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), properties, systemProperties);\r\n _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n };\r\n /**\r\n * Send browser performance metrics.\r\n * @param pageViewPerformance\r\n * @param customProperties\r\n */\r\n _self.trackPageViewPerformance = function (pageViewPerformance, customProperties) {\r\n var inPvp = pageViewPerformance || {};\r\n try {\r\n _pageViewPerformanceManager[_DYN_POPULATE_PAGE_VIEW_P12 /* @min:%2epopulatePageViewPerformanceEvent */](inPvp);\r\n _self[_DYN_SEND_PAGE_VIEW_PERFO11 /* @min:%2esendPageViewPerformanceInternal */](inPvp, customProperties);\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 37 /* _eInternalMessageId.TrackPVFailed */, \"trackPageViewPerformance failed, page view will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * Starts the timer for tracking a page load time. Use this instead of `trackPageView` if you want to control when the page view timer starts and stops,\r\n * but don't want to calculate the duration yourself. This method doesn't send any telemetry. Call `stopTrackPage` to log the end of the page view\r\n * and send the event.\r\n * @param name A string that idenfities this item, unique within this HTML document. Defaults to the document title.\r\n */\r\n _self.startTrackPage = function (name) {\r\n try {\r\n if (typeof name !== \"string\") {\r\n var doc = getDocument();\r\n name = doc && doc.title || \"\";\r\n }\r\n _pageTracking.start(name);\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 31 /* _eInternalMessageId.StartTrackFailed */, \"startTrackPage failed, page view may not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * Stops the timer that was started by calling `startTrackPage` and sends the pageview load time telemetry with the specified properties and measurements.\r\n * The duration of the page view will be the time between calling `startTrackPage` and `stopTrackPage`.\r\n * @param name The string you used as the name in startTrackPage. Defaults to the document title.\r\n * @param url String - a relative or absolute URL that identifies the page or other item. Defaults to the window location.\r\n * @param properties map[string, string] - additional data used to filter pages and metrics in the portal. Defaults to empty.\r\n * @param measurements map[string, number] - metrics associated with this page, displayed in Metrics Explorer on the portal. Defaults to empty.\r\n */\r\n _self.stopTrackPage = function (name, url, properties, measurement) {\r\n try {\r\n if (typeof name !== \"string\") {\r\n var doc = getDocument();\r\n name = doc && doc.title || \"\";\r\n }\r\n if (typeof url !== \"string\") {\r\n var loc = getLocation();\r\n url = loc && loc[_DYN_HREF /* @min:%2ehref */] || \"\";\r\n }\r\n _pageTracking.stop(name, url, properties, measurement);\r\n if (_self.config[_DYN_AUTO_TRACK_PAGE_VISI1 /* @min:%2eautoTrackPageVisitTime */]) {\r\n _pageVisitTimeManager[_DYN_TRACK_PREVIOUS_PAGE_9 /* @min:%2etrackPreviousPageVisit */](name, url);\r\n }\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 32 /* _eInternalMessageId.StopTrackFailed */, \"stopTrackPage failed, page view will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * @ignore INTERNAL ONLY\r\n * @param exception\r\n * @param properties\r\n * @param systemProperties\r\n */\r\n _self[_DYN_SEND_EXCEPTION_INTER13 /* @min:%2esendExceptionInternal */] = function (exception, customProperties, systemProperties) {\r\n var theError = exception[_DYN_EXCEPTION /* @min:%2eexception */] || exception[_DYN_ERROR /* @min:%2eerror */] || new Error(strNotSpecified);\r\n var exceptionPartB = new Exception(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), theError, exception.properties || customProperties, exception.measurements, exception.severityLevel, exception.id).toInterface();\r\n var telemetryItem = createTelemetryItem(exceptionPartB, Exception[_DYN_DATA_TYPE /* @min:%2edataType */], Exception[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), customProperties, systemProperties);\r\n _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n };\r\n /**\r\n * Log an exception you have caught.\r\n *\r\n * @param {IExceptionTelemetry} exception Object which contains exception to be sent\r\n * @param {{[key: string]: any}} customProperties Additional data used to filter pages and metrics in the portal. Defaults to empty.\r\n *\r\n * Any property of type double will be considered a measurement, and will be treated by Application Insights as a metric.\r\n * @memberof ApplicationInsights\r\n */\r\n _self.trackException = function (exception, customProperties) {\r\n if (exception && !exception[_DYN_EXCEPTION /* @min:%2eexception */] && exception[_DYN_ERROR /* @min:%2eerror */]) {\r\n exception[_DYN_EXCEPTION /* @min:%2eexception */] = exception[_DYN_ERROR /* @min:%2eerror */];\r\n }\r\n try {\r\n _self[_DYN_SEND_EXCEPTION_INTER13 /* @min:%2esendExceptionInternal */](exception, customProperties);\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 35 /* _eInternalMessageId.TrackExceptionFailed */, \"trackException failed, exception will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * @description Custom error handler for Application Insights Analytics\r\n * @param {IAutoExceptionTelemetry} exception\r\n * @memberof ApplicationInsights\r\n */\r\n _self[_DYN__ONERROR /* @min:%2e_onerror */] = function (exception) {\r\n var error = exception && exception[_DYN_ERROR /* @min:%2eerror */];\r\n var evt = exception && exception.evt;\r\n try {\r\n if (!evt) {\r\n var _window = getWindow();\r\n if (_window) {\r\n evt = _window[strEvent];\r\n }\r\n }\r\n var url = (exception && exception.url) || (getDocument() || {}).URL;\r\n // If no error source is provided assume the default window.onerror handler\r\n var errorSrc = exception[_DYN_ERROR_SRC /* @min:%2eerrorSrc */] || \"window.onerror@\" + url + \":\" + (exception[_DYN_LINE_NUMBER /* @min:%2elineNumber */] || 0) + \":\" + (exception[_DYN_COLUMN_NUMBER /* @min:%2ecolumnNumber */] || 0);\r\n var properties = {\r\n errorSrc: errorSrc,\r\n url: url,\r\n lineNumber: exception[_DYN_LINE_NUMBER /* @min:%2elineNumber */] || 0,\r\n columnNumber: exception[_DYN_COLUMN_NUMBER /* @min:%2ecolumnNumber */] || 0,\r\n message: exception[_DYN_MESSAGE /* @min:%2emessage */]\r\n };\r\n if (isCrossOriginError(exception.message, exception.url, exception.lineNumber, exception.columnNumber, exception[_DYN_ERROR /* @min:%2eerror */])) {\r\n _sendCORSException(Exception[_DYN__CREATE_AUTO_EXCEPTI14 /* @min:%2eCreateAutoException */](\"Script error: The browser's same-origin policy prevents us from getting the details of this exception. Consider using the 'crossorigin' attribute.\", url, exception[_DYN_LINE_NUMBER /* @min:%2elineNumber */] || 0, exception[_DYN_COLUMN_NUMBER /* @min:%2ecolumnNumber */] || 0, error, evt, null, errorSrc), properties);\r\n }\r\n else {\r\n if (!exception[_DYN_ERROR_SRC /* @min:%2eerrorSrc */]) {\r\n exception[_DYN_ERROR_SRC /* @min:%2eerrorSrc */] = errorSrc;\r\n }\r\n _self.trackException({ exception: exception, severityLevel: 3 /* eSeverityLevel.Error */ }, properties);\r\n }\r\n }\r\n catch (e) {\r\n var errorString = error ? (error.name + \", \" + error[_DYN_MESSAGE /* @min:%2emessage */]) : \"null\";\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 11 /* _eInternalMessageId.ExceptionWhileLoggingError */, \"_onError threw exception while logging error, error will not be collected: \"\r\n + getExceptionName(e), { exception: dumpObj(e), errorString: errorString });\r\n }\r\n };\r\n _self[_DYN_ADD_TELEMETRY_INITIA15 /* @min:%2eaddTelemetryInitializer */] = function (telemetryInitializer) {\r\n if (_self[_DYN_CORE /* @min:%2ecore */]) {\r\n // Just add to the core\r\n return _self[_DYN_CORE /* @min:%2ecore */][_DYN_ADD_TELEMETRY_INITIA15 /* @min:%2eaddTelemetryInitializer */](telemetryInitializer);\r\n }\r\n // Handle \"pre-initialization\" telemetry initializers (for backward compatibility)\r\n if (!_preInitTelemetryInitializers) {\r\n _preInitTelemetryInitializers = [];\r\n }\r\n _preInitTelemetryInitializers.push(telemetryInitializer);\r\n };\r\n _self.initialize = function (config, core, extensions, pluginChain) {\r\n if (_self.isInitialized()) {\r\n return;\r\n }\r\n if (isNullOrUndefined(core)) {\r\n throwError(\"Error initializing\");\r\n }\r\n _base.initialize(config, core, extensions, pluginChain);\r\n try {\r\n _evtNamespace = mergeEvtNamespace(createUniqueNamespace(_self.identifier), core.evtNamespace && core.evtNamespace());\r\n if (_preInitTelemetryInitializers) {\r\n arrForEach(_preInitTelemetryInitializers, function (initializer) {\r\n core[_DYN_ADD_TELEMETRY_INITIA15 /* @min:%2eaddTelemetryInitializer */](initializer);\r\n });\r\n _preInitTelemetryInitializers = null;\r\n }\r\n var extConfig = _populateDefaults(config);\r\n _updateStorageUsage(extConfig);\r\n _pageViewPerformanceManager = new PageViewPerformanceManager(_self[_DYN_CORE /* @min:%2ecore */]);\r\n _pageViewManager = new PageViewManager(_this, extConfig[_DYN_OVERRIDE_PAGE_VIEW_D2 /* @min:%2eoverridePageViewDuration */], _self[_DYN_CORE /* @min:%2ecore */], _pageViewPerformanceManager);\r\n _pageVisitTimeManager = new PageVisitTimeManager(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), function (pageName, pageUrl, pageVisitTime) { return trackPageVisitTime(pageName, pageUrl, pageVisitTime); });\r\n _updateBrowserLinkTracking(extConfig, config);\r\n _eventTracking = new Timing(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), \"trackEvent\");\r\n _eventTracking.action =\r\n function (name, url, duration, properties, measurements) {\r\n if (!properties) {\r\n properties = {};\r\n }\r\n if (!measurements) {\r\n measurements = {};\r\n }\r\n properties.duration = duration[_DYN_TO_STRING /* @min:%2etoString */]();\r\n _self.trackEvent({ name: name, properties: properties, measurements: measurements });\r\n };\r\n // initialize page view timing\r\n _pageTracking = new Timing(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), \"trackPageView\");\r\n _pageTracking.action = function (name, url, duration, properties, measurements) {\r\n // duration must be a custom property in order for the collector to extract it\r\n if (isNullOrUndefined(properties)) {\r\n properties = {};\r\n }\r\n properties.duration = duration[_DYN_TO_STRING /* @min:%2etoString */]();\r\n var pageViewItem = {\r\n name: name,\r\n uri: url,\r\n properties: properties,\r\n measurements: measurements\r\n };\r\n _self[_DYN_SEND_PAGE_VIEW_INTER10 /* @min:%2esendPageViewInternal */](pageViewItem, properties);\r\n };\r\n if (hasWindow()) {\r\n _updateExceptionTracking(extConfig);\r\n _updateLocationChange(extConfig);\r\n }\r\n }\r\n catch (e) {\r\n // resetting the initialized state because of failure\r\n _self.setInitialized(false);\r\n throw e;\r\n }\r\n };\r\n _self._doTeardown = function (unloadCtx, unloadState) {\r\n _pageViewManager && _pageViewManager.teardown(unloadCtx, unloadState);\r\n // Just register to remove all events associated with this namespace\r\n eventOff(window, null, null, _evtNamespace);\r\n _initDefaults();\r\n };\r\n function _populateDefaults(config) {\r\n var ctx = createProcessTelemetryContext(null, config, _self[_DYN_CORE /* @min:%2ecore */]);\r\n var identifier = _self.identifier;\r\n // load default values if specified\r\n var defaults = _getDefaultConfig(config);\r\n var extConfig = _self.config = ctx.getExtCfg(identifier);\r\n if (defaults !== undefined) {\r\n objForEachKey(defaults, function (field, value) {\r\n // for each unspecified field, set the default value\r\n extConfig[field] = ctx.getConfig(identifier, field, value);\r\n if (extConfig[field] === undefined) {\r\n extConfig = value;\r\n }\r\n });\r\n }\r\n return extConfig;\r\n }\r\n function _updateBrowserLinkTracking(extConfig, config) {\r\n _isBrowserLinkTrackingEnabled = extConfig[_DYN_IS_BROWSER_LINK_TRAC5 /* @min:%2eisBrowserLinkTrackingEnabled */] || config[_DYN_IS_BROWSER_LINK_TRAC5 /* @min:%2eisBrowserLinkTrackingEnabled */];\r\n _addDefaultTelemetryInitializers();\r\n }\r\n /**\r\n * Log a page visit time\r\n * @param pageName Name of page\r\n * @param pageVisitDuration Duration of visit to the page in milleseconds\r\n */\r\n function trackPageVisitTime(pageName, pageUrl, pageVisitTime) {\r\n var properties = { PageName: pageName, PageUrl: pageUrl };\r\n _self.trackMetric({\r\n name: \"PageVisitTime\",\r\n average: pageVisitTime,\r\n max: pageVisitTime,\r\n min: pageVisitTime,\r\n sampleCount: 1\r\n }, properties);\r\n }\r\n function _addDefaultTelemetryInitializers() {\r\n if (!_browserLinkInitializerAdded && _isBrowserLinkTrackingEnabled) {\r\n var browserLinkPaths_1 = [\"/browserLinkSignalR/\", \"/__browserLink/\"];\r\n var dropBrowserLinkRequests = function (envelope) {\r\n if (_isBrowserLinkTrackingEnabled && envelope.baseType === RemoteDependencyData[_DYN_DATA_TYPE /* @min:%2edataType */]) {\r\n var remoteData = envelope.baseData;\r\n if (remoteData) {\r\n for (var i = 0; i < browserLinkPaths_1[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n if (remoteData.target && remoteData.target.indexOf(browserLinkPaths_1[i]) >= 0) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n };\r\n _self[_DYN_ADD_TELEMETRY_INITIA15 /* @min:%2eaddTelemetryInitializer */](dropBrowserLinkRequests);\r\n _browserLinkInitializerAdded = true;\r\n }\r\n }\r\n function _sendCORSException(exception, properties) {\r\n var telemetryItem = createTelemetryItem(exception, Exception[_DYN_DATA_TYPE /* @min:%2edataType */], Exception[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), properties);\r\n _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n }\r\n function _updateExceptionTracking(extConfig) {\r\n var _window = getWindow();\r\n var locn = getLocation(true);\r\n _disableExceptionTracking = extConfig[_DYN_DISABLE_EXCEPTION_TR0 /* @min:%2edisableExceptionTracking */];\r\n if (!_disableExceptionTracking && !_autoExceptionInstrumented && !extConfig.autoExceptionInstrumented) {\r\n // We want to enable exception auto collection and it has not been done so yet\r\n _addHook(InstrumentEvent(_window, \"onerror\", {\r\n ns: _evtNamespace,\r\n rsp: function (callDetails, message, url, lineNumber, columnNumber, error) {\r\n if (!_disableExceptionTracking && callDetails.rslt !== true) {\r\n _self[_DYN__ONERROR /* @min:%2e_onerror */](Exception[_DYN__CREATE_AUTO_EXCEPTI14 /* @min:%2eCreateAutoException */](message, url, lineNumber, columnNumber, error, callDetails.evt));\r\n }\r\n }\r\n }, false));\r\n _autoExceptionInstrumented = true;\r\n }\r\n _addUnhandledPromiseRejectionTracking(extConfig, _window, locn);\r\n }\r\n function _updateLocationChange(extConfig) {\r\n var win = getWindow();\r\n var locn = getLocation(true);\r\n _enableAutoRouteTracking = extConfig[_DYN_ENABLE_AUTO_ROUTE_TR6 /* @min:%2eenableAutoRouteTracking */] === true;\r\n /**\r\n * Create a custom \"locationchange\" event which is triggered each time the history object is changed\r\n */\r\n if (win && _enableAutoRouteTracking && hasHistory()) {\r\n var _history = getHistory();\r\n if (isFunction(_history.pushState) && isFunction(_history.replaceState) && typeof Event !== strUndefined) {\r\n _addHistoryListener(extConfig, win, _history, locn);\r\n }\r\n }\r\n }\r\n function _getDistributedTraceCtx() {\r\n var distributedTraceCtx = null;\r\n if (_self[_DYN_CORE /* @min:%2ecore */] && _self[_DYN_CORE /* @min:%2ecore */].getTraceCtx) {\r\n distributedTraceCtx = _self[_DYN_CORE /* @min:%2ecore */].getTraceCtx(false);\r\n }\r\n if (!distributedTraceCtx) {\r\n // Fallback when using an older Core and PropertiesPlugin\r\n var properties = _self[_DYN_CORE /* @min:%2ecore */].getPlugin(PropertiesPluginIdentifier);\r\n if (properties) {\r\n var context = properties.plugin.context;\r\n if (context) {\r\n distributedTraceCtx = createDistributedTraceContextFromTrace(context.telemetryTrace);\r\n }\r\n }\r\n }\r\n return distributedTraceCtx;\r\n }\r\n /**\r\n * Create a custom \"locationchange\" event which is triggered each time the history object is changed\r\n */\r\n function _addHistoryListener(extConfig, win, history, locn) {\r\n var namePrefix = extConfig[_DYN_NAME_PREFIX /* @min:%2enamePrefix */] || \"\";\r\n function _popstateHandler() {\r\n if (_enableAutoRouteTracking) {\r\n _dispatchEvent(win, createDomEvent(namePrefix + \"locationchange\"));\r\n }\r\n }\r\n function _locationChangeHandler() {\r\n // We always track the changes (if the handler is installed) to handle the feature being disabled between location changes\r\n if (_currUri) {\r\n _prevUri = _currUri;\r\n _currUri = locn && locn[_DYN_HREF /* @min:%2ehref */] || \"\";\r\n }\r\n else {\r\n _currUri = locn && locn[_DYN_HREF /* @min:%2ehref */] || \"\";\r\n }\r\n if (_enableAutoRouteTracking) {\r\n var distributedTraceCtx = _getDistributedTraceCtx();\r\n if (distributedTraceCtx) {\r\n distributedTraceCtx.setTraceId(generateW3CId());\r\n var traceLocationName = \"_unknown_\";\r\n if (locn && locn.pathname) {\r\n traceLocationName = locn.pathname + (locn.hash || \"\");\r\n }\r\n // This populates the ai.operation.name which has a maximum size of 1024 so we need to sanitize it\r\n distributedTraceCtx.setName(dataSanitizeString(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), traceLocationName));\r\n }\r\n setTimeout((function (uri) {\r\n // todo: override start time so that it is not affected by autoRoutePVDelay\r\n _self[_DYN_TRACK_PAGE_VIEW /* @min:%2etrackPageView */]({ refUri: uri, properties: { duration: 0 } }); // SPA route change loading durations are undefined, so send 0\r\n }).bind(this, _prevUri), _self.autoRoutePVDelay);\r\n }\r\n }\r\n if (!_historyListenerAdded) {\r\n _addHook(InstrumentEvent(history, \"pushState\", {\r\n ns: _evtNamespace,\r\n rsp: function () {\r\n if (_enableAutoRouteTracking) {\r\n _dispatchEvent(win, createDomEvent(namePrefix + \"pushState\"));\r\n _dispatchEvent(win, createDomEvent(namePrefix + \"locationchange\"));\r\n }\r\n }\r\n }, true));\r\n _addHook(InstrumentEvent(history, \"replaceState\", {\r\n ns: _evtNamespace,\r\n rsp: function () {\r\n if (_enableAutoRouteTracking) {\r\n _dispatchEvent(win, createDomEvent(namePrefix + \"replaceState\"));\r\n _dispatchEvent(win, createDomEvent(namePrefix + \"locationchange\"));\r\n }\r\n }\r\n }, true));\r\n eventOn(win, namePrefix + \"popstate\", _popstateHandler, _evtNamespace);\r\n eventOn(win, namePrefix + \"locationchange\", _locationChangeHandler, _evtNamespace);\r\n _historyListenerAdded = true;\r\n }\r\n }\r\n function _addUnhandledPromiseRejectionTracking(extConfig, _window, _location) {\r\n _enableUnhandledPromiseRejectionTracking = extConfig[_DYN_ENABLE_UNHANDLED_PRO3 /* @min:%2eenableUnhandledPromiseRejectionTracking */] === true;\r\n if (_enableUnhandledPromiseRejectionTracking && !_autoUnhandledPromiseInstrumented) {\r\n // We want to enable exception auto collection and it has not been done so yet\r\n _addHook(InstrumentEvent(_window, \"onunhandledrejection\", {\r\n ns: _evtNamespace,\r\n rsp: function (callDetails, error) {\r\n if (_enableUnhandledPromiseRejectionTracking && callDetails.rslt !== true) { // handled could be typeof function\r\n _self[_DYN__ONERROR /* @min:%2e_onerror */](Exception[_DYN__CREATE_AUTO_EXCEPTI14 /* @min:%2eCreateAutoException */](_getReason(error), _location ? _location[_DYN_HREF /* @min:%2ehref */] : \"\", 0, 0, error, callDetails.evt));\r\n }\r\n }\r\n }, false));\r\n _autoUnhandledPromiseInstrumented = true;\r\n extConfig.autoUnhandledPromiseInstrumented = _autoUnhandledPromiseInstrumented;\r\n }\r\n }\r\n /**\r\n * This method will throw exceptions in debug mode or attempt to log the error as a console warning.\r\n * @param severity {eLoggingSeverity} - The severity of the log message\r\n * @param message {_InternalLogMessage} - The log message.\r\n */\r\n function _throwInternal(severity, msgId, msg, properties, isUserAct) {\r\n _self[_DYN_DIAG_LOG /* @min:%2ediagLog */]().throwInternal(severity, msgId, msg, properties, isUserAct);\r\n }\r\n function _initDefaults() {\r\n _eventTracking = null;\r\n _pageTracking = null;\r\n _pageViewManager = null;\r\n _pageViewPerformanceManager = null;\r\n _pageVisitTimeManager = null;\r\n _preInitTelemetryInitializers = null;\r\n _isBrowserLinkTrackingEnabled = false;\r\n _browserLinkInitializerAdded = false;\r\n _enableAutoRouteTracking = false;\r\n _historyListenerAdded = false;\r\n _disableExceptionTracking = false;\r\n _autoExceptionInstrumented = false;\r\n _enableUnhandledPromiseRejectionTracking = false;\r\n _autoUnhandledPromiseInstrumented = false;\r\n // Counts number of trackAjax invocations.\r\n // By default we only monitor X ajax call per view to avoid too much load.\r\n // Default value is set in config.\r\n // This counter keeps increasing even after the limit is reached.\r\n _trackAjaxAttempts = 0;\r\n // array with max length of 2 that store current url and previous url for SPA page route change trackPageview use.\r\n var location = getLocation(true);\r\n _prevUri = location && location[_DYN_HREF /* @min:%2ehref */] || \"\";\r\n _currUri = null;\r\n _evtNamespace = null;\r\n }\r\n // For backward compatibility\r\n objDefineAccessors(_self, \"_pageViewManager\", function () { return _pageViewManager; });\r\n objDefineAccessors(_self, \"_pageViewPerformanceManager\", function () { return _pageViewPerformanceManager; });\r\n objDefineAccessors(_self, \"_pageVisitTimeManager\", function () { return _pageVisitTimeManager; });\r\n objDefineAccessors(_self, \"_evtNamespace\", function () { return \".\" + _evtNamespace; });\r\n });\r\n return _this;\r\n }\r\n /**\r\n * Get the current cookie manager for this instance\r\n */\r\n AnalyticsPlugin.prototype.getCookieMgr = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n AnalyticsPlugin.prototype.processTelemetry = function (env, itemCtx) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n AnalyticsPlugin.prototype.trackEvent = function (event, customProperties) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Start timing an extended event. Call `stopTrackEvent` to log the event when it ends.\r\n * @param name A string that identifies this event uniquely within the document.\r\n */\r\n AnalyticsPlugin.prototype.startTrackEvent = function (name) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Log an extended event that you started timing with `startTrackEvent`.\r\n * @param name The string you used to identify this event in `startTrackEvent`.\r\n * @param properties map[string, string] - additional data used to filter events and metrics in the portal. Defaults to empty.\r\n * @param measurements map[string, number] - metrics associated with this event, displayed in Metrics Explorer on the portal. Defaults to empty.\r\n */\r\n AnalyticsPlugin.prototype.stopTrackEvent = function (name, properties, measurements) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * @description Log a diagnostic message\r\n * @param {ITraceTelemetry} trace\r\n * @param ICustomProperties.\r\n * @memberof ApplicationInsights\r\n */\r\n AnalyticsPlugin.prototype.trackTrace = function (trace, customProperties) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * @description Log a numeric value that is not associated with a specific event. Typically\r\n * used to send regular reports of performance indicators. To send single measurement, just\r\n * use the name and average fields of {@link IMetricTelemetry}. If you take measurements\r\n * frequently, you can reduce the telemetry bandwidth by aggregating multiple measurements\r\n * and sending the resulting average at intervals\r\n * @param {IMetricTelemetry} metric input object argument. Only name and average are mandatory.\r\n * @param {{[key: string]: any}} customProperties additional data used to filter metrics in the\r\n * portal. Defaults to empty.\r\n * @memberof ApplicationInsights\r\n */\r\n AnalyticsPlugin.prototype.trackMetric = function (metric, customProperties) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Logs that a page or other item was viewed.\r\n * @param IPageViewTelemetry The string you used as the name in startTrackPage. Defaults to the document title.\r\n * @param customProperties Additional data used to filter events and metrics. Defaults to empty.\r\n * If a user wants to provide duration for pageLoad, it'll have to be in pageView.properties.duration\r\n */\r\n AnalyticsPlugin.prototype.trackPageView = function (pageView, customProperties) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Create a page view telemetry item and send it to the SDK pipeline through the core.track API\r\n * @param pageView Page view item to be sent\r\n * @param properties Custom properties (Part C) that a user can add to the telemetry item\r\n * @param systemProperties System level properties (Part A) that a user can add to the telemetry item\r\n */\r\n AnalyticsPlugin.prototype.sendPageViewInternal = function (pageView, properties, systemProperties) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * @ignore INTERNAL ONLY\r\n * @param pageViewPerformance\r\n * @param properties\r\n */\r\n AnalyticsPlugin.prototype.sendPageViewPerformanceInternal = function (pageViewPerformance, properties, systemProperties) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Send browser performance metrics.\r\n * @param pageViewPerformance\r\n * @param customProperties\r\n */\r\n AnalyticsPlugin.prototype.trackPageViewPerformance = function (pageViewPerformance, customProperties) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Starts the timer for tracking a page load time. Use this instead of `trackPageView` if you want to control when the page view timer starts and stops,\r\n * but don't want to calculate the duration yourself. This method doesn't send any telemetry. Call `stopTrackPage` to log the end of the page view\r\n * and send the event.\r\n * @param name A string that idenfities this item, unique within this HTML document. Defaults to the document title.\r\n */\r\n AnalyticsPlugin.prototype.startTrackPage = function (name) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Stops the timer that was started by calling `startTrackPage` and sends the pageview load time telemetry with the specified properties and measurements.\r\n * The duration of the page view will be the time between calling `startTrackPage` and `stopTrackPage`.\r\n * @param name The string you used as the name in startTrackPage. Defaults to the document title.\r\n * @param url String - a relative or absolute URL that identifies the page or other item. Defaults to the window location.\r\n * @param properties map[string, string] - additional data used to filter pages and metrics in the portal. Defaults to empty.\r\n * @param measurements map[string, number] - metrics associated with this page, displayed in Metrics Explorer on the portal. Defaults to empty.\r\n */\r\n AnalyticsPlugin.prototype.stopTrackPage = function (name, url, properties, measurement) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * @ignore INTERNAL ONLY\r\n * @param exception\r\n * @param properties\r\n * @param systemProperties\r\n */\r\n AnalyticsPlugin.prototype.sendExceptionInternal = function (exception, customProperties, systemProperties) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Log an exception you have caught.\r\n *\r\n * @param {IExceptionTelemetry} exception Object which contains exception to be sent\r\n * @param {{[key: string]: any}} customProperties Additional data used to filter pages and metrics in the portal. Defaults to empty.\r\n *\r\n * Any property of type double will be considered a measurement, and will be treated by Application Insights as a metric.\r\n * @memberof ApplicationInsights\r\n */\r\n AnalyticsPlugin.prototype.trackException = function (exception, customProperties) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * @description Custom error handler for Application Insights Analytics\r\n * @param {IAutoExceptionTelemetry} exception\r\n * @memberof ApplicationInsights\r\n */\r\n AnalyticsPlugin.prototype._onerror = function (exception) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n AnalyticsPlugin.prototype.addTelemetryInitializer = function (telemetryInitializer) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n AnalyticsPlugin.prototype.initialize = function (config, core, extensions, pluginChain) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n AnalyticsPlugin.Version = '2.8.8'; // Not currently used anywhere\r\n AnalyticsPlugin.getDefaultConfig = _getDefaultConfig;\r\n return AnalyticsPlugin;\r\n}(BaseTelemetryPlugin));\r\nexport { AnalyticsPlugin };\r\n//# sourceMappingURL=AnalyticsPlugin.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { __extends } from \"tslib\";\r\nimport { createClassFromInterface } from \"@microsoft/applicationinsights-core-js\";\r\nfunction _aiNameFunc(baseName) {\r\n var aiName = \"ai.\" + baseName + \".\";\r\n return function (name) {\r\n return aiName + name;\r\n };\r\n}\r\nvar _aiApplication = _aiNameFunc(\"application\");\r\nvar _aiDevice = _aiNameFunc(\"device\");\r\nvar _aiLocation = _aiNameFunc(\"location\");\r\nvar _aiOperation = _aiNameFunc(\"operation\");\r\nvar _aiSession = _aiNameFunc(\"session\");\r\nvar _aiUser = _aiNameFunc(\"user\");\r\nvar _aiCloud = _aiNameFunc(\"cloud\");\r\nvar _aiInternal = _aiNameFunc(\"internal\");\r\nvar ContextTagKeys = /** @class */ (function (_super) {\r\n __extends(ContextTagKeys, _super);\r\n function ContextTagKeys() {\r\n return _super.call(this) || this;\r\n }\r\n return ContextTagKeys;\r\n}(createClassFromInterface({\r\n applicationVersion: _aiApplication(\"ver\"),\r\n applicationBuild: _aiApplication(\"build\"),\r\n applicationTypeId: _aiApplication(\"typeId\"),\r\n applicationId: _aiApplication(\"applicationId\"),\r\n applicationLayer: _aiApplication(\"layer\"),\r\n deviceId: _aiDevice(\"id\"),\r\n deviceIp: _aiDevice(\"ip\"),\r\n deviceLanguage: _aiDevice(\"language\"),\r\n deviceLocale: _aiDevice(\"locale\"),\r\n deviceModel: _aiDevice(\"model\"),\r\n deviceFriendlyName: _aiDevice(\"friendlyName\"),\r\n deviceNetwork: _aiDevice(\"network\"),\r\n deviceNetworkName: _aiDevice(\"networkName\"),\r\n deviceOEMName: _aiDevice(\"oemName\"),\r\n deviceOS: _aiDevice(\"os\"),\r\n deviceOSVersion: _aiDevice(\"osVersion\"),\r\n deviceRoleInstance: _aiDevice(\"roleInstance\"),\r\n deviceRoleName: _aiDevice(\"roleName\"),\r\n deviceScreenResolution: _aiDevice(\"screenResolution\"),\r\n deviceType: _aiDevice(\"type\"),\r\n deviceMachineName: _aiDevice(\"machineName\"),\r\n deviceVMName: _aiDevice(\"vmName\"),\r\n deviceBrowser: _aiDevice(\"browser\"),\r\n deviceBrowserVersion: _aiDevice(\"browserVersion\"),\r\n locationIp: _aiLocation(\"ip\"),\r\n locationCountry: _aiLocation(\"country\"),\r\n locationProvince: _aiLocation(\"province\"),\r\n locationCity: _aiLocation(\"city\"),\r\n operationId: _aiOperation(\"id\"),\r\n operationName: _aiOperation(\"name\"),\r\n operationParentId: _aiOperation(\"parentId\"),\r\n operationRootId: _aiOperation(\"rootId\"),\r\n operationSyntheticSource: _aiOperation(\"syntheticSource\"),\r\n operationCorrelationVector: _aiOperation(\"correlationVector\"),\r\n sessionId: _aiSession(\"id\"),\r\n sessionIsFirst: _aiSession(\"isFirst\"),\r\n sessionIsNew: _aiSession(\"isNew\"),\r\n userAccountAcquisitionDate: _aiUser(\"accountAcquisitionDate\"),\r\n userAccountId: _aiUser(\"accountId\"),\r\n userAgent: _aiUser(\"userAgent\"),\r\n userId: _aiUser(\"id\"),\r\n userStoreRegion: _aiUser(\"storeRegion\"),\r\n userAuthUserId: _aiUser(\"authUserId\"),\r\n userAnonymousUserAcquisitionDate: _aiUser(\"anonUserAcquisitionDate\"),\r\n userAuthenticatedUserAcquisitionDate: _aiUser(\"authUserAcquisitionDate\"),\r\n cloudName: _aiCloud(\"name\"),\r\n cloudRole: _aiCloud(\"role\"),\r\n cloudRoleVer: _aiCloud(\"roleVer\"),\r\n cloudRoleInstance: _aiCloud(\"roleInstance\"),\r\n cloudEnvironment: _aiCloud(\"environment\"),\r\n cloudLocation: _aiCloud(\"location\"),\r\n cloudDeploymentUnit: _aiCloud(\"deploymentUnit\"),\r\n internalNodeName: _aiInternal(\"nodeName\"),\r\n internalSdkVersion: _aiInternal(\"sdkVersion\"),\r\n internalAgentVersion: _aiInternal(\"agentVersion\"),\r\n internalSnippet: _aiInternal(\"snippet\"),\r\n internalSdkSrc: _aiInternal(\"sdkSrc\")\r\n})));\r\nexport { ContextTagKeys };\r\n//# sourceMappingURL=ContextTagKeys.js.map","import { ContextTagKeys } from \"./Contracts/ContextTagKeys\";\r\nexport var Extensions = {\r\n UserExt: \"user\",\r\n DeviceExt: \"device\",\r\n TraceExt: \"trace\",\r\n WebExt: \"web\",\r\n AppExt: \"app\",\r\n OSExt: \"os\",\r\n SessionExt: \"ses\",\r\n SDKExt: \"sdk\"\r\n};\r\nexport var CtxTagKeys = new ContextTagKeys();\r\n//# sourceMappingURL=PartAExtensions.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { toISOString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { strNotSpecified } from \"../../Constants\";\r\nimport { _DYN_NAME } from \"../../__DynamicConstants\";\r\nimport { dataSanitizeString } from \"./DataSanitizer\";\r\nvar Envelope = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of telemetry data.\r\n */\r\n function Envelope(logger, data, name) {\r\n var _this = this;\r\n var _self = this;\r\n _self.ver = 1;\r\n _self.sampleRate = 100.0;\r\n _self.tags = {};\r\n _self[_DYN_NAME /* @min:%2ename */] = dataSanitizeString(logger, name) || strNotSpecified;\r\n _self.data = data;\r\n _self.time = toISOString(new Date());\r\n _self.aiDataContract = {\r\n time: 1 /* FieldType.Required */,\r\n iKey: 1 /* FieldType.Required */,\r\n name: 1 /* FieldType.Required */,\r\n sampleRate: function () {\r\n return (_this.sampleRate === 100) ? 4 /* FieldType.Hidden */ : 1 /* FieldType.Required */;\r\n },\r\n tags: 1 /* FieldType.Required */,\r\n data: 1 /* FieldType.Required */\r\n };\r\n }\r\n return Envelope;\r\n}());\r\nexport { Envelope };\r\n//# sourceMappingURL=Envelope.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nvar Data = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of telemetry data.\r\n */\r\n function Data(baseType, data) {\r\n /**\r\n * The data contract for serializing this object.\r\n */\r\n this.aiDataContract = {\r\n baseType: 1 /* FieldType.Required */,\r\n baseData: 1 /* FieldType.Required */\r\n };\r\n this.baseType = baseType;\r\n this.baseData = data;\r\n }\r\n return Data;\r\n}());\r\nexport { Data };\r\n//# sourceMappingURL=Data.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n// @skip-file-minify\r\n// ##############################################################\r\n// AUTO GENERATED FILE: This file is Auto Generated during build.\r\n// ##############################################################\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\nexport var _DYN_TAGS = \"tags\"; // Count: 17\r\nexport var _DYN_DEVICE_TYPE = \"deviceType\"; // Count: 3\r\nexport var _DYN_DATA = \"data\"; // Count: 13\r\nexport var _DYN_NAME = \"name\"; // Count: 8\r\nexport var _DYN_TRACE_ID = \"traceID\"; // Count: 5\r\nexport var _DYN_LENGTH = \"length\"; // Count: 36\r\nexport var _DYN_STRINGIFY = \"stringify\"; // Count: 5\r\nexport var _DYN_MEASUREMENTS = \"measurements\"; // Count: 7\r\nexport var _DYN_DATA_TYPE = \"dataType\"; // Count: 10\r\nexport var _DYN_ENVELOPE_TYPE = \"envelopeType\"; // Count: 7\r\nexport var _DYN_TO_STRING = \"toString\"; // Count: 7\r\nexport var _DYN_ON_LINE = \"onLine\"; // Count: 4\r\nexport var _DYN_ENQUEUE = \"enqueue\"; // Count: 5\r\nexport var _DYN_COUNT = \"count\"; // Count: 6\r\nexport var _DYN_PUSH = \"push\"; // Count: 6\r\nexport var _DYN_EMIT_LINE_DELIMITED_0 = \"emitLineDelimitedJson\"; // Count: 3\r\nexport var _DYN_CLEAR = \"clear\"; // Count: 6\r\nexport var _DYN_BATCH_PAYLOADS = \"batchPayloads\"; // Count: 5\r\nexport var _DYN_MARK_AS_SENT = \"markAsSent\"; // Count: 6\r\nexport var _DYN_CLEAR_SENT = \"clearSent\"; // Count: 5\r\nexport var _DYN__BUFFER__KEY = \"BUFFER_KEY\"; // Count: 5\r\nexport var _DYN__SENT__BUFFER__KEY = \"SENT_BUFFER_KEY\"; // Count: 7\r\nexport var _DYN__MAX__BUFFER__SIZE = \"MAX_BUFFER_SIZE\"; // Count: 5\r\nexport var _DYN_NAME_PREFIX = \"namePrefix\"; // Count: 6\r\nexport var _DYN_MAX_BATCH_SIZE_IN_BY1 = \"maxBatchSizeInBytes\"; // Count: 3\r\nexport var _DYN_TRIGGER_SEND = \"triggerSend\"; // Count: 6\r\nexport var _DYN_DIAG_LOG = \"diagLog\"; // Count: 15\r\nexport var _DYN_ONUNLOAD_DISABLE_BEA2 = \"onunloadDisableBeacon\"; // Count: 2\r\nexport var _DYN_IS_BEACON_API_DISABL3 = \"isBeaconApiDisabled\"; // Count: 3\r\nexport var _DYN__SENDER = \"_sender\"; // Count: 5\r\nexport var _DYN__SENDER_CONFIG = \"_senderConfig\"; // Count: 4\r\nexport var _DYN__BUFFER = \"_buffer\"; // Count: 7\r\nexport var _DYN_ENABLE_SESSION_STORA4 = \"enableSessionStorageBuffer\"; // Count: 2\r\nexport var _DYN_SAMPLING_PERCENTAGE = \"samplingPercentage\"; // Count: 2\r\nexport var _DYN_INSTRUMENTATION_KEY = \"instrumentationKey\"; // Count: 4\r\nexport var _DYN_ENDPOINT_URL = \"endpointUrl\"; // Count: 8\r\nexport var _DYN_CUSTOM_HEADERS = \"customHeaders\"; // Count: 4\r\nexport var _DYN_DISABLE_XHR = \"disableXhr\"; // Count: 5\r\nexport var _DYN_ONUNLOAD_DISABLE_FET5 = \"onunloadDisableFetch\"; // Count: 2\r\nexport var _DYN_DISABLE_TELEMETRY = \"disableTelemetry\"; // Count: 2\r\nexport var _DYN_BASE_TYPE = \"baseType\"; // Count: 4\r\nexport var _DYN_SAMPLE_RATE = \"sampleRate\"; // Count: 4\r\nexport var _DYN_CONVERT_UNDEFINED = \"convertUndefined\"; // Count: 2\r\nexport var _DYN__XHR_READY_STATE_CHA6 = \"_xhrReadyStateChange\"; // Count: 2\r\nexport var _DYN__ON_ERROR = \"_onError\"; // Count: 11\r\nexport var _DYN__ON_PARTIAL_SUCCESS = \"_onPartialSuccess\"; // Count: 3\r\nexport var _DYN__ON_SUCCESS = \"_onSuccess\"; // Count: 6\r\nexport var _DYN_ITEMS_ACCEPTED = \"itemsAccepted\"; // Count: 5\r\nexport var _DYN_ITEMS_RECEIVED = \"itemsReceived\"; // Count: 6\r\nexport var _DYN_IS_RETRY_DISABLED = \"isRetryDisabled\"; // Count: 5\r\nexport var _DYN_SET_REQUEST_HEADER = \"setRequestHeader\"; // Count: 3\r\nexport var _DYN_MAX_BATCH_INTERVAL = \"maxBatchInterval\"; // Count: 2\r\nexport var _DYN_EVENTS_SEND_REQUEST = \"eventsSendRequest\"; // Count: 2\r\nexport var _DYN_DISABLE_INSTRUMENTAT7 = \"disableInstrumentationKeyValidation\"; // Count: 2\r\nexport var _DYN_GET_SAMPLING_SCORE = \"getSamplingScore\"; // Count: 2\r\nexport var _DYN_GET_HASH_CODE_SCORE = \"getHashCodeScore\"; // Count: 4\r\n//# sourceMappingURL=__DynamicConstants.js.map","import { __assign } from \"tslib\";\r\nimport { CtxTagKeys, Data, Envelope, Event, Exception, HttpMethod, Metric, PageView, PageViewPerformance, RemoteDependencyData, SampleRate, Trace, dataSanitizeString } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal, _warnToConsole, getJSON, hasJSON, isNullOrUndefined, isNumber, isString, isTruthy, objForEachKey, optimizeObject, setValue, toISOString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { STR_DURATION } from \"./InternalConstants\";\r\nimport { _DYN_DATA, _DYN_DATA_TYPE, _DYN_DEVICE_TYPE, _DYN_ENVELOPE_TYPE, _DYN_LENGTH, _DYN_MEASUREMENTS, _DYN_NAME, _DYN_STRINGIFY, _DYN_TAGS, _DYN_TO_STRING, _DYN_TRACE_ID } from \"./__DynamicConstants\";\r\n// these two constants are used to filter out properties not needed when trying to extract custom properties and measurements from the incoming payload\r\nvar strBaseType = \"baseType\";\r\nvar strBaseData = \"baseData\";\r\nvar strProperties = \"properties\";\r\nvar strTrue = \"true\";\r\nfunction _setValueIf(target, field, value) {\r\n return setValue(target, field, value, isTruthy);\r\n}\r\n/*\r\n * Maps Part A data from CS 4.0\r\n */\r\nfunction _extractPartAExtensions(logger, item, env) {\r\n // todo: switch to keys from common in this method\r\n var envTags = env[_DYN_TAGS /* @min:%2etags */] = env[_DYN_TAGS /* @min:%2etags */] || {};\r\n var itmExt = item.ext = item.ext || {};\r\n var itmTags = item[_DYN_TAGS /* @min:%2etags */] = item[_DYN_TAGS /* @min:%2etags */] || [];\r\n var extUser = itmExt.user;\r\n if (extUser) {\r\n _setValueIf(envTags, CtxTagKeys.userAuthUserId, extUser.authId);\r\n _setValueIf(envTags, CtxTagKeys.userId, extUser.id || extUser.localId);\r\n }\r\n var extApp = itmExt.app;\r\n if (extApp) {\r\n _setValueIf(envTags, CtxTagKeys.sessionId, extApp.sesId);\r\n }\r\n var extDevice = itmExt.device;\r\n if (extDevice) {\r\n _setValueIf(envTags, CtxTagKeys.deviceId, extDevice.id || extDevice.localId);\r\n _setValueIf(envTags, CtxTagKeys[_DYN_DEVICE_TYPE /* @min:%2edeviceType */], extDevice.deviceClass);\r\n _setValueIf(envTags, CtxTagKeys.deviceIp, extDevice.ip);\r\n _setValueIf(envTags, CtxTagKeys.deviceModel, extDevice.model);\r\n _setValueIf(envTags, CtxTagKeys[_DYN_DEVICE_TYPE /* @min:%2edeviceType */], extDevice[_DYN_DEVICE_TYPE /* @min:%2edeviceType */]);\r\n }\r\n var web = item.ext.web;\r\n if (web) {\r\n _setValueIf(envTags, CtxTagKeys.deviceLanguage, web.browserLang);\r\n _setValueIf(envTags, CtxTagKeys.deviceBrowserVersion, web.browserVer);\r\n _setValueIf(envTags, CtxTagKeys.deviceBrowser, web.browser);\r\n var envData = env[_DYN_DATA /* @min:%2edata */] = env[_DYN_DATA /* @min:%2edata */] || {};\r\n var envBaseData = envData[strBaseData] = envData[strBaseData] || {};\r\n var envProps = envBaseData[strProperties] = envBaseData[strProperties] || {};\r\n _setValueIf(envProps, \"domain\", web.domain);\r\n _setValueIf(envProps, \"isManual\", web.isManual ? strTrue : null);\r\n _setValueIf(envProps, \"screenRes\", web.screenRes);\r\n _setValueIf(envProps, \"userConsent\", web.userConsent ? strTrue : null);\r\n }\r\n var extOs = itmExt.os;\r\n if (extOs) {\r\n _setValueIf(envTags, CtxTagKeys.deviceOS, extOs[_DYN_NAME /* @min:%2ename */]);\r\n }\r\n // No support for mapping Trace.traceState to 2.0 as it is currently empty\r\n var extTrace = itmExt.trace;\r\n if (extTrace) {\r\n _setValueIf(envTags, CtxTagKeys.operationParentId, extTrace.parentID);\r\n _setValueIf(envTags, CtxTagKeys.operationName, dataSanitizeString(logger, extTrace[_DYN_NAME /* @min:%2ename */]));\r\n _setValueIf(envTags, CtxTagKeys.operationId, extTrace[_DYN_TRACE_ID /* @min:%2etraceID */]);\r\n }\r\n // Sample 4.0 schema\r\n // {\r\n // \"time\" : \"2018-09-05T22:51:22.4936Z\",\r\n // \"name\" : \"MetricWithNamespace\",\r\n // \"iKey\" : \"ABC-5a4cbd20-e601-4ef5-a3c6-5d6577e4398e\",\r\n // \"ext\": { \"cloud\": {\r\n // \"role\": \"WATSON3\",\r\n // \"roleInstance\": \"CO4AEAP00000260\"\r\n // },\r\n // \"device\": {}, \"correlation\": {} },\r\n // \"tags\": [\r\n // { \"amazon.region\" : \"east2\" },\r\n // { \"os.expid\" : \"wp:02df239\" }\r\n // ]\r\n // }\r\n var tgs = {};\r\n // deals with tags.push({object})\r\n for (var i = itmTags[_DYN_LENGTH /* @min:%2elength */] - 1; i >= 0; i--) {\r\n var tg = itmTags[i];\r\n objForEachKey(tg, function (key, value) {\r\n tgs[key] = value;\r\n });\r\n itmTags.splice(i, 1);\r\n }\r\n // deals with tags[key]=value (and handles hasOwnProperty)\r\n objForEachKey(itmTags, function (tg, value) {\r\n tgs[tg] = value;\r\n });\r\n var theTags = __assign(__assign({}, envTags), tgs);\r\n if (!theTags[CtxTagKeys.internalSdkVersion]) {\r\n // Append a version in case it is not already set\r\n theTags[CtxTagKeys.internalSdkVersion] = \"javascript:\".concat(EnvelopeCreator.Version);\r\n }\r\n env[_DYN_TAGS /* @min:%2etags */] = optimizeObject(theTags);\r\n}\r\nfunction _extractPropsAndMeasurements(data, properties, measurements) {\r\n if (!isNullOrUndefined(data)) {\r\n objForEachKey(data, function (key, value) {\r\n if (isNumber(value)) {\r\n measurements[key] = value;\r\n }\r\n else if (isString(value)) {\r\n properties[key] = value;\r\n }\r\n else if (hasJSON()) {\r\n properties[key] = getJSON()[_DYN_STRINGIFY /* @min:%2estringify */](value);\r\n }\r\n });\r\n }\r\n}\r\nfunction _convertPropsUndefinedToCustomDefinedValue(properties, customUndefinedValue) {\r\n if (!isNullOrUndefined(properties)) {\r\n objForEachKey(properties, function (key, value) {\r\n properties[key] = value || customUndefinedValue;\r\n });\r\n }\r\n}\r\n// TODO: Do we want this to take logger as arg or use this._logger as nonstatic?\r\nfunction _createEnvelope(logger, envelopeType, telemetryItem, data) {\r\n var envelope = new Envelope(logger, data, envelopeType);\r\n _setValueIf(envelope, \"sampleRate\", telemetryItem[SampleRate]);\r\n if ((telemetryItem[strBaseData] || {}).startTime) {\r\n envelope.time = toISOString(telemetryItem[strBaseData].startTime);\r\n }\r\n envelope.iKey = telemetryItem.iKey;\r\n var iKeyNoDashes = telemetryItem.iKey.replace(/-/g, \"\");\r\n envelope[_DYN_NAME /* @min:%2ename */] = envelope[_DYN_NAME /* @min:%2ename */].replace(\"{0}\", iKeyNoDashes);\r\n // extract all extensions from ctx\r\n _extractPartAExtensions(logger, telemetryItem, envelope);\r\n // loop through the envelope tags (extension of Part A) and pick out the ones that should go in outgoing envelope tags\r\n telemetryItem[_DYN_TAGS /* @min:%2etags */] = telemetryItem[_DYN_TAGS /* @min:%2etags */] || [];\r\n return optimizeObject(envelope);\r\n}\r\nfunction EnvelopeCreatorInit(logger, telemetryItem) {\r\n if (isNullOrUndefined(telemetryItem[strBaseData])) {\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 46 /* _eInternalMessageId.TelemetryEnvelopeInvalid */, \"telemetryItem.baseData cannot be null.\");\r\n }\r\n}\r\nexport var EnvelopeCreator = {\r\n Version: '2.8.8'\r\n};\r\nexport function DependencyEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n var customMeasurements = telemetryItem[strBaseData][_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n var customProperties = telemetryItem[strBaseData][strProperties] || {};\r\n _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], customProperties, customMeasurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(customProperties, customUndefinedValue);\r\n }\r\n var bd = telemetryItem[strBaseData];\r\n if (isNullOrUndefined(bd)) {\r\n _warnToConsole(logger, \"Invalid input for dependency data\");\r\n return null;\r\n }\r\n var method = bd[strProperties] && bd[strProperties][HttpMethod] ? bd[strProperties][HttpMethod] : \"GET\";\r\n var remoteDepData = new RemoteDependencyData(logger, bd.id, bd.target, bd[_DYN_NAME /* @min:%2ename */], bd[STR_DURATION /* @min:%2eduration */], bd.success, bd.responseCode, method, bd.type, bd.correlationContext, customProperties, customMeasurements);\r\n var data = new Data(RemoteDependencyData[_DYN_DATA_TYPE /* @min:%2edataType */], remoteDepData);\r\n return _createEnvelope(logger, RemoteDependencyData[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\nexport function EventEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n var customProperties = {};\r\n var customMeasurements = {};\r\n if (telemetryItem[strBaseType] !== Event[_DYN_DATA_TYPE /* @min:%2edataType */]) {\r\n customProperties[\"baseTypeSource\"] = telemetryItem[strBaseType]; // save the passed in base type as a property\r\n }\r\n if (telemetryItem[strBaseType] === Event[_DYN_DATA_TYPE /* @min:%2edataType */]) { // take collection\r\n customProperties = telemetryItem[strBaseData][strProperties] || {};\r\n customMeasurements = telemetryItem[strBaseData][_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n }\r\n else { // if its not a known type, convert to custom event\r\n if (telemetryItem[strBaseData]) {\r\n _extractPropsAndMeasurements(telemetryItem[strBaseData], customProperties, customMeasurements);\r\n }\r\n }\r\n // Extract root level properties from part C telemetryItem.data\r\n _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], customProperties, customMeasurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(customProperties, customUndefinedValue);\r\n }\r\n var eventName = telemetryItem[strBaseData][_DYN_NAME /* @min:%2ename */];\r\n var eventData = new Event(logger, eventName, customProperties, customMeasurements);\r\n var data = new Data(Event[_DYN_DATA_TYPE /* @min:%2edataType */], eventData);\r\n return _createEnvelope(logger, Event[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\nexport function ExceptionEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n // Extract root level properties from part C telemetryItem.data\r\n var customMeasurements = telemetryItem[strBaseData][_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n var customProperties = telemetryItem[strBaseData][strProperties] || {};\r\n _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], customProperties, customMeasurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(customProperties, customUndefinedValue);\r\n }\r\n var bd = telemetryItem[strBaseData];\r\n var exData = Exception.CreateFromInterface(logger, bd, customProperties, customMeasurements);\r\n var data = new Data(Exception[_DYN_DATA_TYPE /* @min:%2edataType */], exData);\r\n return _createEnvelope(logger, Exception[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\nexport function MetricEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n var baseData = telemetryItem[strBaseData];\r\n var props = baseData[strProperties] || {};\r\n var measurements = baseData[_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], props, measurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(props, customUndefinedValue);\r\n }\r\n var baseMetricData = new Metric(logger, baseData[_DYN_NAME /* @min:%2ename */], baseData.average, baseData.sampleCount, baseData.min, baseData.max, baseData.stdDev, props, measurements);\r\n var data = new Data(Metric[_DYN_DATA_TYPE /* @min:%2edataType */], baseMetricData);\r\n return _createEnvelope(logger, Metric[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\nexport function PageViewEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n // Since duration is not part of the domain properties in Common Schema, extract it from part C\r\n var duration;\r\n var baseData = telemetryItem[strBaseData];\r\n if (!isNullOrUndefined(baseData) &&\r\n !isNullOrUndefined(baseData[strProperties]) &&\r\n !isNullOrUndefined(baseData[strProperties][STR_DURATION])) { // from part B properties\r\n duration = baseData[strProperties][STR_DURATION];\r\n delete baseData[strProperties][STR_DURATION];\r\n }\r\n else if (!isNullOrUndefined(telemetryItem[_DYN_DATA /* @min:%2edata */]) &&\r\n !isNullOrUndefined(telemetryItem[_DYN_DATA /* @min:%2edata */][STR_DURATION])) { // from custom properties\r\n duration = telemetryItem[_DYN_DATA /* @min:%2edata */][STR_DURATION];\r\n delete telemetryItem[_DYN_DATA /* @min:%2edata */][STR_DURATION];\r\n }\r\n var bd = telemetryItem[strBaseData];\r\n // special case: pageview.id is grabbed from current operation id. Analytics plugin is decoupled from properties plugin, so this is done here instead. This can be made a default telemetry intializer instead if needed to be decoupled from channel\r\n var currentContextId;\r\n if (((telemetryItem.ext || {}).trace || {})[_DYN_TRACE_ID /* @min:%2etraceID */]) {\r\n currentContextId = telemetryItem.ext.trace[_DYN_TRACE_ID /* @min:%2etraceID */];\r\n }\r\n var id = bd.id || currentContextId;\r\n var name = bd[_DYN_NAME /* @min:%2ename */];\r\n var url = bd.uri;\r\n var properties = bd[strProperties] || {};\r\n var measurements = bd[_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n // refUri is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n if (!isNullOrUndefined(bd.refUri)) {\r\n properties[\"refUri\"] = bd.refUri;\r\n }\r\n // pageType is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n if (!isNullOrUndefined(bd.pageType)) {\r\n properties[\"pageType\"] = bd.pageType;\r\n }\r\n // isLoggedIn is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n if (!isNullOrUndefined(bd.isLoggedIn)) {\r\n properties[\"isLoggedIn\"] = bd.isLoggedIn[_DYN_TO_STRING /* @min:%2etoString */]();\r\n }\r\n // pageTags is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n if (!isNullOrUndefined(bd[strProperties])) {\r\n var pageTags = bd[strProperties];\r\n objForEachKey(pageTags, function (key, value) {\r\n properties[key] = value;\r\n });\r\n }\r\n _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], properties, measurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(properties, customUndefinedValue);\r\n }\r\n var pageViewData = new PageView(logger, name, url, duration, properties, measurements, id);\r\n var data = new Data(PageView[_DYN_DATA_TYPE /* @min:%2edataType */], pageViewData);\r\n return _createEnvelope(logger, PageView[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\nexport function PageViewPerformanceEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n var bd = telemetryItem[strBaseData];\r\n var name = bd[_DYN_NAME /* @min:%2ename */];\r\n var url = bd.uri || bd.url;\r\n var properties = bd[strProperties] || {};\r\n var measurements = bd[_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], properties, measurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(properties, customUndefinedValue);\r\n }\r\n var baseData = new PageViewPerformance(logger, name, url, undefined, properties, measurements, bd);\r\n var data = new Data(PageViewPerformance[_DYN_DATA_TYPE /* @min:%2edataType */], baseData);\r\n return _createEnvelope(logger, PageViewPerformance[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\nexport function TraceEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n var message = telemetryItem[strBaseData].message;\r\n var severityLevel = telemetryItem[strBaseData].severityLevel;\r\n var props = telemetryItem[strBaseData][strProperties] || {};\r\n var measurements = telemetryItem[strBaseData][_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], props, measurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(props, customUndefinedValue);\r\n }\r\n var baseData = new Trace(logger, message, severityLevel, props, measurements);\r\n var data = new Data(Trace[_DYN_DATA_TYPE /* @min:%2edataType */], baseData);\r\n return _createEnvelope(logger, Trace[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\n//# sourceMappingURL=EnvelopeCreator.js.map","import { createUniqueNamespace, eventOff, eventOn, getDocument, getNavigator, getWindow, isNullOrUndefined, isUndefined, mergeEvtNamespace } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_ON_LINE } from \"./__DynamicConstants\";\r\nfunction _disableEvents(target, evtNamespace) {\r\n eventOff(target, null, null, evtNamespace);\r\n}\r\n/**\r\n * Create a new OfflineListener instance to monitor browser online / offline events\r\n * @param parentEvtNamespace - The parent event namespace to append to any specific events for this instance\r\n */\r\nexport function createOfflineListener(parentEvtNamespace) {\r\n var _document = getDocument();\r\n var _navigator = getNavigator(); // Gets the window.navigator or workerNavigator depending on the global\r\n var _isListening = false;\r\n var _onlineStatus = true;\r\n var _evtNamespace = mergeEvtNamespace(createUniqueNamespace(\"OfflineListener\"), parentEvtNamespace);\r\n try {\r\n if (_enableEvents(getWindow())) {\r\n _isListening = true;\r\n }\r\n if (_document) {\r\n // Also attach to the document.body or document\r\n var target = _document.body || _document;\r\n if (target.ononline) {\r\n if (_enableEvents(target)) {\r\n _isListening = true;\r\n }\r\n }\r\n }\r\n if (_isListening) {\r\n // We are listening to events so lets set the current status rather than assuming we are online #1538\r\n if (_navigator && !isNullOrUndefined(_navigator[_DYN_ON_LINE /* @min:%2eonLine */])) { // navigator.onLine is undefined in react-native\r\n _onlineStatus = _navigator[_DYN_ON_LINE /* @min:%2eonLine */];\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // this makes react-native less angry\r\n _isListening = false;\r\n }\r\n function _enableEvents(target) {\r\n var enabled = false;\r\n if (target) {\r\n enabled = eventOn(target, \"online\", _setOnline, _evtNamespace);\r\n if (enabled) {\r\n eventOn(target, \"offline\", _setOffline, _evtNamespace);\r\n }\r\n }\r\n return enabled;\r\n }\r\n function _setOnline() {\r\n _onlineStatus = true;\r\n }\r\n function _setOffline() {\r\n _onlineStatus = false;\r\n }\r\n function _isOnline() {\r\n var result = true;\r\n if (_isListening) {\r\n result = _onlineStatus;\r\n }\r\n else if (_navigator && !isNullOrUndefined(_navigator[_DYN_ON_LINE /* @min:%2eonLine */])) { // navigator.onLine is undefined in react-native\r\n result = _navigator[_DYN_ON_LINE /* @min:%2eonLine */];\r\n }\r\n return result;\r\n }\r\n function _unload() {\r\n var win = getWindow();\r\n if (win && _isListening) {\r\n _disableEvents(win, _evtNamespace);\r\n if (_document) {\r\n // Also attach to the document.body or document\r\n var target = _document.body || _document;\r\n if (!isUndefined(target.ononline)) {\r\n _disableEvents(target, _evtNamespace);\r\n }\r\n }\r\n _isListening = false;\r\n }\r\n }\r\n return {\r\n isOnline: _isOnline,\r\n isListening: function () { return _isListening; },\r\n unload: _unload\r\n };\r\n}\r\n//# sourceMappingURL=Offline.js.map","import { __extends } from \"tslib\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { utlGetSessionStorage, utlSetSessionStorage } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal, arrForEach, arrIndexOf, dumpObj, getExceptionName, getJSON, isArray, isFunction, isString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_BATCH_PAYLOADS, _DYN_CLEAR, _DYN_CLEAR_SENT, _DYN_COUNT, _DYN_EMIT_LINE_DELIMITED_0, _DYN_ENQUEUE, _DYN_LENGTH, _DYN_MARK_AS_SENT, _DYN_NAME_PREFIX, _DYN_PUSH, _DYN_STRINGIFY, _DYN__BUFFER__KEY, _DYN__MAX__BUFFER__SIZE, _DYN__SENT__BUFFER__KEY } from \"./__DynamicConstants\";\r\nvar BaseSendBuffer = /** @class */ (function () {\r\n function BaseSendBuffer(logger, config) {\r\n var _buffer = [];\r\n var _bufferFullMessageSent = false;\r\n this._get = function () {\r\n return _buffer;\r\n };\r\n this._set = function (buffer) {\r\n _buffer = buffer;\r\n return _buffer;\r\n };\r\n dynamicProto(BaseSendBuffer, this, function (_self) {\r\n _self[_DYN_ENQUEUE /* @min:%2eenqueue */] = function (payload) {\r\n if (_self[_DYN_COUNT /* @min:%2ecount */]() >= config.eventsLimitInMem()) {\r\n // sent internal log only once per page view\r\n if (!_bufferFullMessageSent) {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 105 /* _eInternalMessageId.InMemoryStorageBufferFull */, \"Maximum in-memory buffer size reached: \" + _self[_DYN_COUNT /* @min:%2ecount */](), true);\r\n _bufferFullMessageSent = true;\r\n }\r\n return;\r\n }\r\n _buffer[_DYN_PUSH /* @min:%2epush */](payload);\r\n };\r\n _self[_DYN_COUNT /* @min:%2ecount */] = function () {\r\n return _buffer[_DYN_LENGTH /* @min:%2elength */];\r\n };\r\n _self.size = function () {\r\n var size = _buffer[_DYN_LENGTH /* @min:%2elength */];\r\n for (var lp = 0; lp < _buffer[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n size += _buffer[lp][_DYN_LENGTH /* @min:%2elength */];\r\n }\r\n if (!config[_DYN_EMIT_LINE_DELIMITED_0 /* @min:%2eemitLineDelimitedJson */]()) {\r\n size += 2;\r\n }\r\n return size;\r\n };\r\n _self[_DYN_CLEAR /* @min:%2eclear */] = function () {\r\n _buffer = [];\r\n _bufferFullMessageSent = false;\r\n };\r\n _self.getItems = function () {\r\n return _buffer.slice(0);\r\n };\r\n _self[_DYN_BATCH_PAYLOADS /* @min:%2ebatchPayloads */] = function (payload) {\r\n if (payload && payload[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n var batch = config[_DYN_EMIT_LINE_DELIMITED_0 /* @min:%2eemitLineDelimitedJson */]() ?\r\n payload.join(\"\\n\") :\r\n \"[\" + payload.join(\",\") + \"]\";\r\n return batch;\r\n }\r\n return null;\r\n };\r\n });\r\n }\r\n BaseSendBuffer.prototype.enqueue = function (payload) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n BaseSendBuffer.prototype.count = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return 0;\r\n };\r\n BaseSendBuffer.prototype.size = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return 0;\r\n };\r\n BaseSendBuffer.prototype.clear = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n BaseSendBuffer.prototype.getItems = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n BaseSendBuffer.prototype.batchPayloads = function (payload) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n return BaseSendBuffer;\r\n}());\r\n/*\r\n * An array based send buffer.\r\n */\r\nvar ArraySendBuffer = /** @class */ (function (_super) {\r\n __extends(ArraySendBuffer, _super);\r\n function ArraySendBuffer(logger, config) {\r\n var _this = _super.call(this, logger, config) || this;\r\n dynamicProto(ArraySendBuffer, _this, function (_self, _base) {\r\n _self[_DYN_MARK_AS_SENT /* @min:%2emarkAsSent */] = function (payload) {\r\n _base[_DYN_CLEAR /* @min:%2eclear */]();\r\n };\r\n _self[_DYN_CLEAR_SENT /* @min:%2eclearSent */] = function (payload) {\r\n // not supported\r\n };\r\n });\r\n return _this;\r\n }\r\n ArraySendBuffer.prototype.markAsSent = function (payload) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n ArraySendBuffer.prototype.clearSent = function (payload) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n return ArraySendBuffer;\r\n}(BaseSendBuffer));\r\nexport { ArraySendBuffer };\r\n/*\r\n * Session storage buffer holds a copy of all unsent items in the browser session storage.\r\n */\r\nvar SessionStorageSendBuffer = /** @class */ (function (_super) {\r\n __extends(SessionStorageSendBuffer, _super);\r\n function SessionStorageSendBuffer(logger, config) {\r\n var _this = _super.call(this, logger, config) || this;\r\n var _bufferFullMessageSent = false;\r\n dynamicProto(SessionStorageSendBuffer, _this, function (_self, _base) {\r\n var bufferItems = _getBuffer(SessionStorageSendBuffer[_DYN__BUFFER__KEY /* @min:%2eBUFFER_KEY */]);\r\n var notDeliveredItems = _getBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */]);\r\n var buffer = _self._set(bufferItems.concat(notDeliveredItems));\r\n // If the buffer has too many items, drop items from the end.\r\n if (buffer[_DYN_LENGTH /* @min:%2elength */] > SessionStorageSendBuffer[_DYN__MAX__BUFFER__SIZE /* @min:%2eMAX_BUFFER_SIZE */]) {\r\n buffer[_DYN_LENGTH /* @min:%2elength */] = SessionStorageSendBuffer[_DYN__MAX__BUFFER__SIZE /* @min:%2eMAX_BUFFER_SIZE */];\r\n }\r\n _setBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */], []);\r\n _setBuffer(SessionStorageSendBuffer[_DYN__BUFFER__KEY /* @min:%2eBUFFER_KEY */], buffer);\r\n _self[_DYN_ENQUEUE /* @min:%2eenqueue */] = function (payload) {\r\n if (_self[_DYN_COUNT /* @min:%2ecount */]() >= SessionStorageSendBuffer[_DYN__MAX__BUFFER__SIZE /* @min:%2eMAX_BUFFER_SIZE */]) {\r\n // sent internal log only once per page view\r\n if (!_bufferFullMessageSent) {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 67 /* _eInternalMessageId.SessionStorageBufferFull */, \"Maximum buffer size reached: \" + _self[_DYN_COUNT /* @min:%2ecount */](), true);\r\n _bufferFullMessageSent = true;\r\n }\r\n return;\r\n }\r\n _base[_DYN_ENQUEUE /* @min:%2eenqueue */](payload);\r\n _setBuffer(SessionStorageSendBuffer[_DYN__BUFFER__KEY /* @min:%2eBUFFER_KEY */], _self._get());\r\n };\r\n _self[_DYN_CLEAR /* @min:%2eclear */] = function () {\r\n _base[_DYN_CLEAR /* @min:%2eclear */]();\r\n _setBuffer(SessionStorageSendBuffer[_DYN__BUFFER__KEY /* @min:%2eBUFFER_KEY */], _self._get());\r\n _setBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */], []);\r\n _bufferFullMessageSent = false;\r\n };\r\n _self[_DYN_MARK_AS_SENT /* @min:%2emarkAsSent */] = function (payload) {\r\n _setBuffer(SessionStorageSendBuffer[_DYN__BUFFER__KEY /* @min:%2eBUFFER_KEY */], _self._set(_removePayloadsFromBuffer(payload, _self._get())));\r\n var sentElements = _getBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */]);\r\n if (sentElements instanceof Array && payload instanceof Array) {\r\n sentElements = sentElements.concat(payload);\r\n if (sentElements[_DYN_LENGTH /* @min:%2elength */] > SessionStorageSendBuffer[_DYN__MAX__BUFFER__SIZE /* @min:%2eMAX_BUFFER_SIZE */]) {\r\n // We send telemetry normally. If the SENT_BUFFER is too big we don't add new elements\r\n // until we receive a response from the backend and the buffer has free space again (see clearSent method)\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 67 /* _eInternalMessageId.SessionStorageBufferFull */, \"Sent buffer reached its maximum size: \" + sentElements[_DYN_LENGTH /* @min:%2elength */], true);\r\n sentElements[_DYN_LENGTH /* @min:%2elength */] = SessionStorageSendBuffer[_DYN__MAX__BUFFER__SIZE /* @min:%2eMAX_BUFFER_SIZE */];\r\n }\r\n _setBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */], sentElements);\r\n }\r\n };\r\n _self[_DYN_CLEAR_SENT /* @min:%2eclearSent */] = function (payload) {\r\n var sentElements = _getBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */]);\r\n sentElements = _removePayloadsFromBuffer(payload, sentElements);\r\n _setBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */], sentElements);\r\n };\r\n function _removePayloadsFromBuffer(payloads, buffer) {\r\n var remaining = [];\r\n arrForEach(buffer, function (value) {\r\n if (!isFunction(value) && arrIndexOf(payloads, value) === -1) {\r\n remaining[_DYN_PUSH /* @min:%2epush */](value);\r\n }\r\n });\r\n return remaining;\r\n }\r\n function _getBuffer(key) {\r\n var prefixedKey = key;\r\n try {\r\n prefixedKey = config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */] && config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */]() ? config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */]() + \"_\" + prefixedKey : prefixedKey;\r\n var bufferJson = utlGetSessionStorage(logger, prefixedKey);\r\n if (bufferJson) {\r\n var buffer_1 = getJSON().parse(bufferJson);\r\n if (isString(buffer_1)) {\r\n // When using some version prototype.js the stringify / parse cycle does not decode array's correctly\r\n buffer_1 = getJSON().parse(buffer_1);\r\n }\r\n if (buffer_1 && isArray(buffer_1)) {\r\n return buffer_1;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 42 /* _eInternalMessageId.FailedToRestoreStorageBuffer */, \" storage key: \" + prefixedKey + \", \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n return [];\r\n }\r\n function _setBuffer(key, buffer) {\r\n var prefixedKey = key;\r\n try {\r\n prefixedKey = config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */] && config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */]() ? config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */]() + \"_\" + prefixedKey : prefixedKey;\r\n var bufferJson = JSON[_DYN_STRINGIFY /* @min:%2estringify */](buffer);\r\n utlSetSessionStorage(logger, prefixedKey, bufferJson);\r\n }\r\n catch (e) {\r\n // if there was an error, clear the buffer\r\n // telemetry is stored in the _buffer array so we won't loose any items\r\n utlSetSessionStorage(logger, prefixedKey, JSON[_DYN_STRINGIFY /* @min:%2estringify */]([]));\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 41 /* _eInternalMessageId.FailedToSetStorageBuffer */, \" storage key: \" + prefixedKey + \", \" + getExceptionName(e) + \". Buffer cleared\", { exception: dumpObj(e) });\r\n }\r\n }\r\n });\r\n return _this;\r\n }\r\n SessionStorageSendBuffer.prototype.enqueue = function (payload) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n SessionStorageSendBuffer.prototype.clear = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n SessionStorageSendBuffer.prototype.markAsSent = function (payload) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n SessionStorageSendBuffer.prototype.clearSent = function (payload) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n SessionStorageSendBuffer.BUFFER_KEY = \"AI_buffer\";\r\n SessionStorageSendBuffer.SENT_BUFFER_KEY = \"AI_sentBuffer\";\r\n // Maximum number of payloads stored in the buffer. If the buffer is full, new elements will be dropped.\r\n SessionStorageSendBuffer.MAX_BUFFER_SIZE = 2000;\r\n return SessionStorageSendBuffer;\r\n}(BaseSendBuffer));\r\nexport { SessionStorageSendBuffer };\r\n//# sourceMappingURL=SendBuffer.js.map","var _a;\r\nimport { __assign, __extends } from \"tslib\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { BreezeChannelIdentifier, DEFAULT_BREEZE_ENDPOINT, DEFAULT_BREEZE_PATH, DisabledPropertyName, Event, Exception, Metric, PageView, PageViewPerformance, ProcessLegacy, RemoteDependencyData, RequestHeaders, SampleRate, Trace, isInternalApplicationInsightsEndpoint, utlCanUseSessionStorage } from \"@microsoft/applicationinsights-common\";\r\nimport { BaseTelemetryPlugin, _throwInternal, _warnToConsole, arrForEach, createUniqueNamespace, dateNow, dumpObj, getExceptionName, getIEVersion, getJSON, getNavigator, getWindow, isArray, isBeaconsSupported, isFetchSupported, isNullOrUndefined, isXhrSupported, mergeEvtNamespace, objForEachKey, objKeys, useXDomainRequest } from \"@microsoft/applicationinsights-core-js\";\r\nimport { DependencyEnvelopeCreator, EventEnvelopeCreator, ExceptionEnvelopeCreator, MetricEnvelopeCreator, PageViewEnvelopeCreator, PageViewPerformanceEnvelopeCreator, TraceEnvelopeCreator } from \"./EnvelopeCreator\";\r\nimport { createOfflineListener } from \"./Offline\";\r\nimport { ArraySendBuffer, SessionStorageSendBuffer } from \"./SendBuffer\";\r\nimport { Serializer } from \"./Serializer\";\r\nimport { Sample } from \"./TelemetryProcessors/Sample\";\r\nimport { _DYN_BASE_TYPE, _DYN_BATCH_PAYLOADS, _DYN_CLEAR, _DYN_CLEAR_SENT, _DYN_CONVERT_UNDEFINED, _DYN_COUNT, _DYN_CUSTOM_HEADERS, _DYN_DIAG_LOG, _DYN_DISABLE_INSTRUMENTAT7, _DYN_DISABLE_TELEMETRY, _DYN_DISABLE_XHR, _DYN_EMIT_LINE_DELIMITED_0, _DYN_ENABLE_SESSION_STORA4, _DYN_ENDPOINT_URL, _DYN_ENQUEUE, _DYN_EVENTS_SEND_REQUEST, _DYN_INSTRUMENTATION_KEY, _DYN_IS_BEACON_API_DISABL3, _DYN_IS_RETRY_DISABLED, _DYN_ITEMS_ACCEPTED, _DYN_ITEMS_RECEIVED, _DYN_LENGTH, _DYN_MARK_AS_SENT, _DYN_MAX_BATCH_INTERVAL, _DYN_MAX_BATCH_SIZE_IN_BY1, _DYN_NAME_PREFIX, _DYN_ONUNLOAD_DISABLE_BEA2, _DYN_ONUNLOAD_DISABLE_FET5, _DYN_PUSH, _DYN_SAMPLE_RATE, _DYN_SAMPLING_PERCENTAGE, _DYN_SET_REQUEST_HEADER, _DYN_TAGS, _DYN_TRIGGER_SEND, _DYN__BUFFER, _DYN__ON_ERROR, _DYN__ON_PARTIAL_SUCCESS, _DYN__ON_SUCCESS, _DYN__SENDER, _DYN__SENDER_CONFIG, _DYN__XHR_READY_STATE_CHA6 } from \"./__DynamicConstants\";\r\nvar FetchSyncRequestSizeLimitBytes = 65000; // approx 64kb (the current Edge, Firefox and Chrome max limit)\r\nfunction _getResponseText(xhr) {\r\n try {\r\n return xhr.responseText;\r\n }\r\n catch (e) {\r\n // Best effort, as XHR may throw while XDR wont so just ignore\r\n }\r\n return null;\r\n}\r\nfunction _getDefaultAppInsightsChannelConfig() {\r\n var _a;\r\n var defaultValue;\r\n var defaultCustomHeaders;\r\n // set default values\r\n return _a = {\r\n endpointUrl: function () { return DEFAULT_BREEZE_ENDPOINT + DEFAULT_BREEZE_PATH; }\r\n },\r\n _a[_DYN_EMIT_LINE_DELIMITED_0 /* @min:emitLineDelimitedJson */] = function () { return false; },\r\n _a[_DYN_MAX_BATCH_INTERVAL /* @min:maxBatchInterval */] = function () { return 15000; },\r\n _a[_DYN_MAX_BATCH_SIZE_IN_BY1 /* @min:maxBatchSizeInBytes */] = function () { return 102400; },\r\n _a[_DYN_DISABLE_TELEMETRY /* @min:disableTelemetry */] = function () { return false; },\r\n _a[_DYN_ENABLE_SESSION_STORA4 /* @min:enableSessionStorageBuffer */] = function () { return true; },\r\n _a[_DYN_IS_RETRY_DISABLED /* @min:isRetryDisabled */] = function () { return false; },\r\n _a[_DYN_IS_BEACON_API_DISABL3 /* @min:isBeaconApiDisabled */] = function () { return true; },\r\n _a[_DYN_DISABLE_XHR /* @min:disableXhr */] = function () { return false; },\r\n _a[_DYN_ONUNLOAD_DISABLE_FET5 /* @min:onunloadDisableFetch */] = function () { return false; },\r\n _a[_DYN_ONUNLOAD_DISABLE_BEA2 /* @min:onunloadDisableBeacon */] = function () { return false; },\r\n _a[_DYN_INSTRUMENTATION_KEY /* @min:instrumentationKey */] = function () { return defaultValue; },\r\n _a[_DYN_NAME_PREFIX /* @min:namePrefix */] = function () { return defaultValue; },\r\n _a[_DYN_SAMPLING_PERCENTAGE /* @min:samplingPercentage */] = function () { return 100; },\r\n _a[_DYN_CUSTOM_HEADERS /* @min:customHeaders */] = function () { return defaultCustomHeaders; },\r\n _a[_DYN_CONVERT_UNDEFINED /* @min:convertUndefined */] = function () { return defaultValue; },\r\n _a.eventsLimitInMem = function () { return 10000; },\r\n _a;\r\n}\r\nvar EnvelopeTypeCreator = (_a = {},\r\n _a[Event.dataType] = EventEnvelopeCreator,\r\n _a[Trace.dataType] = TraceEnvelopeCreator,\r\n _a[PageView.dataType] = PageViewEnvelopeCreator,\r\n _a[PageViewPerformance.dataType] = PageViewPerformanceEnvelopeCreator,\r\n _a[Exception.dataType] = ExceptionEnvelopeCreator,\r\n _a[Metric.dataType] = MetricEnvelopeCreator,\r\n _a[RemoteDependencyData.dataType] = DependencyEnvelopeCreator,\r\n _a);\r\nvar Sender = /** @class */ (function (_super) {\r\n __extends(Sender, _super);\r\n function Sender() {\r\n var _this = _super.call(this) || this;\r\n _this.priority = 1001;\r\n _this.identifier = BreezeChannelIdentifier;\r\n /**\r\n * The configuration for this sender instance\r\n */\r\n _this._senderConfig = _getDefaultAppInsightsChannelConfig();\r\n // Don't set the defaults here, set them in the _initDefaults() as this is also called during unload\r\n var _consecutiveErrors; // How many times in a row a retryable error condition has occurred.\r\n var _retryAt; // The time to retry at in milliseconds from 1970/01/01 (this makes the timer calculation easy).\r\n var _lastSend; // The time of the last send operation.\r\n var _paused; // Flag indicating that the sending should be paused\r\n var _timeoutHandle; // Handle to the timer for delayed sending of batches of data.\r\n var _serializer;\r\n var _stamp_specific_redirects;\r\n var _headers;\r\n var _syncFetchPayload = 0; // Keep track of the outstanding sync fetch payload total (as sync fetch has limits)\r\n var _fallbackSender; // The sender to use if the payload size is too large\r\n var _syncUnloadSender; // The identified sender to use for the synchronous unload stage\r\n var _offlineListener;\r\n var _evtNamespace;\r\n dynamicProto(Sender, _this, function (_self, _base) {\r\n _initDefaults();\r\n _self.pause = function () {\r\n _clearScheduledTimer();\r\n _paused = true;\r\n };\r\n _self.resume = function () {\r\n if (_paused) {\r\n _paused = false;\r\n _retryAt = null;\r\n // flush if we have exceeded the max-size already\r\n if (_self._buffer.size() > _self._senderConfig[_DYN_MAX_BATCH_SIZE_IN_BY1 /* @min:%2emaxBatchSizeInBytes */]()) {\r\n _self[_DYN_TRIGGER_SEND /* @min:%2etriggerSend */](true, null, 10 /* SendRequestReason.MaxBatchSize */);\r\n }\r\n _setupTimer();\r\n }\r\n };\r\n _self.flush = function (isAsync, callBack, sendReason) {\r\n if (isAsync === void 0) { isAsync = true; }\r\n if (!_paused) {\r\n // Clear the normal schedule timer as we are going to try and flush ASAP\r\n _clearScheduledTimer();\r\n try {\r\n _self[_DYN_TRIGGER_SEND /* @min:%2etriggerSend */](isAsync, null, sendReason || 1 /* SendRequestReason.ManualFlush */);\r\n }\r\n catch (e) {\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 22 /* _eInternalMessageId.FlushFailed */, \"flush failed, telemetry will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n };\r\n _self.onunloadFlush = function () {\r\n if (!_paused) {\r\n if ((_self._senderConfig[_DYN_ONUNLOAD_DISABLE_BEA2 /* @min:%2eonunloadDisableBeacon */]() === false || _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_IS_BEACON_API_DISABL3 /* @min:%2eisBeaconApiDisabled */]() === false) && isBeaconsSupported()) {\r\n try {\r\n _self[_DYN_TRIGGER_SEND /* @min:%2etriggerSend */](true, _doUnloadSend, 2 /* SendRequestReason.Unload */);\r\n }\r\n catch (e) {\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 20 /* _eInternalMessageId.FailedToSendQueuedTelemetry */, \"failed to flush with beacon sender on page unload, telemetry will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n else {\r\n _self.flush();\r\n }\r\n }\r\n };\r\n _self.addHeader = function (name, value) {\r\n _headers[name] = value;\r\n };\r\n _self.initialize = function (config, core, extensions, pluginChain) {\r\n if (_self.isInitialized()) {\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 28 /* _eInternalMessageId.SenderNotInitialized */, \"Sender is already initialized\");\r\n }\r\n _base.initialize(config, core, extensions, pluginChain);\r\n var ctx = _self._getTelCtx();\r\n var identifier = _self.identifier;\r\n _serializer = new Serializer(core.logger);\r\n _consecutiveErrors = 0;\r\n _retryAt = null;\r\n _lastSend = 0;\r\n _self[_DYN__SENDER /* @min:%2e_sender */] = null;\r\n _stamp_specific_redirects = 0;\r\n var diagLog = _self[_DYN_DIAG_LOG /* @min:%2ediagLog */]();\r\n _evtNamespace = mergeEvtNamespace(createUniqueNamespace(\"Sender\"), core.evtNamespace && core.evtNamespace());\r\n _offlineListener = createOfflineListener(_evtNamespace);\r\n // TODO v3.x: Change the ISenderConfig to not be function calls\r\n var defaultConfig = _getDefaultAppInsightsChannelConfig();\r\n objForEachKey(defaultConfig, function (field, value) {\r\n _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][field] = function () {\r\n var theValue = ctx.getConfig(identifier, field, value());\r\n if (!theValue && field === \"endpointUrl\") {\r\n // Use the default value (handles empty string in the configuration)\r\n theValue = value();\r\n }\r\n return theValue;\r\n };\r\n });\r\n _self._buffer = (_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_ENABLE_SESSION_STORA4 /* @min:%2eenableSessionStorageBuffer */]() && utlCanUseSessionStorage())\r\n ? new SessionStorageSendBuffer(diagLog, _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */]) : new ArraySendBuffer(diagLog, _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */]);\r\n _self._sample = new Sample(_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_SAMPLING_PERCENTAGE /* @min:%2esamplingPercentage */](), diagLog);\r\n if (!_validateInstrumentationKey(config)) {\r\n _throwInternal(diagLog, 1 /* eLoggingSeverity.CRITICAL */, 100 /* _eInternalMessageId.InvalidInstrumentationKey */, \"Invalid Instrumentation key \" + config[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */]);\r\n }\r\n if (!isInternalApplicationInsightsEndpoint(_self._senderConfig.endpointUrl()) && _self._senderConfig.customHeaders() && _self._senderConfig.customHeaders()[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n arrForEach(_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_CUSTOM_HEADERS /* @min:%2ecustomHeaders */](), function (customHeader) {\r\n _this.addHeader(customHeader.header, customHeader.value);\r\n });\r\n }\r\n var senderConfig = _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */];\r\n var sendPostFunc = null;\r\n if (!senderConfig[_DYN_DISABLE_XHR /* @min:%2edisableXhr */]() && useXDomainRequest()) {\r\n sendPostFunc = _xdrSender; // IE 8 and 9\r\n }\r\n else if (!senderConfig[_DYN_DISABLE_XHR /* @min:%2edisableXhr */]() && isXhrSupported()) {\r\n sendPostFunc = _xhrSender;\r\n }\r\n if (!sendPostFunc && isFetchSupported()) {\r\n sendPostFunc = _fetchSender;\r\n }\r\n // always fallback to XHR\r\n _fallbackSender = sendPostFunc || _xhrSender;\r\n if (!senderConfig[_DYN_IS_BEACON_API_DISABL3 /* @min:%2eisBeaconApiDisabled */]() && isBeaconsSupported()) {\r\n // Config is set to always used beacon sending\r\n sendPostFunc = _beaconSender;\r\n }\r\n _self[_DYN__SENDER /* @min:%2e_sender */] = sendPostFunc || _xhrSender;\r\n if (!senderConfig[_DYN_ONUNLOAD_DISABLE_FET5 /* @min:%2eonunloadDisableFetch */]() && isFetchSupported(true)) {\r\n // Try and use the fetch with keepalive\r\n _syncUnloadSender = _fetchKeepAliveSender;\r\n }\r\n else if (isBeaconsSupported()) {\r\n // Try and use sendBeacon\r\n _syncUnloadSender = _beaconSender;\r\n }\r\n else if (!senderConfig[_DYN_DISABLE_XHR /* @min:%2edisableXhr */]() && useXDomainRequest()) {\r\n _syncUnloadSender = _xdrSender; // IE 8 and 9\r\n }\r\n else if (!senderConfig[_DYN_DISABLE_XHR /* @min:%2edisableXhr */]() && isXhrSupported()) {\r\n _syncUnloadSender = _xhrSender;\r\n }\r\n else {\r\n _syncUnloadSender = _fallbackSender;\r\n }\r\n };\r\n _self.processTelemetry = function (telemetryItem, itemCtx) {\r\n itemCtx = _self._getTelCtx(itemCtx);\r\n var diagLogger = itemCtx[_DYN_DIAG_LOG /* @min:%2ediagLog */]();\r\n try {\r\n // if master off switch is set, don't send any data\r\n if (_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_DISABLE_TELEMETRY /* @min:%2edisableTelemetry */]()) {\r\n // Do not send/save data\r\n return;\r\n }\r\n // validate input\r\n if (!telemetryItem) {\r\n _throwInternal(diagLogger, 1 /* eLoggingSeverity.CRITICAL */, 7 /* _eInternalMessageId.CannotSendEmptyTelemetry */, \"Cannot send empty telemetry\");\r\n return;\r\n }\r\n // validate event\r\n if (telemetryItem.baseData && !telemetryItem[_DYN_BASE_TYPE /* @min:%2ebaseType */]) {\r\n _throwInternal(diagLogger, 1 /* eLoggingSeverity.CRITICAL */, 70 /* _eInternalMessageId.InvalidEvent */, \"Cannot send telemetry without baseData and baseType\");\r\n return;\r\n }\r\n if (!telemetryItem[_DYN_BASE_TYPE /* @min:%2ebaseType */]) {\r\n // Default\r\n telemetryItem[_DYN_BASE_TYPE /* @min:%2ebaseType */] = \"EventData\";\r\n }\r\n // ensure a sender was constructed\r\n if (!_self[_DYN__SENDER /* @min:%2e_sender */]) {\r\n _throwInternal(diagLogger, 1 /* eLoggingSeverity.CRITICAL */, 28 /* _eInternalMessageId.SenderNotInitialized */, \"Sender was not initialized\");\r\n return;\r\n }\r\n // check if this item should be sampled in, else add sampleRate tag\r\n if (!_isSampledIn(telemetryItem)) {\r\n // Item is sampled out, do not send it\r\n _throwInternal(diagLogger, 2 /* eLoggingSeverity.WARNING */, 33 /* _eInternalMessageId.TelemetrySampledAndNotSent */, \"Telemetry item was sampled out and not sent\", { SampleRate: _self._sample[_DYN_SAMPLE_RATE /* @min:%2esampleRate */] });\r\n return;\r\n }\r\n else {\r\n telemetryItem[SampleRate] = _self._sample[_DYN_SAMPLE_RATE /* @min:%2esampleRate */];\r\n }\r\n var convertUndefined = _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_CONVERT_UNDEFINED /* @min:%2econvertUndefined */]() || undefined;\r\n // construct an envelope that Application Insights endpoint can understand\r\n // if ikey of telemetry is provided and not empty, envelope will use this iKey instead of senderConfig iKey\r\n var defaultEnvelopeIkey = telemetryItem.iKey || _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */]();\r\n var aiEnvelope_1 = Sender.constructEnvelope(telemetryItem, defaultEnvelopeIkey, diagLogger, convertUndefined);\r\n if (!aiEnvelope_1) {\r\n _throwInternal(diagLogger, 1 /* eLoggingSeverity.CRITICAL */, 47 /* _eInternalMessageId.CreateEnvelopeError */, \"Unable to create an AppInsights envelope\");\r\n return;\r\n }\r\n var doNotSendItem_1 = false;\r\n // this is for running in legacy mode, where customer may already have a custom initializer present\r\n if (telemetryItem[_DYN_TAGS /* @min:%2etags */] && telemetryItem[_DYN_TAGS /* @min:%2etags */][ProcessLegacy]) {\r\n arrForEach(telemetryItem[_DYN_TAGS /* @min:%2etags */][ProcessLegacy], function (callBack) {\r\n try {\r\n if (callBack && callBack(aiEnvelope_1) === false) {\r\n doNotSendItem_1 = true;\r\n _warnToConsole(diagLogger, \"Telemetry processor check returns false\");\r\n }\r\n }\r\n catch (e) {\r\n // log error but dont stop executing rest of the telemetry initializers\r\n // doNotSendItem = true;\r\n _throwInternal(diagLogger, 1 /* eLoggingSeverity.CRITICAL */, 64 /* _eInternalMessageId.TelemetryInitializerFailed */, \"One of telemetry initializers failed, telemetry item will not be sent: \" + getExceptionName(e), { exception: dumpObj(e) }, true);\r\n }\r\n });\r\n delete telemetryItem[_DYN_TAGS /* @min:%2etags */][ProcessLegacy];\r\n }\r\n if (doNotSendItem_1) {\r\n return; // do not send, no need to execute next plugin\r\n }\r\n // check if the incoming payload is too large, truncate if necessary\r\n var payload = _serializer.serialize(aiEnvelope_1);\r\n // flush if we would exceed the max-size limit by adding this item\r\n var buffer = _self[_DYN__BUFFER /* @min:%2e_buffer */];\r\n var bufferSize = buffer.size();\r\n if ((bufferSize + payload[_DYN_LENGTH /* @min:%2elength */]) > _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_MAX_BATCH_SIZE_IN_BY1 /* @min:%2emaxBatchSizeInBytes */]()) {\r\n _self[_DYN_TRIGGER_SEND /* @min:%2etriggerSend */](true, null, 10 /* SendRequestReason.MaxBatchSize */);\r\n }\r\n // enqueue the payload\r\n buffer[_DYN_ENQUEUE /* @min:%2eenqueue */](payload);\r\n // ensure an invocation timeout is set\r\n _setupTimer();\r\n }\r\n catch (e) {\r\n _throwInternal(diagLogger, 2 /* eLoggingSeverity.WARNING */, 12 /* _eInternalMessageId.FailedAddingTelemetryToBuffer */, \"Failed adding telemetry to the sender's buffer, some telemetry will be lost: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n // hand off the telemetry item to the next plugin\r\n _self.processNext(telemetryItem, itemCtx);\r\n };\r\n /**\r\n * xhr state changes\r\n */\r\n _self[_DYN__XHR_READY_STATE_CHA6 /* @min:%2e_xhrReadyStateChange */] = function (xhr, payload, countOfItemsInPayload) {\r\n if (xhr.readyState === 4) {\r\n _checkResponsStatus(xhr.status, payload, xhr.responseURL, countOfItemsInPayload, _formatErrorMessageXhr(xhr), _getResponseText(xhr) || xhr.response);\r\n }\r\n };\r\n /**\r\n * Immediately send buffered data\r\n * @param async {boolean} - Indicates if the events should be sent asynchronously\r\n * @param forcedSender {SenderFunction} - Indicates the forcedSender, undefined if not passed\r\n */\r\n _self[_DYN_TRIGGER_SEND /* @min:%2etriggerSend */] = function (async, forcedSender, sendReason) {\r\n if (async === void 0) { async = true; }\r\n if (!_paused) {\r\n try {\r\n var buffer = _self[_DYN__BUFFER /* @min:%2e_buffer */];\r\n // Send data only if disableTelemetry is false\r\n if (!_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_DISABLE_TELEMETRY /* @min:%2edisableTelemetry */]()) {\r\n if (buffer[_DYN_COUNT /* @min:%2ecount */]() > 0) {\r\n var payload = buffer.getItems();\r\n _notifySendRequest(sendReason || 0 /* SendRequestReason.Undefined */, async);\r\n // invoke send\r\n if (forcedSender) {\r\n forcedSender.call(_this, payload, async);\r\n }\r\n else {\r\n _self[_DYN__SENDER /* @min:%2e_sender */](payload, async);\r\n }\r\n }\r\n // update lastSend time to enable throttling\r\n _lastSend = +new Date;\r\n }\r\n else {\r\n buffer[_DYN_CLEAR /* @min:%2eclear */]();\r\n }\r\n _clearScheduledTimer();\r\n }\r\n catch (e) {\r\n /* Ignore this error for IE under v10 */\r\n var ieVer = getIEVersion();\r\n if (!ieVer || ieVer > 9) {\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 40 /* _eInternalMessageId.TransmissionFailed */, \"Telemetry transmission failed, some telemetry will be lost: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n }\r\n };\r\n _self._doTeardown = function (unloadCtx, unloadState) {\r\n _self.onunloadFlush();\r\n _offlineListener.unload();\r\n _initDefaults();\r\n };\r\n /**\r\n * error handler\r\n */\r\n _self[_DYN__ON_ERROR /* @min:%2e_onError */] = function (payload, message, event) {\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 26 /* _eInternalMessageId.OnError */, \"Failed to send telemetry.\", { message: message });\r\n _self._buffer[_DYN_CLEAR_SENT /* @min:%2eclearSent */](payload);\r\n };\r\n /**\r\n * partial success handler\r\n */\r\n _self[_DYN__ON_PARTIAL_SUCCESS /* @min:%2e_onPartialSuccess */] = function (payload, results) {\r\n var failed = [];\r\n var retry = [];\r\n // Iterate through the reversed array of errors so that splicing doesn't have invalid indexes after the first item.\r\n var errors = results.errors.reverse();\r\n for (var _i = 0, errors_1 = errors; _i < errors_1.length; _i++) {\r\n var error = errors_1[_i];\r\n var extracted = payload.splice(error.index, 1)[0];\r\n if (_isRetriable(error.statusCode)) {\r\n retry[_DYN_PUSH /* @min:%2epush */](extracted);\r\n }\r\n else {\r\n // All other errors, including: 402 (Monthly quota exceeded) and 439 (Too many requests and refresh cache).\r\n failed[_DYN_PUSH /* @min:%2epush */](extracted);\r\n }\r\n }\r\n if (payload[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n _self[_DYN__ON_SUCCESS /* @min:%2e_onSuccess */](payload, results[_DYN_ITEMS_ACCEPTED /* @min:%2eitemsAccepted */]);\r\n }\r\n if (failed[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n _self[_DYN__ON_ERROR /* @min:%2e_onError */](failed, _formatErrorMessageXhr(null, [\"partial success\", results[_DYN_ITEMS_ACCEPTED /* @min:%2eitemsAccepted */], \"of\", results.itemsReceived].join(\" \")));\r\n }\r\n if (retry[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n _resendPayload(retry);\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \"Partial success. \" +\r\n \"Delivered: \" + payload[_DYN_LENGTH /* @min:%2elength */] + \", Failed: \" + failed[_DYN_LENGTH /* @min:%2elength */] +\r\n \". Will retry to send \" + retry[_DYN_LENGTH /* @min:%2elength */] + \" our of \" + results[_DYN_ITEMS_RECEIVED /* @min:%2eitemsReceived */] + \" items\");\r\n }\r\n };\r\n /**\r\n * success handler\r\n */\r\n _self[_DYN__ON_SUCCESS /* @min:%2e_onSuccess */] = function (payload, countOfItemsInPayload) {\r\n _self._buffer[_DYN_CLEAR_SENT /* @min:%2eclearSent */](payload);\r\n };\r\n /**\r\n * xdr state changes\r\n */\r\n _self._xdrOnLoad = function (xdr, payload) {\r\n var responseText = _getResponseText(xdr);\r\n if (xdr && (responseText + \"\" === \"200\" || responseText === \"\")) {\r\n _consecutiveErrors = 0;\r\n _self[_DYN__ON_SUCCESS /* @min:%2e_onSuccess */](payload, 0);\r\n }\r\n else {\r\n var results = _parseResponse(responseText);\r\n if (results && results.itemsReceived && results.itemsReceived > results[_DYN_ITEMS_ACCEPTED /* @min:%2eitemsAccepted */]\r\n && !_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_IS_RETRY_DISABLED /* @min:%2eisRetryDisabled */]()) {\r\n _self[_DYN__ON_PARTIAL_SUCCESS /* @min:%2e_onPartialSuccess */](payload, results);\r\n }\r\n else {\r\n _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, _formatErrorMessageXdr(xdr));\r\n }\r\n }\r\n };\r\n function _isSampledIn(envelope) {\r\n return _self._sample.isSampledIn(envelope);\r\n }\r\n function _checkResponsStatus(status, payload, responseUrl, countOfItemsInPayload, errorMessage, res) {\r\n var response = null;\r\n if (!_self._appId) {\r\n response = _parseResponse(res);\r\n if (response && response.appId) {\r\n _self._appId = response.appId;\r\n }\r\n }\r\n if ((status < 200 || status >= 300) && status !== 0) {\r\n // Update End Point url if permanent redirect or moved permanently\r\n // Updates the end point url before retry\r\n if (status === 301 || status === 307 || status === 308) {\r\n if (!_checkAndUpdateEndPointUrl(responseUrl)) {\r\n _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, errorMessage);\r\n return;\r\n }\r\n }\r\n if (!_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_IS_RETRY_DISABLED /* @min:%2eisRetryDisabled */]() && _isRetriable(status)) {\r\n _resendPayload(payload);\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \". \" +\r\n \"Response code \" + status + \". Will retry to send \" + payload[_DYN_LENGTH /* @min:%2elength */] + \" items.\");\r\n }\r\n else {\r\n _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, errorMessage);\r\n }\r\n }\r\n else if (_offlineListener && !_offlineListener.isOnline()) { // offline\r\n // Note: Don't check for status == 0, since adblock gives this code\r\n if (!_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_IS_RETRY_DISABLED /* @min:%2eisRetryDisabled */]()) {\r\n var offlineBackOffMultiplier = 10; // arbritrary number\r\n _resendPayload(payload, offlineBackOffMultiplier);\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \". Offline - Response Code: \".concat(status, \". Offline status: \").concat(!_offlineListener.isOnline(), \". Will retry to send \").concat(payload.length, \" items.\"));\r\n }\r\n }\r\n else {\r\n // check if the xhr's responseURL or fetch's response.url is same as endpoint url\r\n // TODO after 10 redirects force send telemetry with 'redirect=false' as query parameter.\r\n _checkAndUpdateEndPointUrl(responseUrl);\r\n if (status === 206) {\r\n if (!response) {\r\n response = _parseResponse(res);\r\n }\r\n if (response && !_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_IS_RETRY_DISABLED /* @min:%2eisRetryDisabled */]()) {\r\n _self[_DYN__ON_PARTIAL_SUCCESS /* @min:%2e_onPartialSuccess */](payload, response);\r\n }\r\n else {\r\n _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, errorMessage);\r\n }\r\n }\r\n else {\r\n _consecutiveErrors = 0;\r\n _self[_DYN__ON_SUCCESS /* @min:%2e_onSuccess */](payload, countOfItemsInPayload);\r\n }\r\n }\r\n }\r\n function _checkAndUpdateEndPointUrl(responseUrl) {\r\n // Maximum stamp specific redirects allowed(uncomment this when breeze is ready with not allowing redirects feature)\r\n if (_stamp_specific_redirects >= 10) {\r\n // _self._senderConfig.endpointUrl = () => Sender._getDefaultAppInsightsChannelConfig().endpointUrl()+\"/?redirect=false\";\r\n // _stamp_specific_redirects = 0;\r\n return false;\r\n }\r\n if (!isNullOrUndefined(responseUrl) && responseUrl !== \"\") {\r\n if (responseUrl !== _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */]()) {\r\n _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */] = function () { return responseUrl; };\r\n ++_stamp_specific_redirects;\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n function _doUnloadSend(payload, isAsync) {\r\n if (_syncUnloadSender) {\r\n // We are unloading so always call the sender with sync set to false\r\n _syncUnloadSender(payload, false);\r\n }\r\n else {\r\n // Fallback to the previous beacon Sender (which causes a CORB warning on chrome now)\r\n _beaconSender(payload, isAsync);\r\n }\r\n }\r\n function _doBeaconSend(payload) {\r\n var nav = getNavigator();\r\n var buffer = _self[_DYN__BUFFER /* @min:%2e_buffer */];\r\n var url = _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */]();\r\n var batch = _self._buffer[_DYN_BATCH_PAYLOADS /* @min:%2ebatchPayloads */](payload);\r\n // Chrome only allows CORS-safelisted values for the sendBeacon data argument\r\n // see: https://bugs.chromium.org/p/chromium/issues/detail?id=720283\r\n var plainTextBatch = new Blob([batch], { type: \"text/plain;charset=UTF-8\" });\r\n // The sendBeacon method returns true if the user agent is able to successfully queue the data for transfer. Otherwise it returns false.\r\n var queued = nav.sendBeacon(url, plainTextBatch);\r\n if (queued) {\r\n buffer[_DYN_MARK_AS_SENT /* @min:%2emarkAsSent */](payload);\r\n // no response from beaconSender, clear buffer\r\n _self._onSuccess(payload, payload[_DYN_LENGTH /* @min:%2elength */]);\r\n }\r\n return queued;\r\n }\r\n /**\r\n * Send Beacon API request\r\n * @param payload {string} - The data payload to be sent.\r\n * @param isAsync {boolean} - not used\r\n * Note: Beacon API does not support custom headers and we are not able to get\r\n * appId from the backend for the correct correlation.\r\n */\r\n function _beaconSender(payload, isAsync) {\r\n if (isArray(payload) && payload[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n // The sendBeacon method returns true if the user agent is able to successfully queue the data for transfer. Otherwise it returns false.\r\n if (!_doBeaconSend(payload)) {\r\n // Failed to send entire payload so try and split data and try to send as much events as possible\r\n var droppedPayload = [];\r\n for (var lp = 0; lp < payload[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n var thePayload = payload[lp];\r\n if (!_doBeaconSend([thePayload])) {\r\n // Can't send anymore, so split the batch and drop the rest\r\n droppedPayload[_DYN_PUSH /* @min:%2epush */](thePayload);\r\n }\r\n }\r\n if (droppedPayload[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n _fallbackSender && _fallbackSender(droppedPayload, true);\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \". \" + \"Failed to send telemetry with Beacon API, retried with normal sender.\");\r\n }\r\n }\r\n }\r\n }\r\n /**\r\n * Send XMLHttpRequest\r\n * @param payload {string} - The data payload to be sent.\r\n * @param isAsync {boolean} - Indicates if the request should be sent asynchronously\r\n */\r\n function _xhrSender(payload, isAsync) {\r\n var xhr = new XMLHttpRequest();\r\n var endPointUrl = _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */]();\r\n try {\r\n xhr[DisabledPropertyName] = true;\r\n }\r\n catch (e) {\r\n // If the environment has locked down the XMLHttpRequest (preventExtensions and/or freeze), this would\r\n // cause the request to fail and we no telemetry would be sent\r\n }\r\n xhr.open(\"POST\", endPointUrl, isAsync);\r\n xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](\"Content-type\", \"application/json\");\r\n // append Sdk-Context request header only in case of breeze endpoint\r\n if (isInternalApplicationInsightsEndpoint(endPointUrl)) {\r\n xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](RequestHeaders[6 /* eRequestHeaders.sdkContextHeader */], RequestHeaders[7 /* eRequestHeaders.sdkContextHeaderAppIdRequest */]);\r\n }\r\n arrForEach(objKeys(_headers), function (headerName) {\r\n xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](headerName, _headers[headerName]);\r\n });\r\n xhr.onreadystatechange = function () { return _self._xhrReadyStateChange(xhr, payload, payload[_DYN_LENGTH /* @min:%2elength */]); };\r\n xhr.onerror = function (event) { return _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, _formatErrorMessageXhr(xhr), event); };\r\n // compose an array of payloads\r\n var batch = _self._buffer[_DYN_BATCH_PAYLOADS /* @min:%2ebatchPayloads */](payload);\r\n xhr.send(batch);\r\n _self._buffer[_DYN_MARK_AS_SENT /* @min:%2emarkAsSent */](payload);\r\n }\r\n function _fetchKeepAliveSender(payload, isAsync) {\r\n if (isArray(payload)) {\r\n var payloadSize = payload[_DYN_LENGTH /* @min:%2elength */];\r\n for (var lp = 0; lp < payload[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n payloadSize += payload[lp][_DYN_LENGTH /* @min:%2elength */];\r\n }\r\n if ((_syncFetchPayload + payloadSize) <= FetchSyncRequestSizeLimitBytes) {\r\n _doFetchSender(payload, false);\r\n }\r\n else if (isBeaconsSupported()) {\r\n // Fallback to beacon sender as we at least get told which events can't be scheduled\r\n _beaconSender(payload, isAsync);\r\n }\r\n else {\r\n // Payload is going to be too big so just try and send via XHR\r\n _fallbackSender && _fallbackSender(payload, true);\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \". \" + \"Failed to send telemetry with Beacon API, retried with xhrSender.\");\r\n }\r\n }\r\n }\r\n /**\r\n * Send fetch API request\r\n * @param payload {string} - The data payload to be sent.\r\n * @param isAsync {boolean} - not used\r\n */\r\n function _fetchSender(payload, isAsync) {\r\n _doFetchSender(payload, true);\r\n }\r\n /**\r\n * Send fetch API request\r\n * @param payload {string} - The data payload to be sent.\r\n * @param isAsync {boolean} - For fetch this identifies whether we are \"unloading\" (false) or a normal request\r\n */\r\n function _doFetchSender(payload, isAsync) {\r\n var _a;\r\n var endPointUrl = _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */]();\r\n var batch = _self._buffer[_DYN_BATCH_PAYLOADS /* @min:%2ebatchPayloads */](payload);\r\n var plainTextBatch = new Blob([batch], { type: \"application/json\" });\r\n var requestHeaders = new Headers();\r\n var batchLength = batch[_DYN_LENGTH /* @min:%2elength */];\r\n var ignoreResponse = false;\r\n var responseHandled = false;\r\n // append Sdk-Context request header only in case of breeze endpoint\r\n if (isInternalApplicationInsightsEndpoint(endPointUrl)) {\r\n requestHeaders.append(RequestHeaders[6 /* eRequestHeaders.sdkContextHeader */], RequestHeaders[7 /* eRequestHeaders.sdkContextHeaderAppIdRequest */]);\r\n }\r\n arrForEach(objKeys(_headers), function (headerName) {\r\n requestHeaders.append(headerName, _headers[headerName]);\r\n });\r\n var init = (_a = {\r\n method: \"POST\",\r\n headers: requestHeaders,\r\n body: plainTextBatch\r\n },\r\n _a[DisabledPropertyName] = true // Mark so we don't attempt to track this request\r\n ,\r\n _a);\r\n if (!isAsync) {\r\n init.keepalive = true;\r\n // As a sync request (during unload), it is unlikely that we will get a chance to process the response so\r\n // just like beacon send assume that the events have been accepted and processed\r\n ignoreResponse = true;\r\n _syncFetchPayload += batchLength;\r\n }\r\n var request = new Request(endPointUrl, init);\r\n try {\r\n // Also try and tag the request (just in case the value in init is not copied over)\r\n request[DisabledPropertyName] = true;\r\n }\r\n catch (e) {\r\n // If the environment has locked down the XMLHttpRequest (preventExtensions and/or freeze), this would\r\n // cause the request to fail and we no telemetry would be sent\r\n }\r\n _self._buffer[_DYN_MARK_AS_SENT /* @min:%2emarkAsSent */](payload);\r\n try {\r\n fetch(request).then(function (response) {\r\n if (!isAsync) {\r\n _syncFetchPayload -= batchLength;\r\n batchLength = 0;\r\n }\r\n if (!responseHandled) {\r\n responseHandled = true;\r\n /**\r\n * The Promise returned from fetch() won’t reject on HTTP error status even if the response is an HTTP 404 or 500.\r\n * Instead, it will resolve normally (with ok status set to false), and it will only reject on network failure\r\n * or if anything prevented the request from completing.\r\n */\r\n if (!response.ok) {\r\n _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, response.statusText);\r\n }\r\n else {\r\n response.text().then(function (text) {\r\n _checkResponsStatus(response.status, payload, response.url, payload[_DYN_LENGTH /* @min:%2elength */], response.statusText, text);\r\n });\r\n }\r\n }\r\n })[\"catch\"](function (error) {\r\n if (!isAsync) {\r\n _syncFetchPayload -= batchLength;\r\n batchLength = 0;\r\n }\r\n if (!responseHandled) {\r\n responseHandled = true;\r\n _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, error.message);\r\n }\r\n });\r\n }\r\n catch (e) {\r\n if (!responseHandled) {\r\n _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, dumpObj(e));\r\n }\r\n }\r\n if (ignoreResponse && !responseHandled) {\r\n // Assume success during unload processing as we most likely won't get the response\r\n responseHandled = true;\r\n _self._onSuccess(payload, payload[_DYN_LENGTH /* @min:%2elength */]);\r\n }\r\n }\r\n /**\r\n * Parses the response from the backend.\r\n * @param response - XMLHttpRequest or XDomainRequest response\r\n */\r\n function _parseResponse(response) {\r\n try {\r\n if (response && response !== \"\") {\r\n var result = getJSON().parse(response);\r\n if (result && result.itemsReceived && result.itemsReceived >= result[_DYN_ITEMS_ACCEPTED /* @min:%2eitemsAccepted */] &&\r\n result.itemsReceived - result.itemsAccepted === result.errors[_DYN_LENGTH /* @min:%2elength */]) {\r\n return result;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 43 /* _eInternalMessageId.InvalidBackendResponse */, \"Cannot parse the response. \" + getExceptionName(e), {\r\n response: response\r\n });\r\n }\r\n return null;\r\n }\r\n /**\r\n * Resend payload. Adds payload back to the send buffer and setup a send timer (with exponential backoff).\r\n * @param payload\r\n */\r\n function _resendPayload(payload, linearFactor) {\r\n if (linearFactor === void 0) { linearFactor = 1; }\r\n if (!payload || payload[_DYN_LENGTH /* @min:%2elength */] === 0) {\r\n return;\r\n }\r\n var buffer = _self[_DYN__BUFFER /* @min:%2e_buffer */];\r\n buffer[_DYN_CLEAR_SENT /* @min:%2eclearSent */](payload);\r\n _consecutiveErrors++;\r\n for (var _i = 0, payload_1 = payload; _i < payload_1.length; _i++) {\r\n var item = payload_1[_i];\r\n buffer[_DYN_ENQUEUE /* @min:%2eenqueue */](item);\r\n }\r\n // setup timer\r\n _setRetryTime(linearFactor);\r\n _setupTimer();\r\n }\r\n /**\r\n * Calculates the time to wait before retrying in case of an error based on\r\n * http://en.wikipedia.org/wiki/Exponential_backoff\r\n */\r\n function _setRetryTime(linearFactor) {\r\n var SlotDelayInSeconds = 10;\r\n var delayInSeconds;\r\n if (_consecutiveErrors <= 1) {\r\n delayInSeconds = SlotDelayInSeconds;\r\n }\r\n else {\r\n var backOffSlot = (Math.pow(2, _consecutiveErrors) - 1) / 2;\r\n // tslint:disable-next-line:insecure-random\r\n var backOffDelay = Math.floor(Math.random() * backOffSlot * SlotDelayInSeconds) + 1;\r\n backOffDelay = linearFactor * backOffDelay;\r\n delayInSeconds = Math.max(Math.min(backOffDelay, 3600), SlotDelayInSeconds);\r\n }\r\n // TODO: Log the backoff time like the C# version does.\r\n var retryAfterTimeSpan = dateNow() + (delayInSeconds * 1000);\r\n // TODO: Log the retry at time like the C# version does.\r\n _retryAt = retryAfterTimeSpan;\r\n }\r\n /**\r\n * Sets up the timer which triggers actually sending the data.\r\n */\r\n function _setupTimer() {\r\n if (!_timeoutHandle && !_paused) {\r\n var retryInterval = _retryAt ? Math.max(0, _retryAt - dateNow()) : 0;\r\n var timerValue = Math.max(_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_MAX_BATCH_INTERVAL /* @min:%2emaxBatchInterval */](), retryInterval);\r\n _timeoutHandle = setTimeout(function () {\r\n _timeoutHandle = null;\r\n _self[_DYN_TRIGGER_SEND /* @min:%2etriggerSend */](true, null, 1 /* SendRequestReason.NormalSchedule */);\r\n }, timerValue);\r\n }\r\n }\r\n function _clearScheduledTimer() {\r\n clearTimeout(_timeoutHandle);\r\n _timeoutHandle = null;\r\n _retryAt = null;\r\n }\r\n /**\r\n * Checks if the SDK should resend the payload after receiving this status code from the backend.\r\n * @param statusCode\r\n */\r\n function _isRetriable(statusCode) {\r\n return statusCode === 401 // Unauthorized\r\n || statusCode === 403 // Forbidden\r\n || statusCode === 408 // Timeout\r\n || statusCode === 429 // Too many requests.\r\n || statusCode === 500 // Internal server error.\r\n || statusCode === 502 // Bad Gateway.\r\n || statusCode === 503 // Service unavailable.\r\n || statusCode === 504; // Gateway timeout.\r\n }\r\n function _formatErrorMessageXhr(xhr, message) {\r\n if (xhr) {\r\n return \"XMLHttpRequest,Status:\" + xhr.status + \",Response:\" + _getResponseText(xhr) || xhr.response || \"\";\r\n }\r\n return message;\r\n }\r\n /**\r\n * Send XDomainRequest\r\n * @param payload {string} - The data payload to be sent.\r\n * @param isAsync {boolean} - Indicates if the request should be sent asynchronously\r\n *\r\n * Note: XDomainRequest does not support sync requests. This 'isAsync' parameter is added\r\n * to maintain consistency with the xhrSender's contract\r\n * Note: XDomainRequest does not support custom headers and we are not able to get\r\n * appId from the backend for the correct correlation.\r\n */\r\n function _xdrSender(payload, isAsync) {\r\n var buffer = _self[_DYN__BUFFER /* @min:%2e_buffer */];\r\n var _window = getWindow();\r\n var xdr = new XDomainRequest();\r\n xdr.onload = function () { return _self._xdrOnLoad(xdr, payload); };\r\n xdr.onerror = function (event) { return _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, _formatErrorMessageXdr(xdr), event); };\r\n // XDomainRequest requires the same protocol as the hosting page.\r\n // If the protocol doesn't match, we can't send the telemetry :(.\r\n var hostingProtocol = _window && _window.location && _window.location.protocol || \"\";\r\n if (_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */]().lastIndexOf(hostingProtocol, 0) !== 0) {\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \". \" +\r\n \"Cannot send XDomain request. The endpoint URL protocol doesn't match the hosting page protocol.\");\r\n buffer[_DYN_CLEAR /* @min:%2eclear */]();\r\n return;\r\n }\r\n var endpointUrl = _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */]().replace(/^(https?:)/, \"\");\r\n xdr.open(\"POST\", endpointUrl);\r\n // compose an array of payloads\r\n var batch = buffer[_DYN_BATCH_PAYLOADS /* @min:%2ebatchPayloads */](payload);\r\n xdr.send(batch);\r\n buffer[_DYN_MARK_AS_SENT /* @min:%2emarkAsSent */](payload);\r\n }\r\n function _formatErrorMessageXdr(xdr, message) {\r\n if (xdr) {\r\n return \"XDomainRequest,Response:\" + _getResponseText(xdr) || \"\";\r\n }\r\n return message;\r\n }\r\n // Using function lookups for backward compatibility as the getNotifyMgr() did not exist until after v2.5.6\r\n function _getNotifyMgr() {\r\n var func = \"getNotifyMgr\";\r\n if (_self.core[func]) {\r\n return _self.core[func]();\r\n }\r\n // using _self.core['_notificationManager'] for backward compatibility\r\n return _self.core[\"_notificationManager\"];\r\n }\r\n function _notifySendRequest(sendRequest, isAsync) {\r\n var manager = _getNotifyMgr();\r\n if (manager && manager[_DYN_EVENTS_SEND_REQUEST /* @min:%2eeventsSendRequest */]) {\r\n try {\r\n manager[_DYN_EVENTS_SEND_REQUEST /* @min:%2eeventsSendRequest */](sendRequest, isAsync);\r\n }\r\n catch (e) {\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 74 /* _eInternalMessageId.NotificationException */, \"send request notification failed: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n }\r\n /**\r\n * Validate UUID Format\r\n * Specs taken from https://tools.ietf.org/html/rfc4122 and breeze repo\r\n */\r\n function _validateInstrumentationKey(config) {\r\n var disableIKeyValidationFlag = isNullOrUndefined(config[_DYN_DISABLE_INSTRUMENTAT7 /* @min:%2edisableInstrumentationKeyValidation */]) ? false : config[_DYN_DISABLE_INSTRUMENTAT7 /* @min:%2edisableInstrumentationKeyValidation */];\r\n if (disableIKeyValidationFlag) {\r\n return true;\r\n }\r\n var UUID_Regex = \"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$\";\r\n var regexp = new RegExp(UUID_Regex);\r\n return regexp.test(config[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */]);\r\n }\r\n function _initDefaults() {\r\n _self[_DYN__SENDER /* @min:%2e_sender */] = null;\r\n _self[_DYN__BUFFER /* @min:%2e_buffer */] = null;\r\n _self._appId = null;\r\n _self._sample = null;\r\n _headers = {};\r\n _offlineListener = null;\r\n _consecutiveErrors = 0;\r\n _retryAt = null;\r\n _lastSend = null;\r\n _paused = false;\r\n _timeoutHandle = null;\r\n _serializer = null;\r\n _stamp_specific_redirects = 0;\r\n _syncFetchPayload = 0;\r\n _fallbackSender = null;\r\n _syncUnloadSender = null;\r\n _evtNamespace = null;\r\n }\r\n });\r\n return _this;\r\n }\r\n Sender.constructEnvelope = function (orig, iKey, logger, convertUndefined) {\r\n var envelope;\r\n if (iKey !== orig.iKey && !isNullOrUndefined(iKey)) {\r\n envelope = __assign(__assign({}, orig), { iKey: iKey });\r\n }\r\n else {\r\n envelope = orig;\r\n }\r\n var creator = EnvelopeTypeCreator[envelope.baseType] || EventEnvelopeCreator;\r\n return creator(logger, envelope, convertUndefined);\r\n };\r\n /**\r\n * Pause the sending (transmission) of events, this will cause all events to be batched only until the maximum limits are\r\n * hit at which point new events are dropped. Will also cause events to NOT be sent during page unload, so if Session storage\r\n * is disabled events will be lost.\r\n * SessionStorage Limit is 2000 events, In-Memory (Array) Storage is 10,000 events (can be configured via the eventsLimitInMem).\r\n */\r\n Sender.prototype.pause = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Resume the sending (transmission) of events, this will restart the timer and any batched events will be sent using the normal\r\n * send interval.\r\n */\r\n Sender.prototype.resume = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Flush the batched events immediately (not synchronously).\r\n * Will not flush if the Sender has been paused.\r\n */\r\n Sender.prototype.flush = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Flush the batched events synchronously (if possible -- based on configuration).\r\n * Will not flush if the Send has been paused.\r\n */\r\n Sender.prototype.onunloadFlush = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n Sender.prototype.initialize = function (config, core, extensions, pluginChain) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n Sender.prototype.processTelemetry = function (telemetryItem, itemCtx) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * xhr state changes\r\n */\r\n Sender.prototype._xhrReadyStateChange = function (xhr, payload, countOfItemsInPayload) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Immediately send buffered data\r\n * @param async {boolean} - Indicates if the events should be sent asynchronously\r\n * @param forcedSender {SenderFunction} - Indicates the forcedSender, undefined if not passed\r\n */\r\n Sender.prototype.triggerSend = function (async, forcedSender, sendReason) {\r\n if (async === void 0) { async = true; }\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * error handler\r\n */\r\n Sender.prototype._onError = function (payload, message, event) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * partial success handler\r\n */\r\n Sender.prototype._onPartialSuccess = function (payload, results) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * success handler\r\n */\r\n Sender.prototype._onSuccess = function (payload, countOfItemsInPayload) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * xdr state changes\r\n */\r\n Sender.prototype._xdrOnLoad = function (xdr, payload) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Add header to request\r\n * @param name - Header name.\r\n * @param value - Header value.\r\n */\r\n Sender.prototype.addHeader = function (name, value) {\r\n // @DynamicProtoStub - DO NOT add any code as this will be removed during packaging\r\n };\r\n return Sender;\r\n}(BaseTelemetryPlugin));\r\nexport { Sender };\r\n//# sourceMappingURL=Sender.js.map","import dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { _throwInternal, getJSON, isArray, isFunction, isObject, objForEachKey } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_LENGTH, _DYN_PUSH, _DYN_STRINGIFY, _DYN_TO_STRING } from \"./__DynamicConstants\";\r\nvar Serializer = /** @class */ (function () {\r\n function Serializer(logger) {\r\n dynamicProto(Serializer, this, function (_self) {\r\n /**\r\n * Serializes the current object to a JSON string.\r\n */\r\n _self.serialize = function (input) {\r\n var output = _serializeObject(input, \"root\");\r\n try {\r\n return getJSON()[_DYN_STRINGIFY /* @min:%2estringify */](output);\r\n }\r\n catch (e) {\r\n // if serialization fails return an empty string\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 48 /* _eInternalMessageId.CannotSerializeObject */, (e && isFunction(e[_DYN_TO_STRING /* @min:%2etoString */])) ? e[_DYN_TO_STRING /* @min:%2etoString */]() : \"Error serializing object\", null, true);\r\n }\r\n };\r\n function _serializeObject(source, name) {\r\n var circularReferenceCheck = \"__aiCircularRefCheck\";\r\n var output = {};\r\n if (!source) {\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 48 /* _eInternalMessageId.CannotSerializeObject */, \"cannot serialize object because it is null or undefined\", { name: name }, true);\r\n return output;\r\n }\r\n if (source[circularReferenceCheck]) {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 50 /* _eInternalMessageId.CircularReferenceDetected */, \"Circular reference detected while serializing object\", { name: name }, true);\r\n return output;\r\n }\r\n if (!source.aiDataContract) {\r\n // special case for measurements/properties/tags\r\n if (name === \"measurements\") {\r\n output = _serializeStringMap(source, \"number\", name);\r\n }\r\n else if (name === \"properties\") {\r\n output = _serializeStringMap(source, \"string\", name);\r\n }\r\n else if (name === \"tags\") {\r\n output = _serializeStringMap(source, \"string\", name);\r\n }\r\n else if (isArray(source)) {\r\n output = _serializeArray(source, name);\r\n }\r\n else {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 49 /* _eInternalMessageId.CannotSerializeObjectNonSerializable */, \"Attempting to serialize an object which does not implement ISerializable\", { name: name }, true);\r\n try {\r\n // verify that the object can be stringified\r\n getJSON()[_DYN_STRINGIFY /* @min:%2estringify */](source);\r\n output = source;\r\n }\r\n catch (e) {\r\n // if serialization fails return an empty string\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 48 /* _eInternalMessageId.CannotSerializeObject */, (e && isFunction(e[_DYN_TO_STRING /* @min:%2etoString */])) ? e[_DYN_TO_STRING /* @min:%2etoString */]() : \"Error serializing object\", null, true);\r\n }\r\n }\r\n return output;\r\n }\r\n source[circularReferenceCheck] = true;\r\n objForEachKey(source.aiDataContract, function (field, contract) {\r\n var isRequired = (isFunction(contract)) ? (contract() & 1 /* FieldType.Required */) : (contract & 1 /* FieldType.Required */);\r\n var isHidden = (isFunction(contract)) ? (contract() & 4 /* FieldType.Hidden */) : (contract & 4 /* FieldType.Hidden */);\r\n var isArray = contract & 2 /* FieldType.Array */;\r\n var isPresent = source[field] !== undefined;\r\n var isObj = isObject(source[field]) && source[field] !== null;\r\n if (isRequired && !isPresent && !isArray) {\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 24 /* _eInternalMessageId.MissingRequiredFieldSpecification */, \"Missing required field specification. The field is required but not present on source\", { field: field, name: name });\r\n // If not in debug mode, continue and hope the error is permissible\r\n }\r\n else if (!isHidden) { // Don't serialize hidden fields\r\n var value = void 0;\r\n if (isObj) {\r\n if (isArray) {\r\n // special case; recurse on each object in the source array\r\n value = _serializeArray(source[field], field);\r\n }\r\n else {\r\n // recurse on the source object in this field\r\n value = _serializeObject(source[field], field);\r\n }\r\n }\r\n else {\r\n // assign the source field to the output even if undefined or required\r\n value = source[field];\r\n }\r\n // only emit this field if the value is defined\r\n if (value !== undefined) {\r\n output[field] = value;\r\n }\r\n }\r\n });\r\n delete source[circularReferenceCheck];\r\n return output;\r\n }\r\n function _serializeArray(sources, name) {\r\n var output;\r\n if (!!sources) {\r\n if (!isArray(sources)) {\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 54 /* _eInternalMessageId.ItemNotInArray */, \"This field was specified as an array in the contract but the item is not an array.\\r\\n\", { name: name }, true);\r\n }\r\n else {\r\n output = [];\r\n for (var i = 0; i < sources[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n var source = sources[i];\r\n var item = _serializeObject(source, name + \"[\" + i + \"]\");\r\n output[_DYN_PUSH /* @min:%2epush */](item);\r\n }\r\n }\r\n }\r\n return output;\r\n }\r\n function _serializeStringMap(map, expectedType, name) {\r\n var output;\r\n if (map) {\r\n output = {};\r\n objForEachKey(map, function (field, value) {\r\n if (expectedType === \"string\") {\r\n if (value === undefined) {\r\n output[field] = \"undefined\";\r\n }\r\n else if (value === null) {\r\n output[field] = \"null\";\r\n }\r\n else if (!value[_DYN_TO_STRING /* @min:%2etoString */]) {\r\n output[field] = \"invalid field: toString() is not defined.\";\r\n }\r\n else {\r\n output[field] = value[_DYN_TO_STRING /* @min:%2etoString */]();\r\n }\r\n }\r\n else if (expectedType === \"number\") {\r\n if (value === undefined) {\r\n output[field] = \"undefined\";\r\n }\r\n else if (value === null) {\r\n output[field] = \"null\";\r\n }\r\n else {\r\n var num = parseFloat(value);\r\n if (isNaN(num)) {\r\n output[field] = \"NaN\";\r\n }\r\n else {\r\n output[field] = num;\r\n }\r\n }\r\n }\r\n else {\r\n output[field] = \"invalid field: \" + name + \" is of unknown type.\";\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, output[field], null, true);\r\n }\r\n });\r\n }\r\n return output;\r\n }\r\n });\r\n }\r\n /**\r\n * Serializes the current object to a JSON string.\r\n */\r\n Serializer.prototype.serialize = function (input) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n return Serializer;\r\n}());\r\nexport { Serializer };\r\n//# sourceMappingURL=Serializer.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { _DYN_LENGTH } from \"../../__DynamicConstants\";\r\n// (Magic number) DJB algorithm can't work on shorter strings (results in poor distribution\r\nvar MIN_INPUT_LENGTH = 8;\r\nvar HashCodeScoreGenerator = /** @class */ (function () {\r\n function HashCodeScoreGenerator() {\r\n }\r\n HashCodeScoreGenerator.prototype.getHashCodeScore = function (key) {\r\n var score = this.getHashCode(key) / HashCodeScoreGenerator.INT_MAX_VALUE;\r\n return score * 100;\r\n };\r\n HashCodeScoreGenerator.prototype.getHashCode = function (input) {\r\n if (input === \"\") {\r\n return 0;\r\n }\r\n while (input[_DYN_LENGTH /* @min:%2elength */] < MIN_INPUT_LENGTH) {\r\n input = input.concat(input);\r\n }\r\n // 5381 is a magic number: http://stackoverflow.com/questions/10696223/reason-for-5381-number-in-djb-hash-function\r\n var hash = 5381;\r\n for (var i = 0; i < input[_DYN_LENGTH /* @min:%2elength */]; ++i) {\r\n hash = ((hash << 5) + hash) + input.charCodeAt(i);\r\n // 'hash' is of number type which means 53 bit integer (http://www.ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types-number-type)\r\n // 'hash & hash' will keep it 32 bit integer - just to make it clearer what the result is.\r\n hash = hash & hash;\r\n }\r\n return Math.abs(hash);\r\n };\r\n // We're using 32 bit math, hence max value is (2^31 - 1)\r\n HashCodeScoreGenerator.INT_MAX_VALUE = 2147483647;\r\n return HashCodeScoreGenerator;\r\n}());\r\nexport { HashCodeScoreGenerator };\r\n//# sourceMappingURL=HashCodeScoreGenerator.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { ContextTagKeys } from \"@microsoft/applicationinsights-common\";\r\nimport { _DYN_GET_HASH_CODE_SCORE, _DYN_GET_SAMPLING_SCORE, _DYN_TAGS, _DYN_TRACE_ID } from \"../../__DynamicConstants\";\r\nimport { HashCodeScoreGenerator } from \"./HashCodeScoreGenerator\";\r\nvar SamplingScoreGenerator = /** @class */ (function () {\r\n function SamplingScoreGenerator() {\r\n var _self = this;\r\n var hashCodeGenerator = new HashCodeScoreGenerator();\r\n var keys = new ContextTagKeys();\r\n _self[_DYN_GET_SAMPLING_SCORE /* @min:%2egetSamplingScore */] = function (item) {\r\n var score = 0;\r\n if (item[_DYN_TAGS /* @min:%2etags */] && item[_DYN_TAGS /* @min:%2etags */][keys.userId]) { // search in tags first, then ext\r\n score = hashCodeGenerator.getHashCodeScore(item[_DYN_TAGS /* @min:%2etags */][keys.userId]);\r\n }\r\n else if (item.ext && item.ext.user && item.ext.user.id) {\r\n score = hashCodeGenerator[_DYN_GET_HASH_CODE_SCORE /* @min:%2egetHashCodeScore */](item.ext.user.id);\r\n }\r\n else if (item[_DYN_TAGS /* @min:%2etags */] && item[_DYN_TAGS /* @min:%2etags */][keys.operationId]) { // search in tags first, then ext\r\n score = hashCodeGenerator.getHashCodeScore(item[_DYN_TAGS /* @min:%2etags */][keys.operationId]);\r\n }\r\n else if (item.ext && item.ext.telemetryTrace && item.ext.telemetryTrace[_DYN_TRACE_ID /* @min:%2etraceID */]) {\r\n score = hashCodeGenerator.getHashCodeScore(item.ext.telemetryTrace[_DYN_TRACE_ID /* @min:%2etraceID */]);\r\n }\r\n else {\r\n // tslint:disable-next-line:insecure-random\r\n score = (Math.random() * 100);\r\n }\r\n return score;\r\n };\r\n }\r\n return SamplingScoreGenerator;\r\n}());\r\nexport { SamplingScoreGenerator };\r\n//# sourceMappingURL=SamplingScoreGenerator.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { Metric } from \"@microsoft/applicationinsights-common\";\r\nimport { safeGetLogger } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_DATA_TYPE, _DYN_GET_SAMPLING_SCORE, _DYN_SAMPLE_RATE } from \"../__DynamicConstants\";\r\nimport { SamplingScoreGenerator } from \"./SamplingScoreGenerators/SamplingScoreGenerator\";\r\nvar Sample = /** @class */ (function () {\r\n function Sample(sampleRate, logger) {\r\n // We're using 32 bit math, hence max value is (2^31 - 1)\r\n this.INT_MAX_VALUE = 2147483647;\r\n var _logger = logger || safeGetLogger(null);\r\n if (sampleRate > 100 || sampleRate < 0) {\r\n _logger.throwInternal(2 /* eLoggingSeverity.WARNING */, 58 /* _eInternalMessageId.SampleRateOutOfRange */, \"Sampling rate is out of range (0..100). Sampling will be disabled, you may be sending too much data which may affect your AI service level.\", { samplingRate: sampleRate }, true);\r\n sampleRate = 100;\r\n }\r\n this[_DYN_SAMPLE_RATE /* @min:%2esampleRate */] = sampleRate;\r\n this.samplingScoreGenerator = new SamplingScoreGenerator();\r\n }\r\n /**\r\n * Determines if an envelope is sampled in (i.e. will be sent) or not (i.e. will be dropped).\r\n */\r\n Sample.prototype.isSampledIn = function (envelope) {\r\n var samplingPercentage = this[_DYN_SAMPLE_RATE /* @min:%2esampleRate */]; // 0 - 100\r\n var isSampledIn = false;\r\n if (samplingPercentage === null || samplingPercentage === undefined || samplingPercentage >= 100) {\r\n return true;\r\n }\r\n else if (envelope.baseType === Metric[_DYN_DATA_TYPE /* @min:%2edataType */]) {\r\n // exclude MetricData telemetry from sampling\r\n return true;\r\n }\r\n isSampledIn = this.samplingScoreGenerator[_DYN_GET_SAMPLING_SCORE /* @min:%2egetSamplingScore */](envelope) < samplingPercentage;\r\n return isSampledIn;\r\n };\r\n return Sample;\r\n}());\r\nexport { Sample };\r\n//# sourceMappingURL=Sample.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { arrReduce, objKeys } from \"@microsoft/applicationinsights-core-js\";\r\nimport { DEFAULT_BREEZE_ENDPOINT } from \"./Constants\";\r\nimport { _DYN_INGESTIONENDPOINT, _DYN_LENGTH, _DYN_SPLIT, _DYN_TO_LOWER_CASE } from \"./__DynamicConstants\";\r\nvar _FIELDS_SEPARATOR = \";\";\r\nvar _FIELD_KEY_VALUE_SEPARATOR = \"=\";\r\nexport function parseConnectionString(connectionString) {\r\n if (!connectionString) {\r\n return {};\r\n }\r\n var kvPairs = connectionString[_DYN_SPLIT /* @min:%2esplit */](_FIELDS_SEPARATOR);\r\n var result = arrReduce(kvPairs, function (fields, kv) {\r\n var kvParts = kv[_DYN_SPLIT /* @min:%2esplit */](_FIELD_KEY_VALUE_SEPARATOR);\r\n if (kvParts[_DYN_LENGTH /* @min:%2elength */] === 2) { // only save fields with valid formats\r\n var key = kvParts[0][_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n var value = kvParts[1];\r\n fields[key] = value;\r\n }\r\n return fields;\r\n }, {});\r\n if (objKeys(result)[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n // this is a valid connection string, so parse the results\r\n if (result.endpointsuffix) {\r\n // use endpoint suffix where overrides are not provided\r\n var locationPrefix = result.location ? result.location + \".\" : \"\";\r\n result[_DYN_INGESTIONENDPOINT /* @min:%2eingestionendpoint */] = result[_DYN_INGESTIONENDPOINT /* @min:%2eingestionendpoint */] || (\"https://\" + locationPrefix + \"dc.\" + result.endpointsuffix);\r\n }\r\n // apply the default endpoints\r\n result[_DYN_INGESTIONENDPOINT /* @min:%2eingestionendpoint */] = result[_DYN_INGESTIONENDPOINT /* @min:%2eingestionendpoint */] || DEFAULT_BREEZE_ENDPOINT;\r\n }\r\n return result;\r\n}\r\nexport var ConnectionStringParser = {\r\n parse: parseConnectionString\r\n};\r\n//# sourceMappingURL=ConnectionStringParser.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { createEnumStyle } from \"@microsoft/applicationinsights-core-js\";\r\n/**\r\n * Defines the level of severity for the event.\r\n */\r\nexport var SeverityLevel = createEnumStyle({\r\n Verbose: 0 /* eSeverityLevel.Verbose */,\r\n Information: 1 /* eSeverityLevel.Information */,\r\n Warning: 2 /* eSeverityLevel.Warning */,\r\n Error: 3 /* eSeverityLevel.Error */,\r\n Critical: 4 /* eSeverityLevel.Critical */\r\n});\r\n//# sourceMappingURL=SeverityLevel.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { isNullOrUndefined } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_EXTENSION_CONFIG } from \"../__DynamicConstants\";\r\nvar ConfigurationManager = /** @class */ (function () {\r\n function ConfigurationManager() {\r\n }\r\n ConfigurationManager.getConfig = function (config, field, identifier, defaultValue) {\r\n if (defaultValue === void 0) { defaultValue = false; }\r\n var configValue;\r\n if (identifier && config[_DYN_EXTENSION_CONFIG /* @min:%2eextensionConfig */] && config[_DYN_EXTENSION_CONFIG /* @min:%2eextensionConfig */][identifier] && !isNullOrUndefined(config[_DYN_EXTENSION_CONFIG /* @min:%2eextensionConfig */][identifier][field])) {\r\n configValue = config[_DYN_EXTENSION_CONFIG /* @min:%2eextensionConfig */][identifier][field];\r\n }\r\n else {\r\n configValue = config[field];\r\n }\r\n return !isNullOrUndefined(configValue) ? configValue : defaultValue;\r\n };\r\n return ConfigurationManager;\r\n}());\r\nexport { ConfigurationManager };\r\n//# sourceMappingURL=IConfig.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// // Licensed under the MIT License.\r\nimport { _DYN_CONFIG, _DYN_CREATE_NEW, _DYN_FLUSH, _DYN_IDENTIFIER, _DYN_LENGTH, _DYN_ON_COMPLETE, _DYN_PROCESS_NEXT, _DYN_PUSH } from \"../__DynamicConstants\";\r\nimport { arrForEach, isArray, objFreeze, throwError } from \"./HelperFuncs\";\r\nimport { STR_PRIORITY } from \"./InternalConstants\";\r\nimport { createProcessTelemetryContext, createTelemetryProxyChain } from \"./ProcessTelemetryContext\";\r\nimport { initializePlugins } from \"./TelemetryHelpers\";\r\nexport var ChannelControllerPriority = 500;\r\nvar ChannelValidationMessage = \"Channel has invalid priority - \";\r\nfunction _addChannelQueue(channelQueue, queue, core) {\r\n if (queue && isArray(queue) && queue[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n queue = queue.sort(function (a, b) {\r\n return a[STR_PRIORITY /* @min:%2epriority */] - b[STR_PRIORITY /* @min:%2epriority */];\r\n });\r\n arrForEach(queue, function (queueItem) {\r\n if (queueItem[STR_PRIORITY /* @min:%2epriority */] < ChannelControllerPriority) {\r\n throwError(ChannelValidationMessage + queueItem[_DYN_IDENTIFIER /* @min:%2eidentifier */]);\r\n }\r\n });\r\n channelQueue[_DYN_PUSH /* @min:%2epush */]({\r\n queue: objFreeze(queue),\r\n chain: createTelemetryProxyChain(queue, core[_DYN_CONFIG /* @min:%2econfig */], core)\r\n });\r\n }\r\n}\r\nexport function createChannelControllerPlugin(channelQueue, core) {\r\n function _getTelCtx() {\r\n return createProcessTelemetryContext(null, core[_DYN_CONFIG /* @min:%2econfig */], core, null);\r\n }\r\n function _processChannelQueue(theChannels, itemCtx, processFn, onComplete) {\r\n var waiting = theChannels ? (theChannels[_DYN_LENGTH /* @min:%2elength */] + 1) : 1;\r\n function _runChainOnComplete() {\r\n waiting--;\r\n if (waiting === 0) {\r\n onComplete && onComplete();\r\n onComplete = null;\r\n }\r\n }\r\n if (waiting > 0) {\r\n arrForEach(theChannels, function (channels) {\r\n // pass on to first item in queue\r\n if (channels && channels.queue[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n var channelChain = channels.chain;\r\n var chainCtx = itemCtx[_DYN_CREATE_NEW /* @min:%2ecreateNew */](channelChain);\r\n chainCtx[_DYN_ON_COMPLETE /* @min:%2eonComplete */](_runChainOnComplete);\r\n // Cause this chain to start processing\r\n processFn(chainCtx);\r\n }\r\n else {\r\n waiting--;\r\n }\r\n });\r\n }\r\n _runChainOnComplete();\r\n }\r\n function _doUpdate(updateCtx, updateState) {\r\n var theUpdateState = updateState || {\r\n reason: 0 /* TelemetryUpdateReason.Unknown */\r\n };\r\n _processChannelQueue(channelQueue, updateCtx, function (chainCtx) {\r\n chainCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](theUpdateState);\r\n }, function () {\r\n updateCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](theUpdateState);\r\n });\r\n return true;\r\n }\r\n function _doTeardown(unloadCtx, unloadState) {\r\n var theUnloadState = unloadState || {\r\n reason: 0 /* TelemetryUnloadReason.ManualTeardown */,\r\n isAsync: false\r\n };\r\n _processChannelQueue(channelQueue, unloadCtx, function (chainCtx) {\r\n chainCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](theUnloadState);\r\n }, function () {\r\n unloadCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](theUnloadState);\r\n isInitialized = false;\r\n });\r\n return true;\r\n }\r\n function _getChannel(pluginIdentifier) {\r\n var thePlugin = null;\r\n if (channelQueue && channelQueue[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n arrForEach(channelQueue, function (channels) {\r\n // pass on to first item in queue\r\n if (channels && channels.queue[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n arrForEach(channels.queue, function (ext) {\r\n if (ext[_DYN_IDENTIFIER /* @min:%2eidentifier */] === pluginIdentifier) {\r\n thePlugin = ext;\r\n // Cause arrForEach to stop iterating\r\n return -1;\r\n }\r\n });\r\n if (thePlugin) {\r\n // Cause arrForEach to stop iterating\r\n return -1;\r\n }\r\n }\r\n });\r\n }\r\n return thePlugin;\r\n }\r\n var isInitialized = false;\r\n var channelController = {\r\n identifier: \"ChannelControllerPlugin\",\r\n priority: ChannelControllerPriority,\r\n initialize: function (config, core, extensions, pluginChain) {\r\n isInitialized = true;\r\n arrForEach(channelQueue, function (channels) {\r\n if (channels && channels.queue[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n initializePlugins(createProcessTelemetryContext(channels.chain, config, core), extensions);\r\n }\r\n });\r\n },\r\n isInitialized: function () {\r\n return isInitialized;\r\n },\r\n processTelemetry: function (item, itemCtx) {\r\n _processChannelQueue(channelQueue, itemCtx || _getTelCtx(), function (chainCtx) {\r\n chainCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](item);\r\n }, function () {\r\n itemCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](item);\r\n });\r\n },\r\n update: _doUpdate,\r\n pause: function () {\r\n _processChannelQueue(channelQueue, _getTelCtx(), function (chainCtx) {\r\n chainCtx.iterate(function (plugin) {\r\n plugin.pause && plugin.pause();\r\n });\r\n }, null);\r\n },\r\n resume: function () {\r\n _processChannelQueue(channelQueue, _getTelCtx(), function (chainCtx) {\r\n chainCtx.iterate(function (plugin) {\r\n plugin.resume && plugin.resume();\r\n });\r\n }, null);\r\n },\r\n teardown: _doTeardown,\r\n getChannel: _getChannel,\r\n flush: function (isAsync, callBack, sendReason, cbTimeout) {\r\n // Setting waiting to one so that we don't call the callBack until we finish iterating\r\n var waiting = 1;\r\n var doneIterating = false;\r\n var cbTimer = null;\r\n cbTimeout = cbTimeout || 5000;\r\n function doCallback() {\r\n waiting--;\r\n if (doneIterating && waiting === 0) {\r\n if (cbTimer) {\r\n clearTimeout(cbTimer);\r\n cbTimer = null;\r\n }\r\n callBack && callBack(doneIterating);\r\n callBack = null;\r\n }\r\n }\r\n _processChannelQueue(channelQueue, _getTelCtx(), function (chainCtx) {\r\n chainCtx.iterate(function (plugin) {\r\n if (plugin[_DYN_FLUSH /* @min:%2eflush */]) {\r\n waiting++;\r\n var handled_1 = false;\r\n // Not all channels will call this callback for every scenario\r\n if (!plugin[_DYN_FLUSH /* @min:%2eflush */](isAsync, function () {\r\n handled_1 = true;\r\n doCallback();\r\n }, sendReason)) {\r\n if (!handled_1) {\r\n // If any channel doesn't return true and it didn't call the callback, then we should assume that the callback\r\n // will never be called, so use a timeout to allow the channel(s) some time to \"finish\" before triggering any\r\n // followup function (such as unloading)\r\n if (isAsync && cbTimer == null) {\r\n cbTimer = setTimeout(function () {\r\n cbTimer = null;\r\n doCallback();\r\n }, cbTimeout);\r\n }\r\n else {\r\n doCallback();\r\n }\r\n }\r\n }\r\n }\r\n });\r\n }, function () {\r\n doneIterating = true;\r\n doCallback();\r\n });\r\n return true;\r\n },\r\n _setQueue: function (queue) {\r\n channelQueue = queue;\r\n }\r\n };\r\n return channelController;\r\n}\r\nexport function createChannelQueues(channels, extensions, core) {\r\n var channelQueue = [];\r\n if (channels) {\r\n // Add and sort the configuration channel queues\r\n arrForEach(channels, function (queue) { return _addChannelQueue(channelQueue, queue, core); });\r\n }\r\n if (extensions) {\r\n // Create a new channel queue for any extensions with a priority > the ChannelControllerPriority\r\n var extensionQueue_1 = [];\r\n arrForEach(extensions, function (plugin) {\r\n if (plugin[STR_PRIORITY /* @min:%2epriority */] > ChannelControllerPriority) {\r\n extensionQueue_1[_DYN_PUSH /* @min:%2epush */](plugin);\r\n }\r\n });\r\n _addChannelQueue(channelQueue, extensionQueue_1, core);\r\n }\r\n return channelQueue;\r\n}\r\n//# sourceMappingURL=ChannelController.js.map","// // Copyright (c) Microsoft Corporation. All rights reserved.\r\n// // Licensed under the MIT License.\r\nimport { __extends } from \"tslib\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { _DYN_APPLY, _DYN_DIAG_LOG, _DYN_LENGTH, _DYN_PROCESS_NEXT, _DYN_PUSH, _DYN_SPLICE, _DYN__DO_TEARDOWN } from \"../__DynamicConstants\";\r\nimport { BaseTelemetryPlugin } from \"./BaseTelemetryPlugin\";\r\nimport { _throwInternal } from \"./DiagnosticLogger\";\r\nimport { dumpObj } from \"./EnvUtils\";\r\nimport { arrForEach, getExceptionName } from \"./HelperFuncs\";\r\nimport { STR_PROCESS_TELEMETRY } from \"./InternalConstants\";\r\nvar TelemetryInitializerPlugin = /** @class */ (function (_super) {\r\n __extends(TelemetryInitializerPlugin, _super);\r\n function TelemetryInitializerPlugin() {\r\n var _this = _super.call(this) || this;\r\n _this.identifier = \"TelemetryInitializerPlugin\";\r\n _this.priority = 199;\r\n // NOTE!: DON'T set default values here, instead set them in the _initDefaults() function as it is also called during teardown()\r\n var _id;\r\n var _initializers;\r\n _initDefaults();\r\n dynamicProto(TelemetryInitializerPlugin, _this, function (_self, _base) {\r\n _self.addTelemetryInitializer = function (telemetryInitializer) {\r\n var theInitializer = {\r\n id: _id++,\r\n fn: telemetryInitializer\r\n };\r\n _initializers[_DYN_PUSH /* @min:%2epush */](theInitializer);\r\n var handler = {\r\n remove: function () {\r\n arrForEach(_initializers, function (initializer, idx) {\r\n if (initializer.id === theInitializer.id) {\r\n _initializers[_DYN_SPLICE /* @min:%2esplice */](idx, 1);\r\n return -1;\r\n }\r\n });\r\n }\r\n };\r\n return handler;\r\n };\r\n _self[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */] = function (item, itemCtx) {\r\n var doNotSendItem = false;\r\n var telemetryInitializersCount = _initializers[_DYN_LENGTH /* @min:%2elength */];\r\n for (var i = 0; i < telemetryInitializersCount; ++i) {\r\n var telemetryInitializer = _initializers[i];\r\n if (telemetryInitializer) {\r\n try {\r\n if (telemetryInitializer.fn[_DYN_APPLY /* @min:%2eapply */](null, [item]) === false) {\r\n doNotSendItem = true;\r\n break;\r\n }\r\n }\r\n catch (e) {\r\n // log error but dont stop executing rest of the telemetry initializers\r\n // doNotSendItem = true;\r\n _throwInternal(itemCtx[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 64 /* _eInternalMessageId.TelemetryInitializerFailed */, \"One of telemetry initializers failed, telemetry item will not be sent: \" + getExceptionName(e), { exception: dumpObj(e) }, true);\r\n }\r\n }\r\n }\r\n if (!doNotSendItem) {\r\n _self[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](item, itemCtx);\r\n }\r\n };\r\n _self[_DYN__DO_TEARDOWN /* @min:%2e_doTeardown */] = function () {\r\n _initDefaults();\r\n };\r\n });\r\n function _initDefaults() {\r\n _id = 0;\r\n _initializers = [];\r\n }\r\n return _this;\r\n }\r\n /**\r\n * Add a telemetry processor to decorate or drop telemetry events.\r\n * @param telemetryInitializer - The Telemetry Initializer function\r\n * @returns - A ITelemetryInitializerHandler to enable the initializer to be removed\r\n */\r\n TelemetryInitializerPlugin.prototype.addTelemetryInitializer = function (telemetryInitializer) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n TelemetryInitializerPlugin.prototype.processTelemetry = function (env, itemCtx) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n return TelemetryInitializerPlugin;\r\n}(BaseTelemetryPlugin));\r\nexport { TelemetryInitializerPlugin };\r\n//# sourceMappingURL=TelemetryInitializerPlugin.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\"use strict\";\r\nimport { __spreadArray } from \"tslib\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { objCreateFn } from \"@microsoft/applicationinsights-shims\";\r\nimport { _DYN_ADD_NOTIFICATION_LIS1, _DYN_CONFIG, _DYN_FLUSH, _DYN_GET_NOTIFY_MGR, _DYN_GET_PLUGIN, _DYN_GET_PROCESS_TEL_CONT0, _DYN_IDENTIFIER, _DYN_INITIALIZE, _DYN_INSTRUMENTATION_KEY, _DYN_IS_ASYNC, _DYN_IS_INITIALIZED, _DYN_LENGTH, _DYN_LOGGER, _DYN_MESSAGE, _DYN_MESSAGE_ID, _DYN_NAME, _DYN_ON_COMPLETE, _DYN_PROCESS_NEXT, _DYN_PUSH, _DYN_REMOVE_NOTIFICATION_2, _DYN_SET_ENABLED, _DYN_SPLICE, _DYN_STOP_POLLING_INTERNA3, _DYN_TEARDOWN, _DYN_TIME, _DYN__EXTENSIONS } from \"../__DynamicConstants\";\r\nimport { ChannelControllerPriority, createChannelControllerPlugin, createChannelQueues } from \"./ChannelController\";\r\nimport { createCookieMgr } from \"./CookieMgr\";\r\nimport { createUniqueNamespace } from \"./DataCacheHelper\";\r\nimport { getDebugListener } from \"./DbgExtensionUtils\";\r\nimport { DiagnosticLogger, _InternalLogMessage, _throwInternal, _warnToConsole } from \"./DiagnosticLogger\";\r\nimport { arrForEach, arrIndexOf, getCfgValue, getSetValue, isFunction, isNullOrUndefined, objExtend, objFreeze, proxyFunctionAs, proxyFunctions, throwError, toISOString } from \"./HelperFuncs\";\r\nimport { STR_CHANNELS, STR_CORE, STR_CREATE_PERF_MGR, STR_DISABLED, STR_EVENTS_DISCARDED, STR_EVENTS_SEND_REQUEST, STR_EVENTS_SENT, STR_EXTENSIONS, STR_EXTENSION_CONFIG, STR_GET_PERF_MGR, STR_PRIORITY } from \"./InternalConstants\";\r\nimport { PerfManager, getGblPerfMgr } from \"./PerfManager\";\r\nimport { createProcessTelemetryContext, createProcessTelemetryUnloadContext, createProcessTelemetryUpdateContext, createTelemetryProxyChain } from \"./ProcessTelemetryContext\";\r\nimport { _getPluginState, createDistributedTraceContext, initializePlugins, sortPlugins } from \"./TelemetryHelpers\";\r\nimport { TelemetryInitializerPlugin } from \"./TelemetryInitializerPlugin\";\r\nimport { createUnloadHandlerContainer } from \"./UnloadHandlerContainer\";\r\nvar strValidationError = \"Plugins must provide initialize method\";\r\nvar strNotificationManager = \"_notificationManager\";\r\nvar strSdkUnloadingError = \"SDK is still unloading...\";\r\nvar strSdkNotInitialized = \"SDK is not initialized\";\r\n// const strPluginUnloadFailed = \"Failed to unload plugin\";\r\nvar defaultInitConfig = {\r\n // Have the Diagnostic Logger default to log critical errors to the console\r\n loggingLevelConsole: 1 /* eLoggingSeverity.CRITICAL */\r\n};\r\n/**\r\n * Helper to create the default performance manager\r\n * @param core\r\n * @param notificationMgr\r\n */\r\nfunction _createPerfManager(core, notificationMgr) {\r\n return new PerfManager(notificationMgr);\r\n}\r\nfunction _validateExtensions(logger, channelPriority, allExtensions) {\r\n var _a;\r\n // Concat all available extensions\r\n var coreExtensions = [];\r\n // Check if any two extensions have the same priority, then warn to console\r\n // And extract the local extensions from the\r\n var extPriorities = {};\r\n // Extension validation\r\n arrForEach(allExtensions, function (ext) {\r\n // Check for ext.initialize\r\n if (isNullOrUndefined(ext) || isNullOrUndefined(ext[_DYN_INITIALIZE /* @min:%2einitialize */])) {\r\n throwError(strValidationError);\r\n }\r\n var extPriority = ext[STR_PRIORITY /* @min:%2epriority */];\r\n var identifier = ext[_DYN_IDENTIFIER /* @min:%2eidentifier */];\r\n if (ext && extPriority) {\r\n if (!isNullOrUndefined(extPriorities[extPriority])) {\r\n _warnToConsole(logger, \"Two extensions have same priority #\" + extPriority + \" - \" + extPriorities[extPriority] + \", \" + identifier);\r\n }\r\n else {\r\n // set a value\r\n extPriorities[extPriority] = identifier;\r\n }\r\n }\r\n // Split extensions to core and channelController\r\n if (!extPriority || extPriority < channelPriority) {\r\n // Add to core extension that will be managed by BaseCore\r\n coreExtensions[_DYN_PUSH /* @min:%2epush */](ext);\r\n }\r\n });\r\n return _a = {\r\n all: allExtensions\r\n },\r\n _a[STR_CORE /* @min:core */] = coreExtensions,\r\n _a;\r\n}\r\nfunction _isPluginPresent(thePlugin, plugins) {\r\n var exists = false;\r\n arrForEach(plugins, function (plugin) {\r\n if (plugin === thePlugin) {\r\n exists = true;\r\n return -1;\r\n }\r\n });\r\n return exists;\r\n}\r\nfunction _createDummyNotificationManager() {\r\n var _a;\r\n return objCreateFn((_a = {},\r\n _a[_DYN_ADD_NOTIFICATION_LIS1 /* @min:addNotificationListener */] = function (listener) { },\r\n _a[_DYN_REMOVE_NOTIFICATION_2 /* @min:removeNotificationListener */] = function (listener) { },\r\n _a[STR_EVENTS_SENT /* @min:eventsSent */] = function (events) { },\r\n _a[STR_EVENTS_DISCARDED /* @min:eventsDiscarded */] = function (events, reason) { },\r\n _a[STR_EVENTS_SEND_REQUEST /* @min:eventsSendRequest */] = function (sendReason, isAsync) { },\r\n _a));\r\n}\r\nvar BaseCore = /** @class */ (function () {\r\n function BaseCore() {\r\n // NOTE!: DON'T set default values here, instead set them in the _initDefaults() function as it is also called during teardown()\r\n var _config;\r\n var _isInitialized;\r\n var _eventQueue;\r\n var _notificationManager;\r\n var _perfManager;\r\n var _cfgPerfManager;\r\n var _cookieManager;\r\n var _pluginChain;\r\n var _configExtensions;\r\n var _coreExtensions;\r\n var _channelControl;\r\n var _channelConfig;\r\n var _channelQueue;\r\n var _isUnloading;\r\n var _telemetryInitializerPlugin;\r\n var _internalLogsEventName;\r\n var _evtNamespace;\r\n var _unloadHandlers;\r\n var _debugListener;\r\n var _traceCtx;\r\n /**\r\n * Internal log poller\r\n */\r\n var _internalLogPoller = 0;\r\n dynamicProto(BaseCore, this, function (_self) {\r\n // Set the default values (also called during teardown)\r\n _initDefaults();\r\n _self[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */] = function () { return _isInitialized; };\r\n // Creating the self.initialize = ()\r\n _self[_DYN_INITIALIZE /* @min:%2einitialize */] = function (config, extensions, logger, notificationManager) {\r\n if (_isUnloading) {\r\n throwError(strSdkUnloadingError);\r\n }\r\n // Make sure core is only initialized once\r\n if (_self[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */]()) {\r\n throwError(\"Core should not be initialized more than once\");\r\n }\r\n _config = config || {};\r\n _self[_DYN_CONFIG /* @min:%2econfig */] = _config;\r\n if (isNullOrUndefined(config[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */])) {\r\n throwError(\"Please provide instrumentation key\");\r\n }\r\n _notificationManager = notificationManager;\r\n // For backward compatibility only\r\n _self[strNotificationManager] = notificationManager;\r\n _initDebugListener();\r\n _initPerfManager();\r\n // add notification to the extensions in the config so other plugins can access it\r\n _initExtConfig();\r\n if (logger) {\r\n _self[_DYN_LOGGER /* @min:%2elogger */] = logger;\r\n }\r\n var cfgExtensions = getSetValue(_config, STR_EXTENSIONS, []);\r\n // Extension validation\r\n _configExtensions = [];\r\n _configExtensions[_DYN_PUSH /* @min:%2epush */].apply(_configExtensions, __spreadArray(__spreadArray([], extensions, false), cfgExtensions, false));\r\n _channelConfig = getSetValue(_config, STR_CHANNELS, []);\r\n _initPluginChain(null);\r\n if (!_channelQueue || _channelQueue[_DYN_LENGTH /* @min:%2elength */] === 0) {\r\n throwError(\"No \" + STR_CHANNELS + \" available\");\r\n }\r\n _isInitialized = true;\r\n _self.releaseQueue();\r\n };\r\n _self.getTransmissionControls = function () {\r\n var controls = [];\r\n if (_channelQueue) {\r\n arrForEach(_channelQueue, function (channels) {\r\n controls[_DYN_PUSH /* @min:%2epush */](channels.queue);\r\n });\r\n }\r\n return objFreeze(controls);\r\n };\r\n _self.track = function (telemetryItem) {\r\n // setup default iKey if not passed in\r\n telemetryItem.iKey = telemetryItem.iKey || _config[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */];\r\n // add default timestamp if not passed in\r\n telemetryItem[_DYN_TIME /* @min:%2etime */] = telemetryItem[_DYN_TIME /* @min:%2etime */] || toISOString(new Date());\r\n // Common Schema 4.0\r\n telemetryItem.ver = telemetryItem.ver || \"4.0\";\r\n if (!_isUnloading && _self[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */]()) {\r\n // Process the telemetry plugin chain\r\n _createTelCtx()[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](telemetryItem);\r\n }\r\n else {\r\n // Queue events until all extensions are initialized\r\n _eventQueue[_DYN_PUSH /* @min:%2epush */](telemetryItem);\r\n }\r\n };\r\n _self[_DYN_GET_PROCESS_TEL_CONT0 /* @min:%2egetProcessTelContext */] = _createTelCtx;\r\n _self[_DYN_GET_NOTIFY_MGR /* @min:%2egetNotifyMgr */] = function () {\r\n if (!_notificationManager) {\r\n // Create Dummy notification manager\r\n _notificationManager = _createDummyNotificationManager();\r\n // For backward compatibility only\r\n _self[strNotificationManager] = _notificationManager;\r\n }\r\n return _notificationManager;\r\n };\r\n /**\r\n * Adds a notification listener. The SDK calls methods on the listener when an appropriate notification is raised.\r\n * The added plugins must raise notifications. If the plugins do not implement the notifications, then no methods will be\r\n * called.\r\n * @param {INotificationListener} listener - An INotificationListener object.\r\n */\r\n _self[_DYN_ADD_NOTIFICATION_LIS1 /* @min:%2eaddNotificationListener */] = function (listener) {\r\n if (_notificationManager) {\r\n _notificationManager[_DYN_ADD_NOTIFICATION_LIS1 /* @min:%2eaddNotificationListener */](listener);\r\n }\r\n };\r\n /**\r\n * Removes all instances of the listener.\r\n * @param {INotificationListener} listener - INotificationListener to remove.\r\n */\r\n _self[_DYN_REMOVE_NOTIFICATION_2 /* @min:%2eremoveNotificationListener */] = function (listener) {\r\n if (_notificationManager) {\r\n _notificationManager[_DYN_REMOVE_NOTIFICATION_2 /* @min:%2eremoveNotificationListener */](listener);\r\n }\r\n };\r\n _self.getCookieMgr = function () {\r\n if (!_cookieManager) {\r\n _cookieManager = createCookieMgr(_config, _self[_DYN_LOGGER /* @min:%2elogger */]);\r\n }\r\n return _cookieManager;\r\n };\r\n _self.setCookieMgr = function (cookieMgr) {\r\n _cookieManager = cookieMgr;\r\n };\r\n _self[STR_GET_PERF_MGR /* @min:%2egetPerfMgr */] = function () {\r\n if (!_perfManager && !_cfgPerfManager) {\r\n if (getCfgValue(_config.enablePerfMgr)) {\r\n var createPerfMgr = getCfgValue(_config[STR_CREATE_PERF_MGR /* @min:%2ecreatePerfMgr */]);\r\n if (isFunction(createPerfMgr)) {\r\n _cfgPerfManager = createPerfMgr(_self, _self[_DYN_GET_NOTIFY_MGR /* @min:%2egetNotifyMgr */]());\r\n }\r\n }\r\n }\r\n return _perfManager || _cfgPerfManager || getGblPerfMgr();\r\n };\r\n _self.setPerfMgr = function (perfMgr) {\r\n _perfManager = perfMgr;\r\n };\r\n _self.eventCnt = function () {\r\n return _eventQueue[_DYN_LENGTH /* @min:%2elength */];\r\n };\r\n _self.releaseQueue = function () {\r\n if (_isInitialized && _eventQueue[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n var eventQueue = _eventQueue;\r\n _eventQueue = [];\r\n arrForEach(eventQueue, function (event) {\r\n _createTelCtx()[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](event);\r\n });\r\n }\r\n };\r\n /**\r\n * Periodically check logger.queue for log messages to be flushed\r\n */\r\n _self.pollInternalLogs = function (eventName) {\r\n _internalLogsEventName = eventName || null;\r\n var interval = getCfgValue(_config.diagnosticLogInterval);\r\n if (!interval || !(interval > 0)) {\r\n interval = 10000;\r\n }\r\n if (_internalLogPoller) {\r\n clearInterval(_internalLogPoller);\r\n }\r\n _internalLogPoller = setInterval(function () {\r\n _flushInternalLogs();\r\n }, interval);\r\n return _internalLogPoller;\r\n };\r\n /**\r\n * Stop polling log messages from logger.queue\r\n */\r\n _self[_DYN_STOP_POLLING_INTERNA3 /* @min:%2estopPollingInternalLogs */] = function () {\r\n if (_internalLogPoller) {\r\n clearInterval(_internalLogPoller);\r\n _internalLogPoller = 0;\r\n _flushInternalLogs();\r\n }\r\n };\r\n // Add addTelemetryInitializer\r\n proxyFunctions(_self, function () { return _telemetryInitializerPlugin; }, [\"addTelemetryInitializer\"]);\r\n _self.unload = function (isAsync, unloadComplete, cbTimeout) {\r\n var _a;\r\n if (isAsync === void 0) { isAsync = true; }\r\n if (!_isInitialized) {\r\n // The SDK is not initialized\r\n throwError(strSdkNotInitialized);\r\n }\r\n // Check if the SDK still unloading so throw\r\n if (_isUnloading) {\r\n // The SDK is already unloading\r\n throwError(strSdkUnloadingError);\r\n }\r\n var unloadState = (_a = {\r\n reason: 50 /* TelemetryUnloadReason.SdkUnload */\r\n },\r\n _a[_DYN_IS_ASYNC /* @min:isAsync */] = isAsync,\r\n _a.flushComplete = false,\r\n _a);\r\n var processUnloadCtx = createProcessTelemetryUnloadContext(_getPluginChain(), _self);\r\n processUnloadCtx[_DYN_ON_COMPLETE /* @min:%2eonComplete */](function () {\r\n _initDefaults();\r\n unloadComplete && unloadComplete(unloadState);\r\n }, _self);\r\n function _doUnload(flushComplete) {\r\n unloadState.flushComplete = flushComplete;\r\n _isUnloading = true;\r\n // Run all of the unload handlers first (before unloading the plugins)\r\n _unloadHandlers.run(processUnloadCtx, unloadState);\r\n // Stop polling the internal logs\r\n _self[_DYN_STOP_POLLING_INTERNA3 /* @min:%2estopPollingInternalLogs */]();\r\n // Start unloading the components, from this point onwards the SDK should be considered to be in an unstable state\r\n processUnloadCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](unloadState);\r\n }\r\n if (!_flushChannels(isAsync, _doUnload, 6 /* SendRequestReason.SdkUnload */, cbTimeout)) {\r\n _doUnload(false);\r\n }\r\n };\r\n _self[_DYN_GET_PLUGIN /* @min:%2egetPlugin */] = _getPlugin;\r\n _self.addPlugin = function (plugin, replaceExisting, isAsync, addCb) {\r\n if (!plugin) {\r\n addCb && addCb(false);\r\n _logOrThrowError(strValidationError);\r\n return;\r\n }\r\n var existingPlugin = _getPlugin(plugin[_DYN_IDENTIFIER /* @min:%2eidentifier */]);\r\n if (existingPlugin && !replaceExisting) {\r\n addCb && addCb(false);\r\n _logOrThrowError(\"Plugin [\" + plugin[_DYN_IDENTIFIER /* @min:%2eidentifier */] + \"] is already loaded!\");\r\n return;\r\n }\r\n var updateState = {\r\n reason: 16 /* TelemetryUpdateReason.PluginAdded */\r\n };\r\n function _addPlugin(removed) {\r\n _configExtensions[_DYN_PUSH /* @min:%2epush */](plugin);\r\n updateState.added = [plugin];\r\n // Re-Initialize the plugin chain\r\n _initPluginChain(updateState);\r\n addCb && addCb(true);\r\n }\r\n if (existingPlugin) {\r\n var removedPlugins_1 = [existingPlugin.plugin];\r\n var unloadState = {\r\n reason: 2 /* TelemetryUnloadReason.PluginReplace */,\r\n isAsync: !!isAsync\r\n };\r\n _removePlugins(removedPlugins_1, unloadState, function (removed) {\r\n if (!removed) {\r\n // Previous plugin was successfully removed or was not installed\r\n addCb && addCb(false);\r\n }\r\n else {\r\n updateState.removed = removedPlugins_1;\r\n updateState.reason |= 32 /* TelemetryUpdateReason.PluginRemoved */;\r\n _addPlugin(true);\r\n }\r\n });\r\n }\r\n else {\r\n _addPlugin(false);\r\n }\r\n };\r\n _self.evtNamespace = function () {\r\n return _evtNamespace;\r\n };\r\n _self[_DYN_FLUSH /* @min:%2eflush */] = _flushChannels;\r\n _self.getTraceCtx = function (createNew) {\r\n if (!_traceCtx) {\r\n _traceCtx = createDistributedTraceContext();\r\n }\r\n return _traceCtx;\r\n };\r\n _self.setTraceCtx = function (traceCtx) {\r\n _traceCtx = traceCtx || null;\r\n };\r\n // Create the addUnloadCb\r\n proxyFunctionAs(_self, \"addUnloadCb\", function () { return _unloadHandlers; }, \"add\");\r\n function _initDefaults() {\r\n _isInitialized = false;\r\n // Use a default logger so initialization errors are not dropped on the floor with full logging\r\n _config = objExtend(true, {}, defaultInitConfig);\r\n _self[_DYN_CONFIG /* @min:%2econfig */] = _config;\r\n _self[_DYN_LOGGER /* @min:%2elogger */] = new DiagnosticLogger(_config);\r\n _self[_DYN__EXTENSIONS /* @min:%2e_extensions */] = [];\r\n _telemetryInitializerPlugin = new TelemetryInitializerPlugin();\r\n _eventQueue = [];\r\n _notificationManager = null;\r\n _perfManager = null;\r\n _cfgPerfManager = null;\r\n _cookieManager = null;\r\n _pluginChain = null;\r\n _coreExtensions = null;\r\n _configExtensions = [];\r\n _channelControl = null;\r\n _channelConfig = null;\r\n _channelQueue = null;\r\n _isUnloading = false;\r\n _internalLogsEventName = null;\r\n _evtNamespace = createUniqueNamespace(\"AIBaseCore\", true);\r\n _unloadHandlers = createUnloadHandlerContainer();\r\n _traceCtx = null;\r\n }\r\n function _createTelCtx() {\r\n return createProcessTelemetryContext(_getPluginChain(), _config, _self);\r\n }\r\n // Initialize or Re-initialize the plugins\r\n function _initPluginChain(updateState) {\r\n // Extension validation\r\n var theExtensions = _validateExtensions(_self[_DYN_LOGGER /* @min:%2elogger */], ChannelControllerPriority, _configExtensions);\r\n _coreExtensions = theExtensions[STR_CORE /* @min:%2ecore */];\r\n _pluginChain = null;\r\n // Sort the complete set of extensions by priority\r\n var allExtensions = theExtensions.all;\r\n // Initialize the Channel Queues and the channel plugins first\r\n _channelQueue = objFreeze(createChannelQueues(_channelConfig, allExtensions, _self));\r\n if (_channelControl) {\r\n // During add / remove of a plugin this may get called again, so don't re-add if already present\r\n // But we also want the controller as the last, so remove if already present\r\n // And reusing the existing instance, just in case an installed plugin has a reference and\r\n // is using it.\r\n var idx = arrIndexOf(allExtensions, _channelControl);\r\n if (idx !== -1) {\r\n allExtensions[_DYN_SPLICE /* @min:%2esplice */](idx, 1);\r\n }\r\n idx = arrIndexOf(_coreExtensions, _channelControl);\r\n if (idx !== -1) {\r\n _coreExtensions[_DYN_SPLICE /* @min:%2esplice */](idx, 1);\r\n }\r\n _channelControl._setQueue(_channelQueue);\r\n }\r\n else {\r\n _channelControl = createChannelControllerPlugin(_channelQueue, _self);\r\n }\r\n // Add on \"channelController\" as the last \"plugin\"\r\n allExtensions[_DYN_PUSH /* @min:%2epush */](_channelControl);\r\n _coreExtensions[_DYN_PUSH /* @min:%2epush */](_channelControl);\r\n // Required to allow plugins to call core.getPlugin() during their own initialization\r\n _self[_DYN__EXTENSIONS /* @min:%2e_extensions */] = sortPlugins(allExtensions);\r\n // Initialize the controls\r\n _channelControl[_DYN_INITIALIZE /* @min:%2einitialize */](_config, _self, allExtensions);\r\n initializePlugins(_createTelCtx(), allExtensions);\r\n // Now reset the extensions to just those being managed by Basecore\r\n _self[_DYN__EXTENSIONS /* @min:%2e_extensions */] = objFreeze(sortPlugins(_coreExtensions || [])).slice();\r\n if (updateState) {\r\n _doUpdate(updateState);\r\n }\r\n }\r\n function _getPlugin(pluginIdentifier) {\r\n var _a;\r\n var theExt = null;\r\n var thePlugin = null;\r\n arrForEach(_self[_DYN__EXTENSIONS /* @min:%2e_extensions */], function (ext) {\r\n if (ext[_DYN_IDENTIFIER /* @min:%2eidentifier */] === pluginIdentifier && ext !== _channelControl && ext !== _telemetryInitializerPlugin) {\r\n thePlugin = ext;\r\n return -1;\r\n }\r\n });\r\n if (!thePlugin && _channelControl) {\r\n // Check the channel Controller\r\n thePlugin = _channelControl.getChannel(pluginIdentifier);\r\n }\r\n if (thePlugin) {\r\n theExt = (_a = {\r\n plugin: thePlugin\r\n },\r\n _a[_DYN_SET_ENABLED /* @min:setEnabled */] = function (enabled) {\r\n _getPluginState(thePlugin)[STR_DISABLED] = !enabled;\r\n },\r\n _a.isEnabled = function () {\r\n var pluginState = _getPluginState(thePlugin);\r\n return !pluginState[_DYN_TEARDOWN /* @min:%2eteardown */] && !pluginState[STR_DISABLED];\r\n },\r\n _a.remove = function (isAsync, removeCb) {\r\n var _a;\r\n if (isAsync === void 0) { isAsync = true; }\r\n var pluginsToRemove = [thePlugin];\r\n var unloadState = (_a = {\r\n reason: 1 /* TelemetryUnloadReason.PluginUnload */\r\n },\r\n _a[_DYN_IS_ASYNC /* @min:isAsync */] = isAsync,\r\n _a);\r\n _removePlugins(pluginsToRemove, unloadState, function (removed) {\r\n if (removed) {\r\n // Re-Initialize the plugin chain\r\n _initPluginChain({\r\n reason: 32 /* TelemetryUpdateReason.PluginRemoved */,\r\n removed: pluginsToRemove\r\n });\r\n }\r\n removeCb && removeCb(removed);\r\n });\r\n },\r\n _a);\r\n }\r\n return theExt;\r\n }\r\n function _getPluginChain() {\r\n if (!_pluginChain) {\r\n // copy the collection of extensions\r\n var extensions = (_coreExtensions || []).slice();\r\n // During add / remove this may get called again, so don't readd if already present\r\n if (arrIndexOf(extensions, _telemetryInitializerPlugin) === -1) {\r\n extensions[_DYN_PUSH /* @min:%2epush */](_telemetryInitializerPlugin);\r\n }\r\n _pluginChain = createTelemetryProxyChain(sortPlugins(extensions), _config, _self);\r\n }\r\n return _pluginChain;\r\n }\r\n function _removePlugins(thePlugins, unloadState, removeComplete) {\r\n if (thePlugins && thePlugins[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n var unloadChain = createTelemetryProxyChain(thePlugins, _config, _self);\r\n var unloadCtx = createProcessTelemetryUnloadContext(unloadChain, _self);\r\n unloadCtx[_DYN_ON_COMPLETE /* @min:%2eonComplete */](function () {\r\n var removed = false;\r\n // Remove the listed config extensions\r\n var newConfigExtensions = [];\r\n arrForEach(_configExtensions, function (plugin, idx) {\r\n if (!_isPluginPresent(plugin, thePlugins)) {\r\n newConfigExtensions[_DYN_PUSH /* @min:%2epush */](plugin);\r\n }\r\n else {\r\n removed = true;\r\n }\r\n });\r\n _configExtensions = newConfigExtensions;\r\n // Re-Create the channel config\r\n var newChannelConfig = [];\r\n if (_channelConfig) {\r\n arrForEach(_channelConfig, function (queue, idx) {\r\n var newQueue = [];\r\n arrForEach(queue, function (channel) {\r\n if (!_isPluginPresent(channel, thePlugins)) {\r\n newQueue[_DYN_PUSH /* @min:%2epush */](channel);\r\n }\r\n else {\r\n removed = true;\r\n }\r\n });\r\n newChannelConfig[_DYN_PUSH /* @min:%2epush */](newQueue);\r\n });\r\n _channelConfig = newChannelConfig;\r\n }\r\n removeComplete && removeComplete(removed);\r\n });\r\n unloadCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](unloadState);\r\n }\r\n else {\r\n removeComplete(false);\r\n }\r\n }\r\n function _flushInternalLogs() {\r\n var queue = _self[_DYN_LOGGER /* @min:%2elogger */] ? _self[_DYN_LOGGER /* @min:%2elogger */].queue : [];\r\n if (queue) {\r\n arrForEach(queue, function (logMessage) {\r\n var _a;\r\n var item = (_a = {},\r\n _a[_DYN_NAME /* @min:name */] = _internalLogsEventName ? _internalLogsEventName : \"InternalMessageId: \" + logMessage[_DYN_MESSAGE_ID /* @min:%2emessageId */],\r\n _a.iKey = getCfgValue(_config[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */]),\r\n _a.time = toISOString(new Date()),\r\n _a.baseType = _InternalLogMessage.dataType,\r\n _a.baseData = { message: logMessage[_DYN_MESSAGE /* @min:%2emessage */] },\r\n _a);\r\n _self.track(item);\r\n });\r\n queue[_DYN_LENGTH /* @min:%2elength */] = 0;\r\n }\r\n }\r\n function _flushChannels(isAsync, callBack, sendReason, cbTimeout) {\r\n if (_channelControl) {\r\n return _channelControl[_DYN_FLUSH /* @min:%2eflush */](isAsync, callBack, sendReason || 6 /* SendRequestReason.SdkUnload */, cbTimeout);\r\n }\r\n callBack && callBack(false);\r\n return true;\r\n }\r\n function _initDebugListener() {\r\n var disableDbgExt = getCfgValue(_config.disableDbgExt);\r\n if (disableDbgExt === true && _debugListener) {\r\n // Remove any previously loaded debug listener\r\n _notificationManager[_DYN_REMOVE_NOTIFICATION_2 /* @min:%2eremoveNotificationListener */](_debugListener);\r\n _debugListener = null;\r\n }\r\n if (_notificationManager && !_debugListener && disableDbgExt !== true) {\r\n _debugListener = getDebugListener(_config);\r\n _notificationManager[_DYN_ADD_NOTIFICATION_LIS1 /* @min:%2eaddNotificationListener */](_debugListener);\r\n }\r\n }\r\n function _initPerfManager() {\r\n var enablePerfMgr = getCfgValue(_config.enablePerfMgr);\r\n if (!enablePerfMgr && _cfgPerfManager) {\r\n // Remove any existing config based performance manager\r\n _cfgPerfManager = null;\r\n }\r\n if (enablePerfMgr) {\r\n // Set the performance manager creation function if not defined\r\n getSetValue(_config, STR_CREATE_PERF_MGR, _createPerfManager);\r\n }\r\n }\r\n function _initExtConfig() {\r\n var extConfig = getSetValue(_config, STR_EXTENSION_CONFIG, {});\r\n extConfig.NotificationManager = _notificationManager;\r\n }\r\n function _doUpdate(updateState) {\r\n var updateCtx = createProcessTelemetryUpdateContext(_getPluginChain(), _self);\r\n if (!_self._updateHook || _self._updateHook(updateCtx, updateState) !== true) {\r\n updateCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](updateState);\r\n }\r\n }\r\n function _logOrThrowError(message) {\r\n var logger = _self[_DYN_LOGGER /* @min:%2elogger */];\r\n if (logger) {\r\n // there should always be a logger\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 73 /* _eInternalMessageId.PluginException */, message);\r\n }\r\n else {\r\n throwError(message);\r\n }\r\n }\r\n });\r\n }\r\n BaseCore.prototype.initialize = function (config, extensions, logger, notificationManager) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n BaseCore.prototype.getTransmissionControls = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n BaseCore.prototype.track = function (telemetryItem) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n BaseCore.prototype.getProcessTelContext = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n BaseCore.prototype.getNotifyMgr = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n /**\r\n * Adds a notification listener. The SDK calls methods on the listener when an appropriate notification is raised.\r\n * The added plugins must raise notifications. If the plugins do not implement the notifications, then no methods will be\r\n * called.\r\n * @param {INotificationListener} listener - An INotificationListener object.\r\n */\r\n BaseCore.prototype.addNotificationListener = function (listener) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Removes all instances of the listener.\r\n * @param {INotificationListener} listener - INotificationListener to remove.\r\n */\r\n BaseCore.prototype.removeNotificationListener = function (listener) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Get the current cookie manager for this instance\r\n */\r\n BaseCore.prototype.getCookieMgr = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n /**\r\n * Set the current cookie manager for this instance\r\n * @param cookieMgr - The manager, if set to null/undefined will cause the default to be created\r\n */\r\n BaseCore.prototype.setCookieMgr = function (cookieMgr) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n BaseCore.prototype.getPerfMgr = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n BaseCore.prototype.setPerfMgr = function (perfMgr) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n BaseCore.prototype.eventCnt = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return 0;\r\n };\r\n /**\r\n * Periodically check logger.queue for\r\n */\r\n BaseCore.prototype.pollInternalLogs = function (eventName) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return 0;\r\n };\r\n /**\r\n * Periodically check logger.queue for\r\n */\r\n BaseCore.prototype.stopPollingInternalLogs = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Add a telemetry processor to decorate or drop telemetry events.\r\n * @param telemetryInitializer - The Telemetry Initializer function\r\n * @returns - A ITelemetryInitializerHandler to enable the initializer to be removed\r\n */\r\n BaseCore.prototype.addTelemetryInitializer = function (telemetryInitializer) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Unload and Tear down the SDK and any initialized plugins, after calling this the SDK will be considered\r\n * to be un-initialized and non-operational, re-initializing the SDK should only be attempted if the previous\r\n * unload call return `true` stating that all plugins reported that they also unloaded, the recommended\r\n * approach is to create a new instance and initialize that instance.\r\n * This is due to possible unexpected side effects caused by plugins not supporting unload / teardown, unable\r\n * to successfully remove any global references or they may just be completing the unload process asynchronously.\r\n * @param isAsync - Can the unload be performed asynchronously (default)\r\n * @param unloadComplete - An optional callback that will be called once the unload has completed\r\n * @param cbTimeout - An optional timeout to wait for any flush operations to complete before proceeding with the unload. Defaults to 5 seconds.\r\n */\r\n BaseCore.prototype.unload = function (isAsync, unloadComplete, cbTimeout) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n BaseCore.prototype.getPlugin = function (pluginIdentifier) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n /**\r\n * Add a new plugin to the installation\r\n * @param plugin - The new plugin to add\r\n * @param replaceExisting - should any existing plugin be replaced, default is false\r\n * @param doAsync - Should the add be performed asynchronously\r\n * @param addCb - [Optional] callback to call after the plugin has been added\r\n */\r\n BaseCore.prototype.addPlugin = function (plugin, replaceExisting, doAsync, addCb) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Returns the unique event namespace that should be used\r\n */\r\n BaseCore.prototype.evtNamespace = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n /**\r\n * Add an unload handler that will be called when the SDK is being unloaded\r\n * @param handler - the handler\r\n */\r\n BaseCore.prototype.addUnloadCb = function (handler) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Flush and send any batched / cached data immediately\r\n * @param async - send data asynchronously when true (defaults to true)\r\n * @param callBack - if specified, notify caller when send is complete, the channel should return true to indicate to the caller that it will be called.\r\n * If the caller doesn't return true the caller should assume that it may never be called.\r\n * @param sendReason - specify the reason that you are calling \"flush\" defaults to ManualFlush (1) if not specified\r\n * @returns - true if the callback will be return after the flush is complete otherwise the caller should assume that any provided callback will never be called\r\n */\r\n BaseCore.prototype.flush = function (isAsync, callBack, sendReason) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Gets the current distributed trace context for this instance if available\r\n * @param createNew - Optional flag to create a new instance if one doesn't currently exist, defaults to true\r\n */\r\n BaseCore.prototype.getTraceCtx = function (createNew) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n /**\r\n * Sets the current distributed trace context for this instance if available\r\n */\r\n BaseCore.prototype.setTraceCtx = function (newTracectx) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n BaseCore.prototype.releaseQueue = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Hook for Core extensions to allow them to update their own configuration before updating all of the plugins.\r\n * @param updateCtx - The plugin update context\r\n * @param updateState - The Update State\r\n * @returns boolean - True means the extension class will call updateState otherwise the Core will\r\n */\r\n BaseCore.prototype._updateHook = function (updateCtx, updateState) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return false;\r\n };\r\n return BaseCore;\r\n}());\r\nexport { BaseCore };\r\n//# sourceMappingURL=BaseCore.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { _DYN_ADD_NOTIFICATION_LIS1, _DYN_IS_ASYNC, _DYN_IS_CHILD_EVT, _DYN_LISTENERS, _DYN_PUSH, _DYN_REMOVE_NOTIFICATION_2, _DYN_SPLICE } from \"../__DynamicConstants\";\r\nimport { arrForEach, arrIndexOf } from \"./HelperFuncs\";\r\nimport { STR_EVENTS_DISCARDED, STR_EVENTS_SEND_REQUEST, STR_EVENTS_SENT, STR_PERF_EVENT } from \"./InternalConstants\";\r\nfunction _runListeners(listeners, name, isAsync, callback) {\r\n arrForEach(listeners, function (listener) {\r\n if (listener && listener[name]) {\r\n if (isAsync) {\r\n setTimeout(function () { return callback(listener); }, 0);\r\n }\r\n else {\r\n try {\r\n callback(listener);\r\n }\r\n catch (e) {\r\n // Catch errors to ensure we don't block sending the requests\r\n }\r\n }\r\n }\r\n });\r\n}\r\n/**\r\n * Class to manage sending notifications to all the listeners.\r\n */\r\nvar NotificationManager = /** @class */ (function () {\r\n function NotificationManager(config) {\r\n this.listeners = [];\r\n var perfEvtsSendAll = !!(config || {}).perfEvtsSendAll;\r\n dynamicProto(NotificationManager, this, function (_self) {\r\n _self[_DYN_ADD_NOTIFICATION_LIS1 /* @min:%2eaddNotificationListener */] = function (listener) {\r\n _self.listeners[_DYN_PUSH /* @min:%2epush */](listener);\r\n };\r\n /**\r\n * Removes all instances of the listener.\r\n * @param {INotificationListener} listener - AWTNotificationListener to remove.\r\n */\r\n _self[_DYN_REMOVE_NOTIFICATION_2 /* @min:%2eremoveNotificationListener */] = function (listener) {\r\n var index = arrIndexOf(_self[_DYN_LISTENERS /* @min:%2elisteners */], listener);\r\n while (index > -1) {\r\n _self.listeners[_DYN_SPLICE /* @min:%2esplice */](index, 1);\r\n index = arrIndexOf(_self[_DYN_LISTENERS /* @min:%2elisteners */], listener);\r\n }\r\n };\r\n /**\r\n * Notification for events sent.\r\n * @param {ITelemetryItem[]} events - The array of events that have been sent.\r\n */\r\n _self[STR_EVENTS_SENT /* @min:%2eeventsSent */] = function (events) {\r\n _runListeners(_self[_DYN_LISTENERS /* @min:%2elisteners */], STR_EVENTS_SENT, true, function (listener) {\r\n listener[STR_EVENTS_SENT /* @min:%2eeventsSent */](events);\r\n });\r\n };\r\n /**\r\n * Notification for events being discarded.\r\n * @param {ITelemetryItem[]} events - The array of events that have been discarded by the SDK.\r\n * @param {number} reason - The reason for which the SDK discarded the events. The EventsDiscardedReason\r\n * constant should be used to check the different values.\r\n */\r\n _self[STR_EVENTS_DISCARDED /* @min:%2eeventsDiscarded */] = function (events, reason) {\r\n _runListeners(_self[_DYN_LISTENERS /* @min:%2elisteners */], STR_EVENTS_DISCARDED, true, function (listener) {\r\n listener[STR_EVENTS_DISCARDED /* @min:%2eeventsDiscarded */](events, reason);\r\n });\r\n };\r\n /**\r\n * [Optional] A function called when the events have been requested to be sent to the sever.\r\n * @param {number} sendReason - The reason why the event batch is being sent.\r\n * @param {boolean} isAsync - A flag which identifies whether the requests are being sent in an async or sync manner.\r\n */\r\n _self[STR_EVENTS_SEND_REQUEST /* @min:%2eeventsSendRequest */] = function (sendReason, isAsync) {\r\n _runListeners(_self[_DYN_LISTENERS /* @min:%2elisteners */], STR_EVENTS_SEND_REQUEST, isAsync, function (listener) {\r\n listener[STR_EVENTS_SEND_REQUEST /* @min:%2eeventsSendRequest */](sendReason, isAsync);\r\n });\r\n };\r\n _self[STR_PERF_EVENT /* @min:%2eperfEvent */] = function (perfEvent) {\r\n if (perfEvent) {\r\n // Send all events or only parent events\r\n if (perfEvtsSendAll || !perfEvent[_DYN_IS_CHILD_EVT /* @min:%2eisChildEvt */]()) {\r\n _runListeners(_self[_DYN_LISTENERS /* @min:%2elisteners */], STR_PERF_EVENT, false, function (listener) {\r\n if (perfEvent[_DYN_IS_ASYNC /* @min:%2eisAsync */]) {\r\n setTimeout(function () { return listener[STR_PERF_EVENT /* @min:%2eperfEvent */](perfEvent); }, 0);\r\n }\r\n else {\r\n listener[STR_PERF_EVENT /* @min:%2eperfEvent */](perfEvent);\r\n }\r\n });\r\n }\r\n }\r\n };\r\n });\r\n }\r\n /**\r\n * Adds a notification listener.\r\n * @param {INotificationListener} listener - The notification listener to be added.\r\n */\r\n NotificationManager.prototype.addNotificationListener = function (listener) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Removes all instances of the listener.\r\n * @param {INotificationListener} listener - AWTNotificationListener to remove.\r\n */\r\n NotificationManager.prototype.removeNotificationListener = function (listener) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Notification for events sent.\r\n * @param {ITelemetryItem[]} events - The array of events that have been sent.\r\n */\r\n NotificationManager.prototype.eventsSent = function (events) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Notification for events being discarded.\r\n * @param {ITelemetryItem[]} events - The array of events that have been discarded by the SDK.\r\n * @param {number} reason - The reason for which the SDK discarded the events. The EventsDiscardedReason\r\n * constant should be used to check the different values.\r\n */\r\n NotificationManager.prototype.eventsDiscarded = function (events, reason) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * [Optional] A function called when the events have been requested to be sent to the sever.\r\n * @param {number} sendReason - The reason why the event batch is being sent.\r\n * @param {boolean} isAsync - A flag which identifies whether the requests are being sent in an async or sync manner.\r\n */\r\n NotificationManager.prototype.eventsSendRequest = function (sendReason, isAsync) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n return NotificationManager;\r\n}());\r\nexport { NotificationManager };\r\n//# sourceMappingURL=NotificationManager.js.map","import { __extends } from \"tslib\";\r\n// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { _DYN_GET_NOTIFY_MGR, _DYN_INITIALIZE, _DYN_NAME } from \"../__DynamicConstants\";\r\nimport { BaseCore } from \"./BaseCore\";\r\nimport { DiagnosticLogger } from \"./DiagnosticLogger\";\r\nimport { isNullOrUndefined, throwError } from \"./HelperFuncs\";\r\nimport { STR_EVENTS_DISCARDED, STR_GET_PERF_MGR } from \"./InternalConstants\";\r\nimport { NotificationManager } from \"./NotificationManager\";\r\nimport { doPerf } from \"./PerfManager\";\r\nvar AppInsightsCore = /** @class */ (function (_super) {\r\n __extends(AppInsightsCore, _super);\r\n function AppInsightsCore() {\r\n var _this = _super.call(this) || this;\r\n dynamicProto(AppInsightsCore, _this, function (_self, _base) {\r\n _self[_DYN_INITIALIZE /* @min:%2einitialize */] = function (config, extensions, logger, notificationManager) {\r\n _base[_DYN_INITIALIZE /* @min:%2einitialize */](config, extensions, logger || new DiagnosticLogger(config), notificationManager || new NotificationManager(config));\r\n };\r\n _self.track = function (telemetryItem) {\r\n doPerf(_self[STR_GET_PERF_MGR /* @min:%2egetPerfMgr */](), function () { return \"AppInsightsCore:track\"; }, function () {\r\n if (telemetryItem === null) {\r\n _notifyInvalidEvent(telemetryItem);\r\n // throw error\r\n throwError(\"Invalid telemetry item\");\r\n }\r\n // do basic validation before sending it through the pipeline\r\n _validateTelemetryItem(telemetryItem);\r\n _base.track(telemetryItem);\r\n }, function () { return ({ item: telemetryItem }); }, !(telemetryItem.sync));\r\n };\r\n function _validateTelemetryItem(telemetryItem) {\r\n if (isNullOrUndefined(telemetryItem[_DYN_NAME /* @min:%2ename */])) {\r\n _notifyInvalidEvent(telemetryItem);\r\n throwError(\"telemetry name required\");\r\n }\r\n }\r\n function _notifyInvalidEvent(telemetryItem) {\r\n var manager = _self[_DYN_GET_NOTIFY_MGR /* @min:%2egetNotifyMgr */]();\r\n if (manager) {\r\n manager[STR_EVENTS_DISCARDED /* @min:%2eeventsDiscarded */]([telemetryItem], 2 /* eEventsDiscardedReason.InvalidEvent */);\r\n }\r\n }\r\n });\r\n return _this;\r\n }\r\n AppInsightsCore.prototype.initialize = function (config, extensions, logger, notificationManager) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n AppInsightsCore.prototype.track = function (telemetryItem) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n return AppInsightsCore;\r\n}(BaseCore));\r\nexport { AppInsightsCore };\r\n//# sourceMappingURL=AppInsightsCore.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Generally you should only put values that are used more than 2 times and then only if not already exposed as a constant (such as SdkCoreNames)\r\n// as when using \"short\" named values from here they will be will be minified smaller than the SdkCoreNames[eSdkCoreNames.xxxx] value.\r\nexport var STR_DURATION = \"duration\";\r\nexport var STR_PROPERTIES = \"properties\";\r\n//# sourceMappingURL=InternalConstants.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n// @skip-file-minify\r\n// ##############################################################\r\n// AUTO GENERATED FILE: This file is Auto Generated during build.\r\n// ##############################################################\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\nexport var _DYN_REQUEST_URL = \"requestUrl\"; // Count: 12\r\nexport var _DYN_INST = \"inst\"; // Count: 5\r\nexport var _DYN_LENGTH = \"length\"; // Count: 10\r\nexport var _DYN_TRACE_ID = \"traceID\"; // Count: 9\r\nexport var _DYN_SPAN_ID = \"spanID\"; // Count: 8\r\nexport var _DYN_TRACE_FLAGS = \"traceFlags\"; // Count: 13\r\nexport var _DYN_CONTEXT = \"context\"; // Count: 7\r\nexport var _DYN_TRACE_ID0 = \"traceId\"; // Count: 5\r\nexport var _DYN_SPAN_ID1 = \"spanId\"; // Count: 5\r\nexport var _DYN_CORE = \"core\"; // Count: 8\r\nexport var _DYN_INCLUDE_CORRELATION_2 = \"includeCorrelationHeaders\"; // Count: 4\r\nexport var _DYN_CAN_INCLUDE_CORRELAT3 = \"canIncludeCorrelationHeader\"; // Count: 2\r\nexport var _DYN_GET_ABSOLUTE_URL = \"getAbsoluteUrl\"; // Count: 3\r\nexport var _DYN_HEADERS = \"headers\"; // Count: 6\r\nexport var _DYN_REQUEST_HEADERS = \"requestHeaders\"; // Count: 13\r\nexport var _DYN_APP_ID = \"appId\"; // Count: 5\r\nexport var _DYN_SET_REQUEST_HEADER = \"setRequestHeader\"; // Count: 3\r\nexport var _DYN_TRACK_DEPENDENCY_DAT4 = \"trackDependencyDataInternal\"; // Count: 2\r\nexport var _DYN_DISTRIBUTED_TRACING_5 = \"distributedTracingMode\"; // Count: 3\r\nexport var _DYN_START_TIME = \"startTime\"; // Count: 6\r\nexport var _DYN_TO_LOWER_CASE = \"toLowerCase\"; // Count: 6\r\nexport var _DYN_ENABLE_REQUEST_HEADE6 = \"enableRequestHeaderTracking\"; // Count: 2\r\nexport var _DYN_ENABLE_AJAX_ERROR_ST7 = \"enableAjaxErrorStatusText\"; // Count: 2\r\nexport var _DYN_ENABLE_AJAX_PERF_TRA8 = \"enableAjaxPerfTracking\"; // Count: 2\r\nexport var _DYN_MAX_AJAX_CALLS_PER_V9 = \"maxAjaxCallsPerView\"; // Count: 2\r\nexport var _DYN_ENABLE_RESPONSE_HEAD10 = \"enableResponseHeaderTracking\"; // Count: 2\r\nexport var _DYN_EXCLUDE_REQUEST_FROM11 = \"excludeRequestFromAutoTrackingPatterns\"; // Count: 2\r\nexport var _DYN_ADD_REQUEST_CONTEXT = \"addRequestContext\"; // Count: 2\r\nexport var _DYN_DISABLE_AJAX_TRACKIN12 = \"disableAjaxTracking\"; // Count: 2\r\nexport var _DYN_DISABLE_FETCH_TRACKI13 = \"disableFetchTracking\"; // Count: 2\r\nexport var _DYN_STATUS = \"status\"; // Count: 10\r\nexport var _DYN_STATUS_TEXT = \"statusText\"; // Count: 8\r\nexport var _DYN_HEADER_MAP = \"headerMap\"; // Count: 8\r\nexport var _DYN_OPEN_DONE = \"openDone\"; // Count: 3\r\nexport var _DYN_SEND_DONE = \"sendDone\"; // Count: 3\r\nexport var _DYN_REQUEST_SENT_TIME = \"requestSentTime\"; // Count: 9\r\nexport var _DYN_ABORT_DONE = \"abortDone\"; // Count: 3\r\nexport var _DYN_GET_TRACE_ID = \"getTraceId\"; // Count: 3\r\nexport var _DYN_GET_TRACE_FLAGS = \"getTraceFlags\"; // Count: 3\r\nexport var _DYN_METHOD = \"method\"; // Count: 10\r\nexport var _DYN_ERROR_STATUS_TEXT = \"errorStatusText\"; // Count: 3\r\nexport var _DYN_STATE_CHANGE_ATTACHE14 = \"stateChangeAttached\"; // Count: 2\r\nexport var _DYN_RESPONSE_TEXT = \"responseText\"; // Count: 5\r\nexport var _DYN_RESPONSE_FINISHED_TI15 = \"responseFinishedTime\"; // Count: 7\r\nexport var _DYN__CREATE_TRACK_ITEM = \"CreateTrackItem\"; // Count: 3\r\nexport var _DYN_RESPONSE = \"response\"; // Count: 4\r\nexport var _DYN_GET_ALL_RESPONSE_HEA16 = \"getAllResponseHeaders\"; // Count: 2\r\nexport var _DYN_GET_PART_APROPS = \"getPartAProps\"; // Count: 3\r\nexport var _DYN_GET_CORRELATION_CONT17 = \"getCorrelationContext\"; // Count: 2\r\nexport var _DYN_PERF_MARK = \"perfMark\"; // Count: 4\r\nexport var _DYN_AJAX_PERF_LOOKUP_DEL18 = \"ajaxPerfLookupDelay\"; // Count: 2\r\nexport var _DYN_NAME = \"name\"; // Count: 6\r\nexport var _DYN_PERF_TIMING = \"perfTiming\"; // Count: 3\r\nexport var _DYN_AJAX_DIAGNOSTICS_MES19 = \"ajaxDiagnosticsMessage\"; // Count: 3\r\nexport var _DYN_CORRELATION_CONTEXT = \"correlationContext\"; // Count: 3\r\nexport var _DYN_AJAX_TOTAL_DURATION = \"ajaxTotalDuration\"; // Count: 3\r\nexport var _DYN_EVENT_TRACE_CTX = \"eventTraceCtx\"; // Count: 3\r\n//# sourceMappingURL=__DynamicConstants.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { Extensions, dataSanitizeUrl, dateTimeUtilsDuration, msToTimeSpan, urlGetAbsoluteUrl, urlGetCompleteUrl } from \"@microsoft/applicationinsights-common\";\r\nimport { arrForEach, isNullOrUndefined, isNumber, isString, normalizeJsName, objForEachKey, objKeys } from \"@microsoft/applicationinsights-core-js\";\r\nimport { STR_DURATION, STR_PROPERTIES } from \"./InternalConstants\";\r\nimport { _DYN_ABORT_DONE, _DYN_AJAX_TOTAL_DURATION, _DYN_CORRELATION_CONTEXT, _DYN_EVENT_TRACE_CTX, _DYN_GET_ABSOLUTE_URL, _DYN_GET_PART_APROPS, _DYN_GET_TRACE_FLAGS, _DYN_GET_TRACE_ID, _DYN_HEADER_MAP, _DYN_LENGTH, _DYN_METHOD, _DYN_NAME, _DYN_OPEN_DONE, _DYN_PERF_MARK, _DYN_PERF_TIMING, _DYN_REQUEST_HEADERS, _DYN_REQUEST_SENT_TIME, _DYN_REQUEST_URL, _DYN_RESPONSE, _DYN_RESPONSE_FINISHED_TI15, _DYN_SEND_DONE, _DYN_SPAN_ID, _DYN_SPAN_ID1, _DYN_START_TIME, _DYN_STATE_CHANGE_ATTACHE14, _DYN_STATUS, _DYN_STATUS_TEXT, _DYN_TRACE_FLAGS, _DYN_TRACE_ID, _DYN_TRACE_ID0, _DYN__CREATE_TRACK_ITEM } from \"./__DynamicConstants\";\r\n/** @ignore */\r\nfunction _calcPerfDuration(resourceEntry, start, end) {\r\n var result = 0;\r\n var from = resourceEntry[start];\r\n var to = resourceEntry[end];\r\n if (from && to) {\r\n result = dateTimeUtilsDuration(from, to);\r\n }\r\n return result;\r\n}\r\n/** @ignore */\r\nfunction _setPerfDuration(props, name, resourceEntry, start, end) {\r\n var result = 0;\r\n var value = _calcPerfDuration(resourceEntry, start, end);\r\n if (value) {\r\n result = _setPerfValue(props, name, msToTimeSpan(value));\r\n }\r\n return result;\r\n}\r\n/** @ignore */\r\nfunction _setPerfValue(props, name, value) {\r\n var strPerf = \"ajaxPerf\";\r\n var result = 0;\r\n if (props && name && value) {\r\n var perfData = props[strPerf] = (props[strPerf] || {});\r\n perfData[name] = value;\r\n result = 1;\r\n }\r\n return result;\r\n}\r\n/** @ignore */\r\nfunction _populatePerfData(ajaxData, dependency) {\r\n /*\r\n * https://developer.mozilla.org/en-US/docs/Web/API/Resource_Timing_API/Using_the_Resource_Timing_API\r\n * | -startTime\r\n * | -redirectStart\r\n * | | -redirectEnd\r\n * | | | -fetchStart\r\n * | | | | -domainLookupStart\r\n * | | | | |- domainLookupEnd\r\n * | | | | | | -connectStart\r\n * | | | | | | | -secureConnectionStart\r\n * | | | | | | | | -connectEnd\r\n * | | | | | | | | | -requestStart\r\n * | | | | | | | | | | | -responseStart\r\n * | | | | | | | | | | | | | -responseEnd\r\n * +------------+-+---+----------------+-+--+--------+-+-----------+-+------------+-+\r\n * |--redirect--| |---|--domainLookup--| |--connect--| |--request--| |--response--| |\r\n * |-------------------networkConnect----------------|\r\n * | |---------sentRequest--------|\r\n * |------------------------------------perfTotal-----------------------------------|\r\n */\r\n var resourceEntry = ajaxData[_DYN_PERF_TIMING /* @min:%2eperfTiming */];\r\n var props = dependency[STR_PROPERTIES /* @min:%2eproperties */] || {};\r\n var propsSet = 0;\r\n var strName = \"name\";\r\n var strStart = \"Start\";\r\n var strEnd = \"End\";\r\n var strDomainLookup = \"domainLookup\";\r\n var strConnect = \"connect\";\r\n var strRedirect = \"redirect\";\r\n var strRequest = \"request\";\r\n var strResponse = \"response\";\r\n var strStartTime = \"startTime\";\r\n var strDomainLookupStart = strDomainLookup + strStart;\r\n var strDomainLookupEnd = strDomainLookup + strEnd;\r\n var strConnectStart = strConnect + strStart;\r\n var strConnectEnd = strConnect + strEnd;\r\n var strRequestStart = strRequest + strStart;\r\n var strRequestEnd = strRequest + strEnd;\r\n var strResponseStart = strResponse + strStart;\r\n var strResponseEnd = strResponse + strEnd;\r\n var strRedirectStart = strRedirect + strStart;\r\n var strRedirectEnd = strRedirect = strEnd;\r\n var strTransferSize = \"transferSize\";\r\n var strEncodedBodySize = \"encodedBodySize\";\r\n var strDecodedBodySize = \"decodedBodySize\";\r\n var strServerTiming = \"serverTiming\";\r\n if (resourceEntry) {\r\n // redirect\r\n propsSet |= _setPerfDuration(props, strRedirect, resourceEntry, strRedirectStart, strRedirectEnd);\r\n // domainLookup\r\n propsSet |= _setPerfDuration(props, strDomainLookup, resourceEntry, strDomainLookupStart, strDomainLookupEnd);\r\n // connect\r\n propsSet |= _setPerfDuration(props, strConnect, resourceEntry, strConnectStart, strConnectEnd);\r\n // request\r\n propsSet |= _setPerfDuration(props, strRequest, resourceEntry, strRequestStart, strRequestEnd);\r\n // response\r\n propsSet |= _setPerfDuration(props, strResponse, resourceEntry, strResponseStart, strResponseEnd);\r\n // Network connection time\r\n propsSet |= _setPerfDuration(props, \"networkConnect\", resourceEntry, strStartTime, strConnectEnd);\r\n // Sent Request\r\n propsSet |= _setPerfDuration(props, \"sentRequest\", resourceEntry, strRequestStart, strResponseEnd);\r\n // PerfTotal / Duration\r\n var duration = resourceEntry[STR_DURATION /* @min:%2eduration */];\r\n if (!duration) {\r\n duration = _calcPerfDuration(resourceEntry, strStartTime, strResponseEnd) || 0;\r\n }\r\n propsSet |= _setPerfValue(props, STR_DURATION, duration);\r\n propsSet |= _setPerfValue(props, \"perfTotal\", duration);\r\n var serverTiming = resourceEntry[strServerTiming];\r\n if (serverTiming) {\r\n var server_1 = {};\r\n arrForEach(serverTiming, function (value, idx) {\r\n var name = normalizeJsName(value[strName] || \"\" + idx);\r\n var newValue = server_1[name] || {};\r\n objForEachKey(value, function (key, val) {\r\n if (key !== strName && isString(val) || isNumber(val)) {\r\n if (newValue[key]) {\r\n val = newValue[key] + \";\" + val;\r\n }\r\n if (val || !isString(val)) {\r\n // Only set the value if it has a value and it's not an empty string\r\n newValue[key] = val;\r\n }\r\n }\r\n });\r\n server_1[name] = newValue;\r\n });\r\n propsSet |= _setPerfValue(props, strServerTiming, server_1);\r\n }\r\n propsSet |= _setPerfValue(props, strTransferSize, resourceEntry[strTransferSize]);\r\n propsSet |= _setPerfValue(props, strEncodedBodySize, resourceEntry[strEncodedBodySize]);\r\n propsSet |= _setPerfValue(props, strDecodedBodySize, resourceEntry[strDecodedBodySize]);\r\n }\r\n else {\r\n if (ajaxData[_DYN_PERF_MARK /* @min:%2eperfMark */]) {\r\n propsSet |= _setPerfValue(props, \"missing\", ajaxData.perfAttempts);\r\n }\r\n }\r\n if (propsSet) {\r\n dependency[STR_PROPERTIES /* @min:%2eproperties */] = props;\r\n }\r\n}\r\nvar XHRMonitoringState = /** @class */ (function () {\r\n function XHRMonitoringState() {\r\n var self = this;\r\n self[_DYN_OPEN_DONE /* @min:%2eopenDone */] = false;\r\n self.setRequestHeaderDone = false;\r\n self[_DYN_SEND_DONE /* @min:%2esendDone */] = false;\r\n self[_DYN_ABORT_DONE /* @min:%2eabortDone */] = false;\r\n // <summary>True, if onreadyStateChangeCallback function attached to xhr, otherwise false</summary>\r\n self[_DYN_STATE_CHANGE_ATTACHE14 /* @min:%2estateChangeAttached */] = false;\r\n }\r\n return XHRMonitoringState;\r\n}());\r\nexport { XHRMonitoringState };\r\nvar ajaxRecord = /** @class */ (function () {\r\n function ajaxRecord(traceId, spanId, logger, traceCtx) {\r\n var _a;\r\n var self = this;\r\n var _logger = logger;\r\n var strResponseText = \"responseText\";\r\n // Assigning the initial/default values within the constructor to avoid typescript from creating a bunch of\r\n // this.XXXX = null\r\n self[_DYN_PERF_MARK /* @min:%2eperfMark */] = null;\r\n self.completed = false;\r\n self.requestHeadersSize = null;\r\n self[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */] = null;\r\n self.responseReceivingDuration = null;\r\n self.callbackDuration = null;\r\n self[_DYN_AJAX_TOTAL_DURATION /* @min:%2eajaxTotalDuration */] = null;\r\n self.aborted = 0;\r\n self.pageUrl = null;\r\n self[_DYN_REQUEST_URL /* @min:%2erequestUrl */] = null;\r\n self.requestSize = 0;\r\n self[_DYN_METHOD /* @min:%2emethod */] = null;\r\n self[_DYN_STATUS /* @min:%2estatus */] = null;\r\n self[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */] = null;\r\n self.responseStartedTime = null;\r\n self[_DYN_RESPONSE_FINISHED_TI15 /* @min:%2eresponseFinishedTime */] = null;\r\n self.callbackFinishedTime = null;\r\n self.endTime = null;\r\n self.xhrMonitoringState = new XHRMonitoringState();\r\n self.clientFailure = 0;\r\n self[_DYN_TRACE_ID /* @min:%2etraceID */] = traceId;\r\n self[_DYN_SPAN_ID /* @min:%2espanID */] = spanId;\r\n self[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] = traceCtx === null || traceCtx === void 0 ? void 0 : traceCtx.getTraceFlags();\r\n if (traceCtx) {\r\n self[_DYN_EVENT_TRACE_CTX /* @min:%2eeventTraceCtx */] = (_a = {},\r\n _a[_DYN_TRACE_ID0 /* @min:traceId */] = traceCtx[_DYN_GET_TRACE_ID /* @min:%2egetTraceId */](),\r\n _a[_DYN_SPAN_ID1 /* @min:spanId */] = traceCtx.getSpanId(),\r\n _a[_DYN_TRACE_FLAGS /* @min:traceFlags */] = traceCtx[_DYN_GET_TRACE_FLAGS /* @min:%2egetTraceFlags */](),\r\n _a);\r\n }\r\n else {\r\n self[_DYN_EVENT_TRACE_CTX /* @min:%2eeventTraceCtx */] = null;\r\n }\r\n dynamicProto(ajaxRecord, self, function (self) {\r\n self.getAbsoluteUrl = function () {\r\n return self[_DYN_REQUEST_URL /* @min:%2erequestUrl */] ? urlGetAbsoluteUrl(self[_DYN_REQUEST_URL /* @min:%2erequestUrl */]) : null;\r\n };\r\n self.getPathName = function () {\r\n return self[_DYN_REQUEST_URL /* @min:%2erequestUrl */] ? dataSanitizeUrl(_logger, urlGetCompleteUrl(self[_DYN_METHOD /* @min:%2emethod */], self[_DYN_REQUEST_URL /* @min:%2erequestUrl */])) : null;\r\n };\r\n self[_DYN__CREATE_TRACK_ITEM /* @min:%2eCreateTrackItem */] = function (ajaxType, enableRequestHeaderTracking, getResponse) {\r\n var _a;\r\n // round to 3 decimal points\r\n self.ajaxTotalDuration = Math.round(dateTimeUtilsDuration(self.requestSentTime, self.responseFinishedTime) * 1000) / 1000;\r\n if (self[_DYN_AJAX_TOTAL_DURATION /* @min:%2eajaxTotalDuration */] < 0) {\r\n return null;\r\n }\r\n var dependency = (_a = {\r\n id: \"|\" + self[_DYN_TRACE_ID /* @min:%2etraceID */] + \".\" + self[_DYN_SPAN_ID /* @min:%2espanID */],\r\n target: self[_DYN_GET_ABSOLUTE_URL /* @min:%2egetAbsoluteUrl */]()\r\n },\r\n _a[_DYN_NAME /* @min:name */] = self.getPathName(),\r\n _a.type = ajaxType,\r\n _a[_DYN_START_TIME /* @min:startTime */] = null,\r\n _a.duration = self[_DYN_AJAX_TOTAL_DURATION /* @min:%2eajaxTotalDuration */],\r\n _a.success = (+(self[_DYN_STATUS /* @min:%2estatus */])) >= 200 && (+(self[_DYN_STATUS /* @min:%2estatus */])) < 400,\r\n _a.responseCode = (+(self[_DYN_STATUS /* @min:%2estatus */])),\r\n _a.method = self[_DYN_METHOD /* @min:%2emethod */],\r\n _a[STR_PROPERTIES] = { HttpMethod: self[_DYN_METHOD /* @min:%2emethod */] },\r\n _a);\r\n if (self[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */]) {\r\n // Set the correct dependency start time\r\n dependency[_DYN_START_TIME /* @min:%2estartTime */] = new Date();\r\n dependency[_DYN_START_TIME /* @min:%2estartTime */].setTime(self[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */]);\r\n }\r\n // Add Ajax perf details if available\r\n _populatePerfData(self, dependency);\r\n if (enableRequestHeaderTracking) {\r\n if (objKeys(self.requestHeaders)[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n var props = dependency[STR_PROPERTIES /* @min:%2eproperties */] = dependency[STR_PROPERTIES /* @min:%2eproperties */] || {};\r\n props[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */] = self[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */];\r\n }\r\n }\r\n if (getResponse) {\r\n var response = getResponse();\r\n if (response) {\r\n // enrich dependency target with correlation context from the server\r\n var correlationContext = response[_DYN_CORRELATION_CONTEXT /* @min:%2ecorrelationContext */];\r\n if (correlationContext) {\r\n dependency.correlationContext = /* dependency.target + \" | \" + */ correlationContext;\r\n }\r\n if (response[_DYN_HEADER_MAP /* @min:%2eheaderMap */]) {\r\n if (objKeys(response.headerMap)[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n var props = dependency[STR_PROPERTIES /* @min:%2eproperties */] = dependency[STR_PROPERTIES /* @min:%2eproperties */] || {};\r\n props.responseHeaders = response[_DYN_HEADER_MAP /* @min:%2eheaderMap */];\r\n }\r\n }\r\n if (self.errorStatusText && self[_DYN_STATUS /* @min:%2estatus */] >= 400) {\r\n var responseType = response.type;\r\n var props = dependency[STR_PROPERTIES /* @min:%2eproperties */] = dependency[STR_PROPERTIES /* @min:%2eproperties */] || {};\r\n if (responseType === \"\" || responseType === \"text\") {\r\n props.responseText = response.responseText ? response[_DYN_STATUS_TEXT /* @min:%2estatusText */] + \" - \" + response[strResponseText] : response[_DYN_STATUS_TEXT /* @min:%2estatusText */];\r\n }\r\n if (responseType === \"json\") {\r\n props.responseText = response.response ? response[_DYN_STATUS_TEXT /* @min:%2estatusText */] + \" - \" + JSON.stringify(response[_DYN_RESPONSE /* @min:%2eresponse */]) : response[_DYN_STATUS_TEXT /* @min:%2estatusText */];\r\n }\r\n }\r\n }\r\n }\r\n return dependency;\r\n };\r\n self[_DYN_GET_PART_APROPS /* @min:%2egetPartAProps */] = function () {\r\n var _a;\r\n var partA = null;\r\n var traceCtx = self[_DYN_EVENT_TRACE_CTX /* @min:%2eeventTraceCtx */];\r\n if (traceCtx && (traceCtx[_DYN_TRACE_ID0 /* @min:%2etraceId */] || traceCtx[_DYN_SPAN_ID1 /* @min:%2espanId */])) {\r\n partA = {};\r\n var traceExt = partA[Extensions.TraceExt] = (_a = {},\r\n _a[_DYN_TRACE_ID /* @min:traceID */] = traceCtx[_DYN_TRACE_ID0 /* @min:%2etraceId */],\r\n _a.parentID = traceCtx[_DYN_SPAN_ID1 /* @min:%2espanId */],\r\n _a);\r\n if (!isNullOrUndefined(traceCtx[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */])) {\r\n traceExt[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] = traceCtx[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */];\r\n }\r\n }\r\n return partA;\r\n };\r\n });\r\n }\r\n ajaxRecord.prototype.getAbsoluteUrl = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n ajaxRecord.prototype.getPathName = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n ajaxRecord.prototype.CreateTrackItem = function (ajaxType, enableRequestHeaderTracking, getResponse) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n ajaxRecord.prototype.getPartAProps = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n return ajaxRecord;\r\n}());\r\nexport { ajaxRecord };\r\n//# sourceMappingURL=ajaxRecord.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { __assign, __extends } from \"tslib\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { CorrelationIdHelper, DisabledPropertyName, PropertiesPluginIdentifier, RemoteDependencyData, RequestHeaders, createDistributedTraceContextFromTrace, createTelemetryItem, createTraceParent, dateTimeUtilsNow, formatTraceParent, isInternalApplicationInsightsEndpoint } from \"@microsoft/applicationinsights-common\";\r\nimport { BaseTelemetryPlugin, InstrumentFunc, InstrumentProto, _throwInternal, arrForEach, createProcessTelemetryContext, createUniqueNamespace, deepFreeze, dumpObj, eventOn, generateW3CId, getExceptionName, getGlobal, getIEVersion, getLocation, getPerformance, isFunction, isNullOrUndefined, isString, isXhrSupported, mergeEvtNamespace, objForEachKey, strPrototype, strTrim } from \"@microsoft/applicationinsights-core-js\";\r\nimport { STR_PROPERTIES } from \"./InternalConstants\";\r\nimport { _DYN_ABORT_DONE, _DYN_ADD_REQUEST_CONTEXT, _DYN_AJAX_DIAGNOSTICS_MES19, _DYN_AJAX_PERF_LOOKUP_DEL18, _DYN_APP_ID, _DYN_CAN_INCLUDE_CORRELAT3, _DYN_CONTEXT, _DYN_CORE, _DYN_CORRELATION_CONTEXT, _DYN_DISABLE_AJAX_TRACKIN12, _DYN_DISABLE_FETCH_TRACKI13, _DYN_DISTRIBUTED_TRACING_5, _DYN_ENABLE_AJAX_ERROR_ST7, _DYN_ENABLE_AJAX_PERF_TRA8, _DYN_ENABLE_REQUEST_HEADE6, _DYN_ENABLE_RESPONSE_HEAD10, _DYN_ERROR_STATUS_TEXT, _DYN_EXCLUDE_REQUEST_FROM11, _DYN_GET_ABSOLUTE_URL, _DYN_GET_ALL_RESPONSE_HEA16, _DYN_GET_CORRELATION_CONT17, _DYN_GET_PART_APROPS, _DYN_GET_TRACE_FLAGS, _DYN_GET_TRACE_ID, _DYN_HEADERS, _DYN_HEADER_MAP, _DYN_INCLUDE_CORRELATION_2, _DYN_INST, _DYN_LENGTH, _DYN_MAX_AJAX_CALLS_PER_V9, _DYN_METHOD, _DYN_NAME, _DYN_OPEN_DONE, _DYN_PERF_MARK, _DYN_PERF_TIMING, _DYN_REQUEST_HEADERS, _DYN_REQUEST_SENT_TIME, _DYN_REQUEST_URL, _DYN_RESPONSE, _DYN_RESPONSE_FINISHED_TI15, _DYN_RESPONSE_TEXT, _DYN_SEND_DONE, _DYN_SET_REQUEST_HEADER, _DYN_SPAN_ID, _DYN_SPAN_ID1, _DYN_START_TIME, _DYN_STATE_CHANGE_ATTACHE14, _DYN_STATUS, _DYN_STATUS_TEXT, _DYN_TO_LOWER_CASE, _DYN_TRACE_FLAGS, _DYN_TRACE_ID, _DYN_TRACE_ID0, _DYN_TRACK_DEPENDENCY_DAT4, _DYN__CREATE_TRACK_ITEM } from \"./__DynamicConstants\";\r\nimport { ajaxRecord } from \"./ajaxRecord\";\r\nvar AJAX_MONITOR_PREFIX = \"ai.ajxmn.\";\r\nvar strDiagLog = \"diagLog\";\r\nvar strAjaxData = \"ajaxData\";\r\nvar strFetch = \"fetch\";\r\nvar ERROR_HEADER = \"Failed to monitor XMLHttpRequest\";\r\nvar ERROR_PREFIX = \", monitoring data for this ajax call \";\r\nvar ERROR_POSTFIX = ERROR_PREFIX + \"may be incorrect.\";\r\nvar ERROR_NOT_SENT = ERROR_PREFIX + \"won't be sent.\";\r\nvar CORRELATION_HEADER_ERROR = \"Failed to get Request-Context correlation header as it may be not included in the response or not accessible.\";\r\nvar CUSTOM_REQUEST_CONTEXT_ERROR = \"Failed to add custom defined request context as configured call back may missing a null check.\";\r\nvar FAILED_TO_CALCULATE_DURATION_ERROR = \"Failed to calculate the duration of the \";\r\n// Using a global value so that to handle same iKey with multiple app insights instances (mostly for testing)\r\nvar _markCount = 0;\r\n/** @Ignore */\r\nfunction _supportsFetch() {\r\n var _global = getGlobal();\r\n if (!_global ||\r\n isNullOrUndefined(_global.Request) ||\r\n isNullOrUndefined(_global.Request[strPrototype]) ||\r\n isNullOrUndefined(_global[strFetch])) {\r\n return null;\r\n }\r\n return _global[strFetch];\r\n}\r\n/**\r\n * Determines whether ajax monitoring can be enabled on this document\r\n * @returns True if Ajax monitoring is supported on this page, otherwise false\r\n * @ignore\r\n */\r\nfunction _supportsAjaxMonitoring(ajaxMonitorInstance) {\r\n var result = false;\r\n if (isXhrSupported()) {\r\n var proto = XMLHttpRequest[strPrototype];\r\n result = !isNullOrUndefined(proto) &&\r\n !isNullOrUndefined(proto.open) && // eslint-disable-line security/detect-non-literal-fs-filename -- false positive\r\n !isNullOrUndefined(proto.send) &&\r\n !isNullOrUndefined(proto.abort);\r\n }\r\n var ieVer = getIEVersion();\r\n if (ieVer && ieVer < 9) {\r\n result = false;\r\n }\r\n if (result) {\r\n // Disable if the XmlHttpRequest can't be extended or hooked\r\n try {\r\n var xhr = new XMLHttpRequest();\r\n xhr[strAjaxData] = {};\r\n // Check that we can update the prototype\r\n var theOpen = XMLHttpRequest[strPrototype].open;\r\n XMLHttpRequest[strPrototype].open = theOpen;\r\n }\r\n catch (e) {\r\n // We can't decorate the xhr object so disable monitoring\r\n result = false;\r\n _throwInternalCritical(ajaxMonitorInstance, 15 /* _eInternalMessageId.FailedMonitorAjaxOpen */, \"Failed to enable XMLHttpRequest monitoring, extension is not supported\", {\r\n exception: dumpObj(e)\r\n });\r\n }\r\n }\r\n return result;\r\n}\r\n/** @Ignore */\r\nfunction _getFailedAjaxDiagnosticsMessage(xhr) {\r\n var result = \"\";\r\n try {\r\n if (xhr && xhr[strAjaxData] && xhr[strAjaxData][_DYN_REQUEST_URL /* @min:%2erequestUrl */]) {\r\n result += \"(url: '\" + xhr[strAjaxData][_DYN_REQUEST_URL /* @min:%2erequestUrl */] + \"')\";\r\n }\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n return result;\r\n}\r\n/** @ignore */\r\nfunction _throwInternalCritical(ajaxMonitorInstance, msgId, message, properties, isUserAct) {\r\n _throwInternal(ajaxMonitorInstance[strDiagLog](), 1 /* eLoggingSeverity.CRITICAL */, msgId, message, properties, isUserAct);\r\n}\r\n/** @ignore */\r\nfunction _throwInternalWarning(ajaxMonitorInstance, msgId, message, properties, isUserAct) {\r\n _throwInternal(ajaxMonitorInstance[strDiagLog](), 2 /* eLoggingSeverity.WARNING */, msgId, message, properties, isUserAct);\r\n}\r\n/** @Ignore */\r\nfunction _createErrorCallbackFunc(ajaxMonitorInstance, internalMessage, message) {\r\n // tslint:disable-next-line\r\n return function (args) {\r\n _throwInternalCritical(ajaxMonitorInstance, internalMessage, message, {\r\n ajaxDiagnosticsMessage: _getFailedAjaxDiagnosticsMessage(args[_DYN_INST /* @min:%2einst */]),\r\n exception: dumpObj(args.err)\r\n });\r\n };\r\n}\r\nfunction _indexOf(value, match) {\r\n if (value && match) {\r\n return value.indexOf(match);\r\n }\r\n return -1;\r\n}\r\nfunction _addHandler(container, id, theFunc) {\r\n var theHandler = {\r\n id: id,\r\n fn: theFunc\r\n };\r\n container.push(theHandler);\r\n return {\r\n remove: function () {\r\n arrForEach(container, function (initializer, idx) {\r\n if (initializer.id === theHandler.id) {\r\n container.splice(idx, 1);\r\n return -1;\r\n }\r\n });\r\n }\r\n };\r\n}\r\nfunction _processDependencyContainer(core, container, details, message) {\r\n var result = true;\r\n arrForEach(container, function (theFunc, idx) {\r\n try {\r\n if (theFunc.fn.call(null, details) === false) {\r\n result = false;\r\n }\r\n }\r\n catch (e) {\r\n _throwInternal(core && core.logger, 1 /* eLoggingSeverity.CRITICAL */, 64 /* _eInternalMessageId.TelemetryInitializerFailed */, \"Dependency \" + message + \" [#\" + idx + \"] failed: \" + getExceptionName(e), { exception: dumpObj(e) }, true);\r\n }\r\n });\r\n return result;\r\n}\r\nfunction _processDependencyListeners(listeners, core, ajaxData, xhr, input, init) {\r\n var _a;\r\n var initializersCount = listeners[_DYN_LENGTH /* @min:%2elength */];\r\n if (initializersCount > 0) {\r\n var details = (_a = {},\r\n _a[_DYN_CORE /* @min:core */] = core,\r\n _a.xhr = xhr,\r\n _a.input = input,\r\n _a.init = init,\r\n _a.traceId = ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */],\r\n _a.spanId = ajaxData[_DYN_SPAN_ID /* @min:%2espanID */],\r\n _a.traceFlags = ajaxData[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */],\r\n _a.context = ajaxData[_DYN_CONTEXT /* @min:%2econtext */] || {},\r\n _a);\r\n _processDependencyContainer(core, listeners, details, \"listener\");\r\n ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */] = details[_DYN_TRACE_ID0 /* @min:%2etraceId */];\r\n ajaxData[_DYN_SPAN_ID /* @min:%2espanID */] = details[_DYN_SPAN_ID1 /* @min:%2espanId */];\r\n ajaxData[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] = details[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */];\r\n ajaxData[_DYN_CONTEXT /* @min:%2econtext */] = details[_DYN_CONTEXT /* @min:%2econtext */];\r\n }\r\n}\r\nvar BLOB_CORE = \"*.blob.core.\";\r\nexport var DfltAjaxCorrelationHeaderExDomains = deepFreeze([\r\n BLOB_CORE + \"windows.net\",\r\n BLOB_CORE + \"chinacloudapi.cn\",\r\n BLOB_CORE + \"cloudapi.de\",\r\n BLOB_CORE + \"usgovcloudapi.net\"\r\n]);\r\nvar _internalExcludeEndpoints = [\r\n /https:\\/\\/[^\\/]*(\\.pipe\\.aria|aria\\.pipe|events\\.data|collector\\.azure)\\.[^\\/]+\\/(OneCollector\\/1|Collector\\/3)\\.0/i\r\n];\r\nfunction _getDefaultConfig() {\r\n var _a;\r\n var config = (_a = {},\r\n _a[_DYN_MAX_AJAX_CALLS_PER_V9 /* @min:maxAjaxCallsPerView */] = 500,\r\n _a[_DYN_DISABLE_AJAX_TRACKIN12 /* @min:disableAjaxTracking */] = false,\r\n _a[_DYN_DISABLE_FETCH_TRACKI13 /* @min:disableFetchTracking */] = false,\r\n _a[_DYN_EXCLUDE_REQUEST_FROM11 /* @min:excludeRequestFromAutoTrackingPatterns */] = undefined,\r\n _a.disableCorrelationHeaders = false,\r\n _a.distributedTracingMode = 1 /* eDistributedTracingModes.AI_AND_W3C */,\r\n _a.correlationHeaderExcludedDomains = DfltAjaxCorrelationHeaderExDomains,\r\n _a.correlationHeaderDomains = undefined,\r\n _a.correlationHeaderExcludePatterns = undefined,\r\n _a[_DYN_APP_ID /* @min:appId */] = undefined,\r\n _a.enableCorsCorrelation = false,\r\n _a[_DYN_ENABLE_REQUEST_HEADE6 /* @min:enableRequestHeaderTracking */] = false,\r\n _a[_DYN_ENABLE_RESPONSE_HEAD10 /* @min:enableResponseHeaderTracking */] = false,\r\n _a[_DYN_ENABLE_AJAX_ERROR_ST7 /* @min:enableAjaxErrorStatusText */] = false,\r\n _a[_DYN_ENABLE_AJAX_PERF_TRA8 /* @min:enableAjaxPerfTracking */] = false,\r\n _a.maxAjaxPerfLookupAttempts = 3,\r\n _a[_DYN_AJAX_PERF_LOOKUP_DEL18 /* @min:ajaxPerfLookupDelay */] = 25,\r\n _a.ignoreHeaders = [\r\n \"Authorization\",\r\n \"X-API-Key\",\r\n \"WWW-Authenticate\"\r\n ],\r\n _a[_DYN_ADD_REQUEST_CONTEXT /* @min:addRequestContext */] = undefined,\r\n _a.addIntEndpoints = true,\r\n _a);\r\n return config;\r\n}\r\nfunction _getEmptyConfig() {\r\n var emptyConfig = _getDefaultConfig();\r\n objForEachKey(emptyConfig, function (value) {\r\n emptyConfig[value] = undefined;\r\n });\r\n return emptyConfig;\r\n}\r\nvar AjaxMonitor = /** @class */ (function (_super) {\r\n __extends(AjaxMonitor, _super);\r\n function AjaxMonitor() {\r\n var _this = _super.call(this) || this;\r\n _this.identifier = AjaxMonitor.identifier;\r\n _this.priority = 120;\r\n var _fetchInitialized; // fetch monitoring initialized\r\n var _xhrInitialized; // XHR monitoring initialized\r\n var _currentWindowHost;\r\n var _config;\r\n var _enableRequestHeaderTracking;\r\n var _enableAjaxErrorStatusText;\r\n var _trackAjaxAttempts;\r\n var _context;\r\n var _isUsingW3CHeaders;\r\n var _isUsingAIHeaders;\r\n var _markPrefix;\r\n var _enableAjaxPerfTracking;\r\n var _maxAjaxCallsPerView;\r\n var _enableResponseHeaderTracking;\r\n var _disabledUrls;\r\n var _disableAjaxTracking;\r\n var _disableFetchTracking;\r\n var _excludeRequestFromAutoTrackingPatterns;\r\n var _addRequestContext;\r\n var _evtNamespace;\r\n var _dependencyHandlerId;\r\n var _dependencyListeners;\r\n var _dependencyInitializers;\r\n dynamicProto(AjaxMonitor, _this, function (_self, _base) {\r\n var _addHook = _base._addHook;\r\n _initDefaults();\r\n _self.initialize = function (config, core, extensions, pluginChain) {\r\n if (!_self.isInitialized()) {\r\n _base.initialize(config, core, extensions, pluginChain);\r\n _evtNamespace = mergeEvtNamespace(createUniqueNamespace(\"ajax\"), core && core.evtNamespace && core.evtNamespace());\r\n _populateDefaults(config);\r\n _instrumentXhr();\r\n _instrumentFetch();\r\n _populateContext();\r\n }\r\n };\r\n _self._doTeardown = function () {\r\n _initDefaults();\r\n };\r\n _self.trackDependencyData = function (dependency, properties) {\r\n _reportDependencyInternal(_dependencyInitializers, _self[_DYN_CORE /* @min:%2ecore */], null, dependency, properties);\r\n };\r\n _self[_DYN_INCLUDE_CORRELATION_2 /* @min:%2eincludeCorrelationHeaders */] = function (ajaxData, input, init, xhr) {\r\n // Test Hook to allow the overriding of the location host\r\n var currentWindowHost = _self[\"_currentWindowHost\"] || _currentWindowHost;\r\n _processDependencyListeners(_dependencyListeners, _self[_DYN_CORE /* @min:%2ecore */], ajaxData, xhr, input, init);\r\n if (input) { // Fetch\r\n if (CorrelationIdHelper[_DYN_CAN_INCLUDE_CORRELAT3 /* @min:%2ecanIncludeCorrelationHeader */](_config, ajaxData[_DYN_GET_ABSOLUTE_URL /* @min:%2egetAbsoluteUrl */](), currentWindowHost)) {\r\n if (!init) {\r\n init = {};\r\n }\r\n // init headers override original request headers\r\n // so, if they exist use only them, otherwise use request's because they should have been applied in the first place\r\n // not using original request headers will result in them being lost\r\n var headers = new Headers(init[_DYN_HEADERS /* @min:%2eheaders */] || (input instanceof Request ? (input[_DYN_HEADERS /* @min:%2eheaders */] || {}) : {}));\r\n if (_isUsingAIHeaders) {\r\n var id = \"|\" + ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */] + \".\" + ajaxData[_DYN_SPAN_ID /* @min:%2espanID */];\r\n headers.set(RequestHeaders[3 /* eRequestHeaders.requestIdHeader */], id);\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][RequestHeaders[3 /* eRequestHeaders.requestIdHeader */]] = id;\r\n }\r\n }\r\n var appId = _config[_DYN_APP_ID /* @min:%2eappId */] || (_context && _context[_DYN_APP_ID /* @min:%2eappId */]());\r\n if (appId) {\r\n headers.set(RequestHeaders[0 /* eRequestHeaders.requestContextHeader */], RequestHeaders[2 /* eRequestHeaders.requestContextAppIdFormat */] + appId);\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][RequestHeaders[0 /* eRequestHeaders.requestContextHeader */]] = RequestHeaders[2 /* eRequestHeaders.requestContextAppIdFormat */] + appId;\r\n }\r\n }\r\n if (_isUsingW3CHeaders) {\r\n var traceFlags = ajaxData[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */];\r\n if (isNullOrUndefined(traceFlags)) {\r\n traceFlags = 0x01;\r\n }\r\n var traceParent = formatTraceParent(createTraceParent(ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */], ajaxData[_DYN_SPAN_ID /* @min:%2espanID */], traceFlags));\r\n headers.set(RequestHeaders[4 /* eRequestHeaders.traceParentHeader */], traceParent);\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][RequestHeaders[4 /* eRequestHeaders.traceParentHeader */]] = traceParent;\r\n }\r\n }\r\n init[_DYN_HEADERS /* @min:%2eheaders */] = headers;\r\n }\r\n return init;\r\n }\r\n else if (xhr) { // XHR\r\n if (CorrelationIdHelper[_DYN_CAN_INCLUDE_CORRELAT3 /* @min:%2ecanIncludeCorrelationHeader */](_config, ajaxData[_DYN_GET_ABSOLUTE_URL /* @min:%2egetAbsoluteUrl */](), currentWindowHost)) {\r\n if (_isUsingAIHeaders) {\r\n var id = \"|\" + ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */] + \".\" + ajaxData[_DYN_SPAN_ID /* @min:%2espanID */];\r\n xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](RequestHeaders[3 /* eRequestHeaders.requestIdHeader */], id);\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][RequestHeaders[3 /* eRequestHeaders.requestIdHeader */]] = id;\r\n }\r\n }\r\n var appId = _config[_DYN_APP_ID /* @min:%2eappId */] || (_context && _context[_DYN_APP_ID /* @min:%2eappId */]());\r\n if (appId) {\r\n xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](RequestHeaders[0 /* eRequestHeaders.requestContextHeader */], RequestHeaders[2 /* eRequestHeaders.requestContextAppIdFormat */] + appId);\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][RequestHeaders[0 /* eRequestHeaders.requestContextHeader */]] = RequestHeaders[2 /* eRequestHeaders.requestContextAppIdFormat */] + appId;\r\n }\r\n }\r\n if (_isUsingW3CHeaders) {\r\n var traceFlags = ajaxData[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */];\r\n if (isNullOrUndefined(traceFlags)) {\r\n traceFlags = 0x01;\r\n }\r\n var traceParent = formatTraceParent(createTraceParent(ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */], ajaxData[_DYN_SPAN_ID /* @min:%2espanID */], traceFlags));\r\n xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](RequestHeaders[4 /* eRequestHeaders.traceParentHeader */], traceParent);\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][RequestHeaders[4 /* eRequestHeaders.traceParentHeader */]] = traceParent;\r\n }\r\n }\r\n }\r\n return xhr;\r\n }\r\n return undefined;\r\n };\r\n _self[_DYN_TRACK_DEPENDENCY_DAT4 /* @min:%2etrackDependencyDataInternal */] = function (dependency, properties, systemProperties) {\r\n if (_maxAjaxCallsPerView === -1 || _trackAjaxAttempts < _maxAjaxCallsPerView) {\r\n // Hack since expected format in w3c mode is |abc.def.\r\n // Non-w3c format is |abc.def\r\n // @todo Remove if better solution is available, e.g. handle in portal\r\n if ((_config[_DYN_DISTRIBUTED_TRACING_5 /* @min:%2edistributedTracingMode */] === 2 /* eDistributedTracingModes.W3C */\r\n || _config[_DYN_DISTRIBUTED_TRACING_5 /* @min:%2edistributedTracingMode */] === 1 /* eDistributedTracingModes.AI_AND_W3C */)\r\n && typeof dependency.id === \"string\" && dependency.id[dependency.id[_DYN_LENGTH /* @min:%2elength */] - 1] !== \".\") {\r\n dependency.id += \".\";\r\n }\r\n if (isNullOrUndefined(dependency[_DYN_START_TIME /* @min:%2estartTime */])) {\r\n dependency[_DYN_START_TIME /* @min:%2estartTime */] = new Date();\r\n }\r\n var item = createTelemetryItem(dependency, RemoteDependencyData.dataType, RemoteDependencyData.envelopeType, _self[strDiagLog](), properties, systemProperties);\r\n _self[_DYN_CORE /* @min:%2ecore */].track(item);\r\n }\r\n else if (_trackAjaxAttempts === _maxAjaxCallsPerView) {\r\n _throwInternalCritical(_self, 55 /* _eInternalMessageId.MaxAjaxPerPVExceeded */, \"Maximum ajax per page view limit reached, ajax monitoring is paused until the next trackPageView(). In order to increase the limit set the maxAjaxCallsPerView configuration parameter.\", true);\r\n }\r\n ++_trackAjaxAttempts;\r\n };\r\n _self.addDependencyListener = function (dependencyListener) {\r\n return _addHandler(_dependencyListeners, _dependencyHandlerId++, dependencyListener);\r\n };\r\n _self.addDependencyInitializer = function (dependencyInitializer) {\r\n return _addHandler(_dependencyInitializers, _dependencyHandlerId++, dependencyInitializer);\r\n };\r\n function _initDefaults() {\r\n var location = getLocation();\r\n _fetchInitialized = false; // fetch monitoring initialized\r\n _xhrInitialized = false; // XHR monitoring initialized\r\n _currentWindowHost = location && location.host && location.host[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n _config = AjaxMonitor.getEmptyConfig();\r\n _enableRequestHeaderTracking = false;\r\n _enableAjaxErrorStatusText = false;\r\n _trackAjaxAttempts = 0;\r\n _context = null;\r\n _isUsingW3CHeaders = false;\r\n _isUsingAIHeaders = false;\r\n _markPrefix = null;\r\n _enableAjaxPerfTracking = false;\r\n _maxAjaxCallsPerView = 0;\r\n _enableResponseHeaderTracking = false;\r\n _disabledUrls = {};\r\n _disableAjaxTracking = false;\r\n _disableFetchTracking = false;\r\n _excludeRequestFromAutoTrackingPatterns = null;\r\n _addRequestContext = null;\r\n _evtNamespace = null;\r\n _dependencyHandlerId = 0;\r\n _dependencyListeners = [];\r\n _dependencyInitializers = [];\r\n }\r\n function _populateDefaults(config) {\r\n var ctx = createProcessTelemetryContext(null, config, _self[_DYN_CORE /* @min:%2ecore */]);\r\n // Reset to the empty config\r\n _config = _getEmptyConfig();\r\n var defaultConfig = _getDefaultConfig();\r\n objForEachKey(defaultConfig, function (field, value) {\r\n _config[field] = ctx.getConfig(AjaxMonitor.identifier, field, value);\r\n });\r\n var distributedTracingMode = _config[_DYN_DISTRIBUTED_TRACING_5 /* @min:%2edistributedTracingMode */];\r\n _enableRequestHeaderTracking = _config[_DYN_ENABLE_REQUEST_HEADE6 /* @min:%2eenableRequestHeaderTracking */];\r\n _enableAjaxErrorStatusText = _config[_DYN_ENABLE_AJAX_ERROR_ST7 /* @min:%2eenableAjaxErrorStatusText */];\r\n _enableAjaxPerfTracking = _config[_DYN_ENABLE_AJAX_PERF_TRA8 /* @min:%2eenableAjaxPerfTracking */];\r\n _maxAjaxCallsPerView = _config[_DYN_MAX_AJAX_CALLS_PER_V9 /* @min:%2emaxAjaxCallsPerView */];\r\n _enableResponseHeaderTracking = _config[_DYN_ENABLE_RESPONSE_HEAD10 /* @min:%2eenableResponseHeaderTracking */];\r\n _excludeRequestFromAutoTrackingPatterns = [].concat(_config[_DYN_EXCLUDE_REQUEST_FROM11 /* @min:%2eexcludeRequestFromAutoTrackingPatterns */] || [], _config.addIntEndpoints !== false ? _internalExcludeEndpoints : []);\r\n _addRequestContext = _config[_DYN_ADD_REQUEST_CONTEXT /* @min:%2eaddRequestContext */];\r\n _isUsingAIHeaders = distributedTracingMode === 0 /* eDistributedTracingModes.AI */ || distributedTracingMode === 1 /* eDistributedTracingModes.AI_AND_W3C */;\r\n _isUsingW3CHeaders = distributedTracingMode === 1 /* eDistributedTracingModes.AI_AND_W3C */ || distributedTracingMode === 2 /* eDistributedTracingModes.W3C */;\r\n if (_enableAjaxPerfTracking) {\r\n var iKey = config.instrumentationKey || \"unkwn\";\r\n if (iKey[_DYN_LENGTH /* @min:%2elength */] > 5) {\r\n _markPrefix = AJAX_MONITOR_PREFIX + iKey.substring(iKey[_DYN_LENGTH /* @min:%2elength */] - 5) + \".\";\r\n }\r\n else {\r\n _markPrefix = AJAX_MONITOR_PREFIX + iKey + \".\";\r\n }\r\n }\r\n _disableAjaxTracking = !!_config[_DYN_DISABLE_AJAX_TRACKIN12 /* @min:%2edisableAjaxTracking */];\r\n _disableFetchTracking = !!_config[_DYN_DISABLE_FETCH_TRACKI13 /* @min:%2edisableFetchTracking */];\r\n }\r\n function _populateContext() {\r\n var propExt = _self[_DYN_CORE /* @min:%2ecore */].getPlugin(PropertiesPluginIdentifier);\r\n if (propExt) {\r\n _context = propExt.plugin[_DYN_CONTEXT /* @min:%2econtext */]; // we could move IPropertiesPlugin to common as well\r\n }\r\n }\r\n // discard the header if it's defined as ignoreHeaders in ICorrelationConfig\r\n function _canIncludeHeaders(header) {\r\n var rlt = true;\r\n if (header || _config.ignoreHeaders) {\r\n arrForEach(_config.ignoreHeaders, (function (key) {\r\n if (key[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]() === header[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]()) {\r\n rlt = false;\r\n return -1;\r\n }\r\n }));\r\n }\r\n return rlt;\r\n }\r\n // Fetch Stuff\r\n function _instrumentFetch() {\r\n var fetch = _supportsFetch();\r\n if (!fetch) {\r\n return;\r\n }\r\n var global = getGlobal();\r\n var isPolyfill = fetch.polyfill;\r\n if (!_disableFetchTracking && !_fetchInitialized) {\r\n _addHook(InstrumentFunc(global, strFetch, {\r\n ns: _evtNamespace,\r\n // Add request hook\r\n req: function (callDetails, input, init) {\r\n var fetchData;\r\n if (!_disableFetchTracking && _fetchInitialized &&\r\n !_isDisabledRequest(null, input, init) &&\r\n // If we have a polyfil and XHR instrumented then let XHR report otherwise we get duplicates\r\n !(isPolyfill && _xhrInitialized)) {\r\n var ctx = callDetails.ctx();\r\n fetchData = _createFetchRecord(input, init);\r\n var newInit = _self[_DYN_INCLUDE_CORRELATION_2 /* @min:%2eincludeCorrelationHeaders */](fetchData, input, init);\r\n if (newInit !== init) {\r\n callDetails.set(1, newInit);\r\n }\r\n ctx.data = fetchData;\r\n }\r\n },\r\n rsp: function (callDetails, input) {\r\n if (!_disableFetchTracking) {\r\n var fetchData_1 = callDetails.ctx().data;\r\n if (fetchData_1) {\r\n // Replace the result with the new promise from this code\r\n callDetails.rslt = callDetails.rslt.then(function (response) {\r\n _reportFetchMetrics(callDetails, (response || {})[_DYN_STATUS /* @min:%2estatus */], input, response, fetchData_1, function () {\r\n var _a;\r\n var ajaxResponse = (_a = {\r\n statusText: response[_DYN_STATUS_TEXT /* @min:%2estatusText */]\r\n },\r\n _a[_DYN_HEADER_MAP /* @min:headerMap */] = null,\r\n _a[_DYN_CORRELATION_CONTEXT /* @min:correlationContext */] = _getFetchCorrelationContext(response),\r\n _a);\r\n if (_enableResponseHeaderTracking) {\r\n var responseHeaderMap_1 = {};\r\n response.headers.forEach(function (value, name) {\r\n if (_canIncludeHeaders(name)) {\r\n responseHeaderMap_1[name] = value;\r\n }\r\n });\r\n ajaxResponse[_DYN_HEADER_MAP /* @min:%2eheaderMap */] = responseHeaderMap_1;\r\n }\r\n return ajaxResponse;\r\n });\r\n return response;\r\n })[\"catch\"](function (reason) {\r\n _reportFetchMetrics(callDetails, 0, input, null, fetchData_1, null, { error: reason.message });\r\n throw reason;\r\n });\r\n }\r\n }\r\n },\r\n // Create an error callback to report any hook errors\r\n hkErr: _createErrorCallbackFunc(_self, 15 /* _eInternalMessageId.FailedMonitorAjaxOpen */, \"Failed to monitor Window.fetch\" + ERROR_POSTFIX)\r\n }));\r\n _fetchInitialized = true;\r\n }\r\n else if (isPolyfill) {\r\n // If fetch is a polyfill we need to capture the request to ensure that we correctly track\r\n // disabled request URLS (i.e. internal urls) to ensure we don't end up in a constant loop\r\n // of reporting ourselves, for example React Native uses a polyfill for fetch\r\n // Note: Polyfill implementations that don't support the \"poyyfill\" tag are not supported\r\n // the workaround is to add a polyfill property to your fetch implementation before initializing\r\n // App Insights\r\n _addHook(InstrumentFunc(global, strFetch, {\r\n ns: _evtNamespace,\r\n req: function (callDetails, input, init) {\r\n // Just call so that we record any disabled URL\r\n _isDisabledRequest(null, input, init);\r\n }\r\n }));\r\n }\r\n if (isPolyfill) {\r\n // retag the instrumented fetch with the same polyfill settings this is mostly for testing\r\n // But also supports multiple App Insights usages\r\n global[strFetch].polyfill = isPolyfill;\r\n }\r\n }\r\n function _hookProto(target, funcName, callbacks) {\r\n _addHook(InstrumentProto(target, funcName, callbacks));\r\n }\r\n function _instrumentXhr() {\r\n if (_supportsAjaxMonitoring(_self) && !_disableAjaxTracking && !_xhrInitialized) {\r\n // Instrument open\r\n _hookProto(XMLHttpRequest, \"open\", {\r\n ns: _evtNamespace,\r\n req: function (args, method, url, async) {\r\n if (!_disableAjaxTracking) {\r\n var xhr = args[_DYN_INST /* @min:%2einst */];\r\n var ajaxData = xhr[strAjaxData];\r\n if (!_isDisabledRequest(xhr, url) && _isMonitoredXhrInstance(xhr, true)) {\r\n if (!ajaxData || !ajaxData.xhrMonitoringState[_DYN_OPEN_DONE /* @min:%2eopenDone */]) {\r\n // Only create a single ajaxData (even when multiple AI instances are running)\r\n _openHandler(xhr, method, url, async);\r\n }\r\n // always attach to the on ready state change (required for handling multiple instances)\r\n _attachToOnReadyStateChange(xhr);\r\n }\r\n }\r\n },\r\n hkErr: _createErrorCallbackFunc(_self, 15 /* _eInternalMessageId.FailedMonitorAjaxOpen */, ERROR_HEADER + \".open\" + ERROR_POSTFIX)\r\n });\r\n // Instrument send\r\n _hookProto(XMLHttpRequest, \"send\", {\r\n ns: _evtNamespace,\r\n req: function (args, context) {\r\n if (!_disableAjaxTracking) {\r\n var xhr = args[_DYN_INST /* @min:%2einst */];\r\n var ajaxData = xhr[strAjaxData];\r\n if (_isMonitoredXhrInstance(xhr) && !ajaxData.xhrMonitoringState[_DYN_SEND_DONE /* @min:%2esendDone */]) {\r\n _createMarkId(\"xhr\", ajaxData);\r\n ajaxData[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */] = dateTimeUtilsNow();\r\n _self[_DYN_INCLUDE_CORRELATION_2 /* @min:%2eincludeCorrelationHeaders */](ajaxData, undefined, undefined, xhr);\r\n ajaxData.xhrMonitoringState[_DYN_SEND_DONE /* @min:%2esendDone */] = true;\r\n }\r\n }\r\n },\r\n hkErr: _createErrorCallbackFunc(_self, 17 /* _eInternalMessageId.FailedMonitorAjaxSend */, ERROR_HEADER + ERROR_POSTFIX)\r\n });\r\n // Instrument abort\r\n _hookProto(XMLHttpRequest, \"abort\", {\r\n ns: _evtNamespace,\r\n req: function (args) {\r\n if (!_disableAjaxTracking) {\r\n var xhr = args[_DYN_INST /* @min:%2einst */];\r\n var ajaxData = xhr[strAjaxData];\r\n if (_isMonitoredXhrInstance(xhr) && !ajaxData.xhrMonitoringState[_DYN_ABORT_DONE /* @min:%2eabortDone */]) {\r\n ajaxData.aborted = 1;\r\n ajaxData.xhrMonitoringState[_DYN_ABORT_DONE /* @min:%2eabortDone */] = true;\r\n }\r\n }\r\n },\r\n hkErr: _createErrorCallbackFunc(_self, 13 /* _eInternalMessageId.FailedMonitorAjaxAbort */, ERROR_HEADER + \".abort\" + ERROR_POSTFIX)\r\n });\r\n // Instrument setRequestHeader\r\n _hookProto(XMLHttpRequest, \"setRequestHeader\", {\r\n ns: _evtNamespace,\r\n req: function (args, header, value) {\r\n if (!_disableAjaxTracking && _enableRequestHeaderTracking) {\r\n var xhr = args[_DYN_INST /* @min:%2einst */];\r\n if (_isMonitoredXhrInstance(xhr) && _canIncludeHeaders(header)) {\r\n xhr[strAjaxData][_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][header] = value;\r\n }\r\n }\r\n },\r\n hkErr: _createErrorCallbackFunc(_self, 71 /* _eInternalMessageId.FailedMonitorAjaxSetRequestHeader */, ERROR_HEADER + \".setRequestHeader\" + ERROR_POSTFIX)\r\n });\r\n _xhrInitialized = true;\r\n }\r\n }\r\n function _isDisabledRequest(xhr, request, init) {\r\n var isDisabled = false;\r\n var theUrl = ((!isString(request) ? (request || {}).url || \"\" : request) || \"\")[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n // check excludeRequestFromAutoTrackingPatterns before stripping off any query string\r\n arrForEach(_excludeRequestFromAutoTrackingPatterns, function (regex) {\r\n var theRegex = regex;\r\n if (isString(regex)) {\r\n theRegex = new RegExp(regex);\r\n }\r\n if (!isDisabled) {\r\n isDisabled = theRegex.test(theUrl);\r\n }\r\n });\r\n // if request url matches with exclude regex pattern, return true and no need to check for headers\r\n if (isDisabled) {\r\n return isDisabled;\r\n }\r\n var idx = _indexOf(theUrl, \"?\");\r\n var idx2 = _indexOf(theUrl, \"#\");\r\n if (idx === -1 || (idx2 !== -1 && idx2 < idx)) {\r\n idx = idx2;\r\n }\r\n if (idx !== -1) {\r\n // Strip off any Query string\r\n theUrl = theUrl.substring(0, idx);\r\n }\r\n // check that this instance is not not used by ajax call performed inside client side monitoring to send data to collector\r\n if (!isNullOrUndefined(xhr)) {\r\n // Look on the XMLHttpRequest of the URL string value\r\n isDisabled = xhr[DisabledPropertyName] === true || theUrl[DisabledPropertyName] === true;\r\n }\r\n else if (!isNullOrUndefined(request)) { // fetch\r\n // Look for DisabledPropertyName in either Request or RequestInit\r\n isDisabled = (typeof request === \"object\" ? request[DisabledPropertyName] === true : false) ||\r\n (init ? init[DisabledPropertyName] === true : false);\r\n }\r\n // Also add extra check just in case the XHR or fetch objects where not decorated with the DisableProperty due to sealing or freezing\r\n if (!isDisabled && theUrl && isInternalApplicationInsightsEndpoint(theUrl)) {\r\n isDisabled = true;\r\n }\r\n if (isDisabled) {\r\n // Add the disabled url if not present\r\n if (!_disabledUrls[theUrl]) {\r\n _disabledUrls[theUrl] = 1;\r\n }\r\n }\r\n else {\r\n // Check to see if the url is listed as disabled\r\n if (_disabledUrls[theUrl]) {\r\n isDisabled = true;\r\n }\r\n }\r\n return isDisabled;\r\n }\r\n /// <summary>Verifies that particalar instance of XMLHttpRequest needs to be monitored</summary>\r\n /// <param name=\"excludeAjaxDataValidation\">Optional parameter. True if ajaxData must be excluded from verification</param>\r\n /// <returns type=\"bool\">True if instance needs to be monitored, otherwise false</returns>\r\n function _isMonitoredXhrInstance(xhr, excludeAjaxDataValidation) {\r\n var ajaxValidation = true;\r\n var initialized = _xhrInitialized;\r\n if (!isNullOrUndefined(xhr)) {\r\n ajaxValidation = excludeAjaxDataValidation === true || !isNullOrUndefined(xhr[strAjaxData]);\r\n }\r\n // checking to see that all interested functions on xhr were instrumented\r\n return initialized\r\n // checking on ajaxData to see that it was not removed in user code\r\n && ajaxValidation;\r\n }\r\n function _getDistributedTraceCtx() {\r\n var distributedTraceCtx = null;\r\n if (_self[_DYN_CORE /* @min:%2ecore */] && _self[_DYN_CORE /* @min:%2ecore */].getTraceCtx) {\r\n distributedTraceCtx = _self[_DYN_CORE /* @min:%2ecore */].getTraceCtx(false);\r\n }\r\n // Fall back\r\n if (!distributedTraceCtx && _context && _context.telemetryTrace) {\r\n distributedTraceCtx = createDistributedTraceContextFromTrace(_context.telemetryTrace);\r\n }\r\n return distributedTraceCtx;\r\n }\r\n function _openHandler(xhr, method, url, async) {\r\n var _a;\r\n var distributedTraceCtx = _getDistributedTraceCtx();\r\n var traceID = (distributedTraceCtx && distributedTraceCtx[_DYN_GET_TRACE_ID /* @min:%2egetTraceId */]()) || generateW3CId();\r\n var spanID = generateW3CId().substr(0, 16);\r\n var ajaxData = new ajaxRecord(traceID, spanID, _self[strDiagLog](), (_a = _self.core) === null || _a === void 0 ? void 0 : _a.getTraceCtx());\r\n ajaxData[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] = distributedTraceCtx && distributedTraceCtx[_DYN_GET_TRACE_FLAGS /* @min:%2egetTraceFlags */]();\r\n ajaxData[_DYN_METHOD /* @min:%2emethod */] = method;\r\n ajaxData[_DYN_REQUEST_URL /* @min:%2erequestUrl */] = url;\r\n ajaxData.xhrMonitoringState[_DYN_OPEN_DONE /* @min:%2eopenDone */] = true;\r\n ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */] = {};\r\n ajaxData.async = async;\r\n ajaxData[_DYN_ERROR_STATUS_TEXT /* @min:%2eerrorStatusText */] = _enableAjaxErrorStatusText;\r\n xhr[strAjaxData] = ajaxData;\r\n }\r\n function _attachToOnReadyStateChange(xhr) {\r\n xhr[strAjaxData].xhrMonitoringState[_DYN_STATE_CHANGE_ATTACHE14 /* @min:%2estateChangeAttached */] = eventOn(xhr, \"readystatechange\", function () {\r\n var _a;\r\n try {\r\n if (xhr && xhr.readyState === 4 && _isMonitoredXhrInstance(xhr)) {\r\n _onAjaxComplete(xhr);\r\n }\r\n }\r\n catch (e) {\r\n var exceptionText = dumpObj(e);\r\n // ignore messages with c00c023f, as this a known IE9 XHR abort issue\r\n if (!exceptionText || _indexOf(exceptionText[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */](), \"c00c023f\") === -1) {\r\n _throwInternalCritical(_self, 16 /* _eInternalMessageId.FailedMonitorAjaxRSC */, ERROR_HEADER + \" 'readystatechange' event handler\" + ERROR_POSTFIX, (_a = {},\r\n _a[_DYN_AJAX_DIAGNOSTICS_MES19 /* @min:ajaxDiagnosticsMessage */] = _getFailedAjaxDiagnosticsMessage(xhr),\r\n _a.exception = exceptionText,\r\n _a));\r\n }\r\n }\r\n }, _evtNamespace);\r\n }\r\n function _getResponseText(xhr) {\r\n try {\r\n var responseType = xhr.responseType;\r\n if (responseType === \"\" || responseType === \"text\") {\r\n // As per the specification responseText is only valid if the type is an empty string or \"text\"\r\n return xhr[_DYN_RESPONSE_TEXT /* @min:%2eresponseText */];\r\n }\r\n }\r\n catch (e) {\r\n // This shouldn't happen because of the above check -- but just in case, so just ignore\r\n }\r\n return null;\r\n }\r\n function _onAjaxComplete(xhr) {\r\n var ajaxData = xhr[strAjaxData];\r\n ajaxData[_DYN_RESPONSE_FINISHED_TI15 /* @min:%2eresponseFinishedTime */] = dateTimeUtilsNow();\r\n ajaxData[_DYN_STATUS /* @min:%2estatus */] = xhr[_DYN_STATUS /* @min:%2estatus */];\r\n function _reportXhrError(e, failedProps) {\r\n var errorProps = failedProps || {};\r\n errorProps[\"ajaxDiagnosticsMessage\"] = _getFailedAjaxDiagnosticsMessage(xhr);\r\n if (e) {\r\n errorProps[\"exception\"] = dumpObj(e);\r\n }\r\n _throwInternalWarning(_self, 14 /* _eInternalMessageId.FailedMonitorAjaxDur */, FAILED_TO_CALCULATE_DURATION_ERROR + \"ajax call\" + ERROR_NOT_SENT, errorProps);\r\n }\r\n _findPerfResourceEntry(\"xmlhttprequest\", ajaxData, function () {\r\n try {\r\n var dependency = ajaxData[_DYN__CREATE_TRACK_ITEM /* @min:%2eCreateTrackItem */](\"Ajax\", _enableRequestHeaderTracking, function () {\r\n var _a;\r\n var ajaxResponse = (_a = {\r\n statusText: xhr[_DYN_STATUS_TEXT /* @min:%2estatusText */]\r\n },\r\n _a[_DYN_HEADER_MAP /* @min:headerMap */] = null,\r\n _a[_DYN_CORRELATION_CONTEXT /* @min:correlationContext */] = _getAjaxCorrelationContext(xhr),\r\n _a.type = xhr.responseType,\r\n _a[_DYN_RESPONSE_TEXT /* @min:responseText */] = _getResponseText(xhr),\r\n _a.response = xhr[_DYN_RESPONSE /* @min:%2eresponse */],\r\n _a);\r\n if (_enableResponseHeaderTracking) {\r\n var headers = xhr[_DYN_GET_ALL_RESPONSE_HEA16 /* @min:%2egetAllResponseHeaders */]();\r\n if (headers) {\r\n // xhr.getAllResponseHeaders() method returns all the response headers, separated by CRLF, as a string or null\r\n // the regex converts the header string into an array of individual headers\r\n var arr = strTrim(headers).split(/[\\r\\n]+/);\r\n var responseHeaderMap_2 = {};\r\n arrForEach(arr, function (line) {\r\n var parts = line.split(\": \");\r\n var header = parts.shift();\r\n var value = parts.join(\": \");\r\n if (_canIncludeHeaders(header)) {\r\n responseHeaderMap_2[header] = value;\r\n }\r\n });\r\n ajaxResponse[_DYN_HEADER_MAP /* @min:%2eheaderMap */] = responseHeaderMap_2;\r\n }\r\n }\r\n return ajaxResponse;\r\n });\r\n var properties = void 0;\r\n try {\r\n if (!!_addRequestContext) {\r\n properties = _addRequestContext({ status: xhr[_DYN_STATUS /* @min:%2estatus */], xhr: xhr });\r\n }\r\n }\r\n catch (e) {\r\n _throwInternalWarning(_self, 104 /* _eInternalMessageId.FailedAddingCustomDefinedRequestContext */, CUSTOM_REQUEST_CONTEXT_ERROR);\r\n }\r\n if (dependency) {\r\n if (properties !== undefined) {\r\n dependency[STR_PROPERTIES /* @min:%2eproperties */] = __assign(__assign({}, dependency.properties), properties);\r\n }\r\n var sysProperties = ajaxData[_DYN_GET_PART_APROPS /* @min:%2egetPartAProps */]();\r\n _reportDependencyInternal(_dependencyInitializers, _self[_DYN_CORE /* @min:%2ecore */], ajaxData, dependency, null, sysProperties);\r\n }\r\n else {\r\n _reportXhrError(null, {\r\n requestSentTime: ajaxData[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */],\r\n responseFinishedTime: ajaxData[_DYN_RESPONSE_FINISHED_TI15 /* @min:%2eresponseFinishedTime */]\r\n });\r\n }\r\n }\r\n finally {\r\n // cleanup telemetry data\r\n try {\r\n xhr[strAjaxData] = null;\r\n }\r\n catch (e) {\r\n // May throw in environments that prevent extension or freeze xhr\r\n }\r\n }\r\n }, function (e) {\r\n _reportXhrError(e, null);\r\n });\r\n }\r\n function _getAjaxCorrelationContext(xhr) {\r\n var _a;\r\n try {\r\n var responseHeadersString = xhr[_DYN_GET_ALL_RESPONSE_HEA16 /* @min:%2egetAllResponseHeaders */]();\r\n if (responseHeadersString !== null) {\r\n var index = _indexOf(responseHeadersString[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */](), RequestHeaders[8 /* eRequestHeaders.requestContextHeaderLowerCase */]);\r\n if (index !== -1) {\r\n var responseHeader = xhr.getResponseHeader(RequestHeaders[0 /* eRequestHeaders.requestContextHeader */]);\r\n return CorrelationIdHelper[_DYN_GET_CORRELATION_CONT17 /* @min:%2egetCorrelationContext */](responseHeader);\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _throwInternalWarning(_self, 18 /* _eInternalMessageId.FailedMonitorAjaxGetCorrelationHeader */, CORRELATION_HEADER_ERROR, (_a = {},\r\n _a[_DYN_AJAX_DIAGNOSTICS_MES19 /* @min:ajaxDiagnosticsMessage */] = _getFailedAjaxDiagnosticsMessage(xhr),\r\n _a.exception = dumpObj(e),\r\n _a));\r\n }\r\n }\r\n function _createMarkId(type, ajaxData) {\r\n if (ajaxData[_DYN_REQUEST_URL /* @min:%2erequestUrl */] && _markPrefix && _enableAjaxPerfTracking) {\r\n var performance_1 = getPerformance();\r\n if (performance_1 && isFunction(performance_1.mark)) {\r\n _markCount++;\r\n var markId = _markPrefix + type + \"#\" + _markCount;\r\n performance_1.mark(markId);\r\n var entries = performance_1.getEntriesByName(markId);\r\n if (entries && entries[_DYN_LENGTH /* @min:%2elength */] === 1) {\r\n ajaxData[_DYN_PERF_MARK /* @min:%2eperfMark */] = entries[0];\r\n }\r\n }\r\n }\r\n }\r\n function _findPerfResourceEntry(initiatorType, ajaxData, trackCallback, reportError) {\r\n var perfMark = ajaxData[_DYN_PERF_MARK /* @min:%2eperfMark */];\r\n var performance = getPerformance();\r\n var maxAttempts = _config.maxAjaxPerfLookupAttempts;\r\n var retryDelay = _config[_DYN_AJAX_PERF_LOOKUP_DEL18 /* @min:%2eajaxPerfLookupDelay */];\r\n var requestUrl = ajaxData[_DYN_REQUEST_URL /* @min:%2erequestUrl */];\r\n var attempt = 0;\r\n (function locateResourceTiming() {\r\n try {\r\n if (performance && perfMark) {\r\n attempt++;\r\n var perfTiming = null;\r\n var entries = performance.getEntries();\r\n for (var lp = entries[_DYN_LENGTH /* @min:%2elength */] - 1; lp >= 0; lp--) {\r\n var entry = entries[lp];\r\n if (entry) {\r\n if (entry.entryType === \"resource\") {\r\n if (entry.initiatorType === initiatorType &&\r\n (_indexOf(entry[_DYN_NAME /* @min:%2ename */], requestUrl) !== -1 || _indexOf(requestUrl, entry[_DYN_NAME /* @min:%2ename */]) !== -1)) {\r\n perfTiming = entry;\r\n }\r\n }\r\n else if (entry.entryType === \"mark\" && entry[_DYN_NAME /* @min:%2ename */] === perfMark[_DYN_NAME /* @min:%2ename */]) {\r\n // We hit the start event\r\n ajaxData[_DYN_PERF_TIMING /* @min:%2eperfTiming */] = perfTiming;\r\n break;\r\n }\r\n if (entry[_DYN_START_TIME /* @min:%2estartTime */] < perfMark[_DYN_START_TIME /* @min:%2estartTime */] - 1000) {\r\n // Fallback to try and reduce the time spent looking for the perf entry\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n if (!perfMark || // - we don't have a perfMark or\r\n ajaxData[_DYN_PERF_TIMING /* @min:%2eperfTiming */] || // - we have not found the perf entry or\r\n attempt >= maxAttempts || // - we have tried too many attempts or\r\n ajaxData.async === false) { // - this is a sync request\r\n if (perfMark && isFunction(performance.clearMarks)) {\r\n // Remove the mark so we don't fill up the performance resources too much\r\n performance.clearMarks(perfMark[_DYN_NAME /* @min:%2ename */]);\r\n }\r\n ajaxData.perfAttempts = attempt;\r\n // just continue and report the track event\r\n trackCallback();\r\n }\r\n else {\r\n // We need to wait for the browser to populate the window.performance entry\r\n // This needs to be at least 1ms as waiting <= 1 (on firefox) is not enough time for fetch or xhr,\r\n // this is a scheduling issue for the browser implementation\r\n setTimeout(locateResourceTiming, retryDelay);\r\n }\r\n }\r\n catch (e) {\r\n reportError(e);\r\n }\r\n })();\r\n }\r\n function _createFetchRecord(input, init) {\r\n var _a;\r\n var distributedTraceCtx = _getDistributedTraceCtx();\r\n var traceID = (distributedTraceCtx && distributedTraceCtx[_DYN_GET_TRACE_ID /* @min:%2egetTraceId */]()) || generateW3CId();\r\n var spanID = generateW3CId().substr(0, 16);\r\n var ajaxData = new ajaxRecord(traceID, spanID, _self[strDiagLog](), (_a = _self.core) === null || _a === void 0 ? void 0 : _a.getTraceCtx());\r\n ajaxData[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] = distributedTraceCtx && distributedTraceCtx[_DYN_GET_TRACE_FLAGS /* @min:%2egetTraceFlags */]();\r\n ajaxData[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */] = dateTimeUtilsNow();\r\n ajaxData[_DYN_ERROR_STATUS_TEXT /* @min:%2eerrorStatusText */] = _enableAjaxErrorStatusText;\r\n if (input instanceof Request) {\r\n ajaxData[_DYN_REQUEST_URL /* @min:%2erequestUrl */] = input ? input.url : \"\";\r\n }\r\n else {\r\n ajaxData[_DYN_REQUEST_URL /* @min:%2erequestUrl */] = input;\r\n }\r\n var method = \"GET\";\r\n if (init && init[_DYN_METHOD /* @min:%2emethod */]) {\r\n method = init[_DYN_METHOD /* @min:%2emethod */];\r\n }\r\n else if (input && input instanceof Request) {\r\n method = input[_DYN_METHOD /* @min:%2emethod */];\r\n }\r\n ajaxData[_DYN_METHOD /* @min:%2emethod */] = method;\r\n var requestHeaders = {};\r\n if (_enableRequestHeaderTracking) {\r\n var headers = new Headers((init ? init[_DYN_HEADERS /* @min:%2eheaders */] : 0) || (input instanceof Request ? (input[_DYN_HEADERS /* @min:%2eheaders */] || {}) : {}));\r\n headers.forEach(function (value, key) {\r\n if (_canIncludeHeaders(key)) {\r\n requestHeaders[key] = value;\r\n }\r\n });\r\n }\r\n ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */] = requestHeaders;\r\n _createMarkId(\"fetch\", ajaxData);\r\n return ajaxData;\r\n }\r\n function _getFailedFetchDiagnosticsMessage(input) {\r\n var result = \"\";\r\n try {\r\n if (!isNullOrUndefined(input)) {\r\n if (typeof (input) === \"string\") {\r\n result += \"(url: '\".concat(input, \"')\");\r\n }\r\n else {\r\n result += \"(url: '\".concat(input.url, \"')\");\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _throwInternalCritical(_self, 15 /* _eInternalMessageId.FailedMonitorAjaxOpen */, \"Failed to grab failed fetch diagnostics message\", { exception: dumpObj(e) });\r\n }\r\n return result;\r\n }\r\n function _reportFetchMetrics(callDetails, status, input, response, ajaxData, getResponse, properties) {\r\n if (!ajaxData) {\r\n return;\r\n }\r\n function _reportFetchError(msgId, e, failedProps) {\r\n var errorProps = failedProps || {};\r\n errorProps[\"fetchDiagnosticsMessage\"] = _getFailedFetchDiagnosticsMessage(input);\r\n if (e) {\r\n errorProps[\"exception\"] = dumpObj(e);\r\n }\r\n _throwInternalWarning(_self, msgId, FAILED_TO_CALCULATE_DURATION_ERROR + \"fetch call\" + ERROR_NOT_SENT, errorProps);\r\n }\r\n ajaxData[_DYN_RESPONSE_FINISHED_TI15 /* @min:%2eresponseFinishedTime */] = dateTimeUtilsNow();\r\n ajaxData[_DYN_STATUS /* @min:%2estatus */] = status;\r\n _findPerfResourceEntry(\"fetch\", ajaxData, function () {\r\n var dependency = ajaxData[_DYN__CREATE_TRACK_ITEM /* @min:%2eCreateTrackItem */](\"Fetch\", _enableRequestHeaderTracking, getResponse);\r\n var properties;\r\n try {\r\n if (!!_addRequestContext) {\r\n properties = _addRequestContext({ status: status, request: input, response: response });\r\n }\r\n }\r\n catch (e) {\r\n _throwInternalWarning(_self, 104 /* _eInternalMessageId.FailedAddingCustomDefinedRequestContext */, CUSTOM_REQUEST_CONTEXT_ERROR);\r\n }\r\n if (dependency) {\r\n if (properties !== undefined) {\r\n dependency[STR_PROPERTIES /* @min:%2eproperties */] = __assign(__assign({}, dependency.properties), properties);\r\n }\r\n var sysProperties = ajaxData[_DYN_GET_PART_APROPS /* @min:%2egetPartAProps */]();\r\n _reportDependencyInternal(_dependencyInitializers, _self[_DYN_CORE /* @min:%2ecore */], ajaxData, dependency, null, sysProperties);\r\n }\r\n else {\r\n _reportFetchError(14 /* _eInternalMessageId.FailedMonitorAjaxDur */, null, {\r\n requestSentTime: ajaxData[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */],\r\n responseFinishedTime: ajaxData[_DYN_RESPONSE_FINISHED_TI15 /* @min:%2eresponseFinishedTime */]\r\n });\r\n }\r\n }, function (e) {\r\n _reportFetchError(18 /* _eInternalMessageId.FailedMonitorAjaxGetCorrelationHeader */, e, null);\r\n });\r\n }\r\n function _getFetchCorrelationContext(response) {\r\n if (response && response[_DYN_HEADERS /* @min:%2eheaders */]) {\r\n try {\r\n var responseHeader = response[_DYN_HEADERS /* @min:%2eheaders */].get(RequestHeaders[0 /* eRequestHeaders.requestContextHeader */]);\r\n return CorrelationIdHelper[_DYN_GET_CORRELATION_CONT17 /* @min:%2egetCorrelationContext */](responseHeader);\r\n }\r\n catch (e) {\r\n _throwInternalWarning(_self, 18 /* _eInternalMessageId.FailedMonitorAjaxGetCorrelationHeader */, CORRELATION_HEADER_ERROR, {\r\n fetchDiagnosticsMessage: _getFailedFetchDiagnosticsMessage(response),\r\n exception: dumpObj(e)\r\n });\r\n }\r\n }\r\n }\r\n function _reportDependencyInternal(initializers, core, ajaxData, dependency, properties, systemProperties) {\r\n var _a;\r\n var result = true;\r\n var initializersCount = initializers[_DYN_LENGTH /* @min:%2elength */];\r\n if (initializersCount > 0) {\r\n var details = (_a = {\r\n item: dependency\r\n },\r\n _a[STR_PROPERTIES /* @min:properties */] = properties,\r\n _a.sysProperties = systemProperties,\r\n _a.context = ajaxData ? ajaxData[_DYN_CONTEXT /* @min:%2econtext */] : null,\r\n _a);\r\n result = _processDependencyContainer(core, initializers, details, \"initializer\");\r\n }\r\n if (result) {\r\n _self[_DYN_TRACK_DEPENDENCY_DAT4 /* @min:%2etrackDependencyDataInternal */](dependency, properties, systemProperties);\r\n }\r\n }\r\n });\r\n return _this;\r\n }\r\n AjaxMonitor.prototype.initialize = function (config, core, extensions, pluginChain) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n AjaxMonitor.prototype.processTelemetry = function (item, itemCtx) {\r\n this.processNext(item, itemCtx);\r\n };\r\n /**\r\n * Logs dependency call\r\n * @param dependencyData dependency data object\r\n */\r\n AjaxMonitor.prototype.trackDependencyData = function (dependency, properties) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n AjaxMonitor.prototype.includeCorrelationHeaders = function (ajaxData, input, init, xhr) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Add an ajax listener which is called just prior to the request being sent and before the correlation headers are added, to allow you\r\n * to access the headers and modify the values used to generate the distributed tracing correlation headers.\r\n * @param dependencyListener - The Telemetry Initializer function\r\n * @returns - A IDependencyListenerHandler to enable the initializer to be removed\r\n */\r\n AjaxMonitor.prototype.addDependencyListener = function (dependencyListener) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n /**\r\n * Add an dependency telemetry initializer callback function to allow populating additional properties or drop the request.\r\n * It is called after the dependency call has completed and any available performance details are available. A dependency\r\n * initializer is similar to the TelemetryInitializer function but it allows you to block the reporting of the dependency\r\n * request so that it doesn't count against the `maxAjaxCallsPerView`.\r\n * @param dependencyInitializer - The Dependency Telemetry Initializer function\r\n * @returns - A IDependencyInitializerHandler to enable the initializer to be removed\r\n */\r\n AjaxMonitor.prototype.addDependencyInitializer = function (dependencyInitializer) {\r\n return null;\r\n };\r\n /**\r\n * Protected function to allow sub classes the chance to add additional properties to the dependency event\r\n * before it's sent. This function calls track, so sub-classes must call this function after they have\r\n * populated their properties.\r\n * @param dependencyData dependency data object\r\n */\r\n AjaxMonitor.prototype.trackDependencyDataInternal = function (dependency, properties, systemProperties) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n AjaxMonitor.identifier = \"AjaxDependencyPlugin\";\r\n AjaxMonitor.getDefaultConfig = _getDefaultConfig;\r\n AjaxMonitor.getEmptyConfig = _getEmptyConfig;\r\n return AjaxMonitor;\r\n}(BaseTelemetryPlugin));\r\nexport { AjaxMonitor };\r\n//# sourceMappingURL=ajax.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nvar Application = /** @class */ (function () {\r\n function Application() {\r\n }\r\n return Application;\r\n}());\r\nexport { Application };\r\n//# sourceMappingURL=Application.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nvar Device = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the Device class\r\n */\r\n function Device() {\r\n // don't attempt to fingerprint browsers\r\n this.id = \"browser\";\r\n // Device type is a dimension in our data platform\r\n // Setting it to 'Browser' allows to separate client and server dependencies/exceptions\r\n this.deviceClass = \"Browser\";\r\n }\r\n return Device;\r\n}());\r\nexport { Device };\r\n//# sourceMappingURL=Device.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { _DYN_SDK_EXTENSION } from \"../__DynamicConstants\";\r\nvar Version = '2.8.8';\r\nvar Internal = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the internal telemetry data class.\r\n */\r\n function Internal(config) {\r\n this.sdkVersion = (config[_DYN_SDK_EXTENSION /* @min:%2esdkExtension */] && config[_DYN_SDK_EXTENSION /* @min:%2esdkExtension */]() ? config[_DYN_SDK_EXTENSION /* @min:%2esdkExtension */]() + \"_\" : \"\") + \"javascript:\" + Version;\r\n }\r\n return Internal;\r\n}());\r\nexport { Internal };\r\n//# sourceMappingURL=Internal.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nvar Location = /** @class */ (function () {\r\n function Location() {\r\n }\r\n return Location;\r\n}());\r\nexport { Location };\r\n//# sourceMappingURL=Location.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { utlCanUseLocalStorage, utlGetLocalStorage, utlSetLocalStorage } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal, dateNow, dumpObj, getExceptionName, isFunction, newId, safeGetCookieMgr, safeGetLogger } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_ACQUISITION_DATE, _DYN_AUTOMATIC_SESSION, _DYN_CONFIG, _DYN_COOKIE_DOMAIN, _DYN_GET_NEW_ID, _DYN_ID_LENGTH, _DYN_JOIN, _DYN_LENGTH, _DYN_NAME_PREFIX, _DYN_RENEWAL_DATE, _DYN_SESSION_COOKIE_POSTF6, _DYN_SESSION_EXPIRATION_M7, _DYN_SESSION_RENEWAL_MS, _DYN_UPDATE } from \"../__DynamicConstants\";\r\nvar cookieNameConst = \"ai_session\";\r\nvar Session = /** @class */ (function () {\r\n function Session() {\r\n }\r\n return Session;\r\n}());\r\nexport { Session };\r\nvar _SessionManager = /** @class */ (function () {\r\n function _SessionManager(config, core) {\r\n var self = this;\r\n var _storageNamePrefix;\r\n var _cookieUpdatedTimestamp;\r\n var _logger = safeGetLogger(core);\r\n var _cookieManager = safeGetCookieMgr(core);\r\n dynamicProto(_SessionManager, self, function (_self) {\r\n if (!config) {\r\n config = {};\r\n }\r\n if (!isFunction(config[_DYN_SESSION_EXPIRATION_M7 /* @min:%2esessionExpirationMs */])) {\r\n config[_DYN_SESSION_EXPIRATION_M7 /* @min:%2esessionExpirationMs */] = function () { return _SessionManager.acquisitionSpan; };\r\n }\r\n if (!isFunction(config[_DYN_SESSION_RENEWAL_MS /* @min:%2esessionRenewalMs */])) {\r\n config[_DYN_SESSION_RENEWAL_MS /* @min:%2esessionRenewalMs */] = function () { return _SessionManager.renewalSpan; };\r\n }\r\n _self[_DYN_CONFIG /* @min:%2econfig */] = config;\r\n // sessionCookiePostfix takes the preference if it is configured, otherwise takes namePrefix if configured.\r\n var sessionCookiePostfix = (_self.config[_DYN_SESSION_COOKIE_POSTF6 /* @min:%2esessionCookiePostfix */] && _self[_DYN_CONFIG /* @min:%2econfig */][_DYN_SESSION_COOKIE_POSTF6 /* @min:%2esessionCookiePostfix */]()) ?\r\n _self.config[_DYN_SESSION_COOKIE_POSTF6 /* @min:%2esessionCookiePostfix */]() :\r\n ((_self.config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */] && _self[_DYN_CONFIG /* @min:%2econfig */][_DYN_NAME_PREFIX /* @min:%2enamePrefix */]()) ? _self[_DYN_CONFIG /* @min:%2econfig */][_DYN_NAME_PREFIX /* @min:%2enamePrefix */]() : \"\");\r\n _storageNamePrefix = function () { return cookieNameConst + sessionCookiePostfix; };\r\n _self[_DYN_AUTOMATIC_SESSION /* @min:%2eautomaticSession */] = new Session();\r\n _self[_DYN_UPDATE /* @min:%2eupdate */] = function () {\r\n // Always using Date getTime() as there is a bug in older IE instances that causes the performance timings to have the hi-bit set eg 0x800000000 causing\r\n // the number to be incorrect.\r\n var nowMs = dateNow();\r\n var isExpired = false;\r\n var session = _self[_DYN_AUTOMATIC_SESSION /* @min:%2eautomaticSession */];\r\n if (!session.id) {\r\n isExpired = !_initializeAutomaticSession(session, nowMs);\r\n }\r\n var sessionExpirationMs = _self.config[_DYN_SESSION_EXPIRATION_M7 /* @min:%2esessionExpirationMs */]();\r\n if (!isExpired && sessionExpirationMs > 0) {\r\n var sessionRenewalMs = _self.config[_DYN_SESSION_RENEWAL_MS /* @min:%2esessionRenewalMs */]();\r\n var timeSinceAcqMs = nowMs - session[_DYN_ACQUISITION_DATE /* @min:%2eacquisitionDate */];\r\n var timeSinceRenewalMs = nowMs - session[_DYN_RENEWAL_DATE /* @min:%2erenewalDate */];\r\n isExpired = timeSinceAcqMs < 0 || timeSinceRenewalMs < 0; // expired if the acquisition or last renewal are in the future\r\n isExpired = isExpired || timeSinceAcqMs > sessionExpirationMs; // expired if the time since acquisition is more than session Expiration\r\n isExpired = isExpired || timeSinceRenewalMs > sessionRenewalMs; // expired if the time since last renewal is more than renewal period\r\n }\r\n // renew if acquisitionSpan or renewalSpan has elapsed\r\n if (isExpired) {\r\n // update automaticSession so session state has correct id\r\n _renew(nowMs);\r\n }\r\n else {\r\n // do not update the cookie more often than cookieUpdateInterval\r\n if (!_cookieUpdatedTimestamp || nowMs - _cookieUpdatedTimestamp > _SessionManager.cookieUpdateInterval) {\r\n _setCookie(session, nowMs);\r\n }\r\n }\r\n };\r\n /**\r\n * Record the current state of the automatic session and store it in our cookie string format\r\n * into the browser's local storage. This is used to restore the session data when the cookie\r\n * expires.\r\n */\r\n _self.backup = function () {\r\n var session = _self[_DYN_AUTOMATIC_SESSION /* @min:%2eautomaticSession */];\r\n _setStorage(session.id, session[_DYN_ACQUISITION_DATE /* @min:%2eacquisitionDate */], session[_DYN_RENEWAL_DATE /* @min:%2erenewalDate */]);\r\n };\r\n /**\r\n * Use config.namePrefix + ai_session cookie data or local storage data (when the cookie is unavailable) to\r\n * initialize the automatic session.\r\n * @returns true if values set otherwise false\r\n */\r\n function _initializeAutomaticSession(session, now) {\r\n var isValid = false;\r\n var cookieValue = _cookieManager.get(_storageNamePrefix());\r\n if (cookieValue && isFunction(cookieValue.split)) {\r\n isValid = _initializeAutomaticSessionWithData(session, cookieValue);\r\n }\r\n else {\r\n // There's no cookie, but we might have session data in local storage\r\n // This can happen if the session expired or the user actively deleted the cookie\r\n // We only want to recover data if the cookie is missing from expiry. We should respect the user's wishes if the cookie was deleted actively.\r\n // The User class handles this for us and deletes our local storage object if the persistent user cookie was removed.\r\n var storageValue = utlGetLocalStorage(_logger, _storageNamePrefix());\r\n if (storageValue) {\r\n isValid = _initializeAutomaticSessionWithData(session, storageValue);\r\n }\r\n }\r\n return isValid || !!session.id;\r\n }\r\n /**\r\n * Extract id, acquisitionDate, and renewalDate from an ai_session payload string and\r\n * use this data to initialize automaticSession.\r\n *\r\n * @param {string} sessionData - The string stored in an ai_session cookie or local storage backup\r\n * @returns true if values set otherwise false\r\n */\r\n function _initializeAutomaticSessionWithData(session, sessionData) {\r\n var isValid = false;\r\n var sessionReset = \", session will be reset\";\r\n var tokens = sessionData.split(\"|\");\r\n if (tokens[_DYN_LENGTH /* @min:%2elength */] >= 2) {\r\n try {\r\n var acqMs = +tokens[1] || 0;\r\n var renewalMs = +tokens[2] || 0;\r\n if (isNaN(acqMs) || acqMs <= 0) {\r\n _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 27 /* _eInternalMessageId.SessionRenewalDateIsZero */, \"AI session acquisition date is 0\" + sessionReset);\r\n }\r\n else if (isNaN(renewalMs) || renewalMs <= 0) {\r\n _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 27 /* _eInternalMessageId.SessionRenewalDateIsZero */, \"AI session renewal date is 0\" + sessionReset);\r\n }\r\n else if (tokens[0]) {\r\n // Everything looks valid so set the values\r\n session.id = tokens[0];\r\n session[_DYN_ACQUISITION_DATE /* @min:%2eacquisitionDate */] = acqMs;\r\n session[_DYN_RENEWAL_DATE /* @min:%2erenewalDate */] = renewalMs;\r\n isValid = true;\r\n }\r\n }\r\n catch (e) {\r\n _throwInternal(_logger, 1 /* eLoggingSeverity.CRITICAL */, 9 /* _eInternalMessageId.ErrorParsingAISessionCookie */, \"Error parsing ai_session value [\" + (sessionData || \"\") + \"]\" + sessionReset + \" - \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return isValid;\r\n }\r\n function _renew(nowMs) {\r\n var theConfig = (_self[_DYN_CONFIG /* @min:%2econfig */] || {});\r\n var getNewId = (theConfig[_DYN_GET_NEW_ID /* @min:%2egetNewId */] ? theConfig[_DYN_GET_NEW_ID /* @min:%2egetNewId */]() : null) || newId;\r\n _self.automaticSession.id = getNewId(theConfig[_DYN_ID_LENGTH /* @min:%2eidLength */] ? theConfig[_DYN_ID_LENGTH /* @min:%2eidLength */]() : 22);\r\n _self[_DYN_AUTOMATIC_SESSION /* @min:%2eautomaticSession */][_DYN_ACQUISITION_DATE /* @min:%2eacquisitionDate */] = nowMs;\r\n _setCookie(_self[_DYN_AUTOMATIC_SESSION /* @min:%2eautomaticSession */], nowMs);\r\n // If this browser does not support local storage, fire an internal log to keep track of it at this point\r\n if (!utlCanUseLocalStorage()) {\r\n _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 0 /* _eInternalMessageId.BrowserDoesNotSupportLocalStorage */, \"Browser does not support local storage. Session durations will be inaccurate.\");\r\n }\r\n }\r\n function _setCookie(session, nowMs) {\r\n var acq = session[_DYN_ACQUISITION_DATE /* @min:%2eacquisitionDate */];\r\n session[_DYN_RENEWAL_DATE /* @min:%2erenewalDate */] = nowMs;\r\n var config = _self[_DYN_CONFIG /* @min:%2econfig */];\r\n var renewalPeriodMs = config[_DYN_SESSION_RENEWAL_MS /* @min:%2esessionRenewalMs */]();\r\n // Set cookie to expire after the session expiry time passes or the session renewal deadline, whichever is sooner\r\n // Expiring the cookie will cause the session to expire even if the user isn't on the page\r\n var acqTimeLeftMs = (acq + config[_DYN_SESSION_EXPIRATION_M7 /* @min:%2esessionExpirationMs */]()) - nowMs;\r\n var cookie = [session.id, acq, nowMs];\r\n var maxAgeSec = 0;\r\n if (acqTimeLeftMs < renewalPeriodMs) {\r\n maxAgeSec = acqTimeLeftMs / 1000;\r\n }\r\n else {\r\n maxAgeSec = renewalPeriodMs / 1000;\r\n }\r\n var cookieDomain = config[_DYN_COOKIE_DOMAIN /* @min:%2ecookieDomain */] ? config[_DYN_COOKIE_DOMAIN /* @min:%2ecookieDomain */]() : null;\r\n // if sessionExpirationMs is set to 0, it means the expiry is set to 0 for this session cookie\r\n // A cookie with 0 expiry in the session cookie will never expire for that browser session. If the browser is closed the cookie expires.\r\n // Depending on the browser, another instance does not inherit this cookie, however, another tab will\r\n _cookieManager.set(_storageNamePrefix(), cookie.join(\"|\"), config[_DYN_SESSION_EXPIRATION_M7 /* @min:%2esessionExpirationMs */]() > 0 ? maxAgeSec : null, cookieDomain);\r\n _cookieUpdatedTimestamp = nowMs;\r\n }\r\n function _setStorage(guid, acq, renewal) {\r\n // Keep data in local storage to retain the last session id, allowing us to cleanly end the session when it expires\r\n // Browsers that don't support local storage won't be able to end sessions cleanly from the client\r\n // The server will notice this and end the sessions itself, with loss of accurate session duration\r\n utlSetLocalStorage(_logger, _storageNamePrefix(), [guid, acq, renewal][_DYN_JOIN /* @min:%2ejoin */](\"|\"));\r\n }\r\n });\r\n }\r\n _SessionManager.prototype.update = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Record the current state of the automatic session and store it in our cookie string format\r\n * into the browser's local storage. This is used to restore the session data when the cookie\r\n * expires.\r\n */\r\n _SessionManager.prototype.backup = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n _SessionManager.acquisitionSpan = 86400000; // 24 hours in ms\r\n _SessionManager.renewalSpan = 1800000; // 30 minutes in ms\r\n _SessionManager.cookieUpdateInterval = 60000; // 1 minute in ms\r\n return _SessionManager;\r\n}());\r\nexport { _SessionManager };\r\n//# sourceMappingURL=Session.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { dataSanitizeString } from \"@microsoft/applicationinsights-common\";\r\nimport { generateW3CId, getLocation } from \"@microsoft/applicationinsights-core-js\";\r\nvar TelemetryTrace = /** @class */ (function () {\r\n function TelemetryTrace(id, parentId, name, logger) {\r\n var _self = this;\r\n _self.traceID = id || generateW3CId();\r\n _self.parentID = parentId;\r\n var location = getLocation();\r\n if (!name && location && location.pathname) {\r\n name = location.pathname;\r\n }\r\n _self.name = dataSanitizeString(logger, name);\r\n }\r\n return TelemetryTrace;\r\n}());\r\nexport { TelemetryTrace };\r\n//# sourceMappingURL=TelemetryTrace.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { utlRemoveStorage } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal, newId, safeGetCookieMgr, safeGetLogger, toISOString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_ACCOUNT_ID, _DYN_AUTHENTICATED_ID, _DYN_AUTH_USER_COOKIE_NAM8, _DYN_CONFIG, _DYN_COOKIE_SEPARATOR, _DYN_GET_NEW_ID, _DYN_ID_LENGTH, _DYN_IS_NEW_USER, _DYN_IS_USER_COOKIE_SET, _DYN_JOIN, _DYN_LENGTH, _DYN_NAME_PREFIX, _DYN_UPDATE, _DYN_USER_COOKIE_POSTFIX } from \"../__DynamicConstants\";\r\nfunction _validateUserInput(id) {\r\n // Validate:\r\n // 1. Id is a non-empty string.\r\n // 2. It does not contain special characters for cookies.\r\n if (typeof id !== \"string\" ||\r\n !id ||\r\n id.match(/,|;|=| |\\|/)) {\r\n return false;\r\n }\r\n return true;\r\n}\r\nvar User = /** @class */ (function () {\r\n function User(config, core) {\r\n /**\r\n * A flag indicating whether this represents a new user\r\n */\r\n this.isNewUser = false;\r\n /**\r\n * A flag indicating whether the user cookie has been set\r\n */\r\n this.isUserCookieSet = false;\r\n var _logger = safeGetLogger(core);\r\n var _cookieManager = safeGetCookieMgr(core);\r\n var _storageNamePrefix;\r\n dynamicProto(User, this, function (_self) {\r\n _self[_DYN_CONFIG /* @min:%2econfig */] = config;\r\n var userCookiePostfix = (_self.config[_DYN_USER_COOKIE_POSTFIX /* @min:%2euserCookiePostfix */] && _self[_DYN_CONFIG /* @min:%2econfig */][_DYN_USER_COOKIE_POSTFIX /* @min:%2euserCookiePostfix */]()) ? _self[_DYN_CONFIG /* @min:%2econfig */][_DYN_USER_COOKIE_POSTFIX /* @min:%2euserCookiePostfix */]() : \"\";\r\n _storageNamePrefix = function () { return User.userCookieName + userCookiePostfix; };\r\n // get userId or create new one if none exists\r\n var cookie = _cookieManager.get(_storageNamePrefix());\r\n if (cookie) {\r\n _self[_DYN_IS_NEW_USER /* @min:%2eisNewUser */] = false;\r\n var params = cookie.split(User[_DYN_COOKIE_SEPARATOR /* @min:%2ecookieSeparator */]);\r\n if (params[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n _self.id = params[0];\r\n // we already have a cookie\r\n _self[_DYN_IS_USER_COOKIE_SET /* @min:%2eisUserCookieSet */] = !!_self.id;\r\n }\r\n }\r\n function _generateNewId() {\r\n var theConfig = (config || {});\r\n var getNewId = (theConfig[_DYN_GET_NEW_ID /* @min:%2egetNewId */] ? theConfig[_DYN_GET_NEW_ID /* @min:%2egetNewId */]() : null) || newId;\r\n var id = getNewId(theConfig[_DYN_ID_LENGTH /* @min:%2eidLength */] ? config[_DYN_ID_LENGTH /* @min:%2eidLength */]() : 22);\r\n return id;\r\n }\r\n function _generateNewCookie(userId) {\r\n var acqStr = toISOString(new Date());\r\n _self.accountAcquisitionDate = acqStr;\r\n _self[_DYN_IS_NEW_USER /* @min:%2eisNewUser */] = true;\r\n var newCookie = [userId, acqStr];\r\n return newCookie;\r\n }\r\n function _setUserCookie(cookie) {\r\n // without expiration, cookies expire at the end of the session\r\n // set it to 365 days from now\r\n // 365 * 24 * 60 * 60 = 31536000\r\n var oneYear = 31536000;\r\n _self[_DYN_IS_USER_COOKIE_SET /* @min:%2eisUserCookieSet */] = _cookieManager.set(_storageNamePrefix(), cookie, oneYear);\r\n }\r\n if (!_self.id) {\r\n _self.id = _generateNewId();\r\n var newCookie = _generateNewCookie(_self.id);\r\n _setUserCookie(newCookie[_DYN_JOIN /* @min:%2ejoin */](User[_DYN_COOKIE_SEPARATOR /* @min:%2ecookieSeparator */]));\r\n // If we have an config.namePrefix() + ai_session in local storage this means the user actively removed our cookies.\r\n // We should respect their wishes and clear ourselves from local storage\r\n var name_1 = config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */] && config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */]() ? config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */]() + \"ai_session\" : \"ai_session\";\r\n utlRemoveStorage(_logger, name_1);\r\n }\r\n // We still take the account id from the ctor param for backward compatibility.\r\n // But if the the customer set the accountId through the newer setAuthenticatedUserContext API, we will override it.\r\n _self[_DYN_ACCOUNT_ID /* @min:%2eaccountId */] = config[_DYN_ACCOUNT_ID /* @min:%2eaccountId */] ? config[_DYN_ACCOUNT_ID /* @min:%2eaccountId */]() : undefined;\r\n // Get the auth user id and account id from the cookie if exists\r\n // Cookie is in the pattern: <authenticatedId>|<accountId>\r\n var authCookie = _cookieManager.get(User[_DYN_AUTH_USER_COOKIE_NAM8 /* @min:%2eauthUserCookieName */]);\r\n if (authCookie) {\r\n authCookie = decodeURI(authCookie);\r\n var authCookieString = authCookie.split(User[_DYN_COOKIE_SEPARATOR /* @min:%2ecookieSeparator */]);\r\n if (authCookieString[0]) {\r\n _self[_DYN_AUTHENTICATED_ID /* @min:%2eauthenticatedId */] = authCookieString[0];\r\n }\r\n if (authCookieString[_DYN_LENGTH /* @min:%2elength */] > 1 && authCookieString[1]) {\r\n _self[_DYN_ACCOUNT_ID /* @min:%2eaccountId */] = authCookieString[1];\r\n }\r\n }\r\n _self.setAuthenticatedUserContext = function (authenticatedUserId, accountId, storeInCookie) {\r\n if (storeInCookie === void 0) { storeInCookie = false; }\r\n // Validate inputs to ensure no cookie control characters.\r\n var isInvalidInput = !_validateUserInput(authenticatedUserId) || (accountId && !_validateUserInput(accountId));\r\n if (isInvalidInput) {\r\n _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 60 /* _eInternalMessageId.SetAuthContextFailedAccountName */, \"Setting auth user context failed. \" +\r\n \"User auth/account id should be of type string, and not contain commas, semi-colons, equal signs, spaces, or vertical-bars.\", true);\r\n return;\r\n }\r\n // Create cookie string.\r\n _self[_DYN_AUTHENTICATED_ID /* @min:%2eauthenticatedId */] = authenticatedUserId;\r\n var authCookie = _self[_DYN_AUTHENTICATED_ID /* @min:%2eauthenticatedId */];\r\n if (accountId) {\r\n _self[_DYN_ACCOUNT_ID /* @min:%2eaccountId */] = accountId;\r\n authCookie = [_self[_DYN_AUTHENTICATED_ID /* @min:%2eauthenticatedId */], _self.accountId][_DYN_JOIN /* @min:%2ejoin */](User[_DYN_COOKIE_SEPARATOR /* @min:%2ecookieSeparator */]);\r\n }\r\n if (storeInCookie) {\r\n // Set the cookie. No expiration date because this is a session cookie (expires when browser closed).\r\n // Encoding the cookie to handle unexpected unicode characters.\r\n _cookieManager.set(User[_DYN_AUTH_USER_COOKIE_NAM8 /* @min:%2eauthUserCookieName */], encodeURI(authCookie));\r\n }\r\n };\r\n /**\r\n * Clears the authenticated user id and the account id from the user context.\r\n * @returns {}\r\n */\r\n _self.clearAuthenticatedUserContext = function () {\r\n _self[_DYN_AUTHENTICATED_ID /* @min:%2eauthenticatedId */] = null;\r\n _self[_DYN_ACCOUNT_ID /* @min:%2eaccountId */] = null;\r\n _cookieManager.del(User[_DYN_AUTH_USER_COOKIE_NAM8 /* @min:%2eauthUserCookieName */]);\r\n };\r\n _self[_DYN_UPDATE /* @min:%2eupdate */] = function (userId) {\r\n // Optimizations to avoid setting and processing the cookie when not needed\r\n if (_self.id !== userId || !_self[_DYN_IS_USER_COOKIE_SET /* @min:%2eisUserCookieSet */]) {\r\n var user_id = userId ? userId : _generateNewId();\r\n var user_cookie = _generateNewCookie(user_id);\r\n _setUserCookie(user_cookie[_DYN_JOIN /* @min:%2ejoin */](User[_DYN_COOKIE_SEPARATOR /* @min:%2ecookieSeparator */]));\r\n }\r\n };\r\n });\r\n }\r\n /**\r\n * Sets the authenticated user id and the account id in this session.\r\n *\r\n * @param authenticatedUserId {string} - The authenticated user id. A unique and persistent string that represents each authenticated user in the service.\r\n * @param accountId {string} - An optional string to represent the account associated with the authenticated user.\r\n */\r\n User.prototype.setAuthenticatedUserContext = function (authenticatedUserId, accountId, storeInCookie) {\r\n if (storeInCookie === void 0) { storeInCookie = false; }\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Clears the authenticated user id and the account id from the user context.\r\n * @returns {}\r\n */\r\n User.prototype.clearAuthenticatedUserContext = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Update or create the user cookie if cookies where previously disabled or the new userId does not match the existing value.\r\n * If you pass nothing a new random user id will be created.\r\n * @param userId - Specific either the current (via appInsights.context.user.id) or new id that you want to set\r\n */\r\n User.prototype.update = function (userId) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n User.cookieSeparator = \"|\";\r\n User.userCookieName = \"ai_user\";\r\n User.authUserCookieName = \"ai_authUser\";\r\n return User;\r\n}());\r\nexport { User };\r\n//# sourceMappingURL=User.js.map","/**\r\n* TelemetryContext.ts\r\n* @copyright Microsoft 2018\r\n*/\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { CtxTagKeys, Extensions, PageView } from \"@microsoft/applicationinsights-common\";\r\nimport { _InternalLogMessage, getSetValue, hasWindow, isNullOrUndefined, isString, objKeys, setValue } from \"@microsoft/applicationinsights-core-js\";\r\nimport { Application } from \"./Context/Application\";\r\nimport { Device } from \"./Context/Device\";\r\nimport { Internal } from \"./Context/Internal\";\r\nimport { Location } from \"./Context/Location\";\r\nimport { Session, _SessionManager } from \"./Context/Session\";\r\nimport { TelemetryTrace } from \"./Context/TelemetryTrace\";\r\nimport { User } from \"./Context/User\";\r\nimport { _DYN_ACCOUNT_ID, _DYN_APPLY_APPLICATION_CO1, _DYN_APPLY_DEVICE_CONTEXT, _DYN_APPLY_INTERNAL_CONTE5, _DYN_APPLY_LOCATION_CONTE4, _DYN_APPLY_OPERATING_SYST3, _DYN_APPLY_OPERATION_CONT2, _DYN_APPLY_SESSION_CONTEX0, _DYN_APPLY_USER_CONTEXT, _DYN_AUTHENTICATED_ID, _DYN_AUTOMATIC_SESSION, _DYN_GET_SESSION_ID, _DYN_LENGTH, _DYN_SESSION_MANAGER, _DYN_TELEMETRY_TRACE } from \"./__DynamicConstants\";\r\nvar strExt = \"ext\";\r\nvar strTags = \"tags\";\r\nfunction _removeEmpty(target, name) {\r\n if (target && target[name] && objKeys(target[name])[_DYN_LENGTH /* @min:%2elength */] === 0) {\r\n delete target[name];\r\n }\r\n}\r\nvar TelemetryContext = /** @class */ (function () {\r\n function TelemetryContext(core, defaultConfig, previousTraceCtx) {\r\n var _this = this;\r\n var logger = core.logger;\r\n this.appId = function () { return null; };\r\n this[_DYN_GET_SESSION_ID /* @min:%2egetSessionId */] = function () { return null; };\r\n dynamicProto(TelemetryContext, this, function (_self) {\r\n _self.application = new Application();\r\n _self.internal = new Internal(defaultConfig);\r\n if (hasWindow()) {\r\n _self[_DYN_SESSION_MANAGER /* @min:%2esessionManager */] = new _SessionManager(defaultConfig, core);\r\n _self.device = new Device();\r\n _self.location = new Location();\r\n _self.user = new User(defaultConfig, core);\r\n var traceId = void 0;\r\n var parentId = void 0;\r\n var name_1;\r\n if (previousTraceCtx) {\r\n traceId = previousTraceCtx.getTraceId();\r\n parentId = previousTraceCtx.getSpanId();\r\n name_1 = previousTraceCtx.getName();\r\n }\r\n _self[_DYN_TELEMETRY_TRACE /* @min:%2etelemetryTrace */] = new TelemetryTrace(traceId, parentId, name_1, logger);\r\n _self.session = new Session();\r\n }\r\n _self[_DYN_GET_SESSION_ID /* @min:%2egetSessionId */] = function () {\r\n var session = _self.session;\r\n var sesId = null;\r\n // If customer set session info, apply their context; otherwise apply context automatically generated\r\n if (session && isString(session.id)) {\r\n sesId = session.id;\r\n }\r\n else {\r\n // Gets the automatic session if it exists or an empty object\r\n var autoSession = (_self[_DYN_SESSION_MANAGER /* @min:%2esessionManager */] || {})[_DYN_AUTOMATIC_SESSION /* @min:%2eautomaticSession */];\r\n sesId = autoSession && isString(autoSession.id) ? autoSession.id : null;\r\n }\r\n return sesId;\r\n };\r\n _self[_DYN_APPLY_SESSION_CONTEX0 /* @min:%2eapplySessionContext */] = function (evt, itemCtx) {\r\n setValue(getSetValue(evt.ext, Extensions.AppExt), \"sesId\", _self[_DYN_GET_SESSION_ID /* @min:%2egetSessionId */](), isString);\r\n };\r\n _self[_DYN_APPLY_OPERATING_SYST3 /* @min:%2eapplyOperatingSystemContxt */] = function (evt, itemCtx) {\r\n setValue(evt.ext, Extensions.OSExt, _self.os);\r\n };\r\n _self[_DYN_APPLY_APPLICATION_CO1 /* @min:%2eapplyApplicationContext */] = function (evt, itemCtx) {\r\n var application = _self.application;\r\n if (application) {\r\n // evt.ext.app\r\n var tags = getSetValue(evt, strTags);\r\n setValue(tags, CtxTagKeys.applicationVersion, application.ver, isString);\r\n setValue(tags, CtxTagKeys.applicationBuild, application.build, isString);\r\n }\r\n };\r\n _self[_DYN_APPLY_DEVICE_CONTEXT /* @min:%2eapplyDeviceContext */] = function (evt, itemCtx) {\r\n var device = _self.device;\r\n if (device) {\r\n // evt.ext.device\r\n var extDevice = getSetValue(getSetValue(evt, strExt), Extensions.DeviceExt);\r\n setValue(extDevice, \"localId\", device.id, isString);\r\n setValue(extDevice, \"ip\", device.ip, isString);\r\n setValue(extDevice, \"model\", device.model, isString);\r\n setValue(extDevice, \"deviceClass\", device.deviceClass, isString);\r\n }\r\n };\r\n _self[_DYN_APPLY_INTERNAL_CONTE5 /* @min:%2eapplyInternalContext */] = function (evt, itemCtx) {\r\n var internal = _self.internal;\r\n if (internal) {\r\n var tags = getSetValue(evt, strTags);\r\n setValue(tags, CtxTagKeys.internalAgentVersion, internal.agentVersion, isString); // not mapped in CS 4.0\r\n setValue(tags, CtxTagKeys.internalSdkVersion, internal.sdkVersion, isString);\r\n if (evt.baseType === _InternalLogMessage.dataType || evt.baseType === PageView.dataType) {\r\n setValue(tags, CtxTagKeys.internalSnippet, internal.snippetVer, isString);\r\n setValue(tags, CtxTagKeys.internalSdkSrc, internal.sdkSrc, isString);\r\n }\r\n }\r\n };\r\n _self[_DYN_APPLY_LOCATION_CONTE4 /* @min:%2eapplyLocationContext */] = function (evt, itemCtx) {\r\n var location = _this.location;\r\n if (location) {\r\n setValue(getSetValue(evt, strTags, []), CtxTagKeys.locationIp, location.ip, isString);\r\n }\r\n };\r\n _self[_DYN_APPLY_OPERATION_CONT2 /* @min:%2eapplyOperationContext */] = function (evt, itemCtx) {\r\n var telemetryTrace = _self[_DYN_TELEMETRY_TRACE /* @min:%2etelemetryTrace */];\r\n if (telemetryTrace) {\r\n var extTrace = getSetValue(getSetValue(evt, strExt), Extensions.TraceExt, { traceID: undefined, parentID: undefined });\r\n setValue(extTrace, \"traceID\", telemetryTrace.traceID, isString, isNullOrUndefined);\r\n setValue(extTrace, \"name\", telemetryTrace.name, isString, isNullOrUndefined);\r\n setValue(extTrace, \"parentID\", telemetryTrace.parentID, isString, isNullOrUndefined);\r\n }\r\n };\r\n _self.applyWebContext = function (evt, itemCtx) {\r\n var web = _this.web;\r\n if (web) {\r\n setValue(getSetValue(evt, strExt), Extensions.WebExt, web);\r\n }\r\n };\r\n _self[_DYN_APPLY_USER_CONTEXT /* @min:%2eapplyUserContext */] = function (evt, itemCtx) {\r\n var user = _self.user;\r\n if (user) {\r\n var tags = getSetValue(evt, strTags, []);\r\n // stays in tags\r\n setValue(tags, CtxTagKeys.userAccountId, user[_DYN_ACCOUNT_ID /* @min:%2eaccountId */], isString);\r\n // CS 4.0\r\n var extUser = getSetValue(getSetValue(evt, strExt), Extensions.UserExt);\r\n setValue(extUser, \"id\", user.id, isString);\r\n setValue(extUser, \"authId\", user[_DYN_AUTHENTICATED_ID /* @min:%2eauthenticatedId */], isString);\r\n }\r\n };\r\n _self.cleanUp = function (evt, itemCtx) {\r\n var ext = evt.ext;\r\n if (ext) {\r\n _removeEmpty(ext, Extensions.DeviceExt);\r\n _removeEmpty(ext, Extensions.UserExt);\r\n _removeEmpty(ext, Extensions.WebExt);\r\n _removeEmpty(ext, Extensions.OSExt);\r\n _removeEmpty(ext, Extensions.AppExt);\r\n _removeEmpty(ext, Extensions.TraceExt);\r\n }\r\n };\r\n });\r\n }\r\n TelemetryContext.prototype.applySessionContext = function (evt, itemCtx) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n TelemetryContext.prototype.applyOperatingSystemContxt = function (event, itemCtx) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n TelemetryContext.prototype.applyApplicationContext = function (event, itemCtx) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n TelemetryContext.prototype.applyDeviceContext = function (event, itemCtx) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n TelemetryContext.prototype.applyInternalContext = function (event, itemCtx) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n TelemetryContext.prototype.applyLocationContext = function (event, itemCtx) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n TelemetryContext.prototype.applyOperationContext = function (event, itemCtx) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n TelemetryContext.prototype.applyWebContext = function (event, itemCtx) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n TelemetryContext.prototype.applyUserContext = function (event, itemCtx) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n TelemetryContext.prototype.cleanUp = function (event, itemCtx) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n return TelemetryContext;\r\n}());\r\nexport { TelemetryContext };\r\n//# sourceMappingURL=TelemetryContext.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\"use strict\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { AnalyticsPlugin } from \"@microsoft/applicationinsights-analytics-js\";\r\nimport { Sender } from \"@microsoft/applicationinsights-channel-js\";\r\nimport { AnalyticsPluginIdentifier, BreezeChannelIdentifier, ConfigurationManager, ConnectionStringParser, ContextTagKeys, CorrelationIdHelper, CtxTagKeys, DEFAULT_BREEZE_ENDPOINT, DEFAULT_BREEZE_PATH, Data, DataSanitizer, DateTimeUtils, DisabledPropertyName, DistributedTracingModes, Envelope, Event, Exception, Extensions, HttpMethod, Metric, PageView, PageViewPerformance, ProcessLegacy, PropertiesPluginIdentifier, RemoteDependencyData, RequestHeaders, SampleRate, SeverityLevel, TelemetryItemCreator, Trace, UrlHelper, Util, parseConnectionString } from \"@microsoft/applicationinsights-common\";\r\nimport { AppInsightsCore, _throwInternal, addPageHideEventListener, addPageUnloadEventListener, arrForEach, arrIndexOf, createUniqueNamespace, doPerf, hasDocument, hasWindow, isArray, isFunction, isNullOrUndefined, isReactNative, isString, mergeEvtNamespace, objForEachKey, proxyAssign, proxyFunctions, removePageHideEventListener, removePageUnloadEventListener, throwError } from \"@microsoft/applicationinsights-core-js\";\r\nimport { AjaxPlugin as DependenciesPlugin } from \"@microsoft/applicationinsights-dependencies-js\";\r\nimport { PropertiesPlugin } from \"@microsoft/applicationinsights-properties-js\";\r\nimport { STR_ADD_TELEMETRY_INITIALIZER, STR_CLEAR_AUTHENTICATED_USER_CONTEXT, STR_EVT_NAMESPACE, STR_FLUSH, STR_GET_COOKIE_MGR, STR_GET_PLUGIN, STR_POLL_INTERNAL_LOGS, STR_SET_AUTHENTICATED_USER_CONTEXT, STR_SNIPPET, STR_START_TRACK_EVENT, STR_START_TRACK_PAGE, STR_STOP_TRACK_EVENT, STR_STOP_TRACK_PAGE, STR_TRACK_DEPENDENCY_DATA, STR_TRACK_EVENT, STR_TRACK_EXCEPTION, STR_TRACK_METRIC, STR_TRACK_PAGE_VIEW, STR_TRACK_TRACE } from \"./InternalConstants\";\r\nimport { _DYN_ADD_HOUSEKEEPING_BEF20, _DYN_APP_INSIGHTS, _DYN_CONFIG, _DYN_CONNECTION_STRING, _DYN_CONTEXT, _DYN_DIAGNOSTIC_LOG_INTER4, _DYN_DISABLE_FLUSH_ON_BEF11, _DYN_DISABLE_FLUSH_ON_UNL12, _DYN_DISABLE_IKEY_DEPRECA18, _DYN_ENDPOINT_URL, _DYN_GET_TRANSMISSION_CON19, _DYN_INDEX_OF, _DYN_INSTRUMENTATION_KEY, _DYN_LOAD_APP_INSIGHTS, _DYN_ONUNLOAD_FLUSH, _DYN_PUSH, _DYN_QUEUE, _DYN_UPDATE_SNIPPET_DEFIN0, _DYN_VERSION } from \"./__DynamicConstants\";\r\nvar _internalSdkSrc;\r\n// This is an exclude list of properties that should not be updated during initialization\r\n// They include a combination of private and internal property names\r\nvar _ignoreUpdateSnippetProperties = [\r\n STR_SNIPPET, \"dependencies\", \"properties\", \"_snippetVersion\", \"appInsightsNew\", \"getSKUDefaults\"\r\n];\r\n// Re-exposing the Common classes as Telemetry, the list was taken by reviewing the generated code for the build while using\r\n// the previous configuration :-\r\n// import * as Common from \"@microsoft/applicationinsights-common\"\r\n// export const Telemetry = Common;\r\nvar fieldType = {\r\n Default: 0 /* FieldType.Default */,\r\n Required: 1 /* FieldType.Required */,\r\n Array: 2 /* FieldType.Array */,\r\n Hidden: 4 /* FieldType.Hidden */\r\n};\r\n/**\r\n * Telemetry type classes, e.g. PageView, Exception, etc\r\n */\r\nexport var Telemetry = {\r\n __proto__: null,\r\n PropertiesPluginIdentifier: PropertiesPluginIdentifier,\r\n BreezeChannelIdentifier: BreezeChannelIdentifier,\r\n AnalyticsPluginIdentifier: AnalyticsPluginIdentifier,\r\n Util: Util,\r\n CorrelationIdHelper: CorrelationIdHelper,\r\n UrlHelper: UrlHelper,\r\n DateTimeUtils: DateTimeUtils,\r\n ConnectionStringParser: ConnectionStringParser,\r\n FieldType: fieldType,\r\n RequestHeaders: RequestHeaders,\r\n DisabledPropertyName: DisabledPropertyName,\r\n ProcessLegacy: ProcessLegacy,\r\n SampleRate: SampleRate,\r\n HttpMethod: HttpMethod,\r\n DEFAULT_BREEZE_ENDPOINT: DEFAULT_BREEZE_ENDPOINT,\r\n Envelope: Envelope,\r\n Event: Event,\r\n Exception: Exception,\r\n Metric: Metric,\r\n PageView: PageView,\r\n RemoteDependencyData: RemoteDependencyData,\r\n Trace: Trace,\r\n PageViewPerformance: PageViewPerformance,\r\n Data: Data,\r\n SeverityLevel: SeverityLevel,\r\n ConfigurationManager: ConfigurationManager,\r\n ContextTagKeys: ContextTagKeys,\r\n DataSanitizer: DataSanitizer,\r\n TelemetryItemCreator: TelemetryItemCreator,\r\n CtxTagKeys: CtxTagKeys,\r\n Extensions: Extensions,\r\n DistributedTracingModes: DistributedTracingModes\r\n};\r\n/**\r\n * Application Insights API\r\n * @class Initialization\r\n * @implements {IApplicationInsights}\r\n */\r\nvar Initialization = /** @class */ (function () {\r\n function Initialization(snippet) {\r\n var _this = this;\r\n // NOTE!: DON'T set default values here, instead set them in the _initDefaults() function as it is also called during teardown()\r\n var dependencies;\r\n var properties;\r\n var _sender;\r\n var _snippetVersion;\r\n var _evtNamespace;\r\n var _houseKeepingNamespace;\r\n var _core;\r\n dynamicProto(Initialization, this, function (_self) {\r\n _initDefaults();\r\n // initialize the queue and config in case they are undefined\r\n _snippetVersion = \"\" + (snippet.sv || snippet[_DYN_VERSION /* @min:%2eversion */] || \"\");\r\n snippet[_DYN_QUEUE /* @min:%2equeue */] = snippet[_DYN_QUEUE /* @min:%2equeue */] || [];\r\n snippet[_DYN_VERSION /* @min:%2eversion */] = snippet[_DYN_VERSION /* @min:%2eversion */] || 2.0; // Default to new version\r\n var config = snippet[_DYN_CONFIG /* @min:%2econfig */] || {};\r\n if (config[_DYN_CONNECTION_STRING /* @min:%2econnectionString */]) {\r\n var cs = parseConnectionString(config[_DYN_CONNECTION_STRING /* @min:%2econnectionString */]);\r\n var ingest = cs.ingestionendpoint;\r\n config[_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */] = ingest ? (ingest + DEFAULT_BREEZE_PATH) : config[_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */]; // only add /v2/track when from connectionstring\r\n config[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */] = cs.instrumentationkey || config[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */];\r\n }\r\n _self[_DYN_APP_INSIGHTS /* @min:%2eappInsights */] = new AnalyticsPlugin();\r\n properties = new PropertiesPlugin();\r\n dependencies = new DependenciesPlugin();\r\n _sender = new Sender();\r\n _core = new AppInsightsCore();\r\n _self.core = _core;\r\n var isErrMessageDisabled = isNullOrUndefined(config[_DYN_DISABLE_IKEY_DEPRECA18 /* @min:%2edisableIkeyDeprecationMessage */]) ? true : config[_DYN_DISABLE_IKEY_DEPRECA18 /* @min:%2edisableIkeyDeprecationMessage */];\r\n if (!config[_DYN_CONNECTION_STRING /* @min:%2econnectionString */] && !isErrMessageDisabled) {\r\n _throwInternal(_core.logger, 1 /* eLoggingSeverity.CRITICAL */, 106 /* _eInternalMessageId.InstrumentationKeyDeprecation */, \"Instrumentation key support will end soon, see aka.ms/IkeyMigrate\");\r\n }\r\n _self[STR_SNIPPET /* @min:%2esnippet */] = snippet;\r\n _self[_DYN_CONFIG /* @min:%2econfig */] = config;\r\n _getSKUDefaults();\r\n _self[STR_FLUSH /* @min:%2eflush */] = function (async) {\r\n if (async === void 0) { async = true; }\r\n doPerf(_core, function () { return \"AISKU.flush\"; }, function () {\r\n arrForEach(_core[_DYN_GET_TRANSMISSION_CON19 /* @min:%2egetTransmissionControls */](), function (channels) {\r\n arrForEach(channels, function (channel) {\r\n channel[STR_FLUSH /* @min:%2eflush */](async);\r\n });\r\n });\r\n }, null, async);\r\n };\r\n _self[_DYN_ONUNLOAD_FLUSH /* @min:%2eonunloadFlush */] = function (async) {\r\n if (async === void 0) { async = true; }\r\n arrForEach(_core[_DYN_GET_TRANSMISSION_CON19 /* @min:%2egetTransmissionControls */](), function (channels) {\r\n arrForEach(channels, function (channel) {\r\n if (channel[_DYN_ONUNLOAD_FLUSH /* @min:%2eonunloadFlush */]) {\r\n channel[_DYN_ONUNLOAD_FLUSH /* @min:%2eonunloadFlush */]();\r\n }\r\n else {\r\n channel[STR_FLUSH /* @min:%2eflush */](async);\r\n }\r\n });\r\n });\r\n };\r\n _self[_DYN_LOAD_APP_INSIGHTS /* @min:%2eloadAppInsights */] = function (legacyMode, logger, notificationManager) {\r\n if (legacyMode === void 0) { legacyMode = false; }\r\n function _updateSnippetProperties(snippet) {\r\n if (snippet) {\r\n var snippetVer = \"\";\r\n if (!isNullOrUndefined(_snippetVersion)) {\r\n snippetVer += _snippetVersion;\r\n }\r\n if (legacyMode) {\r\n snippetVer += \".lg\";\r\n }\r\n if (_self[_DYN_CONTEXT /* @min:%2econtext */] && _self[_DYN_CONTEXT /* @min:%2econtext */].internal) {\r\n _self[_DYN_CONTEXT /* @min:%2econtext */].internal.snippetVer = snippetVer || \"-\";\r\n }\r\n // apply updated properties to the global instance (snippet)\r\n objForEachKey(_self, function (field, value) {\r\n if (isString(field) &&\r\n !isFunction(value) &&\r\n field && field[0] !== \"_\" && // Don't copy \"internal\" values\r\n arrIndexOf(_ignoreUpdateSnippetProperties, field) === -1) {\r\n snippet[field] = value;\r\n }\r\n });\r\n }\r\n }\r\n // dont allow additional channels/other extensions for legacy mode; legacy mode is only to allow users to switch with no code changes!\r\n if (legacyMode && _self[_DYN_CONFIG /* @min:%2econfig */].extensions && _self[_DYN_CONFIG /* @min:%2econfig */].extensions.length > 0) {\r\n throwError(\"Extensions not allowed in legacy mode\");\r\n }\r\n doPerf(_self.core, function () { return \"AISKU.loadAppInsights\"; }, function () {\r\n var extensions = [];\r\n extensions[_DYN_PUSH /* @min:%2epush */](_sender);\r\n extensions[_DYN_PUSH /* @min:%2epush */](properties);\r\n extensions[_DYN_PUSH /* @min:%2epush */](dependencies);\r\n extensions[_DYN_PUSH /* @min:%2epush */](_self[_DYN_APP_INSIGHTS /* @min:%2eappInsights */]);\r\n // initialize core\r\n _core.initialize(_self[_DYN_CONFIG /* @min:%2econfig */], extensions, logger, notificationManager);\r\n _self[_DYN_CONTEXT /* @min:%2econtext */] = properties[_DYN_CONTEXT /* @min:%2econtext */];\r\n if (_internalSdkSrc && _self[_DYN_CONTEXT /* @min:%2econtext */]) {\r\n _self[_DYN_CONTEXT /* @min:%2econtext */].internal.sdkSrc = _internalSdkSrc;\r\n }\r\n _updateSnippetProperties(_self[STR_SNIPPET /* @min:%2esnippet */]);\r\n // Empty queue of all api calls logged prior to sdk download\r\n _self.emptyQueue();\r\n _self[STR_POLL_INTERNAL_LOGS /* @min:%2epollInternalLogs */]();\r\n _self[_DYN_ADD_HOUSEKEEPING_BEF20 /* @min:%2eaddHousekeepingBeforeUnload */](_this);\r\n });\r\n return _self;\r\n };\r\n _self[_DYN_UPDATE_SNIPPET_DEFIN0 /* @min:%2eupdateSnippetDefinitions */] = function (snippet) {\r\n // apply full appInsights to the global instance\r\n // Note: This must be called before loadAppInsights is called\r\n proxyAssign(snippet, _self, function (name) {\r\n // Not excluding names prefixed with \"_\" as we need to proxy some functions like _onError\r\n return name && arrIndexOf(_ignoreUpdateSnippetProperties, name) === -1;\r\n });\r\n };\r\n _self.emptyQueue = function () {\r\n // call functions that were queued before the main script was loaded\r\n try {\r\n if (isArray(_self.snippet[_DYN_QUEUE /* @min:%2equeue */])) {\r\n // note: do not check length in the for-loop conditional in case something goes wrong and the stub methods are not overridden.\r\n var length_1 = _self.snippet[_DYN_QUEUE /* @min:%2equeue */].length;\r\n for (var i = 0; i < length_1; i++) {\r\n var call = _self.snippet[_DYN_QUEUE /* @min:%2equeue */][i];\r\n call();\r\n }\r\n _self.snippet[_DYN_QUEUE /* @min:%2equeue */] = undefined;\r\n delete _self.snippet[_DYN_QUEUE /* @min:%2equeue */];\r\n }\r\n }\r\n catch (exception) {\r\n var properties_1 = {};\r\n if (exception && isFunction(exception.toString)) {\r\n properties_1.exception = exception.toString();\r\n }\r\n // need from core\r\n // Microsoft.ApplicationInsights._InternalLogging.throwInternal(\r\n // eLoggingSeverity.WARNING,\r\n // _eInternalMessageId.FailedToSendQueuedTelemetry,\r\n // \"Failed to send queued telemetry\",\r\n // properties);\r\n }\r\n };\r\n _self[_DYN_ADD_HOUSEKEEPING_BEF20 /* @min:%2eaddHousekeepingBeforeUnload */] = function (appInsightsInstance) {\r\n // Add callback to push events when the user navigates away\r\n if (hasWindow() || hasDocument()) {\r\n var performHousekeeping = function () {\r\n // Adds the ability to flush all data before the page unloads.\r\n // Note: This approach tries to push a sync request with all the pending events onbeforeunload.\r\n // Firefox does not respect this.Other browsers DO push out the call with < 100% hit rate.\r\n // Telemetry here will help us analyze how effective this approach is.\r\n // Another approach would be to make this call sync with a acceptable timeout to reduce the\r\n // impact on user experience.\r\n // appInsightsInstance.context._sender.triggerSend();\r\n appInsightsInstance[_DYN_ONUNLOAD_FLUSH /* @min:%2eonunloadFlush */](false);\r\n // Back up the current session to local storage\r\n // This lets us close expired sessions after the cookies themselves expire\r\n if (isFunction(_this.core[STR_GET_PLUGIN /* @min:%2egetPlugin */])) {\r\n var loadedPlugin = _this.core[STR_GET_PLUGIN /* @min:%2egetPlugin */](PropertiesPluginIdentifier);\r\n if (loadedPlugin) {\r\n var propertiesPlugin = loadedPlugin.plugin;\r\n if (propertiesPlugin && propertiesPlugin[_DYN_CONTEXT /* @min:%2econtext */] && propertiesPlugin[_DYN_CONTEXT /* @min:%2econtext */]._sessionManager) {\r\n propertiesPlugin[_DYN_CONTEXT /* @min:%2econtext */]._sessionManager.backup();\r\n }\r\n }\r\n }\r\n };\r\n var added = false;\r\n var excludePageUnloadEvents = appInsightsInstance.appInsights[_DYN_CONFIG /* @min:%2econfig */].disablePageUnloadEvents;\r\n if (!_houseKeepingNamespace) {\r\n _houseKeepingNamespace = mergeEvtNamespace(_evtNamespace, _core[STR_EVT_NAMESPACE /* @min:%2eevtNamespace */] && _core[STR_EVT_NAMESPACE /* @min:%2eevtNamespace */]());\r\n }\r\n if (!appInsightsInstance.appInsights.config[_DYN_DISABLE_FLUSH_ON_BEF11 /* @min:%2edisableFlushOnBeforeUnload */]) {\r\n // Hook the unload event for the document, window and body to ensure that the client events are flushed to the server\r\n // As just hooking the window does not always fire (on chrome) for page navigation's.\r\n if (addPageUnloadEventListener(performHousekeeping, excludePageUnloadEvents, _houseKeepingNamespace)) {\r\n added = true;\r\n }\r\n // We also need to hook the pagehide and visibilitychange events as not all versions of Safari support load/unload events.\r\n if (addPageHideEventListener(performHousekeeping, excludePageUnloadEvents, _houseKeepingNamespace)) {\r\n added = true;\r\n }\r\n // A reactNative app may not have a window and therefore the beforeunload/pagehide events -- so don't\r\n // log the failure in this case\r\n if (!added && !isReactNative()) {\r\n _throwInternal(appInsightsInstance[_DYN_APP_INSIGHTS /* @min:%2eappInsights */].core.logger, 1 /* eLoggingSeverity.CRITICAL */, 19 /* _eInternalMessageId.FailedToAddHandlerForOnBeforeUnload */, \"Could not add handler for beforeunload and pagehide\");\r\n }\r\n }\r\n if (!added && !appInsightsInstance.appInsights.config[_DYN_DISABLE_FLUSH_ON_UNL12 /* @min:%2edisableFlushOnUnload */]) {\r\n // If we didn't add the normal set then attempt to add the pagehide and visibilitychange only\r\n addPageHideEventListener(performHousekeeping, excludePageUnloadEvents, _houseKeepingNamespace);\r\n }\r\n }\r\n };\r\n _self.getSender = function () {\r\n return _sender;\r\n };\r\n _self.unload = function (isAsync, unloadComplete, cbTimeout) {\r\n _self[_DYN_ONUNLOAD_FLUSH /* @min:%2eonunloadFlush */](isAsync);\r\n // Remove any registered event handlers\r\n if (_houseKeepingNamespace) {\r\n removePageUnloadEventListener(null, _houseKeepingNamespace);\r\n removePageHideEventListener(null, _houseKeepingNamespace);\r\n }\r\n _core.unload && _core.unload(isAsync, unloadComplete, cbTimeout);\r\n };\r\n proxyFunctions(_self, _self[_DYN_APP_INSIGHTS /* @min:%2eappInsights */], [\r\n STR_GET_COOKIE_MGR,\r\n STR_TRACK_EVENT,\r\n STR_TRACK_PAGE_VIEW,\r\n \"trackPageViewPerformance\",\r\n STR_TRACK_EXCEPTION,\r\n \"_onerror\",\r\n STR_TRACK_TRACE,\r\n STR_TRACK_METRIC,\r\n STR_START_TRACK_PAGE,\r\n STR_STOP_TRACK_PAGE,\r\n STR_START_TRACK_EVENT,\r\n STR_STOP_TRACK_EVENT\r\n ]);\r\n proxyFunctions(_self, _getCurrentDependencies, [\r\n STR_TRACK_DEPENDENCY_DATA,\r\n \"addDependencyListener\",\r\n \"addDependencyInitializer\"\r\n ]);\r\n proxyFunctions(_self, _core, [\r\n STR_ADD_TELEMETRY_INITIALIZER,\r\n STR_POLL_INTERNAL_LOGS,\r\n \"stopPollingInternalLogs\",\r\n STR_GET_PLUGIN,\r\n \"addPlugin\",\r\n STR_EVT_NAMESPACE,\r\n \"addUnloadCb\",\r\n \"getTraceCtx\"\r\n ]);\r\n proxyFunctions(_self, function () {\r\n var context = properties[_DYN_CONTEXT /* @min:%2econtext */];\r\n return context ? context.user : null;\r\n }, [\r\n STR_SET_AUTHENTICATED_USER_CONTEXT,\r\n STR_CLEAR_AUTHENTICATED_USER_CONTEXT\r\n ]);\r\n function _getSKUDefaults() {\r\n _self.config[_DYN_DIAGNOSTIC_LOG_INTER4 /* @min:%2ediagnosticLogInterval */] =\r\n _self.config[_DYN_DIAGNOSTIC_LOG_INTER4 /* @min:%2ediagnosticLogInterval */] && _self[_DYN_CONFIG /* @min:%2econfig */][_DYN_DIAGNOSTIC_LOG_INTER4 /* @min:%2ediagnosticLogInterval */] > 0 ? _self[_DYN_CONFIG /* @min:%2econfig */][_DYN_DIAGNOSTIC_LOG_INTER4 /* @min:%2ediagnosticLogInterval */] : 10000;\r\n }\r\n // Using a function to support the dynamic adding / removal of plugins, so this will always return the current value\r\n function _getCurrentDependencies() {\r\n return dependencies;\r\n }\r\n function _initDefaults() {\r\n _evtNamespace = createUniqueNamespace(\"AISKU\");\r\n _houseKeepingNamespace = null;\r\n dependencies = null;\r\n properties = null;\r\n _sender = null;\r\n _snippetVersion = null;\r\n }\r\n });\r\n }\r\n // Analytics Plugin\r\n /**\r\n * Get the current cookie manager for this instance\r\n */\r\n Initialization.prototype.getCookieMgr = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n /**\r\n * Log a user action or other occurrence.\r\n * @param {IEventTelemetry} event\r\n * @param {ICustomProperties} [customProperties]\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.trackEvent = function (event, customProperties) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Logs that a page, or similar container was displayed to the user.\r\n * @param {IPageViewTelemetry} pageView\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.trackPageView = function (pageView) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Log a bag of performance information via the customProperties field.\r\n * @param {IPageViewPerformanceTelemetry} pageViewPerformance\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.trackPageViewPerformance = function (pageViewPerformance) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Log an exception that you have caught.\r\n * @param {IExceptionTelemetry} exception\r\n * @param {{[key: string]: any}} customProperties Additional data used to filter pages and metrics in the portal. Defaults to empty.\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.trackException = function (exception, customProperties) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Manually send uncaught exception telemetry. This method is automatically triggered\r\n * on a window.onerror event.\r\n * @param {IAutoExceptionTelemetry} exception\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype._onerror = function (exception) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Log a diagnostic scenario such entering or leaving a function.\r\n * @param {ITraceTelemetry} trace\r\n * @param {ICustomProperties} [customProperties]\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.trackTrace = function (trace, customProperties) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Log a numeric value that is not associated with a specific event. Typically used\r\n * to send regular reports of performance indicators.\r\n *\r\n * To send a single measurement, just use the `name` and `average` fields\r\n * of {@link IMetricTelemetry}.\r\n *\r\n * If you take measurements frequently, you can reduce the telemetry bandwidth by\r\n * aggregating multiple measurements and sending the resulting average and modifying\r\n * the `sampleCount` field of {@link IMetricTelemetry}.\r\n * @param {IMetricTelemetry} metric input object argument. Only `name` and `average` are mandatory.\r\n * @param {ICustomProperties} [customProperties]\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.trackMetric = function (metric, customProperties) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Starts the timer for tracking a page load time. Use this instead of `trackPageView` if you want to control when the page view timer starts and stops,\r\n * but don't want to calculate the duration yourself. This method doesn't send any telemetry. Call `stopTrackPage` to log the end of the page view\r\n * and send the event.\r\n * @param name A string that idenfities this item, unique within this HTML document. Defaults to the document title.\r\n */\r\n Initialization.prototype.startTrackPage = function (name) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Stops the timer that was started by calling `startTrackPage` and sends the pageview load time telemetry with the specified properties and measurements.\r\n * The duration of the page view will be the time between calling `startTrackPage` and `stopTrackPage`.\r\n * @param name The string you used as the name in startTrackPage. Defaults to the document title.\r\n * @param url String - a relative or absolute URL that identifies the page or other item. Defaults to the window location.\r\n * @param properties map[string, string] - additional data used to filter pages and metrics in the portal. Defaults to empty.\r\n * @param measurements map[string, number] - metrics associated with this page, displayed in Metrics Explorer on the portal. Defaults to empty.\r\n */\r\n Initialization.prototype.stopTrackPage = function (name, url, customProperties, measurements) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n Initialization.prototype.startTrackEvent = function (name) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Log an extended event that you started timing with `startTrackEvent`.\r\n * @param name The string you used to identify this event in `startTrackEvent`.\r\n * @param properties map[string, string] - additional data used to filter events and metrics in the portal. Defaults to empty.\r\n * @param measurements map[string, number] - metrics associated with this event, displayed in Metrics Explorer on the portal. Defaults to empty.\r\n */\r\n Initialization.prototype.stopTrackEvent = function (name, properties, measurements) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n Initialization.prototype.addTelemetryInitializer = function (telemetryInitializer) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n // Properties Plugin\r\n /**\r\n * Set the authenticated user id and the account id. Used for identifying a specific signed-in user. Parameters must not contain whitespace or ,;=|\r\n *\r\n * The method will only set the `authenticatedUserId` and `accountId` in the current page view. To set them for the whole session, you should set `storeInCookie = true`\r\n * @param {string} authenticatedUserId\r\n * @param {string} [accountId]\r\n * @param {boolean} [storeInCookie=false]\r\n */\r\n Initialization.prototype.setAuthenticatedUserContext = function (authenticatedUserId, accountId, storeInCookie) {\r\n if (storeInCookie === void 0) { storeInCookie = false; }\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Clears the authenticated user id and account id. The associated cookie is cleared, if present.\r\n */\r\n Initialization.prototype.clearAuthenticatedUserContext = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n // Dependencies Plugin\r\n /**\r\n * Log a dependency call (e.g. ajax)\r\n * @param {IDependencyTelemetry} dependency\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.trackDependencyData = function (dependency) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n // Misc\r\n /**\r\n * Manually trigger an immediate send of all telemetry still in the buffer.\r\n * @param {boolean} [async=true]\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.flush = function (async) {\r\n if (async === void 0) { async = true; }\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Manually trigger an immediate send of all telemetry still in the buffer using beacon Sender.\r\n * Fall back to xhr sender if beacon is not supported.\r\n * @param {boolean} [async=true]\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.onunloadFlush = function (async) {\r\n if (async === void 0) { async = true; }\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Initialize this instance of ApplicationInsights\r\n * @returns {IApplicationInsights}\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.loadAppInsights = function (legacyMode, logger, notificationManager) {\r\n if (legacyMode === void 0) { legacyMode = false; }\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n /**\r\n * Overwrite the lazy loaded fields of global window snippet to contain the\r\n * actual initialized API methods\r\n * @param {Snippet} snippet\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.updateSnippetDefinitions = function (snippet) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Call any functions that were queued before the main script was loaded\r\n * @memberof Initialization\r\n */\r\n Initialization.prototype.emptyQueue = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n Initialization.prototype.pollInternalLogs = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n Initialization.prototype.stopPollingInternalLogs = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n Initialization.prototype.addHousekeepingBeforeUnload = function (appInsightsInstance) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n Initialization.prototype.getSender = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n /**\r\n * Unload and Tear down the SDK and any initialized plugins, after calling this the SDK will be considered\r\n * to be un-initialized and non-operational, re-initializing the SDK should only be attempted if the previous\r\n * unload call return `true` stating that all plugins reported that they also unloaded, the recommended\r\n * approach is to create a new instance and initialize that instance.\r\n * This is due to possible unexpected side effects caused by plugins not supporting unload / teardown, unable\r\n * to successfully remove any global references or they may just be completing the unload process asynchronously.\r\n */\r\n Initialization.prototype.unload = function (isAsync, unloadComplete) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n Initialization.prototype.getPlugin = function (pluginIdentifier) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n Initialization.prototype.addPlugin = function (plugin, replaceExisting, doAsync, addCb) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Returns the unique event namespace that should be used\r\n */\r\n Initialization.prototype.evtNamespace = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n /**\r\n * Add an unload handler that will be called when the SDK is being unloaded\r\n * @param handler - the handler\r\n */\r\n Initialization.prototype.addUnloadCb = function (handler) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Add an ajax listener which is called just prior to the request being sent and before the correlation headers are added, to allow you\r\n * to access the headers and modify the values used to generate the distributed tracing correlation headers. (added in v2.8.4)\r\n * @param dependencyListener - The Telemetry Initializer function\r\n * @returns - A IDependencyListenerHandler to enable the initializer to be removed\r\n */\r\n Initialization.prototype.addDependencyListener = function (dependencyListener) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n /**\r\n * Add an dependency telemetry initializer callback function to allow populating additional properties or drop the request.\r\n * It is called after the dependency call has completed and any available performance details are available. A dependency\r\n * initializer is similar to the TelemetryInitializer function but it allows you to block the reporting of the dependency\r\n * request so that it doesn't count against the `maxAjaxCallsPerView`.\r\n * @param dependencyInitializer - The Dependency Telemetry Initializer function\r\n * @returns - A IDependencyInitializerHandler to enable the initializer to be removed\r\n */\r\n Initialization.prototype.addDependencyInitializer = function (dependencyInitializer) {\r\n return null;\r\n };\r\n /**\r\n * Gets the current distributed trace context for this instance if available\r\n */\r\n Initialization.prototype.getTraceCtx = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n return Initialization;\r\n}());\r\nexport { Initialization };\r\n// tslint:disable-next-line\r\n(function () {\r\n var sdkSrc = null;\r\n var isModule = false;\r\n var cdns = [\r\n \"://js.monitor.azure.com/\",\r\n \"://az416426.vo.msecnd.net/\"\r\n ];\r\n try {\r\n // Try and determine whether the sdk is being loaded from the CDN\r\n // currentScript is only valid during initial processing\r\n var scrpt = (document || {}).currentScript;\r\n if (scrpt) {\r\n sdkSrc = scrpt.src;\r\n // } else {\r\n // // We need to update to at least typescript 2.9 for this to work :-(\r\n // // Leaving as a stub for now so after we upgrade this breadcrumb is available\r\n // let meta = import.meta;\r\n // sdkSrc = (meta || {}).url;\r\n // isModule = true;\r\n }\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n if (sdkSrc) {\r\n try {\r\n var url = sdkSrc.toLowerCase();\r\n if (url) {\r\n var src = \"\";\r\n for (var idx = 0; idx < cdns.length; idx++) {\r\n if (url[_DYN_INDEX_OF /* @min:%2eindexOf */](cdns[idx]) !== -1) {\r\n src = \"cdn\" + (idx + 1);\r\n if (url[_DYN_INDEX_OF /* @min:%2eindexOf */](\"/scripts/\") === -1) {\r\n if (url[_DYN_INDEX_OF /* @min:%2eindexOf */](\"/next/\") !== -1) {\r\n src += \"-next\";\r\n }\r\n else if (url[_DYN_INDEX_OF /* @min:%2eindexOf */](\"/beta/\") !== -1) {\r\n src += \"-beta\";\r\n }\r\n }\r\n _internalSdkSrc = src + (isModule ? \".mod\" : \"\");\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n }\r\n})();\r\n//# sourceMappingURL=Initialization.js.map","/**\r\n* PropertiesPlugin.ts\r\n* @copyright Microsoft 2018\r\n*/\r\nimport { __extends } from \"tslib\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { BreezeChannelIdentifier, PageView, PropertiesPluginIdentifier, createDistributedTraceContextFromTrace } from \"@microsoft/applicationinsights-common\";\r\nimport { BaseTelemetryPlugin, _InternalLogMessage, _logInternalMessage, createProcessTelemetryContext, getNavigator, getSetValue, isNullOrUndefined, objForEachKey } from \"@microsoft/applicationinsights-core-js\";\r\nimport { TelemetryContext } from \"./TelemetryContext\";\r\nimport { _DYN_ACCOUNT_ID, _DYN_APPLY_APPLICATION_CO1, _DYN_APPLY_DEVICE_CONTEXT, _DYN_APPLY_INTERNAL_CONTE5, _DYN_APPLY_LOCATION_CONTE4, _DYN_APPLY_OPERATING_SYST3, _DYN_APPLY_OPERATION_CONT2, _DYN_APPLY_SESSION_CONTEX0, _DYN_APPLY_USER_CONTEXT, _DYN_COOKIE_DOMAIN, _DYN_GET_NEW_ID, _DYN_GET_SESSION_ID, _DYN_GET_TRACE_CTX, _DYN_ID_LENGTH, _DYN_IS_NEW_USER, _DYN_IS_USER_COOKIE_SET, _DYN_NAME_PREFIX, _DYN_SDK_EXTENSION, _DYN_SESSION_COOKIE_POSTF6, _DYN_SESSION_MANAGER, _DYN_TELEMETRY_TRACE, _DYN_UPDATE, _DYN_USER_COOKIE_POSTFIX } from \"./__DynamicConstants\";\r\nvar PropertiesPlugin = /** @class */ (function (_super) {\r\n __extends(PropertiesPlugin, _super);\r\n function PropertiesPlugin() {\r\n var _this = _super.call(this) || this;\r\n _this.priority = 110;\r\n _this.identifier = PropertiesPluginIdentifier;\r\n var _extensionConfig;\r\n var _distributedTraceCtx;\r\n var _previousTraceCtx;\r\n dynamicProto(PropertiesPlugin, _this, function (_self, _base) {\r\n _initDefaults();\r\n _self.initialize = function (config, core, extensions, pluginChain) {\r\n _base.initialize(config, core, extensions, pluginChain);\r\n _populateDefaults(config);\r\n };\r\n /**\r\n * Add Part A fields to the event\r\n * @param event The event that needs to be processed\r\n */\r\n _self.processTelemetry = function (event, itemCtx) {\r\n if (isNullOrUndefined(event)) {\r\n // TODO(barustum): throw an internal event once we have support for internal logging\r\n }\r\n else {\r\n itemCtx = _self._getTelCtx(itemCtx);\r\n // If the envelope is PageView, reset the internal message count so that we can send internal telemetry for the new page.\r\n if (event.name === PageView.envelopeType) {\r\n itemCtx.diagLog().resetInternalMessageCount();\r\n }\r\n var theContext = (_self.context || {});\r\n if (theContext.session) {\r\n // If customer did not provide custom session id update the session manager\r\n if (typeof _self.context.session.id !== \"string\" && theContext[_DYN_SESSION_MANAGER /* @min:%2esessionManager */]) {\r\n theContext[_DYN_SESSION_MANAGER /* @min:%2esessionManager */][_DYN_UPDATE /* @min:%2eupdate */]();\r\n }\r\n }\r\n var userCtx = theContext.user;\r\n if (userCtx && !userCtx[_DYN_IS_USER_COOKIE_SET /* @min:%2eisUserCookieSet */]) {\r\n userCtx[_DYN_UPDATE /* @min:%2eupdate */](theContext.user.id);\r\n }\r\n _processTelemetryInternal(event, itemCtx);\r\n if (userCtx && userCtx[_DYN_IS_NEW_USER /* @min:%2eisNewUser */]) {\r\n userCtx[_DYN_IS_NEW_USER /* @min:%2eisNewUser */] = false;\r\n var message = new _InternalLogMessage(72 /* _eInternalMessageId.SendBrowserInfoOnUserInit */, ((getNavigator() || {}).userAgent || \"\"));\r\n _logInternalMessage(itemCtx.diagLog(), 1 /* eLoggingSeverity.CRITICAL */, message);\r\n }\r\n _self.processNext(event, itemCtx);\r\n }\r\n };\r\n _self._doTeardown = function (unloadCtx, unloadState) {\r\n var core = (unloadCtx || {}).core();\r\n if (core && core[_DYN_GET_TRACE_CTX /* @min:%2egetTraceCtx */]) {\r\n var traceCtx = core[_DYN_GET_TRACE_CTX /* @min:%2egetTraceCtx */](false);\r\n if (traceCtx === _distributedTraceCtx) {\r\n core.setTraceCtx(_previousTraceCtx);\r\n }\r\n }\r\n _initDefaults();\r\n };\r\n function _initDefaults() {\r\n _extensionConfig = null;\r\n _distributedTraceCtx = null;\r\n _previousTraceCtx = null;\r\n }\r\n function _populateDefaults(config) {\r\n var identifier = _self.identifier;\r\n var core = _self.core;\r\n var ctx = createProcessTelemetryContext(null, config, core);\r\n var defaultConfig = PropertiesPlugin.getDefaultConfig();\r\n _extensionConfig = _extensionConfig || {};\r\n objForEachKey(defaultConfig, function (field, value) {\r\n _extensionConfig[field] = function () { return ctx.getConfig(identifier, field, value()); };\r\n });\r\n _previousTraceCtx = core[_DYN_GET_TRACE_CTX /* @min:%2egetTraceCtx */](false);\r\n _self.context = new TelemetryContext(core, _extensionConfig, _previousTraceCtx);\r\n _distributedTraceCtx = createDistributedTraceContextFromTrace(_self.context[_DYN_TELEMETRY_TRACE /* @min:%2etelemetryTrace */], _previousTraceCtx);\r\n core.setTraceCtx(_distributedTraceCtx);\r\n _self.context.appId = function () {\r\n var breezeChannel = core.getPlugin(BreezeChannelIdentifier);\r\n return breezeChannel ? breezeChannel.plugin[\"_appId\"] : null;\r\n };\r\n // Test hook to allow accessing the internal values -- explicitly not defined as an available property on the class\r\n _self[\"_extConfig\"] = _extensionConfig;\r\n }\r\n function _processTelemetryInternal(evt, itemCtx) {\r\n // Set Part A fields\r\n getSetValue(evt, \"tags\", []);\r\n getSetValue(evt, \"ext\", {});\r\n var ctx = _self.context;\r\n ctx[_DYN_APPLY_SESSION_CONTEX0 /* @min:%2eapplySessionContext */](evt, itemCtx);\r\n ctx[_DYN_APPLY_APPLICATION_CO1 /* @min:%2eapplyApplicationContext */](evt, itemCtx);\r\n ctx[_DYN_APPLY_DEVICE_CONTEXT /* @min:%2eapplyDeviceContext */](evt, itemCtx);\r\n ctx[_DYN_APPLY_OPERATION_CONT2 /* @min:%2eapplyOperationContext */](evt, itemCtx);\r\n ctx[_DYN_APPLY_USER_CONTEXT /* @min:%2eapplyUserContext */](evt, itemCtx);\r\n ctx[_DYN_APPLY_OPERATING_SYST3 /* @min:%2eapplyOperatingSystemContxt */](evt, itemCtx);\r\n ctx.applyWebContext(evt, itemCtx);\r\n ctx[_DYN_APPLY_LOCATION_CONTE4 /* @min:%2eapplyLocationContext */](evt, itemCtx); // legacy tags\r\n ctx[_DYN_APPLY_INTERNAL_CONTE5 /* @min:%2eapplyInternalContext */](evt, itemCtx); // legacy tags\r\n ctx.cleanUp(evt, itemCtx);\r\n }\r\n });\r\n return _this;\r\n }\r\n PropertiesPlugin.getDefaultConfig = function () {\r\n var _a;\r\n var defaultValue;\r\n var nullValue = null;\r\n var defaultConfig = (_a = {\r\n instrumentationKey: function () { return defaultValue; }\r\n },\r\n _a[_DYN_ACCOUNT_ID /* @min:accountId */] = function () { return nullValue; },\r\n _a.sessionRenewalMs = function () { return 30 * 60 * 1000; },\r\n _a.samplingPercentage = function () { return 100; },\r\n _a.sessionExpirationMs = function () { return 24 * 60 * 60 * 1000; },\r\n _a[_DYN_COOKIE_DOMAIN /* @min:cookieDomain */] = function () { return nullValue; },\r\n _a[_DYN_SDK_EXTENSION /* @min:sdkExtension */] = function () { return nullValue; },\r\n _a.isBrowserLinkTrackingEnabled = function () { return false; },\r\n _a.appId = function () { return nullValue; },\r\n _a[_DYN_GET_SESSION_ID /* @min:getSessionId */] = function () { return nullValue; },\r\n _a[_DYN_NAME_PREFIX /* @min:namePrefix */] = function () { return defaultValue; },\r\n _a[_DYN_SESSION_COOKIE_POSTF6 /* @min:sessionCookiePostfix */] = function () { return defaultValue; },\r\n _a[_DYN_USER_COOKIE_POSTFIX /* @min:userCookiePostfix */] = function () { return defaultValue; },\r\n _a[_DYN_ID_LENGTH /* @min:idLength */] = function () { return 22; },\r\n _a[_DYN_GET_NEW_ID /* @min:getNewId */] = function () { return nullValue; },\r\n _a);\r\n return defaultConfig;\r\n };\r\n PropertiesPlugin.prototype.initialize = function (config, core, extensions, pluginChain) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Add Part A fields to the event\r\n * @param event The event that needs to be processed\r\n */\r\n PropertiesPlugin.prototype.processTelemetry = function (event, itemCtx) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n return PropertiesPlugin;\r\n}(BaseTelemetryPlugin));\r\nexport default PropertiesPlugin;\r\n//# sourceMappingURL=PropertiesPlugin.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Generally you should only put values that are used more than 2 times and then only if not already exposed as a constant (such as SdkCoreNames)\r\n// as when using \"short\" named values from here they will be will be minified smaller than the SdkCoreNames[eSdkCoreNames.xxxx] value.\r\nvar _AUTHENTICATED_USER_CONTEXT = \"AuthenticatedUserContext\";\r\nvar _TRACK = \"track\";\r\nexport var STR_EMPTY = \"\";\r\nexport var STR_SNIPPET = \"snippet\";\r\nexport var STR_GET_COOKIE_MGR = \"getCookieMgr\";\r\nexport var STR_START_TRACK_PAGE = \"startTrackPage\";\r\nexport var STR_STOP_TRACK_PAGE = \"stopTrackPage\";\r\nexport var STR_FLUSH = \"flush\";\r\nexport var STR_START_TRACK_EVENT = \"startTrackEvent\";\r\nexport var STR_STOP_TRACK_EVENT = \"stopTrackEvent\";\r\nexport var STR_ADD_TELEMETRY_INITIALIZER = \"addTelemetryInitializer\";\r\nexport var STR_ADD_TELEMETRY_INITIALIZERS = STR_ADD_TELEMETRY_INITIALIZER + \"s\";\r\nexport var STR_POLL_INTERNAL_LOGS = \"pollInternalLogs\";\r\nexport var STR_GET_PLUGIN = \"getPlugin\";\r\nexport var STR_EVT_NAMESPACE = \"evtNamespace\";\r\nexport var STR_TRACK_EVENT = _TRACK + \"Event\";\r\nexport var STR_TRACK_TRACE = _TRACK + \"Trace\";\r\nexport var STR_TRACK_METRIC = _TRACK + \"Metric\";\r\nexport var STR_TRACK_PAGE_VIEW = _TRACK + \"PageView\";\r\nexport var STR_TRACK_EXCEPTION = _TRACK + \"Exception\";\r\nexport var STR_TRACK_DEPENDENCY_DATA = _TRACK + \"DependencyData\";\r\nexport var STR_SET_AUTHENTICATED_USER_CONTEXT = \"set\" + _AUTHENTICATED_USER_CONTEXT;\r\nexport var STR_CLEAR_AUTHENTICATED_USER_CONTEXT = \"clear\" + _AUTHENTICATED_USER_CONTEXT;\r\n//# sourceMappingURL=InternalConstants.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n// @skip-file-minify\r\n// ##############################################################\r\n// AUTO GENERATED FILE: This file is Auto Generated during build.\r\n// ##############################################################\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\nexport var _DYN_UPDATE_SNIPPET_DEFIN0 = \"updateSnippetDefinitions\"; // Count: 4\r\nexport var _DYN_LOAD_APP_INSIGHTS = \"loadAppInsights\"; // Count: 4\r\nexport var _DYN_ENDPOINT_URL = \"endpointUrl\"; // Count: 4\r\nexport var _DYN_MAX_BATCH_SIZE_IN_BY1 = \"maxBatchSizeInBytes\"; // Count: 3\r\nexport var _DYN_MAX_BATCH_INTERVAL = \"maxBatchInterval\"; // Count: 3\r\nexport var _DYN_DISABLE_EXCEPTION_TR2 = \"disableExceptionTracking\"; // Count: 2\r\nexport var _DYN_DISABLE_TELEMETRY = \"disableTelemetry\"; // Count: 2\r\nexport var _DYN_EMIT_LINE_DELIMITED_3 = \"emitLineDelimitedJson\"; // Count: 2\r\nexport var _DYN_DIAGNOSTIC_LOG_INTER4 = \"diagnosticLogInterval\"; // Count: 6\r\nexport var _DYN_AUTO_TRACK_PAGE_VISI5 = \"autoTrackPageVisitTime\"; // Count: 2\r\nexport var _DYN_SAMPLING_PERCENTAGE = \"samplingPercentage\"; // Count: 4\r\nexport var _DYN_DISABLE_AJAX_TRACKIN6 = \"disableAjaxTracking\"; // Count: 2\r\nexport var _DYN_MAX_AJAX_CALLS_PER_V7 = \"maxAjaxCallsPerView\"; // Count: 3\r\nexport var _DYN_IS_BEACON_API_DISABL8 = \"isBeaconApiDisabled\"; // Count: 2\r\nexport var _DYN_DISABLE_CORRELATION_9 = \"disableCorrelationHeaders\"; // Count: 2\r\nexport var _DYN_CORRELATION_HEADER_E10 = \"correlationHeaderExcludedDomains\"; // Count: 2\r\nexport var _DYN_DISABLE_FLUSH_ON_BEF11 = \"disableFlushOnBeforeUnload\"; // Count: 4\r\nexport var _DYN_DISABLE_FLUSH_ON_UNL12 = \"disableFlushOnUnload\"; // Count: 3\r\nexport var _DYN_ENABLE_SESSION_STORA13 = \"enableSessionStorageBuffer\"; // Count: 2\r\nexport var _DYN_IS_COOKIE_USE_DISABL14 = \"isCookieUseDisabled\"; // Count: 2\r\nexport var _DYN_IS_STORAGE_USE_DISAB15 = \"isStorageUseDisabled\"; // Count: 2\r\nexport var _DYN_IS_BROWSER_LINK_TRAC16 = \"isBrowserLinkTrackingEnabled\"; // Count: 2\r\nexport var _DYN_ENABLE_CORS_CORRELAT17 = \"enableCorsCorrelation\"; // Count: 2\r\nexport var _DYN_CONFIG = \"config\"; // Count: 6\r\nexport var _DYN_CONTEXT = \"context\"; // Count: 8\r\nexport var _DYN_PUSH = \"push\"; // Count: 5\r\nexport var _DYN_VERSION = \"version\"; // Count: 6\r\nexport var _DYN_QUEUE = \"queue\"; // Count: 6\r\nexport var _DYN_CONNECTION_STRING = \"connectionString\"; // Count: 3\r\nexport var _DYN_INSTRUMENTATION_KEY = \"instrumentationKey\"; // Count: 2\r\nexport var _DYN_APP_INSIGHTS = \"appInsights\"; // Count: 3\r\nexport var _DYN_DISABLE_IKEY_DEPRECA18 = \"disableIkeyDeprecationMessage\"; // Count: 2\r\nexport var _DYN_GET_TRANSMISSION_CON19 = \"getTransmissionControls\"; // Count: 2\r\nexport var _DYN_ONUNLOAD_FLUSH = \"onunloadFlush\"; // Count: 6\r\nexport var _DYN_ADD_HOUSEKEEPING_BEF20 = \"addHousekeepingBeforeUnload\"; // Count: 2\r\nexport var _DYN_INDEX_OF = \"indexOf\"; // Count: 4\r\n//# sourceMappingURL=__DynamicConstants.js.map","/**\r\n* ReactPlugin.ts\r\n* @copyright Microsoft 2019\r\n*/\r\nimport { __extends } from \"tslib\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { BaseTelemetryPlugin, _throwInternal, arrForEach, isFunction, objDefineAccessors, proxyFunctions, safeGetCookieMgr } from \"@microsoft/applicationinsights-core-js\";\r\nvar ReactPlugin = /** @class */ (function (_super) {\r\n __extends(ReactPlugin, _super);\r\n function ReactPlugin() {\r\n var _this = _super.call(this) || this;\r\n _this.priority = 185;\r\n _this.identifier = 'ReactPlugin';\r\n var _analyticsPlugin;\r\n var _extensionConfig;\r\n var _unlisten;\r\n var _pageViewTimer;\r\n dynamicProto(ReactPlugin, _this, function (_self, _base) {\r\n _initDefaults();\r\n _self.initialize = function (config, core, extensions, pluginChain) {\r\n _super.prototype.initialize.call(_this, config, core, extensions, pluginChain);\r\n _extensionConfig =\r\n config.extensionConfig && config.extensionConfig[_self.identifier]\r\n ? config.extensionConfig[_self.identifier]\r\n : { history: null };\r\n arrForEach(extensions, function (ext) {\r\n var identifier = ext.identifier;\r\n if (identifier === 'ApplicationInsightsAnalytics') {\r\n _analyticsPlugin = ext;\r\n }\r\n });\r\n if (_extensionConfig.history) {\r\n _addHistoryListener(_extensionConfig.history);\r\n var pageViewTelemetry = {\r\n uri: _extensionConfig.history.location.pathname\r\n };\r\n _self.trackPageView(pageViewTelemetry);\r\n }\r\n };\r\n _self.getCookieMgr = function () {\r\n return safeGetCookieMgr(_self.core);\r\n };\r\n _self.getAppInsights = _getAnalytics;\r\n _self.processTelemetry = function (event, itemCtx) {\r\n _self.processNext(event, itemCtx);\r\n };\r\n _self._doTeardown = function (unloadCtx, unloadState, asyncCallback) {\r\n if (isFunction(_unlisten)) {\r\n _unlisten();\r\n }\r\n if (_pageViewTimer) {\r\n clearTimeout(_pageViewTimer);\r\n }\r\n _initDefaults();\r\n };\r\n // Proxy the analytics functions\r\n proxyFunctions(_self, _getAnalytics, [\r\n \"trackMetric\",\r\n \"trackPageView\",\r\n \"trackEvent\",\r\n \"trackException\",\r\n \"trackTrace\",\r\n ]);\r\n function _initDefaults() {\r\n _analyticsPlugin = null;\r\n _extensionConfig = null;\r\n _unlisten = null;\r\n _pageViewTimer = null;\r\n }\r\n function _getAnalytics() {\r\n if (!_analyticsPlugin) {\r\n _throwInternal(_self.diagLog(), 1 /* eLoggingSeverity.CRITICAL */, 64 /* _eInternalMessageId.TelemetryInitializerFailed */, \"Analytics plugin is not available, React plugin telemetry will not be sent: \");\r\n }\r\n return _analyticsPlugin;\r\n }\r\n function _addHistoryListener(history) {\r\n var locationListener = function (arg) {\r\n // v4 of the history API passes \"location\" as the first argument, while v5 passes an object that contains location and action \r\n var locn = null;\r\n if (\"location\" in arg) {\r\n // Looks like v5\r\n locn = arg[\"location\"];\r\n }\r\n else {\r\n locn = arg;\r\n }\r\n // Timeout to ensure any changes to the DOM made by route changes get included in pageView telemetry\r\n _pageViewTimer = setTimeout(function () {\r\n _pageViewTimer = null;\r\n var pageViewTelemetry = { uri: locn.pathname };\r\n _self.trackPageView(pageViewTelemetry);\r\n }, 500);\r\n };\r\n _unlisten = history.listen(locationListener);\r\n }\r\n objDefineAccessors(_self, \"_extensionConfig\", function () { return _extensionConfig; });\r\n });\r\n return _this;\r\n }\r\n ReactPlugin.prototype.initialize = function (config, core, extensions, pluginChain) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n /**\r\n * Get the current cookie manager for this instance\r\n */\r\n ReactPlugin.prototype.getCookieMgr = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n /**\r\n * Get application insights instance.\r\n */\r\n ReactPlugin.prototype.getAppInsights = function () {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n return null;\r\n };\r\n /**\r\n * Add Part A fields to the event\r\n * @param event The event that needs to be processed\r\n */\r\n ReactPlugin.prototype.processTelemetry = function (event, itemCtx) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n ReactPlugin.prototype.trackMetric = function (metric, customProperties) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n ReactPlugin.prototype.trackPageView = function (pageView) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n ReactPlugin.prototype.trackEvent = function (event, customProperties) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n ReactPlugin.prototype.trackException = function (exception, customProperties) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n ReactPlugin.prototype.trackTrace = function (trace, customProperties) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n };\r\n return ReactPlugin;\r\n}(BaseTelemetryPlugin));\r\nexport default ReactPlugin;\r\n//# sourceMappingURL=ReactPlugin.js.map","import React from \"react\";\r\nimport { Stack, Card, Container, Row, Col } from \"react-bootstrap\";\r\nimport { CircularProgressbar, buildStyles } from 'react-circular-progressbar';\r\nimport \"react-circular-progressbar/dist/styles.css\";\r\nimport \"./ProgressTile.css\";\r\n\r\nexport enum ProgressTileSize {\r\n Small = 1,\r\n Medium = 2,\r\n Large = 3,\r\n Document = 4,\r\n XSmall = 5\r\n}\r\n\r\nexport class ProgressTile extends React.Component<any, any> {\r\n progressTilePercentage: string;\r\n progressTileInitials: string;\r\n progressTileHeader: string;\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.state = { percent: this.props.percent ?? 0 };\r\n\r\n if (this.props.progressTileSize == ProgressTileSize.XSmall) {\r\n this.progressTilePercentage = \"progress-tile-percentage-xsmall\";\r\n this.progressTileInitials = \"progress-tile-initials-small\";\r\n this.progressTileHeader = \"progress-tile-header-small\";\r\n } else if (this.props.progressTileSize == ProgressTileSize.Small) {\r\n this.progressTilePercentage = \"progress-tile-percentage-small\";\r\n this.progressTileInitials = \"progress-tile-initials-small\";\r\n this.progressTileHeader = \"progress-tile-header-small\";\r\n } else if (this.props.progressTileSize == ProgressTileSize.Medium) {\r\n this.progressTilePercentage = \"progress-tile-percentage-medium\";\r\n this.progressTileInitials = \"progress-tile-initials-medium\";\r\n this.progressTileHeader = \"progress-tile-header-medium\";\r\n } else if (this.props.progressTileSize == ProgressTileSize.Large) {\r\n this.progressTilePercentage = this.state.percent >= 100 ? \"progress-tile-percentage-large-done\" : \"progress-tile-percentage-large\";\r\n //this.progressTilePercentage = \"shadow-tile\";\r\n this.progressTileInitials = \"progress-tile-initials-large\";\r\n this.progressTileHeader = \"progress-tile-header-large\";\r\n } else if (this.props.progressTileSize == ProgressTileSize.Document) {\r\n this.progressTilePercentage = \"progress-tile-percentage-document\";\r\n this.progressTileInitials = \"progress-tile-initials-document\";\r\n this.progressTileHeader = \"progress-tile-header-document\";\r\n }\r\n }\r\n\r\n componentDidUpdate() {\r\n if (this.state.percent != this.props.percent) {\r\n setTimeout(() => { this.setState({ percent: this.props.percent }) }, 500);\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n if (this.state.percent != this.props.percent) {\r\n setTimeout(() => { this.setState({ percent: this.props.percent }) }, 500);\r\n }\r\n }\r\n\r\n getTilePercentageStyle() {\r\n if (this.props.progressTileSize == ProgressTileSize.XSmall) {\r\n return \"progress-tile-percentage-xsmall\";\r\n } else if (this.props.progressTileSize == ProgressTileSize.Small) {\r\n return \"progress-tile-percentage-small\";\r\n } else if (this.props.progressTileSize == ProgressTileSize.Medium) {\r\n return \"progress-tile-percentage-medium\";\r\n } else if (this.props.progressTileSize == ProgressTileSize.Large) {\r\n return this.state.percent >= 100 ? \"progress-tile-percentage-large-done\" : (this.state.percent === 0 ? \"progress-tile-percentage-large-notstarted\" : \"progress-tile-percentage-large\");\r\n }\r\n return \"progress-tile-percentage-document\";\r\n }\r\n\r\n getColor(error?: boolean | null) {\r\n if ((this.props.progressTileSize == ProgressTileSize.XSmall || this.props.progressTileSize == ProgressTileSize.Small) && !error)\r\n return this.state.percent < 100 ? 'var(--sage)' : 'var(--chartreuse)';\r\n return error ? \"'#DE4300\" : (this.state.percent === 0 ? \"var(--teal)\" : this.state.percent < 100 ? \"var(--sage)\" : \"var(--chartreuse)\");\r\n }\r\n\r\n getTextColor(error?: boolean | null) {\r\n if (this.props.progressTileSize == ProgressTileSize.Small && this.props.percent === 0)\r\n return 'var(--teal)';\r\n if (this.props.progressTileSize == ProgressTileSize.Small && this.props.percent !== 100)\r\n return 'var(--teal)';\r\n return error ? \"'#DE4300\" : ((this.props.percent === 0 && (this.props.alwaysShowAsStarted??false) === false) ? \"white\" : this.props.percent < 100 ? \"var(--teal)\" : \"var(--teal)\");\r\n }\r\n\r\n getBackColor() {\r\n if (this.props.progressTileSize == ProgressTileSize.XSmall)\r\n return 'var(--limestone)';\r\n if (this.props.progressTileSize == ProgressTileSize.Small && this.props.percent !== 100)\r\n return 'transparent';\r\n return this.props.percent === 0 ? 'var(--teal)' : (this.props.percent >= 100 ? 'var(--chartreuse)' : 'var(--sage)');\r\n }\r\n\r\n Percentage(color?: string | null) {\r\n let strokeWidth = (this.props.progressTileSize === ProgressTileSize.XSmall ? 18 : (this.props.progressTileSize === ProgressTileSize.Large ? 7 : 10));\r\n \r\n return (\r\n <div className={`${this.getTilePercentageStyle()} ${this.props.className}`}>\r\n {\r\n this.props.step && \r\n <div className={`percentage-step ${this.state.percent || this.props.alwaysShowAsStarted ? (this.state.percent === 100 ? \" progresscomplete-bg\" : \" inprogress-bg\") : \"\"}`}>{this.props.step!.toString()}</div>\r\n }\r\n \r\n </div>);\r\n }\r\n\r\n render() {\r\n const { text, title, error } = this.props;\r\n let color = this.getColor(error);\r\n let textcolor = this.getTextColor(error);\r\n//nav-header\r\n return (\r\n <Stack style={{ alignItems: \"center\" }} onClick={this.props.onClick} className={`pointer progresstile text-start ${this.props.selected ? \"categoryselected\" : \"\"}`}>\r\n <div>\r\n <div className={`${this.getTilePercentageStyle()} ${this.props.className}`}>\r\n <Row>\r\n <Col xs={7} className=\"pt-col\">\r\n <Stack style={{color: textcolor}}>\r\n <h1 className={`${this.props.percent === 0 ? 'notstarted' : ''}`}>{this.props.percent > 100 ? 100 : this.props.percent}%</h1>\r\n <p>{this.props.title}</p>\r\n <p className={`progresscomplete ${this.props.percent === 0 ? 'notstarted' : (this.props.percent < 100 ? 'inprogress' : '')}`}>{this.props.duration}</p>\r\n </Stack>\r\n </Col>\r\n <Col xs={5} className=\"pt-col\" style={{marginLeft: -10}}>\r\n {this.props.icon}\r\n </Col>\r\n </Row>\r\n {\r\n this.props.step && \r\n <div className={`percentage-step ${this.state.percent || this.props.alwaysShowAsStarted ? (this.state.percent === 100 ? \" progresscomplete-bg\" : \" inprogress-bg\") : \"\"}`}>{this.props.step!.toString()}</div>\r\n } \r\n </div>\r\n </div>\r\n </Stack>\r\n );\r\n }\r\n}","import { ApplicationInsights } from '@microsoft/applicationinsights-web';\r\nimport { ReactPlugin } from '@microsoft/applicationinsights-react-js';\r\n\r\nconst reactPlugin = new ReactPlugin();\r\nconst appInsightsHelper = {\r\n appInsights: null,\r\n init() {\r\n this.appInsights = new ApplicationInsights( {\r\n config: {\r\n connectionString: \"InstrumentationKey=d0bbf4ba-5013-4bbb-9f36-cee4b27bd8fb;IngestionEndpoint=https://northeurope-2.in.applicationinsights.azure.com/;LiveEndpoint=https://northeurope.livediagnostics.monitor.azure.com/\",\r\n enableAutoRouteTracking: true,\r\n extensions: [ reactPlugin ]\r\n }\r\n } );\r\n this.appInsights.loadAppInsights();\r\n },\r\n trackPageView( data ) {\r\n if ( this.appInsights != null ) {\r\n this.appInsights.trackPageView( data );\r\n }\r\n }\r\n}\r\n\r\nexport { reactPlugin, appInsightsHelper };\r\n\r\nlet p = process.env.REACT_APP_ENABLE_APPLICATION_INSIGHTS;\r\nif(p !== undefined && p === \"1\") {\r\n appInsightsHelper.init(); \r\n}\r\n","import canUseDOM from './canUseDOM';\nvar size;\nexport default function scrollbarSize(recalc) {\n if (!size && size !== 0 || recalc) {\n if (canUseDOM) {\n var scrollDiv = document.createElement('div');\n scrollDiv.style.position = 'absolute';\n scrollDiv.style.top = '-9999px';\n scrollDiv.style.width = '50px';\n scrollDiv.style.height = '50px';\n scrollDiv.style.overflow = 'scroll';\n document.body.appendChild(scrollDiv);\n size = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n }\n }\n\n return size;\n}","import createWithBsPrefix from './createWithBsPrefix';\nexport default createWithBsPrefix('modal-body');","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst ModalDialog = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n contentClassName,\n centered,\n size,\n fullscreen,\n children,\n scrollable,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'modal');\n const dialogClass = `${bsPrefix}-dialog`;\n const fullScreenClass = typeof fullscreen === 'string' ? `${bsPrefix}-fullscreen-${fullscreen}` : `${bsPrefix}-fullscreen`;\n return /*#__PURE__*/_jsx(\"div\", { ...props,\n ref: ref,\n className: classNames(dialogClass, className, size && `${bsPrefix}-${size}`, centered && `${dialogClass}-centered`, scrollable && `${dialogClass}-scrollable`, fullscreen && fullScreenClass),\n children: /*#__PURE__*/_jsx(\"div\", {\n className: classNames(`${bsPrefix}-content`, contentClassName),\n children: children\n })\n });\n});\nModalDialog.displayName = 'ModalDialog';\nexport default ModalDialog;","import createWithBsPrefix from './createWithBsPrefix';\nexport default createWithBsPrefix('modal-footer');","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport AbstractModalHeader from './AbstractModalHeader';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultProps = {\n closeLabel: 'Close',\n closeButton: false\n};\nconst ModalHeader = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'modal-header');\n return /*#__PURE__*/_jsx(AbstractModalHeader, {\n ref: ref,\n ...props,\n className: classNames(className, bsPrefix)\n });\n});\nModalHeader.displayName = 'ModalHeader';\nModalHeader.defaultProps = defaultProps;\nexport default ModalHeader;","import createWithBsPrefix from './createWithBsPrefix';\nimport divWithClassName from './divWithClassName';\nconst DivStyledAsH4 = divWithClassName('h4');\nexport default createWithBsPrefix('modal-title', {\n Component: DivStyledAsH4\n});","import classNames from 'classnames';\nimport addEventListener from 'dom-helpers/addEventListener';\nimport canUseDOM from 'dom-helpers/canUseDOM';\nimport ownerDocument from 'dom-helpers/ownerDocument';\nimport removeEventListener from 'dom-helpers/removeEventListener';\nimport getScrollbarSize from 'dom-helpers/scrollbarSize';\nimport useCallbackRef from '@restart/hooks/useCallbackRef';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport useWillUnmount from '@restart/hooks/useWillUnmount';\nimport transitionEnd from 'dom-helpers/transitionEnd';\nimport * as React from 'react';\nimport { useCallback, useMemo, useRef, useState } from 'react';\nimport BaseModal from '@restart/ui/Modal';\nimport { getSharedManager } from './BootstrapModalManager';\nimport Fade from './Fade';\nimport ModalBody from './ModalBody';\nimport ModalContext from './ModalContext';\nimport ModalDialog from './ModalDialog';\nimport ModalFooter from './ModalFooter';\nimport ModalHeader from './ModalHeader';\nimport ModalTitle from './ModalTitle';\nimport { useBootstrapPrefix, useIsRTL } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultProps = {\n show: false,\n backdrop: true,\n keyboard: true,\n autoFocus: true,\n enforceFocus: true,\n restoreFocus: true,\n animation: true,\n dialogAs: ModalDialog\n};\n/* eslint-disable no-use-before-define, react/no-multi-comp */\n\nfunction DialogTransition(props) {\n return /*#__PURE__*/_jsx(Fade, { ...props,\n timeout: null\n });\n}\n\nfunction BackdropTransition(props) {\n return /*#__PURE__*/_jsx(Fade, { ...props,\n timeout: null\n });\n}\n/* eslint-enable no-use-before-define */\n\n\nconst Modal = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n style,\n dialogClassName,\n contentClassName,\n children,\n dialogAs: Dialog,\n 'aria-labelledby': ariaLabelledby,\n 'aria-describedby': ariaDescribedby,\n 'aria-label': ariaLabel,\n\n /* BaseModal props */\n show,\n animation,\n backdrop,\n keyboard,\n onEscapeKeyDown,\n onShow,\n onHide,\n container,\n autoFocus,\n enforceFocus,\n restoreFocus,\n restoreFocusOptions,\n onEntered,\n onExit,\n onExiting,\n onEnter,\n onEntering,\n onExited,\n backdropClassName,\n manager: propsManager,\n ...props\n}, ref) => {\n const [modalStyle, setStyle] = useState({});\n const [animateStaticModal, setAnimateStaticModal] = useState(false);\n const waitingForMouseUpRef = useRef(false);\n const ignoreBackdropClickRef = useRef(false);\n const removeStaticModalAnimationRef = useRef(null);\n const [modal, setModalRef] = useCallbackRef();\n const mergedRef = useMergedRefs(ref, setModalRef);\n const handleHide = useEventCallback(onHide);\n const isRTL = useIsRTL();\n bsPrefix = useBootstrapPrefix(bsPrefix, 'modal');\n const modalContext = useMemo(() => ({\n onHide: handleHide\n }), [handleHide]);\n\n function getModalManager() {\n if (propsManager) return propsManager;\n return getSharedManager({\n isRTL\n });\n }\n\n function updateDialogStyle(node) {\n if (!canUseDOM) return;\n const containerIsOverflowing = getModalManager().getScrollbarWidth() > 0;\n const modalIsOverflowing = node.scrollHeight > ownerDocument(node).documentElement.clientHeight;\n setStyle({\n paddingRight: containerIsOverflowing && !modalIsOverflowing ? getScrollbarSize() : undefined,\n paddingLeft: !containerIsOverflowing && modalIsOverflowing ? getScrollbarSize() : undefined\n });\n }\n\n const handleWindowResize = useEventCallback(() => {\n if (modal) {\n updateDialogStyle(modal.dialog);\n }\n });\n useWillUnmount(() => {\n removeEventListener(window, 'resize', handleWindowResize);\n removeStaticModalAnimationRef.current == null ? void 0 : removeStaticModalAnimationRef.current();\n }); // We prevent the modal from closing during a drag by detecting where the\n // the click originates from. If it starts in the modal and then ends outside\n // don't close.\n\n const handleDialogMouseDown = () => {\n waitingForMouseUpRef.current = true;\n };\n\n const handleMouseUp = e => {\n if (waitingForMouseUpRef.current && modal && e.target === modal.dialog) {\n ignoreBackdropClickRef.current = true;\n }\n\n waitingForMouseUpRef.current = false;\n };\n\n const handleStaticModalAnimation = () => {\n setAnimateStaticModal(true);\n removeStaticModalAnimationRef.current = transitionEnd(modal.dialog, () => {\n setAnimateStaticModal(false);\n });\n };\n\n const handleStaticBackdropClick = e => {\n if (e.target !== e.currentTarget) {\n return;\n }\n\n handleStaticModalAnimation();\n };\n\n const handleClick = e => {\n if (backdrop === 'static') {\n handleStaticBackdropClick(e);\n return;\n }\n\n if (ignoreBackdropClickRef.current || e.target !== e.currentTarget) {\n ignoreBackdropClickRef.current = false;\n return;\n }\n\n onHide == null ? void 0 : onHide();\n };\n\n const handleEscapeKeyDown = e => {\n if (!keyboard && backdrop === 'static') {\n // Call preventDefault to stop modal from closing in restart ui,\n // then play our animation.\n e.preventDefault();\n handleStaticModalAnimation();\n } else if (keyboard && onEscapeKeyDown) {\n onEscapeKeyDown(e);\n }\n };\n\n const handleEnter = (node, isAppearing) => {\n if (node) {\n updateDialogStyle(node);\n }\n\n onEnter == null ? void 0 : onEnter(node, isAppearing);\n };\n\n const handleExit = node => {\n removeStaticModalAnimationRef.current == null ? void 0 : removeStaticModalAnimationRef.current();\n onExit == null ? void 0 : onExit(node);\n };\n\n const handleEntering = (node, isAppearing) => {\n onEntering == null ? void 0 : onEntering(node, isAppearing); // FIXME: This should work even when animation is disabled.\n\n addEventListener(window, 'resize', handleWindowResize);\n };\n\n const handleExited = node => {\n if (node) node.style.display = ''; // RHL removes it sometimes\n\n onExited == null ? void 0 : onExited(node); // FIXME: This should work even when animation is disabled.\n\n removeEventListener(window, 'resize', handleWindowResize);\n };\n\n const renderBackdrop = useCallback(backdropProps => /*#__PURE__*/_jsx(\"div\", { ...backdropProps,\n className: classNames(`${bsPrefix}-backdrop`, backdropClassName, !animation && 'show')\n }), [animation, backdropClassName, bsPrefix]);\n const baseModalStyle = { ...style,\n ...modalStyle\n }; // If `display` is not set to block, autoFocus inside the modal fails\n // https://github.com/react-bootstrap/react-bootstrap/issues/5102\n\n baseModalStyle.display = 'block';\n\n const renderDialog = dialogProps => /*#__PURE__*/_jsx(\"div\", {\n role: \"dialog\",\n ...dialogProps,\n style: baseModalStyle,\n className: classNames(className, bsPrefix, animateStaticModal && `${bsPrefix}-static`),\n onClick: backdrop ? handleClick : undefined,\n onMouseUp: handleMouseUp,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledby,\n \"aria-describedby\": ariaDescribedby,\n children: /*#__PURE__*/_jsx(Dialog, { ...props,\n onMouseDown: handleDialogMouseDown,\n className: dialogClassName,\n contentClassName: contentClassName,\n children: children\n })\n });\n\n return /*#__PURE__*/_jsx(ModalContext.Provider, {\n value: modalContext,\n children: /*#__PURE__*/_jsx(BaseModal, {\n show: show,\n ref: mergedRef,\n backdrop: backdrop,\n container: container,\n keyboard: true // Always set true - see handleEscapeKeyDown\n ,\n autoFocus: autoFocus,\n enforceFocus: enforceFocus,\n restoreFocus: restoreFocus,\n restoreFocusOptions: restoreFocusOptions,\n onEscapeKeyDown: handleEscapeKeyDown,\n onShow: onShow,\n onHide: onHide,\n onEnter: handleEnter,\n onEntering: handleEntering,\n onEntered: onEntered,\n onExit: handleExit,\n onExiting: onExiting,\n onExited: handleExited,\n manager: getModalManager(),\n transition: animation ? DialogTransition : undefined,\n backdropTransition: animation ? BackdropTransition : undefined,\n renderBackdrop: renderBackdrop,\n renderDialog: renderDialog\n })\n });\n});\nModal.displayName = 'Modal';\nModal.defaultProps = defaultProps;\nexport default Object.assign(Modal, {\n Body: ModalBody,\n Header: ModalHeader,\n Title: ModalTitle,\n Footer: ModalFooter,\n Dialog: ModalDialog,\n TRANSITION_DURATION: 300,\n BACKDROP_TRANSITION_DURATION: 150\n});","import { PortalHelperTextModel } from \"./PortalHelperTextModel\";\r\n\r\nexport interface Field {\r\n name: string,\r\n label: string,\r\n dataType: DataType,\r\n controlType: ControlType,\r\n originalValue: string | number | undefined,\r\n value: string | number | undefined,\r\n dateValue: Date | null,\r\n isDirty: boolean,\r\n tooltip?: PortalHelperTextModel | null,\r\n options: FormOption[] | null, //list for optionsets\r\n lookupValues: FormLookupItem[] | null, //list for lookups //the same with optionsets now\r\n api: string | null,//to get lookup options\r\n handleChange?(e: any): void;\r\n //handleDateChange?(event: any): void;\r\n isPill: boolean | false;\r\n placeholder?: string | null;\r\n parts?: string[];\r\n minValue: any | undefined;\r\n maxValue: any | undefined;\r\n maxLength: number | undefined;\r\n optional: boolean;\r\n}\r\n\r\n// Need to see if we can implement as a class to have methods like getValue and a better handleChange\r\n// export class Field {\r\n// name: string;\r\n// label: string;\r\n// dataType: DataType;\r\n// controlType: ControlType;\r\n// originalValue: string | number | undefined;\r\n// value: string | number | undefined;\r\n// dateValue: Date | null;\r\n// isDirty: boolean;\r\n// tooltip?: PortalHelperTextModel | null;\r\n// options: FormOption[] | null; //list for optionsets\r\n// lookupValues: FormLookupItem[] | null; //list for lookups //the same with optionsets now\r\n// api: string | null;//to get lookup options\r\n// handleChange?(e: React.ChangeEvent): void;\r\n// handleDateChange?(event:any):void;\r\n// isPill: boolean | false;\r\n// placeholder?: string | null;\r\n// parts?: string[];\r\n\r\n// getFieldValue(doc: any) {\r\n// if (this.dataType === DataType.boolean) {\r\n// return convertToBool(doc[this.name] ? doc[this.name] : undefined);\r\n// }\r\n// return doc[this.name] ? doc[this.name] : undefined;\r\n// }\r\n// }\r\n\r\n\r\nexport interface FormOption {\r\n text: string,\r\n value: number\r\n}\r\n\r\nexport interface FormLookupItem {\r\n text: string,\r\n value: string,\r\n item: any\r\n}\r\n\r\nexport interface FormLookup {\r\n name: string,\r\n values: FormLookupItem[]\r\n}\r\n\r\nexport enum DataType {\r\n //guid = \"guid\",\r\n entityReference = \"entityRef\",\r\n string = \"string\",\r\n number = \"number\",\r\n date = \"date\",\r\n boolean = \"boolean\"\r\n}\r\n\r\nexport enum ControlType {\r\n text = \"text\",\r\n textarea = \"textarea\",\r\n date = \"date\",\r\n picklist = \"picklist\",\r\n lookup = \"lookup\",\r\n number = \"number\",\r\n numberWithControls = \"numberWithControls\",\r\n decimal = \"decimal\",\r\n currency = \"currency\"\r\n}\r\n","import classNames from 'classnames';\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst propTypes = {\n /**\n * Specify whether the feedback is for valid or invalid fields\n *\n * @type {('valid'|'invalid')}\n */\n type: PropTypes.string,\n\n /** Display feedback as a tooltip. */\n tooltip: PropTypes.bool,\n as: PropTypes.elementType\n};\nconst Feedback = /*#__PURE__*/React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n({\n as: Component = 'div',\n className,\n type = 'valid',\n tooltip = false,\n ...props\n}, ref) => /*#__PURE__*/_jsx(Component, { ...props,\n ref: ref,\n className: classNames(className, `${type}-${tooltip ? 'tooltip' : 'feedback'}`)\n}));\nFeedback.displayName = 'Feedback';\nFeedback.propTypes = propTypes;\nexport default Feedback;","import * as React from 'react'; // TODO\n\nconst FormContext = /*#__PURE__*/React.createContext({});\nexport default FormContext;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormCheckInput = /*#__PURE__*/React.forwardRef(({\n id,\n bsPrefix,\n className,\n type = 'checkbox',\n isValid = false,\n isInvalid = false,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'input',\n ...props\n}, ref) => {\n const {\n controlId\n } = useContext(FormContext);\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-check-input');\n return /*#__PURE__*/_jsx(Component, { ...props,\n ref: ref,\n type: type,\n id: id || controlId,\n className: classNames(className, bsPrefix, isValid && 'is-valid', isInvalid && 'is-invalid')\n });\n});\nFormCheckInput.displayName = 'FormCheckInput';\nexport default FormCheckInput;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormCheckLabel = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n htmlFor,\n ...props\n}, ref) => {\n const {\n controlId\n } = useContext(FormContext);\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-check-label');\n return /*#__PURE__*/_jsx(\"label\", { ...props,\n ref: ref,\n htmlFor: htmlFor || controlId,\n className: classNames(className, bsPrefix)\n });\n});\nFormCheckLabel.displayName = 'FormCheckLabel';\nexport default FormCheckLabel;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext, useMemo } from 'react';\nimport Feedback from './Feedback';\nimport FormCheckInput from './FormCheckInput';\nimport FormCheckLabel from './FormCheckLabel';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { hasChildOfType } from './ElementChildren';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst FormCheck = /*#__PURE__*/React.forwardRef(({\n id,\n bsPrefix,\n bsSwitchPrefix,\n inline = false,\n reverse = false,\n disabled = false,\n isValid = false,\n isInvalid = false,\n feedbackTooltip = false,\n feedback,\n feedbackType,\n className,\n style,\n title = '',\n type = 'checkbox',\n label,\n children,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as = 'input',\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-check');\n bsSwitchPrefix = useBootstrapPrefix(bsSwitchPrefix, 'form-switch');\n const {\n controlId\n } = useContext(FormContext);\n const innerFormContext = useMemo(() => ({\n controlId: id || controlId\n }), [controlId, id]);\n const hasLabel = !children && label != null && label !== false || hasChildOfType(children, FormCheckLabel);\n\n const input = /*#__PURE__*/_jsx(FormCheckInput, { ...props,\n type: type === 'switch' ? 'checkbox' : type,\n ref: ref,\n isValid: isValid,\n isInvalid: isInvalid,\n disabled: disabled,\n as: as\n });\n\n return /*#__PURE__*/_jsx(FormContext.Provider, {\n value: innerFormContext,\n children: /*#__PURE__*/_jsx(\"div\", {\n style: style,\n className: classNames(className, hasLabel && bsPrefix, inline && `${bsPrefix}-inline`, reverse && `${bsPrefix}-reverse`, type === 'switch' && bsSwitchPrefix),\n children: children || /*#__PURE__*/_jsxs(_Fragment, {\n children: [input, hasLabel && /*#__PURE__*/_jsx(FormCheckLabel, {\n title: title,\n children: label\n }), feedback && /*#__PURE__*/_jsx(Feedback, {\n type: feedbackType,\n tooltip: feedbackTooltip,\n children: feedback\n })]\n })\n })\n });\n});\nFormCheck.displayName = 'FormCheck';\nexport default Object.assign(FormCheck, {\n Input: FormCheckInput,\n Label: FormCheckLabel\n});","import * as React from 'react';\n/**\n * Iterates through children that are typically specified as `props.children`,\n * but only maps over children that are \"valid elements\".\n *\n * The mapFunction provided index will be normalised to the components mapped,\n * so an invalid component would not increase the index.\n *\n */\n\nfunction map(children, func) {\n let index = 0;\n return React.Children.map(children, child => /*#__PURE__*/React.isValidElement(child) ? func(child, index++) : child);\n}\n/**\n * Iterates through children that are \"valid elements\".\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child with the index reflecting the position relative to \"valid components\".\n */\n\n\nfunction forEach(children, func) {\n let index = 0;\n React.Children.forEach(children, child => {\n if ( /*#__PURE__*/React.isValidElement(child)) func(child, index++);\n });\n}\n/**\n * Finds whether a component's `children` prop includes a React element of the\n * specified type.\n */\n\n\nfunction hasChildOfType(children, type) {\n return React.Children.toArray(children).some(child => /*#__PURE__*/React.isValidElement(child) && child.type === type);\n}\n\nexport { map, forEach, hasChildOfType };","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport warning from 'warning';\nimport Feedback from './Feedback';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormControl = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n type,\n size,\n htmlSize,\n id,\n className,\n isValid = false,\n isInvalid = false,\n plaintext,\n readOnly,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'input',\n ...props\n}, ref) => {\n const {\n controlId\n } = useContext(FormContext);\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-control');\n let classes;\n\n if (plaintext) {\n classes = {\n [`${bsPrefix}-plaintext`]: true\n };\n } else {\n classes = {\n [bsPrefix]: true,\n [`${bsPrefix}-${size}`]: size\n };\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(controlId == null || !id, '`controlId` is ignored on `<FormControl>` when `id` is specified.') : void 0;\n return /*#__PURE__*/_jsx(Component, { ...props,\n type: type,\n size: htmlSize,\n ref: ref,\n readOnly: readOnly,\n id: id || controlId,\n className: classNames(className, classes, isValid && `is-valid`, isInvalid && `is-invalid`, type === 'color' && `${bsPrefix}-color`)\n });\n});\nFormControl.displayName = 'FormControl';\nexport default Object.assign(FormControl, {\n Feedback\n});","import createWithBsPrefix from './createWithBsPrefix';\nexport default createWithBsPrefix('form-floating');","import * as React from 'react';\nimport { useMemo } from 'react';\nimport FormContext from './FormContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormGroup = /*#__PURE__*/React.forwardRef(({\n controlId,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n ...props\n}, ref) => {\n const context = useMemo(() => ({\n controlId\n }), [controlId]);\n return /*#__PURE__*/_jsx(FormContext.Provider, {\n value: context,\n children: /*#__PURE__*/_jsx(Component, { ...props,\n ref: ref\n })\n });\n});\nFormGroup.displayName = 'FormGroup';\nexport default FormGroup;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport warning from 'warning';\nimport Col from './Col';\nimport FormContext from './FormContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultProps = {\n column: false,\n visuallyHidden: false\n};\nconst FormLabel = /*#__PURE__*/React.forwardRef(({\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'label',\n bsPrefix,\n column,\n visuallyHidden,\n className,\n htmlFor,\n ...props\n}, ref) => {\n const {\n controlId\n } = useContext(FormContext);\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-label');\n let columnClass = 'col-form-label';\n if (typeof column === 'string') columnClass = `${columnClass} ${columnClass}-${column}`;\n const classes = classNames(className, bsPrefix, visuallyHidden && 'visually-hidden', column && columnClass);\n process.env.NODE_ENV !== \"production\" ? warning(controlId == null || !htmlFor, '`controlId` is ignored on `<FormLabel>` when `htmlFor` is specified.') : void 0;\n htmlFor = htmlFor || controlId;\n if (column) return /*#__PURE__*/_jsx(Col, {\n ref: ref,\n as: \"label\",\n className: classes,\n htmlFor: htmlFor,\n ...props\n });\n return (\n /*#__PURE__*/\n // eslint-disable-next-line jsx-a11y/label-has-for, jsx-a11y/label-has-associated-control\n _jsx(Component, {\n ref: ref,\n className: classes,\n htmlFor: htmlFor,\n ...props\n })\n );\n});\nFormLabel.displayName = 'FormLabel';\nFormLabel.defaultProps = defaultProps;\nexport default FormLabel;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport FormContext from './FormContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormRange = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n id,\n ...props\n}, ref) => {\n const {\n controlId\n } = useContext(FormContext);\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-range');\n return /*#__PURE__*/_jsx(\"input\", { ...props,\n type: \"range\",\n ref: ref,\n className: classNames(className, bsPrefix),\n id: id || controlId\n });\n});\nFormRange.displayName = 'FormRange';\nexport default FormRange;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport FormContext from './FormContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormSelect = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n size,\n htmlSize,\n className,\n isValid = false,\n isInvalid = false,\n id,\n ...props\n}, ref) => {\n const {\n controlId\n } = useContext(FormContext);\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-select');\n return /*#__PURE__*/_jsx(\"select\", { ...props,\n size: htmlSize,\n ref: ref,\n className: classNames(className, bsPrefix, size && `${bsPrefix}-${size}`, isValid && `is-valid`, isInvalid && `is-invalid`),\n id: id || controlId\n });\n});\nFormSelect.displayName = 'FormSelect';\nexport default FormSelect;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FormText = /*#__PURE__*/React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n({\n bsPrefix,\n className,\n as: Component = 'small',\n muted,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-text');\n return /*#__PURE__*/_jsx(Component, { ...props,\n ref: ref,\n className: classNames(className, bsPrefix, muted && 'text-muted')\n });\n});\nFormText.displayName = 'FormText';\nexport default FormText;","import * as React from 'react';\nimport FormCheck from './FormCheck';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Switch = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/_jsx(FormCheck, { ...props,\n ref: ref,\n type: \"switch\"\n}));\nSwitch.displayName = 'Switch';\nexport default Object.assign(Switch, {\n Input: FormCheck.Input,\n Label: FormCheck.Label\n});","import classNames from 'classnames';\nimport * as React from 'react';\nimport FormGroup from './FormGroup';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst FloatingLabel = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n children,\n controlId,\n label,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'form-floating');\n return /*#__PURE__*/_jsxs(FormGroup, {\n ref: ref,\n className: classNames(className, bsPrefix),\n controlId: controlId,\n ...props,\n children: [children, /*#__PURE__*/_jsx(\"label\", {\n htmlFor: controlId,\n children: label\n })]\n });\n});\nFloatingLabel.displayName = 'FloatingLabel';\nexport default FloatingLabel;","import classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport FormCheck from './FormCheck';\nimport FormControl from './FormControl';\nimport FormFloating from './FormFloating';\nimport FormGroup from './FormGroup';\nimport FormLabel from './FormLabel';\nimport FormRange from './FormRange';\nimport FormSelect from './FormSelect';\nimport FormText from './FormText';\nimport Switch from './Switch';\nimport FloatingLabel from './FloatingLabel';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst propTypes = {\n /**\n * The Form `ref` will be forwarded to the underlying element,\n * which means, unless it's rendered `as` a composite component,\n * it will be a DOM node, when resolved.\n *\n * @type {ReactRef}\n * @alias ref\n */\n _ref: PropTypes.any,\n\n /**\n * Mark a form as having been validated. Setting it to `true` will\n * toggle any validation styles on the forms elements.\n */\n validated: PropTypes.bool,\n as: PropTypes.elementType\n};\nconst Form = /*#__PURE__*/React.forwardRef(({\n className,\n validated,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'form',\n ...props\n}, ref) => /*#__PURE__*/_jsx(Component, { ...props,\n ref: ref,\n className: classNames(className, validated && 'was-validated')\n}));\nForm.displayName = 'Form';\nForm.propTypes = propTypes;\nexport default Object.assign(Form, {\n Group: FormGroup,\n Control: FormControl,\n Floating: FormFloating,\n Check: FormCheck,\n Switch,\n Label: FormLabel,\n Text: FormText,\n Range: FormRange,\n Select: FormSelect,\n FloatingLabel\n});","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useMemo } from 'react';\nimport createWithBsPrefix from './createWithBsPrefix';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport FormCheckInput from './FormCheckInput';\nimport InputGroupContext from './InputGroupContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst InputGroupText = createWithBsPrefix('input-group-text', {\n Component: 'span'\n});\n\nconst InputGroupCheckbox = props => /*#__PURE__*/_jsx(InputGroupText, {\n children: /*#__PURE__*/_jsx(FormCheckInput, {\n type: \"checkbox\",\n ...props\n })\n});\n\nconst InputGroupRadio = props => /*#__PURE__*/_jsx(InputGroupText, {\n children: /*#__PURE__*/_jsx(FormCheckInput, {\n type: \"radio\",\n ...props\n })\n});\n\n/**\n *\n * @property {InputGroupText} Text\n * @property {InputGroupRadio} Radio\n * @property {InputGroupCheckbox} Checkbox\n */\nconst InputGroup = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n size,\n hasValidation,\n className,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'input-group'); // Intentionally an empty object. Used in detecting if a dropdown\n // exists under an input group.\n\n const contextValue = useMemo(() => ({}), []);\n return /*#__PURE__*/_jsx(InputGroupContext.Provider, {\n value: contextValue,\n children: /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, bsPrefix, size && `${bsPrefix}-${size}`, hasValidation && 'has-validation')\n })\n });\n});\nInputGroup.displayName = 'InputGroup';\nexport default Object.assign(InputGroup, {\n Text: InputGroupText,\n Radio: InputGroupRadio,\n Checkbox: InputGroupCheckbox\n});","import { useMemo, useRef } from 'react';\nimport useMounted from './useMounted';\nimport useWillUnmount from './useWillUnmount';\n/*\n * Browsers including Internet Explorer, Chrome, Safari, and Firefox store the\n * delay as a 32-bit signed integer internally. This causes an integer overflow\n * when using delays larger than 2,147,483,647 ms (about 24.8 days),\n * resulting in the timeout being executed immediately.\n *\n * via: https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout\n */\n\nvar MAX_DELAY_MS = Math.pow(2, 31) - 1;\n\nfunction setChainedTimeout(handleRef, fn, timeoutAtMs) {\n var delayMs = timeoutAtMs - Date.now();\n handleRef.current = delayMs <= MAX_DELAY_MS ? setTimeout(fn, delayMs) : setTimeout(function () {\n return setChainedTimeout(handleRef, fn, timeoutAtMs);\n }, MAX_DELAY_MS);\n}\n/**\n * Returns a controller object for setting a timeout that is properly cleaned up\n * once the component unmounts. New timeouts cancel and replace existing ones.\n *\n *\n *\n * ```tsx\n * const { set, clear } = useTimeout();\n * const [hello, showHello] = useState(false);\n * //Display hello after 5 seconds\n * set(() => showHello(true), 5000);\n * return (\n * <div className=\"App\">\n * {hello ? <h3>Hello</h3> : null}\n * </div>\n * );\n * ```\n */\n\n\nexport default function useTimeout() {\n var isMounted = useMounted(); // types are confused between node and web here IDK\n\n var handleRef = useRef();\n useWillUnmount(function () {\n return clearTimeout(handleRef.current);\n });\n return useMemo(function () {\n var clear = function clear() {\n return clearTimeout(handleRef.current);\n };\n\n function set(fn, delayMs) {\n if (delayMs === void 0) {\n delayMs = 0;\n }\n\n if (!isMounted()) return;\n clear();\n\n if (delayMs <= MAX_DELAY_MS) {\n // For simplicity, if the timeout is short, just set a normal timeout.\n handleRef.current = setTimeout(fn, delayMs);\n } else {\n setChainedTimeout(handleRef, fn, Date.now() + delayMs);\n }\n }\n\n return {\n set: set,\n clear: clear\n };\n }, []);\n}","import listen from 'dom-helpers/listen';\nimport ownerDocument from 'dom-helpers/ownerDocument';\nimport { useEffect } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport useClickOutside, { getRefTarget } from './useClickOutside';\nconst escapeKeyCode = 27;\n\nconst noop = () => {};\n\n/**\n * The `useRootClose` hook registers your callback on the document\n * when rendered. Powers the `<Overlay/>` component. This is used achieve modal\n * style behavior where your callback is triggered when the user tries to\n * interact with the rest of the document or hits the `esc` key.\n *\n * @param {Ref<HTMLElement>| HTMLElement} ref The element boundary\n * @param {function} onRootClose\n * @param {object=} options\n * @param {boolean=} options.disabled\n * @param {string=} options.clickTrigger The DOM event name (click, mousedown, etc) to attach listeners on\n */\nfunction useRootClose(ref, onRootClose, {\n disabled,\n clickTrigger\n} = {}) {\n const onClose = onRootClose || noop;\n useClickOutside(ref, onClose, {\n disabled,\n clickTrigger\n });\n const handleKeyUp = useEventCallback(e => {\n if (e.keyCode === escapeKeyCode) {\n onClose(e);\n }\n });\n useEffect(() => {\n if (disabled || ref == null) return undefined;\n const doc = ownerDocument(getRefTarget(ref)); // Store the current event to avoid triggering handlers immediately\n // https://github.com/facebook/react/issues/20074\n\n let currentEvent = (doc.defaultView || window).event;\n const removeKeyupListener = listen(doc, 'keyup', e => {\n // skip if this event is the same as the one running when we added the handlers\n if (e === currentEvent) {\n currentEvent = undefined;\n return;\n }\n\n handleKeyUp(e);\n });\n return () => {\n removeKeyupListener();\n };\n }, [ref, disabled, handleKeyUp]);\n}\n\nexport default useRootClose;","import * as React from 'react';\nimport ReactDOM from 'react-dom';\nimport useCallbackRef from '@restart/hooks/useCallbackRef';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport { useState } from 'react';\nimport usePopper from './usePopper';\nimport useRootClose from './useRootClose';\nimport useWaitForDOMRef from './useWaitForDOMRef';\nimport mergeOptionsWithPopperConfig from './mergeOptionsWithPopperConfig';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\n/**\n * Built on top of `Popper.js`, the overlay component is\n * great for custom tooltip overlays.\n */\nconst Overlay = /*#__PURE__*/React.forwardRef((props, outerRef) => {\n const {\n flip,\n offset,\n placement,\n containerPadding,\n popperConfig = {},\n transition: Transition\n } = props;\n const [rootElement, attachRef] = useCallbackRef();\n const [arrowElement, attachArrowRef] = useCallbackRef();\n const mergedRef = useMergedRefs(attachRef, outerRef);\n const container = useWaitForDOMRef(props.container);\n const target = useWaitForDOMRef(props.target);\n const [exited, setExited] = useState(!props.show);\n const popper = usePopper(target, rootElement, mergeOptionsWithPopperConfig({\n placement,\n enableEvents: !!props.show,\n containerPadding: containerPadding || 5,\n flip,\n offset,\n arrowElement,\n popperConfig\n }));\n\n if (props.show) {\n if (exited) setExited(false);\n } else if (!props.transition && !exited) {\n setExited(true);\n }\n\n const handleHidden = (...args) => {\n setExited(true);\n\n if (props.onExited) {\n props.onExited(...args);\n }\n }; // Don't un-render the overlay while it's transitioning out.\n\n\n const mountOverlay = props.show || Transition && !exited;\n useRootClose(rootElement, props.onHide, {\n disabled: !props.rootClose || props.rootCloseDisabled,\n clickTrigger: props.rootCloseEvent\n });\n\n if (!mountOverlay) {\n // Don't bother showing anything if we don't have to.\n return null;\n }\n\n let child = props.children(Object.assign({}, popper.attributes.popper, {\n style: popper.styles.popper,\n ref: mergedRef\n }), {\n popper,\n placement,\n show: !!props.show,\n arrowProps: Object.assign({}, popper.attributes.arrow, {\n style: popper.styles.arrow,\n ref: attachArrowRef\n })\n });\n\n if (Transition) {\n const {\n onExit,\n onExiting,\n onEnter,\n onEntering,\n onEntered\n } = props;\n child = /*#__PURE__*/_jsx(Transition, {\n in: props.show,\n appear: true,\n onExit: onExit,\n onExiting: onExiting,\n onExited: handleHidden,\n onEnter: onEnter,\n onEntering: onEntering,\n onEntered: onEntered,\n children: child\n });\n }\n\n return container ? /*#__PURE__*/ReactDOM.createPortal(child, container) : null;\n});\nOverlay.displayName = 'Overlay';\nexport default Overlay;","import createWithBsPrefix from './createWithBsPrefix';\nexport default createWithBsPrefix('popover-header');","import createWithBsPrefix from './createWithBsPrefix';\nexport default createWithBsPrefix('popover-body');","import * as React from 'react';\nexport class BsPrefixComponent extends React.Component {} // Need to use this instead of typeof Component to get proper type checking.\n\nexport function getOverlayDirection(placement, isRTL) {\n let bsDirection = placement;\n\n if (placement === 'left') {\n bsDirection = isRTL ? 'end' : 'start';\n } else if (placement === 'right') {\n bsDirection = isRTL ? 'start' : 'end';\n }\n\n return bsDirection;\n}","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix, useIsRTL } from './ThemeProvider';\nimport PopoverHeader from './PopoverHeader';\nimport PopoverBody from './PopoverBody';\nimport { getOverlayDirection } from './helpers';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst defaultProps = {\n placement: 'right'\n};\nconst Popover = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n placement,\n className,\n style,\n children,\n body,\n arrowProps,\n popper: _,\n show: _1,\n ...props\n}, ref) => {\n const decoratedBsPrefix = useBootstrapPrefix(bsPrefix, 'popover');\n const isRTL = useIsRTL();\n const [primaryPlacement] = (placement == null ? void 0 : placement.split('-')) || [];\n const bsDirection = getOverlayDirection(primaryPlacement, isRTL);\n return /*#__PURE__*/_jsxs(\"div\", {\n ref: ref,\n role: \"tooltip\",\n style: style,\n \"x-placement\": primaryPlacement,\n className: classNames(className, decoratedBsPrefix, primaryPlacement && `bs-popover-${bsDirection}`),\n ...props,\n children: [/*#__PURE__*/_jsx(\"div\", {\n className: \"popover-arrow\",\n ...arrowProps\n }), body ? /*#__PURE__*/_jsx(PopoverBody, {\n children: children\n }) : children]\n });\n});\nPopover.defaultProps = defaultProps;\nexport default Object.assign(Popover, {\n Header: PopoverHeader,\n Body: PopoverBody,\n // Default popover offset.\n // https://github.com/twbs/bootstrap/blob/5c32767e0e0dbac2d934bcdee03719a65d3f1187/js/src/popover.js#L28\n POPPER_OFFSET: [0, 8]\n});","import * as React from 'react';\nimport { useRef } from 'react';\nimport classNames from 'classnames';\nimport BaseOverlay from '@restart/ui/Overlay';\nimport useCallbackRef from '@restart/hooks/useCallbackRef';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport useIsomorphicEffect from '@restart/hooks/useIsomorphicEffect';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport useOverlayOffset from './useOverlayOffset';\nimport Fade from './Fade';\nimport safeFindDOMNode from './safeFindDOMNode';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultProps = {\n transition: Fade,\n rootClose: false,\n show: false,\n placement: 'top'\n};\n\nfunction wrapRefs(props, arrowProps) {\n const {\n ref\n } = props;\n const {\n ref: aRef\n } = arrowProps;\n\n props.ref = ref.__wrapped || (ref.__wrapped = r => ref(safeFindDOMNode(r)));\n\n arrowProps.ref = aRef.__wrapped || (aRef.__wrapped = r => aRef(safeFindDOMNode(r)));\n}\n\nconst Overlay = /*#__PURE__*/React.forwardRef(({\n children: overlay,\n transition,\n popperConfig = {},\n ...outerProps\n}, outerRef) => {\n const popperRef = useRef({});\n const [firstRenderedState, setFirstRenderedState] = useCallbackRef();\n const [ref, modifiers] = useOverlayOffset(outerProps.offset);\n const mergedRef = useMergedRefs(outerRef, ref);\n const actualTransition = transition === true ? Fade : transition || undefined;\n const handleFirstUpdate = useEventCallback(state => {\n setFirstRenderedState(state);\n popperConfig == null ? void 0 : popperConfig.onFirstUpdate == null ? void 0 : popperConfig.onFirstUpdate(state);\n });\n useIsomorphicEffect(() => {\n if (firstRenderedState) {\n popperRef.current.scheduleUpdate == null ? void 0 : popperRef.current.scheduleUpdate();\n }\n }, [firstRenderedState]);\n return /*#__PURE__*/_jsx(BaseOverlay, { ...outerProps,\n ref: mergedRef,\n popperConfig: { ...popperConfig,\n modifiers: modifiers.concat(popperConfig.modifiers || []),\n onFirstUpdate: handleFirstUpdate\n },\n transition: actualTransition,\n children: (overlayProps, {\n arrowProps,\n popper: popperObj,\n show\n }) => {\n var _popperObj$state, _popperObj$state$modi;\n\n wrapRefs(overlayProps, arrowProps); // Need to get placement from popper object, handling case when overlay is flipped using 'flip' prop\n\n const updatedPlacement = popperObj == null ? void 0 : popperObj.placement;\n const popper = Object.assign(popperRef.current, {\n state: popperObj == null ? void 0 : popperObj.state,\n scheduleUpdate: popperObj == null ? void 0 : popperObj.update,\n placement: updatedPlacement,\n outOfBoundaries: (popperObj == null ? void 0 : (_popperObj$state = popperObj.state) == null ? void 0 : (_popperObj$state$modi = _popperObj$state.modifiersData.hide) == null ? void 0 : _popperObj$state$modi.isReferenceHidden) || false\n });\n if (typeof overlay === 'function') return overlay({ ...overlayProps,\n placement: updatedPlacement,\n show,\n ...(!transition && show && {\n className: 'show'\n }),\n popper,\n arrowProps\n });\n return /*#__PURE__*/React.cloneElement(overlay, { ...overlayProps,\n placement: updatedPlacement,\n arrowProps,\n popper,\n className: classNames(overlay.props.className, !transition && show && 'show'),\n style: { ...overlay.props.style,\n ...overlayProps.style\n }\n });\n }\n });\n});\nOverlay.displayName = 'Overlay';\nOverlay.defaultProps = defaultProps;\nexport default Overlay;","import { useMemo, useRef } from 'react';\nimport hasClass from 'dom-helpers/hasClass';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport Popover from './Popover'; // This is meant for internal use.\n// This applies a custom offset to the overlay if it's a popover.\n\nexport default function useOverlayOffset(customOffset) {\n const overlayRef = useRef(null);\n const popoverClass = useBootstrapPrefix(undefined, 'popover');\n const offset = useMemo(() => ({\n name: 'offset',\n options: {\n offset: () => {\n if (overlayRef.current && hasClass(overlayRef.current, popoverClass)) {\n return customOffset || Popover.POPPER_OFFSET;\n }\n\n return customOffset || [0, 0];\n }\n }\n }), [customOffset, popoverClass]);\n return [overlayRef, [offset]];\n}","import contains from 'dom-helpers/contains';\nimport * as React from 'react';\nimport { cloneElement, useCallback, useRef } from 'react';\nimport useTimeout from '@restart/hooks/useTimeout';\nimport warning from 'warning';\nimport { useUncontrolledProp } from 'uncontrollable';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport Overlay from './Overlay';\nimport safeFindDOMNode from './safeFindDOMNode';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nfunction normalizeDelay(delay) {\n return delay && typeof delay === 'object' ? delay : {\n show: delay,\n hide: delay\n };\n} // Simple implementation of mouseEnter and mouseLeave.\n// React's built version is broken: https://github.com/facebook/react/issues/4251\n// for cases when the trigger is disabled and mouseOut/Over can cause flicker\n// moving from one child element to another.\n\n\nfunction handleMouseOverOut( // eslint-disable-next-line @typescript-eslint/no-shadow\nhandler, args, relatedNative) {\n const [e] = args;\n const target = e.currentTarget;\n const related = e.relatedTarget || e.nativeEvent[relatedNative];\n\n if ((!related || related !== target) && !contains(target, related)) {\n handler(...args);\n }\n}\n\nconst defaultProps = {\n defaultShow: false,\n trigger: ['hover', 'focus']\n};\n\nfunction OverlayTrigger({\n trigger,\n overlay,\n children,\n popperConfig = {},\n show: propsShow,\n defaultShow = false,\n onToggle,\n delay: propsDelay,\n placement,\n flip = placement && placement.indexOf('auto') !== -1,\n ...props\n}) {\n const triggerNodeRef = useRef(null);\n const mergedRef = useMergedRefs(triggerNodeRef, children.ref);\n const timeout = useTimeout();\n const hoverStateRef = useRef('');\n const [show, setShow] = useUncontrolledProp(propsShow, defaultShow, onToggle);\n const delay = normalizeDelay(propsDelay);\n const {\n onFocus,\n onBlur,\n onClick\n } = typeof children !== 'function' ? React.Children.only(children).props : {};\n\n const attachRef = r => {\n mergedRef(safeFindDOMNode(r));\n };\n\n const handleShow = useCallback(() => {\n timeout.clear();\n hoverStateRef.current = 'show';\n\n if (!delay.show) {\n setShow(true);\n return;\n }\n\n timeout.set(() => {\n if (hoverStateRef.current === 'show') setShow(true);\n }, delay.show);\n }, [delay.show, setShow, timeout]);\n const handleHide = useCallback(() => {\n timeout.clear();\n hoverStateRef.current = 'hide';\n\n if (!delay.hide) {\n setShow(false);\n return;\n }\n\n timeout.set(() => {\n if (hoverStateRef.current === 'hide') setShow(false);\n }, delay.hide);\n }, [delay.hide, setShow, timeout]);\n const handleFocus = useCallback((...args) => {\n handleShow();\n onFocus == null ? void 0 : onFocus(...args);\n }, [handleShow, onFocus]);\n const handleBlur = useCallback((...args) => {\n handleHide();\n onBlur == null ? void 0 : onBlur(...args);\n }, [handleHide, onBlur]);\n const handleClick = useCallback((...args) => {\n setShow(!show);\n onClick == null ? void 0 : onClick(...args);\n }, [onClick, setShow, show]);\n const handleMouseOver = useCallback((...args) => {\n handleMouseOverOut(handleShow, args, 'fromElement');\n }, [handleShow]);\n const handleMouseOut = useCallback((...args) => {\n handleMouseOverOut(handleHide, args, 'toElement');\n }, [handleHide]);\n const triggers = trigger == null ? [] : [].concat(trigger);\n const triggerProps = {\n ref: attachRef\n };\n\n if (triggers.indexOf('click') !== -1) {\n triggerProps.onClick = handleClick;\n }\n\n if (triggers.indexOf('focus') !== -1) {\n triggerProps.onFocus = handleFocus;\n triggerProps.onBlur = handleBlur;\n }\n\n if (triggers.indexOf('hover') !== -1) {\n process.env.NODE_ENV !== \"production\" ? warning(triggers.length > 1, '[react-bootstrap] Specifying only the `\"hover\"` trigger limits the visibility of the overlay to just mouse users. Consider also including the `\"focus\"` trigger so that touch and keyboard only users can see the overlay as well.') : void 0;\n triggerProps.onMouseOver = handleMouseOver;\n triggerProps.onMouseOut = handleMouseOut;\n }\n\n return /*#__PURE__*/_jsxs(_Fragment, {\n children: [typeof children === 'function' ? children(triggerProps) : /*#__PURE__*/cloneElement(children, triggerProps), /*#__PURE__*/_jsx(Overlay, { ...props,\n show: show,\n onHide: handleHide,\n flip: flip,\n placement: placement,\n popperConfig: popperConfig,\n target: triggerNodeRef.current,\n children: overlay\n })]\n });\n}\n\nOverlayTrigger.defaultProps = defaultProps;\nexport default OverlayTrigger;","import React from 'react';\r\nimport OverlayTrigger from 'react-bootstrap/OverlayTrigger';\r\nimport Popover from 'react-bootstrap/Popover';\r\nimport { PortalHelperTextModel } from '../models/PortalHelperTextModel';\r\n\r\nexport class Tooltip extends React.Component<any, any> {\r\n constructor(props: any) {\r\n super(props);\r\n }\r\n\r\n render() {\r\n if (this.props.tooltip !== null && this.props.tooltip !== undefined) {\r\n return (\r\n <OverlayTrigger\r\n key=\"top\"\r\n delay={{ show: 100, hide: 200 }}\r\n placement=\"top\"\r\n overlay={\r\n <Popover id={`popover-positioned-top`}>\r\n {this.props.tooltip?.title && <Popover.Header as=\"h4\">{this.props.tooltip?.title}</Popover.Header>}\r\n <Popover.Body>\r\n {this.props.tooltip?.content}\r\n </Popover.Body>\r\n </Popover>\r\n }\r\n >\r\n {this.props.children}\r\n </OverlayTrigger>);\r\n }\r\n else\r\n return (<>{this.props.children}</>);\r\n }\r\n}\r\n\r\nexport function getTooltip(texts: PortalHelperTextModel[], fieldname: string) {\r\n for (let index = 0; index < texts.length; index++) {\r\n const element = texts[index];\r\n if (element.fieldName === fieldname)\r\n return element;\r\n }\r\n return null;\r\n}","import { Component } from \"react\";\r\nimport { Form, InputGroup } from \"react-bootstrap\";\r\nimport { Tooltip } from \"../components/Tooltip\";\r\nimport { ControlType, DataType, Field } from \"../models/PortalMetadata\";\r\nimport DatePicker from \"react-date-picker\";\r\nimport \"./PlusMinusBox.css\";\r\n\r\ninterface IFormControlState {\r\n isDirty: boolean;\r\n value: string | number | undefined;\r\n lookupValues: [];\r\n}\r\n\r\ninterface IFormControlProp {\r\n field: Field;\r\n icon?: string;\r\n fieldOnly?: boolean;\r\n customLabel?: string;\r\n fieldUpdated?(value?: any): void;\r\n isRequired?: boolean;\r\n isInvalid?(value: string | number | undefined): boolean;\r\n invalidText?: string;\r\n alignLeft?: boolean | undefined;\r\n light?: boolean | undefined;\r\n readOnly?: boolean;\r\n extraClasses?: string;\r\n}\r\n\r\nexport class FormControl extends Component<\r\n IFormControlProp,\r\n IFormControlState\r\n> {\r\n constructor(props: any) {\r\n super(props);\r\n this.state = { isDirty: false, value: props.value, lookupValues: [] };\r\n\r\n this.isInvalid = this.isInvalid.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n this.handleIsDirty = this.handleIsDirty.bind(this);\r\n }\r\n\r\n handleIsDirty(event: any) {\r\n if (this.props.field.controlType === ControlType.date) {\r\n this.props.field.dateValue = new Date(event);\r\n this.setState({ isDirty: true, value: event });\r\n this.props.field.isDirty = true;\r\n this.props.field.value = event;\r\n } else {\r\n const target = event.target;\r\n const value = target.type === \"checkbox\" ? target.checked : target.value;\r\n\r\n if (this.props.field.originalValue !== value) {\r\n this.setState({ isDirty: true, value: value });\r\n this.props.field.isDirty = true;\r\n this.props.field.value = value;\r\n }\r\n }\r\n }\r\n\r\n isInvalid() {\r\n if (this.props.isInvalid) {\r\n return this.props.isInvalid(this.props.field.value);\r\n }\r\n if (\r\n this.props.field.controlType === ControlType.currency &&\r\n this.props.field.minValue\r\n ) {\r\n var v = parseFloat(\r\n (this.props.field.value || \"\")\r\n .toString()\r\n .replace(\"€\", \"\")\r\n .replace(/,/g, \"\")\r\n );\r\n return v < this.props.field.minValue;\r\n }\r\n return false;\r\n }\r\n\r\n increment() {\r\n let v = 0;\r\n if (this.props.field.value == null) {\r\n v = 0;\r\n } else {\r\n v = this.props.field.value as number;\r\n }\r\n v++;\r\n if (this.props.field.handleChange)\r\n this.props.field.handleChange({\r\n target: { name: this.props.field.name, value: v },\r\n });\r\n }\r\n\r\n decrement() {\r\n let v = 0;\r\n if (this.props.field.value == null) {\r\n v = 0;\r\n } else {\r\n v = this.props.field.value as number;\r\n }\r\n if (v > 1) v--;\r\n if (this.props.field.handleChange)\r\n this.props.field.handleChange({\r\n target: { name: this.props.field.name, value: v },\r\n });\r\n }\r\n\r\n render() {\r\n var extraClasses = this.props.extraClasses ?? \"\";\r\n if (this.props.alignLeft) extraClasses += \"text-start\";\r\n if (this.props.icon) extraClasses += \" pl-5-imp\";\r\n if (this.props.light) extraClasses += \" modal-control\";\r\n if (this.props.light && this.props.field.controlType === ControlType.date)\r\n extraClasses += \" form-date\";\r\n const val = (\r\n <>\r\n {this.props.field.controlType === ControlType.text && (\r\n <Form.Control\r\n id={this.props.field.name}\r\n readOnly={this.props.readOnly}\r\n className={extraClasses}\r\n htmlSize={1}\r\n name={this.props.field.name}\r\n placeholder={this.props.field.placeholder ?? \"\"}\r\n type=\"text\"\r\n value={this.props.field.value}\r\n maxLength={this.props.field.maxLength}\r\n onChange={(e) => {\r\n this.handleIsDirty(e);\r\n if (this.props.field.handleChange)\r\n this.props.field.handleChange(e);\r\n if (this.props.fieldUpdated)\r\n this.props.fieldUpdated(e.target.value);\r\n }}\r\n isInvalid={this.isInvalid()}\r\n />\r\n )}\r\n {this.props.field.controlType === ControlType.currency && (\r\n <Form.Control\r\n id={this.props.field.name}\r\n readOnly={this.props.readOnly}\r\n className={extraClasses}\r\n htmlSize={1}\r\n name={this.props.field.name}\r\n placeholder={this.props.field.placeholder ?? \"\"}\r\n type=\"text\"\r\n value={this.props.field.value}\r\n maxLength={this.props.field.maxLength}\r\n onChange={(e) => {\r\n this.handleIsDirty(e);\r\n if (this.props.field.handleChange)\r\n this.props.field.handleChange(e);\r\n if (this.props.fieldUpdated)\r\n this.props.fieldUpdated(e.target.value);\r\n }}\r\n isInvalid={this.isInvalid()}\r\n />\r\n )}\r\n {this.props.field.controlType === ControlType.textarea && (\r\n <Form.Control\r\n id={this.props.field.name}\r\n readOnly={this.props.readOnly}\r\n className={extraClasses}\r\n name={this.props.field.name}\r\n as=\"textarea\"\r\n placeholder={this.props.field.placeholder ?? \"\"}\r\n type=\"text\"\r\n value={this.props.field.value}\r\n maxLength={this.props.field.maxLength}\r\n onChange={(e) => {\r\n this.handleIsDirty(e);\r\n if (this.props.field.handleChange)\r\n this.props.field.handleChange(e);\r\n }}\r\n />\r\n )}\r\n {this.props.field.controlType === ControlType.picklist && (\r\n <>\r\n {this.props.field.dataType === DataType.boolean && (\r\n <Form.Select\r\n id={this.props.field.name}\r\n className={extraClasses}\r\n name={this.props.field.name}\r\n placeholder={this.props.field.placeholder ?? \"\"}\r\n value={convertToBool(this.props.field.value)}\r\n onChange={(e) => {\r\n this.handleIsDirty(e);\r\n if (this.props.field.handleChange)\r\n this.props.field.handleChange(e);\r\n }}\r\n >\r\n <option></option>\r\n {this.props.field.options !== null &&\r\n this.props.field.options.map((opt) => (\r\n <option key={opt.value} value={opt.value}>\r\n {opt.text}\r\n </option>\r\n ))}\r\n </Form.Select>\r\n )}\r\n {this.props.field.dataType !== DataType.boolean && (\r\n <Form.Select\r\n id={this.props.field.name}\r\n className={extraClasses}\r\n name={this.props.field.name}\r\n placeholder={this.props.field.placeholder ?? \"\"}\r\n value={this.props.field.value}\r\n onChange={(e) => {\r\n this.handleIsDirty(e);\r\n if (this.props.field.handleChange)\r\n this.props.field.handleChange(e);\r\n }}\r\n >\r\n <option></option>\r\n {this.props.field.options !== null &&\r\n this.props.field.options.map((opt) => (\r\n <option key={opt.value} value={opt.value}>\r\n {opt.text}\r\n </option>\r\n ))}\r\n </Form.Select>\r\n )}\r\n </>\r\n )}\r\n {this.props.field.controlType === ControlType.lookup && (\r\n <Form.Select\r\n className={extraClasses}\r\n name={this.props.field.name}\r\n placeholder={this.props.field.placeholder ?? \"\"}\r\n value={this.props.field.value}\r\n onChange={(e) => {\r\n this.handleIsDirty(e);\r\n if (this.props.field.handleChange)\r\n this.props.field.handleChange(e);\r\n }}\r\n >\r\n <option value={\"-\"}></option>\r\n {this.props.field.lookupValues !== null &&\r\n this.props.field.lookupValues.map((opt: any) => (\r\n <option key={opt.value} value={opt.value}>\r\n {opt.text}\r\n </option>\r\n ))}\r\n </Form.Select>\r\n )}\r\n {this.props.field.controlType === ControlType.date && (\r\n <DatePicker\r\n className={extraClasses}\r\n name={this.props.field.name}\r\n value={this.props.field.dateValue ?? undefined}\r\n onChange={(e: Date) => {\r\n this.handleIsDirty(e);\r\n if (this.props.field.handleChange)\r\n this.props.field.handleChange({\r\n target: { name: this.props.field.name, value: e },\r\n });\r\n }}\r\n //isInvalid={this.isInvalid()}\r\n minDate={this.props.field.minValue}\r\n maxDate={this.props.field.maxValue}\r\n clearIcon={null}\r\n calendarIcon={null}\r\n format=\"d/M/yyyy\"\r\n />\r\n )}\r\n\r\n {/* {this.props.field.controlType === ControlType.date && \r\n <DatePickerControl className={extraClasses} name={this.props.field.name} placeholder={this.props.field.placeholder ?? \"\"} value={this.props.field.dateValue} onChange={\r\n (e: ChangeEvent<Element>) => {\r\n this.handleIsDirty(e);\r\n if (this.props.field.handleChange)\r\n this.props.field.handleChange({ target: { name: this.props.field.name, value: e } });\r\n }}\r\n isInvalid={this.isInvalid()}\r\n />\r\n } */}\r\n {\r\n this.props.field.controlType === ControlType.number && (\r\n <Form.Control\r\n id={this.props.field.name}\r\n readOnly={this.props.readOnly}\r\n className={extraClasses}\r\n htmlSize={1}\r\n name={this.props.field.name}\r\n placeholder={this.props.field.placeholder ?? \"\"}\r\n type=\"number\"\r\n value={this.props.field.value}\r\n min={this.props.field.minValue}\r\n max={this.props.field.maxValue}\r\n maxLength={8}\r\n onChange={(e) => {\r\n this.handleIsDirty(e);\r\n if (this.props.field.handleChange)\r\n this.props.field.handleChange(e);\r\n }}\r\n />\r\n ) // add validation for number\r\n }\r\n {this.props.field.controlType === ControlType.numberWithControls && (\r\n <div className=\"plus-minus-box-container\">\r\n <div className=\"plus-minus-box-component\" style={{ flexGrow: \"0\" }}>\r\n <i\r\n className=\"far fa-square-minus fa-2xl\"\r\n onClick={(e) => {\r\n this.decrement();\r\n }}\r\n ></i>\r\n </div>\r\n <div\r\n className=\"plus-minus-box-component\"\r\n style={{ flexGrow: \"2\", textAlign: \"center\" }}\r\n >\r\n <Form.Control\r\n id={this.props.field.name}\r\n className={extraClasses}\r\n htmlSize={1}\r\n name={this.props.field.name}\r\n placeholder={this.props.field.placeholder ?? \"\"}\r\n type=\"number\"\r\n value={this.props.field.value}\r\n min={this.props.field.minValue}\r\n max={this.props.field.maxValue}\r\n maxLength={8}\r\n onChange={(e) => {\r\n this.handleIsDirty(e);\r\n if (this.props.field.handleChange)\r\n this.props.field.handleChange(e);\r\n }}\r\n />\r\n </div>\r\n <div className=\"plus-minus-box-component\" style={{ flexGrow: \"0\" }}>\r\n <i\r\n className=\"far fa-square-plus fa-2xl\"\r\n onClick={(e) => {\r\n this.increment();\r\n }}\r\n ></i>\r\n </div>\r\n </div>\r\n )}\r\n {\r\n this.props.field.controlType === ControlType.decimal && (\r\n <Form.Control\r\n id={this.props.field.name}\r\n readOnly={this.props.readOnly}\r\n className={extraClasses}\r\n htmlSize={1}\r\n name={this.props.field.name}\r\n placeholder={this.props.field.placeholder ?? \"\"}\r\n type=\"number\"\r\n value={this.props.field.value}\r\n min={this.props.field.minValue}\r\n max={this.props.field.maxValue}\r\n onChange={(e) => {\r\n this.handleIsDirty(e);\r\n if (this.props.field.handleChange)\r\n this.props.field.handleChange(e);\r\n }}\r\n />\r\n ) // add validation for decimal\r\n }\r\n </>\r\n );\r\n\r\n if (this.props.fieldOnly === true) {\r\n return (\r\n <>\r\n {val}\r\n {this.props.invalidText !== null && (\r\n <Form.Control.Feedback type=\"invalid\">\r\n {this.props.invalidText}\r\n </Form.Control.Feedback>\r\n )}\r\n </>\r\n );\r\n }\r\n return (\r\n <Form.Group className=\"mb-2 text-start\">\r\n <Tooltip tooltip={this.props.field.tooltip}>\r\n <InputGroup\r\n className=\"pill-input\"\r\n hasValidation\r\n style={{ display: \"block\" }}\r\n >\r\n {this.props.icon && (\r\n <InputGroup.Text>\r\n <i\r\n style={{ paddingRight: \"10px\" }}\r\n className={`${this.props.icon} control-icon`}\r\n ></i>\r\n {this.props.customLabel\r\n ? this.props.customLabel\r\n : this.props.field.label}\r\n {/* {this.props.isRequired && <span style={{ color: 'red', textIndent: '4px' }}>*</span>} */}\r\n </InputGroup.Text>\r\n )}\r\n {!this.props.icon && (\r\n <InputGroup.Text>\r\n {this.props.customLabel\r\n ? this.props.customLabel\r\n : this.props.field.label}\r\n {/* {this.props.isRequired && <span style={{ color: 'red', textIndent: '4px' }}>*</span>} */}\r\n </InputGroup.Text>\r\n )}\r\n {val}\r\n {this.props.invalidText !== null && (\r\n <Form.Control.Feedback\r\n type=\"invalid\"\r\n style={{ paddingBottom: 25 }}\r\n >\r\n {this.props.invalidText}\r\n </Form.Control.Feedback>\r\n )}\r\n </InputGroup>\r\n </Tooltip>\r\n </Form.Group>\r\n );\r\n }\r\n}\r\n\r\nexport function convertToBool(val: any) {\r\n return val;\r\n}\r\n\r\nexport function convertToDate(val: any) {\r\n if (val === null) return undefined;\r\n else return val.toISOString();\r\n}\r\n","import { Component } from \"react\";\r\nimport { IPillProps, IPillElementModel } from \"./PillElement\";\r\nimport \"./Pill.css\";\r\nimport { Tooltip } from \"../Tooltip\";\r\nimport React from \"react\";\r\n\r\nexport class Pill extends Component<IPillProps, any> {\r\n constructor(props: IPillProps) {\r\n super(props);\r\n this.state = {hasFocus: false, expanded: false};\r\n this.toggleFocus = this.toggleFocus.bind(this);\r\n }\r\n\r\n toggleFocus() {\r\n var newFocus = !this.state.hasFocus;\r\n this.setState({hasFocus: newFocus, expanded: true});\r\n if(this.props.onClick) {\r\n this.props.onClick();\r\n }\r\n }\r\n\r\n render() {\r\n var pill:any;\r\n var extraClass = (this.props.extraClass ?? \"\");\r\n let displayExpanded:boolean = (this.props.disableCollapse || this.state.expanded);\r\n let labelOnly:any = ((this.props.empty || extraClass.includes(\"pill-missing\")) && !this.state.hasFocus);\r\n if (!displayExpanded && labelOnly) {\r\n pill = \r\n <div className=\"pill-container\" onClick={this.toggleFocus} >\r\n <div key={\"pill-0\"} className={\"pill-component \" + this.props.extraClass}\r\n style={{\r\n borderLeftStyle: 'solid',\r\n borderRightStyle: 'solid',\r\n backgroundColor: \"#FF000002\",\r\n marginTop: -1\r\n }}>{this.props.components[0].content}</div>\r\n </div>;\r\n } else {\r\n pill = \r\n <div className=\"pill-container\" onClick={this.props.onClick} onBlur={this.toggleFocus}>\r\n {\r\n this.props.components.map((component: IPillElementModel, idx: number) => {\r\n return <div key={\"pill-\" + idx} className={\"pill-component \" + this.props.extraClass}\r\n style={{\r\n borderLeftStyle: component.leftBorder ? 'solid' : 'none',\r\n borderRightStyle: component.rightBorder ? 'solid' : 'none',\r\n backgroundColor: component.backgroundColor,\r\n fontSize: component.fontSize ?? 16,\r\n }}>{component.content}</div>;\r\n })\r\n }\r\n </div>;\r\n setTimeout(() => {\r\n if (this.state.hasFocus) {\r\n if(this.props.components[0].focus) {\r\n this.props.components[0].focus();\r\n }\r\n }\r\n }, 200);\r\n }\r\n\r\n return (\r\n <>\r\n {this.props.tooltip &&\r\n <Tooltip tooltip={this.props.tooltip}>\r\n <div className=\"pill-container\" onClick={this.props.onClick} onBlur={this.toggleFocus}>\r\n {pill}\r\n </div>\r\n </Tooltip>}\r\n {!this.props.tooltip &&\r\n <div className=\"pill-container\" onClick={this.props.onClick} onBlur={this.toggleFocus}>\r\n {pill}\r\n </div>}\r\n </>\r\n );\r\n }\r\n}\r\n","\r\nimport React from \"react\";\r\nimport { Component } from \"react\";\r\nimport { ControlType, Field } from \"../../models/PortalMetadata\";\r\nimport { FormControl } from \"../FormControl\";\r\nimport { Tooltip } from \"../Tooltip\";\r\nimport { Pill } from \"./Pill\";\r\nimport { IPillElementModel } from \"./PillElement\";\r\n\r\ninterface IInputPillProps {\r\n field: Field;\r\n hideIfValue: boolean | null;\r\n isInvalid?(value:string|number|undefined):boolean;\r\n invalidText?:string;\r\n extraClasses?:string;\r\n customLabel?:string;\r\n disableCollapse?: boolean;\r\n usePlaceHolderForMinWidth?: boolean;\r\n readonly?: boolean;\r\n}\r\n\r\ninterface IInputPillState {\r\n hideIfValue: boolean | null;\r\n toggleState?: boolean;\r\n}\r\n\r\n\r\nexport class InputPill extends Component<IInputPillProps, IInputPillState> {\r\n\r\n constructor(props: IInputPillProps) {\r\n super(props);\r\n this.focus = this.focus.bind(this);\r\n this.state = { hideIfValue: false, toggleState: false };\r\n }\r\n\r\n componentDidUpdate() {\r\n if (this.state.hideIfValue !== this.props.hideIfValue)\r\n this.setState({ hideIfValue: this.props.hideIfValue });\r\n }\r\n\r\n componentDidMount() {\r\n if (this.state.hideIfValue !== this.props.hideIfValue)\r\n this.setState({ hideIfValue: this.props.hideIfValue });\r\n }\r\n\r\n getPillClass() {\r\n return \"notstarted\";\r\n }\r\n\r\n focus(field: Field) {\r\n if (field.controlType === ControlType.text || field.controlType === ControlType.textarea || field.controlType === ControlType.number || field.controlType === ControlType.decimal\r\n || field.controlType === ControlType.currency) {\r\n let inputs = document.getElementsByName(field.name);\r\n if (inputs !== null && inputs[0]) {\r\n inputs[0].focus();\r\n }\r\n }\r\n }\r\n\r\n isFocused():boolean {\r\n let focused = false;\r\n let inputs = document.getElementsByName(this.props.field.name);\r\n if (inputs !== null && inputs[0] && inputs[0].id === document.activeElement!.id) {\r\n focused = true;\r\n }\r\n return focused;\r\n }\r\n\r\n render() {\r\n if (this.state.hideIfValue && (this.props.field.value || this.props.field.optional) && !this.isFocused()) {\r\n return \"\";\r\n }\r\n \r\n var components: IPillElementModel[] = [];\r\n components.push({\r\n leftBorder: true,\r\n rightBorder: ((this.props.customLabel ?? this.props.field.label) !== \"\"),\r\n focus: () => {this.focus(this.props.field);},\r\n content: <Tooltip tooltip={this.props.field.tooltip}><div onClick={() => this.focus(this.props.field)}>{this.props.customLabel ?? this.props.field.label}</div></Tooltip>\r\n });\r\n\r\n var f = this.props.field;\r\n let text = f.controlType === ControlType.date ? \"\" : f.value;\r\n if (f.controlType === ControlType.lookup) {\r\n let item = f.lookupValues?.find(x => { return x.value === f.value });\r\n if (item)\r\n text = item.text; \r\n }\r\n\r\n components.push({\r\n leftBorder: false,\r\n rightBorder: true,\r\n content: <div onBlur={() => {this.setState({toggleState: !this.state.toggleState})}} className={this.props.field.controlType === ControlType.date ? 'date-popup-override' : ''}>\r\n <FormControl \r\n readOnly={this.props.readonly === true}\r\n fieldOnly={true}\r\n field={this.props.field} \r\n isInvalid={this.props.isInvalid}\r\n invalidText={this.props.invalidText}\r\n ></FormControl>\r\n <span style={{ visibility: \"hidden\", height: \"1px\" }}>{text}</span>\r\n {this.props.usePlaceHolderForMinWidth && \r\n <span style={{ visibility: \"hidden\", height: \"1px\" }}>{this.props.field.placeholder}</span>\r\n }\r\n </div>\r\n });\r\n\r\n\r\n return (\r\n <Pill disableCollapse={this.props.disableCollapse ?? (f.controlType===ControlType.date ? true : false)} components={components} empty={!f.value} extraClass={`${(!this.props.field.optional && !this.props.field.value ? \"pill-missing\" : \"\")} ${(this.props.extraClasses ?? \"\")}`}></Pill>\r\n );\r\n }\r\n}\r\n","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Spinner = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n variant,\n animation,\n size,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n className,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'spinner');\n const bsSpinnerPrefix = `${bsPrefix}-${animation}`;\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, bsSpinnerPrefix, size && `${bsSpinnerPrefix}-${size}`, variant && `text-${variant}`)\n });\n});\nSpinner.displayName = 'Spinner';\nexport default Spinner;","export default function currencyFormatter(value: number): string {\r\n if(isNaN(value))\r\n return \"€ \";\r\n return \"€ \" + value?.toLocaleString('en-US', { useGrouping: true });\r\n}\r\nexport function currencyToNumber(value: string): number {\r\n return parseFloat(value.replace(\"€ \", \"\").replace(\",\",\"\"));\r\n}","import { getTooltip } from \"../components/Tooltip\";\r\nimport currencyFormatter from \"../helper/currencyFormatter\";\r\nimport { ControlType, DataType, Field, FormLookupItem } from \"../models/PortalMetadata\";\r\n\r\nexport class FieldsCollection {\r\n fields: Field[] = [];\r\n\r\n addLookupValues(name: string, values: FormLookupItem[]) {\r\n let f = this.getFieldByName(name);\r\n if (f) {\r\n f.lookupValues = values;\r\n }\r\n }\r\n\r\n addTextAsNumberField(name: string, label: string, maxLength: number = 100, optional: boolean = false): Field {\r\n var f = this.addField(name, label, DataType.string, ControlType.number, optional);\r\n f.maxLength = maxLength;\r\n return f;\r\n }\r\n\r\n addTextField(name: string, label: string, maxLength: number = 100, optional: boolean = false): Field {\r\n var f = this.addField(name, label, DataType.string, ControlType.text, optional);\r\n f.maxLength = maxLength;\r\n return f;\r\n }\r\n\r\n addBooleanField(name: string, label: string, optional: boolean = false): Field {\r\n let f = this.addField(name, label, DataType.boolean, ControlType.picklist, optional);\r\n f.options = [{ text: \"No\", value: 0 }, { text: \"Yes\", value: 1 }];\r\n return f;\r\n }\r\n\r\n addMultiTextField(name: string, label: string, optional: boolean = false): Field {\r\n var f = this.addField(name, label, DataType.string, ControlType.textarea, optional);\r\n f.maxLength = 500;\r\n return f;\r\n }\r\n\r\n addLookupField(name: string, label: string, optional: boolean = false): Field {\r\n let f = this.addField(name, label, DataType.entityReference, ControlType.lookup, optional);\r\n f.api = \"\";\r\n return f;\r\n };\r\n\r\n addNumberField(name: string, label: string, minValue: number, maxValue: number, optional: boolean = false): Field {\r\n let f = this.addField(name, label, DataType.number, ControlType.number, optional);\r\n f.minValue = minValue;\r\n f.maxValue = maxValue;\r\n return f;\r\n }\r\n\r\n addNumberWithControlsField(name: string, label: string, minValue: number, maxValue: number, optional: boolean = false): Field {\r\n let f = this.addField(name, label, DataType.number, ControlType.numberWithControls, optional);\r\n f.minValue = minValue;\r\n f.maxValue = maxValue;\r\n return f;\r\n }\r\n\r\n addDecimalField(name: string, label: string, minValue: number, maxValue: number, optional: boolean = false): Field {\r\n let f = this.addField(name, label, DataType.number, ControlType.decimal, optional);\r\n f.minValue = minValue;\r\n f.maxValue = maxValue;\r\n return f;\r\n }\r\n\r\n addCurrencyField(name: string, label: string, minValue: number, maxValue: number, optional: boolean = false): Field {\r\n let f = this.addField(name, label, DataType.number, ControlType.currency, optional);\r\n f.minValue = minValue;\r\n f.maxValue = maxValue;\r\n return f;\r\n }\r\n\r\n addPicklistField(name: string, label: string, options: any[], optional: boolean = false): Field {\r\n let f = this.addField(name, label, DataType.number, ControlType.picklist, optional);\r\n f.options = options;\r\n return f;\r\n }\r\n\r\n addDateField(name: string, label: string, minValue: Date | null = null, maxValue: Date | null = null, optional: boolean = false): Field {\r\n let f = this.addField(name, label, DataType.date, ControlType.date, optional);\r\n if (minValue) {\r\n f.minValue = minValue;\r\n } else {\r\n f.minValue = new Date(1900, 1, 1);\r\n }\r\n if (maxValue) f.maxValue = maxValue;\r\n return f;\r\n }\r\n\r\n addField(name: string, label: string, dataType: DataType, controlType: ControlType, optional: boolean = false): Field {\r\n let f = {\r\n name: name,\r\n label: label,\r\n dataType: dataType,\r\n controlType: controlType,\r\n tooltip: null,\r\n originalValue: \"\",\r\n value: \"\",\r\n isPill: true,\r\n isDirty: false,\r\n api: null,\r\n lookupValues: null,\r\n options: null,\r\n dateValue: null,\r\n optional: optional,\r\n } as Field;\r\n this.fields.push(f);\r\n return f;\r\n }\r\n\r\n isNumber(value: any): boolean {\r\n if (value === null || value === undefined || value === \"\")\r\n return false;\r\n\r\n if (value.toString().trim() === \"\")\r\n return false;\r\n\r\n if (isNaN(Number(value)))\r\n return false;\r\n\r\n return true;\r\n }\r\n\r\n getAsEntity(idAttribute: string, idValue: string, record: any) {\r\n var newEntity: any = {};\r\n newEntity[idAttribute] = idValue;\r\n let dirtyFields: any[] = [];\r\n for (let i = 0; i < this.fields.length; i++) {\r\n let f = this.fields[i];\r\n if (f.isDirty) {\r\n dirtyFields.push(f);\r\n newEntity[f.name] = this.getFieldValueForEntity(f, record);\r\n }\r\n }\r\n newEntity[\"updatedFields\"] = dirtyFields.map(item => { return item.name; }).join(\",\");\r\n return newEntity;\r\n }\r\n\r\n getFieldValue(f: Field, data: any) {\r\n if (f.dataType === DataType.boolean) {\r\n return data[f.name] === true ? \"1\" : \"0\";\r\n }\r\n else if (f.dataType === DataType.date) {\r\n return data[f.name] ? new Date(data[f.name]) : null;\r\n }\r\n else if (f.controlType === ControlType.currency) {\r\n return this.isNumber(data[f.name]) ? currencyFormatter(parseInt(data[f.name])) : \"\";\r\n }\r\n else if (f.dataType === DataType.number) {\r\n return this.isNumber(data[f.name]) ? parseInt(data[f.name]) : \"\";\r\n }\r\n return data[f.name] ? data[f.name] : undefined;\r\n }\r\n\r\n getFieldValueForEntity(f: Field, data: any) {\r\n if (f.dataType === DataType.boolean) {\r\n return data[f.name];\r\n }\r\n else if (f.dataType === DataType.date) {\r\n return data[f.name] ? new Date(data[f.name]) : null;\r\n }\r\n else if (f.controlType === ControlType.currency) {\r\n return this.isNumber(data[f.name]?.replace(\",\", \"\")) ? parseInt(data[f.name]?.replace(\",\", \"\")) : null;\r\n }\r\n else if (f.dataType === DataType.number) {\r\n return this.isNumber(data[f.name]) ? parseInt(data[f.name]) : null;\r\n }\r\n return data[f.name] ? data[f.name] : undefined;\r\n }\r\n\r\n updateFieldValue(name: string, value: any) {\r\n let f = this.getFieldByName(name);\r\n f.value = value;\r\n f.isDirty = f.value !== f.originalValue;\r\n if (f.controlType === ControlType.lookup && value === null) {\r\n f.value = \"-\";\r\n }\r\n }\r\n\r\n updateModel(model: any, name: string, value: any) {\r\n let f = this.getFieldByName(name);\r\n\r\n if (f.controlType === ControlType.currency && value != null) {\r\n model[name] = value.replace(\"€\", \"\").replaceAll(\",\", \"\").replaceAll(\" \", \"\");\r\n } else if (f.dataType === DataType.number) {\r\n if (this.isNumber(value))\r\n model[name] = parseInt(value);\r\n else\r\n model[name] = null;\r\n }\r\n else if (f.dataType === DataType.boolean && value != null) {\r\n model[name] = value === \"1\" ? true : false;\r\n }\r\n else if (f.dataType === DataType.date && value != null)\r\n model[name] = new Date(value);\r\n else\r\n model[name] = value;\r\n }\r\n\r\n public loadData(data: any, tooltips: any[], isPill: boolean | true, handleChange: any, handleDateChange?: any) {\r\n this.fields.forEach(f => {\r\n f.originalValue = this.getFieldValue(f, data);\r\n f.value = this.getFieldValue(f, data);\r\n f.tooltip = getTooltip(tooltips, f.name);\r\n f.isPill = isPill;\r\n if (f.dataType === DataType.date) {\r\n f.handleChange = handleDateChange;\r\n f.dateValue = this.getFieldValue(f, data);\r\n }\r\n else\r\n f.handleChange = handleChange;\r\n });\r\n }\r\n\r\n public getFieldByName(name: string): Field {\r\n let f = this.fields.find((field) => { return field.name === name });\r\n if (f === undefined)\r\n return this.addTextField(name, `Field '${name}' not found`);\r\n return f;\r\n }\r\n\r\n public getFieldValueByName(f: string, data: any) {\r\n let field = this.getFieldByName(f);\r\n return this.getFieldValue(field, data);\r\n }\r\n}","import { FieldsCollection } from './FieldsCollection';\r\n\r\nexport class Applicant2SetupFieldsCollection extends FieldsCollection {\r\n constructor() {\r\n super();\r\n this.addTextField(\"setupFirstName\", \"First Name\", 50);\r\n this.addTextField(\"setupLastName\", \"Last Name\", 50);\r\n this.addTextField(\"setupEmailAddress\", \"E-mail\", 100);\r\n }\r\n}","import React from 'react';\r\nimport 'bootstrap/dist/css/bootstrap.min.css';\r\nimport { Row, Container, Stack, Col } from \"react-bootstrap\";\r\nimport '../pages/Applicant.css';\r\nimport { InputPill } from './Pills/InputPill';\r\nimport axios from 'axios';\r\nimport { UserContextComponent } from './UserContextComponent';\r\nimport { ControlType, DataType, Field } from '../models/PortalMetadata';\r\nimport * as Icons from \"react-bootstrap\";\r\nimport { Applicant2SetupFieldsCollection } from '../forms/Applicant2SetupFields';\r\nimport { FieldsCollection } from '../forms/FieldsCollection';\r\n\r\ninterface IApplicantSetupState {\r\n saving:boolean;\r\n fields: FieldsCollection;\r\n error: string;\r\n}\r\n\r\nexport class ApplicantSetup extends UserContextComponent<any, IApplicantSetupState> {\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.save = this.save.bind(this);\r\n this.handleChange = this.handleChange.bind(this);\r\n var fields = new Applicant2SetupFieldsCollection();\r\n for (var f in fields.fields) {\r\n fields.fields[f].handleChange = this.handleChange;\r\n }\r\n\r\n this.state = {\r\n saving: false,\r\n error: \"\",\r\n fields: fields\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n let context = this.getContext();\r\n }\r\n\r\n allowedSave () {\r\n var firstName = this.state.fields.getFieldByName(\"setupFirstName\").value ?? \"\";\r\n var lastName = this.state.fields.getFieldByName(\"setupLastName\").value ?? \"\";\r\n var email = this.state.fields.getFieldByName(\"setupEmailAddress\").value ?? \"\";\r\n return firstName !== \"\" && lastName !== \"\" && email !== \"\";\r\n }\r\n\r\n validateEmail = (email:string) => {\r\n const emailRegex = /^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+$/;\r\n return emailRegex.test(email);\r\n };\r\n\r\n save() {\r\n let context = this.getContext();\r\n\r\n if (!this.allowedSave()) {\r\n this.setState({error: \"All the fields are required to create the secondary applicant\"});\r\n return;\r\n }\r\n\r\n var emailField = this.state.fields.getFieldByName(\"setupEmailAddress\");\r\n var email = (emailField.value as string).trim();\r\n if (!this.validateEmail(email)) {\r\n this.setState({error: \"Please enter a valid email address for the secondary applicant\"});\r\n return;\r\n }\r\n\r\n if (email.trim().toLowerCase() === context.contact?.emailAddress.trim().toLowerCase()) {\r\n this.setState({error: \"You cannot use your own email address for the secondary applicant\"});\r\n return;\r\n }\r\n\r\n this.setState({saving: true});\r\n var firstName = this.state.fields.getFieldByName(\"setupFirstName\");\r\n var lastName = this.state.fields.getFieldByName(\"setupLastName\");\r\n var newContact:any = {mortgageId: context.mortgage?.mortgageId, firstName: firstName.value, lastName: lastName.value, emailAddress: email};\r\n axios.post('/Contacts/SecondaryApplicantSetup', newContact)\r\n .then((response) => {\r\n //this.props.finished();\r\n window.location.reload();\r\n this.setState({saving: false});\r\n });\r\n\r\n }\r\n\r\n handleChange(event: any) {\r\n const target = event.target;\r\n let value = target.value;\r\n const name = target.name || target.getAttribute('name');\r\n\r\n if (!name)\r\n return;\r\n\r\n let f = this.state.fields.getFieldByName(name);\r\n\r\n if (f.dataType === DataType.string && f.maxLength) {\r\n if (value !== null && value.length > f.maxLength) {\r\n alert(`Maximum length for '${f.label}' is ${f.maxLength}`);\r\n return;\r\n }\r\n }\r\n f.value = value;\r\n\r\n this.setState({ fields: this.state.fields });\r\n }\r\n\r\n render() {\r\n let context = this.getContext();\r\n\r\n return (\r\n <>\r\n <Container className=\"pill-form\">\r\n <>\r\n <Container>\r\n <Row>\r\n <h1 className='m pb-3'>Add your co-applicant:</h1>\r\n </Row>\r\n <Row>\r\n <Stack gap={1} direction=\"horizontal\" className=\"pill-stack\">\r\n <InputPill extraClasses=\"pill-missing-fw\" hideIfValue={false} field={this.state.fields.getFieldByName(\"setupFirstName\")} ></InputPill>\r\n <InputPill extraClasses=\"pill-missing-fw\" hideIfValue={false} field={this.state.fields.getFieldByName(\"setupLastName\")} ></InputPill>\r\n <InputPill extraClasses=\"pill-missing-fw email-pill\" hideIfValue={false} field={this.state.fields.getFieldByName(\"setupEmailAddress\")} ></InputPill>\r\n </Stack>\r\n </Row>\r\n {this.state.error !== \"\" &&\r\n <Row>\r\n <p className='error'>{this.state.error}</p>\r\n </Row>\r\n }\r\n </Container>\r\n <Container>\r\n <Row className=\"pt-5 text-end justify-end\">\r\n <Col xs={10}></Col>\r\n <Col>\r\n {this.state.saving &&\r\n <button type=\"button\" className=\"btn btn-dark next\"><Icons.Spinner size=\"sm\" animation=\"border\" role=\"status\" /></button>\r\n }\r\n {!this.state.saving &&\r\n <button type=\"button\" className=\"btn btn-dark next\" style={{paddingTop:10, paddingBottom:10}} onClick={this.save}>Continue</button>\r\n }\r\n </Col>\r\n </Row>\r\n </Container>\r\n </>\r\n </Container>\r\n </>\r\n );\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n","import React from 'react';\r\nimport 'bootstrap/dist/css/bootstrap.min.css';\r\nimport { Container, Modal } from \"react-bootstrap\";\r\nimport '../pages/Applicant.css';\r\n\r\nimport { UserContextComponent } from './UserContextComponent';\r\n\r\nimport { ApplicantSetup } from './ApplicantSetup';\r\n\r\n\r\ninterface IApplicantSetupDialogProps {\r\n show: boolean;\r\n centered: boolean | undefined;\r\n finished: any;\r\n}\r\n\r\nexport class ApplicantSetupDialog extends UserContextComponent<IApplicantSetupDialogProps, any> {\r\n\r\n constructor(props: any) {\r\n super(props);\r\n }\r\n\r\n render() {\r\n let context = this.getContext();\r\n\r\n return (\r\n <Modal size=\"lg\" fullscreen=\"lg-down\" show={this.props.show} centered>\r\n <div className=\"modal-content\" style={{backgroundColor:'var(--chartreuse)', borderWidth:0}}>\r\n <Modal.Body style={{background:'transparent'}}>\r\n <Container className=\"text-center justify-center\">\r\n <div className=\"page-title pb-2\">\r\n <h1 className=\"pb-2\">Welcome to the portal, {context.contact?.firstName}!</h1>\r\n <p className=\"pb-2\">Please share the basic details of your co-applicant so that we can add them to your mortgage. All fields are mandatory to get you up and running.</p>\r\n <hr/>\r\n </div>\r\n <div className=\"hr\"></div>\r\n <ApplicantSetup finished={this.props.finished} />\r\n </Container>\r\n </Modal.Body>\r\n </div>\r\n </Modal>\r\n );\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n","import React from 'react';\r\nimport 'bootstrap/dist/css/bootstrap.min.css';\r\nimport '../../pages/Applicant.css';\r\nimport { UserContextComponent } from '../UserContextComponent';\r\nimport { Link } from 'react-router-dom';\r\nimport { MortgageType } from '../../models/PortalMortgageModel';\r\n\r\n\r\nexport class AppointSolicitorTile extends UserContextComponent<any, any> {\r\n\r\n constructor(props: any) {\r\n super(props);\r\n }\r\n\r\n render() {\r\n var context = this.getContext();\r\n\r\n return (\r\n <div className=\"text-start tall boxty grid box-teal-outline m-3\">\r\n <h3 className=\"pb-3\">You need to appoint a Solicitor</h3>\r\n {context.mortgage!.type === MortgageType.PurchasingaNewHome\r\n ? <p>When you go sale agreed, you will need to provide solicitor details for conveyancing.</p>\r\n : <p>You will need to provide solicitor details for conveyancing.</p>\r\n }\r\n <p className='mt-3'>Don’t delay! Add your solicitor now, or engage <strong>Beam</strong>, our online conveyancing partner.</p>\r\n <Link to=\"/solicitor-details\" className=\" a-s-e\"><button className=\"btn fw big btn-light next-secondary pe-5 mt-3\">Add solicitor</button></Link>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n","import axios from \"axios\";\r\nimport React from \"react\";\r\nimport { Button, Col, Container, Modal, Row, Stack } from \"react-bootstrap\";\r\nimport * as Icons from \"react-bootstrap\";\r\nimport {\r\n MortgageType,\r\n PortalMortgageModel,\r\n} from \"../../models/PortalMortgageModel\";\r\nimport { UserContextComponent } from \"../UserContextComponent\";\r\nimport { Link, Navigate } from \"react-router-dom\";\r\nimport UserContextState from \"../UserContext\";\r\n\r\nexport interface IInsuranceQuoteButtonProps {\r\n context?: UserContextState;\r\n mortgage: PortalMortgageModel;\r\n alreadyQuoted: boolean;\r\n mini?: boolean;\r\n}\r\n\r\ninterface InsuranceQuoteState {\r\n showConfirm: boolean;\r\n confirmation: boolean;\r\n loader: boolean;\r\n missingDetails: boolean;\r\n missingDetailsResponse?: ProfileCheckResponse;\r\n}\r\n\r\nexport interface ProfileCheckResponse {\r\n missingDetails: boolean;\r\n missingApplicant2: boolean;\r\n missingApplicant1Fields: string[];\r\n missingApplicant2Fields: string[];\r\n}\r\nexport class InsuranceValidator {\r\n public static profileComplete(\r\n mortgage: PortalMortgageModel\r\n ): ProfileCheckResponse {\r\n var response: ProfileCheckResponse = {\r\n missingDetails: false,\r\n missingApplicant2: false,\r\n missingApplicant1Fields: [],\r\n missingApplicant2Fields: [],\r\n };\r\n\r\n var applicant1 = mortgage.primaryApplicant;\r\n if (applicant1.birthDate === null) {\r\n response.missingApplicant1Fields.push(\"Date of birth\");\r\n }\r\n if (applicant1.smoker === null) {\r\n response.missingApplicant1Fields.push(\"Smoker\");\r\n }\r\n if (applicant1.sex === null) {\r\n response.missingApplicant1Fields.push(\"Gender\");\r\n }\r\n\r\n if (mortgage?.applicationType === \"Joint\") {\r\n if (!mortgage?.secondaryApplicant) {\r\n response.missingApplicant2 = true;\r\n } else {\r\n var applicant2 = mortgage.secondaryApplicant;\r\n if (applicant2.birthDate === null) {\r\n response.missingApplicant2Fields.push(\"Date of birth\");\r\n }\r\n if (applicant2.smoker === null) {\r\n response.missingApplicant2Fields.push(\"Smoker\");\r\n }\r\n if (applicant2.sex === null) {\r\n response.missingApplicant2Fields.push(\"Gender\");\r\n }\r\n }\r\n }\r\n\r\n response.missingDetails =\r\n response.missingApplicant2 ||\r\n response.missingApplicant1Fields.length +\r\n response.missingApplicant2Fields.length >\r\n 0;\r\n return response;\r\n }\r\n}\r\n\r\nexport class InsuranceQuoteButton extends React.Component<\r\n IInsuranceQuoteButtonProps,\r\n InsuranceQuoteState\r\n> {\r\n constructor(props: IInsuranceQuoteButtonProps) {\r\n super(props);\r\n this.requestAQuote = this.requestAQuote.bind(this);\r\n this.state = {\r\n confirmation: false,\r\n loader: false,\r\n showConfirm: false,\r\n missingDetails: false,\r\n };\r\n }\r\n\r\n private requestAQuote() {\r\n var missingDetailsResponse = InsuranceValidator.profileComplete(\r\n this.props.mortgage!\r\n );\r\n if (missingDetailsResponse.missingDetails) {\r\n this.setState({\r\n missingDetails: true,\r\n missingDetailsResponse: missingDetailsResponse,\r\n });\r\n return;\r\n }\r\n\r\n this.setState({ loader: true });\r\n\r\n axios\r\n .post(\"/AIPApplications/RequestAQuote\", null, {\r\n params: { mortgageId: this.props.mortgage.mortgageId },\r\n })\r\n .then((response) => {\r\n this.props.mortgage.hasInsuranceQuote = true;\r\n this.setState({ confirmation: true, loader: false });\r\n });\r\n }\r\n\r\n render() {\r\n if (this.state.loader)\r\n return (\r\n <button className=\"btn btn-light mini\">\r\n <Icons.Spinner size=\"sm\" animation=\"border\" role=\"status\" />\r\n </button>\r\n );\r\n\r\n if (this.state.confirmation)\r\n return this.props.mini ? (\r\n <div className=\"btn btn-light mini nohover\">done</div>\r\n ) : (\r\n <div className=\"doddltext\">\r\n We have received your request and a quote should arrive shortly\r\n </div>\r\n );\r\n\r\n return (\r\n <>\r\n {!this.props.mini && (\r\n <div className=\"cta-div\">\r\n <span className=\"doddl-white text-start\">\r\n Simplifying insurance so that you understand what policy best\r\n suits your needs at any current stage of life, at no cost to you.\r\n </span>\r\n </div>\r\n )}\r\n {this.props.alreadyQuoted ? (\r\n this.props.mini ? (\r\n <button\r\n className=\"btn btn-standard mini\"\r\n onClick={(e) => {\r\n this.setState({ showConfirm: true });\r\n }}\r\n >\r\n quoted\r\n </button>\r\n ) : (\r\n <button\r\n disabled\r\n className=\"btn btn-secondary\"\r\n onClick={(e) => {\r\n this.requestAQuote();\r\n }}\r\n >\r\n Quote generated\r\n </button>\r\n )\r\n ) : this.props.mini ? (\r\n <button\r\n className=\"btn btn-standard mini\"\r\n onClick={(e) => {\r\n this.requestAQuote();\r\n }}\r\n >\r\n quote\r\n </button>\r\n ) : (\r\n <button\r\n className=\"btn btn-secondary next\"\r\n onClick={(e) => {\r\n this.requestAQuote();\r\n }}\r\n >\r\n Get covered\r\n </button>\r\n )}\r\n <Modal\r\n centered\r\n size=\"lg\"\r\n fullscreen=\"lg-down\"\r\n show={this.state.showConfirm}\r\n onHide={() => {\r\n this.setState({ showConfirm: false });\r\n }}\r\n >\r\n <Modal.Header closeButton></Modal.Header>\r\n <Modal.Body>\r\n <div className=\"text-center mb-5 ps-5 pe-5\">\r\n <h1 className=\"impact\">Life cover</h1>\r\n <p className=\"\">\r\n Your quote should arrive in your email inbox within 5 minutes,\r\n If you have not received it, or would like a new quote, please\r\n contact your advisor\r\n </p>\r\n </div>\r\n <Stack\r\n direction=\"horizontal\"\r\n gap={3}\r\n className=\"text-center justify-center\"\r\n >\r\n <button\r\n className=\"btn medium btn-light\"\r\n onClick={() => {\r\n this.setState({ showConfirm: false });\r\n }}\r\n >\r\n Close\r\n </button>\r\n </Stack>\r\n </Modal.Body>\r\n <Modal.Footer></Modal.Footer>\r\n </Modal>\r\n <Modal\r\n centered\r\n size=\"lg\"\r\n fullscreen=\"lg-down\"\r\n show={this.state.missingDetails}\r\n onHide={() => {\r\n this.setState({ missingDetails: false });\r\n }}\r\n >\r\n <Modal.Header closeButton></Modal.Header>\r\n <Modal.Body>\r\n <div className=\"text-center mb-5 ps-5 pe-5\">\r\n <h1 className=\"impact\">We need more details</h1>\r\n <p className=\"\">\r\n The following details are needed before we can generate a quote\r\n </p>\r\n </div>\r\n <Container>\r\n <Row className=\"justify-center\">\r\n <>\r\n {this.state.missingDetailsResponse &&\r\n this.state.missingDetailsResponse.missingApplicant1Fields\r\n .length > 0 && (\r\n <Col xs={6}>\r\n <div className=\"boxty box-sage auto-margin\">\r\n <div className=\"box-block-80 text-start\">\r\n <h2>\r\n {this.props.mortgage?.primaryApplicant.firstName}{\" \"}\r\n </h2>\r\n {this.state.missingDetailsResponse?.missingApplicant1Fields.map(\r\n (item: string, idx: number) => {\r\n return (\r\n <p key={`app1-missing-${idx}`}>\r\n <i className=\"fa-solid fa-circle-chevron-right\"></i>{\" \"}\r\n {item}\r\n </p>\r\n );\r\n }\r\n )}\r\n </div>\r\n <Link\r\n to={\"/personal1\"}\r\n className=\"btn fw big btn-secondary next-secondary pe-5 mt-3 a-s-e\"\r\n onClick={(e) => {\r\n this.setState({ missingDetails: false });\r\n }}\r\n >\r\n Go to profile\r\n </Link>\r\n </div>\r\n </Col>\r\n )}\r\n {this.state.missingDetailsResponse &&\r\n (this.state.missingDetailsResponse.missingApplicant2 ||\r\n this.state.missingDetailsResponse.missingApplicant2Fields\r\n .length > 0) && (\r\n <Col xs={6}>\r\n <div className=\"boxty box-sage auto-margin\">\r\n <div className=\"box-block-80 text-start\">\r\n <h2>\r\n {this.props.mortgage?.secondaryApplicant\r\n ?.firstName ?? \"Missing Applicant\"}{\" \"}\r\n </h2>\r\n {this.state.missingDetailsResponse?.missingApplicant2Fields.map(\r\n (item: string, idx: number) => {\r\n return (\r\n <p key={`app2-missing-${idx}`}>\r\n <i className=\"fa-solid fa-circle-chevron-right\"></i>{\" \"}\r\n {item}\r\n </p>\r\n );\r\n }\r\n )}\r\n </div>\r\n <Link\r\n to={\"/personal2\"}\r\n className=\"btn fw big btn-secondary next-secondary pe-5 mt-3 a-s-e\"\r\n onClick={(e) => {\r\n this.setState({ missingDetails: false });\r\n }}\r\n >\r\n Go to profile\r\n </Link>\r\n </div>\r\n </Col>\r\n )}\r\n </>\r\n </Row>\r\n </Container>\r\n </Modal.Body>\r\n <Modal.Footer></Modal.Footer>\r\n </Modal>\r\n </>\r\n );\r\n }\r\n}\r\n","import React from \"react\";\r\nimport \"bootstrap/dist/css/bootstrap.min.css\";\r\nimport \"../../pages/Applicant.css\";\r\nimport { UserContextComponent } from \"../UserContextComponent\";\r\nimport { Link } from \"react-router-dom\";\r\nimport * as Icons from \"react-bootstrap\";\r\nimport axios from \"axios\";\r\nimport { MortgageType } from \"../../models/PortalMortgageModel\";\r\nimport { Col, Container, Modal, Row } from \"react-bootstrap\";\r\nimport {\r\n InsuranceValidator,\r\n ProfileCheckResponse,\r\n} from \"../AIP/InsuranceQuoteButton\";\r\n\r\ninterface ILifeCoverTileProps {\r\n padding?: boolean;\r\n onDone?: any;\r\n}\r\n\r\ninterface ILifeCoverTileState {\r\n quoteLoader: boolean;\r\n quoted: boolean;\r\n missingDetails: boolean;\r\n missingDetailsResponse?: ProfileCheckResponse;\r\n}\r\n\r\nexport class LifeCoverTile extends UserContextComponent<\r\n ILifeCoverTileProps,\r\n ILifeCoverTileState\r\n> {\r\n constructor(props: any) {\r\n super(props);\r\n this.requestAQuote = this.requestAQuote.bind(this);\r\n this.state = { quoted: false, quoteLoader: false, missingDetails: false };\r\n }\r\n\r\n requestAQuote() {\r\n const context = this.getContext();\r\n var missingDetailsResponse = InsuranceValidator.profileComplete(\r\n context.mortgage!\r\n );\r\n if (missingDetailsResponse.missingDetails) {\r\n this.setState({\r\n missingDetails: true,\r\n missingDetailsResponse: missingDetailsResponse,\r\n });\r\n return;\r\n }\r\n\r\n this.setState({ quoteLoader: true });\r\n\r\n if (context.mortgage?.hasInsuranceQuote) {\r\n this.setState({ quoteLoader: false, quoted: true });\r\n if (this.props.onDone) this.props.onDone();\r\n } else {\r\n axios\r\n .post(\"/AIPApplications/RequestAQuote\", null, {\r\n params: { mortgageId: context.mortgage!.mortgageId },\r\n })\r\n .then((response) => {\r\n this.setState({ quoteLoader: false, quoted: true });\r\n this.props.onDone();\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n var context = this.getContext();\r\n var padding = this.props.padding ?? true;\r\n\r\n return (\r\n <>\r\n <div\r\n className={`text-start boxty tall grid box-teal-outline ${\r\n padding ? \"m-3\" : \"\"\r\n }`}\r\n >\r\n <h3 className=\"pb-3\">\r\n Get Life <br />\r\n Cover\r\n </h3>\r\n <p className=\"mb-3\">This is required for all mortgages.</p>\r\n {context.mortgage!.type === MortgageType.PurchasingaNewHome ? (\r\n <p>\r\n If you have not already been in contact with our life assurance\r\n specialists at doddl then now is the time.\r\n </p>\r\n ) : (\r\n <p>\r\n We work with all insurers and our team can find the best cover to\r\n meet your needs{\" \"}\r\n </p>\r\n )}\r\n {this.state.quoteLoader && (\r\n <div className=\"btn fw big btn-light mt-3 a-s-e\">\r\n <Icons.Spinner size=\"sm\" animation=\"border\" role=\"status\" />\r\n </div>\r\n )}\r\n {this.state.quoted && (\r\n <div className=\"btn fw big btn-light mt-3 a-s-e\">\r\n Quote generated\r\n </div>\r\n )}\r\n {!this.state.quoteLoader && !this.state.quoted && (\r\n <button\r\n className=\"btn fw big btn-light next-secondary pe-5 mt-3 a-s-e\"\r\n onClick={(e) => {\r\n this.requestAQuote();\r\n }}\r\n >\r\n Get a quote\r\n </button>\r\n )}\r\n </div>\r\n <Modal\r\n centered\r\n size=\"lg\"\r\n fullscreen=\"lg-down\"\r\n show={this.state.missingDetails}\r\n onHide={() => {\r\n this.setState({ missingDetails: false });\r\n }}\r\n >\r\n <Modal.Header closeButton></Modal.Header>\r\n <Modal.Body>\r\n <div className=\"text-center mb-5 ps-5 pe-5\">\r\n <h1 className=\"impact\">We need more details</h1>\r\n <p className=\"\">\r\n The following details are needed before we can generate a quote\r\n </p>\r\n </div>\r\n <Container>\r\n <Row className=\"justify-center\">\r\n <>\r\n {this.state.missingDetailsResponse &&\r\n this.state.missingDetailsResponse.missingApplicant1Fields\r\n .length > 0 && (\r\n <Col xs={6}>\r\n <div className=\"boxty box-sage auto-margin\">\r\n <div className=\"box-block-80 text-start\">\r\n <h2>\r\n {context.mortgage?.primaryApplicant.firstName}{\" \"}\r\n </h2>\r\n {this.state.missingDetailsResponse?.missingApplicant1Fields.map(\r\n (item: string, idx: number) => {\r\n return (\r\n <p key={`app1-missing-${idx}`}>\r\n <i className=\"fa-solid fa-circle-chevron-right\"></i>{\" \"}\r\n {item}\r\n </p>\r\n );\r\n }\r\n )}\r\n </div>\r\n <Link\r\n to={\"/personal1\"}\r\n className=\"btn fw big btn-secondary next-secondary pe-5 mt-3 a-s-e\"\r\n onClick={(e) => {\r\n this.setState({ missingDetails: false });\r\n }}\r\n >\r\n Go to profile\r\n </Link>\r\n </div>\r\n </Col>\r\n )}\r\n {this.state.missingDetailsResponse &&\r\n (this.state.missingDetailsResponse.missingApplicant2 ||\r\n this.state.missingDetailsResponse.missingApplicant2Fields\r\n .length > 0) && (\r\n <Col xs={6}>\r\n <div className=\"boxty box-sage auto-margin\">\r\n <div className=\"box-block-80 text-start\">\r\n <h2>\r\n {context.mortgage?.secondaryApplicant.firstName ??\r\n \"Missing Applicant\"}{\" \"}\r\n </h2>\r\n {this.state.missingDetailsResponse?.missingApplicant2Fields.map(\r\n (item: string, idx: number) => {\r\n return (\r\n <p key={`app2-missing-${idx}`}>\r\n <i className=\"fa-solid fa-circle-chevron-right\"></i>{\" \"}\r\n {item}\r\n </p>\r\n );\r\n }\r\n )}\r\n </div>\r\n <Link\r\n to={\"/personal2\"}\r\n className=\"btn fw big btn-secondary next-secondary pe-5 mt-3 a-s-e\"\r\n onClick={(e) => {\r\n this.setState({ missingDetails: false });\r\n }}\r\n >\r\n Go to profile\r\n </Link>\r\n </div>\r\n </Col>\r\n )}\r\n </>\r\n </Row>\r\n </Container>\r\n </Modal.Body>\r\n <Modal.Footer></Modal.Footer>\r\n </Modal>\r\n </>\r\n );\r\n }\r\n}\r\n","import axios from \"axios\";\r\nimport {\r\n MortgageType,\r\n PortalMortgageModel,\r\n YesNoBlank,\r\n} from \"../models/PortalMortgageModel\";\r\nimport { ProfileItemModel } from \"../models/ProfileItemModel\";\r\nimport \"bootstrap/dist/css/bootstrap.min.css\";\r\nimport { Link, Navigate } from \"react-router-dom\";\r\nimport { Col, Container, Modal, Row, Stack } from \"react-bootstrap\";\r\nimport { PortalPage } from \"../components/PortalPage\";\r\nimport { UserContext } from \"../components/UserContext\";\r\nimport UserContextState from \"../components/UserContext\";\r\nimport { appInsightsHelper } from \"../components/AppInsights\";\r\nimport { ProgressTile, ProgressTileSize } from \"../components/ProgressTile\";\r\nimport { UserContextComponent } from \"../components/UserContextComponent\";\r\nimport React from \"react\";\r\nimport { SolicitorButton } from \"../components/AIP/SolicitorButton\";\r\nimport { InsuranceQuoteButton } from \"../components/AIP/InsuranceQuoteButton\";\r\nimport { CTATiles } from \"../components/CTATiles\";\r\nimport { ApplicantSetup } from \"../components/ApplicantSetup\";\r\nimport { ApplicantSetupDialog } from \"../components/ApplicantSetupDialog\";\r\nimport { AppointSolicitorTile } from \"../components/Tiles/AppointSolicitorTile\";\r\nimport { LifeCoverTile } from \"../components/Tiles/LifeCoverTile\";\r\n\r\ninterface IProfileProps {\r\n splashScreen?: boolean;\r\n}\r\n\r\ninterface IProfileState {\r\n //mortgage: PortalMortgageModel | null;\r\n loading: boolean;\r\n isCompleted: boolean;\r\n navigateTo: string;\r\n missingSecondary: boolean;\r\n}\r\n\r\nexport class Profile extends UserContextComponent<\r\n IProfileProps,\r\n IProfileState\r\n> {\r\n static contextType = UserContext;\r\n static displayName = Profile.name;\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n isCompleted: false,\r\n navigateTo: \"\",\r\n missingSecondary: false,\r\n };\r\n this.formatNumbers = this.formatNumbers.bind(this);\r\n this.navigateToIncompletePage = this.navigateToIncompletePage.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n appInsightsHelper.trackPageView({ name: \"Profile\" });\r\n\r\n const context = this.context as UserContextState;\r\n var mortgage = context.mortgage;\r\n\r\n if (\r\n context.mortgage?.applicationType !== \"Single\" &&\r\n !context.mortgage?.secondaryApplicant &&\r\n this.state.missingSecondary === false\r\n ) {\r\n this.setState({ loading: false, missingSecondary: true });\r\n } else {\r\n this.setState({ loading: false });\r\n }\r\n\r\n //check percentages and redirect to completed if every of them 100%\r\n if (mortgage != null)\r\n if (\r\n mortgage.primaryApplicant.percentageOfCompletion === 100 &&\r\n (mortgage.secondaryApplicant === null ||\r\n mortgage.secondaryApplicant.percentageOfCompletion === 100) &&\r\n mortgage.percentageOfCompletion === 100\r\n )\r\n this.setState({ isCompleted: true });\r\n }\r\n\r\n navigateToIncompletePage() {\r\n const context = this.getContext();\r\n let mortgage = context.mortgage;\r\n if (mortgage === null) return;\r\n\r\n if (mortgage.primaryApplicant.percentageOfCompletion < 100) {\r\n this.setState({ navigateTo: \"/personal1\" });\r\n } else if (\r\n mortgage.applicationType != \"Single\" &&\r\n mortgage.secondaryApplicant.percentageOfCompletion < 100\r\n ) {\r\n this.setState({ navigateTo: \"/personal2\" });\r\n } else if (mortgage.mortgageDetailsPercentage < 100) {\r\n this.setState({ navigateTo: \"/shared\" });\r\n } else if (mortgage.documentsPercentComplete < 100) {\r\n this.setState({ navigateTo: \"/documents\" });\r\n }\r\n }\r\n\r\n getIconColor(percent: number) {\r\n if (percent === 0) return \"var(--sage)\";\r\n if (percent >= 100) return \"var(--teal)\";\r\n return \"var(--chartreuse)\";\r\n }\r\n\r\n onApplicantSetupFinished() {\r\n this.setState({ missingSecondary: false });\r\n }\r\n\r\n render() {\r\n if (this.state.navigateTo !== \"\")\r\n return <Navigate to={this.state.navigateTo}></Navigate>;\r\n\r\n if (this.state.loading)\r\n return (\r\n <p>\r\n <em>Loading...</em>\r\n </p>\r\n );\r\n\r\n const context = this.getContext();\r\n let mortgage: PortalMortgageModel | null = context.mortgage;\r\n\r\n if (mortgage === null) return;\r\n\r\n let switcherOrSaleAgreedPurchaser =\r\n context.mortgage?.type === MortgageType.RemortgagingExistingLoan ||\r\n context.mortgage?.saleAgreed;\r\n\r\n // Calculate all the different percentages for the progress tiles\r\n let mortgageDetailsPerc = 0;\r\n if (switcherOrSaleAgreedPurchaser)\r\n mortgageDetailsPerc =\r\n (context.mortgage!.mortgageDetailsPercentage +\r\n context.mortgage!.propertyDetailsPercentage) /\r\n 2;\r\n else mortgageDetailsPerc = context.mortgage!.mortgageDetailsPercentage;\r\n\r\n let a1TimeLeft = Math.round(\r\n 16 - (16 * mortgage.primaryApplicant.percentageOfCompletion) / 100\r\n );\r\n let mdTimeLeft = Math.round(8 - (8 * mortgageDetailsPerc) / 100);\r\n let docTimeLeft = Math.round(\r\n 20 - (20 * mortgage.documentsPercentComplete) / 100\r\n );\r\n\r\n // Create the list of profile tiles to display\r\n var items: ProfileItemModel[] = [];\r\n items.push(\r\n Profile.createProfileItem(\r\n 1,\r\n <>\r\n <span className=\"nowrap\">\r\n <strong>{mortgage.primaryApplicant.firstName}</strong>\r\n </span>\r\n <br />\r\n <span className=\"nowrap\">{mortgage.primaryApplicant.lastName}</span>\r\n </>,\r\n \"Let's confirm the details we have for you \" +\r\n mortgage.primaryApplicant.firstName +\r\n \", and we'll capture a few additional details, such as nationality, etc.\",\r\n mortgage.primaryApplicant.percentageOfCompletion,\r\n <span className=\"nowrap\">\r\n <i className=\"far fa-clock pe-2\" />\r\n {a1TimeLeft} mins\r\n </span>,\r\n \"/personal1\",\r\n mortgage.primaryApplicant.firstName.substring(0, 1).toUpperCase() +\r\n mortgage.primaryApplicant.lastName.substring(0, 1).toUpperCase(),\r\n <i\r\n className=\"far fa-user\"\r\n style={{\r\n fontSize: 120,\r\n color: this.getIconColor(\r\n mortgage.primaryApplicant.percentageOfCompletion\r\n ),\r\n }}\r\n />\r\n )\r\n );\r\n if (mortgage.applicationType != \"Single\" && mortgage.secondaryApplicant) {\r\n let a2TimeLeft = Math.round(\r\n 16 - (16 * mortgage.secondaryApplicant.percentageOfCompletion) / 100\r\n );\r\n items.push(\r\n Profile.createProfileItem(\r\n 2,\r\n <>\r\n <span className=\"nowrap\">\r\n <strong>{mortgage.secondaryApplicant.firstName}</strong>\r\n </span>\r\n <br />\r\n <span className=\"nowrap\">\r\n {mortgage.secondaryApplicant.lastName}\r\n </span>\r\n </>,\r\n \"Let's confirm the details we have for you \" +\r\n mortgage.secondaryApplicant.firstName +\r\n \", and we'll capture a few additional details, such as nationality, etc.\",\r\n mortgage.secondaryApplicant.percentageOfCompletion,\r\n <span className=\"nowrap\">\r\n <i className=\"far fa-clock pe-2\" />\r\n {a2TimeLeft} mins\r\n </span>,\r\n \"/personal2\",\r\n mortgage.secondaryApplicant.firstName.substring(0, 1).toUpperCase() +\r\n mortgage.secondaryApplicant.lastName.substring(0, 1).toUpperCase(),\r\n <i\r\n className=\"far fa-user\"\r\n style={{\r\n fontSize: 120,\r\n color: this.getIconColor(\r\n mortgage.secondaryApplicant.percentageOfCompletion\r\n ),\r\n }}\r\n />\r\n )\r\n );\r\n }\r\n items.push(\r\n Profile.createProfileItem(\r\n 4,\r\n <>\r\n <strong>Mortgage</strong>\r\n <br />\r\n Details\r\n </>,\r\n \"First up, we'll ask a few basic questions about your joint situation, income, and outgoings\",\r\n mortgageDetailsPerc,\r\n <span className=\"nowrap\">\r\n <i className=\"far fa-clock pe-2\" />\r\n {mdTimeLeft} mins\r\n </span>,\r\n \"/shared\",\r\n <i className=\"fa fa-clipboard-list\" />,\r\n <i\r\n className=\"fa fa-house\"\r\n style={{\r\n fontSize: 120,\r\n color: this.getIconColor(mortgageDetailsPerc),\r\n }}\r\n />\r\n )\r\n );\r\n\r\n items.push(\r\n Profile.createProfileItem(\r\n 5,\r\n <>\r\n Your\r\n <br />\r\n <strong>Documents</strong>\r\n </>,\r\n \"Details about your documents\",\r\n mortgage.documentsPercentComplete,\r\n <span className=\"nowrap\">\r\n <i className=\"far fa-clock pe-2\" />\r\n {docTimeLeft} mins\r\n </span>,\r\n \"/documents\",\r\n <i className=\"far fa-folder-open\" />,\r\n <i\r\n className=\"far fa-folder-open\"\r\n style={{\r\n fontSize: 120,\r\n color: this.getIconColor(mortgage.documentsPercentComplete),\r\n }}\r\n />\r\n )\r\n );\r\n\r\n // Map the progress tiles to a list of links\r\n var result = items.map((item) => (\r\n <Link\r\n key={item.id}\r\n to={item.url!}\r\n className=\"list-group-item list-group-item-action boxless\"\r\n >\r\n <Stack className=\"all-content-center\">\r\n <ProgressTile\r\n progressTileSize={ProgressTileSize.Large}\r\n key={\"ApplicantTile1-\" + item.id.toString()}\r\n text={item.initials}\r\n title={item.title}\r\n percent={item.percent}\r\n duration={item.duration}\r\n icon={item.icon}\r\n />\r\n </Stack>\r\n </Link>\r\n ));\r\n\r\n // Calculate the title to display depending on who's logged in\r\n let contactId: string = context.contact!.contactId;\r\n let titleName = mortgage.secondaryApplicant?.firstName;\r\n let otherName = (\r\n <>\r\n {\" \"}\r\n and{\" \"}\r\n <span className=\"doddltext\">{mortgage.primaryApplicant.firstName}</span>\r\n </>\r\n );\r\n if (mortgage.primaryApplicant.contactId === contactId) {\r\n titleName = mortgage.primaryApplicant.firstName;\r\n if (mortgage.secondaryApplicant == null) otherName = <></>;\r\n else\r\n otherName = (\r\n <>\r\n {\" \"}\r\n and{\" \"}\r\n <span className=\"doddltext\">\r\n {mortgage.secondaryApplicant?.firstName}\r\n </span>\r\n </>\r\n );\r\n }\r\n\r\n return (\r\n <>\r\n {!this.props.splashScreen && (\r\n <PortalPage\r\n alignTitleLeft={true}\r\n className=\"bump-right-profile\"\r\n title={\r\n <span>\r\n <span className=\"doddltext\">Hi</span> {titleName}\r\n {otherName},\r\n </span>\r\n }\r\n description={\r\n <p>\r\n Let's complete your digital application form.\r\n <br />\r\n What do you want to tackle next?\r\n </p>\r\n }\r\n >\r\n <Row className=\"text-start max-w-940\">\r\n {result.map((item, idx) => {\r\n return (\r\n <Col key={\"item-\" + idx} md={6} xl={3}>\r\n {item}\r\n </Col>\r\n );\r\n })}\r\n </Row>\r\n\r\n <Row className=\"text-start max-w-wide\">\r\n <Col style={{ paddingLeft: 40, paddingTop: 40 }}>\r\n <p className=\"text-start\">\r\n Avoid delays later by getting these other requirements in\r\n order as soon as you can too.\r\n </p>\r\n </Col>\r\n </Row>\r\n\r\n {/* <CTATiles mortgage={mortgage} /> */}\r\n <Row>\r\n <Col xs={4}>\r\n <AppointSolicitorTile />\r\n </Col>\r\n <Col xs={4}>\r\n {!context.mortgage?.hasInsuranceQuote && <LifeCoverTile />}\r\n </Col>\r\n <Col />\r\n </Row>\r\n <ApplicantSetupDialog\r\n show={this.state.missingSecondary === true}\r\n centered\r\n finished={this.onApplicantSetupFinished}\r\n />\r\n </PortalPage>\r\n )}\r\n {this.props.splashScreen && (\r\n <Row className=\"justify-center\">\r\n {result.map((item, idx) => {\r\n return (\r\n <Col\r\n key={\"item-\" + idx}\r\n md={6}\r\n xl={mortgage?.applicationType === \"Single\" ? 4 : 3}\r\n >\r\n {item}\r\n </Col>\r\n );\r\n })}\r\n </Row>\r\n )}\r\n </>\r\n );\r\n }\r\n\r\n async populateData() {\r\n const context = this.context as UserContextState;\r\n var mortgageId = context.contact?.mortgageId;\r\n axios\r\n .get(\"/mortgages/GetMortgageByMortgageId?mortgageId=\" + mortgageId)\r\n .then((response) => {\r\n this.setState({ loading: false });\r\n //check percentages and redirect to completed if every of them 100%\r\n if (response.data != null)\r\n if (\r\n response.data.primaryApplicant.percentageOfCompletion === 100 &&\r\n response.data.secondaryApplicant.percentageOfCompletion === 100 &&\r\n response.data.percentageOfCompletion === 100\r\n )\r\n this.setState({ isCompleted: true });\r\n })\r\n .catch((error) => {\r\n if (error.response.statusCode === 401) {\r\n alert(\"Unauthorized\");\r\n }\r\n });\r\n }\r\n\r\n formatNumbers(value: any) {\r\n var prefix = \"€\";\r\n if (value === null) return prefix + \"0\";\r\n else {\r\n if (value >= 1000000)\r\n return prefix + Math.round(value / 1000000).toString() + \"M\";\r\n else if (value >= 1000)\r\n return prefix + Math.round(value / 1000).toString() + \"K\";\r\n else return prefix + value.toString();\r\n }\r\n return \"\";\r\n }\r\n\r\n static createProfileItem(\r\n id: number,\r\n title: any,\r\n description: string,\r\n percent: number,\r\n duration: any,\r\n url: string,\r\n initials: any,\r\n icon: any\r\n ) {\r\n let durationText =\r\n percent >= 100 ? <i className=\"far fa-thumbs-up\" /> : duration;\r\n let durationClass = percent >= 100 ? \"progresscomplete\" : \"lightcolor\";\r\n let progress =\r\n percent >= 100 ? \"All done!\" : Math.round(percent) + \"% complete\";\r\n let progressClass =\r\n percent >= 100\r\n ? \"progresscomplete\"\r\n : percent === 0\r\n ? \"progresswarning\"\r\n : \"inprogress\";\r\n let initialsClass =\r\n \"percentage-initials \" +\r\n (percent === 0\r\n ? \"notstarted\"\r\n : percent === 100\r\n ? \"progresscomplete\"\r\n : \"inprogress\");\r\n\r\n return new ProfileItemModel(\r\n id,\r\n title,\r\n description,\r\n durationText,\r\n durationClass,\r\n percent,\r\n progress,\r\n progressClass,\r\n url,\r\n initials,\r\n initialsClass,\r\n icon\r\n );\r\n }\r\n}\r\n","import { Button, Col, Row } from \"react-bootstrap\";\r\nimport { PortalMortgageModel } from \"../models/PortalMortgageModel\";\r\nimport 'bootstrap/dist/css/bootstrap.min.css';\r\nimport { Link } from \"react-router-dom\";\r\nimport { PortalPage } from \"../components/PortalPage\";\r\nimport { appInsightsHelper } from \"../components/AppInsights\";\r\nimport { UserContextComponent } from \"../components/UserContextComponent\";\r\n\r\nexport class MortgageDetails extends UserContextComponent<any, any> {\r\n static displayName = MortgageDetails.name;\r\n\r\n componentDidMount() {\r\n appInsightsHelper.trackPageView({ name: \"Mortgage Details\" });\r\n }\r\n\r\n private getFullNames(mortgage: PortalMortgageModel) {\r\n return mortgage.secondaryApplicant == null ?\r\n mortgage.primaryApplicant.fullName : mortgage.primaryApplicant.fullName + \" & \" + mortgage.secondaryApplicant.fullName;\r\n }\r\n\r\n private getSmokers(mortgage: PortalMortgageModel) {\r\n var smokers: string[] = [];\r\n smokers.push(mortgage.primaryApplicant.smoker ? 'Y' : 'N');\r\n\r\n if (mortgage.secondaryApplicant != null)\r\n smokers.push(mortgage.secondaryApplicant.smoker ? 'Y' : 'N');\r\n\r\n return smokers.join('/');\r\n }\r\n\r\n private getAgeAndOccupation(mortgage: PortalMortgageModel) {\r\n var age = mortgage.secondaryApplicant == null ?\r\n \"Age (\" + mortgage.primaryApplicant.age + \"), \" : \"Ages (\" + mortgage.primaryApplicant.age + \", \" + mortgage.secondaryApplicant.age + \")\";\r\n\r\n var occupations: string[] = [];\r\n\r\n if (mortgage.primaryApplicant != null && mortgage.primaryApplicant.occupation != null)\r\n occupations.push(mortgage.primaryApplicant.occupation);\r\n if (mortgage.secondaryApplicant != null && mortgage.secondaryApplicant.occupation != null)\r\n occupations.push(mortgage.secondaryApplicant.occupation);\r\n var occupation = occupations.join(',');\r\n return occupation == null || occupation === '' ? age : age + \",\" + occupation;\r\n }\r\n\r\n renderTable() {\r\n let context = this.getContext();\r\n let mortgage = context.mortgage;\r\n if (mortgage == null)\r\n return;\r\n var names = this.getApplicantNames();\r\n var fullNames = this.getFullNames(mortgage);\r\n var ageAndOccupation = this.getAgeAndOccupation(mortgage);\r\n var smokers = this.getSmokers(mortgage);\r\n\r\n return (\r\n <PortalPage title={\"What we have covered so far\"} description={<>Hi {names}, shown below are the details we have already captured about you:</>}>\r\n <Row>\r\n <Col className=\"col-md-2\">\r\n </Col>\r\n <Col className=\"col-md-4 text-start\">\r\n <ul className=\"fa-ul\">\r\n <li><i className=\"far fa-check-circle doddltext pe-3\"></i>{mortgage.subTypeFormatted}</li>\r\n <li><i className=\"far fa-check-circle doddltext pe-3\"></i>{fullNames}</li>\r\n <li><i className=\"far fa-check-circle doddltext pe-3\"></i>{ageAndOccupation}</li>\r\n <li><i className=\"far fa-check-circle doddltext pe-3\"></i>Joint Fixed Income: {mortgage.grossBasicIncomeFormatted}</li>\r\n <li><i className=\"far fa-check-circle doddltext pe-3\"></i>Variable Income: {mortgage.grossVariableIncomeFormatted}</li>\r\n <li><i className=\"far fa-check-circle doddltext pe-3\"></i>Smokers: {smokers}</li>\r\n </ul>\r\n </Col>\r\n <Col className=\"col-md-5 text-start\">\r\n <ul className=\"fa-ul\">\r\n <li><i className=\"far fa-check-circle doddltext pe-3\"></i>Approximate Value: {mortgage.propertyValueFormatted}</li>\r\n <li><i className=\"far fa-check-circle doddltext pe-3\"></i>Mortgage Required: {mortgage.mortgageAmountProposedFormatted}</li>\r\n <li><i className=\"far fa-check-circle doddltext pe-3\"></i>Sale Agreed: {mortgage.saleAgreed ? 'Yes' : 'No'}</li>\r\n <li><i className=\"far fa-check-circle doddltext pe-3\"></i>BER: {mortgage.berRatingFormatted}</li>\r\n <li><i className=\"far fa-check-circle doddltext pe-3\"></i>Preferred Lender: {mortgage.preferredLenders == null ? \"\" : mortgage.preferredLenders.join(',')}</li>\r\n <li><i className=\"far fa-check-circle doddltext pe-3\"></i>Preferred Product: {mortgage.preferredProduct}</li>\r\n </ul>\r\n </Col>\r\n <Col className=\"col-md-1\">\r\n </Col>\r\n </Row>\r\n <br />\r\n <br />\r\n <br />\r\n <br />\r\n <Row>\r\n <Col className=\"col-md-2\"></Col>\r\n <Col className=\"col-md-8 text-start\">\r\n <p>We now will gather a few more details about you to appear on the application form - this should take about 15 minutes if you have the information to hand but you can always save and come back later if you need to.</p>\r\n </Col>\r\n <Col className=\"col-md-2\"></Col>\r\n </Row>\r\n\r\n <br />\r\n <br />\r\n <Link to=\"/profile\"><Button className='btn btn-standard btn-round-lg circle btn-bordered btn-lg'>Complete your Profile</Button></Link>\r\n </PortalPage>\r\n );\r\n }\r\n\r\n render() {\r\n return this.renderTable();\r\n }\r\n}\r\n","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultProps = {\n vertical: false,\n role: 'group'\n};\nconst ButtonGroup = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n size,\n vertical,\n className,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n ...rest\n}, ref) => {\n const prefix = useBootstrapPrefix(bsPrefix, 'btn-group');\n let baseClass = prefix;\n if (vertical) baseClass = `${prefix}-vertical`;\n return /*#__PURE__*/_jsx(Component, { ...rest,\n ref: ref,\n className: classNames(className, baseClass, size && `${prefix}-${size}`)\n });\n});\nButtonGroup.displayName = 'ButtonGroup';\nButtonGroup.defaultProps = defaultProps;\nexport default ButtonGroup;","import axios, { AxiosResponse } from \"axios\";\r\n\r\nvar tooltips:any[] = [];\r\nexport function GetTooltips(entityname:string) {\r\n var value:Promise<AxiosResponse<any,any>>;\r\n var tooltip:any = tooltips.filter((i:any) => i.key === entityname);\r\n if (tooltip.length > 0) {\r\n value = tooltip[0].value;\r\n } else {\r\n value = axios.get(\"/helpertext/GetTooltips?entityname=\"+entityname);\r\n tooltips.push({key:entityname, value: value});\r\n }\r\n return value;\r\n}","import { FieldsCollection } from './FieldsCollection';\r\n\r\nexport class PropertyFieldsCollection extends FieldsCollection {\r\n constructor() {\r\n super();\r\n this.addTextField(\"propertyAddress\", \"Property Address\");\r\n this.addTextField(\"eircode\", \"Property Eircode\");\r\n this.addPicklistField(\"houseType\", \"House Type\",\r\n [{ text: \"Detached\", value: 755980000 }, { text: \"Semi-d\", value: 755980001 },\r\n { text: \"Bungalow\", value: 755980002 }, { text: \"1Bed\", value: 755980003 }, { text: \"Terraced\", value: 755980004 },\r\n { text: \"Apartment\", value: 755980005 }, { text: \"Studio\", value: 755980006 }]);\r\n this.addPicklistField(\"propertyType\", \"Property Type\",\r\n [{ text: \"New Build\", value: 755980000 }, { text: \"Self Build\", value: 755980001 },\r\n { text: \"Second Hand\", value: 755980002 }]);\r\n this.addTextField(\"yearofConstruction\", \"Year of construction\");\r\n this.addDecimalField(\"squareFootageoftheProperty\", \"Total Square Footage\", 0, 10000);\r\n this.addNumberField(\"totalNumberofBedrooms\", \"Number of Bedrooms\", 0, 100);\r\n this.addNumberField(\"totalNumberofRooms\", \"Number of Rooms\", 0, 100);\r\n this.addPicklistField(\"freeholdorLeasehold\", \"Freehold/Leasehold\",\r\n [{ text: \"Freehold\", value: 755980000 }, { text: \"Leasehold\", value: 755980001 }]);\r\n //this.addBooleanField(\"registeredInBothYourNames\", \"Registered In Both\");\r\n this.addPicklistField(\"berRating\", \"BER Rating\",\r\n [{ text: \"A1\", value: 755980000 },\r\n { text: \"A2\", value: 755980001 },\r\n { text: \"A3\", value: 755980002 },\r\n { text: \"B1\", value: 755980003 },\r\n { text: \"B2\", value: 755980004 },\r\n { text: \"B3\", value: 755980005 },\r\n { text: \"C1 or less\", value: 755980006 },\r\n { text: \"Unknown\", value: 755980007 },\r\n { text: \"Exempt\", value: 755980008 }]);\r\n this.addBooleanField(\"requirestructuralrenovations\", \"Require renovations?\");\r\n this.addCurrencyField(\"costofTheWork\", \"Cost of the work\", 0, 1000000);\r\n this.addPicklistField(\"selfOwnedSite\", \"Self owned site?\", [{ text: \"Yes\", value: 755980000 }, { text: \"No\", value: 755980001 }]);\r\n this.addPicklistField(\"selfBuildContractType\", \"Direct Labour/Contract\", [{text: \"Direct Labour\", value: 755980000}, {text: \"Contract\", value: 755980001}]);\r\n this.addBooleanField(\"hasTheBuildObtainedFullPlanningPermission\", \"Full Permission?\");\r\n this.addCurrencyField(\"estimatedCostofTheBuild\", \"Estimated Cost\", 0, 10000000);\r\n this.addTextField(\"pleaseConfirmIfTheSiteIsBeingGifted\", \"Gifted/Purchasing\");\r\n this.addBooleanField(\"equityReleasetoCarryOutHomeImprovements\", \"Equity Release to Carry Out Home Improvements\");\r\n this.addBooleanField(\"saleAgreed\", \"Sale Agreed?\");\r\n }\r\n}","/** Signature of a logging function */\r\nexport interface LogFn {\r\n (message?: any, ...optionalParams: any[]): void;\r\n }\r\n \r\n /** Basic logger interface */\r\n export interface Logger {\r\n getLogs(): any[];\r\n clearLogs(): void;\r\n log: LogFn;\r\n warn: LogFn;\r\n error: LogFn;\r\n }\r\n \r\n /** Log levels */\r\n export type LogLevel = 'log' | 'warn' | 'error';\r\n \r\n const NO_OP: LogFn = (message?: any, ...optionalParams: any[]) => {};\r\n \r\n /** Logger which outputs to the browser console */\r\n export class ConsoleLogger implements Logger {\r\n logs: any[]=[];\r\n readonly log: LogFn = (message?: any, ...optionalParams: any[]) => {\r\n this.logs.push({m:message,d:optionalParams});\r\n this.console_log(message, ...optionalParams);\r\n };\r\n readonly warn: LogFn = (message?: any, ...optionalParams: any[]) => {\r\n this.logs.push({m:message,d:optionalParams});\r\n this.console_warn(message, ...optionalParams);\r\n };\r\n readonly error: LogFn = (message?: any, ...optionalParams: any[]) => {\r\n this.logs.push({m:message,d:optionalParams});\r\n this.console_error(message, ...optionalParams);\r\n };\r\n\r\n readonly console_log: LogFn;\r\n readonly console_warn: LogFn;\r\n readonly console_error: LogFn;\r\n \r\n constructor(options?: { level? : LogLevel }) {\r\n const { level } = options || {};\r\n \r\n this.console_error = console.error.bind(console);\r\n \r\n if (level === 'error') {\r\n this.warn = NO_OP;\r\n this.log = NO_OP;\r\n \r\n return;\r\n }\r\n \r\n this.console_warn = console.warn.bind(console);\r\n \r\n if (level === 'warn') {\r\n this.log = NO_OP;\r\n \r\n return;\r\n }\r\n \r\n this.console_log = console.log.bind(console);\r\n }\r\n getLogs():any[] {\r\n return this.logs;\r\n };\r\n clearLogs() {\r\n this.logs=[];\r\n }\r\n }\r\n \r\n export const APP_ENV = process.env.NODE_ENV === 'production' ? 'production' : 'development';\r\n export const LOG_LEVEL: LogLevel = APP_ENV === 'production' ? 'warn' : 'log';\r\n export const logger = new ConsoleLogger({ level: LOG_LEVEL });","import React, { useState, useEffect } from \"react\"\r\nimport \"./PlaceAutocomplete.css\";\r\nimport { logger } from '../helper/Logger';\r\n\r\n//import \"https://webservices.data-8.co.uk/javascript/predictiveaddress.js\";\r\n//import \"https://webservices.data-8.co.uk/content/predictiveaddress.css\";\r\nimport axios from 'axios';\r\n// Async google places autocomplete function\r\nexport const addressAutocomplete = async (text,sessionId) =>\r\n new Promise((resolve, reject) => {\r\n if (!text) {\r\n return reject(\"Need valid text input\")\r\n }\r\n\r\n // for use in things like GatsbyJS where the html is generated first\r\n if (typeof window === \"undefined\") {\r\n return reject(\"Need valid window object\")\r\n }\r\n const json = {\r\n \"country\": \"IE\",\r\n \"search\": text,\r\n \"session\": \"\",\r\n \"options\": {\r\n \"IncludeMR\": false,\r\n \"IncludeNYB\": false,\r\n \"PreferredLanguage\": \"en\",\r\n }\r\n };\r\n\r\n try {\r\n // axios({\r\n // method: 'post',\r\n // url: '/Search.json',\r\n // baseURL: 'https://webservices.data-8.co.uk/PredictiveAddress',\r\n // data: json,\r\n // auth: {\r\n // username: 'apikey-34G9-PSVP-VP6L-MBIK',\r\n // password: ''\r\n // },\r\n // responseType: 'json', // default\r\n // headers: {\r\n // 'Content-Type': 'application/json',\r\n // //'Content-Length': json.length\r\n // },\r\n // }).then(resolve);\r\n\r\n axios.get(\"/Address/Search?text=\" + text + \"&sessionId=\" + sessionId)\r\n .then(resolve)\r\n .catch((error) => {\r\n this.setState({ loading: false });\r\n });\r\n\r\n\r\n //new window.google.maps.places.AutocompleteService().getPlacePredictions(\r\n // { input: text, componentRestrictions: { country: \"ie\" } },\r\n // resolve\r\n //)\r\n } catch (e) {\r\n reject(e)\r\n }\r\n });\r\n\r\nexport const addressDrilldown = async (id) =>\r\n new Promise((resolve, reject) => {\r\n if (!id) {\r\n return reject(\"Need valid id\")\r\n }\r\n\r\n // for use in things like GatsbyJS where the html is generated first\r\n if (typeof window === \"undefined\") {\r\n return reject(\"Need valid window object\")\r\n }\r\n\r\n try {\r\n axios.get(\"/Address/Drilldown\",\r\n {\r\n params: {\"id\":id}\r\n })\r\n .then(resolve)\r\n .catch((error) => {\r\n this.setState({ loading: false });\r\n });\r\n\r\n\r\n //new window.google.maps.places.AutocompleteService().getPlacePredictions(\r\n // { input: text, componentRestrictions: { country: \"ie\" } },\r\n // resolve\r\n //)\r\n } catch (e) {\r\n reject(e)\r\n }\r\n });\r\n \r\nexport const addressRetrieve = async (id) =>\r\n new Promise((resolve, reject) => {\r\n if (!id) {\r\n return reject(\"Missing valid address id\")\r\n }\r\n\r\n // for use in things like GatsbyJS where the html is generated first\r\n if (typeof window === \"undefined\") {\r\n return reject(\"Need valid window object\")\r\n }\r\n \r\n try {\r\n axios.get(\"/Address/Retrieve\", \r\n {\r\n params: {\"id\":id}\r\n })\r\n .then(resolve)\r\n .catch((error) => {\r\n this.setState({ loading: false });\r\n });\r\n } catch (e) {\r\n reject(e)\r\n }\r\n });\r\n\r\n// React component that uses the auto complete function\r\nexport function PredictionsOnFormSubmission() {\r\n const [searchValue, setSearchValue] = useState(\"\")\r\n const [predictions, setPredictions] = useState([])\r\n\r\n const handleSubmit = async e => {\r\n e.preventDefault()\r\n const results = await addressAutocomplete(searchValue)\r\n if (results) {\r\n setPredictions(results)\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n <form onSubmit={handleSubmit}>\r\n <input\r\n name=\"predictionSearch\"\r\n value={searchValue}\r\n onChange={e => setSearchValue(e.target.value)}\r\n />\r\n <button type=\"submit\">Search</button>\r\n </form>\r\n {/* <img\r\n src=\"https://developers.google.com/places/documentation/images/powered-by-google-on-white.png\"\r\n alt=\"Powered by Google\"\r\n /> */}\r\n {predictions?.map(prediction => (\r\n <p key={prediction?.value}>\r\n {prediction?.label || \"Not found\"}\r\n </p>\r\n ))}\r\n </>\r\n )\r\n}\r\n\r\nexport function usePlacesAutocomplete(text = \"\", debounceTimeout = 400) {\r\n const [predictions, setPredictions] = useState([])\r\n\r\n useEffect(() => {\r\n const handleDebounce = setTimeout(async () => {\r\n try {\r\n if (!text) {\r\n return\r\n }\r\n\r\n const nextPredictions = await addressAutocomplete(text)\r\n setPredictions(nextPredictions)\r\n } catch (e) {\r\n logger.error(e)\r\n }\r\n }, debounceTimeout)\r\n\r\n return () => {\r\n clearTimeout(handleDebounce)\r\n }\r\n }, [text, debounceTimeout])\r\n\r\n return predictions\r\n}\r\n\r\n\r\n// Using the react hook in a function example\r\nexport function PredictionsOnInputChange() {\r\n const [selectedPrediction, setSelectedPrediction] = useState(null)\r\n const [searchValue, setSearchValue] = useState(\"\")\r\n const predictions = usePlacesAutocomplete(searchValue)\r\n\r\n const handlePredictionSelection = (e, prediction) => {\r\n e.preventDefault()\r\n setSelectedPrediction(prediction)\r\n }\r\n\r\n return (\r\n <div>\r\n <input className=\"autocomplete\"\r\n name=\"predictionSearch\"\r\n value={searchValue}\r\n onChange={e => setSearchValue(e.target.value)}\r\n />\r\n <div className=\"pac-container\">\r\n <ul className=\"pac-item\">\r\n {predictions?.map(prediction => (\r\n <li key={prediction?.value}>\r\n <button\r\n onClick={e => handlePredictionSelection(e, prediction)}\r\n onKeyDown={e => handlePredictionSelection(e, prediction)}\r\n >\r\n {prediction?.label || \"Not found\"}\r\n </button>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n <input className=\"autocomplete\"\r\n name=\"result\"\r\n value={selectedPrediction?.label || \"None\"}\r\n />\r\n <h3>You searched for: {searchValue}</h3>\r\n <h3>\r\n You selected:{\" \"}\r\n {selectedPrediction?.label || \"None\"}\r\n </h3>\r\n </div>\r\n )\r\n}","import { Component } from \"react\";\r\nimport { Col, Container, Form, Row } from \"react-bootstrap\";\r\nimport { FormControl } from \"./FormControl\";\r\n//for google autocomplete\r\n//import { addressAutocomplete } from \"./PlaceAutocomplete\";\r\n//for data8 autocomplete\r\nimport {\r\n addressAutocomplete,\r\n addressDrilldown,\r\n addressRetrieve,\r\n} from \"./Data8AutoComplete\";\r\nimport { Field } from \"../models/PortalMetadata\";\r\nimport \"./Address.css\";\r\nimport { ApplicantFieldsCollection } from \"../forms/ApplicantFields\";\r\n\r\ninterface IAddressProps {\r\n address: string;\r\n addressLine1?: string;\r\n addressLine2?: string;\r\n addressLine3?: string;\r\n eircode?: string;\r\n county?: string;\r\n country?: string;\r\n city?: string;\r\n movedInDate?: string;\r\n mortgageBefore?: string;\r\n\r\n letManual: boolean;\r\n helperTexts: any[];\r\n record: any;\r\n fields: ApplicantFieldsCollection;\r\n handleChange(event: any): void;\r\n bubbleUpValidity?(isValid: boolean): void;\r\n disabled?: boolean;\r\n customAddressPrompt?: any;\r\n}\r\n\r\ninterface IAddressState {\r\n selectedPrediction: string;\r\n predictions: any[];\r\n searchValue?: string | null;\r\n AutoComplete: boolean;\r\n helperTexts: any[];\r\n record: any;\r\n fields: ApplicantFieldsCollection;\r\n address: string;\r\n invalidAddress: boolean;\r\n customError: string;\r\n sessionId: string;\r\n}\r\n\r\nexport class Address extends Component<IAddressProps, IAddressState> {\r\n constructor(props: any) {\r\n super(props);\r\n //this.handleAddress = this.handleAddress.bind(this);\r\n this.toggleManualEntry = this.toggleManualEntry.bind(this);\r\n this.toggleAddressSearch = this.toggleAddressSearch.bind(this);\r\n this.setPredictions = this.setPredictions.bind(this);\r\n this.handlePredictionSelection = this.handlePredictionSelection.bind(this);\r\n this.selectAddress = this.selectAddress.bind(this);\r\n\r\n let address: any = this.getFieldByName(this.props.address)?.value;\r\n this.getCompositeAddress = this.getCompositeAddress.bind(this);\r\n this.bubbleUpValidity = this.bubbleUpValidity.bind(this);\r\n this.onBlurEvent = this.onBlurEvent.bind(this);\r\n this.drilldownPredictions = this.drilldownPredictions.bind(this);\r\n\r\n this.state = {\r\n selectedPrediction: \"\",\r\n predictions: [],\r\n AutoComplete: true,\r\n helperTexts: [],\r\n record: props.record,\r\n fields: props.fields,\r\n address: address,\r\n invalidAddress: false,\r\n sessionId: \"\",\r\n customError: \"\",\r\n };\r\n }\r\n\r\n toggleManualEntry() {\r\n this.setState({ AutoComplete: false });\r\n if (this.props.eircode) {\r\n this.bubbleUpValidity(\r\n (this.getFieldByName(this.props.eircode).value ?? \"\") !== \"\"\r\n );\r\n } else {\r\n this.bubbleUpValidity(true);\r\n }\r\n }\r\n\r\n toggleAddressSearch() {\r\n this.setState({ AutoComplete: true });\r\n this.bubbleUpValidity(!this.state.invalidAddress);\r\n }\r\n\r\n // handleAddress() {\r\n // this.setState({ AutoComplete: !this.state.AutoComplete });\r\n // this.bubbleUpValidity(!this.state.invalidAddress);\r\n // }\r\n\r\n clearSearch(value: string) {\r\n if (value === \"\")\r\n this.setState({ selectedPrediction: \"\", predictions: [] });\r\n }\r\n\r\n setSearchValue(searchValue: string) {\r\n this.setState({ searchValue: searchValue, address: searchValue });\r\n this.searchPredictions(searchValue);\r\n }\r\n\r\n bubbleUpValidity(isValid: boolean) {\r\n if (this.props.bubbleUpValidity) this.props.bubbleUpValidity(isValid);\r\n }\r\n\r\n async searchPredictions(text: string) {\r\n this.bubbleUpValidity(false);\r\n this.setState({ invalidAddress: true });\r\n if (!text) {\r\n return [];\r\n }\r\n if (text.length < 2) {\r\n return [];\r\n }\r\n\r\n // To turn off addressing uncomment this...\r\n //return [];\r\n // TURNED OFF\r\n\r\n addressAutocomplete(text, this.state.sessionId)\r\n .then((predictions) => {\r\n this.setPredictions(predictions.data.results);\r\n if (predictions.data.status.success) {\r\n this.setState({ sessionId: predictions.data.sessionID });\r\n } else {\r\n this.setState({ customError: predictions.data.status.errorMessage });\r\n }\r\n\r\n // if (predictions === null || predictions.length === 0) {\r\n // this.setState({ invalidAddress: true });\r\n\r\n // } else {\r\n // this.setState({ invalidAddress: false, sessionId: predictions.data.sessionID });\r\n // }\r\n })\r\n .catch((e) => {\r\n this.setState({\r\n customError:\r\n \"There was an error trying to retrieve the address. Please enter the address manually\",\r\n });\r\n //alert(1);\r\n });\r\n }\r\n\r\n async drilldownPredictions(value: string) {\r\n this.bubbleUpValidity(false);\r\n this.setState({ invalidAddress: true });\r\n\r\n addressDrilldown(value)\r\n .then((predictions) => {\r\n this.setPredictions(predictions.data.results);\r\n this.setState({ sessionId: predictions.data.sessionID });\r\n\r\n // if (predictions === null || predictions.length === 0) {\r\n // this.setState({ invalidAddress: true });\r\n\r\n // } else {\r\n // this.setState({ invalidAddress: false, sessionId: predictions.data.sessionID });\r\n // }\r\n })\r\n .catch((e) => {\r\n //alert(1);\r\n });\r\n }\r\n\r\n setPredictions(nextPredictions: any) {\r\n this.setState({ predictions: nextPredictions });\r\n }\r\n\r\n isEircode(eircode: string) {\r\n var pattern =\r\n \"\\\\b(?:(\" +\r\n \"a(4[125s]|6[37]|7[5s]|[8b][1-6s]|9[12468b])|\" +\r\n \"c1[5s]|\" +\r\n \"d([0o][1-9sb]|1[0-8osb]|2[024o]|6w)|\" +\r\n \"e(2[15s]|3[24]|4[15s]|[5s]3|91)|\" +\r\n \"f(12|2[368b]|3[15s]|4[25s]|[5s][26]|9[1-4])|\" +\r\n \"h(1[2468b]|23|[5s][34]|6[25s]|[79]1)|\" +\r\n \"k(3[246]|4[5s]|[5s]6|67|7[8b])|\" +\r\n \"n(3[79]|[49]1)|\" +\r\n \"p(1[247]|2[45s]|3[126]|4[37]|[5s][16]|6[17]|7[25s]|[8b][15s])|\" +\r\n \"r(14|21|3[25s]|4[25s]|[5s][16]|9[35s])|\" +\r\n \"t(12|23|34|4[5s]|[5s]6)|\" +\r\n \"v(1[45s]|23|3[15s]|42|9[2-5s])|\" +\r\n \"w(12|23|34|91)|\" +\r\n \"x(3[5s]|42|91)|\" +\r\n \"y(14|2[15s]|3[45s])\" +\r\n \")\\\\s?[abcdefhknoprtsvwxy\\\\d]{4})\\\\b\";\r\n\r\n var reg = new RegExp(pattern, \"i\");\r\n //return the first Eircode\r\n var i = String(eircode).search(reg);\r\n return i !== -1;\r\n }\r\n\r\n isCounty(county: string) {\r\n var counties = [\r\n \"antrim\",\r\n \"armagh\",\r\n \"cavan\",\r\n \"derry\",\r\n \"donegal\",\r\n \"down\",\r\n \"fermanagh\",\r\n \"monaghan\",\r\n \"tyrone\",\r\n \"galway\",\r\n \"leitrim\",\r\n \"mayo\",\r\n \"roscommon\",\r\n \"sligo\",\r\n \"carlow\",\r\n \"dublin\",\r\n \"kildare\",\r\n \"kilkenny\",\r\n \"laois\",\r\n \"longford\",\r\n \"louth\",\r\n \"meath\",\r\n \"offaly\",\r\n \"westmeath\",\r\n \"wexford\",\r\n \"wicklow\",\r\n \"clare\",\r\n \"cork\",\r\n \"kerry\",\r\n \"limerick\",\r\n \"tipperary\",\r\n \"waterford\",\r\n ];\r\n if (counties.find((c) => county.toLowerCase() === c)) return true;\r\n return false;\r\n }\r\n\r\n isCountry(country: string) {\r\n // in this release we are limited to ireland so just lookup that\r\n return country.toLowerCase() === \"ireland\";\r\n }\r\n\r\n getFieldByName(name: string): Field {\r\n return this.props.fields.getFieldByName(name);\r\n }\r\n\r\n setFieldValue(fieldName: string, value: string) {\r\n let fields = this.state.fields;\r\n if (fields) {\r\n fields.updateModel(this.props.record, fieldName, value);\r\n fields.updateFieldValue(fieldName, value);\r\n }\r\n this.setState({ fields: this.state.fields, record: this.state.record });\r\n }\r\n\r\n isNullOrEmpty(s: any): boolean {\r\n return s === null || s === undefined || s === \"\";\r\n }\r\n\r\n getCompositeAddress() {\r\n let addressLine1 = \"\",\r\n addressLine2 = \"\",\r\n addressLine3 = \"\";\r\n if (this.props.addressLine1)\r\n addressLine1 = this.getFieldByName(this.props.addressLine1)\r\n .value as string;\r\n if (this.props.addressLine2)\r\n addressLine2 = this.getFieldByName(this.props.addressLine2)\r\n .value as string;\r\n if (this.props.addressLine3)\r\n addressLine3 = this.getFieldByName(this.props.addressLine3)\r\n .value as string;\r\n\r\n let eircode = \"\",\r\n city = \"\",\r\n county = \"\",\r\n country = \"\";\r\n if (this.props.eircode)\r\n eircode = this.getFieldByName(this.props.eircode).value as string;\r\n if (this.props.county)\r\n county = this.getFieldByName(this.props.county).value as string;\r\n if (this.props.country)\r\n country = this.getFieldByName(this.props.country).value as string;\r\n if (this.props.city)\r\n city = this.getFieldByName(this.props.city).value as string;\r\n\r\n let address = \"\";\r\n\r\n if (!this.isNullOrEmpty(addressLine1)) {\r\n address = addressLine1;\r\n }\r\n\r\n if (!this.isNullOrEmpty(addressLine2)) {\r\n address += \", \" + addressLine2;\r\n }\r\n\r\n if (!this.isNullOrEmpty(addressLine3)) {\r\n address += \", \" + addressLine3;\r\n }\r\n\r\n if (!this.isNullOrEmpty(county)) {\r\n address += \", \" + city;\r\n }\r\n\r\n if (!this.isNullOrEmpty(county)) {\r\n address += \", \" + county;\r\n }\r\n\r\n if (!this.isNullOrEmpty(eircode)) {\r\n address += \", \" + eircode;\r\n }\r\n\r\n if (!this.isNullOrEmpty(country)) {\r\n address += \", \" + country;\r\n }\r\n\r\n this.setFieldValue(this.props.address, address);\r\n\r\n return address;\r\n }\r\n\r\n addressManuallyUpdated() {\r\n this.setState({ address: this.getCompositeAddress() });\r\n if (this.props.eircode)\r\n this.bubbleUpValidity(\r\n (this.getFieldByName(this.props.eircode).value ?? \"\") !== \"\"\r\n );\r\n }\r\n\r\n handlePredictionSelection = (e: any, prediction: any) => {\r\n e.preventDefault();\r\n this.bubbleUpValidity(true);\r\n if (prediction.container) {\r\n this.drilldownPredictions(prediction.value);\r\n } else {\r\n this.selectAddress(prediction);\r\n }\r\n };\r\n\r\n selectAddress = (prediction: any) => {\r\n addressRetrieve(prediction.value).then((address) => {\r\n var record = this.state.record;\r\n this.setFieldValue(this.props.address, prediction.label);\r\n\r\n if (this.props.eircode) this.setFieldValue(this.props.eircode, \"\");\r\n if (this.props.county) this.setFieldValue(this.props.county, \"\");\r\n if (this.props.city) this.setFieldValue(this.props.city, \"\");\r\n if (this.props.country) this.setFieldValue(this.props.country, \"\");\r\n if (this.props.addressLine1)\r\n this.setFieldValue(this.props.addressLine1, \"\");\r\n if (this.props.addressLine2)\r\n this.setFieldValue(this.props.addressLine2, \"\");\r\n if (this.props.addressLine3)\r\n this.setFieldValue(this.props.addressLine3, \"\");\r\n\r\n //var line = 1;\r\n var lines = address.data.result.address.lines;\r\n for (let i = 0; i < lines.length; i++) {\r\n var term = lines[i];\r\n if (i === 0 && this.props.addressLine1) {\r\n this.setFieldValue(this.props.addressLine1, term);\r\n } else if (i === 1 && this.props.addressLine2) {\r\n this.setFieldValue(this.props.addressLine2, term);\r\n } else if (i === 2 && this.props.addressLine3) {\r\n this.setFieldValue(this.props.addressLine3, term);\r\n } else if (i === 4 && this.props.city) {\r\n this.setFieldValue(this.props.city, term);\r\n } else if (i === 5 && this.props.county) {\r\n this.setFieldValue(this.props.county, term);\r\n } else if (i === 6 && this.props.eircode) {\r\n this.setFieldValue(this.props.eircode, term);\r\n }\r\n }\r\n\r\n this.getCompositeAddress();\r\n\r\n this.setState({\r\n record: record,\r\n fields: this.state.fields,\r\n address: prediction.label,\r\n selectedPrediction: address,\r\n predictions: [],\r\n searchValue: \"\",\r\n invalidAddress: false,\r\n });\r\n\r\n this.props.handleChange({\r\n target: { name: this.props.address, value: prediction.label },\r\n });\r\n });\r\n };\r\n\r\n onBlurEvent(e: any) {\r\n this.clearSearch(e.target.value);\r\n if (this.props.bubbleUpValidity === undefined) {\r\n // if we don't have validity check enabled then just grab the address on blur\r\n this.setFieldValue(this.props.address, e.target.value);\r\n this.props.handleChange({\r\n target: { name: this.props.address, value: e.target.value },\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n <div className=\"address-container\">\r\n {this.state.AutoComplete && (\r\n <Form.Group className=\"text-start\">\r\n <Row>\r\n <Col xs={this.props.letManual ? 9 : 12}>\r\n {this.props.customAddressPrompt ?? (\r\n <span className=\"input-group-text\">\r\n Start typing the address or Eircode:\r\n </span>\r\n )}\r\n <Form.Control\r\n disabled={this.props.disabled}\r\n placeholder={\r\n this.props.disabled\r\n ? \"Disabled - please enter address manually\"\r\n : \"\"\r\n }\r\n className=\"modal-control\"\r\n value={this.state.address}\r\n type=\"text\"\r\n onChange={(e) => {\r\n this.setSearchValue(e.target.value);\r\n }}\r\n onBlur={this.onBlurEvent}\r\n />\r\n {this.state.invalidAddress === true &&\r\n this.props.bubbleUpValidity !== undefined && (\r\n <Form.Control.Feedback\r\n type=\"invalid\"\r\n style={{ display: \"block\" }}\r\n >\r\n {this.state.customError !== \"\"\r\n ? this.state.customError\r\n : \"The provided address is not valid.\"}\r\n </Form.Control.Feedback>\r\n )}\r\n </Col>\r\n {this.props.letManual && (\r\n <Col xs={3} className=\"text-end\">\r\n <br />\r\n <br />\r\n <div className=\"doddltext\" style={{ marginTop: -10 }}>\r\n <div\r\n className=\"btn btn-standard-transparent btn-outline btn-wide\"\r\n onClick={this.toggleManualEntry}\r\n >\r\n Enter manually\r\n </div>\r\n </div>\r\n </Col>\r\n )}\r\n </Row>\r\n {this.state.predictions?.length > 0 && (\r\n <div className=\"pac-container\">\r\n <ul className=\"pac-item\">\r\n {this.state.predictions?.map((prediction: any | null) => (\r\n <li\r\n key={prediction?.value}\r\n onKeyDown={(e) =>\r\n this.handlePredictionSelection(e, prediction)\r\n }\r\n onClick={(e) =>\r\n this.handlePredictionSelection(e, prediction)\r\n }\r\n >\r\n {prediction?.label || \"Not found\"}\r\n {prediction?.container && (\r\n <div className=\"pac-item-count\">\r\n {prediction?.items} items\r\n </div>\r\n )}\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n </Form.Group>\r\n )}\r\n {!this.state.AutoComplete && (\r\n <>\r\n <Row>\r\n <Col xs={9}>\r\n {this.props.addressLine1 && (\r\n <FormControl\r\n light\r\n field={this.getFieldByName(this.props.addressLine1)}\r\n fieldUpdated={() => this.addressManuallyUpdated()}\r\n ></FormControl>\r\n )}\r\n </Col>\r\n <Col xs={3} className=\"text-end\">\r\n <br />\r\n <div className=\"doddltext\" style={{ paddingBottom: 10 }}>\r\n <div\r\n className=\"btn btn-standard-transparent btn-outline mb-3\"\r\n onClick={this.toggleAddressSearch}\r\n >\r\n Back to address search\r\n </div>\r\n </div>\r\n </Col>\r\n </Row>\r\n {this.props.addressLine2 && (\r\n <FormControl\r\n light\r\n field={this.getFieldByName(this.props.addressLine2)}\r\n fieldUpdated={() => this.addressManuallyUpdated()}\r\n ></FormControl>\r\n )}\r\n {this.props.addressLine3 && (\r\n <FormControl\r\n light\r\n field={this.getFieldByName(this.props.addressLine3)}\r\n fieldUpdated={() => this.addressManuallyUpdated()}\r\n ></FormControl>\r\n )}\r\n {this.props.city && (\r\n <FormControl\r\n light\r\n field={this.getFieldByName(this.props.city)}\r\n fieldUpdated={() => this.addressManuallyUpdated()}\r\n ></FormControl>\r\n )}\r\n <Row>\r\n <Col md={12} lg={6}>\r\n {this.props.county && (\r\n <FormControl\r\n light\r\n field={this.getFieldByName(this.props.county)}\r\n fieldUpdated={() => this.addressManuallyUpdated()}\r\n ></FormControl>\r\n )}\r\n </Col>\r\n <Col md={12} lg={6}>\r\n {this.props.eircode && (\r\n <>\r\n <FormControl\r\n light\r\n field={this.getFieldByName(this.props.eircode)}\r\n fieldUpdated={() => this.addressManuallyUpdated()}\r\n ></FormControl>\r\n {(this.getFieldByName(this.props.eircode).value ?? \"\") ===\r\n \"\" && (\r\n <Form.Control.Feedback\r\n type=\"invalid\"\r\n style={{ display: \"block\", marginLeft: 10 }}\r\n >\r\n Eircode is required\r\n </Form.Control.Feedback>\r\n )}\r\n </>\r\n )}\r\n </Col>\r\n </Row>\r\n {this.props.country && (\r\n <FormControl\r\n light\r\n field={this.getFieldByName(this.props.country)}\r\n fieldUpdated={() => this.addressManuallyUpdated()}\r\n ></FormControl>\r\n )}\r\n </>\r\n )}\r\n <Row>\r\n <Col xs={4}>\r\n {this.props.movedInDate && (\r\n <FormControl\r\n light\r\n field={this.getFieldByName(this.props.movedInDate)}\r\n ></FormControl>\r\n )}\r\n </Col>\r\n {this.props.mortgageBefore && (\r\n <Col xs={5}>\r\n {this.props.mortgageBefore && (\r\n <FormControl\r\n light\r\n field={this.getFieldByName(this.props.mortgageBefore)}\r\n ></FormControl>\r\n )}\r\n </Col>\r\n )}\r\n </Row>\r\n </div>\r\n </>\r\n );\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\nimport { Modal } from \"react-bootstrap\";\r\nimport { PortalHelperTextModel } from \"../../models/PortalHelperTextModel\";\r\nimport { ControlType, Field } from \"../../models/PortalMetadata\";\r\nimport { Pill } from \"./Pill\";\r\nimport { IPillElementModel } from \"./PillElement\";\r\n\r\ninterface ILinkPillProps {\r\n field: Field;\r\n valueToDisplay?: string | null;\r\n overlay: React.ReactNode;\r\n hideIfValue: boolean | null;\r\n label?: string;\r\n tooltip?: PortalHelperTextModel | undefined | null;\r\n subText?: string;\r\n extraClass?: string;\r\n canSave?: boolean;\r\n modalSize?: \"xl\" | \"lg\" | \"sm\";\r\n saveOnDone?(redirect: any): void;\r\n}\r\n\r\ninterface ILinkPillState {\r\n hideIfValue: boolean | null;\r\n collapsed: boolean;\r\n canSave: boolean;\r\n}\r\n\r\nexport class LinkPill extends Component<ILinkPillProps, ILinkPillState> {\r\n constructor(props: ILinkPillProps) {\r\n super(props);\r\n this.state = {\r\n hideIfValue: false,\r\n collapsed: true,\r\n canSave: this.props.canSave === true || this.props.canSave === undefined,\r\n };\r\n this.collapse = this.collapse.bind(this);\r\n }\r\n\r\n componentDidUpdate() {\r\n if (this.state.hideIfValue !== this.props.hideIfValue)\r\n this.setState({ hideIfValue: this.props.hideIfValue });\r\n if (\r\n this.props.canSave !== undefined &&\r\n this.state.canSave !== this.props.canSave\r\n )\r\n this.setState({ canSave: this.props.canSave });\r\n }\r\n\r\n componentDidMount() {\r\n if (this.state.hideIfValue !== this.props.hideIfValue)\r\n this.setState({ hideIfValue: this.props.hideIfValue });\r\n }\r\n\r\n private collapse() {\r\n if (this.props.saveOnDone) {\r\n this.props.saveOnDone(false);\r\n }\r\n this.setState({ collapsed: true });\r\n }\r\n\r\n getPillClass() {\r\n return \"notstarted\";\r\n }\r\n\r\n render() {\r\n if (\r\n this.state.hideIfValue &&\r\n (this.props.field.value || this.props.field.optional)\r\n )\r\n return \"\";\r\n\r\n var components: IPillElementModel[] = [];\r\n components.push({\r\n leftBorder: true,\r\n rightBorder: true,\r\n content: <div>{this.props.field.label}</div>,\r\n });\r\n\r\n components.push({\r\n leftBorder: false,\r\n rightBorder: true,\r\n content: (\r\n <>\r\n {this.props.valueToDisplay ??\r\n (this.props.field.controlType === ControlType.date\r\n ? \"\"\r\n : this.props.field.value)}\r\n </>\r\n ),\r\n });\r\n\r\n let extraClass: string = !(\r\n this.props.valueToDisplay ??\r\n (this.props.field.controlType === ControlType.date\r\n ? \"\"\r\n : this.props.field.value)\r\n )\r\n ? \"pill-missing\"\r\n : \"\";\r\n if (this.props.extraClass) extraClass = this.props.extraClass;\r\n\r\n return (\r\n <>\r\n <Pill\r\n extraClass={extraClass}\r\n onClick={() => this.setState({ collapsed: false })}\r\n components={components}\r\n tooltip={this.props.tooltip ?? undefined}\r\n ></Pill>\r\n <Modal\r\n fullscreen=\"lg-down\"\r\n size={this.props.modalSize ?? \"xl\"}\r\n show={!this.state.collapsed}\r\n onHide={() => {\r\n this.collapse();\r\n }}\r\n centered\r\n >\r\n <Modal.Header closeButton></Modal.Header>\r\n <Modal.Body>\r\n <h3 className=\"impact text-center\">\r\n {this.props.label ?? this.props.field.label}\r\n </h3>\r\n {this.props.overlay}\r\n </Modal.Body>\r\n <Modal.Footer>\r\n <button\r\n disabled={!this.state.canSave}\r\n className=\"btn btn-standard btn-wide\"\r\n onClick={() => {\r\n this.collapse();\r\n }}\r\n >\r\n Done\r\n </button>\r\n </Modal.Footer>\r\n </Modal>\r\n </>\r\n );\r\n }\r\n}\r\n","import axios from \"axios\";\r\nimport \"bootstrap/dist/css/bootstrap.min.css\";\r\nimport { Form, Col, Row, Container, Stack, ButtonGroup } from \"react-bootstrap\";\r\nimport \"./Applicant.css\";\r\nimport { PortalPage } from \"../components/PortalPage\";\r\nimport { GetTooltips } from \"../helper/tooltipHelper\";\r\nimport UserContextState, { UserContext } from \"../components/UserContext\";\r\nimport { InputPill } from \"../components/Pills/InputPill\";\r\nimport { Navigate } from \"react-router-dom\";\r\nimport { appInsightsHelper } from \"../components/AppInsights\";\r\nimport { PropertyFieldsCollection } from \"../forms/PropertyFields\";\r\nimport { ControlType } from \"../models/PortalMetadata\";\r\nimport currencyFormatter from \"../helper/currencyFormatter\";\r\nimport { UserContextComponent } from \"../components/UserContextComponent\";\r\nimport {\r\n MortgageSubType,\r\n MortgageType,\r\n PropertyType,\r\n SelfOwnedSite,\r\n} from \"../models/PortalMortgageModel\";\r\nimport { Address } from \"../components/Address\";\r\nimport { LinkPill } from \"../components/Pills/LinkPill\";\r\n\r\nexport default class Property extends UserContextComponent<any, any> {\r\n static contextType = UserContext;\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n mortgage: null,\r\n step: 1,\r\n helperTexts: [],\r\n redirectTo: null,\r\n fields: null,\r\n addressIsValid: true,\r\n };\r\n this.handleChange = this.handleChange.bind(this);\r\n this.handleSubmit = this.handleSubmit.bind(this);\r\n\r\n this.prev = this.prev.bind(this);\r\n this.next = this.next.bind(this);\r\n this.saveAllFields = this.saveAllFields.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n appInsightsHelper.trackPageView({ name: \"Property\" });\r\n let context = this.getContext();\r\n this.setState({ mortgage: context.mortgage });\r\n this.getTooltips(\"mortgage\");\r\n }\r\n\r\n getTooltips(entityname: string) {\r\n GetTooltips(entityname)\r\n .then((response) => {\r\n let context = this.getContext();\r\n let helperTexts = response.data;\r\n\r\n if (context.mortgage !== null) {\r\n let fields = new PropertyFieldsCollection();\r\n fields.loadData(\r\n context.mortgage,\r\n helperTexts,\r\n true,\r\n this.handleChange\r\n );\r\n this.setState({\r\n fields: fields,\r\n loading: false,\r\n helperTexts: helperTexts,\r\n });\r\n }\r\n })\r\n .catch((error) => {\r\n if (error.response.statusCode === 401) {\r\n alert(\"Unauthorized\");\r\n }\r\n });\r\n }\r\n\r\n getFieldCount(): number {\r\n let context = this.getContext();\r\n let saleAgreed =\r\n this.state.fields.getFieldByName(\"saleAgreed\").value === \"1\";\r\n let purchaser = context.mortgage?.type === MortgageType.PurchasingaNewHome;\r\n let fieldCount = 2;\r\n if (purchaser && !saleAgreed) {\r\n fieldCount = 1;\r\n } else {\r\n if (this.state.mortgage.type === MortgageType.RemortgagingExistingLoan) {\r\n if (\r\n [\r\n MortgageSubType.EquityReleaseTopup,\r\n MortgageSubType.EquityReleaseWithWorks,\r\n ].includes(this.state.mortgage.subType)\r\n ) {\r\n if (this.state.mortgage.equityReleasetoCarryOutHomeImprovements) {\r\n fieldCount++;\r\n }\r\n }\r\n } else {\r\n if (this.state.mortgage.propertyType === PropertyType.SelfBuild) {\r\n if (this.state.mortgage.selfOwnedSite === SelfOwnedSite.Yes)\r\n fieldCount += 4;\r\n fieldCount += 5;\r\n } else if (\r\n this.state.mortgage.propertyType === PropertyType.SecondHand\r\n ) {\r\n if (this.state.mortgage.requirestructuralrenovations) fieldCount += 3;\r\n else fieldCount += 2;\r\n }\r\n }\r\n }\r\n return fieldCount;\r\n }\r\n getFieldsDone(): number {\r\n let fieldsDone = 0;\r\n let context = this.getContext();\r\n let saleAgreed =\r\n this.state.fields.getFieldByName(\"saleAgreed\").value === \"1\";\r\n let purchaser = context.mortgage?.type === MortgageType.PurchasingaNewHome;\r\n if (purchaser && !saleAgreed) {\r\n fieldsDone = 1;\r\n } else {\r\n if (this.state.fields.getFieldByName(\"propertyAddress\").value)\r\n fieldsDone++;\r\n if (this.state.fields.getFieldByName(\"totalNumberofBedrooms\").value > 0)\r\n fieldsDone++;\r\n //if (this.state.fields.getFieldByName(\"registeredInBothYourNames\").value !== null) fieldsDone++;\r\n\r\n if (this.state.mortgage.type === MortgageType.RemortgagingExistingLoan) {\r\n if (\r\n [\r\n MortgageSubType.EquityReleaseTopup,\r\n MortgageSubType.EquityReleaseWithWorks,\r\n ].includes(this.state.mortgage.subType)\r\n ) {\r\n if (\r\n this.state.fields.getFieldByName(\r\n \"equityReleasetoCarryOutHomeImprovements\"\r\n ).value\r\n ) {\r\n if (this.state.fields.getFieldByName(\"costofTheWork\").value)\r\n fieldsDone++;\r\n }\r\n }\r\n } else {\r\n if (this.state.fields.getFieldByName(\"propertyType\").value)\r\n fieldsDone++;\r\n if (this.state.mortgage.propertyType === PropertyType.SelfBuild) {\r\n if (this.state.fields.getFieldByName(\"selfOwnedSite\").value)\r\n fieldsDone++;\r\n if (this.state.fields.getFieldByName(\"selfBuildContractType\").value)\r\n fieldsDone++;\r\n if (\r\n this.state.fields.getFieldByName(\r\n \"hasTheBuildObtainedFullPlanningPermission\"\r\n ).value !== null\r\n )\r\n fieldsDone++;\r\n if (\r\n this.state.fields.getFieldByName(\"estimatedCostofTheBuild\").value &&\r\n parseFloat(\r\n this.state.fields\r\n .getFieldByName(\"estimatedCostofTheBuild\")\r\n .value.replaceAll(\"€\", \"\")\r\n ) > 0\r\n )\r\n fieldsDone++;\r\n if (this.state.mortgage.selfOwnedSite === SelfOwnedSite.No) {\r\n if (\r\n this.state.fields.getFieldByName(\r\n \"pleaseConfirmIfTheSiteIsBeingGifted\"\r\n ).value\r\n )\r\n fieldsDone++;\r\n }\r\n } else if (\r\n this.state.mortgage.propertyType === PropertyType.SecondHand\r\n ) {\r\n if (this.state.fields.getFieldByName(\"berRating\").value) fieldsDone++;\r\n if (\r\n this.state.fields.getFieldByName(\"requireStructuralRenovations\")\r\n .value !== null\r\n )\r\n fieldsDone++;\r\n if (this.state.mortgage.requirestructuralrenovations) {\r\n if (this.state.fields.getFieldByName(\"costofTheWork\").value)\r\n fieldsDone++;\r\n }\r\n }\r\n }\r\n }\r\n return fieldsDone;\r\n }\r\n\r\n saveAllFields(redirectTo: string | null) {\r\n let dirtyFields: any[] = [];\r\n for (let fieldName in this.state.fields.fields) {\r\n let f = this.state.fields.fields[fieldName];\r\n if (f.isDirty) dirtyFields.push(f);\r\n }\r\n\r\n // BANDAID - THIS IS TO KEEP THE APPLICANT MENU IN SYNC AS IT USES THE CONTEXT\r\n let context = this.getContext();\r\n context.mortgage!.propertyDetailsPercentage =\r\n (this.getFieldsDone() * 100) / this.getFieldCount();\r\n context.refreshMenuState();\r\n\r\n if (dirtyFields.length === 0) {\r\n if (redirectTo) {\r\n this.setState({ redirectTo: redirectTo });\r\n }\r\n return;\r\n }\r\n let newMortgage = this.state.fields.getAsEntity(\r\n \"mortgageId\",\r\n this.state.mortgage.mortgageId,\r\n this.state.mortgage\r\n );\r\n //let newMortgage = mapFieldsToEntity(dirtyFields, \"mortgageId\", this.state.mortgage.mortgageId);\r\n\r\n axios.post(\"/property/update\", newMortgage).then((response) => {\r\n for (let i = 0; i < dirtyFields.length; i++) {\r\n let f = dirtyFields[i];\r\n f.originalValue = f.value;\r\n f.isDirty = false;\r\n }\r\n\r\n this.setState({ redirectTo: redirectTo });\r\n });\r\n }\r\n\r\n handleChange(event: any) {\r\n const target = event.target;\r\n const value =\r\n (target.type === \"checkbox\" ? target.checked : target.value) ||\r\n target.textContent ||\r\n \"\";\r\n const name = target.name || target.getAttribute(\"name\");\r\n\r\n var mortgage = this.state.mortgage;\r\n\r\n if (!name) return;\r\n\r\n let f = this.state.fields.getFieldByName(name);\r\n\r\n //// if we don't set the value here it sometimes doesn't get set and causes a bug with reverting to the original value\r\n let fields = this.state.fields;\r\n if (fields) {\r\n if (f.controlType === ControlType.currency) {\r\n fields.updateModel(\r\n this.state.mortgage,\r\n name,\r\n value?.replaceAll(\",\", \"\").replaceAll(\"€\", \"\")\r\n );\r\n fields.updateFieldValue(\r\n name,\r\n currencyFormatter(\r\n Number(value?.replaceAll(\",\", \"\").replaceAll(\"€\", \"\"))\r\n )\r\n );\r\n } else {\r\n fields.updateModel(this.state.mortgage, name, value);\r\n fields.updateFieldValue(name, value);\r\n }\r\n }\r\n this.setState({ fields: this.state.fields, mortgage: mortgage });\r\n }\r\n\r\n handleSubmit(event: any) {\r\n event.preventDefault();\r\n if (this.props.next) {\r\n this.saveAllFields(null);\r\n this.props.next();\r\n } else {\r\n this.saveAllFields(\"/profile\");\r\n }\r\n //this.saveAllFields(true);\r\n }\r\n\r\n prev() {\r\n if (this.props.prev) {\r\n this.saveAllFields(null);\r\n this.props.prev();\r\n } else {\r\n this.saveAllFields(\"/shared\");\r\n }\r\n }\r\n\r\n next() {\r\n if (this.props.next) {\r\n this.saveAllFields(null);\r\n this.props.next();\r\n } else {\r\n this.saveAllFields(\"/solicitor-details\");\r\n }\r\n }\r\n\r\n render() {\r\n let context = this.getContext();\r\n\r\n if (this.state.loading) {\r\n return (\r\n <>\r\n <p>\r\n <em>Loading...</em>\r\n </p>\r\n </>\r\n );\r\n }\r\n\r\n if (this.state.redirectTo) {\r\n //return <Navigate to=\"/profile\" />\r\n // For now we always redirect to the \"next/prev page\" in this flow\r\n return <Navigate to={this.state.redirectTo} />;\r\n }\r\n\r\n let saleAgreed =\r\n this.state.fields.getFieldByName(\"saleAgreed\").value === \"1\";\r\n\r\n return (\r\n // <PortalPage title={<>Details about <span className=\"doddltext\">{this.state.contact.firstName}</span></>} description={\"Tell us about yourself so that together we can find the most suitable mortgage\"}>\r\n <>\r\n <PortalPage className=\"bump-right\" title={<>Property Details</>}>\r\n <Row>\r\n <Col className=\"col-12\">\r\n <Form onSubmit={this.handleSubmit}>\r\n <Row className=\"sub-title-box\">\r\n <>\r\n {context.mortgage?.type ===\r\n MortgageType.RemortgagingExistingLoan && (\r\n <p className=\"subtext\">Tell us about your home.</p>\r\n )}\r\n {context.mortgage?.type ===\r\n MortgageType.PurchasingaNewHome &&\r\n saleAgreed && (\r\n <p className=\"subtext\">\r\n Congratulations on finding your new home! Please enter\r\n the property address below ensuring that the address\r\n of the property you are purchasing fully matches with\r\n the address on your booking deposit receipt.\r\n </p>\r\n )}\r\n {context.mortgage?.type ===\r\n MortgageType.PurchasingaNewHome &&\r\n !(saleAgreed ?? false) && (\r\n <p className=\"subtext\">\r\n Once you've gone Sale Agreed, provide all the details\r\n of your new home here.\r\n </p>\r\n )}\r\n </>\r\n </Row>\r\n <Container className=\"pill-form\">\r\n <Row className=\"pill-row\">\r\n <Stack\r\n gap={1}\r\n direction=\"horizontal\"\r\n className=\"pill-stack\"\r\n >\r\n {context.mortgage?.type ===\r\n MortgageType.PurchasingaNewHome && (\r\n <InputPill\r\n hideIfValue={this.state.emptyOnly}\r\n field={this.state.fields.getFieldByName(\"saleAgreed\")}\r\n ></InputPill>\r\n )}\r\n {/* only show the below if they are a switcher or they've gone sale agreed */}\r\n {(context.mortgage?.type !==\r\n MortgageType.PurchasingaNewHome ||\r\n (saleAgreed ?? false)) && (\r\n <>\r\n <LinkPill\r\n hideIfValue={this.state.emptyOnly}\r\n field={this.state.fields.getFieldByName(\r\n \"propertyAddress\"\r\n )}\r\n saveOnDone={this.saveAllFields}\r\n overlay={\r\n <Address\r\n helperTexts={this.state.helperTexts}\r\n record={this.state.mortgage}\r\n fields={this.state.fields}\r\n handleChange={this.handleChange}\r\n address=\"propertyAddress\"\r\n eircode=\"eircode\"\r\n letManual={false}\r\n customAddressPrompt={\r\n context.mortgage?.type ===\r\n MortgageType.PurchasingaNewHome\r\n ? \"Please ensure that the address of the property you are purchasing fully matches with the address on your booking deposit receipt.\"\r\n : \"Please enter your full property address.\"\r\n }\r\n />\r\n }\r\n />\r\n {context.mortgage?.type ===\r\n MortgageType.PurchasingaNewHome && (\r\n //if its not switcher\r\n <InputPill\r\n hideIfValue={this.state.emptyOnly}\r\n field={this.state.fields.getFieldByName(\r\n \"propertyType\"\r\n )}\r\n ></InputPill>\r\n )}\r\n <InputPill\r\n hideIfValue={this.state.emptyOnly}\r\n field={this.state.fields.getFieldByName(\r\n \"totalNumberofBedrooms\"\r\n )}\r\n ></InputPill>\r\n\r\n {this.state.mortgage.subType !== 755980001 &&\r\n this.state.mortgage.subType !== \"755980001\" && (\r\n //show them if its not switcher with equity\r\n <>\r\n {this.state.mortgage.propertyType ===\r\n PropertyType.SecondHand && (\r\n //second hand\r\n <>\r\n <InputPill\r\n hideIfValue={this.state.emptyOnly}\r\n field={this.state.fields.getFieldByName(\r\n \"requirestructuralrenovations\"\r\n )}\r\n ></InputPill>\r\n <InputPill\r\n hideIfValue={this.state.emptyOnly}\r\n field={this.state.fields.getFieldByName(\r\n \"berRating\"\r\n )}\r\n ></InputPill>\r\n </>\r\n )}\r\n\r\n {this.state.mortgage\r\n .requirestructuralrenovations === true &&\r\n this.state.mortgage.propertyType !==\r\n PropertyType.NewBuild && (\r\n //Require structural renovations\r\n <InputPill\r\n hideIfValue={this.state.emptyOnly}\r\n field={this.state.fields.getFieldByName(\r\n \"costofTheWork\"\r\n )}\r\n ></InputPill>\r\n )}\r\n\r\n {this.state.mortgage.propertyType ===\r\n PropertyType.SelfBuild && (\r\n //self build\r\n <>\r\n <InputPill\r\n hideIfValue={this.state.emptyOnly}\r\n field={this.state.fields.getFieldByName(\r\n \"selfOwnedSite\"\r\n )}\r\n ></InputPill>\r\n {this.state.mortgage.selfOwnedSite ===\r\n SelfOwnedSite.No && (\r\n //not build by themselves\r\n <InputPill\r\n hideIfValue={this.state.emptyOnly}\r\n field={this.state.fields.getFieldByName(\r\n \"pleaseConfirmIfTheSiteIsBeingGifted\"\r\n )}\r\n ></InputPill>\r\n )}\r\n <InputPill\r\n hideIfValue={this.state.emptyOnly}\r\n field={this.state.fields.getFieldByName(\r\n \"selfBuildContractType\"\r\n )}\r\n ></InputPill>\r\n <InputPill\r\n hideIfValue={this.state.emptyOnly}\r\n field={this.state.fields.getFieldByName(\r\n \"hasTheBuildObtainedFullPlanningPermission\"\r\n )}\r\n ></InputPill>\r\n <InputPill\r\n hideIfValue={this.state.emptyOnly}\r\n field={this.state.fields.getFieldByName(\r\n \"estimatedCostofTheBuild\"\r\n )}\r\n ></InputPill>\r\n </>\r\n )}\r\n </>\r\n )}\r\n {this.state.mortgage.type ===\r\n MortgageType.RemortgagingExistingLoan &&\r\n [\r\n MortgageSubType.EquityReleaseTopup,\r\n MortgageSubType.EquityReleaseWithWorks,\r\n ].includes(this.state.mortgage.subType) && (\r\n //switcher with equity\r\n <>\r\n <InputPill\r\n hideIfValue={this.state.emptyOnly}\r\n field={this.state.fields.getFieldByName(\r\n \"equityReleasetoCarryOutHomeImprovements\"\r\n )}\r\n ></InputPill>\r\n\r\n {this.state.mortgage\r\n .equityReleasetoCarryOutHomeImprovements ===\r\n true && (\r\n //switcher with equity\r\n //equityReleasetoCarryOutHomeImprovements yes\r\n <InputPill\r\n hideIfValue={this.state.emptyOnly}\r\n field={this.state.fields.getFieldByName(\r\n \"costofTheWork\"\r\n )}\r\n ></InputPill>\r\n )}\r\n </>\r\n )}\r\n </>\r\n )}\r\n </Stack>\r\n </Row>\r\n </Container>\r\n <Container>\r\n <Row>\r\n <Col className=\"toggle-box\">\r\n <Form.Check\r\n type=\"switch\"\r\n id=\"empty-fields-switch\"\r\n label=\"Empty Fields Only\"\r\n reverse\r\n onClick={() =>\r\n this.setState({ emptyOnly: !this.state.emptyOnly })\r\n }\r\n />\r\n </Col>\r\n </Row>\r\n <Stack\r\n direction=\"horizontal\"\r\n gap={3}\r\n className=\"text-center justify-center\"\r\n >\r\n <ButtonGroup>\r\n <button\r\n type=\"button\"\r\n className=\"btn btn-standard-transparent btn-outline btn-wide\"\r\n onClick={this.prev}\r\n >\r\n Back\r\n </button>\r\n <button\r\n type=\"button\"\r\n className=\"btn btn-dark btn-wide\"\r\n onClick={this.next}\r\n >\r\n Next\r\n </button>\r\n </ButtonGroup>\r\n </Stack>\r\n </Container>\r\n </Form>\r\n </Col>\r\n </Row>\r\n </PortalPage>\r\n </>\r\n );\r\n }\r\n\r\n async getMortgage() {\r\n const context = this.context as UserContextState;\r\n let id = context.contact?.mortgageId;\r\n let url = `/property/getProperty?mortgageId=${id}`;\r\n axios\r\n .get(url)\r\n .then((response) => {\r\n var mortgage = response.data;\r\n this.setState({ mortgage: mortgage, loading: true });\r\n this.getTooltips(\"mortgage\");\r\n })\r\n .catch((error) => {\r\n if (error.response.statusCode === 401) {\r\n alert(\"Unauthorized\");\r\n }\r\n });\r\n }\r\n}\r\n","import { cssColor } from \"@fluentui/react\";\r\nimport { StringifyOptions } from \"querystring\";\r\nimport React from \"react\";\r\nimport { Row, Col, Container, Accordion } from \"react-bootstrap\";\r\nimport { MortgageDocumentStatusCode } from \"../models/PortalMortgageDocumentModel\";\r\nimport { Tooltip } from \"./Tooltip\";\r\nimport axios from \"axios\";\r\nimport { PortalMortgageModel } from \"../models/PortalMortgageModel\";\r\n\r\ninterface IDocumentListProps {\r\n list: IDocumentListItem[];\r\n columnCount: number;\r\n title: string;\r\n legend: string;\r\n}\r\n\r\ninterface IDocumentListItem {\r\n key: string;\r\n text: string;\r\n class: string;\r\n percentComplete: number;\r\n drillthrough: IDocumentListProps;\r\n needsAction: boolean;\r\n}\r\n\r\ninterface IDocumentListState {\r\n parent: IDocumentListProps;\r\n context: IDocumentListProps;\r\n}\r\n\r\nexport class DocumentList extends React.Component<any, IDocumentListState> {\r\n constructor(props: any) {\r\n super(props);\r\n\r\n let categories: IDocumentListItem[] = [];\r\n props.categories.forEach((element: string) => {\r\n let d = props.documents.filter((item: { category: string; }) => { return item.category === element });\r\n let needsActionDocs = d.filter((item: { statusReason: number; }) => { return item.statusReason === MortgageDocumentStatusCode.NeedsAction });\r\n categories.push(\r\n {\r\n key: element,\r\n text: element,\r\n class: '',\r\n percentComplete: 0,\r\n drillthrough: { columnCount: 1, title: \"Outstanding documents in \" + element, legend: '', list: d },\r\n needsAction: needsActionDocs.length > 0 ? true : false\r\n }\r\n );\r\n });\r\n\r\n let rootProps: IDocumentListProps = { columnCount: 1, title: \"Outstanding categories\", legend: '', list: categories };\r\n\r\n this.state = { parent: rootProps, context: rootProps };\r\n }\r\n\r\n getPercentCompleteClass(percentComplete: number) {\r\n if (percentComplete < 25)\r\n return \"DocumentList-perc-0\";\r\n if (percentComplete < 50)\r\n return \"DocumentList-perc-25\";\r\n if (percentComplete < 75)\r\n return \"DocumentList-perc-50\";\r\n if (percentComplete < 100)\r\n return \"DocumentList-perc-75\";\r\n return \"DocumentList-perc-100\";\r\n }\r\n\r\n drillthrough(item: IDocumentListItem) {\r\n if (item.drillthrough) {\r\n this.setState({ parent: this.state.parent, context: item.drillthrough });\r\n }\r\n }\r\n\r\n home() {\r\n this.setState({ parent: this.state.parent, context: this.state.parent });\r\n }\r\n\r\n render() {\r\n const parent = this.state.parent;\r\n const context = this.state.context;\r\n const list = context.list ?? [];\r\n const columnCount = context.columnCount || 1;\r\n const colClass = (columnCount == 2 ? \"col-5\" : \"col-10\") + \" text-start\"\r\n\r\n const legendClass = colClass + \" text-start\";\r\n\r\n return (\r\n <Container className=\"documentlist\">\r\n <Row>\r\n <Col className={legendClass}>\r\n <h4><span>{parent.legend} </span></h4>\r\n </Col>\r\n </Row>\r\n <div className=\"tape\" />\r\n <div className=\"postit\">\r\n <div onClick={(e) => this.home()}><i className=\"fas fa-house text-start pointer\" style={{float: \"left\", marginTop: 6}}></i></div>\r\n <h3 style={{fontFamily: 'caveat', color: 'black'}}>Document checklist</h3>\r\n {list.map((item: any, item_idx: number) => (\r\n <Row key={item_idx}>\r\n <Col className=\"col-1 p-0\">\r\n <div className='postititem'>-</div>\r\n </Col>\r\n <Col className=\"col-11 text-start p-0 pr-3\">\r\n <div onClick={(e) => this.drillthrough(item)} className='postititem'>\r\n <span className={item.statusReason == 755980001 ? 'postititemdone' : ''}>\r\n {item.text ?? item.portalName}\r\n </span>\r\n \r\n <span>\r\n {item.statusReason == MortgageDocumentStatusCode.Approved &&\r\n <i className=\"fas fa-check postititem-approved\"></i>}\r\n {item.needsAction &&\r\n <i className=\"fas fa-circle-exclamation exclamation\"></i>}\r\n {item.statusReason == MortgageDocumentStatusCode.NeedsAction &&\r\n <Tooltip tooltip={{ \"fieldname\": \"\", \"title\": \"Needs Action\", \"content\": item.comments }} >\r\n <i className=\"fas fa-circle-exclamation exclamation\"></i>\r\n </Tooltip>}\r\n </span>\r\n </div>\r\n </Col>\r\n </Row>\r\n ))}\r\n </div>\r\n </Container>\r\n );\r\n }\r\n}","import React, { ReactNode } from \"react\";\r\nimport { Col, Container, Row } from \"react-bootstrap\";\r\nimport { ChatQuestionModel } from \"./ChatQuestionModel\";\r\n\r\nexport enum MessageDirection {\r\n Incoming = 1,\r\n Outgoing = 2\r\n}\r\n\r\nexport interface ChatMessageProps {\r\n direction?: MessageDirection,\r\n initials?: string | null,\r\n //onMessageAdded(question: ChatQuestionModel | null): void,\r\n question: ChatQuestionModel | null,\r\n children: ReactNode,\r\n addclass?: string | null\r\n}\r\n\r\nexport class ChatMessage extends React.Component<ChatMessageProps, any> {\r\n\r\n componentDidMount(): void {\r\n //this.props.onMessageAdded(this.props.question);\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n {this.props.direction === MessageDirection.Incoming && <>\r\n <Row style={{ marginTop: 15 }} className=\"align-items-center\">\r\n <Col md={12} style={{ padding: 0 }}>\r\n <div className={`rounded-3 text-end chat-message-container chat-message-container-incoming ${this.props.addclass ?? \"\" }`}>\r\n {this.props.children}\r\n </div>\r\n </Col>\r\n </Row>\r\n </>\r\n }\r\n {this.props.direction === MessageDirection.Outgoing &&\r\n <Container>\r\n <Row style={{ marginTop: 15 }} className=\"align-items-center\">\r\n <Col md={1} style={{ padding: 0 }}>\r\n <div className=\"circle-robot\" style={{ width: \"40px\" }}>\r\n <div className=\"chat-avatar-circle-inner\"><i className=\"fas fa-user\"></i></div>\r\n </div>\r\n </Col>\r\n <Col md={11} style={{ padding: 0, paddingLeft: 5 }}>\r\n <div className=\"rounded-3 text-start chat-message-container chat-message-container-outgoing\">{this.props.children}</div>\r\n </Col>\r\n </Row>\r\n </Container>\r\n }\r\n </>\r\n );\r\n };\r\n}","import { Children, cloneElement, isValidElement } from 'react';\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\n\nexport function getChildMapping(children, mapFn) {\n var mapper = function mapper(child) {\n return mapFn && isValidElement(child) ? mapFn(child) : child;\n };\n\n var result = Object.create(null);\n if (children) Children.map(children, function (c) {\n return c;\n }).forEach(function (child) {\n // run the map function here instead so that the key is the computed one\n result[child.key] = mapper(child);\n });\n return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\nexport function mergeChildMappings(prev, next) {\n prev = prev || {};\n next = next || {};\n\n function getValueForKey(key) {\n return key in next ? next[key] : prev[key];\n } // For each key of `next`, the list of keys to insert before that key in\n // the combined list\n\n\n var nextKeysPending = Object.create(null);\n var pendingKeys = [];\n\n for (var prevKey in prev) {\n if (prevKey in next) {\n if (pendingKeys.length) {\n nextKeysPending[prevKey] = pendingKeys;\n pendingKeys = [];\n }\n } else {\n pendingKeys.push(prevKey);\n }\n }\n\n var i;\n var childMapping = {};\n\n for (var nextKey in next) {\n if (nextKeysPending[nextKey]) {\n for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n var pendingNextKey = nextKeysPending[nextKey][i];\n childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n }\n }\n\n childMapping[nextKey] = getValueForKey(nextKey);\n } // Finally, add the keys which didn't appear before any key in `next`\n\n\n for (i = 0; i < pendingKeys.length; i++) {\n childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n }\n\n return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nexport function getInitialChildMapping(props, onExited) {\n return getChildMapping(props.children, function (child) {\n return cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n appear: getProp(child, 'appear', props),\n enter: getProp(child, 'enter', props),\n exit: getProp(child, 'exit', props)\n });\n });\n}\nexport function getNextChildMapping(nextProps, prevChildMapping, onExited) {\n var nextChildMapping = getChildMapping(nextProps.children);\n var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n Object.keys(children).forEach(function (key) {\n var child = children[key];\n if (!isValidElement(child)) return;\n var hasPrev = (key in prevChildMapping);\n var hasNext = (key in nextChildMapping);\n var prevChild = prevChildMapping[key];\n var isLeaving = isValidElement(prevChild) && !prevChild.props.in; // item is new (entering)\n\n if (hasNext && (!hasPrev || isLeaving)) {\n // console.log('entering', key)\n children[key] = cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n } else if (!hasNext && hasPrev && !isLeaving) {\n // item is old (exiting)\n // console.log('leaving', key)\n children[key] = cloneElement(child, {\n in: false\n });\n } else if (hasNext && hasPrev && isValidElement(prevChild)) {\n // item hasn't changed transition states\n // copy over the last transition props;\n // console.log('unchanged', key)\n children[key] = cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: prevChild.props.in,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n }\n });\n return children;\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { getChildMapping, getInitialChildMapping, getNextChildMapping } from './utils/ChildMapping';\n\nvar values = Object.values || function (obj) {\n return Object.keys(obj).map(function (k) {\n return obj[k];\n });\n};\n\nvar defaultProps = {\n component: 'div',\n childFactory: function childFactory(child) {\n return child;\n }\n};\n/**\n * The `<TransitionGroup>` component manages a set of transition components\n * (`<Transition>` and `<CSSTransition>`) in a list. Like with the transition\n * components, `<TransitionGroup>` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the `<TransitionGroup>`.\n *\n * Note that `<TransitionGroup>` does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n\nvar TransitionGroup = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(TransitionGroup, _React$Component);\n\n function TransitionGroup(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n\n var handleExited = _this.handleExited.bind(_assertThisInitialized(_this)); // Initial children should all be entering, dependent on appear\n\n\n _this.state = {\n contextValue: {\n isMounting: true\n },\n handleExited: handleExited,\n firstRender: true\n };\n return _this;\n }\n\n var _proto = TransitionGroup.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.mounted = true;\n this.setState({\n contextValue: {\n isMounting: false\n }\n });\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n\n TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n var prevChildMapping = _ref.children,\n handleExited = _ref.handleExited,\n firstRender = _ref.firstRender;\n return {\n children: firstRender ? getInitialChildMapping(nextProps, handleExited) : getNextChildMapping(nextProps, prevChildMapping, handleExited),\n firstRender: false\n };\n } // node is `undefined` when user provided `nodeRef` prop\n ;\n\n _proto.handleExited = function handleExited(child, node) {\n var currentChildMapping = getChildMapping(this.props.children);\n if (child.key in currentChildMapping) return;\n\n if (child.props.onExited) {\n child.props.onExited(node);\n }\n\n if (this.mounted) {\n this.setState(function (state) {\n var children = _extends({}, state.children);\n\n delete children[child.key];\n return {\n children: children\n };\n });\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n Component = _this$props.component,\n childFactory = _this$props.childFactory,\n props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n var contextValue = this.state.contextValue;\n var children = values(this.state.children).map(childFactory);\n delete props.appear;\n delete props.enter;\n delete props.exit;\n\n if (Component === null) {\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, children);\n }\n\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, /*#__PURE__*/React.createElement(Component, props, children));\n };\n\n return TransitionGroup;\n}(React.Component);\n\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * `<TransitionGroup>` renders a `<div>` by default. You can change this\n * behavior by providing a `component` prop.\n * If you use React v16+ and would like to avoid a wrapping `<div>` element\n * you can pass in `component={null}`. This is useful if the wrapping div\n * borks your css styles.\n */\n component: PropTypes.any,\n\n /**\n * A set of `<Transition>` components, that are toggled `in` and out as they\n * leave. the `<TransitionGroup>` will inject specific transition props, so\n * remember to spread them through if you are wrapping the `<Transition>` as\n * with our `<Fade>` example.\n *\n * While this component is meant for multiple `Transition` or `CSSTransition`\n * children, sometimes you may want to have a single transition child with\n * content that you want to be transitioned out and in when you change it\n * (e.g. routes, images etc.) In that case you can change the `key` prop of\n * the transition child as you change its content, this will cause\n * `TransitionGroup` to transition the child out and back in.\n */\n children: PropTypes.node,\n\n /**\n * A convenience prop that enables or disables appear animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n appear: PropTypes.bool,\n\n /**\n * A convenience prop that enables or disables enter animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * A convenience prop that enables or disables exit animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * You may need to apply reactive updates to a child as it is exiting.\n * This is generally done by using `cloneElement` however in the case of an exiting\n * child the element has already been removed and not accessible to the consumer.\n *\n * If you do need to update a child as it leaves you can provide a `childFactory`\n * to wrap every child, even the ones that are leaving.\n *\n * @type Function(child: ReactElement) -> ReactElement\n */\n childFactory: PropTypes.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\nexport default TransitionGroup;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport addOneClass from 'dom-helpers/addClass';\nimport removeOneClass from 'dom-helpers/removeClass';\nimport React from 'react';\nimport Transition from './Transition';\nimport { classNamesShape } from './utils/PropTypes';\nimport { forceReflow } from './utils/reflow';\n\nvar _addClass = function addClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return addOneClass(node, c);\n });\n};\n\nvar removeClass = function removeClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return removeOneClass(node, c);\n });\n};\n/**\n * A transition component inspired by the excellent\n * [ng-animate](https://docs.angularjs.org/api/ngAnimate) library, you should\n * use it if you're using CSS transitions or animations. It's built upon the\n * [`Transition`](https://reactcommunity.org/react-transition-group/transition)\n * component, so it inherits all of its props.\n *\n * `CSSTransition` applies a pair of class names during the `appear`, `enter`,\n * and `exit` states of the transition. The first class is applied and then a\n * second `*-active` class in order to activate the CSS transition. After the\n * transition, matching `*-done` class names are applied to persist the\n * transition state.\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n * <div>\n * <CSSTransition in={inProp} timeout={200} classNames=\"my-node\">\n * <div>\n * {\"I'll receive my-node-* classes\"}\n * </div>\n * </CSSTransition>\n * <button type=\"button\" onClick={() => setInProp(true)}>\n * Click to Enter\n * </button>\n * </div>\n * );\n * }\n * ```\n *\n * When the `in` prop is set to `true`, the child component will first receive\n * the class `example-enter`, then the `example-enter-active` will be added in\n * the next tick. `CSSTransition` [forces a\n * reflow](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * between before adding the `example-enter-active`. This is an important trick\n * because it allows us to transition between `example-enter` and\n * `example-enter-active` even though they were added immediately one after\n * another. Most notably, this is what makes it possible for us to animate\n * _appearance_.\n *\n * ```css\n * .my-node-enter {\n * opacity: 0;\n * }\n * .my-node-enter-active {\n * opacity: 1;\n * transition: opacity 200ms;\n * }\n * .my-node-exit {\n * opacity: 1;\n * }\n * .my-node-exit-active {\n * opacity: 0;\n * transition: opacity 200ms;\n * }\n * ```\n *\n * `*-active` classes represent which styles you want to animate **to**, so it's\n * important to add `transition` declaration only to them, otherwise transitions\n * might not behave as intended! This might not be obvious when the transitions\n * are symmetrical, i.e. when `*-enter-active` is the same as `*-exit`, like in\n * the example above (minus `transition`), but it becomes apparent in more\n * complex transitions.\n *\n * **Note**: If you're using the\n * [`appear`](http://reactcommunity.org/react-transition-group/transition#Transition-prop-appear)\n * prop, make sure to define styles for `.appear-*` classes as well.\n */\n\n\nvar CSSTransition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(CSSTransition, _React$Component);\n\n function CSSTransition() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.appliedClasses = {\n appear: {},\n enter: {},\n exit: {}\n };\n\n _this.onEnter = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument[0],\n appearing = _this$resolveArgument[1];\n\n _this.removeClasses(node, 'exit');\n\n _this.addClass(node, appearing ? 'appear' : 'enter', 'base');\n\n if (_this.props.onEnter) {\n _this.props.onEnter(maybeNode, maybeAppearing);\n }\n };\n\n _this.onEntering = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument2 = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument2[0],\n appearing = _this$resolveArgument2[1];\n\n var type = appearing ? 'appear' : 'enter';\n\n _this.addClass(node, type, 'active');\n\n if (_this.props.onEntering) {\n _this.props.onEntering(maybeNode, maybeAppearing);\n }\n };\n\n _this.onEntered = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument3 = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument3[0],\n appearing = _this$resolveArgument3[1];\n\n var type = appearing ? 'appear' : 'enter';\n\n _this.removeClasses(node, type);\n\n _this.addClass(node, type, 'done');\n\n if (_this.props.onEntered) {\n _this.props.onEntered(maybeNode, maybeAppearing);\n }\n };\n\n _this.onExit = function (maybeNode) {\n var _this$resolveArgument4 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument4[0];\n\n _this.removeClasses(node, 'appear');\n\n _this.removeClasses(node, 'enter');\n\n _this.addClass(node, 'exit', 'base');\n\n if (_this.props.onExit) {\n _this.props.onExit(maybeNode);\n }\n };\n\n _this.onExiting = function (maybeNode) {\n var _this$resolveArgument5 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument5[0];\n\n _this.addClass(node, 'exit', 'active');\n\n if (_this.props.onExiting) {\n _this.props.onExiting(maybeNode);\n }\n };\n\n _this.onExited = function (maybeNode) {\n var _this$resolveArgument6 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument6[0];\n\n _this.removeClasses(node, 'exit');\n\n _this.addClass(node, 'exit', 'done');\n\n if (_this.props.onExited) {\n _this.props.onExited(maybeNode);\n }\n };\n\n _this.resolveArguments = function (maybeNode, maybeAppearing) {\n return _this.props.nodeRef ? [_this.props.nodeRef.current, maybeNode] // here `maybeNode` is actually `appearing`\n : [maybeNode, maybeAppearing];\n };\n\n _this.getClassNames = function (type) {\n var classNames = _this.props.classNames;\n var isStringClassNames = typeof classNames === 'string';\n var prefix = isStringClassNames && classNames ? classNames + \"-\" : '';\n var baseClassName = isStringClassNames ? \"\" + prefix + type : classNames[type];\n var activeClassName = isStringClassNames ? baseClassName + \"-active\" : classNames[type + \"Active\"];\n var doneClassName = isStringClassNames ? baseClassName + \"-done\" : classNames[type + \"Done\"];\n return {\n baseClassName: baseClassName,\n activeClassName: activeClassName,\n doneClassName: doneClassName\n };\n };\n\n return _this;\n }\n\n var _proto = CSSTransition.prototype;\n\n _proto.addClass = function addClass(node, type, phase) {\n var className = this.getClassNames(type)[phase + \"ClassName\"];\n\n var _this$getClassNames = this.getClassNames('enter'),\n doneClassName = _this$getClassNames.doneClassName;\n\n if (type === 'appear' && phase === 'done' && doneClassName) {\n className += \" \" + doneClassName;\n } // This is to force a repaint,\n // which is necessary in order to transition styles when adding a class name.\n\n\n if (phase === 'active') {\n if (node) forceReflow(node);\n }\n\n if (className) {\n this.appliedClasses[type][phase] = className;\n\n _addClass(node, className);\n }\n };\n\n _proto.removeClasses = function removeClasses(node, type) {\n var _this$appliedClasses$ = this.appliedClasses[type],\n baseClassName = _this$appliedClasses$.base,\n activeClassName = _this$appliedClasses$.active,\n doneClassName = _this$appliedClasses$.done;\n this.appliedClasses[type] = {};\n\n if (baseClassName) {\n removeClass(node, baseClassName);\n }\n\n if (activeClassName) {\n removeClass(node, activeClassName);\n }\n\n if (doneClassName) {\n removeClass(node, doneClassName);\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n _ = _this$props.classNames,\n props = _objectWithoutPropertiesLoose(_this$props, [\"classNames\"]);\n\n return /*#__PURE__*/React.createElement(Transition, _extends({}, props, {\n onEnter: this.onEnter,\n onEntered: this.onEntered,\n onEntering: this.onEntering,\n onExit: this.onExit,\n onExiting: this.onExiting,\n onExited: this.onExited\n }));\n };\n\n return CSSTransition;\n}(React.Component);\n\nCSSTransition.defaultProps = {\n classNames: ''\n};\nCSSTransition.propTypes = process.env.NODE_ENV !== \"production\" ? _extends({}, Transition.propTypes, {\n /**\n * The animation classNames applied to the component as it appears, enters,\n * exits or has finished the transition. A single name can be provided, which\n * will be suffixed for each stage, e.g. `classNames=\"fade\"` applies:\n *\n * - `fade-appear`, `fade-appear-active`, `fade-appear-done`\n * - `fade-enter`, `fade-enter-active`, `fade-enter-done`\n * - `fade-exit`, `fade-exit-active`, `fade-exit-done`\n *\n * A few details to note about how these classes are applied:\n *\n * 1. They are _joined_ with the ones that are already defined on the child\n * component, so if you want to add some base styles, you can use\n * `className` without worrying that it will be overridden.\n *\n * 2. If the transition component mounts with `in={false}`, no classes are\n * applied yet. You might be expecting `*-exit-done`, but if you think\n * about it, a component cannot finish exiting if it hasn't entered yet.\n *\n * 2. `fade-appear-done` and `fade-enter-done` will _both_ be applied. This\n * allows you to define different behavior for when appearing is done and\n * when regular entering is done, using selectors like\n * `.fade-enter-done:not(.fade-appear-done)`. For example, you could apply\n * an epic entrance animation when element first appears in the DOM using\n * [Animate.css](https://daneden.github.io/animate.css/). Otherwise you can\n * simply use `fade-enter-done` for defining both cases.\n *\n * Each individual classNames can also be specified independently like:\n *\n * ```js\n * classNames={{\n * appear: 'my-appear',\n * appearActive: 'my-active-appear',\n * appearDone: 'my-done-appear',\n * enter: 'my-enter',\n * enterActive: 'my-active-enter',\n * enterDone: 'my-done-enter',\n * exit: 'my-exit',\n * exitActive: 'my-active-exit',\n * exitDone: 'my-done-exit',\n * }}\n * ```\n *\n * If you want to set these classes using CSS Modules:\n *\n * ```js\n * import styles from './styles.css';\n * ```\n *\n * you might want to use camelCase in your CSS file, that way could simply\n * spread them instead of listing them one by one:\n *\n * ```js\n * classNames={{ ...styles }}\n * ```\n *\n * @type {string | {\n * appear?: string,\n * appearActive?: string,\n * appearDone?: string,\n * enter?: string,\n * enterActive?: string,\n * enterDone?: string,\n * exit?: string,\n * exitActive?: string,\n * exitDone?: string,\n * }}\n */\n classNames: classNamesShape,\n\n /**\n * A `<Transition>` callback fired immediately after the 'enter' or 'appear' class is\n * applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEnter: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'enter-active' or\n * 'appear-active' class is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'enter' or\n * 'appear' classes are **removed** and the `done` class is added to the DOM node.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntered: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'exit' class is\n * applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExit: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'exit-active' is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExiting: PropTypes.func,\n\n /**\n * A `<Transition>` callback fired immediately after the 'exit' classes\n * are **removed** and the `exit-done` class is added to the DOM node.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExited: PropTypes.func\n}) : {};\nexport default CSSTransition;","export enum ChatQuestionType {\r\n Statement = 755980000,\r\n Question = 755980001,\r\n Button = 755980002,\r\n DocumentCategory = 755980003,\r\n OpenBanking = 755980004,\r\n Upload = 755980005\r\n}\r\n\r\nexport interface ChatQuestionModel {\r\n chatQuestionId: string;\r\n parentQuestionId: string | null;\r\n sequence: number;\r\n text: string;\r\n questionType: ChatQuestionType | null;\r\n documentCategoryId: string | null;\r\n documentCategory: string | null;\r\n helpText: string | null;\r\n mortgageDocumentId: string | null;\r\n}","import { ChatQuestionModel } from \"./ChatQuestionModel\";\r\n\r\n\r\nexport class QuestionManager {\r\n questions: ChatQuestionModel[];\r\n currentQuestion: ChatQuestionModel | null;\r\n\r\n constructor(questions: ChatQuestionModel[]) {\r\n this.questions = questions;\r\n this.currentQuestion = null;\r\n }\r\n\r\n public getParentQuestion(question: ChatQuestionModel): ChatQuestionModel | undefined {\r\n return this.questions.find((q) => { return q.chatQuestionId === question.parentQuestionId; });\r\n }\r\n\r\n public removeQuestion(question: ChatQuestionModel): void {\r\n let idx = this.questions.indexOf(question);\r\n if (idx > -1) {\r\n this.questions.splice(idx, 1);\r\n }\r\n }\r\n\r\n public hasChildQuestions(question: ChatQuestionModel): Boolean {\r\n let children = this.questions.find((q) => { return q.parentQuestionId === question.chatQuestionId; });\r\n return children != undefined;\r\n }\r\n\r\n public getChildQuestions(question: ChatQuestionModel): ChatQuestionModel[] {\r\n let children = this.questions.filter(x => x.parentQuestionId === question.chatQuestionId);\r\n return children;\r\n }\r\n\r\n public getFirstQuestion(): ChatQuestionModel | undefined {\r\n let q = this.questions.find(x => x.parentQuestionId === null);\r\n return q;\r\n }\r\n \r\n public getNextQuestion(): ChatQuestionModel | undefined {\r\n if (this.currentQuestion == null) {\r\n let q = this.getFirstQuestion();\r\n if (q != null) {\r\n this.currentQuestion = q;\r\n return q;\r\n }\r\n }\r\n else {\r\n let questions = this.getChildQuestions(this.currentQuestion);\r\n if (questions.length > 0) {\r\n this.currentQuestion = questions[0];\r\n return questions[0];\r\n }\r\n }\r\n }\r\n}\r\n","export default function delay(ms: number) {\r\n return new Promise(resolve => setTimeout(resolve, ms));\r\n}","import React from \"react\";\r\nimport { Button } from \"react-bootstrap\";\r\nimport { ChatQuestionModel } from \"./ChatQuestionModel\";\r\n\r\nexport interface ChatButtonListProps {\r\n questions: ChatQuestionModel[];\r\n setAnswer(question?: ChatQuestionModel, value?: any): void;\r\n}\r\n\r\nexport interface ChatButtonListState {\r\n primaryQuestions: ChatQuestionModel[];\r\n secondaryQuestions: ChatQuestionModel[];\r\n hasMoreQuestions: Boolean;\r\n moreButtonVisible: Boolean;\r\n}\r\n\r\nexport class ChatButtonList extends React.Component<ChatButtonListProps, ChatButtonListState> {\r\n\r\n constructor(props: ChatButtonListProps) {\r\n super(props);\r\n\r\n this.showMore = this.showMore.bind(this);\r\n\r\n if (props.questions.length > 3) {\r\n let primaryQuestions = props.questions.filter((q, i) => { return i < 2 })\r\n let secondaryQuestions = props.questions.filter((q, i) => { return i >= 2})\r\n this.state = { primaryQuestions: primaryQuestions, secondaryQuestions: secondaryQuestions, hasMoreQuestions: true, moreButtonVisible: true };\r\n }\r\n else {\r\n this.state = { primaryQuestions: props.questions, secondaryQuestions: [], hasMoreQuestions: false, moreButtonVisible: false };\r\n }\r\n }\r\n\r\n private showMore() {\r\n this.setState({ moreButtonVisible: false });\r\n }\r\n\r\n render() {\r\n let primaryQuestions = this.state.primaryQuestions.map((q) => {\r\n return <Button key={q.chatQuestionId} className=\"btn-outline-doddl\" variant=\"lignt\" onClick={e => this.props.setAnswer(q, { name: q.text, value: q.chatQuestionId })}>{q.text}</Button>\r\n });\r\n let secondaryQuestions = this.state.secondaryQuestions.map((q) => {\r\n return <Button key={q.chatQuestionId} className=\"btn-outline-doddl\" variant=\"lignt\" onClick={e => this.props.setAnswer(q, { name: q.text, value: q.chatQuestionId })}>{q.text}</Button>\r\n });\r\n if (this.state.moreButtonVisible) {\r\n return <>\r\n {primaryQuestions}\r\n {this.state.moreButtonVisible && <Button className=\"btn-outline-doddl\" variant=\"lignt\" onClick={e => { this.showMore(); }}>...</Button>}\r\n </>;\r\n } else {\r\n return <>\r\n {primaryQuestions}\r\n {secondaryQuestions}\r\n </>;\r\n }\r\n }\r\n}","// Import React FilePond\r\nimport { FilePond, registerPlugin } from 'react-filepond';\r\n// Import FilePond styles\r\nimport 'filepond/dist/filepond.min.css';\r\nimport FilePondPluginFileEncode from 'filepond-plugin-file-encode';\r\nimport axios from 'axios';\r\nimport FilePondPluginFileValidateType from 'filepond-plugin-file-validate-type';\r\nimport { logger } from '../helper/Logger';\r\nimport { Component } from 'react';\r\n\r\n// Register the plugin\r\nregisterPlugin(FilePondPluginFileEncode);\r\nregisterPlugin(FilePondPluginFileValidateType);\r\n\r\ninterface IState {\r\n uploading: boolean;\r\n}\r\n\r\n//export function FileUploadLegacy(props) {\r\nexport class FileUploadLegacy extends Component<any, IState>{\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {uploading: false};\r\n this.uploadStarted = this.uploadStarted.bind(this);\r\n this.uploadComplete = this.uploadComplete.bind(this);\r\n }\r\n \r\n uploadStarted() {\r\n this.setState({uploading: true});\r\n }\r\n\r\n uploadComplete() {\r\n this.setState({uploading: false});\r\n }\r\n\r\n render() {\r\n var uploadComplete = this.uploadComplete;\r\n return <>\r\n <div className='progresscontainer'>\r\n {this.state.uploading &&\r\n <div className='progressfile'>Processing... <i className=\"fas fa-spinner fa-spin-pulse\" style={{padding: 3}}></i></div>\r\n }\r\n <FilePond allowMultiple={true} allowFileTypeValidation={true} \r\n fileValidateTypeLabelExpectedTypes={\"\"} labelFileTypeNotAllowed={\"Only PDF, PNG or JPEG allowed\"}\r\n acceptedFileTypes={['image/png', 'image/jpeg', 'image/jpg', 'application/pdf']} onaddfile={(error, file) => {\r\n if (error) {\r\n return;\r\n }\r\n this.uploadStarted();\r\n var form = new FormData();\r\n form.append('file', file.file);\r\n\r\n axios.post(\"/SP/UploadFile\", form,\r\n {\r\n // \"content\": file.getFileEncodeBase64String(),\r\n params: { \"contactId\": this.props.contactId, \"category\": this.props.category, \"mortgageDocumentId\": this.props.mortgageDocumentId, \"mortgageId\": this.props.mortgageId, \"uploadId\": file.id, \"url\": \"\", \"fileName\": file.filename },\r\n maxBodyLength: 2147483647,\r\n headers: { \"Content-Type\": \"multipart/form-data\" }\r\n })\r\n .then((response) => {\r\n uploadComplete();\r\n if (this.props.onUploadComplete) {\r\n this.props.onUploadComplete(response.data, file.id);\r\n }\r\n })\r\n .catch((error) => {\r\n uploadComplete();\r\n logger.log(error);\r\n });\r\n }}\r\n onremovefile={(error, file) => {\r\n if (error) {\r\n return;\r\n }\r\n this.uploadStarted();\r\n axios.post(\"/SP/RemoveFile\", null,\r\n {\r\n params: { \"filename\": file.filename, \"mortgageId\": this.props.mortgageId, \"uploadId\": file.id }\r\n })\r\n .then((response) => {\r\n uploadComplete();\r\n if (this.props.onDeleteComplete) {\r\n this.props.onDeleteComplete(response.data);\r\n }\r\n })\r\n .catch((error) => {\r\n uploadComplete();\r\n logger.log(error);\r\n });\r\n }}\r\n />\r\n </div>\r\n <br />\r\n </>;\r\n }\r\n}\r\n\r\nexport const SPCategory = Object.freeze({\r\n Saving: \"Savings Statement\",\r\n Current: \"Current Account Statement\"\r\n});","import React from \"react\";\r\nimport { Button } from \"react-bootstrap\";\r\nimport { FileUploadLegacy } from \"../FileUploadLegacy\";\r\nimport { ChatQuestionModel } from \"./ChatQuestionModel\";\r\nimport \"./ChatControl.css\"\r\n\r\nexport interface ChatUploadProps {\r\n question: ChatQuestionModel;\r\n confirmUpload(question?: ChatQuestionModel): void;\r\n goBack(question?: ChatQuestionModel): void;\r\n //onUploadComplete(data: any, mortgageDocumentId: string | null): void;\r\n setAnswer(question?: ChatQuestionModel, value?: any): void;\r\n contactId?: string;\r\n}\r\n\r\nexport interface ChatUploadState {\r\n fileUploaded: Boolean;\r\n}\r\n\r\nexport class ChatUpload extends React.Component<ChatUploadProps, ChatUploadState> {\r\n\r\n constructor(props: ChatUploadProps) {\r\n super(props);\r\n this.onUploadComplete = this.onUploadComplete.bind(this);\r\n this.state = { fileUploaded: false };\r\n }\r\n\r\n private onUploadComplete(data: any, mortgageDocumentId: string | null): void {\r\n\r\n this.setState({ fileUploaded: true });\r\n //this.props.onUploadComplete(data, mortgageDocumentId);\r\n }\r\n\r\n render() {\r\n return <>\r\n <div className=\"chat-drag-drop\" style={{ width: '100%', minWidth: '400px' }}>\r\n <div className=\"chat-drag-drop\" style={{ paddingTop: '5px' }}>\r\n <FileUploadLegacy contactId={this.props.contactId} category={this.props.question.documentCategory} mortgageDocumentId={this.props.question.mortgageDocumentId} onUploadComplete={(data: any) => this.onUploadComplete(data, this.props.question.mortgageDocumentId)} />\r\n </div>\r\n <Button className=\"btn-outline-doddl\" variant=\"lignt\" style={{ marginRight: '10px' }} onClick={e => { this.props.goBack(this.props.question) }}>Back</Button>\r\n {this.state.fileUploaded && <Button className=\"btn-outline-doddl\" variant=\"lignt\" style={{ marginRight: '10px' }} onClick={e => { this.props.confirmUpload(this.props.question); }}>I'm done.</Button>}\r\n </div>\r\n </>;\r\n }\r\n}","import React, { ReactNode } from \"react\";\r\nimport { Button } from \"react-bootstrap\";\r\nimport \"./ChatControl.css\"\r\nimport { ChatMessage, MessageDirection } from \"./ChatMessage\";\r\nimport { CSSTransition, TransitionGroup } from \"react-transition-group\";\r\nimport axios from \"axios\";\r\nimport { ChatQuestionModel, ChatQuestionType } from \"./ChatQuestionModel\";\r\nimport { ChatMessageModel } from \"./ChatMessageModel\";\r\nimport { QuestionManager } from \"./QuestionManager\";\r\nimport delay from \"../../helper/delay\";\r\nimport { ChatButtonList } from \"./ChatButtonList\";\r\nimport { ChatUpload } from \"./ChatUpload\";\r\nimport { UserContextComponent } from \"../UserContextComponent\";\r\n\r\nexport interface ChatControlState {\r\n messages: ChatMessageModel[],\r\n uploadedDocuments: string[]\r\n}\r\n\r\nexport interface ChatControlProps {\r\n PrimaryApplicant: string | undefined;\r\n SecondaryApplicant: string | undefined;\r\n onUploadComplete(mortgageDocumentId: string): void;\r\n}\r\n\r\nexport class ChatControl extends UserContextComponent<ChatControlProps, ChatControlState> {\r\n private messagesEnd: any;\r\n private questionManager: QuestionManager;\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.setAnswer = this.setAnswer.bind(this);\r\n this.addAnswer = this.addAnswer.bind(this);\r\n this.addQuestion = this.addQuestion.bind(this);\r\n this.goBack = this.goBack.bind(this);\r\n //this.onUploadComplete = this.onUploadComplete.bind(this);\r\n this.confirmUpload = this.confirmUpload.bind(this);\r\n\r\n this.messagesEnd = React.createRef<HTMLDivElement>();\r\n this.state = { messages: [], uploadedDocuments: [] };\r\n }\r\n\r\n private getQuestions(mortgageId?: string): Promise<any> {\r\n let url = `/Chat/GetChatQuestionsByMortgageId?mortgageId=${mortgageId}`;\r\n return axios.get(url);\r\n }\r\n\r\n componentDidMount(): void {\r\n const context = this.getContext();\r\n this.getQuestions(context.contact?.mortgageId).then((response) => {\r\n this.questionManager = new QuestionManager(response.data);\r\n delay(300).then(() => {\r\n this.getNextQuestion();\r\n });\r\n });\r\n }\r\n\r\n componentDidUpdate(): void {\r\n this.scrollToBottom();\r\n }\r\n\r\n private scrollToBottom(): void {\r\n (this.messagesEnd.current as any)?.scrollIntoView({ behavior: \"smooth\" });\r\n }\r\n\r\n private getInitials(): string {\r\n const context = this.getContext();\r\n const fn = context.contact?.firstName.substring(0, 1) || \"\";\r\n const ln = context.contact?.lastName.substring(0, 1) || \"\";\r\n return fn + ln;\r\n }\r\n\r\n private goBack(question: ChatQuestionModel): void {\r\n this.addAnswer({ name: \"Go back\" });\r\n\r\n let prevQuestion = this.questionManager.getParentQuestion(question);\r\n if (prevQuestion != null) {\r\n prevQuestion = this.questionManager.getParentQuestion(prevQuestion);\r\n }\r\n if (prevQuestion != null)\r\n this.addQuestion(prevQuestion);\r\n }\r\n\r\n private addQuestion(question: ChatQuestionModel): void {\r\n let m: ChatMessageModel = {\r\n order: (this.state.messages.length + 1).toString(),\r\n direction: MessageDirection.Outgoing,\r\n initials: this.getInitials(),\r\n message: question.text,\r\n question: question,\r\n };\r\n\r\n this.appendMessage(m);\r\n\r\n if (question?.questionType !== ChatQuestionType.Statement) {\r\n this.addChildQuestions(question);\r\n }\r\n }\r\n\r\n private isBackButtonEnabled(question: ChatQuestionModel): boolean {\r\n let addBackButton: boolean = false;\r\n\r\n let prevQuestion = this.questionManager.getParentQuestion(question);\r\n if (prevQuestion != null) {\r\n prevQuestion = this.questionManager.getParentQuestion(prevQuestion);\r\n }\r\n if (prevQuestion != null && prevQuestion.questionType !== ChatQuestionType.Statement) {\r\n addBackButton = true;\r\n }\r\n return addBackButton;\r\n }\r\n\r\n private updateApplicantName(questions: ChatQuestionModel[]) {\r\n questions.forEach((q) => {\r\n if (q.text === \"Primary Applicant\" || q.text === \"[Primary Applicant]\") {\r\n if (this.props.PrimaryApplicant)\r\n q.text = this.props.PrimaryApplicant;\r\n }\r\n if (q.text === \"Secondary Applicant\" || q.text === \"[Secondary Applicant]\") {\r\n if (this.props.SecondaryApplicant)\r\n q.text = this.props.SecondaryApplicant;\r\n }\r\n });\r\n }\r\n\r\n private addChildQuestions(question: ChatQuestionModel): void {\r\n let addBackButton = this.isBackButtonEnabled(question);\r\n\r\n let html: ReactNode = <></>;\r\n let questions = this.questionManager.getChildQuestions(question);\r\n if (questions?.length > 0 && (questions[0].questionType == ChatQuestionType.Button || questions[0].questionType == ChatQuestionType.DocumentCategory)) {\r\n this.updateApplicantName(questions);\r\n html = <ChatButtonList questions={questions} setAnswer={this.setAnswer}></ChatButtonList>\r\n\r\n if (addBackButton)\r\n html = <><Button className=\"btn-outline-doddl\" variant=\"lignt\" onClick={e => { this.goBack(question) }}>Go back</Button>{html}</>\r\n }\r\n else if (question.questionType == ChatQuestionType.Upload) {\r\n const context = this.getContext();\r\n\r\n if (question.helpText != null) {\r\n let helpTextMessage: ChatMessageModel = {\r\n order: (this.state.messages.length + 1).toString(),\r\n direction: MessageDirection.Outgoing,\r\n initials: this.getInitials(),\r\n question: question,\r\n message: question.helpText\r\n };\r\n\r\n this.appendMessage(helpTextMessage);\r\n }\r\n html = <ChatUpload question={question} setAnswer={this.setAnswer} contactId={context.contact?.contactId} confirmUpload={this.confirmUpload} goBack={this.goBack}></ChatUpload>\r\n // onUploadComplete={this.onUploadComplete}\r\n } else {\r\n return;\r\n }\r\n\r\n let m: ChatMessageModel = {\r\n order: (this.state.messages.length + 1).toString(),\r\n direction: MessageDirection.Incoming,\r\n initials: this.getInitials(),\r\n question: question,\r\n message: <>{html}</>\r\n };\r\n\r\n delay(300).then(() => {\r\n this.appendMessage(m);\r\n });\r\n }\r\n\r\n private removeLastMessage(): void {\r\n let messages = this.state.messages;\r\n messages.pop();\r\n this.setState({ messages: messages });\r\n }\r\n\r\n private appendMessage(message: ChatMessageModel): void {\r\n let messages = this.state.messages;\r\n messages.push(message);\r\n this.setState({ messages: messages });\r\n }\r\n\r\n private confirmUpload(uploadQuestion: ChatQuestionModel): void {\r\n const context = this.getContext();\r\n axios.post('/MortgageDocuments/MarkMortgageDocumentAsUploaded', null, { params: { mortgageDocumentId: uploadQuestion.mortgageDocumentId, mortgageId: context.mortgage?.mortgageId } })\r\n .then(response => {\r\n if (uploadQuestion.mortgageDocumentId != null)\r\n this.props.onUploadComplete(uploadQuestion.mortgageDocumentId);\r\n });\r\n\r\n this.removeLastMessage();\r\n\r\n this.addAnswer({ name: \"I'm finished with this upload\" });\r\n\r\n this.questionManager.removeQuestion(uploadQuestion);\r\n\r\n let documentTypeQuestion = this.questionManager.getParentQuestion(uploadQuestion);\r\n if (documentTypeQuestion != null) {\r\n this.questionManager.removeQuestion(documentTypeQuestion);\r\n\r\n let documentTypeQuestionTitle = this.questionManager.getParentQuestion(documentTypeQuestion);\r\n if (documentTypeQuestionTitle != null) {\r\n if (!this.questionManager.hasChildQuestions(documentTypeQuestionTitle)) {\r\n this.questionManager.removeQuestion(documentTypeQuestionTitle);\r\n } else {\r\n this.addQuestion(documentTypeQuestionTitle);\r\n return;\r\n }\r\n\r\n let applicantQuestion = this.questionManager.getParentQuestion(documentTypeQuestionTitle);\r\n if (applicantQuestion != null) {\r\n let applicantQuestionTitle = this.questionManager.getParentQuestion(applicantQuestion);\r\n if (!this.questionManager.hasChildQuestions(applicantQuestion)) {\r\n this.questionManager.removeQuestion(applicantQuestion);\r\n\r\n if (applicantQuestionTitle != null) {\r\n if (!this.questionManager.hasChildQuestions(applicantQuestionTitle)) {\r\n this.questionManager.removeQuestion(applicantQuestionTitle);\r\n }\r\n }\r\n }\r\n if (applicantQuestionTitle != null) {\r\n let documentCategoryQuestion = this.questionManager.getParentQuestion(applicantQuestionTitle);\r\n if (documentCategoryQuestion != null) {\r\n\r\n if (!this.questionManager.hasChildQuestions(documentCategoryQuestion)) {\r\n this.questionManager.removeQuestion(documentCategoryQuestion);\r\n }\r\n let documentCategoryQuestionTitle = this.questionManager.getParentQuestion(documentCategoryQuestion);\r\n if (documentCategoryQuestionTitle != null) {\r\n\r\n if (!this.questionManager.hasChildQuestions(documentCategoryQuestionTitle)) {\r\n let lastMessage: ChatMessageModel = {\r\n order: (this.state.messages.length + 1).toString(),\r\n message: \"Our team are currently reviewing your documentation and an advisor will be back to you soon!\",\r\n direction: MessageDirection.Outgoing,\r\n question: null,\r\n };\r\n this.appendMessage(lastMessage);\r\n return;\r\n }\r\n this.addQuestion(documentCategoryQuestionTitle);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n private addAnswer(answer: any): void {\r\n this.removeLastMessage();\r\n\r\n let m: ChatMessageModel = {\r\n order: (this.state.messages.length + 1).toString(),\r\n direction: MessageDirection.Incoming,\r\n initials: this.getInitials(),\r\n message: answer.name,\r\n question: null,\r\n addclass: \"chosenanswer\"\r\n };\r\n\r\n this.appendMessage(m);\r\n }\r\n\r\n setAnswer(question?: ChatQuestionModel, value?: any) {\r\n if (this.questionManager.currentQuestion !== null) {\r\n\r\n this.addAnswer(value);\r\n if (question != null) {\r\n this.questionManager.currentQuestion = question;\r\n this.forceUpdate();\r\n delay(300).then(() => {\r\n this.getNextQuestion();\r\n });\r\n }\r\n }\r\n }\r\n\r\n // onUploadComplete(data: any, mortgageDocumentId: string | null) {\r\n // if (mortgageDocumentId) {\r\n // this.props.onUploadComplete(mortgageDocumentId);\r\n // }\r\n // }\r\n\r\n private getNextQuestion(): void {\r\n let q = this.questionManager.getNextQuestion();\r\n if (q != null) {\r\n this.addQuestion(q);\r\n this.forceUpdate();\r\n\r\n if (q.questionType == ChatQuestionType.Statement) {\r\n delay(300).then(() => {\r\n this.getNextQuestion();\r\n });\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n <section style={{ backgroundColor: \"#eee\" }}>\r\n <div className=\"card\" id=\"chat2\">\r\n <div className=\"card-body\" style={{ position: 'relative', height: 600, overflowY: 'auto' }}>\r\n <TransitionGroup component=\"div\">\r\n {this.state.messages.map((message: ChatMessageModel) => (\r\n <CSSTransition key={message.order} timeout={700} classNames=\"chat-message\">\r\n <ChatMessage {...message} >{message.message}</ChatMessage>\r\n </CSSTransition>\r\n ))}\r\n </TransitionGroup>\r\n <div ref={this.messagesEnd}>\r\n </div>\r\n <div id=\"mpty\" style={{ height: 70 }}></div>\r\n </div>\r\n </div>\r\n </section>\r\n );\r\n }\r\n}","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst CardImg = /*#__PURE__*/React.forwardRef( // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n({\n bsPrefix,\n className,\n variant,\n as: Component = 'img',\n ...props\n}, ref) => {\n const prefix = useBootstrapPrefix(bsPrefix, 'card-img');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(variant ? `${prefix}-${variant}` : prefix, className),\n ...props\n });\n});\nCardImg.displayName = 'CardImg';\nexport default CardImg;","import * as React from 'react';\nconst context = /*#__PURE__*/React.createContext(null);\ncontext.displayName = 'CardHeaderContext';\nexport default context;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useMemo } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport CardHeaderContext from './CardHeaderContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst CardHeader = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n ...props\n}, ref) => {\n const prefix = useBootstrapPrefix(bsPrefix, 'card-header');\n const contextValue = useMemo(() => ({\n cardHeaderBsPrefix: prefix\n }), [prefix]);\n return /*#__PURE__*/_jsx(CardHeaderContext.Provider, {\n value: contextValue,\n children: /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, prefix)\n })\n });\n});\nCardHeader.displayName = 'CardHeader';\nexport default CardHeader;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport createWithBsPrefix from './createWithBsPrefix';\nimport divWithClassName from './divWithClassName';\nimport CardImg from './CardImg';\nimport CardHeader from './CardHeader';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DivStyledAsH5 = divWithClassName('h5');\nconst DivStyledAsH6 = divWithClassName('h6');\nconst CardBody = createWithBsPrefix('card-body');\nconst CardTitle = createWithBsPrefix('card-title', {\n Component: DivStyledAsH5\n});\nconst CardSubtitle = createWithBsPrefix('card-subtitle', {\n Component: DivStyledAsH6\n});\nconst CardLink = createWithBsPrefix('card-link', {\n Component: 'a'\n});\nconst CardText = createWithBsPrefix('card-text', {\n Component: 'p'\n});\nconst CardFooter = createWithBsPrefix('card-footer');\nconst CardImgOverlay = createWithBsPrefix('card-img-overlay');\nconst defaultProps = {\n body: false\n};\nconst Card = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n bg,\n text,\n border,\n body,\n children,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n ...props\n}, ref) => {\n const prefix = useBootstrapPrefix(bsPrefix, 'card');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, prefix, bg && `bg-${bg}`, text && `text-${text}`, border && `border-${border}`),\n children: body ? /*#__PURE__*/_jsx(CardBody, {\n children: children\n }) : children\n });\n});\nCard.displayName = 'Card';\nCard.defaultProps = defaultProps;\nexport default Object.assign(Card, {\n Img: CardImg,\n Title: CardTitle,\n Subtitle: CardSubtitle,\n Body: CardBody,\n Link: CardLink,\n Text: CardText,\n Header: CardHeader,\n Footer: CardFooter,\n ImgOverlay: CardImgOverlay\n});","import * as React from 'react';\nexport function isAccordionItemSelected(activeEventKey, eventKey) {\n return Array.isArray(activeEventKey) ? activeEventKey.includes(eventKey) : activeEventKey === eventKey;\n}\nconst context = /*#__PURE__*/React.createContext({});\ncontext.displayName = 'AccordionContext';\nexport default context;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport Collapse from './Collapse';\nimport AccordionContext, { isAccordionItemSelected } from './AccordionContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\n/**\n * This component accepts all of [`Collapse`'s props](/utilities/transitions/#collapse-props).\n */\nconst AccordionCollapse = /*#__PURE__*/React.forwardRef(({\n as: Component = 'div',\n bsPrefix,\n className,\n children,\n eventKey,\n ...props\n}, ref) => {\n const {\n activeEventKey\n } = useContext(AccordionContext);\n bsPrefix = useBootstrapPrefix(bsPrefix, 'accordion-collapse');\n return /*#__PURE__*/_jsx(Collapse, {\n ref: ref,\n in: isAccordionItemSelected(activeEventKey, eventKey),\n ...props,\n className: classNames(className, bsPrefix),\n children: /*#__PURE__*/_jsx(Component, {\n children: React.Children.only(children)\n })\n });\n});\nAccordionCollapse.displayName = 'AccordionCollapse';\nexport default AccordionCollapse;","import * as React from 'react';\nconst context = /*#__PURE__*/React.createContext({\n eventKey: ''\n});\ncontext.displayName = 'AccordionItemContext';\nexport default context;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport AccordionCollapse from './AccordionCollapse';\nimport AccordionItemContext from './AccordionItemContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst AccordionBody = /*#__PURE__*/React.forwardRef(({\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n bsPrefix,\n className,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'accordion-body');\n const {\n eventKey\n } = useContext(AccordionItemContext);\n return /*#__PURE__*/_jsx(AccordionCollapse, {\n eventKey: eventKey,\n children: /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, bsPrefix)\n })\n });\n});\nAccordionBody.displayName = 'AccordionBody';\nexport default AccordionBody;","import * as React from 'react';\nimport { useContext } from 'react';\nimport classNames from 'classnames';\nimport AccordionContext, { isAccordionItemSelected } from './AccordionContext';\nimport AccordionItemContext from './AccordionItemContext';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function useAccordionButton(eventKey, onClick) {\n const {\n activeEventKey,\n onSelect,\n alwaysOpen\n } = useContext(AccordionContext);\n return e => {\n /*\n Compare the event key in context with the given event key.\n If they are the same, then collapse the component.\n */\n let eventKeyPassed = eventKey === activeEventKey ? null : eventKey;\n\n if (alwaysOpen) {\n if (Array.isArray(activeEventKey)) {\n if (activeEventKey.includes(eventKey)) {\n eventKeyPassed = activeEventKey.filter(k => k !== eventKey);\n } else {\n eventKeyPassed = [...activeEventKey, eventKey];\n }\n } else {\n // activeEventKey is undefined.\n eventKeyPassed = [eventKey];\n }\n }\n\n onSelect == null ? void 0 : onSelect(eventKeyPassed, e);\n onClick == null ? void 0 : onClick(e);\n };\n}\nconst AccordionButton = /*#__PURE__*/React.forwardRef(({\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'button',\n bsPrefix,\n className,\n onClick,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'accordion-button');\n const {\n eventKey\n } = useContext(AccordionItemContext);\n const accordionOnClick = useAccordionButton(eventKey, onClick);\n const {\n activeEventKey\n } = useContext(AccordionContext);\n\n if (Component === 'button') {\n props.type = 'button';\n }\n\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n onClick: accordionOnClick,\n ...props,\n \"aria-expanded\": eventKey === activeEventKey,\n className: classNames(className, bsPrefix, !isAccordionItemSelected(activeEventKey, eventKey) && 'collapsed')\n });\n});\nAccordionButton.displayName = 'AccordionButton';\nexport default AccordionButton;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport AccordionButton from './AccordionButton';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst AccordionHeader = /*#__PURE__*/React.forwardRef(({\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'h2',\n bsPrefix,\n className,\n children,\n onClick,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'accordion-header');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, bsPrefix),\n children: /*#__PURE__*/_jsx(AccordionButton, {\n onClick: onClick,\n children: children\n })\n });\n});\nAccordionHeader.displayName = 'AccordionHeader';\nexport default AccordionHeader;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useMemo } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport AccordionItemContext from './AccordionItemContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst AccordionItem = /*#__PURE__*/React.forwardRef(({\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n bsPrefix,\n className,\n eventKey,\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'accordion-item');\n const contextValue = useMemo(() => ({\n eventKey\n }), [eventKey]);\n return /*#__PURE__*/_jsx(AccordionItemContext.Provider, {\n value: contextValue,\n children: /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, bsPrefix)\n })\n });\n});\nAccordionItem.displayName = 'AccordionItem';\nexport default AccordionItem;","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useMemo } from 'react';\nimport { useUncontrolled } from 'uncontrollable';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport AccordionBody from './AccordionBody';\nimport AccordionButton from './AccordionButton';\nimport AccordionCollapse from './AccordionCollapse';\nimport AccordionContext from './AccordionContext';\nimport AccordionHeader from './AccordionHeader';\nimport AccordionItem from './AccordionItem';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Accordion = /*#__PURE__*/React.forwardRef((props, ref) => {\n const {\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n activeKey,\n bsPrefix,\n className,\n onSelect,\n flush,\n alwaysOpen,\n ...controlledProps\n } = useUncontrolled(props, {\n activeKey: 'onSelect'\n });\n const prefix = useBootstrapPrefix(bsPrefix, 'accordion');\n const contextValue = useMemo(() => ({\n activeEventKey: activeKey,\n onSelect,\n alwaysOpen\n }), [activeKey, onSelect, alwaysOpen]);\n return /*#__PURE__*/_jsx(AccordionContext.Provider, {\n value: contextValue,\n children: /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...controlledProps,\n className: classNames(className, prefix, flush && `${prefix}-flush`)\n })\n });\n});\nAccordion.displayName = 'Accordion';\nexport default Object.assign(Accordion, {\n Button: AccordionButton,\n Collapse: AccordionCollapse,\n Item: AccordionItem,\n Header: AccordionHeader,\n Body: AccordionBody\n});","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = Function.call.bind(Object.prototype.hasOwnProperty);\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar has = Function.call.bind(Object.prototype.hasOwnProperty);\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","import PropTypes from 'prop-types';\n\nexport const pickerPropTypes = {\n apikey: PropTypes.string,\n pickerOptions: PropTypes.object,\n clientOptions: PropTypes.object,\n onSuccess: PropTypes.func,\n onUploadDone: PropTypes.func,\n onError: PropTypes.func\n};\n","import * as filestack from 'filestack-js';\nimport { useEffect } from 'react';\n\nconst _generateRandomId = () => 'x' + Math.random().toString(36).substr(2, 5);\n\nconst usePicker = ({\n apikey,\n pickerOptions = {},\n clientOptions = {},\n onSuccess = console.log,\n onUploadDone = console.log,\n onError = console.error\n}) => {\n const _onError = (error) => {\n onError(error);\n };\n\n const _onUploadDone = (result) => {\n onSuccess(result);\n onUploadDone(result);\n };\n\n const rootId = _generateRandomId();\n const containerId = _generateRandomId();\n useEffect(() => {\n const picker = filestack.Filestack(apikey, clientOptions).picker({\n rootId,\n container: `#${containerId}`,\n onUploadDone: _onUploadDone,\n ...pickerOptions\n });\n\n picker.open().then().catch(_onError);\n return () => {\n if (picker) {\n picker.close();\n }\n };\n }, [rootId, containerId, apikey, clientOptions, pickerOptions, _onUploadDone]);\n\n return { containerId };\n};\n\nexport default usePicker;\n","import React from 'react';\nimport { PickerDisplayMode } from 'filestack-js';\nimport { pickerPropTypes } from './picker-base';\nimport usePicker from './use-picker';\n\nconst PickerInline = ({\n apikey,\n pickerOptions,\n clientOptions,\n onSuccess,\n onUploadDone,\n onError,\n children\n}) => {\n const { containerId } = usePicker({\n apikey,\n pickerOptions: { displayMode: PickerDisplayMode.inline, ...pickerOptions },\n clientOptions,\n onSuccess,\n onUploadDone,\n onError\n });\n\n const render = () => {\n if (children) {\n return React.cloneElement(children, { id: containerId });\n }\n return (\n <div\n data-testid='picker-inline'\n style={{ height: '500px' }}\n id={containerId}\n />\n );\n };\n return render();\n};\n\nPickerInline.propTypes = pickerPropTypes;\n\nexport default PickerInline;\n","import React from 'react';\nimport { PickerDisplayMode } from 'filestack-js';\nimport { pickerPropTypes } from './picker-base';\nimport usePicker from './use-picker';\n\nconst PickerDropPane = ({\n apikey,\n pickerOptions,\n clientOptions,\n onSuccess,\n onUploadDone,\n onError,\n children\n}) => {\n const { containerId } = usePicker({\n apikey,\n pickerOptions: {\n displayMode: PickerDisplayMode.dropPane,\n ...pickerOptions\n },\n clientOptions,\n onSuccess,\n onUploadDone,\n onError\n });\n\n const render = () => {\n if (children) {\n return React.cloneElement(children, { id: containerId });\n }\n return <div id={containerId} />;\n };\n return render();\n};\n\nPickerDropPane.propTypes = pickerPropTypes;\n\nexport default PickerDropPane;\n","import axios from 'axios';\r\nimport './FileUpload.css';\r\nimport { PickerInline } from 'filestack-react';\r\nimport { Component } from 'react';\r\nimport { logger } from '../helper/Logger';\r\n\r\n// const YOUR_API_KEY = 'AVPxEgshPQ4SROSFqC9Qez';//uat\r\nconst YOUR_API_KEY = 'AOTjRd9OaTTqw9zEmyA8Hz';//uat\r\n\r\ninterface IState {\r\n uploading: boolean;\r\n}\r\n\r\nexport class FileUpload extends Component<any, IState>{\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {uploading: false};\r\n this.uploadStarted = this.uploadStarted.bind(this);\r\n this.uploadComplete = this.uploadComplete.bind(this);\r\n }\r\n\r\n uploadStarted() {\r\n this.setState({uploading: true});\r\n }\r\n\r\n uploadComplete() {\r\n this.setState({uploading: false});\r\n }\r\n\r\n render() {\r\n var uploadComplete = this.uploadComplete;\r\n return <>\r\n <div className='progresscontainer'>\r\n {this.state.uploading &&\r\n <div className='progressfile'>Processing... <i className=\"fas fa-spinner fa-spin-pulse\" style={{padding: 3}}></i></div>\r\n }\r\n <PickerInline\r\n apikey={YOUR_API_KEY}\r\n onSuccess={(res) => {\r\n logger.log(\"success\");\r\n logger.log(res);\r\n }}\r\n onUploadDone={(res: any) => {\r\n logger.log(\"upload\");\r\n logger.log(res)\r\n res.filesUploaded.forEach((file: any) => {\r\n var form = new FormData();\r\n form.append('file', file.originalFile);\r\n this.uploadStarted();\r\n axios.post(\"/SP/UploadFile\", file.originalFile === undefined ? null : form,\r\n {\r\n // \"content\": file.getFileEncodeBase64String(),\r\n params: { \"contactId\": this.props.contactId, \"category\": this.props.category, \"mortgageDocumentId\": this.props.mortgageDocumentId, \"mortgageId\": this.props.mortgageId, \"uploadId\": file.uploadId, \"url\": file.url, \"fileName\": file.filename },\r\n maxBodyLength: 2147483647,\r\n headers: { \"Content-Type\": \"multipart/form-data\" }\r\n })\r\n .then((response) => {\r\n uploadComplete();\r\n if (this.props.onUploadComplete) {\r\n this.props.onUploadComplete(response.data, file.uploadId);\r\n }\r\n })\r\n .catch((error) => {\r\n uploadComplete();\r\n logger.log(error);\r\n });\r\n });\r\n }}\r\n pickerOptions={{\r\n accept: ['image/png', 'image/jpeg', 'image/jpg', 'application/pdf'],\r\n fromSources: [\"local_file_system\", \"googledrive\", \"dropbox\", \"googlephotos\", \"onedrive\", \"onedriveforbusiness\"],\r\n storeTo: { location: \"azure\", container: \"filestack\" },\r\n //onFileUploadStarted: function (a) { uploadStarted(a)},\r\n onFileUploadFinished: function (a) { logger.log(a); logger.log(\"done uploading\"); },\r\n maxFiles: 10,\r\n exposeOriginalFile: true,\r\n disableThumbnails: true,\r\n disableTransformer: true,\r\n onOpen: function(p) { \r\n setTimeout(FileUpload.expandForMobile,100);\r\n }\r\n }}\r\n clientOptions={{ sessionCache: true }}\r\n />\r\n </div>\r\n <br />\r\n </>\r\n }\r\n\r\n static expandForMobile() {\r\n var burgerMenu = document.getElementsByClassName(\"fsp-mobile-menu\");\r\n if (burgerMenu.length > 0) {\r\n FileUpload.simulateMouseClick(burgerMenu[0]);\r\n } else {\r\n setTimeout(FileUpload.expandForMobile,100);\r\n }\r\n }\r\n static simulateMouseClick(element:any){\r\n ['mousedown', 'click', 'mouseup'].forEach(mouseEventType =>\r\n element.dispatchEvent(\r\n new MouseEvent(mouseEventType, {\r\n view: window,\r\n bubbles: true,\r\n cancelable: true,\r\n buttons: 1\r\n })\r\n )\r\n );\r\n }\r\n}\r\n\r\nexport const SPCategory = Object.freeze({\r\n Saving: \"Savings Statement\",\r\n Current: \"Current Account Statement\"\r\n});","import React from 'react';\r\nimport { PlaidLinkPropTypes, usePlaidLink } from 'react-plaid-link';\r\n\r\n\r\nexport const PlaidLinkCustom: React.FC<PlaidLinkPropTypes> = props => {\r\n const { children, style, className, ...config } = props;\r\n const { error, open } = usePlaidLink({ ...config });\r\n\r\n return (\r\n <button\r\n disabled={Boolean(error)}\r\n type=\"button\"\r\n className={className}\r\n style={{\r\n ...style,\r\n }}\r\n onClick={() => open()}\r\n >\r\n {children}\r\n </button>\r\n );\r\n};\r\n\r\nPlaidLinkCustom.displayName = 'PlaidLinkCustom';","import React from 'react';\r\nimport axios from 'axios';\r\nimport { Button, Row, Col, Modal, Stack } from 'react-bootstrap';\r\nimport { PlaidLinkOnSuccess, PlaidLinkOnEvent, PlaidLinkOnExit } from 'react-plaid-link';\r\nimport { PlaidLinkCustom } from '../components/PlaidLinkCustom';\r\nimport { PortalPage } from '../components/PortalPage';\r\nimport { FileUploadLegacy, SPCategory} from '../components/FileUploadLegacy'\r\nimport { UserContextComponent } from '../components/UserContextComponent';\r\nimport { ApplicableTo, PortalMortgageDocumentModel } from '../models/PortalMortgageDocumentModel';\r\nimport { logger } from '../helper/Logger';\r\n\r\ninterface Props {\r\n className?: string;\r\n label?: any;\r\n mortgageDocumentId?: string;\r\n applicableTo:ApplicableTo;\r\n onSuccess(mortgageDocumentId?:string, openBankingRequestId?:string): void;\r\n}\r\ninterface State {\r\n linkToken: string | null;\r\n publicToken: string | null;\r\n reportToken: string | null;\r\n transactions: any[] | null;\r\n step: number;\r\n}\r\n\r\nexport class OpenBanking extends UserContextComponent<Props, State> {\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = { linkToken: null, reportToken: null, publicToken: null, transactions: null, step: 1 };\r\n \r\n }\r\n\r\n async createLinkToken() {\r\n const response = await axios.get('/OpenBanking/CreateLinkToken');\r\n return response.data;\r\n }\r\n\r\n async componentDidMount() {\r\n const linkToken = await this.createLinkToken();\r\n this.setState({ linkToken: linkToken });\r\n }\r\n\r\n \r\n async LinkOpenBanking(publicToken?: string) {\r\n const context = this.getContext();\r\n const response = await axios.get(`/OpenBanking/LinkOpenBanking?mortgageId=${context.mortgage?.mortgageId}&applicableTo=${this.props.applicableTo}&publicToken=${publicToken}`)\r\n return response.data;\r\n }\r\n\r\n onSuccess: PlaidLinkOnSuccess = async (publicToken, metadata) => {\r\n // We should instead create perhaps a transaction header and update it with this token...\r\n // We should also see what metadata we receive... as this might have useful info like account name...\r\n this.setState({ publicToken: publicToken });\r\n var openBankingRequest = await this.LinkOpenBanking(publicToken);\r\n this.props.onSuccess(this.props.mortgageDocumentId, openBankingRequest.id);\r\n };\r\n\r\n onEvent: PlaidLinkOnEvent = (eventName, metadata) => {\r\n logger.log(eventName, metadata);\r\n };\r\n\r\n onExit: PlaidLinkOnExit = (error, metadata) => {\r\n logger.log(error, metadata);\r\n };\r\n\r\n render() {\r\n return (\r\n <PlaidLinkCustom className={this.props.className ?? 'btn big btn-dark'} token={this.state.linkToken} onSuccess={this.onSuccess}>{this.props.label ?? 'Continue with open banking'}</PlaidLinkCustom>\r\n );\r\n }\r\n}","var _excluded = [\"color\", \"size\", \"title\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar ChevronUp = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var color = _ref.color,\n size = _ref.size,\n title = _ref.title,\n rest = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 16 16\",\n width: size,\n height: size,\n fill: color\n }, rest), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M7.646 4.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1-.708.708L8 5.707l-5.646 5.647a.5.5 0 0 1-.708-.708l6-6z\"\n }));\n});\nChevronUp.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n title: PropTypes.string\n};\nChevronUp.defaultProps = {\n color: 'currentColor',\n size: '1em',\n title: null\n};\nexport default ChevronUp;","import { PortalClarificationModel } from \"./PortalClarificationModel\";\r\nimport { PortalSpecialConditionsModel } from \"./PortalSpecialConditionsModel\";\r\n\r\nexport enum AIPStatus\r\n{ \r\n Submitted = 1,\r\n Clarifications = 2,\r\n Approved = 3,\r\n Expired = 4,\r\n Withdrawn = 5,\r\n New = 6,\r\n Rejected = 7,\r\n}\r\n\r\nexport enum AIPDDLStatus\r\n{\r\n ApprovedByLender = 755980000,\r\n RejectedByLender = 755980001,\r\n Withdrawn = 755980002,\r\n Proceeding = 755980003,\r\n Expired = 755980004,\r\n Clarification = 755980007,\r\n Submitted = 755980005,\r\n New = 755980006\r\n}\r\n\r\nexport enum AIPType\r\n{\r\n FullApplication = 755980000,\r\n HouseHunter = 755980001,\r\n}\r\n\r\nexport interface PortalAIPApplicationModel {\r\n aipApplicationId: string;\r\n submissionDate: string;\r\n responseDate: string;\r\n amount: string;\r\n expirationDate: string;\r\n approvalDate: string;\r\n estResponseDate: string;\r\n lender: string;\r\n lenderLogo: string | null;\r\n lenderChoice: string;\r\n sla?: number;\r\n isFileAvailable: boolean;\r\n isValuationAvailable: boolean;\r\n status: number;\r\n specialConditions: PortalSpecialConditionsModel[],\r\n clarifications: PortalClarificationModel[];\r\n specialOffers: string;\r\n confirmed: boolean;\r\n confirming: boolean;\r\n aipDdlStatus: number;\r\n order: number;\r\n valuationExpiryDate: string;\r\n type?: AIPType;\r\n}","\r\nimport React from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport Draggable from 'react-draggable';\r\nimport \"./DraggableModal.css\"\r\n \r\nconst DraggableModal = ({ show, onHide, title, body, footer }) => {\r\n if (!show) return <></>;\r\n return (\r\n <Draggable handle={\".modal-body\"}>\r\n <div className='custom-modal'\r\n dialogClassName=\"draggable-modal\">\r\n <div className='dragg-it'>\r\n <Modal.Header>\r\n <h3>{title}</h3>\r\n </Modal.Header>\r\n <Modal.Body>{body}</Modal.Body>\r\n <Modal.Footer>{footer}</Modal.Footer>\r\n </div>\r\n </div>\r\n\r\n </Draggable>\r\n );\r\n};\r\n \r\nexport default DraggableModal;","import React from 'react';\r\n\r\nclass FormattedDate extends React.Component<any, any> {\r\n\r\n convertStringToDate(dateString:any) {\r\n var dayPart = 0;\r\n var monthPart = 1;\r\n var yearPart = 2;\r\n var splitBy = '/';\r\n if (dateString[4] === '-') {\r\n yearPart = 0;\r\n dayPart = 2;\r\n splitBy = '-';\r\n }\r\n const parts = dateString.split(splitBy); // Split the string by '/' or '-'\r\n const day = parseInt(parts[dayPart], 10); // Parse day component as integer\r\n const month = parseInt(parts[monthPart], 10) - 1; // Parse month component as integer (subtract 1 as month indices are zero-based)\r\n const year = parseInt(parts[yearPart], 10); // Parse year component as integer\r\n \r\n return new Date(year, month, day); // Create a new Date object\r\n }\r\n\r\n render() {\r\n if (!this.props.date) return \"\";\r\n var date:Date;\r\n // In case we get an actual date instead of a string...\r\n if (typeof this.props.date.getMonth === 'function') {\r\n date = this.props.date;\r\n } else {\r\n date = this.convertStringToDate(this.props.date);\r\n }\r\n\r\n var options:any = { day: 'numeric', month: this.props.monthFormat ?? 'long' };\r\n if (!this.props.excludeYear) {\r\n options.year = 'numeric';\r\n }\r\n\r\n const formattedDate = date.toLocaleDateString(undefined, options);\r\n\r\n return <>{formattedDate}</>;\r\n }\r\n}\r\n\r\nexport default FormattedDate;","import { Col, Form, Modal, Row } from \"react-bootstrap\";\r\nimport { IFileItem } from \"../DocumentManager\";\r\nimport { UserContextComponent } from \"../UserContextComponent\";\r\nimport * as Icons from \"react-bootstrap\";\r\nimport { PortalTransactionCommentsModel } from \"../../models/PortalTransactionCommentsModel\";\r\nimport axios from \"axios\";\r\nimport { logger } from \"../../helper/Logger\";\r\nimport DraggableModal from \"../DraggableModal\";\r\nimport FormattedDate from \"../FormattedDate\";\r\n\r\ninterface ITransactionCommentProps {\r\n item:IFileItem;\r\n mortgageId:string;\r\n}\r\n\r\ninterface ITransactionCommentState {\r\n showTransactionComments?: boolean;\r\n currentTransaction?: PortalTransactionCommentsModel;\r\n currentComment?: string;\r\n showReply?: boolean;\r\n transactions:PortalTransactionCommentsModel[]|null;\r\n}\r\n\r\nexport class TransactionComments extends UserContextComponent<ITransactionCommentProps, ITransactionCommentState> {\r\n\r\n constructor(props: ITransactionCommentProps) {\r\n super(props);\r\n\r\n this.saveComment = this.saveComment.bind(this);\r\n this.loadComments = this.loadComments.bind(this);\r\n this.state = {transactions: null};\r\n }\r\n\r\n saveComment() {\r\n // Send in a null for the pin if not updated. Sending in a pin will trigger the automatic file unlock which clears the Comments on success, and we only want that when a pin changes.\r\n axios.post('/DocumentTransactions', null, { params: { mortgageId: this.props.mortgageId, transactionId: this.state.currentTransaction?.transactionId, customerComment: this.state.currentComment ?? '' } })\r\n .then(response => {\r\n this.setState({ showReply: false });\r\n this.state.currentTransaction!.customerComment = this.state.currentComment ?? '';\r\n })\r\n .catch((e) => {\r\n logger.log(e);\r\n });\r\n }\r\n\r\n loadComments() {\r\n if (this.props.item.transactionComments) {\r\n this.setState({transactions: this.props.item.transactionComments});\r\n return;\r\n }\r\n\r\n axios.get('/DocumentTransactions', { params: { mortgageId: this.props.mortgageId, mortgageDocumentId: this.props.item.mortgageDocumentId, fileName: this.props.item.name } })\r\n .then(response => {\r\n this.setState({ transactions: response.data ?? [] });\r\n this.props.item.transactionComments = response.data;\r\n })\r\n .catch((e) => {\r\n logger.log(e);\r\n });\r\n \r\n }\r\n\r\n render():any {\r\n var item = this.props.item;\r\n\r\n // Lazy load any comments\r\n if (!this.state.transactions) {\r\n this.loadComments();\r\n return <h6>Loading... <Icons.Spinner size=\"sm\" animation=\"border\" role=\"status\" /></h6>;\r\n } else if (this.state.transactions.length === 0) {\r\n return <></>;\r\n }\r\n var content = <></>;\r\n if (this.state.showTransactionComments) {\r\n content = <>\r\n {this.state.transactions.map(transaction => {\r\n return <div className=\"transaction-comment\">\r\n <h6><FormattedDate date={transaction.date} monthFormat={'numeric'}/> - {transaction.description}</h6>\r\n <h6>{transaction.amount}</h6>\r\n <h6><strong>{transaction.comments}</strong>\r\n <div className=\"link mt-3\" onClick={() => this.setState({showReply: true, currentComment:transaction.customerComment, currentTransaction:transaction})}><i className=\"fa-solid fa-reply\"></i> reply</div>\r\n </h6>\r\n </div>\r\n })}\r\n <DraggableModal \r\n show={this.state.showReply} \r\n onHide={() => { this.setState({showReply: false}); }} \r\n title={\"\"}\r\n body={\r\n <Form>\r\n <Form.Group className=\"mb-3\">\r\n <Form.Label>Reply</Form.Label>\r\n <Form.Control onMouseDown={(e) => {e.stopPropagation()}} as=\"textarea\" rows={3} defaultValue={this.state.currentComment} onChange={e => this.setState({ currentComment: e.target.value })} autoFocus />\r\n </Form.Group>\r\n </Form>\r\n }\r\n footer={\r\n <>\r\n <button className=\"btn btn-light\" onClick={() => this.setState({showReply: false})}>\r\n Close\r\n </button>\r\n <button className=\"btn btn-standard\" onClick={() => this.saveComment()}>\r\n Save\r\n </button>\r\n </>\r\n }\r\n />\r\n </>;\r\n }\r\n\r\n return <>\r\n <div className=\"link\" onClick={(e) => {this.setState({showTransactionComments: !this.state.showTransactionComments});}}><h6>{this.state.showTransactionComments ? 'Hide transaction queries' : 'Show transaction queries'}</h6></div>\r\n {content}\r\n </>;\r\n }\r\n}","import axios from \"axios\";\r\nimport AnimateHeight from \"react-animate-height\";\r\nimport { Stack, Container, Row, Col, Modal, Form } from \"react-bootstrap\";\r\nimport { ApplicableTo, MortgageDocumentStatusCode, PortalDocumentType } from \"../../models/PortalMortgageDocumentModel\";\r\nimport { IFileItem } from \"../DocumentManager\";\r\nimport { FileUpload } from \"../FileUpload\";\r\nimport * as Icons from \"react-bootstrap\";\r\nimport { UserContextComponent } from \"../UserContextComponent\";\r\nimport { Tooltip } from \"../Tooltip\";\r\nimport { Navigate } from \"react-router-dom\";\r\nimport { OpenBanking } from \"../../pages/OpenBanking\";\r\nimport { ChevronUp } from \"react-bootstrap-icons\";\r\nimport { UploadResponse } from \"../../models/UploadResponse\";\r\nimport { logger } from \"../../helper/Logger\";\r\nimport { AIPType } from \"../../models/PortalAIPApplication\";\r\nimport { FileUploadLegacy } from \"../FileUploadLegacy\";\r\nimport { TransactionComments } from \"./TransactionComments\";\r\nimport DraggableModal from \"../DraggableModal\";\r\n\r\ninterface IDocumentPillProps {\r\n //key: number;\r\n category: string | null;\r\n name: string;\r\n files: IFileItem[];\r\n status?: number | null;\r\n helpText: string | null;\r\n comments: string | null;\r\n contactId: string | null;\r\n mortgageDocumentId: string | null;\r\n onDone(mortgageDocumentId: string, status: MortgageDocumentStatusCode): void;\r\n mortgageId: string | undefined;\r\n documentType: PortalDocumentType | null;\r\n metFaceToFace: boolean | null;\r\n portalName: string | null;\r\n onUploadComplete?(url: string): void;\r\n houseHunterDocument?: boolean | null;\r\n //allowDocUpload?: boolean | null;\r\n}\r\n\r\ninterface IDocumentPillState {\r\n isCollapsed: boolean;\r\n isHelpTextCollapsed: boolean;\r\n files: IFileItem[];\r\n showPinDialog: boolean;\r\n customerComment: string;\r\n originalPin: string;\r\n pin: string;\r\n selectedFileName: string;\r\n idPalLoader: boolean;\r\n selectedFileUploadId: string;\r\n useOpenBanking: boolean;\r\n navigateTo: string | null;\r\n uploadcollapsed: boolean;\r\n showTransactionComments: boolean;\r\n}\r\n\r\nexport class DocumentPill extends UserContextComponent<IDocumentPillProps, IDocumentPillState> {\r\n private documentType: PortalDocumentType | null;\r\n\r\n constructor(props: IDocumentPillProps) {\r\n super(props);\r\n this.state = { \r\n isCollapsed: true, \r\n files: this.props.files, \r\n uploadcollapsed: this.props.files.length > 0, \r\n showPinDialog: false, \r\n customerComment: \"\", \r\n originalPin: \"\", \r\n pin: \"\", \r\n selectedFileName: \"\", \r\n idPalLoader: false, \r\n selectedFileUploadId: \"\", \r\n navigateTo: null, \r\n useOpenBanking: true, \r\n isHelpTextCollapsed: true,\r\n showTransactionComments: false,\r\n };\r\n this.downloadFile = this.downloadFile.bind(this);\r\n\r\n this.uploadComplete = this.uploadComplete.bind(this);\r\n this.deleteComplete = this.deleteComplete.bind(this);\r\n this.confirmUpload = this.confirmUpload.bind(this);\r\n this.getPillClass = this.getPillClass.bind(this);\r\n\r\n\r\n this.documentType = this.props.documentType;\r\n\r\n this.closePinDialog = this.closePinDialog.bind(this);\r\n this.showCommentAndPinDialog = this.showCommentAndPinDialog.bind(this);\r\n this.saveCommentAndPin = this.saveCommentAndPin.bind(this);\r\n\r\n this.onSuccess = this.onSuccess.bind(this);\r\n this.collapsePill = this.collapsePill.bind(this);\r\n }\r\n\r\n closePinDialog() {\r\n this.setState({ showPinDialog: false });\r\n }\r\n\r\n showCommentAndPinDialog(filename: string, uploadId: string, custComment: string, pin: string) {\r\n this.setState({ selectedFileName: filename, customerComment: custComment, originalPin: pin, pin: pin, showPinDialog: true, selectedFileUploadId: uploadId });\r\n }\r\n\r\n saveCommentAndPin() {\r\n // Send in a null for the pin if not updated. Sending in a pin will trigger the automatic file unlock which clears the Comments on success, and we only want that when a pin changes.\r\n axios.post('/SP/UpdateCommentPin', null, { params: { mortgageId: this.props.mortgageId, filename: this.state.selectedFileName, uploadId: this.state.selectedFileUploadId, custComment: this.state.customerComment, pin: (this.state.pin == this.state.originalPin ? null : this.state.pin), mortgageDocumentId: this.props.mortgageDocumentId } })\r\n .then(response => {\r\n this.setState({ showPinDialog: false });\r\n let items: IFileItem[] = this.state.files;\r\n let item = items.find(x => x.name === this.state.selectedFileName);\r\n if (item) {\r\n item.customerComment = this.state.customerComment;\r\n item.pin = this.state.pin;\r\n item.status = \"Awaiting advisor review\";\r\n if (this.state.pin != this.state.originalPin) {\r\n item.comment = \"\";\r\n }\r\n }\r\n })\r\n .catch((e) => {\r\n logger.log(e);\r\n });\r\n }\r\n\r\n getPillClass() {\r\n if (this.needsAction() && this.props.status !== MortgageDocumentStatusCode.Approved)\r\n return \"needsattention\";\r\n if (this.props.status === MortgageDocumentStatusCode.Active)\r\n return this.state.files?.length > 0 ? \"inprogress\" : \"notstarted\";\r\n if (this.props.status === MortgageDocumentStatusCode.Uploaded)\r\n return \"done\";\r\n if (this.props.status === MortgageDocumentStatusCode.InProgress)\r\n return \"inprogress\"\r\n if (this.props.status === MortgageDocumentStatusCode.Approved)\r\n return \"approved\"\r\n\r\n return \"notstarted\";\r\n }\r\n\r\n needsAction() {\r\n var filesWithComments = this.props.files.filter(f => (\r\n (f.comment??\"\")!==\"\" || \r\n (f.transactionComments??[]).filter(t => !t.customerComment).length>0\r\n ));\r\n if (this.props.comments ||\r\n filesWithComments.length > 0 ||\r\n this.props.status === MortgageDocumentStatusCode.NeedsAction)\r\n return true;\r\n return false;\r\n }\r\n\r\n private uploadComplete(data: UploadResponse, category: string, mortgageDocumentId: string, contactId: string, uploadId: any) {\r\n if (this.props.onUploadComplete)\r\n this.props.onUploadComplete(data.url);\r\n let items: IFileItem[] = this.state.files;\r\n let mortgageDocument = items.find(x => x.mortgageDocumentId === mortgageDocumentId)?.mortgageDocument;\r\n let item: IFileItem = {\r\n id: items.length + 100000,\r\n category: category,\r\n mortgageDocument: mortgageDocument,\r\n mortgageDocumentId: mortgageDocumentId,\r\n name: data.url.split('/').pop()!,\r\n status: (data.accepted ? \"For advisor review\" : \"Rejected\"),\r\n comment: data.message || \"\",\r\n customerComment: \"\",\r\n pin: \"\",\r\n uploadId: uploadId\r\n };\r\n items.push(item);\r\n this.setState({ files: items });\r\n }\r\n\r\n private deleteComplete(data: any, mortgageDocumentId: string) {\r\n let items: IFileItem[] = this.state.files;\r\n let itemIndex = items.findIndex(x => x.mortgageDocumentId === mortgageDocumentId && x.name === data.split('/').pop());\r\n if (itemIndex > -1)\r\n items.splice(itemIndex, 1);\r\n this.setState({ files: items });\r\n }\r\n\r\n confirmUpload(mortgageDocumentId: string): void {\r\n const context = this.getContext();\r\n axios.post('/MortgageDocuments/MarkMortgageDocumentAsUploaded', null, { params: { mortgageDocumentId: mortgageDocumentId, mortgageId: context.mortgage?.mortgageId } })\r\n .then(response => {\r\n this.props.onDone(mortgageDocumentId, MortgageDocumentStatusCode.Uploaded);\r\n });\r\n }\r\n\r\n onSuccess(mortgageDocumentId: string): void {\r\n this.props.onDone(mortgageDocumentId, MortgageDocumentStatusCode.Uploaded);\r\n }\r\n\r\n downloadFile(mortgageId: string | undefined, fileName: string, uploadId: string): void {\r\n if (mortgageId) {\r\n axios({\r\n url: `/SP/DownloadFile?mortgageId=${mortgageId}&fileName=${encodeURIComponent(fileName)}&uploadId=${uploadId}`,\r\n method: \"GET\",\r\n responseType: \"blob\"\r\n }).then(response => {\r\n const url = window.URL.createObjectURL(new Blob([response.data]));\r\n const link = document.createElement(\"a\");\r\n link.href = url;\r\n if (response.headers[\"content-type\"] === \"application/pdf\" && fileName.indexOf(\".pdf\") === -1) {\r\n fileName = fileName + \".pdf\";\r\n }\r\n link.setAttribute(\"download\", fileName);\r\n document.body.appendChild(link);\r\n link.click();\r\n if (link.parentNode != null)\r\n link.parentNode.removeChild(link);\r\n });\r\n }\r\n }\r\n\r\n useIDPal(mortgageDocumentId: string): void {\r\n const context = this.getContext();\r\n this.setState({ idPalLoader: true });\r\n axios.post('/MortgageDocuments/MarkIDPalMortgageDocumentsAsInProgress', null, { params: { mortgageDocumentId: mortgageDocumentId, mortgageId: context.mortgage?.mortgageId } })\r\n .then((response) => {\r\n axios.post('/Contacts/SendIDPalLink', null, { params: { contactId: this.props.contactId } }).then(() => {\r\n if (response.data) {\r\n for (let i = 0; i < response.data.length; i++) {\r\n let id = response.data[i];\r\n this.props.onDone(id, MortgageDocumentStatusCode.InProgress);\r\n }\r\n //this.props.onDone(mortgageDocumentId, MortgageDocumentStatusCode.InProgress); \r\n }\r\n });\r\n });\r\n }\r\n \r\n getHouseHunterClass() {\r\n const context = this.getContext();\r\n if (context.mortgage?.approvalType === AIPType.HouseHunter) {\r\n if (!this.props.houseHunterDocument && this.state.isCollapsed) {\r\n return 'greyedpill';\r\n }\r\n return 'highlightpill';\r\n }\r\n return '';\r\n }\r\n\r\n collapsePill() {\r\n if (this.state.files.length > 0 && this.props.status !== MortgageDocumentStatusCode.Approved) {\r\n this.confirmUpload(this.props.mortgageDocumentId!);\r\n }\r\n this.setState({ isCollapsed: true });\r\n }\r\n\r\n render() {\r\n const context = this.getContext();\r\n var pillStatus = this.getPillClass();\r\n var comments = this.state.files.filter(f => f.comment || (f.transactionComments && f.transactionComments.length > 0));\r\n\r\n if (this.state.navigateTo) {\r\n return <Navigate to={this.state.navigateTo} />;\r\n }\r\n\r\n // This section displays on a different place depending on whether you are on mobile or desktop\r\n var commentsAndFiles = <>\r\n {!this.props.comments && comments.length === 0 && this.state.files.length === 1 &&\r\n <>\r\n <div className=\"pb-1\"><span><strong>{this.state.files.length} File</strong> added</span></div>\r\n </>\r\n }\r\n {!this.props.comments && comments.length === 0 && this.state.files.length !== 1 && \r\n <>\r\n <div className=\"pb-1\"><span><strong>{this.state.files.length} Files</strong> added</span></div>\r\n </>\r\n }\r\n {(this.props.comments || comments.length > 0) &&\r\n <div className=\"box box-travertine\">\r\n <i className=\"fas fa-triangle-exclamation pill-big needsattention\"></i>\r\n {this.props.comments &&\r\n <div className=\"pt-2\">\r\n <Row>\r\n <Col>\r\n <h6 className=\"mb-0\"><strong>For review</strong></h6>\r\n <h6 className=\"render-linebreaks\">{this.props.comments}</h6>\r\n </Col>\r\n </Row>\r\n </div>\r\n }\r\n \r\n {comments.length > 0 && comments.map((item, idx) => {\r\n return <div key={\"comment-\"+item.id} className=\"pt-2\">\r\n <Row>\r\n <Col>\r\n <h6 className=\"mb-0 filename\"><strong>{item.name}</strong></h6>\r\n {item.comment &&\r\n <h6 className=\"render-linebreaks\">{item.comment} <span className=\"pointer doddltext\" style={{marginLeft: 4}} onClick={e => this.showCommentAndPinDialog(item.name, item.uploadId, item.customerComment, item.pin)}><u><i className=\"fa-solid fa-reply\"></i> reply</u></span></h6>\r\n }\r\n <TransactionComments item={item} mortgageId={this.props.mortgageId!} />\r\n </Col>\r\n </Row>\r\n </div>;\r\n }\r\n )}\r\n </div>\r\n }\r\n\r\n {this.state.files.map((item, idx) => {\r\n return <div key={\"file-\" + item.id} className={`document-file ${item.status === 'Approved' ? 'complete' : ''}`}>\r\n <Row>\r\n <Col xs=\"1\">\r\n {item.status === 'Approved' &&\r\n <Tooltip tooltip={{ \"fieldname\": \"\", \"title\": \"\", \"content\": \"doddl will review your documents and get back to you soon!\" }}>\r\n <i className=\"fa fa-circle-check file-icon\" style={{color: 'var(--teal)'}}></i>\r\n </Tooltip>\r\n }\r\n {item.status === 'Rejected' &&\r\n <Tooltip tooltip={{ \"fieldname\": \"\", \"title\": \"\", \"content\": \"There is an issue with this document\" }}>\r\n <i className=\"fas fa-triangle-exclamation pill-big pill-icon needsattention\"></i>\r\n </Tooltip>\r\n }\r\n {item.status !== 'Approved' && item.status !== 'Rejected' &&\r\n <i className=\"far fa-clock file-icon\"></i>\r\n }\r\n </Col>\r\n <Col xs=\"8\">\r\n <h6 className=\"filename\">\r\n <strong><span style={{ paddingLeft: 10, cursor: \"pointer\" }} onClick={e => { this.downloadFile(this.props.mortgageId, item.name, item.uploadId); }}>{item.name}</span></strong>\r\n </h6>\r\n </Col>\r\n <Col xs=\"3\" className=\"text-end\">\r\n <Tooltip tooltip={{ \"fieldname\": \"\", \"title\": \"\", \"content\": \"Download file\" }}>\r\n <i className=\"fas fa-cloud-download pointer pe-2\" onClick={e => { this.downloadFile(this.props.mortgageId, item.name, item.uploadId); }}></i>\r\n </Tooltip>\r\n <Tooltip tooltip={{ \"fieldname\": \"\", \"title\": \"\", \"content\": \"Add a comment or let us know if a pin is required to unlock this file\" }}>\r\n <i className=\"fas fa-pencil pointer pe-2\" onClick={e => this.showCommentAndPinDialog(item.name, item.uploadId, item.customerComment, item.pin)}></i>\r\n </Tooltip>\r\n {/* <Tooltip tooltip={{ \"fieldname\": \"\", \"title\": \"\", \"content\": \"Delete this file\" }}>\r\n <i className=\"fa fa-trash pointer pe-2\" onClick={e => this.showCommentAndPinDialog(item.name, item.uploadId, item.customerComment, item.pin)}></i>\r\n </Tooltip> */}\r\n\r\n </Col>\r\n </Row>\r\n </div>\r\n } \r\n )}\r\n\r\n </>;\r\n \r\n return (\r\n // reverting the savings back again! ((context.mortgage?.approvalType === AIPType.HouseHunter && this.props.portalName!==\"Savings Accounts\") || (context.mortgage?.approvalType !== AIPType.HouseHunter) || (context.mortgage?.approvalType === AIPType.HouseHunter && this.props.portalName===\"Savings Accounts\" && this.props?.allowDocUpload===true)) && \r\n <Container className={`pill-document ${pillStatus} ${this.getHouseHunterClass()}` } >\r\n <div title={this.props.name} className={`pill-header ${!this.state.isCollapsed && 'nowrap'}`} onClick={() => this.setState({ isCollapsed: !this.state.isCollapsed })}>\r\n <Row>\r\n <Col xs={this.state.isCollapsed && pillStatus !== \"notstarted\" ? 10 : 12}>\r\n <div className={`pill-text ${this.props.name.length <= 25 ? 'overflow' : ''}`}>{this.props.name}</div>\r\n </Col>\r\n {this.state.isCollapsed && pillStatus !== \"notstarted\" &&\r\n <Col xs={2} className=\"pill-count-col \">\r\n {this.props.status === MortgageDocumentStatusCode.Approved && !this.needsAction() &&\r\n // <div className=\"pill-count \">✔</div>\r\n <Tooltip tooltip={{ \"fieldname\": \"\", \"title\": \"\", \"content\": \"Your documents have been reviewed and approved!\" }}>\r\n <i className={`fas fa-circle-check pill-big ${this.props.status === MortgageDocumentStatusCode.Approved ? 'pill-icon-app': 'pill-icon'}`}></i>\r\n </Tooltip>\r\n }\r\n\r\n {this.props.status === MortgageDocumentStatusCode.Uploaded && !this.needsAction() &&\r\n <Tooltip tooltip={{ \"fieldname\": \"\", \"title\": \"\", \"content\": \"doddl will review your documents and get back to you soon!\" }}>\r\n <i className=\"far fa-clock pill-big pill-icon\"></i>\r\n </Tooltip>\r\n }\r\n {this.needsAction() &&\r\n <Tooltip tooltip={{ \"fieldname\": \"\", \"title\": \"\", \"content\": \"There are some issues that need to be addressed on your documents\" }}>\r\n <i className=\"fa-solid fa-triangle-exclamation pill-big pill-icon needsattention\"></i>\r\n </Tooltip>\r\n }\r\n {this.state.files.length > 0 && (this.props.status === MortgageDocumentStatusCode.Active || this.props.status === MortgageDocumentStatusCode.InProgress) && !this.needsAction() &&\r\n <Tooltip tooltip={{ \"fieldname\": \"\", \"title\": \"\", \"content\": \"The number of documents uploaded\" }}>\r\n <div className=\"pill-count \">{this.state.files.length}</div>\r\n </Tooltip>\r\n }\r\n {this.state.files.length > 0 && (this.props.status === MortgageDocumentStatusCode.Uploaded && !this.needsAction()) &&\r\n <Tooltip tooltip={{ \"fieldname\": \"\", \"title\": \"\", \"content\": \"The number of documents uploaded\" }}>\r\n <div className=\"pill-count\">{this.state.files.length}</div>\r\n </Tooltip>\r\n }\r\n </Col>\r\n }\r\n </Row>\r\n\r\n </div>\r\n {/* reverting the savings back again!{(!this.state.isCollapsed && this.props.portalName === \"Savings Accounts\" && context.mortgage?.approvalType === AIPType.HouseHunter && this.props?.allowDocUpload === false) ? \"\" :*/}\r\n <Modal size=\"xl\" show={!this.state.isCollapsed} onHide={this.collapsePill} centered>\r\n <Modal.Header>\r\n </Modal.Header>\r\n <Modal.Body className=\"px-4 py-4\">\r\n <Row>\r\n <Col xs={12} md={8} className=\"pe-4 document-upload\">\r\n <h1 className=\"pb-3\">{this.props.name}</h1>\r\n <h4 style={this.props.status === MortgageDocumentStatusCode.Approved ? { paddingBottom: 10 } : { paddingBottom: 10 }} dangerouslySetInnerHTML={{ __html: this.props.helpText ?? \"\" }}></h4>\r\n {(this.needsAction() && (this.props.comments === \"\" || this.props.comments === null)) &&\r\n <br />\r\n }\r\n <div className=\"mobile-only\">\r\n {commentsAndFiles}\r\n </div>\r\n <div style={{ paddingTop: 10 }} />\r\n {this.props.status !== MortgageDocumentStatusCode.Approved &&\r\n <>\r\n {this.documentType === PortalDocumentType.OpenBanking && this.props.status !== MortgageDocumentStatusCode.Uploaded &&\r\n <Stack direction=\"horizontal\" className=\"justify-center pb-2\" gap={2}>\r\n <OpenBanking mortgageDocumentId={this.props.mortgageDocumentId!} onSuccess={this.onSuccess} applicableTo={this.props.contactId === context.mortgage?.primaryApplicant.contactId ? ApplicableTo.Primary : ApplicableTo.Secondary} />\r\n {this.state.useOpenBanking && <button className=\"btn big btn-light\" onClick={() => this.setState({ useOpenBanking: !this.state.useOpenBanking })}>Upload Statements</button>}\r\n {!this.state.useOpenBanking && <div className=\"amber pointer text-end\" style={{ fontSize: 30 }} onClick={() => this.setState({ useOpenBanking: !this.state.useOpenBanking })}><ChevronUp /></div>}\r\n </Stack>\r\n }\r\n {this.props.metFaceToFace !== true && this.documentType === PortalDocumentType.IDPal && this.props.status !== MortgageDocumentStatusCode.InProgress && this.state.idPalLoader &&\r\n <Stack direction=\"horizontal\" className=\"justify-center\">\r\n <Icons.Spinner animation=\"border\" role=\"status\" style={{ marginBottom: 15 }} />\r\n </Stack>}\r\n\r\n {this.documentType === PortalDocumentType.IDPal && this.props.status !== MortgageDocumentStatusCode.InProgress && this.props.status !== MortgageDocumentStatusCode.Uploaded && !this.state.idPalLoader &&\r\n <Stack direction=\"horizontal\" className=\"justify-center\">\r\n <button className='btn big btn-dark' style={{ marginBottom: 15 }} onClick={e => { this.useIDPal(this.props.mortgageDocumentId!); }}>Use ID-Pal</button>\r\n </Stack>\r\n }\r\n {this.documentType === PortalDocumentType.IDPal && this.props.status === MortgageDocumentStatusCode.InProgress &&\r\n <h4 className='inprogress' style={{ marginLeft: 5, marginBottom: 15 }}>Check your SMS messages for your ID-Pal link</h4>\r\n }\r\n {this.documentType === PortalDocumentType.OpenBanking && this.props.status === MortgageDocumentStatusCode.Uploaded &&\r\n <h3 className='done' style={{ marginLeft: 5, marginBottom: 15 }}>Open Banking Connected</h3>\r\n }\r\n\r\n {(this.documentType !== PortalDocumentType.IDPal || this.props.metFaceToFace === true) &&\r\n !(this.documentType === PortalDocumentType.IDPal && this.props.metFaceToFace === false && (this.props.status === MortgageDocumentStatusCode.InProgress || this.props.status === MortgageDocumentStatusCode.Uploaded)) &&\r\n (this.documentType !== PortalDocumentType.OpenBanking || !this.state.useOpenBanking) &&\r\n\r\n <>\r\n {context.mortgage?.useLegacyUploader\r\n\r\n ?\r\n <FileUploadLegacy\r\n mortgageId={context.mortgage?.mortgageId}\r\n contactId={this.props.contactId}\r\n category={this.props.category}\r\n mortgageDocumentId={this.props.mortgageDocumentId}\r\n onUploadComplete={(d: UploadResponse, uploadId: any) => { this.uploadComplete(d, this.props.category!, this.props.mortgageDocumentId!, this.props.contactId!, uploadId); }}\r\n onDeleteComplete={(d: any) => { this.deleteComplete(d, this.props.mortgageDocumentId!); }} />\r\n\r\n :\r\n <FileUpload\r\n mortgageId={context.mortgage?.mortgageId}\r\n contactId={this.props.contactId}\r\n category={this.props.category}\r\n mortgageDocumentId={this.props.mortgageDocumentId}\r\n onUploadComplete={(d: UploadResponse, uploadId: any) => { this.uploadComplete(d, this.props.category!, this.props.mortgageDocumentId!, this.props.contactId!, uploadId); }}\r\n onDeleteComplete={(d: any) => { this.deleteComplete(d, this.props.mortgageDocumentId!); }} />\r\n }\r\n </>\r\n }\r\n\r\n </>\r\n }\r\n </Col>\r\n <Col xs={4}>\r\n <Stack direction=\"horizontal\" gap={2} className=\"pill-buttons-right\">\r\n <button className='btn btn-light big' onClick={this.collapsePill}>Close</button>\r\n </Stack>\r\n\r\n <div className=\"desktop-only\">\r\n {commentsAndFiles}\r\n </div>\r\n </Col>\r\n </Row>\r\n\r\n </Modal.Body>\r\n <DraggableModal\r\n show={this.state.showPinDialog}\r\n onHide={() => { this.closePinDialog(); }}\r\n title={\"\"}\r\n body={\r\n <Form>\r\n <Form.Group className=\"mb-3\">\r\n <Form.Label>Comment</Form.Label>\r\n <Form.Control onMouseDown={(e) => { e.stopPropagation() }} disabled={this.props.status === MortgageDocumentStatusCode.Approved && !this.needsAction()} as=\"textarea\" rows={3} defaultValue={this.state.customerComment} onChange={e => this.setState({ customerComment: e.target.value })} autoFocus />\r\n </Form.Group>\r\n <Form.Group className=\"mb-3\">\r\n <Form.Label>Document Password (if applicable)</Form.Label>\r\n <Form.Control onMouseDown={(e) => { e.stopPropagation() }} disabled={this.props.status === MortgageDocumentStatusCode.Approved} type=\"password\" defaultValue={this.state.pin} onChange={e => this.setState({ pin: e.target.value })} />\r\n </Form.Group>\r\n </Form>\r\n }\r\n footer={\r\n <>\r\n <button className=\"btn btn-light\" onClick={this.closePinDialog}>\r\n Close\r\n </button>\r\n {this.props.status !== MortgageDocumentStatusCode.Approved &&\r\n <button className=\"btn btn-standard\" onClick={this.saveCommentAndPin}>\r\n Save\r\n </button>\r\n }\r\n </>\r\n }\r\n />\r\n </Modal>{/* } */}\r\n </Container >\r\n );\r\n }\r\n}","import React from \"react\";\r\nimport {Link} from 'react-router-dom';\r\nimport { Row, Col, Container, Card, Stack, Accordion } from \"react-bootstrap\";\r\nimport {\r\n ApplicableTo,\r\n MortgageDocumentStatusCode,\r\n PortalMortgageDocumentModel,\r\n} from \"../models/PortalMortgageDocumentModel\";\r\nimport { DocumentPill } from \"./Pills/DocumentPill\";\r\nimport { ProgressTile, ProgressTileSize } from \"./ProgressTile\";\r\nimport UserContextState, { UserContext } from \"./UserContext\";\r\nimport { PortalCategoryModel } from \"../models/PortalCategoryModel\";\r\nimport { UserContextComponent } from \"./UserContextComponent\";\r\nimport * as Icons from \"react-bootstrap\";\r\nimport { AIPType } from \"../models/PortalAIPApplication\";\r\nimport { PortalTransactionCommentsModel } from \"../models/PortalTransactionCommentsModel\";\r\n//import { PortalTransactionCommentsModel } from \"../models/PortalTransactionCommentsModel\";\r\n\r\nexport interface IFileItem {\r\n id: number;\r\n name: string;\r\n category: string;\r\n mortgageDocument: PortalMortgageDocumentModel | undefined;\r\n mortgageDocumentId: string;\r\n comment?: string;\r\n transactionComments?: PortalTransactionCommentsModel[] | null;\r\n status: string;\r\n customerComment: string;\r\n pin: string;\r\n uploadId: string;\r\n}\r\n\r\ninterface IDocumentManagerProps {\r\n items: IFileItem[];\r\n documents: PortalMortgageDocumentModel[];\r\n applicants?: any[];\r\n mortgageId: string | undefined;\r\n categories: PortalCategoryModel[];\r\n}\r\n\r\ninterface IDocumentManagerState {\r\n currentCategory: string | null;\r\n currentItem: IFileItem | null;\r\n refreshItem: any;\r\n primaryFilter: string | null;\r\n secondaryFilter: string | null;\r\n sharedFilter: string | null;\r\n}\r\n\r\nexport class DocumentManager extends UserContextComponent<\r\n IDocumentManagerProps,\r\n IDocumentManagerState\r\n> {\r\n static contextType = UserContext;\r\n\r\n groupBy(arr: any[], key: string) {\r\n const initialValue = {};\r\n return arr.reduce((acc, cval) => {\r\n const myAttribute = cval[key];\r\n acc[myAttribute] = [...(acc[myAttribute] || []), cval];\r\n return acc;\r\n }, initialValue);\r\n }\r\n\r\n constructor(props: IDocumentManagerProps) {\r\n super(props);\r\n this.onDocumentDone = this.onDocumentDone.bind(this);\r\n\r\n for (let i = 0; i < props.items.length; i++) {\r\n props.items[i].mortgageDocument = props.documents.find(\r\n (x) => x.mortgageDocumentId === props.items[i].mortgageDocumentId\r\n );\r\n }\r\n\r\n this.state = {\r\n currentCategory: null,\r\n currentItem: null,\r\n refreshItem: null,\r\n primaryFilter: null,\r\n secondaryFilter: null,\r\n sharedFilter: null,\r\n };\r\n }\r\n\r\n static calculatePercent(\r\n context: UserContextState,\r\n docs: PortalMortgageDocumentModel[]\r\n ) {\r\n var doneDocs = docs.filter(\r\n (i) =>\r\n i.statusReason === MortgageDocumentStatusCode.Uploaded ||\r\n i.statusReason === MortgageDocumentStatusCode.Approved\r\n );\r\n var allDocs = docs.length;\r\n if (context.mortgage!.approvalType === AIPType.HouseHunter) {\r\n doneDocs = doneDocs.filter((i) => i.houseHunterDocument === true);\r\n allDocs = docs.filter((i) => i.houseHunterDocument === true).length;\r\n }\r\n var completedDocs = doneDocs.length;\r\n return Math.round((completedDocs / allDocs) * 100);\r\n }\r\n public calcPercent(docs: PortalMortgageDocumentModel[]) {\r\n return DocumentManager.calculatePercent(this.getContext(), docs);\r\n }\r\n\r\n onDocumentDone(\r\n mortgageDocumentId: string,\r\n status: MortgageDocumentStatusCode\r\n ) {\r\n var doc: PortalMortgageDocumentModel | undefined =\r\n this.props.documents.find(\r\n (i) => i.mortgageDocumentId === mortgageDocumentId\r\n );\r\n if (doc) {\r\n let context = this.getContext();\r\n doc.statusReason = status;\r\n context.mortgage!.documentsPercentComplete = this.calcPercent(\r\n this.props.documents\r\n );\r\n this.setState({ refreshItem: doc });\r\n }\r\n }\r\n\r\n onClickCategory(applicant: ApplicableTo, category: string) {\r\n if (applicant === ApplicableTo.Primary)\r\n this.setState({\r\n primaryFilter: category === this.state.primaryFilter ? null : category,\r\n });\r\n if (applicant === ApplicableTo.Secondary)\r\n this.setState({\r\n secondaryFilter:\r\n category === this.state.secondaryFilter ? null : category,\r\n });\r\n if (applicant === ApplicableTo.Shared)\r\n this.setState({\r\n sharedFilter: category === this.state.sharedFilter ? null : category,\r\n });\r\n }\r\n\r\n getCardClass(applicant: ApplicableTo, category: string) {\r\n let context = this.getContext();\r\n let secondaryApplicantExist =\r\n this.props.applicants !== null &&\r\n this.props.applicants !== undefined &&\r\n this.props.applicants.length > 1 &&\r\n this.props.applicants[1] !== null;\r\n var docs: PortalMortgageDocumentModel[];\r\n let allItems = this.props.items;\r\n var files: IFileItem[];\r\n var applicants: ApplicableTo[] = [applicant];\r\n\r\n if (applicant === ApplicableTo.Primary && !secondaryApplicantExist) {\r\n applicants.push(ApplicableTo.Shared);\r\n }\r\n docs = this.props.documents.filter(\r\n (i) =>\r\n applicants.includes(i.applicableTo as ApplicableTo) &&\r\n i.category === category\r\n );\r\n files = allItems.filter(\r\n (i) =>\r\n i.mortgageDocument !== undefined &&\r\n applicants.includes(i.mortgageDocument.applicableTo as ApplicableTo) &&\r\n i.mortgageDocument.category === category\r\n );\r\n\r\n var extraClass = \"\";\r\n if (context.mortgage?.approvalType === AIPType.HouseHunter) {\r\n if (docs.filter((a) => a.houseHunterDocument).length === 0) {\r\n extraClass = \"greyedcategory \";\r\n } else {\r\n extraClass = \"highlightcategory \";\r\n }\r\n }\r\n\r\n var filesWithComments = files.filter(\r\n (f) =>\r\n (f.comment ?? \"\") !== \"\" ||\r\n (f.transactionComments ?? []).filter((t) => !t.customerComment).length >\r\n 0\r\n );\r\n if (\r\n docs.filter(\r\n (d) => d.statusReason === MortgageDocumentStatusCode.NeedsAction\r\n ).length > 0 ||\r\n filesWithComments.length > 0\r\n ) {\r\n return \"needsattention \" + extraClass;\r\n }\r\n return extraClass;\r\n }\r\n\r\n getCardHeaderClass(applicant: ApplicableTo, category: string) {\r\n let context = this.getContext();\r\n let secondaryApplicantExist =\r\n this.props.applicants !== null &&\r\n this.props.applicants !== undefined &&\r\n this.props.applicants.length > 1 &&\r\n this.props.applicants[1] !== null;\r\n var docs: PortalMortgageDocumentModel[];\r\n let allItems = this.props.items;\r\n var files: IFileItem[];\r\n var applicants: ApplicableTo[] = [applicant];\r\n\r\n if (applicant === ApplicableTo.Primary && !secondaryApplicantExist) {\r\n applicants.push(ApplicableTo.Shared);\r\n }\r\n docs = this.props.documents.filter(\r\n (i) =>\r\n applicants.includes(i.applicableTo as ApplicableTo) &&\r\n i.category === category\r\n );\r\n files = allItems.filter(\r\n (i) =>\r\n i.mortgageDocument !== undefined &&\r\n applicants.includes(i.mortgageDocument.applicableTo as ApplicableTo) &&\r\n i.mortgageDocument.category === category\r\n );\r\n\r\n var extraClass = \"\";\r\n if (context.mortgage?.approvalType === AIPType.HouseHunter) {\r\n if (docs.filter((a) => a.houseHunterDocument).length === 0) {\r\n extraClass = \"greyedcategory \";\r\n } else {\r\n extraClass = \"\";\r\n }\r\n }\r\n\r\n var filesWithComments = files.filter(\r\n (f) =>\r\n (f.comment ?? \"\") !== \"\" ||\r\n (f.transactionComments ?? []).filter((t) => !t.customerComment).length >\r\n 0\r\n );\r\n if (\r\n docs.filter(\r\n (d) =>\r\n d.statusReason === MortgageDocumentStatusCode.NeedsAction ||\r\n d.comments\r\n ).length > 0 ||\r\n filesWithComments.length > 0\r\n ) {\r\n return \"needsattention \" + extraClass;\r\n }\r\n return extraClass;\r\n }\r\n\r\n getHouseHunterClass(applicant: ApplicableTo, category: string) {\r\n let context = this.getContext();\r\n let secondaryApplicantExist =\r\n this.props.applicants !== null &&\r\n this.props.applicants !== undefined &&\r\n this.props.applicants.length > 1 &&\r\n this.props.applicants[1] !== null;\r\n var docs: PortalMortgageDocumentModel[];\r\n var applicants: ApplicableTo[] = [applicant];\r\n\r\n if (applicant === ApplicableTo.Primary && !secondaryApplicantExist) {\r\n applicants.push(ApplicableTo.Shared);\r\n }\r\n docs = this.props.documents.filter(\r\n (i) =>\r\n applicants.includes(i.applicableTo as ApplicableTo) &&\r\n i.category === category\r\n );\r\n if (\r\n context.mortgage?.approvalType === AIPType.HouseHunter &&\r\n docs.filter((a) => a.houseHunterDocument).length === 0\r\n ) {\r\n return \"greyedcategory \";\r\n }\r\n return \"\";\r\n }\r\n\r\n getHouseHunterClassOpacity(applicant: ApplicableTo, category: string) {\r\n let context = this.getContext();\r\n let secondaryApplicantExist =\r\n this.props.applicants !== null &&\r\n this.props.applicants !== undefined &&\r\n this.props.applicants.length > 1 &&\r\n this.props.applicants[1] !== null;\r\n var docs: PortalMortgageDocumentModel[];\r\n var applicants: ApplicableTo[] = [applicant];\r\n\r\n if (applicant === ApplicableTo.Primary && !secondaryApplicantExist) {\r\n applicants.push(ApplicableTo.Shared);\r\n }\r\n docs = this.props.documents.filter(\r\n (i) =>\r\n applicants.includes(i.applicableTo as ApplicableTo) &&\r\n i.category === category\r\n );\r\n if (\r\n context.mortgage?.approvalType === AIPType.HouseHunter &&\r\n docs.filter((a) => a.houseHunterDocument).length === 0\r\n ) {\r\n return \"greyedpill \";\r\n }\r\n return \"\";\r\n }\r\n\r\n holdingPage() {\r\n return (\r\n <Container fluid={true}>\r\n <div\r\n style={{ marginTop: -15, paddingBottom: 15, textAlign: \"center\" }}\r\n ></div>\r\n <Row>\r\n <Col>\r\n <h3 className=\"impact\">\r\n We are still building your document journey.\r\n </h3>\r\n <span className=\"subtext\">\r\n As soon as it's ready you'll be able to upload your documents here\r\n </span>\r\n </Col>\r\n </Row>\r\n <Row className=\"pt-5\">\r\n <Col>\r\n <Icons.Spinner animation=\"border\" role=\"status\" />\r\n </Col>\r\n </Row>\r\n </Container>\r\n );\r\n }\r\n\r\n public render(): React.ReactNode {\r\n let allItems = this.props.items;\r\n let primaryItems = allItems.filter(\r\n (i) =>\r\n i.mortgageDocument !== undefined &&\r\n i.mortgageDocument!.applicableTo === ApplicableTo.Primary\r\n );\r\n let secondaryItems = allItems.filter(\r\n (i) =>\r\n i.mortgageDocument !== undefined &&\r\n i.mortgageDocument!.applicableTo === ApplicableTo.Secondary\r\n );\r\n let sharedItems = allItems.filter(\r\n (i) =>\r\n i.mortgageDocument === undefined ||\r\n i.mortgageDocument!.applicableTo === ApplicableTo.Shared\r\n );\r\n var documents = this.props.documents.filter(\r\n (d) =>\r\n d.statusReason !== MortgageDocumentStatusCode.Inactive &&\r\n d.displayToCustomer\r\n );\r\n\r\n var fullPercent = Math.round(this.calcPercent(documents));\r\n\r\n var primaryDocs = documents\r\n .filter(\r\n (i) => i.applicableTo === ApplicableTo.Primary && i.category !== \"AIP\"\r\n )\r\n .sort((a, b) => {\r\n if (b.statusReason === MortgageDocumentStatusCode.Approved) return -1;\r\n if (a.statusReason === MortgageDocumentStatusCode.Approved) return 1;\r\n if (b.statusReason === MortgageDocumentStatusCode.Uploaded) return -1;\r\n if (a.statusReason === MortgageDocumentStatusCode.Uploaded) return 1;\r\n var acat =\r\n this.props.categories.find((c) => c.category === a.category)?.order ??\r\n 0;\r\n var bcat =\r\n this.props.categories.find((c) => c.category === b.category)?.order ??\r\n 0;\r\n return acat < bcat ? -1 : 1;\r\n });\r\n\r\n let secondaryApplicantExist =\r\n this.props.applicants !== null &&\r\n this.props.applicants !== undefined &&\r\n this.props.applicants.length > 1 &&\r\n this.props.applicants[1] !== null;\r\n\r\n if (secondaryApplicantExist !== true) {\r\n primaryItems = allItems.filter(\r\n (i) =>\r\n i.mortgageDocument !== undefined &&\r\n (i.mortgageDocument!.applicableTo === ApplicableTo.Primary ||\r\n i.mortgageDocument!.applicableTo === ApplicableTo.Shared)\r\n );\r\n\r\n primaryDocs = documents\r\n .filter(\r\n (i) =>\r\n i.applicableTo === ApplicableTo.Primary ||\r\n i.applicableTo === ApplicableTo.Shared\r\n )\r\n .sort((a, b) => {\r\n if (b.statusReason === MortgageDocumentStatusCode.Approved) return -1;\r\n if (a.statusReason === MortgageDocumentStatusCode.Approved) return 1;\r\n if (b.statusReason === MortgageDocumentStatusCode.Uploaded) return -1;\r\n if (a.statusReason === MortgageDocumentStatusCode.Uploaded) return 1;\r\n var acat =\r\n this.props.categories.find((c) => c.category === a.category)\r\n ?.order ?? 0;\r\n var bcat =\r\n this.props.categories.find((c) => c.category === b.category)\r\n ?.order ?? 0;\r\n return acat < bcat ? -1 : 1;\r\n });\r\n }\r\n\r\n var secondaryDocs = documents\r\n .filter((i) => i.applicableTo === ApplicableTo.Secondary)\r\n .sort((a, b) => {\r\n if (b.statusReason === MortgageDocumentStatusCode.Approved) return -1;\r\n if (a.statusReason === MortgageDocumentStatusCode.Approved) return 1;\r\n if (b.statusReason === MortgageDocumentStatusCode.Uploaded) return -1;\r\n if (a.statusReason === MortgageDocumentStatusCode.Uploaded) return 1;\r\n var acat =\r\n this.props.categories.find((c) => c.category === a.category)?.order ??\r\n 0;\r\n var bcat =\r\n this.props.categories.find((c) => c.category === b.category)?.order ??\r\n 0;\r\n return acat < bcat ? -1 : 1;\r\n });\r\n\r\n var sharedDocs = !secondaryApplicantExist\r\n ? []\r\n : documents\r\n .filter((i) => i.applicableTo === ApplicableTo.Shared)\r\n .sort((a, b) => {\r\n if (b.statusReason === MortgageDocumentStatusCode.Approved)\r\n return -1;\r\n if (a.statusReason === MortgageDocumentStatusCode.Approved)\r\n return 1;\r\n if (b.statusReason === MortgageDocumentStatusCode.Uploaded)\r\n return -1;\r\n if (a.statusReason === MortgageDocumentStatusCode.Uploaded)\r\n return 1;\r\n var acat: any =\r\n this.props.categories.find((c) => c.category === a.category)\r\n ?.order ?? 0;\r\n var bcat: any =\r\n this.props.categories.find((c) => c.category === b.category)\r\n ?.order ?? 0;\r\n return acat < bcat ? -1 : 1;\r\n });\r\n\r\n var inprogressColor = \"#FE972B\";\r\n var doneColor = \"#40C999\";\r\n const context = this.context as UserContextState;\r\n\r\n // Rudimentary way to split the categories into columns. Just mapping it and allowing it to\r\n // spill over to the next row causing expanding accordions to push down adjacent categories\r\n // If we do the below then the accordions are placed within their own vertical column\r\n let cols: any[][] = [[], [], []];\r\n var firstCategory: string | null = null;\r\n if (!secondaryApplicantExist) {\r\n let col = 0;\r\n this.props.categories\r\n .filter(\r\n (c) => primaryDocs.filter((i) => i.category === c.category).length > 0\r\n )\r\n .forEach((c) => {\r\n firstCategory = firstCategory ?? c.category;\r\n cols[col].push(c);\r\n col++;\r\n if (col > 2) col = 0;\r\n });\r\n }\r\n var primaryCategories = this.props.categories.filter(\r\n (c) => primaryDocs.filter((i) => i.category === c.category).length > 0\r\n );\r\n if (!primaryCategories || primaryCategories.length === 0) {\r\n return this.holdingPage();\r\n }\r\n var firstPrimaryCategory =\r\n context.mortgage?.approvalType === AIPType.HouseHunter &&\r\n primaryCategories.length > 1\r\n ? primaryCategories[1].category\r\n : primaryCategories[0].category;\r\n var firstSecondaryCategory = \"\";\r\n if (secondaryApplicantExist) {\r\n var secondaryCategories: any;\r\n secondaryCategories = this.props.categories.filter(\r\n (c) => secondaryDocs.filter((i) => i.category === c.category).length > 0\r\n );\r\n if (!secondaryCategories || secondaryCategories.length === 0) {\r\n return this.holdingPage();\r\n }\r\n firstSecondaryCategory = secondaryCategories[0].category;\r\n }\r\n\r\n return (\r\n <Container>\r\n {context.mortgage?.approvalType === AIPType.HouseHunter ? (\r\n <div\r\n style={{ marginTop: -15, paddingBottom: 15, textAlign: \"center\" }}\r\n >\r\n <span className=\"subtext\">\r\n In order to assess your application for Approval in Principle we\r\n require the reduced number of{\" \"}\r\n <strong>documents highlighted below</strong>.<br />\r\n Once uploaded your mortgage advisor will review all promptly and\r\n come straight back to you, so let’s keep going!\r\n </span>\r\n </div>\r\n ) : (\r\n <div className=\"subtitle\" style={{ textAlign: \"center\" }}>\r\n {fullPercent === 0 && (\r\n <span className=\"subtext\">\r\n Upload{\" \"}\r\n <span className=\"doddltext\">everything lenders need</span> for\r\n us to check & get you approved in principle\r\n </span>\r\n )}\r\n {fullPercent > 0 && fullPercent < 80 && (\r\n <span className=\"subtext\">\r\n <span className=\"inprogress\">{fullPercent}% Complete.</span>{\" \"}\r\n You're off to a great start {context.contact?.firstName}! Once\r\n you have completed all sections we will review all and be right\r\n back to you. Keep going!\r\n </span>\r\n )}\r\n {fullPercent >= 80 && fullPercent < 100 && (\r\n <span className=\"subtext\">\r\n <span className=\"inprogress\">{fullPercent}% Complete.</span>{\" \"}\r\n Almost there {context.contact?.firstName}, just a few documents\r\n left! Once you have completed all sections we will review all\r\n and be right back to you. Keep going!\r\n </span>\r\n )}\r\n {fullPercent >= 100 && (\r\n <span className=\"subtext\">\r\n <span className=\"doddltext\">You're finished!</span> Great work{\" \"}\r\n {context.contact?.firstName}, we will now review all and be\r\n right back to you!\r\n </span>\r\n )}\r\n </div>\r\n )}\r\n <Row>\r\n {/* IF IT'S SINGLE */}\r\n {!secondaryApplicantExist && (\r\n <>\r\n <h3 className=\"impact\">{this.props.applicants![0]?.firstName}</h3>\r\n {/* <Row> */}\r\n {cols.map((categories, col) => (\r\n <Col\r\n key={`catcol-${col}`}\r\n md={12}\r\n lg={4}\r\n style={{ marginBottom: 20 }}\r\n >\r\n {categories.map(\r\n (cat, idx) =>\r\n primaryDocs.filter((i) => i.category === cat.category)\r\n .length > 0 && (<div> \r\n {/* // <Col sm={12} md={12} lg={!secondaryApplicantExist ? 4 : 12}> */}\r\n <Card\r\n className={`${this.getCardClass(\r\n ApplicableTo.Primary,\r\n cat.category\r\n )}`}\r\n >\r\n <Accordion\r\n defaultActiveKey={\r\n col === 0 &&\r\n context.contact?.contactId ===\r\n context.mortgage?.primaryApplicant.contactId\r\n ? firstPrimaryCategory\r\n : \"\"\r\n }\r\n >\r\n <Accordion.Item\r\n eventKey={cat.category}\r\n className={this.getHouseHunterClass(\r\n ApplicableTo.Primary,\r\n cat.category\r\n )}\r\n >\r\n <Accordion.Header>\r\n <Row style={{ width: \"100%\" }}>\r\n <Col className=\"text-center pt-1\">\r\n <h4\r\n className={`s ${this.getCardHeaderClass(\r\n ApplicableTo.Primary,\r\n cat.category\r\n )}`}\r\n >\r\n {cat.category}\r\n </h4>\r\n </Col>\r\n </Row>\r\n </Accordion.Header>\r\n <Accordion.Body>\r\n <Stack gap={2} className=\"text-start\">\r\n {primaryDocs\r\n .filter((p) => p.category === cat.category)\r\n .map((item, idx2) => (\r\n <DocumentPill\r\n key={\"pill-\" + item.mortgageDocumentId}\r\n status={item.statusReason}\r\n category={item.category}\r\n name={\r\n (item.description ?? \"\").trim() === \"\"\r\n ? item.name\r\n : item.description\r\n }\r\n portalName={item.portalName}\r\n helpText={item.helpText}\r\n files={primaryItems.filter(\r\n (f) => f.mortgageDocument === item\r\n )}\r\n contactId={\r\n this.props.applicants![0].contactId\r\n }\r\n mortgageDocumentId={\r\n item.mortgageDocumentId\r\n }\r\n onDone={this.onDocumentDone}\r\n mortgageId={this.props.mortgageId}\r\n documentType={item.documentType}\r\n metFaceToFace={\r\n item.primaryApplicantMetFaceToFace\r\n }\r\n comments={item.comments}\r\n houseHunterDocument={\r\n item.houseHunterDocument\r\n }\r\n //allowDocUpload={item.allowDocUpload?? false}\r\n />\r\n ))}\r\n </Stack>\r\n </Accordion.Body>\r\n </Accordion.Item>\r\n </Accordion>\r\n </Card> {cat.category === \"Banking\" && (\r\n <> <br/> <div className='btn btn-nav '><Link to=\"/financial1\">Add additional accounts</Link></div></>)}</div>)\r\n //</Col>\r\n )}\r\n </Col>\r\n ))}\r\n </>\r\n )}\r\n\r\n {/* IF IT'S JOINT */}\r\n {secondaryApplicantExist && (\r\n <Col md={12} lg={4} style={{ marginBottom: 20 }}>\r\n <h3 className=\"impact\">{this.props.applicants![0]?.firstName}</h3>\r\n {/* <Row> */}\r\n {this.props.categories.map(\r\n (cat, idx) =>\r\n primaryDocs.filter((i) => i.category === cat.category)\r\n .length > 0 && (<div>\r\n {/* // <Col sm={12} md={12} lg={!secondaryApplicantExist ? 4 : 12}> */}\r\n <Card\r\n key={`primarycard-${idx}`}\r\n className={this.getCardClass(\r\n ApplicableTo.Primary,\r\n cat.category\r\n )}\r\n >\r\n <Accordion\r\n defaultActiveKey={\r\n context.contact?.contactId ===\r\n context.mortgage?.primaryApplicant.contactId\r\n ? firstPrimaryCategory\r\n : \"\"\r\n }\r\n >\r\n <Accordion.Item\r\n eventKey={cat.category}\r\n className={this.getHouseHunterClass(\r\n ApplicableTo.Primary,\r\n cat.category\r\n )}\r\n >\r\n <Accordion.Header>\r\n <Row style={{ width: \"100%\" }}>\r\n <Col className=\"text-center pt-1\">\r\n <h4\r\n className={`s ${this.getCardHeaderClass(\r\n ApplicableTo.Primary,\r\n cat.category\r\n )}`}\r\n >\r\n {cat.category}\r\n </h4>\r\n </Col>\r\n </Row>\r\n </Accordion.Header>\r\n <Accordion.Body>\r\n <Stack gap={2} className=\"text-start\">\r\n {primaryDocs\r\n .filter((p) => p.category === cat.category)\r\n .map((item, idx2) => (\r\n <DocumentPill\r\n key={\"pill-\" + item.mortgageDocumentId}\r\n status={item.statusReason}\r\n category={item.category}\r\n name={\r\n (item.description ?? \"\").trim() === \"\"\r\n ? item.name\r\n : item.description\r\n }\r\n portalName={item.portalName}\r\n helpText={item.helpText}\r\n files={primaryItems.filter(\r\n (f) => f.mortgageDocument === item\r\n )}\r\n contactId={\r\n this.props.applicants![0].contactId\r\n }\r\n mortgageDocumentId={item.mortgageDocumentId}\r\n onDone={this.onDocumentDone}\r\n mortgageId={this.props.mortgageId}\r\n documentType={item.documentType}\r\n metFaceToFace={\r\n item.primaryApplicantMetFaceToFace\r\n }\r\n comments={item.comments}\r\n houseHunterDocument={\r\n item.houseHunterDocument\r\n }\r\n // allowDocUpload={item.allowDocUpload?? false}\r\n />\r\n ))}\r\n </Stack>\r\n </Accordion.Body>\r\n </Accordion.Item>\r\n </Accordion>\r\n </Card>{cat.category === \"Banking\" && (\r\n <> <br/><div className='btn btn-nav '><Link to=\"/financial2\">Add additional accounts</Link></div></>)}</div>)\r\n // </Col>\r\n )}\r\n {/* </Row> */}\r\n </Col>\r\n )}\r\n\r\n {secondaryApplicantExist && (\r\n <>\r\n <Col md={12} lg={4} style={{ marginBottom: 20 }}>\r\n <h3 className=\"impact\">\r\n {this.props.applicants![1]?.firstName}\r\n </h3>\r\n {this.props.categories.map(\r\n (cat, idx) =>\r\n secondaryDocs.filter((i) => i.category === cat.category)\r\n .length > 0 && (<div>\r\n <Card\r\n key={`secondarycard-${idx}`}\r\n className={this.getCardClass(\r\n ApplicableTo.Secondary,\r\n cat.category\r\n )}\r\n >\r\n <Accordion\r\n defaultActiveKey={\r\n context.contact?.contactId ===\r\n context.mortgage?.secondaryApplicant.contactId\r\n ? firstSecondaryCategory\r\n : \"\"\r\n }\r\n >\r\n <Accordion.Item\r\n eventKey={cat.category}\r\n className={this.getHouseHunterClass(\r\n ApplicableTo.Secondary,\r\n cat.category\r\n )}\r\n >\r\n <Accordion.Header>\r\n <Row style={{ width: \"100%\" }}>\r\n <Col className=\"text-center pt-1\">\r\n <h4\r\n className={`s ${this.getCardHeaderClass(\r\n ApplicableTo.Secondary,\r\n cat.category\r\n )}`}\r\n >\r\n {cat.category}\r\n </h4>\r\n </Col>\r\n </Row>\r\n </Accordion.Header>\r\n <Accordion.Body>\r\n <Stack gap={2} className=\"text-start\">\r\n {secondaryDocs\r\n .filter((p) => p.category === cat.category)\r\n .map((item, idx2) => (\r\n <DocumentPill\r\n key={\"pill-\" + item.mortgageDocumentId}\r\n status={item.statusReason}\r\n category={item.category}\r\n name={\r\n (item.description ?? \"\").trim() === \"\"\r\n ? item.name\r\n : item.description\r\n }\r\n portalName={item.portalName}\r\n helpText={item.helpText}\r\n files={secondaryItems.filter(\r\n (f) => f.mortgageDocument === item\r\n )}\r\n contactId={\r\n this.props.applicants![1].contactId\r\n }\r\n mortgageDocumentId={\r\n item.mortgageDocumentId\r\n }\r\n onDone={this.onDocumentDone}\r\n mortgageId={this.props.mortgageId}\r\n documentType={item.documentType}\r\n metFaceToFace={\r\n item.secondaryApplicantMetFaceToFace\r\n }\r\n comments={item.comments}\r\n houseHunterDocument={\r\n item.houseHunterDocument\r\n }\r\n //allowDocUpload={item.allowDocUpload?? false}\r\n />\r\n ))}\r\n </Stack>\r\n </Accordion.Body>\r\n </Accordion.Item>\r\n </Accordion>\r\n </Card>{cat.category === \"Banking\" && (\r\n <> <br/> <div className='btn btn-nav '><Link to=\"/financial2\">Add additional accounts</Link></div></>)}</div>)\r\n )}\r\n </Col>\r\n <Col md={12} lg={4}>\r\n <h3 className=\"impact\">Shared</h3>\r\n {this.props.categories.map(\r\n (cat, idx) =>\r\n sharedDocs.filter((i) => i.category === cat.category)\r\n .length > 0 && (\r\n <Card\r\n key={`sharedcard-${idx}`}\r\n className={this.getCardClass(\r\n ApplicableTo.Shared,\r\n cat.category\r\n )}\r\n >\r\n <Accordion>\r\n <Accordion.Header>\r\n <Row style={{ width: \"100%\" }}>\r\n <Col className=\"text-center pt-1\">\r\n <h4\r\n className={`s ${this.getCardHeaderClass(\r\n ApplicableTo.Shared,\r\n cat.category\r\n )}`}\r\n >\r\n {cat.category}\r\n </h4>\r\n </Col>\r\n </Row>\r\n </Accordion.Header>\r\n <Accordion.Body>\r\n <Stack gap={2} className=\"text-start\">\r\n {sharedDocs\r\n .filter((p) => p.category === cat.category)\r\n .map((item, idx2) => (\r\n <DocumentPill\r\n key={\"pill-\" + item.mortgageDocumentId}\r\n status={item.statusReason}\r\n category={item.category}\r\n name={\r\n (item.description ?? \"\").trim() === \"\"\r\n ? item.name\r\n : item.description\r\n }\r\n portalName={item.portalName}\r\n helpText={item.helpText}\r\n files={sharedItems.filter(\r\n (f) => f.mortgageDocument === item\r\n )}\r\n contactId={\r\n this.props.applicants![0].contactId\r\n }\r\n mortgageDocumentId={item.mortgageDocumentId}\r\n onDone={this.onDocumentDone}\r\n mortgageId={this.props.mortgageId}\r\n documentType={item.documentType}\r\n metFaceToFace={\r\n item.primaryApplicantMetFaceToFace\r\n }\r\n comments={item.comments}\r\n houseHunterDocument={\r\n item.houseHunterDocument\r\n }\r\n //allowDocUpload={item.allowDocUpload?? false}\r\n />\r\n ))}\r\n </Stack>\r\n </Accordion.Body>\r\n </Accordion>\r\n </Card>\r\n )\r\n )}\r\n </Col>\r\n </>\r\n )}\r\n </Row>\r\n <br />\r\n <br />\r\n </Container>\r\n );\r\n }\r\n}\r\n","import { Col, Row } from \"react-bootstrap\";\r\nimport './Documents.css';\r\nimport { PortalPage } from \"../components/PortalPage\";\r\nimport axios from 'axios';\r\nimport { DocumentList } from '../components/DocumentList';\r\nimport { ChatControl } from '../components/Chat/ChatControl';\r\nimport { PortalCategoryModel } from '../models/PortalCategoryModel';\r\nimport { appInsightsHelper } from '../components/AppInsights';\r\nimport { UserContextComponent } from '../components/UserContextComponent';\r\nimport { DocumentManager, IFileItem } from \"../components/DocumentManager\";\r\nimport { ApplicantMenu } from \"../components/ApplicantMenu\";\r\nimport { SideNav } from \"../components/SideNav\";\r\nimport { MortgageDocumentStatusCode, PortalMortgageDocumentModel } from \"../models/PortalMortgageDocumentModel\";\r\n\r\ninterface IDocumentsProps {\r\n}\r\n\r\ninterface IDocumentsState {\r\n loading: boolean;\r\n documents: any[];\r\n files: IFileItem[];\r\n selectedCategory: string | null;\r\n selectedDocument: string | null;\r\n mortgageDocumentId: string | null;\r\n documentsListKey: number;\r\n isChat: boolean;\r\n categories: PortalCategoryModel[];\r\n}\r\n\r\nexport class Documents extends UserContextComponent<IDocumentsProps, IDocumentsState> {\r\n constructor(props: any) {\r\n super(props);\r\n this.state = { loading: true, documents: [], files: [], selectedCategory: null, selectedDocument: null, mortgageDocumentId: null, documentsListKey: 1, isChat: false, categories: [] };\r\n this.onUploadComplete = this.onUploadComplete.bind(this);\r\n this.getCategories = this.getCategories.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n appInsightsHelper.trackPageView({ name: \"Documents\" });\r\n this.loadData();\r\n this.getCategories();\r\n }\r\n\r\n handleCategoryClick(event: any) {\r\n event.preventDefault();\r\n const target = event.target;\r\n this.setState({ selectedCategory: target.getAttribute(\"data-category\"), selectedDocument: null, mortgageDocumentId: null });\r\n }\r\n\r\n handleDocumentClick(event: any) {\r\n event.preventDefault();\r\n const target = event.target;\r\n this.setState({ selectedDocument: target.getAttribute(\"data-category\"), mortgageDocumentId: target.getAttribute(\"data-id\") });\r\n }\r\n\r\n private loadData(): void {\r\n const context = this.getContext();\r\n var mortgageId = context.contact?.mortgageId;\r\n let url = `/MortgageDocuments/GetMortgageDocumentsByMortgageId?mortgageId=${mortgageId}`;\r\n axios.get(url)\r\n .then((response) => {\r\n let documents = response.data;\r\n this.loadFiles(documents);\r\n })\r\n .catch((error) => {\r\n this.setState({ loading: false });\r\n });\r\n }\r\n\r\n private loadFiles(documents: any): void {\r\n const context = this.getContext();\r\n let url = `/sp/GetFiles?mortgageId=${context.mortgage?.mortgageId}`;\r\n axios.get(url)\r\n .then((response) => {\r\n let files = response.data;\r\n this.addOpenBankingDocumentComments(documents, files);\r\n })\r\n .catch((error) => {\r\n this.setState({ loading: false });\r\n });\r\n }\r\n\r\n private addOpenBankingDocumentComments(documents: any, files: IFileItem[]): void {\r\n const context = this.getContext();\r\n let url = `/MortgageDocuments/GetOpenBankingDocumentsWithComments?mortgageId=${context.mortgage?.mortgageId}`;\r\n axios.get(url)\r\n .then((response) => {\r\n let openBankingfiles = response.data;\r\n files.push(...openBankingfiles);\r\n this.setState({ loading: false, documents: documents, files: files });\r\n })\r\n .catch((error) => {\r\n this.setState({ loading: false });\r\n });\r\n }\r\n\r\n\r\n public onUploadComplete(mortgageDocumentId: string): void {\r\n let document = this.state.documents.find((doc) => { return doc.mortgageDocumentId === mortgageDocumentId });\r\n if (document != null) {\r\n document.statusReason = 755980001;\r\n }\r\n this.setState({ documentsListKey: this.state.documentsListKey + 1, documents: this.state.documents });\r\n }\r\n\r\n async getCategories() {\r\n let context = this.getContext();\r\n var mortgageId = context.contact?.mortgageId;\r\n axios\r\n .get(\"/MortgageDocuments/GetCategories?mortgageId=\" + mortgageId)\r\n .then((response) => {\r\n let categories: PortalCategoryModel[] = [];\r\n for (var i = 0; i < response.data.length; i++) {\r\n if (response.data[i].category !== \"AIP\") {\r\n categories.push(response.data[i]);\r\n }\r\n }\r\n this.setState({ categories: categories });\r\n })\r\n .catch((error) => {\r\n if (error.response.statusCode === 401) {\r\n alert(\"Unauthorized\");\r\n }\r\n });\r\n }\r\n statusClass() {\r\n let fullPercent = DocumentManager.calculatePercent(this.getContext(), this.state.documents);\r\n if (fullPercent === 0) return '';\r\n if (fullPercent >= 100) return 'complete'\r\n return 'inprogress';\r\n }\r\n render() {\r\n let context = this.getContext();\r\n\r\n if (this.state.categories.length === 1 && this.state.selectedCategory === null) {\r\n this.setState({ selectedCategory: this.state.categories[0].category, selectedDocument: null, mortgageDocumentId: null });\r\n }\r\n\r\n let applicants = [context.mortgage?.primaryApplicant, context.mortgage?.secondaryApplicant];\r\n \r\n\r\n let contents = this.state.loading\r\n ? <><p><em>Loading...</em></p></>\r\n : (\r\n <>\r\n <PortalPage className={`bump-right ${this.statusClass()}`} titleClassName=\"max-w-wide\" title={\"Your Documents\"}>\r\n <Row>\r\n {this.state.isChat &&\r\n <Col className=\"col-7\">\r\n <ChatControl onUploadComplete={this.onUploadComplete} PrimaryApplicant={context.mortgage?.primaryApplicant.firstName} SecondaryApplicant={(context.mortgage?.secondaryApplicant ? context.mortgage?.secondaryApplicant.firstName : \"\")}></ChatControl>\r\n </Col>\r\n }\r\n {this.state.isChat &&\r\n <Col className=\"col-3\">\r\n <DocumentList key={this.state.documentsListKey} categories={this.state.categories} documents={this.state.documents} />\r\n </Col>\r\n }\r\n {!this.state.isChat &&\r\n <Col className=\"max-w-wide col-12\">\r\n <DocumentManager key={this.state.documentsListKey} categories={this.state.categories} items={this.state.files} documents={this.state.documents} applicants={applicants} mortgageId={context.mortgage?.mortgageId} />\r\n </Col>\r\n }\r\n </Row>\r\n <br />\r\n </PortalPage>\r\n </>\r\n );\r\n return contents;\r\n }\r\n}\r\n","import React from \"react\";\r\nimport { Stack, Card, Container } from \"react-bootstrap\";\r\n\r\nexport class HelpBox extends React.Component<any, any> { \r\n render() {\r\n const { title, text } = this.props;\r\n\r\n return (\r\n <Container className=\"pt-2\">\r\n\r\n <Card className=\"p-4\">\r\n <Stack gap={3}>\r\n <h2>{title}</h2>\r\n <p>{text}</p>\r\n </Stack>\r\n {this.props.children}\r\n </Card>\r\n </Container>\r\n );\r\n }\r\n}","import React, { Component } from \"react\";\r\nimport { Button, Col, Container, Row } from \"react-bootstrap\";\r\nimport { HelpBox } from \"../components/HelpBox\";\r\nimport \"./Documents.css\";\r\nimport { PortalPage } from \"../components/PortalPage\";\r\nimport { UserContext } from \"../components/UserContext\";\r\nimport UserContextState from \"../components/UserContext\";\r\nimport axios from \"axios\";\r\nimport {\r\n MortgageStatus,\r\n PortalMortgageModel,\r\n} from \"../models/PortalMortgageModel\";\r\nimport { FileUploadLegacy } from \"../components/FileUploadLegacy\";\r\nimport { appInsightsHelper } from \"../components/AppInsights\";\r\n\r\ninterface IDocumentReviewProps {}\r\n\r\ninterface IDocumentReviewState {\r\n loading: boolean;\r\n mortgage: PortalMortgageModel | null;\r\n selectedDocument: string | null;\r\n specialConditionsId: string | null;\r\n documents: any[];\r\n}\r\n\r\nexport class DocumentReview extends Component<\r\n IDocumentReviewProps,\r\n IDocumentReviewState\r\n> {\r\n static contextType = UserContext;\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n loading: false,\r\n mortgage: null,\r\n selectedDocument: null,\r\n specialConditionsId: null,\r\n documents: [],\r\n };\r\n this.handleDocumentClick = this.handleDocumentClick.bind(this);\r\n this.onUploadComplete = this.onUploadComplete.bind(this);\r\n }\r\n componentDidMount() {\r\n appInsightsHelper.trackPageView({ name: \"Document Review\" });\r\n this.populateData();\r\n }\r\n\r\n onUploadComplete(data: any) {\r\n axios\r\n .post(\"/SpecialConditions/UpdateSpecialConditionsFileUrl\", null, {\r\n params: {\r\n specialConditionsId: this.state.specialConditionsId,\r\n url: data,\r\n },\r\n })\r\n .then((response) => {\r\n var filteredDocuments = this.state.documents.filter((x) => {\r\n return x.specialConditionsId !== this.state.specialConditionsId;\r\n });\r\n this.setState({\r\n documents: filteredDocuments,\r\n selectedDocument: null,\r\n specialConditionsId: null,\r\n });\r\n });\r\n }\r\n\r\n handleDocumentClick(event: any) {\r\n event.preventDefault();\r\n const target = event.target;\r\n this.setState({\r\n selectedDocument: target.getAttribute(\"data-category\"),\r\n specialConditionsId: target.getAttribute(\"data-id\"),\r\n });\r\n //logger.log(this.state);\r\n }\r\n\r\n render() {\r\n if (this.state.loading)\r\n return (\r\n <p>\r\n <em>Loading...</em>\r\n </p>\r\n );\r\n\r\n let contents = (\r\n <PortalPage title={\"Document Review\"} description={\"\"}>\r\n <>\r\n <Row>\r\n <Col className=\"col-1\"></Col>\r\n <Col className=\"col-6\">\r\n <div className=\"list-group\">\r\n <div className=\" list-group-item list-group-item-action flex-column align-items-start\">\r\n <Container>\r\n <Row>\r\n <Col className=\"col-11 text-start\">\r\n Our team are currently reviewing your documentation and\r\n an advisor will be back to you soon!\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col> </Col>\r\n </Row>\r\n </Container>\r\n </div>\r\n </div>\r\n </Col>\r\n <Col className=\"col-1\"></Col>\r\n <Col className=\"col-3\">\r\n <HelpBox\r\n title={\"What's next?\"}\r\n text={\r\n \"Once your documents have been reviewed, we can start to choose a lender to continue your journey\"\r\n }\r\n ></HelpBox>\r\n </Col>\r\n </Row>\r\n <br />\r\n <br />\r\n <br />\r\n <br />\r\n </>\r\n </PortalPage>\r\n );\r\n return contents;\r\n }\r\n\r\n async populateData() {\r\n const context = this.context as UserContextState;\r\n if (context.contact === null) return;\r\n\r\n axios\r\n .get(\r\n \"/mortgages/GetMortgageByMortgageId?mortgageId=\" +\r\n context.contact.mortgageId\r\n )\r\n .then((response) => {\r\n let mortgage = response.data;\r\n if (\r\n mortgage.status === MortgageStatus.AIPApproved ||\r\n mortgage.status === MortgageStatus.AIPSubmitted\r\n ) {\r\n window.location.href = \"/aip-application\";\r\n }\r\n });\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport 'bootstrap/dist/css/bootstrap.min.css';\r\nimport { PortalPage } from \"../components/PortalPage\";\r\nimport { Link } from 'react-router-dom';\r\nimport { Button } from 'react-bootstrap';\r\n\r\nexport class NotFound extends Component {\r\n render() {\r\n return (\r\n <PortalPage title={<>Error 404</>} description={\"Requested page hasn't been found.\"}>\r\n <br/>\r\n <p><Link to=\"/\"><Button className='btn btn-standard btn-round-lg circle btn-bordered btn-lg'>Go to home page</Button></Link></p>\r\n </PortalPage>\r\n ); \r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\nimport \"bootstrap/dist/css/bootstrap.min.css\";\r\nimport { PortalPage } from \"../components/PortalPage\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { Button } from \"react-bootstrap\";\r\n\r\ninterface IState {\r\n redirectExpired: boolean;\r\n}\r\n\r\nexport class ErrorPage extends Component<any, IState> {\r\n /**\r\n *\r\n */\r\n constructor(props: any) {\r\n super(props);\r\n this.state = { redirectExpired: false };\r\n }\r\n componentDidMount() {\r\n document.title = \"doddl - Error\";\r\n }\r\n\r\n render() {\r\n if (!this.state.redirectExpired) {\r\n // On iPhone it doesn't play friendly with the MSAL auth and you get an error page flash\r\n // up for a brief moment. We have a redirect bandaid for that. So we don't display this\r\n // error screen immediately, wait three seconds to allow iPhone to auto-fix itself\r\n setTimeout(() => {\r\n this.setState({ redirectExpired: true });\r\n }, 3000);\r\n return <></>;\r\n }\r\n return (\r\n <PortalPage\r\n title={<>We are so sorry!</>}\r\n description={\r\n \"Our portal is experiencing some issues. We are aware of this and are working to resolve the problem as soon as possible.\"\r\n }\r\n >\r\n <br />\r\n <p className=\" max-w-wide\">\r\n <Link to=\"/\">\r\n <Button className=\"btn btn-standard\">Go to home page</Button>\r\n </Link>\r\n </p>\r\n </PortalPage>\r\n );\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport { Col, Container, Row } from \"react-bootstrap\";\r\nimport { HelpBox } from \"../components/HelpBox\";\r\nimport './Documents.css';\r\nimport { PortalPage } from \"../components/PortalPage\";\r\nimport { appInsightsHelper } from '../components/AppInsights';\r\n\r\ninterface ILenderAdviceProps {\r\n}\r\n\r\ninterface ILenderAdviceState {\r\n loading: boolean;\r\n}\r\n\r\nexport class LenderAdvice extends Component<ILenderAdviceProps, ILenderAdviceState> {\r\n constructor(props: any) {\r\n super(props);\r\n this.state = { loading: false };\r\n }\r\n componentDidMount() {\r\n appInsightsHelper.trackPageView({ name: \"Lender Advice\" });\r\n }\r\n\r\n render() {\r\n let contents = this.state.loading\r\n ? <p><em>Loading...</em></p>\r\n : (\r\n <PortalPage title={\"Lender Advice\"} description={\"\"}>\r\n <Row>\r\n <Col className=\"col-1\"></Col>\r\n <Col className=\"col-6\">\r\n <div className=\"list-group\">\r\n <div className=\" list-group-item list-group-item-action flex-column align-items-start\">\r\n <Container>\r\n <Row>\r\n <Col className=\"col-1\">\r\n \r\n </Col>\r\n <Col className=\"col-11 text-start\">\r\n \r\n </Col>\r\n </Row>\r\n <Row><Col> </Col>\r\n </Row>\r\n </Container>\r\n </div>\r\n </div>\r\n </Col>\r\n <Col className=\"col-1\"></Col>\r\n <Col className=\"col-3\">\r\n <HelpBox title={\"What's next?\"} text={\"You should have received your lender declaration form by email to be completed in docusign!\"}></HelpBox>\r\n </Col>\r\n </Row>\r\n <br />\r\n <br />\r\n <br />\r\n <br />\r\n </PortalPage>\r\n );\r\n return contents;\r\n }\r\n}\r\n","import React from \"react\";\r\nimport UserContextState, { CalculatorState, UserContext } from \"./UserContext\";\r\nimport axios, { AxiosRequestConfig } from \"axios\";\r\nimport { GetTooltips } from \"../helper/tooltipHelper\";\r\nimport { AxiosError, AxiosResponse } from \"axios\";\r\nimport { PortalPage } from \"./PortalPage\";\r\nimport { Link, Navigate, useNavigate } from \"react-router-dom\";\r\nimport { Button } from \"react-bootstrap\";\r\nimport { FormLookupItem } from \"../models/PortalMetadata\";\r\nimport { logger } from \"../helper/Logger\";\r\nimport { ImpersonateContact } from \"../pages/ImpersonateContact\";\r\n\r\nexport class UserProvider extends React.Component<any, any> {\r\n constructor(props: any) {\r\n super(props);\r\n\r\n this.reloadMortgage = this.reloadMortgage.bind(this);\r\n this.loadPillsTooltips = this.loadPillsTooltips.bind(this);\r\n this.setIsDirty = this.setIsDirty.bind(this);\r\n this.getMortgageDocuments = this.getMortgageDocuments.bind(this);\r\n this.loadUserDetails = this.loadUserDetails.bind(this);\r\n this.loadMortgage = this.loadMortgage.bind(this);\r\n this.loadMortgageDocuments = this.loadMortgageDocuments.bind(this);\r\n this.loadPillsTooltips = this.loadPillsTooltips.bind(this);\r\n\r\n this.addDoc = this.addDoc.bind(this);\r\n this.updateDoc = this.updateDoc.bind(this);\r\n this.deleteDoc = this.deleteDoc.bind(this);\r\n this.updateId = this.updateId.bind(this);\r\n this.loadFiles = this.loadFiles.bind(this);\r\n\r\n this.updateCalculatorState = this.updateCalculatorState.bind(this);\r\n this.setPageRefreshListener = this.setPageRefreshListener.bind(this);\r\n this.callPageRefreshListener = this.callPageRefreshListener.bind(this);\r\n\r\n this.state = {\r\n loading: true,\r\n contact: null,\r\n userNotFound: false,\r\n error: false,\r\n errorDetails: null,\r\n isDirty: false,\r\n setIsDirty: (b: boolean) => {\r\n this.setState({ isDirty: b });\r\n },\r\n impersonatedId: null,\r\n mortgageDocumentList: [],\r\n reloadMortgage: this.reloadMortgage,\r\n getMortgageDocuments: this.getMortgageDocuments,\r\n addDoc: this.addDoc,\r\n updateDoc: this.updateDoc,\r\n deleteDoc: this.deleteDoc,\r\n updateId: this.updateId,\r\n institutions: [],\r\n contactNotFound: false,\r\n settings: null,\r\n files: null,\r\n calculatorState: {},\r\n updateCalculatorState: (state: CalculatorState) => {\r\n this.updateCalculatorState(state);\r\n },\r\n setPageRefreshListener: (listener: any) => {\r\n this.setPageRefreshListener(listener);\r\n },\r\n callPageRefreshListener: () => {\r\n this.callPageRefreshListener();\r\n },\r\n };\r\n\r\n axios.interceptors.response.use(this.onResponse, this.onResponseError);\r\n }\r\n\r\n setLastLoginTime(contactId: string): void {\r\n if (sessionStorage.getItem(\"lastLoginLogged\") === null) {\r\n axios\r\n .post(\"/Contacts/SetLastLoginTime\", null, {\r\n params: { contactId: contactId },\r\n })\r\n .then((response) => {\r\n sessionStorage.setItem(\"lastLoginLogged\", \"1\");\r\n });\r\n }\r\n }\r\n\r\n onRequest = (config: AxiosRequestConfig): AxiosRequestConfig => {\r\n return config;\r\n };\r\n\r\n callErrorApi(error: AxiosError) {\r\n setTimeout(() => {\r\n var form = new FormData();\r\n form.append(\r\n \"details\",\r\n JSON.stringify(error) +\r\n \" | \\r\\n\\r\\nConsole: \\r\\n\" +\r\n JSON.stringify(logger.getLogs())\r\n );\r\n axios\r\n .post(\"/Log/Error\", form, {\r\n params: { message: error?.message ?? \"Error occured\" },\r\n maxBodyLength: 2147483647,\r\n headers: { \"Content-Type\": \"multipart/form-data\" },\r\n })\r\n .catch((e) => {\r\n logger.error(\"Error reaching error logger\");\r\n logger.log(e);\r\n });\r\n logger.clearLogs();\r\n }, 500);\r\n }\r\n\r\n onRequestError = (error: AxiosError): Promise<AxiosError> => {\r\n logger.error(`[request error] [${JSON.stringify(error)}]`);\r\n this.callErrorApi(error);\r\n return Promise.reject(error);\r\n };\r\n\r\n onResponse = (response: AxiosResponse): AxiosResponse => {\r\n return response;\r\n };\r\n\r\n onResponseError = (error: AxiosError): Promise<AxiosError> => {\r\n if (window.location.href.includes(\"_impersonate\")) {\r\n // We may get an error if someone without a mortgage tries to impersonate. Just ignore it in this instance only\r\n return Promise.resolve(error);\r\n }\r\n if (error.config.url === \"/Log/Error\") {\r\n // If we get an error attempting to log an error, then we have an API issue. So just stop here\r\n return Promise.resolve(error);\r\n }\r\n logger.error(`${JSON.stringify(error)}`);\r\n if (error?.response?.status! >= 500 || error?.response?.status === 400) {\r\n this.callErrorApi(error);\r\n }\r\n this.setState({ error: true, redirectExpired: false });\r\n\r\n return Promise.reject(error);\r\n };\r\n\r\n componentDidMount() {\r\n if (window.location.pathname === \"/error\") {\r\n this.setState({ loading: false });\r\n return;\r\n }\r\n\r\n if (this.state.loading) {\r\n this.loadData(true, null);\r\n }\r\n }\r\n\r\n updateCalculatorState(calculatorState: CalculatorState) {\r\n var newCalculatorState = {\r\n ...this.state.calculatorState,\r\n ...calculatorState,\r\n };\r\n this.setState({ calculatorState: newCalculatorState });\r\n }\r\n\r\n setPageRefreshListener(listener: any) {\r\n this.setState({ pageRefreshListener: listener });\r\n }\r\n\r\n callPageRefreshListener() {\r\n if (this.state.pageRefreshListener) {\r\n this.state.pageRefreshListener();\r\n }\r\n }\r\n\r\n loadData(loadTooltips: boolean, contactId: string | null) {\r\n this.loadSettings().then((settingsResponse: any) => {\r\n this.setState({ settings: settingsResponse.data });\r\n });\r\n this.loadUserDetails(contactId).then((userDetailsResponse: any) => {\r\n if (userDetailsResponse)\r\n logger.log(\"User Details Loaded\", userDetailsResponse.data);\r\n else {\r\n logger.warn(\"Error state detected. Null User Details returned\");\r\n this.setState({ error: true, redirectExpired: false });\r\n return;\r\n }\r\n //if not impersonated, update last login time.\r\n if (this.state.impersonatedId === null)\r\n this.setLastLoginTime(userDetailsResponse.data.contactId);\r\n if (\r\n userDetailsResponse.data.contactId ===\r\n \"00000000-0000-0000-0000-000000000000\"\r\n ) {\r\n this.setState({ userNotFound: true });\r\n } else if (\r\n userDetailsResponse.data.mortgageId ===\r\n \"00000000-0000-0000-0000-000000000000\" ||\r\n userDetailsResponse.data.mortgageId === null\r\n )\r\n this.setState({\r\n noMortgageError: true,\r\n contact: userDetailsResponse.data,\r\n loading: false,\r\n });\r\n else {\r\n this.loadMortgage(userDetailsResponse.data).then(\r\n (mortgageResponse: any) => {\r\n logger.log(\"Mortgage Loaded\", mortgageResponse.data);\r\n\r\n this.loadFiles(mortgageResponse.data.mortgageId);\r\n\r\n //setTimeout(() => {\r\n this.loadMortgageDocuments(userDetailsResponse.data).then(\r\n (mortgageDocumentsResponse: any) => {\r\n logger.log(\r\n \"Mortgage Documents Loaded\",\r\n mortgageDocumentsResponse.data\r\n );\r\n\r\n this.loadInstitutions().then((institutionsResponse: any) => {\r\n let institutions: FormLookupItem[] =\r\n institutionsResponse.data.map((item: any) => {\r\n return {\r\n text: item.name,\r\n value: item.institutionId,\r\n item: item,\r\n } as FormLookupItem;\r\n });\r\n this.setState({\r\n contact: userDetailsResponse.data,\r\n mortgage: mortgageResponse.data,\r\n mortgageDocumentList: mortgageDocumentsResponse.data,\r\n loading: false,\r\n error: false,\r\n institutions: institutions,\r\n noMortgageError: false,\r\n applicantNo:\r\n userDetailsResponse.data.contactId ===\r\n mortgageResponse.data.primaryApplicant.contactId\r\n ? 1\r\n : 2,\r\n });\r\n });\r\n if (loadTooltips) {\r\n this.loadPillsTooltips().then((tooltipsResponse: any) => {\r\n logger.log(\r\n \"Tooltips Loaded\",\r\n mortgageDocumentsResponse.data\r\n );\r\n this.setState({\r\n tooltips: tooltipsResponse.data,\r\n });\r\n });\r\n }\r\n }\r\n );\r\n //}, 10);\r\n }\r\n );\r\n }\r\n });\r\n }\r\n\r\n loadFiles(mortgageId: string) {\r\n if (this.state.loadingFiles) return;\r\n this.setState({ loadingFiles: true });\r\n let url = `/sp/GetFiles?mortgageId=${mortgageId}`;\r\n axios\r\n .get(url)\r\n .then((response) => {\r\n let files = response.data;\r\n this.setState({ files: files, loadingFiles: false });\r\n })\r\n .catch((error) => {\r\n this.setState({ loadingFiles: false });\r\n });\r\n }\r\n\r\n loadUserDetails(contactId: string | null) {\r\n let url = \"/Contacts/GetUserDetails\";\r\n if (contactId) url = \"/Contacts/GetUserDetailsEx?id=\" + contactId;\r\n return axios.get(url).catch((error) => {\r\n this.setState({ error: true, redirectExpired: false });\r\n });\r\n }\r\n\r\n loadInstitutions() {\r\n let url = \"/Dictionary/GetInstitutions\";\r\n return axios.get(url);\r\n }\r\n\r\n loadMortgage(contact: any) {\r\n return axios.get(\r\n \"/Mortgages/GetMortgageByMortgageId?mortgageId=\" + contact.mortgageId\r\n );\r\n }\r\n\r\n loadMortgageDocuments(mortgage: any) {\r\n let url = `/MortgageDocuments/GetAllDocuments?mortgageId=${mortgage.mortgageId}`;\r\n return axios.get(url);\r\n }\r\n\r\n loadPillsTooltips() {\r\n return GetTooltips(\"pill\");\r\n // .then((response) => {\r\n // this.setState({ tooltips: response.data });\r\n // })\r\n // .catch((error) => {\r\n // this.setState({ error: true });\r\n // });\r\n }\r\n\r\n loadSettings() {\r\n let url = \"/settings\";\r\n return axios.get(url);\r\n }\r\n\r\n impersonateContact(contactId: string) {\r\n this.loadData(false, contactId);\r\n this.setState({ impersonatedId: contactId });\r\n }\r\n\r\n reloadMortgage = () => {\r\n if (this.state.impersonatedId !== null) {\r\n this.loadData(false, this.state.impersonatedId);\r\n } else {\r\n this.setState({ files: [] });\r\n axios\r\n .get(\r\n \"/Mortgages/GetMortgageByMortgageId?mortgageId=\" +\r\n this.state.contact.mortgageId\r\n )\r\n .then((response) => {\r\n this.setState({ mortgage: response.data });\r\n })\r\n .catch((error) => {});\r\n }\r\n };\r\n\r\n setIsDirty(isDirty: boolean) {\r\n this.setState({ isDirty: isDirty });\r\n }\r\n\r\n getMortgageDocuments(mortgageId: string) {\r\n if (!mortgageId) mortgageId = this.state.contact.mortgageId;\r\n let url = `/MortgageDocuments/GetAllDocuments?mortgageId=${mortgageId}`;\r\n return axios\r\n .get(url)\r\n .then((response) => {\r\n var list = response.data;\r\n this.setState({ loading: false, mortgageDocumentList: list });\r\n })\r\n .catch((error) => {\r\n if (error.response.statusCode === 401) {\r\n alert(\"Unauthorized\");\r\n }\r\n });\r\n }\r\n\r\n addDoc(doc: any) {\r\n let doclist = this.state.mortgageDocumentList;\r\n doclist.push(doc);\r\n this.setState({\r\n mortgageDocumentList: doclist,\r\n });\r\n //this.getMortgageDocuments();\r\n }\r\n\r\n updateDoc(doc: any) {\r\n let doclist = this.state.mortgageDocumentList;\r\n let oldDocs = doclist.map((d: any) => {\r\n if (d.mortgageDocumentId === doc.mortgageDocumentId) return doc;\r\n else return d;\r\n });\r\n\r\n oldDocs.forEach((d: any) => {\r\n if (d.mortgageDocumentId === doc.mortgageDocumentId)\r\n logger.log(d.statusReason);\r\n\r\n if (d.new === true) {\r\n d.new = false;\r\n }\r\n });\r\n this.setState({\r\n mortgageDocumentList: oldDocs,\r\n });\r\n //this.getMortgageDocuments();\r\n }\r\n\r\n updateId(oldId: string, newId: string) {\r\n let doclist = this.state.mortgageDocumentList;\r\n let oldDoc = doclist.find((d: any) => d.mortgageDocumentId === oldId);\r\n if (!oldDoc) return;\r\n else oldDoc.mortgageDocumentId = newId;\r\n\r\n let oldDocs = doclist.map((d: any) => {\r\n if (d.mortgageDocumentId === oldId) return oldDoc;\r\n else return d;\r\n });\r\n this.setState({\r\n mortgageDocumentList: oldDocs,\r\n });\r\n //this.getMortgageDocuments();\r\n }\r\n\r\n deleteDoc(doc: any) {\r\n let doclist = this.state.mortgageDocumentList;\r\n doclist = doclist.filter(\r\n (o: any) => o.mortgageDocumentId !== doc.mortgageDocumentId\r\n );\r\n this.setState({\r\n mortgageDocumentList: doclist,\r\n });\r\n //this.getMortgageDocuments();\r\n }\r\n\r\n render() {\r\n if (this.state.error === true) {\r\n if (!this.state.redirectExpired) {\r\n // On iPhone it doesn't play friendly with the MSAL auth and you get an error page flash\r\n // up for a brief moment. We have a redirect bandaid for that. So we don't display this\r\n // error screen immediately, wait three seconds to allow iPhone to auto-fix itself\r\n setTimeout(() => {\r\n this.setState({ redirectExpired: true });\r\n }, 3000);\r\n return <></>;\r\n }\r\n\r\n return (\r\n <PortalPage\r\n title={<>We are so sorry!</>}\r\n description={\r\n \"Our portal is experiencing some issues. We are aware of this and are working to resolve the problem as soon as possible.\"\r\n }\r\n >\r\n <br />\r\n <p className=\"max-w-wide\">\r\n <Link to=\"/\">\r\n <Button\r\n onClick={() => {\r\n this.setState({ error: false });\r\n }}\r\n className=\"btn btn-standard btn-round-lg circle btn-bordered btn-lg\"\r\n >\r\n Go to home page\r\n </Button>\r\n </Link>\r\n </p>\r\n </PortalPage>\r\n );\r\n }\r\n if (\r\n this.state.noMortgageError === true &&\r\n (!this.state.contact.isAdmin ||\r\n window.location.href.includes(\"_impersonate\") === false)\r\n ) {\r\n var imp = sessionStorage.getItem(\"imp\") ?? \"\";\r\n if (imp != \"\" && (window.location.pathname ?? \"/\") === \"/\") {\r\n axios\r\n .post(\"/Contacts/impersonate\", null, { params: { id: imp } })\r\n .then(() => {\r\n var context = this.state as UserContextState;\r\n context.impersonatedId = imp;\r\n context.reloadMortgage();\r\n });\r\n return <></>;\r\n }\r\n\r\n return (\r\n <PortalPage\r\n title={<>Details not found!</>}\r\n description={\r\n \"You do not have a mortgage linked to this email address. If you feel this is an error, please contact us and we will resolve this for you.\"\r\n }\r\n >\r\n <br />\r\n </PortalPage>\r\n );\r\n }\r\n\r\n if (!this.state.loading && this.state.userNotFound === true) {\r\n return (\r\n <p>\r\n <em>\r\n There is no user account associated with your e-mail address or you\r\n have no active mortgage.\r\n </em>\r\n </p>\r\n );\r\n }\r\n\r\n if (this.state.loading === true)\r\n return (\r\n <p>\r\n <em>Loading...</em>\r\n </p>\r\n );\r\n\r\n var v = this.state as UserContextState;\r\n\r\n return (\r\n <UserContext.Provider value={v}>\r\n <>{this.props.children}</>\r\n </UserContext.Provider>\r\n );\r\n }\r\n}\r\n","import axios from \"axios\";\r\nimport React from \"react\";\r\nimport { Button, Modal } from \"react-bootstrap\";\r\nimport * as Icons from \"react-bootstrap\";\r\nimport FormattedDate from \"./FormattedDate\";\r\n\r\nexport interface IDownloadDocumentButtonProps {\r\n title: string;\r\n documentTitle?: string;\r\n download(): void;\r\n expiry?: string | null | undefined;\r\n buttonStyle?: \"standard\" | \"pill\" | null;\r\n showError: boolean;\r\n className?: string;\r\n}\r\n\r\ninterface IDownloadDocumentButtonState {\r\n \r\n}\r\n\r\nexport class DownloadDocumentButton extends React.Component<IDownloadDocumentButtonProps, IDownloadDocumentButtonState> {\r\n constructor(props: IDownloadDocumentButtonProps) {\r\n super(props);\r\n }\r\n\r\n render() {\r\n\r\n return (\r\n <>\r\n <div>\r\n {this.props.buttonStyle === \"standard\" &&\r\n <div>\r\n <div className={`aip-download-button text-start ${this.props.className ?? ''}`}\r\n onClick={(e: any) => { this.props.download(); }}>\r\n <span className=\"std\">Download <span>{this.props.documentTitle ?? this.props.title}</span></span>\r\n <span style={{ textIndent: '4px', padding: '12px', paddingRight: '10px'}} className=\" fa-solid fa-circle-down fa-xl float-right\"></span>\r\n </div>\r\n </div>\r\n }\r\n {(this.props.buttonStyle ?? \"pill\") === \"pill\" &&\r\n <button className={`mt-3 ps-3 btn btn-standard btn-fw nowrap text-start ${this.props.className ?? ''}`} onClick={(e: any) => { this.props.download(); }}>\r\n <span className=\"std\">Download <strong>{this.props.documentTitle ?? this.props.title}</strong></span>\r\n <span style={{ textIndent: '4px', paddingRight: '10px' }} className=\" float-right\"><i className=\"fa-solid fa-circle-down fa-xl \"></i></span>\r\n </button>\r\n }\r\n {this.props.expiry &&\r\n <p className=\"s mt-1 mb-0\">{this.props.title} expiry <FormattedDate date={this.props.expiry}/></p>\r\n }\r\n {this.props.showError &&\r\n <>\r\n <p style={{ width: '100%', color: '#333333', paddingTop: 5 }}>We ran into a problem downloading your {this.props.documentTitle ?? this.props.title}. </p>\r\n <button className='btn btn-standard-transparent btn-outline btn-fw mt-2 mb-4' onClick={() => window.Intercom('showNewMessage')}>Speak to my Advisor</button>\r\n </>\r\n }\r\n </div>\r\n </>\r\n );\r\n }\r\n}","import axios from \"axios\";\r\nimport { PortalAIPApplicationModel } from \"../models/PortalAIPApplication\";\r\nimport { UserContextComponent } from \"./UserContextComponent\";\r\nimport { DownloadDocumentButton } from \"./DownloadDocumentButton\";\r\n\r\nexport interface IValuationProps {\r\n item: PortalAIPApplicationModel;\r\n buttonStyle?: \"standard\" | \"pill\" | null;\r\n className?: string;\r\n}\r\n\r\ninterface IValuationState {\r\n downloadError: boolean;\r\n}\r\n\r\nexport class ValuationDownloadButton extends UserContextComponent<IValuationProps, IValuationState> {\r\n constructor(props: IValuationProps) {\r\n super(props);\r\n this.downloadValuation = this.downloadValuation.bind(this);\r\n this.state = {downloadError: false};\r\n }\r\n\r\n downloadValuation() {\r\n const context = this.getContext();\r\n\r\n axios({\r\n url: `/Mortgages/DownloadValuationByAIP?applicationId=${this.props.item.aipApplicationId}&mortgageId=${context.mortgage?.mortgageId}`,\r\n method: \"GET\",\r\n responseType: \"blob\"\r\n }).then(response => {\r\n if (response.data.size === 0) {\r\n this.setState({downloadError: true});\r\n } else {\r\n const url = window.URL.createObjectURL(new Blob([response.data]));\r\n const link = document.createElement(\"a\");\r\n link.href = url;\r\n link.setAttribute(\"download\", 'Valuation.pdf');\r\n document.body.appendChild(link);\r\n link.click();\r\n if (link.parentNode !== null)\r\n link.parentNode.removeChild(link);\r\n }\r\n });\r\n }\r\n\r\n render() {\r\n\r\n return (\r\n <DownloadDocumentButton \r\n className={this.props.className}\r\n title={\"Valuation\"} \r\n expiry={this.props.item.valuationExpiryDate}\r\n download={this.downloadValuation}\r\n buttonStyle={this.props.buttonStyle}\r\n showError={this.state.downloadError} />\r\n );\r\n }\r\n}","import axios from \"axios\";\r\nimport { PortalAIPApplicationModel } from \"../models/PortalAIPApplication\";\r\nimport { UserContextComponent } from \"./UserContextComponent\";\r\nimport { DownloadDocumentButton } from \"./DownloadDocumentButton\";\r\n\r\nexport interface IAIPProps {\r\n item: PortalAIPApplicationModel;\r\n buttonStyle?: \"standard\" | \"pill\" | null;\r\n}\r\n\r\ninterface IAIPState {\r\n downloadError: boolean;\r\n}\r\n\r\nexport class AIPDownloadButton extends UserContextComponent<IAIPProps, IAIPState> {\r\n constructor(props: IAIPProps) {\r\n super(props);\r\n this.downloadDocument = this.downloadDocument.bind(this);\r\n this.state = {downloadError: false};\r\n }\r\n\r\n downloadDocument() {\r\n const context = this.getContext();\r\n\r\n axios({\r\n url: `/AIPApplications/DownloadDocument?applicationId=${this.props.item.aipApplicationId}&mortgageId=${context.mortgage?.mortgageId}`,\r\n method: \"GET\",\r\n responseType: \"blob\"\r\n }).then(response => {\r\n if (response.data.size === 0) {\r\n this.setState({downloadError: true});\r\n } else {\r\n const url = window.URL.createObjectURL(new Blob([response.data]));\r\n const link = document.createElement(\"a\");\r\n link.href = url;\r\n link.setAttribute(\"download\", 'document.pdf');\r\n document.body.appendChild(link);\r\n link.click();\r\n if (link.parentNode != null)\r\n link.parentNode.removeChild(link);\r\n }\r\n });\r\n}\r\n\r\n render() {\r\n\r\n return (\r\n <DownloadDocumentButton \r\n title={\"AIP doc\"} \r\n expiry={this.props.item.valuationExpiryDate}\r\n download={this.downloadDocument}\r\n buttonStyle={this.props.buttonStyle}\r\n showError={this.state.downloadError} />\r\n );\r\n }\r\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nimport PropTypes from \"prop-types\";\nimport React from \"react\";\n\nvar Masonry = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Masonry, _React$Component);\n\n function Masonry() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = Masonry.prototype;\n\n _proto.getColumns = function getColumns() {\n var _this$props = this.props,\n children = _this$props.children,\n columnsCount = _this$props.columnsCount;\n var columns = Array.from({\n length: columnsCount\n }, function () {\n return [];\n });\n React.Children.forEach(children, function (child, index) {\n if (child && React.isValidElement(child)) {\n columns[index % columnsCount].push(child);\n }\n });\n return columns;\n };\n\n _proto.renderColumns = function renderColumns() {\n var gutter = this.props.gutter;\n return this.getColumns().map(function (column, i) {\n return /*#__PURE__*/React.createElement(\"div\", {\n key: i,\n style: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flex-start\",\n alignContent: \"stretch\",\n flex: 1,\n width: 0,\n gap: gutter\n }\n }, column.map(function (item) {\n return item;\n }));\n });\n };\n\n _proto.render = function render() {\n var _this$props2 = this.props,\n gutter = _this$props2.gutter,\n className = _this$props2.className,\n style = _this$props2.style;\n return /*#__PURE__*/React.createElement(\"div\", {\n style: _extends({\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"center\",\n alignContent: \"stretch\",\n boxSizing: \"border-box\",\n width: \"100%\",\n gap: gutter\n }, style),\n className: className\n }, this.renderColumns());\n };\n\n return Masonry;\n}(React.Component);\n\nMasonry.propTypes = process.env.NODE_ENV !== \"production\" ? {\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,\n columnsCount: PropTypes.number,\n gutter: PropTypes.string,\n className: PropTypes.string,\n style: PropTypes.object\n} : {};\nMasonry.defaultProps = {\n columnsCount: 3,\n gutter: \"0\",\n className: null,\n style: {}\n};\nexport default Masonry;","import PropTypes from \"prop-types\";\nimport React, { useCallback, useLayoutEffect, useEffect, useMemo, useState } from \"react\";\nvar DEFAULT_COLUMNS_COUNT = 1;\nvar useIsomorphicLayoutEffect = typeof window !== \"undefined\" ? useLayoutEffect : useEffect;\n\nvar useHasMounted = function useHasMounted() {\n var _useState = useState(false),\n hasMounted = _useState[0],\n setHasMounted = _useState[1];\n\n useIsomorphicLayoutEffect(function () {\n setHasMounted(true);\n }, []);\n return hasMounted;\n};\n\nvar useWindowWidth = function useWindowWidth() {\n var hasMounted = useHasMounted();\n\n var _useState2 = useState(0),\n width = _useState2[0],\n setWidth = _useState2[1];\n\n var handleResize = useCallback(function () {\n if (!hasMounted) return;\n setWidth(window.innerWidth);\n }, [hasMounted]);\n useIsomorphicLayoutEffect(function () {\n if (hasMounted) {\n window.addEventListener(\"resize\", handleResize);\n handleResize();\n return function () {\n return window.removeEventListener(\"resize\", handleResize);\n };\n }\n }, [hasMounted, handleResize]);\n return width;\n};\n\nvar MasonryResponsive = function MasonryResponsive(_ref) {\n var _ref$columnsCountBrea = _ref.columnsCountBreakPoints,\n columnsCountBreakPoints = _ref$columnsCountBrea === void 0 ? {\n 350: 1,\n 750: 2,\n 900: 3\n } : _ref$columnsCountBrea,\n children = _ref.children,\n _ref$className = _ref.className,\n className = _ref$className === void 0 ? null : _ref$className,\n _ref$style = _ref.style,\n style = _ref$style === void 0 ? null : _ref$style;\n var windowWidth = useWindowWidth();\n var columnsCount = useMemo(function () {\n var breakPoints = Object.keys(columnsCountBreakPoints).sort(function (a, b) {\n return a - b;\n });\n var count = breakPoints.length > 0 ? columnsCountBreakPoints[breakPoints[0]] : DEFAULT_COLUMNS_COUNT;\n breakPoints.forEach(function (breakPoint) {\n if (breakPoint < windowWidth) {\n count = columnsCountBreakPoints[breakPoint];\n }\n });\n return count;\n }, [windowWidth, columnsCountBreakPoints]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: className,\n style: style\n }, React.Children.map(children, function (child, index) {\n return React.cloneElement(child, {\n key: index,\n columnsCount: columnsCount\n });\n }));\n};\n\nMasonryResponsive.propTypes = process.env.NODE_ENV !== \"production\" ? {\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,\n columnsCountBreakPoints: PropTypes.object,\n className: PropTypes.string,\n style: PropTypes.object\n} : {};\nexport default MasonryResponsive;","import Masonry from \"./Masonry\";\nimport ResponsiveMasonry from \"./ResponsiveMasonry\";\nexport default Masonry;\nexport { ResponsiveMasonry };","import React from 'react';\r\nimport './Documents.css';\r\nimport { MortgageType, YesNoBlank } from '../models/PortalMortgageModel';\r\nimport { Navigate } from 'react-router-dom';\r\nimport { UserContextComponent } from '../components/UserContextComponent';\r\nimport axios from 'axios';\r\nimport { Row, Col, Accordion, Card, Container, Modal, Stack } from 'react-bootstrap';\r\nimport { PortalPage } from '../components/PortalPage';\r\nimport UserContextState from '../components/UserContext';\r\nimport { PortalAIPApplicationModel, AIPStatus, AIPDDLStatus, AIPType } from '../models/PortalAIPApplication';\r\nimport { PortalClarificationModel } from '../models/PortalClarificationModel';\r\nimport \"./AIPApplication.css\";\r\nimport { MortgageDocumentStatusCode, PortalDocumentType, PortalMortgageDocumentModel } from '../models/PortalMortgageDocumentModel';\r\nimport { IFileItem } from '../components/DocumentManager';\r\nimport { DocumentPill } from '../components/Pills/DocumentPill';\r\nimport { PortalSpecialConditionsModel } from '../models/PortalSpecialConditionsModel';\r\nimport { ValuationDownloadButton } from '../components/ValuationDownloadButton';\r\nimport { AIPDownloadButton } from '../components/AIPDownloadButton';\r\nimport * as Icons from \"react-bootstrap\";\r\nimport Masonry, { ResponsiveMasonry } from \"react-responsive-masonry\";\r\nimport { AppointSolicitorTile } from '../components/Tiles/AppointSolicitorTile';\r\nimport { LifeCoverTile } from '../components/Tiles/LifeCoverTile';\r\n\r\ninterface IAIPApplicationState {\r\n loading: boolean;\r\n applications: PortalAIPApplicationModel[];\r\n redirectToPropertyPage: boolean;\r\n redirectToCompletions: boolean;\r\n documents: PortalMortgageDocumentModel[];\r\n files: IFileItem[];\r\n cta1Collapsed: boolean;\r\n cta2Collapsed: boolean;\r\n cta3Collapsed: boolean;\r\n chosenLender?: string;\r\n showSaleAgreedModal: boolean;\r\n savingSaleAgreed: boolean;\r\n\r\n}\r\n\r\nexport class AIPApplication extends UserContextComponent<any, IAIPApplicationState> {\r\n constructor(props: any) {\r\n super(props);\r\n this.state = { loading: true, savingSaleAgreed: false, showSaleAgreedModal: false, applications: [], redirectToPropertyPage: false, redirectToCompletions: false, documents: [], files: [], cta1Collapsed: true, cta2Collapsed: true, cta3Collapsed: true };\r\n\r\n this.onSpecialConditionsDeleteComplete = this.onSpecialConditionsDeleteComplete.bind(this);\r\n this.onSpecialConditionsUploadComplete = this.onSpecialConditionsUploadComplete.bind(this);\r\n this.confirmSpecialConditionsUpload = this.confirmSpecialConditionsUpload.bind(this);\r\n this.foundMyNewHome = this.foundMyNewHome.bind(this);\r\n\r\n this.onDocumentDone = this.onDocumentDone.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n this.populateData();\r\n }\r\n\r\n getSpecialConditionsById(id: string): any {\r\n for (let i = 0; i < this.state.applications.length; i++) {\r\n let app = this.state.applications[i];\r\n let condition = app.specialConditions.find((c: any) => {\r\n return c.specialConditionsId === id;\r\n });\r\n if (condition != null) {\r\n return condition;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n onSpecialConditionsUploadComplete(url: string, id: string) {\r\n let condition = this.getSpecialConditionsById(id);\r\n if (condition != null) {\r\n condition.uploadComplete = true;\r\n condition.url = url;\r\n }\r\n this.setState({ applications: this.state.applications });\r\n }\r\n\r\n confirmSpecialConditionsUpload(id: string): void {\r\n const context = this.getContext();\r\n\r\n let condition = this.getSpecialConditionsById(id);\r\n if (condition != null) {\r\n axios.post('/SpecialConditions/CompleteSpecialConditions', null, { params: { specialConditionsId: id, url: condition.url, mortgageId: context.mortgage?.mortgageId } })\r\n .then(response => {\r\n for (let i = 0; i < this.state.applications.length; i++) {\r\n let app = this.state.applications[i];\r\n let condition = app.specialConditions.find((c: any) => {\r\n return c.specialConditionsId === id;\r\n });\r\n if (condition != null) {\r\n condition.uploaded = true;\r\n }\r\n }\r\n this.setState({ applications: this.state.applications });\r\n });\r\n }\r\n }\r\n\r\n onSpecialConditionsDeleteComplete(id: string) {\r\n let condition = this.getSpecialConditionsById(id);\r\n if (condition != null) {\r\n condition.uploadComplete = false;\r\n }\r\n this.setState({ applications: this.state.applications });\r\n }\r\n\r\n foundMyNewHome(): void {\r\n const context = this.context as UserContextState;\r\n axios.post('/Mortgages/SetSaleAgreed', null, { params: { mortgageId: context.contact?.mortgageId } })\r\n .then(response => {\r\n this.setState({ redirectToPropertyPage: true });\r\n });\r\n }\r\n\r\n getStatusClass(app: PortalAIPApplicationModel) {\r\n if (app.status === AIPStatus.Submitted || (app.status === AIPStatus.Clarifications && app.clarifications.length === 0))\r\n return \"box-sage\";\r\n if (app.status === AIPStatus.Approved)\r\n return \"box-chartreuse\";\r\n if (app.status === AIPStatus.Rejected )\r\n return \"box-error\";\r\n if (app.status === AIPStatus.Clarifications && app.clarifications.length > 0) {\r\n if (app.clarifications.filter(x => !x.uploaded).length > 0)\r\n return \"box-error\";\r\n }\r\n if (app.status === AIPStatus.Expired)\r\n return \"box-error\";\r\n\r\n return \"box-teal-outline\";\r\n }\r\n\r\n private getClarificationById(id: string): any {\r\n for (let i = 0; i < this.state.applications.length; i++) {\r\n let app = this.state.applications[i];\r\n let clarification = app.clarifications.find((c: any) => {\r\n return c.clarificationId === id;\r\n });\r\n if (clarification != null) {\r\n return clarification;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n onUploadComplete(url: string, clarificationId: string) {\r\n let clarification = this.getClarificationById(clarificationId);\r\n if (clarification != null) {\r\n clarification.uploadComplete = true;\r\n clarification.url = url;\r\n }\r\n this.setState({ applications: this.state.applications });\r\n }\r\n\r\n confirmUpload(id: string): void {\r\n const context = this.getContext();\r\n let condition = this.getClarificationById(id);\r\n if (condition != null) {\r\n axios.post('/AIPApplications/CompleteClarification', null, { params: { clarificationId: id, url: condition.url, mortgageId: context.mortgage?.mortgageId } })\r\n .then(response => {\r\n for (let i = 0; i < this.state.applications.length; i++) {\r\n let app = this.state.applications[i];\r\n let clarification = app.clarifications.find((c: any) => {\r\n return c.clarificationId === id;\r\n });\r\n if (clarification != null) {\r\n clarification.uploaded = true;\r\n }\r\n }\r\n this.setState({ applications: this.state.applications });\r\n });\r\n }\r\n }\r\n\r\n onDeleteComplete(id: string) {\r\n let clarification = this.getClarificationById(id);\r\n if (clarification != null) {\r\n clarification.uploadComplete = false;\r\n }\r\n this.setState({ applications: this.state.applications });\r\n }\r\n\r\n onDocumentDone(mortgageDocumentId: string, status: MortgageDocumentStatusCode, clarificationId: string) {\r\n this.confirmUpload(clarificationId);\r\n\r\n let docs = this.state.documents;\r\n var doc: PortalMortgageDocumentModel | undefined = docs.find(i => i.mortgageDocumentId === mortgageDocumentId)\r\n if (doc) {\r\n doc.statusReason = status;\r\n this.setState({ documents: docs, applications: this.state.applications });\r\n } else {\r\n this.setState({ applications: this.state.applications });\r\n }\r\n }\r\n\r\n\r\n proceedWithLender(item: PortalAIPApplicationModel) {\r\n let context = this.getContext();\r\n axios.post('/Mortgages/ProceedWithLender', null, { params: { mortgageId: context.contact?.mortgageId, lender: item.lenderChoice, applicationId: item.aipApplicationId } })\r\n .then(response => {\r\n context.mortgage!.chosenLender = item.lenderChoice;\r\n context.mortgage!.chosenLenderFullName = item.lender;\r\n item.aipDdlStatus = AIPDDLStatus.Proceeding;\r\n this.setState({ chosenLender: item.lenderChoice, redirectToCompletions: true });\r\n });\r\n }\r\n\r\n renderApproved(item: PortalAIPApplicationModel) {\r\n let context = this.getContext();\r\n return (\r\n <div>\r\n <p className=\"pb-0 mb-0\">{item.amount}</p>\r\n <p className=\"aip-status aip-status-approved\"><strong>GRANTED</strong></p>\r\n <i className=\"fas fa-circle-check aip-approved-text-lg\"/>\r\n <p className=\"aip-status aip-status-approved\"><strong>Approval in Principle</strong></p>\r\n {item.expirationDate &&\r\n <p className=\"tight\">Valid until {item.expirationDate}</p>\r\n }\r\n\r\n {item.isFileAvailable &&\r\n <AIPDownloadButton item={item} buttonStyle=\"standard\" />\r\n }\r\n {item.isValuationAvailable &&\r\n <ValuationDownloadButton item={item} buttonStyle=\"standard\" />\r\n }\r\n {item.specialConditions !== null && item.specialConditions.length > 0 &&\r\n <div>\r\n <br />\r\n <Accordion>\r\n <Accordion.Item eventKey='1'>\r\n <Accordion.Header className='small'>\r\n <div className='text-center' style={{ width: '100%' }}><strong>{item.specialConditions.length} loan offer condition{item.specialConditions.length > 1 ? 's' : ''}</strong></div>\r\n </Accordion.Header>\r\n <Accordion.Body className='special-conditions'>\r\n {item.specialConditions !== null && item.specialConditions.map((sc: PortalSpecialConditionsModel, idx: number) => (\r\n // <li><div key={\"aip-condition\" + sc.specialConditionsId} className='aip-special-condition' style={{ display: \"inline-block\", width: '100%' }} aria-label={item.lender + \" - \" + sc.name}>{sc.name}</div></li>\r\n <li key={\"aip-condition\" + sc.specialConditionsId} className='aip-special-condition' aria-label={item.lender + \" - \" + sc.name}>{sc.name}</li>\r\n ))\r\n }\r\n </Accordion.Body>\r\n </Accordion.Item>\r\n </Accordion>\r\n </div>\r\n }\r\n <button className='btn btn-standard btn-proceed' onClick={() => window.Intercom('showNewMessage')}>Speak to my Advisor</button>\r\n </div>\r\n );\r\n }\r\n\r\n renderClarifications(item: PortalAIPApplicationModel) {\r\n let context = this.getContext();\r\n return (\r\n <>\r\n <p className=\"pb-0 mb-0\">{item.amount}</p>\r\n <p className=\"pt-0 mt-0\">Submitted on <span>{item.submissionDate}</span></p>\r\n {item.isValuationAvailable &&\r\n <>\r\n <ValuationDownloadButton item={item} buttonStyle=\"standard\" />\r\n <br />\r\n </>\r\n }\r\n {item.clarifications.filter(x => !x.uploaded).length > 0 &&\r\n <>\r\n <i className=\"fa-solid fa-triangle-exclamation pill-big aip-clarifications-text-lg\"></i>\r\n <p className=\"aip-status aip-clarifications-text\">Additional docs required</p>\r\n <p className=\"tight\">Please provide the following:</p>\r\n <br />\r\n </>\r\n }\r\n {item.clarifications.filter(x => !x.uploaded).length === 0 &&\r\n <>\r\n <p className=\"aip-status aip-submitted-text\">Additional docs required</p>\r\n <p className=\"tight\">Please provide the following:</p>\r\n <br />\r\n </>\r\n }\r\n {item.clarifications !== null && item.clarifications.map((sc: PortalClarificationModel, idx: number) => (\r\n <div key={\"pill-paragraph\" + sc.mortgageDocumentId} style={{ marginTop: '10px' }}>\r\n <DocumentPill\r\n key={\"pill-\" + sc.mortgageDocumentId}\r\n status={sc.uploaded ? MortgageDocumentStatusCode.Uploaded : MortgageDocumentStatusCode.Active}\r\n category={\"AIP\"}\r\n name={sc.title}\r\n portalName={\"\"}\r\n helpText={sc.description}\r\n files={this.state.files.filter(x => x.mortgageDocumentId === sc.mortgageDocumentId)}\r\n contactId={context.contact?.contactId!}\r\n mortgageDocumentId={sc.mortgageDocumentId}\r\n onDone={(mortgageDocumentId: string, status: MortgageDocumentStatusCode) => { this.onDocumentDone(mortgageDocumentId, status, sc.clarificationId); }}\r\n mortgageId={context.contact?.mortgageId}\r\n documentType={PortalDocumentType.Document}\r\n metFaceToFace={false}\r\n onUploadComplete={(url: any) => { this.onUploadComplete(url, sc.clarificationId); }}\r\n comments={\"\"}\r\n />\r\n </div>\r\n ))}\r\n </>);\r\n }\r\n\r\n renderSubmitted(item: PortalAIPApplicationModel) {\r\n // Commented out the response date as per #854 - at the time they weren't meeting any SLAs so this was causing problems\r\n return (\r\n <>\r\n <p className=\"pb-0 mb-0\">{item.amount}</p>\r\n <p className=\"pt-0 mt-0\">Submitted on <span>{item.submissionDate}</span></p>\r\n {item.isValuationAvailable &&\r\n <>\r\n <ValuationDownloadButton item={item} buttonStyle=\"standard\" />\r\n <br />\r\n </>\r\n }\r\n <i className=\"far fa-clock aip-submitted-text-lg\"></i>\r\n <p className=\"aip-status\">Awaiting response</p>\r\n {/* <p className='tight'>Est: {item.estResponseDate}</p> */}\r\n </>\r\n );\r\n }\r\n\r\n renderNew(item: PortalAIPApplicationModel) {\r\n return (\r\n <>\r\n <p>For <span>{item.amount}</span></p>\r\n <p className=\"aip-status\">Preparing submission</p>\r\n {item.isValuationAvailable &&\r\n <ValuationDownloadButton item={item} buttonStyle=\"standard\" />\r\n }\r\n </>\r\n );\r\n }\r\n\r\n renderExpired(item: PortalAIPApplicationModel) {\r\n return (\r\n <>\r\n <p>For <span>{item.amount}</span> Submitted on: <span>{item.submissionDate}</span></p>\r\n <i className=\"fa-solid fa-triangle-exclamation pill-big aip-clarifications-text-lg\"></i>\r\n <p className=\"aip-status aip-clarifications-text\">EXPIRED</p>\r\n <p className='aip-status aip-clarifications-text'><em>Expired on {item.expirationDate}</em></p>\r\n </>\r\n );\r\n }\r\n\r\n renderRejected(item: PortalAIPApplicationModel) {\r\n return (\r\n <>\r\n <p>For <span>{item.amount}</span> Submitted on: <span>{item.submissionDate}</span></p>\r\n <i className=\"fa-solid fa-triangle-exclamation pill-big aip-clarifications-text-lg\"></i>\r\n <p className=\"aip-status aip-clarifications-text\">REJECTED</p>\r\n <p className='aip-status aip-clarifications-text'><em>Rejected on {item.responseDate}</em></p>\r\n </>\r\n );\r\n }\r\n\r\n renderFooter() {\r\n let context = this.getContext();\r\n\r\n if (context.mortgage === null)\r\n return \"\";\r\n\r\n if (context.mortgage.type === MortgageType.PurchasingaNewHome) {\r\n\r\n } else {\r\n\r\n }\r\n\r\n return (\r\n <Row style={{ marginTop: '20px', height: '100%', bottom: 0 }}>\r\n <Col className=\"col-12\">\r\n <Row>\r\n <span className=\"subtext pt-3\">{context.mortgage.primaryApplicant.firstName}, to <strong>get ahead of the process</strong> here are some additional items you might now want to consider</span>\r\n </Row>\r\n </Col>\r\n </Row>\r\n );\r\n }\r\n\r\n private confirmedTitleDeeds() {\r\n let context = this.getContext();\r\n axios.post('/Mortgages/ConfirmTitleDeeds', null, { params: { mortgageId: context.contact?.mortgageId } })\r\n .then(response => {\r\n if (context.mortgage) {\r\n this.setState({ loading: true });\r\n context.reloadMortgage();\r\n this.setState({ loading: false });\r\n }\r\n });\r\n }\r\n\r\n private loadFiles(): void {\r\n const context = this.getContext();\r\n let url = `/sp/GetFiles?mortgageId=${context.mortgage?.mortgageId}`;\r\n axios.get(url)\r\n .then((response) => {\r\n let files = response.data;\r\n this.setState({ loading: false, files: files });\r\n })\r\n .catch((error) => {\r\n this.setState({ loading: false });\r\n });\r\n }\r\n\r\n async populateData() {\r\n const context = this.context as UserContextState;\r\n if (context.contact === null)\r\n return;\r\n\r\n axios.get(\"/AIPApplications/GetAIPApplicationsByMortgageId?mortgageId=\" + context.contact.mortgageId)\r\n .then((response) => {\r\n let aips: PortalAIPApplicationModel[] = response.data;\r\n aips.forEach(e => {\r\n e.clarifications = e.clarifications.filter(c => !c.completed);\r\n });\r\n this.setState({ applications: aips.filter(a => a.aipDdlStatus !== AIPDDLStatus.Withdrawn).sort((a, b) => a.order > b.order ? 1 : -1) });\r\n this.loadFiles();\r\n });\r\n }\r\n render() {\r\n let context = this.getContext();\r\n\r\n if (this.state.loading || context.mortgage === null)\r\n return (<><p><em>Loading...</em></p></>);\r\n\r\n if (this.state.redirectToPropertyPage) {\r\n return <Navigate to=\"/property\" />\r\n }\r\n\r\n if (this.state.redirectToCompletions) {\r\n return <Navigate to=\"/completion\" />\r\n }\r\n\r\n let names = this.getApplicantNames();\r\n let aipStatus = null;\r\n let awaitingOthers = false;\r\n let awaitingOtherDocs = false;\r\n var title = \"Awaiting mortgage approval\";\r\n var description = `Hi ${names}, we’ve submitted your application to the following ${this.state.applications.length > 1 ? 'lenders' : 'lender'}.`;\r\n var subtitle = <>Your mortgage advisor is regularly reviewing status and chasing to get approval for you.</>;\r\n\r\n // If we have active full AIPs hide the househunter aips\r\n var applicationsToDisplay = this.state.applications.filter(app => app.type === AIPType.FullApplication);\r\n var activeFullApplications = this.state.applications.filter(app => \r\n app.type === AIPType.FullApplication && \r\n app.aipDdlStatus !== AIPDDLStatus.Expired &&\r\n app.aipDdlStatus !== AIPDDLStatus.New &&\r\n app.aipDdlStatus !== AIPDDLStatus.RejectedByLender &&\r\n app.aipDdlStatus !== AIPDDLStatus.Withdrawn\r\n );\r\n if (!activeFullApplications || activeFullApplications.length === 0 || !applicationsToDisplay || applicationsToDisplay.length === 0) {\r\n applicationsToDisplay = this.state.applications;\r\n }\r\n \r\n applicationsToDisplay = applicationsToDisplay.filter(a => a.aipDdlStatus !== AIPDDLStatus.RejectedByLender);\r\n \r\n let shortestSLA = 1000;\r\n for (let i = 0; i < applicationsToDisplay.length; i++) {\r\n let app = applicationsToDisplay[i];\r\n if (app.sla != null && app.sla < shortestSLA) {\r\n shortestSLA = app.sla;\r\n }\r\n if (app.status === AIPStatus.Approved) {\r\n aipStatus = AIPStatus.Approved;\r\n } else if (app.status === AIPStatus.Clarifications) {\r\n awaitingOtherDocs = true;\r\n if (aipStatus !== AIPStatus.Approved) {\r\n aipStatus = AIPStatus.Clarifications;\r\n }\r\n } else if (app.status === AIPStatus.Submitted) {\r\n awaitingOthers = true;\r\n if (aipStatus === null) {\r\n aipStatus = AIPStatus.Submitted;\r\n }\r\n }\r\n }\r\n\r\n if (aipStatus === AIPStatus.Clarifications) {\r\n if (this.state.applications.length > 1) {\r\n description = `Hi ${names}, nearly there! A lender has requested additional documents, please upload below.`;\r\n subtitle = <>We are still working on getting confirmation from other lenders.</>;\r\n } else {\r\n description = `Hi ${names}, nearly there! The lender has requested additional documents, please upload below.`;\r\n subtitle = <></>;\r\n }\r\n }\r\n if (aipStatus === AIPStatus.Approved) {\r\n title = \"You have mortgage approval!\";\r\n description = `Congratulations ${names}. View your AIP details and document below.`;\r\n if (awaitingOtherDocs) {\r\n subtitle = <>Another lender has requested additional docs if you'd like approval from them too.</>;\r\n } else if (awaitingOthers) {\r\n subtitle = <>We are still working on getting confirmation from other lenders.</>;\r\n } else {\r\n subtitle = <></>;\r\n }\r\n }\r\n if (aipStatus === null) {\r\n title = \"Preparing Submissions\";\r\n description = `Hi ${names}, we’re preparing your application for the following ${this.state.applications.length > 1 ? 'lenders' : 'lender'}.`;\r\n subtitle = <></>;\r\n }\r\n \r\n // Lets build up the array of divs for the masonry grid to display\r\n var items:any[] = applicationsToDisplay.map((item) => (\r\n \r\n <div key={item.aipApplicationId} className={\"boxty m-3-notmobile tall \" + this.getStatusClass(item)}>\r\n {item.lenderLogo\r\n ? <img className=\"mb-2\" style={{width: \"100%\"}} src={item.lenderLogo}></img>\r\n : <h1>{item.lender}</h1>\r\n }\r\n {item.status === AIPStatus.New &&\r\n this.renderNew(item)\r\n }\r\n {item.status === AIPStatus.Expired &&\r\n this.renderExpired(item)\r\n }\r\n {item.status === AIPStatus.Rejected &&\r\n this.renderRejected(item)\r\n }\r\n {(item.status === AIPStatus.Submitted || (item.status === AIPStatus.Clarifications && item.clarifications.length === 0)) &&\r\n this.renderSubmitted(item)\r\n }\r\n {item.status === AIPStatus.Approved &&\r\n this.renderApproved(item)\r\n }\r\n {item.status === AIPStatus.Clarifications && item.clarifications.length > 0 &&\r\n this.renderClarifications(item)\r\n }\r\n </div>\r\n\r\n ));\r\n\r\n if (!context.mortgage!.solicitor) {\r\n items.push(<AppointSolicitorTile />);\r\n }\r\n\r\n if (!context.mortgage.hasInsuranceQuote) {\r\n items.push(<LifeCoverTile />);\r\n }\r\n\r\n return (\r\n <>\r\n <PortalPage className=\"bump-right-sm\" title={title} description={description} subtitle={subtitle}>\r\n <Container>\r\n {!context.mortgage!.saleAgreed && context.mortgage?.type === MortgageType.PurchasingaNewHome &&\r\n <>\r\n <Row className='mb-3'>\r\n <Col></Col>\r\n <Col>\r\n <button className='btn bigger btn-dark' onClick={() => { this.setState({ showSaleAgreedModal: true }) }}>Are you Sale Agreed?</button>\r\n </Col>\r\n <Col></Col>\r\n </Row>\r\n <br />\r\n </>\r\n }\r\n <div className=\"App\">\r\n {items.length < 3\r\n ?\r\n <Row style={{justifyContent: 'center'}}>\r\n {items.map((item, idx) => <Col lg={4} key={\"aip-item-\"+idx}>{item}</Col>)}\r\n </Row>\r\n :\r\n <ResponsiveMasonry columnsCountBreakPoints={{ 900: 1, 1024: 2, 1280: 3 }}>\r\n <Masonry>{items}</Masonry>\r\n </ResponsiveMasonry>\r\n }\r\n </div>\r\n </Container>\r\n </PortalPage>\r\n <Modal centered size=\"lg\" show={this.state.showSaleAgreedModal} onHide={() => {this.setState({showSaleAgreedModal: false})}}>\r\n <Modal.Header closeButton>\r\n </Modal.Header>\r\n <Modal.Body>\r\n <div className=\"text-center mb-5 ps-5 pe-5\">\r\n <h1 className=\"impact\">Are you sale agreed?</h1>\r\n <p className=\"\">Let us know when you have gone sale agreed so that we can begin the process of getting your letter of offer from your chosen lender. Are you sale agreed?</p>\r\n </div>\r\n <Stack direction=\"horizontal\" gap={3} className=\"text-center justify-center\">\r\n <button className=\"btn medium btn-secondary\" onClick={() => {this.setState({savingSaleAgreed: true}); this.foundMyNewHome();}}>{this.state.savingSaleAgreed ? <Icons.Spinner size=\"sm\" animation=\"border\" role=\"status\" /> : 'Yes!'}</button>\r\n <button className=\"btn medium btn-light\" onClick={() => {this.setState({showSaleAgreedModal: false})}}>No</button>\r\n </Stack>\r\n </Modal.Body>\r\n <Modal.Footer>\r\n </Modal.Footer>\r\n </Modal>\r\n </>\r\n );\r\n }\r\n}\r\n","const _excluded = [\"as\", \"onSelect\", \"activeKey\", \"role\", \"onKeyDown\"];\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport qsa from 'dom-helpers/querySelectorAll';\nimport * as React from 'react';\nimport { useContext, useEffect, useRef } from 'react';\nimport useForceUpdate from '@restart/hooks/useForceUpdate';\nimport useMergedRefs from '@restart/hooks/useMergedRefs';\nimport NavContext from './NavContext';\nimport SelectableContext, { makeEventKey } from './SelectableContext';\nimport TabContext from './TabContext';\nimport { dataAttr, dataProp } from './DataKey';\nimport NavItem from './NavItem';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nconst noop = () => {};\n\nconst EVENT_KEY_ATTR = dataAttr('event-key');\nconst Nav = /*#__PURE__*/React.forwardRef((_ref, ref) => {\n let {\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n onSelect,\n activeKey,\n role,\n onKeyDown\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n // A ref and forceUpdate for refocus, b/c we only want to trigger when needed\n // and don't want to reset the set in the effect\n const forceUpdate = useForceUpdate();\n const needsRefocusRef = useRef(false);\n const parentOnSelect = useContext(SelectableContext);\n const tabContext = useContext(TabContext);\n let getControlledId, getControllerId;\n\n if (tabContext) {\n role = role || 'tablist';\n activeKey = tabContext.activeKey; // TODO: do we need to duplicate these?\n\n getControlledId = tabContext.getControlledId;\n getControllerId = tabContext.getControllerId;\n }\n\n const listNode = useRef(null);\n\n const getNextActiveTab = offset => {\n const currentListNode = listNode.current;\n if (!currentListNode) return null;\n const items = qsa(currentListNode, `[${EVENT_KEY_ATTR}]:not([aria-disabled=true])`);\n const activeChild = currentListNode.querySelector('[aria-selected=true]');\n if (!activeChild || activeChild !== document.activeElement) return null;\n const index = items.indexOf(activeChild);\n if (index === -1) return null;\n let nextIndex = index + offset;\n if (nextIndex >= items.length) nextIndex = 0;\n if (nextIndex < 0) nextIndex = items.length - 1;\n return items[nextIndex];\n };\n\n const handleSelect = (key, event) => {\n if (key == null) return;\n onSelect == null ? void 0 : onSelect(key, event);\n parentOnSelect == null ? void 0 : parentOnSelect(key, event);\n };\n\n const handleKeyDown = event => {\n onKeyDown == null ? void 0 : onKeyDown(event);\n\n if (!tabContext) {\n return;\n }\n\n let nextActiveChild;\n\n switch (event.key) {\n case 'ArrowLeft':\n case 'ArrowUp':\n nextActiveChild = getNextActiveTab(-1);\n break;\n\n case 'ArrowRight':\n case 'ArrowDown':\n nextActiveChild = getNextActiveTab(1);\n break;\n\n default:\n return;\n }\n\n if (!nextActiveChild) return;\n event.preventDefault();\n handleSelect(nextActiveChild.dataset[dataProp('EventKey')] || null, event);\n needsRefocusRef.current = true;\n forceUpdate();\n };\n\n useEffect(() => {\n if (listNode.current && needsRefocusRef.current) {\n const activeChild = listNode.current.querySelector(`[${EVENT_KEY_ATTR}][aria-selected=true]`);\n activeChild == null ? void 0 : activeChild.focus();\n }\n\n needsRefocusRef.current = false;\n });\n const mergedRef = useMergedRefs(ref, listNode);\n return /*#__PURE__*/_jsx(SelectableContext.Provider, {\n value: handleSelect,\n children: /*#__PURE__*/_jsx(NavContext.Provider, {\n value: {\n role,\n // used by NavLink to determine it's role\n activeKey: makeEventKey(activeKey),\n getControlledId: getControlledId || noop,\n getControllerId: getControllerId || noop\n },\n children: /*#__PURE__*/_jsx(Component, Object.assign({}, props, {\n onKeyDown: handleKeyDown,\n ref: mergedRef,\n role: role\n }))\n })\n });\n});\nNav.displayName = 'Nav';\nexport default Object.assign(Nav, {\n Item: NavItem\n});","import classNames from 'classnames';\nimport all from 'prop-types-extra/lib/all';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport { useUncontrolled } from 'uncontrollable';\nimport BaseNav from '@restart/ui/Nav';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport NavbarContext from './NavbarContext';\nimport CardHeaderContext from './CardHeaderContext';\nimport NavItem from './NavItem';\nimport NavLink from './NavLink';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultProps = {\n justify: false,\n fill: false\n};\nconst Nav = /*#__PURE__*/React.forwardRef((uncontrolledProps, ref) => {\n const {\n as = 'div',\n bsPrefix: initialBsPrefix,\n variant,\n fill,\n justify,\n navbar,\n navbarScroll,\n className,\n activeKey,\n ...props\n } = useUncontrolled(uncontrolledProps, {\n activeKey: 'onSelect'\n });\n const bsPrefix = useBootstrapPrefix(initialBsPrefix, 'nav');\n let navbarBsPrefix;\n let cardHeaderBsPrefix;\n let isNavbar = false;\n const navbarContext = useContext(NavbarContext);\n const cardHeaderContext = useContext(CardHeaderContext);\n\n if (navbarContext) {\n navbarBsPrefix = navbarContext.bsPrefix;\n isNavbar = navbar == null ? true : navbar;\n } else if (cardHeaderContext) {\n ({\n cardHeaderBsPrefix\n } = cardHeaderContext);\n }\n\n return /*#__PURE__*/_jsx(BaseNav, {\n as: as,\n ref: ref,\n activeKey: activeKey,\n className: classNames(className, {\n [bsPrefix]: !isNavbar,\n [`${navbarBsPrefix}-nav`]: isNavbar,\n [`${navbarBsPrefix}-nav-scroll`]: isNavbar && navbarScroll,\n [`${cardHeaderBsPrefix}-${variant}`]: !!cardHeaderBsPrefix,\n [`${bsPrefix}-${variant}`]: !!variant,\n [`${bsPrefix}-fill`]: fill,\n [`${bsPrefix}-justified`]: justify\n }),\n ...props\n });\n});\nNav.displayName = 'Nav';\nNav.defaultProps = defaultProps;\nexport default Object.assign(Nav, {\n Item: NavItem,\n Link: NavLink\n});","var _defs, _path, _path2, _path3, _path4, _path5;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgDoddlBrandLogo(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Layer_1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1559.16 461.82\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"style\", null, \".cls-1{fill:#1a3a40;stroke-width:0px;}\"))), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-1\",\n d: \"m319.08,31.21v423.22h-59.54l-14.66-29.92c-5.3,6.31-11.1,11.65-17.41,16.03-6.31,4.38-13.08,7.99-20.31,10.84-7.23,2.85-14.91,4.88-23.05,6.1-8.14,1.22-16.69,1.83-25.65,1.83-22.4,0-43.05-4.07-61.99-12.21s-35.32-19.39-49.16-33.74c-13.85-14.35-24.63-31.2-32.37-50.54-7.74-19.34-11.6-40.1-11.6-62.29s3.86-43.26,11.6-62.6c7.73-19.34,18.47-36.13,32.22-50.39,13.74-14.25,30.12-25.44,49.16-33.59,19.03-8.14,39.74-12.21,62.14-12.21,8.75,0,17.2.66,25.34,1.99,8.14,1.33,15.98,3.31,23.51,5.96,7.53,2.65,14.66,6.11,21.38,10.38,6.72,4.28,12.92,9.47,18.63,15.57V.98l71.76,30.23Zm-77.41,230.85c-4.17-11.19-10.08-20.66-17.71-28.4-7.63-7.73-16.75-13.63-27.33-17.71-10.59-4.07-22.4-6.11-35.42-6.11s-24.58,2.29-35.27,6.87c-10.69,4.58-19.8,10.89-27.33,18.93-7.53,8.05-13.44,17.61-17.71,28.7-4.28,11.1-6.41,23.06-6.41,35.88s2.14,25.14,6.41,36.34c4.28,11.2,10.18,20.82,17.71,28.85,7.53,8.05,16.64,14.35,27.33,18.93,10.69,4.58,22.44,6.87,35.27,6.87s24.83-1.98,35.42-5.95c10.58-3.97,19.69-9.87,27.33-17.71,7.63-7.84,13.54-17.41,17.71-28.71,4.17-11.3,6.26-24.07,6.26-38.32s-2.09-27.28-6.26-38.47Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-1\",\n d: \"m381.46,239.77c8.45-19.34,20.15-36.13,35.12-50.38,14.96-14.25,32.42-25.44,52.37-33.59,19.95-8.14,41.63-12.21,65.04-12.21s44.89,4.07,65.04,12.21c20.15,8.14,37.61,19.34,52.37,33.59,14.76,14.25,26.41,31.05,34.96,50.38,8.55,19.34,12.83,40.21,12.83,62.6s-4.28,43.26-12.83,62.6c-8.55,19.34-20.26,36.08-35.12,50.23-14.86,14.15-32.32,25.3-52.37,33.44-20.05,8.14-41.79,12.21-65.19,12.21s-44.79-4.07-64.74-12.21c-19.95-8.14-37.41-19.28-52.37-33.44-14.96-14.15-26.67-30.89-35.12-50.23-8.45-19.34-12.67-40.2-12.67-62.6s4.22-43.26,12.67-62.6Zm65.8,98.48c4.89,11.1,11.6,20.66,20.15,28.7,8.55,8.05,18.52,14.35,29.93,18.93,11.4,4.58,23.61,6.87,36.64,6.87s24.99-2.29,36.49-6.87c11.5-4.58,21.53-10.94,30.08-19.08,8.55-8.14,15.27-17.71,20.15-28.71,4.89-10.99,7.33-22.9,7.33-35.73s-2.44-24.78-7.33-35.88c-4.89-11.09-11.6-20.71-20.15-28.85-8.55-8.14-18.58-14.51-30.08-19.09-11.5-4.58-23.67-6.87-36.49-6.87s-25.24,2.29-36.64,6.87c-11.4,4.58-21.38,10.99-29.93,19.24-8.55,8.24-15.27,17.86-20.15,28.86-4.89,10.99-7.33,22.9-7.33,35.73s2.44,24.79,7.33,35.88Z\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-1\",\n d: \"m1043.56,31.21v423.22h-59.55l-14.66-29.92c-5.29,6.31-11.1,11.65-17.4,16.03-6.31,4.38-13.08,7.99-20.31,10.84-7.23,2.85-14.91,4.88-23.05,6.1-8.14,1.22-16.69,1.83-25.65,1.83-22.4,0-43.05-4.07-61.99-12.21-18.93-8.14-35.32-19.39-49.16-33.74-13.84-14.35-24.63-31.2-32.37-50.54-7.74-19.34-11.6-40.1-11.6-62.29s3.86-43.26,11.6-62.6c7.73-19.34,18.47-36.13,32.22-50.39,13.74-14.25,30.13-25.44,49.16-33.59,19.03-8.14,39.74-12.21,62.14-12.21,8.75,0,17.2.66,25.34,1.99,8.14,1.33,15.98,3.31,23.51,5.96,7.53,2.65,14.65,6.11,21.37,10.38,6.72,4.28,12.93,9.47,18.63,15.57V.98l71.76,30.23Zm-77.41,230.85c-4.18-11.19-10.08-20.66-17.71-28.4-7.63-7.73-16.75-13.63-27.33-17.71-10.59-4.07-22.39-6.11-35.42-6.11s-24.58,2.29-35.27,6.87c-10.69,4.58-19.8,10.89-27.33,18.93-7.54,8.05-13.44,17.61-17.71,28.7-4.27,11.1-6.41,23.06-6.41,35.88s2.14,25.14,6.41,36.34c4.28,11.2,10.18,20.82,17.71,28.85,7.53,8.05,16.64,14.35,27.33,18.93,10.69,4.58,22.44,6.87,35.27,6.87s24.83-1.98,35.42-5.95c10.58-3.97,19.7-9.87,27.33-17.71,7.63-7.84,13.54-17.41,17.71-28.71,4.17-11.3,6.26-24.07,6.26-38.32s-2.09-27.28-6.26-38.47Z\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-1\",\n d: \"m1408.7,31.21v423.22h-59.55l-14.66-29.92c-5.29,6.31-11.1,11.65-17.4,16.03-6.31,4.38-13.08,7.99-20.31,10.84-7.23,2.85-14.91,4.88-23.05,6.1-8.14,1.22-16.7,1.83-25.65,1.83-22.39,0-43.05-4.07-61.98-12.21-18.94-8.14-35.33-19.39-49.17-33.74-13.84-14.35-24.63-31.2-32.36-50.54-7.74-19.34-11.6-40.1-11.6-62.29s3.86-43.26,11.6-62.6c7.73-19.34,18.47-36.13,32.21-50.39,13.74-14.25,30.13-25.44,49.16-33.59,19.04-8.14,39.75-12.21,62.14-12.21,8.75,0,17.2.66,25.34,1.99,8.14,1.33,15.98,3.31,23.51,5.96,7.53,2.65,14.66,6.11,21.37,10.38,6.72,4.28,12.93,9.47,18.63,15.57V.98l71.76,30.23Zm-77.41,230.85c-4.17-11.19-10.08-20.66-17.71-28.4-7.63-7.73-16.74-13.63-27.33-17.71-10.59-4.07-22.39-6.11-35.42-6.11s-24.58,2.29-35.27,6.87c-10.69,4.58-19.8,10.89-27.33,18.93-7.53,8.05-13.43,17.61-17.71,28.7-4.27,11.1-6.41,23.06-6.41,35.88s2.13,25.14,6.41,36.34c4.28,11.2,10.18,20.82,17.71,28.85,7.53,8.05,16.64,14.35,27.33,18.93,10.69,4.58,22.44,6.87,35.27,6.87s24.83-1.98,35.42-5.95c10.58-3.97,19.69-9.87,27.33-17.71,7.64-7.84,13.54-17.41,17.71-28.71,4.17-11.3,6.26-24.07,6.26-38.32s-2.09-27.28-6.26-38.47Z\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-1\",\n d: \"m1484.06.98l71.76,30.23v423.22h-71.76V.98Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgDoddlBrandLogo);\nexport default __webpack_public_path__ + \"static/media/doddl-brand-logo.7867c8251ff314bfba7afec7c16732ad.svg\";\nexport { ForwardRef as ReactComponent };","import React from \"react\";\r\nimport { Component } from \"react\";\r\nimport \"./Timeline.css\";\r\n\r\nexport interface TimelineProps {\r\n items: TimelineItem[];\r\n}\r\n\r\nexport enum TimelineItemStatus {\r\n Completed = 1,\r\n Inactive = 2,\r\n ToDo = 3,\r\n Waiting = 4\r\n}\r\n\r\nexport interface TimelineItem {\r\n status: TimelineItemStatus\r\n title: React.ReactNode;\r\n content: React.ReactNode | null;\r\n key: string;\r\n}\r\n\r\nexport class Timeline extends Component<TimelineProps, any> {\r\n constructor(props: TimelineProps) {\r\n super(props);\r\n }\r\n\r\n getColor(item: TimelineItem) {\r\n if (item.status === TimelineItemStatus.Completed)\r\n return \"var(--teal)\";\r\n if (item.status === TimelineItemStatus.Inactive)\r\n return \"#aaaaaa\";\r\n if (item.status === TimelineItemStatus.ToDo)\r\n return \"var(--teal)\";\r\n if (item.status === TimelineItemStatus.Waiting)\r\n return \"var(--teal)\";\r\n }\r\n\r\n getBackgroundImageStyle(item: TimelineItem) { \r\n var color = this.getColor(item);\r\n return `linear-gradient(${color}, ${color})`;\r\n }\r\n\r\n render(): React.ReactNode {\r\n var items = this.props.items.map((item: any, idx: number) => {\r\n return (\r\n <div key={`${item.key}`}>\r\n <div className={\"timeline\"}>\r\n {/* <div className='main-nav-link nav-link ' style={{ color: this.getColor(item) }}> */}\r\n <div className='timeline-icon ' style={{ color: this.getColor(item) }}>\r\n {item.status === TimelineItemStatus.Completed &&\r\n <i className=\"fas fa-circle-check fa-lg\"></i>\r\n }\r\n {item.status === TimelineItemStatus.Waiting &&\r\n <i className=\"fa-regular fa-clock fa-lg\"></i>\r\n }\r\n {item.status !== TimelineItemStatus.Waiting && item.status !== TimelineItemStatus.Completed && \r\n <i className=\"far fa-circle fa-lg\"></i>\r\n }\r\n </div>\r\n <div className='timeline-header'>\r\n <span className=\"ih5\">{item.title}</span>\r\n </div>\r\n </div>\r\n {item.content && <div className='timeline-content' style={{ backgroundImage: this.getBackgroundImageStyle(item) }}>\r\n {item.content}\r\n </div>}\r\n </div>\r\n );\r\n });\r\n return (\r\n <div style={{ textAlign: 'left' }}> {items}</div >\r\n );\r\n }\r\n}","import { FieldsCollection } from './FieldsCollection';\r\n\r\nexport class SharedFieldsCollection extends FieldsCollection {\r\n constructor() {\r\n super();\r\n this.addCurrencyField(\"propertyValue\", \"Estimated Property Value\", 0, 100000000);\r\n this.addCurrencyField(\"purchasePrice\", \"Estimated Purchase Price\", 0, 100000000);\r\n this.addCurrencyField(\"mortgageAmountProposed\", \"Required Mortgage Amount\", 10000, 100000000);\r\n this.addCurrencyField(\"topUpAmount\", \"Top-Up Amount\", 0, 100000000);\r\n this.addPicklistField(\"fundoftheBalance\", \"Fund of the Balance\",\r\n [{ text: \"Savings\", value: 755980000 },\r\n { text: \"Gift\", value: 755980001 },\r\n { text: \"Other\", value: 755980002 }]);\r\n this.addCurrencyField(\"regularSavingsAmount\", \"Regular Savings Amount\", 0, 1000000);\r\n this.addCurrencyField(\"otherContinuedSavings\", \"Other Continued Savings\", 0, 1000000);\r\n this.addCurrencyField(\"giftAmount\", \"Total Gift Amount\", 0, 1000000);\r\n this.addCurrencyField(\"otherSavingsAmount\", \"Other Amount\", 0, 1000000);\r\n this.addNumberField(\"mortgageTerm\", \"Proposed Mortgage Term\", 0, 1000000);\r\n this.addPicklistField(\"preferenceForYourRate\", \"Rate Type\",\r\n [{ text: \"Variable\", value: 755980000 },\r\n { text: \"1 Year Fixed\", value: 755980001 },\r\n { text: \"2 Year Fixed\", value: 755980002 },\r\n { text: \"3 Year Fixed\", value: 755980003 },\r\n { text: \"4 Year Fixed\", value: 755980004 },\r\n { text: \"5 Year Fixed\", value: 755980005 },\r\n { text: \"7 Year Fixed\", value: 755980006 },\r\n { text: \"10 Year Fixed\", value: 755980007 },\r\n { text: \"15 Year Fixed\", value: 755980008 },\r\n { text: \"20 Year Fixed\", value: 755980009 }]);\r\n this.addDateField(\"clientAdvisedClosingDate\", \"Updated Closing Date\", new Date());\r\n }\r\n}","var _g, _defs;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgDodbera(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 223,\n height: 80,\n viewBox: \"0 0 223 80\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_2805_2)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 0H206.5L223 40L206.5 80H0V0Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10 10H116.5L130 40L116.5 70H10V10Z\",\n fill: \"black\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M125 10H201.095L213 40L201.095 70H125L139 40L125 10Z\",\n fill: \"#0AA651\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M175.39 49.3423H163.459L161.218 56H154.143L165.7 23.6123H173.347L184.816 56H177.478L175.39 49.3423ZM173.5 43.7612L169.458 31.0171L165.283 43.7612H173.5Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M38.2153 56H23.5376V23.6123H39.27C43.2397 23.6709 46.0522 24.8208 47.7075 27.062C48.7036 28.439 49.2017 30.0869 49.2017 32.0059C49.2017 33.9834 48.7036 35.5728 47.7075 36.7739C47.1509 37.4478 46.3306 38.063 45.2466 38.6196C46.9019 39.2202 48.147 40.1724 48.9819 41.4761C49.8315 42.7798 50.2563 44.3618 50.2563 46.2222C50.2563 48.1411 49.7729 49.8623 48.8062 51.3857C48.1909 52.3965 47.4219 53.2461 46.499 53.9346C45.459 54.7256 44.2285 55.2676 42.8076 55.5605C41.4014 55.8535 39.8706 56 38.2153 56ZM38.0615 41.7397H29.9976V50.375H37.9517C39.3726 50.375 40.4785 50.1846 41.2695 49.8037C42.7051 49.1006 43.4229 47.7529 43.4229 45.7607C43.4229 44.0762 42.7271 42.9189 41.3354 42.2891C40.5591 41.9375 39.4678 41.7544 38.0615 41.7397ZM41.4233 35.5654C42.3022 35.0381 42.7417 34.0933 42.7417 32.731C42.7417 31.2222 42.1558 30.2261 40.9839 29.7427C39.9731 29.4058 38.6841 29.2373 37.1167 29.2373H29.9976V36.3784H37.9517C39.3726 36.3784 40.5298 36.1074 41.4233 35.5654ZM77.1412 41.8496H61.4088V50.1772H79.3385V56H54.795V23.6123H78.5475V29.3472H61.4088V36.2246H77.1412V41.8496ZM97.0168 43.2998H90.0295V56H83.4157V23.6123H99.302C101.572 23.6562 103.316 23.9346 104.531 24.4473C105.762 24.96 106.802 25.7144 107.652 26.7104C108.355 27.5308 108.911 28.439 109.321 29.4351C109.732 30.4312 109.937 31.5664 109.937 32.8408C109.937 34.3789 109.549 35.895 108.772 37.3892C107.996 38.8687 106.714 39.916 104.927 40.5312C106.421 41.1318 107.476 41.9888 108.091 43.1021C108.721 44.2007 109.036 45.8853 109.036 48.1558V50.3311C109.036 51.8105 109.094 52.814 109.212 53.3413C109.387 54.1763 109.798 54.7915 110.442 55.187V56H102.993C102.788 55.2822 102.642 54.7036 102.554 54.2642C102.378 53.356 102.283 52.4258 102.268 51.4736L102.224 48.4634C102.195 46.3979 101.814 45.021 101.082 44.3325C100.364 43.644 99.009 43.2998 97.0168 43.2998ZM101.126 37.4111C102.473 36.7959 103.147 35.5801 103.147 33.7637C103.147 31.8008 102.495 30.4824 101.192 29.8086C100.459 29.4277 99.3605 29.2373 97.8957 29.2373H90.0295V37.9385H97.6979C99.2214 37.9385 100.364 37.7627 101.126 37.4111Z\",\n fill: \"white\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_2805_2\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 223,\n height: 80,\n fill: \"white\"\n })))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgDodbera);\nexport default __webpack_public_path__ + \"static/media/DOD BER A.eb8e106b28958bad2beb1399ec4bc6ff.svg\";\nexport { ForwardRef as ReactComponent };","export var lenders = [\r\n { name: \"AIB\", value: \"AIB\" },\r\n { name: \"Avant Money\", value: \"Avant Money\" },\r\n { name: \"Bank of Ireland\", value: \"BOI\" },\r\n { name: \"EBS\", value: \"EBS\" },\r\n { name: \"Finance Ireland\", value: \"Finance Ireland\" },\r\n { name: \"ICS Mortgages\", value: \"ICS Mortgages\" },\r\n { name: \"KBC\", value: \"KBC\" },\r\n { name: \"Mars Capital\", value: \"Mars Capital\" },\r\n { name: \"Pepper\", value: \"Pepper\" },\r\n { name: \"Permanent TSB\", value: \"Permanent TSB\" },\r\n { name: \"Start\", value: \"Start\" },\r\n { name: \"Other\", value: \"Other\" },\r\n]\r\n\r\nexport var terms = [\r\n {name:'5 years', value:5},\r\n {name:'6 years', value:6},\r\n {name:'7 years', value:7},\r\n {name:'8 years', value:8},\r\n {name:'9 years', value:9},\r\n {name:'10 years', value:10},\r\n {name:'11 years', value:11},\r\n {name:'12 years', value:12},\r\n {name:'13 years', value:13},\r\n {name:'14 years', value:14},\r\n {name:'15 years', value:15},\r\n {name:'16 years', value:16},\r\n {name:'17 years', value:17},\r\n {name:'18 years', value:18},\r\n {name:'19 years', value:19},\r\n {name:'20 years', value:20},\r\n {name:'21 years', value:21},\r\n {name:'22 years', value:22},\r\n {name:'23 years', value:23},\r\n {name:'24 years', value:24},\r\n {name:'25 years', value:25},\r\n {name:'26 years', value:26},\r\n {name:'27 years', value:27},\r\n {name:'28 years', value:28},\r\n {name:'29 years', value:29},\r\n {name:'30 years', value:30},\r\n {name:'31 years', value:31},\r\n {name:'32 years', value:32},\r\n {name:'33 years', value:33},\r\n {name:'34 years', value:34},\r\n {name:'35 years', value:35},\r\n];\r\n\r\nexport var berRatings = [\r\n // { name: \"A1\", value: 755980000 },\r\n // { name: \"A2\", value: 755980001 },\r\n { name: \"A\", value: 755980002 },\r\n // { name: \"B1\", value: 755980003 },\r\n // { name: \"B2\", value: 755980004 },\r\n { name: \"B\", value: 755980005 },\r\n { name: \"C\", value: 755980006 },\r\n { name: \"D\", value: 755980009 },\r\n { name: \"E\", value: 755980010 },\r\n { name: \"F\", value: 755980011 },\r\n { name: \"G\", value: 755980012 },\r\n { name: \"Exempt\", value: 755980008 },\r\n { name: \"Don't know\", value: 755980007 },\r\n]\r\n\r\nexport var steps = {\r\n buyorswitch: 'buyorswitch',\r\n purchaser: 'purchaser',\r\n switcher: 'switcher',\r\n borrowinglevel_looking: 'borrowinglevel-looking',\r\n borrowinglevel_foundhome: 'borrowinglevel-foundhome',\r\n checklenders: 'checklenders',\r\n lenderresult: 'lenderresult',\r\n capturename: 'capturename',\r\n capturename2: 'capturename2',\r\n capturecontact: 'capturecontact',\r\n capturecontact2: 'capturecontact2',\r\n currentlender_reduce: 'currentlender-reduce',\r\n currentlender_lockin: 'currentlender-lockin',\r\n currentlender_topup: 'currentlender-topup',\r\n switchervalues: 'switchervalues',\r\n currentlypaying: 'currentlypaying',\r\n switcher_lockin_yes: 'switcher-lockin-yes',\r\n switcher_lockin_no: 'switcher-lockin-no',\r\n switcher_reduce_yes: 'switcher-reduce-yes',\r\n switcher_reduce_no: 'switcher-reduce-no',\r\n switcher_topup_yes: 'switcher-topup-yes',\r\n switcher_topup_no: 'switcher-topup-no',\r\n singleorjoint: 'singleorjoint',\r\n isfirstmortgage: 'isfirstmortgage',\r\n paymentsandsavings: 'paymentsandsavings',\r\n income: 'income',\r\n fasttrack: 'fasttrack',\r\n terminator: 'terminator',\r\n terminator_invite: 'terminator-invite',\r\n switching_calculator: 'switching-calculator',\r\n purchasing_calculator: 'purchasing-calculator',\r\n insurance_for: 'insurance-for',\r\n capturecontact_full: 'capturecontact-full',\r\n gender: 'gender',\r\n gender2: 'gender2',\r\n dob: 'dob',\r\n dob2: 'dob2',\r\n gender_dob: 'gender-dob',\r\n cover_for: 'cover-for',\r\n cover_amount: 'cover-amount',\r\n smoker_status: 'smoker-status',\r\n smoker_status2: 'smoker-status2',\r\n terminator_insurance: 'terminator-insurance',\r\n overpayment_calculator: 'overpayment-calculator',\r\n subscribe_newsletter: 'subscribe-newsletter',\r\n unsubscribe_newsletter: 'unsubscribe-newsletter'\r\n}","import { berRatings } from '../helper/lists';\r\nimport { FieldsCollection } from './FieldsCollection';\r\n\r\nexport class CalculatorFieldsCollection extends FieldsCollection {\r\n constructor() {\r\n super();\r\n this.addCurrencyField(\"homeValue\", \"Approximate Home Value\", 0, 100000000);\r\n this.addCurrencyField(\"mortgageBalance\", \"Outstanding Mortgage Balance\", 0, 100000000);\r\n this.addTextField(\"mortgageTerm\", \"Remaining Mortgage Term\");\r\n this.addPicklistField(\"berRating\", \"BER Energy Rating\", berRatings);\r\n this.addBooleanField(\"cashbackOnly\", \"Cashback Options Only\");\r\n }\r\n}","import React, { Component } from \"react\";\r\nimport \"./../pages/Calculators.css\";\r\nimport { Row, Stack } from \"react-bootstrap\";\r\n\r\ninterface IProps {\r\n id: string;\r\n label: any;\r\n value?: number;\r\n classes?: string;\r\n onChange(v: any): void;\r\n onBlur?(): void;\r\n type?: \"currency\" | \"percentage\";\r\n}\r\n\r\ninterface IState {\r\n value?: number;\r\n}\r\n\r\nexport class NumberInput extends Component<IProps, IState> {\r\n /**\r\n *\r\n */\r\n constructor(props: IProps) {\r\n super(props);\r\n\r\n this.state = { value: props.value };\r\n }\r\n componentDidUpdate(\r\n prevProps: Readonly<IProps>,\r\n prevState: Readonly<IState>,\r\n snapshot?: any\r\n ): void {\r\n if (this.state.value != this.props.value) {\r\n this.setState({ value: this.props.value });\r\n }\r\n }\r\n percentFormatter(v: string): string {\r\n var value = parseFloat(v);\r\n if (isNaN(value) || value === 0) return \"\";\r\n return value.toLocaleString(\"en-US\", { useGrouping: true }) + \"%\";\r\n }\r\n percentToNumber(v: string): string {\r\n var rawValue = this.replaceAll(v, \",\", \"\");\r\n var value = parseFloat(rawValue.replace(\"%\", \"\"));\r\n if (isNaN(value) || value === 0) return \"\";\r\n return value.toString();\r\n }\r\n replaceAll(v: string, find: string, replaceWith: string): string {\r\n if (v.includes(find)) {\r\n return this.replaceAll(v.replace(find, replaceWith), find, replaceWith);\r\n }\r\n return v;\r\n }\r\n currencyFormatter(v: string): string {\r\n var value = parseFloat(v);\r\n if (isNaN(value) || value === 0) return \"\";\r\n return \"€ \" + value.toLocaleString(\"en-US\", { useGrouping: true });\r\n }\r\n currencyToNumber(v: string): string {\r\n var rawValue = this.replaceAll(v, \",\", \"\");\r\n var value = parseFloat(rawValue.replace(\"€ \", \"\"));\r\n if (isNaN(value) || value === 0) return \"\";\r\n return value.toString();\r\n }\r\n\r\n getType(): \"currency\" | \"percentage\" {\r\n return this.props.type ?? \"currency\";\r\n }\r\n\r\n toFormat(v: string): string {\r\n if (this.getType() === \"percentage\") {\r\n return this.percentFormatter(v);\r\n }\r\n return this.currencyFormatter(v);\r\n }\r\n toValue(v: string): string {\r\n if (this.getType() === \"percentage\") {\r\n return this.percentToNumber(v);\r\n }\r\n return this.currencyToNumber(v);\r\n }\r\n\r\n getPlaceholder(): string {\r\n if (this.getType() === \"percentage\") {\r\n return \"0%\";\r\n }\r\n return \"€ 0\";\r\n }\r\n\r\n getPostfix(): string | undefined {\r\n if (this.getType() === \"percentage\") {\r\n return \"%\";\r\n }\r\n return undefined;\r\n }\r\n\r\n getPrefix(): string | undefined {\r\n if (this.getType() === \"currency\") {\r\n return \"€\";\r\n }\r\n return undefined;\r\n }\r\n\r\n render() {\r\n return (\r\n <div className=\"calc-grid justify-left\">\r\n <Row>\r\n <label className=\"calculator-labels\" htmlFor={this.props.id}>\r\n {this.props.label}\r\n </label>\r\n </Row>\r\n <input\r\n id={this.props.id}\r\n key={this.props.id + \"-input\"}\r\n className={\"number-input \" + (this.props.classes ?? \"\")}\r\n type=\"text\"\r\n autoComplete=\"off\"\r\n pattern=\"[0-9]*\"\r\n defaultValue={this.toFormat((this.props.value ?? 0).toString())}\r\n value={this.toFormat(this.state.value?.toString() ?? \"\")} //NOTE! SETTING VALUE LIKE THIS STOPS THE CURRENCY FORMATTING!!\r\n placeholder={this.getPlaceholder()}\r\n onChange={(e) => {\r\n var numberValue = this.toValue(e.target.value);\r\n e.target.value = this.toFormat(numberValue);\r\n this.props.onChange({ target: { value: numberValue } });\r\n //this.setState({value: +numberValue})\r\n }}\r\n // onChange={this.props.onChange}\r\n // onFocus={(e) => {\r\n // e.target.value = this.toValue(e.target.value).toString()\r\n // }\r\n // }\r\n onBlur={(e) => {\r\n //e.target.value = this.toFormat(e.target.value);\r\n if (this.props.onBlur) this.props.onBlur();\r\n }}\r\n />\r\n </div>\r\n );\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\nimport { terms } from \"../helper/lists.js\";\r\nimport \"./../pages/Calculators.css\";\r\nimport { Row } from \"react-bootstrap\";\r\n\r\ninterface IProps {\r\n label?: any;\r\n selectedterm?: number;\r\n classes?: string;\r\n onChange(v: any): void;\r\n onBlur?(): void;\r\n}\r\n\r\nexport class TermSelect extends Component<IProps, any> {\r\n render() {\r\n return (\r\n <div className=\"calc-grid justify-left\">\r\n <Row>\r\n {this.props.label && (\r\n <label className=\"calculator-labels\" htmlFor=\"term\">\r\n {this.props.label}\r\n </label>\r\n )}\r\n </Row>\r\n {/* <i className='fa fa-calendar s30' style={{float: 'left', position: 'absolute', marginTop: 30, marginLeft: 10}} /> */}\r\n <select\r\n name=\"term\"\r\n id=\"term\"\r\n aria-required=\"true\"\r\n aria-invalid=\"false\"\r\n className={`${this.props.classes ?? \"\"} select-input`}\r\n onChange={this.props.onChange}\r\n onBlur={() => {\r\n if (this.props.onBlur) this.props.onBlur();\r\n }}\r\n value={this.props.selectedterm}\r\n >\r\n {terms.map((t) => {\r\n return (\r\n <option\r\n key={\"currentlypaying-term-\" + t.value}\r\n value={t.value}\r\n selected={\r\n t.name ===\r\n (this.props.selectedterm\r\n ? this.props.selectedterm + \" years\"\r\n : \"25 years\")\r\n }\r\n >\r\n {t.name}\r\n </option>\r\n );\r\n })}\r\n </select>\r\n </div>\r\n );\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\nimport \"./../pages/Calculators.css\";\r\nimport { Stack } from \"react-bootstrap\";\r\n\r\ninterface IProps {\r\n id: string;\r\n label: any;\r\n value?: number;\r\n classes?: string;\r\n onChange(v: any): void;\r\n onBlur?(): void;\r\n type?: \"currency\" | \"percentage\";\r\n}\r\n\r\ninterface IState {\r\n value?: number;\r\n}\r\n\r\nexport class BooleanInput extends Component<IProps, IState> {\r\n /**\r\n *\r\n */\r\n constructor(props: IProps) {\r\n super(props);\r\n\r\n this.state = { value: props.value };\r\n }\r\n componentDidUpdate(\r\n prevProps: Readonly<IProps>,\r\n prevState: Readonly<IState>,\r\n snapshot?: any\r\n ): void {\r\n if (this.state.value != this.props.value) {\r\n this.setState({ value: this.props.value });\r\n }\r\n }\r\n percentFormatter(v: string): string {\r\n var value = parseFloat(v);\r\n if (isNaN(value) || value === 0) return \"\";\r\n return value.toLocaleString(\"en-US\", { useGrouping: true }) + \"%\";\r\n }\r\n percentToNumber(v: string): string {\r\n var rawValue = this.replaceAll(v, \",\", \"\");\r\n var value = parseFloat(rawValue.replace(\"%\", \"\"));\r\n if (isNaN(value) || value === 0) return \"\";\r\n return value.toString();\r\n }\r\n replaceAll(v: string, find: string, replaceWith: string): string {\r\n if (v.includes(find)) {\r\n return this.replaceAll(v.replace(find, replaceWith), find, replaceWith);\r\n }\r\n return v;\r\n }\r\n currencyFormatter(v: string): string {\r\n var value = parseFloat(v);\r\n if (isNaN(value) || value === 0) return \"\";\r\n return \"€ \" + value.toLocaleString(\"en-US\", { useGrouping: true });\r\n }\r\n currencyToNumber(v: string): string {\r\n var rawValue = this.replaceAll(v, \",\", \"\");\r\n var value = parseFloat(rawValue.replace(\"€ \", \"\"));\r\n if (isNaN(value) || value === 0) return \"\";\r\n return value.toString();\r\n }\r\n\r\n getType(): \"currency\" | \"percentage\" {\r\n return this.props.type ?? \"currency\";\r\n }\r\n\r\n toFormat(v: string): string {\r\n if (this.getType() === \"percentage\") {\r\n return this.percentFormatter(v);\r\n }\r\n return this.currencyFormatter(v);\r\n }\r\n toValue(v: string): string {\r\n if (this.getType() === \"percentage\") {\r\n return this.percentToNumber(v);\r\n }\r\n return this.currencyToNumber(v);\r\n }\r\n\r\n getPlaceholder(): string {\r\n if (this.getType() === \"percentage\") {\r\n return \"0%\";\r\n }\r\n return \"€ 0\";\r\n }\r\n\r\n getPostfix(): string | undefined {\r\n if (this.getType() === \"percentage\") {\r\n return \"%\";\r\n }\r\n return undefined;\r\n }\r\n\r\n getPrefix(): string | undefined {\r\n if (this.getType() === \"currency\") {\r\n return \"€\";\r\n }\r\n return undefined;\r\n }\r\n\r\n render() {\r\n return (\r\n <div className=\"calc-grid justify-left\">\r\n <Stack direction=\"horizontal\" gap={4}>\r\n <div className=\"checkbox-input\">\r\n <input\r\n id={this.props.id}\r\n key={this.props.id + \"-input\"}\r\n className={\" \" + (this.props.classes ?? \"\")}\r\n type=\"checkbox\"\r\n //checked={!!this.props.value}\r\n onChange={(e) => {\r\n this.props.onChange(e);\r\n //this.setState({value: +numberValue})\r\n }}\r\n />\r\n <label htmlFor={this.props.id}></label>\r\n </div>\r\n <label className=\"calculator-labels mt-3\">{this.props.label}</label>\r\n </Stack>\r\n </div>\r\n );\r\n }\r\n}\r\n","var _g, _defs;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgDodberb(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 223,\n height: 80,\n viewBox: \"0 0 223 80\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_2805_15)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 0H206.5L223 40L206.5 80H0V0Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10 10H116.5L130 40L116.5 70H10V10Z\",\n fill: \"black\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M125 10H201.095L213 40L201.095 70H125L139 40L125 10Z\",\n fill: \"#51B848\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M171.215 56H156.538V23.6123H172.27C176.24 23.6709 179.052 24.8208 180.708 27.062C181.704 28.439 182.202 30.0869 182.202 32.0059C182.202 33.9834 181.704 35.5728 180.708 36.7739C180.151 37.4478 179.331 38.063 178.247 38.6196C179.902 39.2202 181.147 40.1724 181.982 41.4761C182.832 42.7798 183.256 44.3618 183.256 46.2222C183.256 48.1411 182.773 49.8623 181.806 51.3857C181.191 52.3965 180.422 53.2461 179.499 53.9346C178.459 54.7256 177.229 55.2676 175.808 55.5605C174.401 55.8535 172.871 56 171.215 56ZM171.062 41.7397H162.998V50.375H170.952C172.373 50.375 173.479 50.1846 174.27 49.8037C175.705 49.1006 176.423 47.7529 176.423 45.7607C176.423 44.0762 175.727 42.9189 174.335 42.2891C173.559 41.9375 172.468 41.7544 171.062 41.7397ZM174.423 35.5654C175.302 35.0381 175.742 34.0933 175.742 32.731C175.742 31.2222 175.156 30.2261 173.984 29.7427C172.973 29.4058 171.684 29.2373 170.117 29.2373H162.998V36.3784H170.952C172.373 36.3784 173.53 36.1074 174.423 35.5654Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M38.2153 56H23.5376V23.6123H39.27C43.2397 23.6709 46.0522 24.8208 47.7075 27.062C48.7036 28.439 49.2017 30.0869 49.2017 32.0059C49.2017 33.9834 48.7036 35.5728 47.7075 36.7739C47.1509 37.4478 46.3306 38.063 45.2466 38.6196C46.9019 39.2202 48.147 40.1724 48.9819 41.4761C49.8315 42.7798 50.2563 44.3618 50.2563 46.2222C50.2563 48.1411 49.7729 49.8623 48.8062 51.3857C48.1909 52.3965 47.4219 53.2461 46.499 53.9346C45.459 54.7256 44.2285 55.2676 42.8076 55.5605C41.4014 55.8535 39.8706 56 38.2153 56ZM38.0615 41.7397H29.9976V50.375H37.9517C39.3726 50.375 40.4785 50.1846 41.2695 49.8037C42.7051 49.1006 43.4229 47.7529 43.4229 45.7607C43.4229 44.0762 42.7271 42.9189 41.3354 42.2891C40.5591 41.9375 39.4678 41.7544 38.0615 41.7397ZM41.4233 35.5654C42.3022 35.0381 42.7417 34.0933 42.7417 32.731C42.7417 31.2222 42.1558 30.2261 40.9839 29.7427C39.9731 29.4058 38.6841 29.2373 37.1167 29.2373H29.9976V36.3784H37.9517C39.3726 36.3784 40.5298 36.1074 41.4233 35.5654ZM77.1412 41.8496H61.4088V50.1772H79.3385V56H54.795V23.6123H78.5475V29.3472H61.4088V36.2246H77.1412V41.8496ZM97.0168 43.2998H90.0295V56H83.4157V23.6123H99.302C101.572 23.6562 103.316 23.9346 104.531 24.4473C105.762 24.96 106.802 25.7144 107.652 26.7104C108.355 27.5308 108.911 28.439 109.321 29.4351C109.732 30.4312 109.937 31.5664 109.937 32.8408C109.937 34.3789 109.549 35.895 108.772 37.3892C107.996 38.8687 106.714 39.916 104.927 40.5312C106.421 41.1318 107.476 41.9888 108.091 43.1021C108.721 44.2007 109.036 45.8853 109.036 48.1558V50.3311C109.036 51.8105 109.094 52.814 109.212 53.3413C109.387 54.1763 109.798 54.7915 110.442 55.187V56H102.993C102.788 55.2822 102.642 54.7036 102.554 54.2642C102.378 53.356 102.283 52.4258 102.268 51.4736L102.224 48.4634C102.195 46.3979 101.814 45.021 101.082 44.3325C100.364 43.644 99.009 43.2998 97.0168 43.2998ZM101.126 37.4111C102.473 36.7959 103.147 35.5801 103.147 33.7637C103.147 31.8008 102.495 30.4824 101.192 29.8086C100.459 29.4277 99.3605 29.2373 97.8957 29.2373H90.0295V37.9385H97.6979C99.2214 37.9385 100.364 37.7627 101.126 37.4111Z\",\n fill: \"white\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_2805_15\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 223,\n height: 80,\n fill: \"white\"\n })))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgDodberb);\nexport default __webpack_public_path__ + \"static/media/DOD BER B.6682f1af897270d23dcd5d3581ff8212.svg\";\nexport { ForwardRef as ReactComponent };","var _g, _defs;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgDodberc(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 223,\n height: 80,\n viewBox: \"0 0 223 80\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_2805_22)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 0H206.5L223 40L206.5 80H0V0Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10 10H116.5L130 40L116.5 70H10V10Z\",\n fill: \"black\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M125 10H201.095L213 40L201.095 70H125L139 40L125 10Z\",\n fill: \"#BFD730\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M179.279 53.583C176.862 55.7949 173.771 56.9009 170.007 56.9009C165.349 56.9009 161.687 55.4067 159.021 52.4185C156.354 49.4155 155.021 45.2993 155.021 40.0698C155.021 34.4155 156.538 30.0576 159.57 26.9961C162.207 24.3301 165.561 22.9971 169.633 22.9971C175.083 22.9971 179.067 24.7842 181.586 28.3584C182.978 30.3652 183.725 32.3794 183.828 34.4009H177.06C176.621 32.8481 176.057 31.6763 175.368 30.8853C174.138 29.479 172.314 28.7759 169.897 28.7759C167.436 28.7759 165.495 29.772 164.074 31.7642C162.653 33.7417 161.943 36.5469 161.943 40.1797C161.943 43.8125 162.69 46.5371 164.184 48.3535C165.693 50.1553 167.604 51.0562 169.919 51.0562C172.292 51.0562 174.101 50.2798 175.346 48.7271C176.035 47.8921 176.606 46.6396 177.06 44.9697H183.762C183.176 48.5 181.682 51.3711 179.279 53.583Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M38.2153 56H23.5376V23.6123H39.27C43.2397 23.6709 46.0522 24.8208 47.7075 27.062C48.7036 28.439 49.2017 30.0869 49.2017 32.0059C49.2017 33.9834 48.7036 35.5728 47.7075 36.7739C47.1509 37.4478 46.3306 38.063 45.2466 38.6196C46.9019 39.2202 48.147 40.1724 48.9819 41.4761C49.8315 42.7798 50.2563 44.3618 50.2563 46.2222C50.2563 48.1411 49.7729 49.8623 48.8062 51.3857C48.1909 52.3965 47.4219 53.2461 46.499 53.9346C45.459 54.7256 44.2285 55.2676 42.8076 55.5605C41.4014 55.8535 39.8706 56 38.2153 56ZM38.0615 41.7397H29.9976V50.375H37.9517C39.3726 50.375 40.4785 50.1846 41.2695 49.8037C42.7051 49.1006 43.4229 47.7529 43.4229 45.7607C43.4229 44.0762 42.7271 42.9189 41.3354 42.2891C40.5591 41.9375 39.4678 41.7544 38.0615 41.7397ZM41.4233 35.5654C42.3022 35.0381 42.7417 34.0933 42.7417 32.731C42.7417 31.2222 42.1558 30.2261 40.9839 29.7427C39.9731 29.4058 38.6841 29.2373 37.1167 29.2373H29.9976V36.3784H37.9517C39.3726 36.3784 40.5298 36.1074 41.4233 35.5654ZM77.1412 41.8496H61.4088V50.1772H79.3385V56H54.795V23.6123H78.5475V29.3472H61.4088V36.2246H77.1412V41.8496ZM97.0168 43.2998H90.0295V56H83.4157V23.6123H99.302C101.572 23.6562 103.316 23.9346 104.531 24.4473C105.762 24.96 106.802 25.7144 107.652 26.7104C108.355 27.5308 108.911 28.439 109.321 29.4351C109.732 30.4312 109.937 31.5664 109.937 32.8408C109.937 34.3789 109.549 35.895 108.772 37.3892C107.996 38.8687 106.714 39.916 104.927 40.5312C106.421 41.1318 107.476 41.9888 108.091 43.1021C108.721 44.2007 109.036 45.8853 109.036 48.1558V50.3311C109.036 51.8105 109.094 52.814 109.212 53.3413C109.387 54.1763 109.798 54.7915 110.442 55.187V56H102.993C102.788 55.2822 102.642 54.7036 102.554 54.2642C102.378 53.356 102.283 52.4258 102.268 51.4736L102.224 48.4634C102.195 46.3979 101.814 45.021 101.082 44.3325C100.364 43.644 99.009 43.2998 97.0168 43.2998ZM101.126 37.4111C102.473 36.7959 103.147 35.5801 103.147 33.7637C103.147 31.8008 102.495 30.4824 101.192 29.8086C100.459 29.4277 99.3605 29.2373 97.8957 29.2373H90.0295V37.9385H97.6979C99.2214 37.9385 100.364 37.7627 101.126 37.4111Z\",\n fill: \"white\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_2805_22\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 223,\n height: 80,\n fill: \"white\"\n })))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgDodberc);\nexport default __webpack_public_path__ + \"static/media/DOD BER C.4641e2d3728b0fe8eb1ea564d43f9eed.svg\";\nexport { ForwardRef as ReactComponent };","var _g, _defs;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgDodberd(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 223,\n height: 80,\n viewBox: \"0 0 223 80\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_2805_29)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 0H206.5L223 40L206.5 80H0V0Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10 10H116.5L130 40L116.5 70H10V10Z\",\n fill: \"black\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M125 10H201.095L213 40L201.095 70H125L139 40L125 10Z\",\n fill: \"#FFF200\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M170.38 56H156.428V23.6123H170.38C172.387 23.6416 174.057 23.876 175.39 24.3154C177.661 25.0625 179.499 26.4321 180.905 28.4243C182.033 30.0356 182.802 31.7788 183.212 33.6538C183.623 35.5288 183.828 37.3159 183.828 39.0151C183.828 43.3218 182.963 46.9692 181.235 49.9575C178.891 53.9858 175.273 56 170.38 56ZM175.412 31.874C174.372 30.1162 172.314 29.2373 169.238 29.2373H162.998V50.375H169.238C172.431 50.375 174.658 48.8003 175.917 45.6509C176.606 43.9224 176.95 41.8643 176.95 39.4766C176.95 36.1807 176.438 33.6465 175.412 31.874Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M38.2153 56H23.5376V23.6123H39.27C43.2397 23.6709 46.0522 24.8208 47.7075 27.062C48.7036 28.439 49.2017 30.0869 49.2017 32.0059C49.2017 33.9834 48.7036 35.5728 47.7075 36.7739C47.1509 37.4478 46.3306 38.063 45.2466 38.6196C46.9019 39.2202 48.147 40.1724 48.9819 41.4761C49.8315 42.7798 50.2563 44.3618 50.2563 46.2222C50.2563 48.1411 49.7729 49.8623 48.8062 51.3857C48.1909 52.3965 47.4219 53.2461 46.499 53.9346C45.459 54.7256 44.2285 55.2676 42.8076 55.5605C41.4014 55.8535 39.8706 56 38.2153 56ZM38.0615 41.7397H29.9976V50.375H37.9517C39.3726 50.375 40.4785 50.1846 41.2695 49.8037C42.7051 49.1006 43.4229 47.7529 43.4229 45.7607C43.4229 44.0762 42.7271 42.9189 41.3354 42.2891C40.5591 41.9375 39.4678 41.7544 38.0615 41.7397ZM41.4233 35.5654C42.3022 35.0381 42.7417 34.0933 42.7417 32.731C42.7417 31.2222 42.1558 30.2261 40.9839 29.7427C39.9731 29.4058 38.6841 29.2373 37.1167 29.2373H29.9976V36.3784H37.9517C39.3726 36.3784 40.5298 36.1074 41.4233 35.5654ZM77.1412 41.8496H61.4088V50.1772H79.3385V56H54.795V23.6123H78.5475V29.3472H61.4088V36.2246H77.1412V41.8496ZM97.0168 43.2998H90.0295V56H83.4157V23.6123H99.302C101.572 23.6562 103.316 23.9346 104.531 24.4473C105.762 24.96 106.802 25.7144 107.652 26.7104C108.355 27.5308 108.911 28.439 109.321 29.4351C109.732 30.4312 109.937 31.5664 109.937 32.8408C109.937 34.3789 109.549 35.895 108.772 37.3892C107.996 38.8687 106.714 39.916 104.927 40.5312C106.421 41.1318 107.476 41.9888 108.091 43.1021C108.721 44.2007 109.036 45.8853 109.036 48.1558V50.3311C109.036 51.8105 109.094 52.814 109.212 53.3413C109.387 54.1763 109.798 54.7915 110.442 55.187V56H102.993C102.788 55.2822 102.642 54.7036 102.554 54.2642C102.378 53.356 102.283 52.4258 102.268 51.4736L102.224 48.4634C102.195 46.3979 101.814 45.021 101.082 44.3325C100.364 43.644 99.009 43.2998 97.0168 43.2998ZM101.126 37.4111C102.473 36.7959 103.147 35.5801 103.147 33.7637C103.147 31.8008 102.495 30.4824 101.192 29.8086C100.459 29.4277 99.3605 29.2373 97.8957 29.2373H90.0295V37.9385H97.6979C99.2214 37.9385 100.364 37.7627 101.126 37.4111Z\",\n fill: \"white\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_2805_29\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 223,\n height: 80,\n fill: \"white\"\n })))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgDodberd);\nexport default __webpack_public_path__ + \"static/media/DOD BER D.aae98fcb211bd885af4afffe220e12a8.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3, _path4;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgDodbere(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 223,\n height: 80,\n viewBox: \"0 0 223 80\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10 10H116.5L130 40L116.5 70H10V10Z\",\n fill: \"black\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M125 10H201.095L213 40L201.095 70H125L139 40L125 10Z\",\n fill: \"#FDB913\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M179.972 41.8496H164.239V50.1772H182.169V56H157.625V23.6123H181.378V29.3472H164.239V36.2246H179.972V41.8496Z\",\n fill: \"white\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M38.2153 56H23.5376V23.6123H39.27C43.2397 23.6709 46.0522 24.8208 47.7075 27.062C48.7036 28.439 49.2017 30.0869 49.2017 32.0059C49.2017 33.9834 48.7036 35.5728 47.7075 36.7739C47.1509 37.4478 46.3306 38.063 45.2466 38.6196C46.9019 39.2202 48.147 40.1724 48.9819 41.4761C49.8315 42.7798 50.2563 44.3618 50.2563 46.2222C50.2563 48.1411 49.7729 49.8623 48.8062 51.3857C48.1909 52.3965 47.4219 53.2461 46.499 53.9346C45.459 54.7256 44.2285 55.2676 42.8076 55.5605C41.4014 55.8535 39.8706 56 38.2153 56ZM38.0615 41.7397H29.9976V50.375H37.9517C39.3726 50.375 40.4785 50.1846 41.2695 49.8037C42.7051 49.1006 43.4229 47.7529 43.4229 45.7607C43.4229 44.0762 42.7271 42.9189 41.3354 42.2891C40.5591 41.9375 39.4678 41.7544 38.0615 41.7397ZM41.4233 35.5654C42.3022 35.0381 42.7417 34.0933 42.7417 32.731C42.7417 31.2222 42.1558 30.2261 40.9839 29.7427C39.9731 29.4058 38.6841 29.2373 37.1167 29.2373H29.9976V36.3784H37.9517C39.3726 36.3784 40.5298 36.1074 41.4233 35.5654ZM77.1412 41.8496H61.4088V50.1772H79.3385V56H54.795V23.6123H78.5475V29.3472H61.4088V36.2246H77.1412V41.8496ZM97.0168 43.2998H90.0295V56H83.4157V23.6123H99.302C101.572 23.6562 103.316 23.9346 104.531 24.4473C105.762 24.96 106.802 25.7144 107.652 26.7104C108.355 27.5308 108.911 28.439 109.321 29.4351C109.732 30.4312 109.937 31.5664 109.937 32.8408C109.937 34.3789 109.549 35.895 108.772 37.3892C107.996 38.8687 106.714 39.916 104.927 40.5312C106.421 41.1318 107.476 41.9888 108.091 43.1021C108.721 44.2007 109.036 45.8853 109.036 48.1558V50.3311C109.036 51.8105 109.094 52.814 109.212 53.3413C109.387 54.1763 109.798 54.7915 110.442 55.187V56H102.993C102.788 55.2822 102.642 54.7036 102.554 54.2642C102.378 53.356 102.283 52.4258 102.268 51.4736L102.224 48.4634C102.195 46.3979 101.814 45.021 101.082 44.3325C100.364 43.644 99.009 43.2998 97.0168 43.2998ZM101.126 37.4111C102.473 36.7959 103.147 35.5801 103.147 33.7637C103.147 31.8008 102.495 30.4824 101.192 29.8086C100.459 29.4277 99.3605 29.2373 97.8957 29.2373H90.0295V37.9385H97.6979C99.2214 37.9385 100.364 37.7627 101.126 37.4111Z\",\n fill: \"white\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgDodbere);\nexport default __webpack_public_path__ + \"static/media/DOD BER E.afccdc6c6706d9800746ab0436e8fe96.svg\";\nexport { ForwardRef as ReactComponent };","var _g, _defs;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgDodberf(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 223,\n height: 80,\n viewBox: \"0 0 223 80\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_2805_42)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 0H206.5L223 40L206.5 80H0V0Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10 10H116.5L130 40L116.5 70H10V10Z\",\n fill: \"black\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M125 10H201.095L213 40L201.095 70H125L139 40L125 10Z\",\n fill: \"#F37021\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M181.389 29.3472H165.151V36.7959H179.368V42.4209H165.151V56H158.428V23.6562H181.389V29.3472Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M38.2153 56H23.5376V23.6123H39.27C43.2397 23.6709 46.0522 24.8208 47.7075 27.062C48.7036 28.439 49.2017 30.0869 49.2017 32.0059C49.2017 33.9834 48.7036 35.5728 47.7075 36.7739C47.1509 37.4478 46.3306 38.063 45.2466 38.6196C46.9019 39.2202 48.147 40.1724 48.9819 41.4761C49.8315 42.7798 50.2563 44.3618 50.2563 46.2222C50.2563 48.1411 49.7729 49.8623 48.8062 51.3857C48.1909 52.3965 47.4219 53.2461 46.499 53.9346C45.459 54.7256 44.2285 55.2676 42.8076 55.5605C41.4014 55.8535 39.8706 56 38.2153 56ZM38.0615 41.7397H29.9976V50.375H37.9517C39.3726 50.375 40.4785 50.1846 41.2695 49.8037C42.7051 49.1006 43.4229 47.7529 43.4229 45.7607C43.4229 44.0762 42.7271 42.9189 41.3354 42.2891C40.5591 41.9375 39.4678 41.7544 38.0615 41.7397ZM41.4233 35.5654C42.3022 35.0381 42.7417 34.0933 42.7417 32.731C42.7417 31.2222 42.1558 30.2261 40.9839 29.7427C39.9731 29.4058 38.6841 29.2373 37.1167 29.2373H29.9976V36.3784H37.9517C39.3726 36.3784 40.5298 36.1074 41.4233 35.5654ZM77.1412 41.8496H61.4088V50.1772H79.3385V56H54.795V23.6123H78.5475V29.3472H61.4088V36.2246H77.1412V41.8496ZM97.0168 43.2998H90.0295V56H83.4157V23.6123H99.302C101.572 23.6562 103.316 23.9346 104.531 24.4473C105.762 24.96 106.802 25.7144 107.652 26.7104C108.355 27.5308 108.911 28.439 109.321 29.4351C109.732 30.4312 109.937 31.5664 109.937 32.8408C109.937 34.3789 109.549 35.895 108.772 37.3892C107.996 38.8687 106.714 39.916 104.927 40.5312C106.421 41.1318 107.476 41.9888 108.091 43.1021C108.721 44.2007 109.036 45.8853 109.036 48.1558V50.3311C109.036 51.8105 109.094 52.814 109.212 53.3413C109.387 54.1763 109.798 54.7915 110.442 55.187V56H102.993C102.788 55.2822 102.642 54.7036 102.554 54.2642C102.378 53.356 102.283 52.4258 102.268 51.4736L102.224 48.4634C102.195 46.3979 101.814 45.021 101.082 44.3325C100.364 43.644 99.009 43.2998 97.0168 43.2998ZM101.126 37.4111C102.473 36.7959 103.147 35.5801 103.147 33.7637C103.147 31.8008 102.495 30.4824 101.192 29.8086C100.459 29.4277 99.3605 29.2373 97.8957 29.2373H90.0295V37.9385H97.6979C99.2214 37.9385 100.364 37.7627 101.126 37.4111Z\",\n fill: \"white\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_2805_42\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 223,\n height: 80,\n fill: \"white\"\n })))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgDodberf);\nexport default __webpack_public_path__ + \"static/media/DOD BER F.cd2addaabbaf656a4948e2a62c3c1d5d.svg\";\nexport { ForwardRef as ReactComponent };","var _g, _defs;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgDodberg(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 223,\n height: 80,\n viewBox: \"0 0 223 80\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_2805_49)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 0H206.5L223 40L206.5 80H0V0Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10 10H116.5L130 40L116.5 70H10V10Z\",\n fill: \"black\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M125 10H201.095L213 40L201.095 70H125L139 40L125 10Z\",\n fill: \"#ED1C24\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M174.291 55.209C172.504 56.3076 170.307 56.8569 167.699 56.8569C163.407 56.8569 159.892 55.3701 157.152 52.3965C154.296 49.4082 152.868 45.3213 152.868 40.1357C152.868 34.8916 154.311 30.6875 157.196 27.5234C160.082 24.3594 163.898 22.7773 168.644 22.7773C172.76 22.7773 176.063 23.8247 178.554 25.9194C181.059 27.9995 182.494 30.5996 182.86 33.7197H176.203C175.69 31.5078 174.438 29.9624 172.445 29.0835C171.332 28.6001 170.094 28.3584 168.732 28.3584C166.125 28.3584 163.979 29.3472 162.294 31.3247C160.624 33.2876 159.789 36.2466 159.789 40.2017C159.789 44.186 160.697 47.0059 162.514 48.6611C164.33 50.3164 166.396 51.144 168.71 51.144C170.98 51.144 172.841 50.4922 174.291 49.1885C175.741 47.8701 176.635 46.1489 176.972 44.0249H169.479V38.6196H182.97V56H178.488L177.807 51.957C176.503 53.4951 175.331 54.5791 174.291 55.209Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M38.2153 56H23.5376V23.6123H39.27C43.2397 23.6709 46.0522 24.8208 47.7075 27.062C48.7036 28.439 49.2017 30.0869 49.2017 32.0059C49.2017 33.9834 48.7036 35.5728 47.7075 36.7739C47.1509 37.4478 46.3306 38.063 45.2466 38.6196C46.9019 39.2202 48.147 40.1724 48.9819 41.4761C49.8315 42.7798 50.2563 44.3618 50.2563 46.2222C50.2563 48.1411 49.7729 49.8623 48.8062 51.3857C48.1909 52.3965 47.4219 53.2461 46.499 53.9346C45.459 54.7256 44.2285 55.2676 42.8076 55.5605C41.4014 55.8535 39.8706 56 38.2153 56ZM38.0615 41.7397H29.9976V50.375H37.9517C39.3726 50.375 40.4785 50.1846 41.2695 49.8037C42.7051 49.1006 43.4229 47.7529 43.4229 45.7607C43.4229 44.0762 42.7271 42.9189 41.3354 42.2891C40.5591 41.9375 39.4678 41.7544 38.0615 41.7397ZM41.4233 35.5654C42.3022 35.0381 42.7417 34.0933 42.7417 32.731C42.7417 31.2222 42.1558 30.2261 40.9839 29.7427C39.9731 29.4058 38.6841 29.2373 37.1167 29.2373H29.9976V36.3784H37.9517C39.3726 36.3784 40.5298 36.1074 41.4233 35.5654ZM77.1412 41.8496H61.4088V50.1772H79.3385V56H54.795V23.6123H78.5475V29.3472H61.4088V36.2246H77.1412V41.8496ZM97.0168 43.2998H90.0295V56H83.4157V23.6123H99.302C101.572 23.6562 103.316 23.9346 104.531 24.4473C105.762 24.96 106.802 25.7144 107.652 26.7104C108.355 27.5308 108.911 28.439 109.321 29.4351C109.732 30.4312 109.937 31.5664 109.937 32.8408C109.937 34.3789 109.549 35.895 108.772 37.3892C107.996 38.8687 106.714 39.916 104.927 40.5312C106.421 41.1318 107.476 41.9888 108.091 43.1021C108.721 44.2007 109.036 45.8853 109.036 48.1558V50.3311C109.036 51.8105 109.094 52.814 109.212 53.3413C109.387 54.1763 109.798 54.7915 110.442 55.187V56H102.993C102.788 55.2822 102.642 54.7036 102.554 54.2642C102.378 53.356 102.283 52.4258 102.268 51.4736L102.224 48.4634C102.195 46.3979 101.814 45.021 101.082 44.3325C100.364 43.644 99.009 43.2998 97.0168 43.2998ZM101.126 37.4111C102.473 36.7959 103.147 35.5801 103.147 33.7637C103.147 31.8008 102.495 30.4824 101.192 29.8086C100.459 29.4277 99.3605 29.2373 97.8957 29.2373H90.0295V37.9385H97.6979C99.2214 37.9385 100.364 37.7627 101.126 37.4111Z\",\n fill: \"white\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_2805_49\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 223,\n height: 80,\n fill: \"white\"\n })))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgDodberg);\nexport default __webpack_public_path__ + \"static/media/DOD BER G.c22d5320c9bcc44a8ed39048bdf5317c.svg\";\nexport { ForwardRef as ReactComponent };","var _g, _defs;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgDodberIdle(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 223,\n height: 80,\n viewBox: \"0 0 223 80\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_2805_9)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 0H206.5L223 40L206.5 80H0V0Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10 10H116.5L130 40L116.5 70H10V10Z\",\n fill: \"black\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M125 10H201.095L213 40L201.095 70H125L139 40L125 10Z\",\n fill: \"#DBC8BD\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M38.2153 56H23.5376V23.6123H39.27C43.2397 23.6709 46.0522 24.8208 47.7075 27.062C48.7036 28.439 49.2017 30.0869 49.2017 32.0059C49.2017 33.9834 48.7036 35.5728 47.7075 36.7739C47.1509 37.4478 46.3306 38.063 45.2466 38.6196C46.9019 39.2202 48.147 40.1724 48.9819 41.4761C49.8315 42.7798 50.2563 44.3618 50.2563 46.2222C50.2563 48.1411 49.7729 49.8623 48.8062 51.3857C48.1909 52.3965 47.4219 53.2461 46.499 53.9346C45.459 54.7256 44.2285 55.2676 42.8076 55.5605C41.4014 55.8535 39.8706 56 38.2153 56ZM38.0615 41.7397H29.9976V50.375H37.9517C39.3726 50.375 40.4785 50.1846 41.2695 49.8037C42.7051 49.1006 43.4229 47.7529 43.4229 45.7607C43.4229 44.0762 42.7271 42.9189 41.3354 42.2891C40.5591 41.9375 39.4678 41.7544 38.0615 41.7397ZM41.4233 35.5654C42.3022 35.0381 42.7417 34.0933 42.7417 32.731C42.7417 31.2222 42.1558 30.2261 40.9839 29.7427C39.9731 29.4058 38.6841 29.2373 37.1167 29.2373H29.9976V36.3784H37.9517C39.3726 36.3784 40.5298 36.1074 41.4233 35.5654ZM77.1412 41.8496H61.4088V50.1772H79.3385V56H54.795V23.6123H78.5475V29.3472H61.4088V36.2246H77.1412V41.8496ZM97.0168 43.2998H90.0295V56H83.4157V23.6123H99.302C101.572 23.6562 103.316 23.9346 104.531 24.4473C105.762 24.96 106.802 25.7144 107.652 26.7104C108.355 27.5308 108.911 28.439 109.321 29.4351C109.732 30.4312 109.937 31.5664 109.937 32.8408C109.937 34.3789 109.549 35.895 108.772 37.3892C107.996 38.8687 106.714 39.916 104.927 40.5312C106.421 41.1318 107.476 41.9888 108.091 43.1021C108.721 44.2007 109.036 45.8853 109.036 48.1558V50.3311C109.036 51.8105 109.094 52.814 109.212 53.3413C109.387 54.1763 109.798 54.7915 110.442 55.187V56H102.993C102.788 55.2822 102.642 54.7036 102.554 54.2642C102.378 53.356 102.283 52.4258 102.268 51.4736L102.224 48.4634C102.195 46.3979 101.814 45.021 101.082 44.3325C100.364 43.644 99.009 43.2998 97.0168 43.2998ZM101.126 37.4111C102.473 36.7959 103.147 35.5801 103.147 33.7637C103.147 31.8008 102.495 30.4824 101.192 29.8086C100.459 29.4277 99.3605 29.2373 97.8957 29.2373H90.0295V37.9385H97.6979C99.2214 37.9385 100.364 37.7627 101.126 37.4111Z\",\n fill: \"white\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_2805_9\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 223,\n height: 80,\n fill: \"white\"\n })))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgDodberIdle);\nexport default __webpack_public_path__ + \"static/media/DOD BER Idle.8b36d2ff9a1cc36c4911f88ac8cfdf4b.svg\";\nexport { ForwardRef as ReactComponent };","import React, { Component } from \"react\";\r\nimport { berRatings } from \"../helper/lists.js\";\r\nimport \"./../pages/Calculators.css\";\r\nimport { Row } from \"react-bootstrap\";\r\nimport { ReactComponent as BERA } from \"./SVG/DOD BER A.svg\";\r\nimport { ReactComponent as BERB } from \"./SVG/DOD BER B.svg\";\r\nimport { ReactComponent as BERC } from \"./SVG/DOD BER C.svg\";\r\nimport { ReactComponent as BERD } from \"./SVG/DOD BER D.svg\";\r\nimport { ReactComponent as BERE } from \"./SVG/DOD BER E.svg\";\r\nimport { ReactComponent as BERF } from \"./SVG/DOD BER F.svg\";\r\nimport { ReactComponent as BERG } from \"./SVG/DOD BER G.svg\";\r\nimport { ReactComponent as BERIDLE } from \"./SVG/DOD BER Idle.svg\";\r\n\r\ninterface IProps {\r\n label?: any;\r\n ber?: string;\r\n classes?: string;\r\n height?: number;\r\n}\r\n\r\nexport class BerImage extends Component<IProps, any> {\r\n render() {\r\n const ratio = 223 / 80; // this was the size of the svgs provided\r\n return (\r\n <div className=\"calc-grid justify-left select\">\r\n <Row>\r\n {this.props.label && (\r\n <label className=\"calculator-labels\" htmlFor=\"ber\">\r\n {this.props.label}\r\n </label>\r\n )}\r\n </Row>\r\n <div className=\"text-start\">\r\n {this.props.ber === \"A\" ? (\r\n <BERA\r\n height={this.props.height ?? 50}\r\n width={(this.props.height ?? 50) * ratio}\r\n />\r\n ) : this.props.ber === \"B\" ? (\r\n <BERB\r\n height={this.props.height ?? 50}\r\n width={(this.props.height ?? 50) * ratio}\r\n />\r\n ) : this.props.ber === \"C\" ? (\r\n <BERC\r\n height={this.props.height ?? 50}\r\n width={(this.props.height ?? 50) * ratio}\r\n />\r\n ) : this.props.ber === \"D\" ? (\r\n <BERD\r\n height={this.props.height ?? 50}\r\n width={(this.props.height ?? 50) * ratio}\r\n />\r\n ) : this.props.ber === \"E\" ? (\r\n <BERE\r\n height={this.props.height ?? 50}\r\n width={(this.props.height ?? 50) * ratio}\r\n />\r\n ) : this.props.ber === \"F\" ? (\r\n <BERF\r\n height={this.props.height ?? 50}\r\n width={(this.props.height ?? 50) * ratio}\r\n />\r\n ) : this.props.ber === \"G\" ? (\r\n <BERG\r\n height={this.props.height ?? 50}\r\n width={(this.props.height ?? 50) * ratio}\r\n />\r\n ) : (\r\n <BERIDLE\r\n height={this.props.height ?? 50}\r\n width={(this.props.height ?? 50) * ratio}\r\n />\r\n )}\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\n","import axios from \"axios\";\r\nimport {\r\n Col,\r\n Container,\r\n Modal,\r\n Nav,\r\n Navbar,\r\n Row,\r\n Stack,\r\n} from \"react-bootstrap\";\r\nimport UserContextState, { CalculatorState, UserContext } from \"./UserContext\";\r\nimport { Link, Navigate } from \"react-router-dom\";\r\nimport logo from \"../doddl-brand-logo.svg\";\r\nimport {\r\n MortgageStatus,\r\n MortgageType,\r\n YesNoBlank,\r\n} from \"../models/PortalMortgageModel\";\r\nimport { UserContextComponent } from \"./UserContextComponent\";\r\nimport React from \"react\";\r\nimport { logger } from \"../helper/Logger\";\r\nimport { SharedFieldsCollection } from \"../forms/SharedFields\";\r\nimport { TimelineItemStatus } from \"./Timeline\";\r\nimport { InsuranceQuoteButton } from \"./AIP/InsuranceQuoteButton\";\r\nimport * as Icons from \"react-bootstrap\";\r\nimport {\r\n AIPDDLStatus,\r\n AIPType,\r\n PortalAIPApplicationModel,\r\n} from \"../models/PortalAIPApplication\";\r\nimport { FormControl } from \"./FormControl\";\r\nimport { PortalContactModel } from \"../models/PortalContactModel\";\r\nimport FormattedDate from \"./FormattedDate\";\r\nimport { CalculatorFieldsCollection } from \"../forms/CalculatorFields\";\r\nimport { NumberInput } from \"./NumberInput\";\r\nimport { berRatings } from \"../helper/lists\";\r\nimport { TermSelect } from \"./TermSelect\";\r\nimport { BerSelect } from \"./BerSelect\";\r\nimport { BooleanInput } from \"./BooleanInput\";\r\nimport FormRange from \"react-bootstrap/esm/FormRange\";\r\nimport { BerImage } from \"./BerImage\";\r\n\r\ninterface IApplicantMenu {\r\n Applicant: any;\r\n Personal: any;\r\n Residential: any;\r\n Employment: any;\r\n Financial: any;\r\n AssetsAndLoans: any;\r\n}\r\n\r\ninterface ISideNavState {\r\n loading: boolean;\r\n isCompleted: boolean;\r\n activeKey: string;\r\n activeAppKey: string | null;\r\n applicants: PortalContactModel[];\r\n show: boolean;\r\n expanded?: boolean;\r\n stageSelected?: number;\r\n refreshToggle?: boolean;\r\n aipStatus?: any;\r\n conditions?: any;\r\n clarifications?: any;\r\n conditionsLoaded?: boolean;\r\n redirectToPropertyPage?: boolean;\r\n savingCloseDate?: boolean;\r\n sharedFields: SharedFieldsCollection;\r\n closeDateCollapsed: boolean;\r\n showSaleAgreedModal: boolean;\r\n savingSaleAgreed?: boolean;\r\n calculatorFields: CalculatorFieldsCollection;\r\n homeValue: number;\r\n mortgageAmount: number;\r\n term: number;\r\n berRating?: string;\r\n cashbackOnly: boolean;\r\n homeValueSliderRef: any;\r\n mortgageAmountSliderRef: any;\r\n termSliderRef: any;\r\n berSliderRef: any;\r\n}\r\n\r\nexport class SideNav extends UserContextComponent<any, ISideNavState> {\r\n static contextType = UserContext;\r\n\r\n static menu = {\r\n Dashboard: { Title: \"Dashboard\", Key: \"/dashboard\" },\r\n Profile: { Title: \"Apply\", Key: \"/profile\" },\r\n // Property: {Title: \"Property Details\", Key: \"/property\"},\r\n AIP: { Title: \"Approval\", Key: \"/aip-application\" },\r\n Completion: { Title: \"Completion\", Key: \"/completion\" },\r\n SharedDetails: { Title: \"SharedDetails\", Key: \"/shared-details\" },\r\n Documents: { Title: \"Documents\", Key: \"/documents\" },\r\n LenderConfirmation: {\r\n Title: \"Lender Confirmation\",\r\n Key: \"/lender-confirmation\",\r\n },\r\n };\r\n\r\n static appMenu = {\r\n Dashboard: {\r\n Title: \"Dashboard\",\r\n Key: \"/dashboard\",\r\n ParentKey: this.menu.Profile.Key,\r\n Stage: 0,\r\n step: 0,\r\n },\r\n\r\n // Profile / Applicant 1 and Applicant 2 menus\r\n GetMortgageApproval: {\r\n Title: \"Get mortgage approval\",\r\n Key: \"GetMortgageApproval\",\r\n ParentKey: this.menu.Profile.Key,\r\n Stage: 1,\r\n Step: 0,\r\n },\r\n // Applicant 1\r\n Applicant1: {\r\n Title: \"Applicant1\",\r\n Key: \"/personal1\",\r\n ParentKey: this.menu.Profile.Key,\r\n Stage: 1,\r\n step: 0,\r\n Icon: \"far fa-user\",\r\n },\r\n Personal1: {\r\n Title: \"Personal information\",\r\n Key: \"/personal1\",\r\n ParentKey: this.menu.Profile.Key,\r\n Stage: 1,\r\n step: 1,\r\n Icon: \"far fa-address-book\",\r\n },\r\n Residential1: {\r\n Title: \"Housing history\",\r\n Key: \"/residential1\",\r\n ParentKey: this.menu.Profile.Key,\r\n Stage: 1,\r\n step: 2,\r\n Icon: \"fas fa-clock-rotate-left\",\r\n },\r\n Employment1: {\r\n Title: \"Employment & income\",\r\n Key: \"/employment1\",\r\n ParentKey: this.menu.Profile.Key,\r\n Stage: 1,\r\n step: 3,\r\n Icon: \"far fa-money-bill-1\",\r\n },\r\n\r\n //Financial1: {Title: \"Assets, savings & loans\", Key: \"/financial1\", ParentKey: this.menu.Profile.Key, Stage: 1, step: 4, Icon: \"fas fa-briefcase\"},\r\n Financial1: {\r\n Title: \"Bank Details\",\r\n Key: \"/financial1\",\r\n ParentKey: this.menu.Profile.Key,\r\n Stage: 1,\r\n step: 4,\r\n Icon: \"fas fa-building-columns\",\r\n },\r\n AssetsAndLoans1: {\r\n Title: \"Assets & loans\",\r\n Key: \"/assetsandloans1\",\r\n ParentKey: this.menu.Profile.Key,\r\n Stage: 1,\r\n step: 5,\r\n Icon: \"fas fa-briefcase\",\r\n },\r\n\r\n // Applicant 2\r\n Applicant2: {\r\n Title: \"Applicant2\",\r\n Key: \"/personal2\",\r\n ParentKey: this.menu.Profile.Key,\r\n Stage: 2,\r\n step: 0,\r\n Icon: \"far fa-user\",\r\n },\r\n Personal2: {\r\n Title: \"Personal information\",\r\n Key: \"/personal2\",\r\n ParentKey: this.menu.Profile.Key,\r\n Stage: 2,\r\n step: 1,\r\n Icon: \"far fa-address-book\",\r\n },\r\n Residential2: {\r\n Title: \"Housing history\",\r\n Key: \"/residential2\",\r\n ParentKey: this.menu.Profile.Key,\r\n Stage: 2,\r\n step: 2,\r\n Icon: \"fas fa-clock-rotate-left\",\r\n },\r\n Employment2: {\r\n Title: \"Employment & income\",\r\n Key: \"/employment2\",\r\n ParentKey: this.menu.Profile.Key,\r\n Stage: 2,\r\n step: 3,\r\n Icon: \"far fa-money-bill-1\",\r\n },\r\n\r\n //Financial2: {Title: \"Assets, savings & loans\", Key: \"/financial2\", ParentKey: this.menu.Profile.Key, Stage: 2, step: 4, Icon: \"fas fa-briefcase\"},\r\n Financial2: {\r\n Title: \"Bank Details\",\r\n Key: \"/financial2\",\r\n ParentKey: this.menu.Profile.Key,\r\n Stage: 2,\r\n step: 4,\r\n Icon: \"fas fa-building-columns\",\r\n },\r\n AssetsAndLoans2: {\r\n Title: \"Assets & loans\",\r\n Key: \"/assetsandloans2\",\r\n ParentKey: this.menu.Profile.Key,\r\n Stage: 2,\r\n step: 5,\r\n Icon: \"fas fa-briefcase\",\r\n },\r\n\r\n // Shared profile info\r\n MortgageDetails: {\r\n Title: \"Mortgage requirement\",\r\n Key: \"/shared\",\r\n ParentKey: this.menu.Profile.Key,\r\n Stage: 3,\r\n step: 0,\r\n Icon: \"fas fa-coins\",\r\n },\r\n Mortgage: {\r\n Title: \"Mortgage requirement\",\r\n Key: \"/shared\",\r\n ParentKey: this.menu.Profile.Key,\r\n Stage: 3,\r\n step: 1,\r\n Icon: \"fas fa-coins\",\r\n },\r\n Documents: {\r\n Title: \"Your documents\",\r\n Key: \"/documents\",\r\n ParentKey: this.menu.Profile.Key,\r\n Stage: 3,\r\n step: 1,\r\n Icon: \"far fa-folder-open\",\r\n },\r\n\r\n // Profile part 2\r\n GetReadyForSaleAgreed: {\r\n Title: \"Get ready for going Sale Agreed!\",\r\n Key: \"GetReadyForSaleAgreed\",\r\n ParentKey: this.menu.Profile.Key,\r\n Stage: 3,\r\n Step: 0,\r\n },\r\n OtherImportantInfo: {\r\n Title: \"Other important information required:\",\r\n Key: \"OtherImportantInfoReq\",\r\n ParentKey: this.menu.Profile.Key,\r\n Stage: 3,\r\n Step: 0,\r\n },\r\n Property: {\r\n Title: \"Add property details\",\r\n Key: \"/property\",\r\n ParentKey: this.menu.Profile.Key,\r\n Stage: 3,\r\n step: 2,\r\n Icon: \"fas fa-home\",\r\n },\r\n Solicitor: {\r\n Title: \"Appoint your solicitor\",\r\n Key: \"/solicitor-details\",\r\n ParentKey: this.menu.Profile.Key,\r\n Stage: 3,\r\n step: 3,\r\n Icon: \"fas fa-gavel\",\r\n NoHover: true,\r\n },\r\n LifeCover: {\r\n Title: \"Get life cover\",\r\n Key: \"#LifeCover\",\r\n ParentKey: this.menu.Profile.Key,\r\n Stage: 3,\r\n step: 4,\r\n Icon: \"fas fa-heart-pulse\",\r\n NoHover: true,\r\n },\r\n SaleAgreed: {\r\n Title: \"Are you Sale Agreed?\",\r\n Key: \"#SaleAgreed\",\r\n ParentKey: this.menu.Profile.Key,\r\n Stage: 3,\r\n Step: 5,\r\n Icon: \"far fa-handshake\",\r\n },\r\n LenderConfirmation: {\r\n Title: \"Lender Confirmation\",\r\n Key: \"/lender-confirmation\",\r\n ParentKey: this.menu.Profile.Key,\r\n Stage: 5,\r\n step: 1,\r\n },\r\n\r\n // Other Resources Menu\r\n OtherResources: {\r\n Title: \"Other resources:\",\r\n Key: \"OtherResources\",\r\n ParentKey: this.menu.Profile.Key,\r\n Stage: 6,\r\n Step: 0,\r\n },\r\n // PurchaserCalculator: {\r\n // Title: \"Purchaser Calculator\",\r\n // Key: \"/calculators/purchaser\",\r\n // ParentKey: this.menu.Profile.Key,\r\n // Stage: 7,\r\n // step: 1,\r\n // Icon: \"fas fa-piggy-bank\",\r\n // },\r\n // SwitcherCalculator: {\r\n // Title: \"Switcher Calculator\",\r\n // Key: \"/calculators/switcher\",\r\n // ParentKey: this.menu.Profile.Key,\r\n // Stage: 8,\r\n // step: 1,\r\n // Icon: \"fas fa-calculator\",\r\n // },\r\n MortgageCalculator: {\r\n Title: \"Mortgage Calculator\",\r\n Key: \"/calculators/mortgage\",\r\n ParentKey: this.menu.Profile.Key,\r\n Stage: 8,\r\n step: 1,\r\n Icon: \"fas fa-calculator\",\r\n },\r\n\r\n // API Menus (it shares the \"Get mortgage Approval\" header and the \"Other important info\" sub menu)\r\n Profile: {\r\n Title: \"Complete application\",\r\n Key: \"/profile\",\r\n ParentKey: this.menu.Profile.Key,\r\n Stage: 0,\r\n step: 0,\r\n },\r\n AIP: {\r\n Title: \"Get AIP\",\r\n Key: this.menu.AIP.Key,\r\n ParentKey: this.menu.AIP.Key,\r\n Stage: 6,\r\n step: 1,\r\n },\r\n\r\n // Completion Menus / Checklist items\r\n Completion: {\r\n Title: this.menu.Completion.Title,\r\n Key: this.menu.Completion.Key,\r\n ParentKey: this.menu.Completion.Key,\r\n Stage: 7,\r\n step: 1,\r\n },\r\n SaleAgreedCompletions: {\r\n Title: \"Go sale agreed\",\r\n Key: \"#SaleAgreed\",\r\n ParentKey: this.menu.Profile.Key,\r\n Stage: 3,\r\n Step: 5,\r\n Icon: \"fa fa-child-reaching\",\r\n },\r\n ComleteOnYourMortgage: {\r\n Title: \"Complete on your mortgage\",\r\n Key: this.menu.Completion.Key,\r\n ParentKey: this.menu.Completion.Key,\r\n Stage: 7,\r\n step: 2,\r\n },\r\n SecureMortgage: {\r\n Title: \"Secure mortgage offer\",\r\n Key: this.menu.Completion.Key,\r\n ParentKey: this.menu.Completion.Key,\r\n Stage: 7,\r\n step: 2,\r\n },\r\n ConfirmChosenLender: {\r\n Title: \"Confirm chosen lender\",\r\n Key: \"ConfirmChosenLender\",\r\n ParentKey: this.menu.Completion.Key,\r\n Stage: 1,\r\n step: 1,\r\n Icon: \"far fa-circle-check\",\r\n },\r\n GetLetterOfOffer: {\r\n Title: \"Get letter of offer\",\r\n Key: \"GetLetterOfOffer\",\r\n ParentKey: this.menu.Completion.Key,\r\n Stage: 1,\r\n step: 1,\r\n Icon: \"far fa-envelope\",\r\n },\r\n DownloadEsis: {\r\n Title: \"Download ESIS\",\r\n Key: \"DownloadEsis\",\r\n ParentKey: this.menu.Completion.Key,\r\n Stage: 1,\r\n step: 1,\r\n Icon: \"fa fa-earth-europe\",\r\n },\r\n DownloadCostOfCredit: {\r\n Title: \"Download Cost of Credit\",\r\n Key: \"DownloadCostOfCredit\",\r\n ParentKey: this.menu.Completion.Key,\r\n Stage: 1,\r\n step: 1,\r\n Icon: \"fa fa-coins\",\r\n },\r\n CompletionDocs: {\r\n Title: \"Mortgage completion docs\",\r\n Key: \"/documents\" /*'CompletionDocs'*/,\r\n ParentKey: this.menu.Completion.Key,\r\n Stage: 3,\r\n step: 1,\r\n Icon: \"fa fa-book\",\r\n },\r\n ConfirmSolicitorHasDeeds: {\r\n Title: \"Confirm solicitor has title deeds\",\r\n Key: \"ConfirmSolicitorHasDeeds\",\r\n ParentKey: this.menu.Completion.Key,\r\n Stage: 1,\r\n step: 1,\r\n Icon: \"far fa-bookmark\",\r\n },\r\n FinalSteps: {\r\n Title: \"Final steps\",\r\n Key: \"FinalSteps\",\r\n ParentKey: this.menu.Completion.Key,\r\n Stage: 7,\r\n step: 2,\r\n },\r\n MeetSolicitor: {\r\n Title: \"Meet solicitor for signing\",\r\n Key: \"MeetSolicitor\",\r\n ParentKey: this.menu.Completion.Key,\r\n Stage: 1,\r\n step: 1,\r\n Icon: \"far fa-handshake\",\r\n },\r\n AgreeClosing: {\r\n Title: \"Current estimated closing\",\r\n Key: \"AgreeClosing\",\r\n ParentKey: this.menu.Completion.Key,\r\n Stage: 1,\r\n step: 1,\r\n Icon: \"far fa-calendar-plus\",\r\n },\r\n FundRelease: {\r\n Title: \"Bank releases funds\",\r\n Key: \"FundRelease\",\r\n ParentKey: this.menu.Completion.Key,\r\n Stage: 1,\r\n step: 1,\r\n Icon: \"fa fa-flag-checkered\",\r\n },\r\n };\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.refreshMenuState = this.refreshMenuState.bind(this);\r\n this.handleSelect = this.handleSelect.bind(this);\r\n this.titleCol = this.titleCol.bind(this);\r\n this.fullTitleCol = this.fullTitleCol.bind(this);\r\n this.percCol = this.percCol.bind(this);\r\n this.renderOtherItemsOfImportanceMenu =\r\n this.renderOtherItemsOfImportanceMenu.bind(this);\r\n this.renderApplicantMenu = this.renderApplicantMenu.bind(this);\r\n this.saleAgreedNav = this.saleAgreedNav.bind(this);\r\n this.confirmTitleDeeds = this.confirmTitleDeeds.bind(this);\r\n this.metWithSolicitor = this.metWithSolicitor.bind(this);\r\n this.setClientAdvisedClosingDate =\r\n this.setClientAdvisedClosingDate.bind(this);\r\n\r\n let key = window.location.pathname.toLocaleLowerCase();\r\n\r\n this.state = {\r\n loading: true,\r\n applicants: [],\r\n isCompleted: false,\r\n show: false,\r\n activeKey: key,\r\n activeAppKey: SideNav.appMenu.Applicant1.Key,\r\n sharedFields: new SharedFieldsCollection(),\r\n closeDateCollapsed: true,\r\n showSaleAgreedModal: false,\r\n calculatorFields: new CalculatorFieldsCollection(),\r\n homeValue: 0,\r\n mortgageAmount: 0,\r\n term: 25,\r\n berRating: \"Don't know\",\r\n cashbackOnly: false,\r\n homeValueSliderRef: React.createRef(),\r\n mortgageAmountSliderRef: React.createRef(),\r\n termSliderRef: React.createRef(),\r\n berSliderRef: React.createRef(),\r\n };\r\n }\r\n\r\n componentDidMount(): void {\r\n let context = this.getContext();\r\n context.refreshMenuState = this.refreshMenuState;\r\n this.state.sharedFields.loadData(context.mortgage, [], true, null);\r\n this.populateData();\r\n }\r\n\r\n componentDidUpdate() {\r\n if (this.state.applicants && this.state.applicants.length > 0)\r\n this.appMenuSetup();\r\n\r\n let key = window.location.pathname.toLocaleLowerCase();\r\n //if (key.startsWith(\"/applicant\")) key = \"/profile\";\r\n let activeAppKey = this.findAppKey(key);\r\n if (activeAppKey) {\r\n if (\r\n activeAppKey.ParentKey !== this.state.activeKey ||\r\n activeAppKey.Key !== this.state.activeAppKey\r\n ) {\r\n this.setState({\r\n activeKey: activeAppKey.ParentKey,\r\n activeAppKey: activeAppKey.Key,\r\n stageSelected: activeAppKey.Stage,\r\n });\r\n }\r\n } else if (\r\n this.state.activeKey !== key ||\r\n this.state.activeAppKey !== null\r\n ) {\r\n this.setState({ activeKey: key, activeAppKey: null });\r\n }\r\n }\r\n\r\n findAppKey(key: string) {\r\n let appMenuAsArray = Object.values(SideNav.appMenu);\r\n let item = appMenuAsArray.filter((i: any) => i.Key === key);\r\n if (item.length > 0) return item[0];\r\n return null;\r\n }\r\n\r\n handleSelect(key: any) {\r\n logger.log(key);\r\n this.setState({ activeKey: key, activeAppKey: key, expanded: false });\r\n }\r\n\r\n handleAppSelect(menuItem: any) {\r\n logger.log(menuItem.Key);\r\n this.setState({\r\n activeKey: menuItem.ParentKey,\r\n activeAppKey: menuItem.Key,\r\n stageSelected: menuItem.Stage,\r\n });\r\n }\r\n\r\n handleStep(stage: number, activeKey: string) {\r\n logger.log(stage.toString() + \" \" + activeKey);\r\n this.setState({ activeKey: activeKey, stageSelected: stage });\r\n }\r\n\r\n appMenuSetup(): void {\r\n let context = this.getContext();\r\n const applicants = this.state.applicants;\r\n let contact1 = context.mortgage?.primaryApplicant ?? applicants[0];\r\n let contact2 = context.mortgage?.secondaryApplicant ?? applicants[1];\r\n if (contact1) {\r\n SideNav.appMenu.Applicant1.Title = contact1.firstName;\r\n }\r\n if (contact2) {\r\n SideNav.appMenu.Applicant2.Title = contact2.firstName;\r\n }\r\n }\r\n\r\n refreshMenuState() {\r\n this.setState({ refreshToggle: !this.state.refreshToggle });\r\n }\r\n\r\n async populateData() {\r\n const context = this.context as UserContextState;\r\n if (context.contact === null || !context.contact.mortgageId) return;\r\n\r\n this.setState({\r\n mortgageAmount: context.mortgage?.mortgageAmountProposed ?? 0,\r\n homeValue:\r\n context.mortgage?.propertyValue ?? context.mortgage?.purchasePrice ?? 0,\r\n berRating:\r\n berRatings.find((x) => x.value === context.mortgage?.berRating)?.name ??\r\n \"Don't know\",\r\n term: context.mortgage?.mortgageTerm || 25,\r\n });\r\n\r\n axios\r\n .get(\r\n \"/mortgages/GetMortgageApplicants?mortgageId=\" +\r\n context.contact.mortgageId\r\n )\r\n .then((response) => {\r\n this.appMenuSetup();\r\n this.setState({ applicants: response.data, loading: false });\r\n })\r\n .catch((error) => {\r\n if (error.response.statusCode === 401) {\r\n alert(\"Unauthorized\");\r\n }\r\n });\r\n\r\n axios\r\n .get(\r\n \"/AIPApplications/GetAIPApplicationsByMortgageId?mortgageId=\" +\r\n context.contact.mortgageId\r\n )\r\n .then((response) => {\r\n let aips: PortalAIPApplicationModel[] = response.data;\r\n aips.forEach((e) => {\r\n e.clarifications = e.clarifications.filter((c) => !c.completed);\r\n });\r\n var status = 0;\r\n if (\r\n aips.filter((a) =>\r\n [AIPDDLStatus.Proceeding, AIPDDLStatus.ApprovedByLender].includes(\r\n a.aipDdlStatus\r\n )\r\n ).length > 0\r\n ) {\r\n status = 100;\r\n } else if (\r\n aips.filter((a) =>\r\n [AIPDDLStatus.Clarification, AIPDDLStatus.Submitted].includes(\r\n a.aipDdlStatus\r\n )\r\n ).length > 0\r\n ) {\r\n status = 50;\r\n }\r\n\r\n this.setState({ aipStatus: status });\r\n });\r\n }\r\n\r\n async refresher() {\r\n const context = this.context as UserContextState;\r\n if (context.contact === null || !context.contact.mortgageId) {\r\n setTimeout(() => this.refresher(), 500);\r\n }\r\n this.populateData();\r\n }\r\n\r\n circle(progress: string) {\r\n if (progress === \"notstarted\") return \"far fa-circle\";\r\n if (progress === \"inprogress\") return \"fas fa-circle\";\r\n return \"fas fa-circle\";\r\n }\r\n\r\n fullTitleCol(menuItem: any) {\r\n return (\r\n <Col className={`pt-1 nav-text nav-title text-start nopointer`}>\r\n {menuItem.Icon ? (\r\n <i className={`${menuItem.Icon} nav-icon-sub`}></i>\r\n ) : (\r\n <></>\r\n )}{\" \"}\r\n {menuItem.Title}\r\n </Col>\r\n );\r\n }\r\n\r\n titleCol(menuItem: any, activeCompletions?: any) {\r\n var stateClass = \"\";\r\n var headersList = [\r\n SideNav.appMenu.GetMortgageApproval.Key,\r\n SideNav.appMenu.GetReadyForSaleAgreed.Key,\r\n SideNav.appMenu.OtherImportantInfo.Key,\r\n SideNav.appMenu.OtherResources.Key,\r\n SideNav.appMenu.ComleteOnYourMortgage.Key,\r\n SideNav.appMenu.FinalSteps.Key,\r\n ];\r\n var noHoversList = [\r\n SideNav.appMenu.GetMortgageApproval.Key,\r\n SideNav.appMenu.GetReadyForSaleAgreed.Key,\r\n SideNav.appMenu.OtherImportantInfo.Key,\r\n SideNav.appMenu.OtherResources.Key,\r\n SideNav.appMenu.LifeCover.Key,\r\n SideNav.appMenu.SaleAgreed.Key,\r\n SideNav.appMenu.Property.Key,\r\n SideNav.appMenu.Solicitor.Key,\r\n ];\r\n\r\n if (\r\n menuItem.Key === this.state.activeAppKey &&\r\n menuItem.ParentKey === this.state.activeKey &&\r\n menuItem.Key !== SideNav.appMenu.Completion.Key\r\n ) {\r\n // BANDAID - need to figure out a better way to do this\r\n if (\r\n menuItem.ParentKey != SideNav.menu.Profile.Key ||\r\n menuItem.step != 0\r\n ) {\r\n stateClass = \"selected\";\r\n }\r\n }\r\n if (activeCompletions === menuItem.Key) {\r\n stateClass = \"selected\";\r\n }\r\n if (headersList.includes(menuItem.Key)) {\r\n stateClass = \"header\";\r\n }\r\n if (noHoversList.includes(menuItem.Key)) {\r\n stateClass += \" nohover nopointer\";\r\n }\r\n if (\r\n menuItem.Key === SideNav.appMenu.Completion.Key ||\r\n menuItem.ParentKey === SideNav.appMenu.Completion.Key\r\n ) {\r\n stateClass += \" nohover\";\r\n }\r\n return (\r\n <Col className={`pt-1 nav-text text-start ${stateClass}`}>\r\n {menuItem.Icon ? (\r\n <i className={`${menuItem.Icon} nav-icon-sub`}></i>\r\n ) : (\r\n <></>\r\n )}{\" \"}\r\n {menuItem.Title}\r\n </Col>\r\n );\r\n }\r\n percCol(value: number, useText?: boolean) {\r\n if (value > 100) {\r\n value = 100;\r\n }\r\n var stateClass = \"\";\r\n if (value >= 100) {\r\n stateClass = \"completed\";\r\n } else if (value > 0) {\r\n stateClass = \"inprogress\";\r\n }\r\n var text = <>TODO</>;\r\n if (value >= 100) {\r\n text = <>DONE</>;\r\n } else if (value > 0) {\r\n if (useText) {\r\n text = <>STARTED</>;\r\n } else {\r\n text = <>{Math.round(value)}%</>;\r\n }\r\n }\r\n return (\r\n <Col className={`nav-perc text-middle selected ${stateClass}`}>\r\n {text}\r\n </Col>\r\n );\r\n }\r\n\r\n textCol(value: any) {\r\n return (\r\n <Col className={`nav-perc text-middle selected completed`}>{value}</Col>\r\n );\r\n }\r\n\r\n fullTextCol(menuItem: any) {\r\n return (\r\n <Col\r\n className={`pt-1 nav-text full text-start ${\r\n menuItem.Key === this.state.activeAppKey ? \"selected\" : \"\"\r\n }`}\r\n >\r\n {menuItem.Icon ? (\r\n <i className={`${menuItem.Icon} nav-icon-sub`}></i>\r\n ) : (\r\n <></>\r\n )}{\" \"}\r\n {menuItem.Title}\r\n </Col>\r\n );\r\n }\r\n\r\n timelineCol(items: any, key: string, defaultToWaiting?: boolean) {\r\n var item: any = items.find((x: any) => x.key === key);\r\n var status = item?.status ?? null;\r\n\r\n let appMenu = SideNav.appMenu;\r\n if (\r\n [\r\n appMenu.GetMortgageApproval.Key,\r\n appMenu.ComleteOnYourMortgage.Key,\r\n appMenu.FinalSteps.Key,\r\n appMenu.OtherImportantInfo.Key,\r\n appMenu.OtherResources.Key,\r\n ].includes(key)\r\n ) {\r\n return (\r\n <Col className={`nav-perc-teal`}>\r\n <>.</>\r\n </Col>\r\n );\r\n }\r\n\r\n var stateClass = \"\";\r\n var text = (\r\n <>\r\n <i className=\"fas fa-lock\" />\r\n </>\r\n );\r\n if (status === TimelineItemStatus.Completed) {\r\n stateClass = \"completed\";\r\n text = <>DONE</>;\r\n } else if (status === TimelineItemStatus.Waiting) {\r\n stateClass = \"inprogress\";\r\n text = <>WAITING</>;\r\n } else if (status === TimelineItemStatus.ToDo) {\r\n text = <>TODO</>;\r\n } else if (status === TimelineItemStatus.Inactive && defaultToWaiting) {\r\n stateClass = \"inprogress\";\r\n text = <>WAITING</>;\r\n }\r\n\r\n // If the status is passed inactive and it's a file download, then always display the download buttons for the item\r\n if (status !== TimelineItemStatus.Inactive) {\r\n if (key === appMenu.DownloadEsis.Key) {\r\n text = (\r\n <button\r\n className=\"btn mini btn-standard\"\r\n title={\"download\"}\r\n onClick={() => this.downloadEsis()}\r\n >\r\n download\r\n </button>\r\n );\r\n text = (\r\n <div className=\"pointer\" onClick={() => this.downloadEsis()}>\r\n <i className=\"fa fa-cloud-download fa-lg\" />\r\n </div>\r\n );\r\n } else if (key === appMenu.DownloadCostOfCredit.Key) {\r\n text = (\r\n <button\r\n className=\"btn mini btn-standard\"\r\n title={\"download\"}\r\n onClick={() => this.downloadCostOfCredit()}\r\n >\r\n download\r\n </button>\r\n );\r\n text = (\r\n <div className=\"pointer\" onClick={() => this.downloadCostOfCredit()}>\r\n <i className=\"fa fa-cloud-download fa-lg\" />\r\n </div>\r\n );\r\n }\r\n }\r\n\r\n return (\r\n <Col className={`nav-perc text-middle selected ${stateClass}`}>\r\n {text}\r\n </Col>\r\n );\r\n }\r\n\r\n buttonCol(contents?: any, menuItem?: any, activeCompletions?: any) {\r\n var classes = \"\";\r\n if (\r\n menuItem &&\r\n (menuItem.Key === this.state.activeAppKey ||\r\n activeCompletions === menuItem.Key)\r\n ) {\r\n classes = \"selected\";\r\n }\r\n return (\r\n <Col className={`nav-btncol ${classes}`}>{contents ?? <> </>}</Col>\r\n );\r\n }\r\n\r\n formatDate(dateIn?: any): string {\r\n if (!dateIn) return \"\";\r\n let date = new Date(dateIn);\r\n return !date\r\n ? \"\"\r\n : date.getDate() + \"/\" + (date.getMonth() + 1) + \"/\" + date.getFullYear();\r\n }\r\n\r\n confirmedChosenLender(): boolean {\r\n let context = this.getContext();\r\n let mortgage = context.mortgage!;\r\n if (mortgage.confirmedChosenLender || mortgage.loanOfferRequested)\r\n return true;\r\n return false;\r\n }\r\n\r\n atLoanOfferConditions() {\r\n var mortgage = this.getContext().mortgage!;\r\n if (!mortgage.loanOfferRequested) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n outstandingConditions() {\r\n if (\r\n this.state.conditions !== null &&\r\n this.state.conditions != undefined &&\r\n this.state.conditions.filter(\r\n (c: any) => c.uploaded !== true && c.completed !== true\r\n ).length > 0\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n hasIncompleteConditions() {\r\n if (\r\n this.state.conditions !== null &&\r\n this.state.conditions != undefined &&\r\n this.state.conditions.filter((c: any) => c.completed !== true).length > 0\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n atLoanOfferClarifications() {\r\n var mortgage = this.getContext().mortgage!;\r\n if (mortgage.status === MortgageStatus.PreLoanOfferClarification) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n outstandingClarifications() {\r\n if (\r\n this.state.clarifications !== null &&\r\n this.state.clarifications !== undefined &&\r\n this.state.clarifications.filter((c: any) => c.uploaded !== true).length >\r\n 0\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n waitingForOffer() {\r\n var mortgage = this.getContext().mortgage!;\r\n if (\r\n !this.atLoanOfferConditions() &&\r\n !this.atLoanOfferClarifications() &&\r\n !mortgage.loanOfferReceived\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n loanOfferNoConditions() {\r\n var mortgage = this.getContext().mortgage!;\r\n if (\r\n mortgage.loanOfferReceived &&\r\n this.state.conditionsLoaded &&\r\n this.state.conditions?.length === 0\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n loanOfferNoOutstandingConditions() {\r\n var mortgage = this.getContext().mortgage!;\r\n if (mortgage.loanOfferReceived && !this.outstandingConditions()) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n downloadEsis() {\r\n const context = this.getContext();\r\n\r\n axios({\r\n url: `/Mortgages/DownloadESIS?mortgageId=${context.mortgage?.mortgageId}`,\r\n method: \"GET\",\r\n responseType: \"blob\",\r\n }).then((response) => {\r\n if (response.data.size === 0) {\r\n //this.setState({downloadError: true});\r\n } else {\r\n const url = window.URL.createObjectURL(new Blob([response.data]));\r\n const link = document.createElement(\"a\");\r\n link.href = url;\r\n link.setAttribute(\"download\", \"ESIS.pdf\");\r\n document.body.appendChild(link);\r\n link.click();\r\n if (link.parentNode !== null) link.parentNode.removeChild(link);\r\n context.mortgage!.isEsisDownloaded = true;\r\n this.setState({ refreshToggle: !this.state.refreshToggle });\r\n }\r\n });\r\n }\r\n\r\n downloadCostOfCredit() {\r\n const context = this.getContext();\r\n\r\n axios({\r\n url: `/Mortgages/DownloadCostOfCredit?mortgageId=${context.mortgage?.mortgageId}`,\r\n method: \"GET\",\r\n responseType: \"blob\",\r\n }).then((response) => {\r\n if (response.data.size === 0) {\r\n //this.setState({downloadError: true});\r\n } else {\r\n const url = window.URL.createObjectURL(new Blob([response.data]));\r\n const link = document.createElement(\"a\");\r\n link.href = url;\r\n link.setAttribute(\"download\", \"CostOfCredit.pdf\");\r\n document.body.appendChild(link);\r\n link.click();\r\n if (link.parentNode !== null) link.parentNode.removeChild(link);\r\n context.mortgage!.isCostOfCreditDownloaded = true;\r\n this.setState({ refreshToggle: !this.state.refreshToggle });\r\n }\r\n });\r\n }\r\n\r\n confirmTitleDeeds() {\r\n let context = this.getContext();\r\n context.mortgage!.confirmedTitleDeeds = YesNoBlank.Yes;\r\n this.setState({ refreshToggle: !this.state.refreshToggle });\r\n axios\r\n .post(\"/Mortgages/ConfirmTitleDeeds\", null, {\r\n params: { mortgageId: context.mortgage?.mortgageId },\r\n })\r\n .then((response) => {});\r\n }\r\n\r\n metWithSolicitor() {\r\n let context = this.getContext();\r\n context.mortgage!.metWithSolicitor = true;\r\n this.setState({ refreshToggle: !this.state.refreshToggle });\r\n axios\r\n .post(\"/Mortgages/MetWithSolicitor\", null, {\r\n params: { mortgageId: context.mortgage?.mortgageId },\r\n })\r\n .then((response) => {});\r\n }\r\n\r\n getCompletionSteps(): any {\r\n let context = this.getContext();\r\n let mortgage = context.mortgage!;\r\n let secureMortgageStatus = 0;\r\n let finalStepsStatus = null;\r\n\r\n let loanOfferStatus = TimelineItemStatus.Inactive;\r\n if (this.confirmedChosenLender()) {\r\n if (mortgage.loanOfferReceived) {\r\n loanOfferStatus = TimelineItemStatus.Completed;\r\n } else if (this.waitingForOffer()) {\r\n loanOfferStatus = TimelineItemStatus.Waiting;\r\n } else if (this.atLoanOfferConditions() && this.outstandingConditions()) {\r\n loanOfferStatus = TimelineItemStatus.ToDo;\r\n } else {\r\n loanOfferStatus = TimelineItemStatus.Waiting;\r\n }\r\n }\r\n\r\n let downloadESISStatus = TimelineItemStatus.Inactive;\r\n let downloadCostOfCreditStatus = TimelineItemStatus.Inactive;\r\n let isEsisAvailable = false;\r\n if (this.confirmedChosenLender() && mortgage.loanOfferReceived) {\r\n if (mortgage.isEsisDownloaded) {\r\n downloadESISStatus = TimelineItemStatus.Completed;\r\n } else if (mortgage.isEsisAvailable) {\r\n downloadESISStatus = TimelineItemStatus.ToDo;\r\n }\r\n if (mortgage.isCostOfCreditDownloaded) {\r\n downloadCostOfCreditStatus = TimelineItemStatus.Completed;\r\n } else if (mortgage.isCostOfCreditAvailable) {\r\n downloadCostOfCreditStatus = TimelineItemStatus.ToDo;\r\n }\r\n }\r\n\r\n let uploadDocsStatus = TimelineItemStatus.Inactive;\r\n if (loanOfferStatus === TimelineItemStatus.Completed) {\r\n if (this.outstandingConditions()) {\r\n uploadDocsStatus = TimelineItemStatus.ToDo;\r\n } else {\r\n uploadDocsStatus = TimelineItemStatus.Completed;\r\n }\r\n }\r\n\r\n let titleDeedsStatus = TimelineItemStatus.Inactive;\r\n if (uploadDocsStatus === TimelineItemStatus.Completed) {\r\n if (mortgage.confirmedTitleDeeds === YesNoBlank.Yes) {\r\n titleDeedsStatus = TimelineItemStatus.Completed;\r\n } else {\r\n titleDeedsStatus = TimelineItemStatus.ToDo;\r\n }\r\n } else {\r\n if (mortgage.confirmedTitleDeeds === YesNoBlank.Yes) {\r\n titleDeedsStatus = TimelineItemStatus.Completed;\r\n }\r\n }\r\n\r\n let appMenu = SideNav.appMenu;\r\n let items = [];\r\n //if (anyOutstanding) {\r\n //onClick={() => { this.setState({ navigateToSolicitor: true }) }}>Enter Solicitor Details\r\n let solicitor = context.mortgage?.solicitor;\r\n items.push({\r\n key: appMenu.ConfirmChosenLender.Key,\r\n status: this.confirmedChosenLender()\r\n ? TimelineItemStatus.Completed\r\n : TimelineItemStatus.ToDo,\r\n });\r\n items.push({ key: appMenu.GetLetterOfOffer.Key, status: loanOfferStatus });\r\n items.push({ key: appMenu.DownloadEsis.Key, status: downloadESISStatus });\r\n items.push({\r\n key: appMenu.DownloadCostOfCredit.Key,\r\n status: downloadCostOfCreditStatus,\r\n });\r\n items.push({ key: appMenu.CompletionDocs.Key, status: uploadDocsStatus });\r\n if (mortgage.type === MortgageType.RemortgagingExistingLoan) {\r\n items.push({\r\n key: appMenu.ConfirmSolicitorHasDeeds.Key,\r\n status: titleDeedsStatus,\r\n });\r\n }\r\n if (\r\n items.filter((i: any) => i.status !== TimelineItemStatus.Completed)\r\n .length === 0\r\n ) {\r\n secureMortgageStatus = 100;\r\n } else if (\r\n items.filter(\r\n (i: any) =>\r\n i.status !== TimelineItemStatus.ToDo &&\r\n i.status !== TimelineItemStatus.Inactive\r\n ).length > 0\r\n ) {\r\n secureMortgageStatus =\r\n (100 / items.length) *\r\n items.filter((i: any) => i.status !== TimelineItemStatus.Completed)\r\n .length;\r\n }\r\n items.push({\r\n key: appMenu.SecureMortgage.Key,\r\n status: secureMortgageStatus,\r\n });\r\n\r\n let solicitorStatus = TimelineItemStatus.Inactive;\r\n let closingDateStatus = TimelineItemStatus.Inactive;\r\n let fundReleaseStatus = TimelineItemStatus.Inactive;\r\n if (mortgage.metWithSolicitor) {\r\n solicitorStatus = TimelineItemStatus.Completed;\r\n }\r\n if (mortgage.loanOfferReceived) {\r\n finalStepsStatus = 100;\r\n if (mortgage.metWithSolicitor) {\r\n if (mortgage.fundsReleaseDate) {\r\n closingDateStatus = TimelineItemStatus.Completed;\r\n if (new Date(mortgage.fundsReleaseDate) <= new Date()) {\r\n fundReleaseStatus = TimelineItemStatus.Completed;\r\n } else {\r\n fundReleaseStatus = TimelineItemStatus.Waiting;\r\n }\r\n } else if (\r\n mortgage.clientAdvisedClosingDate ||\r\n mortgage.estimatedClosingDate\r\n ) {\r\n closingDateStatus = TimelineItemStatus.Waiting;\r\n fundReleaseStatus = TimelineItemStatus.Waiting;\r\n } else {\r\n closingDateStatus = TimelineItemStatus.ToDo;\r\n fundReleaseStatus = TimelineItemStatus.ToDo;\r\n }\r\n } else {\r\n closingDateStatus = TimelineItemStatus.ToDo;\r\n solicitorStatus = TimelineItemStatus.ToDo;\r\n fundReleaseStatus = TimelineItemStatus.ToDo;\r\n }\r\n }\r\n\r\n items.push({ key: appMenu.FinalSteps.Key, status: finalStepsStatus });\r\n items.push({ key: appMenu.MeetSolicitor.Key, status: solicitorStatus });\r\n items.push({ key: appMenu.AgreeClosing.Key, status: closingDateStatus });\r\n items.push({ key: appMenu.FundRelease.Key, status: fundReleaseStatus });\r\n return items;\r\n }\r\n\r\n getActiveCompletionStep(items: any[]) {\r\n let appMenu = SideNav.appMenu;\r\n // Start at 1 to skip the \"Secure mortgage offer\" step\r\n for (let index = 1; index < items.length; index++) {\r\n const item = items[index];\r\n if (item.key === appMenu.FinalSteps.Key) {\r\n return item.key;\r\n }\r\n if (\r\n [TimelineItemStatus.ToDo, TimelineItemStatus.Waiting].includes(\r\n item.status\r\n )\r\n ) {\r\n return item.key;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n foundMyNewHome(): void {\r\n const context = this.context as UserContextState;\r\n axios\r\n .post(\"/Mortgages/SetSaleAgreed\", null, {\r\n params: { mortgageId: context.contact?.mortgageId },\r\n })\r\n .then((response) => {\r\n context.mortgage!.saleAgreed = true;\r\n this.setState({\r\n redirectToPropertyPage: true,\r\n showSaleAgreedModal: false,\r\n });\r\n });\r\n }\r\n\r\n setClientAdvisedClosingDate() {\r\n this.setState({ savingCloseDate: true });\r\n let date = new Date(\r\n this.state.sharedFields.getFieldByName(\"clientAdvisedClosingDate\")\r\n .value as string\r\n );\r\n let context = this.getContext();\r\n context.mortgage!.clientAdvisedClosingDate = date;\r\n\r\n this.setState({\r\n refreshToggle: !this.state.refreshToggle,\r\n closeDateCollapsed: true,\r\n savingCloseDate: false,\r\n });\r\n axios\r\n .post(\"/Mortgages/SetClientAdvisedClosingDate\", null, {\r\n params: { mortgageId: context.mortgage?.mortgageId, date: date },\r\n })\r\n .then((response) => {\r\n this.setState({ refreshToggle: !this.state.refreshToggle });\r\n });\r\n }\r\n\r\n // Used by multiple parts in different areas so pull it out as a function\r\n saleAgreedNav(showCompletionsText?: boolean) {\r\n let appMenu = SideNav.appMenu;\r\n let context = this.getContext();\r\n if (context.mortgage!.type === MortgageType.RemortgagingExistingLoan) {\r\n return <></>;\r\n }\r\n return (\r\n <Nav.Item className=\"applicantnav-submenu2\">\r\n <Nav.Link as={Link} to={appMenu.SaleAgreed.Key}>\r\n <div className=\"nav-item-div\">\r\n <Row>\r\n {this.titleCol(\r\n showCompletionsText\r\n ? appMenu.SaleAgreedCompletions\r\n : appMenu.SaleAgreed\r\n )}\r\n {context.mortgage!.saleAgreed\r\n ? this.percCol(100, true)\r\n : this.buttonCol(\r\n <button\r\n className=\"btn btn-light mini\"\r\n onClick={() => {\r\n this.setState({ showSaleAgreedModal: true });\r\n }}\r\n >\r\n NO\r\n </button>\r\n )}\r\n </Row>\r\n </div>\r\n </Nav.Link>\r\n </Nav.Item>\r\n );\r\n }\r\n\r\n renderApplicantMenu(applicant: any, stageSelected: number) {\r\n const context = this.getContext();\r\n let mortgage = context.mortgage!;\r\n var applicantStage;\r\n\r\n var percentageOfCompletion: number =\r\n (applicant.personalInfoPercentage +\r\n applicant.residentialInfoPercentage +\r\n applicant.employmentInfoPercentage +\r\n applicant.assetsInfoPercentage) /\r\n 4;\r\n var applicantMenu: IApplicantMenu;\r\n if (applicant.contactId === mortgage.primaryApplicant.contactId) {\r\n applicantStage = 1;\r\n applicantMenu = {\r\n Applicant: SideNav.appMenu.Applicant1,\r\n Personal: SideNav.appMenu.Personal1,\r\n Residential: SideNav.appMenu.Residential1,\r\n Employment: SideNav.appMenu.Employment1,\r\n Financial: SideNav.appMenu.Financial1,\r\n AssetsAndLoans: SideNav.appMenu.AssetsAndLoans1,\r\n };\r\n } else {\r\n applicantStage = 2;\r\n applicantMenu = {\r\n Applicant: SideNav.appMenu.Applicant2,\r\n Personal: SideNav.appMenu.Personal2,\r\n Residential: SideNav.appMenu.Residential2,\r\n Employment: SideNav.appMenu.Employment2,\r\n Financial: SideNav.appMenu.Financial2,\r\n AssetsAndLoans: SideNav.appMenu.AssetsAndLoans2,\r\n };\r\n }\r\n\r\n return (\r\n <>\r\n <Nav.Item\r\n className=\"applicantnav-submenu\"\r\n title={applicantMenu.Applicant.Title}\r\n >\r\n <Nav.Link\r\n as={Link}\r\n to={applicantMenu.Applicant.Key}\r\n onClick={(event) => {\r\n this.setState({ expanded: false });\r\n this.handleAppSelect(applicantMenu.Applicant);\r\n }}\r\n >\r\n <div className=\"nav-item-div\">\r\n <Row>\r\n {this.titleCol(applicantMenu.Applicant)}\r\n {this.percCol(percentageOfCompletion)}\r\n </Row>\r\n </div>\r\n </Nav.Link>\r\n </Nav.Item>\r\n {stageSelected === applicantStage && (\r\n <>\r\n <Nav.Item className=\"applicantnav-submenu2\">\r\n <Nav.Link\r\n as={Link}\r\n to={applicantMenu.Personal.Key}\r\n className={\r\n this.state.activeAppKey === applicantMenu.Personal.Key ||\r\n this.state.activeAppKey === applicantMenu.Applicant.Key\r\n ? (applicant.personalInfoPercentage ?? 0) < 100\r\n ? \"applicantnav-link-selected\"\r\n : \"applicantnav-link-selected-done\"\r\n : \"\"\r\n }\r\n onClick={(event) => {\r\n this.setState({ expanded: false });\r\n if (this.props.setStep) this.props.setStep(1);\r\n this.handleAppSelect(applicantMenu.Personal);\r\n }}\r\n >\r\n <div\r\n className={`nav-item-div ${\r\n this.state.activeAppKey === applicantMenu.Personal.Key &&\r\n \"selected\"\r\n }`}\r\n >\r\n <Row>\r\n {this.titleCol(applicantMenu.Personal)}\r\n {this.percCol(applicant.personalInfoPercentage)}\r\n </Row>\r\n </div>\r\n </Nav.Link>\r\n </Nav.Item>\r\n <Nav.Item className=\"applicantnav-submenu2\">\r\n <Nav.Link\r\n as={Link}\r\n to={applicantMenu.Residential.Key}\r\n className={\r\n this.state.activeAppKey === applicantMenu.Residential.Key\r\n ? (applicant.residentialInfoPercentage ?? 0) < 100\r\n ? \"applicantnav-link-selected\"\r\n : \"applicantnav-link-selected-done\"\r\n : \"applicantnav-link\"\r\n }\r\n onClick={(event) => {\r\n this.setState({ expanded: false });\r\n if (this.props.setStep) this.props.setStep(2);\r\n this.handleAppSelect(applicantMenu.Residential);\r\n }}\r\n >\r\n <div className=\"nav-item-div\">\r\n <Row>\r\n {this.titleCol(applicantMenu.Residential)}\r\n {this.percCol(applicant.residentialInfoPercentage)}\r\n </Row>\r\n </div>\r\n </Nav.Link>\r\n </Nav.Item>\r\n <Nav.Item className=\"applicantnav-submenu2\">\r\n <Nav.Link\r\n as={Link}\r\n to={applicantMenu.Employment.Key}\r\n className={\r\n this.state.activeAppKey === applicantMenu.Employment.Key\r\n ? (applicant.employmentInfoPercentage ?? 0) < 100\r\n ? \"applicantnav-link-selected\"\r\n : \"applicantnav-link-selected-done\"\r\n : \"applicantnav-link\"\r\n }\r\n onClick={(event) => {\r\n this.setState({ expanded: false });\r\n if (this.props.setStep) this.props.setStep(3);\r\n this.handleAppSelect(applicantMenu.Employment);\r\n }}\r\n >\r\n <div className=\"nav-item-div\">\r\n <Row>\r\n {this.titleCol(applicantMenu.Employment)}\r\n {this.percCol(applicant.employmentInfoPercentage)}\r\n </Row>\r\n </div>\r\n </Nav.Link>\r\n </Nav.Item>\r\n {/*<Nav.Item className=\"applicantnav-submenu2\">\r\n <Nav.Link as={Link} to={applicantMenu.Financial.Key} className={this.state.activeAppKey === applicantMenu.Financial.Key ? (applicant.assetsInfoPercentage??0) < 100 ? \"applicantnav-link-selected\" : \"applicantnav-link-selected-done\" : \"applicantnav-link\"}\r\n onClick={(event) => {this.setState({expanded: false}); if (this.props.setStep) this.props.setStep(4); this.handleAppSelect(applicantMenu.Financial);}}\r\n >\r\n <div className=\"nav-item-div\">\r\n <Row>\r\n {this.titleCol(applicantMenu.Financial)}\r\n {this.percCol(applicant.assetsInfoPercentage)}\r\n </Row>\r\n </div> \r\n </Nav.Link>\r\n </Nav.Item>\r\n */}\r\n <Nav.Item className=\"applicantnav-submenu2\">\r\n <Nav.Link\r\n as={Link}\r\n to={applicantMenu.Financial.Key}\r\n className={\r\n this.state.activeAppKey === applicantMenu.Financial.Key\r\n ? (applicant.assetsInfoPercentage ?? 0) < 100\r\n ? \"applicantnav-link-selected\"\r\n : \"applicantnav-link-selected-done\"\r\n : \"applicantnav-link\"\r\n }\r\n onClick={(event) => {\r\n this.setState({ expanded: false });\r\n if (this.props.setStep) this.props.setStep(4);\r\n this.handleAppSelect(applicantMenu.Financial);\r\n }}\r\n >\r\n <div className=\"nav-item-div\">\r\n <Row>\r\n {this.titleCol(applicantMenu.Financial)}\r\n {this.percCol(applicant.bankingInfoPercentage)}\r\n </Row>\r\n </div>\r\n </Nav.Link>\r\n </Nav.Item>\r\n <Nav.Item className=\"applicantnav-submenu2\">\r\n <Nav.Link\r\n as={Link}\r\n to={applicantMenu.AssetsAndLoans.Key}\r\n className={\r\n this.state.activeAppKey === applicantMenu.AssetsAndLoans.Key\r\n ? (applicant.assetsInfoPercentage ?? 0) < 100\r\n ? \"applicantnav-link-selected\"\r\n : \"applicantnav-link-selected-done\"\r\n : \"applicantnav-link\"\r\n }\r\n onClick={(event) => {\r\n this.setState({ expanded: false });\r\n if (this.props.setStep) this.props.setStep(4);\r\n this.handleAppSelect(applicantMenu.AssetsAndLoans);\r\n }}\r\n >\r\n <div className=\"nav-item-div\">\r\n <Row>\r\n {this.titleCol(applicantMenu.AssetsAndLoans)}\r\n {this.percCol(applicant.assetsInfoPercentage)}\r\n </Row>\r\n </div>\r\n </Nav.Link>\r\n </Nav.Item>\r\n </>\r\n )}\r\n </>\r\n );\r\n }\r\n\r\n renderOtherResourcesMenu() {\r\n let appMenu = SideNav.appMenu;\r\n let context = this.getContext();\r\n\r\n var header = (\r\n <div className=\"applicantnav-submenu nohover\">\r\n <div>\r\n <div className=\"nav-item-div\">\r\n <Row>{this.fullTitleCol(appMenu.OtherResources)}</Row>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n\r\n var mortgageCalculator = (\r\n <Nav.Item className=\"applicantnav-submenu2\">\r\n <Nav.Link\r\n as={Link}\r\n to={appMenu.MortgageCalculator.Key}\r\n className={\r\n this.state.activeAppKey === appMenu.MortgageCalculator.Key\r\n ? \"applicantnav-link-selected\"\r\n : \"applicantnav-link\"\r\n }\r\n onClick={(event) => {\r\n this.setState({ expanded: false });\r\n if (this.props.setStep) this.props.setStep(1);\r\n this.handleAppSelect(appMenu.MortgageCalculator);\r\n }}\r\n >\r\n <div className=\"nav-item-div\">\r\n <Row>{this.fullTextCol(appMenu.MortgageCalculator)}</Row>\r\n </div>\r\n </Nav.Link>\r\n </Nav.Item>\r\n );\r\n\r\n // var switcher = (\r\n // <Nav.Item className=\"applicantnav-submenu2\">\r\n // <Nav.Link\r\n // as={Link}\r\n // to={appMenu.SwitcherCalculator.Key}\r\n // className={\r\n // this.state.activeAppKey === appMenu.SwitcherCalculator.Key\r\n // ? \"applicantnav-link-selected\"\r\n // : \"applicantnav-link\"\r\n // }\r\n // onClick={(event) => {\r\n // this.setState({ expanded: false });\r\n // if (this.props.setStep) this.props.setStep(1);\r\n // this.handleAppSelect(appMenu.SwitcherCalculator);\r\n // }}\r\n // >\r\n // <div className=\"nav-item-div\">\r\n // <Row>{this.fullTextCol(appMenu.SwitcherCalculator)}</Row>\r\n // </div>\r\n // </Nav.Link>\r\n // </Nav.Item>\r\n // );\r\n\r\n // var purchaser = (\r\n // <Nav.Item className=\"applicantnav-submenu2\">\r\n // <Nav.Link\r\n // as={Link}\r\n // to={appMenu.PurchaserCalculator.Key}\r\n // className={\r\n // this.state.activeAppKey === appMenu.PurchaserCalculator.Key\r\n // ? \"applicantnav-link-selected\"\r\n // : \"applicantnav-link\"\r\n // }\r\n // onClick={(event) => {\r\n // this.setState({ expanded: false });\r\n // if (this.props.setStep) this.props.setStep(1);\r\n // this.handleAppSelect(appMenu.PurchaserCalculator);\r\n // }}\r\n // >\r\n // <div className=\"nav-item-div\">\r\n // <Row>{this.fullTextCol(appMenu.PurchaserCalculator)}</Row>\r\n // </div>\r\n // </Nav.Link>\r\n // </Nav.Item>\r\n // );\r\n\r\n return (\r\n <>\r\n {header}\r\n {mortgageCalculator}\r\n </>\r\n );\r\n }\r\n\r\n renderOtherItemsOfImportanceMenu() {\r\n let appMenu = SideNav.appMenu;\r\n let context = this.getContext();\r\n\r\n var purchaserHeader = (\r\n <div className=\"applicantnav-submenu nohover\">\r\n <div>\r\n <div className=\"nav-item-div\">\r\n <Row>{this.fullTitleCol(appMenu.GetReadyForSaleAgreed)}</Row>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n\r\n var switcherHeader = (\r\n <div className=\"applicantnav-submenu nohover\">\r\n <div>\r\n <div className=\"nav-item-div\">\r\n <Row>{this.fullTitleCol(appMenu.OtherImportantInfo)}</Row>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n\r\n var solicitorNav = (\r\n <Nav.Item className=\"applicantnav-submenu2\">\r\n <Nav.Link\r\n as={Link}\r\n to={appMenu.Solicitor.Key}\r\n className={\r\n this.state.activeAppKey === appMenu.Solicitor.Key\r\n ? (context.mortgage?.solicitorDetailsPercentage ?? 0) < 100\r\n ? \"applicantnav-link-selected\"\r\n : \"applicantnav-link-selected-done\"\r\n : \"applicantnav-link\"\r\n }\r\n onClick={(event) => {\r\n this.setState({ expanded: false });\r\n if (this.props.setStep) this.props.setStep(3);\r\n this.handleAppSelect(appMenu.Solicitor);\r\n }}\r\n >\r\n <div className=\"nav-item-div\">\r\n <Row>\r\n {this.titleCol(appMenu.Solicitor)}\r\n {this.buttonCol(\r\n <div className=\"btn btn-standard mini\">update</div>,\r\n appMenu.Solicitor\r\n )}\r\n </Row>\r\n </div>\r\n </Nav.Link>\r\n </Nav.Item>\r\n );\r\n\r\n var lifeCoverNav = (\r\n <Nav.Item className=\"applicantnav-submenu2\">\r\n <Nav.Link\r\n as={Link}\r\n to={appMenu.LifeCover.Key}\r\n className={\r\n this.state.activeAppKey === appMenu.LifeCover.Key\r\n ? \"applicantnav-link-selected\"\r\n : \"applicantnav-link\"\r\n }\r\n >\r\n <div className=\"nav-item-div\">\r\n <Row>\r\n {this.titleCol(appMenu.LifeCover)}\r\n {this.buttonCol(\r\n <InsuranceQuoteButton\r\n context={context}\r\n mini={true}\r\n mortgage={context.mortgage!}\r\n alreadyQuoted={context.mortgage!.hasInsuranceQuote ?? false}\r\n />\r\n )}\r\n </Row>\r\n </div>\r\n </Nav.Link>\r\n </Nav.Item>\r\n );\r\n\r\n var propertyNav = (\r\n <Nav.Item className=\"applicantnav-submenu2\">\r\n <Nav.Link\r\n as={Link}\r\n to={appMenu.Property.Key}\r\n className={\r\n this.state.activeAppKey === appMenu.Property.Key\r\n ? (context.mortgage?.propertyDetailsPercentage ?? 0) < 100\r\n ? \"applicantnav-link-selected\"\r\n : \"applicantnav-link-selected-done\"\r\n : \"applicantnav-link\"\r\n }\r\n onClick={(event) => {\r\n this.setState({ expanded: false });\r\n if (this.props.setStep) this.props.setStep(2);\r\n this.handleAppSelect(appMenu.Property);\r\n }}\r\n >\r\n <div className=\"nav-item-div\">\r\n <Row>\r\n {this.titleCol(appMenu.Property)}\r\n {this.buttonCol(\r\n <div className=\"btn btn-standard mini\">update</div>,\r\n appMenu.Property\r\n )}\r\n </Row>\r\n </div>\r\n </Nav.Link>\r\n </Nav.Item>\r\n );\r\n\r\n return (\r\n <>\r\n {context.mortgage?.type === MortgageType.PurchasingaNewHome\r\n ? purchaserHeader\r\n : switcherHeader}\r\n {solicitorNav}\r\n {lifeCoverNav}\r\n {context.mortgage?.type === MortgageType.PurchasingaNewHome &&\r\n this.saleAgreedNav()}\r\n {propertyNav}\r\n </>\r\n );\r\n }\r\n\r\n handleHomeValueUpdate(e: any) {\r\n let context = this.getContext();\r\n var calcState: CalculatorState = {\r\n homeValue: e.target.value,\r\n mortgageAmount: this.state.mortgageAmount,\r\n mortgageTerm: this.state.term,\r\n cashbackOnly: this.state.cashbackOnly,\r\n berRating: this.state.berRating,\r\n };\r\n context.updateCalculatorState(calcState);\r\n\r\n // Update slider fields if they've changed\r\n if (\r\n this.state.homeValueSliderRef?.current &&\r\n this.state.homeValueSliderRef.current.value !== e.target.value\r\n ) {\r\n this.state.homeValueSliderRef.current.value = e.target.value;\r\n }\r\n\r\n this.setState({ homeValue: e.target.value });\r\n }\r\n\r\n handleMortgageAmountUpdate(e: any) {\r\n let context = this.getContext();\r\n var calcState: CalculatorState = {\r\n homeValue: this.state.homeValue,\r\n mortgageAmount: e.target.value,\r\n mortgageTerm: this.state.term,\r\n cashbackOnly: this.state.cashbackOnly,\r\n berRating: this.state.berRating,\r\n };\r\n context.updateCalculatorState(calcState);\r\n\r\n // Update linked slider if they've changed\r\n if (\r\n this.state.mortgageAmountSliderRef?.current &&\r\n this.state.mortgageAmountSliderRef.current.value !== e.target.value\r\n ) {\r\n this.state.mortgageAmountSliderRef.current.value = e.target.value;\r\n }\r\n\r\n this.setState({ mortgageAmount: e.target.value });\r\n }\r\n\r\n handleTermUpdate(e: any) {\r\n let context = this.getContext();\r\n var calcState: CalculatorState = {\r\n homeValue: this.state.homeValue,\r\n mortgageAmount: this.state.mortgageAmount,\r\n mortgageTerm: e.target.value,\r\n cashbackOnly: this.state.cashbackOnly,\r\n berRating: this.state.berRating,\r\n };\r\n context.updateCalculatorState(calcState);\r\n\r\n // Update linked slider if they've changed\r\n if (\r\n this.state.termSliderRef?.current &&\r\n this.state.termSliderRef.current.value !== e.target.value\r\n ) {\r\n this.state.termSliderRef.current.value = e.target.value;\r\n }\r\n\r\n this.setState({ term: e.target.value });\r\n }\r\n\r\n handleBerRatingUpdate(e: any) {\r\n let context = this.getContext();\r\n var calcState: CalculatorState = {\r\n homeValue: this.state.homeValue,\r\n mortgageAmount: this.state.mortgageAmount,\r\n mortgageTerm: this.state.term,\r\n cashbackOnly: this.state.cashbackOnly,\r\n berRating: e.target.value,\r\n };\r\n context.updateCalculatorState(calcState);\r\n\r\n // Update linked slider if they've changed\r\n var selectedBer = berRatings.find(\r\n (x) => x.name.toString() === e.target.value\r\n )!;\r\n var berIndex = berRatings.indexOf(selectedBer);\r\n var sliderIndex = 8 - berIndex;\r\n if (\r\n this.state.berSliderRef?.current &&\r\n this.state.berSliderRef.current.value !== sliderIndex\r\n ) {\r\n this.state.berSliderRef.current.value = sliderIndex;\r\n }\r\n\r\n this.setState({ berRating: e.target.value });\r\n }\r\n\r\n handleBerRatingSliderUpdate(e: any) {\r\n let context = this.getContext();\r\n let value = berRatings[(8 - e.target.value) as number].name;\r\n var calcState: CalculatorState = {\r\n homeValue: this.state.homeValue,\r\n mortgageAmount: this.state.mortgageAmount,\r\n mortgageTerm: this.state.term,\r\n cashbackOnly: this.state.cashbackOnly,\r\n berRating: value,\r\n };\r\n context.updateCalculatorState(calcState);\r\n context.updateCalculatorState({ berRating: value });\r\n\r\n this.setState({ berRating: value });\r\n }\r\n\r\n handleCashbackOnlyUpdate(e: any) {\r\n let context = this.getContext();\r\n var calcState: CalculatorState = {\r\n homeValue: this.state.homeValue,\r\n mortgageAmount: this.state.mortgageAmount,\r\n mortgageTerm: this.state.term,\r\n berRating: this.state.berRating,\r\n cashbackOnly: e.target.checked,\r\n };\r\n context.updateCalculatorState(calcState);\r\n this.setState({ cashbackOnly: e.target.checked });\r\n }\r\n\r\n render() {\r\n const location = window.location;\r\n\r\n if (this.state.loading) {\r\n // For admin users they can access a page without the side bar\r\n // This causes a state issue, so let's just poll when we detect impersonation\r\n if (this.state.activeKey === \"/_impersonate\") {\r\n this.refresher();\r\n }\r\n return <></>;\r\n }\r\n\r\n if (this.state.redirectToPropertyPage) {\r\n this.setState({ redirectToPropertyPage: false });\r\n return <Navigate to=\"/property\" />;\r\n }\r\n\r\n let menu = SideNav.menu;\r\n let appMenu = SideNav.appMenu;\r\n let context = this.getContext();\r\n context.callPageRefreshListener();\r\n\r\n const applicants = this.state.applicants;\r\n if (\r\n this.props.authenticated &&\r\n (applicants === null || applicants === undefined)\r\n ) {\r\n return;\r\n }\r\n\r\n let primaryApplicant = applicants.length > 0 ? applicants[0] : null;\r\n let secondaryApplicant = applicants.length > 1 ? applicants[1] : null;\r\n let primary = context.mortgage?.primaryApplicant ?? primaryApplicant;\r\n let secondary = context.mortgage?.secondaryApplicant ?? secondaryApplicant;\r\n\r\n let stageSelected = 0;\r\n Object.entries(appMenu).forEach(([key, value]) => {\r\n if (this.state.activeAppKey === value.Key) {\r\n stageSelected = value.Stage;\r\n }\r\n });\r\n\r\n var completionSteps = this.getCompletionSteps();\r\n var activeCompletionStep = this.getActiveCompletionStep(completionSteps);\r\n var applyLcoked = [MortgageStatus.Closed].includes(\r\n context.mortgage!.status\r\n );\r\n var aipLocked = [\r\n MortgageStatus.NewLead,\r\n MortgageStatus.ClientContacted,\r\n MortgageStatus.PortalSetup,\r\n MortgageStatus.PortalLogin,\r\n MortgageStatus.InformationGathering,\r\n MortgageStatus.Closed,\r\n ].includes(context.mortgage!.status);\r\n var completionsLocked =\r\n aipLocked ||\r\n [\r\n MortgageStatus.AIPSubmitted,\r\n MortgageStatus.PreAIPClarification,\r\n ].includes(context.mortgage!.status) ||\r\n context.mortgage!.approvalType === AIPType.HouseHunter;\r\n\r\n return (\r\n <>\r\n <Navbar\r\n className=\"doddl-nav\"\r\n expand=\"lg\"\r\n expanded={this.state.expanded ?? false}\r\n >\r\n <Navbar.Toggle\r\n onClick={() =>\r\n this.setState({ expanded: !(this.state.expanded ?? false) })\r\n }\r\n aria-controls=\"basic-navbar-nav\"\r\n />\r\n <Navbar.Collapse id=\"basic-navbar-nav\">\r\n {location.pathname.includes(\"calculators/\") ? (\r\n <>\r\n <Container>\r\n <Row className=\"mt-5 mb-3\">\r\n <Stack\r\n gap={2}\r\n direction=\"horizontal\"\r\n className=\"justify-left \"\r\n style={{ minWidth: 380 }}\r\n >\r\n {context.mortgage?.type ===\r\n MortgageType.PurchasingaNewHome ? (\r\n <h3 className=\"impact\">Your new mortgage</h3>\r\n ) : (\r\n <h3 className=\"impact\">Your mortgage switch</h3>\r\n )}\r\n </Stack>\r\n </Row>\r\n <Row className=\"text-start \">\r\n <Stack\r\n gap={4}\r\n className=\"justify-left \"\r\n direction=\"vertical\"\r\n style={{ maxWidth: 380 }}\r\n >\r\n <Row>\r\n <Row className=\"ps-3\">\r\n <NumberInput\r\n id=\"homeValue\"\r\n key=\"homeValue\"\r\n label={\r\n <>\r\n Approximate <strong>Home Value</strong>\r\n </>\r\n }\r\n value={this.state.homeValue}\r\n classes=\"brightinput\"\r\n onChange={(e) => this.handleHomeValueUpdate(e)}\r\n />\r\n </Row>\r\n <Row className=\"ps-4\">\r\n <FormRange\r\n ref={this.state.homeValueSliderRef}\r\n defaultValue={this.state.homeValue}\r\n readOnly={false}\r\n min=\"100000\"\r\n max=\"2000000\"\r\n step=\"10000\"\r\n className=\"mt-3 doddl-slider\"\r\n onChange={(e) => this.handleHomeValueUpdate(e)}\r\n //onChange={(e) => this.handleHomeValueUpdate({target: {value: this.state.homeValueSliderRef.current.value}})}\r\n />\r\n <Stack\r\n direction=\"horizontal\"\r\n className=\"justify-content-between slider-labels mt-2\"\r\n >\r\n <div style={{ marginLeft: -10 }}>\r\n <p className=\"p s text-start\">€ 100k</p>\r\n </div>\r\n <div style={{ marginRight: -10 }}>\r\n <p className=\"s text-end ms-1\">€ 2m+</p>\r\n </div>\r\n </Stack>\r\n </Row>\r\n </Row>\r\n\r\n <Row>\r\n <Row className=\"ps-3\">\r\n <NumberInput\r\n id=\"mortgageAmount\"\r\n key=\"mortgageAmount\"\r\n label={\r\n <>\r\n <strong>Outstanding</strong> Mortgage Balance\r\n </>\r\n }\r\n value={this.state.mortgageAmount}\r\n classes=\"brightinput\"\r\n onChange={(e) => this.handleMortgageAmountUpdate(e)}\r\n />\r\n </Row>\r\n <Row className=\"ps-4\">\r\n <FormRange\r\n ref={this.state.mortgageAmountSliderRef}\r\n defaultValue={this.state.mortgageAmount}\r\n readOnly={false}\r\n min=\"100000\"\r\n max=\"2000000\"\r\n step=\"10000\"\r\n className=\"mt-3 doddl-slider\"\r\n onChange={(e) => this.handleMortgageAmountUpdate(e)}\r\n />\r\n <Stack\r\n direction=\"horizontal\"\r\n className=\"justify-content-between slider-labels mt-2\"\r\n >\r\n <div style={{ marginLeft: -10 }}>\r\n <p className=\"p s text-start\">€ 100k</p>\r\n </div>\r\n <div style={{ marginRight: -10 }}>\r\n <p className=\"s text-end ms-1\">€ 2m+</p>\r\n </div>\r\n </Stack>\r\n </Row>\r\n </Row>\r\n\r\n <Row>\r\n <Row className=\"ps-3\">\r\n <TermSelect\r\n key=\"term\"\r\n label={\r\n <>\r\n <strong>Remaining</strong> Mortgage Term\r\n </>\r\n }\r\n selectedterm={this.state.term}\r\n classes=\"brightinput\"\r\n onChange={(e) => this.handleTermUpdate(e)}\r\n />\r\n </Row>\r\n <Row className=\"ps-4\">\r\n <FormRange\r\n ref={this.state.termSliderRef}\r\n defaultValue={this.state.term}\r\n readOnly={false}\r\n min=\"5\"\r\n max=\"35\"\r\n step=\"1\"\r\n className=\"mt-3 doddl-slider\"\r\n onChange={(e) => this.handleTermUpdate(e)}\r\n />\r\n <Stack\r\n direction=\"horizontal\"\r\n className=\"justify-content-between slider-labels mt-2\"\r\n >\r\n <div style={{ marginLeft: -10 }}>\r\n <p className=\"p s text-start\">5 years</p>\r\n </div>\r\n <div style={{ marginRight: -10 }}>\r\n <p className=\"s text-end ms-1\">35 years</p>\r\n </div>\r\n </Stack>\r\n </Row>\r\n </Row>\r\n\r\n <Row>\r\n <Row className=\"ps-3\">\r\n <BerImage\r\n label={\r\n <>\r\n <strong>BER</strong> Energy Rating\r\n </>\r\n }\r\n key=\"berimage\"\r\n ber={this.state.berRating}\r\n />\r\n </Row>\r\n <Row className=\"ps-4\">\r\n <FormRange\r\n ref={this.state.berSliderRef}\r\n defaultValue={berRatings.indexOf(\r\n berRatings.find(\r\n (x) =>\r\n x.value.toString() === this.state.berRating\r\n )!\r\n )}\r\n readOnly={false}\r\n min=\"1\"\r\n max=\"8\"\r\n step=\"1\"\r\n className=\"mt-3 doddl-slider\"\r\n onChange={(e) =>\r\n this.handleBerRatingSliderUpdate(e)\r\n }\r\n />\r\n <Stack\r\n direction=\"horizontal\"\r\n className=\"justify-content-between slider-labels mt-2\"\r\n >\r\n <div style={{ marginLeft: -10 }}>\r\n <p className=\"p s text-start\">Unsure</p>\r\n </div>\r\n <div style={{ marginRight: -10 }}>\r\n <p className=\"s text-end ms-1\">A</p>\r\n </div>\r\n </Stack>\r\n </Row>\r\n </Row>\r\n\r\n <BooleanInput\r\n id=\"cashbackOnly\"\r\n key=\"cashbackOnly\"\r\n label={\r\n <>\r\n <strong>Cashback</strong> Options Only\r\n </>\r\n }\r\n value={this.state.mortgageAmount}\r\n classes=\"brightinput\"\r\n onChange={(e) => this.handleCashbackOnlyUpdate(e)}\r\n />\r\n </Stack>\r\n </Row>\r\n </Container>\r\n </>\r\n ) : (\r\n <Container>\r\n <Row className=\"mb-3\">\r\n <Stack\r\n gap={2}\r\n direction=\"horizontal\"\r\n className=\"justify-center\"\r\n >\r\n {applyLcoked ? (\r\n <Link to={\"#\"} className={`btn btn-nav disabled`}>\r\n 1. {menu.Profile.Title} <i className=\"fa fa-lock\"></i>\r\n </Link>\r\n ) : (\r\n <Link\r\n to={menu.Profile.Key}\r\n className={`btn btn-nav ${\r\n this.state.activeKey === menu.Profile.Key\r\n ? \"selected\"\r\n : \"\"\r\n }`}\r\n onClick={(e) => {\r\n this.handleSelect(menu.Profile.Key);\r\n }}\r\n >\r\n 1. {menu.Profile.Title}\r\n </Link>\r\n )}\r\n {aipLocked ? (\r\n <Link to={\"#\"} className={`btn btn-nav disabled`}>\r\n 2. {menu.AIP.Title} <i className=\"fa fa-lock\"></i>\r\n </Link>\r\n ) : (\r\n <Link\r\n to={menu.AIP.Key}\r\n className={`btn btn-nav ${\r\n this.state.activeKey === menu.AIP.Key\r\n ? \"selected\"\r\n : \"\"\r\n }`}\r\n onClick={(e) => {\r\n this.handleSelect(menu.AIP.Key);\r\n }}\r\n >\r\n 2. {menu.AIP.Title}\r\n </Link>\r\n )}\r\n {completionsLocked ? (\r\n <Link to={\"#\"} className={`btn btn-nav disabled`}>\r\n 3. {menu.Completion.Title}{\" \"}\r\n <i className=\"fa fa-lock\"></i>\r\n </Link>\r\n ) : (\r\n <Link\r\n to={menu.Completion.Key}\r\n className={`btn btn-nav ${\r\n this.state.activeKey === menu.Completion.Key\r\n ? \"selected\"\r\n : \"\"\r\n }`}\r\n onClick={(e) => {\r\n this.handleSelect(menu.Completion.Key);\r\n }}\r\n >\r\n 3. {menu.Completion.Title}\r\n </Link>\r\n )}\r\n </Stack>\r\n </Row>\r\n <Row>\r\n <Nav>\r\n <div className=\"profile-group\">\r\n {this.props.authenticated && applicants.length > 0 && (\r\n <>\r\n {this.state.activeKey === menu.Profile.Key && (\r\n <>\r\n <div className=\"applicantnav-submenu nohover\">\r\n <div>\r\n <div className=\"nav-item-div\">\r\n <Row>\r\n {this.fullTitleCol(\r\n appMenu.GetMortgageApproval\r\n )}\r\n </Row>\r\n </div>\r\n </div>\r\n </div>\r\n {this.renderApplicantMenu(primary, stageSelected)}\r\n\r\n {/* If we have a secondary render their navigation menu too */}\r\n {context.mortgage?.secondaryApplicant &&\r\n this.renderApplicantMenu(\r\n secondary,\r\n stageSelected\r\n )}\r\n\r\n <Nav.Item className=\"applicantnav-submenu\">\r\n <Nav.Link as={Link} to={appMenu.Mortgage.Key}>\r\n <div className=\"nav-item-div\">\r\n <Row>\r\n {this.titleCol(appMenu.Mortgage)}\r\n {this.percCol(\r\n context.mortgage\r\n ?.mortgageDetailsPercentage ?? 0\r\n )}\r\n </Row>\r\n </div>\r\n </Nav.Link>\r\n </Nav.Item>\r\n <Nav.Item\r\n className=\"applicantnav-submenu\"\r\n title={appMenu.Documents.Title}\r\n >\r\n <Nav.Link\r\n as={Link}\r\n to={appMenu.Documents.Key}\r\n onClick={(event) => {\r\n this.setState({ expanded: false });\r\n this.handleAppSelect(appMenu.Documents);\r\n }}\r\n >\r\n <div className=\"nav-item-div\">\r\n <Row>\r\n {this.titleCol(appMenu.Documents)}\r\n {this.percCol(\r\n context.mortgage\r\n ?.documentsPercentComplete ?? 0,\r\n true\r\n )}\r\n </Row>\r\n </div>\r\n </Nav.Link>\r\n </Nav.Item>\r\n </>\r\n )}\r\n </>\r\n )}\r\n {this.props.authenticated &&\r\n this.state.activeKey === menu.AIP.Key && (\r\n <>\r\n <div className=\"applicantnav-submenu nohover\">\r\n <div>\r\n <div className=\"nav-item-div\">\r\n <Row>\r\n {this.titleCol(appMenu.GetMortgageApproval)}\r\n {this.timelineCol(\r\n [],\r\n appMenu.GetMortgageApproval.Key\r\n )}\r\n </Row>\r\n </div>\r\n </div>\r\n </div>\r\n <Nav.Item className=\"applicantnav-submenu\">\r\n <Nav.Link as={Link} to={appMenu.Profile.Key}>\r\n <div className=\"nav-item-div\">\r\n <Row>\r\n {this.titleCol(appMenu.Profile)}\r\n {this.percCol(\r\n this.state.aipStatus > 0\r\n ? 100\r\n : context.mortgage\r\n ?.documentsPercentComplete ?? 0,\r\n true\r\n )}\r\n </Row>\r\n </div>\r\n </Nav.Link>\r\n </Nav.Item>\r\n <Nav.Item className=\"applicantnav-submenu\">\r\n <Nav.Link as={Link} to={appMenu.AIP.Key}>\r\n <div className=\"nav-item-div\">\r\n <Row>\r\n {this.titleCol(appMenu.AIP)}\r\n {this.percCol(\r\n this.state.aipStatus ?? 0,\r\n true\r\n )}\r\n </Row>\r\n </div>\r\n </Nav.Link>\r\n </Nav.Item>\r\n </>\r\n )}\r\n\r\n {this.props.authenticated &&\r\n [menu.Profile.Key, menu.AIP.Key].includes(\r\n this.state.activeKey\r\n ) && (\r\n <>\r\n {this.renderOtherItemsOfImportanceMenu()}\r\n {this.renderOtherResourcesMenu()}\r\n </>\r\n )}\r\n {this.props.authenticated &&\r\n this.state.activeKey === menu.Completion.Key && (\r\n <>\r\n <div className=\"applicantnav-submenu nohover\">\r\n <div>\r\n <div className=\"nav-item-div\">\r\n <Row>\r\n {this.titleCol(\r\n appMenu.ComleteOnYourMortgage\r\n )}\r\n {this.timelineCol(\r\n [],\r\n appMenu.ComleteOnYourMortgage.Key\r\n )}\r\n </Row>\r\n </div>\r\n </div>\r\n </div>\r\n <>\r\n {this.saleAgreedNav(true)}\r\n <div className=\"applicantnav-submenu2\">\r\n <div\r\n className={\r\n activeCompletionStep ===\r\n appMenu.GetLetterOfOffer.Key\r\n ? \"applicantnav-link-selected\"\r\n : \"applicantnav-link\"\r\n }\r\n >\r\n <div className=\"nav-item-div nohover\">\r\n <Row>\r\n {this.titleCol(\r\n appMenu.GetLetterOfOffer,\r\n activeCompletionStep\r\n )}\r\n {this.timelineCol(\r\n completionSteps,\r\n appMenu.GetLetterOfOffer.Key,\r\n true\r\n )}\r\n </Row>\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"applicantnav-submenu2\">\r\n <div\r\n className={\r\n activeCompletionStep ===\r\n appMenu.DownloadEsis.Key\r\n ? \"applicantnav-link-selected\"\r\n : \"applicantnav-link\"\r\n }\r\n >\r\n <div className=\"nav-item-div nohover\">\r\n <Row>\r\n {this.titleCol(\r\n appMenu.DownloadEsis,\r\n activeCompletionStep\r\n )}\r\n {this.timelineCol(\r\n completionSteps,\r\n appMenu.DownloadEsis.Key,\r\n true\r\n )}\r\n </Row>\r\n </div>\r\n </div>\r\n </div>\r\n {context.mortgage?.deferredPayment && (\r\n <div className=\"applicantnav-submenu2\">\r\n <div\r\n className={\r\n activeCompletionStep ===\r\n appMenu.DownloadCostOfCredit.Key\r\n ? \"applicantnav-link-selected\"\r\n : \"applicantnav-link\"\r\n }\r\n >\r\n <div className=\"nav-item-div nohover\">\r\n <Row>\r\n {this.titleCol(\r\n appMenu.DownloadCostOfCredit,\r\n activeCompletionStep\r\n )}\r\n {this.timelineCol(\r\n completionSteps,\r\n appMenu.DownloadCostOfCredit.Key,\r\n true\r\n )}\r\n </Row>\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n {context.mortgage!.type ===\r\n MortgageType.RemortgagingExistingLoan && (\r\n <div className=\"applicantnav-submenu2\">\r\n <div\r\n className={\r\n activeCompletionStep ===\r\n appMenu.ConfirmSolicitorHasDeeds.Key\r\n ? \"applicantnav-link-selected\"\r\n : \"applicantnav-link\"\r\n }\r\n >\r\n <div className=\"nav-item-div nohover\">\r\n <Row>\r\n {this.titleCol(\r\n appMenu.ConfirmSolicitorHasDeeds,\r\n activeCompletionStep\r\n )}\r\n {context.mortgage!\r\n .confirmedTitleDeeds ===\r\n YesNoBlank.Yes\r\n ? this.percCol(100)\r\n : this.buttonCol(\r\n <button\r\n className=\"btn mini btn-standard\"\r\n onClick={this.confirmTitleDeeds}\r\n >\r\n confirm\r\n </button>,\r\n appMenu.ConfirmSolicitorHasDeeds,\r\n activeCompletionStep\r\n )}\r\n </Row>\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n {/* <div className=\"applicantnav-submenu2\">\r\n <div className={activeCompletionStep === appMenu.CompletionDocs.Key ? \"applicantnav-link-selected\" : \"applicantnav-link\"}> */}\r\n <Nav.Item className=\"applicantnav-submenu2\">\r\n <Nav.Link\r\n className={\r\n activeCompletionStep ===\r\n appMenu.CompletionDocs.Key\r\n ? \"applicantnav-link-selected\"\r\n : \"applicantnav-link\"\r\n }\r\n as={Link}\r\n to={appMenu.CompletionDocs.Key}\r\n >\r\n <div className=\"nav-item-div nohover\">\r\n <Row>\r\n {this.titleCol(\r\n appMenu.CompletionDocs,\r\n activeCompletionStep\r\n )}\r\n {this.timelineCol(\r\n completionSteps,\r\n appMenu.CompletionDocs.Key,\r\n true\r\n )}\r\n </Row>\r\n </div>\r\n {/* </div>\r\n </div> */}\r\n </Nav.Link>\r\n </Nav.Item>\r\n </>\r\n\r\n <div className=\"applicantnav-submenu nohover\">\r\n <div>\r\n <div className=\"nav-item-div\">\r\n <Row>\r\n {this.titleCol(\r\n appMenu.FinalSteps,\r\n activeCompletionStep\r\n )}\r\n {this.timelineCol(\r\n completionSteps,\r\n appMenu.FinalSteps.Key\r\n )}\r\n </Row>\r\n </div>\r\n </div>\r\n </div>\r\n <>\r\n <div className=\"applicantnav-submenu2\">\r\n <div\r\n className={\r\n activeCompletionStep ===\r\n appMenu.MeetSolicitor.Key\r\n ? \"applicantnav-link-selected\"\r\n : \"applicantnav-link\"\r\n }\r\n >\r\n <div className=\"nav-item-div nohover\">\r\n <Row>\r\n {this.titleCol(\r\n appMenu.MeetSolicitor,\r\n activeCompletionStep\r\n )}\r\n {context.mortgage!.metWithSolicitor\r\n ? this.percCol(100)\r\n : this.buttonCol(\r\n <button\r\n className=\"btn mini btn-standard\"\r\n onClick={this.metWithSolicitor}\r\n >\r\n confirm\r\n </button>,\r\n appMenu.MeetSolicitor,\r\n activeCompletionStep\r\n )}\r\n </Row>\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"applicantnav-submenu2\">\r\n <div\r\n className={\r\n activeCompletionStep ===\r\n appMenu.AgreeClosing.Key\r\n ? \"applicantnav-link-selected\"\r\n : \"applicantnav-link\"\r\n }\r\n >\r\n <div className=\"nav-item-div nohover\">\r\n <Row>\r\n {this.titleCol(\r\n appMenu.AgreeClosing,\r\n activeCompletionStep\r\n )}\r\n {context.mortgage!.estimatedClosingDate\r\n ? this.textCol(\r\n <FormattedDate\r\n excludeYear={true}\r\n monthFormat=\"short\"\r\n date={\r\n context.mortgage!\r\n .estimatedClosingDate\r\n }\r\n />\r\n )\r\n : this.buttonCol(\r\n <button\r\n className=\"btn mini btn-standard\"\r\n onClick={() => {\r\n this.setState({\r\n closeDateCollapsed: false,\r\n });\r\n }}\r\n >\r\n update\r\n </button>,\r\n appMenu.AgreeClosing,\r\n activeCompletionStep\r\n )}\r\n </Row>\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"applicantnav-submenu2\">\r\n <div\r\n className={\r\n activeCompletionStep ===\r\n appMenu.FundRelease.Key\r\n ? \"applicantnav-link-selected\"\r\n : \"applicantnav-link\"\r\n }\r\n >\r\n <div className=\"nav-item-div nohover\">\r\n <Row>\r\n {this.titleCol(\r\n appMenu.FundRelease,\r\n activeCompletionStep\r\n )}\r\n {this.timelineCol(\r\n completionSteps,\r\n appMenu.FundRelease.Key\r\n )}\r\n </Row>\r\n </div>\r\n </div>\r\n </div>\r\n </>\r\n </>\r\n )}\r\n </div>\r\n </Nav>\r\n </Row>\r\n </Container>\r\n )}\r\n </Navbar.Collapse>\r\n </Navbar>\r\n <div className=\"brand-div\">\r\n <Navbar.Brand>\r\n <Link to=\"/dashboard\">\r\n <img src={logo} width=\"100px\" alt=\"doddl\" />\r\n </Link>\r\n </Navbar.Brand>\r\n </div>\r\n <Modal\r\n centered\r\n size=\"lg\"\r\n show={this.state.showSaleAgreedModal}\r\n onHide={() => {\r\n this.setState({ showSaleAgreedModal: false });\r\n }}\r\n >\r\n <Modal.Header closeButton></Modal.Header>\r\n <Modal.Body>\r\n <div className=\"text-center mb-5 ps-5 pe-5\">\r\n <h1 className=\"impact\">Are you sale agreed?</h1>\r\n <p className=\"\">\r\n Let us know when you have gone sale agreed so that we can begin\r\n the process of getting your letter of offer from your chosen\r\n lender. Are you sale agreed?\r\n </p>\r\n </div>\r\n <Stack\r\n direction=\"horizontal\"\r\n gap={3}\r\n className=\"text-center justify-center\"\r\n >\r\n <button\r\n className=\"btn medium btn-secondary\"\r\n onClick={() => {\r\n this.setState({ savingSaleAgreed: true });\r\n this.foundMyNewHome();\r\n }}\r\n >\r\n {this.state.savingSaleAgreed ? (\r\n <Icons.Spinner size=\"sm\" animation=\"border\" role=\"status\" />\r\n ) : (\r\n \"Yes!\"\r\n )}\r\n </button>\r\n <button\r\n className=\"btn medium btn-light\"\r\n onClick={() => {\r\n this.setState({ showSaleAgreedModal: false });\r\n }}\r\n >\r\n No\r\n </button>\r\n </Stack>\r\n </Modal.Body>\r\n <Modal.Footer></Modal.Footer>\r\n </Modal>\r\n <Modal\r\n fullscreen=\"lg-down\"\r\n show={!this.state.closeDateCollapsed}\r\n onHide={() => {\r\n this.setState({ closeDateCollapsed: true });\r\n }}\r\n centered\r\n >\r\n <Modal.Header closeButton></Modal.Header>\r\n <Modal.Body>\r\n <Container>\r\n <Row>\r\n <Col>\r\n <FormControl\r\n light\r\n icon=\"far fa-calendar\"\r\n field={this.state.sharedFields.getFieldByName(\r\n \"clientAdvisedClosingDate\"\r\n )}\r\n ></FormControl>\r\n </Col>\r\n </Row>\r\n </Container>\r\n </Modal.Body>\r\n <Modal.Footer>\r\n {this.state.savingCloseDate && (\r\n <Icons.Spinner animation=\"border\" role=\"status\" />\r\n )}\r\n {!this.state.savingCloseDate && (\r\n <button\r\n className=\"btn btn-standard btn-wide\"\r\n onClick={this.setClientAdvisedClosingDate}\r\n >\r\n Save\r\n </button>\r\n )}\r\n </Modal.Footer>\r\n </Modal>\r\n </>\r\n );\r\n }\r\n}\r\n","import axios from \"axios\";\r\nimport 'bootstrap/dist/css/bootstrap.min.css';\r\nimport { Form, Col, Row, Container, Stack, ButtonGroup } from \"react-bootstrap\";\r\nimport './Applicant.css';\r\nimport { PortalPage } from \"../components/PortalPage\";\r\nimport { GetTooltips } from \"../helper/tooltipHelper\";\r\nimport UserContextState, { UserContext } from '../components/UserContext';\r\nimport { Navigate } from \"react-router-dom\";\r\nimport { InputPill } from \"../components/Pills/InputPill\";\r\nimport { appInsightsHelper } from \"../components/AppInsights\";\r\nimport { SharedFieldsCollection } from \"../forms/SharedFields\";\r\nimport { UserContextComponent } from \"../components/UserContextComponent\";\r\nimport { ControlType } from \"../models/PortalMetadata\";\r\nimport currencyFormatter from \"../helper/currencyFormatter\";\r\nimport { MortgageSubType, MortgageType } from \"../models/PortalMortgageModel\";\r\n\r\nexport default class Shared extends UserContextComponent<any, any> {\r\n static contextType = UserContext;\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n loading: true, mortgage: null, step: 1, helperTexts: this.props.helperTexts ?? [], fields: null\r\n };\r\n this.handleChange = this.handleChange.bind(this);\r\n this.handleSubmit = this.handleSubmit.bind(this);\r\n\r\n this.prev = this.prev.bind(this);\r\n this.next = this.next.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n appInsightsHelper.trackPageView({ name: \"Shared\" });\r\n let context = this.getContext();\r\n this.setState({mortgage: context.mortgage})\r\n this.getTooltips(\"mortgage\");\r\n }\r\n\r\n getTooltips(entityname: string) {\r\n GetTooltips(entityname).then((response) => {\r\n let context = this.getContext(); \r\n let helperTexts = response.data;\r\n \r\n if (context.mortgage !== null) {\r\n let fields = new SharedFieldsCollection();\r\n fields.loadData(context.mortgage, helperTexts, true, this.handleChange);\r\n this.setState({ fields: fields, loading: false, helperTexts: helperTexts });\r\n }\r\n })\r\n .catch((error) => {\r\n if (error.response.statusCode === 401) {\r\n alert(\"Unauthorized\");\r\n }\r\n });\r\n }\r\n\r\n updateDirtyFlag() {\r\n let dirtyFields: any[] = [];\r\n for (let fieldName in this.state.fields.fields) {\r\n let f = this.state.fields.fields[fieldName];\r\n if (f.isDirty)\r\n dirtyFields.push(f);\r\n }\r\n\r\n var isDirty = dirtyFields.length > 0;\r\n var context = this.getContext();\r\n\r\n context.setIsDirty(isDirty);\r\n }\r\n\r\n saveAllFields(redirectTo: string | null) {\r\n\r\n let dirtyFields: any[] = [];\r\n for (let fieldName in this.state.fields.fields) {\r\n let f = this.state.fields.fields[fieldName];\r\n if (f.isDirty)\r\n dirtyFields.push(f);\r\n }\r\n\r\n if (dirtyFields.length === 0) {\r\n if (!redirectTo && this.props.next) {\r\n this.props.next()\r\n } else {\r\n this.setState({ redirectTo: redirectTo });\r\n }\r\n return;\r\n }\r\n\r\n let newMortgage = this.state.fields.getAsEntity(\"mortgageId\", this.state.mortgage.mortgageId, this.state.mortgage);\r\n\r\n axios.post('/shared/update', newMortgage)\r\n .then(response => {\r\n for (let i = 0; i < dirtyFields.length; i++) {\r\n let f = dirtyFields[i];\r\n f.originalValue = f.value;\r\n f.isDirty = false;\r\n }\r\n\r\n this.updateDirtyFlag();\r\n // BANDAID - THIS IS TO KEEP THE APPLICANT MENU IN SYNC AS IT USES THE CONTEXT \r\n let context = this.getContext();\r\n context.mortgage!.mortgageDetailsPercentage = this.getFieldsDone() * 100 / this.getFieldCount();\r\n\r\n if (!redirectTo && this.props.next) {\r\n this.props.next()\r\n } else {\r\n this.setState({ redirectTo: redirectTo });\r\n }\r\n })\r\n\r\n }\r\n\r\n handleSubmit(event: any) {\r\n event.preventDefault();\r\n this.saveAllFields(\"/property\");\r\n }\r\n\r\n handleChange(event: any) {\r\n const target = event.target;\r\n const value = (target.type === 'checkbox' ? target.checked : target.value); // || (target.textContent || '');\r\n const name = target.name || target.getAttribute('name');\r\n\r\n var mortgage = this.state.mortgage;\r\n\r\n if (!name)\r\n return;\r\n\r\n let f = this.state.fields.getFieldByName(name);\r\n\r\n //// if we don't set the value here it sometimes doesn't get set and causes a bug with reverting to the original value\r\n let fields = this.state.fields;\r\n if (fields) {\r\n if (f.controlType === ControlType.currency) {\r\n fields.updateModel(this.state.mortgage, name, value?.replaceAll(\",\", \"\").replaceAll(\"€\", \"\"));\r\n fields.updateFieldValue(name, currencyFormatter(Number(value?.replaceAll(\",\", \"\").replaceAll(\"€\", \"\"))));\r\n } else {\r\n fields.updateModel(this.state.mortgage, name, value);\r\n fields.updateFieldValue(name, value);\r\n }\r\n }\r\n this.setState({ fields: this.state.fields, mortgage: mortgage });\r\n this.updateDirtyFlag();\r\n }\r\n\r\n prev() {\r\n if (this.props.prev) {\r\n this.props.prev();\r\n } else {\r\n this.saveAllFields(\"/profile\")\r\n //this.setState({ redirectTo: \"/profile\" });\r\n }\r\n }\r\n\r\n next() {\r\n var step = this.state.step;\r\n\r\n if (step < 5)\r\n step++;\r\n\r\n this.setState({\r\n step: step\r\n });\r\n\r\n }\r\n\r\n render() {\r\n\r\n if (this.state.loading) {\r\n return <><p>\r\n <em>Loading...</em></p></>;\r\n }\r\n\r\n if (this.state.redirectTo) {\r\n //return <Navigate to=\"/profile\" />\r\n // For now we are always redirecting to the \"next step\" which is Property Details in the flow\r\n return <Navigate to={this.state.redirectTo} />\r\n }\r\n\r\n return (\r\n <>\r\n <PortalPage className=\"bump-right\" title={<>How much would you like to borrow?</>} >\r\n <Row>\r\n <Col className=\"col-12\">\r\n <Form onSubmit={this.handleSubmit}>\r\n <Row className=\"sub-title-box\">\r\n <p className=\"subtext\">It’s fine if you don’t know the exact figure yet - we can work through that with you later. For now let’s work off what you think you need.</p>\r\n </Row>\r\n <Container className=\"pill-form\">\r\n <Row className=\"pill-row\">\r\n <Stack gap={1} direction=\"horizontal\" className=\"pill-stack\">\r\n {this.state.mortgage.type === MortgageType.PurchasingaNewHome &&\r\n <InputPill hideIfValue={this.state.emptyOnly} field={this.state.fields.getFieldByName(\"purchasePrice\")}></InputPill>\r\n }\r\n {this.state.mortgage.type === MortgageType.RemortgagingExistingLoan &&\r\n <InputPill hideIfValue={this.state.emptyOnly} field={this.state.fields.getFieldByName(\"propertyValue\")}></InputPill>\r\n }\r\n <InputPill hideIfValue={this.state.emptyOnly} field={this.state.fields.getFieldByName(\"mortgageAmountProposed\")} invalidText=\"Min Amount is 10,000\" ></InputPill>\r\n {this.state.mortgage.type === MortgageType.RemortgagingExistingLoan && [MortgageSubType.EquityReleaseTopup,MortgageSubType.EquityReleaseNoWorks,MortgageSubType.EquityReleaseWithWorks].includes(this.state.mortgage.subType) &&\r\n <InputPill hideIfValue={this.state.emptyOnly} field={this.state.fields.getFieldByName(\"topUpAmount\")} ></InputPill>\r\n }\r\n <InputPill hideIfValue={this.state.emptyOnly} field={this.state.fields.getFieldByName(\"mortgageTerm\")}></InputPill>\r\n <InputPill hideIfValue={this.state.emptyOnly} field={this.state.fields.getFieldByName(\"preferenceForYourRate\")}></InputPill>\r\n {this.state.mortgage.type === MortgageType.PurchasingaNewHome &&\r\n <>\r\n <InputPill hideIfValue={this.state.emptyOnly} field={this.state.fields.getFieldByName(\"giftAmount\")}></InputPill>\r\n <InputPill hideIfValue={this.state.emptyOnly} field={this.state.fields.getFieldByName(\"otherSavingsAmount\")}></InputPill>\r\n </>\r\n }\r\n </Stack>\r\n </Row>\r\n </Container>\r\n <Container>\r\n <Row>\r\n <Col className=\"toggle-box\">\r\n <Form.Check\r\n type=\"switch\"\r\n id=\"empty-fields-switch\"\r\n label=\"Empty Fields Only\"\r\n reverse\r\n onClick={() => this.setState({ emptyOnly: !this.state.emptyOnly })}\r\n />\r\n </Col>\r\n </Row>\r\n <Stack direction=\"horizontal\" gap={3} className=\"text-center justify-center\">\r\n <ButtonGroup>\r\n <button type=\"button\" className=\"btn btn-standard-transparent btn-outline btn-wide\" onClick={this.prev}>Back</button>\r\n <button type=\"button\" className=\"btn btn-dark btn-wide\" onClick={this.handleSubmit}>Next</button>\r\n </ButtonGroup>\r\n </Stack>\r\n </Container>\r\n </Form>\r\n </Col>\r\n </Row>\r\n </PortalPage>\r\n </>\r\n );\r\n\r\n }\r\n\r\n getFieldCount(): number {\r\n let fieldCount = 4;\r\n if (this.state.mortgage.type === MortgageType.PurchasingaNewHome) {\r\n fieldCount += 2;\r\n }\r\n if ([MortgageSubType.EquityReleaseTopup,MortgageSubType.EquityReleaseNoWorks,MortgageSubType.EquityReleaseWithWorks].includes(this.state.mortgage.subType)) {\r\n fieldCount += 1;\r\n }\r\n return fieldCount;\r\n }\r\n getFieldsDone(): number {\r\n let fieldsDone = 0;\r\n if (this.state.mortgage.mortgageAmountProposed >= 10000) fieldsDone++;\r\n\r\n if (this.state.mortgage.type === MortgageType.RemortgagingExistingLoan) {\r\n if (this.state.mortgage.propertyValue) fieldsDone++;\r\n }\r\n if (this.state.mortgage.type === MortgageType.PurchasingaNewHome) {\r\n if (this.state.mortgage.purchasePrice) fieldsDone++;\r\n if (this.state.mortgage.giftAmount !== \"\" && this.state.mortgage.giftAmount !== null) fieldsDone++;\r\n if (this.state.mortgage.otherSavingsAmount !== \"\" && this.state.mortgage.otherSavingsAmount !== null) fieldsDone++;\r\n }\r\n if ([MortgageSubType.EquityReleaseTopup,MortgageSubType.EquityReleaseNoWorks,MortgageSubType.EquityReleaseWithWorks].includes(this.state.mortgage.subType)) {\r\n if (this.state.mortgage.topUpAmount) fieldsDone++;\r\n }\r\n if (this.state.mortgage.mortgageTerm) fieldsDone++;\r\n if (this.state.mortgage.preferenceForYourRate) fieldsDone++;\r\n return fieldsDone;\r\n }\r\n}","import { MortgageStatus, MortgageType } from \"../models/PortalMortgageModel\";\r\nimport { Navigate } from \"react-router-dom\";\r\nimport { appInsightsHelper } from \"../components/AppInsights\";\r\nimport { UserContextComponent } from \"../components/UserContextComponent\";\r\nimport UserContextState from \"../components/UserContext\";\r\nimport axios from \"axios\";\r\nimport {\r\n AIPDDLStatus,\r\n AIPType,\r\n PortalAIPApplicationModel,\r\n} from \"../models/PortalAIPApplication\";\r\n\r\ninterface IAIPApplicationProps {}\r\n\r\ninterface IAIPApplicationState {\r\n loading: boolean;\r\n aipCountLoaded: boolean;\r\n aipApprovedCount: number;\r\n hasApprovedHouseHunterAIP: boolean;\r\n}\r\n\r\nexport class HomePage extends UserContextComponent<\r\n IAIPApplicationProps,\r\n IAIPApplicationState\r\n> {\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n loading: false,\r\n aipCountLoaded: false,\r\n aipApprovedCount: 0,\r\n hasApprovedHouseHunterAIP: false,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n appInsightsHelper.trackPageView({ name: \"Home Page\" });\r\n }\r\n\r\n setFirstLoginTime(): void {\r\n const context = this.context as UserContextState;\r\n context.contact!.portalFirstLogin = new Date();\r\n axios.post(\"/Contacts/SetFirstLoginTime\", null, {\r\n params: { contactId: context.contact?.contactId },\r\n });\r\n }\r\n\r\n setMortgageFirstLoginTime(): void {\r\n const context = this.context as UserContextState;\r\n context.mortgage!.portalFirstLogin = new Date();\r\n axios.post(\"/Mortgages/SetFirstLoginTime\", null, {\r\n params: { mortgageId: context.mortgage?.mortgageId },\r\n });\r\n }\r\n\r\n loadApprovedAIPCount(): void {\r\n const context = this.getContext();\r\n axios\r\n .get(\r\n \"/AIPApplications/GetAIPApplicationsByMortgageId?mortgageId=\" +\r\n context.mortgage?.mortgageId\r\n )\r\n .then((response) => {\r\n let aips: PortalAIPApplicationModel[] = response.data;\r\n\r\n let houseHunterApprovedCount =\r\n aips.filter(\r\n (a) =>\r\n (a.aipDdlStatus === AIPDDLStatus.ApprovedByLender ||\r\n a.aipDdlStatus === AIPDDLStatus.Proceeding) &&\r\n a.type === AIPType.HouseHunter\r\n ).length > 0;\r\n this.setState({\r\n aipApprovedCount: aips.filter(\r\n (a) =>\r\n a.aipDdlStatus === AIPDDLStatus.ApprovedByLender ||\r\n a.aipDdlStatus === AIPDDLStatus.Proceeding\r\n ).length,\r\n hasApprovedHouseHunterAIP: houseHunterApprovedCount,\r\n aipCountLoaded: true,\r\n });\r\n });\r\n }\r\n\r\n render() {\r\n let context = this.getContext();\r\n let firstLogin = false;\r\n\r\n if (this.state.loading || context.mortgage === null)\r\n return (\r\n <p>\r\n <em>Loading...</em>\r\n </p>\r\n );\r\n\r\n if (context.mortgage === null) {\r\n return (\r\n <p>There is no mortgage record associated with your contact details.</p>\r\n );\r\n }\r\n\r\n if (context.mortgage.status === MortgageStatus.Closed) {\r\n return <Navigate to=\"/completion\" />;\r\n }\r\n\r\n if (context.contact?.portalFirstLogin === null) {\r\n firstLogin = true;\r\n this.setFirstLoginTime();\r\n }\r\n\r\n if (context.mortgage?.portalFirstLogin === null) {\r\n firstLogin = true;\r\n this.setMortgageFirstLoginTime();\r\n }\r\n\r\n const profileLandingPage =\r\n context.mortgage?.type === MortgageType.RemortgagingExistingLoan\r\n ? \"/dashboard\"\r\n : \"/profile\";\r\n\r\n if (firstLogin) {\r\n return <Navigate to=\"/dashboard\" />;\r\n } else if (context.mortgage.status === MortgageStatus.PortalLogin) {\r\n return <Navigate to={profileLandingPage} />;\r\n } else if (\r\n context.mortgage.status === MortgageStatus.InformationGathering\r\n ) {\r\n if (!this.state.aipCountLoaded) {\r\n this.loadApprovedAIPCount();\r\n return (\r\n <p>\r\n <em>Loading...</em>\r\n </p>\r\n );\r\n }\r\n\r\n if (this.state.aipApprovedCount > 0) {\r\n return <Navigate to=\"/completion\" />;\r\n } else {\r\n return <Navigate to=\"/profile\" />;\r\n }\r\n } else if (\r\n context.mortgage.status === MortgageStatus.AIPSubmitted ||\r\n (context.mortgage.status === MortgageStatus.AIPApproved &&\r\n (!context.mortgage.saleAgreed ||\r\n context.mortgage.approvalType === AIPType.HouseHunter)) ||\r\n context.mortgage.status === MortgageStatus.PreAIPClarification\r\n ) {\r\n if (!this.state.aipCountLoaded) {\r\n this.loadApprovedAIPCount();\r\n return (\r\n <p>\r\n <em>Loading...</em>\r\n </p>\r\n );\r\n }\r\n\r\n if (this.state.hasApprovedHouseHunterAIP && context.mortgage.saleAgreed) {\r\n //We want to keep the soft AIP customers out of the AIP page when going for full AIP\r\n return <Navigate to=\"/completion\" />;\r\n } else {\r\n return <Navigate to=\"/aip-application\" />;\r\n }\r\n } else if ((context.mortgage.chosenLender ?? \"\") !== \"\") {\r\n return <Navigate to=\"/completion\" />;\r\n } else if (\r\n (context.mortgage.approvalType !== AIPType.HouseHunter &&\r\n context.mortgage.status === MortgageStatus.AIPApproved &&\r\n context.mortgage.saleAgreed) ||\r\n context.mortgage.status === MortgageStatus.LoanOfferReceived ||\r\n context.mortgage.status === MortgageStatus.LoanOfferRequested ||\r\n context.mortgage.status === MortgageStatus.PreLoanOfferClarification ||\r\n context.mortgage.status === MortgageStatus.Completions ||\r\n context.mortgage.status === MortgageStatus.Closed\r\n ) {\r\n return <Navigate to=\"/completion\" />;\r\n } else {\r\n return <Navigate to={profileLandingPage} />;\r\n }\r\n }\r\n}\r\n","import { FieldsCollection } from './FieldsCollection';\r\n\r\nexport class SolicitorFieldsCollection extends FieldsCollection {\r\n constructor() {\r\n super();\r\n this.addTextField(\"fullName\", \"Solicitor Contact Name\", 200);\r\n this.addTextField(\"mobile\", \"Solicitor Phone\", 50);\r\n this.addTextField(\"emailAddress2\", \"Solicitor E-mail\", 50);\r\n this.addTextField(\"address1Line1\", \"Solicitor Address\", 250);\r\n this.addTextField(\"companyName\", \"Solicitor Name\");\r\n }\r\n}","import * as React from 'react';\nimport * as ReactDom from 'react-dom';\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\n\nfunction styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar css_248z = \"/*\\n code is extracted from Calendly's embed stylesheet: https://assets.calendly.com/assets/external/widget.css\\n*/\\n\\n.calendly-inline-widget,\\n.calendly-inline-widget *,\\n.calendly-badge-widget,\\n.calendly-badge-widget *,\\n.calendly-overlay,\\n.calendly-overlay * {\\n font-size:16px;\\n line-height:1.2em\\n}\\n\\n.calendly-inline-widget iframe,\\n.calendly-badge-widget iframe,\\n.calendly-overlay iframe {\\n display:inline;\\n width:100%;\\n height:100%\\n}\\n\\n.calendly-popup-content {\\n position:relative\\n}\\n\\n.calendly-popup-content.calendly-mobile {\\n -webkit-overflow-scrolling:touch;\\n overflow-y:auto\\n}\\n\\n.calendly-overlay {\\n position:fixed;\\n top:0;\\n left:0;\\n right:0;\\n bottom:0;\\n overflow:hidden;\\n z-index:9999;\\n background-color:#a5a5a5;\\n background-color:rgba(31,31,31,0.4)\\n}\\n\\n.calendly-overlay .calendly-close-overlay {\\n position:absolute;\\n top:0;\\n left:0;\\n right:0;\\n bottom:0\\n}\\n\\n.calendly-overlay .calendly-popup {\\n box-sizing:border-box;\\n position:absolute;\\n top:50%;\\n left:50%;\\n -webkit-transform:translateY(-50%) translateX(-50%);\\n transform:translateY(-50%) translateX(-50%);\\n width:80%;\\n min-width:900px;\\n max-width:1000px;\\n height:90%;\\n max-height:680px\\n}\\n\\n@media (max-width: 975px) {\\n .calendly-overlay .calendly-popup {\\n position:fixed;\\n top:50px;\\n left:0;\\n right:0;\\n bottom:0;\\n -webkit-transform:none;\\n transform:none;\\n width:100%;\\n height:auto;\\n min-width:0;\\n max-height:none\\n }\\n}\\n\\n.calendly-overlay .calendly-popup .calendly-popup-content {\\n height:100%;\\n}\\n\\n.calendly-overlay .calendly-popup-close {\\n position:absolute;\\n top:25px;\\n right:25px;\\n color:#fff;\\n width:19px;\\n height:19px;\\n cursor:pointer;\\n background:url(https://assets.calendly.com/assets/external/close-icon.svg) no-repeat;\\n background-size:contain\\n}\\n\\n@media (max-width: 975px) {\\n .calendly-overlay .calendly-popup-close {\\n top:15px;\\n right:15px\\n }\\n}\\n\\n.calendly-badge-widget {\\n position:fixed;\\n right:20px;\\n bottom:15px;\\n z-index:9998\\n}\\n\\n.calendly-badge-widget .calendly-badge-content {\\n display:table-cell;\\n width:auto;\\n height:45px;\\n padding:0 30px;\\n border-radius:25px;\\n box-shadow:rgba(0,0,0,0.25) 0 2px 5px;\\n font-family:sans-serif;\\n text-align:center;\\n vertical-align:middle;\\n font-weight:bold;\\n font-size:14px;\\n color:#fff;\\n cursor:pointer\\n}\\n\\n.calendly-badge-widget .calendly-badge-content.calendly-white {\\n color:#666a73\\n}\\n\\n.calendly-badge-widget .calendly-badge-content span {\\n display:block;\\n font-size:12px\\n}\\n\\n.calendly-spinner {\\n position:absolute;\\n top:50%;\\n left:0;\\n right:0;\\n -webkit-transform:translateY(-50%);\\n transform:translateY(-50%);\\n text-align:center;\\n z-index:-1\\n}\\n\\n.calendly-spinner>div {\\n display:inline-block;\\n width:18px;\\n height:18px;\\n background-color:#e1e1e1;\\n border-radius:50%;\\n vertical-align:middle;\\n -webkit-animation:calendly-bouncedelay 1.4s infinite ease-in-out;\\n animation:calendly-bouncedelay 1.4s infinite ease-in-out;\\n -webkit-animation-fill-mode:both;\\n animation-fill-mode:both\\n}\\n\\n.calendly-spinner .calendly-bounce1 {\\n -webkit-animation-delay:-0.32s;\\n animation-delay:-0.32s\\n}\\n\\n.calendly-spinner .calendly-bounce2 {\\n -webkit-animation-delay:-0.16s;\\n animation-delay:-0.16s\\n}\\n\\n@-webkit-keyframes calendly-bouncedelay {\\n 0%,80%,100% {\\n -webkit-transform:scale(0);\\n transform:scale(0)\\n } \\n \\n 40%{\\n -webkit-transform:scale(1);\\n transform:scale(1)\\n }\\n}\\n\\n@keyframes calendly-bouncedelay{ \\n 0%,80%,100% {\\n -webkit-transform:scale(0);\\n transform:scale(0)\\n }\\n \\n 40% {\\n -webkit-transform:scale(1);\\n transform:scale(1)\\n }\\n}\";\nstyleInject(css_248z);\n\nfunction sanitizeColorString(str) {\n if (str.charAt(0) === \"#\") {\n return str.slice(1);\n }\n return str;\n}\nfunction sanitizePageSettingsProps(props) {\n if (props === null || props === void 0 ? void 0 : props.primaryColor) {\n props.primaryColor = sanitizeColorString(props.primaryColor);\n }\n if (props === null || props === void 0 ? void 0 : props.textColor) {\n props.textColor = sanitizeColorString(props.textColor);\n }\n if (props === null || props === void 0 ? void 0 : props.backgroundColor) {\n props.backgroundColor = sanitizeColorString(props.backgroundColor);\n }\n return props;\n}\n\nvar CalendlyEvent;\n(function (CalendlyEvent) {\n CalendlyEvent[\"PROFILE_PAGE_VIEWED\"] = \"calendly.profile_page_viewed\";\n CalendlyEvent[\"EVENT_TYPE_VIEWED\"] = \"calendly.event_type_viewed\";\n CalendlyEvent[\"DATE_AND_TIME_SELECTED\"] = \"calendly.date_and_time_selected\";\n CalendlyEvent[\"EVENT_SCHEDULED\"] = \"calendly.event_scheduled\";\n})(CalendlyEvent || (CalendlyEvent = {}));\nvar formatCalendlyUrl = function (_a) {\n var url = _a.url, _b = _a.prefill, prefill = _b === void 0 ? {} : _b, _c = _a.pageSettings, pageSettings = _c === void 0 ? {} : _c, _d = _a.utm, utm = _d === void 0 ? {} : _d, embedType = _a.embedType;\n var sanitizedPageSettings = sanitizePageSettingsProps(pageSettings);\n var backgroundColor = sanitizedPageSettings.backgroundColor, hideEventTypeDetails = sanitizedPageSettings.hideEventTypeDetails, hideLandingPageDetails = sanitizedPageSettings.hideLandingPageDetails, primaryColor = sanitizedPageSettings.primaryColor, textColor = sanitizedPageSettings.textColor, hideGdprBanner = sanitizedPageSettings.hideGdprBanner;\n var customAnswers = prefill.customAnswers, date = prefill.date, email = prefill.email, firstName = prefill.firstName, guests = prefill.guests, lastName = prefill.lastName, location = prefill.location, smsReminderNumber = prefill.smsReminderNumber, name = prefill.name;\n var utmCampaign = utm.utmCampaign, utmContent = utm.utmContent, utmMedium = utm.utmMedium, utmSource = utm.utmSource, utmTerm = utm.utmTerm, salesforce_uuid = utm.salesforce_uuid;\n var queryStringIndex = url.indexOf(\"?\");\n var hasQueryString = queryStringIndex > -1;\n var queryString = url.slice(queryStringIndex + 1);\n var baseUrl = hasQueryString ? url.slice(0, queryStringIndex) : url;\n var updatedQueryString = [\n hasQueryString ? queryString : null,\n backgroundColor ? \"background_color=\".concat(backgroundColor) : null,\n hideEventTypeDetails ? \"hide_event_type_details=1\" : null,\n hideLandingPageDetails ? \"hide_landing_page_details=1\" : null,\n primaryColor ? \"primary_color=\".concat(primaryColor) : null,\n textColor ? \"text_color=\".concat(textColor) : null,\n hideGdprBanner ? \"hide_gdpr_banner=1\" : null,\n name ? \"name=\".concat(encodeURIComponent(name)) : null,\n smsReminderNumber ? \"phone_number=\".concat(encodeURIComponent(smsReminderNumber)) : null,\n location ? \"location=\".concat(encodeURIComponent(location)) : null,\n firstName ? \"first_name=\".concat(encodeURIComponent(firstName)) : null,\n lastName ? \"last_name=\".concat(encodeURIComponent(lastName)) : null,\n guests ? \"guests=\".concat(guests.map(encodeURIComponent).join(\",\")) : null,\n email ? \"email=\".concat(encodeURIComponent(email)) : null,\n date && date instanceof Date ? \"date=\".concat(formatDate(date)) : null,\n utmCampaign ? \"utm_campaign=\".concat(encodeURIComponent(utmCampaign)) : null,\n utmContent ? \"utm_content=\".concat(encodeURIComponent(utmContent)) : null,\n utmMedium ? \"utm_medium=\".concat(encodeURIComponent(utmMedium)) : null,\n utmSource ? \"utm_source=\".concat(encodeURIComponent(utmSource)) : null,\n utmTerm ? \"utm_term=\".concat(encodeURIComponent(utmTerm)) : null,\n salesforce_uuid\n ? \"salesforce_uuid=\".concat(encodeURIComponent(salesforce_uuid))\n : null,\n embedType ? \"embed_type=\".concat(embedType) : null,\n /*\n * https://github.com/tcampb/react-calendly/pull/31\n * embed_domain must be defined to receive messages from the Calendly iframe.\n */\n \"embed_domain=1\",\n ]\n .concat(customAnswers ? formatCustomAnswers(customAnswers) : [])\n .filter(function (item) { return item !== null; })\n .join(\"&\");\n return \"\".concat(baseUrl, \"?\").concat(updatedQueryString);\n};\nvar formatDate = function (d) {\n var month = d.getMonth() + 1;\n var day = d.getDate();\n var year = d.getFullYear();\n return [\n year,\n month < 10 ? \"0\".concat(month) : month,\n day < 10 ? \"0\".concat(day) : day,\n ].join(\"-\");\n};\nvar CUSTOM_ANSWER_PATTERN = /^a\\d{1,2}$/;\nvar formatCustomAnswers = function (customAnswers) {\n var customAnswersFiltered = Object.keys(customAnswers).filter(function (key) {\n return key.match(CUSTOM_ANSWER_PATTERN);\n });\n if (!customAnswersFiltered.length)\n return [];\n return customAnswersFiltered.map(function (key) { return \"\".concat(key, \"=\").concat(encodeURIComponent(customAnswers[key])); });\n};\n\nvar LoadingSpinner = /** @class */ (function (_super) {\n __extends(LoadingSpinner, _super);\n function LoadingSpinner() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n LoadingSpinner.prototype.render = function () {\n return (React.createElement(\"div\", { className: \"calendly-spinner\" },\n React.createElement(\"div\", { className: \"calendly-bounce1\" }),\n React.createElement(\"div\", { className: \"calendly-bounce2\" }),\n React.createElement(\"div\", { className: \"calendly-bounce3\" })));\n };\n return LoadingSpinner;\n}(React.Component));\n\nvar defaultStyles = {\n minWidth: \"320px\",\n height: \"630px\",\n};\nvar InlineWidget = /** @class */ (function (_super) {\n __extends(InlineWidget, _super);\n function InlineWidget(props) {\n var _this = _super.call(this, props) || this;\n _this.state = {\n isLoading: true,\n };\n _this.onLoad = _this.onLoad.bind(_this);\n return _this;\n }\n InlineWidget.prototype.onLoad = function () {\n this.setState({\n isLoading: false,\n });\n };\n InlineWidget.prototype.render = function () {\n var src = formatCalendlyUrl({\n url: this.props.url,\n pageSettings: this.props.pageSettings,\n prefill: this.props.prefill,\n utm: this.props.utm,\n embedType: \"Inline\",\n });\n var LoadingSpinner$1 = this.props.LoadingSpinner || LoadingSpinner;\n return (React.createElement(\"div\", { className: \"calendly-inline-widget\", style: this.props.styles || defaultStyles },\n this.state.isLoading && React.createElement(LoadingSpinner$1, null),\n React.createElement(\"iframe\", { width: \"100%\", height: \"100%\", frameBorder: \"0\", title: this.props.iframeTitle || \"Calendly Scheduling Page\", onLoad: this.onLoad, src: src })));\n };\n return InlineWidget;\n}(React.Component));\n\nvar ModalContent = /** @class */ (function (_super) {\n __extends(ModalContent, _super);\n function ModalContent(props) {\n var _this = _super.call(this, props) || this;\n _this.state = {\n isLoading: true,\n };\n _this.onLoad = _this.onLoad.bind(_this);\n return _this;\n }\n ModalContent.prototype.onLoad = function () {\n this.setState({\n isLoading: false,\n });\n };\n ModalContent.prototype.render = function () {\n var src = formatCalendlyUrl({\n url: this.props.url,\n pageSettings: this.props.pageSettings,\n prefill: this.props.prefill,\n utm: this.props.utm,\n embedType: \"PopupWidget\",\n });\n var LoadingSpinner$1 = this.props.LoadingSpinner || LoadingSpinner;\n return (React.createElement(React.Fragment, null,\n this.state.isLoading && React.createElement(LoadingSpinner$1, null),\n React.createElement(\"iframe\", { width: \"100%\", height: \"100%\", frameBorder: \"0\", title: this.props.iframeTitle || \"Calendly Scheduling Page\", onLoad: this.onLoad, src: src })));\n };\n return ModalContent;\n}(React.Component));\n\nvar Modal = (function (props) {\n if (!props.open)\n return null;\n if (!props.rootElement) {\n throw new Error('[react-calendly]: PopupModal rootElement property cannot be undefined');\n }\n return ReactDom.createPortal(React.createElement(\"div\", { className: \"calendly-overlay\" },\n React.createElement(\"div\", { onClick: props.onModalClose, className: \"calendly-close-overlay\" }),\n React.createElement(\"div\", { className: \"calendly-popup\" },\n React.createElement(\"div\", { className: \"calendly-popup-content\" },\n React.createElement(ModalContent, __assign({}, props)))),\n React.createElement(\"button\", { className: \"calendly-popup-close\", onClick: props.onModalClose, \"aria-label\": \"Close modal\", style: {\n display: \"block\",\n border: \"none\",\n padding: 0,\n } })), props.rootElement);\n});\n\nvar PopupButton = /** @class */ (function (_super) {\n __extends(PopupButton, _super);\n function PopupButton(props) {\n var _this = _super.call(this, props) || this;\n _this.state = {\n isOpen: false,\n };\n _this.onClick = _this.onClick.bind(_this);\n _this.onClose = _this.onClose.bind(_this);\n return _this;\n }\n PopupButton.prototype.onClick = function (e) {\n e.preventDefault();\n this.setState({\n isOpen: true,\n });\n };\n PopupButton.prototype.onClose = function (e) {\n e.stopPropagation();\n this.setState({\n isOpen: false,\n });\n };\n PopupButton.prototype.render = function () {\n return (React.createElement(React.Fragment, null,\n React.createElement(\"button\", { onClick: this.onClick, style: this.props.styles || {}, className: this.props.className || \"\" }, this.props.text),\n React.createElement(Modal, __assign({}, this.props, { open: this.state.isOpen, onModalClose: this.onClose, rootElement: this.props.rootElement }))));\n };\n return PopupButton;\n}(React.Component));\n\nvar PopupWidget = /** @class */ (function (_super) {\n __extends(PopupWidget, _super);\n function PopupWidget(props) {\n var _this = _super.call(this, props) || this;\n _this.state = {\n isOpen: false,\n };\n _this.onClick = _this.onClick.bind(_this);\n _this.onClose = _this.onClose.bind(_this);\n return _this;\n }\n PopupWidget.prototype.onClick = function () {\n this.setState({\n isOpen: true,\n });\n };\n PopupWidget.prototype.onClose = function (e) {\n e.stopPropagation();\n this.setState({\n isOpen: false,\n });\n };\n PopupWidget.prototype.render = function () {\n return (React.createElement(\"div\", { className: \"calendly-badge-widget\", onClick: this.onClick },\n React.createElement(\"div\", { className: \"calendly-badge-content\", style: {\n background: this.props.color || \"#00a2ff\",\n color: this.props.textColor || \"#ffffff\",\n } },\n this.props.text || \"Schedule time with me\",\n this.props.branding && React.createElement(\"span\", null, \"powered by Calendly\")),\n React.createElement(Modal, __assign({}, this.props, { open: this.state.isOpen, onModalClose: this.onClose, rootElement: this.props.rootElement }))));\n };\n return PopupWidget;\n}(React.Component));\n\nvar EVENT_NAME = \"message\";\nfunction useCalendlyEventListener(eventHandlers) {\n var _a = eventHandlers || {}, onDateAndTimeSelected = _a.onDateAndTimeSelected, onEventScheduled = _a.onEventScheduled, onEventTypeViewed = _a.onEventTypeViewed, onProfilePageViewed = _a.onProfilePageViewed;\n React.useEffect(function () {\n var onMessage = function (e) {\n var eventName = e.data.event;\n if (eventName === CalendlyEvent.DATE_AND_TIME_SELECTED) {\n onDateAndTimeSelected && onDateAndTimeSelected(e);\n }\n else if (eventName === CalendlyEvent.EVENT_SCHEDULED) {\n onEventScheduled && onEventScheduled(e);\n }\n else if (eventName === CalendlyEvent.EVENT_TYPE_VIEWED) {\n onEventTypeViewed && onEventTypeViewed(e);\n }\n else if (eventName === CalendlyEvent.PROFILE_PAGE_VIEWED) {\n onProfilePageViewed && onProfilePageViewed(e);\n }\n };\n window.addEventListener(EVENT_NAME, onMessage);\n return function cleanup() {\n window.removeEventListener(EVENT_NAME, onMessage);\n };\n }, [eventHandlers]);\n}\n\nexport { InlineWidget, PopupButton, Modal as PopupModal, PopupWidget, useCalendlyEventListener };\n","import axios from \"axios\";\r\nimport React from \"react\";\r\nimport {\r\n ButtonGroup,\r\n Col,\r\n Container,\r\n Form,\r\n Modal,\r\n Row,\r\n Stack,\r\n} from \"react-bootstrap\";\r\nimport { PortalMortgageModel } from \"../models/PortalMortgageModel\";\r\nimport \"bootstrap/dist/css/bootstrap.min.css\";\r\nimport { Navigate } from \"react-router-dom\";\r\nimport { PortalPage } from \"../components/PortalPage\";\r\nimport UserContextState, { UserContext } from \"../components/UserContext\";\r\nimport { PortalContactModel } from \"../models/PortalContactModel\";\r\nimport { SolicitorFieldsCollection } from \"../forms/SolicitorFields\";\r\nimport { GetTooltips } from \"../helper/tooltipHelper\";\r\nimport { InputPill } from \"../components/Pills/InputPill\";\r\nimport { appInsightsHelper } from \"../components/AppInsights\";\r\nimport { UserContextComponent } from \"../components/UserContextComponent\";\r\nimport * as Icons from \"react-bootstrap\";\r\nimport { LinkPill } from \"../components/Pills/LinkPill\";\r\nimport { Address } from \"../components/Address\";\r\nimport { logger } from \"../helper/Logger\";\r\nimport { ReactComment } from \"../components/ReactComment\";\r\nimport { InlineWidget } from \"react-calendly\";\r\n\r\ninterface ISolicitorProps {\r\n mortgage?: PortalMortgageModel | null;\r\n helperTexts?: any | null;\r\n next?(): void | null;\r\n prev?(): void | null;\r\n step?: string | null;\r\n steps?: string | null;\r\n bumpRight?: boolean | null;\r\n}\r\n\r\ninterface ISolicitorState {\r\n mortgage: PortalMortgageModel | null;\r\n fields: any;\r\n loading: boolean;\r\n solicitor: PortalContactModel | null;\r\n redirectTo?: string | null;\r\n helperTexts: any;\r\n emptyOnly: boolean;\r\n saving: boolean;\r\n addressIsValid: boolean;\r\n useBeam: boolean | null;\r\n useOwnSolicitor?: boolean;\r\n bookACall: boolean;\r\n}\r\n\r\nexport class SolicitorDetails extends UserContextComponent<\r\n ISolicitorProps,\r\n ISolicitorState\r\n> {\r\n static contextType = UserContext;\r\n static displayName = SolicitorDetails.name;\r\n static beamEmail = \"info@letsbeam.ie\";\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.saveAllFields = this.saveAllFields.bind(this);\r\n this.handleChange = this.handleChange.bind(this);\r\n this.handleSubmit = this.handleSubmit.bind(this);\r\n this.prev = this.prev.bind(this);\r\n this.saveAllFields = this.saveAllFields.bind(this);\r\n this.ownSolicitorPanel = this.ownSolicitorPanel.bind(this);\r\n this.useBeam = this.useBeam.bind(this);\r\n this.continueWithBeamPanel = this.continueWithBeamPanel.bind(this);\r\n this.letsBeamCalendlyPanel = this.letsBeamCalendlyPanel.bind(this);\r\n this.useOwnSolicitor = this.useOwnSolicitor.bind(this);\r\n\r\n this.state = {\r\n loading: true,\r\n fields: null,\r\n mortgage: null,\r\n solicitor: null,\r\n helperTexts: [],\r\n emptyOnly: false,\r\n saving: false,\r\n addressIsValid: true,\r\n useBeam: null,\r\n bookACall: false,\r\n };\r\n }\r\n\r\n getfields(solicitor: any, helperTexts: any) {\r\n if (solicitor !== null && helperTexts !== null) {\r\n let fields = new SolicitorFieldsCollection();\r\n fields.loadData(solicitor, helperTexts, true, this.handleChange);\r\n this.setState({\r\n fields: fields,\r\n loading: false,\r\n helperTexts: helperTexts,\r\n });\r\n }\r\n //this.setState({ fields: getSolicitorFields(solicitor, helperTexts, true, this.handleChange), loading: false });\r\n }\r\n\r\n componentDidMount() {\r\n appInsightsHelper.trackPageView({ name: \"Solicitor Details\" });\r\n let context = this.getContext();\r\n this.setState({\r\n mortgage: context.mortgage,\r\n solicitor: context.mortgage!.solicitor ?? ({} as PortalContactModel),\r\n loading: true,\r\n });\r\n this.getTooltips(\"contact\");\r\n }\r\n\r\n getTooltips(entityname: string) {\r\n let context = this.getContext();\r\n GetTooltips(entityname)\r\n .then((response) => {\r\n this.setState({ helperTexts: response.data, loading: false });\r\n this.getfields(\r\n context.mortgage!.solicitor ?? ({} as PortalContactModel),\r\n response.data\r\n );\r\n })\r\n .catch((error) => {\r\n if (error.response.statusCode === 401) {\r\n alert(\"Unauthorized\");\r\n }\r\n });\r\n }\r\n\r\n prev() {\r\n if (this.props.prev) {\r\n this.saveAllFields(null);\r\n if (this.props.step === \"1\") this.setState({ redirectTo: \"/profile\" });\r\n else this.props.prev();\r\n } else {\r\n this.saveAllFields(\"/property\");\r\n }\r\n }\r\n\r\n handleSubmit(event: any) {\r\n event.preventDefault();\r\n this.setState({ saving: true });\r\n\r\n if (this.props.next) {\r\n this.saveAllFields(null);\r\n this.props.next();\r\n } else {\r\n this.saveAllFields(\"/\");\r\n }\r\n }\r\n\r\n handleChange(event: any) {\r\n const target = event.target;\r\n const value =\r\n (target.type === \"checkbox\" ? target.checked : target.value) ||\r\n target.textContent ||\r\n \"\";\r\n const name = target.name || target.getAttribute(\"name\");\r\n\r\n if (!name) return;\r\n\r\n var solicitor = this.state.solicitor as any;\r\n\r\n //// if we don't set the value here it sometimes doesn't get set and causes a bug with reverting to the original value\r\n let fields = this.state.fields;\r\n if (fields) {\r\n fields.updateModel(solicitor, name, value);\r\n fields.updateFieldValue(name, value);\r\n }\r\n this.setState({ fields: this.state.fields, solicitor: solicitor });\r\n }\r\n\r\n getFieldCount(): number {\r\n return 5;\r\n }\r\n getFieldsDone(): number {\r\n let fieldsDone = 0;\r\n if (this.state.fields.getFieldByName(\"fullName\").value) fieldsDone++;\r\n if (this.state.fields.getFieldByName(\"emailAddress2\").value) fieldsDone++;\r\n if (this.state.fields.getFieldByName(\"mobile\").value) fieldsDone++;\r\n if (this.state.fields.getFieldByName(\"address1Line1\").value) fieldsDone++;\r\n if (this.state.fields.getFieldByName(\"companyName\").value) fieldsDone++;\r\n return fieldsDone;\r\n }\r\n\r\n saveAllFields(redirectTo: string | null) {\r\n var solicitor = this.state.solicitor as any;\r\n var fields = this.state.fields?.fields as any;\r\n\r\n let dirtyFields: any[] = [];\r\n for (let fieldName in this.state.fields.fields) {\r\n let f = this.state.fields.fields[fieldName];\r\n if (f.isDirty) dirtyFields.push(f);\r\n }\r\n\r\n if (\r\n dirtyFields.length === 0 ||\r\n !this.state.fields.getFieldByName(\"emailAddress2\")\r\n ) {\r\n if (redirectTo) this.setState({ redirectTo: redirectTo });\r\n return;\r\n }\r\n\r\n // BANDAID - THIS IS TO KEEP THE APPLICANT MENU IN SYNC AS IT USES THE CONTEXT\r\n let context = this.getContext();\r\n context.mortgage!.solicitorDetailsPercentage =\r\n (this.getFieldsDone() * 100) / this.getFieldCount();\r\n\r\n var newContact: any = {};\r\n Object.keys(solicitor).map((key, i) => {\r\n Object.keys(fields).map((f, j) => {\r\n var f1 = fields[j];\r\n if (key === f1.name && f1.isDirty) {\r\n newContact[key] = f1.value;\r\n logger.log(f1.name);\r\n }\r\n //if (key === f1.name && !f1.isDirty) {\r\n // delete mortgage[key];\r\n //}\r\n });\r\n if (Object.keys(solicitor).length - 1 === i) {\r\n if (solicitor.contactId) {\r\n newContact[\"contactId\"] = solicitor.contactId;\r\n newContact[\"updatedFields\"] = dirtyFields\r\n .map((item) => {\r\n return item.name;\r\n })\r\n .join(\",\");\r\n axios.post(\"/Solicitor/update\", newContact).then((response) => {\r\n if (redirectTo) this.setState({ redirectTo: redirectTo });\r\n });\r\n } else {\r\n newContact.mortgageId = this.state.mortgage?.mortgageId;\r\n newContact.emailAddress =\r\n \"C-\" +\r\n Math.floor(100000 + Math.random() * 900000).toString() +\r\n newContact.emailAddress2;\r\n axios.post(\"/Solicitor/create\", newContact).then((response) => {\r\n newContact.contactId = response.data;\r\n context.mortgage!.solicitor = newContact;\r\n if (redirectTo) this.setState({ redirectTo: redirectTo });\r\n });\r\n }\r\n }\r\n });\r\n }\r\n\r\n useBeam() {\r\n let context = this.getContext();\r\n var solicitor: any = {};\r\n solicitor.mortgageId = context.mortgage?.mortgageId;\r\n solicitor.emailAddress = SolicitorDetails.beamEmail;\r\n axios\r\n .post(\"/Solicitor/LetsBeam\", solicitor, { params: { useLetsBeam: true } })\r\n .then((response) => {\r\n var solicitor = response.data;\r\n context.mortgage!.solicitor = solicitor;\r\n context.mortgage!.useLetsBeam = true;\r\n let fields = new SolicitorFieldsCollection();\r\n fields.loadData(\r\n solicitor,\r\n this.state.helperTexts,\r\n true,\r\n this.handleChange\r\n );\r\n this.setState({\r\n mortgage: context.mortgage,\r\n solicitor: solicitor,\r\n fields: fields,\r\n useBeam: true,\r\n useOwnSolicitor: false,\r\n });\r\n });\r\n }\r\n\r\n useOwnSolicitor() {\r\n let context = this.getContext();\r\n context.mortgage!.useLetsBeam = false;\r\n\r\n let solicitor = {} as PortalContactModel;\r\n let fields = new SolicitorFieldsCollection();\r\n fields.loadData(solicitor, this.state.helperTexts, true, this.handleChange);\r\n this.setState({\r\n useBeam: false,\r\n useOwnSolicitor: true,\r\n solicitor: solicitor,\r\n fields: fields,\r\n loading: false,\r\n });\r\n }\r\n\r\n decidePanel(mortgage: PortalMortgageModel | null) {\r\n if (mortgage === null) return;\r\n\r\n return (\r\n <>\r\n <Row className=\"sub-title-box\">\r\n <p className=\"subtext px-3\">\r\n Conveyancing is the legal transfer of a property from one owner to\r\n another. You need to find a qualified solicitor to help you with\r\n this part of your home purchase or mortgage switch.\r\n </p>\r\n </Row>\r\n {this.beamPanel(true)}\r\n </>\r\n );\r\n }\r\n\r\n beamPanel(showOwnSolicitorOption: boolean) {\r\n return (\r\n <Container className=\"pill-form\">\r\n <Stack direction=\"horizontal\" className=\"justify-center\">\r\n <div className=\"boxty box-beam\">\r\n <Row className=\"text-start beammargin\">\r\n <Col xs={12} md={8}>\r\n <Row>\r\n <div className=\"beamlogo\" />\r\n </Row>\r\n {/* <p className=\"l\">doddl has partnered with Beam to ease customers through the conveyancing process, faster. Beam has reduced the average completion time for our customers by to 50%. <a href=\"https://doddl.ie/mortgage-resources/property-conveyancing/\" target=\"_blank\">Learn more</a></p>\r\n <p className=\"pt-2 m italic\">By clicking continue with Beam you are consenting for doddl to share basic contact and mortgage details with Beam</p> */}\r\n <p className=\"l\">\r\n doddl has partnered with digital first legal firm Beam to\r\n offer a flat professional fee and service excellence to doddl\r\n mortgage clients.\r\n </p>\r\n <p className=\"pt-2 s italic\">\r\n If you click Continue with Beam below, to enable Beam to\r\n contact you we will share some information you have provided\r\n with them including name, email and mobile number of\r\n applicant(s). So that Beam can advise you appropriately, we\r\n will also share your your status such as mortgage amount, type\r\n and sale agreed status. This will help to fast track your\r\n application!\r\n </p>\r\n\r\n <Stack\r\n direction=\"horizontal\"\r\n gap={3}\r\n className=\"pt-3 mb-3 desktop\"\r\n >\r\n <button\r\n type=\"button\"\r\n className=\"btn btn-secondary big btn-wide200\"\r\n onClick={this.useBeam}\r\n >\r\n Continue with Beam\r\n </button>\r\n {showOwnSolicitorOption && (\r\n <button\r\n type=\"button\"\r\n className=\"btn btn-standard-transparent btn-outline big btn-wide200\"\r\n onClick={this.useOwnSolicitor}\r\n >\r\n Add my own solicitor\r\n </button>\r\n )}\r\n </Stack>\r\n <Stack gap={3} className=\"pt-3 mb-3 mobile\">\r\n <button\r\n type=\"button\"\r\n className=\"btn btn-secondary big btn-wide200 mb-2\"\r\n onClick={this.useBeam}\r\n >\r\n Continue with Beam\r\n </button>\r\n {showOwnSolicitorOption && (\r\n <button\r\n type=\"button\"\r\n className=\"btn btn-standard-transparent btn-outline big btn-wide200\"\r\n onClick={this.useOwnSolicitor}\r\n >\r\n Add my own solicitor\r\n </button>\r\n )}\r\n </Stack>\r\n </Col>\r\n <Col className=\"px-0 py-0 mx-0 my-0 d-xs-none d-lg-block\">\r\n <div className=\"beamhero\"></div>\r\n </Col>\r\n </Row>\r\n </div>\r\n </Stack>\r\n </Container>\r\n );\r\n }\r\n\r\n continueWithBeamPanel(mortgage: PortalMortgageModel | null) {\r\n if (mortgage === null) return;\r\n\r\n return (\r\n <>\r\n <Row className=\"sub-title-box\">\r\n <p className=\"subtext px-3\">Let’s discuss your legal requirements.</p>\r\n <p className=\"subtext px-3\">\r\n The legal team at Beam will talk you through all next steps and will\r\n provide you with a full quote so you can budget. Doddl have\r\n partnered with Beam as they are as committed as we are to supporting\r\n you throughout your mortgage journey.{\" \"}\r\n <a\r\n href=\"https://doddl.ie/mortgage-resources/property-conveyancing/\"\r\n target=\"_blank\"\r\n >\r\n Learn more\r\n </a>\r\n </p>\r\n </Row>\r\n <Container className=\"pill-form\" style={{ minHeight: 100 }}>\r\n <Row className=\"pb-5\">\r\n <Col>\r\n <button\r\n type=\"button\"\r\n className=\"btn bigger btn-dark\"\r\n onClick={() => this.setState({ bookACall: true })}\r\n >\r\n <i className=\"fa fa-calendar-plus pe-3\"></i> Book your call with\r\n Beam\r\n </button>\r\n </Col>\r\n </Row>\r\n <Row className=\"pill-row\">\r\n <Stack gap={1} direction=\"horizontal\" className=\"pill-stack\">\r\n <InputPill\r\n readonly={true}\r\n hideIfValue={this.state.emptyOnly}\r\n field={this.state.fields.getFieldByName(\"companyName\")}\r\n ></InputPill>\r\n <InputPill\r\n readonly={true}\r\n hideIfValue={this.state.emptyOnly}\r\n field={this.state.fields.getFieldByName(\"emailAddress2\")}\r\n ></InputPill>\r\n <InputPill\r\n readonly={true}\r\n hideIfValue={this.state.emptyOnly}\r\n field={this.state.fields.getFieldByName(\"mobile\")}\r\n ></InputPill>\r\n <InputPill\r\n readonly={true}\r\n hideIfValue={this.state.emptyOnly}\r\n field={this.state.fields.getFieldByName(\"address1Line1\")}\r\n ></InputPill>\r\n </Stack>\r\n </Row>\r\n </Container>\r\n <Container className=\"pb-5 mt-5\">\r\n <Stack\r\n direction=\"horizontal\"\r\n gap={3}\r\n className=\"text-center justify-center\"\r\n >\r\n <ButtonGroup>\r\n <button\r\n type=\"button\"\r\n className=\"btn btn-standard-transparent btn-outline btn-wide\"\r\n onClick={this.prev}\r\n >\r\n Back\r\n </button>\r\n {this.state.saving && (\r\n <button type=\"button\" className=\"btn btn-standard btn-wide\">\r\n <Icons.Spinner size=\"sm\" animation=\"border\" role=\"status\" />\r\n </button>\r\n )}\r\n {!this.state.saving && (\r\n <button\r\n type=\"button\"\r\n className=\"btn btn-dark btn-wide\"\r\n onClick={this.handleSubmit}\r\n >\r\n Finish\r\n </button>\r\n )}\r\n </ButtonGroup>\r\n </Stack>\r\n </Container>\r\n <Container>\r\n <Row>\r\n <Col>\r\n <button\r\n type=\"button\"\r\n className=\"btn btn-transparent pointer\"\r\n onClick={this.useOwnSolicitor}\r\n >\r\n change solicitor details\r\n </button>\r\n </Col>\r\n </Row>\r\n </Container>\r\n </>\r\n );\r\n }\r\n\r\n letsBeamCalendlyPanel(mortgage: PortalMortgageModel | null) {\r\n if (mortgage === null) return;\r\n\r\n let context = this.getContext();\r\n\r\n return (\r\n <>\r\n <Row className=\"sub-title-box\">\r\n <p className=\"subtext px-3\">Let’s discuss your legal requirements.</p>\r\n <p className=\"subtext px-3\">\r\n Provide the team at Beam with the below information and schedule a\r\n call to discuss the legal process and your needs. The legal team at\r\n Beam will talk you through all next steps and will provide you with\r\n a full quote so you can budget. Doddl have partnered with Beam as\r\n they are as committed as we are to supporting you throughout your\r\n mortgage journey.{\" \"}\r\n </p>\r\n </Row>\r\n {/* <Row className=\"sub-title-box mobile\">\r\n <p className=\"subtext px-3\">Let’s discuss your legal requirements.</p>\r\n <p className=\"subtext px-3\">Provide the team at Beam with the below information and schedule a call to discuss the legal process and your needs.</p>\r\n </Row> */}\r\n <Container className=\"pill-form\">\r\n <Stack direction=\"horizontal\" className=\"justify-center\">\r\n <div className=\"calendly-container\">\r\n <InlineWidget\r\n url=\"https://calendly.com/d/3tm-2pp-44h?utm_source=doddl&utm_medium=platform&utm_campaign=appoint_screen&utm_content=book&hide_gdpr_banner=1&background_color=f5f0ed&text_color=1a3a40&primary_color=9bc5bb\"\r\n styles={{ width: \"100%\", height: \"100%\" }}\r\n prefill={{\r\n firstName: context.contact?.firstName,\r\n lastName: context.contact?.lastName,\r\n email: context.contact?.emailAddress,\r\n }}\r\n />\r\n </div>\r\n </Stack>\r\n </Container>\r\n </>\r\n );\r\n }\r\n\r\n ownSolicitorPanel(mortgage: PortalMortgageModel | null) {\r\n if (mortgage === null) return;\r\n\r\n return (\r\n <>\r\n <Row className=\"sub-title-box\">\r\n <p className=\"subtext px-3\">\r\n If known please complete your solicitor details, if not we can add\r\n later.\r\n </p>\r\n </Row>\r\n <Container className=\"pill-form\" style={{ minHeight: 100 }}>\r\n <Row className=\"pill-row\">\r\n <Stack gap={1} direction=\"horizontal\" className=\"pill-stack\">\r\n <InputPill\r\n hideIfValue={this.state.emptyOnly}\r\n field={this.state.fields.getFieldByName(\"companyName\")}\r\n ></InputPill>\r\n <InputPill\r\n hideIfValue={this.state.emptyOnly}\r\n field={this.state.fields.getFieldByName(\"fullName\")}\r\n ></InputPill>\r\n <InputPill\r\n hideIfValue={this.state.emptyOnly}\r\n field={this.state.fields.getFieldByName(\"emailAddress2\")}\r\n ></InputPill>\r\n <InputPill\r\n hideIfValue={this.state.emptyOnly}\r\n field={this.state.fields.getFieldByName(\"mobile\")}\r\n ></InputPill>\r\n <LinkPill\r\n hideIfValue={this.state.emptyOnly}\r\n field={this.state.fields.getFieldByName(\"address1Line1\")}\r\n saveOnDone={this.saveAllFields}\r\n overlay={\r\n <Address\r\n helperTexts={this.state.helperTexts}\r\n record={this.state.solicitor}\r\n fields={this.state.fields}\r\n handleChange={this.handleChange}\r\n address=\"address1Line1\"\r\n eircode=\"eircode\"\r\n letManual={false}\r\n />\r\n }\r\n />\r\n </Stack>\r\n </Row>\r\n </Container>\r\n <Container className=\"pb-5\">\r\n <Row>\r\n <Col className=\"toggle-box\">\r\n <Form.Check\r\n type=\"switch\"\r\n id=\"empty-fields-switch\"\r\n label=\"Empty Fields Only\"\r\n reverse\r\n onClick={() =>\r\n this.setState({ emptyOnly: !this.state.emptyOnly })\r\n }\r\n />\r\n </Col>\r\n </Row>\r\n <Stack\r\n direction=\"horizontal\"\r\n gap={3}\r\n className=\"text-center justify-center\"\r\n >\r\n <ButtonGroup>\r\n <button\r\n type=\"button\"\r\n className=\"btn btn-standard-transparent btn-outline btn-wide\"\r\n onClick={this.prev}\r\n >\r\n Back\r\n </button>\r\n {this.state.saving && (\r\n <button type=\"button\" className=\"btn btn-standard btn-wide\">\r\n <Icons.Spinner size=\"sm\" animation=\"border\" role=\"status\" />\r\n </button>\r\n )}\r\n {!this.state.saving && (\r\n <button\r\n type=\"button\"\r\n className=\"btn btn-dark btn-wide\"\r\n onClick={this.handleSubmit}\r\n >\r\n Finish\r\n </button>\r\n )}\r\n </ButtonGroup>\r\n </Stack>\r\n </Container>\r\n {this.beamPanel(false)}\r\n </>\r\n );\r\n }\r\n\r\n usingBeam() {\r\n return (\r\n this.state.mortgage?.solicitor &&\r\n (this.state.mortgage?.useLetsBeam ||\r\n this.state.mortgage.solicitor.emailAddress.toLowerCase() ===\r\n SolicitorDetails.beamEmail.toLowerCase())\r\n );\r\n }\r\n\r\n render() {\r\n if (this.state.redirectTo) {\r\n return <Navigate to={this.state.redirectTo} />;\r\n }\r\n\r\n var contents;\r\n if (this.state.loading) {\r\n return (\r\n <p>\r\n <em>Loading...</em>\r\n </p>\r\n );\r\n } else if (\r\n !this.state.mortgage?.solicitor &&\r\n this.state.mortgage?.useLetsBeam !== true &&\r\n !this.state.useOwnSolicitor\r\n ) {\r\n contents = this.decidePanel(this.state.mortgage);\r\n } else if (this.state.bookACall) {\r\n contents = this.letsBeamCalendlyPanel(this.state.mortgage);\r\n } else if (\r\n (this.state.mortgage?.solicitor && !this.usingBeam()) ||\r\n this.state.useOwnSolicitor\r\n ) {\r\n contents = this.ownSolicitorPanel(this.state.mortgage);\r\n } else if (this.usingBeam() || this.state.useBeam) {\r\n contents = this.continueWithBeamPanel(this.state.mortgage);\r\n } else {\r\n // Don't leave them with a blank page. If all else fails, drop them into the decide panel\r\n contents = this.decidePanel(this.state.mortgage);\r\n }\r\n\r\n //contents = this.letsBeamCalendlyPanel(this.state.mortgage);\r\n return (\r\n <PortalPage\r\n className={`bump-right ${\r\n this.state.bookACall\r\n ? \"inprogress\"\r\n : (this.state.useBeam || this.state.mortgage?.useLetsBeam) &&\r\n !this.state.useOwnSolicitor\r\n ? \"complete\"\r\n : \"\"\r\n }`}\r\n title={\"Property Conveyancing\"}\r\n >\r\n <Row>\r\n <Col className=\"col-12\">\r\n <Form onSubmit={this.handleSubmit}>{contents}</Form>\r\n </Col>\r\n </Row>\r\n {/* <Modal centered size=\"xl\" show={this.state.bookACall} onHide={() => {this.setState({bookACall: false})}}>\r\n <div className=\"modal-content\" style={{backgroundColor:'var(--sage)', borderWidth:0}}>\r\n <Modal.Header closeButton>\r\n </Modal.Header>\r\n <Modal.Body>\r\n {this.letsBeamCalendlyPanel(this.state.mortgage)}\r\n </Modal.Body>\r\n <Modal.Footer>\r\n </Modal.Footer>\r\n </div>\r\n </Modal> */}\r\n </PortalPage>\r\n );\r\n }\r\n\r\n async populateData() {\r\n const context = this.context as UserContextState;\r\n if (context.contact === null) return;\r\n\r\n axios\r\n .get(\r\n \"/mortgages/GetMortgageByMortgageId?mortgageId=\" +\r\n context.contact.mortgageId\r\n )\r\n .then((response) => {\r\n this.setState({\r\n mortgage: response.data,\r\n solicitor: response.data.solicitor ?? {},\r\n loading: true,\r\n });\r\n this.getTooltips(\"contact\");\r\n })\r\n .catch((error) => {\r\n if (error.response.statusCode === 401) {\r\n alert(\"Unauthorized\");\r\n }\r\n });\r\n }\r\n}\r\n","import './Documents.css';\r\nimport { UserContext } from '../components/UserContext';\r\nimport UserContextState from '../components/UserContext';\r\nimport axios from 'axios';\r\nimport { MortgageType, PortalMortgageModel } from '../models/PortalMortgageModel';\r\nimport Property from './Property';\r\nimport Shared from './Shared';\r\nimport { PortalPropertyModel } from '../models/PortalPropertyModel';\r\nimport { SolicitorDetails } from './SolicitorDetails';\r\nimport { appInsightsHelper } from '../components/AppInsights';\r\nimport { UserContextComponent } from '../components/UserContextComponent';\r\nimport { Navigate } from 'react-router-dom';\r\n\r\ninterface ISharedDetailsProps {\r\n}\r\n\r\ninterface ISharedDetailsState {\r\n loading: boolean;\r\n mortgage: PortalMortgageModel | null;\r\n property: PortalPropertyModel | null;\r\n step: number;\r\n redirectOnNext?: boolean | null;\r\n}\r\n\r\nexport class SharedDetails extends UserContextComponent<ISharedDetailsProps, ISharedDetailsState> {\r\n static contextType = UserContext;\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.prev = this.prev.bind(this);\r\n this.next = this.next.bind(this);\r\n this.setStep = this.setStep.bind(this);\r\n this.state = { loading: false, mortgage: null, property: null, step: 2 };\r\n }\r\n\r\n componentDidMount() {\r\n appInsightsHelper.trackPageView({ name: \"Shared Detail\" });\r\n //this.populateData();\r\n }\r\n\r\n prev() {\r\n var step = this.state.step;\r\n\r\n if (step === 1) {\r\n this.setState({\r\n redirectOnNext: true\r\n });\r\n } else {\r\n if (step > 1)\r\n step--;\r\n\r\n this.setState({\r\n step: step\r\n });\r\n }\r\n }\r\n\r\n next() {\r\n var step = this.state.step;\r\n\r\n if (step === 3) {\r\n this.setState({ redirectOnNext: true });\r\n return;\r\n }\r\n\r\n if (step < 3)\r\n step++;\r\n\r\n this.setState({\r\n step: step\r\n });\r\n\r\n }\r\n\r\n setStep(step: number): void {\r\n this.setState({ step: step });\r\n }\r\n\r\n render() {\r\n if (this.state.redirectOnNext) {\r\n return (<Navigate to={\"/profile\"} />)\r\n }\r\n let context = this.getContext();\r\n\r\n if (this.state.loading || context.mortgage === null)\r\n return (<><p><em>Loading...</em></p></>);\r\n\r\n let switcherOrSaleAgreedPurchaser = context.mortgage?.type === MortgageType.RemortgagingExistingLoan || context.mortgage?.saleAgreed;\r\n\r\n return (\r\n <>\r\n {!switcherOrSaleAgreedPurchaser &&\r\n <>\r\n {this.state.step === 1 &&\r\n <Shared next={this.next} prev={this.prev} step=\"1\" steps=\"2\" />\r\n }\r\n {this.state.step === 2 &&\r\n <Property bumpRight={true} prev={this.prev} step=\"2\" steps=\"2\" hideNav={true} />\r\n }\r\n </>\r\n }\r\n {switcherOrSaleAgreedPurchaser &&\r\n <>\r\n {this.state.step === 1 &&\r\n <Shared next={this.next} prev={this.prev} step=\"1\" steps=\"3\" />\r\n }\r\n {this.state.step === 2 &&\r\n <Property bumpRight={true} next={this.next} prev={this.prev} step=\"2\" steps=\"3\" hideNav={true} />\r\n }\r\n {this.state.step === 3 &&\r\n <SolicitorDetails bumpRight={true} next={this.next} prev={this.prev} step=\"3\" steps=\"3\" />\r\n }\r\n </>\r\n }\r\n </>\r\n );\r\n\r\n }\r\n\r\n async populateData() {\r\n const context = this.context as UserContextState;\r\n if (context.contact === null)\r\n return;\r\n\r\n axios.get(\"/mortgages/GetMortgageByMortgageId?mortgageId=\" + context.contact.mortgageId)\r\n .then((response) => {\r\n this.setState({ mortgage: response.data });\r\n this.getProperty();\r\n //this.getTooltips(\"contact\");\r\n })\r\n .catch((error) => {\r\n if (error.response.statusCode === 401) {\r\n alert(\"Unauthorized\");\r\n }\r\n });\r\n }\r\n\r\n async getProperty() {\r\n const context = this.context as UserContextState;\r\n if (context.contact === null)\r\n return;\r\n\r\n let url = `/property/getProperty?mortgageId=${context.contact.mortgageId}`;\r\n axios\r\n .get(url)\r\n .then((response) => {\r\n this.setState({ property: response.data, loading: false });\r\n })\r\n .catch((error) => {\r\n if (error.response.statusCode === 401) {\r\n alert(\"Unauthorized\");\r\n }\r\n });\r\n }\r\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\nvar ReCAPTCHA =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(ReCAPTCHA, _React$Component);\n\n function ReCAPTCHA() {\n var _this;\n\n _this = _React$Component.call(this) || this;\n _this.handleExpired = _this.handleExpired.bind(_assertThisInitialized(_this));\n _this.handleErrored = _this.handleErrored.bind(_assertThisInitialized(_this));\n _this.handleChange = _this.handleChange.bind(_assertThisInitialized(_this));\n _this.handleRecaptchaRef = _this.handleRecaptchaRef.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n var _proto = ReCAPTCHA.prototype;\n\n _proto.getValue = function getValue() {\n if (this.props.grecaptcha && this._widgetId !== undefined) {\n return this.props.grecaptcha.getResponse(this._widgetId);\n }\n\n return null;\n };\n\n _proto.getWidgetId = function getWidgetId() {\n if (this.props.grecaptcha && this._widgetId !== undefined) {\n return this._widgetId;\n }\n\n return null;\n };\n\n _proto.execute = function execute() {\n var grecaptcha = this.props.grecaptcha;\n\n if (grecaptcha && this._widgetId !== undefined) {\n return grecaptcha.execute(this._widgetId);\n } else {\n this._executeRequested = true;\n }\n };\n\n _proto.executeAsync = function executeAsync() {\n var _this2 = this;\n\n return new Promise(function (resolve, reject) {\n _this2.executionResolve = resolve;\n _this2.executionReject = reject;\n\n _this2.execute();\n });\n };\n\n _proto.reset = function reset() {\n if (this.props.grecaptcha && this._widgetId !== undefined) {\n this.props.grecaptcha.reset(this._widgetId);\n }\n };\n\n _proto.handleExpired = function handleExpired() {\n if (this.props.onExpired) {\n this.props.onExpired();\n } else {\n this.handleChange(null);\n }\n };\n\n _proto.handleErrored = function handleErrored() {\n if (this.props.onErrored) {\n this.props.onErrored();\n }\n\n if (this.executionReject) {\n this.executionReject();\n delete this.executionResolve;\n delete this.executionReject;\n }\n };\n\n _proto.handleChange = function handleChange(token) {\n if (this.props.onChange) {\n this.props.onChange(token);\n }\n\n if (this.executionResolve) {\n this.executionResolve(token);\n delete this.executionReject;\n delete this.executionResolve;\n }\n };\n\n _proto.explicitRender = function explicitRender() {\n if (this.props.grecaptcha && this.props.grecaptcha.render && this._widgetId === undefined) {\n var wrapper = document.createElement(\"div\");\n this._widgetId = this.props.grecaptcha.render(wrapper, {\n sitekey: this.props.sitekey,\n callback: this.handleChange,\n theme: this.props.theme,\n type: this.props.type,\n tabindex: this.props.tabindex,\n \"expired-callback\": this.handleExpired,\n \"error-callback\": this.handleErrored,\n size: this.props.size,\n stoken: this.props.stoken,\n hl: this.props.hl,\n badge: this.props.badge\n });\n this.captcha.appendChild(wrapper);\n }\n\n if (this._executeRequested && this.props.grecaptcha && this._widgetId !== undefined) {\n this._executeRequested = false;\n this.execute();\n }\n };\n\n _proto.componentDidMount = function componentDidMount() {\n this.explicitRender();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n this.explicitRender();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this._widgetId !== undefined) {\n this.delayOfCaptchaIframeRemoving();\n this.reset();\n }\n };\n\n _proto.delayOfCaptchaIframeRemoving = function delayOfCaptchaIframeRemoving() {\n var temporaryNode = document.createElement(\"div\");\n document.body.appendChild(temporaryNode);\n temporaryNode.style.display = \"none\"; // move of the recaptcha to a temporary node\n\n while (this.captcha.firstChild) {\n temporaryNode.appendChild(this.captcha.firstChild);\n } // delete the temporary node after reset will be done\n\n\n setTimeout(function () {\n document.body.removeChild(temporaryNode);\n }, 5000);\n };\n\n _proto.handleRecaptchaRef = function handleRecaptchaRef(elem) {\n this.captcha = elem;\n };\n\n _proto.render = function render() {\n // consume properties owned by the reCATPCHA, pass the rest to the div so the user can style it.\n\n /* eslint-disable no-unused-vars */\n var _this$props = this.props,\n sitekey = _this$props.sitekey,\n onChange = _this$props.onChange,\n theme = _this$props.theme,\n type = _this$props.type,\n tabindex = _this$props.tabindex,\n onExpired = _this$props.onExpired,\n onErrored = _this$props.onErrored,\n size = _this$props.size,\n stoken = _this$props.stoken,\n grecaptcha = _this$props.grecaptcha,\n badge = _this$props.badge,\n hl = _this$props.hl,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"sitekey\", \"onChange\", \"theme\", \"type\", \"tabindex\", \"onExpired\", \"onErrored\", \"size\", \"stoken\", \"grecaptcha\", \"badge\", \"hl\"]);\n /* eslint-enable no-unused-vars */\n\n\n return React.createElement(\"div\", _extends({}, childProps, {\n ref: this.handleRecaptchaRef\n }));\n };\n\n return ReCAPTCHA;\n}(React.Component);\n\nexport { ReCAPTCHA as default };\nReCAPTCHA.displayName = \"ReCAPTCHA\";\nReCAPTCHA.propTypes = {\n sitekey: PropTypes.string.isRequired,\n onChange: PropTypes.func,\n grecaptcha: PropTypes.object,\n theme: PropTypes.oneOf([\"dark\", \"light\"]),\n type: PropTypes.oneOf([\"image\", \"audio\"]),\n tabindex: PropTypes.number,\n onExpired: PropTypes.func,\n onErrored: PropTypes.func,\n size: PropTypes.oneOf([\"compact\", \"normal\", \"invisible\"]),\n stoken: PropTypes.string,\n hl: PropTypes.string,\n badge: PropTypes.oneOf([\"bottomright\", \"bottomleft\", \"inline\"])\n};\nReCAPTCHA.defaultProps = {\n onChange: function onChange() {},\n theme: \"light\",\n type: \"image\",\n tabindex: 0,\n size: \"normal\",\n badge: \"bottomright\"\n};","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nimport { Component, createElement, forwardRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport hoistStatics from \"hoist-non-react-statics\";\nvar SCRIPT_MAP = {}; // A counter used to generate a unique id for each component that uses the function\n\nvar idCount = 0;\nexport default function makeAsyncScript(getScriptURL, options) {\n options = options || {};\n return function wrapWithAsyncScript(WrappedComponent) {\n var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || \"Component\";\n\n var AsyncScriptLoader =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(AsyncScriptLoader, _Component);\n\n function AsyncScriptLoader(props, context) {\n var _this;\n\n _this = _Component.call(this, props, context) || this;\n _this.state = {};\n _this.__scriptURL = \"\";\n return _this;\n }\n\n var _proto = AsyncScriptLoader.prototype;\n\n _proto.asyncScriptLoaderGetScriptLoaderID = function asyncScriptLoaderGetScriptLoaderID() {\n if (!this.__scriptLoaderID) {\n this.__scriptLoaderID = \"async-script-loader-\" + idCount++;\n }\n\n return this.__scriptLoaderID;\n };\n\n _proto.setupScriptURL = function setupScriptURL() {\n this.__scriptURL = typeof getScriptURL === \"function\" ? getScriptURL() : getScriptURL;\n return this.__scriptURL;\n };\n\n _proto.asyncScriptLoaderHandleLoad = function asyncScriptLoaderHandleLoad(state) {\n var _this2 = this;\n\n // use reacts setState callback to fire props.asyncScriptOnLoad with new state/entry\n this.setState(state, function () {\n return _this2.props.asyncScriptOnLoad && _this2.props.asyncScriptOnLoad(_this2.state);\n });\n };\n\n _proto.asyncScriptLoaderTriggerOnScriptLoaded = function asyncScriptLoaderTriggerOnScriptLoaded() {\n var mapEntry = SCRIPT_MAP[this.__scriptURL];\n\n if (!mapEntry || !mapEntry.loaded) {\n throw new Error(\"Script is not loaded.\");\n }\n\n for (var obsKey in mapEntry.observers) {\n mapEntry.observers[obsKey](mapEntry);\n }\n\n delete window[options.callbackName];\n };\n\n _proto.componentDidMount = function componentDidMount() {\n var _this3 = this;\n\n var scriptURL = this.setupScriptURL();\n var key = this.asyncScriptLoaderGetScriptLoaderID();\n var _options = options,\n globalName = _options.globalName,\n callbackName = _options.callbackName,\n scriptId = _options.scriptId; // check if global object already attached to window\n\n if (globalName && typeof window[globalName] !== \"undefined\") {\n SCRIPT_MAP[scriptURL] = {\n loaded: true,\n observers: {}\n };\n } // check if script loading already\n\n\n if (SCRIPT_MAP[scriptURL]) {\n var entry = SCRIPT_MAP[scriptURL]; // if loaded or errored then \"finish\"\n\n if (entry && (entry.loaded || entry.errored)) {\n this.asyncScriptLoaderHandleLoad(entry);\n return;\n } // if still loading then callback to observer queue\n\n\n entry.observers[key] = function (entry) {\n return _this3.asyncScriptLoaderHandleLoad(entry);\n };\n\n return;\n }\n /*\n * hasn't started loading\n * start the \"magic\"\n * setup script to load and observers\n */\n\n\n var observers = {};\n\n observers[key] = function (entry) {\n return _this3.asyncScriptLoaderHandleLoad(entry);\n };\n\n SCRIPT_MAP[scriptURL] = {\n loaded: false,\n observers: observers\n };\n var script = document.createElement(\"script\");\n script.src = scriptURL;\n script.async = true;\n\n for (var attribute in options.attributes) {\n script.setAttribute(attribute, options.attributes[attribute]);\n }\n\n if (scriptId) {\n script.id = scriptId;\n }\n\n var callObserverFuncAndRemoveObserver = function callObserverFuncAndRemoveObserver(func) {\n if (SCRIPT_MAP[scriptURL]) {\n var mapEntry = SCRIPT_MAP[scriptURL];\n var observersMap = mapEntry.observers;\n\n for (var obsKey in observersMap) {\n if (func(observersMap[obsKey])) {\n delete observersMap[obsKey];\n }\n }\n }\n };\n\n if (callbackName && typeof window !== \"undefined\") {\n window[callbackName] = function () {\n return _this3.asyncScriptLoaderTriggerOnScriptLoaded();\n };\n }\n\n script.onload = function () {\n var mapEntry = SCRIPT_MAP[scriptURL];\n\n if (mapEntry) {\n mapEntry.loaded = true;\n callObserverFuncAndRemoveObserver(function (observer) {\n if (callbackName) {\n return false;\n }\n\n observer(mapEntry);\n return true;\n });\n }\n };\n\n script.onerror = function () {\n var mapEntry = SCRIPT_MAP[scriptURL];\n\n if (mapEntry) {\n mapEntry.errored = true;\n callObserverFuncAndRemoveObserver(function (observer) {\n observer(mapEntry);\n return true;\n });\n }\n };\n\n document.body.appendChild(script);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n // Remove tag script\n var scriptURL = this.__scriptURL;\n\n if (options.removeOnUnmount === true) {\n var allScripts = document.getElementsByTagName(\"script\");\n\n for (var i = 0; i < allScripts.length; i += 1) {\n if (allScripts[i].src.indexOf(scriptURL) > -1) {\n if (allScripts[i].parentNode) {\n allScripts[i].parentNode.removeChild(allScripts[i]);\n }\n }\n }\n } // Clean the observer entry\n\n\n var mapEntry = SCRIPT_MAP[scriptURL];\n\n if (mapEntry) {\n delete mapEntry.observers[this.asyncScriptLoaderGetScriptLoaderID()];\n\n if (options.removeOnUnmount === true) {\n delete SCRIPT_MAP[scriptURL];\n }\n }\n };\n\n _proto.render = function render() {\n var globalName = options.globalName; // remove asyncScriptOnLoad from childProps\n\n var _this$props = this.props,\n asyncScriptOnLoad = _this$props.asyncScriptOnLoad,\n forwardedRef = _this$props.forwardedRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"asyncScriptOnLoad\", \"forwardedRef\"]); // eslint-disable-line no-unused-vars\n\n\n if (globalName && typeof window !== \"undefined\") {\n childProps[globalName] = typeof window[globalName] !== \"undefined\" ? window[globalName] : undefined;\n }\n\n childProps.ref = forwardedRef;\n return createElement(WrappedComponent, childProps);\n };\n\n return AsyncScriptLoader;\n }(Component); // Note the second param \"ref\" provided by React.forwardRef.\n // We can pass it along to AsyncScriptLoader as a regular prop, e.g. \"forwardedRef\"\n // And it can then be attached to the Component.\n\n\n var ForwardedComponent = forwardRef(function (props, ref) {\n return createElement(AsyncScriptLoader, _extends({}, props, {\n forwardedRef: ref\n }));\n });\n ForwardedComponent.displayName = \"AsyncScriptLoader(\" + wrappedComponentName + \")\";\n ForwardedComponent.propTypes = {\n asyncScriptOnLoad: PropTypes.func\n };\n return hoistStatics(ForwardedComponent, WrappedComponent);\n };\n}","import ReCAPTCHA from \"./recaptcha\";\nimport makeAsyncScriptLoader from \"react-async-script\";\nvar callbackName = \"onloadcallback\";\nvar globalName = \"grecaptcha\";\n\nfunction getOptions() {\n return typeof window !== \"undefined\" && window.recaptchaOptions || {};\n}\n\nfunction getURL() {\n var dynamicOptions = getOptions();\n var hostname = dynamicOptions.useRecaptchaNet ? \"recaptcha.net\" : \"www.google.com\";\n return \"https://\" + hostname + \"/recaptcha/api.js?onload=\" + callbackName + \"&render=explicit\";\n}\n\nexport default makeAsyncScriptLoader(getURL, {\n callbackName: callbackName,\n globalName: globalName\n})(ReCAPTCHA);","import { PortalCategoryModel } from \"./PortalCategoryModel\";\r\n\r\nexport enum SpecialConditionsType\r\n{\r\n PreAIPClarification = 755980004,\r\n AIPCondition = 755980003,\r\n PreLoanofferClarification = 755980005,\r\n LoanofferCustomercondition = 755980000,\r\n LegalTeam = 755980001,\r\n LegalPack = 755980002,\r\n}\r\n\r\nexport interface PortalSpecialConditionsModel {\r\n mortgageDocumentId: string;\r\n specialConditionsId: string;\r\n name: string;\r\n description: string;\r\n type?: SpecialConditionsType;\r\n uploadComplete?: boolean;\r\n completed?: boolean;\r\n lender: string;\r\n category: PortalCategoryModel;\r\n uploaded?: boolean; \r\n}","import RecaptchaWrapper from \"./recaptcha-wrapper\";\nimport ReCAPTCHA from \"./recaptcha\";\nexport default RecaptchaWrapper;\nexport { ReCAPTCHA };","import { Component } from 'react';\r\nimport 'bootstrap/dist/css/bootstrap.min.css';\r\nimport { Col, Container, Form, Row } from 'react-bootstrap';\r\nimport axios from 'axios';\r\nimport ReCAPTCHA from 'react-google-recaptcha';\r\n\r\nexport class NotValid extends Component<any, any> {\r\n constructor(props: any) {\r\n super(props);\r\n this.state = { sent: false, email: \"\", token: \"\", loading: true, captchaKey: null };\r\n this.requestNewLink = this.requestNewLink.bind(this);\r\n this.onChange = this.onChange.bind(this);\r\n this.captchaOnChange = this.captchaOnChange.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n axios.defaults.baseURL = process.env.REACT_APP_API_URL;\r\n axios.get('/Contacts/GetCaptchaPublicKey')\r\n .then((response) => {\r\n this.setState({ captchaKey: response.data, loading: false });\r\n });\r\n }\r\n\r\n onChange(value: string) {\r\n this.setState({ email: value });\r\n }\r\n\r\n requestNewLink() {\r\n if (this.state.email === \"\" || this.state.email === null || this.state.token === \"\" || this.state.token === null) {\r\n return;\r\n }\r\n axios.defaults.baseURL = process.env.REACT_APP_API_URL;\r\n axios.post('/Contacts/RequestNewLink', null, { params: { email: this.state.email, token: this.state.token } });\r\n this.setState({ sent: true });\r\n }\r\n\r\n captchaOnChange(value: string | null) {\r\n this.setState({ token: value });\r\n }\r\n\r\n render() {\r\n if (this.state.loading)\r\n return <p><em>Loading...</em></p>;\r\n\r\n return (\r\n <Container className=\"\">\r\n <Row className=\"page-title\" style={{ textAlign: \"center\" }}>\r\n <h1>Your security matters</h1>\r\n <p className='subtext mt-4 mb-4'>Your invite to the doddl portal has expired, but no need to worry. Simply click below and we’ll send you a new link for you to keep moving with your mortgage.</p>\r\n </Row>\r\n {this.state.sent === false &&\r\n <>\r\n <Row>\r\n <Col className=\"col-2\"></Col>\r\n <Col className=\"col-8\">\r\n <p><span>Please confirm your e-mail address:</span></p>\r\n <Form.Control type=\"email\" value={this.state.email} onChange={e => { this.onChange(e.target.value); }} />\r\n </Col>\r\n <Col className=\"col-2\"></Col>\r\n </Row>\r\n <Row className='justify-center' style={{ paddingTop: \"20px\"}}>\r\n <Col className=\"col-2 \"></Col>\r\n <Col className='col-8'>\r\n <ReCAPTCHA style={{ textAlign: \"center\", display:'inline-block' }} sitekey={this.state.captchaKey} onChange={this.captchaOnChange} />\r\n </Col>\r\n <Col className=\"col-2 \"></Col>\r\n </Row>\r\n </>\r\n }\r\n <Row style={{ textAlign: \"center\", padding: \"20px\" }}>\r\n {this.state.sent === false &&\r\n <p>\r\n <button className=\"btn xl btn-standard btn-wide200\" onClick={this.requestNewLink}>Send new link</button>\r\n </p>\r\n }\r\n {this.state.sent === true &&\r\n <p className='subtext'><span style={{ color: 'rgba(51, 204, 153, 1)' }} className=\"fa-solid fa-check fa-xl\"></span> Your request has been sent.</p>\r\n }\r\n </Row>\r\n </Container>\r\n );\r\n }\r\n}\r\n","import React from \"react\";\r\nimport axios from \"axios\";\r\nimport { useMsal, useAccount } from \"@azure/msal-react\";\r\nimport { loginApiRequest } from \"../helper/authConfig\";\r\n//import { initPublicApi, publicApi } from \"../helper/publicApi\";\r\n\r\ninterface RequestInterceptorProps {\r\n children: JSX.Element;\r\n}\r\n\r\nconst RequestInterceptor: React.FC<RequestInterceptorProps> = ({\r\n children,\r\n}: RequestInterceptorProps) => {\r\n const { instance, accounts } = useMsal();\r\n const account = useAccount(accounts[0]);\r\n axios.defaults.baseURL = process.env.REACT_APP_API_URL;\r\n\r\n axios.interceptors.request.use(async (config) => {\r\n if (!account) {\r\n throw Error(\"No active account! Verify a user has been signed in.\");\r\n }\r\n\r\n const response = await instance.acquireTokenSilent({\r\n ...loginApiRequest,\r\n account,\r\n });\r\n\r\n const bearer = `Bearer ${response.accessToken}`;\r\n if (config.headers) config.headers.Authorization = bearer;\r\n\r\n return config;\r\n });\r\n\r\n axios.interceptors.response.use(\r\n (config) => {\r\n return config;\r\n },\r\n (error) => {\r\n if (error.errorCode === \"interaction_required\") {\r\n instance.logoutRedirect({\r\n postLogoutRedirectUri: \"/\",\r\n });\r\n }\r\n // if(error?.code === \"ERR_NETWORK\") {\r\n // return Promise.reject(error);\r\n // }\r\n // else if (error.errorCode === 'interaction_required') {\r\n // instance.logoutRedirect({\r\n // postLogoutRedirectUri: \"/\",\r\n // });\r\n // }\r\n // // } else {\r\n // // console.error(error);\r\n // // console.error(JSON.stringify(error));\r\n\r\n // // navigate(\"/error\");\r\n // // return Promise.reject(error);\r\n // // }\r\n return Promise.reject(error);\r\n }\r\n );\r\n\r\n // if (!publicApi) {\r\n // initPublicApi();\r\n // }\r\n\r\n return <>{children}</>;\r\n};\r\n\r\nexport default RequestInterceptor;\r\n","import axios from \"axios\";\r\nimport {\r\n MortgageStatus,\r\n MortgageType,\r\n PortalMortgageModel,\r\n} from \"../models/PortalMortgageModel\";\r\nimport \"bootstrap/dist/css/bootstrap.min.css\";\r\nimport { Link, Navigate } from \"react-router-dom\";\r\nimport { Col, Container, Modal, Row, Stack } from \"react-bootstrap\";\r\nimport { PortalPage } from \"../components/PortalPage\";\r\nimport { UserContext } from \"../components/UserContext\";\r\nimport UserContextState from \"../components/UserContext\";\r\nimport { appInsightsHelper } from \"../components/AppInsights\";\r\nimport React from \"react\";\r\nimport { UserContextComponent } from \"../components/UserContextComponent\";\r\nimport { ApplicantSetup } from \"../components/ApplicantSetup\";\r\nimport * as Icons from \"react-bootstrap\";\r\nimport { ApplicantSetupDialog } from \"../components/ApplicantSetupDialog\";\r\nimport { AppointSolicitorTile } from \"../components/Tiles/AppointSolicitorTile\";\r\nimport { LifeCoverTile } from \"../components/Tiles/LifeCoverTile\";\r\n\r\ninterface IDashboardProps {}\r\n\r\ninterface IDashboardState {\r\n mortgage: PortalMortgageModel | null;\r\n loading: boolean;\r\n isCompleted: boolean;\r\n showWelcomeVideo: boolean;\r\n startWelcomeVideo: boolean;\r\n missingSecondary: boolean;\r\n}\r\n\r\nexport class Dashboard extends UserContextComponent<\r\n IDashboardProps,\r\n IDashboardState\r\n> {\r\n static contextType = UserContext;\r\n static displayName = Dashboard.name;\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n mortgage: null,\r\n isCompleted: false,\r\n showWelcomeVideo: false,\r\n startWelcomeVideo: false,\r\n missingSecondary: false,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n appInsightsHelper.trackPageView({ name: \"Dashboard\" });\r\n\r\n const context = this.context as UserContextState;\r\n if (\r\n context.mortgage?.applicationType !== \"Single\" &&\r\n !context.mortgage?.secondaryApplicant &&\r\n this.state.missingSecondary === false\r\n ) {\r\n this.setState({ missingSecondary: true });\r\n }\r\n }\r\n\r\n setFirstLoginTime(): void {\r\n const context = this.context as UserContextState;\r\n axios.post(\"/Contacts/SetFirstLoginTime\", null, {\r\n params: { contactId: context.contact?.contactId },\r\n });\r\n }\r\n\r\n onApplicantSetupFinished() {\r\n this.setState({ missingSecondary: false });\r\n }\r\n\r\n render() {\r\n const context = this.context as UserContextState;\r\n let mortgage = context.mortgage;\r\n\r\n if (!context?.mortgage) return <></>;\r\n\r\n if (mortgage === null || mortgage === undefined) return;\r\n\r\n if (mortgage.type === MortgageType.RemortgagingExistingLoan) {\r\n return <Navigate to=\"/calculators/mortgage\" />;\r\n }\r\n if (context.refreshMenuState) context.refreshMenuState();\r\n\r\n var profileOnly = false;\r\n if (\r\n !mortgage.status ||\r\n mortgage.status === MortgageStatus.InformationGathering ||\r\n mortgage.status === MortgageStatus.PortalLogin ||\r\n mortgage.status === MortgageStatus.PortalSetup\r\n ) {\r\n profileOnly = true;\r\n }\r\n\r\n var description =\r\n mortgage.type === MortgageType.PurchasingaNewHome ? (\r\n <p>\r\n <strong>Get house hunting with “Approval in Principleâ€</strong>;\r\n demonstrating how much you can borrow and bid.\r\n <br />\r\n Avoid delays later by getting these other requirements in order as\r\n soon as you can too.\r\n </p>\r\n ) : (\r\n <p>\r\n <strong>Let’s keep your mortgage switch on track</strong> by\r\n completing the application and uploading documents.\r\n <br />\r\n Avoid delays later by getting these other requirements in order as\r\n soon as you can too.\r\n </p>\r\n );\r\n\r\n document.body.classList.add(\"animate-noscroll\");\r\n\r\n return (\r\n <>\r\n <PortalPage\r\n alignTitleLeft={true}\r\n title={<>Hey {context.contact?.firstName},</>}\r\n description={description}\r\n >\r\n <Container>\r\n <Row direction=\"horizontal\" className=\"text-start\">\r\n <Col xs={4}>\r\n {mortgage.type === MortgageType.PurchasingaNewHome ? (\r\n <div className=\"boxty tall rounder grid box-teal-outline m-3 text-start\">\r\n <h3 className=\"pb-3\">See how much you can borrow</h3>\r\n <p>We work with all major lenders</p>\r\n <p>\r\n Calculate how much your monthly mortgage repayments might\r\n be based on the amount you expect to borrow.\r\n </p>\r\n <Link to=\"/calculators/purchaser\" className=\" a-s-e\">\r\n <button className=\"btn fw big btn-secondary next pe-5 mt-3\">\r\n Open calculator\r\n </button>\r\n </Link>\r\n </div>\r\n ) : (\r\n <div className=\"boxty tall rounder grid box-teal-outline m-3 text-start\">\r\n <h3 className=\"pb-3\">See how much you can save</h3>\r\n <p>We work with all major lenders</p>\r\n <p>\r\n Simply add your details into our calculator to see how\r\n much you could save each month.\r\n </p>\r\n <Link to=\"/calculators/mortgage\" className=\" a-s-e\">\r\n <button className=\"btn fw big btn-secondary next pe-5 mt-3\">\r\n Open calculator\r\n </button>\r\n </Link>\r\n </div>\r\n )}\r\n </Col>\r\n <Col xs={4}>\r\n {mortgage.type === MortgageType.PurchasingaNewHome ? (\r\n <div className=\"boxty tall rounder grid box-sage m-3 text-start\">\r\n <h3 className=\"pb-3\">Get Approval in Principle</h3>\r\n <p>You’ll need an AIP letter to bid on a property.</p>\r\n <p>\r\n <strong>Get your AIP within 24 hours</strong> of receipt\r\n of full docs, with your dedicated advisor by your side\r\n throughout.\r\n </p>\r\n <Link to=\"/profile\" className=\" a-s-e\">\r\n <button className=\"btn fw big btn-secondary next pe-5 mt-3\">\r\n Complete application\r\n </button>\r\n </Link>\r\n </div>\r\n ) : (\r\n <div className=\"text-start tall boxty rounder grid box-sage m-3\">\r\n <h3 className=\"pb-3\">Ready to start your application?</h3>\r\n <p>\r\n Glide through all the mandatory information requited and\r\n upload the all the mandatory documents.\r\n </p>\r\n <p>\r\n Your advisor will help you select the best loan for you.\r\n </p>\r\n <Link to=\"/profile\" className=\" a-s-e\">\r\n <button className=\"btn fw big btn-secondary next pe-5 mt-3\">\r\n Complete application\r\n </button>\r\n </Link>\r\n </div>\r\n )}\r\n </Col>\r\n <Col />\r\n\r\n {/* {!mortgage.solicitor &&\r\n <Col xs={4}>\r\n <AppointSolicitorTile />\r\n </Col>\r\n }\r\n {!mortgage.hasInsuranceQuote &&\r\n <Col xs={4}>\r\n <LifeCoverTile />\r\n </Col>\r\n } */}\r\n {/* if we have a mortgage solicitor just pad a column at the end in for prettiness */}\r\n {/* {mortgage.solicitor && <Col />} */}\r\n {/* if we have an insurance quote just pad a column in for prettiness */}\r\n {/* {mortgage.hasInsuranceQuote && <Col />} */}\r\n </Row>\r\n\r\n <ApplicantSetupDialog\r\n show={this.state.missingSecondary === true}\r\n centered\r\n finished={this.onApplicantSetupFinished}\r\n />\r\n </Container>\r\n </PortalPage>\r\n </>\r\n );\r\n }\r\n}\r\n","import React from \"react\";\r\nimport { Component } from \"react\";\r\nimport { ControlType, DataType, Field } from \"../../models/PortalMetadata\";\r\nimport { FormControl } from \"../FormControl\";\r\nimport { Pill } from \"./Pill\";\r\nimport { IPillElementModel } from \"./PillElement\";\r\nimport * as Icons from \"react-bootstrap\";\r\n\r\ninterface IButtonSubmitPillProps {\r\n label?: any;\r\n value: string;\r\n mobileLabel?: string;\r\n buttonLabel: any;\r\n readonly?: boolean;\r\n extraClasses?:string;\r\n placeholder?:string;\r\n allowSubmit?:boolean | null;\r\n onSubmit(value:string):void;\r\n}\r\n\r\ninterface IButtonSubmitPillState {\r\n allowSubmit?: boolean | null;\r\n width: number;\r\n}\r\n\r\n\r\nexport class ButtonSubmitPill extends Component<IButtonSubmitPillProps, IButtonSubmitPillState> {\r\n\r\n constructor(props: IButtonSubmitPillProps) {\r\n super(props);\r\n this.state = { allowSubmit: props.allowSubmit, width: window.innerWidth };\r\n this.handleWindowSizeChange = this.handleWindowSizeChange.bind(this);\r\n this.isMobileOrTablet = this.isMobileOrTablet.bind(this);\r\n window.addEventListener('resize', this.handleWindowSizeChange);\r\n\r\n }\r\n\r\n componentDidUpdate() { \r\n if (this.props.allowSubmit !== this.state.allowSubmit) {\r\n this.setState({allowSubmit: this.props.allowSubmit});\r\n }\r\n }\r\n\r\n handleWindowSizeChange() {\r\n this.setState({width: window.innerWidth});\r\n }\r\n\r\n isMobileOrTablet() {\r\n return this.state.width <= 1500; \r\n }\r\n\r\n componentDidMount() {\r\n }\r\n\r\n render() {\r\n var field: Field = {\r\n name: \"\",\r\n label: \"\",\r\n dataType: DataType.string,\r\n controlType: ControlType.text,\r\n originalValue: this.props.value,\r\n value: this.props.value,\r\n dateValue: null,\r\n isDirty: false,\r\n options: null,\r\n lookupValues: null,\r\n api: null,\r\n isPill: false,\r\n minValue: undefined,\r\n maxValue: undefined,\r\n maxLength: undefined,\r\n optional: true,\r\n placeholder: this.props.placeholder\r\n };\r\n\r\n var allowSubmit = true;\r\n if (this.state.allowSubmit !== null && this.state.allowSubmit !== undefined) {\r\n allowSubmit = this.state.allowSubmit!;\r\n }\r\n\r\n var components: IPillElementModel[] = [];\r\n if (this.isMobileOrTablet()) {\r\n components.push({\r\n leftBorder: true,\r\n rightBorder: false,\r\n content: \r\n <>\r\n <div className={this.props.extraClasses} style={{whiteSpace: 'nowrap'}}>{this.props.mobileLabel ?? this.props.label}</div>\r\n <span className={this.props.extraClasses} style={{ visibility: \"hidden\", height: \"1px\", paddingRight: 5, whiteSpace: 'nowrap' }}>{this.props.mobileLabel ?? this.props.label}</span>\r\n </>\r\n });\r\n\r\n } else {\r\n if (this.props.label) {\r\n components.push({\r\n leftBorder: true,\r\n rightBorder: false,\r\n content: \r\n <>\r\n <div className={'buttonpilllabel ' + this.props.extraClasses} style={{whiteSpace: 'nowrap'}}>{this.props.label}</div>\r\n <span className={'buttonpilllabel ' + this.props.extraClasses} style={{ visibility: \"hidden\", height: \"1px\", paddingRight: 5, whiteSpace: 'nowrap' }}>{this.props.label}</span>\r\n </>\r\n });\r\n }\r\n \r\n components.push({\r\n leftBorder: false,\r\n rightBorder: false,\r\n content:\r\n <>\r\n <FormControl\r\n readOnly={this.props.readonly}\r\n fieldOnly={true}\r\n field={field}\r\n extraClasses={this.props.extraClasses}\r\n ></FormControl>\r\n <span style={{ visibility: \"hidden\", height: \"1px\", paddingRight: 5, whiteSpace: 'nowrap' }}>{this.props.placeholder?.substring(0,30)}</span>\r\n <span style={{ visibility: \"hidden\", height: \"1px\", paddingRight: 5, whiteSpace: 'nowrap' }}>{this.props.value?.substring(0,30)}</span>\r\n </>\r\n });\r\n \r\n }\r\n components.push({\r\n leftBorder: false,\r\n rightBorder: true,\r\n backgroundColor: 'var(--sage)',\r\n content:\r\n <button className=\"btn btn-pillbutton\" onClick={() => { if (!allowSubmit) return; this.props.onSubmit((field.value ?? \"\") as string)}}>{allowSubmit ? this.props.buttonLabel : <Icons.Spinner animation=\"border\" role=\"status\" style={{color: \"white\"}} />}</button>\r\n });\r\n\r\n return (\r\n <Pill disableCollapse={true} components={components} empty={false} extraClass=\"no-min-width thick-white-border\"></Pill>\r\n );\r\n }\r\n}\r\n\r\n","export enum LivingStatus {\r\n Owner = 778390000,\r\n PrivateRented = 778390001,\r\n LivingwithRelatives = 778390002\r\n}\r\n\r\nexport enum MaritalStatus {\r\n Single = 1,\r\n Married = 2,\r\n Divorced = 3,\r\n Widowed = 4\r\n}\r\n\r\nexport enum Nationality {\r\n Irish = 778390000,\r\n English = 778390001,\r\n Welsh = 778390002,\r\n Scottish = 778390003,\r\n German = 778390004,\r\n American = 778390005\r\n}\r\n\r\nexport enum Gender {\r\n Male = 1,\r\n Female = 2\r\n}\r\n\r\n//export enum CountryOfBirth {\r\n// Ireland = 778390000,\r\n// England = 778390001,\r\n// Scotland = 778390002,\r\n// Wales = 778390003,\r\n// Germany = 778390004,\r\n// USA = 778390005\r\n//}\r\n\r\nexport enum EmploymentStatus {\r\n Employed = 778390000,\r\n SelfEmployed = 778390001,\r\n HomeMaker = 778390002,\r\n Retired = 778390003,\r\n NotEmployed = 778390004\r\n}\r\n\r\nexport enum HasChildren {\r\n No = 0,\r\n Yes = 1,\r\n}\r\n\r\nexport enum MissedPayments {\r\n No = 755980001,\r\n Yes = 755980000,\r\n}\r\n\r\nexport enum BankrupcyOrCourt {\r\n No = 755980001,\r\n Yes = 755980000,\r\n}\r\n\r\nexport enum OptInOut {\r\n OptOut = 755980000,\r\n OptIn = 755980001,\r\n}\r\n\r\nexport interface PortalContactModel {\r\n contactId: string;\r\n firstName: string;\r\n middleName: string;\r\n lastName: string;\r\n emailAddress: string;\r\n emailAddress2: string;\r\n telephone: string;\r\n mobile: string;\r\n fullName: string;\r\n smoker: number | null;\r\n occupation: string;\r\n birthDate: Date | null;\r\n title: string;\r\n maidenName: string;\r\n ppsNumber: string;\r\n countryOfBirth: string | null;\r\n placeOfBirth: string;\r\n previousAddressEircode: string;\r\n previousAddress: string;\r\n maritalStatus: number | null;\r\n sex: number | null;\r\n nationality: number | null;\r\n ownerOrRenter: number | null;\r\n currentAddressYears: number | null;\r\n currentAddressMonths: number | null;\r\n age: number | null;\r\n\r\n //new fields\r\n hasChildren: number | null;\r\n hasChildcareCost: string | null;\r\n monthlyChildcareCost: number | null;\r\n monthlyChildcareCostOther: number | null;\r\n requireWorkPermit: string | null;\r\n visaType: string | null;\r\n visaExpiryDate: Date | null;\r\n livedOutsideofIreland: number | null;\r\n\r\n address1: string;\r\n address1Eircode: string;\r\n address1Line1: string;\r\n address1Line2: string;\r\n address1Line3: string;\r\n address1City: string;\r\n address1County: string;\r\n address1Country: string;\r\n address1MovedIn: Date | null;\r\n\r\n address2: string;\r\n address2Eircode: string;\r\n address2Line1: string | null;\r\n address2Line2: string;\r\n address2Line3: string;\r\n address2City: string;\r\n address2County: string;\r\n address2Country: string;\r\n address2MovedIn: Date | null;\r\n\r\n //tab2\r\n monthlyRentAmount: number | null;\r\n monthlyRentAmountOther: number | null;\r\n previouslyHaveMortgageLoan: string | null;\r\n previouslyHaveMortgageLoan2: string | null;\r\n\r\n doYouPayYourRentThroughYourBankAccount: string | null;\r\n\r\n //tab3\r\n employmentStatus: number | null;\r\n //paye\r\n lengthOfTimeEmployerYears: number | null;\r\n lengthOfTimeEmployerMonths: number | null;\r\n lengthOfTimePrevEmployerYears: number | null;\r\n lengthOfTimePrevEmployerMonths: number | null;\r\n grossSalary: number | null;\r\n otherCurrencyIncome: string | null;\r\n commission: number | null;\r\n overtime: number | null;\r\n bonus: number | null;\r\n otherIncome: number | null;\r\n //self emp\r\n companyName: string;\r\n accountantsName: string | null;\r\n\r\n //children\r\n childrenAge: string | null;\r\n childrenNumber: number | null;\r\n\r\n employersName: string | null;\r\n employersAddress1: string | null;\r\n employersAddress2: string | null;\r\n\r\n prevEmployersName: string | null;\r\n prevOccupation: string | null;\r\n prevEmployersAddress1: string | null;\r\n prevEmployersAddress2: string | null;\r\n\r\n missedPayments: number | null;\r\n bankrupcyOrCourt: number | null;\r\n jobType: number | null;\r\n\r\n personalInfoPercentage: number | null;\r\n residentialInfoPercentage: number | null;\r\n employmentInfoPercentage: number | null;\r\n assetsInfoPercentage: number | null;\r\n bankingInfoPercentage: number | null;\r\n percentageOfCompletion: number;\r\n \r\n businessAddress1: string | null;\r\n businessAddress2: string | null;\r\n natureOfBusiness: string | null;\r\n businessEstablishedDate: Date | null;\r\n shareholdingPercentage: number | null;\r\n grossProfit: number | null;\r\n previousYearProfit: number | null;\r\n metFaceToFace: boolean | null;\r\n\r\n salaryFrequency: number | null;\r\n usCitizen: boolean | null;\r\n contactCode: string | null;\r\n rateUpdateStatus: number | null;\r\n}","import React from \"react\";\r\nimport { Component } from \"react\";\r\n\r\nimport { ButtonSubmitPill } from \"./ButtonSubmitPill\";\r\n\r\ninterface ICopyPillProps {\r\n value: string;\r\n extraClasses?:string;\r\n customLabel?:string;\r\n}\r\n\r\ninterface ICopyPillState {\r\n copied: boolean;\r\n}\r\n\r\n\r\nexport class CopyPill extends Component<ICopyPillProps, ICopyPillState> {\r\n \r\n constructor(props: ICopyPillProps) {\r\n super(props);\r\n this.state = {copied: false};\r\n this.copy = this.copy.bind(this);\r\n }\r\n\r\n copy(value: string) {\r\n this.setState({copied: true}); \r\n navigator.clipboard.writeText(value);\r\n setTimeout(() => this.setState({copied: false}), 1500); \r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n <ButtonSubmitPill \r\n readonly\r\n extraClasses={this.props.extraClasses}\r\n mobileLabel=\"Copy your link\" \r\n label=\"Your Referral link:\" \r\n buttonLabel={<i className=\"far fa-copy\"></i>} \r\n onSubmit={this.copy}\r\n value={this.props.value}></ButtonSubmitPill>\r\n <div className={'float-right ' + (this.state.copied ? 'copied' : 'notcopied')}><i className=\"fas fa-check\"></i></div>\r\n </>\r\n );\r\n }\r\n}\r\n\r\n","import axios from \"axios\";\r\nimport React from \"react\";\r\nimport { Modal, Stack } from \"react-bootstrap\";\r\nimport * as Icons from \"react-bootstrap\";\r\nimport { UserContextComponent } from \"./UserContextComponent\";\r\nimport { InputPill } from \"./Pills/InputPill\";\r\nimport { CopyPill } from \"./Pills/CopyPill\";\r\nimport { ControlType, DataType, Field } from \"../models/PortalMetadata\";\r\nimport { PortalReferralModel } from \"../models/PortalReferralModel\";\r\nimport { logger } from \"../helper/Logger\";\r\n\r\nexport interface IReferralBoxProps {\r\n horizontal?: boolean | null;\r\n style: any;\r\n}\r\n\r\nexport interface IReferralBoxState {\r\n showReferral: boolean;\r\n sending: boolean;\r\n showEmailDialog: boolean;\r\n}\r\n\r\nexport class ReferralBox extends UserContextComponent<IReferralBoxProps, IReferralBoxState> {\r\n constructor(props: IReferralBoxProps) {\r\n super(props);\r\n\r\n this.state = { showReferral: false, sending: false, showEmailDialog: false };\r\n this.createReferrals = this.createReferrals.bind(this);\r\n }\r\n\r\n componentDidMount(): void {\r\n }\r\n\r\n createReferrals(email1:string, email2:string) {\r\n var emails = (email1 ?? \"\").trim();\r\n if ((email2 ?? \"\") !== \"\") {\r\n emails += (\";\" + email2.trim());\r\n }\r\n \r\n if (emails !== \"\") {\r\n this.setState({sending: true})\r\n\r\n const context = this.getContext();\r\n const contact = context.contact!;\r\n var referral:PortalReferralModel = {\r\n name: contact.contactCode!,\r\n emailAddresses: emails,\r\n contactId: contact.contactId,\r\n mortgageId: context.mortgage?.mortgageId!\r\n }\r\n axios\r\n .post('/Referrals/Create', referral)\r\n .then(() => { \r\n logger.log('Referral created'); \r\n this.setState({sending: false, showEmailDialog: false})\r\n })\r\n .catch((e) => {\r\n logger.log(e);\r\n this.setState({sending: false, showEmailDialog: false})\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n const context = this.getContext();\r\n var email1: Field = {\r\n name: \"\",\r\n label: \"\",\r\n dataType: DataType.string,\r\n controlType: ControlType.text,\r\n originalValue: \"\",\r\n value: \"\",\r\n dateValue: null,\r\n isDirty: false,\r\n options: null,\r\n lookupValues: null,\r\n api: null,\r\n isPill: false,\r\n minValue: undefined,\r\n maxValue: undefined,\r\n maxLength: undefined,\r\n optional: true,\r\n placeholder: \"example@doddl.ie\"\r\n };\r\n var email2: Field = {\r\n name: \"\",\r\n label: \"\",\r\n dataType: DataType.string,\r\n controlType: ControlType.text,\r\n originalValue: \"\",\r\n value: \"\",\r\n dateValue: null,\r\n isDirty: false,\r\n options: null,\r\n lookupValues: null,\r\n api: null,\r\n isPill: false,\r\n minValue: undefined,\r\n maxValue: undefined,\r\n maxLength: undefined,\r\n optional: true,\r\n placeholder: \"example@doddl.ie\"\r\n };\r\n \r\n return (\r\n <div key={'invite-' + context.mortgage!.mortgageId} className={\"boxty wide box-teal\"} style={this.props.style}>\r\n\r\n <p className={`text-white`}>Are you happy with our service</p>\r\n <h1 className=\"pointer text-white\" onClick={() => this.setState({showReferral: !this.state.showReferral})}>Refer your friends & <strong>win!</strong></h1>\r\n <br />\r\n <Stack gap={2} direction=\"horizontal\" className=\"text-center justify-center\">\r\n <CopyPill extraClasses=\"text-white\" value={`https://doddl.ie/mortgage-online-application/?referrer=${context.contact?.contactCode}`}></CopyPill>\r\n {/* <div style={{paddingBottom: 4, marginRight:7, marginTop:-3}}>\r\n <button className=\"btn btn-standard btn-outline-white\" onClick={() => this.setState({showEmailDialog: true})}><i className=\"far fa-envelope\"></i></button>\r\n </div> */}\r\n <div style={{paddingBottom: 4, marginTop:-3}}>\r\n <button className=\"btn btn-standard btn-outline-white\" onClick={() => window.open(`https://wa.me/?text=Here is your doddl referral link: https://doddl.ie/mortgage-online-application/?referrer=${context.contact?.contactCode}`, \"_blank\")}><i className=\"fab fa-whatsapp\"></i></button>\r\n </div>\r\n </Stack>\r\n <br />\r\n <Modal size=\"lg\" show={this.state.showEmailDialog} onHide={() => {this.setState({showEmailDialog: false})}}>\r\n <Modal.Header closeButton>\r\n </Modal.Header>\r\n <Modal.Body>\r\n <div className=\"boxty text-center\">\r\n <p className=\"text-gray\">Are you happy with our service?</p>\r\n <h2 className=\"impact\">Refer Friends and <span className=\"doddltext\">Win!</span></h2>\r\n <p className=\"text-gray\">Simply enter your friends’ email addresses here:</p>\r\n <div className=\"justify-center\" style={{display: 'inline-block'}}>\r\n <InputPill field={email1} hideIfValue={false} disableCollapse usePlaceHolderForMinWidth extraClasses=\"referral-email-pill\"></InputPill> \r\n <InputPill field={email2} hideIfValue={false} disableCollapse usePlaceHolderForMinWidth extraClasses=\"referral-email-pill\"></InputPill> \r\n <div className=\"text-end\" style={{paddingRight: 8}}>\r\n <button className=\"btn btn-standard btn-wide\" onClick={() => {this.createReferrals(email1.value as string, email2.value as string);}}>{this.state.sending ? <Icons.Spinner size=\"sm\" animation=\"border\" role=\"status\" /> : 'SEND'}</button>\r\n </div>\r\n </div>\r\n </div>\r\n </Modal.Body>\r\n </Modal>\r\n </div>\r\n );\r\n }\r\n}","import { FieldsCollection } from './FieldsCollection';\r\n\r\nexport class ApplicantFieldsCollection extends FieldsCollection {\r\n constructor() {\r\n super();\r\n this.addTextField(\"firstName\", \"First Name\", 50);\r\n //this.addTextField(\"middleName\", \"Middle Name\", 50, true);\r\n this.addTextField(\"lastName\", \"Last Name\", 50);\r\n this.addTextField(\"placeOfBirth\", \"Place of Birth\", 50);\r\n\r\n this.addLookupField(\"nationality\", \"Nationality\");\r\n // this.addPicklistField(\"nationality\", \"Nationality\",\r\n // [{ text: \"Irish\", value: 778390000 },\r\n // { text: \"English\", value: 778390001 },\r\n // { text: \"Welsh\", value: 778390002 },\r\n // { text: \"Scottish\", value: 778390003 },\r\n // { text: \"German\", value: 778390004 },\r\n // { text: \"American\", value: 778390005 }]);\r\n this.addPicklistField(\"sex\",\r\n \"Sex\",\r\n [{ text: \"Male\", value: 1 },\r\n { text: \"Female\", value: 2 }]);\r\n this.addPicklistField(\"maritalStatus\",\r\n \"Marital Status\",\r\n [{ text: \"Single\", value: 1 },\r\n { text: \"Married\", value: 2 },\r\n { text: \"Divorced\", value: 3 },\r\n { text: \"Widowed\", value: 4 },\r\n { text: \"Separated\", value: 680200001 }\r\n ]);\r\n this.addDateField(\"birthDate\", \"DOB\");\r\n this.addLookupField(\"countryOfBirth\", \"Country Of Birth\");\r\n // \"Country of Birth\",\r\n // [{ text: \"Ireland\", value: 778390000 },\r\n // { text: \"England\", value: 778390001 },\r\n // { text: \"Scotland\", value: 778390002 },\r\n // { text: \"Wales\", value: 778390003 },\r\n // { text: \"Germany\", value: 778390004 },\r\n // { text: \"USA\", value: 778390005 }]);\r\n this.addTextField(\"mothersMaidenName\", \"Mother's Maiden Name\", 100, true);\r\n //this.addTextField(\"maidenName\", \"Maiden Name\", 50, true);\r\n //this.addTextField(\"telephone\", \"Telephone Number\", 50);\r\n this.addTextField(\"mobile\", \"Mobile\", 50);\r\n this.addTextField(\"emailAddress\", \"E-mail\", 100);\r\n this.addTextField(\"emailAddress2\", \"E-mail 2\", 100);\r\n this.addTextField(\"ppsNumber\", \"PPS Number\", 20);\r\n this.addPicklistField(\"hasChildren\", \"Any children?\", [{ text: \"Yes\", value: 1 }, { text: \"No\", value: 0 }]);\r\n //this.addBooleanField(\"hasChildren\", \"Any children?\");\r\n this.addBooleanField(\"hasChildcareCost\", \"Any childcare cost?\");\r\n this.addCurrencyField(\"monthlyChildcareCost\", \"Childcare monthly fees?\", 0, 10000000);\r\n this.addCurrencyField(\"monthlyChildcareCostOther\", \"Childcare monthly fees?\", 0, 10000000);\r\n this.addBooleanField(\"requireWorkPermit\", \"Require a work permit?\");\r\n this.addPicklistField(\"livedOutsideofIreland\", \"Lived outside of Ireland?\", [{ text: \"No\", value: 755980001 }, { text: \"Yes\", value: 755980000 }]);\r\n this.addTextField(\"visaType\", \"Visa Stamp(1-6)\");\r\n this.addDateField(\"visaExpiryDate\", \"Expiry Date\", new Date(), null, false);\r\n this.addTextField(\"address1\", \"Address\", 400);\r\n this.addTextField(\"address1Line1\", \"Address Line 1\", 250);\r\n this.addTextField(\"address1Line2\", \"Address Line 2\", 250);\r\n this.addTextField(\"address1Line3\", \"Address Line 3\", 250);\r\n this.addTextField(\"address1City\", \"City\", 50);\r\n this.addTextField(\"address1County\", \"County\", 50);\r\n this.addTextField(\"address1Country\", \"Country\", 80);\r\n this.addTextField(\"address1Eircode\", \"Eircode\", 20, false);\r\n this.addDateField(\"address1MovedIn\", \"When did you move in?\");\r\n this.addBooleanField(\"previouslyHaveMortgageLoan\", \"Do you have a mortgage on any other properties?\");\r\n this.addTextField(\"address2\", \"Your previous address\", 400);\r\n this.addTextField(\"address2Line1\", \"Address Line 1\", 250);\r\n this.addTextField(\"address2Line2\", \"Address Line 2\", 250);\r\n this.addTextField(\"address2Line3\", \"Address Line 3\", 250);\r\n this.addTextField(\"address2City\", \"City\", 50);\r\n this.addTextField(\"address2County\", \"County\", 50);\r\n this.addTextField(\"address2Country\", \"Country\", 80);\r\n this.addTextField(\"address2Eircode\", \"Eircode\", 20, false);\r\n this.addDateField(\"address2MovedIn\", \"When did you move in?\");\r\n this.addBooleanField(\"previouslyHaveMortgageLoan2\", \"Do you have a mortgage on any other properties?\");\r\n this.addPicklistField(\"ownerOrRenter\",\r\n \"Current Residential Status\",\r\n [{ text: \"Owner\", value: 778390000 },\r\n { text: \"Private Rented\", value: 778390001 },\r\n { text: \"Living with Relatives\", value: 778390002 }]);\r\n this.addTextField(\"currentAddressYears\", \"Years\");\r\n this.addTextField(\"currentAddressMonths\", \"Months\");\r\n this.addBooleanField(\"doYouPayYourRentThroughYourBankAccount\", \"Payment through bank?\");\r\n this.addCurrencyField(\"monthlyRentAmount\", \"Monthly Mortgage/Rent Amount\", 0, 10000000);\r\n this.addCurrencyField(\"monthlyRentAmountOther\", \"Monthly Mortgage/Rent Amount\", 0, 10000000);\r\n this.addPicklistField(\"employmentStatus\",\r\n \"PAYE or Self-Employed?\",\r\n [{ text: \"Employed\", value: 778390000 },\r\n { text: \"Self Employed\", value: 778390001 },\r\n { text: \"Home Maker\", value: 778390002 },\r\n { text: \"Retired\", value: 778390003 },\r\n { text: \"Not Employed\", value: 778390004 }]);\r\n this.addLookupField(\"occupationId\", \"Occupation\");\r\n\r\n this.addNumberField(\"lengthOfTimeEmployerYears\", \"Length with your employer (years)\", 0, 100000);\r\n this.addNumberField(\"lengthOfTimeEmployerMonths\", \"Length with your employer (months)\", 0, 100000);\r\n this.addNumberField(\"lengthOfTimePrevEmployerYears\", \"Length with your employer (years)\", 0, 100000);\r\n this.addNumberField(\"lengthOfTimePrevEmployerMonths\", \"Length with your employer (months)\", 0, 100000);\r\n\r\n this.addTextField(\"lengthOfTimePrevEmployer\", \"Length with employer\");\r\n this.addCurrencyField(\"grossSalary\", \"Gross basic income?\", 0, 10000000);\r\n\r\n this.addBooleanField(\"otherCurrencyIncome\", \"Any income other than Euro currency?\");\r\n this.addPicklistField(\"incomePaidInEuro\", \"Is your income paid in Euro?\", [{ text: \"No\", value: 755980001 }, { text: \"Yes\", value: 755980000 }]);\r\n\r\n this.addCurrencyField(\"commission\", \"Commission\", 0, 10000000, true);\r\n this.addCurrencyField(\"overtime\", \"Overtime\", 0, 1000000, true);\r\n this.addCurrencyField(\"bonus\", \"Bonus\", 0, 1000000, true);\r\n this.addCurrencyField(\"otherIncome\", \"Other Income\", 0, 10000000, true);\r\n this.addTextField(\"companyName\", \"Company Name\");//??\r\n this.addTextField(\"accountantsName\", \"Accountants Name\");\r\n this.addBooleanField(\"smoker\", \"Are you a smoker?\");\r\n this.addTextField(\"childrenAge\", \"Ages\");\r\n this.addNumberField(\"childrenNumber\", \"Number of dependants\", 0, 10);\r\n this.addTextField(\"employersName\", \"Employer Name\");\r\n this.addTextField(\"employersAddress1\", \"Employer Address 1\");\r\n this.addTextField(\"employersAddress2\", \"Employer Address 2\");\r\n this.addTextField(\"prevEmployersName\", \"Previous Employer Name\");\r\n this.addLookupField(\"prevOccupationId\", \"Previous Occupation\");\r\n this.addTextField(\"prevEmployersAddress1\", \"Previous Employer Address 1\");\r\n this.addTextField(\"prevEmployersAddress2\", \"Previous Employer Address 2\");\r\n this.addPicklistField(\"missedPayments\", \"Missed Payments?\", [{ text: \"No\", value: 755980001 }, { text: \"Yes\", value: 755980000 }]);\r\n this.addPicklistField(\"bankrupcyOrCourt\", \"Bankruptcy or Court Judgements\", [{ text: \"No\", value: 755980001 }, { text: \"Yes\", value: 755980000 }]);\r\n this.addPicklistField(\"jobType\", \"Job Type\", [{ text: \"Permanent\", value: 755980000 }, { text: \"Temporary\", value: 755980001 }, { text: \"Contract\", value: 755980002 }]);\r\n\r\n this.addTextField(\"businessAddress1\", \"Business Address Line 1\");\r\n this.addTextField(\"businessAddress2\", \"Business Address Line 2\");\r\n this.addTextField(\"natureOfBusiness\", \"Business Description\");\r\n\r\n this.addDateField(\"businessEstablishedDate\", \"Business Established Date\");\r\n this.addDecimalField(\"shareholdingPercentage\", \"% shareholding in the business\", 0, 100);\r\n this.addCurrencyField(\"grossProfit\", \"Drawings Last Financial Year\", 0, 10000000);//\"Most recent year's profit\"\r\n this.addCurrencyField(\"previousYearProfit\", \"Drawings Prev Financial Year\", 0, 10000000);//\"Previous year's profit\"\r\n\r\n this.addPicklistField(\"salaryFrequency\", \"How regularly is your salary paid?\",\r\n [{ text: \"Weekly\", value: 755980000 },\r\n { text: \"Fortnightly\", value: 755980001 },\r\n { text: \"Monthly\", value: 755980002 }]);\r\n this.addBooleanField(\"usCitizen\", \"US Citizen?\");\r\n\r\n this.addPicklistField(\"hasVariableIncome\", \"Has variable income?\",\r\n [{ text: \"No\", value: 755980001 }, { text: \"Yes\", value: 755980000 }]);\r\n\r\n }\r\n}","import axios from \"axios\";\r\nimport { Component } from \"react\";\r\nimport UserContext from \"../components/UserContext\";\r\nimport { ApplicantFieldsCollection } from \"../forms/ApplicantFields\";\r\nimport currencyFormatter, { currencyToNumber } from \"../helper/currencyFormatter\";\r\nimport { GetTooltips } from \"../helper/tooltipHelper\";\r\nimport { DataType, ControlType, FormLookupItem } from \"../models/PortalMetadata\";\r\nimport { ApplicableTo } from \"../models/PortalMortgageDocumentModel\";\r\nimport { PortalContactModel } from \"../models/PortalContactModel\";\r\n\r\nexport class ApplicantService {\r\n userContext: UserContext;\r\n component: Component;\r\n applicantNo: number;\r\n\r\n constructor(userContext: UserContext, component: Component, applicantNo: number) {\r\n this.userContext = userContext;\r\n this.component = component;\r\n this.applicantNo = applicantNo;\r\n\r\n this.handleChange = this.handleChange.bind(this);\r\n this.handleDateChange = this.handleDateChange.bind(this);\r\n this.handleSubmit = this.handleSubmit.bind(this);\r\n this.handleTitleChange = this.handleTitleChange.bind(this);\r\n this.getfields = this.getfields.bind(this);\r\n this.saveAllFields = this.saveAllFields.bind(this);\r\n\r\n //this.userContext.getMortgageDocuments(this.getApplicantId());\r\n }\r\n\r\n public setState(state: any): void {\r\n this.component.setState(state);\r\n }\r\n\r\n public getState(): any {\r\n return this.component.state;\r\n }\r\n\r\n getfields(contact: any, helperTexts: any) {\r\n if (contact !== null && helperTexts !== null) {\r\n let fields = new ApplicantFieldsCollection();\r\n if (this.getState().occupationList) {\r\n fields.addLookupValues(\"occupationId\", this.getState().occupationList);\r\n fields.addLookupValues(\"prevOccupationId\", this.getState().occupationList);\r\n }\r\n if (this.getState().nationalitiesList)\r\n fields.addLookupValues(\"nationality\", this.getState().nationalitiesList);\r\n if (this.getState().countryList)\r\n fields.addLookupValues(\"countryOfBirth\", this.getState().countryList);\r\n\r\n fields.loadData(contact, helperTexts, true, this.handleChange, this.handleDateChange);\r\n this.setState({ fields: fields, loading: false, helperTexts: helperTexts });\r\n } else {\r\n this.setState({ loading: false });\r\n }\r\n //this.setState({ fields: getApplicantFields(contact, helperTexts, !this.state.usingCard, this.handleChange, this.handleDateChange), loading: false });\r\n }\r\n\r\n updateDirtyFlag() {\r\n let dirtyFields: any[] = [];\r\n for (let fieldName in this.getState().fields.fields) {\r\n let f = this.getState().fields.fields[fieldName];\r\n if (f.isDirty)\r\n dirtyFields.push(f);\r\n }\r\n\r\n var isDirty = dirtyFields.length > 0;\r\n this.userContext.setIsDirty(isDirty);\r\n }\r\n\r\n saveAllFields(redirect: any) {\r\n // var saveOtherChildcare = false;\r\n // var saveOtherRent = false;\r\n var contact = this.getState().contact;\r\n var otherApplicant: PortalContactModel = (this.userContext.mortgage?.primaryApplicant.contactId === contact.contactId ? this.userContext.mortgage!.secondaryApplicant : this.userContext.mortgage!.primaryApplicant);\r\n let fields = this.getState().fields.fields;\r\n\r\n let dirtyFields: any[] = [];\r\n for (let fieldName in fields) {\r\n let f = fields[fieldName];\r\n\r\n // Patch for null smoker. Hard to apply this to all booleans as React forces you to strongly type properties, unlike JavaScript\r\n if (f.name === \"smoker\") {\r\n if (f.isDirty === false && contact.smoker === null) {\r\n this.getState().fields.updateModel(contact, \"smoker\", 0);\r\n this.getState().fields.updateFieldValue(\"smoker\", 0)\r\n }\r\n }\r\n\r\n if (f.isDirty) {\r\n dirtyFields.push(f);\r\n\r\n if (this.userContext.mortgage!.secondaryApplicant !== null) {\r\n if (f.name === \"monthlyChildcareCost\") {\r\n this.getState().fields.updateModel(otherApplicant, \"monthlyChildcareCostOther\", (f.value));\r\n }\r\n \r\n if (f.name === \"monthlyChildcareCostOther\") {\r\n this.getState().fields.updateModel(otherApplicant, \"monthlyChildcareCost\", (f.value));\r\n }\r\n \r\n if (f.name === \"monthlyRentAmount\") {\r\n this.getState().fields.updateModel(otherApplicant, \"monthlyRentAmountOther\", (f.value));\r\n }\r\n\r\n if (f.name === \"monthlyRentAmountOther\") {\r\n this.getState().fields.updateModel(otherApplicant, \"monthlyRentAmount\", (f.value));\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (dirtyFields.length === 0) {\r\n if (redirect)\r\n this.setState({ finished: true });\r\n return;\r\n }\r\n\r\n let newContact = this.getState().fields.getAsEntity(\"contactId\", contact.contactId, contact);\r\n newContact.mortgageId = this.userContext.mortgage?.mortgageId;\r\n axios.post('/contacts/update', newContact)\r\n .then(response => {\r\n for (let i = 0; i < dirtyFields.length; i++) {\r\n let f = dirtyFields[i];\r\n f.originalValue = f.value;\r\n f.isDirty = false;\r\n }\r\n\r\n this.updateDirtyFlag();\r\n\r\n var data = response.data;\r\n contact.personalInfoPercentage = data.personalInfoPercentage;\r\n contact.residentialInfoPercentage = data.residentialInfoPercentage;\r\n contact.employmentInfoPercentage = data.employmentInfoPercentage;\r\n\r\n contact.percentageOfCompletion =\r\n (contact.personalInfoPercentage +\r\n contact.residentialInfoPercentage +\r\n contact.employmentInfoPercentage +\r\n contact.assetsInfoPercentage) / 4;\r\n\r\n // BANDAID - THIS IS TO KEEP THE APPLICANT MENU IN SYNC AS IT USES THE CONTEXT\r\n if (this.getState().applicantNo === 1) {\r\n this.userContext.mortgage!.primaryApplicant = contact;\r\n } else {\r\n this.userContext.mortgage!.secondaryApplicant = contact;\r\n }\r\n\r\n if (redirect)\r\n this.setState({ finished: true, fields: this.getState().fields, contact: contact });\r\n\r\n else\r\n this.setState({ fields: this.getState().fields, contact: contact });\r\n });\r\n }\r\n\r\n\r\n saveRateUpdateStatus(newValue: number) {\r\n var contact = this.getState().contact;\r\n contact.rateUpdateStatus = newValue;\r\n this.getState().fields.updateModel(contact, \"rateUpdateStatus\", newValue);\r\n this.getState().fields.updateFieldValue(\"rateUpdateStatus\", newValue);\r\n this.saveAllFields(null);\r\n }\r\n\r\n handleSubmit(event: any) {\r\n event.preventDefault();\r\n this.saveAllFields(true);\r\n }\r\n\r\n handleDateChange(event: any) {\r\n this.handleChange(event);\r\n }\r\n\r\n handleChange(event: any) {\r\n const target = event.target;\r\n let value = (target.type === 'checkbox' ? target.checked : target.value); // || (target.textContent || '');\r\n const name = target.name || target.getAttribute('name');\r\n\r\n if (!name)\r\n return;\r\n\r\n var contact = this.getState().contact;\r\n\r\n let f = this.getState().fields.getFieldByName(name);\r\n\r\n if (f.dataType === DataType.number && value !== null) {\r\n value = value.replace(/\\D/g, '');\r\n }\r\n\r\n if (f.dataType === DataType.number && f.maxValue) {\r\n if (parseInt(value) > f.maxValue) {\r\n alert(`Maximum value for '${f.label}' is ${f.maxValue}`);\r\n return;\r\n }\r\n } else if (f.dataType === DataType.string && f.maxLength) {\r\n if (value !== null && value.length > f.maxLength) {\r\n alert(`Maximum length for '${f.label}' is ${f.maxLength}`);\r\n return;\r\n }\r\n }\r\n\r\n //// if we don't set the value here it sometimes doesn't get set and causes a bug with reverting to the original value\r\n let fields = this.getState().fields;\r\n if (fields) {\r\n if (f.controlType === ControlType.currency) {\r\n fields.updateModel(contact, name, value?.replaceAll(\",\", \"\").replaceAll(\"€\", \"\"));\r\n fields.updateFieldValue(name, currencyFormatter(Number(value?.replaceAll(\",\", \"\").replaceAll(\"€\", \"\"))));\r\n } else {\r\n fields.updateModel(contact, name, value);\r\n fields.updateFieldValue(name, value);\r\n }\r\n }\r\n\r\n this.setState({ fields: this.getState().fields, contact: contact });\r\n this.updateDirtyFlag();\r\n }\r\n\r\n handleTitleChange(event: any, title: string) {\r\n var contact = this.getState().contact;\r\n contact['title'] = title;\r\n this.setState({\r\n contact: contact\r\n });\r\n }\r\n\r\n async getApplicantData() {\r\n if (this.applicantNo === 1) {\r\n this.setState({ contact: this.userContext.mortgage?.primaryApplicant, otherApplicant: this.userContext.mortgage?.secondaryApplicant, loading: true });\r\n } else {\r\n this.setState({ contact: this.userContext.mortgage?.secondaryApplicant, otherApplicant: this.userContext.mortgage?.primaryApplicant, loading: true });\r\n }\r\n this.getTooltips(\"contact\");\r\n }\r\n\r\n getTooltips(entityname: string) {\r\n var contact: any;\r\n if (this.applicantNo === 1) {\r\n contact = this.userContext.mortgage?.primaryApplicant;\r\n } else {\r\n contact = this.userContext.mortgage?.secondaryApplicant;\r\n }\r\n GetTooltips(entityname).then((response) => {\r\n this.setState({ helperTexts: response.data });\r\n this.getfields(contact, response.data);\r\n });\r\n }\r\n\r\n getApplicantId(): string {\r\n let contactId = this.userContext.contact?.contact1Id;\r\n if (this.applicantNo !== 1 && this.userContext.contact?.contact2Id !== null) {\r\n contactId = this.userContext.contact?.contact2Id;\r\n }\r\n return contactId!;\r\n }\r\n\r\n groupBy(arr: any[], key: string) {\r\n const initialValue = {};\r\n return arr.reduce((acc, cval) => {\r\n const myAttribute = cval[key];\r\n acc[myAttribute] = [...(acc[myAttribute] || []), cval]\r\n return acc;\r\n }, initialValue);\r\n };\r\n\r\n async getMortgageDocuments() {\r\n if (this.userContext.mortgageDocumentList) {\r\n let applicableTo = this.applicantNo === 1 ? ApplicableTo.Primary : ApplicableTo.Secondary;\r\n let docs = this.userContext.mortgageDocumentList.filter(c => c.applicableTo === ApplicableTo.Shared || c.applicableTo === applicableTo || c.isJoint === true);\r\n docs.sort(\r\n (a: any, b: any) => {\r\n // We want to primarily sort by mortgage document id, but if these are null make sure they appear first\r\n // We next want to sort by the order property (if its set) as this allows to change the order before merging\r\n if (\r\n a.categoryOrder === b.categoryOrder) {\r\n // if we have 2 null mortgage documents, or 2 matching mortgage documents, sort by the order attribute\r\n if (!a.applicableTo && !b.applicableTo) return 1;\r\n if (a.applicableTo < b.applicableTo) return -1;\r\n if (a.applicableTo > b.applicableTo) return 1;\r\n }\r\n\r\n // Compare if the document needs to come before or after\r\n if (a.categoryOrder < b.categoryOrder) return -1;\r\n if (a.categoryOrder > b.categoryOrder) return 1;\r\n\r\n // If we get here, we've probably hit equal documents and orders... \r\n // shouldn't happen, but in case paul got at the code you never know\r\n return 0;\r\n }\r\n );\r\n }\r\n }\r\n\r\n async getDocumentTypes() {\r\n let url = \"/Dictionary/GetDocumentTypes\";\r\n axios\r\n .get(url)\r\n .then((response) => {\r\n var list = response.data;\r\n this.setState({ documentTypeList: list, });\r\n })\r\n .catch((error) => {\r\n if (error.response.statusCode === 401) {\r\n alert(\"Unauthorized\");\r\n }\r\n });\r\n }\r\n\r\n async getOccupations() {\r\n return new Promise((resolve, reject) => {\r\n if (this.getState().occupationList) {\r\n resolve(this.getState().occupationList);\r\n }\r\n\r\n let url = \"/Dictionary/GetOccupations\";\r\n axios\r\n .get(url)\r\n .then((response) => {\r\n var list = response.data;\r\n var ocpList = list.map((item: any) => {\r\n return { text: item.name, value: item.occupationId } as FormLookupItem;\r\n });\r\n this.setState({ occupationList: ocpList });\r\n resolve(ocpList);\r\n })\r\n .catch((error) => {\r\n if (error.response.statusCode === 401) {\r\n alert(\"Unauthorized\");\r\n }\r\n reject();\r\n });\r\n });\r\n }\r\n\r\n async getNationalities() {\r\n return new Promise((resolve, reject) => {\r\n let url = \"/Dictionary/GetNationalities\";\r\n axios\r\n .get(url)\r\n .then((response) => {\r\n var list = response.data;\r\n var items = list.map((item: any) => {\r\n return { text: item.name, value: item.id, item: item } as FormLookupItem;\r\n });\r\n this.setState({ nationalitiesList: items });\r\n resolve(items);\r\n })\r\n .catch((error) => {\r\n if (error.response.statusCode === 401) {\r\n alert(\"Unauthorized\");\r\n }\r\n reject();\r\n });\r\n\r\n });\r\n }\r\n\r\n async getCountries() {\r\n return new Promise((resolve, reject) => {\r\n let url = \"/Dictionary/GetCountries\";\r\n axios\r\n .get(url)\r\n .then((response) => {\r\n var list = response.data;\r\n var items = list.map((item: any) => {\r\n return { text: item.name, value: item.id, item: item } as FormLookupItem;\r\n });\r\n this.setState({ countryList: items });\r\n resolve(items);\r\n })\r\n .catch((error) => {\r\n if (error.response.statusCode === 401) {\r\n alert(\"Unauthorized\");\r\n }\r\n reject();\r\n });\r\n\r\n });\r\n }\r\n\r\n // getInstitutions() {\r\n // let url = \"/Dictionary/GetInstitutions\";\r\n // axios\r\n // .get(url)\r\n // .then((response) => {\r\n // let insList: FormLookupItem[] = response.data.map((item: any) => {\r\n // return { text: item.name, value: item.institutionId } as FormLookupItem;\r\n // });\r\n // this.setState({ institutionList: insList });\r\n // })\r\n // .catch((error) => {\r\n // if (error.response.statusCode === 401) {\r\n // alert(\"Unauthorized\");\r\n // }\r\n // });\r\n // }\r\n\r\n getFinanceTooltips() {\r\n GetTooltips(\"mortgageportaldocument\").then((response) => {\r\n this.setState({ dochelperTexts: response.data });\r\n }).catch((error) => {\r\n if (error.response.statusCode === 401) {\r\n alert(\"Unauthorized\");\r\n }\r\n });\r\n }\r\n}","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","import { IStyleSet, IConcatenatedStyleSet } from './IStyleSet';\nimport { IStyleBase, IStyle } from './IStyle';\nimport { IStyleFunctionOrObject } from './IStyleFunction';\nimport { ObjectOnly } from './ObjectOnly';\n\n/**\n * Combine a set of styles together (but does not register css classes).\n * @param styleSet - The first style set to be concatenated.\n */\nexport function concatStyleSets<TStyleSet>(\n styleSet: TStyleSet | false | null | undefined,\n): IConcatenatedStyleSet<ObjectOnly<TStyleSet>>;\n\n/**\n * Combine a set of styles together (but does not register css classes).\n * @param styleSet1 - The first style set to be concatenated.\n * @param styleSet2 - The second style set to be concatenated.\n */\nexport function concatStyleSets<TStyleSet1, TStyleSet2>(\n styleSet1: TStyleSet1 | false | null | undefined,\n styleSet2: TStyleSet2 | false | null | undefined,\n): IConcatenatedStyleSet<ObjectOnly<TStyleSet1> & ObjectOnly<TStyleSet2>>;\n\n/**\n * Combine a set of styles together (but does not register css classes).\n * @param styleSet1 - The first style set to be concatenated.\n * @param styleSet2 - The second style set to be concatenated.\n * @param styleSet3 - The third style set to be concatenated.\n */\nexport function concatStyleSets<TStyleSet1, TStyleSet2, TStyleSet3>(\n styleSet1: TStyleSet1 | false | null | undefined,\n styleSet2: TStyleSet2 | false | null | undefined,\n styleSet3: TStyleSet3 | false | null | undefined,\n): IConcatenatedStyleSet<ObjectOnly<TStyleSet1> & ObjectOnly<TStyleSet2> & ObjectOnly<TStyleSet3>>;\n\n/**\n * Combine a set of styles together (but does not register css classes).\n * @param styleSet1 - The first style set to be concatenated.\n * @param styleSet2 - The second style set to be concatenated.\n * @param styleSet3 - The third style set to be concatenated.\n * @param styleSet4 - The fourth style set to be concatenated.\n */\nexport function concatStyleSets<TStyleSet1, TStyleSet2, TStyleSet3, TStyleSet4>(\n styleSet1: TStyleSet1 | false | null | undefined,\n styleSet2: TStyleSet2 | false | null | undefined,\n styleSet3: TStyleSet3 | false | null | undefined,\n styleSet4: TStyleSet4 | false | null | undefined,\n): IConcatenatedStyleSet<\n ObjectOnly<TStyleSet1> & ObjectOnly<TStyleSet2> & ObjectOnly<TStyleSet3> & ObjectOnly<TStyleSet4>\n>;\n\n/**\n * Combine a set of styles together (but does not register css classes).\n * @param styleSet1 - The first style set to be concatenated.\n * @param styleSet2 - The second style set to be concatenated.\n * @param styleSet3 - The third style set to be concatenated.\n * @param styleSet4 - The fourth style set to be concatenated.\n * @param styleSet5 - The fifth set to be concatenated.\n */\nexport function concatStyleSets<TStyleSet1, TStyleSet2, TStyleSet3, TStyleSet4, TStyleSet5>(\n styleSet1: TStyleSet1 | false | null | undefined,\n styleSet2: TStyleSet2 | false | null | undefined,\n styleSet3: TStyleSet3 | false | null | undefined,\n styleSet4: TStyleSet4 | false | null | undefined,\n styleSet5: TStyleSet5 | false | null | undefined,\n): IConcatenatedStyleSet<\n ObjectOnly<TStyleSet1> &\n ObjectOnly<TStyleSet2> &\n ObjectOnly<TStyleSet3> &\n ObjectOnly<TStyleSet4> &\n ObjectOnly<TStyleSet5>\n>;\n\n/**\n * Combine a set of styles together (but does not register css classes).\n * @param styleSet1 - The first style set to be concatenated.\n * @param styleSet2 - The second style set to be concatenated.\n * @param styleSet3 - The third style set to be concatenated.\n * @param styleSet4 - The fourth style set to be concatenated.\n * @param styleSet5 - The fifth set to be concatenated.\n * @param styleSet6 - The sixth set to be concatenated.\n */\nexport function concatStyleSets<TStyleSet1, TStyleSet2, TStyleSet3, TStyleSet4, TStyleSet5, TStyleSet6>(\n styleSet1: TStyleSet1 | false | null | undefined,\n styleSet2: TStyleSet2 | false | null | undefined,\n styleSet3: TStyleSet3 | false | null | undefined,\n styleSet4: TStyleSet4 | false | null | undefined,\n styleSet5: TStyleSet5 | false | null | undefined,\n styleSet6: TStyleSet6 | false | null | undefined,\n): IConcatenatedStyleSet<\n ObjectOnly<TStyleSet1> &\n ObjectOnly<TStyleSet2> &\n ObjectOnly<TStyleSet3> &\n ObjectOnly<TStyleSet4> &\n ObjectOnly<TStyleSet5> &\n ObjectOnly<TStyleSet6>\n>;\n\n/**\n * Combine a set of styles together (but does not register css classes).\n * @param styleSets - One or more stylesets to be merged (each param can also be falsy).\n */\nexport function concatStyleSets(...styleSets: (IStyleSet | false | null | undefined)[]): IConcatenatedStyleSet<any>;\n\n/**\n * Combine a set of styles together (but does not register css classes).\n * @param styleSets - One or more stylesets to be merged (each param can also be falsy).\n */\nexport function concatStyleSets(...styleSets: (IStyleSet | false | null | undefined)[]): IConcatenatedStyleSet<any> {\n if (styleSets && styleSets.length === 1 && styleSets[0] && !(styleSets[0] as IStyleSet).subComponentStyles) {\n return styleSets[0] as IConcatenatedStyleSet<any>;\n }\n\n const mergedSet: IConcatenatedStyleSet<any> = {};\n\n // We process sub component styles in two phases. First we collect them, then we combine them into 1 style function.\n const workingSubcomponentStyles: { [key: string]: Array<IStyleFunctionOrObject<any, any>> } = {};\n\n for (const currentSet of styleSets) {\n if (currentSet) {\n for (const prop in currentSet) {\n if (currentSet.hasOwnProperty(prop)) {\n if (prop === 'subComponentStyles' && currentSet.subComponentStyles !== undefined) {\n // subcomponent styles - style functions or objects\n\n const currentComponentStyles = currentSet.subComponentStyles;\n for (const subCompProp in currentComponentStyles) {\n if (currentComponentStyles.hasOwnProperty(subCompProp)) {\n if (workingSubcomponentStyles.hasOwnProperty(subCompProp)) {\n workingSubcomponentStyles[subCompProp].push(currentComponentStyles[subCompProp]);\n } else {\n workingSubcomponentStyles[subCompProp] = [currentComponentStyles[subCompProp]];\n }\n }\n }\n\n continue;\n }\n\n // the as any casts below is a workaround for ts 2.8.\n // todo: remove cast to any in ts 2.9.\n const mergedValue: IStyle = (mergedSet as any)[prop];\n const currentValue = (currentSet as any)[prop];\n\n if (mergedValue === undefined) {\n (mergedSet as any)[prop] = currentValue;\n } else {\n (mergedSet as any)[prop] = [\n // https://github.com/Microsoft/TypeScript/issues/25474\n ...(Array.isArray(mergedValue) ? mergedValue : [mergedValue as IStyleBase]),\n ...(Array.isArray(currentValue) ? currentValue : [currentValue as IStyleBase]),\n ];\n }\n }\n }\n }\n }\n\n if (Object.keys(workingSubcomponentStyles).length > 0) {\n mergedSet.subComponentStyles = {};\n const mergedSubStyles = mergedSet.subComponentStyles;\n\n // now we process the subcomponent styles if there are any\n for (const subCompProp in workingSubcomponentStyles) {\n if (workingSubcomponentStyles.hasOwnProperty(subCompProp)) {\n const workingSet = workingSubcomponentStyles[subCompProp];\n mergedSubStyles[subCompProp] = (styleProps: any) => {\n return concatStyleSets(\n ...workingSet.map((styleFunctionOrObject: IStyleFunctionOrObject<any, any>) =>\n typeof styleFunctionOrObject === 'function' ? styleFunctionOrObject(styleProps) : styleFunctionOrObject,\n ),\n );\n };\n }\n }\n }\n\n return mergedSet;\n}\n","/**\n * Verifies if an application can use DOM.\n */\nexport function canUseDOM(): boolean {\n return (\n typeof window !== 'undefined' &&\n !!(\n window.document &&\n // eslint-disable-next-line deprecation/deprecation\n window.document.createElement\n )\n );\n}\n","import { canUseDOM } from './canUseDOM';\n\nlet _window: Window | undefined = undefined;\n\n// Note: Accessing \"window\" in IE11 is somewhat expensive, and calling \"typeof window\"\n// hits a memory leak, whereas aliasing it and calling \"typeof _window\" does not.\n// Caching the window value at the file scope lets us minimize the impact.\ntry {\n _window = window;\n} catch (e) {\n /* no-op */\n}\n\n/**\n * Helper to get the window object. The helper will make sure to use a cached variable\n * of \"window\", to avoid overhead and memory leaks in IE11. Note that in popup scenarios the\n * window object won't match the \"global\" window object, and for these scenarios, you should\n * pass in an element hosted within the popup.\n *\n * @public\n */\nexport function getWindow(rootElement?: Element | null): Window | undefined {\n if (!canUseDOM() || typeof _window === 'undefined') {\n return undefined;\n } else {\n const el = rootElement as Element;\n\n return el && el.ownerDocument && el.ownerDocument.defaultView ? el.ownerDocument.defaultView : _window;\n }\n}\n","import { getWindow } from './dom/getWindow';\n\n/**\n * Storing global state in local module variables has issues when more than one copy\n * if the module gets loaded on the page (due to a bundling error or simply by consuming\n * a prebundled script.)\n *\n * This file contains helpers to deal with the getting and setting local state, and allows\n * callers to get called back when it mutates.\n */\n\nconst GLOBAL_SETTINGS_PROP_NAME = '__globalSettings__';\nconst CALLBACK_STATE_PROP_NAME = '__callbacks__';\n\nlet _counter = 0;\n\n/**\n * Change description used for change callbacks in GlobalSettings.\n *\n * @public\n * {@docCategory IChangeDescription}\n */\nexport interface IChangeDescription {\n key: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n oldValue: any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value: any;\n}\n\n/**\n * Change event callback.\n *\n * @public\n * {@docCategory IChangeEventCallback}\n */\nexport interface IChangeEventCallback {\n __id__?: string;\n (changeDescription?: IChangeDescription): void;\n}\n\n/**\n * Global settings helper, which stores settings in the global (window) namespace.\n * If window is not provided, it will store settings in module scope. Provides a\n * way to observe changes as well when their values change.\n *\n * @public\n * {@docCategory GlobalSettings}\n */\nexport class GlobalSettings {\n public static getValue<T>(key: string, defaultValue?: T | (() => T)): T {\n const globalSettings = _getGlobalSettings();\n\n if (globalSettings[key] === undefined) {\n globalSettings[key] = typeof defaultValue === 'function' ? (defaultValue as Function)() : defaultValue;\n }\n\n return globalSettings[key];\n }\n\n public static setValue<T>(key: string, value: T): T {\n const globalSettings = _getGlobalSettings();\n const callbacks = globalSettings[CALLBACK_STATE_PROP_NAME];\n let oldValue = globalSettings[key];\n\n if (value !== oldValue) {\n globalSettings[key] = value;\n\n let changeDescription = {\n oldValue,\n value,\n key,\n };\n\n for (let id in callbacks) {\n if (callbacks.hasOwnProperty(id)) {\n callbacks[id](changeDescription);\n }\n }\n }\n\n return value;\n }\n\n public static addChangeListener(cb: IChangeEventCallback): void {\n // Note: we use generated ids on the callbacks to create a map of the callbacks, which optimizes removal.\n // (It's faster to delete a key than it is to look up the index of an object and splice an array.)\n let id = cb.__id__;\n const callbacks = _getCallbacks();\n\n if (!id) {\n id = cb.__id__ = String(_counter++);\n }\n\n callbacks[id] = cb;\n }\n\n public static removeChangeListener(cb: IChangeEventCallback): void {\n const callbacks = _getCallbacks();\n delete callbacks[cb.__id__ as string];\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _getGlobalSettings(): { [key: string]: any } {\n const win = getWindow();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const globalObj: { [key: string]: any } = win || {};\n\n if (!globalObj[GLOBAL_SETTINGS_PROP_NAME]) {\n globalObj[GLOBAL_SETTINGS_PROP_NAME] = {\n [CALLBACK_STATE_PROP_NAME]: {},\n };\n }\n\n return globalObj[GLOBAL_SETTINGS_PROP_NAME];\n}\n\nfunction _getCallbacks(): { [key: string]: () => void } {\n const globalSettings = _getGlobalSettings();\n return globalSettings[CALLBACK_STATE_PROP_NAME];\n}\n","import { GlobalSettings } from '../GlobalSettings';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type ISettings = { [key: string]: any };\nexport type ISettingsFunction = (settings: ISettings) => ISettings;\n\n/**\n * @deprecated Use ISettings.\n */\nexport type Settings = ISettings;\n\n/**\n * @deprecated Use ISettingsFunction.\n */\nexport type SettingsFunction = ISettingsFunction;\n\nexport interface ICustomizations {\n settings: ISettings;\n scopedSettings: { [key: string]: ISettings };\n inCustomizerContext?: boolean;\n}\n\nconst CustomizationsGlobalKey = 'customizations';\nconst NO_CUSTOMIZATIONS = { settings: {}, scopedSettings: {}, inCustomizerContext: false };\n\nlet _allSettings = GlobalSettings.getValue<ICustomizations>(CustomizationsGlobalKey, {\n settings: {},\n scopedSettings: {},\n inCustomizerContext: false,\n});\n\nlet _events: (() => void)[] = [];\n\nexport class Customizations {\n private static _suppressUpdates: boolean;\n\n public static reset(): void {\n _allSettings.settings = {};\n _allSettings.scopedSettings = {};\n }\n\n /** Apply global Customization settings.\n * @example Customizations.applySettings(\\{ theme: \\{...\\} \\});\n */\n public static applySettings(settings: ISettings): void {\n _allSettings.settings = { ..._allSettings.settings, ...settings };\n Customizations._raiseChange();\n }\n\n /** Apply Customizations to a particular named scope, like a component.\n * @example Customizations.applyScopedSettings('Nav', \\{ styles: () =\\> \\{\\} \\});\n */\n public static applyScopedSettings(scopeName: string, settings: ISettings): void {\n _allSettings.scopedSettings[scopeName] = { ..._allSettings.scopedSettings[scopeName], ...settings };\n Customizations._raiseChange();\n }\n\n public static getSettings(\n properties: string[],\n scopeName?: string,\n localSettings: ICustomizations = NO_CUSTOMIZATIONS,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): any {\n const settings: ISettings = {};\n const localScopedSettings = (scopeName && localSettings.scopedSettings[scopeName]) || {};\n const globalScopedSettings = (scopeName && _allSettings.scopedSettings[scopeName]) || {};\n\n for (let property of properties) {\n settings[property] =\n localScopedSettings[property] ||\n localSettings.settings[property] ||\n globalScopedSettings[property] ||\n _allSettings.settings[property];\n }\n\n return settings;\n }\n\n /** Used to run some code that sets Customizations without triggering an update until the end.\n * Useful for applying Customizations that don't affect anything currently rendered, or for\n * applying many customizations at once.\n * @param suppressUpdate - Do not raise the change event at the end, preventing all updates\n */\n public static applyBatchedUpdates(code: () => void, suppressUpdate?: boolean): void {\n Customizations._suppressUpdates = true;\n try {\n code();\n } catch {\n /* do nothing */\n }\n Customizations._suppressUpdates = false;\n if (!suppressUpdate) {\n Customizations._raiseChange();\n }\n }\n\n public static observe(onChange: () => void): void {\n _events.push(onChange);\n }\n\n public static unobserve(onChange: () => void): void {\n _events = _events.filter((cb: () => void) => cb !== onChange);\n }\n\n private static _raiseChange(): void {\n if (!Customizations._suppressUpdates) {\n _events.forEach((cb: () => void) => cb());\n }\n }\n}\n","import * as React from 'react';\nimport type { ICustomizations } from './Customizations';\n\nexport interface ICustomizerContext {\n customizations: ICustomizations;\n}\n\nexport const CustomizerContext = React.createContext<ICustomizerContext>({\n customizations: {\n inCustomizerContext: false,\n settings: {},\n scopedSettings: {},\n },\n});\n","import * as React from 'react';\nimport { Customizations } from './Customizations';\nimport { CustomizerContext } from './CustomizerContext';\nimport type { ISettings } from './Customizations';\n\n/**\n * Hook to get Customizations settings from Customizations singleton or CustomizerContext.\n * It will trigger component state update on settings change observed.\n */\nexport function useCustomizationSettings(properties: string[], scopeName?: string): ISettings {\n const forceUpdate = useForceUpdate();\n const { customizations } = React.useContext(CustomizerContext);\n const { inCustomizerContext } = customizations;\n React.useEffect(() => {\n if (!inCustomizerContext) {\n Customizations.observe(forceUpdate);\n }\n return () => {\n if (!inCustomizerContext) {\n Customizations.unobserve(forceUpdate);\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps -- exclude forceUpdate\n }, [inCustomizerContext]);\n\n return Customizations.getSettings(properties, scopeName, customizations);\n}\n\nfunction useForceUpdate() {\n const [, setValue] = React.useState(0);\n return () => setValue(value => ++value);\n}\n","import * as React from 'react';\nimport { concatStyleSetsWithProps } from '@fluentui/merge-styles';\nimport { useCustomizationSettings } from './customizations/useCustomizationSettings';\nimport type { IStyleSet, IStyleFunctionOrObject } from '@fluentui/merge-styles';\n\nexport interface IPropsWithStyles<TStyleProps, TStyleSet extends IStyleSet<TStyleSet>> {\n styles?: IStyleFunctionOrObject<TStyleProps, TStyleSet>;\n}\n\nexport interface ICustomizableProps {\n /**\n * Name of scope, which can be targeted using the Customizer.\n */\n scope: string;\n\n /**\n * List of fields which can be customized.\n * @defaultvalue [ 'theme', 'styles' ]\n */\n fields?: string[];\n}\n\nconst DefaultFields = ['theme', 'styles'];\n\nexport type StyleFunction<TStyleProps, TStyleSet> = IStyleFunctionOrObject<TStyleProps, TStyleSet> & {\n /** Cache for all style functions. */\n __cachedInputs__: (IStyleFunctionOrObject<TStyleProps, TStyleSet> | undefined)[];\n\n /** True if no styles prop or styles from Customizer is passed to wrapped component. */\n __noStyleOverride__: boolean;\n};\n\n/**\n * The styled HOC wrapper allows you to create a functional wrapper around a given component which will resolve\n * getStyles functional props, and mix customized props passed in using concatStyleSets.\n *\n * @example\n * ```tsx\n * export const Toggle = styled(\n * ToggleBase,\n * props => ({ root: { background: 'red' }})\n * );\n * ```\n * @param Component - The unstyled base component to render, which receives styles.\n * @param baseStyles - The styles which should be curried with the component.\n * @param getProps - A helper which provides default props.\n * @param customizable - An object which defines which props can be customized using the Customizer.\n * @param pure - A boolean indicating if the component should avoid re-rendering when props haven't changed.\n * Note that pure should not be used on components which allow children, or take in complex objects or\n * arrays as props which could mutate on every render.\n */\nexport function styled<\n TComponentProps extends IPropsWithStyles<TStyleProps, TStyleSet>,\n TStyleProps,\n TStyleSet extends IStyleSet<TStyleSet>\n>(\n Component: React.ComponentClass<TComponentProps> | React.FunctionComponent<TComponentProps>,\n baseStyles: IStyleFunctionOrObject<TStyleProps, TStyleSet>,\n getProps?: (props: TComponentProps) => Partial<TComponentProps>,\n customizable?: ICustomizableProps,\n pure?: boolean,\n): React.FunctionComponent<TComponentProps>;\nexport function styled<\n TComponentProps extends IPropsWithStyles<TStyleProps, TStyleSet> & React.RefAttributes<TRef>,\n TStyleProps,\n TStyleSet extends IStyleSet<TStyleSet>,\n TRef = unknown\n>(\n Component: React.ComponentClass<TComponentProps> | React.FunctionComponent<TComponentProps>,\n baseStyles: IStyleFunctionOrObject<TStyleProps, TStyleSet>,\n getProps?: (props: TComponentProps) => Partial<TComponentProps>,\n customizable?: ICustomizableProps,\n pure?: boolean,\n): React.ForwardRefExoticComponent<React.PropsWithoutRef<TComponentProps> & React.RefAttributes<TRef>>;\nexport function styled<\n TComponentProps extends IPropsWithStyles<TStyleProps, TStyleSet> & React.RefAttributes<TRef>,\n TStyleProps,\n TStyleSet extends IStyleSet<TStyleSet>,\n TRef = unknown\n>(\n Component: React.ComponentClass<TComponentProps> | React.FunctionComponent<TComponentProps>,\n baseStyles: IStyleFunctionOrObject<TStyleProps, TStyleSet>,\n getProps?: (props: TComponentProps) => Partial<TComponentProps>,\n customizable?: ICustomizableProps,\n pure?: boolean,\n) {\n customizable = customizable || { scope: '', fields: undefined };\n\n const { scope, fields = DefaultFields } = customizable;\n\n const Wrapped = React.forwardRef((props: TComponentProps, forwardedRef: React.Ref<TRef>) => {\n const styles = React.useRef<StyleFunction<TStyleProps, TStyleSet>>();\n\n const settings = useCustomizationSettings(fields, scope);\n const { styles: customizedStyles, dir, ...rest } = settings;\n const additionalProps = getProps ? getProps(props) : undefined;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const cache = (styles.current && (styles.current as any).__cachedInputs__) || [];\n const propStyles = props.styles;\n if (!styles.current || customizedStyles !== cache[1] || propStyles !== cache[2]) {\n // Using styled components as the Component arg will result in nested styling arrays.\n // The function can be cached and in order to prevent the props from being retained within it's closure\n // we pass in just the styles and not the entire props\n const concatenatedStyles: IStyleFunctionOrObject<TStyleProps, TStyleSet> = (styleProps: TStyleProps) =>\n concatStyleSetsWithProps(styleProps, baseStyles, customizedStyles, propStyles);\n\n // The __cachedInputs__ array is attached to the function and consumed by the\n // classNamesFunction as a list of keys to include for memoizing classnames.\n (concatenatedStyles as StyleFunction<TStyleProps, TStyleSet>).__cachedInputs__ = [\n baseStyles,\n customizedStyles,\n propStyles,\n ];\n\n (concatenatedStyles as StyleFunction<TStyleProps, TStyleSet>).__noStyleOverride__ =\n !customizedStyles && !propStyles;\n\n styles.current = concatenatedStyles as StyleFunction<TStyleProps, TStyleSet>;\n }\n\n return <Component ref={forwardedRef} {...rest} {...additionalProps} {...props} styles={styles.current} />;\n });\n // Function.prototype.name is an ES6 feature, so the cast to any is required until we're\n // able to drop IE 11 support and compile with ES6 libs\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Wrapped.displayName = `Styled${Component.displayName || (Component as any).name}`;\n\n // This preserves backwards compatibility.\n const pureComponent = pure ? React.memo(Wrapped) : Wrapped;\n // Check if the wrapper has a displayName after it has been memoized. Then assign it to the pure component.\n if (Wrapped.displayName) {\n pureComponent.displayName = Wrapped.displayName;\n }\n\n return pureComponent;\n}\n","import { concatStyleSets } from './concatStyleSets';\nimport { IStyleSet } from './IStyleSet';\nimport { IStyleFunctionOrObject } from './IStyleFunction';\nimport { DeepPartial } from './DeepPartial';\n\n/**\n * Concatenates style sets into one, but resolves functional sets using the given props.\n * @param styleProps - Props used to resolve functional sets.\n * @param allStyles - Style sets, which can be functions or objects.\n */\nexport function concatStyleSetsWithProps<TStyleProps, TStyleSet extends IStyleSet<TStyleSet>>(\n styleProps: TStyleProps,\n ...allStyles: (IStyleFunctionOrObject<TStyleProps, TStyleSet> | undefined)[]\n): DeepPartial<TStyleSet> {\n const result: DeepPartial<TStyleSet>[] = [];\n for (const styles of allStyles) {\n if (styles) {\n result.push(typeof styles === 'function' ? styles(styleProps) : styles);\n }\n }\n if (result.length === 1) {\n return result[0] as DeepPartial<TStyleSet>;\n } else if (result.length) {\n // cliffkoh: I cannot figure out how to avoid the cast to any here.\n // It is something to do with the use of Omit in IStyleSet.\n // It might not be necessary once Omit becomes part of lib.d.ts (when we remove our own Omit and rely on\n // the official version).\n return concatStyleSets(...(result as any)) as any;\n }\n\n return {};\n}\n","import * as React from 'react';\n\n/**\n * Hook to initialize and return a constant value. Unlike `React.useMemo`, this is guaranteed to\n * always return the same value (and if the initializer is a function, only call it once).\n * This is similar to setting a private member in a class constructor.\n *\n * If the value should ever change based on dependencies, use `React.useMemo` instead.\n *\n * @param initialValue - Initial value, or function to get the initial value. Similar to `useState`,\n * only the value/function passed in the first time this is called is respected.\n * @returns The value. The identity of this value will always be the same.\n */\nexport function useConst<T>(initialValue: T | (() => T)): T {\n // Use useRef to store the value because it's the least expensive built-in hook that works here\n // (we could also use `const [value] = React.useState(initialValue)` but that's more expensive\n // internally due to reducer handling which we don't need)\n const ref = React.useRef<{ value: T }>();\n if (ref.current === undefined) {\n // Box the value in an object so we can tell if it's initialized even if the initializer\n // returns/is undefined\n ref.current = {\n value: typeof initialValue === 'function' ? (initialValue as Function)() : initialValue,\n };\n }\n return ref.current.value;\n}\n","import { IStyle } from './IStyle';\n\nexport const InjectionMode = {\n /**\n * Avoids style injection, use getRules() to read the styles.\n */\n none: 0 as 0,\n\n /**\n * Inserts rules using the insertRule api.\n */\n insertNode: 1 as 1,\n\n /**\n * Appends rules using appendChild.\n */\n appendChild: 2 as 2,\n};\n\nexport type InjectionMode = typeof InjectionMode[keyof typeof InjectionMode];\n\n/**\n * CSP settings for the stylesheet\n */\nexport interface ICSPSettings {\n /**\n * Nonce to inject into script tag\n */\n nonce?: string;\n}\n\n/**\n * Stylesheet config.\n *\n * @public\n */\nexport interface IStyleSheetConfig {\n /**\n * Injection mode for how rules are inserted.\n */\n injectionMode?: InjectionMode;\n\n /**\n * Default 'displayName' to use for a className.\n * @defaultvalue 'css'\n */\n defaultPrefix?: string;\n\n /**\n * Defines the default direction of rules for auto-rtlifying things.\n * While typically this is represented as a DIR attribute in the markup,\n * the DIR is not enough to control whether padding goes on the left or\n * right. Use this to set the default direction when rules are registered.\n */\n rtl?: boolean;\n\n /**\n * Default 'namespace' to attach before the className.\n */\n namespace?: string;\n\n /**\n * CSP settings\n */\n cspSettings?: ICSPSettings;\n\n /**\n * Callback executed when a rule is inserted.\n * @deprecated Use `Stylesheet.onInsertRule` instead.\n */\n onInsertRule?: (rule: string) => void;\n\n /**\n * Initial value for classnames cache. Key is serialized css rules associated with a classname.\n */\n classNameCache?: { [key: string]: string };\n}\n\n/**\n * Representation of Stylesheet used for rehydration.\n */\nexport interface ISerializedStylesheet {\n classNameToArgs: Stylesheet['_classNameToArgs'];\n counter: Stylesheet['_counter'];\n keyToClassName: Stylesheet['_keyToClassName'];\n preservedRules: Stylesheet['_preservedRules'];\n rules: Stylesheet['_rules'];\n}\n\nconst STYLESHEET_SETTING = '__stylesheet__';\n/**\n * MSIE 11 doesn't cascade styles based on DOM ordering, but rather on the order that each style node\n * is created. As such, to maintain consistent priority, IE11 should reuse a single style node.\n */\nconst REUSE_STYLE_NODE = typeof navigator !== 'undefined' && /rv:11.0/.test(navigator.userAgent);\n\nlet _global: (Window | {}) & {\n [STYLESHEET_SETTING]?: Stylesheet;\n FabricConfig?: {\n mergeStyles?: IStyleSheetConfig;\n serializedStylesheet?: ISerializedStylesheet;\n };\n} = {};\n\n// Grab window.\ntry {\n _global = window || {};\n} catch {\n /* leave as blank object */\n}\n\nlet _stylesheet: Stylesheet | undefined;\n\n/**\n * Represents the state of styles registered in the page. Abstracts\n * the surface for adding styles to the stylesheet, exposes helpers\n * for reading the styles registered in server rendered scenarios.\n *\n * @public\n */\nexport class Stylesheet {\n private _lastStyleElement?: HTMLStyleElement;\n private _styleElement?: HTMLStyleElement;\n private _rules: string[] = [];\n private _preservedRules: string[] = [];\n private _config: IStyleSheetConfig;\n private _counter = 0;\n private _keyToClassName: { [key: string]: string } = {};\n private _onInsertRuleCallbacks: Function[] = [];\n private _onResetCallbacks: Function[] = [];\n private _classNameToArgs: { [key: string]: { args: any; rules: string[] } } = {};\n\n /**\n * Gets the singleton instance.\n */\n public static getInstance(): Stylesheet {\n _stylesheet = _global[STYLESHEET_SETTING] as Stylesheet;\n\n if (!_stylesheet || (_stylesheet._lastStyleElement && _stylesheet._lastStyleElement.ownerDocument !== document)) {\n const fabricConfig = _global?.FabricConfig || {};\n\n const stylesheet = new Stylesheet(fabricConfig.mergeStyles, fabricConfig.serializedStylesheet);\n _stylesheet = stylesheet;\n _global[STYLESHEET_SETTING] = stylesheet;\n }\n\n return _stylesheet;\n }\n\n constructor(config?: IStyleSheetConfig, serializedStylesheet?: ISerializedStylesheet) {\n this._config = {\n // If there is no document we won't have an element to inject into.\n injectionMode: typeof document === 'undefined' ? InjectionMode.none : InjectionMode.insertNode,\n defaultPrefix: 'css',\n namespace: undefined,\n cspSettings: undefined,\n ...config,\n };\n\n this._classNameToArgs = serializedStylesheet?.classNameToArgs ?? this._classNameToArgs;\n this._counter = serializedStylesheet?.counter ?? this._counter;\n this._keyToClassName = this._config.classNameCache ?? serializedStylesheet?.keyToClassName ?? this._keyToClassName;\n this._preservedRules = serializedStylesheet?.preservedRules ?? this._preservedRules;\n this._rules = serializedStylesheet?.rules ?? this._rules;\n }\n\n /**\n * Serializes the Stylesheet instance into a format which allows rehydration on creation.\n * @returns string representation of `ISerializedStylesheet` interface.\n */\n public serialize(): string {\n return JSON.stringify({\n classNameToArgs: this._classNameToArgs,\n counter: this._counter,\n keyToClassName: this._keyToClassName,\n preservedRules: this._preservedRules,\n rules: this._rules,\n });\n }\n\n /**\n * Configures the stylesheet.\n */\n public setConfig(config?: IStyleSheetConfig): void {\n this._config = {\n ...this._config,\n ...config,\n };\n }\n\n /**\n * Configures a reset callback.\n *\n * @param callback - A callback which will be called when the Stylesheet is reset.\n * @returns function which when called un-registers provided callback.\n */\n public onReset(callback: Function): Function {\n this._onResetCallbacks.push(callback);\n\n return () => {\n this._onResetCallbacks = this._onResetCallbacks.filter(cb => cb !== callback);\n };\n }\n\n /**\n * Configures an insert rule callback.\n *\n * @param callback - A callback which will be called when a rule is inserted.\n * @returns function which when called un-registers provided callback.\n */\n public onInsertRule(callback: Function): Function {\n this._onInsertRuleCallbacks.push(callback);\n\n return () => {\n this._onInsertRuleCallbacks = this._onInsertRuleCallbacks.filter(cb => cb !== callback);\n };\n }\n\n /**\n * Generates a unique classname.\n *\n * @param displayName - Optional value to use as a prefix.\n */\n public getClassName(displayName?: string): string {\n const { namespace } = this._config;\n const prefix = displayName || this._config.defaultPrefix;\n\n return `${namespace ? namespace + '-' : ''}${prefix}-${this._counter++}`;\n }\n\n /**\n * Used internally to cache information about a class which was\n * registered with the stylesheet.\n */\n public cacheClassName(className: string, key: string, args: IStyle[], rules: string[]): void {\n this._keyToClassName[key] = className;\n this._classNameToArgs[className] = {\n args,\n rules,\n };\n }\n\n /**\n * Gets the appropriate classname given a key which was previously\n * registered using cacheClassName.\n */\n public classNameFromKey(key: string): string | undefined {\n return this._keyToClassName[key];\n }\n\n /**\n * Gets all classnames cache with the stylesheet.\n */\n public getClassNameCache(): { [key: string]: string } {\n return this._keyToClassName;\n }\n\n /**\n * Gets the arguments associated with a given classname which was\n * previously registered using cacheClassName.\n */\n public argsFromClassName(className: string): IStyle[] | undefined {\n const entry = this._classNameToArgs[className];\n\n return entry && entry.args;\n }\n\n /**\n * Gets the rules associated with a given classname which was\n * previously registered using cacheClassName.\n */\n public insertedRulesFromClassName(className: string): string[] | undefined {\n const entry = this._classNameToArgs[className];\n\n return entry && entry.rules;\n }\n\n /**\n * Inserts a css rule into the stylesheet.\n * @param preserve - Preserves the rule beyond a reset boundary.\n */\n public insertRule(rule: string, preserve?: boolean): void {\n const { injectionMode } = this._config;\n const element = injectionMode !== InjectionMode.none ? this._getStyleElement() : undefined;\n\n if (preserve) {\n this._preservedRules.push(rule);\n }\n\n if (element) {\n switch (injectionMode) {\n case InjectionMode.insertNode:\n const { sheet } = element!;\n\n try {\n (sheet as CSSStyleSheet).insertRule(rule, (sheet as CSSStyleSheet).cssRules.length);\n } catch (e) {\n // The browser will throw exceptions on unsupported rules (such as a moz prefix in webkit.)\n // We need to swallow the exceptions for this scenario, otherwise we'd need to filter\n // which could be slower and bulkier.\n }\n break;\n\n case InjectionMode.appendChild:\n element.appendChild(document.createTextNode(rule));\n break;\n }\n } else {\n this._rules.push(rule);\n }\n\n // eslint-disable-next-line deprecation/deprecation\n if (this._config.onInsertRule) {\n // eslint-disable-next-line deprecation/deprecation\n this._config.onInsertRule(rule);\n }\n\n this._onInsertRuleCallbacks.forEach(callback => callback());\n }\n\n /**\n * Gets all rules registered with the stylesheet; only valid when\n * using InsertionMode.none.\n */\n public getRules(includePreservedRules?: boolean): string {\n return (includePreservedRules ? this._preservedRules.join('') : '') + this._rules.join('');\n }\n\n /**\n * Resets the internal state of the stylesheet. Only used in server\n * rendered scenarios where we're using InsertionMode.none.\n */\n public reset(): void {\n this._rules = [];\n this._counter = 0;\n this._classNameToArgs = {};\n this._keyToClassName = {};\n\n this._onResetCallbacks.forEach(callback => callback());\n }\n\n // Forces the regeneration of incoming styles without totally resetting the stylesheet.\n public resetKeys(): void {\n this._keyToClassName = {};\n }\n\n private _getStyleElement(): HTMLStyleElement | undefined {\n if (!this._styleElement && typeof document !== 'undefined') {\n this._styleElement = this._createStyleElement();\n\n if (!REUSE_STYLE_NODE) {\n // Reset the style element on the next frame.\n window.requestAnimationFrame(() => {\n this._styleElement = undefined;\n });\n }\n }\n return this._styleElement;\n }\n\n private _createStyleElement(): HTMLStyleElement {\n const head: HTMLHeadElement = document.head;\n const styleElement = document.createElement('style');\n let nodeToInsertBefore: Node | null = null;\n\n styleElement.setAttribute('data-merge-styles', 'true');\n\n const { cspSettings } = this._config;\n if (cspSettings) {\n if (cspSettings.nonce) {\n styleElement.setAttribute('nonce', cspSettings.nonce);\n }\n }\n if (this._lastStyleElement) {\n // If the `nextElementSibling` is null, then the insertBefore will act as a regular append.\n // https://developer.mozilla.org/en-US/docs/Web/API/Node/insertBefore#Syntax\n nodeToInsertBefore = this._lastStyleElement.nextElementSibling;\n } else {\n const placeholderStyleTag: Element | null = this._findPlaceholderStyleTag();\n\n if (placeholderStyleTag) {\n nodeToInsertBefore = placeholderStyleTag.nextElementSibling;\n } else {\n nodeToInsertBefore = head.childNodes[0];\n }\n }\n\n head!.insertBefore(styleElement, head!.contains(nodeToInsertBefore) ? nodeToInsertBefore : null);\n this._lastStyleElement = styleElement;\n\n return styleElement;\n }\n\n private _findPlaceholderStyleTag(): Element | null {\n const head: HTMLHeadElement = document.head;\n if (head) {\n return head.querySelector('style[data-merge-styles]');\n }\n return null;\n }\n}\n","import { getWindow } from './dom/getWindow';\nimport { Stylesheet } from '@fluentui/merge-styles';\n\n// Initialize global window id.\nconst CURRENT_ID_PROPERTY = '__currentId__';\nconst DEFAULT_ID_STRING = 'id__';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nlet _global: any = getWindow() || {};\n\nif (_global[CURRENT_ID_PROPERTY] === undefined) {\n _global[CURRENT_ID_PROPERTY] = 0;\n}\n\nlet _initializedStylesheetResets = false;\n\n/**\n * Generates a unique id in the global scope (this spans across duplicate copies of the same library.)\n *\n * @public\n */\nexport function getId(prefix?: string): string {\n if (!_initializedStylesheetResets) {\n // Configure ids to reset on stylesheet resets.\n const stylesheet = Stylesheet.getInstance();\n\n if (stylesheet && stylesheet.onReset) {\n stylesheet.onReset(resetIds);\n }\n _initializedStylesheetResets = true;\n }\n\n let index = _global[CURRENT_ID_PROPERTY]++;\n\n return (prefix === undefined ? DEFAULT_ID_STRING : prefix) + index;\n}\n\n/**\n * Resets id counter to an (optional) number.\n *\n * @public\n */\nexport function resetIds(counter: number = 0): void {\n _global[CURRENT_ID_PROPERTY] = counter;\n}\n","import * as React from 'react';\nimport { getId } from '@fluentui/utilities';\n\n/**\n * Hook to generate a unique ID in the global scope (spanning across duplicate copies of the same library).\n *\n * @param prefix - Optional prefix for the ID\n * @param providedId - Optional id provided by a parent component. Defaults to the provided value if present,\n * without conditioning the hook call\n * @returns The ID\n */\nexport function useId(prefix?: string, providedId?: string): string {\n // getId should only be called once since it updates the global constant for the next ID value.\n // (While an extra update isn't likely to cause problems in practice, it's better to avoid it.)\n const ref = React.useRef<string | undefined>(providedId);\n if (!ref.current) {\n ref.current = getId(prefix);\n }\n return ref.current;\n}\n","import { IStyle, IStyleBaseArray } from './IStyle';\nimport { Stylesheet } from './Stylesheet';\n\n/**\n * Separates the classes and style objects. Any classes that are pre-registered\n * args are auto expanded into objects.\n */\nexport function extractStyleParts(\n ...args: (IStyle | IStyle[] | false | null | undefined)[]\n): { classes: string[]; objects: IStyleBaseArray } {\n const classes: string[] = [];\n const objects: {}[] = [];\n const stylesheet = Stylesheet.getInstance();\n\n function _processArgs(argsList: (IStyle | IStyle[])[]): void {\n for (const arg of argsList) {\n if (arg) {\n if (typeof arg === 'string') {\n if (arg.indexOf(' ') >= 0) {\n _processArgs(arg.split(' '));\n } else {\n const translatedArgs = stylesheet.argsFromClassName(arg);\n\n if (translatedArgs) {\n _processArgs(translatedArgs);\n } else {\n // Avoid adding the same class twice.\n if (classes.indexOf(arg) === -1) {\n classes.push(arg);\n }\n }\n }\n } else if (Array.isArray(arg)) {\n _processArgs(arg);\n } else if (typeof arg === 'object') {\n objects.push(arg);\n }\n }\n }\n }\n\n _processArgs(args);\n\n return {\n classes,\n objects,\n };\n}\n","const rules: { [key: string]: string } = {};\n\nexport function kebabRules(rulePairs: (string | number)[], index: number): void {\n const rule: string = rulePairs[index] as string;\n\n if (rule.charAt(0) !== '-') {\n rulePairs[index] = rules[rule] = rules[rule] || rule.replace(/([A-Z])/g, '-$1').toLowerCase();\n }\n}\n","export interface IVendorSettings {\n isWebkit?: boolean;\n isMoz?: boolean;\n isMs?: boolean;\n isOpera?: boolean;\n}\n\nlet _vendorSettings: IVendorSettings | undefined;\n\nexport function getVendorSettings(): IVendorSettings {\n if (!_vendorSettings) {\n const doc = typeof document !== 'undefined' ? document : undefined;\n const nav = typeof navigator !== 'undefined' ? navigator : undefined;\n const userAgent = nav?.userAgent?.toLowerCase();\n\n if (!doc) {\n _vendorSettings = {\n isWebkit: true,\n isMoz: true,\n isOpera: true,\n isMs: true,\n };\n } else {\n _vendorSettings = {\n isWebkit: !!(doc && 'WebkitAppearance' in doc.documentElement.style),\n isMoz: !!(userAgent && userAgent.indexOf('firefox') > -1),\n isOpera: !!(userAgent && userAgent.indexOf('opera') > -1),\n isMs: !!(nav && (/rv:11.0/i.test(nav.userAgent) || /Edge\\/\\d./i.test(navigator.userAgent))),\n };\n }\n }\n\n return _vendorSettings;\n}\n\n/**\n * Sets the vendor settings for prefixing and vendor specific operations.\n */\nexport function setVendorSettings(vendorSettings?: IVendorSettings): void {\n _vendorSettings = vendorSettings;\n}\n","import { getVendorSettings } from '../getVendorSettings';\n\nconst autoPrefixNames: { [key: string]: number } = {\n 'user-select': 1,\n};\n\nexport function prefixRules(rulePairs: (string | number)[], index: number): void {\n const vendorSettings = getVendorSettings();\n\n const name = rulePairs[index];\n\n if (autoPrefixNames[name]) {\n const value = rulePairs[index + 1];\n\n if (autoPrefixNames[name]) {\n if (vendorSettings.isWebkit) {\n rulePairs.push('-webkit-' + name, value);\n }\n if (vendorSettings.isMoz) {\n rulePairs.push('-moz-' + name, value);\n }\n if (vendorSettings.isMs) {\n rulePairs.push('-ms-' + name, value);\n }\n if (vendorSettings.isOpera) {\n rulePairs.push('-o-' + name, value);\n }\n }\n }\n}\n","const NON_PIXEL_NUMBER_PROPS = [\n 'column-count',\n 'font-weight',\n 'flex',\n 'flex-grow',\n 'flex-shrink',\n 'fill-opacity',\n 'opacity',\n 'order',\n 'z-index',\n 'zoom',\n];\n\nexport function provideUnits(rulePairs: (string | number)[], index: number): void {\n const name = rulePairs[index] as string;\n const value = rulePairs[index + 1];\n\n if (typeof value === 'number') {\n const isNonPixelProp = NON_PIXEL_NUMBER_PROPS.indexOf(name as string) > -1;\n const isVariableOrPrefixed = name.indexOf('--') > -1;\n const unit = isNonPixelProp || isVariableOrPrefixed ? '' : 'px';\n\n rulePairs[index + 1] = `${value}${unit}`;\n }\n}\n","import { IStyleOptions } from '../IStyleOptions';\n\nconst LEFT = 'left';\nconst RIGHT = 'right';\nconst NO_FLIP = '@noflip';\nconst NAME_REPLACEMENTS: { [key: string]: string } = {\n [LEFT]: RIGHT,\n [RIGHT]: LEFT,\n};\nconst VALUE_REPLACEMENTS: { [key: string]: string } = {\n 'w-resize': 'e-resize',\n 'sw-resize': 'se-resize',\n 'nw-resize': 'ne-resize',\n};\n\n/**\n * RTLifies the rulePair in the array at the current index. This mutates the array for performance\n * reasons.\n */\nexport function rtlifyRules(options: IStyleOptions, rulePairs: (string | number)[], index: number): void {\n if (options.rtl) {\n const name = rulePairs[index] as string;\n\n if (!name) {\n return;\n }\n\n const value = rulePairs[index + 1] as string;\n\n if (typeof value === 'string' && value.indexOf(NO_FLIP) >= 0) {\n rulePairs[index + 1] = value.replace(/\\s*(?:\\/\\*\\s*)?\\@noflip\\b(?:\\s*\\*\\/)?\\s*?/g, '');\n } else if (name.indexOf(LEFT) >= 0) {\n rulePairs[index] = name.replace(LEFT, RIGHT);\n } else if (name.indexOf(RIGHT) >= 0) {\n rulePairs[index] = name.replace(RIGHT, LEFT);\n } else if (String(value).indexOf(LEFT) >= 0) {\n rulePairs[index + 1] = value.replace(LEFT, RIGHT);\n } else if (String(value).indexOf(RIGHT) >= 0) {\n rulePairs[index + 1] = value.replace(RIGHT, LEFT);\n } else if (NAME_REPLACEMENTS[name]) {\n rulePairs[index] = NAME_REPLACEMENTS[name];\n } else if (VALUE_REPLACEMENTS[value]) {\n rulePairs[index + 1] = VALUE_REPLACEMENTS[value];\n } else {\n switch (name) {\n case 'margin':\n case 'padding':\n rulePairs[index + 1] = flipQuad(value);\n break;\n case 'box-shadow':\n rulePairs[index + 1] = negateNum(value, 0);\n break;\n }\n }\n }\n}\n\n/**\n * Given a string value in a space delimited format (e.g. \"1 2 3 4\"), negates a particular value.\n */\nfunction negateNum(value: string, partIndex: number): string {\n const parts = value.split(' ');\n const numberVal = parseInt(parts[partIndex], 10);\n\n parts[0] = parts[0].replace(String(numberVal), String(numberVal * -1));\n\n return parts.join(' ');\n}\n\n/**\n * Given a string quad, flips the left and right values.\n */\nfunction flipQuad(value: string): string {\n if (typeof value === 'string') {\n const parts = value.split(' ');\n\n if (parts.length === 4) {\n return `${parts[0]} ${parts[3]} ${parts[2]} ${parts[1]}`;\n }\n }\n\n return value;\n}\n","import { IStyle } from './IStyle';\nimport { IRawStyle } from './IRawStyle';\n\nimport { Stylesheet } from './Stylesheet';\nimport { kebabRules } from './transforms/kebabRules';\nimport { prefixRules } from './transforms/prefixRules';\nimport { provideUnits } from './transforms/provideUnits';\nimport { rtlifyRules } from './transforms/rtlifyRules';\nimport { IStyleOptions } from './IStyleOptions';\nimport { tokenizeWithParentheses } from './tokenizeWithParentheses';\n\nconst DISPLAY_NAME = 'displayName';\n\ntype IDictionary = { [key: string]: any };\n\ninterface IRuleSet {\n __order: string[];\n [key: string]: IDictionary;\n}\n\nfunction getDisplayName(rules?: { [key: string]: IRawStyle }): string | undefined {\n const rootStyle: IStyle = rules && rules['&'];\n\n return rootStyle ? (rootStyle as IRawStyle).displayName : undefined;\n}\n\nconst globalSelectorRegExp = /\\:global\\((.+?)\\)/g;\n\ntype ReplacementInfo = [number, number, string];\n\n/**\n * Finds comma separated selectors in a :global() e.g. \":global(.class1, .class2, .class3)\"\n * and wraps them each in their own global \":global(.class1), :global(.class2), :global(.class3)\"\n *\n * @param selectorWithGlobals The selector to process\n * @returns The updated selector\n */\nfunction expandCommaSeparatedGlobals(selectorWithGlobals: string): string {\n // We the selector does not have a :global() we can shortcut\n if (!globalSelectorRegExp.test(selectorWithGlobals)) {\n return selectorWithGlobals;\n }\n\n const replacementInfo: ReplacementInfo[] = [];\n\n const findGlobal = /\\:global\\((.+?)\\)/g;\n let match = null;\n // Create a result list for global selectors so we can replace them.\n while ((match = findGlobal.exec(selectorWithGlobals))) {\n // Only if the found selector is a comma separated list we'll process it.\n if (match[1].indexOf(',') > -1) {\n replacementInfo.push([\n match.index,\n match.index + match[0].length,\n // Wrap each of the found selectors in :global()\n match[1]\n .split(',')\n .map((v: string) => `:global(${v.trim()})`)\n .join(', '),\n ]);\n }\n }\n\n // Replace the found selectors with their wrapped variants in reverse order\n return replacementInfo\n .reverse()\n .reduce((selector: string, [matchIndex, matchEndIndex, replacement]: ReplacementInfo) => {\n const prefix = selector.slice(0, matchIndex);\n const suffix = selector.slice(matchEndIndex);\n\n return prefix + replacement + suffix;\n }, selectorWithGlobals);\n}\n\nfunction expandSelector(newSelector: string, currentSelector: string): string {\n if (newSelector.indexOf(':global(') >= 0) {\n return newSelector.replace(globalSelectorRegExp, '$1');\n } else if (newSelector.indexOf(':') === 0) {\n return currentSelector + newSelector;\n } else if (newSelector.indexOf('&') < 0) {\n return currentSelector + ' ' + newSelector;\n }\n\n return newSelector;\n}\n\nfunction extractSelector(currentSelector: string, rules: IRuleSet = { __order: [] }, selector: string, value: IStyle) {\n if (selector.indexOf('@') === 0) {\n selector = selector + '{' + currentSelector;\n extractRules([value], rules, selector);\n } else if (selector.indexOf(',') > -1) {\n expandCommaSeparatedGlobals(selector)\n .split(',')\n .map((s: string) => s.trim())\n .forEach((separatedSelector: string) =>\n extractRules([value], rules, expandSelector(separatedSelector, currentSelector)),\n );\n } else {\n extractRules([value], rules, expandSelector(selector, currentSelector));\n }\n}\n\nfunction extractRules(args: IStyle[], rules: IRuleSet = { __order: [] }, currentSelector: string = '&'): IRuleSet {\n const stylesheet = Stylesheet.getInstance();\n let currentRules: IDictionary | undefined = rules[currentSelector] as IDictionary;\n\n if (!currentRules) {\n currentRules = {};\n rules[currentSelector] = currentRules;\n rules.__order.push(currentSelector);\n }\n\n for (const arg of args) {\n // If the arg is a string, we need to look up the class map and merge.\n if (typeof arg === 'string') {\n const expandedRules = stylesheet.argsFromClassName(arg);\n\n if (expandedRules) {\n extractRules(expandedRules, rules, currentSelector);\n }\n // Else if the arg is an array, we need to recurse in.\n } else if (Array.isArray(arg)) {\n extractRules(arg, rules, currentSelector);\n } else {\n for (const prop in arg as any) {\n if ((arg as any).hasOwnProperty(prop)) {\n const propValue = (arg as any)[prop];\n\n if (prop === 'selectors') {\n // every child is a selector.\n const selectors: { [key: string]: IStyle } = (arg as any).selectors;\n\n for (const newSelector in selectors) {\n if (selectors.hasOwnProperty(newSelector)) {\n extractSelector(currentSelector, rules, newSelector, selectors[newSelector]);\n }\n }\n } else if (typeof propValue === 'object') {\n // prop is a selector.\n if (propValue !== null) {\n extractSelector(currentSelector, rules, prop, propValue);\n }\n } else {\n if (propValue !== undefined) {\n // Else, add the rule to the currentSelector.\n if (prop === 'margin' || prop === 'padding') {\n expandQuads(currentRules, prop, propValue);\n } else {\n (currentRules as any)[prop] = propValue;\n }\n }\n }\n }\n }\n }\n }\n\n return rules;\n}\n\nfunction expandQuads(currentRules: IDictionary, name: string, value: string): void {\n let parts = typeof value === 'string' ? tokenizeWithParentheses(value) : [value];\n\n if (parts.length === 0) {\n parts.push(value);\n }\n\n if (parts[parts.length - 1] === '!important') {\n // Remove !important from parts, and append it to each part individually\n parts = parts.slice(0, -1).map(p => p + ' !important');\n }\n\n currentRules[name + 'Top'] = parts[0];\n currentRules[name + 'Right'] = parts[1] || parts[0];\n currentRules[name + 'Bottom'] = parts[2] || parts[0];\n currentRules[name + 'Left'] = parts[3] || parts[1] || parts[0];\n}\n\nfunction getKeyForRules(options: IStyleOptions, rules: IRuleSet): string | undefined {\n const serialized: string[] = [options.rtl ? 'rtl' : 'ltr'];\n let hasProps = false;\n\n for (const selector of rules.__order) {\n serialized.push(selector);\n const rulesForSelector = rules[selector];\n\n for (const propName in rulesForSelector) {\n if (rulesForSelector.hasOwnProperty(propName) && rulesForSelector[propName] !== undefined) {\n hasProps = true;\n serialized.push(propName, rulesForSelector[propName]);\n }\n }\n }\n\n return hasProps ? serialized.join('') : undefined;\n}\n\nfunction repeatString(target: string, count: number): string {\n if (count <= 0) {\n return '';\n }\n\n if (count === 1) {\n return target;\n }\n\n return target + repeatString(target, count - 1);\n}\n\nexport function serializeRuleEntries(options: IStyleOptions, ruleEntries: { [key: string]: string | number }): string {\n if (!ruleEntries) {\n return '';\n }\n\n const allEntries: (string | number)[] = [];\n\n for (const entry in ruleEntries) {\n if (ruleEntries.hasOwnProperty(entry) && entry !== DISPLAY_NAME && ruleEntries[entry] !== undefined) {\n allEntries.push(entry, ruleEntries[entry]);\n }\n }\n\n // Apply transforms.\n for (let i = 0; i < allEntries.length; i += 2) {\n kebabRules(allEntries, i);\n provideUnits(allEntries, i);\n rtlifyRules(options, allEntries, i);\n prefixRules(allEntries, i);\n }\n\n // Apply punctuation.\n for (let i = 1; i < allEntries.length; i += 4) {\n allEntries.splice(i, 1, ':', allEntries[i], ';');\n }\n\n return allEntries.join('');\n}\n\nexport interface IRegistration {\n className: string;\n key: string;\n args: IStyle[];\n rulesToInsert: string[];\n}\n\nexport function styleToRegistration(options: IStyleOptions, ...args: IStyle[]): IRegistration | undefined {\n const rules: IRuleSet = extractRules(args);\n const key = getKeyForRules(options, rules);\n\n if (key) {\n const stylesheet = Stylesheet.getInstance();\n const registration: Partial<IRegistration> = {\n className: stylesheet.classNameFromKey(key),\n key,\n args,\n };\n\n if (!registration.className) {\n registration.className = stylesheet.getClassName(getDisplayName(rules));\n const rulesToInsert: string[] = [];\n\n for (const selector of rules.__order) {\n rulesToInsert.push(selector, serializeRuleEntries(options, rules[selector]));\n }\n registration.rulesToInsert = rulesToInsert;\n }\n\n return registration as IRegistration;\n }\n\n return undefined;\n}\n\n/**\n * Insert style to stylesheet.\n * @param registration Style registration.\n * @param specificityMultiplier Number of times classname selector is repeated in the css rule.\n * This is to increase css specificity in case it's needed. Default to 1.\n */\nexport function applyRegistration(registration: IRegistration, specificityMultiplier: number = 1): void {\n const stylesheet = Stylesheet.getInstance();\n const { className, key, args, rulesToInsert } = registration;\n\n if (rulesToInsert) {\n // rulesToInsert is an ordered array of selector/rule pairs.\n for (let i = 0; i < rulesToInsert.length; i += 2) {\n const rules = rulesToInsert[i + 1];\n if (rules) {\n let selector = rulesToInsert[i];\n selector = selector.replace(/&/g, repeatString(`.${registration.className}`, specificityMultiplier));\n\n // Insert. Note if a media query, we must close the query with a final bracket.\n const processedRule = `${selector}{${rules}}${selector.indexOf('@') === 0 ? '}' : ''}`;\n stylesheet.insertRule(processedRule);\n }\n }\n stylesheet.cacheClassName(className!, key!, args!, rulesToInsert);\n }\n}\n\nexport function styleToClassName(options: IStyleOptions, ...args: IStyle[]): string {\n const registration = styleToRegistration(options, ...args);\n if (registration) {\n applyRegistration(registration, options.specificityMultiplier);\n\n return registration.className;\n }\n\n return '';\n}\n","import { IStyleOptions } from './IStyleOptions';\n\n/**\n * Sets the current RTL value.\n */\nexport function setRTL(isRTL: boolean): void {\n if (_rtl !== isRTL) {\n _rtl = isRTL;\n }\n}\n\n/**\n * Gets the current RTL value.\n */\nexport function getRTL(): boolean {\n if (_rtl === undefined) {\n _rtl =\n typeof document !== 'undefined' &&\n !!document.documentElement &&\n document.documentElement.getAttribute('dir') === 'rtl';\n }\n return _rtl;\n}\n\n// This has been split into 2 lines because it was working in Fabric due to the code being transpiled to es5, so this\n// was converted to var while not working in Fluent that uses babel to transpile the code to be es6-like. Splitting the\n// logic into two lines, however, allows it to work in both scenarios.\nlet _rtl: boolean;\n_rtl = getRTL();\n\nexport function getStyleOptions(): IStyleOptions {\n return {\n rtl: getRTL(),\n };\n}\n","/**\n * Split a string into tokens separated by whitespace, except all text within parentheses\n * is treated as a single token (whitespace is ignored within parentheses).\n *\n * Unlike String.split(' '), multiple consecutive space characters are collapsed and\n * removed from the returned array (including leading and trailing spaces).\n *\n * For example:\n * `tokenizeWithParentheses(\"3px calc(var(--x) / 2) 9px 0 \")`\n * => `[\"3px\", \"calc(var(--x) / 2)\", \"9px\", \"0\"]`\n *\n * @returns The array of tokens. Returns an empty array if the string was empty or contained only whitespace.\n */\nexport function tokenizeWithParentheses(value: string): string[] {\n const parts = [];\n let partStart = 0;\n let parens = 0;\n\n for (let i = 0; i < value.length; i++) {\n switch (value[i]) {\n case '(':\n parens++;\n break;\n case ')':\n if (parens) {\n parens--;\n }\n break;\n case '\\t':\n case ' ':\n if (!parens) {\n // Add the new part if it's not an empty string\n if (i > partStart) {\n parts.push(value.substring(partStart, i));\n }\n partStart = i + 1;\n }\n break;\n }\n }\n\n // Add the last part\n if (partStart < value.length) {\n parts.push(value.substring(partStart));\n }\n\n return parts;\n}\n","import { concatStyleSets } from './concatStyleSets';\nimport { extractStyleParts } from './extractStyleParts';\nimport { IStyle } from './IStyle';\nimport { IStyleOptions } from './IStyleOptions';\nimport { IConcatenatedStyleSet, IProcessedStyleSet, IStyleSet } from './IStyleSet';\nimport { getStyleOptions } from './StyleOptionsState';\nimport { applyRegistration, styleToRegistration } from './styleToClassName';\nimport { ObjectOnly } from './ObjectOnly';\n\n/**\n * Takes in one or more style set objects, each consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeStyles` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSet - The first style set to be merged and reigstered.\n */\nexport function mergeStyleSets<TStyleSet>(\n styleSet: TStyleSet | false | null | undefined,\n): IProcessedStyleSet<ObjectOnly<TStyleSet>>;\n\n/**\n * Takes in one or more style set objects, each consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeStyles` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSet1 - The first style set to be merged.\n * @param styleSet2 - The second style set to be merged.\n */\nexport function mergeStyleSets<TStyleSet1, TStyleSet2>(\n styleSet1: TStyleSet1 | false | null | undefined,\n styleSet2: TStyleSet2 | false | null | undefined,\n): IProcessedStyleSet<ObjectOnly<TStyleSet1> & ObjectOnly<TStyleSet2>>;\n\n/**\n * Takes in one or more style set objects, each consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeStyles` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSet1 - The first style set to be merged.\n * @param styleSet2 - The second style set to be merged.\n * @param styleSet3 - The third style set to be merged.\n */\nexport function mergeStyleSets<TStyleSet1, TStyleSet2, TStyleSet3>(\n styleSet1: TStyleSet1 | false | null | undefined,\n styleSet2: TStyleSet2 | false | null | undefined,\n styleSet3: TStyleSet3 | false | null | undefined,\n): IProcessedStyleSet<ObjectOnly<TStyleSet1> & ObjectOnly<TStyleSet2> & ObjectOnly<TStyleSet3>>;\n\n/**\n * Takes in one or more style set objects, each consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeStyles` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSet1 - The first style set to be merged.\n * @param styleSet2 - The second style set to be merged.\n * @param styleSet3 - The third style set to be merged.\n * @param styleSet4 - The fourth style set to be merged.\n */\nexport function mergeStyleSets<TStyleSet1, TStyleSet2, TStyleSet3, TStyleSet4>(\n styleSet1: TStyleSet1 | false | null | undefined,\n styleSet2: TStyleSet2 | false | null | undefined,\n styleSet3: TStyleSet3 | false | null | undefined,\n styleSet4: TStyleSet4 | false | null | undefined,\n): IProcessedStyleSet<\n ObjectOnly<TStyleSet1> & ObjectOnly<TStyleSet2> & ObjectOnly<TStyleSet3> & ObjectOnly<TStyleSet4>\n>;\n\n/**\n * Takes in one or more style set objects, each consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeStyles` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSets - One or more style sets to be merged.\n */\nexport function mergeStyleSets(...styleSets: Array<IStyleSet | undefined | false | null>): IProcessedStyleSet<any>;\n\n/**\n * Takes in one or more style set objects, each consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeStyles` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSets - One or more style sets to be merged.\n */\nexport function mergeStyleSets(...styleSets: Array<IStyleSet | undefined | false | null>): IProcessedStyleSet<any> {\n return mergeCssSets(styleSets as any, getStyleOptions());\n}\n\n/**\n * Takes in one or more style set objects, each1consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeCss` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSets - One or more style sets to be merged.\n * @param options - (optional) Options to use when creating rules.\n */\nexport function mergeCssSets<TStyleSet>(\n styleSets: [TStyleSet | false | null | undefined],\n options?: IStyleOptions,\n): IProcessedStyleSet<TStyleSet>;\n\n/**\n * Takes in one or more style set objects, each1consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeCss` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSets - One or more style sets to be merged.\n * @param options - (optional) Options to use when creating rules.\n */\nexport function mergeCssSets<TStyleSet1, TStyleSet2>(\n styleSets: [TStyleSet1 | false | null | undefined, TStyleSet2 | false | null | undefined],\n options?: IStyleOptions,\n): IProcessedStyleSet<TStyleSet1 & TStyleSet2>;\n\n/**\n * Takes in one or more style set objects, each1consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeCss` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSets - One or more style sets to be merged.\n * @param options - (optional) Options to use when creating rules.\n */\nexport function mergeCssSets<TStyleSet1, TStyleSet2, TStyleSet3>(\n styleSets: [\n TStyleSet1 | false | null | undefined,\n TStyleSet2 | false | null | undefined,\n TStyleSet3 | false | null | undefined,\n ],\n options?: IStyleOptions,\n): IProcessedStyleSet<TStyleSet1 & TStyleSet2 & TStyleSet3>;\n\n/**\n * Takes in one or more style set objects, each1consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeCss` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSets - One or more style sets to be merged.\n * @param options - (optional) Options to use when creating rules.\n */\nexport function mergeCssSets<TStyleSet1, TStyleSet2, TStyleSet3, TStyleSet4>(\n styleSets: [\n TStyleSet1 | false | null | undefined,\n TStyleSet2 | false | null | undefined,\n TStyleSet3 | false | null | undefined,\n TStyleSet4 | false | null | undefined,\n ],\n options?: IStyleOptions,\n): IProcessedStyleSet<\n ObjectOnly<TStyleSet1> & ObjectOnly<TStyleSet2> & ObjectOnly<TStyleSet3> & ObjectOnly<TStyleSet4>\n>;\n\n/**\n * Takes in one or more style set objects, each1consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeCss` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSets - One or more style sets to be merged.\n * @param options - (optional) Options to use when creating rules.\n */\nexport function mergeCssSets<TStyleSet>(\n styleSet: [TStyleSet | false | null | undefined],\n options?: IStyleOptions,\n): IProcessedStyleSet<TStyleSet>;\n\n/**\n * Takes in one or more style set objects, each1consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeCss` for each property in the object, but ensures the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSets - One or more style sets to be merged.\n * @param options - (optional) Options to use when creating rules.\n */\nexport function mergeCssSets(\n styleSets: Array<IStyleSet | undefined | false | null>,\n options?: IStyleOptions,\n): IProcessedStyleSet<any> {\n const classNameSet: IProcessedStyleSet<any> = { subComponentStyles: {} };\n\n const styleSet = styleSets[0];\n\n if (!styleSet && styleSets.length <= 1) {\n return { subComponentStyles: {} } as any;\n }\n\n const concatenatedStyleSet = concatStyleSets(...styleSets);\n\n const registrations = [];\n\n for (const styleSetArea in concatenatedStyleSet) {\n if (concatenatedStyleSet.hasOwnProperty(styleSetArea)) {\n if (styleSetArea === 'subComponentStyles') {\n classNameSet.subComponentStyles = (concatenatedStyleSet as IConcatenatedStyleSet<any>).subComponentStyles || {};\n continue;\n }\n\n const styles: IStyle = (concatenatedStyleSet as any)[styleSetArea];\n\n const { classes, objects } = extractStyleParts(styles);\n\n if (objects?.length) {\n const registration = styleToRegistration(options || {}, { displayName: styleSetArea }, objects);\n\n if (registration) {\n registrations.push(registration);\n classNameSet[styleSetArea] = classes.concat([registration.className]).join(' ');\n }\n } else {\n classNameSet[styleSetArea] = classes.join(' ');\n }\n }\n }\n\n for (const registration of registrations) {\n if (registration) {\n applyRegistration(registration, options?.specificityMultiplier);\n }\n }\n\n return classNameSet as any;\n}\n","import { canUseDOM } from './canUseDOM';\n\n/**\n * Helper to get the document object. Note that in popup window cases, document\n * might be the wrong document, which is why we look at ownerDocument for the\n * truth.\n *\n * @public\n */\nexport function getDocument(rootElement?: HTMLElement | null): Document | undefined {\n if (!canUseDOM() || typeof document === 'undefined') {\n return undefined;\n } else {\n const el = rootElement as Element;\n\n return el && el.ownerDocument ? el.ownerDocument : document;\n }\n}\n","import { KeyCodes } from './KeyCodes';\nimport { getDocument } from './dom/getDocument';\nimport { getItem, setItem } from './sessionStorage';\nimport { setRTL as mergeStylesSetRTL } from '@fluentui/merge-styles';\n\nconst RTL_LOCAL_STORAGE_KEY = 'isRTL';\n\n// Default to undefined so that we initialize on first read.\nlet _isRTL: boolean | undefined;\n\n/**\n * Gets the rtl state of the page (returns true if in rtl.)\n */\nexport function getRTL(theme: { rtl?: boolean } = {}): boolean {\n if (theme.rtl !== undefined) {\n return theme.rtl;\n }\n if (_isRTL === undefined) {\n // Fabric supports persisting the RTL setting between page refreshes via session storage\n let savedRTL = getItem(RTL_LOCAL_STORAGE_KEY);\n if (savedRTL !== null) {\n _isRTL = savedRTL === '1';\n setRTL(_isRTL);\n }\n\n let doc = getDocument();\n if (_isRTL === undefined && doc) {\n _isRTL = ((doc.body && doc.body.getAttribute('dir')) || doc.documentElement.getAttribute('dir')) === 'rtl';\n mergeStylesSetRTL(_isRTL);\n }\n }\n\n return !!_isRTL;\n}\n\n/**\n * Sets the rtl state of the page (by adjusting the dir attribute of the html element.)\n */\nexport function setRTL(isRTL: boolean, persistSetting: boolean = false): void {\n let doc = getDocument();\n if (doc) {\n doc.documentElement.setAttribute('dir', isRTL ? 'rtl' : 'ltr');\n }\n\n if (persistSetting) {\n setItem(RTL_LOCAL_STORAGE_KEY, isRTL ? '1' : '0');\n }\n\n _isRTL = isRTL;\n mergeStylesSetRTL(_isRTL);\n}\n\n/**\n * Returns the given key, but flips right/left arrows if necessary.\n */\nexport function getRTLSafeKeyCode(key: number, theme: { rtl?: boolean } = {}): number {\n if (getRTL(theme)) {\n if (key === KeyCodes.left) {\n key = KeyCodes.right;\n } else if (key === KeyCodes.right) {\n key = KeyCodes.left;\n }\n }\n\n return key;\n}\n","import { getWindow } from './dom/getWindow';\n\n/**\n * Fetches an item from session storage without throwing an exception\n * @param key The key of the item to fetch from session storage\n */\nexport function getItem(key: string): string | null {\n let result = null;\n try {\n const win = getWindow();\n result = win ? win.sessionStorage.getItem(key) : null;\n } catch (e) {\n /* Eat the exception */\n }\n return result;\n}\n\n/**\n * Inserts an item into session storage without throwing an exception\n * @param key The key of the item to add to session storage\n * @param data The data to put into session storage\n */\nexport function setItem(key: string, data: string): void {\n try {\n getWindow()?.sessionStorage.setItem(key, data);\n } catch (e) {\n /* Eat the exception */\n }\n}\n","import { mergeCssSets, Stylesheet } from '@fluentui/merge-styles';\nimport { getRTL } from './rtl';\nimport { getWindow } from './dom';\nimport type { IStyleSet, IProcessedStyleSet, IStyleFunctionOrObject } from '@fluentui/merge-styles';\nimport type { StyleFunction } from './styled';\n\nconst MAX_CACHE_COUNT = 50;\nconst DEFAULT_SPECIFICITY_MULTIPLIER = 5;\n\nlet _memoizedClassNames = 0;\n\nconst stylesheet = Stylesheet.getInstance();\n\nif (stylesheet && stylesheet.onReset) {\n stylesheet.onReset(() => _memoizedClassNames++);\n}\n\n// Note that because of the caching nature within the classNames memoization,\n// I've disabled this rule to simply be able to work with any types.\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n// This represents a prop we attach to each Map to indicate the cached return value\n// associated with the graph node.\nconst retVal = '__retval__';\n\ninterface IRecursiveMemoNode extends Map<any, IRecursiveMemoNode> {\n [retVal]?: string;\n}\n\ntype AppWindow = (Window & { FabricConfig?: { enableClassNameCacheFullWarning?: boolean } }) | undefined;\n\nexport interface IClassNamesFunctionOptions {\n /**\n * Disables class caching for scenarios where styleProp parts mutate frequently.\n */\n disableCaching?: boolean;\n\n /**\n * Size of the cache. It overwrites default cache size when defined.\n */\n cacheSize?: number;\n\n /**\n * Set to true if component base styles are implemented in scss instead of css-in-js.\n */\n useStaticStyles?: boolean;\n}\n\n/**\n * Creates a getClassNames function which calls getStyles given the props, and injects them\n * into mergeStyleSets.\n *\n * Note that the props you pass in on every render should be in the same order and\n * immutable (numbers, strings, and booleans). This will allow the results to be memoized. Violating\n * these will cause extra recalcs to occur.\n */\nexport function classNamesFunction<TStyleProps extends {}, TStyleSet extends IStyleSet<TStyleSet>>(\n options: IClassNamesFunctionOptions = {},\n): (\n getStyles: IStyleFunctionOrObject<TStyleProps, TStyleSet> | undefined,\n styleProps?: TStyleProps,\n) => IProcessedStyleSet<TStyleSet> {\n // We build a trie where each node is a Map. The map entry key represents an argument\n // value, and the entry value is another node (Map). Each node has a `__retval__`\n // property which is used to hold the cached response.\n\n // To derive the response, we can simply ensure the arguments are added or already\n // exist in the trie. At the last node, if there is a `__retval__` we return that. Otherwise\n // we call the `getStyles` api to evaluate, cache on the property, and return that.\n let map: IRecursiveMemoNode = new Map();\n let styleCalcCount = 0;\n let getClassNamesCount = 0;\n let currentMemoizedClassNames = _memoizedClassNames;\n\n const getClassNames = (\n styleFunctionOrObject: IStyleFunctionOrObject<TStyleProps, TStyleSet> | undefined,\n styleProps: TStyleProps = {} as TStyleProps,\n ): IProcessedStyleSet<TStyleSet> => {\n // If useStaticStyles is true, styleFunctionOrObject returns slot to classname mappings.\n // If there is also no style overrides, we can skip merge styles completely and\n // simply return the result from the style funcion.\n if (\n options.useStaticStyles &&\n typeof styleFunctionOrObject === 'function' &&\n (styleFunctionOrObject as StyleFunction<TStyleProps, TStyleSet>).__noStyleOverride__\n ) {\n return styleFunctionOrObject(styleProps) as IProcessedStyleSet<TStyleSet>;\n }\n\n getClassNamesCount++;\n let current: Map<any, any> = map;\n const { theme } = styleProps as any;\n const rtl = theme && theme.rtl !== undefined ? theme.rtl : getRTL();\n\n const disableCaching = options.disableCaching;\n\n // On reset of our stylesheet, reset memoized cache.\n if (currentMemoizedClassNames !== _memoizedClassNames) {\n currentMemoizedClassNames = _memoizedClassNames;\n map = new Map();\n styleCalcCount = 0;\n }\n\n if (!options.disableCaching) {\n current = _traverseMap(map, styleFunctionOrObject as any);\n current = _traverseMap(current, styleProps);\n }\n\n if (disableCaching || !(current as any)[retVal]) {\n if (styleFunctionOrObject === undefined) {\n (current as any)[retVal] = {} as IProcessedStyleSet<TStyleSet>;\n } else {\n (current as any)[retVal] = mergeCssSets(\n [\n (typeof styleFunctionOrObject === 'function'\n ? styleFunctionOrObject(styleProps)\n : styleFunctionOrObject) as IStyleSet<TStyleSet>,\n ],\n { rtl: !!rtl, specificityMultiplier: options.useStaticStyles ? DEFAULT_SPECIFICITY_MULTIPLIER : undefined },\n );\n }\n\n if (!disableCaching) {\n styleCalcCount++;\n }\n }\n\n if (styleCalcCount > (options.cacheSize || MAX_CACHE_COUNT)) {\n const win = getWindow() as AppWindow;\n if (win?.FabricConfig?.enableClassNameCacheFullWarning) {\n // eslint-disable-next-line no-console\n console.warn(\n `Styles are being recalculated too frequently. Cache miss rate is ${styleCalcCount}/${getClassNamesCount}.`,\n );\n // eslint-disable-next-line no-console\n console.trace();\n }\n\n map.clear();\n styleCalcCount = 0;\n\n // Mutate the options passed in, that's all we can do.\n options.disableCaching = true;\n }\n\n // Note: the retVal is an attached property on the Map; not a key in the Map. We use this attached property to\n // cache the return value for this branch of the graph.\n return (current as any)[retVal];\n };\n\n return getClassNames;\n}\n\nfunction _traverseEdge(current: Map<any, any>, value: any): Map<any, any> {\n value = _normalizeValue(value);\n\n if (!current.has(value)) {\n current.set(value, new Map<any, any>());\n }\n\n return current.get(value);\n}\n\nfunction _traverseMap(current: Map<any, any>, inputs: any[] | Object): Map<any, any> {\n if (typeof inputs === 'function') {\n const cachedInputsFromStyled = (inputs as StyleFunction<any, any>).__cachedInputs__;\n if (cachedInputsFromStyled) {\n // The styled helper will generate the styles function and will attach the cached\n // inputs (consisting of the default styles, customzied styles, and user provided styles.)\n // These should be used as cache keys for deriving the memoized value.\n for (const input of (inputs as any).__cachedInputs__) {\n current = _traverseEdge(current, input);\n }\n } else {\n current = _traverseEdge(current, inputs);\n }\n } else if (typeof inputs === 'object') {\n for (const propName in inputs) {\n if (inputs.hasOwnProperty(propName)) {\n current = _traverseEdge(current, (inputs as any)[propName]);\n }\n }\n }\n\n return current;\n}\n\nfunction _normalizeValue(value: any): string {\n switch (value) {\n case undefined:\n return '__undefined__';\n case null:\n return '__null__';\n default:\n return value;\n }\n}\n","const toObjectMap = (...items: (string[] | Record<string, number>)[]) => {\n const result: Record<string, number> = {};\n\n for (const item of items) {\n const keys = Array.isArray(item) ? item : Object.keys(item);\n\n for (const key of keys) {\n result[key] = 1;\n }\n }\n\n return result;\n};\n\n/**\n * An array of events that are allowed on every html element type.\n *\n * @public\n */\nexport const baseElementEvents = toObjectMap([\n 'onCopy',\n 'onCut',\n 'onPaste',\n 'onCompositionEnd',\n 'onCompositionStart',\n 'onCompositionUpdate',\n 'onFocus',\n 'onFocusCapture',\n 'onBlur',\n 'onBlurCapture',\n 'onChange',\n 'onInput',\n 'onSubmit',\n 'onLoad',\n 'onError',\n 'onKeyDown',\n 'onKeyDownCapture',\n 'onKeyPress',\n 'onKeyUp',\n 'onAbort',\n 'onCanPlay',\n 'onCanPlayThrough',\n 'onDurationChange',\n 'onEmptied',\n 'onEncrypted',\n 'onEnded',\n 'onLoadedData',\n 'onLoadedMetadata',\n 'onLoadStart',\n 'onPause',\n 'onPlay',\n 'onPlaying',\n 'onProgress',\n 'onRateChange',\n 'onSeeked',\n 'onSeeking',\n 'onStalled',\n 'onSuspend',\n 'onTimeUpdate',\n 'onVolumeChange',\n 'onWaiting',\n 'onClick',\n 'onClickCapture',\n 'onContextMenu',\n 'onDoubleClick',\n 'onDrag',\n 'onDragEnd',\n 'onDragEnter',\n 'onDragExit',\n 'onDragLeave',\n 'onDragOver',\n 'onDragStart',\n 'onDrop',\n 'onMouseDown',\n 'onMouseDownCapture',\n 'onMouseEnter',\n 'onMouseLeave',\n 'onMouseMove',\n 'onMouseOut',\n 'onMouseOver',\n 'onMouseUp',\n 'onMouseUpCapture',\n 'onSelect',\n 'onTouchCancel',\n 'onTouchEnd',\n 'onTouchMove',\n 'onTouchStart',\n 'onScroll',\n 'onWheel',\n 'onPointerCancel',\n 'onPointerDown',\n 'onPointerEnter',\n 'onPointerLeave',\n 'onPointerMove',\n 'onPointerOut',\n 'onPointerOver',\n 'onPointerUp',\n 'onGotPointerCapture',\n 'onLostPointerCapture',\n]);\n\n/**\n * An array of element attributes which are allowed on every html element type.\n *\n * @public\n */\nexport const baseElementProperties = toObjectMap([\n 'accessKey', // global\n 'children', // global\n 'className', // global\n 'contentEditable', // global\n 'dir', // global\n 'draggable', // global\n 'hidden', // global\n 'htmlFor', // global\n 'id', // global\n 'lang', // global\n 'ref', // global\n 'role', // global\n 'style', // global\n 'tabIndex', // global\n 'title', // global\n 'translate', // global\n 'spellCheck', // global\n 'name', // global\n]);\n\n/**\n * An array of HTML element properties and events.\n *\n * @public\n */\nexport const htmlElementProperties = toObjectMap(baseElementProperties, baseElementEvents);\n\n/**\n * An array of LABEL tag properties and events.\n *\n * @public\n */\nexport const labelProperties = toObjectMap(htmlElementProperties, [\n 'form', // button, fieldset, input, label, meter, object, output, select, textarea\n]);\n\n/**\n * An array of AUDIO tag properties and events.\n\n * @public\n */\nexport const audioProperties = toObjectMap(htmlElementProperties, [\n 'height', // canvas, embed, iframe, img, input, object, video\n 'loop', // audio, video\n 'muted', // audio, video\n 'preload', // audio, video\n 'src', // audio, embed, iframe, img, input, script, source, track, video\n 'width', // canvas, embed, iframe, img, input, object, video\n]);\n\n/**\n * An array of VIDEO tag properties and events.\n *\n * @public\n */\nexport const videoProperties = toObjectMap(audioProperties, [\n 'poster', // video\n]);\n\n/**\n * An array of OL tag properties and events.\n *\n * @public\n */\nexport const olProperties = toObjectMap(htmlElementProperties, [\n 'start', // ol\n]);\n\n/**\n * An array of LI tag properties and events.\n *\n * @public\n */\nexport const liProperties = toObjectMap(htmlElementProperties, [\n 'value', // button, input, li, option, meter, progress, param\n]);\n\n/**\n * An array of A tag properties and events.\n *\n * @public\n */\nexport const anchorProperties = toObjectMap(htmlElementProperties, [\n 'download', // a, area\n 'href', // a, area, base, link\n 'hrefLang', // a, area, link\n 'media', // a, area, link, source, style\n 'rel', // a, area, link\n 'target', // a, area, base, form\n 'type', // a, button, input, link, menu, object, script, source, style\n]);\n\n/**\n * An array of BUTTON tag properties and events.\n *\n * @public\n */\nexport const buttonProperties = toObjectMap(htmlElementProperties, [\n 'autoFocus', // button, input, select, textarea\n 'disabled', // button, fieldset, input, optgroup, option, select, textarea\n 'form', // button, fieldset, input, label, meter, object, output, select, textarea\n 'formAction', // input, button\n 'formEncType', // input, button\n 'formMethod', // input, button\n 'formNoValidate', // input, button\n 'formTarget', // input, button\n 'type', // a, button, input, link, menu, object, script, source, style\n 'value', // button, input, li, option, meter, progress, param,\n]);\n\n/**\n * An array of INPUT tag properties and events.\n *\n * @public\n */\nexport const inputProperties = toObjectMap(buttonProperties, [\n 'accept', // input\n 'alt', // area, img, input\n 'autoCapitalize', // input, textarea\n 'autoComplete', // form, input\n 'checked', // input\n 'dirname', // input, textarea\n 'form', // button, fieldset, input, label, meter, object, output, select, textarea\n 'height', // canvas, embed, iframe, img, input, object, video\n 'inputMode', // input\n 'list', // input\n 'max', // input, meter\n 'maxLength', // input, textarea\n 'min', // input, meter\n 'minLength', // input, textarea\n 'multiple', // input, select\n 'pattern', // input\n 'placeholder', // input, textarea\n 'readOnly', // input, textarea\n 'required', // input, select, textarea\n 'src', // audio, embed, iframe, img, input, script, source, track, video\n 'step', // input\n 'size', // input\n 'type', // a, button, input, link, menu, object, script, source, style\n 'value', // button, input, li, option, meter, progress, param\n 'width', // canvas, embed, iframe, img, input, object, video\n]);\n\n/**\n * An array of TEXTAREA tag properties and events.\n *\n * @public\n */\nexport const textAreaProperties = toObjectMap(buttonProperties, [\n 'autoCapitalize', // input, textarea\n 'cols', // textarea\n 'dirname', // input, textarea\n 'form', // button, fieldset, input, label, meter, object, output, select, textarea\n 'maxLength', // input, textarea\n 'minLength', // input, textarea\n 'placeholder', // input, textarea\n 'readOnly', // input, textarea\n 'required', // input, select, textarea\n 'rows', // textarea\n 'wrap', // textarea\n]);\n\n/**\n * An array of SELECT tag properties and events.\n *\n * @public\n */\nexport const selectProperties = toObjectMap(buttonProperties, [\n 'form', // button, fieldset, input, label, meter, object, output, select, textarea\n 'multiple', // input, select\n 'required', // input, select, textarea\n]);\n\nexport const optionProperties = toObjectMap(htmlElementProperties, [\n 'selected', // option\n 'value', // button, input, li, option, meter, progress, param\n]);\n\n/**\n * An array of TABLE tag properties and events.\n *\n * @public\n */\nexport const tableProperties = toObjectMap(htmlElementProperties, [\n 'cellPadding', // table\n 'cellSpacing', // table\n]);\n\n/**\n * An array of TR tag properties and events.\n *\n * @public\n */\nexport const trProperties = htmlElementProperties;\n\n/**\n * An array of TH tag properties and events.\n *\n * @public\n */\nexport const thProperties = toObjectMap(htmlElementProperties, [\n 'rowSpan', // td, th\n 'scope', // th\n]);\n\n/**\n * An array of TD tag properties and events.\n *\n * @public\n */\nexport const tdProperties = toObjectMap(htmlElementProperties, [\n 'colSpan', // td\n 'headers', // td\n 'rowSpan', // td, th\n 'scope', // th\n]);\n\nexport const colGroupProperties = toObjectMap(htmlElementProperties, [\n 'span', // col, colgroup\n]);\n\nexport const colProperties = toObjectMap(htmlElementProperties, [\n 'span', // col, colgroup\n]);\n\n/**\n * An array of FORM tag properties and events.\n *\n * @public\n */\nexport const formProperties = toObjectMap(htmlElementProperties, [\n 'acceptCharset', // form\n 'action', // form\n 'encType', // form\n 'encType', // form\n 'method', // form\n 'noValidate', // form\n 'target', // form\n]);\n\n/**\n * An array of IFRAME tag properties and events.\n *\n * @public\n */\nexport const iframeProperties = toObjectMap(htmlElementProperties, [\n 'allow', // iframe\n 'allowFullScreen', // iframe\n 'allowPaymentRequest', // iframe\n 'allowTransparency', // iframe\n 'csp', // iframe\n 'height', // canvas, embed, iframe, img, input, object, video\n 'importance', // iframe\n 'referrerPolicy', // iframe\n 'sandbox', // iframe\n 'src', // audio, embed, iframe, img, input, script, source, track, video\n 'srcDoc', // iframe\n 'width', // canvas, embed, iframe, img, input, object, video,\n]);\n\n/**\n * An array of IMAGE tag properties and events.\n *\n * @public\n */\nexport const imgProperties = toObjectMap(htmlElementProperties, [\n 'alt', // area, img, input\n 'crossOrigin', // img\n 'height', // canvas, embed, iframe, img, input, object, video\n 'src', // audio, embed, iframe, img, input, script, source, track, video\n 'srcSet', // img, source\n 'useMap', // img, object,\n 'width', // canvas, embed, iframe, img, input, object, video\n]);\n\n/**\n * @deprecated Use imgProperties for img elements.\n */\nexport const imageProperties = imgProperties;\n\n/**\n * An array of DIV tag properties and events.\n *\n * @public\n */\nexport const divProperties = htmlElementProperties;\n\n/**\n * Gets native supported props for an html element provided the allowance set. Use one of the property\n * sets defined (divProperties, buttonPropertes, etc) to filter out supported properties from a given\n * props set. Note that all data- and aria- prefixed attributes will be allowed.\n * NOTE: getNativeProps should always be applied first when adding props to a react component. The\n * non-native props should be applied second. This will prevent getNativeProps from overriding your custom props.\n * For example, if props passed to getNativeProps has an onClick function and getNativeProps is added to\n * the component after an onClick function is added, then the getNativeProps onClick will override it.\n *\n * @public\n * @param props - The unfiltered input props\n * @param allowedPropsNames - The array or record of allowed prop names.\n * @returns The filtered props\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getNativeProps<T extends Record<string, any>>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n props: Record<string, any>,\n allowedPropNames: string[] | Record<string, number>,\n excludedPropNames?: string[],\n): T {\n // It'd be great to properly type this while allowing 'aria-` and 'data-' attributes like TypeScript does for\n // JSX attributes, but that ability is hardcoded into the TS compiler with no analog in TypeScript typings.\n // Then we'd be able to enforce props extends native props (including aria- and data- attributes), and then\n // return native props.\n // We should be able to do this once this PR is merged: https://github.com/microsoft/TypeScript/pull/26797\n\n const isArray = Array.isArray(allowedPropNames);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const result: Record<string, any> = {};\n const keys = Object.keys(props);\n\n for (const key of keys) {\n const isNativeProp =\n (!isArray && (allowedPropNames as Record<string, number>)[key]) ||\n (isArray && (allowedPropNames as string[]).indexOf(key) >= 0) ||\n key.indexOf('data-') === 0 ||\n key.indexOf('aria-') === 0;\n\n if (isNativeProp && (!excludedPropNames || excludedPropNames?.indexOf(key) === -1)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n result[key] = props![key] as any;\n }\n }\n\n return result as T;\n}\n","/**\n * Simulated enum for keycodes. These will get inlined by uglify when used much like an enum\n *\n * @public\n * {@docCategory KeyCodes}\n */\nexport const KeyCodes = {\n backspace: 8 as 8,\n tab: 9 as 9,\n enter: 13 as 13,\n shift: 16 as 16,\n ctrl: 17 as 17,\n alt: 18 as 18,\n pauseBreak: 19 as 19,\n capslock: 20 as 20,\n escape: 27 as 27,\n space: 32 as 32,\n pageUp: 33 as 33,\n pageDown: 34 as 34,\n end: 35 as 35,\n home: 36 as 36,\n left: 37 as 37,\n up: 38 as 38,\n right: 39 as 39,\n down: 40 as 40,\n insert: 45 as 45,\n del: 46 as 46,\n zero: 48 as 48,\n one: 49 as 49,\n two: 50 as 50,\n three: 51 as 51,\n four: 52 as 52,\n five: 53 as 53,\n six: 54 as 54,\n seven: 55 as 55,\n eight: 56 as 56,\n nine: 57 as 57,\n colon: 58 as 58,\n a: 65 as 65,\n b: 66 as 66,\n c: 67 as 67,\n d: 68 as 68,\n e: 69 as 69,\n f: 70 as 70,\n g: 71 as 71,\n h: 72 as 72,\n i: 73 as 73,\n j: 74 as 74,\n k: 75 as 75,\n l: 76 as 76,\n m: 77 as 77,\n n: 78 as 78,\n o: 79 as 79,\n p: 80 as 80,\n q: 81 as 81,\n r: 82 as 82,\n s: 83 as 83,\n t: 84 as 84,\n u: 85 as 85,\n v: 86 as 86,\n w: 87 as 87,\n x: 88 as 88,\n y: 89 as 89,\n z: 90 as 90,\n leftWindow: 91 as 91,\n rightWindow: 92 as 92,\n select: 93 as 93,\n /* eslint-disable @typescript-eslint/naming-convention */\n zero_numpad: 96 as 96,\n one_numpad: 97 as 97,\n two_numpad: 98 as 98,\n three_numpad: 99 as 99,\n four_numpad: 100 as 100,\n five_numpad: 101 as 101,\n six_numpad: 102 as 102,\n seven_numpad: 103 as 103,\n eight_numpad: 104 as 104,\n nine_numpad: 105 as 105,\n /* eslint-enable @typescript-eslint/naming-convention */\n multiply: 106 as 106,\n add: 107 as 107,\n subtract: 109 as 109,\n decimalPoint: 110 as 110,\n divide: 111 as 111,\n f1: 112 as 112,\n f2: 113 as 113,\n f3: 114 as 114,\n f4: 115 as 115,\n f5: 116 as 116,\n f6: 117 as 117,\n f7: 118 as 118,\n f8: 119 as 119,\n f9: 120 as 120,\n f10: 121 as 121,\n f11: 122 as 122,\n f12: 123 as 123,\n numlock: 144 as 144,\n scrollLock: 145 as 145,\n semicolon: 186 as 186,\n equalSign: 187 as 187,\n comma: 188 as 188,\n dash: 189 as 189,\n period: 190 as 190,\n forwardSlash: 191 as 191,\n graveAccent: 192 as 192,\n openBracket: 219 as 219,\n backSlash: 220 as 220,\n closeBracket: 221 as 221,\n singleQuote: 222 as 222,\n};\nexport type KeyCodes = number;\n","import { KeyCodes } from './KeyCodes';\n\nconst DirectionalKeyCodes: { [key: number]: number } = {\n [KeyCodes.up]: 1,\n [KeyCodes.down]: 1,\n [KeyCodes.left]: 1,\n [KeyCodes.right]: 1,\n [KeyCodes.home]: 1,\n [KeyCodes.end]: 1,\n [KeyCodes.tab]: 1,\n [KeyCodes.pageUp]: 1,\n [KeyCodes.pageDown]: 1,\n};\n\n/**\n * Returns true if the keycode is a directional keyboard key.\n */\nexport function isDirectionalKeyCode(which: number): boolean {\n return !!DirectionalKeyCodes[which];\n}\n\n/**\n * Adds a keycode to the list of keys that, when pressed, should cause the focus outlines to be visible.\n * This can be used to add global shortcut keys that directionally move from section to section within\n * an app or between focus trap zones.\n */\nexport function addDirectionalKeyCode(which: number): void {\n DirectionalKeyCodes[which] = 1;\n}\n\n/**\n * Removes a keycode to the list of keys that, when pressed, should cause the focus outlines to be visible.\n * This can be used to remove global shortcut keys that directionally move from section to section within\n * an app or between focus trap zones.\n */\nexport function removeDirectionalKeyCode(which: number): void {\n delete DirectionalKeyCodes[which];\n}\n","import * as React from 'react';\nimport { getWindow } from './dom/getWindow';\nexport const IsFocusVisibleClassName = 'ms-Fabric--isFocusVisible';\nexport const IsFocusHiddenClassName = 'ms-Fabric--isFocusHidden';\n\nfunction updateClassList(el: HTMLElement | null | undefined, enabled: boolean) {\n if (el) {\n el.classList.add(enabled ? IsFocusVisibleClassName : IsFocusHiddenClassName);\n el.classList.remove(enabled ? IsFocusHiddenClassName : IsFocusVisibleClassName);\n }\n}\n\n/**\n * Sets the visibility of focus styling.\n *\n * By default, focus styles (the box surrounding a focused Button, for example) only show up when navigational\n * keypresses occur (through Tab, arrows, PgUp/PgDn, Home and End), and are hidden when mouse interactions occur.\n * This API provides an imperative way to turn them on/off.\n *\n * A use case might be when you have a keypress like ctrl-f6 navigate to a particular region on the page,\n * and want focus to show up.\n *\n * @param enabled - Whether to turn focus visibility on or off.\n * @param target - Optional target from which to get window in case no `providerElem` has been specified.\n * @param registeredProviders - Array of provider refs that are associated with a FocusRectsProvider. If no array\n * is passed in, the classnames are attached to the document body that contains `target`.\n */\nexport function setFocusVisibility(\n enabled: boolean,\n target?: Element,\n registeredProviders?: React.RefObject<HTMLElement>[],\n): void {\n if (registeredProviders) {\n registeredProviders.forEach(ref => updateClassList(ref.current, enabled));\n } else {\n updateClassList(getWindow(target)?.document.body, enabled);\n }\n}\n","import * as React from 'react';\nimport { getWindow } from './dom/getWindow';\nimport { isDirectionalKeyCode } from './keyboard';\nimport { setFocusVisibility } from './setFocusVisibility';\n\n/**\n * Counter for mounted component that uses focus rectangles.\n * We want to cleanup the listeners before the last component that uses focus rectangles unmounts.\n */\nexport type ListenerCallbacks = {\n onMouseDown: (ev: MouseEvent) => void;\n onPointerDown: (ev: PointerEvent) => void;\n onKeyDown: (ev: KeyboardEvent) => void;\n onKeyUp: (ev: KeyboardEvent) => void;\n};\nlet mountCounters = new WeakMap<Window | HTMLElement, number>();\nlet callbackMap = new WeakMap<IFocusRectsContext, ListenerCallbacks>();\n\nfunction setMountCounters(key: Window | HTMLElement, delta: number): number {\n let newValue;\n const currValue = mountCounters.get(key);\n if (currValue) {\n newValue = currValue + delta;\n } else {\n newValue = 1;\n }\n\n mountCounters.set(key, newValue);\n return newValue;\n}\n\nfunction setCallbackMap(context: IFocusRectsContext): ListenerCallbacks {\n let callbacks = callbackMap.get(context);\n if (callbacks) {\n return callbacks;\n }\n\n const onMouseDown = (ev: MouseEvent) => _onMouseDown(ev, context.registeredProviders);\n const onPointerDown = (ev: PointerEvent) => _onPointerDown(ev, context.registeredProviders);\n const onKeyDown = (ev: KeyboardEvent) => _onKeyDown(ev, context.registeredProviders);\n const onKeyUp = (ev: KeyboardEvent) => _onKeyUp(ev, context.registeredProviders);\n callbacks = { onMouseDown, onPointerDown, onKeyDown, onKeyUp };\n\n callbackMap.set(context, callbacks);\n return callbacks;\n}\n\ntype AppWindow = (Window & { FabricConfig?: { disableFocusRects?: boolean } }) | undefined;\n\nexport type IFocusRectsContext = {\n /**\n * Ref to the root element of the provider\n */\n readonly providerRef: React.RefObject<HTMLElement>;\n\n /**\n * Array of this and all child provider elements under this one in the React tree.\n *\n * Tracking all child providers will allow a focus event in the parent to also set focus styling in its descendants.\n * This is needed for Combobox, for example, because the focus events happen on the parent context, but the visual\n * focus indicator is in the combobox callout. The callout needs to be notified on focus events from the parent.\n */\n readonly registeredProviders: React.RefObject<HTMLElement>[];\n\n /**\n * Used by child FocusRectsProviders to register their element with the parent provider.\n */\n readonly registerProvider: (ref: React.RefObject<HTMLElement>) => void;\n\n /**\n * Used by child FocusRectsProviders to unregister their element from the parent provider.\n */\n readonly unregisterProvider: (ref: React.RefObject<HTMLElement>) => void;\n};\n\nexport const FocusRectsContext = React.createContext<IFocusRectsContext | undefined>(undefined);\n\n/**\n * Initializes the logic which:\n *\n * 1. Subscribes keydown, keyup, mousedown and pointerdown events. (It will only do it once for the current element of\n * the FocusRectsContext providerRef or once per window if no such element is provided via context, so it's safe to\n * call this method multiple times.)\n * 2. When the user presses triggers a keydown or keyup event via directional keyboard keys, adds the\n * 'ms-Fabric--isFocusVisible' classname to the current element of the FocusRectsContext providerRef or the document\n * body if no such element is provided via context, and removes the 'ms-Fabric-isFocusHidden' classname.\n * 3. When the user triggers a mousedown or pointerdown event, adds the 'ms-Fabric-isFocusHidden' classname to the\n * current element of the FocusRectsContext providerRef or the document body if no such element is provided via\n * context, and removes the 'ms-Fabric--isFocusVisible' classname.\n *\n * This logic allows components on the page to conditionally render focus treatments based on\n * the existence of global classnames, which simplifies logic overall.\n *\n * @param rootRef - A Ref object. Focus rectangle can be applied on itself and all its children.\n */\nexport function useFocusRects(rootRef?: React.RefObject<HTMLElement>): void {\n const context = React.useContext(FocusRectsContext);\n\n React.useEffect(() => {\n const win = getWindow(rootRef?.current) as AppWindow;\n\n if (!win || win.FabricConfig?.disableFocusRects === true) {\n return undefined;\n }\n\n let el: Window | HTMLElement = win;\n let onMouseDown: (ev: MouseEvent) => void;\n let onPointerDown: (ev: PointerEvent) => void;\n let onKeyDown: (ev: KeyboardEvent) => void;\n let onKeyUp: (ev: KeyboardEvent) => void;\n if (context?.providerRef?.current) {\n el = context.providerRef.current;\n const callbacks = setCallbackMap(context);\n onMouseDown = callbacks.onMouseDown;\n onPointerDown = callbacks.onPointerDown;\n onKeyDown = callbacks.onKeyDown;\n onKeyUp = callbacks.onKeyUp;\n } else {\n onMouseDown = _onMouseDown;\n onPointerDown = _onPointerDown;\n onKeyDown = _onKeyDown;\n onKeyUp = _onKeyUp;\n }\n\n let count = setMountCounters(el, 1);\n if (count <= 1) {\n el.addEventListener('mousedown', onMouseDown, true);\n el.addEventListener('pointerdown', onPointerDown, true);\n el.addEventListener('keydown', onKeyDown, true);\n el.addEventListener('keyup', onKeyUp, true);\n }\n\n return () => {\n if (!win || win.FabricConfig?.disableFocusRects === true) {\n return;\n }\n count = setMountCounters(el, -1);\n if (count === 0) {\n el.removeEventListener('mousedown', onMouseDown, true);\n el.removeEventListener('pointerdown', onPointerDown, true);\n el.removeEventListener('keydown', onKeyDown, true);\n el.removeEventListener('keyup', onKeyUp, true);\n }\n };\n }, [context, rootRef]);\n}\n\n/**\n * Function Component wrapper which enables calling `useFocusRects` hook.\n * Renders nothing.\n */\nexport const FocusRects: React.FunctionComponent<{ rootRef?: React.RefObject<HTMLElement> }> = props => {\n useFocusRects(props.rootRef);\n return null;\n};\n\nfunction _onMouseDown(ev: MouseEvent, registeredProviders?: React.RefObject<HTMLElement>[]): void {\n setFocusVisibility(false, ev.target as Element, registeredProviders);\n}\n\nfunction _onPointerDown(ev: PointerEvent, registeredProviders?: React.RefObject<HTMLElement>[]): void {\n if (ev.pointerType !== 'mouse') {\n setFocusVisibility(false, ev.target as Element, registeredProviders);\n }\n}\n\n// You need both a keydown and a keyup listener that sets focus visibility to true to handle two distinct scenarios when\n// attaching the listeners and classnames to the provider instead of the document body.\n// If you only have a keydown listener, then the focus rectangles will not show when moving from outside of the provider\n// to inside it. That is why a keyup listener is needed, since it will always trigger after the focus event is fired.\n// If you only have a keyup listener, then the focus rectangles will not show moving between different tabbable elements\n// if the tab key is pressed without being released. That's is why we need a keydown listener, since it will trigger for\n// every element that is being tabbed into.\n// This works because `classList.add` is smart and will not duplicate a classname that already exists on the classList\n// when focus visibility is turned on.\nfunction _onKeyDown(ev: KeyboardEvent, registeredProviders?: React.RefObject<HTMLElement>[]): void {\n // eslint-disable-next-line deprecation/deprecation\n if (isDirectionalKeyCode(ev.which)) {\n setFocusVisibility(true, ev.target as Element, registeredProviders);\n }\n}\n\nfunction _onKeyUp(ev: KeyboardEvent, registeredProviders?: React.RefObject<HTMLElement>[]): void {\n // eslint-disable-next-line deprecation/deprecation\n if (isDirectionalKeyCode(ev.which)) {\n setFocusVisibility(true, ev.target as Element, registeredProviders);\n }\n}\n","import * as React from 'react';\nimport { divProperties, getNativeProps } from '../../Utilities';\nimport { classNamesFunction } from '../../Utilities';\nimport type { ILabelProps, ILabelStyleProps, ILabelStyles } from './Label.types';\n\nconst getClassNames = classNamesFunction<ILabelStyleProps, ILabelStyles>({\n // Label is used a lot by other components.\n // It's likely to see expected cases which pass different className to the Label.\n // Therefore setting a larger cache size.\n cacheSize: 100,\n});\n\nexport class LabelBase extends React.Component<ILabelProps, {}> {\n public render(): JSX.Element {\n const { as: RootType = 'label', children, className, disabled, styles, required, theme } = this.props;\n const classNames = getClassNames(styles, {\n className,\n disabled,\n required,\n theme: theme!,\n });\n return (\n <RootType {...getNativeProps(this.props, divProperties)} className={classNames.root}>\n {children}\n </RootType>\n );\n }\n}\n","import type { IFontWeight } from '@fluentui/merge-styles';\n\n// Font face names to be registered.\nexport namespace LocalizedFontNames {\n export const Arabic = 'Segoe UI Web (Arabic)';\n export const Cyrillic = 'Segoe UI Web (Cyrillic)';\n export const EastEuropean = 'Segoe UI Web (East European)';\n export const Greek = 'Segoe UI Web (Greek)';\n export const Hebrew = 'Segoe UI Web (Hebrew)';\n export const Thai = 'Leelawadee UI Web';\n export const Vietnamese = 'Segoe UI Web (Vietnamese)';\n export const WestEuropean = 'Segoe UI Web (West European)';\n export const Selawik = 'Selawik Web';\n export const Armenian = 'Segoe UI Web (Armenian)';\n export const Georgian = 'Segoe UI Web (Georgian)';\n}\n\n// Font families with fallbacks, for the general regions.\nexport namespace LocalizedFontFamilies {\n export const Arabic = `'${LocalizedFontNames.Arabic}'`;\n export const ChineseSimplified = `'Microsoft Yahei UI', Verdana, Simsun`;\n export const ChineseTraditional = `'Microsoft Jhenghei UI', Pmingliu`;\n export const Cyrillic = `'${LocalizedFontNames.Cyrillic}'`;\n export const EastEuropean = `'${LocalizedFontNames.EastEuropean}'`;\n export const Greek = `'${LocalizedFontNames.Greek}'`;\n export const Hebrew = `'${LocalizedFontNames.Hebrew}'`;\n export const Hindi = `'Nirmala UI'`;\n export const Japanese = `'Yu Gothic UI', 'Meiryo UI', Meiryo, 'MS Pgothic', Osaka`;\n export const Korean = `'Malgun Gothic', Gulim`;\n export const Selawik = `'${LocalizedFontNames.Selawik}'`;\n export const Thai = `'Leelawadee UI Web', 'Kmer UI'`;\n export const Vietnamese = `'${LocalizedFontNames.Vietnamese}'`;\n export const WestEuropean = `'${LocalizedFontNames.WestEuropean}'`;\n export const Armenian = `'${LocalizedFontNames.Armenian}'`;\n export const Georgian = `'${LocalizedFontNames.Georgian}'`;\n}\n\n// Standard font sizes.\nexport namespace FontSizes {\n export const size10 = '10px';\n export const size12 = '12px';\n export const size14 = '14px';\n export const size16 = '16px';\n export const size18 = '18px';\n export const size20 = '20px';\n export const size24 = '24px';\n export const size28 = '28px';\n export const size32 = '32px';\n export const size42 = '42px';\n export const size68 = '68px';\n\n export const mini: string = '10px';\n export const xSmall: string = '10px';\n export const small: string = '12px';\n export const smallPlus: string = '12px';\n export const medium: string = '14px';\n export const mediumPlus: string = '16px';\n export const icon: string = '16px';\n export const large: string = '18px';\n export const xLarge: string = '20px';\n export const xLargePlus: string = '24px';\n export const xxLarge: string = '28px';\n export const xxLargePlus: string = '32px';\n export const superLarge: string = '42px';\n export const mega: string = '68px';\n}\n\n// Standard font weights.\nexport namespace FontWeights {\n export const light: IFontWeight = 100;\n export const semilight: IFontWeight = 300;\n export const regular: IFontWeight = 400;\n export const semibold: IFontWeight = 600;\n export const bold: IFontWeight = 700;\n}\n\n// Standard Icon Sizes.\nexport namespace IconFontSizes {\n export const xSmall: string = '10px';\n export const small: string = '12px';\n export const medium: string = '16px';\n export const large: string = '20px';\n}\n","import type { IRawStyle } from '../MergeStyles';\n\nexport const HighContrastSelector = '@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)';\nexport const HighContrastSelectorWhite =\n // eslint-disable-next-line @fluentui/max-len\n '@media screen and (-ms-high-contrast: black-on-white), screen and (forced-colors: active) and (prefers-color-scheme: light)';\nexport const HighContrastSelectorBlack =\n // eslint-disable-next-line @fluentui/max-len\n '@media screen and (-ms-high-contrast: white-on-black), screen and (forced-colors: active) and (prefers-color-scheme: dark)';\n/**\n * @deprecated Use `HighContrastSelector`\n */\nexport const EdgeChromiumHighContrastSelector =\n '@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)';\n\nexport const ScreenWidthMinSmall = 320;\nexport const ScreenWidthMinMedium = 480;\nexport const ScreenWidthMinLarge = 640;\nexport const ScreenWidthMinXLarge = 1024;\nexport const ScreenWidthMinXXLarge = 1366;\nexport const ScreenWidthMinXXXLarge = 1920;\nexport const ScreenWidthMaxSmall = ScreenWidthMinMedium - 1;\nexport const ScreenWidthMaxMedium = ScreenWidthMinLarge - 1;\nexport const ScreenWidthMaxLarge = ScreenWidthMinXLarge - 1;\nexport const ScreenWidthMaxXLarge = ScreenWidthMinXXLarge - 1;\nexport const ScreenWidthMaxXXLarge = ScreenWidthMinXXXLarge - 1;\n\nexport const ScreenWidthMinUhfMobile = 768;\n\nexport function getScreenSelector(min: number | undefined, max: number | undefined): string {\n const minSelector = typeof min === 'number' ? ` and (min-width: ${min}px)` : '';\n const maxSelector = typeof max === 'number' ? ` and (max-width: ${max}px)` : '';\n return `@media only screen${minSelector}${maxSelector}`;\n}\n\n/**\n * The style which turns off high contrast adjustment in browsers.\n */\nexport function getHighContrastNoAdjustStyle(): IRawStyle {\n return {\n forcedColorAdjust: 'none',\n MsHighContrastAdjust: 'none',\n };\n}\n\n/**\n * The style which turns off high contrast adjustment in (only) Edge Chromium browser.\n * @deprecated Use `getHighContrastNoAdjustStyle`\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function getEdgeChromiumNoHighContrastAdjustSelector(): { [EdgeChromiumHighContrastSelector]: IRawStyle } {\n return {\n // eslint-disable-next-line deprecation/deprecation\n [EdgeChromiumHighContrastSelector]: {\n forcedColorAdjust: 'none',\n MsHighContrastAdjust: 'none',\n },\n };\n}\n","import * as React from 'react';\nimport { getWindow } from './dom/getWindow';\nexport const IsFocusVisibleClassName = 'ms-Fabric--isFocusVisible';\nexport const IsFocusHiddenClassName = 'ms-Fabric--isFocusHidden';\n\nfunction updateClassList(el: HTMLElement | null | undefined, enabled: boolean) {\n if (el) {\n el.classList.add(enabled ? IsFocusVisibleClassName : IsFocusHiddenClassName);\n el.classList.remove(enabled ? IsFocusHiddenClassName : IsFocusVisibleClassName);\n }\n}\n\n/**\n * Sets the visibility of focus styling.\n *\n * By default, focus styles (the box surrounding a focused Button, for example) only show up when navigational\n * keypresses occur (through Tab, arrows, PgUp/PgDn, Home and End), and are hidden when mouse interactions occur.\n * This API provides an imperative way to turn them on/off.\n *\n * A use case might be when you have a keypress like ctrl-f6 navigate to a particular region on the page,\n * and want focus to show up.\n *\n * @param enabled - Whether to turn focus visibility on or off.\n * @param target - Optional target from which to get window in case no `providerElem` has been specified.\n * @param registeredProviders - Array of provider refs that are associated with a FocusRectsProvider. If no array\n * is passed in, the classnames are attached to the document body that contains `target`.\n */\nexport function setFocusVisibility(\n enabled: boolean,\n target?: Element,\n registeredProviders?: React.RefObject<HTMLElement>[],\n): void {\n if (registeredProviders) {\n registeredProviders.forEach(ref => updateClassList(ref.current, enabled));\n } else {\n updateClassList(getWindow(target)?.document.body, enabled);\n }\n}\n","export namespace ZIndexes {\n export const Nav: number = 1;\n /**\n * @deprecated Do not use\n */\n export const ScrollablePane: number = 1;\n export const FocusStyle: number = 1;\n export const Coachmark: number = 1000;\n export const Layer: number = 1000000;\n export const KeytipLayer: number = 1000001;\n}\n","import { HighContrastSelector } from './CommonStyles';\nimport { IsFocusVisibleClassName } from '@fluentui/utilities';\nimport { ZIndexes } from './zIndexes';\nimport type { IRawStyle } from '@fluentui/merge-styles';\nimport type { IGetFocusStylesOptions, ITheme } from '../interfaces/index';\n\n/**\n * Generates a focus style which can be used to define an :after focus border.\n *\n * @param theme - The theme object to use.\n * @param options - Options to customize the focus border.\n * @returns The style object.\n */\nexport function getFocusStyle(theme: ITheme, options?: IGetFocusStylesOptions): IRawStyle;\n/**\n * Generates a focus style which can be used to define an :after focus border.\n *\n * @param theme - The theme object to use.\n * @param inset - The number of pixels to inset the border.\n * @param position - The positioning applied to the container. Must\n * be 'relative' or 'absolute' so that the focus border can live around it.\n * @param highContrastStyle - Style for high contrast mode.\n * @param borderColor - Color of the border.\n * @param outlineColor - Color of the outline.\n * @param isFocusedOnly - If the styles should apply on focus or not.\n * @param borderRadius - If the style should include a rounded border.\n * @returns The style object.\n * @deprecated Use the object parameter version instead.\n */\nexport function getFocusStyle(\n theme: ITheme,\n inset?: number,\n position?: 'relative' | 'absolute',\n highContrastStyle?: IRawStyle | undefined,\n borderColor?: string,\n outlineColor?: string,\n isFocusedOnly?: boolean,\n borderRadius?: string | number | undefined,\n): IRawStyle;\nexport function getFocusStyle(\n theme: ITheme,\n insetOrOptions?: number | IGetFocusStylesOptions,\n position?: 'relative' | 'absolute',\n highContrastStyle?: IRawStyle,\n borderColor?: string,\n outlineColor?: string,\n isFocusedOnly?: boolean,\n borderRadius?: string | number | undefined,\n): IRawStyle {\n if (typeof insetOrOptions === 'number' || !insetOrOptions) {\n return _getFocusStyleInternal(theme, {\n inset: insetOrOptions,\n position,\n highContrastStyle,\n borderColor,\n outlineColor,\n isFocusedOnly,\n borderRadius,\n });\n } else {\n return _getFocusStyleInternal(theme, insetOrOptions);\n }\n}\n\nfunction _getFocusStyleInternal(theme: ITheme, options: IGetFocusStylesOptions = {}): IRawStyle {\n const {\n borderRadius,\n inset = 0,\n width = 1,\n position = 'relative',\n highContrastStyle,\n borderColor = theme.palette.white,\n outlineColor = theme.palette.neutralSecondary,\n isFocusedOnly = true,\n } = options;\n\n return {\n // Clear browser-specific focus styles and use 'transparent' as placeholder for focus style.\n outline: 'transparent',\n // Requirement because pseudo-element is absolutely positioned.\n position,\n\n selectors: {\n // Clear the focus border in Firefox.\n // Reference: http://stackoverflow.com/a/199319/1436671\n '::-moz-focus-inner': {\n border: '0',\n },\n\n // When the element that uses this mixin is in a :focus state, add a pseudo-element to\n // create a border.\n [`.${IsFocusVisibleClassName} &${isFocusedOnly ? ':focus' : ''}:after`]: {\n content: '\"\"',\n position: 'absolute',\n left: inset + 1,\n top: inset + 1,\n bottom: inset + 1,\n right: inset + 1,\n border: `${width}px solid ${borderColor}`,\n outline: `${width}px solid ${outlineColor}`,\n zIndex: ZIndexes.FocusStyle,\n borderRadius: borderRadius,\n selectors: {\n [HighContrastSelector]: highContrastStyle,\n },\n },\n },\n };\n}\n\n/**\n * Generates style to clear browser specific focus styles.\n */\nexport function focusClear(): IRawStyle {\n return {\n selectors: {\n '&::-moz-focus-inner': {\n // Clear the focus border in Firefox. Reference: http://stackoverflow.com/a/199319/1436671\n border: 0,\n },\n '&': {\n // Clear browser specific focus styles and use transparent as placeholder for focus style\n outline: 'transparent',\n },\n },\n };\n}\n\n/**\n * Generates a style which can be used to set a border on focus.\n *\n * @param theme - The theme object to use.\n * @param inset - The number of pixels to inset the border (default 0)\n * @param width - The border width in pixels (default 1)\n * @param color - Color of the outline (default `theme.palette.neutralSecondary`)\n * @returns The style object.\n */\nexport function getFocusOutlineStyle(theme: ITheme, inset: number = 0, width: number = 1, color?: string): IRawStyle {\n return {\n selectors: {\n [`:global(${IsFocusVisibleClassName}) &:focus`]: {\n outline: `${width} solid ${color || theme.palette.neutralSecondary}`,\n outlineOffset: `${-inset}px`,\n },\n },\n };\n}\n\n/**\n * Generates text input border styles on focus.\n *\n * @param borderColor - Color of the border.\n * @param borderRadius - Radius of the border.\n * @param borderType - Type of the border.\n * @param borderPosition - Position of the border relative to the input element (default to -1\n * as it's the most common border width of the input element)\n * @returns The style object.\n */\nexport const getInputFocusStyle = (\n borderColor: string,\n borderRadius: string | number,\n borderType: 'border' | 'borderBottom' = 'border',\n borderPosition: number = -1,\n): IRawStyle => {\n const isBorderBottom = borderType === 'borderBottom';\n\n return {\n borderColor,\n selectors: {\n ':after': {\n pointerEvents: 'none',\n content: \"''\",\n position: 'absolute',\n left: isBorderBottom ? 0 : borderPosition,\n top: borderPosition,\n bottom: borderPosition,\n right: isBorderBottom ? 0 : borderPosition,\n [borderType]: `2px solid ${borderColor}`,\n borderRadius,\n width: borderType === 'borderBottom' ? '100%' : undefined,\n selectors: {\n [HighContrastSelector]: {\n [borderType === 'border' ? 'borderColor' : 'borderBottomColor']: 'Highlight',\n },\n },\n },\n },\n };\n};\n","// A packages cache that makes sure that we don't inject the same packageName twice in the same bundle -\n// this cache is local to the module closure inside this bundle\nconst packagesCache: { [name: string]: string } = {};\n\n// Cache access to window to avoid IE11 memory leak.\nlet _win: Window | undefined = undefined;\n\ntry {\n _win = window;\n} catch (e) {\n /* no-op */\n}\n\nexport function setVersion(packageName: string, packageVersion: string): void {\n if (typeof _win !== 'undefined') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const packages = ((_win as any).__packages__ = (_win as any).__packages__ || {});\n\n // We allow either the global packages or local packages caches to invalidate so testing can\n // just clear the global to set this state\n if (!packages[packageName] || !packagesCache[packageName]) {\n packagesCache[packageName] = packageVersion;\n const versions = (packages[packageName] = packages[packageName] || []);\n versions.push(packageVersion);\n }\n }\n}\n","/**\n * Verifies if an application can use DOM.\n */\nexport function canUseDOM(): boolean {\n return (\n typeof window !== 'undefined' &&\n !!(\n window.document &&\n // eslint-disable-next-line deprecation/deprecation\n window.document.createElement\n )\n );\n}\n","import { setVersion } from './setVersion';\nexport { setVersion };\n\nsetVersion('@fluentui/set-version', '6.0.0');\n","// Do not modify this file; it is generated as part of publish.\n// The checked in version is a placeholder only and will not be updated.\nimport { setVersion } from '@fluentui/set-version';\nsetVersion('@fluentui/style-utilities', '8.8.0');","import { canUseDOM } from './canUseDOM';\n\nlet _window: Window | undefined = undefined;\n\n// Note: Accessing \"window\" in IE11 is somewhat expensive, and calling \"typeof window\"\n// hits a memory leak, whereas aliasing it and calling \"typeof _window\" does not.\n// Caching the window value at the file scope lets us minimize the impact.\ntry {\n _window = window;\n} catch (e) {\n /* no-op */\n}\n\n/**\n * Helper to get the window object. The helper will make sure to use a cached variable\n * of \"window\", to avoid overhead and memory leaks in IE11. Note that in popup scenarios the\n * window object won't match the \"global\" window object, and for these scenarios, you should\n * pass in an element hosted within the popup.\n *\n * @public\n */\nexport function getWindow(rootElement?: Element | null): Window | undefined {\n if (!canUseDOM() || typeof _window === 'undefined') {\n return undefined;\n } else {\n const el = rootElement as Element;\n\n return el && el.ownerDocument && el.ownerDocument.defaultView ? el.ownerDocument.defaultView : _window;\n }\n}\n","import { getWindow } from './dom/getWindow';\n\n/**\n * Storing global state in local module variables has issues when more than one copy\n * if the module gets loaded on the page (due to a bundling error or simply by consuming\n * a prebundled script.)\n *\n * This file contains helpers to deal with the getting and setting local state, and allows\n * callers to get called back when it mutates.\n */\n\nconst GLOBAL_SETTINGS_PROP_NAME = '__globalSettings__';\nconst CALLBACK_STATE_PROP_NAME = '__callbacks__';\n\nlet _counter = 0;\n\n/**\n * Change description used for change callbacks in GlobalSettings.\n *\n * @public\n * {@docCategory IChangeDescription}\n */\nexport interface IChangeDescription {\n key: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n oldValue: any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value: any;\n}\n\n/**\n * Change event callback.\n *\n * @public\n * {@docCategory IChangeEventCallback}\n */\nexport interface IChangeEventCallback {\n __id__?: string;\n (changeDescription?: IChangeDescription): void;\n}\n\n/**\n * Global settings helper, which stores settings in the global (window) namespace.\n * If window is not provided, it will store settings in module scope. Provides a\n * way to observe changes as well when their values change.\n *\n * @public\n * {@docCategory GlobalSettings}\n */\nexport class GlobalSettings {\n public static getValue<T>(key: string, defaultValue?: T | (() => T)): T {\n const globalSettings = _getGlobalSettings();\n\n if (globalSettings[key] === undefined) {\n globalSettings[key] = typeof defaultValue === 'function' ? (defaultValue as Function)() : defaultValue;\n }\n\n return globalSettings[key];\n }\n\n public static setValue<T>(key: string, value: T): T {\n const globalSettings = _getGlobalSettings();\n const callbacks = globalSettings[CALLBACK_STATE_PROP_NAME];\n let oldValue = globalSettings[key];\n\n if (value !== oldValue) {\n globalSettings[key] = value;\n\n let changeDescription = {\n oldValue,\n value,\n key,\n };\n\n for (let id in callbacks) {\n if (callbacks.hasOwnProperty(id)) {\n callbacks[id](changeDescription);\n }\n }\n }\n\n return value;\n }\n\n public static addChangeListener(cb: IChangeEventCallback): void {\n // Note: we use generated ids on the callbacks to create a map of the callbacks, which optimizes removal.\n // (It's faster to delete a key than it is to look up the index of an object and splice an array.)\n let id = cb.__id__;\n const callbacks = _getCallbacks();\n\n if (!id) {\n id = cb.__id__ = String(_counter++);\n }\n\n callbacks[id] = cb;\n }\n\n public static removeChangeListener(cb: IChangeEventCallback): void {\n const callbacks = _getCallbacks();\n delete callbacks[cb.__id__ as string];\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _getGlobalSettings(): { [key: string]: any } {\n const win = getWindow();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const globalObj: { [key: string]: any } = win || {};\n\n if (!globalObj[GLOBAL_SETTINGS_PROP_NAME]) {\n globalObj[GLOBAL_SETTINGS_PROP_NAME] = {\n [CALLBACK_STATE_PROP_NAME]: {},\n };\n }\n\n return globalObj[GLOBAL_SETTINGS_PROP_NAME];\n}\n\nfunction _getCallbacks(): { [key: string]: () => void } {\n const globalSettings = _getGlobalSettings();\n return globalSettings[CALLBACK_STATE_PROP_NAME];\n}\n","import { GlobalSettings } from '../GlobalSettings';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type ISettings = { [key: string]: any };\nexport type ISettingsFunction = (settings: ISettings) => ISettings;\n\n/**\n * @deprecated Use ISettings.\n */\nexport type Settings = ISettings;\n\n/**\n * @deprecated Use ISettingsFunction.\n */\nexport type SettingsFunction = ISettingsFunction;\n\nexport interface ICustomizations {\n settings: ISettings;\n scopedSettings: { [key: string]: ISettings };\n inCustomizerContext?: boolean;\n}\n\nconst CustomizationsGlobalKey = 'customizations';\nconst NO_CUSTOMIZATIONS = { settings: {}, scopedSettings: {}, inCustomizerContext: false };\n\nlet _allSettings = GlobalSettings.getValue<ICustomizations>(CustomizationsGlobalKey, {\n settings: {},\n scopedSettings: {},\n inCustomizerContext: false,\n});\n\nlet _events: (() => void)[] = [];\n\nexport class Customizations {\n private static _suppressUpdates: boolean;\n\n public static reset(): void {\n _allSettings.settings = {};\n _allSettings.scopedSettings = {};\n }\n\n /** Apply global Customization settings.\n * @example Customizations.applySettings(\\{ theme: \\{...\\} \\});\n */\n public static applySettings(settings: ISettings): void {\n _allSettings.settings = { ..._allSettings.settings, ...settings };\n Customizations._raiseChange();\n }\n\n /** Apply Customizations to a particular named scope, like a component.\n * @example Customizations.applyScopedSettings('Nav', \\{ styles: () =\\> \\{\\} \\});\n */\n public static applyScopedSettings(scopeName: string, settings: ISettings): void {\n _allSettings.scopedSettings[scopeName] = { ..._allSettings.scopedSettings[scopeName], ...settings };\n Customizations._raiseChange();\n }\n\n public static getSettings(\n properties: string[],\n scopeName?: string,\n localSettings: ICustomizations = NO_CUSTOMIZATIONS,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): any {\n const settings: ISettings = {};\n const localScopedSettings = (scopeName && localSettings.scopedSettings[scopeName]) || {};\n const globalScopedSettings = (scopeName && _allSettings.scopedSettings[scopeName]) || {};\n\n for (let property of properties) {\n settings[property] =\n localScopedSettings[property] ||\n localSettings.settings[property] ||\n globalScopedSettings[property] ||\n _allSettings.settings[property];\n }\n\n return settings;\n }\n\n /** Used to run some code that sets Customizations without triggering an update until the end.\n * Useful for applying Customizations that don't affect anything currently rendered, or for\n * applying many customizations at once.\n * @param suppressUpdate - Do not raise the change event at the end, preventing all updates\n */\n public static applyBatchedUpdates(code: () => void, suppressUpdate?: boolean): void {\n Customizations._suppressUpdates = true;\n try {\n code();\n } catch {\n /* do nothing */\n }\n Customizations._suppressUpdates = false;\n if (!suppressUpdate) {\n Customizations._raiseChange();\n }\n }\n\n public static observe(onChange: () => void): void {\n _events.push(onChange);\n }\n\n public static unobserve(onChange: () => void): void {\n _events = _events.filter((cb: () => void) => cb !== onChange);\n }\n\n private static _raiseChange(): void {\n if (!Customizations._suppressUpdates) {\n _events.forEach((cb: () => void) => cb());\n }\n }\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\n/**\n * An IThemingInstruction can specify a rawString to be preserved or a theme slot and a default value\n * to use if that slot is not specified by the theme.\n */\n\n/* eslint-disable @typescript-eslint/no-use-before-define */\n\n// Declaring a global here in case that the execution environment is Node.js (without importing the\n// entire node.js d.ts for now)\ndeclare let global: any; // eslint-disable-line @typescript-eslint/no-explicit-any\n\nexport interface IThemingInstruction {\n theme?: string;\n defaultValue?: string;\n rawString?: string;\n}\n\nexport type ThemableArray = IThemingInstruction[];\n\nexport interface ITheme {\n [key: string]: string;\n}\n\ninterface IStyleSheet {\n cssText: string;\n}\n\ninterface IExtendedHtmlStyleElement extends HTMLStyleElement {\n styleSheet: IStyleSheet;\n}\n\n/**\n * Performance Measurement of loading styles\n */\ninterface IMeasurement {\n /**\n * Count of style element injected, which is the slow operation in IE\n */\n count: number;\n /**\n * Total duration of all loadStyles exections\n */\n duration: number;\n}\n\ninterface IRunState {\n mode: Mode;\n buffer: ThemableArray[];\n flushTimer: number;\n}\n\ninterface IThemeState {\n theme: ITheme | undefined;\n lastStyleElement: IExtendedHtmlStyleElement;\n registeredStyles: IStyleRecord[]; // records of already registered non-themable styles\n registeredThemableStyles: IStyleRecord[]; // records of already registered themable styles\n loadStyles: ((processedStyles: string, rawStyles?: string | ThemableArray) => void) | undefined;\n perf: IMeasurement;\n runState: IRunState;\n}\n\ninterface IStyleRecord {\n styleElement: Element;\n themableStyle: ThemableArray;\n}\n\ninterface ICustomEvent<T> extends Event {\n args?: T;\n}\n\n/**\n * object returned from resolveThemableArray function\n */\ninterface IThemableArrayResolveResult {\n /** this string is the processed styles in string */\n styleString: string;\n\n /** this boolean indicates if this style array is themable */\n themable: boolean;\n}\n\n/**\n * In sync mode, styles are registered as style elements synchronously with loadStyles() call.\n * In async mode, styles are buffered and registered as batch in async timer for performance purpose.\n */\nexport const enum Mode {\n sync,\n async\n}\n\n/**\n * Themable styles and non-themable styles are tracked separately\n * Specify ClearStyleOptions when calling clearStyles API to specify which group of registered styles should be cleared.\n */\nexport const enum ClearStyleOptions {\n /** only themable styles will be cleared */\n onlyThemable = 1,\n /** only non-themable styles will be cleared */\n onlyNonThemable = 2,\n /** both themable and non-themable styles will be cleared */\n all = 3\n}\n\n// Store the theming state in __themeState__ global scope for reuse in the case of duplicate\n// load-themed-styles hosted on the page.\nconst _root: any = typeof window === 'undefined' ? global : window; // eslint-disable-line @typescript-eslint/no-explicit-any\n\n// Nonce string to inject into script tag if one provided. This is used in CSP (Content Security Policy).\nconst _styleNonce: string = _root && _root.CSPSettings && _root.CSPSettings.nonce;\n\nconst _themeState: IThemeState = initializeThemeState();\n\n/**\n * Matches theming tokens. For example, \"[theme: themeSlotName, default: #FFF]\" (including the quotes).\n */\nconst _themeTokenRegex: RegExp =\n /[\\'\\\"]\\[theme:\\s*(\\w+)\\s*(?:\\,\\s*default:\\s*([\\\\\"\\']?[\\.\\,\\(\\)\\#\\-\\s\\w]*[\\.\\,\\(\\)\\#\\-\\w][\\\"\\']?))?\\s*\\][\\'\\\"]/g;\n\nconst now: () => number = () =>\n typeof performance !== 'undefined' && !!performance.now ? performance.now() : Date.now();\n\nfunction measure(func: () => void): void {\n const start: number = now();\n func();\n const end: number = now();\n _themeState.perf.duration += end - start;\n}\n\n/**\n * initialize global state object\n */\nfunction initializeThemeState(): IThemeState {\n let state: IThemeState = _root.__themeState__ || {\n theme: undefined,\n lastStyleElement: undefined,\n registeredStyles: []\n };\n\n if (!state.runState) {\n state = {\n ...state,\n perf: {\n count: 0,\n duration: 0\n },\n runState: {\n flushTimer: 0,\n mode: Mode.sync,\n buffer: []\n }\n };\n }\n if (!state.registeredThemableStyles) {\n state = {\n ...state,\n registeredThemableStyles: []\n };\n }\n _root.__themeState__ = state;\n return state;\n}\n\n/**\n * Loads a set of style text. If it is registered too early, we will register it when the window.load\n * event is fired.\n * @param {string | ThemableArray} styles Themable style text to register.\n * @param {boolean} loadAsync When true, always load styles in async mode, irrespective of current sync mode.\n */\nexport function loadStyles(styles: string | ThemableArray, loadAsync: boolean = false): void {\n measure(() => {\n const styleParts: ThemableArray = Array.isArray(styles) ? styles : splitStyles(styles);\n const { mode, buffer, flushTimer } = _themeState.runState;\n if (loadAsync || mode === Mode.async) {\n buffer.push(styleParts);\n if (!flushTimer) {\n _themeState.runState.flushTimer = asyncLoadStyles();\n }\n } else {\n applyThemableStyles(styleParts);\n }\n });\n}\n\n/**\n * Allows for customizable loadStyles logic. e.g. for server side rendering application\n * @param {(processedStyles: string, rawStyles?: string | ThemableArray) => void}\n * a loadStyles callback that gets called when styles are loaded or reloaded\n */\nexport function configureLoadStyles(\n loadStylesFn: ((processedStyles: string, rawStyles?: string | ThemableArray) => void) | undefined\n): void {\n _themeState.loadStyles = loadStylesFn;\n}\n\n/**\n * Configure run mode of load-themable-styles\n * @param mode load-themable-styles run mode, async or sync\n */\nexport function configureRunMode(mode: Mode): void {\n _themeState.runState.mode = mode;\n}\n\n/**\n * external code can call flush to synchronously force processing of currently buffered styles\n */\nexport function flush(): void {\n measure(() => {\n const styleArrays: ThemableArray[] = _themeState.runState.buffer.slice();\n _themeState.runState.buffer = [];\n const mergedStyleArray: ThemableArray = ([] as ThemableArray).concat.apply([], styleArrays);\n if (mergedStyleArray.length > 0) {\n applyThemableStyles(mergedStyleArray);\n }\n });\n}\n\n/**\n * register async loadStyles\n */\nfunction asyncLoadStyles(): number {\n return setTimeout(() => {\n _themeState.runState.flushTimer = 0;\n flush();\n }, 0);\n}\n\n/**\n * Loads a set of style text. If it is registered too early, we will register it when the window.load event\n * is fired.\n * @param {string} styleText Style to register.\n * @param {IStyleRecord} styleRecord Existing style record to re-apply.\n */\nfunction applyThemableStyles(stylesArray: ThemableArray, styleRecord?: IStyleRecord): void {\n if (_themeState.loadStyles) {\n _themeState.loadStyles(resolveThemableArray(stylesArray).styleString, stylesArray);\n } else {\n registerStyles(stylesArray);\n }\n}\n\n/**\n * Registers a set theme tokens to find and replace. If styles were already registered, they will be\n * replaced.\n * @param {theme} theme JSON object of theme tokens to values.\n */\nexport function loadTheme(theme: ITheme | undefined): void {\n _themeState.theme = theme;\n\n // reload styles.\n reloadStyles();\n}\n\n/**\n * Clear already registered style elements and style records in theme_State object\n * @param option - specify which group of registered styles should be cleared.\n * Default to be both themable and non-themable styles will be cleared\n */\nexport function clearStyles(option: ClearStyleOptions = ClearStyleOptions.all): void {\n if (option === ClearStyleOptions.all || option === ClearStyleOptions.onlyNonThemable) {\n clearStylesInternal(_themeState.registeredStyles);\n _themeState.registeredStyles = [];\n }\n if (option === ClearStyleOptions.all || option === ClearStyleOptions.onlyThemable) {\n clearStylesInternal(_themeState.registeredThemableStyles);\n _themeState.registeredThemableStyles = [];\n }\n}\n\nfunction clearStylesInternal(records: IStyleRecord[]): void {\n records.forEach((styleRecord: IStyleRecord) => {\n const styleElement: HTMLStyleElement = styleRecord && (styleRecord.styleElement as HTMLStyleElement);\n if (styleElement && styleElement.parentElement) {\n styleElement.parentElement.removeChild(styleElement);\n }\n });\n}\n\n/**\n * Reloads styles.\n */\nfunction reloadStyles(): void {\n if (_themeState.theme) {\n const themableStyles: ThemableArray[] = [];\n for (const styleRecord of _themeState.registeredThemableStyles) {\n themableStyles.push(styleRecord.themableStyle);\n }\n if (themableStyles.length > 0) {\n clearStyles(ClearStyleOptions.onlyThemable);\n applyThemableStyles(([] as ThemableArray).concat.apply([], themableStyles));\n }\n }\n}\n\n/**\n * Find theme tokens and replaces them with provided theme values.\n * @param {string} styles Tokenized styles to fix.\n */\nexport function detokenize(styles: string | undefined): string | undefined {\n if (styles) {\n styles = resolveThemableArray(splitStyles(styles)).styleString;\n }\n\n return styles;\n}\n\n/**\n * Resolves ThemingInstruction objects in an array and joins the result into a string.\n * @param {ThemableArray} splitStyleArray ThemableArray to resolve and join.\n */\nfunction resolveThemableArray(splitStyleArray: ThemableArray): IThemableArrayResolveResult {\n const { theme }: IThemeState = _themeState;\n let themable: boolean = false;\n // Resolve the array of theming instructions to an array of strings.\n // Then join the array to produce the final CSS string.\n const resolvedArray: (string | undefined)[] = (splitStyleArray || []).map(\n (currentValue: IThemingInstruction) => {\n const themeSlot: string | undefined = currentValue.theme;\n if (themeSlot) {\n themable = true;\n // A theming annotation. Resolve it.\n const themedValue: string | undefined = theme ? theme[themeSlot] : undefined;\n const defaultValue: string = currentValue.defaultValue || 'inherit';\n\n // Warn to console if we hit an unthemed value even when themes are provided, but only if \"DEBUG\" is true.\n // Allow the themedValue to be undefined to explicitly request the default value.\n if (\n theme &&\n !themedValue &&\n console &&\n !(themeSlot in theme) &&\n typeof DEBUG !== 'undefined' &&\n DEBUG\n ) {\n console.warn(`Theming value not provided for \"${themeSlot}\". Falling back to \"${defaultValue}\".`);\n }\n\n return themedValue || defaultValue;\n } else {\n // A non-themable string. Preserve it.\n return currentValue.rawString;\n }\n }\n );\n\n return {\n styleString: resolvedArray.join(''),\n themable: themable\n };\n}\n\n/**\n * Split tokenized CSS into an array of strings and theme specification objects\n * @param {string} styles Tokenized styles to split.\n */\nexport function splitStyles(styles: string): ThemableArray {\n const result: ThemableArray = [];\n if (styles) {\n let pos: number = 0; // Current position in styles.\n let tokenMatch: RegExpExecArray | null;\n while ((tokenMatch = _themeTokenRegex.exec(styles))) {\n const matchIndex: number = tokenMatch.index;\n if (matchIndex > pos) {\n result.push({\n rawString: styles.substring(pos, matchIndex)\n });\n }\n\n result.push({\n theme: tokenMatch[1],\n defaultValue: tokenMatch[2] // May be undefined\n });\n\n // index of the first character after the current match\n pos = _themeTokenRegex.lastIndex;\n }\n\n // Push the rest of the string after the last match.\n result.push({\n rawString: styles.substring(pos)\n });\n }\n\n return result;\n}\n\n/**\n * Registers a set of style text. If it is registered too early, we will register it when the\n * window.load event is fired.\n * @param {ThemableArray} styleArray Array of IThemingInstruction objects to register.\n * @param {IStyleRecord} styleRecord May specify a style Element to update.\n */\nfunction registerStyles(styleArray: ThemableArray): void {\n if (typeof document === 'undefined') {\n return;\n }\n const head: HTMLHeadElement = document.getElementsByTagName('head')[0];\n const styleElement: HTMLStyleElement = document.createElement('style');\n const { styleString, themable } = resolveThemableArray(styleArray);\n\n styleElement.setAttribute('data-load-themed-styles', 'true');\n if (_styleNonce) {\n styleElement.setAttribute('nonce', _styleNonce);\n }\n styleElement.appendChild(document.createTextNode(styleString));\n _themeState.perf.count++;\n head.appendChild(styleElement);\n\n const ev: ICustomEvent<{ newStyle: HTMLStyleElement }> = document.createEvent('HTMLEvents');\n ev.initEvent('styleinsert', true /* bubbleEvent */, false /* cancelable */);\n ev.args = {\n newStyle: styleElement\n };\n document.dispatchEvent(ev);\n\n const record: IStyleRecord = {\n styleElement: styleElement,\n themableStyle: styleArray\n };\n\n if (themable) {\n _themeState.registeredThemableStyles.push(record);\n } else {\n _themeState.registeredStyles.push(record);\n }\n}\n","import type { IPalette } from '../types/index';\n\n// When adding or removing a color, make sure you keep this consistent with IColorClassNames\n// by adding the color variants.\nexport const DefaultPalette: IPalette = {\n themeDarker: '#004578',\n themeDark: '#005a9e',\n themeDarkAlt: '#106ebe',\n themePrimary: '#0078d4',\n themeSecondary: '#2b88d8',\n themeTertiary: '#71afe5',\n themeLight: '#c7e0f4',\n themeLighter: '#deecf9',\n themeLighterAlt: '#eff6fc',\n black: '#000000',\n blackTranslucent40: 'rgba(0,0,0,.4)',\n neutralDark: '#201f1e',\n neutralPrimary: '#323130',\n neutralPrimaryAlt: '#3b3a39',\n neutralSecondary: '#605e5c',\n neutralSecondaryAlt: '#8a8886',\n neutralTertiary: '#a19f9d',\n neutralTertiaryAlt: '#c8c6c4',\n neutralQuaternary: '#d2d0ce',\n neutralQuaternaryAlt: '#e1dfdd',\n neutralLight: '#edebe9',\n neutralLighter: '#f3f2f1',\n neutralLighterAlt: '#faf9f8',\n accent: '#0078d4',\n white: '#ffffff',\n whiteTranslucent40: 'rgba(255,255,255,.4)',\n yellowDark: '#d29200',\n yellow: '#ffb900',\n yellowLight: '#fff100',\n orange: '#d83b01',\n orangeLight: '#ea4300',\n orangeLighter: '#ff8c00',\n redDark: '#a4262c',\n red: '#e81123',\n magentaDark: '#5c005c',\n magenta: '#b4009e',\n magentaLight: '#e3008c',\n purpleDark: '#32145a',\n purple: '#5c2d91',\n purpleLight: '#b4a0ff',\n blueDark: '#002050',\n blueMid: '#00188f',\n blue: '#0078d4',\n blueLight: '#00bcf2',\n tealDark: '#004b50',\n teal: '#008272',\n tealLight: '#00b294',\n greenDark: '#004b1c',\n green: '#107c10',\n greenLight: '#bad80a',\n};\n","export namespace Depths {\n export const depth0 = '0 0 0 0 transparent';\n export const depth4 = '0 1.6px 3.6px 0 rgba(0, 0, 0, 0.132), 0 0.3px 0.9px 0 rgba(0, 0, 0, 0.108)';\n export const depth8 = '0 3.2px 7.2px 0 rgba(0, 0, 0, 0.132), 0 0.6px 1.8px 0 rgba(0, 0, 0, 0.108)';\n export const depth16 = '0 6.4px 14.4px 0 rgba(0, 0, 0, 0.132), 0 1.2px 3.6px 0 rgba(0, 0, 0, 0.108)';\n export const depth64 = '0 25.6px 57.6px 0 rgba(0, 0, 0, 0.22), 0 4.8px 14.4px 0 rgba(0, 0, 0, 0.18)';\n}\n","import { Depths } from './FluentDepths';\nimport type { IEffects } from '../types/index';\n\nexport const DefaultEffects: IEffects = {\n elevation4: Depths.depth4,\n elevation8: Depths.depth8,\n elevation16: Depths.depth16,\n elevation64: Depths.depth64,\n\n roundedCorner2: '2px',\n roundedCorner4: '4px',\n roundedCorner6: '6px',\n};\n","import { IFontFace } from './IRawStyleBase';\nimport { getStyleOptions } from './StyleOptionsState';\nimport { Stylesheet } from './Stylesheet';\nimport { serializeRuleEntries } from './styleToClassName';\n\n/**\n * Registers a font face.\n * @public\n */\nexport function fontFace(font: IFontFace): void {\n const stylesheet = Stylesheet.getInstance();\n\n const rule = serializeRuleEntries(getStyleOptions(), font as {});\n\n const className = stylesheet.classNameFromKey(rule);\n\n if (className) {\n return;\n }\n\n const name = stylesheet.getClassName();\n stylesheet.insertRule(`@font-face{${rule}}`, true);\n stylesheet.cacheClassName(name, rule, [], ['font-face', rule]);\n}\n","import { FontSizes, FontWeights, LocalizedFontFamilies, LocalizedFontNames } from './FluentFonts';\nimport type { IFontWeight, IRawStyle } from '@fluentui/merge-styles';\nimport type { IFontStyles } from '../types/IFontStyles';\n\n// Fallback fonts, if specified system or web fonts are unavailable.\nconst FontFamilyFallbacks = `'Segoe UI', -apple-system, BlinkMacSystemFont, 'Roboto', 'Helvetica Neue', sans-serif`;\n\n// By default, we favor system fonts for the default.\n// All localized fonts use a web font and never use the system font.\nconst defaultFontFamily = `'Segoe UI', '${LocalizedFontNames.WestEuropean}'`;\n\n// Mapping of language prefix to to font family.\nconst LanguageToFontMap = {\n ar: LocalizedFontFamilies.Arabic,\n bg: LocalizedFontFamilies.Cyrillic,\n cs: LocalizedFontFamilies.EastEuropean,\n el: LocalizedFontFamilies.Greek,\n et: LocalizedFontFamilies.EastEuropean,\n he: LocalizedFontFamilies.Hebrew,\n hi: LocalizedFontFamilies.Hindi,\n hr: LocalizedFontFamilies.EastEuropean,\n hu: LocalizedFontFamilies.EastEuropean,\n ja: LocalizedFontFamilies.Japanese,\n kk: LocalizedFontFamilies.EastEuropean,\n ko: LocalizedFontFamilies.Korean,\n lt: LocalizedFontFamilies.EastEuropean,\n lv: LocalizedFontFamilies.EastEuropean,\n pl: LocalizedFontFamilies.EastEuropean,\n ru: LocalizedFontFamilies.Cyrillic,\n sk: LocalizedFontFamilies.EastEuropean,\n 'sr-latn': LocalizedFontFamilies.EastEuropean,\n th: LocalizedFontFamilies.Thai,\n tr: LocalizedFontFamilies.EastEuropean,\n uk: LocalizedFontFamilies.Cyrillic,\n vi: LocalizedFontFamilies.Vietnamese,\n 'zh-hans': LocalizedFontFamilies.ChineseSimplified,\n 'zh-hant': LocalizedFontFamilies.ChineseTraditional,\n hy: LocalizedFontFamilies.Armenian,\n ka: LocalizedFontFamilies.Georgian,\n};\n\nfunction _fontFamilyWithFallbacks(fontFamily: string): string {\n return `${fontFamily}, ${FontFamilyFallbacks}`;\n}\n\n/**\n * If there is a localized font for this language, return that.\n * Returns undefined if there is no localized font for that language.\n */\nfunction _getLocalizedFontFamily(language: string | null): string {\n for (const lang in LanguageToFontMap) {\n if (LanguageToFontMap.hasOwnProperty(lang) && language && lang.indexOf(language) === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (LanguageToFontMap as any)[lang];\n }\n }\n\n return defaultFontFamily;\n}\n\nfunction _createFont(size: string, weight: IFontWeight, fontFamily: string): IRawStyle {\n return {\n fontFamily: fontFamily,\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontSize: size,\n fontWeight: weight,\n };\n}\n\nexport function createFontStyles(localeCode: string | null): IFontStyles {\n const localizedFont = _getLocalizedFontFamily(localeCode);\n const fontFamilyWithFallback = _fontFamilyWithFallbacks(localizedFont);\n\n const fontStyles = {\n tiny: _createFont(FontSizes.mini, FontWeights.regular, fontFamilyWithFallback),\n xSmall: _createFont(FontSizes.xSmall, FontWeights.regular, fontFamilyWithFallback),\n small: _createFont(FontSizes.small, FontWeights.regular, fontFamilyWithFallback),\n smallPlus: _createFont(FontSizes.smallPlus, FontWeights.regular, fontFamilyWithFallback),\n medium: _createFont(FontSizes.medium, FontWeights.regular, fontFamilyWithFallback),\n mediumPlus: _createFont(FontSizes.mediumPlus, FontWeights.regular, fontFamilyWithFallback),\n large: _createFont(FontSizes.large, FontWeights.regular, fontFamilyWithFallback),\n xLarge: _createFont(FontSizes.xLarge, FontWeights.semibold, fontFamilyWithFallback),\n xLargePlus: _createFont(FontSizes.xLargePlus, FontWeights.semibold, fontFamilyWithFallback),\n xxLarge: _createFont(FontSizes.xxLarge, FontWeights.semibold, fontFamilyWithFallback),\n xxLargePlus: _createFont(FontSizes.xxLargePlus, FontWeights.semibold, fontFamilyWithFallback),\n superLarge: _createFont(FontSizes.superLarge, FontWeights.semibold, fontFamilyWithFallback),\n mega: _createFont(FontSizes.mega, FontWeights.semibold, fontFamilyWithFallback),\n };\n\n return fontStyles;\n}\n","import { getDocument } from './dom/getDocument';\nimport * as localStorage from './localStorage';\nimport * as sessionStorage from './sessionStorage';\n\n// Default to undefined so that we initialize on first read.\nlet _language: string | null;\n\nconst STORAGE_KEY = 'language';\n\n/**\n * Gets the language set for the page.\n * @param persistenceType - Where to persist the value. Default is `sessionStorage` if available.\n */\nexport function getLanguage(\n persistenceType: 'localStorage' | 'sessionStorage' | 'none' = 'sessionStorage',\n): string | null {\n if (_language === undefined) {\n let doc = getDocument();\n const savedLanguage =\n persistenceType === 'localStorage'\n ? localStorage.getItem(STORAGE_KEY)\n : persistenceType === 'sessionStorage'\n ? sessionStorage.getItem(STORAGE_KEY)\n : undefined;\n\n if (savedLanguage) {\n _language = savedLanguage;\n }\n\n if (_language === undefined && doc) {\n _language = doc.documentElement.getAttribute('lang');\n }\n\n if (_language === undefined) {\n _language = 'en';\n }\n }\n\n return _language;\n}\n\n/**\n * Sets the language for the page (by adjusting the lang attribute of the html element).\n * @param language - Language to set.\n * @param persistenceType - Where to persist the value. Default is `sessionStorage` if available.\n */\nexport function setLanguage(language: string, persistenceType?: 'localStorage' | 'sessionStorage' | 'none'): void;\n/**\n * Sets the language for the page (by adjusting the lang attribute of the html element).\n * @deprecated Use string parameter version.\n * @param language - Language to set.\n * @param avoidPersisting - If true, don't store the value.\n */\nexport function setLanguage(language: string, avoidPersisting?: boolean): void;\nexport function setLanguage(\n language: string,\n persistenceParam?: 'localStorage' | 'sessionStorage' | 'none' | boolean,\n): void {\n let doc = getDocument();\n\n if (doc) {\n doc.documentElement.setAttribute('lang', language);\n }\n\n const persistenceType = persistenceParam === true ? 'none' : !persistenceParam ? 'sessionStorage' : persistenceParam;\n if (persistenceType === 'localStorage') {\n localStorage.setItem(STORAGE_KEY, language);\n } else if (persistenceType === 'sessionStorage') {\n sessionStorage.setItem(STORAGE_KEY, language);\n }\n\n _language = language;\n}\n","import { fontFace } from '@fluentui/merge-styles';\nimport { FontWeights, LocalizedFontFamilies, LocalizedFontNames } from './FluentFonts';\nimport { createFontStyles } from './createFontStyles';\nimport { getLanguage, getWindow } from '@fluentui/utilities';\nimport type { IFontWeight } from '@fluentui/merge-styles';\nimport type { IFontStyles } from '../types/IFontStyles';\nimport type { IFabricConfig } from '../types/IFabricConfig';\n\n// Default urls.\nconst DefaultBaseUrl = 'https://static2.sharepointonline.com/files/fabric/assets';\n\n// Standard font styling.\nexport const DefaultFontStyles: IFontStyles = createFontStyles(getLanguage());\n\nfunction _registerFontFace(fontFamily: string, url: string, fontWeight?: IFontWeight, localFontName?: string): void {\n fontFamily = `'${fontFamily}'`;\n\n const localFontSrc = localFontName !== undefined ? `local('${localFontName}'),` : '';\n\n fontFace({\n fontFamily,\n src: localFontSrc + `url('${url}.woff2') format('woff2'),` + `url('${url}.woff') format('woff')`,\n fontWeight,\n fontStyle: 'normal',\n fontDisplay: 'swap',\n });\n}\n\nfunction _registerFontFaceSet(\n baseUrl: string,\n fontFamily: string,\n cdnFolder: string,\n cdnFontName: string = 'segoeui',\n localFontName?: string,\n): void {\n const urlBase = `${baseUrl}/${cdnFolder}/${cdnFontName}`;\n\n _registerFontFace(fontFamily, urlBase + '-light', FontWeights.light, localFontName && localFontName + ' Light');\n _registerFontFace(\n fontFamily,\n urlBase + '-semilight',\n FontWeights.semilight,\n localFontName && localFontName + ' SemiLight',\n );\n _registerFontFace(fontFamily, urlBase + '-regular', FontWeights.regular, localFontName);\n _registerFontFace(\n fontFamily,\n urlBase + '-semibold',\n FontWeights.semibold,\n localFontName && localFontName + ' SemiBold',\n );\n _registerFontFace(fontFamily, urlBase + '-bold', FontWeights.bold, localFontName && localFontName + ' Bold');\n}\n\nexport function registerDefaultFontFaces(baseUrl: string): void {\n if (baseUrl) {\n const fontUrl = `${baseUrl}/fonts`;\n\n // Produce @font-face definitions for all supported web fonts.\n _registerFontFaceSet(fontUrl, LocalizedFontNames.Thai, 'leelawadeeui-thai', 'leelawadeeui');\n _registerFontFaceSet(fontUrl, LocalizedFontNames.Arabic, 'segoeui-arabic');\n _registerFontFaceSet(fontUrl, LocalizedFontNames.Cyrillic, 'segoeui-cyrillic');\n _registerFontFaceSet(fontUrl, LocalizedFontNames.EastEuropean, 'segoeui-easteuropean');\n _registerFontFaceSet(fontUrl, LocalizedFontNames.Greek, 'segoeui-greek');\n _registerFontFaceSet(fontUrl, LocalizedFontNames.Hebrew, 'segoeui-hebrew');\n _registerFontFaceSet(fontUrl, LocalizedFontNames.Vietnamese, 'segoeui-vietnamese');\n _registerFontFaceSet(fontUrl, LocalizedFontNames.WestEuropean, 'segoeui-westeuropean', 'segoeui', 'Segoe UI');\n _registerFontFaceSet(fontUrl, LocalizedFontFamilies.Selawik, 'selawik', 'selawik');\n _registerFontFaceSet(fontUrl, LocalizedFontNames.Armenian, 'segoeui-armenian');\n _registerFontFaceSet(fontUrl, LocalizedFontNames.Georgian, 'segoeui-georgian');\n\n // Leelawadee UI (Thai) does not have a 'light' weight, so we override\n // the font-face generated above to use the 'semilight' weight instead.\n _registerFontFace('Leelawadee UI Web', `${fontUrl}/leelawadeeui-thai/leelawadeeui-semilight`, FontWeights.light);\n\n // Leelawadee UI (Thai) does not have a 'semibold' weight, so we override\n // the font-face generated above to use the 'bold' weight instead.\n _registerFontFace('Leelawadee UI Web', `${fontUrl}/leelawadeeui-thai/leelawadeeui-bold`, FontWeights.semibold);\n }\n}\n\n/**\n * Reads the fontBaseUrl from window.FabricConfig.fontBaseUrl or falls back to a default.\n */\nfunction _getFontBaseUrl(): string {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const fabricConfig: IFabricConfig | undefined = (getWindow() as any)?.FabricConfig;\n\n return fabricConfig?.fontBaseUrl ?? DefaultBaseUrl;\n}\n\n/**\n * Register the font faces.\n */\nregisterDefaultFontFaces(_getFontBaseUrl());\n","import { canUseDOM } from './canUseDOM';\n\n/**\n * Helper to get the document object. Note that in popup window cases, document\n * might be the wrong document, which is why we look at ownerDocument for the\n * truth.\n *\n * @public\n */\nexport function getDocument(rootElement?: HTMLElement | null): Document | undefined {\n if (!canUseDOM() || typeof document === 'undefined') {\n return undefined;\n } else {\n const el = rootElement as Element;\n\n return el && el.ownerDocument ? el.ownerDocument : document;\n }\n}\n","import { getWindow } from './dom/getWindow';\n\n/**\n * Fetches an item from local storage without throwing an exception\n * @param key The key of the item to fetch from local storage\n */\nexport function getItem(key: string): string | null {\n let result = null;\n try {\n const win = getWindow();\n result = win ? win.localStorage.getItem(key) : null;\n } catch (e) {\n /* Eat the exception */\n }\n return result;\n}\n\n/**\n * Inserts an item into local storage without throwing an exception\n * @param key The key of the item to add to local storage\n * @param data The data to put into local storage\n */\nexport function setItem(key: string, data: string): void {\n try {\n const win = getWindow();\n\n win && win.localStorage.setItem(key, data);\n } catch (e) {\n /* Eat the exception */\n }\n}\n","import { getWindow } from './dom/getWindow';\n\n/**\n * Fetches an item from session storage without throwing an exception\n * @param key The key of the item to fetch from session storage\n */\nexport function getItem(key: string): string | null {\n let result = null;\n try {\n const win = getWindow();\n result = win ? win.sessionStorage.getItem(key) : null;\n } catch (e) {\n /* Eat the exception */\n }\n return result;\n}\n\n/**\n * Inserts an item into session storage without throwing an exception\n * @param key The key of the item to add to session storage\n * @param data The data to put into session storage\n */\nexport function setItem(key: string, data: string): void {\n try {\n getWindow()?.sessionStorage.setItem(key, data);\n } catch (e) {\n /* Eat the exception */\n }\n}\n","/**\n * Simple deep merge function. Takes all arguments and returns a deep copy of the objects merged\n * together in the order provided. If an object creates a circular reference, it will assign the\n * original reference.\n */\nexport function merge<T = {}>(target: Partial<T>, ...args: (Partial<T> | null | undefined | false)[]): T {\n for (const arg of args) {\n _merge(target || {}, arg as Partial<T>);\n }\n\n return target as T;\n}\n\n/**\n * The _merge helper iterates through all props on source and assigns them to target.\n * When the value is an object, we will create a deep clone of the object. However if\n * there is a circular reference, the value will not be deep cloned and will persist\n * the reference.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _merge<T extends Object>(target: T, source: T, circularReferences: any[] = []): T {\n circularReferences.push(source);\n\n for (let name in source) {\n if (source.hasOwnProperty(name)) {\n if (name !== '__proto__' && name !== 'constructor' && name !== 'prototype') {\n const value: T[Extract<keyof T, string>] = source[name];\n if (typeof value === 'object' && value !== null && !Array.isArray(value)) {\n const isCircularReference = circularReferences.indexOf(value) > -1;\n target[name] = (isCircularReference\n ? value\n : _merge(target[name] || {}, value, circularReferences)) as T[Extract<keyof T, string>];\n } else {\n target[name] = value;\n }\n }\n }\n }\n\n circularReferences.pop();\n\n return target;\n}\n","import type { IEffects, IPalette, ISemanticColors } from '../types/index';\n\n/** Generates all the semantic slot colors based on the theme so far\n * We'll use these as fallbacks for semantic slots that the passed in theme did not define.\n * The caller must still mix in the customized semantic slots at the end.\n */\nexport function makeSemanticColors(\n p: IPalette,\n e: IEffects,\n s: Partial<ISemanticColors> | undefined,\n isInverted: boolean,\n depComments: boolean = false,\n): ISemanticColors {\n const semanticColors: Partial<ISemanticColors> = {\n primaryButtonBorder: 'transparent',\n\n errorText: !isInverted ? '#a4262c' : '#F1707B',\n\n messageText: !isInverted ? '#323130' : '#F3F2F1',\n messageLink: !isInverted ? '#005A9E' : '#6CB8F6',\n messageLinkHovered: !isInverted ? '#004578' : '#82C7FF',\n\n infoIcon: !isInverted ? '#605e5c' : '#C8C6C4',\n errorIcon: !isInverted ? '#A80000' : '#F1707B',\n blockingIcon: !isInverted ? '#FDE7E9' : '#442726',\n warningIcon: !isInverted ? '#797775' : '#C8C6C4',\n severeWarningIcon: !isInverted ? '#D83B01' : '#FCE100',\n successIcon: !isInverted ? '#107C10' : '#92C353',\n\n infoBackground: !isInverted ? '#f3f2f1' : '#323130',\n errorBackground: !isInverted ? '#FDE7E9' : '#442726',\n blockingBackground: !isInverted ? '#FDE7E9' : '#442726',\n warningBackground: !isInverted ? '#FFF4CE' : '#433519',\n severeWarningBackground: !isInverted ? '#FED9CC' : '#4F2A0F',\n successBackground: !isInverted ? '#DFF6DD' : '#393D1B',\n\n // deprecated\n warningHighlight: !isInverted ? '#ffb900' : '#fff100',\n successText: !isInverted ? '#107C10' : '#92c353',\n\n ...s,\n };\n\n const fullSemanticColors = getSemanticColors<ISemanticColors>(p, e, semanticColors, isInverted);\n return _fixDeprecatedSlots(fullSemanticColors, depComments);\n}\n\n/**\n * Map partial platte and effects to partial semantic colors.\n */\nexport function getSemanticColors<TResult = Partial<ISemanticColors>>(\n p: Partial<IPalette> | undefined,\n e: Partial<IEffects> | undefined,\n s: Partial<ISemanticColors> | undefined,\n isInverted: boolean,\n depComments: boolean = false,\n): TResult {\n let result: Partial<ISemanticColors> = {};\n\n // map palette\n const {\n white,\n black,\n themePrimary,\n themeDark,\n themeDarker,\n themeDarkAlt,\n themeLighter,\n neutralLight,\n neutralLighter,\n neutralDark,\n neutralQuaternary,\n neutralQuaternaryAlt,\n neutralPrimary,\n neutralSecondary,\n neutralSecondaryAlt,\n neutralTertiary,\n neutralTertiaryAlt,\n neutralLighterAlt,\n accent,\n } = p || {};\n\n if (white) {\n result.bodyBackground = white;\n result.bodyFrameBackground = white;\n result.accentButtonText = white;\n result.buttonBackground = white;\n result.primaryButtonText = white;\n result.primaryButtonTextHovered = white;\n result.primaryButtonTextPressed = white;\n result.inputBackground = white;\n result.inputForegroundChecked = white;\n result.listBackground = white;\n result.menuBackground = white;\n result.cardStandoutBackground = white;\n }\n if (black) {\n result.bodyTextChecked = black;\n result.buttonTextCheckedHovered = black;\n }\n if (themePrimary) {\n result.link = themePrimary;\n result.primaryButtonBackground = themePrimary;\n result.inputBackgroundChecked = themePrimary;\n result.inputIcon = themePrimary;\n result.inputFocusBorderAlt = themePrimary;\n result.menuIcon = themePrimary;\n result.menuHeader = themePrimary;\n result.accentButtonBackground = themePrimary;\n }\n if (themeDark) {\n result.primaryButtonBackgroundPressed = themeDark;\n result.inputBackgroundCheckedHovered = themeDark;\n result.inputIconHovered = themeDark;\n }\n if (themeDarker) {\n result.linkHovered = themeDarker;\n }\n if (themeDarkAlt) {\n result.primaryButtonBackgroundHovered = themeDarkAlt;\n }\n if (themeLighter) {\n result.inputPlaceholderBackgroundChecked = themeLighter;\n }\n if (neutralLight) {\n result.bodyBackgroundChecked = neutralLight;\n result.bodyFrameDivider = neutralLight;\n result.bodyDivider = neutralLight;\n result.variantBorder = neutralLight;\n result.buttonBackgroundCheckedHovered = neutralLight;\n result.buttonBackgroundPressed = neutralLight;\n result.listItemBackgroundChecked = neutralLight;\n result.listHeaderBackgroundPressed = neutralLight;\n result.menuItemBackgroundPressed = neutralLight;\n // eslint-disable-next-line deprecation/deprecation\n result.menuItemBackgroundChecked = neutralLight;\n }\n if (neutralLighter) {\n result.bodyBackgroundHovered = neutralLighter;\n result.buttonBackgroundHovered = neutralLighter;\n result.buttonBackgroundDisabled = neutralLighter;\n result.buttonBorderDisabled = neutralLighter;\n result.primaryButtonBackgroundDisabled = neutralLighter;\n result.disabledBackground = neutralLighter;\n result.listItemBackgroundHovered = neutralLighter;\n result.listHeaderBackgroundHovered = neutralLighter;\n result.menuItemBackgroundHovered = neutralLighter;\n }\n if (neutralQuaternary) {\n result.primaryButtonTextDisabled = neutralQuaternary;\n result.disabledSubtext = neutralQuaternary;\n }\n if (neutralQuaternaryAlt) {\n result.listItemBackgroundCheckedHovered = neutralQuaternaryAlt;\n }\n if (neutralTertiary) {\n result.disabledBodyText = neutralTertiary;\n result.variantBorderHovered = s?.variantBorderHovered || neutralTertiary;\n result.buttonTextDisabled = neutralTertiary;\n result.inputIconDisabled = neutralTertiary;\n result.disabledText = neutralTertiary;\n }\n if (neutralPrimary) {\n result.bodyText = neutralPrimary;\n result.actionLink = neutralPrimary;\n result.buttonText = neutralPrimary;\n result.inputBorderHovered = neutralPrimary;\n result.inputText = neutralPrimary;\n result.listText = neutralPrimary;\n result.menuItemText = neutralPrimary;\n }\n if (neutralLighterAlt) {\n result.bodyStandoutBackground = neutralLighterAlt;\n result.defaultStateBackground = neutralLighterAlt;\n }\n if (neutralDark) {\n result.actionLinkHovered = neutralDark;\n result.buttonTextHovered = neutralDark;\n result.buttonTextChecked = neutralDark;\n result.buttonTextPressed = neutralDark;\n result.inputTextHovered = neutralDark;\n result.menuItemTextHovered = neutralDark;\n }\n if (neutralSecondary) {\n result.bodySubtext = neutralSecondary;\n result.focusBorder = neutralSecondary;\n result.inputBorder = neutralSecondary;\n result.smallInputBorder = neutralSecondary;\n result.inputPlaceholderText = neutralSecondary;\n }\n if (neutralSecondaryAlt) {\n result.buttonBorder = neutralSecondaryAlt;\n }\n if (neutralTertiaryAlt) {\n result.disabledBodySubtext = neutralTertiaryAlt;\n result.disabledBorder = neutralTertiaryAlt;\n result.buttonBackgroundChecked = neutralTertiaryAlt;\n result.menuDivider = neutralTertiaryAlt;\n }\n if (accent) {\n result.accentButtonBackground = accent;\n }\n\n // map effects\n if (e?.elevation4) {\n result.cardShadow = e.elevation4;\n }\n if (!isInverted && e?.elevation8) {\n result.cardShadowHovered = e.elevation8;\n } else if (result.variantBorderHovered) {\n result.cardShadowHovered = '0 0 1px ' + result.variantBorderHovered;\n }\n\n result = {\n ...result,\n // mix in customized semantic slots\n ...s,\n };\n\n return result as TResult;\n}\n\nfunction _fixDeprecatedSlots(s: ISemanticColors, depComments: boolean): ISemanticColors {\n // Add @deprecated tag as comment if enabled\n let dep = '';\n if (depComments === true) {\n dep = ' /* @deprecated */';\n }\n\n /* eslint-disable deprecation/deprecation */\n s.listTextColor = s.listText + dep;\n s.menuItemBackgroundChecked += dep;\n s.warningHighlight += dep;\n s.warningText = s.messageText + dep;\n s.successText += dep;\n /* eslint-enable deprecation/deprecation */\n return s;\n}\n","import type { ISpacing } from '../types/index';\n\nexport const DefaultSpacing: ISpacing = {\n s2: '4px',\n s1: '8px',\n m: '16px',\n l1: '20px',\n l2: '32px',\n};\n","import { DefaultPalette } from './colors/index';\nimport { DefaultEffects } from './effects/index';\nimport { DefaultFontStyles } from './fonts/index';\nimport { mergeThemes } from './mergeThemes';\nimport { DefaultSpacing } from './spacing/index';\nimport { makeSemanticColors } from './utilities/makeSemanticColors';\nimport type { PartialTheme, Theme } from './types/index';\n\n/**\n * Creates a custom theme definition.\n * @param theme - Partial theme object.\n * @param depComments - Whether to include deprecated tags as comments for deprecated slots.\n */\nexport function createTheme(theme: PartialTheme = {}, depComments: boolean = false): Theme {\n const isInverted = !!theme.isInverted;\n const baseTheme: Theme = {\n palette: DefaultPalette,\n effects: DefaultEffects,\n fonts: DefaultFontStyles,\n spacing: DefaultSpacing,\n isInverted,\n disableGlobalClassNames: false,\n semanticColors: makeSemanticColors(DefaultPalette, DefaultEffects, undefined, isInverted, depComments),\n rtl: undefined,\n };\n\n return mergeThemes(baseTheme, theme);\n}\n","import { merge } from '@fluentui/utilities';\nimport { getSemanticColors } from './utilities/makeSemanticColors';\nimport type { IFontStyles, PartialTheme, Theme } from './types/index';\n\n/**\n * Merge a partial/full theme into a full theme and returns a merged full theme.\n */\nexport function mergeThemes(theme: Theme, partialTheme: PartialTheme = {}): Theme {\n const mergedTheme = merge<Theme | PartialTheme>({}, theme, partialTheme, {\n semanticColors: getSemanticColors(\n partialTheme.palette,\n partialTheme.effects,\n partialTheme.semanticColors,\n partialTheme.isInverted === undefined ? theme.isInverted : partialTheme.isInverted,\n ),\n }) as Theme;\n\n if (partialTheme.palette?.themePrimary && !partialTheme.palette?.accent) {\n mergedTheme.palette.accent = partialTheme.palette.themePrimary;\n }\n\n if (partialTheme.defaultFontStyle) {\n for (const fontStyle of Object.keys(mergedTheme.fonts) as (keyof IFontStyles)[]) {\n mergedTheme.fonts[fontStyle] = merge(\n mergedTheme.fonts[fontStyle],\n partialTheme.defaultFontStyle,\n partialTheme?.fonts?.[fontStyle],\n );\n }\n }\n\n return mergedTheme;\n}\n","import { Customizations, getWindow } from '@fluentui/utilities';\nimport { loadTheme as legacyLoadTheme } from '@microsoft/load-themed-styles';\nimport { createTheme } from '@fluentui/theme';\nimport type { ITheme, IPartialTheme, IFontStyles } from '../interfaces/index';\nimport type { IRawStyle } from '@fluentui/merge-styles';\n\nexport { createTheme } from '@fluentui/theme';\n\nlet _theme: ITheme = createTheme({});\nlet _onThemeChangeCallbacks: Array<(theme: ITheme) => void> = [];\n\nexport const ThemeSettingName = 'theme';\n\nexport function initializeThemeInCustomizations(): void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const win: any = getWindow();\n\n if (win?.FabricConfig?.legacyTheme) {\n // does everything the `else` clause does and more, such as invoke legacy theming\n loadTheme(win.FabricConfig.legacyTheme);\n } else if (!Customizations.getSettings([ThemeSettingName]).theme) {\n if (win?.FabricConfig?.theme) {\n _theme = createTheme(win.FabricConfig.theme);\n }\n\n // Set the default theme.\n Customizations.applySettings({ [ThemeSettingName]: _theme });\n }\n}\n\ninitializeThemeInCustomizations();\n\n/**\n * Gets the theme object\n * @param depComments - Whether to include deprecated tags as comments for deprecated slots.\n */\nexport function getTheme(depComments: boolean = false): ITheme {\n if (depComments === true) {\n _theme = createTheme({}, depComments);\n }\n return _theme;\n}\n\n/**\n * Registers a callback that gets called whenever the theme changes.\n * This should only be used when the component cannot automatically get theme changes through its state.\n * This will not register duplicate callbacks.\n */\nexport function registerOnThemeChangeCallback(callback: (theme: ITheme) => void): void {\n if (_onThemeChangeCallbacks.indexOf(callback) === -1) {\n _onThemeChangeCallbacks.push(callback);\n }\n}\n\n/**\n * See registerOnThemeChangeCallback().\n * Removes previously registered callbacks.\n */\nexport function removeOnThemeChangeCallback(callback: (theme: ITheme) => void): void {\n const i = _onThemeChangeCallbacks.indexOf(callback);\n if (i === -1) {\n return;\n }\n\n _onThemeChangeCallbacks.splice(i, 1);\n}\n\n/**\n * Applies the theme, while filling in missing slots.\n * @param theme - Partial theme object.\n * @param depComments - Whether to include deprecated tags as comments for deprecated slots.\n */\nexport function loadTheme(theme: IPartialTheme, depComments: boolean = false): ITheme {\n _theme = createTheme(theme, depComments);\n\n // Invoke the legacy method of theming the page as well.\n legacyLoadTheme({ ..._theme.palette, ..._theme.semanticColors, ..._theme.effects, ..._loadFonts(_theme) });\n\n Customizations.applySettings({ [ThemeSettingName]: _theme });\n\n _onThemeChangeCallbacks.forEach((callback: (theme: ITheme) => void) => {\n try {\n callback(_theme);\n } catch (e) {\n // don't let a bad callback break everything else\n }\n });\n\n return _theme;\n}\n\n/**\n * Loads font variables into a JSON object.\n * @param theme - The theme object\n */\nfunction _loadFonts(theme: ITheme): { [name: string]: string } {\n const lines: { [key: string]: string } = {};\n\n for (const fontName of Object.keys(theme.fonts)) {\n const font: IRawStyle = theme.fonts[fontName as keyof IFontStyles];\n\n for (const propName of Object.keys(font)) {\n const name: string = fontName + propName.charAt(0).toUpperCase() + propName.slice(1);\n let value = font[propName as keyof IRawStyle] as string;\n\n if (propName === 'fontSize' && typeof value === 'number') {\n // if it's a number, convert it to px by default like our theming system does\n value = value + 'px';\n }\n lines[name] = value;\n }\n }\n return lines;\n}\n","export * from './classNames/index';\nexport * from './styles/index';\nexport * from './utilities/index';\nexport * from './interfaces/index';\nexport * from './MergeStyles';\n\nimport './version';\n\n// Ensure theme is initialized when this package is referenced.\nimport { initializeThemeInCustomizations } from './styles/theme';\ninitializeThemeInCustomizations();\n","import { HighContrastSelector, FontWeights, getHighContrastNoAdjustStyle } from '../../Styling';\nimport type { ILabelStyleProps, ILabelStyles } from './Label.types';\n\nexport const getStyles = (props: ILabelStyleProps): ILabelStyles => {\n const { theme, className, disabled, required } = props;\n const { semanticColors } = theme;\n\n // Tokens\n const labelFontWeight = FontWeights.semibold;\n const labelColor = semanticColors.bodyText;\n const labelDisabledColor = semanticColors.disabledBodyText;\n const labelRequiredStarColor = semanticColors.errorText;\n\n return {\n root: [\n 'ms-Label',\n theme.fonts.medium,\n {\n fontWeight: labelFontWeight,\n color: labelColor,\n boxSizing: 'border-box',\n boxShadow: 'none',\n margin: 0,\n display: 'block',\n padding: '5px 0',\n wordWrap: 'break-word',\n overflowWrap: 'break-word',\n },\n disabled && {\n color: labelDisabledColor,\n selectors: {\n [HighContrastSelector]: {\n color: 'GrayText',\n ...getHighContrastNoAdjustStyle(),\n },\n },\n },\n required && {\n selectors: {\n '::after': {\n content: `' *'`,\n color: labelRequiredStarColor,\n paddingRight: 12,\n },\n },\n },\n className,\n ],\n };\n};\n","import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { LabelBase } from './Label.base';\nimport { getStyles } from './Label.styles';\nimport type { ILabelProps, ILabelStyleProps, ILabelStyles } from './Label.types';\n\nexport const Label: React.FunctionComponent<ILabelProps> = styled<ILabelProps, ILabelStyleProps, ILabelStyles>(\n LabelBase,\n getStyles,\n undefined,\n {\n scope: 'Label',\n },\n);\n","import * as React from 'react';\nimport { useControllableValue, useId, useWarnings } from '@fluentui/react-hooks';\nimport { classNamesFunction, getNativeProps, inputProperties, useFocusRects } from '@fluentui/utilities';\nimport { Label } from '../Label/Label';\nimport type { IToggleProps, IToggleStyleProps, IToggleStyles, IToggle } from './Toggle.types';\n\nconst getClassNames = classNamesFunction<IToggleStyleProps, IToggleStyles>();\n\nconst COMPONENT_NAME = 'Toggle';\n\nexport const ToggleBase: React.FunctionComponent<IToggleProps> = React.forwardRef<HTMLElement, IToggleProps>(\n (props, forwardedRef) => {\n const {\n as: RootType = 'div',\n ariaLabel,\n checked: controlledChecked,\n className,\n defaultChecked = false,\n disabled,\n inlineLabel,\n label,\n // eslint-disable-next-line deprecation/deprecation\n offAriaLabel,\n offText,\n // eslint-disable-next-line deprecation/deprecation\n onAriaLabel,\n onChange,\n // eslint-disable-next-line deprecation/deprecation\n onChanged,\n onClick: onToggleClick,\n onText,\n role,\n styles,\n theme,\n } = props;\n\n const [checked, setChecked] = useControllableValue(\n controlledChecked,\n defaultChecked,\n React.useCallback(\n (ev: React.MouseEvent<HTMLElement>, isChecked: boolean) => {\n onChange?.(ev, isChecked);\n onChanged?.(isChecked);\n },\n [onChange, onChanged],\n ),\n );\n\n const classNames = getClassNames(styles!, {\n theme: theme!,\n className,\n disabled,\n checked,\n inlineLabel,\n onOffMissing: !onText && !offText,\n });\n const badAriaLabel = checked ? onAriaLabel : offAriaLabel;\n const id = useId(COMPONENT_NAME, props.id);\n const labelId = `${id}-label`;\n const stateTextId = `${id}-stateText`;\n const stateText = checked ? onText : offText;\n const toggleNativeProps = getNativeProps<React.HTMLAttributes<HTMLButtonElement>>(props, inputProperties, [\n 'defaultChecked',\n ]);\n\n // The following properties take priority for what Narrator should read:\n // 1. ariaLabel\n // 2. onAriaLabel (if checked) or offAriaLabel (if not checked)\n // 3. label, if existent\n\n let labelledById: string | undefined = undefined;\n if (!ariaLabel && !badAriaLabel) {\n if (label) {\n labelledById = labelId;\n }\n if (stateText && !labelledById) {\n labelledById = stateTextId;\n }\n }\n\n const toggleButton = React.useRef<HTMLButtonElement>(null);\n useFocusRects(toggleButton);\n useComponentRef(props, checked, toggleButton);\n\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks -- build-time conditional\n useWarnings({\n name: COMPONENT_NAME,\n props,\n deprecations: {\n offAriaLabel: undefined,\n onAriaLabel: 'ariaLabel',\n onChanged: 'onChange',\n },\n mutuallyExclusive: { checked: 'defaultChecked' },\n });\n }\n\n const onClick = (ev: React.MouseEvent<HTMLElement>) => {\n if (!disabled) {\n setChecked(!checked, ev);\n if (onToggleClick) {\n onToggleClick(ev);\n }\n }\n };\n\n const slotProps = {\n root: {\n className: classNames.root,\n hidden: toggleNativeProps.hidden,\n },\n label: {\n children: label,\n className: classNames.label,\n htmlFor: id,\n id: labelId,\n },\n container: {\n className: classNames.container,\n },\n pill: {\n ...toggleNativeProps,\n 'aria-disabled': disabled,\n 'aria-checked': checked,\n 'aria-label': ariaLabel ? ariaLabel : badAriaLabel,\n 'aria-labelledby': labelledById,\n className: classNames.pill,\n 'data-is-focusable': true,\n 'data-ktp-target': true,\n disabled: disabled,\n id: id,\n onClick: onClick,\n ref: toggleButton,\n role: role ? role : 'switch',\n type: 'button' as React.ButtonHTMLAttributes<HTMLButtonElement>['type'],\n },\n thumb: {\n className: classNames.thumb,\n },\n stateText: {\n children: stateText,\n className: classNames.text,\n htmlFor: id,\n id: stateTextId,\n },\n };\n\n return (\n <RootType ref={forwardedRef as React.Ref<HTMLDivElement>} {...slotProps.root}>\n {label && <Label {...slotProps.label} />}\n <div {...slotProps.container}>\n <button {...slotProps.pill}>\n <span {...slotProps.thumb} />\n </button>\n {((checked && onText) || offText) && <Label {...slotProps.stateText} />}\n </div>\n </RootType>\n );\n },\n);\n\nToggleBase.displayName = COMPONENT_NAME + 'Base';\n\nconst useComponentRef = (\n props: IToggleProps,\n isChecked: boolean | undefined,\n toggleButtonRef: React.RefObject<IToggle>,\n) => {\n React.useImperativeHandle(\n props.componentRef,\n () => ({\n get checked() {\n return !!isChecked;\n },\n focus() {\n if (toggleButtonRef.current) {\n toggleButtonRef.current.focus();\n }\n },\n }),\n [isChecked, toggleButtonRef],\n );\n};\n","import * as React from 'react';\nimport { useConst } from './useConst';\n\nexport type ChangeCallback<\n TElement extends HTMLElement,\n TValue,\n TEvent extends React.SyntheticEvent<TElement> | undefined\n> = (ev: TEvent, newValue: TValue | undefined) => void;\n\n/**\n * Hook to manage a value that could be either controlled or uncontrolled, such as a checked state or\n * text box string.\n * @param controlledValue - The controlled value passed in the props. This value will always be used if provided,\n * and the internal state will be updated to reflect it.\n * @param defaultUncontrolledValue - Initial value for the internal state in the uncontrolled case.\n * @returns An array of the current value and an updater callback. Like `React.useState`, the updater\n * callback always has the same identity, and it can take either a new value, or a function which\n * is passed the previous value and returns the new value.\n * @see https://reactjs.org/docs/uncontrolled-components.html\n */\nexport function useControllableValue<TValue, TElement extends HTMLElement>(\n controlledValue: TValue | undefined,\n defaultUncontrolledValue: TValue | undefined,\n): Readonly<[TValue | undefined, (update: React.SetStateAction<TValue | undefined>) => void]>;\nexport function useControllableValue<\n TValue,\n TElement extends HTMLElement,\n TEvent extends React.SyntheticEvent<TElement> | undefined\n>(\n controlledValue: TValue | undefined,\n defaultUncontrolledValue: TValue | undefined,\n onChange: ChangeCallback<TElement, TValue, TEvent> | undefined,\n): Readonly<\n [TValue | undefined, (update: React.SetStateAction<TValue | undefined>, ev?: React.FormEvent<TElement>) => void]\n>;\nexport function useControllableValue<\n TValue,\n TElement extends HTMLElement,\n TEvent extends React.SyntheticEvent<TElement> | undefined\n>(\n controlledValue: TValue | undefined,\n defaultUncontrolledValue: TValue | undefined,\n onChange?: ChangeCallback<TElement, TValue, TEvent>,\n) {\n const [value, setValue] = React.useState<TValue | undefined>(defaultUncontrolledValue);\n const isControlled = useConst<boolean>(controlledValue !== undefined);\n const currentValue = isControlled ? controlledValue : value;\n\n // Duplicate the current value and onChange in refs so they're accessible from\n // setValueOrCallOnChange without creating a new callback every time\n const valueRef = React.useRef(currentValue);\n const onChangeRef = React.useRef(onChange);\n React.useEffect(() => {\n valueRef.current = currentValue;\n onChangeRef.current = onChange;\n });\n\n // To match the behavior of the setter returned by React.useState, this callback's identity\n // should never change. This means it MUST NOT directly reference variables that can change.\n const setValueOrCallOnChange = useConst(() => (update: React.SetStateAction<TValue | undefined>, ev?: TEvent) => {\n // Assuming here that TValue is not a function, because a controllable value will typically\n // be something a user can enter as input\n const newValue = typeof update === 'function' ? (update as Function)(valueRef.current) : update;\n\n if (onChangeRef.current) {\n onChangeRef.current(ev!, newValue);\n }\n\n if (!isControlled) {\n setValue(newValue);\n }\n });\n\n return [currentValue, setValueOrCallOnChange] as const;\n}\n","import * as React from 'react';\nimport { styled } from '@fluentui/utilities';\nimport { ToggleBase } from './Toggle.base';\nimport { getStyles } from './Toggle.styles';\nimport type { IToggleProps, IToggleStyleProps, IToggleStyles } from './Toggle.types';\n\nexport const Toggle: React.FunctionComponent<IToggleProps> = styled<IToggleProps, IToggleStyleProps, IToggleStyles>(\n ToggleBase,\n getStyles,\n undefined,\n {\n scope: 'Toggle',\n },\n);\n","import {\n HighContrastSelector,\n getFocusStyle,\n FontWeights,\n getHighContrastNoAdjustStyle,\n} from '@fluentui/style-utilities';\nimport type { IToggleStyleProps, IToggleStyles } from './Toggle.types';\n\nconst DEFAULT_PILL_WIDTH = 40;\nconst DEFAULT_PILL_HEIGHT = 20;\nconst DEFAULT_THUMB_SIZE = 12;\n\nexport const getStyles = (props: IToggleStyleProps): IToggleStyles => {\n const { theme, className, disabled, checked, inlineLabel, onOffMissing } = props;\n const { semanticColors, palette } = theme;\n\n // Tokens\n const pillUncheckedBackground = semanticColors.bodyBackground;\n const pillCheckedBackground = semanticColors.inputBackgroundChecked;\n const pillCheckedHoveredBackground = semanticColors.inputBackgroundCheckedHovered;\n const thumbUncheckedHoveredBackground = palette.neutralDark;\n const pillCheckedDisabledBackground = semanticColors.disabledBodySubtext;\n const thumbBackground = semanticColors.smallInputBorder;\n const thumbCheckedBackground = semanticColors.inputForegroundChecked;\n const thumbDisabledBackground = semanticColors.disabledBodySubtext;\n const thumbCheckedDisabledBackground = semanticColors.disabledBackground;\n const pillBorderColor = semanticColors.smallInputBorder;\n const pillBorderHoveredColor = semanticColors.inputBorderHovered;\n const pillBorderDisabledColor = semanticColors.disabledBodySubtext;\n const textDisabledColor = semanticColors.disabledText;\n\n return {\n root: [\n 'ms-Toggle',\n checked && 'is-checked',\n !disabled && 'is-enabled',\n disabled && 'is-disabled',\n theme.fonts.medium,\n {\n marginBottom: '8px',\n },\n inlineLabel && {\n display: 'flex',\n alignItems: 'center',\n },\n className,\n ],\n\n label: [\n 'ms-Toggle-label',\n { display: 'inline-block' },\n disabled && {\n color: textDisabledColor,\n selectors: {\n [HighContrastSelector]: {\n color: 'GrayText',\n },\n },\n },\n inlineLabel &&\n !onOffMissing && {\n marginRight: 16,\n },\n onOffMissing &&\n inlineLabel && {\n order: 1,\n marginLeft: 16,\n },\n inlineLabel && { wordBreak: 'break-word' },\n ],\n\n container: [\n 'ms-Toggle-innerContainer',\n {\n display: 'flex',\n position: 'relative',\n },\n ],\n\n pill: [\n 'ms-Toggle-background',\n getFocusStyle(theme, { inset: -3 }),\n {\n fontSize: '20px',\n boxSizing: 'border-box',\n width: DEFAULT_PILL_WIDTH,\n height: DEFAULT_PILL_HEIGHT,\n borderRadius: DEFAULT_PILL_HEIGHT / 2,\n transition: 'all 0.1s ease',\n border: `1px solid ${pillBorderColor}`,\n background: pillUncheckedBackground,\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n padding: '0 3px',\n overflow: 'visible',\n },\n !disabled && [\n !checked && {\n selectors: {\n ':hover': [\n {\n borderColor: pillBorderHoveredColor,\n },\n ],\n ':hover .ms-Toggle-thumb': [\n {\n backgroundColor: thumbUncheckedHoveredBackground,\n selectors: {\n [HighContrastSelector]: {\n borderColor: 'Highlight',\n },\n },\n },\n ],\n },\n },\n checked && [\n {\n background: pillCheckedBackground,\n borderColor: 'transparent',\n justifyContent: 'flex-end',\n },\n {\n selectors: {\n ':hover': [\n {\n backgroundColor: pillCheckedHoveredBackground,\n borderColor: 'transparent',\n selectors: {\n [HighContrastSelector]: {\n backgroundColor: 'Highlight',\n },\n },\n },\n ],\n [HighContrastSelector]: {\n backgroundColor: 'Highlight',\n ...getHighContrastNoAdjustStyle(),\n },\n },\n },\n ],\n ],\n disabled && [\n {\n cursor: 'default',\n },\n !checked && [\n {\n borderColor: pillBorderDisabledColor,\n },\n ],\n checked && [\n {\n backgroundColor: pillCheckedDisabledBackground,\n borderColor: 'transparent',\n justifyContent: 'flex-end',\n },\n ],\n ],\n !disabled && {\n selectors: {\n '&:hover': {\n selectors: {\n [HighContrastSelector]: {\n borderColor: 'Highlight',\n },\n },\n },\n },\n },\n ],\n\n thumb: [\n 'ms-Toggle-thumb',\n {\n display: 'block',\n width: DEFAULT_THUMB_SIZE,\n height: DEFAULT_THUMB_SIZE,\n borderRadius: '50%',\n transition: 'all 0.1s ease',\n backgroundColor: thumbBackground,\n /* Border is added to handle high contrast mode for Firefox */\n borderColor: 'transparent',\n borderWidth: DEFAULT_THUMB_SIZE / 2,\n borderStyle: 'solid',\n boxSizing: 'border-box',\n },\n !disabled &&\n checked && [\n {\n backgroundColor: thumbCheckedBackground,\n selectors: {\n [HighContrastSelector]: {\n backgroundColor: 'Window',\n borderColor: 'Window',\n },\n },\n },\n ],\n disabled && [\n !checked && [\n {\n backgroundColor: thumbDisabledBackground,\n },\n ],\n checked && [\n {\n backgroundColor: thumbCheckedDisabledBackground,\n },\n ],\n ],\n ],\n\n text: [\n 'ms-Toggle-stateText',\n {\n selectors: {\n // Workaround: make rules more specific than Label rules.\n '&&': {\n padding: '0',\n margin: '0 8px',\n userSelect: 'none',\n fontWeight: FontWeights.regular,\n },\n },\n },\n disabled && {\n selectors: {\n '&&': {\n color: textDisabledColor,\n selectors: {\n [HighContrastSelector]: {\n color: 'GrayText',\n },\n },\n },\n },\n },\n ],\n };\n};\n","import React from \"react\";\r\nimport { UserContextComponent } from \"../UserContextComponent\";\r\nimport { OptInOut, PortalContactModel } from \"../../models/PortalContactModel\";\r\nimport { ApplicantService } from \"../../pages/ApplicantService\";\r\nimport { Toggle } from \"@fluentui/react\";\r\n\r\nexport interface IRateCheckerProps {\r\n}\r\n\r\nexport interface IRateCheckerState {\r\n contact: PortalContactModel | null;\r\n}\r\n\r\nexport class RateCheckerTile extends UserContextComponent<IRateCheckerProps, IRateCheckerState> {\r\n applicantService: ApplicantService;\r\n constructor(props: IRateCheckerProps) {\r\n super(props);\r\n this.saveRateUpdated = this.saveRateUpdated.bind(this);\r\n this.state = { contact: null };\r\n }\r\n\r\n componentDidMount(): void {\r\n const context = this.getContext();\r\n this.applicantService = new ApplicantService(context, this, context.applicantNo!);\r\n this.applicantService.getApplicantData();\r\n\r\n let applicant:PortalContactModel = (context.applicantNo === 1 ? context.mortgage?.primaryApplicant : context.mortgage?.secondaryApplicant)!;\r\n this.setState({contact: applicant})\r\n }\r\n\r\n saveRateUpdated(e:any, checked?:boolean) {\r\n this.applicantService.saveRateUpdateStatus(checked ? OptInOut.OptIn : OptInOut.OptOut);\r\n this.setState({contact: this.state.contact})\r\n }\r\n\r\n render() {\r\n const context = this.getContext();\r\n let mortgage = context.mortgage!;\r\n\r\n return (\r\n <div key={'bestrate-' + mortgage.mortgageId} className={\"text-start boxty tall box-teal-outline \"} style={{paddingBottom: 25}}>\r\n <>\r\n <p className={`text-gray`}>Stay on the best rate!</p>\r\n <h1 className={`text-gray`}>Rate Checker</h1>\r\n <p className={'mt-2'} style={{marginBottom: 23}}>Right now, you’re on a <strong>{mortgage.fixedTermYearsProposed ? mortgage.fixedTermYearsProposed + \" year fixed\" : \"variable rate\"} at {mortgage.offeredInterestRate}% APR</strong> - but don’t worry, we’ll contact you 6 months before that and set out the most competitive rates available to you</p>\r\n <Toggle className={`mt-3`} onText=\"ON\" offText=\"OFF\" checked={(this.state.contact?.rateUpdateStatus === OptInOut.OptIn)} onChange={this.saveRateUpdated}></Toggle>\r\n </>\r\n </div>\r\n );\r\n }\r\n}","import React from \"react\";\r\nimport { Col, Row, Stack } from \"react-bootstrap\";\r\n\r\nexport class SpreadTheWordTile extends React.Component {\r\n\r\n render() {\r\n return (\r\n <div key={'spreadthewordtile'} className={\"text-start boxty box-teal-outline\"}>\r\n <>\r\n <p className={`text-gray`}>Help us to help others</p>\r\n <h1>Spread the word</h1>\r\n <p className={`m`}>If you have been happy with the impartial, expert service we’ve provided, please consider reviewing us on Google!</p>\r\n <Stack gap={2}>\r\n <div className=\"btn btn-gray-outline btn-fw text-start\" onClick={() => window.open('https://search.google.com/local/reviews?placeid=ChIJtfmJFqwPZ0gRUpfpE-qI-fA', '_blank')}>\r\n <Row>\r\n <Col xs={9} className=\"text-start ps-4 nowrap\">Pen a Google review</Col><Col xs={3} className=\"text-end pe-4\"><i className=\"fab fa-google\" /></Col>\r\n </Row>\r\n </div>\r\n </Stack>\r\n </>\r\n </div>\r\n );\r\n }\r\n}","import React from \"react\";\r\nimport { Stack } from \"react-bootstrap\";\r\n\r\nexport class StayInformedTile extends React.Component {\r\n\r\n render() {\r\n return (\r\n <div key={'stayinformedtile'} className={\"text-start boxty tall box-teal-outline\"}>\r\n <>\r\n <p className={`text-gray`}>Stay informed</p>\r\n <h1>Always here for you!</h1>\r\n <Stack gap={2} style={{paddingBottom: 1}}>\r\n <p className=\"impact mt-2\">Have any questions?</p>\r\n <button className=\"btn btn-gray-outline btn-fw text-start ps-3\" onClick={() => window.Intercom('showNewMessage')}>\r\n Chat to an expert<span style={{fontSize: 17}}><i className=\"fas fa-user\" style={{marginLeft: 15, marginRight: 15}} /></span>\r\n </button>\r\n <div className=\"fakebtn-gray-outline btn-fw text-start ps-3\" onClick={() => window.open('https://www.facebook.com/doddl.ie/', '_blank')}>\r\n \r\n <span className=\"text-end nowrap\" style={{fontSize:18}}>\r\n <span style={{fontSize: 15}}>Follow our socials </span>\r\n <span>\r\n <i onClick={() => window.open('https://www.instagram.com/doddl_ie/', '_blank')} className=\"fab fa-instagram social\" style={{marginLeft: 4}} />\r\n <i onClick={() => window.open('https://www.facebook.com/doddl.ie/', '_blank')} className=\"fab fa-facebook social\" style={{marginLeft:7}} />\r\n <i onClick={() => window.open('https://ie.linkedin.com/company/doddl/', '_blank')} className=\"fab fa-linkedin social\" style={{marginLeft:7, marginRight: 21}} />\r\n </span>\r\n\r\n </span>\r\n </div>\r\n </Stack>\r\n </>\r\n </div>\r\n );\r\n }\r\n}","import axios from \"axios\";\r\nimport React from \"react\";\r\nimport { UserContextComponent } from \"./UserContextComponent\";\r\nimport { DownloadDocumentButton } from \"./DownloadDocumentButton\";\r\n\r\nexport interface ILoanOfferProps {\r\n buttonStyle?: \"standard\" | \"pill\" | null;\r\n className?: string;\r\n}\r\n\r\ninterface ILoanOfferState {\r\n downloadError: boolean;\r\n}\r\n\r\nexport class LoanOfferDownloadButton extends UserContextComponent<ILoanOfferProps, ILoanOfferState> {\r\n constructor(props: ILoanOfferProps) {\r\n super(props);\r\n this.downloadLO = this.downloadLO.bind(this);\r\n this.state = {downloadError: false};\r\n }\r\n\r\n downloadLO() {\r\n const context = this.getContext();\r\n\r\n axios({\r\n url: `/Mortgages/DownloadLoanOffer?mortgageId=${context.mortgage?.mortgageId}`,\r\n method: \"GET\",\r\n responseType: \"blob\"\r\n }).then(response => {\r\n if (response.data.size === 0) {\r\n this.setState({downloadError: true});\r\n } else {\r\n const url = window.URL.createObjectURL(new Blob([response.data]));\r\n const link = document.createElement(\"a\");\r\n link.href = url;\r\n link.setAttribute(\"download\", 'LoanOffer.pdf');\r\n document.body.appendChild(link);\r\n link.click();\r\n if (link.parentNode !== null)\r\n link.parentNode.removeChild(link);\r\n }\r\n });\r\n }\r\n\r\n render() {\r\n const context = this.getContext();\r\n return (\r\n <DownloadDocumentButton \r\n className={this.props.className}\r\n title={\"Letter of Offer\"} \r\n download={this.downloadLO}\r\n buttonStyle={this.props.buttonStyle}\r\n showError={this.state.downloadError} />\r\n );\r\n }\r\n}","import React from 'react';\r\nimport 'bootstrap/dist/css/bootstrap.min.css';\r\nimport '../../pages/Applicant.css';\r\nimport { UserContextComponent } from '../UserContextComponent';\r\nimport { Link } from 'react-router-dom';\r\nimport { MortgageType, YesNoBlank } from '../../models/PortalMortgageModel';\r\nimport axios from 'axios';\r\n\r\n\r\nexport class ConfirmTitleDeedsTile extends UserContextComponent<any, any> {\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.confirmTitleDeeds = this.confirmTitleDeeds.bind(this);\r\n }\r\n\r\n confirmTitleDeeds() {\r\n let context = this.getContext();\r\n context.mortgage!.confirmedTitleDeeds = YesNoBlank.Yes;\r\n axios.post('/Mortgages/ConfirmTitleDeeds', null, { params: { mortgageId: context.mortgage?.mortgageId } })\r\n .then(response => {\r\n this.props.confirmedTitleDeeds();\r\n });\r\n }\r\n\r\n render() {\r\n var context = this.getContext();\r\n\r\n return (\r\n <div className={`text-start boxty grid box-teal-outline ${this.props.className ?? ''}`}>\r\n <h3 className=\"pb-3\">Confirm title deeds with solicitor</h3>\r\n <p>An important step that often delays closing and getting your keys.</p>\r\n <p className='mt-3'>Does your solicitor have the title deeds for the property?</p>\r\n <button className=\"btn fw big btn-light next-secondary pe-5 mt-3\" onClick={this.confirmTitleDeeds}>Confirm</button>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n","import React from 'react';\r\nimport 'bootstrap/dist/css/bootstrap.min.css';\r\nimport '../../pages/Applicant.css';\r\nimport { UserContextComponent } from '../UserContextComponent';\r\nimport axios from 'axios';\r\n\r\n\r\nexport class ESISTile extends UserContextComponent<any, any> {\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.download = this.download.bind(this);\r\n }\r\n\r\n download() {\r\n const context = this.getContext();\r\n\r\n axios({\r\n url: `/Mortgages/DownloadESIS?mortgageId=${context.mortgage?.mortgageId}`,\r\n method: \"GET\",\r\n responseType: \"blob\"\r\n }).then(response => {\r\n if (response.data.size === 0) {\r\n //this.setState({downloadError: true});\r\n } else {\r\n const url = window.URL.createObjectURL(new Blob([response.data]));\r\n const link = document.createElement(\"a\");\r\n link.href = url;\r\n link.setAttribute(\"download\", 'ESIS.pdf');\r\n document.body.appendChild(link);\r\n link.click();\r\n if (link.parentNode !== null)\r\n link.parentNode.removeChild(link);\r\n context.mortgage!.isEsisDownloaded = true;\r\n this.setState({ refreshToggle: !this.state.refreshToggle });\r\n }\r\n });\r\n }\r\n\r\n render() {\r\n return (\r\n <div className={`text-start boxty grid box-teal-outline ${this.props.className ?? ''}`}>\r\n <h3 className=\"pb-3\">Download ESIS</h3>\r\n <p>European Standard Information Sheet</p>\r\n <p className='mt-3'>This document confirms all of the key features and risks relating to your mortgage contract in clear language including the APRC.</p>\r\n <button className=\"btn fw big btn-light next-secondary pe-5 mt-3\" onClick={this.download}>Download</button>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n","import React from 'react';\r\nimport 'bootstrap/dist/css/bootstrap.min.css';\r\nimport '../../pages/Applicant.css';\r\nimport { UserContextComponent } from '../UserContextComponent';\r\nimport axios from 'axios';\r\n\r\n\r\nexport class CostOfCreditTile extends UserContextComponent<any, any> {\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.download = this.download.bind(this);\r\n }\r\n\r\n download() {\r\n const context = this.getContext();\r\n\r\n axios({\r\n url: `/Mortgages/DownloadCostOfCredit?mortgageId=${context.mortgage?.mortgageId}`,\r\n method: \"GET\",\r\n responseType: \"blob\"\r\n }).then(response => {\r\n if (response.data.size === 0) {\r\n //this.setState({downloadError: true});\r\n } else {\r\n const url = window.URL.createObjectURL(new Blob([response.data]));\r\n const link = document.createElement(\"a\");\r\n link.href = url;\r\n link.setAttribute(\"download\", 'CostOfCredit.pdf');\r\n document.body.appendChild(link);\r\n link.click();\r\n if (link.parentNode !== null)\r\n link.parentNode.removeChild(link);\r\n context.mortgage!.isCostOfCreditDownloaded = true;\r\n this.setState({ refreshToggle: !this.state.refreshToggle });\r\n }\r\n });\r\n }\r\n\r\n render() {\r\n return (\r\n <div className={`text-start boxty grid box-teal-outline ${this.props.className ?? ''}`}>\r\n <h3 className=\"pb-3\">Download Cost of Credit</h3>\r\n <p>This document shows you the overall costs of your mortgage and will show any additional costs for the deferred start you have requested.</p>\r\n <p className='mt-3'>Please review this document and let us know if you change your mind about using Deferred start.</p>\r\n <button className=\"btn fw big btn-light next-secondary pe-5 mt-3\" onClick={this.download}>Download</button>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n","import React from \"react\";\r\nimport { Accordion, Card, Col, Container, Modal, Row, Stack } from \"react-bootstrap\";\r\nimport './Documents.css';\r\nimport { PortalPage } from \"../components/PortalPage\";\r\nimport { UserContext } from '../components/UserContext';\r\nimport UserContextState from '../components/UserContext';\r\nimport axios from 'axios';\r\nimport \"./LoanCompletion.css\";\r\nimport { Timeline, TimelineItem, TimelineItemStatus } from '../components/Timeline';\r\nimport { MortgageDocumentStatusCode, PortalDocumentType } from '../models/PortalMortgageDocumentModel';\r\nimport { DocumentPill } from '../components/Pills/DocumentPill';\r\nimport { UserContextComponent } from '../components/UserContextComponent';\r\nimport { PortalSpecialConditionsModel, SpecialConditionsType } from '../models/PortalSpecialConditionsModel';\r\nimport { IFileItem } from \"../components/DocumentManager\";\r\nimport { MortgageStatus, MortgageType, YesNoBlank } from \"../models/PortalMortgageModel\";\r\nimport { AIPDDLStatus, AIPType, PortalAIPApplicationModel } from \"../models/PortalAIPApplication\";\r\nimport { ProgressTile, ProgressTileSize } from \"../components/ProgressTile\";\r\nimport { PortalCategoryModel } from \"../models/PortalCategoryModel\";\r\nimport { Navigate } from \"react-router-dom\";\r\nimport { FormControl } from \"../components/FormControl\";\r\nimport { SharedFieldsCollection } from \"../forms/SharedFields\";\r\nimport * as Icons from \"react-bootstrap\";\r\nimport { PortalClarificationModel } from \"../models/PortalClarificationModel\";\r\nimport { ReferralBox } from \"../components/ReferralBox\";\r\nimport { ApplicantService } from \"./ApplicantService\";\r\nimport { PortalContactModel } from \"../models/PortalContactModel\";\r\nimport { RateCheckerTile } from \"../components/Completion/RateCheckerTile\";\r\nimport { SpreadTheWordTile } from \"../components/Completion/SpreadTheWordTile\";\r\nimport { StayInformedTile } from \"../components/Completion/StayInformedTile\";\r\nimport FormattedDate from \"../components/FormattedDate\";\r\nimport { ValuationDownloadButton } from \"../components/ValuationDownloadButton\";\r\nimport { LoanOfferDownloadButton } from \"../components/LoanOfferDownloadButton\";\r\nimport { ConfirmTitleDeedsTile } from \"../components/Tiles/ConfirmTitleDeedsTile\";\r\nimport { ESISTile } from \"../components/Tiles/ESISTile\";\r\nimport { CostOfCreditTile } from \"../components/Tiles/CostOfCreditTile\";\r\nimport { LifeCoverTile } from \"../components/Tiles/LifeCoverTile\";\r\n\r\ninterface ICompletionProps {\r\n}\r\n\r\ninterface ICompletionState {\r\n loading: boolean;\r\n conditions: PortalSpecialConditionsModel[] | null;\r\n clarifications: PortalClarificationModel[] | null;\r\n files: IFileItem[];\r\n detailsExpanded: boolean;\r\n refreshToggle: boolean;\r\n navigateToSolicitor: boolean;\r\n navigateToProperty: boolean;\r\n navigateToMortgageDetails: boolean;\r\n navigateToDocumentsPage: boolean;\r\n //fields: SharedFieldsCollection;\r\n sharedFields: SharedFieldsCollection;\r\n closeDateCollapsed: boolean;\r\n savingCloseDate: boolean;\r\n confirmingDetails: boolean;\r\n confirmingTitleDeeds: boolean;\r\n confirmingMetSolicitor: boolean;\r\n displayOnMobile: boolean;\r\n showReferral: boolean;\r\n contact: PortalContactModel | null;\r\n conditionsLoaded: boolean;\r\n chosenAip?: PortalAIPApplicationModel | undefined;\r\n hasHouseHunterApprovedAIPOnly: boolean;\r\n}\r\n\r\nexport class LoanCompletion extends UserContextComponent<ICompletionProps, ICompletionState> {\r\n applicantService: ApplicantService;\r\n static contextType = UserContext;\r\n static mortgagedetails: string = \"mortgagedetails\";\r\n static loanofferdetails: string = \"loanofferdetails\";\r\n\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n conditions: [],\r\n clarifications: [],\r\n files: [],\r\n detailsExpanded: false,\r\n refreshToggle: false,\r\n navigateToSolicitor: false,\r\n navigateToProperty: false,\r\n navigateToMortgageDetails: false,\r\n navigateToDocumentsPage: false,\r\n //fields: new SharedFieldsCollection(),\r\n sharedFields: new SharedFieldsCollection(),\r\n closeDateCollapsed: true,\r\n savingCloseDate: false,\r\n confirmingDetails: false,\r\n confirmingTitleDeeds: false,\r\n confirmingMetSolicitor: false,\r\n displayOnMobile: false,\r\n showReferral: false,\r\n contact: null,\r\n conditionsLoaded: false,\r\n hasHouseHunterApprovedAIPOnly: false\r\n };\r\n this.confirmTitleDeeds = this.confirmTitleDeeds.bind(this);\r\n this.refresh = this.refresh.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n let context = this.getContext();\r\n this.applicantService = new ApplicantService(context, this, context.applicantNo!);\r\n this.applicantService.getApplicantData();\r\n //this.state.fields.loadData(context.mortgage, [], true, null);\r\n this.state.sharedFields.loadData(context.mortgage, [], true, null);\r\n this.populateData();\r\n }\r\n\r\n refresh() {\r\n this.setState({refreshToggle: !this.state.refreshToggle});\r\n }\r\n\r\n formatDate(dateIn?: any): string {\r\n if(!dateIn) return '';\r\n let date = new Date(dateIn);\r\n return !date ? '' : date.getDate() + '/' + (date.getMonth() + 1) + '/' + (date.getFullYear());\r\n }\r\n\r\n getClosingDate() {\r\n let context = this.getContext();\r\n let mortgage = context.mortgage!;\r\n if (mortgage.estimatedClosingDate) {\r\n return this.formatDate(mortgage.estimatedClosingDate);\r\n } else if (mortgage.clientAdvisedClosingDate) {\r\n return this.formatDate(mortgage.clientAdvisedClosingDate);\r\n }\r\n return '';\r\n }\r\n\r\n getNextStepsItems(): TimelineItem[] {\r\n let items: TimelineItem[] = [];\r\n items.push({\r\n status: TimelineItemStatus.Inactive,\r\n title: <div className=\"timeline-text\">Step 1</div>,\r\n content: <></>,\r\n key: \"timeline-next1\"\r\n });\r\n items.push({\r\n status: TimelineItemStatus.Inactive,\r\n title: <div className=\"timeline-text\">Step 2</div>,\r\n content: <></>,\r\n key: \"timeline-next2\"\r\n });\r\n items.push({\r\n status: TimelineItemStatus.Inactive,\r\n title: <div className=\"timeline-text\">Step 3</div>,\r\n content: null,\r\n key: \"timeline-next3\"\r\n });\r\n return items;\r\n }\r\n\r\n getSpecialConditionsById(id: string): any {\r\n if (this.state.conditions === null)\r\n return;\r\n\r\n let condition = this.state.conditions.find((c: any) => {\r\n return c.specialConditionsId === id;\r\n });\r\n if (condition !== null) {\r\n return condition;\r\n }\r\n return null;\r\n }\r\n\r\n getClarificationById(id: string): any {\r\n if (this.state.clarifications === null)\r\n return;\r\n\r\n let clarification = this.state.clarifications.find((c: any) => {\r\n return c.clarificationId === id;\r\n });\r\n if (clarification !== null) {\r\n return clarification;\r\n }\r\n return null;\r\n }\r\n\r\n confirmSpecialConditionsUpload(id: string): void {\r\n const context = this.getContext();\r\n\r\n let condition = this.getSpecialConditionsById(id);\r\n if (condition !== null) {\r\n axios.post('/SpecialConditions/CompleteSpecialConditions', null, { params: { specialConditionsId: id, mortgageId: context.mortgage?.mortgageId } })\r\n .then(response => {\r\n if (condition !== null) {\r\n condition.uploaded = true;\r\n }\r\n this.setState({ conditions: this.state.conditions });\r\n });\r\n }\r\n }\r\n\r\n confirmClarificationUpload(id: string): void {\r\n const context = this.getContext();\r\n\r\n let clarification = this.getClarificationById(id);\r\n if (clarification !== null) {\r\n axios.post('/SpecialConditions/CompleteClarification', null, { params: { clarificationId: id, mortgageId: context.mortgage?.mortgageId } })\r\n .then(response => {\r\n if (clarification !== null) {\r\n clarification.uploaded = true;\r\n }\r\n this.setState({ clarifications: this.state.clarifications });\r\n });\r\n }\r\n }\r\n\r\n confirmChosenLender() {\r\n let context = this.getContext();\r\n context.mortgage!.confirmedChosenLender = true;\r\n this.setState({ refreshToggle: !this.state.refreshToggle });\r\n\r\n axios.post('/Mortgages/ConfirmChosenLender', null, { params: { mortgageId: context.mortgage?.mortgageId } })\r\n .then(response => {\r\n });\r\n }\r\n\r\n confirmTitleDeeds() {\r\n this.setState({ refreshToggle: !this.state.refreshToggle });\r\n }\r\n\r\n metWithSolicitor() {\r\n let context = this.getContext();\r\n context.mortgage!.metWithSolicitor = true;\r\n this.setState({ refreshToggle: !this.state.refreshToggle });\r\n axios.post('/Mortgages/MetWithSolicitor', null, { params: { mortgageId: context.mortgage?.mortgageId } })\r\n .then(response => {\r\n });\r\n }\r\n\r\n setClientAdvisedClosingDate() {\r\n this.setState({ savingCloseDate: true });\r\n let date = new Date(this.state.sharedFields.getFieldByName(\"clientAdvisedClosingDate\").value as string);\r\n let context = this.getContext();\r\n context.mortgage!.clientAdvisedClosingDate = date;\r\n\r\n this.setState({ refreshToggle: !this.state.refreshToggle, closeDateCollapsed: true, savingCloseDate: false });\r\n axios.post('/Mortgages/SetClientAdvisedClosingDate', null, { params: { mortgageId: context.mortgage?.mortgageId, date: date } })\r\n .then(response => {\r\n this.setState({ refreshToggle: !this.state.refreshToggle});\r\n });\r\n }\r\n\r\n onDocumentDone(mortgageDocumentId: string, status: MortgageDocumentStatusCode, conditionId: string) {\r\n this.confirmSpecialConditionsUpload(conditionId);\r\n }\r\n\r\n onLODocumentDone(mortgageDocumentId: string, status: MortgageDocumentStatusCode, clarificationId: string) {\r\n this.confirmClarificationUpload(clarificationId);\r\n }\r\n\r\n renderLOClarification(sc: PortalClarificationModel) {\r\n let context = this.getContext();\r\n let status = MortgageDocumentStatusCode.Active;\r\n if (sc.completed) {\r\n status = MortgageDocumentStatusCode.Approved;\r\n } else if (sc.uploaded) {\r\n status = MortgageDocumentStatusCode.Uploaded;\r\n }\r\n\r\n return (\r\n <div key={\"pill-paragraph\" + sc.clarificationId} style={{ marginTop: '10px' }}>\r\n <DocumentPill\r\n key={\"pill-\" + sc.mortgageDocumentId}\r\n status={status}\r\n category=\"Loan Offer\"\r\n name={sc.title}\r\n portalName={\"\"}\r\n helpText={sc.description}\r\n files={this.state.files.filter(x => x.mortgageDocumentId === sc.mortgageDocumentId)}\r\n contactId={context.contact?.contactId!}\r\n mortgageDocumentId={sc.mortgageDocumentId}\r\n onDone={(mortgageDocumentId: string, status: MortgageDocumentStatusCode) => { this.onLODocumentDone(mortgageDocumentId, status, sc.clarificationId); }}\r\n mortgageId={context.contact?.mortgageId}\r\n documentType={PortalDocumentType.Document}\r\n metFaceToFace={false}\r\n comments={\"\"}\r\n />\r\n </div>);\r\n }\r\n\r\n renderSpecialCondition(sc: PortalSpecialConditionsModel) {\r\n let context = this.getContext();\r\n let status = MortgageDocumentStatusCode.Active;\r\n if (sc.completed) {\r\n status = MortgageDocumentStatusCode.Approved;\r\n } else if (sc.uploaded) {\r\n status = MortgageDocumentStatusCode.Uploaded;\r\n }\r\n\r\n\r\n return (\r\n <div key={\"pill-paragraph\" + sc.specialConditionsId} style={{ marginTop: '10px' }}>\r\n <DocumentPill\r\n key={\"pill-\" + sc.mortgageDocumentId}\r\n status={status}\r\n category={sc.type === SpecialConditionsType.LoanofferCustomercondition ? \"Completions\" : \"Loan Offer\"}\r\n name={sc.name}\r\n portalName={\"\"}\r\n helpText={sc.description}\r\n files={this.state.files.filter(x => x.mortgageDocumentId === sc.mortgageDocumentId)}\r\n contactId={context.contact?.contactId!}\r\n mortgageDocumentId={sc.mortgageDocumentId}\r\n onDone={(mortgageDocumentId: string, status: MortgageDocumentStatusCode) => { this.onDocumentDone(mortgageDocumentId, status, sc.specialConditionsId); }}\r\n mortgageId={context.contact?.mortgageId}\r\n documentType={PortalDocumentType.Document}\r\n metFaceToFace={false}\r\n comments={\"\"}\r\n />\r\n </div>);\r\n }\r\n\r\n getStatusClass(box: string) {\r\n let context = this.getContext();\r\n if (box === LoanCompletion.mortgagedetails) {\r\n if (!context.mortgage?.propertyAddress || !context.mortgage.solicitor) {\r\n return \"box-sage\";\r\n }\r\n return \"box-chartreuse\";\r\n }\r\n if (box === LoanCompletion.loanofferdetails) {\r\n if (this.atLoanOfferConditions() || this.atLoanOfferClarifications()) {\r\n if (this.outstandingConditions()) {\r\n return \"box-error\";\r\n } else {\r\n return \"box-sage\";\r\n }\r\n } else if (context.mortgage?.loanOfferReceived) {\r\n return \"box-green\";\r\n } else if (context.mortgage?.loanOfferRequested) {\r\n return \"box-sage\";\r\n }\r\n }\r\n return \"box-gray\";\r\n }\r\n\r\n getTextClass() {\r\n // if (this.outstandingConditions()) {\r\n // return \"text-red\";\r\n // }\r\n return \"\";\r\n // if (this.atLoanOfferConditions() || this.atLoanOfferClarifications()) {\r\n // if (this.outstandingConditions())\r\n // return \"text-red\";\r\n // else\r\n // return \"text-amber\";\r\n // } else if (this.waitingForOffer()) {\r\n // return \"text-amber\";\r\n // }\r\n // return \"text-green\";\r\n }\r\n\r\n atLoanOfferConditions() {\r\n var mortgage = this.getContext().mortgage!;\r\n if (!mortgage.loanOfferRequested) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n outstandingConditions() {\r\n if (this.state.conditions !== null && \r\n this.state.conditions != undefined && \r\n this.state.conditions.filter(c => c.uploaded !== true && c.completed !== true).length > 0) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n hasIncompleteConditions() {\r\n if (this.state.conditions !== null && \r\n this.state.conditions != undefined && \r\n this.state.conditions.filter(c => c.completed !== true).length > 0) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n atLoanOfferClarifications() {\r\n var mortgage = this.getContext().mortgage!;\r\n if (mortgage.status === MortgageStatus.PreLoanOfferClarification) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n outstandingClarifications() {\r\n if (this.state.clarifications !== null && \r\n this.state.clarifications !== undefined &&\r\n this.state.clarifications.filter(c => c.uploaded !== true).length > 0) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n waitingForOffer() {\r\n var mortgage = this.getContext().mortgage!;\r\n if (!this.atLoanOfferConditions() && !this.atLoanOfferClarifications() && !mortgage.loanOfferReceived) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n loanOfferNoConditions() {\r\n var mortgage = this.getContext().mortgage!;\r\n if (mortgage.loanOfferReceived && this.state.conditionsLoaded && this.state.conditions?.length === 0) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n loanOfferNoOutstandingConditions() {\r\n var mortgage = this.getContext().mortgage!;\r\n if (mortgage.loanOfferReceived && !this.outstandingConditions()) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n private calcPercent(docs: any[]) {\r\n var completedDocs = docs.filter(i => i.uploaded).length;\r\n var allDocs = docs.length;\r\n return completedDocs / allDocs * 100;\r\n }\r\n\r\n passedLenderDetailsHoldingScreen():boolean {\r\n let context = this.getContext();\r\n let mortgage = context.mortgage!;\r\n if (mortgage.loanOfferRequested\r\n //|| mortgage.confirmedChosenLender \r\n || mortgage.type === MortgageType.RemortgagingExistingLoan\r\n || mortgage.saleAgreed\r\n || mortgage.approvalType == AIPType.FullApplication\r\n )\r\n return true;\r\n return false;\r\n }\r\n\r\n metWithSolicitorButton() {\r\n let context = this.getContext();\r\n let mortgage = context.mortgage!;\r\n if (mortgage.metWithSolicitor) {\r\n return <div className=\"float-right pe-2\"><i className=\"fa fa-circle-check fa-lg\" /></div>;\r\n }\r\n return <button className=\"btn btn-standard float-right pull-up-3\" onClick={() => this.metWithSolicitor()}>update</button>\r\n }\r\n\r\n closingDateButton() {\r\n let context = this.getContext();\r\n let mortgage = context.mortgage!;\r\n if (mortgage.estimatedClosingDate) {\r\n return <div className=\"float-right pe-2\"><i className=\"fa fa-circle-check fa-lg\" /></div>;\r\n }\r\n <button className=\"btn btn-standard float-right pull-up-3\" onClick={() => this.setState({ closeDateCollapsed: false })}>update</button>\r\n }\r\n\r\n render() {\r\n let context = this.getContext();\r\n let mortgage = context.mortgage!;\r\n let solicitor = context.mortgage?.solicitor;\r\n let inprogressColor = \"#fe972b\";\r\n let doneColor = \"#33cc99\";\r\n let allDone:boolean = mortgage.fundsReleaseDate !== null && new Date(mortgage.fundsReleaseDate) <= new Date();\r\n\r\n let title:any;\r\n let description;\r\n\r\n if (this.state.navigateToSolicitor) {\r\n return <Navigate to=\"/solicitor-details\" />\r\n }\r\n if (this.state.navigateToDocumentsPage) {\r\n return <Navigate to=\"/documents\" />\r\n }\r\n\r\n \r\n\r\n if (this.state.navigateToProperty) {\r\n return <Navigate to=\"/property\" />\r\n }\r\n\r\n if (this.state.navigateToMortgageDetails) {\r\n return <Navigate to=\"/shared\" /> \r\n }\r\n\r\n if (this.state.loading || !this.state.conditionsLoaded)\r\n return (<><p><em>Loading...</em></p></>);\r\n\r\n\r\n var names = this.getApplicantNames();\r\n if (allDone) {\r\n title = <>Welcome back, <strong>{names}</strong></>;\r\n description = <></>; // <>We’re delighted to have helped you secure your mortgage!<br />We’d like to help make the future a <span className=\"doddltext\">doddl</span> too ;-)</>;\r\n } else if (mortgage.loanOfferReceived) {\r\n if (this.outstandingConditions()) {\r\n title = <>Hi <strong>{names}</strong>, here's your Loan offer!</>;\r\n description = <>It’s now time to <strong>start gathering the final documents</strong> you’ll need for closing</>\r\n } else{\r\n title = <>Hi <strong>{names}</strong>,</>;\r\n description = <>You’re all up to date! Your lender has all the documents they need.</>\r\n }\r\n } else if (this.waitingForOffer()) {\r\n title = <>{names} we have an update for you!</>;\r\n description = <>Your lender is working on issuing your loan offer and legal pack. You can be assured we are keeping a close eye on it and will let you know as soon as it issues.</>;\r\n } else if (this.outstandingConditions()) {\r\n title = <>Hi <strong>{names}</strong>,</>;\r\n description = <>Your lender requires additional documents for your Loan offer</>;\r\n } else if (!mortgage.loanOfferRequested && !this.outstandingConditions() && !mortgage.saleAgreed && mortgage.approvalType !== AIPType.FullApplication) {\r\n title = <>Congratulations <strong>{names}</strong>!</>;\r\n description = <>Let's work on getting you that Loan offer<br/><br/><strong>Your advisor will be in contact</strong> to confirm all of you options and request your Loan offer from your lender. In the meantime, please ensure the following information is correct:</>;\r\n } else if (!mortgage.loanOfferRequested && !this.outstandingConditions()) {\r\n title = <>Hi <strong>{names}</strong>,</>;\r\n description = <>We have started to work on your formal approval and loan offer from your chosen lender<br/><strong>Your advisor will be in contact</strong> once they have reviewed all the documentation and requested your Loan offer from your lender.</>;\r\n }\r\n\r\n var categories: PortalCategoryModel[] = [];\r\n this.state.conditions?.forEach(i => { if (!categories.find(x => x.category === i.category.category) && i.category && i.category.category) categories.push(i.category) });\r\n \r\n let conditionalDocsTile = (\r\n <div className={`boxty tall ${this.outstandingConditions() ? 'box-error' : (this.hasIncompleteConditions() ? 'box-sage' : 'box-chartreuse')}`} >\r\n <h1>Conditional Docs</h1>\r\n {this.outstandingConditions()\r\n ? <>\r\n <h1 className={`pt-2`}><i className=\"fas fa-triangle-exclamation fa-lg needsattention\" /></h1>\r\n <span className={`needsattention`}><strong>Completion Docs Required</strong></span>\r\n <p className={`tight`}>Please provide the following:</p>\r\n </>\r\n : this.hasIncompleteConditions() ?\r\n <>\r\n <h1 className={`pt-2`}><i className=\"far fa-clock fa-lg\" /></h1>\r\n {categories && categories.length > 0 &&\r\n <>\r\n <p>Awaiting Confirmation:</p>\r\n <p className=\"tight\">that all your completion documents are in order</p>\r\n </>\r\n }\r\n </>\r\n :\r\n <>\r\n <h1 className={`pt-2`}><i className=\"fas fa-circle-check fa-lg\" /></h1>\r\n {categories && categories.length > 0 &&\r\n <p>Documents uploaded:</p>\r\n }\r\n </>\r\n }\r\n <Row className=\"justify-center\">\r\n {!this.waitingForOffer() && categories && categories.sort((a,b) => {return (a.order??0) > (b.order??1) ? 1 : -1;}).map((cat, idx) => (\r\n <Card key={`loan-doc-${cat?.category ?? \"\"}`} className=\"mb-3\">\r\n <Accordion style={{ minHeight: 60, borderColor: 'var(--teal)' }}>\r\n <Accordion.Item eventKey={\"LO Condition\"}>\r\n <Accordion.Header>\r\n <Row style={{ width: '100%' }}>\r\n { !cat?.faIcon && \r\n <>\r\n <Col xs={12} className=\"text-center pt-1\">\r\n <h3 className=\"s\">Other</h3>\r\n </Col>\r\n </>\r\n }\r\n { cat?.faIcon && \r\n <>\r\n <Col xs={12} className=\"text-center pt-1 nowrap\">\r\n <h3 className=\"s\">{cat.category}</h3>\r\n </Col>\r\n </>\r\n }\r\n </Row>\r\n </Accordion.Header>\r\n <Accordion.Body style={{padding: 0}}>\r\n { !cat?.faIcon && \r\n <Stack gap={2} className=\"text-start\">\r\n {this.state.clarifications !== null && this.state.clarifications !== undefined && this.state.clarifications!.map((sc: PortalClarificationModel, idx: number) => (\r\n <div key={`cond-container-${sc.clarificationId}`}>{this.renderLOClarification(sc)}</div>\r\n ))}\r\n </Stack>\r\n }\r\n { cat?.faIcon && \r\n <Stack gap={2} className=\"text-start\">\r\n {this.state.conditions !== null && this.state.clarifications !== null && this.state.conditions.filter(c => c.category.category === cat.category).map((sc: PortalSpecialConditionsModel, idx: number) => (\r\n <div key={`cond-container-${sc.specialConditionsId}`}>{this.renderSpecialCondition(sc)}</div>\r\n ))}\r\n </Stack>\r\n }\r\n </Accordion.Body>\r\n </Accordion.Item>\r\n </Accordion>\r\n </Card>\r\n ))}\r\n </Row>\r\n </div>);\r\n\r\n let loanOfferTile = (<>\r\n <div key={'loanoffer-' + mortgage.mortgageId} className={\"boxty tall \" + this.getStatusClass(LoanCompletion.loanofferdetails)}>\r\n <h1>Loan Offer</h1>\r\n {((this.outstandingConditions() && this.atLoanOfferConditions()) || (this.outstandingClarifications() && this.atLoanOfferClarifications())) &&\r\n <>\r\n <h1 className={`pt-2`}><i className=\"fas fa-triangle-exclamation fa-lg needsattention\" /></h1>\r\n <span className={`h5 needsattention`}><strong>Additional Docs Required</strong></span>\r\n <div className=\"p-4\"><button className='btn btn-standard-transparent btn-outline btn-fw' onClick={() => window.Intercom('showNewMessage')}>Speak to my Advisor</button></div>\r\n </>\r\n }\r\n {(this.atLoanOfferConditions() || this.atLoanOfferClarifications()) && categories && categories.length > 0 &&\r\n <p className={`mb-3 ${this.getTextClass()}`}><strong>UPLOAD DOCUMENTS HERE</strong></p>\r\n }\r\n {(this.waitingForOffer() || ((this.atLoanOfferConditions() || this.atLoanOfferClarifications()) && (!categories || categories.length === 0))) &&\r\n <>\r\n <h1 className={`pt-2`}><i className=\"fas fa-clock-rotate-left fa-lg\" /></h1>\r\n <span className={`h5`}><strong>Awaiting Loan Offer</strong></span>\r\n {mortgage.loanOfferRequested &&\r\n <div className=\"mt-3\">\r\n <p className=\"tight\">Date submitted <FormattedDate excludeYear={true} monthFormat=\"short\" date={mortgage.loanOfferRequested} /></p>\r\n <p className=\"tight\">Response expected <FormattedDate excludeYear={true} monthFormat=\"short\" date={mortgage.estimatedLoanOfferIssueDate} /></p>\r\n </div>\r\n }\r\n {this.state.chosenAip?.isValuationAvailable &&\r\n <ValuationDownloadButton item={this.state.chosenAip} buttonStyle=\"pill\" />\r\n }\r\n </>\r\n }\r\n {mortgage.loanOfferReceived &&\r\n <>\r\n <h1 className={`pt-2`}><i className=\"fa fa-circle-check fa-lg\" /></h1>\r\n <span className={`h5`}><strong>GRANTED</strong></span>\r\n <div className=\"mb-4\"><p className=\"tight\">Valid until <FormattedDate excludeYear={true} date={mortgage.loanOfferExpiryDate} /></p></div>\r\n \r\n {/* <p className=\"s text-start pb-2\"><em>Note: Please review to ensure terms are as per your request and if you have any queries at all please immediately let me know.</em></p> */}\r\n {mortgage.isLoanOfferAvailable && \r\n <LoanOfferDownloadButton buttonStyle=\"standard\" className=\"sage\" />\r\n }\r\n {this.state.chosenAip?.isValuationAvailable &&\r\n <ValuationDownloadButton item={this.state.chosenAip} buttonStyle=\"standard\" className=\"sage\" />\r\n }\r\n </>\r\n }\r\n <Row className=\"justify-center\">\r\n {!this.waitingForOffer() && !mortgage.loanOfferReceived && categories && categories.sort((a,b) => {return (a.order??0) > (b.order??1) ? 1 : -1;}).map((cat, idx) => (\r\n <Card key={`loan-doc-${cat?.category ?? \"\"}`} className=\"mb-3\">\r\n <Accordion style={{ minHeight: 60, borderColor: 'var(--teal)' }}>\r\n <Accordion.Item eventKey={\"LO Condition\"}>\r\n <Accordion.Header>\r\n <Row style={{ width: '100%' }}>\r\n { !cat?.faIcon && \r\n <>\r\n <Col xs={12} className=\"text-center pt-1\">\r\n <h3 className=\"s\">Other</h3>\r\n </Col>\r\n </>\r\n }\r\n { cat?.faIcon && \r\n <>\r\n <Col xs={12} className=\"text-center pt-1 nowrap\">\r\n <h3 className=\"s\">{cat.category}</h3>\r\n </Col>\r\n </>\r\n }\r\n </Row>\r\n </Accordion.Header>\r\n <Accordion.Body style={{padding: 0}}>\r\n { !cat?.faIcon && \r\n <Stack gap={2} className=\"text-start\">\r\n {this.state.clarifications !== null && this.state.clarifications !== undefined && this.state.clarifications!.map((sc: PortalClarificationModel, idx: number) => (\r\n <div key={`cond-container-${sc.clarificationId}`}>{this.renderLOClarification(sc)}</div>\r\n ))}\r\n </Stack>\r\n }\r\n { cat?.faIcon && \r\n <Stack gap={2} className=\"text-start\">\r\n {this.state.conditions !== null && this.state.clarifications !== null && this.state.conditions.filter(c => c.category.category === cat.category).map((sc: PortalSpecialConditionsModel, idx: number) => (\r\n <div key={`cond-container-${sc.specialConditionsId}`}>{this.renderSpecialCondition(sc)}</div>\r\n ))}\r\n </Stack>\r\n }\r\n </Accordion.Body>\r\n </Accordion.Item>\r\n </Accordion>\r\n </Card>\r\n ))}\r\n </Row>\r\n </div>\r\n\r\n </>);\r\n\r\n let referralTile = (<>\r\n <ReferralBox horizontal style={(allDone ? {paddingBottom: 30}: {}) }></ReferralBox>\r\n </>);\r\n\r\n var mortgageDetailsLarge = (<>\r\n <div key={'completion-' + mortgage.mortgageId} className={`boxty wide ${this.getStatusClass(LoanCompletion.mortgagedetails)} ${this.passedLenderDetailsHoldingScreen() ? \"text-start\" : \"\"} minheight221`} style={{paddingBottom: 25}}>\r\n {/* <h1>{mortgage.chosenLenderFullName}</h1> */}\r\n <Row className=\"mt-3 mb-2 text-center\">\r\n <Col xs={4}>\r\n <p className=\"mb-2\">Mortgage Details</p>\r\n <div className=\"mortgage-detail-div\">\r\n <p className=\"impact tight\">{mortgage.mortgageAmountProposedFormatted}</p>\r\n <p className=\"impact tight\">{mortgage.mortgageTerm} Years</p>\r\n <p className=\"impact tight\">{mortgage.fixedTermYearsProposed ? mortgage.fixedTermYearsProposed + \" Years fixed*\" : \"Variable rate\"}</p>\r\n </div>\r\n <div className=\"mt-2 mt-md-3 mb-3 mb-md-0 pointer\" onClick={ () => this.setState({navigateToMortgageDetails: true})}><i className=\"fa fa-pencil\"></i></div>\r\n </Col>\r\n <Col xs={4} className=\"ps-5 pe-5\">\r\n <p className={\"mb-2\"}>Property Details</p>\r\n {!mortgage.propertyAddress &&\r\n <button className='btn big btn-dark mt-3' onClick={() => { this.setState({ navigateToProperty: true }) }}>+ property details</button>\r\n }\r\n {mortgage.propertyAddress &&\r\n <>\r\n <div className=\"mortgage-detail-div\">\r\n <p className=\"impact\">{mortgage.propertyAddress!.replace(\", Ireland\", \"\").replace(\" Ireland\", \"\")}</p>\r\n </div>\r\n <div className=\"mt-2 mt-md-3 mb-3 mb-md-0 pointer\" onClick={ () => this.setState({navigateToProperty: true})}><i className=\"fa fa-pencil\"></i></div>\r\n {/* <p>Value: <strong>{mortgage.type === MortgageType.RemortgagingExistingLoan ? mortgage.propertyValueFormatted : mortgage.purchasePriceFormatted}</strong></p> */}\r\n </>\r\n }\r\n </Col>\r\n <Col xs={4}>\r\n <p className={\"mb-2\"}>Solicitor</p>\r\n {(solicitor && solicitor.address1Line1 && solicitor.companyName)\r\n ?\r\n <>\r\n <div className=\"mortgage-detail-div\">\r\n <p className=\"impact tight\">{solicitor.companyName}</p>\r\n <p className=\"impact tight\">{solicitor.address1Line1!.replace(\", Ireland\", \"\").replace(\" Ireland\", \"\")}</p>\r\n <p className=\"impact tight\">{solicitor.mobile}</p>\r\n </div>\r\n <div className=\"mt-2 mt-md-3 mb-3 mb-md-0 pointer\" onClick={ () => this.setState({navigateToSolicitor: true})}><i className=\"fa fa-pencil\"></i></div>\r\n </>\r\n :\r\n <button className='btn big btn-dark mt-3' onClick={() => { this.setState({ navigateToSolicitor: true }) }}>+ solicitor details</button>\r\n }\r\n </Col>\r\n </Row>\r\n <h6 className=\"pt-3\">*Your rate will be confirmed at draw down (currently {mortgage.offeredInterestRate}%, subject to change)</h6>\r\n </div>\r\n </>);\r\n\r\n\r\n let mortgageDetailsMini = (<>\r\n <div key={'completion-' + mortgage.mortgageId} className={`boxty tall ${this.getStatusClass(LoanCompletion.mortgagedetails)} `}>\r\n <h1 className=\"pb-0\">Chosen Lender</h1>\r\n {mortgage.chosenLenderLogo\r\n ? <img className=\"mb-2\" style={{width: \"100%\"}} src={mortgage.chosenLenderLogo}></img>\r\n : <h1>{mortgage.chosenLenderFullName}</h1>\r\n }\r\n\r\n <p className=\"tight\">Product Details</p>\r\n <p className=\"impact mb-2\">{mortgage.chosenLenderProduct}</p>\r\n\r\n <p className=\"tight\">Mortgage Amount Proposed</p>\r\n <p className=\"impact mb-2\">{mortgage.mortgageAmountProposedFormatted}</p>\r\n\r\n {!this.state.detailsExpanded &&\r\n <div className=\"pointer\" onClick={() => this.setState({ detailsExpanded: true })}><i className={\"fa fa-chevron-down\"}></i></div>\r\n }\r\n {this.state.detailsExpanded &&\r\n <>\r\n <div className=\"pointer\" onClick={() => this.setState({ detailsExpanded: false })}>\r\n\r\n <p className=\"tight\">Proposed Term</p>\r\n <p className=\"impact mb-3\">{mortgage.mortgageTerm} Years</p>\r\n\r\n <p className=\"tight\">Additional Months</p>\r\n <p className=\"impact mb-3\">{`${!mortgage.termAdditionalMonths ? '–' : mortgage.termAdditionalMonths + 'Month'}${mortgage.termAdditionalMonths??0 > 1 ? 's' : ''}`}</p>\r\n\r\n <p className=\"tight\">{mortgage.type === MortgageType.PurchasingaNewHome ? 'Purchase Price' : 'Property Value'}</p>\r\n <p className=\"impact mb-3\">{mortgage.type === MortgageType.RemortgagingExistingLoan ? mortgage.propertyValueFormatted : mortgage.purchasePriceFormatted}</p>\r\n\r\n <p className=\"tight\">Fixed Term Years Proposed</p>\r\n <p className=\"impact mb-3\">{mortgage.fixedTermYearsProposed ? mortgage.fixedTermYearsProposed + \" Years fixed*\" : \"Variable rate\"}</p>\r\n\r\n <p className={\"tight\"}>Property Details</p>\r\n {!mortgage.propertyAddress &&\r\n <button className='btn btn-standard s mb-5' onClick={() => { this.setState({ navigateToProperty: true }) }}>Enter Property Details</button>\r\n }\r\n {mortgage.propertyAddress &&\r\n <>\r\n <p className=\"impact mb-3\">{mortgage.propertyAddress!.replace(\", Ireland\", \"\").replace(\" Ireland\", \"\")}</p>\r\n </>\r\n }\r\n <p className={\"tight\"}>Solicitor</p>\r\n {solicitor && solicitor.address1Line1 && solicitor.companyName &&\r\n <>\r\n <p className=\"impact tight\">{solicitor.companyName}</p>\r\n <p className=\"impact tight\">{solicitor.address1Line1!.replace(\", Ireland\", \"\").replace(\" Ireland\", \"\")}</p>\r\n <p className=\"impact tight\">{solicitor.mobile}</p>\r\n </>\r\n }\r\n {(!solicitor || !solicitor.address1Line1 || !solicitor.companyName) && \r\n <button className='btn big btn-dark mt-3' onClick={() => { this.setState({ navigateToSolicitor: true }) }}>+ solicitor details</button>\r\n } \r\n </div>\r\n <button className='btn btn-standard-transparent btn-outline btn-fw mt-2' onClick={() => window.Intercom('showNewMessage')}>Speak to my Advisor</button>\r\n <h6 className=\"pt-3\">*Your rate will be confirmed at draw down</h6> \r\n <h6>(currently {mortgage.offeredInterestRate}%, subject to change)</h6>\r\n </>\r\n }\r\n </div>\r\n </>);\r\n\r\n let redirectToDocuments = (<>\r\n <div key={'completion-' + mortgage.mortgageId} className={`boxty tall ${this.getStatusClass(LoanCompletion.mortgagedetails)} `}>\r\n <h1 className=\"pb-0\">Additional Documentation Required</h1>\r\n\r\n <p className=\"mb-3\">Please upload additional documents here for formal approval and loan offer.</p>\r\n\r\n <div className=\"btn btn-dark next fw big\" onClick={() => this.setState({ navigateToDocumentsPage: true })}>Documents</div>\r\n </div>\r\n </>);\r\n\r\n\r\n\r\n let mortgageDetailsTile = \r\n (this.passedLenderDetailsHoldingScreen())\r\n ? mortgageDetailsMini \r\n : mortgageDetailsLarge;\r\n\r\n let contents = (\r\n <>\r\n <PortalPage className={`bump-right ${allDone || !this.passedLenderDetailsHoldingScreen() ? 'complete' : ''}`}\r\n title={title} \r\n description={description}>\r\n <>\r\n {!this.passedLenderDetailsHoldingScreen() && \r\n <Row className=\"justify-center max-w-wide ms-5 me-5\">\r\n <Col>\r\n {mortgageDetailsTile}\r\n </Col>\r\n </Row>\r\n }\r\n {this.passedLenderDetailsHoldingScreen() && !allDone && !mortgage.loanOfferReceived &&\r\n <>\r\n <Row>\r\n {context.mortgage?.type === MortgageType.PurchasingaNewHome && this.state.hasHouseHunterApprovedAIPOnly &&\r\n <Col xs={4} className=\"mb-3\">\r\n {redirectToDocuments}\r\n </Col>\r\n }\r\n <Col xs={4} className=\"mb-3\">\r\n {mortgageDetailsTile}\r\n </Col>\r\n <Col xs={4} className=\"mb-3\">\r\n {loanOfferTile}\r\n </Col>\r\n {context.mortgage?.type === MortgageType.RemortgagingExistingLoan && context.mortgage!.confirmedTitleDeeds !== YesNoBlank.Yes &&\r\n <Col xs={4} className=\"mb-3\">\r\n <ConfirmTitleDeedsTile className='tall' confirmedTitleDeeds={this.confirmTitleDeeds} />\r\n </Col>\r\n }\r\n {!mortgage.hasInsuranceQuote &&\r\n <Col xs={4}>\r\n <LifeCoverTile padding={false} onDone={this.refresh} />\r\n </Col>\r\n }\r\n {context.mortgage?.isEsisAvailable && !context.mortgage!.isEsisDownloaded &&\r\n <Col xs={4} className=\"mb-3\">\r\n <ESISTile className='tall'/>\r\n </Col>\r\n }\r\n {context.mortgage?.isCostOfCreditAvailable && !context.mortgage!.isEsisDownloaded &&\r\n <Col xs={4} className=\"mb-3\">\r\n <CostOfCreditTile className='tall'/> \r\n </Col>\r\n }\r\n </Row>\r\n </>\r\n }\r\n {this.passedLenderDetailsHoldingScreen() && !allDone && mortgage.loanOfferReceived &&\r\n <>\r\n <Row>\r\n <Col xs={4} className=\"mb-3\">\r\n {mortgageDetailsTile}\r\n </Col>\r\n <Col xs={4} className=\"mb-3\">\r\n {loanOfferTile}\r\n </Col>\r\n <Col xs={4} className=\"mb-3\">\r\n {conditionalDocsTile}\r\n </Col>\r\n {context.mortgage?.type === MortgageType.RemortgagingExistingLoan && context.mortgage!.confirmedTitleDeeds !== YesNoBlank.Yes &&\r\n <Col xs={4} className=\"mb-3\">\r\n <ConfirmTitleDeedsTile className='tall' confirmedTitleDeeds={this.confirmTitleDeeds} />\r\n </Col>\r\n }\r\n {!mortgage.hasInsuranceQuote &&\r\n <Col xs={4}>\r\n <LifeCoverTile padding={false} />\r\n </Col>\r\n }\r\n {context.mortgage?.isEsisAvailable && !context.mortgage!.isEsisDownloaded &&\r\n <Col xs={4} className=\"mb-3\">\r\n <ESISTile className='tall'/>\r\n </Col>\r\n }\r\n {context.mortgage?.isCostOfCreditAvailable && !context.mortgage!.isCostOfCreditDownloaded &&\r\n <Col xs={4} className=\"mb-3\">\r\n <CostOfCreditTile className='tall'/> \r\n </Col>\r\n }\r\n </Row>\r\n </>\r\n }\r\n {this.passedLenderDetailsHoldingScreen() && allDone &&\r\n <>\r\n <Row className=\"pb-3\">\r\n <Col lg={8}>\r\n {referralTile}\r\n </Col>\r\n <Col lg={4}>\r\n <SpreadTheWordTile />\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col lg={4}>\r\n <RateCheckerTile />\r\n </Col>\r\n <Col lg={4}>\r\n {mortgageDetailsTile}\r\n </Col>\r\n <Col lg={4}>\r\n <StayInformedTile />\r\n </Col>\r\n </Row>\r\n </>\r\n }\r\n\r\n </>\r\n <Modal fullscreen=\"lg-down\" show={!this.state.closeDateCollapsed} onHide={() => { this.setState({ closeDateCollapsed: true }); }} centered>\r\n <Modal.Header closeButton>\r\n </Modal.Header>\r\n <Modal.Body>\r\n <Container>\r\n <Row>\r\n <Col>\r\n <FormControl light icon=\"far fa-calendar\" field={this.state.sharedFields.getFieldByName(\"clientAdvisedClosingDate\")} ></FormControl>\r\n </Col>\r\n </Row>\r\n </Container>\r\n </Modal.Body>\r\n <Modal.Footer>\r\n {this.state.savingCloseDate &&\r\n <Icons.Spinner animation=\"border\" role=\"status\" />\r\n }\r\n {!this.state.savingCloseDate &&\r\n <button className=\"btn btn-standard btn-wide\" onClick={() => { this.setClientAdvisedClosingDate(); }}>\r\n Save\r\n </button>\r\n }\r\n </Modal.Footer>\r\n </Modal>\r\n </PortalPage>\r\n </>\r\n );\r\n\r\n return contents;\r\n }\r\n\r\n async populateData() {\r\n const context = this.context as UserContextState;\r\n let applicant:PortalContactModel = (context.contact?.contact1Id === context.mortgage?.primaryApplicant.contactId ? context.mortgage?.primaryApplicant : context.mortgage?.secondaryApplicant)!;\r\n\r\n if (context.contact === null)\r\n return;\r\n\r\n axios.get(\"/AIPApplications/GetAIPApplicationsByMortgageId?mortgageId=\" + context.contact.mortgageId)\r\n .then((response) => {\r\n let aips: PortalAIPApplicationModel[] = response.data;\r\n let chosenAip: PortalAIPApplicationModel | undefined = aips.find(a => a.lenderChoice === context.mortgage?.chosenLender && a.type === AIPType.FullApplication);\r\n if (chosenAip === undefined) aips.find(a => a.lenderChoice === context.mortgage?.chosenLender);\r\n let houseHunterAIPCount: number = aips.filter(a => a.type === AIPType.HouseHunter && (a.aipDdlStatus === AIPDDLStatus.ApprovedByLender || a.aipDdlStatus === AIPDDLStatus.Proceeding)).length;\r\n let fullAIPCount: number = aips.filter(a => a.type === AIPType.FullApplication && (a.aipDdlStatus === AIPDDLStatus.ApprovedByLender || a.aipDdlStatus === AIPDDLStatus.Proceeding)).length;\r\n let houseHunterApprovedAIPOnly: boolean = false;\r\n if (houseHunterAIPCount > 0 && fullAIPCount === 0) { \r\n this.setState({ loading: false, chosenAip: chosenAip, hasHouseHunterApprovedAIPOnly: true, conditionsLoaded: true, contact: applicant });\r\n }\r\n else if (this.atLoanOfferConditions()) {\r\n this.loadFiles(chosenAip, chosenAip?.specialConditions, applicant);\r\n } else if (this.atLoanOfferClarifications()) {\r\n axios.get(\"/SpecialConditions/GetLoanOfferClarificationsByMortgageId?mortgageId=\" + context.contact!.mortgageId)\r\n .then((response) => {\r\n let clarifications: PortalClarificationModel[] = response.data;\r\n if (clarifications) {\r\n this.loadFiles(chosenAip, clarifications, applicant);\r\n }\r\n });\r\n } else if (context.mortgage?.loanOfferReceived) {\r\n axios.get(\"/SpecialConditions/GetLoanOfferConditionsByMortgageId?mortgageId=\" + context.contact!.mortgageId)\r\n .then((response) => {\r\n this.loadFiles(chosenAip, response.data, applicant);\r\n });\r\n } else {\r\n this.setState({ loading: false, chosenAip: chosenAip, hasHouseHunterApprovedAIPOnly: houseHunterApprovedAIPOnly, conditionsLoaded: true, contact: applicant});\r\n }\r\n });\r\n\r\n }\r\n\r\n private loadFiles(chosenAip: PortalAIPApplicationModel | undefined, data: any, applicant: PortalContactModel): void {\r\n const context = this.getContext();\r\n let url = `/sp/GetFiles?mortgageId=${context.mortgage?.mortgageId}`;\r\n axios.get(url)\r\n .then((response) => {\r\n let files = response.data;\r\n this.setState({ loading: false, chosenAip: chosenAip, files: files, conditions: data, clarifications: data, contact: applicant, conditionsLoaded: true });\r\n })\r\n .catch((error) => {\r\n this.setState({ loading: false, chosenAip: chosenAip, conditionsLoaded: true, contact: applicant });\r\n });\r\n }\r\n\r\n}","import './Documents.css';\r\nimport { UserContextComponent } from '../components/UserContextComponent';\r\nimport axios from 'axios';\r\nimport { Row, Col, Button } from 'react-bootstrap';\r\nimport { PortalPage } from '../components/PortalPage';\r\nimport UserContextState from '../components/UserContext';\r\nimport { PortalAIPApplicationModel } from '../models/PortalAIPApplication';\r\nimport \"./AIPApplication.css\";\r\nimport \"./LenderConfirmation.css\";\r\nimport React from 'react';\r\nimport * as Icons from \"react-bootstrap\";\r\nimport { ApplicantMenu } from '../components/ApplicantMenu';\r\nimport { SideNav } from '../components/SideNav';\r\n\r\ninterface ILenderConfirmationState {\r\n loading: boolean;\r\n applications: PortalAIPApplicationModel[];\r\n}\r\n\r\nexport class LenderConfirmation extends UserContextComponent<any, ILenderConfirmationState> {\r\n constructor(props: any) {\r\n super(props);\r\n this.state = { loading: true, applications: []};\r\n }\r\n\r\n componentDidMount() {\r\n this.populateData();\r\n }\r\n\r\n confirmApplication(application: PortalAIPApplicationModel): void {\r\n const context = this.getContext();\r\n application.confirming = true;\r\n this.setState({ applications: this.state.applications});\r\n axios.post('/AIPApplications/ConfirmApplication', null, { params: { mortgageId: context.mortgage?.mortgageId, applicationId: application.aipApplicationId } })\r\n .then(response => {\r\n application.confirmed = true;\r\n application.confirming = false;\r\n this.setState({ applications: this.state.applications });\r\n });\r\n }\r\n\r\n render() {\r\n let context = this.getContext();\r\n \r\n if (this.state.loading || context.mortgage === null)\r\n return (<><p><em>Loading...</em></p></>);\r\n\r\n return (\r\n <>\r\n <PortalPage className=\"bump-right\" title={\"Lender Confirmation\"} description={\"\"} subtitle={\"Please confirm you are happy for us to apply for Approval in Principle on your behalf below\"}>\r\n <>\r\n <Row>\r\n <Col md={1}></Col>\r\n <Col md={10}>\r\n <Row className=\"justify-content-center\">\r\n {this.state.applications !== null && this.state.applications.map((item) => (\r\n <Col md={4} sm={12} key={item.aipApplicationId} style={{ marginBottom: '10px' }}>\r\n <div className={\"box aip-submitted\"} style={{position: \"relative\", paddingBottom: 80}}>\r\n <h1>{item.lender}</h1>\r\n <p>We will submit as application for an Approval in Principle to {item.lender} on your behalf for <span>{item.amount}</span></p>\r\n {item.specialOffers != null && <>\r\n <h1>Special Offers</h1>\r\n <p>{item.specialOffers}</p>\r\n </>}\r\n <h1>Happy to proceed?</h1>\r\n <p>Please confirm you are happy for us to proceed once ready.</p>\r\n <div style={{position: \"absolute\", width: \"100%\", paddingBottom: 20, left: 0, bottom: 0}}>\r\n {item.confirming === true &&\r\n <Icons.Spinner animation=\"border\" role=\"status\" />\r\n }\r\n {item.confirming !== true && item.confirmed === false &&\r\n <Button className=\"btn btn-standard\" variant=\"secondary\" onClick={e => { this.confirmApplication(item); }}>Proceed</Button>\r\n }\r\n {item.confirming !== true && item.confirmed === true &&\r\n <Button className=\"btn btn-standard\" variant=\"secondary\" disabled={true}>Confirmed</Button>\r\n }\r\n </div>\r\n </div>\r\n </Col>\r\n ))}\r\n </Row>\r\n </Col>\r\n <Col md={1}></Col>\r\n </Row><br />\r\n <Row>\r\n <Col md={12} sm={12}>\r\n <h1>What's next</h1>\r\n <p>Once we have completed your profile and all the documentation we will prepare your application form and will send it to you for signing via DocuSign.</p>\r\n </Col>\r\n </Row>\r\n </>\r\n </PortalPage>\r\n </>\r\n );\r\n }\r\n\r\n async populateData() {\r\n const context = this.context as UserContextState;\r\n if (context.contact === null)\r\n return;\r\n\r\n axios.get(\"/AIPApplications/GetAIPApplicationsByMortgageId?mortgageId=\" + context.contact.mortgageId)\r\n .then((response) => {\r\n this.setState({ applications: response.data, loading: false });\r\n });\r\n }\r\n}\r\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Enumeration of operations that are instrumented by have their performance measured by the PerformanceClient.\n *\n * @export\n * @enum {number}\n */\nexport enum PerformanceEvents {\n\n /**\n * acquireTokenByCode API (msal-browser and msal-node).\n * Used to acquire tokens by trading an authorization code against the token endpoint.\n */\n AcquireTokenByCode = \"acquireTokenByCode\",\n\n /**\n * acquireTokenByRefreshToken API (msal-browser and msal-node).\n * Used to renew an access token using a refresh token against the token endpoint.\n */\n AcquireTokenByRefreshToken = \"acquireTokenByRefreshToken\",\n\n /**\n * acquireTokenSilent API (msal-browser and msal-node).\n * Used to silently acquire a new access token (from the cache or the network).\n */\n AcquireTokenSilent = \"acquireTokenSilent\",\n\n /**\n * acquireTokenSilentAsync (msal-browser).\n * Internal API for acquireTokenSilent.\n */\n AcquireTokenSilentAsync = \"acquireTokenSilentAsync\",\n\n /**\n * acquireTokenPopup (msal-browser).\n * Used to acquire a new access token interactively through pop ups\n */\n AcquireTokenPopup = \"acquireTokenPopup\",\n\n /**\n * getPublicKeyThumbprint API in CryptoOpts class (msal-browser).\n * Used to generate a public/private keypair and generate a public key thumbprint for pop requests.\n */\n CryptoOptsGetPublicKeyThumbprint = \"cryptoOptsGetPublicKeyThumbprint\",\n\n /**\n * signJwt API in CryptoOpts class (msal-browser).\n * Used to signed a pop token.\n */\n CryptoOptsSignJwt = \"cryptoOptsSignJwt\",\n\n /**\n * acquireToken API in the SilentCacheClient class (msal-browser).\n * Used to read access tokens from the cache.\n */\n SilentCacheClientAcquireToken = \"silentCacheClientAcquireToken\",\n\n /**\n * acquireToken API in the SilentIframeClient class (msal-browser).\n * Used to acquire a new set of tokens from the authorize endpoint in a hidden iframe.\n */\n SilentIframeClientAcquireToken = \"silentIframeClientAcquireToken\",\n\n /**\n * acquireToken API in SilentRereshClient (msal-browser).\n * Used to acquire a new set of tokens from the token endpoint using a refresh token.\n */\n SilentRefreshClientAcquireToken = \"silentRefreshClientAcquireToken\",\n\n /**\n * ssoSilent API (msal-browser).\n * Used to silently acquire an authorization code and set of tokens using a hidden iframe.\n */\n SsoSilent = \"ssoSilent\",\n\n /**\n * getDiscoveredAuthority API in StandardInteractionClient class (msal-browser).\n * Used to load authority metadata for a request.\n */\n StandardInteractionClientGetDiscoveredAuthority = \"standardInteractionClientGetDiscoveredAuthority\",\n\n /**\n * acquireToken APIs in msal-browser.\n * Used to make an /authorize endpoint call with native brokering enabled.\n */\n FetchAccountIdWithNativeBroker = \"fetchAccountIdWithNativeBroker\",\n\n /**\n * acquireToken API in NativeInteractionClient class (msal-browser).\n * Used to acquire a token from Native component when native brokering is enabled.\n */\n NativeInteractionClientAcquireToken = \"nativeInteractionClientAcquireToken\",\n\n /**\n * Time spent on the network for refresh token acquisition\n */\n RefreshTokenClientExecuteTokenRequest = \"refreshTokenClientExecuteTokenRequest\",\n\n /**\n * Time spent creating default headers for requests to token endpoint\n */\n BaseClientCreateTokenRequestHeaders = \"baseClientCreateTokenRequestHeaders\",\n\n /**\n * Used to measure the time taken for completing embedded-broker handshake (PW-Broker).\n */\n BrokerHandhshake = \"brokerHandshake\",\n\n /**\n * acquireTokenByRefreshToken API in BrokerClientApplication (PW-Broker) .\n */\n AcquireTokenByRefreshTokenInBroker = \"acquireTokenByRefreshTokenInBroker\",\n\n /**\n * acquireToken API in BrokerClientApplication.\n * Used to acquire a token on behalf of the embedded application (PW-Broker).\n */\n AcquireTokenByBroker = \"acquireTokenByBroker\"\n}\n\n/**\n * State of the performance event.\n *\n * @export\n * @enum {number}\n */\nexport enum PerformanceEventStatus {\n NotStarted,\n InProgress,\n Completed\n}\n\n/**\n * Performance measurement taken by the library, including metadata about the request and application.\n *\n * @export\n * @typedef {PerformanceEvent}\n */\nexport type PerformanceEvent = {\n /**\n * Unique id for the event\n *\n * @type {string}\n */\n eventId: string,\n\n /**\n * State of the perforance measure.\n *\n * @type {PerformanceEventStatus}\n */\n status: PerformanceEventStatus,\n\n /**\n * Login authority used for the request\n *\n * @type {string}\n */\n authority: string,\n\n /**\n * Client id for the application\n *\n * @type {string}\n */\n clientId: string\n\n /**\n * Correlation ID used for the request\n *\n * @type {string}\n */\n correlationId: string,\n\n /**\n * End-to-end duration in milliseconds.\n * @date 3/22/2022 - 3:40:05 PM\n *\n * @type {number}\n */\n durationMs?: number,\n\n /**\n * Visibility of the page when the event completed.\n * Read from: https://developer.mozilla.org/docs/Web/API/Page_Visibility_API\n *\n * @type {?(string | null)}\n */\n endPageVisibility?: string | null,\n\n /**\n * Whether the result was retrieved from the cache.\n *\n * @type {(boolean | null)}\n */\n fromCache?: boolean | null,\n\n /**\n * Event name (usually in the form of classNameFunctionName)\n *\n * @type {PerformanceEvents}\n */\n name: PerformanceEvents,\n\n /**\n * Visibility of the page when the event completed.\n * Read from: https://developer.mozilla.org/docs/Web/API/Page_Visibility_API\n *\n * @type {?(string | null)}\n */\n startPageVisibility?: string | null,\n\n /**\n * Unix millisecond timestamp when the event was initiated.\n *\n * @type {number}\n */\n startTimeMs: number,\n\n /**\n * Whether or the operation completed successfully.\n *\n * @type {(boolean | null)}\n */\n success?: boolean | null,\n\n /**\n * Add specific error code in case of failure\n *\n * @type {string}\n */\n errorCode?: string,\n\n /**\n * Add specific sub error code in case of failure\n *\n * @type {string}\n */\n subErrorCode?: string,\n\n /**\n * Name of the library used for the operation.\n *\n * @type {string}\n */\n libraryName: string,\n\n /**\n * Version of the library used for the operation.\n *\n * @type {string}\n */\n libraryVersion: string,\n\n /**\n * Size of the id token\n *\n * @type {number}\n */\n idTokenSize?: number,\n\n /**\n * \n * Size of the access token\n *\n * @type {number}\n */\n\n accessTokenSize?: number,\n\n /**\n * Application name as specified by the app.\n *\n * @type {?string}\n */\n appName?: string,\n\n /**\n * Application version as specified by the app.\n *\n * @type {?string}\n */\n appVersion?: string,\n\n /**\n * Whether the response is from a native component (e.g., WAM)\n *\n * @type {?boolean}\n */\n isNativeBroker?: boolean\n};\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthError } from \"./AuthError\";\n\n/**\n * ClientAuthErrorMessage class containing string constants used by error codes and messages.\n */\nexport const JoseHeaderErrorMessage = {\n missingKidError: {\n code: \"missing_kid_error\",\n desc: \"The JOSE Header for the requested JWT, JWS or JWK object requires a keyId to be configured as the 'kid' header claim. No 'kid' value was provided.\"\n },\n missingAlgError: {\n code: \"missing_alg_error\",\n desc: \"The JOSE Header for the requested JWT, JWS or JWK object requires an algorithm to be specified as the 'alg' header claim. No 'alg' value was provided.\"\n },\n};\n\n/**\n * Error thrown when there is an error in the client code running on the browser.\n */\nexport class JoseHeaderError extends AuthError {\n constructor(errorCode: string, errorMessage?: string) {\n super(errorCode, errorMessage);\n this.name = \"JoseHeaderError\";\n\n Object.setPrototypeOf(this, JoseHeaderError.prototype);\n }\n\n /**\n * Creates an error thrown when keyId isn't set on JOSE header.\n */\n static createMissingKidError(): JoseHeaderError {\n return new JoseHeaderError(JoseHeaderErrorMessage.missingKidError.code, JoseHeaderErrorMessage.missingKidError.desc);\n }\n\n /**\n * Creates an error thrown when algorithm isn't set on JOSE header.\n */\n static createMissingAlgError(): JoseHeaderError {\n return new JoseHeaderError(JoseHeaderErrorMessage.missingAlgError.code, JoseHeaderErrorMessage.missingAlgError.desc);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Logger } from \"@azure/msal-common\";\nimport { CachedKeyPair } from \"../crypto/CryptoOps\";\nimport { AsyncMemoryStorage } from \"./AsyncMemoryStorage\";\n\nexport enum CryptoKeyStoreNames {\n asymmetricKeys = \"asymmetricKeys\",\n symmetricKeys = \"symmetricKeys\"\n}\n/**\n * MSAL CryptoKeyStore DB Version 2\n */\nexport class CryptoKeyStore {\n public asymmetricKeys: AsyncMemoryStorage<CachedKeyPair>;\n public symmetricKeys: AsyncMemoryStorage<CryptoKey>;\n public logger: Logger;\n\n constructor(logger: Logger){\n this.logger = logger;\n this.asymmetricKeys = new AsyncMemoryStorage<CachedKeyPair>(this.logger, CryptoKeyStoreNames.asymmetricKeys);\n this.symmetricKeys = new AsyncMemoryStorage<CryptoKey>(this.logger, CryptoKeyStoreNames.symmetricKeys);\n }\n\n async clear(): Promise<boolean> {\n // Delete in-memory keystores\n this.asymmetricKeys.clearInMemory();\n\t this.symmetricKeys.clearInMemory();\n\t\t\n /**\n * There is only one database, so calling clearPersistent on asymmetric keystore takes care of\n * every persistent keystore\n */\n try {\n await this.asymmetricKeys.clearPersistent();\n return true;\n } catch (e) {\n if (e instanceof Error) {\n this.logger.error(`Clearing keystore failed with error: ${e.message}`);\n } else {\n this.logger.error(\"Clearing keystore failed with unknown error\");\n }\n \n return false;\n }\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { JoseHeaderError } from \"../error/JoseHeaderError\";\nimport { JsonTypes } from \"../utils/Constants\";\n\nexport type JoseHeaderOptions = {\n typ?: JsonTypes,\n alg?: string,\n kid?: string\n};\n\nexport class JoseHeader {\n public typ?: JsonTypes;\n public alg?: string;\n public kid?: string;\n\n constructor (options: JoseHeaderOptions) {\n this.typ = options.typ;\n this.alg = options.alg;\n this.kid = options.kid;\n }\n\n /**\n * Builds SignedHttpRequest formatted JOSE Header from the\n * JOSE Header options provided or previously set on the object and returns\n * the stringified header object.\n * Throws if keyId or algorithm aren't provided since they are required for Access Token Binding.\n * @param shrHeaderOptions \n * @returns \n */\n static getShrHeaderString(shrHeaderOptions: JoseHeaderOptions): string {\n // KeyID is required on the SHR header\n if (!shrHeaderOptions.kid) {\n throw JoseHeaderError.createMissingKidError();\n }\n\n // Alg is required on the SHR header\n if (!shrHeaderOptions.alg) {\n throw JoseHeaderError.createMissingAlgError();\n }\n\n const shrHeader = new JoseHeader({\n // Access Token PoP headers must have type JWT, but the type header can be overriden for special cases\n typ: shrHeaderOptions.typ || JsonTypes.Jwt,\n kid: shrHeaderOptions.kid,\n alg: shrHeaderOptions.alg\n });\n\n return JSON.stringify(shrHeader);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Utility class for math specific functions in browser.\n */\nexport class MathUtils {\n\n /**\n * Decimal to Hex\n *\n * @param num\n */\n static decimalToHex(num: number): string {\n let hex: string = num.toString(16);\n while (hex.length < 2) {\n hex = \"0\" + hex;\n }\n return hex;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Constants , IGuidGenerator } from \"@azure/msal-common\";\nimport { MathUtils } from \"../utils/MathUtils\";\nimport { BrowserCrypto } from \"./BrowserCrypto\";\nexport class GuidGenerator implements IGuidGenerator {\n\n // browser crypto object used to generate random values\n private cryptoObj: BrowserCrypto;\n\n constructor(cryptoObj: BrowserCrypto) {\n this.cryptoObj = cryptoObj;\n }\n\n /*\n * RFC4122: The version 4 UUID is meant for generating UUIDs from truly-random or\n * pseudo-random numbers.\n * The algorithm is as follows:\n * Set the two most significant bits (bits 6 and 7) of the\n * clock_seq_hi_and_reserved to zero and one, respectively.\n * Set the four most significant bits (bits 12 through 15) of the\n * time_hi_and_version field to the 4-bit version number from\n * Section 4.1.3. Version4\n * Set all the other bits to randomly (or pseudo-randomly) chosen\n * values.\n * UUID = time-low \"-\" time-mid \"-\"time-high-and-version \"-\"clock-seq-reserved and low(2hexOctet)\"-\" node\n * time-low = 4hexOctet\n * time-mid = 2hexOctet\n * time-high-and-version = 2hexOctet\n * clock-seq-and-reserved = hexOctet:\n * clock-seq-low = hexOctet\n * node = 6hexOctet\n * Format: xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\n * y could be 1000, 1001, 1010, 1011 since most significant two bits needs to be 10\n * y values are 8, 9, A, B\n */\n generateGuid(): string {\n try {\n const buffer: Uint8Array = new Uint8Array(16);\n this.cryptoObj.getRandomValues(buffer);\n\n // buffer[6] and buffer[7] represents the time_hi_and_version field. We will set the four most significant bits (4 through 7) of buffer[6] to represent decimal number 4 (UUID version number).\n buffer[6] |= 0x40; // buffer[6] | 01000000 will set the 6 bit to 1.\n buffer[6] &= 0x4f; // buffer[6] & 01001111 will set the 4, 5, and 7 bit to 0 such that bits 4-7 == 0100 = \"4\".\n\n // buffer[8] represents the clock_seq_hi_and_reserved field. We will set the two most significant bits (6 and 7) of the clock_seq_hi_and_reserved to zero and one, respectively.\n buffer[8] |= 0x80; // buffer[8] | 10000000 will set the 7 bit to 1.\n buffer[8] &= 0xbf; // buffer[8] & 10111111 will set the 6 bit to 0.\n\n return MathUtils.decimalToHex(buffer[0]) + MathUtils.decimalToHex(buffer[1])\n + MathUtils.decimalToHex(buffer[2]) + MathUtils.decimalToHex(buffer[3])\n + \"-\" + MathUtils.decimalToHex(buffer[4]) + MathUtils.decimalToHex(buffer[5])\n + \"-\" + MathUtils.decimalToHex(buffer[6]) + MathUtils.decimalToHex(buffer[7])\n + \"-\" + MathUtils.decimalToHex(buffer[8]) + MathUtils.decimalToHex(buffer[9])\n + \"-\" + MathUtils.decimalToHex(buffer[10]) + MathUtils.decimalToHex(buffer[11])\n + MathUtils.decimalToHex(buffer[12]) + MathUtils.decimalToHex(buffer[13])\n + MathUtils.decimalToHex(buffer[14]) + MathUtils.decimalToHex(buffer[15]);\n }\n catch (err) {\n const guidHolder: string = \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\";\n const hex: string = \"0123456789abcdef\";\n let r: number = 0;\n let guidResponse: string = Constants.EMPTY_STRING;\n for (let i: number = 0; i < 36; i++) {\n if (guidHolder[i] !== \"-\" && guidHolder[i] !== \"4\") {\n // each x and y needs to be random\n r = Math.random() * 16 | 0;\n }\n if (guidHolder[i] === \"x\") {\n guidResponse += hex[r];\n } else if (guidHolder[i] === \"y\") {\n // clock-seq-and-reserved first hex is filtered and remaining hex values are random\n r &= 0x3; // bit and with 0011 to set pos 2 to zero ?0??\n r |= 0x8; // set pos 3 to 1 as 1???\n guidResponse += hex[r];\n } else {\n guidResponse += guidHolder[i];\n }\n }\n return guidResponse;\n }\n }\n\n /**\n * verifies if a string is GUID\n * @param guid\n */\n isGuid(guid: string): boolean {\n const regexGuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n return regexGuid.test(guid);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Constants } from \"@azure/msal-common\";\n\n/**\n * Utility functions for strings in a browser. See here for implementation details:\n * https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#Solution_2_%E2%80%93_JavaScript's_UTF-16_%3E_UTF-8_%3E_base64\n */\nexport class BrowserStringUtils {\n\n /**\n * Converts string to Uint8Array\n * @param sDOMStr \n */\n static stringToUtf8Arr (sDOMStr: string): Uint8Array {\n let nChr;\n let nArrLen = 0;\n const nStrLen = sDOMStr.length;\n /* mapping... */\n for (let nMapIdx = 0; nMapIdx < nStrLen; nMapIdx++) {\n nChr = sDOMStr.charCodeAt(nMapIdx);\n nArrLen += nChr < 0x80 ? 1 : nChr < 0x800 ? 2 : nChr < 0x10000 ? 3 : nChr < 0x200000 ? 4 : nChr < 0x4000000 ? 5 : 6;\n }\n\n const aBytes = new Uint8Array(nArrLen);\n\n /* transcription... */\n\n for (let nIdx = 0, nChrIdx = 0; nIdx < nArrLen; nChrIdx++) {\n nChr = sDOMStr.charCodeAt(nChrIdx);\n if (nChr < 128) {\n /* one byte */\n aBytes[nIdx++] = nChr;\n } else if (nChr < 0x800) {\n /* two bytes */\n aBytes[nIdx++] = 192 + (nChr >>> 6);\n aBytes[nIdx++] = 128 + (nChr & 63);\n } else if (nChr < 0x10000) {\n /* three bytes */\n aBytes[nIdx++] = 224 + (nChr >>> 12);\n aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\n aBytes[nIdx++] = 128 + (nChr & 63);\n } else if (nChr < 0x200000) {\n /* four bytes */\n aBytes[nIdx++] = 240 + (nChr >>> 18);\n aBytes[nIdx++] = 128 + (nChr >>> 12 & 63);\n aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\n aBytes[nIdx++] = 128 + (nChr & 63);\n } else if (nChr < 0x4000000) {\n /* five bytes */\n aBytes[nIdx++] = 248 + (nChr >>> 24);\n aBytes[nIdx++] = 128 + (nChr >>> 18 & 63);\n aBytes[nIdx++] = 128 + (nChr >>> 12 & 63);\n aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\n aBytes[nIdx++] = 128 + (nChr & 63);\n } else /* if (nChr <= 0x7fffffff) */ {\n /* six bytes */\n aBytes[nIdx++] = 252 + (nChr >>> 30);\n aBytes[nIdx++] = 128 + (nChr >>> 24 & 63);\n aBytes[nIdx++] = 128 + (nChr >>> 18 & 63);\n aBytes[nIdx++] = 128 + (nChr >>> 12 & 63);\n aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\n aBytes[nIdx++] = 128 + (nChr & 63);\n }\n }\n\n return aBytes; \n }\n\n /**\n * Converst string to ArrayBuffer\n * @param dataString \n */\n static stringToArrayBuffer(dataString: string): ArrayBuffer {\n const data = new ArrayBuffer(dataString.length);\n const dataView = new Uint8Array(data);\n for (let i: number = 0; i < dataString.length; i++) {\n dataView[i] = dataString.charCodeAt(i);\n }\n return data;\n }\n\n /**\n * Converts Uint8Array to a string\n * @param aBytes \n */\n static utf8ArrToString (aBytes: Uint8Array): string {\n let sView = Constants.EMPTY_STRING;\n for (let nPart, nLen = aBytes.length, nIdx = 0; nIdx < nLen; nIdx++) {\n nPart = aBytes[nIdx];\n sView += String.fromCharCode(\n nPart > 251 && nPart < 254 && nIdx + 5 < nLen ? /* six bytes */\n /* (nPart - 252 << 30) may be not so safe in ECMAScript! So...: */\n (nPart - 252) * 1073741824 + (aBytes[++nIdx] - 128 << 24) + (aBytes[++nIdx] - 128 << 18) + (aBytes[++nIdx] - 128 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\n : nPart > 247 && nPart < 252 && nIdx + 4 < nLen ? /* five bytes */\n (nPart - 248 << 24) + (aBytes[++nIdx] - 128 << 18) + (aBytes[++nIdx] - 128 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\n : nPart > 239 && nPart < 248 && nIdx + 3 < nLen ? /* four bytes */\n (nPart - 240 << 18) + (aBytes[++nIdx] - 128 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\n : nPart > 223 && nPart < 240 && nIdx + 2 < nLen ? /* three bytes */\n (nPart - 224 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\n : nPart > 191 && nPart < 224 && nIdx + 1 < nLen ? /* two bytes */\n (nPart - 192 << 6) + aBytes[++nIdx] - 128\n : /* nPart < 127 ? */ /* one byte */\n nPart\n );\n }\n return sView;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Constants } from \"@azure/msal-common\";\nimport { BrowserStringUtils } from \"../utils/BrowserStringUtils\";\n\n/**\n * Class which exposes APIs to encode plaintext to base64 encoded string. See here for implementation details:\n * https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#Solution_2_%E2%80%93_JavaScript's_UTF-16_%3E_UTF-8_%3E_base64\n */\nexport class Base64Encode {\n \n /**\n * Returns URL Safe b64 encoded string from a plaintext string.\n * @param input \n */\n urlEncode(input: string): string {\n return encodeURIComponent(this.encode(input)\n .replace(/=/g, Constants.EMPTY_STRING)\n .replace(/\\+/g, \"-\")\n .replace(/\\//g, \"_\"));\n }\n\n /**\n * Returns URL Safe b64 encoded string from an int8Array.\n * @param inputArr \n */\n urlEncodeArr(inputArr: Uint8Array): string {\n return this.base64EncArr(inputArr)\n .replace(/=/g, Constants.EMPTY_STRING)\n .replace(/\\+/g, \"-\")\n .replace(/\\//g, \"_\");\n }\n\n /**\n * Returns b64 encoded string from plaintext string.\n * @param input \n */\n encode(input: string): string {\n const inputUtf8Arr = BrowserStringUtils.stringToUtf8Arr(input);\n return this.base64EncArr(inputUtf8Arr);\n }\n\n /**\n * Base64 encode byte array\n * @param aBytes \n */\n private base64EncArr(aBytes: Uint8Array): string { \n const eqLen = (3 - (aBytes.length % 3)) % 3;\n let sB64Enc = Constants.EMPTY_STRING;\n \n for (let nMod3, nLen = aBytes.length, nUint24 = 0, nIdx = 0; nIdx < nLen; nIdx++) {\n nMod3 = nIdx % 3;\n /* Uncomment the following line in order to split the output in lines 76-character long: */\n /*\n *if (nIdx > 0 && (nIdx * 4 / 3) % 76 === 0) { sB64Enc += \"\\r\\n\"; }\n */\n nUint24 |= aBytes[nIdx] << (16 >>> nMod3 & 24);\n if (nMod3 === 2 || aBytes.length - nIdx === 1) {\n sB64Enc += String.fromCharCode(\n this.uint6ToB64(nUint24 >>> 18 & 63), \n this.uint6ToB64(nUint24 >>> 12 & 63), \n this.uint6ToB64(nUint24 >>> 6 & 63), \n this.uint6ToB64(nUint24 & 63)\n );\n nUint24 = 0;\n }\n }\n\n return eqLen === 0 ? sB64Enc : sB64Enc.substring(0, sB64Enc.length - eqLen) + (eqLen === 1 ? \"=\" : \"==\");\n }\n\n /**\n * Base64 string to array encoding helper\n * @param nUint6 \n */\n private uint6ToB64 (nUint6: number): number {\n return nUint6 < 26 ?\n nUint6 + 65\n : nUint6 < 52 ?\n nUint6 + 71\n : nUint6 < 62 ?\n nUint6 - 4\n : nUint6 === 62 ?\n 43\n : nUint6 === 63 ?\n 47\n :\n 65;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Constants } from \"@azure/msal-common\";\nimport { BrowserStringUtils } from \"../utils/BrowserStringUtils\";\n\n/**\n * Class which exposes APIs to decode base64 strings to plaintext. See here for implementation details:\n * https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#Solution_2_%E2%80%93_JavaScript's_UTF-16_%3E_UTF-8_%3E_base64\n */\nexport class Base64Decode {\n\n /**\n * Returns a URL-safe plaintext decoded string from b64 encoded input.\n * @param input \n */\n decode(input: string): string {\n let encodedString = input.replace(/-/g, \"+\").replace(/_/g, \"/\");\n switch (encodedString.length % 4) {\n case 0:\n break;\n case 2:\n encodedString += \"==\";\n break;\n case 3:\n encodedString += \"=\";\n break;\n default:\n throw new Error(\"Invalid base64 string\");\n }\n\n const inputUtf8Arr = this.base64DecToArr(encodedString);\n return BrowserStringUtils.utf8ArrToString(inputUtf8Arr);\n }\n\n /**\n * Decodes base64 into Uint8Array\n * @param base64String \n * @param nBlockSize \n */\n private base64DecToArr(base64String: string, nBlockSize?: number): Uint8Array {\n const sB64Enc = base64String.replace(/[^A-Za-z0-9\\+\\/]/g, Constants.EMPTY_STRING);\n const nInLen = sB64Enc.length;\n const nOutLen = nBlockSize ? Math.ceil((nInLen * 3 + 1 >>> 2) / nBlockSize) * nBlockSize : nInLen * 3 + 1 >>> 2;\n const aBytes = new Uint8Array(nOutLen);\n\n for (let nMod3, nMod4, nUint24 = 0, nOutIdx = 0, nInIdx = 0; nInIdx < nInLen; nInIdx++) {\n nMod4 = nInIdx & 3;\n nUint24 |= this.b64ToUint6(sB64Enc.charCodeAt(nInIdx)) << 18 - 6 * nMod4;\n if (nMod4 === 3 || nInLen - nInIdx === 1) {\n for (nMod3 = 0; nMod3 < 3 && nOutIdx < nOutLen; nMod3++, nOutIdx++) {\n aBytes[nOutIdx] = nUint24 >>> (16 >>> nMod3 & 24) & 255;\n }\n nUint24 = 0;\n }\n }\n\n return aBytes;\n }\n\n /**\n * Base64 string to array decoding helper\n * @param charNum \n */\n private b64ToUint6(charNum: number): number {\n return charNum > 64 && charNum < 91 ?\n charNum - 65\n : charNum > 96 && charNum < 123 ? \n charNum - 71\n : charNum > 47 && charNum < 58 ?\n charNum + 4\n : charNum === 43 ?\n 62\n : charNum === 47 ?\n 63\n :\n 0;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthError, StringUtils } from \"@azure/msal-common\";\n\n/**\n * BrowserAuthErrorMessage class containing string constants used by error codes and messages.\n */\nexport const BrowserAuthErrorMessage = {\n pkceNotGenerated: {\n code: \"pkce_not_created\",\n desc: \"The PKCE code challenge and verifier could not be generated.\"\n },\n cryptoDoesNotExist: {\n code: \"crypto_nonexistent\",\n desc: \"The crypto object or function is not available.\"\n },\n httpMethodNotImplementedError: {\n code: \"http_method_not_implemented\",\n desc: \"The HTTP method given has not been implemented in this library.\"\n },\n emptyNavigateUriError: {\n code: \"empty_navigate_uri\",\n desc: \"Navigation URI is empty. Please check stack trace for more info.\"\n },\n hashEmptyError: {\n code: \"hash_empty_error\",\n desc: \"Hash value cannot be processed because it is empty. Please verify that your redirectUri is not clearing the hash. For more visit: aka.ms/msaljs/browser-errors.\"\n },\n hashDoesNotContainStateError: {\n code: \"no_state_in_hash\",\n desc: \"Hash does not contain state. Please verify that the request originated from msal.\"\n },\n hashDoesNotContainKnownPropertiesError: {\n code: \"hash_does_not_contain_known_properties\",\n desc: \"Hash does not contain known properites. Please verify that your redirectUri is not changing the hash. For more visit: aka.ms/msaljs/browser-errors.\"\n },\n unableToParseStateError: {\n code: \"unable_to_parse_state\",\n desc: \"Unable to parse state. Please verify that the request originated from msal.\"\n },\n stateInteractionTypeMismatchError: {\n code: \"state_interaction_type_mismatch\",\n desc: \"Hash contains state but the interaction type does not match the caller.\"\n },\n interactionInProgress: {\n code: \"interaction_in_progress\",\n desc: \"Interaction is currently in progress. Please ensure that this interaction has been completed before calling an interactive API. For more visit: aka.ms/msaljs/browser-errors.\"\n },\n popupWindowError: {\n code: \"popup_window_error\",\n desc: \"Error opening popup window. This can happen if you are using IE or if popups are blocked in the browser.\"\n },\n emptyWindowError: {\n code: \"empty_window_error\",\n desc: \"window.open returned null or undefined window object.\"\n },\n userCancelledError: {\n code: \"user_cancelled\",\n desc: \"User cancelled the flow.\"\n },\n monitorPopupTimeoutError: {\n code: \"monitor_window_timeout\",\n desc: \"Token acquisition in popup failed due to timeout. For more visit: aka.ms/msaljs/browser-errors.\"\n },\n monitorIframeTimeoutError: {\n code: \"monitor_window_timeout\",\n desc: \"Token acquisition in iframe failed due to timeout. For more visit: aka.ms/msaljs/browser-errors.\"\n },\n redirectInIframeError: {\n code: \"redirect_in_iframe\",\n desc: \"Redirects are not supported for iframed or brokered applications. Please ensure you are using MSAL.js in a top frame of the window if using the redirect APIs, or use the popup APIs.\"\n },\n blockTokenRequestsInHiddenIframeError: {\n code: \"block_iframe_reload\",\n desc: \"Request was blocked inside an iframe because MSAL detected an authentication response. For more visit: aka.ms/msaljs/browser-errors\"\n },\n blockAcquireTokenInPopupsError: {\n code: \"block_nested_popups\",\n desc: \"Request was blocked inside a popup because MSAL detected it was running in a popup.\"\n },\n iframeClosedPrematurelyError: {\n code: \"iframe_closed_prematurely\",\n desc: \"The iframe being monitored was closed prematurely.\"\n },\n silentLogoutUnsupportedError: {\n code: \"silent_logout_unsupported\",\n desc: \"Silent logout not supported. Please call logoutRedirect or logoutPopup instead.\"\n },\n noAccountError: {\n code: \"no_account_error\",\n desc: \"No account object provided to acquireTokenSilent and no active account has been set. Please call setActiveAccount or provide an account on the request.\"\n },\n silentPromptValueError: {\n code: \"silent_prompt_value_error\",\n desc: \"The value given for the prompt value is not valid for silent requests - must be set to 'none'.\"\n },\n noTokenRequestCacheError: {\n code: \"no_token_request_cache_error\",\n desc: \"No token request found in cache.\"\n },\n unableToParseTokenRequestCacheError: {\n code: \"unable_to_parse_token_request_cache_error\",\n desc: \"The cached token request could not be parsed.\"\n },\n noCachedAuthorityError: {\n code: \"no_cached_authority_error\",\n desc: \"No cached authority found.\"\n },\n authRequestNotSet: {\n code: \"auth_request_not_set_error\",\n desc: \"Auth Request not set. Please ensure initiateAuthRequest was called from the InteractionHandler\"\n },\n invalidCacheType: {\n code: \"invalid_cache_type\",\n desc: \"Invalid cache type\"\n },\n notInBrowserEnvironment: {\n code: \"non_browser_environment\",\n desc: \"Login and token requests are not supported in non-browser environments.\"\n },\n databaseNotOpen: {\n code: \"database_not_open\",\n desc: \"Database is not open!\"\n },\n noNetworkConnectivity: {\n code: \"no_network_connectivity\",\n desc: \"No network connectivity. Check your internet connection.\"\n },\n postRequestFailed: {\n code: \"post_request_failed\",\n desc: \"Network request failed: If the browser threw a CORS error, check that the redirectUri is registered in the Azure App Portal as type 'SPA'\"\n },\n getRequestFailed: {\n code: \"get_request_failed\",\n desc: \"Network request failed. Please check the network trace to determine root cause.\"\n },\n failedToParseNetworkResponse: {\n code: \"failed_to_parse_response\",\n desc: \"Failed to parse network response. Check network trace.\"\n },\n unableToLoadTokenError: {\n code: \"unable_to_load_token\",\n desc: \"Error loading token to cache.\"\n },\n signingKeyNotFoundInStorage: {\n code: \"crypto_key_not_found\",\n desc: \"Cryptographic Key or Keypair not found in browser storage.\"\n },\n authCodeRequired: {\n code: \"auth_code_required\",\n desc: \"An authorization code must be provided (as the `code` property on the request) to this flow.\"\n },\n authCodeOrNativeAccountRequired: {\n code: \"auth_code_or_nativeAccountId_required\",\n desc: \"An authorization code or nativeAccountId must be provided to this flow.\"\n },\n databaseUnavailable: {\n code: \"database_unavailable\",\n desc: \"IndexedDB, which is required for persistent cryptographic key storage, is unavailable. This may be caused by browser privacy features which block persistent storage in third-party contexts.\"\n },\n unableToAcquireTokenFromNativePlatform: {\n code: \"unable_to_acquire_token_from_native_platform\",\n desc: \"Unable to acquire token from native platform. For a list of possible reasons visit aka.ms/msaljs/browser-errors.\"\n },\n nativeHandshakeTimeout: {\n code: \"native_handshake_timeout\",\n desc: \"Timed out while attempting to establish connection to browser extension\"\n },\n nativeExtensionNotInstalled: {\n code: \"native_extension_not_installed\",\n desc: \"Native extension is not installed. If you think this is a mistake call the initialize function.\"\n },\n nativeConnectionNotEstablished: {\n code: \"native_connection_not_established\",\n desc: \"Connection to native platform has not been established. Please install a compatible browser extension and run initialize(). For more please visit aka.ms/msaljs/browser-errors.\"\n },\n nativeBrokerCalledBeforeInitialize: {\n code: \"native_broker_called_before_initialize\",\n desc: \"You must call and await the initialize function before attempting to call any other MSAL API when native brokering is enabled. For more please visit aka.ms/msaljs/browser-errors.\"\n },\n nativePromptNotSupported: {\n code: \"native_prompt_not_supported\",\n desc: \"The provided prompt is not supported by the native platform. This request should be routed to the web based flow.\"\n }\n};\n\n/**\n * Browser library error class thrown by the MSAL.js library for SPAs\n */\nexport class BrowserAuthError extends AuthError {\n\n constructor(errorCode: string, errorMessage?: string) {\n super(errorCode, errorMessage);\n\n Object.setPrototypeOf(this, BrowserAuthError.prototype);\n this.name = \"BrowserAuthError\";\n }\n\n /**\n * Creates an error thrown when PKCE is not implemented.\n * @param errDetail\n */\n static createPkceNotGeneratedError(errDetail: string): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.pkceNotGenerated.code,\n `${BrowserAuthErrorMessage.pkceNotGenerated.desc} Detail:${errDetail}`);\n }\n\n /**\n * Creates an error thrown when the crypto object is unavailable.\n * @param errDetail\n */\n static createCryptoNotAvailableError(errDetail: string): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.cryptoDoesNotExist.code,\n `${BrowserAuthErrorMessage.cryptoDoesNotExist.desc} Detail:${errDetail}`);\n }\n\n /**\n * Creates an error thrown when an HTTP method hasn't been implemented by the browser class.\n * @param method\n */\n static createHttpMethodNotImplementedError(method: string): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.httpMethodNotImplementedError.code,\n `${BrowserAuthErrorMessage.httpMethodNotImplementedError.desc} Given Method: ${method}`);\n }\n\n /**\n * Creates an error thrown when the navigation URI is empty.\n */\n static createEmptyNavigationUriError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.emptyNavigateUriError.code, BrowserAuthErrorMessage.emptyNavigateUriError.desc);\n }\n\n /**\n * Creates an error thrown when the hash string value is unexpectedly empty.\n * @param hashValue\n */\n static createEmptyHashError(hashValue: string): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.hashEmptyError.code, `${BrowserAuthErrorMessage.hashEmptyError.desc} Given Url: ${hashValue}`);\n }\n\n /**\n * Creates an error thrown when the hash string value is unexpectedly empty.\n */\n static createHashDoesNotContainStateError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.hashDoesNotContainStateError.code, BrowserAuthErrorMessage.hashDoesNotContainStateError.desc);\n }\n\n /**\n * Creates an error thrown when the hash string value does not contain known properties\n */\n static createHashDoesNotContainKnownPropertiesError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.hashDoesNotContainKnownPropertiesError.code, BrowserAuthErrorMessage.hashDoesNotContainKnownPropertiesError.desc);\n }\n\n /**\n * Creates an error thrown when the hash string value is unexpectedly empty.\n */\n static createUnableToParseStateError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.unableToParseStateError.code, BrowserAuthErrorMessage.unableToParseStateError.desc);\n }\n\n /**\n * Creates an error thrown when the state value in the hash does not match the interaction type of the API attempting to consume it.\n */\n static createStateInteractionTypeMismatchError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.stateInteractionTypeMismatchError.code, BrowserAuthErrorMessage.stateInteractionTypeMismatchError.desc);\n }\n\n /**\n * Creates an error thrown when a browser interaction (redirect or popup) is in progress.\n */\n static createInteractionInProgressError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.interactionInProgress.code, BrowserAuthErrorMessage.interactionInProgress.desc);\n }\n\n /**\n * Creates an error thrown when the popup window could not be opened.\n * @param errDetail\n */\n static createPopupWindowError(errDetail?: string): BrowserAuthError {\n let errorMessage = BrowserAuthErrorMessage.popupWindowError.desc;\n errorMessage = !StringUtils.isEmpty(errDetail) ? `${errorMessage} Details: ${errDetail}` : errorMessage;\n return new BrowserAuthError(BrowserAuthErrorMessage.popupWindowError.code, errorMessage);\n }\n\n /**\n * Creates an error thrown when window.open returns an empty window object.\n * @param errDetail\n */\n static createEmptyWindowCreatedError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.emptyWindowError.code, BrowserAuthErrorMessage.emptyWindowError.desc);\n }\n\n /**\n * Creates an error thrown when the user closes a popup.\n */\n static createUserCancelledError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.userCancelledError.code,\n BrowserAuthErrorMessage.userCancelledError.desc);\n }\n\n /**\n * Creates an error thrown when monitorPopupFromHash times out for a given popup.\n */\n static createMonitorPopupTimeoutError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.monitorPopupTimeoutError.code,\n BrowserAuthErrorMessage.monitorPopupTimeoutError.desc);\n }\n\n /**\n * Creates an error thrown when monitorIframeFromHash times out for a given iframe.\n */\n static createMonitorIframeTimeoutError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.monitorIframeTimeoutError.code,\n BrowserAuthErrorMessage.monitorIframeTimeoutError.desc);\n }\n\n /**\n * Creates an error thrown when navigateWindow is called inside an iframe or brokered applications.\n * @param windowParentCheck\n */\n static createRedirectInIframeError(windowParentCheck: boolean): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.redirectInIframeError.code,\n `${BrowserAuthErrorMessage.redirectInIframeError.desc} (window.parent !== window) => ${windowParentCheck}`);\n }\n\n /**\n * Creates an error thrown when an auth reload is done inside an iframe.\n */\n static createBlockReloadInHiddenIframeError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.blockTokenRequestsInHiddenIframeError.code,\n BrowserAuthErrorMessage.blockTokenRequestsInHiddenIframeError.desc);\n }\n\n /**\n * Creates an error thrown when a popup attempts to call an acquireToken API\n * @returns\n */\n static createBlockAcquireTokenInPopupsError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.blockAcquireTokenInPopupsError.code,\n BrowserAuthErrorMessage.blockAcquireTokenInPopupsError.desc);\n }\n\n /**\n * Creates an error thrown when an iframe is found to be closed before the timeout is reached.\n */\n static createIframeClosedPrematurelyError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.iframeClosedPrematurelyError.code, BrowserAuthErrorMessage.iframeClosedPrematurelyError.desc);\n }\n\n /**\n * Creates an error thrown when the logout API is called on any of the silent interaction clients\n */\n static createSilentLogoutUnsupportedError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.silentLogoutUnsupportedError.code, BrowserAuthErrorMessage.silentLogoutUnsupportedError.desc);\n }\n\n /**\n * Creates an error thrown when the account object is not provided in the acquireTokenSilent API.\n */\n static createNoAccountError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.noAccountError.code, BrowserAuthErrorMessage.noAccountError.desc);\n }\n\n /**\n * Creates an error thrown when a given prompt value is invalid for silent requests.\n */\n static createSilentPromptValueError(givenPrompt: string): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.silentPromptValueError.code, `${BrowserAuthErrorMessage.silentPromptValueError.desc} Given value: ${givenPrompt}`);\n }\n\n /**\n * Creates an error thrown when the cached token request could not be retrieved from the cache\n */\n static createUnableToParseTokenRequestCacheError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.unableToParseTokenRequestCacheError.code,\n BrowserAuthErrorMessage.unableToParseTokenRequestCacheError.desc);\n }\n\n /**\n * Creates an error thrown when the token request could not be retrieved from the cache\n */\n static createNoTokenRequestCacheError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.noTokenRequestCacheError.code,\n BrowserAuthErrorMessage.noTokenRequestCacheError.desc);\n }\n\n /**\n * Creates an error thrown when handleCodeResponse is called before initiateAuthRequest (InteractionHandler)\n */\n static createAuthRequestNotSetError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.authRequestNotSet.code,\n BrowserAuthErrorMessage.authRequestNotSet.desc);\n }\n\n /**\n * Creates an error thrown when the authority could not be retrieved from the cache\n */\n static createNoCachedAuthorityError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.noCachedAuthorityError.code,\n BrowserAuthErrorMessage.noCachedAuthorityError.desc);\n }\n\n /**\n * Creates an error thrown if cache type is invalid.\n */\n static createInvalidCacheTypeError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.invalidCacheType.code, `${BrowserAuthErrorMessage.invalidCacheType.desc}`);\n }\n\n /**\n * Create an error thrown when login and token requests are made from a non-browser environment\n */\n static createNonBrowserEnvironmentError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.notInBrowserEnvironment.code, BrowserAuthErrorMessage.notInBrowserEnvironment.desc);\n }\n\n /**\n * Create an error thrown when indexDB database is not open\n */\n static createDatabaseNotOpenError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.databaseNotOpen.code, BrowserAuthErrorMessage.databaseNotOpen.desc);\n }\n\n /**\n * Create an error thrown when token fetch fails due to no internet\n */\n static createNoNetworkConnectivityError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.noNetworkConnectivity.code, BrowserAuthErrorMessage.noNetworkConnectivity.desc);\n }\n\n /**\n * Create an error thrown when token fetch fails due to reasons other than internet connectivity\n */\n static createPostRequestFailedError(errorDesc: string, endpoint: string): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.postRequestFailed.code, `${BrowserAuthErrorMessage.postRequestFailed.desc} | Network client threw: ${errorDesc} | Attempted to reach: ${endpoint.split(\"?\")[0]}`);\n }\n\n /**\n * Create an error thrown when get request fails due to reasons other than internet connectivity\n */\n static createGetRequestFailedError(errorDesc: string, endpoint: string): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.getRequestFailed.code, `${BrowserAuthErrorMessage.getRequestFailed.desc} | Network client threw: ${errorDesc} | Attempted to reach: ${endpoint.split(\"?\")[0]}`);\n }\n\n /**\n * Create an error thrown when network client fails to parse network response\n */\n static createFailedToParseNetworkResponseError(endpoint: string): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.failedToParseNetworkResponse.code, `${BrowserAuthErrorMessage.failedToParseNetworkResponse.desc} | Attempted to reach: ${endpoint.split(\"?\")[0]}`);\n }\n\n /**\n * Create an error thrown when the necessary information is not available to sideload tokens\n */\n static createUnableToLoadTokenError(errorDetail: string): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.unableToLoadTokenError.code, `${BrowserAuthErrorMessage.unableToLoadTokenError.desc} | ${errorDetail}`);\n }\n\n /**\n * Create an error thrown when the queried cryptographic key is not found in IndexedDB\n */\n static createSigningKeyNotFoundInStorageError(keyId: string): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.signingKeyNotFoundInStorage.code, `${BrowserAuthErrorMessage.signingKeyNotFoundInStorage.desc} | No match found for KeyId: ${keyId}`);\n }\n\n /**\n * Create an error when an authorization code is required but not provided\n */\n static createAuthCodeRequiredError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.authCodeRequired.code, BrowserAuthErrorMessage.authCodeRequired.desc);\n }\n\n /**\n * Create an error when an authorization code or native account ID is required but not provided\n */\n static createAuthCodeOrNativeAccountIdRequiredError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.authCodeOrNativeAccountRequired.code, BrowserAuthErrorMessage.authCodeOrNativeAccountRequired.desc);\n }\n\n /**\n * Create an error when IndexedDB is unavailable\n */\n static createDatabaseUnavailableError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.databaseUnavailable.code, BrowserAuthErrorMessage.databaseUnavailable.desc);\n }\n\n /**\n * Create an error when native token acquisition is not possible\n */\n static createUnableToAcquireTokenFromNativePlatformError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.unableToAcquireTokenFromNativePlatform.code, BrowserAuthErrorMessage.unableToAcquireTokenFromNativePlatform.desc);\n }\n\n /**\n * Create an error thrown when Handshake with browser extension times out\n */\n static createNativeHandshakeTimeoutError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.nativeHandshakeTimeout.code, BrowserAuthErrorMessage.nativeHandshakeTimeout.desc);\n }\n\n /**\n * Create an error thrown when browser extension is not installed\n */\n static createNativeExtensionNotInstalledError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.nativeExtensionNotInstalled.code, BrowserAuthErrorMessage.nativeExtensionNotInstalled.desc);\n }\n\n /**\n * Create an error when native connection has not been established\n * @returns\n */\n static createNativeConnectionNotEstablishedError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.nativeConnectionNotEstablished.code, BrowserAuthErrorMessage.nativeConnectionNotEstablished.desc);\n }\n\n /**\n * Create an error thrown when the initialize function hasn't been called\n */\n static createNativeBrokerCalledBeforeInitialize(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.nativeBrokerCalledBeforeInitialize.code, BrowserAuthErrorMessage.nativeBrokerCalledBeforeInitialize.desc);\n }\n\n /**\n * Create an error thrown when requesting a token directly from the native platform with an unsupported prompt parameter e.g. select_account, login or create\n * These requests must go through eSTS to ensure eSTS is aware of the new account\n */\n static createNativePromptParameterNotSupportedError(): BrowserAuthError {\n return new BrowserAuthError(BrowserAuthErrorMessage.nativePromptNotSupported.code, BrowserAuthErrorMessage.nativePromptNotSupported.desc);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { PkceCodes } from \"@azure/msal-common\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { Base64Encode } from \"../encode/Base64Encode\";\nimport { BrowserCrypto } from \"./BrowserCrypto\";\n\n// Constant byte array length\nconst RANDOM_BYTE_ARR_LENGTH = 32;\n\n/**\n * Class which exposes APIs to generate PKCE codes and code verifiers.\n */\nexport class PkceGenerator {\n\n private base64Encode: Base64Encode;\n private cryptoObj: BrowserCrypto;\n\n constructor(cryptoObj: BrowserCrypto) {\n this.base64Encode = new Base64Encode();\n this.cryptoObj = cryptoObj;\n }\n\n /**\n * Generates PKCE Codes. See the RFC for more information: https://tools.ietf.org/html/rfc7636\n */\n async generateCodes(): Promise<PkceCodes> {\n const codeVerifier = this.generateCodeVerifier();\n const codeChallenge = await this.generateCodeChallengeFromVerifier(codeVerifier);\n return {\n verifier: codeVerifier,\n challenge: codeChallenge\n };\n }\n\n /**\n * Generates a random 32 byte buffer and returns the base64\n * encoded string to be used as a PKCE Code Verifier\n */\n private generateCodeVerifier(): string {\n try {\n // Generate random values as utf-8\n const buffer: Uint8Array = new Uint8Array(RANDOM_BYTE_ARR_LENGTH);\n this.cryptoObj.getRandomValues(buffer);\n // encode verifier as base64\n const pkceCodeVerifierB64: string = this.base64Encode.urlEncodeArr(buffer);\n return pkceCodeVerifierB64;\n } catch (e) {\n throw BrowserAuthError.createPkceNotGeneratedError(e);\n }\n }\n\n /**\n * Creates a base64 encoded PKCE Code Challenge string from the\n * hash created from the PKCE Code Verifier supplied\n */\n private async generateCodeChallengeFromVerifier(pkceCodeVerifier: string): Promise<string> {\n try {\n // hashed verifier\n const pkceHashedCodeVerifier = await this.cryptoObj.sha256Digest(pkceCodeVerifier);\n // encode hash as base64\n return this.base64Encode.urlEncodeArr(new Uint8Array(pkceHashedCodeVerifier));\n } catch (e) {\n throw BrowserAuthError.createPkceNotGeneratedError(e);\n }\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { BrowserStringUtils } from \"../utils/BrowserStringUtils\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { KEY_FORMAT_JWK } from \"../utils/BrowserConstants\";\nimport { Logger } from \"..\";\nimport { Constants } from \"@azure/msal-common\";\n/**\n * See here for more info on RsaHashedKeyGenParams: https://developer.mozilla.org/en-US/docs/Web/API/RsaHashedKeyGenParams\n */\n// RSA KeyGen Algorithm\nconst PKCS1_V15_KEYGEN_ALG = \"RSASSA-PKCS1-v1_5\";\n// SHA-256 hashing algorithm\nconst S256_HASH_ALG = \"SHA-256\";\n// MOD length for PoP tokens\nconst MODULUS_LENGTH = 2048;\n// Public Exponent\nconst PUBLIC_EXPONENT: Uint8Array = new Uint8Array([0x01, 0x00, 0x01]);\n\n/**\n * This class implements functions used by the browser library to perform cryptography operations such as\n * hashing and encoding. It also has helper functions to validate the availability of specific APIs.\n */\nexport class BrowserCrypto {\n\n private _keygenAlgorithmOptions: RsaHashedKeyGenParams;\n private logger: Logger;\n\n constructor(logger: Logger) {\n this.logger = logger;\n \n if (!(this.hasCryptoAPI())) {\n throw BrowserAuthError.createCryptoNotAvailableError(\"Browser crypto or msCrypto object not available.\");\n }\n\n this._keygenAlgorithmOptions = {\n name: PKCS1_V15_KEYGEN_ALG,\n hash: S256_HASH_ALG,\n modulusLength: MODULUS_LENGTH,\n publicExponent: PUBLIC_EXPONENT\n };\n }\n\n /**\n * Returns a sha-256 hash of the given dataString as an ArrayBuffer.\n * @param dataString \n */\n async sha256Digest(dataString: string): Promise<ArrayBuffer> {\n const data = BrowserStringUtils.stringToUtf8Arr(dataString);\n\n return this.hasIECrypto() ? this.getMSCryptoDigest(S256_HASH_ALG, data) : this.getSubtleCryptoDigest(S256_HASH_ALG, data);\n }\n\n /**\n * Populates buffer with cryptographically random values.\n * @param dataBuffer \n */\n getRandomValues(dataBuffer: Uint8Array): void {\n const cryptoObj = window[\"msCrypto\"] || window.crypto;\n if (!cryptoObj.getRandomValues) {\n throw BrowserAuthError.createCryptoNotAvailableError(\"getRandomValues does not exist.\");\n }\n cryptoObj.getRandomValues(dataBuffer);\n }\n\n /**\n * Generates a keypair based on current keygen algorithm config.\n * @param extractable \n * @param usages \n */\n async generateKeyPair(extractable: boolean, usages: Array<KeyUsage>): Promise<CryptoKeyPair> {\n return (\n this.hasIECrypto() ? \n this.msCryptoGenerateKey(extractable, usages) \n : window.crypto.subtle.generateKey(this._keygenAlgorithmOptions, extractable, usages)\n ) as Promise<CryptoKeyPair>;\n }\n\n /**\n * Export key as Json Web Key (JWK)\n * @param key \n * @param format \n */\n async exportJwk(key: CryptoKey): Promise<JsonWebKey> {\n return this.hasIECrypto() ? this.msCryptoExportJwk(key) : window.crypto.subtle.exportKey(KEY_FORMAT_JWK, key);\n }\n\n /**\n * Imports key as Json Web Key (JWK), can set extractable and usages.\n * @param key \n * @param format \n * @param extractable \n * @param usages \n */\n async importJwk(key: JsonWebKey, extractable: boolean, usages: Array<KeyUsage>): Promise<CryptoKey> {\n const keyString = BrowserCrypto.getJwkString(key);\n const keyBuffer = BrowserStringUtils.stringToArrayBuffer(keyString);\n\n return this.hasIECrypto() ? \n this.msCryptoImportKey(keyBuffer, extractable, usages) \n : window.crypto.subtle.importKey(KEY_FORMAT_JWK, key, this._keygenAlgorithmOptions, extractable, usages);\n }\n\n /**\n * Signs given data with given key\n * @param key \n * @param data \n */\n async sign(key: CryptoKey, data: ArrayBuffer): Promise<ArrayBuffer> {\n return this.hasIECrypto() ?\n this.msCryptoSign(key, data)\n : window.crypto.subtle.sign(this._keygenAlgorithmOptions, key, data);\n }\n\n /**\n * Check whether IE crypto or other browser cryptography is available.\n */\n private hasCryptoAPI(): boolean {\n return this.hasIECrypto() || this.hasBrowserCrypto();\n }\n\n /**\n * Checks whether IE crypto (AKA msCrypto) is available.\n */\n private hasIECrypto(): boolean {\n return \"msCrypto\" in window;\n }\n\n /**\n * Check whether browser crypto is available.\n */\n private hasBrowserCrypto(): boolean {\n return \"crypto\" in window;\n }\n\n /**\n * Helper function for SHA digest.\n * @param algorithm \n * @param data \n */\n private async getSubtleCryptoDigest(algorithm: string, data: Uint8Array): Promise<ArrayBuffer> {\n return window.crypto.subtle.digest(algorithm, data);\n }\n\n /**\n * IE Helper function for SHA digest.\n * @param algorithm \n * @param data \n */\n private async getMSCryptoDigest(algorithm: string, data: Uint8Array): Promise<ArrayBuffer> {\n return new Promise((resolve, reject) => {\n const digestOperation = window[\"msCrypto\"].subtle.digest(algorithm, data.buffer);\n digestOperation.addEventListener(\"complete\", (e: { target: { result: ArrayBuffer | PromiseLike<ArrayBuffer>; }; }) => {\n resolve(e.target.result);\n });\n digestOperation.addEventListener(\"error\", (error: string) => {\n reject(error);\n });\n });\n }\n\n /**\n * IE Helper function for generating a keypair\n * @param extractable \n * @param usages \n */\n private async msCryptoGenerateKey(extractable: boolean, usages: Array<KeyUsage>): Promise<CryptoKeyPair> {\n return new Promise((resolve: Function, reject: Function) => {\n const msGenerateKey = window[\"msCrypto\"].subtle.generateKey(this._keygenAlgorithmOptions, extractable, usages);\n msGenerateKey.addEventListener(\"complete\", (e: { target: { result: CryptoKeyPair | PromiseLike<CryptoKeyPair>; }; }) => {\n resolve(e.target.result);\n });\n\n msGenerateKey.addEventListener(\"error\", (error: string) => {\n reject(error);\n });\n });\n }\n\n /**\n * IE Helper function for exportKey\n * @param key \n * @param format \n */\n private async msCryptoExportJwk(key: CryptoKey): Promise<JsonWebKey> {\n return new Promise((resolve: Function, reject: Function) => {\n const msExportKey = window[\"msCrypto\"].subtle.exportKey(KEY_FORMAT_JWK, key);\n msExportKey.addEventListener(\"complete\", (e: { target: { result: ArrayBuffer; }; }) => {\n const resultBuffer: ArrayBuffer = e.target.result;\n\n const resultString = BrowserStringUtils.utf8ArrToString(new Uint8Array(resultBuffer))\n .replace(/\\r/g, Constants.EMPTY_STRING)\n .replace(/\\n/g, Constants.EMPTY_STRING)\n .replace(/\\t/g, Constants.EMPTY_STRING)\n .split(\" \").join(Constants.EMPTY_STRING)\n .replace(\"\\u0000\", Constants.EMPTY_STRING);\n\n try {\n resolve(JSON.parse(resultString));\n } catch (e) {\n reject(e);\n }\n });\n\n msExportKey.addEventListener(\"error\", (error: string) => {\n reject(error);\n });\n });\n }\n\n /**\n * IE Helper function for importKey\n * @param key \n * @param format \n * @param extractable \n * @param usages \n */\n private async msCryptoImportKey(keyBuffer: ArrayBuffer, extractable: boolean, usages: Array<KeyUsage>): Promise<CryptoKey> {\n return new Promise((resolve: Function, reject: Function) => {\n const msImportKey = window[\"msCrypto\"].subtle.importKey(KEY_FORMAT_JWK, keyBuffer, this._keygenAlgorithmOptions, extractable, usages);\n msImportKey.addEventListener(\"complete\", (e: { target: { result: CryptoKey | PromiseLike<CryptoKey>; }; }) => {\n resolve(e.target.result);\n });\n\n msImportKey.addEventListener(\"error\", (error: string) => {\n reject(error);\n });\n });\n }\n\n /**\n * IE Helper function for sign JWT\n * @param key \n * @param data \n */\n private async msCryptoSign(key: CryptoKey, data: ArrayBuffer): Promise<ArrayBuffer> {\n return new Promise((resolve: Function, reject: Function) => {\n const msSign = window[\"msCrypto\"].subtle.sign(this._keygenAlgorithmOptions, key, data);\n msSign.addEventListener(\"complete\", (e: { target: { result: ArrayBuffer | PromiseLike<ArrayBuffer>; }; }) => {\n resolve(e.target.result);\n });\n\n msSign.addEventListener(\"error\", (error: string) => {\n reject(error);\n });\n });\n }\n\n /**\n * Returns stringified jwk.\n * @param jwk \n */\n static getJwkString(jwk: JsonWebKey): string {\n return JSON.stringify(jwk, Object.keys(jwk).sort());\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { DB_NAME, DB_TABLE_NAME, DB_VERSION } from \"../utils/BrowserConstants\";\nimport { IAsyncStorage } from \"./IAsyncMemoryStorage\";\n\ninterface IDBOpenDBRequestEvent extends Event {\n target: IDBOpenDBRequest & EventTarget;\n}\n\ninterface IDBOpenOnUpgradeNeededEvent extends IDBVersionChangeEvent {\n target: IDBOpenDBRequest & EventTarget;\n}\n\ninterface IDBRequestEvent extends Event {\n target: IDBRequest & EventTarget;\n}\n\n/**\n * Storage wrapper for IndexedDB storage in browsers: https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API\n */\nexport class DatabaseStorage<T> implements IAsyncStorage<T> {\n private db: IDBDatabase|undefined;\n private dbName: string;\n private tableName: string;\n private version: number;\n private dbOpen: boolean;\n\n constructor() {\n this.dbName = DB_NAME;\n this.version = DB_VERSION;\n this.tableName = DB_TABLE_NAME;\n this.dbOpen = false;\n }\n\n /**\n * Opens IndexedDB instance.\n */\n async open(): Promise<void> {\n return new Promise((resolve, reject) => {\n const openDB = window.indexedDB.open(this.dbName, this.version);\n openDB.addEventListener(\"upgradeneeded\", (e: IDBVersionChangeEvent) => {\n const event = e as IDBOpenOnUpgradeNeededEvent;\n event.target.result.createObjectStore(this.tableName);\n });\n openDB.addEventListener(\"success\", (e: Event) => {\n const event = e as IDBOpenDBRequestEvent;\n this.db = event.target.result;\n this.dbOpen = true;\n resolve();\n });\n openDB.addEventListener(\"error\", () => reject(BrowserAuthError.createDatabaseUnavailableError()));\n });\n }\n\n /**\n * Closes the connection to IndexedDB database when all pending transactions\n * complete.\n */\n closeConnection(): void {\n const db = this.db;\n if (db && this.dbOpen) {\n db.close();\n this.dbOpen = false;\n }\n }\n\n /**\n * Opens database if it's not already open\n */\n private async validateDbIsOpen(): Promise<void> {\n if (!this.dbOpen) {\n return await this.open();\n }\n }\n\n /**\n * Retrieves item from IndexedDB instance.\n * @param key \n */\n async getItem(key: string): Promise<T | null> {\n await this.validateDbIsOpen();\n return new Promise<T>((resolve, reject) => {\n // TODO: Add timeouts?\n if (!this.db) {\n return reject(BrowserAuthError.createDatabaseNotOpenError());\n }\n const transaction = this.db.transaction([this.tableName], \"readonly\");\n const objectStore = transaction.objectStore(this.tableName);\n const dbGet = objectStore.get(key);\n \n dbGet.addEventListener(\"success\", (e: Event) => {\n const event = e as IDBRequestEvent;\n this.closeConnection();\n resolve(event.target.result);\n });\n\n dbGet.addEventListener(\"error\", (e: Event) => {\n this.closeConnection();\n reject(e);\n });\n });\n }\n\n /**\n * Adds item to IndexedDB under given key\n * @param key \n * @param payload \n */\n async setItem(key: string, payload: T): Promise<void> {\n await this.validateDbIsOpen();\n return new Promise<void>((resolve: Function, reject: Function) => {\n // TODO: Add timeouts?\n if (!this.db) {\n return reject(BrowserAuthError.createDatabaseNotOpenError());\n }\n const transaction = this.db.transaction([this.tableName], \"readwrite\");\n\n const objectStore = transaction.objectStore(this.tableName);\n\n const dbPut = objectStore.put(payload, key);\n\n dbPut.addEventListener(\"success\", () => {\n this.closeConnection();\n resolve();\n });\n\n dbPut.addEventListener(\"error\", (e) => {\n this.closeConnection();\n reject(e);\n });\n });\n }\n\n /**\n * Removes item from IndexedDB under given key\n * @param key\n */\n async removeItem(key: string): Promise<void> {\n await this.validateDbIsOpen();\n return new Promise<void>((resolve: Function, reject: Function) => {\n if (!this.db) {\n return reject(BrowserAuthError.createDatabaseNotOpenError());\n }\n\n const transaction = this.db.transaction([this.tableName], \"readwrite\");\n const objectStore = transaction.objectStore(this.tableName);\n const dbDelete = objectStore.delete(key);\n\n dbDelete.addEventListener(\"success\", () => {\n this.closeConnection();\n resolve();\n });\n\n dbDelete.addEventListener(\"error\", (e) => {\n this.closeConnection();\n reject(e);\n });\n });\n }\n\n /**\n * Get all the keys from the storage object as an iterable array of strings.\n */\n async getKeys(): Promise<string[]> {\n await this.validateDbIsOpen();\n return new Promise<string[]>((resolve: Function, reject: Function) => {\n if (!this.db) {\n return reject(BrowserAuthError.createDatabaseNotOpenError());\n }\n\n const transaction = this.db.transaction([this.tableName], \"readonly\");\n const objectStore = transaction.objectStore(this.tableName);\n const dbGetKeys = objectStore.getAllKeys();\n\n dbGetKeys.addEventListener(\"success\", (e: Event) => {\n const event = e as IDBRequestEvent;\n this.closeConnection();\n resolve(event.target.result);\n });\n\n dbGetKeys.addEventListener(\"error\", (e: Event) => {\n this.closeConnection();\n reject(e);\n });\n });\n }\n\n /**\n * \n * Checks whether there is an object under the search key in the object store\n */\n async containsKey(key: string): Promise<boolean> {\n await this.validateDbIsOpen();\n\n return new Promise<boolean>((resolve: Function, reject: Function) => {\n if (!this.db) {\n return reject(BrowserAuthError.createDatabaseNotOpenError());\n }\n\n const transaction = this.db.transaction([this.tableName], \"readonly\");\n const objectStore = transaction.objectStore(this.tableName);\n const dbContainsKey = objectStore.count(key);\n\n dbContainsKey.addEventListener(\"success\", (e: Event) => {\n const event = e as IDBRequestEvent;\n this.closeConnection();\n resolve(event.target.result === 1);\n });\n\n dbContainsKey.addEventListener(\"error\", (e: Event) => {\n this.closeConnection();\n reject(e);\n });\n });\n }\n\n /**\n * Deletes the MSAL database. The database is deleted rather than cleared to make it possible\n * for client applications to downgrade to a previous MSAL version without worrying about forward compatibility issues\n * with IndexedDB database versions.\n */\n async deleteDatabase(): Promise<boolean> {\n // Check if database being deleted exists\n\n if (this.db && this.dbOpen) {\n this.closeConnection();\n }\n\n return new Promise<boolean>((resolve: Function, reject: Function) => {\n const deleteDbRequest = window.indexedDB.deleteDatabase(DB_NAME);\n deleteDbRequest.addEventListener(\"success\", () => resolve(true));\n deleteDbRequest.addEventListener(\"blocked\", () => resolve(true));\n deleteDbRequest.addEventListener(\"error\", () => reject(false));\n });\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { IWindowStorage } from \"./IWindowStorage\";\n\nexport class MemoryStorage<T> implements IWindowStorage<T> {\n\n private cache: Map<string, T>;\n\n constructor() {\n this.cache = new Map<string, T>();\n }\n\n getItem(key: string): T | null {\n return this.cache.get(key) || null;\n }\n\n setItem(key: string, value: T): void {\n this.cache.set(key, value);\n }\n\n removeItem(key: string): void {\n this.cache.delete(key);\n }\n\n getKeys(): string[] {\n const cacheKeys: string[] = [];\n this.cache.forEach((value: T, key: string) => {\n cacheKeys.push(key);\n });\n return cacheKeys;\n }\n\n containsKey(key: string): boolean {\n return this.cache.has(key);\n }\n\n clear() :void {\n this.cache.clear();\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Logger } from \"@azure/msal-common\";\nimport { BrowserAuthError, BrowserAuthErrorMessage } from \"../error/BrowserAuthError\";\nimport { DatabaseStorage } from \"./DatabaseStorage\";\nimport { IAsyncStorage } from \"./IAsyncMemoryStorage\";\nimport { MemoryStorage } from \"./MemoryStorage\";\n\n/**\n * This class allows MSAL to store artifacts asynchronously using the DatabaseStorage IndexedDB wrapper,\n * backed up with the more volatile MemoryStorage object for cases in which IndexedDB may be unavailable.\n */\nexport class AsyncMemoryStorage<T> implements IAsyncStorage<T> {\n private inMemoryCache: MemoryStorage<T>;\n private indexedDBCache: DatabaseStorage<T>;\n private logger: Logger;\n private storeName: string;\n\n constructor(logger: Logger, storeName: string) {\n this.inMemoryCache = new MemoryStorage<T>();\n this.indexedDBCache = new DatabaseStorage<T>();\n this.logger = logger;\n this.storeName = storeName;\n }\n\n private handleDatabaseAccessError(error: unknown): void {\n if (error instanceof BrowserAuthError && error.errorCode === BrowserAuthErrorMessage.databaseUnavailable.code) {\n this.logger.error(\"Could not access persistent storage. This may be caused by browser privacy features which block persistent storage in third-party contexts.\");\n } else {\n throw error;\n }\n }\n /**\n * Get the item matching the given key. Tries in-memory cache first, then in the asynchronous\n * storage object if item isn't found in-memory.\n * @param key \n */\n async getItem(key: string): Promise<T | null> {\n const item = this.inMemoryCache.getItem(key);\n if(!item) {\n try {\n this.logger.verbose(\"Queried item not found in in-memory cache, now querying persistent storage.\");\n return await this.indexedDBCache.getItem(key);\n } catch (e) {\n this.handleDatabaseAccessError(e);\n }\n }\n return item;\n }\n\n /**\n * Sets the item in the in-memory cache and then tries to set it in the asynchronous\n * storage object with the given key.\n * @param key \n * @param value \n */\n async setItem(key: string, value: T): Promise<void> {\n this.inMemoryCache.setItem(key, value);\n try {\n await this.indexedDBCache.setItem(key, value);\n } catch (e) {\n this.handleDatabaseAccessError(e);\n }\n }\n\n /**\n * Removes the item matching the key from the in-memory cache, then tries to remove it from the asynchronous storage object.\n * @param key \n */\n async removeItem(key: string): Promise<void> {\n this.inMemoryCache.removeItem(key);\n try {\n await this.indexedDBCache.removeItem(key);\n } catch (e) {\n this.handleDatabaseAccessError(e);\n }\n }\n\n /**\n * Get all the keys from the in-memory cache as an iterable array of strings. If no keys are found, query the keys in the \n * asynchronous storage object.\n */\n async getKeys(): Promise<string[]> {\n const cacheKeys = this.inMemoryCache.getKeys();\n if (cacheKeys.length === 0) {\n try {\n this.logger.verbose(\"In-memory cache is empty, now querying persistent storage.\");\n return await this.indexedDBCache.getKeys();\n } catch (e) {\n this.handleDatabaseAccessError(e);\n }\n }\n return cacheKeys;\n }\n\n /**\n * Returns true or false if the given key is present in the cache.\n * @param key \n */\n async containsKey(key: string): Promise<boolean> {\n const containsKey = this.inMemoryCache.containsKey(key);\n if(!containsKey) {\n try {\n this.logger.verbose(\"Key not found in in-memory cache, now querying persistent storage.\");\n return await this.indexedDBCache.containsKey(key);\n } catch (e) {\n this.handleDatabaseAccessError(e);\n }\n }\n return containsKey;\n }\n\n /**\n * Clears in-memory Map\n */\n clearInMemory(): void {\n // InMemory cache is a Map instance, clear is straightforward\n this.logger.verbose(`Deleting in-memory keystore ${this.storeName}`);\n this.inMemoryCache.clear();\n this.logger.verbose(`In-memory keystore ${this.storeName} deleted`);\n }\n\n /**\n * Tries to delete the IndexedDB database\n * @returns\n */\n async clearPersistent(): Promise<boolean> {\n try {\n this.logger.verbose(\"Deleting persistent keystore\");\n const dbDeleted = await this.indexedDBCache.deleteDatabase();\n if (dbDeleted) {\n this.logger.verbose(\"Persistent keystore deleted\");\n }\n \n return dbDeleted;\n } catch (e) {\n this.handleDatabaseAccessError(e);\n return false;\n }\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport type CcsCredential = {\n credential: string,\n type: CcsCredentialType\n};\n\nexport enum CcsCredentialType {\n HOME_ACCOUNT_ID = \"home_account_id\",\n UPN = \"UPN\"\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ICrypto, IPerformanceClient, JoseHeader, Logger, PerformanceEvents, PkceCodes, SignedHttpRequest, SignedHttpRequestParameters } from \"@azure/msal-common\";\nimport { GuidGenerator } from \"./GuidGenerator\";\nimport { Base64Encode } from \"../encode/Base64Encode\";\nimport { Base64Decode } from \"../encode/Base64Decode\";\nimport { PkceGenerator } from \"./PkceGenerator\";\nimport { BrowserCrypto } from \"./BrowserCrypto\";\nimport { BrowserStringUtils } from \"../utils/BrowserStringUtils\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { CryptoKeyStore } from \"../cache/CryptoKeyStore\";\n\nexport type CachedKeyPair = {\n publicKey: CryptoKey,\n privateKey: CryptoKey,\n requestMethod?: string,\n requestUri?: string\n};\n\n/**\n * This class implements MSAL's crypto interface, which allows it to perform base64 encoding and decoding, generating cryptographically random GUIDs and \n * implementing Proof Key for Code Exchange specs for the OAuth Authorization Code Flow using PKCE (rfc here: https://tools.ietf.org/html/rfc7636).\n */\nexport class CryptoOps implements ICrypto {\n\n private browserCrypto: BrowserCrypto;\n private guidGenerator: GuidGenerator;\n private b64Encode: Base64Encode;\n private b64Decode: Base64Decode;\n private pkceGenerator: PkceGenerator;\n private logger: Logger;\n\n /**\n * CryptoOps can be used in contexts outside a PCA instance,\n * meaning there won't be a performance manager available.\n */\n private performanceClient: IPerformanceClient | undefined;\n\n private static POP_KEY_USAGES: Array<KeyUsage> = [\"sign\", \"verify\"];\n private static EXTRACTABLE: boolean = true;\n private cache: CryptoKeyStore;\n\n constructor(logger: Logger, performanceClient?: IPerformanceClient) {\n this.logger = logger;\n // Browser crypto needs to be validated first before any other classes can be set.\n this.browserCrypto = new BrowserCrypto(this.logger);\n this.b64Encode = new Base64Encode();\n this.b64Decode = new Base64Decode();\n this.guidGenerator = new GuidGenerator(this.browserCrypto);\n this.pkceGenerator = new PkceGenerator(this.browserCrypto);\n this.cache = new CryptoKeyStore(this.logger);\n this.performanceClient = performanceClient;\n }\n\n /**\n * Creates a new random GUID - used to populate state and nonce.\n * @returns string (GUID)\n */\n createNewGuid(): string {\n return this.guidGenerator.generateGuid();\n }\n\n /**\n * Encodes input string to base64.\n * @param input \n */\n base64Encode(input: string): string {\n return this.b64Encode.encode(input);\n } \n \n /**\n * Decodes input string from base64.\n * @param input \n */\n base64Decode(input: string): string {\n return this.b64Decode.decode(input);\n }\n\n /**\n * Generates PKCE codes used in Authorization Code Flow.\n */\n async generatePkceCodes(): Promise<PkceCodes> {\n return this.pkceGenerator.generateCodes();\n }\n\n /**\n * Generates a keypair, stores it and returns a thumbprint\n * @param request\n */\n async getPublicKeyThumbprint(request: SignedHttpRequestParameters): Promise<string> {\n const publicKeyThumbMeasurement = this.performanceClient?.startMeasurement(PerformanceEvents.CryptoOptsGetPublicKeyThumbprint, request.correlationId);\n\n // Generate Keypair\n const keyPair: CryptoKeyPair = await this.browserCrypto.generateKeyPair(CryptoOps.EXTRACTABLE, CryptoOps.POP_KEY_USAGES);\n\n // Generate Thumbprint for Public Key\n const publicKeyJwk: JsonWebKey = await this.browserCrypto.exportJwk(keyPair.publicKey);\n \n const pubKeyThumprintObj: JsonWebKey = {\n e: publicKeyJwk.e,\n kty: publicKeyJwk.kty,\n n: publicKeyJwk.n\n };\n\n const publicJwkString: string = BrowserCrypto.getJwkString(pubKeyThumprintObj);\n const publicJwkHash = await this.hashString(publicJwkString);\n\n // Generate Thumbprint for Private Key\n const privateKeyJwk: JsonWebKey = await this.browserCrypto.exportJwk(keyPair.privateKey);\n // Re-import private key to make it unextractable\n const unextractablePrivateKey: CryptoKey = await this.browserCrypto.importJwk(privateKeyJwk, false, [\"sign\"]);\n\n // Store Keypair data in keystore\n await this.cache.asymmetricKeys.setItem(\n publicJwkHash, \n {\n privateKey: unextractablePrivateKey,\n publicKey: keyPair.publicKey,\n requestMethod: request.resourceRequestMethod,\n requestUri: request.resourceRequestUri\n }\n );\n\n if (publicKeyThumbMeasurement) {\n publicKeyThumbMeasurement.endMeasurement({\n success: true\n });\n }\n\n return publicJwkHash;\n }\n\n /**\n * Removes cryptographic keypair from key store matching the keyId passed in\n * @param kid \n */\n async removeTokenBindingKey(kid: string): Promise<boolean> {\n await this.cache.asymmetricKeys.removeItem(kid);\n const keyFound = await this.cache.asymmetricKeys.containsKey(kid);\n return !keyFound;\n }\n\n /**\n * Removes all cryptographic keys from IndexedDB storage\n */\n async clearKeystore(): Promise<boolean> {\n return await this.cache.clear();\n }\n\n /**\n * Signs the given object as a jwt payload with private key retrieved by given kid.\n * @param payload \n * @param kid \n */\n async signJwt(payload: SignedHttpRequest, kid: string, correlationId?: string): Promise<string> {\n const signJwtMeasurement = this.performanceClient?.startMeasurement(PerformanceEvents.CryptoOptsSignJwt, correlationId);\n const cachedKeyPair = await this.cache.asymmetricKeys.getItem(kid);\n \n if (!cachedKeyPair) {\n throw BrowserAuthError.createSigningKeyNotFoundInStorageError(kid);\n }\n\n // Get public key as JWK\n const publicKeyJwk = await this.browserCrypto.exportJwk(cachedKeyPair.publicKey);\n const publicKeyJwkString = BrowserCrypto.getJwkString(publicKeyJwk);\n \n // Base64URL encode public key thumbprint with keyId only: BASE64URL({ kid: \"FULL_PUBLIC_KEY_HASH\" })\n const encodedKeyIdThumbprint = this.b64Encode.urlEncode(JSON.stringify({ kid: kid }));\n\n // Generate header\n const shrHeader = JoseHeader.getShrHeaderString({ kid: encodedKeyIdThumbprint, alg: publicKeyJwk.alg });\n const encodedShrHeader = this.b64Encode.urlEncode(shrHeader);\n\n // Generate payload\n payload.cnf = {\n jwk: JSON.parse(publicKeyJwkString)\n };\n const encodedPayload = this.b64Encode.urlEncode(JSON.stringify(payload));\n\n // Form token string\n const tokenString = `${encodedShrHeader}.${encodedPayload}`;\n\n // Sign token\n const tokenBuffer = BrowserStringUtils.stringToArrayBuffer(tokenString);\n const signatureBuffer = await this.browserCrypto.sign(cachedKeyPair.privateKey, tokenBuffer);\n const encodedSignature = this.b64Encode.urlEncodeArr(new Uint8Array(signatureBuffer));\n\n const signedJwt = `${tokenString}.${encodedSignature}`;\n\n if (signJwtMeasurement) {\n signJwtMeasurement.endMeasurement({\n success: true\n });\n }\n\n return signedJwt;\n }\n\n /**\n * Returns the SHA-256 hash of an input string\n * @param plainText\n */\n async hashString(plainText: string): Promise<string> {\n const hashBuffer: ArrayBuffer = await this.browserCrypto.sha256Digest(plainText);\n const hashBytes = new Uint8Array(hashBuffer);\n return this.b64Encode.urlEncodeArr(hashBytes);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ApplicationTelemetry } from \"../../config/ClientConfiguration\";\nimport { Logger } from \"../../logger/Logger\";\nimport { InProgressPerformanceEvent, IPerformanceClient, PerformanceCallbackFunction } from \"./IPerformanceClient\";\nimport { IPerformanceMeasurement } from \"./IPerformanceMeasurement\";\nimport { PerformanceEvent, PerformanceEvents, PerformanceEventStatus } from \"./PerformanceEvent\";\n\nexport abstract class PerformanceClient implements IPerformanceClient {\n protected authority: string;\n protected libraryName: string;\n protected libraryVersion: string;\n protected applicationTelemetry: ApplicationTelemetry;\n protected clientId: string;\n protected logger: Logger;\n protected callbacks: Map<string, PerformanceCallbackFunction>;\n\n /**\n * Multiple events with the same correlation id.\n * Double keyed by correlation id and event id.\n * @protected\n * @type {Map<string, Map<string, PerformanceEvent>>}\n */\n protected eventsByCorrelationId: Map<string, Map<string, PerformanceEvent>>;\n\n /**\n * Underlying performance measurements for each operation\n *\n * @protected\n * @type {Map<string, IPerformanceMeasurement>}\n */\n protected measurementsById: Map<string, IPerformanceMeasurement>;\n\n /**\n * Creates an instance of PerformanceClient, \n * an abstract class containing core performance telemetry logic.\n *\n * @constructor\n * @param {string} clientId Client ID of the application\n * @param {string} authority Authority used by the application\n * @param {Logger} logger Logger used by the application\n * @param {string} libraryName Name of the library\n * @param {string} libraryVersion Version of the library\n */\n constructor(clientId: string, authority: string, logger: Logger, libraryName: string, libraryVersion: string, applicationTelemetry: ApplicationTelemetry) {\n this.authority = authority;\n this.libraryName = libraryName;\n this.libraryVersion = libraryVersion;\n this.applicationTelemetry = applicationTelemetry;\n this.clientId = clientId;\n this.logger = logger;\n this.callbacks = new Map();\n this.eventsByCorrelationId = new Map();\n this.measurementsById = new Map();\n }\n\n /**\n * Starts and returns an platform-specific implementation of IPerformanceMeasurement.\n *\n * @abstract\n * @param {string} measureName\n * @param {string} correlationId\n * @returns {IPerformanceMeasurement}\n */\n abstract startPerformanceMeasuremeant(measureName: string, correlationId: string): IPerformanceMeasurement;\n\n /**\n * Generates and returns a unique id, typically a guid.\n *\n * @abstract\n * @returns {string}\n */\n abstract generateId(): string;\n\n /**\n * Starts measuring performance for a given operation. Returns a function that should be used to end the measurement.\n *\n * @param {PerformanceEvents} measureName\n * @param {?string} [correlationId]\n * @returns {InProgressPerformanceEvent}\n */\n startMeasurement(measureName: PerformanceEvents, correlationId?: string): InProgressPerformanceEvent {\n // Generate a placeholder correlation if the request does not provide one\n const eventCorrelationId = correlationId || this.generateId();\n if (!correlationId) {\n this.logger.info(`PerformanceClient: No correlation id provided for ${measureName}, generating`, eventCorrelationId);\n }\n\n this.logger.trace(`PerformanceClient: Performance measurement started for ${measureName}`, eventCorrelationId);\n const performanceMeasurement = this.startPerformanceMeasuremeant(measureName, eventCorrelationId);\n performanceMeasurement.startMeasurement();\n\n const inProgressEvent: PerformanceEvent = {\n eventId: this.generateId(),\n status: PerformanceEventStatus.InProgress,\n authority: this.authority,\n libraryName: this.libraryName,\n libraryVersion: this.libraryVersion,\n appName: this.applicationTelemetry?.appName,\n appVersion: this.applicationTelemetry?.appVersion,\n clientId: this.clientId,\n name: measureName,\n startTimeMs: Date.now(),\n correlationId: eventCorrelationId,\n };\n\n // Store in progress events so they can be discarded if not ended properly\n this.cacheEventByCorrelationId(inProgressEvent);\n this.cacheMeasurement(inProgressEvent, performanceMeasurement);\n\n // Return the event and functions the caller can use to properly end/flush the measurement\n return {\n endMeasurement: (event?: Partial<PerformanceEvent>): PerformanceEvent | null => {\n const completedEvent = this.endMeasurement({\n // Initial set of event properties\n ...inProgressEvent,\n // Properties set when event ends\n ...event\n });\n\n if (completedEvent) {\n // Cache event so that submeasurements can be added downstream\n this.cacheEventByCorrelationId(completedEvent);\n }\n\n return completedEvent;\n },\n flushMeasurement: () => {\n return this.flushMeasurements(inProgressEvent.name, inProgressEvent.correlationId);\n },\n discardMeasurement: () => {\n return this.discardMeasurements(inProgressEvent.correlationId);\n },\n measurement: performanceMeasurement,\n event: inProgressEvent\n };\n\n }\n\n /**\n * Stops measuring the performance for an operation. Should only be called directly by PerformanceClient classes,\n * as consumers should instead use the function returned by startMeasurement.\n *\n * @param {PerformanceEvent} event\n * @returns {(PerformanceEvent | null)}\n */\n endMeasurement(event: PerformanceEvent): PerformanceEvent | null {\n const performanceMeasurement = this.measurementsById.get(event.eventId);\n if (performanceMeasurement) {\n // Immediately delete so that the same event isnt ended twice\n this.measurementsById.delete(event.eventId);\n performanceMeasurement.endMeasurement();\n const durationMs = performanceMeasurement.flushMeasurement();\n // null indicates no measurement was taken (e.g. needed performance APIs not present)\n if (durationMs !== null) {\n this.logger.trace(`PerformanceClient: Performance measurement ended for ${event.name}: ${durationMs} ms`, event.correlationId);\n\n const completedEvent: PerformanceEvent = {\n // Allow duration to be overwritten when event ends (e.g. testing), but not status\n durationMs: Math.round(durationMs),\n ...event,\n status: PerformanceEventStatus.Completed,\n };\n\n return completedEvent;\n } else {\n this.logger.trace(\"PerformanceClient: Performance measurement not taken\", event.correlationId);\n }\n } else {\n this.logger.trace(`PerformanceClient: Measurement not found for ${event.eventId}`, event.correlationId);\n }\n\n return null;\n }\n\n /**\n * Upserts event into event cache.\n * First key is the correlation id, second key is the event id.\n * Allows for events to be grouped by correlation id,\n * and to easily allow for properties on them to be updated.\n *\n * @private\n * @param {PerformanceEvent} event\n */\n private cacheEventByCorrelationId(event: PerformanceEvent) {\n const existingEvents = this.eventsByCorrelationId.get(event.correlationId);\n if (existingEvents) {\n this.logger.trace(`PerformanceClient: Performance measurement for ${event.name} added/updated`, event.correlationId);\n existingEvents.set(event.eventId, event);\n } else {\n this.logger.trace(`PerformanceClient: Performance measurement for ${event.name} started`, event.correlationId);\n this.eventsByCorrelationId.set(event.correlationId, new Map().set(event.eventId, event));\n }\n }\n\n /**\n * Cache measurements by their id.\n *\n * @private\n * @param {PerformanceEvent} event\n * @param {IPerformanceMeasurement} measurement\n */\n private cacheMeasurement(event: PerformanceEvent, measurement: IPerformanceMeasurement) {\n this.measurementsById.set(event.eventId, measurement);\n }\n\n /**\n * Gathers and emits performance events for measurements taked for the given top-level API and correlation ID.\n *\n * @param {PerformanceEvents} measureName\n * @param {string} correlationId\n */\n flushMeasurements(measureName: PerformanceEvents, correlationId: string): void {\n this.logger.trace(`PerformanceClient: Performance measurements flushed for ${measureName}`, correlationId);\n const eventsForCorrelationId = this.eventsByCorrelationId.get(correlationId);\n if (eventsForCorrelationId) {\n this.discardMeasurements(correlationId);\n\n /*\n * Manually end incomplete submeasurements to ensure there arent orphaned/never ending events.\n * Incomplete submeasurements are likely an instrumentation bug that should be fixed.\n * IE only supports Map.forEach.\n */\n const completedEvents: PerformanceEvent[] = [];\n eventsForCorrelationId.forEach(event => {\n if (event.name !== measureName && event.status !== PerformanceEventStatus.Completed) {\n this.logger.trace(`PerformanceClient: Incomplete submeasurement ${event.name} found for ${measureName}`, correlationId);\n\n const completedEvent = this.endMeasurement(event);\n if (completedEvent) {\n completedEvents.push(completedEvent);\n }\n }\n\n completedEvents.push(event);\n });\n\n // Sort events by start time (earliest first)\n const sortedCompletedEvents = completedEvents.sort((eventA, eventB) => eventA.startTimeMs - eventB.startTimeMs);\n\n // Take completed top level event and add completed submeasurements durations as properties\n const topLevelEvents = sortedCompletedEvents.filter(event => event.name === measureName && event.status === PerformanceEventStatus.Completed);\n if (topLevelEvents.length > 0) {\n /*\n * Only take the first top-level event if there are multiple events with the same correlation id.\n * This greatly simplifies logic for submeasurements.\n */\n if (topLevelEvents.length > 1) {\n this.logger.verbose(\"PerformanceClient: Multiple distinct top-level performance events found, using the first\", correlationId);\n }\n const topLevelEvent = topLevelEvents[0];\n\n this.logger.verbose(`PerformanceClient: Measurement found for ${measureName}`, correlationId);\n\n // Build event object with top level and sub measurements\n const eventToEmit = sortedCompletedEvents.reduce((previous, current) => {\n if (current.name !== measureName) {\n this.logger.trace(`PerformanceClient: Complete submeasurement found for ${current.name}`, correlationId);\n // TODO: Emit additional properties for each subMeasurement\n const subMeasurementName = `${current.name}DurationMs`;\n /*\n * Some code paths, such as resolving an authority, can occur multiple times.\n * Only take the first measurement, since the second could be read from the cache,\n * or due to the same correlation id being used for two distinct requests.\n */\n if (!previous[subMeasurementName]) {\n previous[subMeasurementName] = current.durationMs;\n } else {\n this.logger.verbose(`PerformanceClient: Submeasurement for ${measureName} already exists for ${current.name}, ignoring`, correlationId);\n }\n if (current.accessTokenSize) {\n previous.accessTokenSize = current.accessTokenSize;\n }\n if (current.idTokenSize) {\n previous.idTokenSize = current.idTokenSize;\n }\n }\n\n return previous;\n }, topLevelEvent);\n\n this.emitEvents([eventToEmit], eventToEmit.correlationId);\n } else {\n this.logger.verbose(`PerformanceClient: No completed top-level measurements found for ${measureName}`, correlationId);\n }\n } else {\n this.logger.verbose(\"PerformanceClient: No measurements found\", correlationId);\n }\n }\n\n /**\n * Removes measurements for a given correlation id.\n *\n * @param {string} correlationId\n */\n discardMeasurements(correlationId: string): void {\n this.logger.trace(\"PerformanceClient: Performance measurements discarded\", correlationId);\n this.eventsByCorrelationId.delete(correlationId);\n }\n\n /**\n * Registers a callback function to receive performance events.\n *\n * @param {PerformanceCallbackFunction} callback\n * @returns {string}\n */\n addPerformanceCallback(callback: PerformanceCallbackFunction): string {\n const callbackId = this.generateId();\n this.callbacks.set(callbackId, callback);\n this.logger.verbose(`PerformanceClient: Performance callback registered with id: ${callbackId}`);\n\n return callbackId;\n }\n\n /**\n * Removes a callback registered with addPerformanceCallback.\n *\n * @param {string} callbackId\n * @returns {boolean}\n */\n removePerformanceCallback(callbackId: string): boolean {\n const result = this.callbacks.delete(callbackId);\n\n if (result) {\n this.logger.verbose(`PerformanceClient: Performance callback ${callbackId} removed.`);\n } else {\n this.logger.verbose(`PerformanceClient: Performance callback ${callbackId} not removed.`);\n }\n\n return result;\n }\n\n /**\n * Emits events to all registered callbacks.\n *\n * @param {PerformanceEvent[]} events\n * @param {?string} [correlationId]\n */\n emitEvents(events: PerformanceEvent[], correlationId: string): void {\n this.logger.verbose(\"PerformanceClient: Emitting performance events\", correlationId);\n\n this.callbacks.forEach((callback: PerformanceCallbackFunction, callbackId: string) => {\n this.logger.trace(`PerformanceClient: Emitting event to callback ${callbackId}`, correlationId);\n callback.apply(null, [events]);\n });\n }\n\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { IPerformanceClient } from \"./IPerformanceClient\";\nimport { IPerformanceMeasurement } from \"./IPerformanceMeasurement\";\nimport { PerformanceClient } from \"./PerformanceClient\";\n\nexport class StubPerformanceMeasurement implements IPerformanceMeasurement {\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n startMeasurement(): void { }\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n endMeasurement(): void { }\n flushMeasurement(): number | null {\n return null;\n }\n \n}\n\nexport class StubPerformanceClient extends PerformanceClient implements IPerformanceClient {\n generateId(): string {\n return \"callback-id\";\n }\n \n startPerformanceMeasuremeant(): IPerformanceMeasurement {\n return new StubPerformanceMeasurement();\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthError } from \"../error/AuthError\";\nimport { BaseAuthRequest } from \"../request/BaseAuthRequest\";\nimport { SignedHttpRequest } from \"./SignedHttpRequest\";\n\n/**\n * The PkceCodes type describes the structure\n * of objects that contain PKCE code\n * challenge and verifier pairs\n */\nexport type PkceCodes = {\n verifier: string,\n challenge: string\n};\n\nexport type SignedHttpRequestParameters = Pick<BaseAuthRequest, \"resourceRequestMethod\" | \"resourceRequestUri\" | \"shrClaims\" | \"shrNonce\" > & {\n correlationId?: string\n};\n\n/**\n * Interface for crypto functions used by library\n */\nexport interface ICrypto {\n /**\n * Creates a guid randomly.\n */\n createNewGuid(): string;\n /**\n * base64 Encode string\n * @param input \n */\n base64Encode(input: string): string;\n /**\n * base64 decode string\n * @param input \n */\n base64Decode(input: string): string;\n /**\n * Generate PKCE codes for OAuth. See RFC here: https://tools.ietf.org/html/rfc7636\n */\n generatePkceCodes(): Promise<PkceCodes>;\n /**\n * Generates an JWK RSA S256 Thumbprint\n * @param request\n */\n getPublicKeyThumbprint(request: SignedHttpRequestParameters): Promise<string>;\n /**\n * Removes cryptographic keypair from key store matching the keyId passed in\n * @param kid \n */\n removeTokenBindingKey(kid: string): Promise<boolean>;\n /**\n * Removes all cryptographic keys from IndexedDB storage\n */\n clearKeystore(): Promise<boolean>;\n /** \n * Returns a signed proof-of-possession token with a given acces token that contains a cnf claim with the required kid.\n * @param accessToken \n */\n signJwt(payload: SignedHttpRequest, kid: string, correlationId?: string): Promise<string>;\n /**\n * Returns the SHA-256 hash of an input string\n * @param plainText\n */\n hashString(plainText: string): Promise<string>;\n}\n\nexport const DEFAULT_CRYPTO_IMPLEMENTATION: ICrypto = {\n createNewGuid: (): string => {\n const notImplErr = \"Crypto interface - createNewGuid() has not been implemented\";\n throw AuthError.createUnexpectedError(notImplErr);\n },\n base64Decode: (): string => {\n const notImplErr = \"Crypto interface - base64Decode() has not been implemented\";\n throw AuthError.createUnexpectedError(notImplErr);\n },\n base64Encode: (): string => {\n const notImplErr = \"Crypto interface - base64Encode() has not been implemented\";\n throw AuthError.createUnexpectedError(notImplErr);\n },\n async generatePkceCodes(): Promise<PkceCodes> {\n const notImplErr = \"Crypto interface - generatePkceCodes() has not been implemented\";\n throw AuthError.createUnexpectedError(notImplErr);\n },\n async getPublicKeyThumbprint(): Promise<string> {\n const notImplErr = \"Crypto interface - getPublicKeyThumbprint() has not been implemented\";\n throw AuthError.createUnexpectedError(notImplErr);\n },\n async removeTokenBindingKey(): Promise<boolean> {\n const notImplErr = \"Crypto interface - removeTokenBindingKey() has not been implemented\";\n throw AuthError.createUnexpectedError(notImplErr);\n },\n async clearKeystore(): Promise<boolean> {\n const notImplErr = \"Crypto interface - clearKeystore() has not been implemented\";\n throw AuthError.createUnexpectedError(notImplErr);\n },\n async signJwt(): Promise<string> {\n const notImplErr = \"Crypto interface - signJwt() has not been implemented\";\n throw AuthError.createUnexpectedError(notImplErr);\n },\n async hashString(): Promise<string> {\n const notImplErr = \"Crypto interface - hashString() has not been implemented\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n};\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthError } from \"./AuthError\";\n\n/**\n * InteractionRequiredServerErrorMessage contains string constants used by error codes and messages returned by the server indicating interaction is required\n */\nexport const InteractionRequiredServerErrorMessage = [\n \"interaction_required\",\n \"consent_required\",\n \"login_required\"\n];\n\nexport const InteractionRequiredAuthSubErrorMessage = [\n \"message_only\",\n \"additional_action\",\n \"basic_action\",\n \"user_password_expired\",\n \"consent_required\"\n];\n\n/**\n * Interaction required errors defined by the SDK\n */\nexport const InteractionRequiredAuthErrorMessage = {\n noTokensFoundError: {\n code: \"no_tokens_found\",\n desc: \"No refresh token found in the cache. Please sign-in.\"\n },\n native_account_unavailable: {\n code: \"native_account_unavailable\",\n desc: \"The requested account is not available in the native broker. It may have been deleted or logged out. Please sign-in again using an interactive API.\"\n }\n};\n\n/**\n * Error thrown when user interaction is required.\n */\nexport class InteractionRequiredAuthError extends AuthError {\n\n constructor(errorCode?: string, errorMessage?: string, subError?: string) {\n super(errorCode, errorMessage, subError);\n this.name = \"InteractionRequiredAuthError\";\n\n Object.setPrototypeOf(this, InteractionRequiredAuthError.prototype);\n }\n\n /**\n * Helper function used to determine if an error thrown by the server requires interaction to resolve\n * @param errorCode \n * @param errorString \n * @param subError \n */\n static isInteractionRequiredError(errorCode?: string, errorString?: string, subError?: string) : boolean {\n const isInteractionRequiredErrorCode = !!errorCode && InteractionRequiredServerErrorMessage.indexOf(errorCode) > -1;\n const isInteractionRequiredSubError = !!subError && InteractionRequiredAuthSubErrorMessage.indexOf(subError) > -1;\n const isInteractionRequiredErrorDesc = !!errorString && InteractionRequiredServerErrorMessage.some((irErrorCode) => {\n return errorString.indexOf(irErrorCode) > -1;\n });\n\n return isInteractionRequiredErrorCode || isInteractionRequiredErrorDesc || isInteractionRequiredSubError;\n }\n\n /**\n * Creates an error thrown when the authorization code required for a token request is null or empty.\n */\n static createNoTokensFoundError(): InteractionRequiredAuthError {\n return new InteractionRequiredAuthError(InteractionRequiredAuthErrorMessage.noTokensFoundError.code, InteractionRequiredAuthErrorMessage.noTokensFoundError.desc);\n }\n\n /**\n * Creates an error thrown when the native broker returns ACCOUNT_UNAVAILABLE status, indicating that the account was removed and interactive sign-in is required\n * @returns \n */\n static createNativeAccountUnavailableError(): InteractionRequiredAuthError {\n return new InteractionRequiredAuthError(InteractionRequiredAuthErrorMessage.native_account_unavailable.code, InteractionRequiredAuthErrorMessage.native_account_unavailable.desc);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthError } from \"./AuthError\";\n\n/**\n * Error thrown when there is an error with the server code, for example, unavailability.\n */\nexport class ServerError extends AuthError {\n\n constructor(errorCode?: string, errorMessage?: string, subError?: string) {\n super(errorCode, errorMessage, subError);\n this.name = \"ServerError\";\n\n Object.setPrototypeOf(this, ServerError.prototype);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Separators, CredentialType, CacheType, Constants, AuthenticationScheme } from \"../../utils/Constants\";\nimport { ClientAuthError } from \"../../error/ClientAuthError\";\n\n/**\n * Base type for credentials to be stored in the cache: eg: ACCESS_TOKEN, ID_TOKEN etc\n *\n * Key:Value Schema:\n *\n * Key: <home_account_id*>-<environment>-<credential_type>-<client_id>-<realm*>-<target*>-<requestedClaims*>-<scheme*>\n *\n * Value Schema:\n * {\n * homeAccountId: home account identifier for the auth scheme,\n * environment: entity that issued the token, represented as a full host\n * credentialType: Type of credential as a string, can be one of the following: RefreshToken, AccessToken, IdToken, Password, Cookie, Certificate, Other\n * clientId: client ID of the application\n * secret: Actual credential as a string\n * familyId: Family ID identifier, usually only used for refresh tokens\n * realm: Full tenant or organizational identifier that the account belongs to\n * target: Permissions that are included in the token, or for refresh tokens, the resource identifier.\n * tokenType: Matches the authentication scheme for which the token was issued (i.e. Bearer or pop)\n * requestedClaimsHash: Matches the SHA 256 hash of the claims object included in the token request\n * userAssertionHash: Matches the SHA 256 hash of the obo_assertion for the OBO flow\n * }\n */\nexport class CredentialEntity {\n homeAccountId: string;\n environment: string;\n credentialType: CredentialType;\n clientId: string;\n secret: string;\n familyId?: string;\n realm?: string;\n target?: string;\n userAssertionHash?: string;\n tokenType?: AuthenticationScheme;\n keyId?: string;\n requestedClaimsHash?: string;\n\n /**\n * Generate Account Id key component as per the schema: <home_account_id>-<environment>\n */\n generateAccountId(): string {\n return CredentialEntity.generateAccountIdForCacheKey(this.homeAccountId, this.environment);\n }\n\n /**\n * Generate Credential Id key component as per the schema: <credential_type>-<client_id>-<realm>\n */\n generateCredentialId(): string {\n return CredentialEntity.generateCredentialIdForCacheKey(\n this.credentialType,\n this.clientId,\n this.realm,\n this.familyId\n );\n }\n\n /**\n * Generate target key component as per schema: <target>\n */\n generateTarget(): string {\n return CredentialEntity.generateTargetForCacheKey(this.target);\n }\n\n /**\n * generates credential key\n */\n generateCredentialKey(): string {\n return CredentialEntity.generateCredentialCacheKey(\n this.homeAccountId,\n this.environment,\n this.credentialType,\n this.clientId,\n this.realm,\n this.target,\n this.familyId,\n this.tokenType,\n this.requestedClaimsHash,\n );\n }\n\n /**\n * returns the type of the cache (in this case credential)\n */\n generateType(): number {\n switch (this.credentialType) {\n case CredentialType.ID_TOKEN:\n return CacheType.ID_TOKEN;\n case CredentialType.ACCESS_TOKEN:\n case CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME:\n return CacheType.ACCESS_TOKEN;\n case CredentialType.REFRESH_TOKEN:\n return CacheType.REFRESH_TOKEN;\n default: {\n throw ClientAuthError.createUnexpectedCredentialTypeError();\n }\n }\n }\n\n /**\n * helper function to return `CredentialType`\n * @param key\n */\n static getCredentialType(key: string): string {\n // First keyword search will match all \"AccessToken\" and \"AccessToken_With_AuthScheme\" credentials\n if (key.indexOf(CredentialType.ACCESS_TOKEN.toLowerCase()) !== -1) {\n // Perform second search to differentiate between \"AccessToken\" and \"AccessToken_With_AuthScheme\" credential types\n if (key.indexOf(CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase()) !== -1) {\n return CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME;\n }\n return CredentialType.ACCESS_TOKEN;\n } else if (key.indexOf(CredentialType.ID_TOKEN.toLowerCase()) !== -1) {\n return CredentialType.ID_TOKEN;\n } else if (key.indexOf(CredentialType.REFRESH_TOKEN.toLowerCase()) !== -1) {\n return CredentialType.REFRESH_TOKEN;\n }\n\n return Constants.NOT_DEFINED;\n }\n\n /**\n * generates credential key\n * <home_account_id*>-\\<environment>-<credential_type>-<client_id>-<realm\\*>-<target\\*>-<scheme\\*>\n */\n static generateCredentialCacheKey(\n homeAccountId: string,\n environment: string,\n credentialType: CredentialType,\n clientId: string,\n realm?: string,\n target?: string,\n familyId?: string,\n tokenType?: AuthenticationScheme,\n requestedClaimsHash?: string\n ): string {\n const credentialKey = [\n this.generateAccountIdForCacheKey(homeAccountId, environment),\n this.generateCredentialIdForCacheKey(credentialType, clientId, realm, familyId),\n this.generateTargetForCacheKey(target),\n this.generateClaimsHashForCacheKey(requestedClaimsHash),\n this.generateSchemeForCacheKey(tokenType)\n ];\n\n return credentialKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\n }\n\n /**\n * generates Account Id for keys\n * @param homeAccountId\n * @param environment\n */\n private static generateAccountIdForCacheKey(\n homeAccountId: string,\n environment: string\n ): string {\n const accountId: Array<string> = [homeAccountId, environment];\n return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\n }\n\n /**\n * Generates Credential Id for keys\n * @param credentialType\n * @param realm\n * @param clientId\n * @param familyId\n */\n private static generateCredentialIdForCacheKey(\n credentialType: CredentialType,\n clientId: string,\n realm?: string,\n familyId?: string\n ): string {\n const clientOrFamilyId =\n credentialType === CredentialType.REFRESH_TOKEN\n ? familyId || clientId\n : clientId;\n const credentialId: Array<string> = [\n credentialType,\n clientOrFamilyId,\n realm || Constants.EMPTY_STRING,\n ];\n\n return credentialId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\n }\n\n /**\n * Generate target key component as per schema: <target>\n */\n private static generateTargetForCacheKey(scopes?: string): string {\n return (scopes || Constants.EMPTY_STRING).toLowerCase();\n }\n\n /**\n * Generate requested claims key component as per schema: <requestedClaims>\n */\n private static generateClaimsHashForCacheKey(requestedClaimsHash?: string): string {\n return(requestedClaimsHash || Constants.EMPTY_STRING).toLowerCase();\n }\n\n /**\n * Generate scheme key componenet as per schema: <scheme>\n */\n private static generateSchemeForCacheKey(tokenType?: string): string {\n /*\n * PoP Tokens and SSH certs include scheme in cache key\n * Cast to lowercase to handle \"bearer\" from ADFS\n */\n return (tokenType && tokenType.toLowerCase() !== AuthenticationScheme.BEARER.toLowerCase()) ? tokenType.toLowerCase() : Constants.EMPTY_STRING;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ClientAuthError } from \"./ClientAuthError\";\n\n/**\n * ClientConfigurationErrorMessage class containing string constants used by error codes and messages.\n */\nexport const ClientConfigurationErrorMessage = {\n redirectUriNotSet: {\n code: \"redirect_uri_empty\",\n desc: \"A redirect URI is required for all calls, and none has been set.\"\n },\n postLogoutUriNotSet: {\n code: \"post_logout_uri_empty\",\n desc: \"A post logout redirect has not been set.\"\n },\n claimsRequestParsingError: {\n code: \"claims_request_parsing_error\",\n desc: \"Could not parse the given claims request object.\"\n },\n authorityUriInsecure: {\n code: \"authority_uri_insecure\",\n desc: \"Authority URIs must use https. Please see here for valid authority configuration options: https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-js-initializing-client-applications#configuration-options\"\n },\n urlParseError: {\n code: \"url_parse_error\",\n desc: \"URL could not be parsed into appropriate segments.\"\n },\n urlEmptyError: {\n code: \"empty_url_error\",\n desc: \"URL was empty or null.\"\n },\n emptyScopesError: {\n code: \"empty_input_scopes_error\",\n desc: \"Scopes cannot be passed as null, undefined or empty array because they are required to obtain an access token.\"\n },\n nonArrayScopesError: {\n code: \"nonarray_input_scopes_error\",\n desc: \"Scopes cannot be passed as non-array.\"\n },\n clientIdSingleScopeError: {\n code: \"clientid_input_scopes_error\",\n desc: \"Client ID can only be provided as a single scope.\"\n },\n invalidPrompt: {\n code: \"invalid_prompt_value\",\n desc: \"Supported prompt values are 'login', 'select_account', 'consent', 'create' and 'none'. Please see here for valid configuration options: https://azuread.github.io/microsoft-authentication-library-for-js/ref/modules/_azure_msal_common.html#commonauthorizationurlrequest\",\n },\n invalidClaimsRequest: {\n code: \"invalid_claims\",\n desc: \"Given claims parameter must be a stringified JSON object.\"\n },\n tokenRequestEmptyError: {\n code: \"token_request_empty\",\n desc: \"Token request was empty and not found in cache.\"\n },\n logoutRequestEmptyError: {\n code: \"logout_request_empty\",\n desc: \"The logout request was null or undefined.\"\n },\n invalidCodeChallengeMethod: {\n code: \"invalid_code_challenge_method\",\n desc: \"code_challenge_method passed is invalid. Valid values are \\\"plain\\\" and \\\"S256\\\".\"\n },\n invalidCodeChallengeParams: {\n code: \"pkce_params_missing\",\n desc: \"Both params: code_challenge and code_challenge_method are to be passed if to be sent in the request\"\n },\n invalidCloudDiscoveryMetadata: {\n code: \"invalid_cloud_discovery_metadata\",\n desc: \"Invalid cloudDiscoveryMetadata provided. Must be a stringified JSON object containing tenant_discovery_endpoint and metadata fields\"\n },\n invalidAuthorityMetadata: {\n code: \"invalid_authority_metadata\",\n desc: \"Invalid authorityMetadata provided. Must by a stringified JSON object containing authorization_endpoint, token_endpoint, issuer fields.\"\n },\n untrustedAuthority: {\n code: \"untrusted_authority\",\n desc: \"The provided authority is not a trusted authority. Please include this authority in the knownAuthorities config parameter.\"\n },\n invalidAzureCloudInstance: {\n code: \"invalid_azure_cloud_instance\",\n desc: \"Invalid AzureCloudInstance provided. Please refer MSAL JS docs: aks.ms/msaljs/azure_cloud_instance for valid values\"\n },\n missingSshJwk: {\n code: \"missing_ssh_jwk\",\n desc: \"Missing sshJwk in SSH certificate request. A stringified JSON Web Key is required when using the SSH authentication scheme.\"\n },\n missingSshKid: {\n code: \"missing_ssh_kid\",\n desc: \"Missing sshKid in SSH certificate request. A string that uniquely identifies the public SSH key is required when using the SSH authentication scheme.\"\n },\n missingNonceAuthenticationHeader: {\n code: \"missing_nonce_authentication_header\",\n desc: \"Unable to find an authentication header containing server nonce. Either the Authentication-Info or WWW-Authenticate headers must be present in order to obtain a server nonce.\"\n },\n invalidAuthenticationHeader: {\n code: \"invalid_authentication_header\",\n desc: \"Invalid authentication header provided\"\n }\n};\n\n/**\n * Error thrown when there is an error in configuration of the MSAL.js library.\n */\nexport class ClientConfigurationError extends ClientAuthError {\n\n constructor(errorCode: string, errorMessage?: string) {\n super(errorCode, errorMessage);\n this.name = \"ClientConfigurationError\";\n Object.setPrototypeOf(this, ClientConfigurationError.prototype);\n }\n\n /**\n * Creates an error thrown when the redirect uri is empty (not set by caller)\n */\n static createRedirectUriEmptyError(): ClientConfigurationError {\n return new ClientConfigurationError(ClientConfigurationErrorMessage.redirectUriNotSet.code,\n ClientConfigurationErrorMessage.redirectUriNotSet.desc);\n }\n\n /**\n * Creates an error thrown when the post-logout redirect uri is empty (not set by caller)\n */\n static createPostLogoutRedirectUriEmptyError(): ClientConfigurationError {\n return new ClientConfigurationError(ClientConfigurationErrorMessage.postLogoutUriNotSet.code,\n ClientConfigurationErrorMessage.postLogoutUriNotSet.desc);\n }\n\n /**\n * Creates an error thrown when the claims request could not be successfully parsed\n */\n static createClaimsRequestParsingError(claimsRequestParseError: string): ClientConfigurationError {\n return new ClientConfigurationError(ClientConfigurationErrorMessage.claimsRequestParsingError.code,\n `${ClientConfigurationErrorMessage.claimsRequestParsingError.desc} Given value: ${claimsRequestParseError}`);\n }\n\n /**\n * Creates an error thrown if authority uri is given an insecure protocol.\n * @param urlString\n */\n static createInsecureAuthorityUriError(urlString: string): ClientConfigurationError {\n return new ClientConfigurationError(ClientConfigurationErrorMessage.authorityUriInsecure.code,\n `${ClientConfigurationErrorMessage.authorityUriInsecure.desc} Given URI: ${urlString}`);\n }\n\n /**\n * Creates an error thrown if URL string does not parse into separate segments.\n * @param urlString\n */\n static createUrlParseError(urlParseError: string): ClientConfigurationError {\n return new ClientConfigurationError(ClientConfigurationErrorMessage.urlParseError.code,\n `${ClientConfigurationErrorMessage.urlParseError.desc} Given Error: ${urlParseError}`);\n }\n\n /**\n * Creates an error thrown if URL string is empty or null.\n * @param urlString\n */\n static createUrlEmptyError(): ClientConfigurationError {\n return new ClientConfigurationError(ClientConfigurationErrorMessage.urlEmptyError.code,\n ClientConfigurationErrorMessage.urlEmptyError.desc);\n }\n\n /**\n * Error thrown when scopes are empty.\n * @param scopesValue\n */\n static createEmptyScopesArrayError(): ClientConfigurationError {\n return new ClientConfigurationError(ClientConfigurationErrorMessage.emptyScopesError.code,\n `${ClientConfigurationErrorMessage.emptyScopesError.desc}`);\n }\n\n /**\n * Error thrown when client id scope is not provided as single scope.\n * @param inputScopes\n */\n static createClientIdSingleScopeError(inputScopes: Array<string>): ClientConfigurationError {\n return new ClientConfigurationError(ClientConfigurationErrorMessage.clientIdSingleScopeError.code,\n `${ClientConfigurationErrorMessage.clientIdSingleScopeError.desc} Given Scopes: ${inputScopes}`);\n }\n\n /**\n * Error thrown when prompt is not an allowed type.\n * @param promptValue\n */\n static createInvalidPromptError(promptValue: string): ClientConfigurationError {\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidPrompt.code,\n `${ClientConfigurationErrorMessage.invalidPrompt.desc} Given value: ${promptValue}`);\n }\n\n /**\n * Creates error thrown when claims parameter is not a stringified JSON object\n */\n static createInvalidClaimsRequestError(): ClientConfigurationError {\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidClaimsRequest.code,\n ClientConfigurationErrorMessage.invalidClaimsRequest.desc);\n }\n\n /**\n * Throws error when token request is empty and nothing cached in storage.\n */\n static createEmptyLogoutRequestError(): ClientConfigurationError {\n return new ClientConfigurationError(\n ClientConfigurationErrorMessage.logoutRequestEmptyError.code,\n ClientConfigurationErrorMessage.logoutRequestEmptyError.desc\n );\n }\n\n /**\n * Throws error when token request is empty and nothing cached in storage.\n */\n static createEmptyTokenRequestError(): ClientConfigurationError {\n return new ClientConfigurationError(\n ClientConfigurationErrorMessage.tokenRequestEmptyError.code,\n ClientConfigurationErrorMessage.tokenRequestEmptyError.desc\n );\n }\n\n /**\n * Throws error when an invalid code_challenge_method is passed by the user\n */\n static createInvalidCodeChallengeMethodError(): ClientConfigurationError {\n return new ClientConfigurationError(\n ClientConfigurationErrorMessage.invalidCodeChallengeMethod.code,\n ClientConfigurationErrorMessage.invalidCodeChallengeMethod.desc\n );\n }\n\n /**\n * Throws error when both params: code_challenge and code_challenge_method are not passed together\n */\n static createInvalidCodeChallengeParamsError(): ClientConfigurationError {\n return new ClientConfigurationError(\n ClientConfigurationErrorMessage.invalidCodeChallengeParams.code,\n ClientConfigurationErrorMessage.invalidCodeChallengeParams.desc\n );\n }\n\n /**\n * Throws an error when the user passes invalid cloudDiscoveryMetadata\n */\n static createInvalidCloudDiscoveryMetadataError(): ClientConfigurationError {\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidCloudDiscoveryMetadata.code,\n ClientConfigurationErrorMessage.invalidCloudDiscoveryMetadata.desc);\n }\n\n /**\n * Throws an error when the user passes invalid cloudDiscoveryMetadata\n */\n static createInvalidAuthorityMetadataError(): ClientConfigurationError {\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidAuthorityMetadata.code,\n ClientConfigurationErrorMessage.invalidAuthorityMetadata.desc);\n }\n\n /**\n * Throws error when provided authority is not a member of the trusted host list\n */\n static createUntrustedAuthorityError(): ClientConfigurationError {\n return new ClientConfigurationError(ClientConfigurationErrorMessage.untrustedAuthority.code,\n ClientConfigurationErrorMessage.untrustedAuthority.desc);\n }\n\n /**\n * Throws error when the AzureCloudInstance is set to an invalid value\n */\n static createInvalidAzureCloudInstanceError(): ClientConfigurationError {\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidAzureCloudInstance.code,\n ClientConfigurationErrorMessage.invalidAzureCloudInstance.desc);\n }\n\n /**\n * Throws an error when the authentication scheme is set to SSH but the SSH public key is omitted from the request\n */\n static createMissingSshJwkError(): ClientConfigurationError {\n return new ClientConfigurationError(ClientConfigurationErrorMessage.missingSshJwk.code,\n ClientConfigurationErrorMessage.missingSshJwk.desc);\n }\n\n /**\n * Throws an error when the authentication scheme is set to SSH but the SSH public key ID is omitted from the request\n */\n static createMissingSshKidError(): ClientConfigurationError {\n return new ClientConfigurationError(ClientConfigurationErrorMessage.missingSshKid.code,\n ClientConfigurationErrorMessage.missingSshKid.desc);\n }\n\n /**\n * Throws error when provided headers don't contain a header that a server nonce can be extracted from\n */\n static createMissingNonceAuthenticationHeadersError(): ClientConfigurationError {\n return new ClientConfigurationError(ClientConfigurationErrorMessage.missingNonceAuthenticationHeader.code,\n ClientConfigurationErrorMessage.missingNonceAuthenticationHeader.desc);\n }\n\n /**\n * Throws error when a provided header is invalid in any way\n */\n static createInvalidAuthenticationHeaderError(invalidHeaderName: string, details: string): ClientConfigurationError {\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidAuthenticationHeader.code,\n `${ClientConfigurationErrorMessage.invalidAuthenticationHeader.desc}. Invalid header: ${invalidHeaderName}. Details: ${details}`);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\nimport { StringUtils } from \"../utils/StringUtils\";\nimport { ClientAuthError } from \"../error/ClientAuthError\";\nimport { Constants, OIDC_SCOPES } from \"../utils/Constants\";\n\n/**\n * The ScopeSet class creates a set of scopes. Scopes are case-insensitive, unique values, so the Set object in JS makes\n * the most sense to implement for this class. All scopes are trimmed and converted to lower case strings in intersection and union functions\n * to ensure uniqueness of strings.\n */\nexport class ScopeSet {\n // Scopes as a Set of strings\n private scopes: Set<string>;\n\n constructor(inputScopes: Array<string>) {\n // Filter empty string and null/undefined array items\n const scopeArr = inputScopes ? StringUtils.trimArrayEntries([...inputScopes]) : [];\n const filteredInput = scopeArr ? StringUtils.removeEmptyStringsFromArray(scopeArr) : [];\n\n // Validate and filter scopes (validate function throws if validation fails)\n this.validateInputScopes(filteredInput);\n\n this.scopes = new Set<string>(); // Iterator in constructor not supported by IE11\n filteredInput.forEach(scope => this.scopes.add(scope));\n }\n\n /**\n * Factory method to create ScopeSet from space-delimited string\n * @param inputScopeString\n * @param appClientId\n * @param scopesRequired\n */\n static fromString(inputScopeString: string): ScopeSet {\n const scopeString = inputScopeString || Constants.EMPTY_STRING;\n const inputScopes: Array<string> = scopeString.split(\" \");\n return new ScopeSet(inputScopes);\n }\n\n /**\n * Used to validate the scopes input parameter requested by the developer.\n * @param {Array<string>} inputScopes - Developer requested permissions. Not all scopes are guaranteed to be included in the access token returned.\n * @param {boolean} scopesRequired - Boolean indicating whether the scopes array is required or not\n */\n private validateInputScopes(inputScopes: Array<string>): void {\n // Check if scopes are required but not given or is an empty array\n if (!inputScopes || inputScopes.length < 1) {\n throw ClientConfigurationError.createEmptyScopesArrayError();\n }\n }\n\n /**\n * Check if a given scope is present in this set of scopes.\n * @param scope\n */\n containsScope(scope: string): boolean {\n const lowerCaseScopes = this.printScopesLowerCase().split(\" \");\n const lowerCaseScopesSet = new ScopeSet(lowerCaseScopes);\n // compare lowercase scopes\n return !StringUtils.isEmpty(scope) ? lowerCaseScopesSet.scopes.has(scope.toLowerCase()) : false;\n }\n\n /**\n * Check if a set of scopes is present in this set of scopes.\n * @param scopeSet\n */\n containsScopeSet(scopeSet: ScopeSet): boolean {\n if (!scopeSet || scopeSet.scopes.size <= 0) {\n return false;\n }\n\n return (this.scopes.size >= scopeSet.scopes.size && scopeSet.asArray().every(scope => this.containsScope(scope)));\n }\n\n /**\n * Check if set of scopes contains only the defaults\n */\n containsOnlyOIDCScopes(): boolean {\n let defaultScopeCount = 0;\n OIDC_SCOPES.forEach((defaultScope: string) => {\n if (this.containsScope(defaultScope)) {\n defaultScopeCount += 1;\n }\n });\n\n return this.scopes.size === defaultScopeCount;\n }\n\n /**\n * Appends single scope if passed\n * @param newScope\n */\n appendScope(newScope: string): void {\n if (!StringUtils.isEmpty(newScope)) {\n this.scopes.add(newScope.trim());\n }\n }\n\n /**\n * Appends multiple scopes if passed\n * @param newScopes\n */\n appendScopes(newScopes: Array<string>): void {\n try {\n newScopes.forEach(newScope => this.appendScope(newScope));\n } catch (e) {\n throw ClientAuthError.createAppendScopeSetError(e);\n }\n }\n\n /**\n * Removes element from set of scopes.\n * @param scope\n */\n removeScope(scope: string): void {\n if (StringUtils.isEmpty(scope)) {\n throw ClientAuthError.createRemoveEmptyScopeFromSetError(scope);\n }\n this.scopes.delete(scope.trim());\n }\n\n /**\n * Removes default scopes from set of scopes\n * Primarily used to prevent cache misses if the default scopes are not returned from the server\n */\n removeOIDCScopes(): void {\n OIDC_SCOPES.forEach((defaultScope: string) => {\n this.scopes.delete(defaultScope);\n });\n }\n\n /**\n * Combines an array of scopes with the current set of scopes.\n * @param otherScopes\n */\n unionScopeSets(otherScopes: ScopeSet): Set<string> {\n if (!otherScopes) {\n throw ClientAuthError.createEmptyInputScopeSetError();\n }\n const unionScopes = new Set<string>(); // Iterator in constructor not supported in IE11\n otherScopes.scopes.forEach(scope => unionScopes.add(scope.toLowerCase()));\n this.scopes.forEach(scope => unionScopes.add(scope.toLowerCase()));\n return unionScopes;\n }\n\n /**\n * Check if scopes intersect between this set and another.\n * @param otherScopes\n */\n intersectingScopeSets(otherScopes: ScopeSet): boolean {\n if (!otherScopes) {\n throw ClientAuthError.createEmptyInputScopeSetError();\n }\n \n // Do not allow OIDC scopes to be the only intersecting scopes\n if (!otherScopes.containsOnlyOIDCScopes()) {\n otherScopes.removeOIDCScopes();\n }\n const unionScopes = this.unionScopeSets(otherScopes);\n const sizeOtherScopes = otherScopes.getScopeCount();\n const sizeThisScopes = this.getScopeCount();\n const sizeUnionScopes = unionScopes.size;\n return sizeUnionScopes < (sizeThisScopes + sizeOtherScopes);\n }\n\n /**\n * Returns size of set of scopes.\n */\n getScopeCount(): number {\n return this.scopes.size;\n }\n\n /**\n * Returns the scopes as an array of string values\n */\n asArray(): Array<string> {\n const array: Array<string> = [];\n this.scopes.forEach(val => array.push(val));\n return array;\n }\n\n /**\n * Prints scopes into a space-delimited string\n */\n printScopes(): string {\n if (this.scopes) {\n const scopeArr = this.asArray();\n return scopeArr.join(\" \");\n }\n return Constants.EMPTY_STRING;\n }\n\n /**\n * Prints scopes into a space-delimited lower-case string (used for caching)\n */\n printScopesLowerCase(): string {\n return this.printScopes().toLowerCase();\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { TokenClaims } from \"./TokenClaims\";\nimport { DecodedAuthToken } from \"./DecodedAuthToken\";\nimport { ClientAuthError } from \"../error/ClientAuthError\";\nimport { StringUtils } from \"../utils/StringUtils\";\nimport { ICrypto } from \"../crypto/ICrypto\";\n\n/**\n * JWT Token representation class. Parses token string and generates claims object.\n */\nexport class AuthToken {\n\n // Raw Token string\n rawToken: string;\n // Claims inside token\n claims: TokenClaims;\n constructor(rawToken: string, crypto: ICrypto) {\n if (StringUtils.isEmpty(rawToken)) {\n throw ClientAuthError.createTokenNullOrEmptyError(rawToken);\n }\n\n this.rawToken = rawToken;\n this.claims = AuthToken.extractTokenClaims(rawToken, crypto);\n }\n\n /**\n * Extract token by decoding the rawToken\n *\n * @param encodedToken\n */\n static extractTokenClaims(encodedToken: string, crypto: ICrypto): TokenClaims {\n\n const decodedToken: DecodedAuthToken = StringUtils.decodeAuthToken(encodedToken);\n\n // token will be decoded to get the username\n try {\n const base64TokenPayload = decodedToken.JWSPayload;\n\n // base64Decode() should throw an error if there is an issue\n const base64Decoded = crypto.base64Decode(base64TokenPayload);\n return JSON.parse(base64Decoded) as TokenClaims;\n } catch (err) {\n throw ClientAuthError.createTokenParsingError(err);\n }\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AccountCache, AccountFilter, CredentialFilter, CredentialCache, ValidCredentialType, AppMetadataFilter, AppMetadataCache } from \"./utils/CacheTypes\";\nimport { CacheRecord } from \"./entities/CacheRecord\";\nimport { CacheSchemaType, CredentialType, Constants, APP_METADATA, THE_FAMILY_ID, AUTHORITY_METADATA_CONSTANTS, AuthenticationScheme } from \"../utils/Constants\";\nimport { CredentialEntity } from \"./entities/CredentialEntity\";\nimport { ScopeSet } from \"../request/ScopeSet\";\nimport { AccountEntity } from \"./entities/AccountEntity\";\nimport { AccessTokenEntity } from \"./entities/AccessTokenEntity\";\nimport { IdTokenEntity } from \"./entities/IdTokenEntity\";\nimport { RefreshTokenEntity } from \"./entities/RefreshTokenEntity\";\nimport { AuthError } from \"../error/AuthError\";\nimport { ICacheManager } from \"./interface/ICacheManager\";\nimport { ClientAuthError } from \"../error/ClientAuthError\";\nimport { AccountInfo } from \"../account/AccountInfo\";\nimport { AppMetadataEntity } from \"./entities/AppMetadataEntity\";\nimport { ServerTelemetryEntity } from \"./entities/ServerTelemetryEntity\";\nimport { ThrottlingEntity } from \"./entities/ThrottlingEntity\";\nimport { AuthToken } from \"../account/AuthToken\";\nimport { ICrypto } from \"../crypto/ICrypto\";\nimport { AuthorityMetadataEntity } from \"./entities/AuthorityMetadataEntity\";\nimport { BaseAuthRequest } from \"../request/BaseAuthRequest\";\n\n/**\n * Interface class which implement cache storage functions used by MSAL to perform validity checks, and store tokens.\n */\nexport abstract class CacheManager implements ICacheManager {\n protected clientId: string;\n protected cryptoImpl: ICrypto;\n\n constructor(clientId: string, cryptoImpl: ICrypto) {\n this.clientId = clientId;\n this.cryptoImpl = cryptoImpl;\n }\n\n /**\n * fetch the account entity from the platform cache\n * @param accountKey\n */\n abstract getAccount(accountKey: string): AccountEntity | null;\n\n /**\n * set account entity in the platform cache\n * @param account\n */\n abstract setAccount(account: AccountEntity): void;\n\n /**\n * fetch the idToken entity from the platform cache\n * @param idTokenKey\n */\n abstract getIdTokenCredential(idTokenKey: string): IdTokenEntity | null;\n\n /**\n * set idToken entity to the platform cache\n * @param idToken\n */\n abstract setIdTokenCredential(idToken: IdTokenEntity): void;\n\n /**\n * fetch the idToken entity from the platform cache\n * @param accessTokenKey\n */\n abstract getAccessTokenCredential(accessTokenKey: string): AccessTokenEntity | null;\n\n /**\n * set idToken entity to the platform cache\n * @param accessToken\n */\n abstract setAccessTokenCredential(accessToken: AccessTokenEntity): void;\n\n /**\n * fetch the idToken entity from the platform cache\n * @param refreshTokenKey\n */\n abstract getRefreshTokenCredential(refreshTokenKey: string): RefreshTokenEntity | null;\n\n /**\n * set idToken entity to the platform cache\n * @param refreshToken\n */\n abstract setRefreshTokenCredential(refreshToken: RefreshTokenEntity): void;\n\n /**\n * fetch appMetadata entity from the platform cache\n * @param appMetadataKey\n */\n abstract getAppMetadata(appMetadataKey: string): AppMetadataEntity | null;\n\n /**\n * set appMetadata entity to the platform cache\n * @param appMetadata\n */\n abstract setAppMetadata(appMetadata: AppMetadataEntity): void;\n\n /**\n * fetch server telemetry entity from the platform cache\n * @param serverTelemetryKey\n */\n abstract getServerTelemetry(serverTelemetryKey: string): ServerTelemetryEntity | null;\n\n /**\n * set server telemetry entity to the platform cache\n * @param serverTelemetryKey\n * @param serverTelemetry\n */\n abstract setServerTelemetry(serverTelemetryKey: string, serverTelemetry: ServerTelemetryEntity): void;\n\n /**\n * fetch cloud discovery metadata entity from the platform cache\n * @param key\n */\n abstract getAuthorityMetadata(key: string): AuthorityMetadataEntity | null;\n\n /**\n *\n */\n abstract getAuthorityMetadataKeys(): Array<string>;\n\n /**\n * set cloud discovery metadata entity to the platform cache\n * @param key\n * @param value\n */\n abstract setAuthorityMetadata(key: string, value: AuthorityMetadataEntity): void;\n\n /**\n * fetch throttling entity from the platform cache\n * @param throttlingCacheKey\n */\n abstract getThrottlingCache(throttlingCacheKey: string): ThrottlingEntity | null;\n\n /**\n * set throttling entity to the platform cache\n * @param throttlingCacheKey\n * @param throttlingCache\n */\n abstract setThrottlingCache(throttlingCacheKey: string, throttlingCache: ThrottlingEntity): void;;\n\n /**\n * Function to remove an item from cache given its key.\n * @param key\n */\n abstract removeItem(key: string, type?: string): boolean;\n\n /**\n * Function which returns boolean whether cache contains a specific key.\n * @param key\n */\n abstract containsKey(key: string, type?: string): boolean;\n\n /**\n * Function which retrieves all current keys from the cache.\n */\n abstract getKeys(): string[];\n\n /**\n * Function which clears cache.\n */\n abstract clear(): Promise<void>;\n\n /**\n * Function which updates an outdated credential cache key\n */\n abstract updateCredentialCacheKey(currentCacheKey: string, credential: ValidCredentialType): string;\n\n /**\n * Returns all accounts in cache\n */\n getAllAccounts(): AccountInfo[] {\n const currentAccounts: AccountCache = this.getAccountsFilteredBy();\n const accountValues: AccountEntity[] = Object.keys(currentAccounts).map(accountKey => currentAccounts[accountKey]);\n const numAccounts = accountValues.length;\n if (numAccounts < 1) {\n return [];\n } else {\n const allAccounts = accountValues.map<AccountInfo>((value) => {\n const accountEntity = CacheManager.toObject<AccountEntity>(new AccountEntity(), value);\n const accountInfo = accountEntity.getAccountInfo();\n const idToken = this.readIdTokenFromCache(this.clientId, accountInfo);\n if (idToken && !accountInfo.idTokenClaims) {\n accountInfo.idToken = idToken.secret;\n accountInfo.idTokenClaims = new AuthToken(idToken.secret, this.cryptoImpl).claims;\n }\n\n return accountInfo;\n\n });\n return allAccounts;\n }\n }\n\n /**\n * saves a cache record\n * @param cacheRecord\n */\n async saveCacheRecord(cacheRecord: CacheRecord): Promise<void> {\n if (!cacheRecord) {\n throw ClientAuthError.createNullOrUndefinedCacheRecord();\n }\n\n if (!!cacheRecord.account) {\n this.setAccount(cacheRecord.account);\n }\n\n if (!!cacheRecord.idToken) {\n this.setIdTokenCredential(cacheRecord.idToken);\n }\n\n if (!!cacheRecord.accessToken) {\n await this.saveAccessToken(cacheRecord.accessToken);\n }\n\n if (!!cacheRecord.refreshToken) {\n this.setRefreshTokenCredential(cacheRecord.refreshToken);\n }\n\n if (!!cacheRecord.appMetadata) {\n this.setAppMetadata(cacheRecord.appMetadata);\n }\n }\n\n /**\n * saves access token credential\n * @param credential\n */\n private async saveAccessToken(credential: AccessTokenEntity): Promise<void> {\n const currentTokenCache = this.getCredentialsFilteredBy({\n clientId: credential.clientId,\n credentialType: credential.credentialType,\n environment: credential.environment,\n homeAccountId: credential.homeAccountId,\n realm: credential.realm,\n tokenType: credential.tokenType,\n requestedClaimsHash: credential.requestedClaimsHash\n });\n\n const currentScopes = ScopeSet.fromString(credential.target);\n const currentAccessTokens: AccessTokenEntity[] = Object.keys(currentTokenCache.accessTokens).map(key => currentTokenCache.accessTokens[key]);\n\n if (currentAccessTokens) {\n const removedAccessTokens: Array<Promise<boolean>> = [];\n currentAccessTokens.forEach((tokenEntity) => {\n const tokenScopeSet = ScopeSet.fromString(tokenEntity.target);\n if (tokenScopeSet.intersectingScopeSets(currentScopes)) {\n removedAccessTokens.push(this.removeCredential(tokenEntity));\n }\n });\n await Promise.all(removedAccessTokens);\n }\n this.setAccessTokenCredential(credential);\n }\n\n /**\n * retrieve accounts matching all provided filters; if no filter is set, get all accounts\n * not checking for casing as keys are all generated in lower case, remember to convert to lower case if object properties are compared\n * @param homeAccountId\n * @param environment\n * @param realm\n */\n getAccountsFilteredBy(accountFilter?: AccountFilter): AccountCache {\n return this.getAccountsFilteredByInternal(\n accountFilter ? accountFilter.homeAccountId : Constants.EMPTY_STRING,\n accountFilter ? accountFilter.environment : Constants.EMPTY_STRING,\n accountFilter ? accountFilter.realm : Constants.EMPTY_STRING,\n accountFilter ? accountFilter.nativeAccountId: Constants.EMPTY_STRING,\n );\n }\n\n /**\n * retrieve accounts matching all provided filters; if no filter is set, get all accounts\n * not checking for casing as keys are all generated in lower case, remember to convert to lower case if object properties are compared\n * @param homeAccountId\n * @param environment\n * @param realm\n */\n private getAccountsFilteredByInternal(\n homeAccountId?: string,\n environment?: string,\n realm?: string,\n nativeAccountId?: string,\n ): AccountCache {\n const allCacheKeys = this.getKeys();\n const matchingAccounts: AccountCache = {};\n\n allCacheKeys.forEach((cacheKey) => {\n const entity: AccountEntity | null = this.getAccount(cacheKey);\n\n if (!entity) {\n return;\n }\n\n if (!!homeAccountId && !this.matchHomeAccountId(entity, homeAccountId)) {\n return;\n }\n\n if (!!environment && !this.matchEnvironment(entity, environment)) {\n return;\n }\n\n if (!!realm && !this.matchRealm(entity, realm)) {\n return;\n }\n\n if (!!nativeAccountId && !this.matchNativeAccountId(entity, nativeAccountId)) {\n return;\n }\n\n matchingAccounts[cacheKey] = entity;\n });\n\n return matchingAccounts;\n }\n\n /**\n * retrieve credentails matching all provided filters; if no filter is set, get all credentials\n * @param homeAccountId\n * @param environment\n * @param credentialType\n * @param clientId\n * @param realm\n * @param target\n */\n getCredentialsFilteredBy(filter: CredentialFilter): CredentialCache {\n return this.getCredentialsFilteredByInternal(\n filter.homeAccountId,\n filter.environment,\n filter.credentialType,\n filter.clientId,\n filter.familyId,\n filter.realm,\n filter.target,\n filter.userAssertionHash,\n filter.tokenType,\n filter.keyId,\n filter.requestedClaimsHash\n );\n }\n\n /**\n * Support function to help match credentials\n * @param homeAccountId\n * @param environment\n * @param credentialType\n * @param clientId\n * @param realm\n * @param target\n * @param userAssertionHash\n * @param tokenType\n */\n private getCredentialsFilteredByInternal(\n homeAccountId?: string,\n environment?: string,\n credentialType?: string,\n clientId?: string,\n familyId?: string,\n realm?: string,\n target?: string,\n userAssertionHash?: string,\n tokenType?: AuthenticationScheme,\n keyId?: string,\n requestedClaimsHash?: string\n ): CredentialCache {\n const allCacheKeys = this.getKeys();\n const matchingCredentials: CredentialCache = {\n idTokens: {},\n accessTokens: {},\n refreshTokens: {},\n };\n\n allCacheKeys.forEach((cacheKey) => {\n // don't parse any non-credential type cache entities\n const credType = CredentialEntity.getCredentialType(cacheKey);\n\n if (credType === Constants.NOT_DEFINED) {\n return;\n }\n\n // Attempt retrieval\n const entity = this.getSpecificCredential(cacheKey, credType);\n\n if (!entity) {\n return;\n }\n\n if (!!userAssertionHash && !this.matchUserAssertionHash(entity, userAssertionHash)) {\n return;\n }\n\n if (!!homeAccountId && !this.matchHomeAccountId(entity, homeAccountId)) {\n return;\n }\n\n if (!!environment && !this.matchEnvironment(entity, environment)) {\n return;\n }\n\n if (!!realm && !this.matchRealm(entity, realm)) {\n return;\n }\n\n if (!!credentialType && !this.matchCredentialType(entity, credentialType)) {\n return;\n }\n\n if (!!clientId && !this.matchClientId(entity, clientId)) {\n return;\n }\n\n if (!!familyId && !this.matchFamilyId(entity, familyId)) {\n return;\n }\n\n /*\n * idTokens do not have \"target\", target specific refreshTokens do exist for some types of authentication\n * Resource specific refresh tokens case will be added when the support is deemed necessary\n */\n if (!!target && !this.matchTarget(entity, target)) {\n return;\n }\n\n // If request OR cached entity has requested Claims Hash, check if they match\n if (requestedClaimsHash || entity.requestedClaimsHash) {\n // Don't match if either is undefined or they are different\n if (entity.requestedClaimsHash !== requestedClaimsHash) {\n return;\n }\n }\n\n // Access Token with Auth Scheme specific matching\n if (credentialType === CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME) {\n if(!!tokenType && !this.matchTokenType(entity, tokenType)) {\n return;\n }\n\n // KeyId (sshKid) in request must match cached SSH certificate keyId because SSH cert is bound to a specific key\n if (tokenType === AuthenticationScheme.SSH) {\n if(keyId && !this.matchKeyId(entity, keyId)) {\n return;\n }\n }\n }\n\n // At this point, the entity matches the request, update cache key if key schema has changed\n const updatedCacheKey = this.updateCredentialCacheKey(cacheKey, entity);\n\n switch (credType) {\n case CredentialType.ID_TOKEN:\n matchingCredentials.idTokens[updatedCacheKey] = entity as IdTokenEntity;\n break;\n case CredentialType.ACCESS_TOKEN:\n case CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME:\n matchingCredentials.accessTokens[updatedCacheKey] = entity as AccessTokenEntity;\n break;\n case CredentialType.REFRESH_TOKEN:\n matchingCredentials.refreshTokens[updatedCacheKey] = entity as RefreshTokenEntity;\n break;\n }\n });\n\n return matchingCredentials;\n }\n\n /**\n * retrieve appMetadata matching all provided filters; if no filter is set, get all appMetadata\n * @param filter\n */\n getAppMetadataFilteredBy(filter: AppMetadataFilter): AppMetadataCache {\n return this.getAppMetadataFilteredByInternal(\n filter.environment,\n filter.clientId,\n );\n }\n\n /**\n * Support function to help match appMetadata\n * @param environment\n * @param clientId\n */\n private getAppMetadataFilteredByInternal(\n environment?: string,\n clientId?: string\n ): AppMetadataCache {\n\n const allCacheKeys = this.getKeys();\n const matchingAppMetadata: AppMetadataCache = {};\n\n allCacheKeys.forEach((cacheKey) => {\n // don't parse any non-appMetadata type cache entities\n if (!this.isAppMetadata(cacheKey)) {\n return;\n }\n\n // Attempt retrieval\n const entity = this.getAppMetadata(cacheKey);\n\n if (!entity) {\n return;\n }\n\n if (!!environment && !this.matchEnvironment(entity, environment)) {\n return;\n }\n\n if (!!clientId && !this.matchClientId(entity, clientId)) {\n return;\n }\n\n matchingAppMetadata[cacheKey] = entity;\n\n });\n\n return matchingAppMetadata;\n }\n\n /**\n * retrieve authorityMetadata that contains a matching alias\n * @param filter\n */\n getAuthorityMetadataByAlias(host: string): AuthorityMetadataEntity | null {\n const allCacheKeys = this.getAuthorityMetadataKeys();\n let matchedEntity = null;\n\n allCacheKeys.forEach((cacheKey) => {\n // don't parse any non-authorityMetadata type cache entities\n if (!this.isAuthorityMetadata(cacheKey) || cacheKey.indexOf(this.clientId) === -1) {\n return;\n }\n\n // Attempt retrieval\n const entity = this.getAuthorityMetadata(cacheKey);\n\n if (!entity) {\n return;\n }\n\n if (entity.aliases.indexOf(host) === -1) {\n return;\n }\n\n matchedEntity = entity;\n\n });\n\n return matchedEntity;\n }\n\n /**\n * Removes all accounts and related tokens from cache.\n */\n async removeAllAccounts(): Promise<boolean> {\n const allCacheKeys = this.getKeys();\n const removedAccounts: Array<Promise<boolean>> = [];\n\n allCacheKeys.forEach((cacheKey) => {\n const entity = this.getAccount(cacheKey);\n if (!entity) {\n return;\n }\n removedAccounts.push(this.removeAccount(cacheKey));\n });\n\n await Promise.all(removedAccounts);\n return true;\n }\n\n /**\n * returns a boolean if the given account is removed\n * @param account\n */\n async removeAccount(accountKey: string): Promise<boolean> {\n const account = this.getAccount(accountKey);\n if (!account) {\n throw ClientAuthError.createNoAccountFoundError();\n }\n return (await this.removeAccountContext(account) && this.removeItem(accountKey, CacheSchemaType.ACCOUNT));\n }\n\n /**\n * Removes credentials associated with the provided account\n * @param account\n */\n async removeAccountContext(account: AccountEntity): Promise<boolean> {\n const allCacheKeys = this.getKeys();\n const accountId = account.generateAccountId();\n const removedCredentials: Array<Promise<boolean>> = [];\n\n allCacheKeys.forEach((cacheKey) => {\n // don't parse any non-credential type cache entities\n const credType = CredentialEntity.getCredentialType(cacheKey);\n if (credType === Constants.NOT_DEFINED) {\n return;\n }\n\n const cacheEntity = this.getSpecificCredential(cacheKey, credType);\n if (!!cacheEntity && accountId === cacheEntity.generateAccountId()) {\n removedCredentials.push(this.removeCredential(cacheEntity));\n }\n });\n\n await Promise.all(removedCredentials);\n return true;\n }\n\n /**\n * returns a boolean if the given credential is removed\n * @param credential\n */\n async removeCredential(credential: CredentialEntity): Promise<boolean> {\n const key = credential.generateCredentialKey();\n\n // Remove Token Binding Key from key store for PoP Tokens Credentials\n if (credential.credentialType.toLowerCase() === CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase()) {\n if(credential.tokenType === AuthenticationScheme.POP) {\n const accessTokenWithAuthSchemeEntity = credential as AccessTokenEntity;\n const kid = accessTokenWithAuthSchemeEntity.keyId;\n\n if (kid) {\n try {\n await this.cryptoImpl.removeTokenBindingKey(kid);\n } catch (error) {\n throw ClientAuthError.createBindingKeyNotRemovedError();\n }\n }\n }\n }\n\n return this.removeItem(key, CacheSchemaType.CREDENTIAL);\n }\n\n /**\n * Removes all app metadata objects from cache.\n */\n removeAppMetadata(): boolean {\n const allCacheKeys = this.getKeys();\n allCacheKeys.forEach((cacheKey) => {\n if (this.isAppMetadata(cacheKey)) {\n this.removeItem(cacheKey, CacheSchemaType.APP_METADATA);\n }\n });\n\n return true;\n }\n\n /**\n * Retrieve the cached credentials into a cacherecord\n * @param account\n * @param clientId\n * @param scopes\n * @param environment\n * @param authScheme\n */\n readCacheRecord(account: AccountInfo, clientId: string, request: BaseAuthRequest, environment: string): CacheRecord {\n\n const cachedAccount = this.readAccountFromCache(account);\n const cachedIdToken = this.readIdTokenFromCache(clientId, account);\n const cachedAccessToken = this.readAccessTokenFromCache(clientId, account, request);\n const cachedRefreshToken = this.readRefreshTokenFromCache(clientId, account, false);\n const cachedAppMetadata = this.readAppMetadataFromCache(environment, clientId);\n\n if (cachedAccount && cachedIdToken) {\n cachedAccount.idTokenClaims = new AuthToken(cachedIdToken.secret, this.cryptoImpl).claims;\n }\n\n return {\n account: cachedAccount,\n idToken: cachedIdToken,\n accessToken: cachedAccessToken,\n refreshToken: cachedRefreshToken,\n appMetadata: cachedAppMetadata,\n };\n }\n\n /**\n * Retrieve AccountEntity from cache\n * @param account\n */\n readAccountFromCache(account: AccountInfo): AccountEntity | null {\n const accountKey: string = AccountEntity.generateAccountCacheKey(account);\n return this.getAccount(accountKey);\n }\n\n /**\n * Retrieve AccountEntity from cache\n * @param nativeAccountId\n * @returns AccountEntity or Null\n */\n readAccountFromCacheWithNativeAccountId(nativeAccountId: string): AccountEntity | null {\n // fetch account from memory\n const accountFilter: AccountFilter = {\n nativeAccountId\n };\n const accountCache: AccountCache = this.getAccountsFilteredBy(accountFilter);\n const accounts = Object.keys(accountCache).map((key) => accountCache[key]);\n\n if (accounts.length < 1) {\n return null;\n } else if (accounts.length > 1) {\n throw ClientAuthError.createMultipleMatchingAccountsInCacheError();\n }\n\n return accountCache[0];\n }\n\n /**\n * Retrieve IdTokenEntity from cache\n * @param clientId\n * @param account\n * @param inputRealm\n */\n readIdTokenFromCache(clientId: string, account: AccountInfo): IdTokenEntity | null {\n const idTokenFilter: CredentialFilter = {\n homeAccountId: account.homeAccountId,\n environment: account.environment,\n credentialType: CredentialType.ID_TOKEN,\n clientId: clientId,\n realm: account.tenantId,\n };\n\n const credentialCache: CredentialCache = this.getCredentialsFilteredBy(idTokenFilter);\n const idTokens = Object.keys(credentialCache.idTokens).map((key) => credentialCache.idTokens[key]);\n const numIdTokens = idTokens.length;\n\n if (numIdTokens < 1) {\n return null;\n } else if (numIdTokens > 1) {\n throw ClientAuthError.createMultipleMatchingTokensInCacheError();\n }\n\n return idTokens[0] as IdTokenEntity;\n }\n\n /**\n * Retrieve AccessTokenEntity from cache\n * @param clientId\n * @param account\n * @param scopes\n * @param authScheme\n */\n readAccessTokenFromCache(clientId: string, account: AccountInfo, request: BaseAuthRequest): AccessTokenEntity | null {\n const scopes = new ScopeSet(request.scopes || []);\n const authScheme = request.authenticationScheme || AuthenticationScheme.BEARER;\n /*\n * Distinguish between Bearer and PoP/SSH token cache types\n * Cast to lowercase to handle \"bearer\" from ADFS\n */\n const credentialType = (authScheme && authScheme.toLowerCase() !== AuthenticationScheme.BEARER.toLowerCase()) ? CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME : CredentialType.ACCESS_TOKEN;\n\n const accessTokenFilter: CredentialFilter = {\n homeAccountId: account.homeAccountId,\n environment: account.environment,\n credentialType: credentialType,\n clientId,\n realm: account.tenantId,\n target: scopes.printScopesLowerCase(),\n tokenType: authScheme,\n keyId: request.sshKid,\n requestedClaimsHash: request.requestedClaimsHash,\n };\n\n const credentialCache: CredentialCache = this.getCredentialsFilteredBy(accessTokenFilter);\n\n const accessTokens = Object.keys(credentialCache.accessTokens).map((key) => credentialCache.accessTokens[key]);\n\n const numAccessTokens = accessTokens.length;\n if (numAccessTokens < 1) {\n return null;\n } else if (numAccessTokens > 1) {\n throw ClientAuthError.createMultipleMatchingTokensInCacheError();\n }\n\n return accessTokens[0] as AccessTokenEntity;\n }\n\n /**\n * Helper to retrieve the appropriate refresh token from cache\n * @param clientId\n * @param account\n * @param familyRT\n */\n readRefreshTokenFromCache(clientId: string, account: AccountInfo, familyRT: boolean): RefreshTokenEntity | null {\n const id = familyRT ? THE_FAMILY_ID : undefined;\n const refreshTokenFilter: CredentialFilter = {\n homeAccountId: account.homeAccountId,\n environment: account.environment,\n credentialType: CredentialType.REFRESH_TOKEN,\n clientId: clientId,\n familyId: id,\n };\n\n const credentialCache: CredentialCache = this.getCredentialsFilteredBy(refreshTokenFilter);\n const refreshTokens = Object.keys(credentialCache.refreshTokens).map((key) => credentialCache.refreshTokens[key]);\n\n const numRefreshTokens = refreshTokens.length;\n if (numRefreshTokens < 1) {\n return null;\n }\n // address the else case after remove functions address environment aliases\n\n return refreshTokens[0] as RefreshTokenEntity;\n }\n\n /**\n * Retrieve AppMetadataEntity from cache\n */\n readAppMetadataFromCache(environment: string, clientId: string): AppMetadataEntity | null {\n const appMetadataFilter: AppMetadataFilter = {\n environment,\n clientId,\n };\n\n const appMetadata: AppMetadataCache = this.getAppMetadataFilteredBy(appMetadataFilter);\n const appMetadataEntries: AppMetadataEntity[] = Object.keys(appMetadata).map((key) => appMetadata[key]);\n\n const numAppMetadata = appMetadataEntries.length;\n if (numAppMetadata < 1) {\n return null;\n } else if (numAppMetadata > 1) {\n throw ClientAuthError.createMultipleMatchingAppMetadataInCacheError();\n }\n\n return appMetadataEntries[0] as AppMetadataEntity;\n }\n\n /**\n * Return the family_id value associated with FOCI\n * @param environment\n * @param clientId\n */\n isAppMetadataFOCI(environment: string, clientId: string): boolean {\n const appMetadata = this.readAppMetadataFromCache(environment, clientId);\n return !!(appMetadata && appMetadata.familyId === THE_FAMILY_ID);\n }\n\n /**\n * helper to match account ids\n * @param value\n * @param homeAccountId\n */\n private matchHomeAccountId(entity: AccountEntity | CredentialEntity, homeAccountId: string): boolean {\n return !!(entity.homeAccountId && homeAccountId === entity.homeAccountId);\n }\n\n /**\n * helper to match assertion\n * @param value\n * @param oboAssertion\n */\n private matchUserAssertionHash(entity: CredentialEntity, userAssertionHash: string): boolean {\n return !!(entity.userAssertionHash && userAssertionHash === entity.userAssertionHash);\n }\n\n /**\n * helper to match environment\n * @param value\n * @param environment\n */\n private matchEnvironment(entity: AccountEntity | CredentialEntity | AppMetadataEntity, environment: string): boolean {\n const cloudMetadata = this.getAuthorityMetadataByAlias(environment);\n if (cloudMetadata && cloudMetadata.aliases.indexOf(entity.environment) > -1) {\n return true;\n }\n\n return false;\n }\n\n /**\n * helper to match credential type\n * @param entity\n * @param credentialType\n */\n private matchCredentialType(entity: CredentialEntity, credentialType: string): boolean {\n return (entity.credentialType && credentialType.toLowerCase() === entity.credentialType.toLowerCase());\n }\n\n /**\n * helper to match client ids\n * @param entity\n * @param clientId\n */\n private matchClientId(entity: CredentialEntity | AppMetadataEntity, clientId: string): boolean {\n return !!(entity.clientId && clientId === entity.clientId);\n }\n\n /**\n * helper to match family ids\n * @param entity\n * @param familyId\n */\n private matchFamilyId(entity: CredentialEntity | AppMetadataEntity, familyId: string): boolean {\n return !!(entity.familyId && familyId === entity.familyId);\n }\n\n /**\n * helper to match realm\n * @param entity\n * @param realm\n */\n private matchRealm(entity: AccountEntity | CredentialEntity, realm: string): boolean {\n return !!(entity.realm && realm === entity.realm);\n }\n\n /**\n * helper to match nativeAccountId\n * @param entity\n * @param nativeAccountId\n * @returns boolean indicating the match result\n */\n private matchNativeAccountId(entity: AccountEntity, nativeAccountId: string): boolean {\n return !!(entity.nativeAccountId && nativeAccountId === entity.nativeAccountId);\n }\n\n /**\n * Returns true if the target scopes are a subset of the current entity's scopes, false otherwise.\n * @param entity\n * @param target\n */\n private matchTarget(entity: CredentialEntity, target: string): boolean {\n const isNotAccessTokenCredential = (entity.credentialType !== CredentialType.ACCESS_TOKEN && entity.credentialType !== CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME);\n\n if ( isNotAccessTokenCredential || !entity.target) {\n return false;\n }\n\n const entityScopeSet: ScopeSet = ScopeSet.fromString(entity.target);\n const requestTargetScopeSet: ScopeSet = ScopeSet.fromString(target);\n\n if (!requestTargetScopeSet.containsOnlyOIDCScopes()) {\n requestTargetScopeSet.removeOIDCScopes(); // ignore OIDC scopes\n } else {\n requestTargetScopeSet.removeScope(Constants.OFFLINE_ACCESS_SCOPE);\n }\n return entityScopeSet.containsScopeSet(requestTargetScopeSet);\n }\n\n /**\n * Returns true if the credential's tokenType or Authentication Scheme matches the one in the request, false otherwise\n * @param entity\n * @param tokenType\n */\n private matchTokenType(entity: CredentialEntity, tokenType: AuthenticationScheme): boolean {\n return !!(entity.tokenType && entity.tokenType === tokenType);\n }\n\n /**\n * Returns true if the credential's keyId matches the one in the request, false otherwise\n * @param entity\n * @param tokenType\n */\n private matchKeyId(entity: CredentialEntity, keyId: string): boolean {\n return !!(entity.keyId && entity.keyId === keyId);\n }\n\n /**\n * returns if a given cache entity is of the type appmetadata\n * @param key\n */\n private isAppMetadata(key: string): boolean {\n return key.indexOf(APP_METADATA) !== -1;\n }\n\n /**\n * returns if a given cache entity is of the type authoritymetadata\n * @param key\n */\n protected isAuthorityMetadata(key: string): boolean {\n return key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) !== -1;\n }\n\n /**\n * returns cache key used for cloud instance metadata\n */\n generateAuthorityMetadataCacheKey(authority: string): string {\n return `${AUTHORITY_METADATA_CONSTANTS.CACHE_KEY}-${this.clientId}-${authority}`;\n }\n\n /**\n * Returns the specific credential (IdToken/AccessToken/RefreshToken) from the cache\n * @param key\n * @param credType\n */\n private getSpecificCredential(key: string, credType: string): ValidCredentialType | null {\n switch (credType) {\n case CredentialType.ID_TOKEN: {\n return this.getIdTokenCredential(key);\n }\n case CredentialType.ACCESS_TOKEN:\n case CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME: {\n return this.getAccessTokenCredential(key);\n }\n case CredentialType.REFRESH_TOKEN: {\n return this.getRefreshTokenCredential(key);\n }\n default:\n return null;\n }\n }\n\n /**\n * Helper to convert serialized data to object\n * @param obj\n * @param json\n */\n static toObject<T>(obj: T, json: object): T {\n for (const propertyName in json) {\n obj[propertyName] = json[propertyName];\n }\n return obj;\n }\n}\n\nexport class DefaultStorageClass extends CacheManager {\n setAccount(): void {\n const notImplErr = \"Storage interface - setAccount() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n getAccount(): AccountEntity {\n const notImplErr = \"Storage interface - getAccount() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n setIdTokenCredential(): void {\n const notImplErr = \"Storage interface - setIdTokenCredential() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n getIdTokenCredential(): IdTokenEntity {\n const notImplErr = \"Storage interface - getIdTokenCredential() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n setAccessTokenCredential(): void {\n const notImplErr = \"Storage interface - setAccessTokenCredential() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n getAccessTokenCredential(): AccessTokenEntity {\n const notImplErr = \"Storage interface - getAccessTokenCredential() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n setRefreshTokenCredential(): void {\n const notImplErr = \"Storage interface - setRefreshTokenCredential() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n getRefreshTokenCredential(): RefreshTokenEntity {\n const notImplErr = \"Storage interface - getRefreshTokenCredential() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n setAppMetadata(): void {\n const notImplErr = \"Storage interface - setAppMetadata() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n getAppMetadata(): AppMetadataEntity {\n const notImplErr = \"Storage interface - getAppMetadata() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n setServerTelemetry(): void {\n const notImplErr = \"Storage interface - setServerTelemetry() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n getServerTelemetry(): ServerTelemetryEntity {\n const notImplErr = \"Storage interface - getServerTelemetry() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n setAuthorityMetadata(): void {\n const notImplErr = \"Storage interface - setAuthorityMetadata() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n getAuthorityMetadata(): AuthorityMetadataEntity | null {\n const notImplErr = \"Storage interface - getAuthorityMetadata() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n getAuthorityMetadataKeys(): Array<string> {\n const notImplErr = \"Storage interface - getAuthorityMetadataKeys() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n setThrottlingCache(): void {\n const notImplErr = \"Storage interface - setThrottlingCache() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n getThrottlingCache(): ThrottlingEntity {\n const notImplErr = \"Storage interface - getThrottlingCache() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n removeItem(): boolean {\n const notImplErr = \"Storage interface - removeItem() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n containsKey(): boolean {\n const notImplErr = \"Storage interface - containsKey() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n getKeys(): string[] {\n const notImplErr = \"Storage interface - getKeys() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n async clear(): Promise<void> {\n const notImplErr = \"Storage interface - clear() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n updateCredentialCacheKey(): string {\n const notImplErr = \"Storage interface - updateCredentialCacheKey() has not been implemented for the cacheStorage interface.\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { CredentialEntity } from \"./CredentialEntity\";\nimport { CredentialType } from \"../../utils/Constants\";\n\n/**\n * ID_TOKEN Cache\n *\n * Key:Value Schema:\n *\n * Key Example: uid.utid-login.microsoftonline.com-idtoken-clientId-contoso.com-\n *\n * Value Schema:\n * {\n * homeAccountId: home account identifier for the auth scheme,\n * environment: entity that issued the token, represented as a full host\n * credentialType: Type of credential as a string, can be one of the following: RefreshToken, AccessToken, IdToken, Password, Cookie, Certificate, Other\n * clientId: client ID of the application\n * secret: Actual credential as a string\n * realm: Full tenant or organizational identifier that the account belongs to\n * }\n */\nexport class IdTokenEntity extends CredentialEntity {\n realm: string;\n\n /**\n * Create IdTokenEntity\n * @param homeAccountId\n * @param authenticationResult\n * @param clientId\n * @param authority\n */\n static createIdTokenEntity(\n homeAccountId: string,\n environment: string,\n idToken: string,\n clientId: string,\n tenantId: string,\n ): IdTokenEntity {\n const idTokenEntity = new IdTokenEntity();\n\n idTokenEntity.credentialType = CredentialType.ID_TOKEN;\n idTokenEntity.homeAccountId = homeAccountId;\n idTokenEntity.environment = environment;\n idTokenEntity.clientId = clientId;\n idTokenEntity.secret = idToken;\n idTokenEntity.realm = tenantId;\n\n return idTokenEntity;\n }\n\n /**\n * Validates an entity: checks for all expected params\n * @param entity\n */\n static isIdTokenEntity(entity: object): boolean {\n\n if (!entity) {\n return false;\n }\n\n return (\n entity.hasOwnProperty(\"homeAccountId\") &&\n entity.hasOwnProperty(\"environment\") &&\n entity.hasOwnProperty(\"credentialType\") &&\n entity.hasOwnProperty(\"realm\") &&\n entity.hasOwnProperty(\"clientId\") &&\n entity.hasOwnProperty(\"secret\") &&\n entity[\"credentialType\"] === CredentialType.ID_TOKEN\n );\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Utility class which exposes functions for managing date and time operations.\n */\nexport class TimeUtils {\n\n /**\n * return the current time in Unix time (seconds).\n */\n static nowSeconds(): number {\n // Date.getTime() returns in milliseconds.\n return Math.round(new Date().getTime() / 1000.0);\n }\n \n /**\n * check if a token is expired based on given UTC time in seconds.\n * @param expiresOn\n */\n static isTokenExpired(expiresOn: string, offset: number): boolean {\n // check for access token expiry\n const expirationSec = Number(expiresOn) || 0;\n const offsetCurrentTimeSec = TimeUtils.nowSeconds() + offset;\n\n // If current time + offset is greater than token expiration time, then token is expired.\n return (offsetCurrentTimeSec > expirationSec);\n }\n\n /**\n * If the current time is earlier than the time that a token was cached at, we must discard the token\n * i.e. The system clock was turned back after acquiring the cached token\n * @param cachedAt \n * @param offset \n */\n static wasClockTurnedBack(cachedAt: string): boolean {\n const cachedAtSec = Number(cachedAt);\n\n return cachedAtSec > TimeUtils.nowSeconds();\n }\n\n /**\n * Waits for t number of milliseconds\n * @param t number\n * @param value T\n */\n static delay<T>(t: number, value?: T): Promise<T | void> {\n return new Promise((resolve) => setTimeout(() => resolve(value), t));\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { CredentialEntity } from \"./CredentialEntity\";\nimport { CredentialType, AuthenticationScheme } from \"../../utils/Constants\";\nimport { TimeUtils } from \"../../utils/TimeUtils\";\nimport { StringUtils } from \"../../utils/StringUtils\";\nimport { ICrypto } from \"../../crypto/ICrypto\";\nimport { TokenClaims } from \"../../account/TokenClaims\";\nimport { AuthToken } from \"../../account/AuthToken\";\nimport { ClientAuthError } from \"../../error/ClientAuthError\";\n\n/**\n * ACCESS_TOKEN Credential Type\n *\n * Key:Value Schema:\n *\n * Key Example: uid.utid-login.microsoftonline.com-accesstoken-clientId-contoso.com-user.read\n *\n * Value Schema:\n * {\n * homeAccountId: home account identifier for the auth scheme,\n * environment: entity that issued the token, represented as a full host\n * credentialType: Type of credential as a string, can be one of the following: RefreshToken, AccessToken, IdToken, Password, Cookie, Certificate, Other\n * clientId: client ID of the application\n * secret: Actual credential as a string\n * familyId: Family ID identifier, usually only used for refresh tokens\n * realm: Full tenant or organizational identifier that the account belongs to\n * target: Permissions that are included in the token, or for refresh tokens, the resource identifier.\n * cachedAt: Absolute device time when entry was created in the cache.\n * expiresOn: Token expiry time, calculated based on current UTC time in seconds. Represented as a string.\n * extendedExpiresOn: Additional extended expiry time until when token is valid in case of server-side outage. Represented as string in UTC seconds.\n * keyId: used for POP and SSH tokenTypes\n * tokenType: Type of the token issued. Usually \"Bearer\"\n * }\n */\nexport class AccessTokenEntity extends CredentialEntity {\n realm: string;\n target: string;\n cachedAt: string;\n expiresOn: string;\n extendedExpiresOn?: string;\n refreshOn?: string;\n keyId?: string; // for POP and SSH tokenTypes\n tokenType?: AuthenticationScheme;\n requestedClaims?: string;\n requestedClaimsHash?: string;\n\n /**\n * Create AccessTokenEntity\n * @param homeAccountId\n * @param environment\n * @param accessToken\n * @param clientId\n * @param tenantId\n * @param scopes\n * @param expiresOn\n * @param extExpiresOn\n */\n static createAccessTokenEntity(\n homeAccountId: string,\n environment: string,\n accessToken: string,\n clientId: string,\n tenantId: string,\n scopes: string,\n expiresOn: number,\n extExpiresOn: number,\n cryptoUtils: ICrypto,\n refreshOn?: number,\n tokenType?: AuthenticationScheme,\n userAssertionHash?:string,\n keyId?: string,\n requestedClaims?: string,\n requestedClaimsHash?: string\n ): AccessTokenEntity {\n const atEntity: AccessTokenEntity = new AccessTokenEntity();\n\n atEntity.homeAccountId = homeAccountId;\n atEntity.credentialType = CredentialType.ACCESS_TOKEN;\n atEntity.secret = accessToken;\n\n const currentTime = TimeUtils.nowSeconds();\n atEntity.cachedAt = currentTime.toString();\n\n /*\n * Token expiry time.\n * This value should be  calculated based on the current UTC time measured locally and the value  expires_in Represented as a string in JSON.\n */\n atEntity.expiresOn = expiresOn.toString();\n atEntity.extendedExpiresOn = extExpiresOn.toString();\n if (refreshOn) {\n atEntity.refreshOn = refreshOn.toString();\n }\n\n atEntity.environment = environment;\n atEntity.clientId = clientId;\n atEntity.realm = tenantId;\n atEntity.target = scopes;\n atEntity.userAssertionHash = userAssertionHash;\n\n atEntity.tokenType = StringUtils.isEmpty(tokenType) ? AuthenticationScheme.BEARER : tokenType;\n\n if (requestedClaims) {\n atEntity.requestedClaims = requestedClaims;\n atEntity.requestedClaimsHash = requestedClaimsHash;\n }\n\n /*\n * Create Access Token With Auth Scheme instead of regular access token\n * Cast to lower to handle \"bearer\" from ADFS\n */\n if (atEntity.tokenType?.toLowerCase() !== AuthenticationScheme.BEARER.toLowerCase()) {\n atEntity.credentialType = CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME;\n switch (atEntity.tokenType) {\n case AuthenticationScheme.POP:\n // Make sure keyId is present and add it to credential\n const tokenClaims: TokenClaims | null = AuthToken.extractTokenClaims(accessToken, cryptoUtils);\n if (!tokenClaims?.cnf?.kid) {\n throw ClientAuthError.createTokenClaimsRequiredError();\n }\n atEntity.keyId = tokenClaims.cnf.kid;\n break;\n case AuthenticationScheme.SSH:\n atEntity.keyId = keyId;\n }\n }\n\n return atEntity;\n }\n\n /**\n * Validates an entity: checks for all expected params\n * @param entity\n */\n static isAccessTokenEntity(entity: object): boolean {\n\n if (!entity) {\n return false;\n }\n\n return (\n entity.hasOwnProperty(\"homeAccountId\") &&\n entity.hasOwnProperty(\"environment\") &&\n entity.hasOwnProperty(\"credentialType\") &&\n entity.hasOwnProperty(\"realm\") &&\n entity.hasOwnProperty(\"clientId\") &&\n entity.hasOwnProperty(\"secret\") &&\n entity.hasOwnProperty(\"target\") &&\n (entity[\"credentialType\"] === CredentialType.ACCESS_TOKEN || entity[\"credentialType\"] === CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME)\n );\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { CredentialEntity } from \"./CredentialEntity\";\nimport { CredentialType } from \"../../utils/Constants\";\n\n/**\n * REFRESH_TOKEN Cache\n *\n * Key:Value Schema:\n *\n * Key Example: uid.utid-login.microsoftonline.com-refreshtoken-clientId--\n *\n * Value:\n * {\n * homeAccountId: home account identifier for the auth scheme,\n * environment: entity that issued the token, represented as a full host\n * credentialType: Type of credential as a string, can be one of the following: RefreshToken, AccessToken, IdToken, Password, Cookie, Certificate, Other\n * clientId: client ID of the application\n * secret: Actual credential as a string\n * familyId: Family ID identifier, '1' represents Microsoft Family\n * realm: Full tenant or organizational identifier that the account belongs to\n * target: Permissions that are included in the token, or for refresh tokens, the resource identifier.\n * }\n */\nexport class RefreshTokenEntity extends CredentialEntity {\n familyId?: string;\n\n /**\n * Create RefreshTokenEntity\n * @param homeAccountId\n * @param authenticationResult\n * @param clientId\n * @param authority\n */\n static createRefreshTokenEntity(\n homeAccountId: string,\n environment: string,\n refreshToken: string,\n clientId: string,\n familyId?: string,\n userAssertionHash?: string\n ): RefreshTokenEntity {\n const rtEntity = new RefreshTokenEntity();\n\n rtEntity.clientId = clientId;\n rtEntity.credentialType = CredentialType.REFRESH_TOKEN;\n rtEntity.environment = environment;\n rtEntity.homeAccountId = homeAccountId;\n rtEntity.secret = refreshToken;\n rtEntity.userAssertionHash = userAssertionHash;\n\n if (familyId)\n rtEntity.familyId = familyId;\n\n return rtEntity;\n }\n\n /**\n * Validates an entity: checks for all expected params\n * @param entity\n */\n static isRefreshTokenEntity(entity: object): boolean {\n\n if (!entity) {\n return false;\n }\n\n return (\n entity.hasOwnProperty(\"homeAccountId\") &&\n entity.hasOwnProperty(\"environment\") &&\n entity.hasOwnProperty(\"credentialType\") &&\n entity.hasOwnProperty(\"clientId\") &&\n entity.hasOwnProperty(\"secret\") &&\n entity[\"credentialType\"] === CredentialType.REFRESH_TOKEN\n );\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { APP_METADATA, Separators } from \"../../utils/Constants\";\n\n/**\n * APP_METADATA Cache\n *\n * Key:Value Schema:\n *\n * Key: appmetadata-<environment>-<client_id>\n *\n * Value:\n * {\n * clientId: client ID of the application\n * environment: entity that issued the token, represented as a full host\n * familyId: Family ID identifier, '1' represents Microsoft Family\n * }\n */\nexport class AppMetadataEntity {\n clientId: string;\n environment: string;\n familyId?: string;\n\n /**\n * Generate AppMetadata Cache Key as per the schema: appmetadata-<environment>-<client_id>\n */\n generateAppMetadataKey(): string {\n return AppMetadataEntity.generateAppMetadataCacheKey(this.environment, this.clientId);\n }\n\n /**\n * Generate AppMetadata Cache Key\n */\n static generateAppMetadataCacheKey(environment: string, clientId: string): string {\n const appMetaDataKeyArray: Array<string> = [\n APP_METADATA,\n environment,\n clientId,\n ];\n return appMetaDataKeyArray.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\n }\n\n /**\n * Creates AppMetadataEntity\n * @param clientId\n * @param environment\n * @param familyId\n */\n static createAppMetadataEntity(clientId: string, environment: string, familyId?: string): AppMetadataEntity {\n const appMetadata = new AppMetadataEntity();\n\n appMetadata.clientId = clientId;\n appMetadata.environment = environment;\n if (familyId) {\n appMetadata.familyId = familyId;\n }\n\n return appMetadata;\n }\n\n /**\n * Validates an entity: checks for all expected params\n * @param entity\n */\n static isAppMetadataEntity(key: string, entity: object): boolean {\n\n if (!entity) {\n return false;\n }\n\n return (\n key.indexOf(APP_METADATA) === 0 &&\n entity.hasOwnProperty(\"clientId\") &&\n entity.hasOwnProperty(\"environment\")\n );\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { SERVER_TELEM_CONSTANTS } from \"../../utils/Constants\";\n\nexport class ServerTelemetryEntity {\n failedRequests: Array<string|number>;\n errors: string[];\n cacheHits: number;\n\n constructor() {\n this.failedRequests = [];\n this.errors = [];\n this.cacheHits = 0;\n }\n\n /**\n * validates if a given cache entry is \"Telemetry\", parses <key,value>\n * @param key\n * @param entity\n */\n static isServerTelemetryEntity(key: string, entity?: object): boolean {\n\n const validateKey: boolean = key.indexOf(SERVER_TELEM_CONSTANTS.CACHE_KEY) === 0;\n let validateEntity: boolean = true;\n\n if (entity) {\n validateEntity =\n entity.hasOwnProperty(\"failedRequests\") &&\n entity.hasOwnProperty(\"errors\") &&\n entity.hasOwnProperty(\"cacheHits\");\n }\n\n return validateKey && validateEntity;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { CloudDiscoveryMetadata } from \"../../authority/CloudDiscoveryMetadata\";\nimport { OpenIdConfigResponse } from \"../../authority/OpenIdConfigResponse\";\nimport { AUTHORITY_METADATA_CONSTANTS } from \"../../utils/Constants\";\nimport { TimeUtils } from \"../../utils/TimeUtils\";\n\nexport class AuthorityMetadataEntity {\n aliases: Array<string>;\n preferred_cache: string;\n preferred_network: string;\n canonical_authority: string;\n authorization_endpoint: string;\n token_endpoint: string;\n end_session_endpoint?: string;\n issuer: string;\n aliasesFromNetwork: boolean;\n endpointsFromNetwork: boolean;\n expiresAt: number;\n jwks_uri: string;\n\n constructor() {\n this.expiresAt = TimeUtils.nowSeconds() + AUTHORITY_METADATA_CONSTANTS.REFRESH_TIME_SECONDS;\n }\n\n /**\n * Update the entity with new aliases, preferred_cache and preferred_network values\n * @param metadata \n * @param fromNetwork \n */\n updateCloudDiscoveryMetadata(metadata: CloudDiscoveryMetadata, fromNetwork: boolean): void {\n this.aliases = metadata.aliases;\n this.preferred_cache = metadata.preferred_cache;\n this.preferred_network = metadata.preferred_network;\n this.aliasesFromNetwork = fromNetwork;\n }\n\n /**\n * Update the entity with new endpoints\n * @param metadata \n * @param fromNetwork \n */\n updateEndpointMetadata(metadata: OpenIdConfigResponse, fromNetwork: boolean): void {\n this.authorization_endpoint = metadata.authorization_endpoint;\n this.token_endpoint = metadata.token_endpoint;\n this.end_session_endpoint = metadata.end_session_endpoint;\n this.issuer = metadata.issuer;\n this.endpointsFromNetwork = fromNetwork;\n this.jwks_uri = metadata.jwks_uri;\n }\n\n /**\n * Save the authority that was used to create this cache entry\n * @param authority \n */\n updateCanonicalAuthority(authority: string): void {\n this.canonical_authority = authority;\n }\n\n /**\n * Reset the exiresAt value\n */\n resetExpiresAt(): void {\n this.expiresAt = TimeUtils.nowSeconds() + AUTHORITY_METADATA_CONSTANTS.REFRESH_TIME_SECONDS;\n }\n\n /**\n * Returns whether or not the data needs to be refreshed\n */\n isExpired(): boolean {\n return this.expiresAt <= TimeUtils.nowSeconds();\n }\n\n /**\n * Validates an entity: checks for all expected params\n * @param entity\n */\n static isAuthorityMetadataEntity(key: string, entity: object): boolean {\n\n if (!entity) {\n return false;\n }\n\n return (\n key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) === 0 &&\n entity.hasOwnProperty(\"aliases\") &&\n entity.hasOwnProperty(\"preferred_cache\") &&\n entity.hasOwnProperty(\"preferred_network\") &&\n entity.hasOwnProperty(\"canonical_authority\") &&\n entity.hasOwnProperty(\"authorization_endpoint\") &&\n entity.hasOwnProperty(\"token_endpoint\") &&\n entity.hasOwnProperty(\"issuer\") &&\n entity.hasOwnProperty(\"aliasesFromNetwork\") &&\n entity.hasOwnProperty(\"endpointsFromNetwork\") &&\n entity.hasOwnProperty(\"expiresAt\") &&\n entity.hasOwnProperty(\"jwks_uri\")\n );\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ThrottlingConstants } from \"../../utils/Constants\";\n\nexport class ThrottlingEntity {\n // Unix-time value representing the expiration of the throttle\n throttleTime: number;\n // Information provided by the server\n error?: string;\n errorCodes?: Array<string>;\n errorMessage?: string;\n subError?: string;\n\n /**\n * validates if a given cache entry is \"Throttling\", parses <key,value>\n * @param key\n * @param entity\n */\n static isThrottlingEntity(key: string, entity?: object): boolean {\n \n let validateKey: boolean = false;\n if (key) {\n validateKey = key.indexOf(ThrottlingConstants.THROTTLING_PREFIX) === 0;\n }\n \n let validateEntity: boolean = true;\n if (entity) {\n validateEntity = entity.hasOwnProperty(\"throttleTime\");\n }\n\n return validateKey && validateEntity;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { StringUtils } from \"./StringUtils\";\nimport { Constants } from \"./Constants\";\nimport { ICrypto } from \"../crypto/ICrypto\";\nimport { ClientAuthError } from \"../error/ClientAuthError\";\n\n/**\n * Type which defines the object that is stringified, encoded and sent in the state value.\n * Contains the following:\n * - id - unique identifier for this request\n * - ts - timestamp for the time the request was made. Used to ensure that token expiration is not calculated incorrectly.\n * - platformState - string value sent from the platform.\n */\nexport type LibraryStateObject = {\n id: string,\n meta?: Record<string, string>\n};\n\n/**\n * Type which defines the stringified and encoded object sent to the service in the authorize request.\n */\nexport type RequestStateObject = {\n userRequestState: string,\n libraryState: LibraryStateObject\n};\n\n/**\n * Class which provides helpers for OAuth 2.0 protocol specific values\n */\nexport class ProtocolUtils {\n\n /**\n * Appends user state with random guid, or returns random guid.\n * @param userState \n * @param randomGuid \n */\n static setRequestState(cryptoObj: ICrypto, userState?: string, meta?: Record<string, string>): string {\n const libraryState = ProtocolUtils.generateLibraryState(cryptoObj, meta);\n return !StringUtils.isEmpty(userState) ? `${libraryState}${Constants.RESOURCE_DELIM}${userState}` : libraryState;\n }\n\n /**\n * Generates the state value used by the common library.\n * @param randomGuid \n * @param cryptoObj \n */\n static generateLibraryState(cryptoObj: ICrypto, meta?: Record<string, string>): string {\n if (!cryptoObj) {\n throw ClientAuthError.createNoCryptoObjectError(\"generateLibraryState\");\n }\n\n // Create a state object containing a unique id and the timestamp of the request creation\n const stateObj: LibraryStateObject = {\n id: cryptoObj.createNewGuid()\n };\n\n if (meta) {\n stateObj.meta = meta;\n }\n\n const stateString = JSON.stringify(stateObj);\n\n return cryptoObj.base64Encode(stateString);\n }\n\n /**\n * Parses the state into the RequestStateObject, which contains the LibraryState info and the state passed by the user.\n * @param state \n * @param cryptoObj \n */\n static parseRequestState(cryptoObj: ICrypto, state: string): RequestStateObject {\n if (!cryptoObj) {\n throw ClientAuthError.createNoCryptoObjectError(\"parseRequestState\");\n }\n\n if (StringUtils.isEmpty(state)) {\n throw ClientAuthError.createInvalidStateError(state, \"Null, undefined or empty state\");\n }\n\n try {\n // Split the state between library state and user passed state and decode them separately\n const splitState = state.split(Constants.RESOURCE_DELIM);\n const libraryState = splitState[0];\n const userState = splitState.length > 1 ? splitState.slice(1).join(Constants.RESOURCE_DELIM) : Constants.EMPTY_STRING;\n const libraryStateString = cryptoObj.base64Decode(libraryState);\n const libraryStateObj = JSON.parse(libraryStateString) as LibraryStateObject;\n return {\n userRequestState: !StringUtils.isEmpty(userState) ? userState : Constants.EMPTY_STRING,\n libraryState: libraryStateObj\n };\n } catch(e) {\n throw ClientAuthError.createInvalidStateError(state, e);\n }\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Protocol modes supported by MSAL.\n */\nexport enum ProtocolMode {\n AAD = \"AAD\",\n OIDC = \"OIDC\"\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ProtocolMode } from \"./ProtocolMode\";\nimport { AzureRegionConfiguration } from \"./AzureRegionConfiguration\";\n\nexport type AuthorityOptions = {\n protocolMode: ProtocolMode;\n knownAuthorities: Array<string>;\n cloudDiscoveryMetadata: string;\n authorityMetadata: string;\n skipAuthorityMetadataCache?: boolean;\n azureRegionConfiguration?: AzureRegionConfiguration;\n};\n\nexport enum AzureCloudInstance {\n // AzureCloudInstance is not specified.\n None,\n\n // Microsoft Azure public cloud\n AzurePublic = \"https://login.microsoftonline.com\",\n\n // Microsoft PPE\n AzurePpe = \"https://login.windows-ppe.net\",\n\n // Microsoft Chinese national cloud\n AzureChina = \"https://login.chinacloudapi.cn\",\n\n // Microsoft German national cloud (\"Black Forest\")\n AzureGermany = \"https://login.microsoftonline.de\",\n\n // US Government cloud\n AzureUsGovernment = \"https://login.microsoftonline.us\",\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { BrowserConfigurationAuthError } from \"../error/BrowserConfigurationAuthError\";\nimport { BrowserCacheLocation } from \"../utils/BrowserConstants\";\nimport { IWindowStorage } from \"./IWindowStorage\";\n\nexport class BrowserStorage implements IWindowStorage<string> {\n\n private windowStorage: Storage;\n\n constructor(cacheLocation: string) {\n this.validateWindowStorage(cacheLocation);\n this.windowStorage = window[cacheLocation];\n }\n\n private validateWindowStorage(cacheLocation: string): void {\n if (cacheLocation !== BrowserCacheLocation.LocalStorage && cacheLocation !== BrowserCacheLocation.SessionStorage) {\n throw BrowserConfigurationAuthError.createStorageNotSupportedError(cacheLocation);\n }\n const storageSupported = !!window[cacheLocation];\n if (!storageSupported) {\n throw BrowserConfigurationAuthError.createStorageNotSupportedError(cacheLocation);\n }\n }\n\n getItem(key: string): string | null {\n return this.windowStorage.getItem(key);\n }\n\n setItem(key: string, value: string): void {\n this.windowStorage.setItem(key, value);\n }\n\n removeItem(key: string): void {\n this.windowStorage.removeItem(key);\n }\n\n getKeys(): string[] {\n return Object.keys(this.windowStorage);\n }\n\n containsKey(key: string): boolean {\n return this.windowStorage.hasOwnProperty(key);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ServerAuthorizationCodeResponse } from \"../response/ServerAuthorizationCodeResponse\";\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\nimport { ClientAuthError } from \"../error/ClientAuthError\";\nimport { StringUtils } from \"../utils/StringUtils\";\nimport { IUri } from \"./IUri\";\nimport { AADAuthorityConstants, Constants } from \"../utils/Constants\";\n\n/**\n * Url object class which can perform various transformations on url strings.\n */\nexport class UrlString {\n\n // internal url string field\n private _urlString: string;\n public get urlString(): string {\n return this._urlString;\n }\n\n constructor(url: string) {\n this._urlString = url;\n if (StringUtils.isEmpty(this._urlString)) {\n // Throws error if url is empty\n throw ClientConfigurationError.createUrlEmptyError();\n }\n\n if (StringUtils.isEmpty(this.getHash())) {\n this._urlString = UrlString.canonicalizeUri(url);\n }\n }\n\n /**\n * Ensure urls are lower case and end with a / character.\n * @param url\n */\n static canonicalizeUri(url: string): string {\n if (url) {\n let lowerCaseUrl = url.toLowerCase();\n\n if (StringUtils.endsWith(lowerCaseUrl, \"?\")) {\n lowerCaseUrl = lowerCaseUrl.slice(0, -1);\n } else if (StringUtils.endsWith(lowerCaseUrl, \"?/\")) {\n lowerCaseUrl = lowerCaseUrl.slice(0, -2);\n }\n\n if (!StringUtils.endsWith(lowerCaseUrl, \"/\")) {\n lowerCaseUrl += \"/\";\n }\n\n return lowerCaseUrl;\n }\n\n return url;\n }\n\n /**\n * Throws if urlString passed is not a valid authority URI string.\n */\n validateAsUri(): void {\n // Attempts to parse url for uri components\n let components;\n try {\n components = this.getUrlComponents();\n } catch (e) {\n throw ClientConfigurationError.createUrlParseError(e);\n }\n\n // Throw error if URI or path segments are not parseable.\n if (!components.HostNameAndPort || !components.PathSegments) {\n throw ClientConfigurationError.createUrlParseError(`Given url string: ${this.urlString}`);\n }\n\n // Throw error if uri is insecure.\n if(!components.Protocol || components.Protocol.toLowerCase() !== \"https:\") {\n throw ClientConfigurationError.createInsecureAuthorityUriError(this.urlString);\n }\n }\n\n /**\n * Given a url and a query string return the url with provided query string appended\n * @param url\n * @param queryString\n */\n static appendQueryString(url: string, queryString: string): string {\n if (StringUtils.isEmpty(queryString)) {\n return url;\n }\n\n return url.indexOf(\"?\") < 0 ? `${url}?${queryString}` : `${url}&${queryString}`;\n }\n\n /**\n * Returns a url with the hash removed\n * @param url\n */\n static removeHashFromUrl(url: string): string {\n return UrlString.canonicalizeUri(url.split(\"#\")[0]);\n }\n\n /**\n * Given a url like https://a:b/common/d?e=f#g, and a tenantId, returns https://a:b/tenantId/d\n * @param href The url\n * @param tenantId The tenant id to replace\n */\n replaceTenantPath(tenantId: string): UrlString {\n const urlObject = this.getUrlComponents();\n const pathArray = urlObject.PathSegments;\n if (tenantId && (pathArray.length !== 0 && (pathArray[0] === AADAuthorityConstants.COMMON || pathArray[0] === AADAuthorityConstants.ORGANIZATIONS))) {\n pathArray[0] = tenantId;\n }\n return UrlString.constructAuthorityUriFromObject(urlObject);\n }\n\n /**\n * Returns the anchor part(#) of the URL\n */\n getHash(): string {\n return UrlString.parseHash(this.urlString);\n }\n\n /**\n * Parses out the components from a url string.\n * @returns An object with the various components. Please cache this value insted of calling this multiple times on the same url.\n */\n getUrlComponents(): IUri {\n // https://gist.github.com/curtisz/11139b2cfcaef4a261e0\n const regEx = RegExp(\"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\\\?([^#]*))?(#(.*))?\");\n\n // If url string does not match regEx, we throw an error\n const match = this.urlString.match(regEx);\n if (!match) {\n throw ClientConfigurationError.createUrlParseError(`Given url string: ${this.urlString}`);\n }\n\n // Url component object\n const urlComponents = {\n Protocol: match[1],\n HostNameAndPort: match[4],\n AbsolutePath: match[5],\n QueryString: match[7]\n } as IUri;\n\n let pathSegments = urlComponents.AbsolutePath.split(\"/\");\n pathSegments = pathSegments.filter((val) => val && val.length > 0); // remove empty elements\n urlComponents.PathSegments = pathSegments;\n\n if (!StringUtils.isEmpty(urlComponents.QueryString) && urlComponents.QueryString.endsWith(\"/\")) {\n urlComponents.QueryString = urlComponents.QueryString.substring(0, urlComponents.QueryString.length-1);\n }\n return urlComponents;\n }\n\n static getDomainFromUrl(url: string): string {\n const regEx = RegExp(\"^([^:/?#]+://)?([^/?#]*)\");\n\n const match = url.match(regEx);\n\n if (!match) {\n throw ClientConfigurationError.createUrlParseError(`Given url string: ${url}`);\n }\n\n return match[2];\n }\n\n static getAbsoluteUrl(relativeUrl: string, baseUrl: string): string {\n if (relativeUrl[0] === Constants.FORWARD_SLASH) {\n const url = new UrlString(baseUrl);\n const baseComponents = url.getUrlComponents();\n\n return baseComponents.Protocol + \"//\" + baseComponents.HostNameAndPort + relativeUrl;\n }\n\n return relativeUrl;\n }\n\n /**\n * Parses hash string from given string. Returns empty string if no hash symbol is found.\n * @param hashString\n */\n static parseHash(hashString: string): string {\n const hashIndex1 = hashString.indexOf(\"#\");\n const hashIndex2 = hashString.indexOf(\"#/\");\n if (hashIndex2 > -1) {\n return hashString.substring(hashIndex2 + 2);\n } else if (hashIndex1 > -1) {\n return hashString.substring(hashIndex1 + 1);\n }\n return Constants.EMPTY_STRING;\n }\n\n /**\n * Parses query string from given string. Returns empty string if no query symbol is found.\n * @param queryString\n */\n static parseQueryString(queryString: string): string {\n const queryIndex1 = queryString.indexOf(\"?\");\n const queryIndex2 = queryString.indexOf(\"/?\");\n if (queryIndex2 > -1) {\n return queryString.substring(queryIndex2 + 2);\n } else if (queryIndex1 > -1) {\n return queryString.substring(queryIndex1 + 1);\n }\n return Constants.EMPTY_STRING;\n }\n\n static constructAuthorityUriFromObject(urlObject: IUri): UrlString {\n return new UrlString(urlObject.Protocol + \"//\" + urlObject.HostNameAndPort + \"/\" + urlObject.PathSegments.join(\"/\"));\n }\n\n /**\n * Returns URL hash as server auth code response object.\n */\n static getDeserializedHash(hash: string): ServerAuthorizationCodeResponse {\n // Check if given hash is empty\n if (StringUtils.isEmpty(hash)) {\n return {};\n }\n // Strip the # symbol if present\n const parsedHash = UrlString.parseHash(hash);\n // If # symbol was not present, above will return empty string, so give original hash value\n const deserializedHash: ServerAuthorizationCodeResponse = StringUtils.queryStringToObject<ServerAuthorizationCodeResponse>(StringUtils.isEmpty(parsedHash) ? hash : parsedHash);\n // Check if deserialization didn't work\n if (!deserializedHash) {\n throw ClientAuthError.createHashNotDeserializedError(JSON.stringify(deserializedHash));\n }\n return deserializedHash;\n }\n\n /**\n * Returns URL query string as server auth code response object.\n */\n static getDeserializedQueryString(query: string): ServerAuthorizationCodeResponse {\n // Check if given query is empty\n if (StringUtils.isEmpty(query)) {\n return {};\n }\n // Strip the ? symbol if present\n const parsedQueryString = UrlString.parseQueryString(query);\n // If ? symbol was not present, above will return empty string, so give original query value\n const deserializedQueryString: ServerAuthorizationCodeResponse = StringUtils.queryStringToObject<ServerAuthorizationCodeResponse>(StringUtils.isEmpty(parsedQueryString) ? query : parsedQueryString);\n // Check if deserialization didn't work\n if (!deserializedQueryString) {\n throw ClientAuthError.createHashNotDeserializedError(JSON.stringify(deserializedQueryString));\n }\n return deserializedQueryString;\n }\n\n /**\n * Check if the hash of the URL string contains known properties\n */\n static hashContainsKnownProperties(hash: string): boolean {\n if (StringUtils.isEmpty(hash) || hash.indexOf(\"=\") < 0) {\n // Hash doesn't contain key/value pairs\n return false;\n }\n\n const parameters: ServerAuthorizationCodeResponse = UrlString.getDeserializedHash(hash);\n return !!(\n parameters.code ||\n parameters.error_description ||\n parameters.error ||\n parameters.state\n );\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { InteractionType } from \"./BrowserConstants\";\nimport { StringUtils, ClientAuthError, ICrypto, RequestStateObject, ProtocolUtils, ServerAuthorizationCodeResponse, UrlString } from \"@azure/msal-common\";\n\nexport type BrowserStateObject = {\n interactionType: InteractionType\n};\n\nexport class BrowserProtocolUtils {\n\n /**\n * Extracts the BrowserStateObject from the state string.\n * @param browserCrypto \n * @param state \n */\n static extractBrowserRequestState(browserCrypto: ICrypto, state: string): BrowserStateObject | null {\n if (StringUtils.isEmpty(state)) {\n return null;\n }\n\n try {\n const requestStateObj: RequestStateObject = ProtocolUtils.parseRequestState(browserCrypto, state);\n return requestStateObj.libraryState.meta as BrowserStateObject;\n } catch (e) {\n throw ClientAuthError.createInvalidStateError(state, e);\n }\n }\n\n /**\n * Parses properties of server response from url hash\n * @param locationHash Hash from url\n */\n static parseServerResponseFromHash(locationHash: string): ServerAuthorizationCodeResponse {\n if (!locationHash) {\n return {};\n }\n \n const hashUrlString = new UrlString(locationHash);\n return UrlString.getDeserializedHash(hashUrlString.getHash());\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Constants, PersistentCacheKeys, StringUtils, CommonAuthorizationCodeRequest, ICrypto, AccountEntity, IdTokenEntity, AccessTokenEntity, RefreshTokenEntity, AppMetadataEntity, CacheManager, ServerTelemetryEntity, ThrottlingEntity, ProtocolUtils, Logger, AuthorityMetadataEntity, DEFAULT_CRYPTO_IMPLEMENTATION, AccountInfo, ActiveAccountFilters, CcsCredential, CcsCredentialType, IdToken, ValidCredentialType, ClientAuthError } from \"@azure/msal-common\";\nimport { CacheOptions } from \"../config/Configuration\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { BrowserCacheLocation, InteractionType, TemporaryCacheKeys, InMemoryCacheKeys } from \"../utils/BrowserConstants\";\nimport { BrowserStorage } from \"./BrowserStorage\";\nimport { MemoryStorage } from \"./MemoryStorage\";\nimport { IWindowStorage } from \"./IWindowStorage\";\nimport { BrowserProtocolUtils } from \"../utils/BrowserProtocolUtils\";\nimport { NativeTokenRequest } from \"../broker/nativeBroker/NativeRequest\";\n\n/**\n * This class implements the cache storage interface for MSAL through browser local or session storage.\n * Cookies are only used if storeAuthStateInCookie is true, and are only used for\n * parameters such as state and nonce, generally.\n */\nexport class BrowserCacheManager extends CacheManager {\n\n // Cache configuration, either set by user or default values.\n protected cacheConfig: Required<CacheOptions>;\n // Window storage object (either local or sessionStorage)\n protected browserStorage: IWindowStorage<string>;\n // Internal in-memory storage object used for data used by msal that does not need to persist across page loads\n protected internalStorage: MemoryStorage<string>;\n // Temporary cache\n protected temporaryCacheStorage: IWindowStorage<string>;\n // Client id of application. Used in cache keys to partition cache correctly in the case of multiple instances of MSAL.\n protected logger: Logger;\n\n // Cookie life calculation (hours * minutes * seconds * ms)\n protected readonly COOKIE_LIFE_MULTIPLIER = 24 * 60 * 60 * 1000;\n\n constructor(clientId: string, cacheConfig: Required<CacheOptions>, cryptoImpl: ICrypto, logger: Logger) {\n super(clientId, cryptoImpl);\n\n this.cacheConfig = cacheConfig;\n this.logger = logger;\n this.internalStorage = new MemoryStorage();\n this.browserStorage = this.setupBrowserStorage(this.cacheConfig.cacheLocation);\n this.temporaryCacheStorage = this.setupTemporaryCacheStorage(this.cacheConfig.cacheLocation);\n\n // Migrate any cache entries from older versions of MSAL.\n this.migrateCacheEntries();\n }\n\n /**\n * Returns a window storage class implementing the IWindowStorage interface that corresponds to the configured cacheLocation.\n * @param cacheLocation\n */\n protected setupBrowserStorage(cacheLocation: BrowserCacheLocation | string): IWindowStorage<string> {\n switch (cacheLocation) {\n case BrowserCacheLocation.LocalStorage:\n case BrowserCacheLocation.SessionStorage:\n try {\n // Temporary cache items will always be stored in session storage to mitigate problems caused by multiple tabs\n return new BrowserStorage(cacheLocation);\n } catch (e) {\n this.logger.verbose(e);\n break;\n }\n case BrowserCacheLocation.MemoryStorage:\n default:\n break;\n }\n this.cacheConfig.cacheLocation = BrowserCacheLocation.MemoryStorage;\n return new MemoryStorage();\n }\n\n /**\n *\n * @param cacheLocation\n */\n protected setupTemporaryCacheStorage(cacheLocation: BrowserCacheLocation | string): IWindowStorage<string> {\n switch (cacheLocation) {\n case BrowserCacheLocation.LocalStorage:\n case BrowserCacheLocation.SessionStorage:\n try {\n // Temporary cache items will always be stored in session storage to mitigate problems caused by multiple tabs\n return new BrowserStorage(BrowserCacheLocation.SessionStorage);\n } catch (e) {\n this.logger.verbose(e);\n return this.internalStorage;\n }\n case BrowserCacheLocation.MemoryStorage:\n default:\n return this.internalStorage;\n }\n }\n\n /**\n * Migrate all old cache entries to new schema. No rollback supported.\n * @param storeAuthStateInCookie\n */\n protected migrateCacheEntries(): void {\n const idTokenKey = `${Constants.CACHE_PREFIX}.${PersistentCacheKeys.ID_TOKEN}`;\n const clientInfoKey = `${Constants.CACHE_PREFIX}.${PersistentCacheKeys.CLIENT_INFO}`;\n const errorKey = `${Constants.CACHE_PREFIX}.${PersistentCacheKeys.ERROR}`;\n const errorDescKey = `${Constants.CACHE_PREFIX}.${PersistentCacheKeys.ERROR_DESC}`;\n\n const idTokenValue = this.browserStorage.getItem(idTokenKey);\n const clientInfoValue = this.browserStorage.getItem(clientInfoKey);\n const errorValue = this.browserStorage.getItem(errorKey);\n const errorDescValue = this.browserStorage.getItem(errorDescKey);\n\n const values = [idTokenValue, clientInfoValue, errorValue, errorDescValue];\n const keysToMigrate = [PersistentCacheKeys.ID_TOKEN, PersistentCacheKeys.CLIENT_INFO, PersistentCacheKeys.ERROR, PersistentCacheKeys.ERROR_DESC];\n\n keysToMigrate.forEach((cacheKey:string, index: number) => this.migrateCacheEntry(cacheKey, values[index]));\n }\n\n /**\n * Utility function to help with migration.\n * @param newKey\n * @param value\n * @param storeAuthStateInCookie\n */\n protected migrateCacheEntry(newKey: string, value: string|null): void {\n if (value) {\n this.setTemporaryCache(newKey, value, true);\n }\n }\n\n /**\n * Parses passed value as JSON object, JSON.parse() will throw an error.\n * @param input\n */\n protected validateAndParseJson(jsonValue: string): object | null {\n try {\n const parsedJson = JSON.parse(jsonValue);\n /**\n * There are edge cases in which JSON.parse will successfully parse a non-valid JSON object\n * (e.g. JSON.parse will parse an escaped string into an unescaped string), so adding a type check\n * of the parsed value is necessary in order to be certain that the string represents a valid JSON object.\n *\n */\n return (parsedJson && typeof parsedJson === \"object\") ? parsedJson : null;\n } catch (error) {\n return null;\n }\n }\n\n /**\n * fetches the entry from the browser storage based off the key\n * @param key\n */\n getItem(key: string): string | null {\n return this.browserStorage.getItem(key);\n }\n\n /**\n * sets the entry in the browser storage\n * @param key\n * @param value\n */\n setItem(key: string, value: string): void {\n this.browserStorage.setItem(key, value);\n }\n\n /**\n * fetch the account entity from the platform cache\n * @param accountKey\n */\n getAccount(accountKey: string): AccountEntity | null {\n const account = this.getItem(accountKey);\n if (!account) {\n return null;\n }\n\n const parsedAccount = this.validateAndParseJson(account);\n if (!parsedAccount || !AccountEntity.isAccountEntity(parsedAccount)) {\n return null;\n }\n\n return CacheManager.toObject<AccountEntity>(new AccountEntity(), parsedAccount);\n }\n\n /**\n * set account entity in the platform cache\n * @param key\n * @param value\n */\n setAccount(account: AccountEntity): void {\n this.logger.trace(\"BrowserCacheManager.setAccount called\");\n const key = account.generateAccountKey();\n this.setItem(key, JSON.stringify(account));\n }\n\n /**\n * generates idToken entity from a string\n * @param idTokenKey\n */\n getIdTokenCredential(idTokenKey: string): IdTokenEntity | null {\n const value = this.getItem(idTokenKey);\n if (!value) {\n this.logger.trace(\"BrowserCacheManager.getIdTokenCredential: called, no cache hit\");\n return null;\n }\n\n const parsedIdToken = this.validateAndParseJson(value);\n if (!parsedIdToken || !IdTokenEntity.isIdTokenEntity(parsedIdToken)) {\n this.logger.trace(\"BrowserCacheManager.getIdTokenCredential: called, no cache hit\");\n return null;\n }\n\n this.logger.trace(\"BrowserCacheManager.getIdTokenCredential: cache hit\");\n return CacheManager.toObject(new IdTokenEntity(), parsedIdToken);\n }\n\n /**\n * set IdToken credential to the platform cache\n * @param idToken\n */\n setIdTokenCredential(idToken: IdTokenEntity): void {\n this.logger.trace(\"BrowserCacheManager.setIdTokenCredential called\");\n const idTokenKey = idToken.generateCredentialKey();\n\n this.setItem(idTokenKey, JSON.stringify(idToken));\n }\n\n /**\n * generates accessToken entity from a string\n * @param key\n */\n getAccessTokenCredential(accessTokenKey: string): AccessTokenEntity | null {\n const value = this.getItem(accessTokenKey);\n if (!value) {\n this.logger.trace(\"BrowserCacheManager.getAccessTokenCredential: called, no cache hit\");\n return null;\n }\n const parsedAccessToken = this.validateAndParseJson(value);\n if (!parsedAccessToken || !AccessTokenEntity.isAccessTokenEntity(parsedAccessToken)) {\n this.logger.trace(\"BrowserCacheManager.getAccessTokenCredential: called, no cache hit\");\n return null;\n }\n\n this.logger.trace(\"BrowserCacheManager.getAccessTokenCredential: cache hit\");\n return CacheManager.toObject(new AccessTokenEntity(), parsedAccessToken);\n }\n\n /**\n * set accessToken credential to the platform cache\n * @param accessToken\n */\n setAccessTokenCredential(accessToken: AccessTokenEntity): void {\n this.logger.trace(\"BrowserCacheManager.setAccessTokenCredential called\");\n const accessTokenKey = accessToken.generateCredentialKey();\n this.setItem(accessTokenKey, JSON.stringify(accessToken));\n }\n\n /**\n * generates refreshToken entity from a string\n * @param refreshTokenKey\n */\n getRefreshTokenCredential(refreshTokenKey: string): RefreshTokenEntity | null {\n const value = this.getItem(refreshTokenKey);\n if (!value) {\n this.logger.trace(\"BrowserCacheManager.getRefreshTokenCredential: called, no cache hit\");\n return null;\n }\n const parsedRefreshToken = this.validateAndParseJson(value);\n if (!parsedRefreshToken || !RefreshTokenEntity.isRefreshTokenEntity(parsedRefreshToken)) {\n this.logger.trace(\"BrowserCacheManager.getRefreshTokenCredential: called, no cache hit\");\n return null;\n }\n\n this.logger.trace(\"BrowserCacheManager.getRefreshTokenCredential: cache hit\");\n return CacheManager.toObject(new RefreshTokenEntity(), parsedRefreshToken);\n }\n\n /**\n * set refreshToken credential to the platform cache\n * @param refreshToken\n */\n setRefreshTokenCredential(refreshToken: RefreshTokenEntity): void {\n this.logger.trace(\"BrowserCacheManager.setRefreshTokenCredential called\");\n const refreshTokenKey = refreshToken.generateCredentialKey();\n this.setItem(refreshTokenKey, JSON.stringify(refreshToken));\n }\n\n /**\n * fetch appMetadata entity from the platform cache\n * @param appMetadataKey\n */\n getAppMetadata(appMetadataKey: string): AppMetadataEntity | null {\n const value = this.getItem(appMetadataKey);\n if (!value) {\n this.logger.trace(\"BrowserCacheManager.getAppMetadata: called, no cache hit\");\n return null;\n }\n\n const parsedMetadata = this.validateAndParseJson(value);\n if (!parsedMetadata || !AppMetadataEntity.isAppMetadataEntity(appMetadataKey, parsedMetadata)) {\n this.logger.trace(\"BrowserCacheManager.getAppMetadata: called, no cache hit\");\n return null;\n }\n\n this.logger.trace(\"BrowserCacheManager.getAppMetadata: cache hit\");\n return CacheManager.toObject(new AppMetadataEntity(), parsedMetadata);\n }\n\n /**\n * set appMetadata entity to the platform cache\n * @param appMetadata\n */\n setAppMetadata(appMetadata: AppMetadataEntity): void {\n this.logger.trace(\"BrowserCacheManager.setAppMetadata called\");\n const appMetadataKey = appMetadata.generateAppMetadataKey();\n this.setItem(appMetadataKey, JSON.stringify(appMetadata));\n }\n\n /**\n * fetch server telemetry entity from the platform cache\n * @param serverTelemetryKey\n */\n getServerTelemetry(serverTelemetryKey: string): ServerTelemetryEntity | null {\n const value = this.getItem(serverTelemetryKey);\n if (!value) {\n this.logger.trace(\"BrowserCacheManager.getServerTelemetry: called, no cache hit\");\n return null;\n }\n const parsedMetadata = this.validateAndParseJson(value);\n if (!parsedMetadata || !ServerTelemetryEntity.isServerTelemetryEntity(serverTelemetryKey, parsedMetadata)) {\n this.logger.trace(\"BrowserCacheManager.getServerTelemetry: called, no cache hit\");\n return null;\n }\n\n this.logger.trace(\"BrowserCacheManager.getServerTelemetry: cache hit\");\n return CacheManager.toObject(new ServerTelemetryEntity(), parsedMetadata);\n }\n\n /**\n * set server telemetry entity to the platform cache\n * @param serverTelemetryKey\n * @param serverTelemetry\n */\n setServerTelemetry(serverTelemetryKey: string, serverTelemetry: ServerTelemetryEntity): void {\n this.logger.trace(\"BrowserCacheManager.setServerTelemetry called\");\n this.setItem(serverTelemetryKey, JSON.stringify(serverTelemetry));\n }\n\n /**\n *\n */\n getAuthorityMetadata(key: string) : AuthorityMetadataEntity | null {\n const value = this.internalStorage.getItem(key);\n if (!value) {\n this.logger.trace(\"BrowserCacheManager.getAuthorityMetadata: called, no cache hit\");\n return null;\n }\n const parsedMetadata = this.validateAndParseJson(value);\n if (parsedMetadata && AuthorityMetadataEntity.isAuthorityMetadataEntity(key, parsedMetadata)) {\n this.logger.trace(\"BrowserCacheManager.getAuthorityMetadata: cache hit\");\n return CacheManager.toObject(new AuthorityMetadataEntity(), parsedMetadata);\n }\n return null;\n }\n\n /**\n *\n */\n getAuthorityMetadataKeys(): Array<string> {\n const allKeys = this.internalStorage.getKeys();\n return allKeys.filter((key) => {\n return this.isAuthorityMetadata(key);\n });\n }\n\n /**\n * Sets wrapper metadata in memory\n * @param wrapperSKU\n * @param wrapperVersion\n */\n setWrapperMetadata(wrapperSKU: string, wrapperVersion: string): void {\n this.internalStorage.setItem(InMemoryCacheKeys.WRAPPER_SKU, wrapperSKU);\n this.internalStorage.setItem(InMemoryCacheKeys.WRAPPER_VER, wrapperVersion);\n }\n\n /**\n * Returns wrapper metadata from in-memory storage\n */\n getWrapperMetadata(): [string, string] {\n const sku = this.internalStorage.getItem(InMemoryCacheKeys.WRAPPER_SKU) || Constants.EMPTY_STRING;\n const version = this.internalStorage.getItem(InMemoryCacheKeys.WRAPPER_VER) || Constants.EMPTY_STRING;\n return [sku, version];\n }\n\n /**\n *\n * @param entity\n */\n setAuthorityMetadata(key: string, entity: AuthorityMetadataEntity): void {\n this.logger.trace(\"BrowserCacheManager.setAuthorityMetadata called\");\n this.internalStorage.setItem(key, JSON.stringify(entity));\n }\n\n /**\n * Gets the active account\n */\n getActiveAccount(): AccountInfo | null {\n const activeAccountKeyFilters = this.generateCacheKey(PersistentCacheKeys.ACTIVE_ACCOUNT_FILTERS);\n const activeAccountValueFilters = this.getItem(activeAccountKeyFilters);\n if (!activeAccountValueFilters) { \n // if new active account cache type isn't found, it's an old version, so look for that instead\n this.logger.trace(\"No active account filters cache schema found, looking for legacy schema\");\n const activeAccountKeyLocal = this.generateCacheKey(PersistentCacheKeys.ACTIVE_ACCOUNT);\n const activeAccountValueLocal = this.getItem(activeAccountKeyLocal);\n if(!activeAccountValueLocal) {\n this.logger.trace(\"No active account found\");\n return null;\n }\n const activeAccount = this.getAccountInfoByFilter({localAccountId: activeAccountValueLocal})[0] || null;\n if(activeAccount) {\n this.logger.trace(\"Legacy active account cache schema found\");\n this.logger.trace(\"Adding active account filters cache schema\");\n this.setActiveAccount(activeAccount);\n return activeAccount;\n }\n return null;\n }\n const activeAccountValueObj = this.validateAndParseJson(activeAccountValueFilters) as AccountInfo;\n if(activeAccountValueObj) {\n this.logger.trace(\"Active account filters schema found\");\n return this.getAccountInfoByFilter({\n homeAccountId: activeAccountValueObj.homeAccountId,\n localAccountId: activeAccountValueObj.localAccountId\n })[0] || null;\n }\n this.logger.trace(\"No active account found\");\n return null;\n }\n\n /**\n * Sets the active account's localAccountId in cache\n * @param account\n */\n setActiveAccount(account: AccountInfo | null): void {\n const activeAccountKey = this.generateCacheKey(PersistentCacheKeys.ACTIVE_ACCOUNT_FILTERS);\n const activeAccountKeyLocal = this.generateCacheKey(PersistentCacheKeys.ACTIVE_ACCOUNT);\n if (account) {\n this.logger.verbose(\"setActiveAccount: Active account set\");\n const activeAccountValue: ActiveAccountFilters = {\n homeAccountId: account.homeAccountId,\n localAccountId: account.localAccountId\n };\n this.browserStorage.setItem(activeAccountKey, JSON.stringify(activeAccountValue));\n this.browserStorage.setItem(activeAccountKeyLocal, account.localAccountId);\n } else {\n this.logger.verbose(\"setActiveAccount: No account passed, active account not set\");\n this.browserStorage.removeItem(activeAccountKey);\n this.browserStorage.removeItem(activeAccountKeyLocal);\n }\n }\n\n /**\n * Gets a list of accounts that match all of the filters provided\n * @param account\n */\n getAccountInfoByFilter(accountFilter: Partial<Omit<AccountInfo, \"idTokenClaims\"|\"name\">>): AccountInfo[] {\n const allAccounts = this.getAllAccounts();\n return allAccounts.filter((accountObj) => {\n if (accountFilter.username && accountFilter.username.toLowerCase() !== accountObj.username.toLowerCase()) {\n return false;\n }\n\n if (accountFilter.homeAccountId && accountFilter.homeAccountId !== accountObj.homeAccountId) {\n return false;\n }\n\n if (accountFilter.localAccountId && accountFilter.localAccountId !== accountObj.localAccountId) {\n return false;\n }\n\n if (accountFilter.tenantId && accountFilter.tenantId !== accountObj.tenantId) {\n return false;\n }\n\n if (accountFilter.environment && accountFilter.environment !== accountObj.environment) {\n return false;\n }\n\n return true;\n });\n }\n\n /**\n * Checks the cache for accounts matching loginHint or SID\n * @param loginHint\n * @param sid\n */\n getAccountInfoByHints(loginHint?: string, sid?: string): AccountInfo | null {\n const matchingAccounts = this.getAllAccounts().filter((accountInfo) => {\n if (sid) {\n const accountSid = accountInfo.idTokenClaims && accountInfo.idTokenClaims[\"sid\"];\n return sid === accountSid;\n }\n\n if (loginHint) {\n return loginHint === accountInfo.username;\n }\n\n return false;\n });\n\n if (matchingAccounts.length === 1) {\n return matchingAccounts[0];\n } else if (matchingAccounts.length > 1) {\n throw ClientAuthError.createMultipleMatchingAccountsInCacheError();\n }\n\n return null;\n }\n\n /**\n * fetch throttling entity from the platform cache\n * @param throttlingCacheKey\n */\n getThrottlingCache(throttlingCacheKey: string): ThrottlingEntity | null {\n const value = this.getItem(throttlingCacheKey);\n if (!value) {\n this.logger.trace(\"BrowserCacheManager.getThrottlingCache: called, no cache hit\");\n return null;\n }\n\n const parsedThrottlingCache = this.validateAndParseJson(value);\n if (!parsedThrottlingCache || !ThrottlingEntity.isThrottlingEntity(throttlingCacheKey, parsedThrottlingCache)) {\n this.logger.trace(\"BrowserCacheManager.getThrottlingCache: called, no cache hit\");\n return null;\n }\n\n this.logger.trace(\"BrowserCacheManager.getThrottlingCache: cache hit\");\n return CacheManager.toObject(new ThrottlingEntity(), parsedThrottlingCache);\n }\n\n /**\n * set throttling entity to the platform cache\n * @param throttlingCacheKey\n * @param throttlingCache\n */\n setThrottlingCache(throttlingCacheKey: string, throttlingCache: ThrottlingEntity): void {\n this.logger.trace(\"BrowserCacheManager.setThrottlingCache called\");\n this.setItem(throttlingCacheKey, JSON.stringify(throttlingCache));\n }\n\n /**\n * Gets cache item with given key.\n * Will retrieve from cookies if storeAuthStateInCookie is set to true.\n * @param key\n */\n getTemporaryCache(cacheKey: string, generateKey?: boolean): string | null {\n const key = generateKey ? this.generateCacheKey(cacheKey) : cacheKey;\n if (this.cacheConfig.storeAuthStateInCookie) {\n const itemCookie = this.getItemCookie(key);\n if (itemCookie) {\n this.logger.trace(\"BrowserCacheManager.getTemporaryCache: storeAuthStateInCookies set to true, retrieving from cookies\");\n return itemCookie;\n }\n }\n\n const value = this.temporaryCacheStorage.getItem(key);\n if (!value) {\n // If temp cache item not found in session/memory, check local storage for items set by old versions\n if (this.cacheConfig.cacheLocation === BrowserCacheLocation.LocalStorage) {\n const item = this.browserStorage.getItem(key);\n if (item) {\n this.logger.trace(\"BrowserCacheManager.getTemporaryCache: Temporary cache item found in local storage\");\n return item;\n }\n }\n this.logger.trace(\"BrowserCacheManager.getTemporaryCache: No cache item found in local storage\");\n return null;\n }\n this.logger.trace(\"BrowserCacheManager.getTemporaryCache: Temporary cache item returned\");\n return value;\n }\n\n /**\n * Sets the cache item with the key and value given.\n * Stores in cookie if storeAuthStateInCookie is set to true.\n * This can cause cookie overflow if used incorrectly.\n * @param key\n * @param value\n */\n setTemporaryCache(cacheKey: string, value: string, generateKey?: boolean): void {\n const key = generateKey ? this.generateCacheKey(cacheKey) : cacheKey;\n\n this.temporaryCacheStorage.setItem(key, value);\n if (this.cacheConfig.storeAuthStateInCookie) {\n this.logger.trace(\"BrowserCacheManager.setTemporaryCache: storeAuthStateInCookie set to true, setting item cookie\");\n this.setItemCookie(key, value);\n }\n }\n\n /**\n * Removes the cache item with the given key.\n * Will also clear the cookie item if storeAuthStateInCookie is set to true.\n * @param key\n */\n removeItem(key: string): boolean {\n this.browserStorage.removeItem(key);\n this.temporaryCacheStorage.removeItem(key);\n if (this.cacheConfig.storeAuthStateInCookie) {\n this.logger.trace(\"BrowserCacheManager.removeItem: storeAuthStateInCookie is true, clearing item cookie\");\n this.clearItemCookie(key);\n }\n return true;\n }\n\n /**\n * Checks whether key is in cache.\n * @param key\n */\n containsKey(key: string): boolean {\n return this.browserStorage.containsKey(key) || this.temporaryCacheStorage.containsKey(key);\n }\n\n /**\n * Gets all keys in window.\n */\n getKeys(): string[] {\n return [\n ...this.browserStorage.getKeys(),\n ...this.temporaryCacheStorage.getKeys()\n ];\n }\n\n /**\n * Clears all cache entries created by MSAL.\n */\n async clear(): Promise<void> {\n // Removes all accounts and their credentials\n await this.removeAllAccounts();\n this.removeAppMetadata();\n\n // Removes all remaining MSAL cache items\n this.getKeys().forEach((cacheKey: string) => {\n // Check if key contains msal prefix; For now, we are clearing all the cache items created by MSAL.js\n if ((this.browserStorage.containsKey(cacheKey) || this.temporaryCacheStorage.containsKey(cacheKey)) && ((cacheKey.indexOf(Constants.CACHE_PREFIX) !== -1) || (cacheKey.indexOf(this.clientId) !== -1))) {\n this.removeItem(cacheKey);\n }\n });\n\n this.internalStorage.clear();\n }\n\n /**\n * Add value to cookies\n * @param cookieName\n * @param cookieValue\n * @param expires\n */\n setItemCookie(cookieName: string, cookieValue: string, expires?: number): void {\n let cookieStr = `${encodeURIComponent(cookieName)}=${encodeURIComponent(cookieValue)};path=/;SameSite=Lax;`;\n if (expires) {\n const expireTime = this.getCookieExpirationTime(expires);\n cookieStr += `expires=${expireTime};`;\n }\n\n if (this.cacheConfig.secureCookies) {\n cookieStr += \"Secure;\";\n }\n\n document.cookie = cookieStr;\n }\n\n /**\n * Get one item by key from cookies\n * @param cookieName\n */\n getItemCookie(cookieName: string): string {\n const name = `${encodeURIComponent(cookieName)}=`;\n const cookieList = document.cookie.split(\";\");\n for (let i: number = 0; i < cookieList.length; i++) {\n let cookie = cookieList[i];\n while (cookie.charAt(0) === \" \") {\n cookie = cookie.substring(1);\n }\n if (cookie.indexOf(name) === 0) {\n return decodeURIComponent(cookie.substring(name.length, cookie.length));\n }\n }\n return Constants.EMPTY_STRING;\n }\n\n /**\n * Clear all msal-related cookies currently set in the browser. Should only be used to clear temporary cache items.\n */\n clearMsalCookies(): void {\n const cookiePrefix = `${Constants.CACHE_PREFIX}.${this.clientId}`;\n const cookieList = document.cookie.split(\";\");\n cookieList.forEach((cookie: string): void => {\n while (cookie.charAt(0) === \" \") {\n // eslint-disable-next-line no-param-reassign\n cookie = cookie.substring(1);\n }\n if (cookie.indexOf(cookiePrefix) === 0) {\n const cookieKey = cookie.split(\"=\")[0];\n this.clearItemCookie(cookieKey);\n }\n });\n }\n\n /**\n * Clear an item in the cookies by key\n * @param cookieName\n */\n clearItemCookie(cookieName: string): void {\n this.setItemCookie(cookieName, Constants.EMPTY_STRING, -1);\n }\n\n /**\n * Get cookie expiration time\n * @param cookieLifeDays\n */\n getCookieExpirationTime(cookieLifeDays: number): string {\n const today = new Date();\n const expr = new Date(today.getTime() + cookieLifeDays * this.COOKIE_LIFE_MULTIPLIER);\n return expr.toUTCString();\n }\n\n /**\n * Gets the cache object referenced by the browser\n */\n getCache(): object {\n return this.browserStorage;\n }\n\n /**\n * interface compat, we cannot overwrite browser cache; Functionality is supported by individual entities in browser\n */\n setCache(): void {\n // sets nothing\n }\n\n /**\n * Prepend msal.<client-id> to each key; Skip for any JSON object as Key (defined schemas do not need the key appended: AccessToken Keys or the upcoming schema)\n * @param key\n * @param addInstanceId\n */\n generateCacheKey(key: string): string {\n const generatedKey = this.validateAndParseJson(key);\n if (!generatedKey) {\n if (StringUtils.startsWith(key, Constants.CACHE_PREFIX) || StringUtils.startsWith(key, PersistentCacheKeys.ADAL_ID_TOKEN)) {\n return key;\n }\n return `${Constants.CACHE_PREFIX}.${this.clientId}.${key}`;\n }\n\n return JSON.stringify(key);\n }\n\n /**\n * Create authorityKey to cache authority\n * @param state\n */\n generateAuthorityKey(stateString: string): string {\n const {\n libraryState: {\n id: stateId\n }\n } = ProtocolUtils.parseRequestState(this.cryptoImpl, stateString);\n\n return this.generateCacheKey(`${TemporaryCacheKeys.AUTHORITY}.${stateId}`);\n }\n\n /**\n * Create Nonce key to cache nonce\n * @param state\n */\n generateNonceKey(stateString: string): string {\n const {\n libraryState: {\n id: stateId\n }\n } = ProtocolUtils.parseRequestState(this.cryptoImpl, stateString);\n\n return this.generateCacheKey(`${TemporaryCacheKeys.NONCE_IDTOKEN}.${stateId}`);\n }\n\n /**\n * Creates full cache key for the request state\n * @param stateString State string for the request\n */\n generateStateKey(stateString: string): string {\n // Use the library state id to key temp storage for uniqueness for multiple concurrent requests\n const {\n libraryState: {\n id: stateId\n }\n } = ProtocolUtils.parseRequestState(this.cryptoImpl, stateString);\n return this.generateCacheKey(`${TemporaryCacheKeys.REQUEST_STATE}.${stateId}`);\n }\n\n /**\n * Gets the cached authority based on the cached state. Returns empty if no cached state found.\n */\n getCachedAuthority(cachedState: string): string | null {\n const stateCacheKey = this.generateStateKey(cachedState);\n const state = this.getTemporaryCache(stateCacheKey);\n if (!state) {\n return null;\n }\n\n const authorityCacheKey = this.generateAuthorityKey(state);\n return this.getTemporaryCache(authorityCacheKey);\n }\n\n /**\n * Updates account, authority, and state in cache\n * @param serverAuthenticationRequest\n * @param account\n */\n updateCacheEntries(state: string, nonce: string, authorityInstance: string, loginHint: string, account: AccountInfo|null): void {\n this.logger.trace(\"BrowserCacheManager.updateCacheEntries called\");\n // Cache the request state\n const stateCacheKey = this.generateStateKey(state);\n this.setTemporaryCache(stateCacheKey, state, false);\n\n // Cache the nonce\n const nonceCacheKey = this.generateNonceKey(state);\n this.setTemporaryCache(nonceCacheKey, nonce, false);\n\n // Cache authorityKey\n const authorityCacheKey = this.generateAuthorityKey(state);\n this.setTemporaryCache(authorityCacheKey, authorityInstance, false);\n\n if (account) {\n const ccsCredential: CcsCredential = {\n credential: account.homeAccountId,\n type: CcsCredentialType.HOME_ACCOUNT_ID\n };\n this.setTemporaryCache(TemporaryCacheKeys.CCS_CREDENTIAL, JSON.stringify(ccsCredential), true);\n } else if (!StringUtils.isEmpty(loginHint)) {\n const ccsCredential: CcsCredential = {\n credential: loginHint,\n type: CcsCredentialType.UPN\n };\n this.setTemporaryCache(TemporaryCacheKeys.CCS_CREDENTIAL, JSON.stringify(ccsCredential), true);\n }\n }\n\n /**\n * Reset all temporary cache items\n * @param state\n */\n resetRequestCache(state: string): void {\n this.logger.trace(\"BrowserCacheManager.resetRequestCache called\");\n // check state and remove associated cache items\n if (!StringUtils.isEmpty(state)) {\n this.getKeys().forEach(key => {\n if (key.indexOf(state) !== -1) {\n this.removeItem(key);\n }\n });\n }\n\n // delete generic interactive request parameters\n if (state) {\n this.removeItem(this.generateStateKey(state));\n this.removeItem(this.generateNonceKey(state));\n this.removeItem(this.generateAuthorityKey(state));\n }\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.REQUEST_PARAMS));\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.ORIGIN_URI));\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.URL_HASH));\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.CORRELATION_ID));\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.CCS_CREDENTIAL));\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.NATIVE_REQUEST));\n this.setInteractionInProgress(false);\n }\n\n /**\n * Removes temporary cache for the provided state\n * @param stateString\n */\n cleanRequestByState(stateString: string): void {\n this.logger.trace(\"BrowserCacheManager.cleanRequestByState called\");\n // Interaction is completed - remove interaction status.\n if (stateString) {\n const stateKey = this.generateStateKey(stateString);\n const cachedState = this.temporaryCacheStorage.getItem(stateKey);\n this.logger.infoPii(`BrowserCacheManager.cleanRequestByState: Removing temporary cache items for state: ${cachedState}`);\n this.resetRequestCache(cachedState || Constants.EMPTY_STRING);\n }\n this.clearMsalCookies();\n }\n\n /**\n * Looks in temporary cache for any state values with the provided interactionType and removes all temporary cache items for that state\n * Used in scenarios where temp cache needs to be cleaned but state is not known, such as clicking browser back button.\n * @param interactionType\n */\n cleanRequestByInteractionType(interactionType: InteractionType): void {\n this.logger.trace(\"BrowserCacheManager.cleanRequestByInteractionType called\");\n // Loop through all keys to find state key\n this.getKeys().forEach((key) => {\n // If this key is not the state key, move on\n if (key.indexOf(TemporaryCacheKeys.REQUEST_STATE) === -1) {\n return;\n }\n\n // Retrieve state value, return if not a valid value\n const stateValue = this.temporaryCacheStorage.getItem(key);\n if (!stateValue) {\n return;\n }\n // Extract state and ensure it matches given InteractionType, then clean request cache\n const parsedState = BrowserProtocolUtils.extractBrowserRequestState(this.cryptoImpl, stateValue);\n if (parsedState && parsedState.interactionType === interactionType) {\n this.logger.infoPii(`BrowserCacheManager.cleanRequestByInteractionType: Removing temporary cache items for state: ${stateValue}`);\n this.resetRequestCache(stateValue);\n }\n });\n this.clearMsalCookies();\n this.setInteractionInProgress(false);\n }\n\n cacheCodeRequest(authCodeRequest: CommonAuthorizationCodeRequest, browserCrypto: ICrypto): void {\n this.logger.trace(\"BrowserCacheManager.cacheCodeRequest called\");\n\n const encodedValue = browserCrypto.base64Encode(JSON.stringify(authCodeRequest));\n this.setTemporaryCache(TemporaryCacheKeys.REQUEST_PARAMS, encodedValue, true);\n }\n\n /**\n * Gets the token exchange parameters from the cache. Throws an error if nothing is found.\n */\n getCachedRequest(state: string, browserCrypto: ICrypto): CommonAuthorizationCodeRequest {\n this.logger.trace(\"BrowserCacheManager.getCachedRequest called\");\n // Get token request from cache and parse as TokenExchangeParameters.\n const encodedTokenRequest = this.getTemporaryCache(TemporaryCacheKeys.REQUEST_PARAMS, true);\n if (!encodedTokenRequest) {\n throw BrowserAuthError.createNoTokenRequestCacheError();\n }\n\n const parsedRequest = this.validateAndParseJson(browserCrypto.base64Decode(encodedTokenRequest)) as CommonAuthorizationCodeRequest;\n if (!parsedRequest) {\n throw BrowserAuthError.createUnableToParseTokenRequestCacheError();\n }\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.REQUEST_PARAMS));\n\n // Get cached authority and use if no authority is cached with request.\n if (StringUtils.isEmpty(parsedRequest.authority)) {\n const authorityCacheKey: string = this.generateAuthorityKey(state);\n const cachedAuthority = this.getTemporaryCache(authorityCacheKey);\n if (!cachedAuthority) {\n throw BrowserAuthError.createNoCachedAuthorityError();\n }\n parsedRequest.authority = cachedAuthority;\n }\n\n return parsedRequest;\n }\n\n /**\n * Gets cached native request for redirect flows\n */\n getCachedNativeRequest(): NativeTokenRequest | null {\n this.logger.trace(\"BrowserCacheManager.getCachedNativeRequest called\");\n const cachedRequest = this.getTemporaryCache(TemporaryCacheKeys.NATIVE_REQUEST, true);\n if (!cachedRequest) {\n this.logger.trace(\"BrowserCacheManager.getCachedNativeRequest: No cached native request found\");\n return null;\n }\n\n const parsedRequest = this.validateAndParseJson(cachedRequest) as NativeTokenRequest;\n if (!parsedRequest) {\n this.logger.error(\"BrowserCacheManager.getCachedNativeRequest: Unable to parse native request\");\n return null;\n }\n\n return parsedRequest;\n }\n\n isInteractionInProgress(matchClientId?: boolean): boolean {\n const clientId = this.getInteractionInProgress();\n\n if (matchClientId) {\n return clientId === this.clientId;\n } else {\n return !!clientId;\n }\n }\n\n getInteractionInProgress(): string | null {\n const key = `${Constants.CACHE_PREFIX}.${TemporaryCacheKeys.INTERACTION_STATUS_KEY}`;\n return this.getTemporaryCache(key, false);\n }\n\n setInteractionInProgress(inProgress: boolean): void {\n // Ensure we don't overwrite interaction in progress for a different clientId\n const key = `${Constants.CACHE_PREFIX}.${TemporaryCacheKeys.INTERACTION_STATUS_KEY}`;\n if (inProgress) {\n if (this.getInteractionInProgress()) {\n throw BrowserAuthError.createInteractionInProgressError();\n } else {\n // No interaction is in progress\n this.setTemporaryCache(key, this.clientId, false);\n }\n } else if (!inProgress && this.getInteractionInProgress() === this.clientId) {\n this.removeItem(key);\n }\n }\n\n /**\n * Returns username retrieved from ADAL or MSAL v1 idToken\n */\n getLegacyLoginHint(): string | null {\n // Only check for adal/msal token if no SSO params are being used\n const adalIdTokenString = this.getTemporaryCache(PersistentCacheKeys.ADAL_ID_TOKEN);\n if (adalIdTokenString) {\n this.browserStorage.removeItem(PersistentCacheKeys.ADAL_ID_TOKEN);\n this.logger.verbose(\"Cached ADAL id token retrieved.\");\n }\n\n // Check for cached MSAL v1 id token\n const msalIdTokenString = this.getTemporaryCache(PersistentCacheKeys.ID_TOKEN, true);\n if (msalIdTokenString) {\n this.removeItem(this.generateCacheKey(PersistentCacheKeys.ID_TOKEN));\n this.logger.verbose(\"Cached MSAL.js v1 id token retrieved\");\n }\n\n const cachedIdTokenString = msalIdTokenString || adalIdTokenString;\n if (cachedIdTokenString) {\n const cachedIdToken = new IdToken(cachedIdTokenString, this.cryptoImpl);\n if (cachedIdToken.claims && cachedIdToken.claims.preferred_username) {\n this.logger.verbose(\"No SSO params used and ADAL/MSAL v1 token retrieved, setting ADAL/MSAL v1 preferred_username as loginHint\");\n return cachedIdToken.claims.preferred_username;\n }\n else if (cachedIdToken.claims && cachedIdToken.claims.upn) {\n this.logger.verbose(\"No SSO params used and ADAL/MSAL v1 token retrieved, setting ADAL/MSAL v1 upn as loginHint\");\n return cachedIdToken.claims.upn;\n }\n else {\n this.logger.verbose(\"No SSO params used and ADAL/MSAL v1 token retrieved, however, no account hint claim found. Enable preferred_username or upn id token claim to get SSO.\");\n }\n }\n\n return null;\n }\n\n /**\n * Updates a credential's cache key if the current cache key is outdated\n */\n updateCredentialCacheKey(currentCacheKey: string, credential: ValidCredentialType): string {\n const updatedCacheKey = credential.generateCredentialKey();\n\n if (currentCacheKey !== updatedCacheKey) {\n const cacheItem = this.getItem(currentCacheKey);\n if (cacheItem) {\n this.removeItem(currentCacheKey);\n this.setItem(updatedCacheKey, cacheItem);\n this.logger.verbose(`Updated an outdated ${credential.credentialType} cache key`);\n return updatedCacheKey;\n } else {\n this.logger.error(`Attempted to update an outdated ${credential.credentialType} cache key but no item matching the outdated key was found in storage`);\n }\n }\n\n return currentCacheKey;\n }\n}\n\nexport const DEFAULT_BROWSER_CACHE_MANAGER = (clientId: string, logger: Logger): BrowserCacheManager => {\n const cacheOptions = {\n cacheLocation: BrowserCacheLocation.MemoryStorage,\n storeAuthStateInCookie: false,\n secureCookies: false\n };\n return new BrowserCacheManager(clientId, cacheOptions, DEFAULT_CRYPTO_IMPLEMENTATION, logger);\n};\n","/* eslint-disable header/header */\nexport const name = \"@azure/msal-common\";\nexport const version = \"7.4.1\";\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { INetworkModule } from \"../network/INetworkModule\";\nimport { DEFAULT_CRYPTO_IMPLEMENTATION, ICrypto } from \"../crypto/ICrypto\";\nimport { AuthError } from \"../error/AuthError\";\nimport { ILoggerCallback, LogLevel } from \"../logger/Logger\";\nimport { Constants } from \"../utils/Constants\";\nimport { version } from \"../packageMetadata\";\nimport { Authority } from \"../authority/Authority\";\nimport { AzureCloudInstance } from \"../authority/AuthorityOptions\";\nimport { CacheManager, DefaultStorageClass } from \"../cache/CacheManager\";\nimport { ServerTelemetryManager } from \"../telemetry/server/ServerTelemetryManager\";\nimport { ICachePlugin } from \"../cache/interface/ICachePlugin\";\nimport { ISerializableTokenCache } from \"../cache/interface/ISerializableTokenCache\";\nimport { ClientCredentials } from \"../account/ClientCredentials\";\n\n// Token renewal offset default in seconds\nconst DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = 300;\n\n/**\n * Use the configuration object to configure MSAL Modules and initialize the base interfaces for MSAL.\n *\n * This object allows you to configure important elements of MSAL functionality:\n * - authOptions - Authentication for application\n * - cryptoInterface - Implementation of crypto functions\n * - libraryInfo - Library metadata\n * - telemetry - Telemetry options and data\n * - loggerOptions - Logging for application\n * - networkInterface - Network implementation\n * - storageInterface - Storage implementation\n * - systemOptions - Additional library options\n * - clientCredentials - Credentials options for confidential clients\n */\nexport type ClientConfiguration = {\n authOptions: AuthOptions,\n systemOptions?: SystemOptions,\n loggerOptions?: LoggerOptions,\n storageInterface?: CacheManager,\n networkInterface?: INetworkModule,\n cryptoInterface?: ICrypto,\n clientCredentials?: ClientCredentials,\n libraryInfo?: LibraryInfo\n telemetry?: TelemetryOptions,\n serverTelemetryManager?: ServerTelemetryManager | null,\n persistencePlugin?: ICachePlugin | null,\n serializableCache?: ISerializableTokenCache | null, \n};\n\nexport type CommonClientConfiguration = {\n authOptions: Required<AuthOptions>,\n systemOptions: Required<SystemOptions>,\n loggerOptions : Required<LoggerOptions>,\n storageInterface: CacheManager,\n networkInterface : INetworkModule,\n cryptoInterface : Required<ICrypto>,\n libraryInfo : LibraryInfo,\n telemetry: Required<TelemetryOptions>,\n serverTelemetryManager: ServerTelemetryManager | null,\n clientCredentials: ClientCredentials,\n persistencePlugin: ICachePlugin | null,\n serializableCache: ISerializableTokenCache | null, \n};\n\n/**\n * Use this to configure the auth options in the ClientConfiguration object\n *\n * - clientId - Client ID of your app registered with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview in Microsoft Identity Platform\n * - authority - You can configure a specific authority, defaults to \" \" or \"https://login.microsoftonline.com/common\"\n * - knownAuthorities - An array of URIs that are known to be valid. Used in B2C scenarios.\n * - cloudDiscoveryMetadata - A string containing the cloud discovery response. Used in AAD scenarios.\n * - clientCapabilities - Array of capabilities which will be added to the claims.access_token.xms_cc request property on every network request.\n * - protocolMode - Enum that represents the protocol that msal follows. Used for configuring proper endpoints.\n * - skipAuthorityMetadataCache - A flag to choose whether to use or not use the local metadata cache during authority initialization. Defaults to false.\n */\nexport type AuthOptions = {\n clientId: string;\n authority: Authority;\n clientCapabilities?: Array<string>;\n azureCloudOptions?: AzureCloudOptions;\n skipAuthorityMetadataCache?: boolean;\n};\n\n/**\n * Use this to configure token renewal info in the Configuration object\n *\n * - tokenRenewalOffsetSeconds - Sets the window of offset needed to renew the token before expiry\n */\nexport type SystemOptions = {\n tokenRenewalOffsetSeconds?: number;\n preventCorsPreflight?: boolean;\n proxyUrl?: string;\n};\n\n/**\n * Use this to configure the logging that MSAL does, by configuring logger options in the Configuration object\n *\n * - loggerCallback - Callback for logger\n * - piiLoggingEnabled - Sets whether pii logging is enabled\n * - logLevel - Sets the level at which logging happens\n * - correlationId - Sets the correlationId printed by the logger\n */\nexport type LoggerOptions = {\n loggerCallback?: ILoggerCallback,\n piiLoggingEnabled?: boolean,\n logLevel?: LogLevel,\n correlationId?: string\n};\n\n/**\n * Library-specific options\n */\nexport type LibraryInfo = {\n sku: string,\n version: string,\n cpu: string,\n os: string\n};\n\n/**\n * AzureCloudInstance specific options\n *\n * - azureCloudInstance - string enum providing short notation for soverign and public cloud authorities\n * - tenant - provision to provide the tenant info\n */\nexport type AzureCloudOptions = {\n azureCloudInstance: AzureCloudInstance;\n tenant?: string,\n};\n\nexport type TelemetryOptions = {\n application: ApplicationTelemetry;\n};\n\n/**\n * Telemetry information sent on request\n * - appName: Unique string name of an application\n * - appVersion: Version of the application using MSAL\n */\nexport type ApplicationTelemetry = {\n appName: string;\n appVersion: string;\n};\n\nexport const DEFAULT_SYSTEM_OPTIONS: Required<SystemOptions> = {\n tokenRenewalOffsetSeconds: DEFAULT_TOKEN_RENEWAL_OFFSET_SEC,\n preventCorsPreflight: false,\n proxyUrl: Constants.EMPTY_STRING\n};\n\nconst DEFAULT_LOGGER_IMPLEMENTATION: Required<LoggerOptions> = {\n loggerCallback: () => {\n // allow users to not set loggerCallback\n },\n piiLoggingEnabled: false,\n logLevel: LogLevel.Info,\n correlationId: Constants.EMPTY_STRING\n};\n\nconst DEFAULT_NETWORK_IMPLEMENTATION: INetworkModule = {\n async sendGetRequestAsync<T>(): Promise<T> {\n const notImplErr = \"Network interface - sendGetRequestAsync() has not been implemented\";\n throw AuthError.createUnexpectedError(notImplErr);\n },\n async sendPostRequestAsync<T>(): Promise<T> {\n const notImplErr = \"Network interface - sendPostRequestAsync() has not been implemented\";\n throw AuthError.createUnexpectedError(notImplErr);\n }\n};\n\nconst DEFAULT_LIBRARY_INFO: LibraryInfo = {\n sku: Constants.SKU,\n version: version,\n cpu: Constants.EMPTY_STRING,\n os: Constants.EMPTY_STRING\n};\n\nconst DEFAULT_CLIENT_CREDENTIALS: ClientCredentials = {\n clientSecret: Constants.EMPTY_STRING,\n clientAssertion: undefined\n};\n\nconst DEFAULT_AZURE_CLOUD_OPTIONS: AzureCloudOptions = {\n azureCloudInstance: AzureCloudInstance.None,\n tenant: `${Constants.DEFAULT_COMMON_TENANT}`\n};\n\nconst DEFAULT_TELEMETRY_OPTIONS: Required<TelemetryOptions> = {\n application: {\n appName: \"\",\n appVersion: \"\"\n }\n};\n\n/**\n * Function that sets the default options when not explicitly configured from app developer\n *\n * @param Configuration\n *\n * @returns Configuration\n */\nexport function buildClientConfiguration(\n {\n authOptions: userAuthOptions,\n systemOptions: userSystemOptions,\n loggerOptions: userLoggerOption,\n storageInterface: storageImplementation,\n networkInterface: networkImplementation,\n cryptoInterface: cryptoImplementation,\n clientCredentials: clientCredentials,\n libraryInfo: libraryInfo,\n telemetry: telemetry,\n serverTelemetryManager: serverTelemetryManager,\n persistencePlugin: persistencePlugin,\n serializableCache: serializableCache, \n }: ClientConfiguration): CommonClientConfiguration {\n\n const loggerOptions = { ...DEFAULT_LOGGER_IMPLEMENTATION, ...userLoggerOption };\n\n return {\n authOptions: buildAuthOptions(userAuthOptions),\n systemOptions: { ...DEFAULT_SYSTEM_OPTIONS, ...userSystemOptions },\n loggerOptions: loggerOptions,\n storageInterface: storageImplementation || new DefaultStorageClass(userAuthOptions.clientId, DEFAULT_CRYPTO_IMPLEMENTATION),\n networkInterface: networkImplementation || DEFAULT_NETWORK_IMPLEMENTATION,\n cryptoInterface: cryptoImplementation || DEFAULT_CRYPTO_IMPLEMENTATION,\n clientCredentials: clientCredentials || DEFAULT_CLIENT_CREDENTIALS,\n libraryInfo: { ...DEFAULT_LIBRARY_INFO, ...libraryInfo },\n telemetry: { ...DEFAULT_TELEMETRY_OPTIONS, ...telemetry },\n serverTelemetryManager: serverTelemetryManager || null,\n persistencePlugin: persistencePlugin || null,\n serializableCache: serializableCache || null, \n };\n}\n\n/**\n * Construct authoptions from the client and platform passed values\n * @param authOptions\n */\nfunction buildAuthOptions(authOptions: AuthOptions): Required<AuthOptions> {\n return {\n clientCapabilities: [],\n azureCloudOptions: DEFAULT_AZURE_CLOUD_OPTIONS,\n skipAuthorityMetadataCache: false,\n ...authOptions\n };\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthError } from \"../error/AuthError\";\nimport { NetworkResponse } from \"./NetworkManager\";\n\n/**\n * Options allowed by network request APIs.\n */\nexport type NetworkRequestOptions = {\n headers?: Record<string, string>,\n body?: string;\n proxyUrl?: string;\n};\n\n/**\n * Client network interface to send backend requests.\n * @interface\n */\nexport interface INetworkModule {\n\n /**\n * Interface function for async network \"GET\" requests. Based on the Fetch standard: https://fetch.spec.whatwg.org/\n * @param url\n * @param requestParams\n * @param enableCaching\n */\n sendGetRequestAsync<T>(url: string, options?: NetworkRequestOptions, cancellationToken?: number): Promise<NetworkResponse<T>>;\n\n /**\n * Interface function for async network \"POST\" requests. Based on the Fetch standard: https://fetch.spec.whatwg.org/\n * @param url\n * @param requestParams\n * @param enableCaching\n */\n sendPostRequestAsync<T>(url: string, options?: NetworkRequestOptions): Promise<NetworkResponse<T>>;\n}\n\nexport const StubbedNetworkModule: INetworkModule = {\n sendGetRequestAsync: () => {\n const notImplErr = \"Network interface - sendGetRequestAsync() has not been implemented for the Network interface.\";\n return Promise.reject(AuthError.createUnexpectedError(notImplErr));\n },\n sendPostRequestAsync: () => {\n const notImplErr = \"Network interface - sendPostRequestAsync() has not been implemented for the Network interface.\";\n return Promise.reject(AuthError.createUnexpectedError(notImplErr));\n }\n};\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Constants, INetworkModule, NetworkRequestOptions, NetworkResponse } from \"@azure/msal-common\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { HTTP_REQUEST_TYPE } from \"../utils/BrowserConstants\";\n\n/**\n * This class implements the Fetch API for GET and POST requests. See more here: https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API\n */\nexport class FetchClient implements INetworkModule {\n\n /**\n * Fetch Client for REST endpoints - Get request\n * @param url \n * @param headers \n * @param body \n */\n async sendGetRequestAsync<T>(url: string, options?: NetworkRequestOptions): Promise<NetworkResponse<T>> {\n let response;\n try {\n response = await fetch(url, {\n method: HTTP_REQUEST_TYPE.GET,\n headers: this.getFetchHeaders(options)\n });\n } catch (e) {\n if (window.navigator.onLine) {\n throw BrowserAuthError.createGetRequestFailedError(e, url);\n } else {\n throw BrowserAuthError.createNoNetworkConnectivityError();\n }\n }\n\n try {\n return {\n headers: this.getHeaderDict(response.headers),\n body: await response.json() as T,\n status: response.status\n };\n } catch (e) {\n throw BrowserAuthError.createFailedToParseNetworkResponseError(url);\n }\n }\n\n /**\n * Fetch Client for REST endpoints - Post request\n * @param url \n * @param headers \n * @param body \n */\n async sendPostRequestAsync<T>(url: string, options?: NetworkRequestOptions): Promise<NetworkResponse<T>> {\n const reqBody = (options && options.body) || Constants.EMPTY_STRING;\n\n let response;\n try {\n response = await fetch(url, {\n method: HTTP_REQUEST_TYPE.POST,\n headers: this.getFetchHeaders(options),\n body: reqBody\n });\n } catch (e) {\n if (window.navigator.onLine) {\n throw BrowserAuthError.createPostRequestFailedError(e, url);\n } else {\n throw BrowserAuthError.createNoNetworkConnectivityError();\n }\n }\n\n try {\n return {\n headers: this.getHeaderDict(response.headers),\n body: await response.json() as T,\n status: response.status\n };\n } catch (e) {\n throw BrowserAuthError.createFailedToParseNetworkResponseError(url);\n }\n }\n\n /**\n * Get Fetch API Headers object from string map\n * @param inputHeaders \n */\n private getFetchHeaders(options?: NetworkRequestOptions): Headers {\n const headers = new Headers();\n if (!(options && options.headers)) {\n return headers;\n }\n const optionsHeaders = options.headers;\n Object.keys(optionsHeaders).forEach((key) => {\n headers.append(key, optionsHeaders[key]);\n });\n return headers;\n }\n\n private getHeaderDict(headers: Headers): Record<string, string> {\n const headerDict: Record<string, string> = {};\n headers.forEach((value: string, key: string) => {\n headerDict[key] = value;\n });\n return headerDict;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { INetworkModule, NetworkRequestOptions, NetworkResponse } from \"@azure/msal-common\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { HTTP_REQUEST_TYPE } from \"../utils/BrowserConstants\";\n\n/**\n * This client implements the XMLHttpRequest class to send GET and POST requests.\n */\nexport class XhrClient implements INetworkModule {\n\n /**\n * XhrClient for REST endpoints - Get request\n * @param url \n * @param headers \n * @param body \n */\n async sendGetRequestAsync<T>(url: string, options?: NetworkRequestOptions): Promise<NetworkResponse<T>> {\n return this.sendRequestAsync(url, HTTP_REQUEST_TYPE.GET, options);\n }\n\n /**\n * XhrClient for REST endpoints - Post request\n * @param url \n * @param headers \n * @param body \n */\n async sendPostRequestAsync<T>(url: string, options?: NetworkRequestOptions): Promise<NetworkResponse<T>> {\n return this.sendRequestAsync(url, HTTP_REQUEST_TYPE.POST, options);\n }\n\n /**\n * Helper for XhrClient requests.\n * @param url \n * @param method \n * @param options \n */\n private sendRequestAsync<T>(url: string, method: HTTP_REQUEST_TYPE, options?: NetworkRequestOptions): Promise<NetworkResponse<T>> {\n return new Promise<NetworkResponse<T>>((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n xhr.open(method, url, /* async: */ true);\n this.setXhrHeaders(xhr, options);\n xhr.onload = (): void => {\n if (xhr.status < 200 || xhr.status >= 300) {\n if (method === HTTP_REQUEST_TYPE.POST) {\n reject(BrowserAuthError.createPostRequestFailedError(`Failed with status ${xhr.status}`, url));\n } else {\n reject(BrowserAuthError.createGetRequestFailedError(`Failed with status ${xhr.status}`, url));\n }\n }\n try {\n const jsonResponse = JSON.parse(xhr.responseText) as T;\n const networkResponse: NetworkResponse<T> = {\n headers: this.getHeaderDict(xhr),\n body: jsonResponse,\n status: xhr.status\n };\n resolve(networkResponse);\n } catch (e) {\n reject(BrowserAuthError.createFailedToParseNetworkResponseError(url));\n }\n };\n\n xhr.onerror = (): void => {\n if (window.navigator.onLine) {\n if (method === HTTP_REQUEST_TYPE.POST) {\n reject(BrowserAuthError.createPostRequestFailedError(`Failed with status ${xhr.status}`, url));\n } else {\n reject(BrowserAuthError.createGetRequestFailedError(`Failed with status ${xhr.status}`, url));\n }\n } else {\n reject(BrowserAuthError.createNoNetworkConnectivityError());\n }\n };\n\n if (method === HTTP_REQUEST_TYPE.POST && options && options.body) {\n xhr.send(options.body);\n } else if (method === HTTP_REQUEST_TYPE.GET) {\n xhr.send();\n } else {\n throw BrowserAuthError.createHttpMethodNotImplementedError(method);\n }\n });\n }\n\n /**\n * Helper to set XHR headers for request.\n * @param xhr \n * @param options \n */\n private setXhrHeaders(xhr: XMLHttpRequest, options?: NetworkRequestOptions): void {\n if (options && options.headers) {\n const headers = options.headers;\n Object.keys(headers).forEach((key: string) => {\n xhr.setRequestHeader(key, headers[key]);\n });\n }\n }\n\n /**\n * Gets a string map of the headers received in the response.\n * \n * Algorithm comes from https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/getAllResponseHeaders\n * @param xhr \n */\n private getHeaderDict(xhr: XMLHttpRequest): Record<string, string> {\n const headerString = xhr.getAllResponseHeaders();\n const headerArr = headerString.trim().split(/[\\r\\n]+/);\n const headerDict: Record<string, string> = {};\n headerArr.forEach((value: string) => {\n const parts = value.split(\": \");\n const headerName = parts.shift();\n const headerVal = parts.join(\": \");\n if (headerName && headerVal) {\n headerDict[headerName] = headerVal;\n }\n });\n\n return headerDict;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Constants, INetworkModule, UrlString } from \"@azure/msal-common\";\nimport { FetchClient } from \"../network/FetchClient\";\nimport { XhrClient } from \"../network/XhrClient\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { InteractionType, BrowserConstants } from \"./BrowserConstants\";\n\n/**\n * Utility class for browser specific functions\n */\nexport class BrowserUtils {\n\n // #region Window Navigation and URL management\n\n /**\n * Clears hash from window url.\n */\n static clearHash(contentWindow: Window): void {\n // Office.js sets history.replaceState to null\n contentWindow.location.hash = Constants.EMPTY_STRING;\n if (typeof contentWindow.history.replaceState === \"function\") {\n // Full removes \"#\" from url\n contentWindow.history.replaceState(null, Constants.EMPTY_STRING, `${contentWindow.location.origin}${contentWindow.location.pathname}${contentWindow.location.search}`);\n }\n }\n\n /**\n * Replaces current hash with hash from provided url\n */\n static replaceHash(url: string): void {\n const urlParts = url.split(\"#\");\n urlParts.shift(); // Remove part before the hash\n window.location.hash = urlParts.length > 0 ? urlParts.join(\"#\") : Constants.EMPTY_STRING;\n }\n\n /**\n * Returns boolean of whether the current window is in an iframe or not.\n */\n static isInIframe(): boolean {\n return window.parent !== window;\n }\n\n /**\n * Returns boolean of whether or not the current window is a popup opened by msal\n */\n static isInPopup(): boolean {\n return typeof window !== \"undefined\" && !!window.opener && \n window.opener !== window && \n typeof window.name === \"string\" && \n window.name.indexOf(`${BrowserConstants.POPUP_NAME_PREFIX}.`) === 0;\n }\n\n // #endregion\n\n /**\n * Returns current window URL as redirect uri\n */\n static getCurrentUri(): string {\n return window.location.href.split(\"?\")[0].split(\"#\")[0];\n }\n\n /**\n * Gets the homepage url for the current window location.\n */\n static getHomepage(): string {\n const currentUrl = new UrlString(window.location.href);\n const urlComponents = currentUrl.getUrlComponents();\n return `${urlComponents.Protocol}//${urlComponents.HostNameAndPort}/`;\n }\n\n /**\n * Returns best compatible network client object. \n */\n static getBrowserNetworkClient(): INetworkModule {\n if (window.fetch && window.Headers) {\n return new FetchClient();\n } else {\n return new XhrClient();\n }\n }\n\n /**\n * Throws error if we have completed an auth and are \n * attempting another auth request inside an iframe.\n */\n static blockReloadInHiddenIframes(): void {\n const isResponseHash = UrlString.hashContainsKnownProperties(window.location.hash);\n // return an error if called from the hidden iframe created by the msal js silent calls\n if (isResponseHash && BrowserUtils.isInIframe()) {\n throw BrowserAuthError.createBlockReloadInHiddenIframeError();\n }\n }\n\n /**\n * Block redirect operations in iframes unless explicitly allowed\n * @param interactionType Interaction type for the request\n * @param allowRedirectInIframe Config value to allow redirects when app is inside an iframe\n */\n static blockRedirectInIframe(interactionType: InteractionType, allowRedirectInIframe: boolean): void {\n const isIframedApp = BrowserUtils.isInIframe();\n if (interactionType === InteractionType.Redirect && isIframedApp && !allowRedirectInIframe) {\n // If we are not in top frame, we shouldn't redirect. This is also handled by the service.\n throw BrowserAuthError.createRedirectInIframeError(isIframedApp);\n }\n }\n\n /**\n * Block redirectUri loaded in popup from calling AcquireToken APIs\n */\n static blockAcquireTokenInPopups(): void {\n // Popups opened by msal popup APIs are given a name that starts with \"msal.\"\n if (BrowserUtils.isInPopup()) {\n throw BrowserAuthError.createBlockAcquireTokenInPopupsError();\n }\n }\n\n /**\n * Throws error if token requests are made in non-browser environment\n * @param isBrowserEnvironment Flag indicating if environment is a browser.\n */\n static blockNonBrowserEnvironment(isBrowserEnvironment: boolean): void {\n if (!isBrowserEnvironment) {\n throw BrowserAuthError.createNonBrowserEnvironmentError();\n }\n }\n\n /**\n * Throws error if native brokering is enabled but initialize hasn't been called\n * @param allowNativeBroker \n * @param initialized \n */\n static blockNativeBrokerCalledBeforeInitialized(allowNativeBroker: boolean, initialized: boolean): void {\n if (allowNativeBroker && !initialized) {\n throw BrowserAuthError.createNativeBrokerCalledBeforeInitialize();\n }\n }\n\n /**\n * Returns boolean of whether current browser is an Internet Explorer or Edge browser.\n */\n static detectIEOrEdge(): boolean {\n const ua = window.navigator.userAgent;\n const msie = ua.indexOf(\"MSIE \");\n const msie11 = ua.indexOf(\"Trident/\");\n const msedge = ua.indexOf(\"Edge/\");\n const isIE = msie > 0 || msie11 > 0;\n const isEdge = msedge > 0;\n return isIE || isEdge;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { INavigationClient } from \"./INavigationClient\";\nimport { NavigationOptions } from \"./NavigationOptions\";\n\nexport class NavigationClient implements INavigationClient {\n /**\n * Navigates to other pages within the same web application\n * @param url \n * @param options \n */\n navigateInternal(url: string, options: NavigationOptions): Promise<boolean>{\n return NavigationClient.defaultNavigateWindow(url, options);\n }\n\n /**\n * Navigates to other pages outside the web application i.e. the Identity Provider\n * @param url \n * @param options \n */\n navigateExternal(url: string, options: NavigationOptions): Promise<boolean> {\n return NavigationClient.defaultNavigateWindow(url, options);\n }\n\n /**\n * Default navigation implementation invoked by the internal and external functions\n * @param url \n * @param options \n */\n private static defaultNavigateWindow(url: string, options: NavigationOptions): Promise<boolean> {\n if (options.noHistory) {\n window.location.replace(url);\n } else {\n window.location.assign(url);\n }\n\n return new Promise((resolve) => {\n setTimeout(() => {\n resolve(true);\n }, options.timeout);\n });\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { SystemOptions, LoggerOptions, INetworkModule, DEFAULT_SYSTEM_OPTIONS, Constants, ProtocolMode, LogLevel, StubbedNetworkModule, AzureCloudInstance, AzureCloudOptions, ApplicationTelemetry } from \"@azure/msal-common\";\nimport { BrowserUtils } from \"../utils/BrowserUtils\";\nimport { BrowserCacheLocation } from \"../utils/BrowserConstants\";\nimport { INavigationClient } from \"../navigation/INavigationClient\";\nimport { NavigationClient } from \"../navigation/NavigationClient\";\n\n// Default timeout for popup windows and iframes in milliseconds\nexport const DEFAULT_POPUP_TIMEOUT_MS = 60000;\nexport const DEFAULT_IFRAME_TIMEOUT_MS = 6000;\nexport const DEFAULT_REDIRECT_TIMEOUT_MS = 30000;\nexport const DEFAULT_NATIVE_BROKER_HANDSHAKE_TIMEOUT_MS = 2000;\n\n/**\n * Use this to configure the auth options in the Configuration object\n */\nexport type BrowserAuthOptions = {\n /**\n * Client ID of your app registered with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview in Microsoft Identity Platform\n */\n clientId: string;\n /**\n * You can configure a specific authority, defaults to \" \" or \"https://login.microsoftonline.com/common\"\n */\n authority?: string;\n /**\n * An array of URIs that are known to be valid. Used in B2C scenarios.\n */\n knownAuthorities?: Array<string>;\n /**\n * A string containing the cloud discovery response. Used in AAD scenarios.\n */\n cloudDiscoveryMetadata?: string;\n /**\n * A string containing the .well-known/openid-configuration endpoint response\n */\n authorityMetadata?: string;\n /**\n * The redirect URI where authentication responses can be received by your application. It must exactly match one of the redirect URIs registered in the Azure portal.\n */\n redirectUri?: string;\n /**\n * The redirect URI where the window navigates after a successful logout.\n */\n postLogoutRedirectUri?: string | null;\n /**\n * Boolean indicating whether to navigate to the original request URL after the auth server navigates to the redirect URL.\n */\n navigateToLoginRequestUrl?: boolean;\n /**\n * Array of capabilities which will be added to the claims.access_token.xms_cc request property on every network request.\n */\n clientCapabilities?: Array<string>;\n /**\n * Enum that represents the protocol that msal follows. Used for configuring proper endpoints.\n */\n protocolMode?: ProtocolMode;\n /**\n * Enum that represents the Azure Cloud to use.\n */\n azureCloudOptions?: AzureCloudOptions;\n /**\n * Flag of whether to use the local metadata cache\n */\n skipAuthorityMetadataCache?: boolean;\n};\n\n/**\n * Use this to configure the below cache configuration options:\n */\nexport type CacheOptions = {\n /**\n * Used to specify the cacheLocation user wants to set. Valid values are \"localStorage\" and \"sessionStorage\"\n */\n cacheLocation?: BrowserCacheLocation | string;\n /**\n * If set, MSAL stores the auth request state required for validation of the auth flows in the browser cookies. By default this flag is set to false.\n */\n storeAuthStateInCookie?: boolean;\n /**\n * If set, MSAL sets the \"Secure\" flag on cookies so they can only be sent over HTTPS. By default this flag is set to false.\n */\n secureCookies?: boolean;\n};\n\nexport type BrowserSystemOptions = SystemOptions & {\n /**\n * Used to initialize the Logger object (See ClientConfiguration.ts)\n */\n loggerOptions?: LoggerOptions;\n /**\n * Network interface implementation\n */\n networkClient?: INetworkModule;\n /**\n * Override the methods used to navigate to other webpages. Particularly useful if you are using a client-side router\n */\n navigationClient?: INavigationClient;\n /**\n * Sets the timeout for waiting for a response hash in a popup. Will take precedence over loadFrameTimeout if both are set.\n */\n windowHashTimeout?: number;\n /**\n * Sets the timeout for waiting for a response hash in an iframe. Will take precedence over loadFrameTimeout if both are set.\n */\n iframeHashTimeout?: number;\n /**\n * Sets the timeout for waiting for a response hash in an iframe or popup\n */\n loadFrameTimeout?: number;\n /**\n * Maximum time the library should wait for a frame to load\n */\n navigateFrameWait?: number;\n /**\n * Time to wait for redirection to occur before resolving promise\n */\n redirectNavigationTimeout?: number;\n /**\n * Sets whether popups are opened asynchronously. By default, this flag is set to false. When set to false, blank popups are opened before anything else happens. When set to true, popups are opened when making the network request.\n */\n asyncPopups?: boolean;\n /**\n * Flag to enable redirect opertaions when the app is rendered in an iframe (to support scenarios such as embedded B2C login).\n */\n allowRedirectInIframe?: boolean;\n /**\n * Flag to enable native broker support (e.g. acquiring tokens from WAM on Windows)\n */\n allowNativeBroker?: boolean;\n /**\n * Sets the timeout for waiting for the native broker handshake to resolve\n */\n nativeBrokerHandshakeTimeout?: number;\n};\n\n/**\n * Telemetry Options\n */\nexport type BrowserTelemetryOptions = {\n /**\n * Telemetry information sent on request\n * - appName: Unique string name of an application\n * - appVersion: Version of the application using MSAL\n */\n application?: ApplicationTelemetry;\n};\n\n/**\n * This object allows you to configure important elements of MSAL functionality and is passed into the constructor of PublicClientApplication\n */\nexport type Configuration = {\n /**\n * This is where you configure auth elements like clientID, authority used for authenticating against the Microsoft Identity Platform\n */\n auth: BrowserAuthOptions,\n /**\n * This is where you configure cache location and whether to store cache in cookies\n */\n cache?: CacheOptions,\n /**\n * This is where you can configure the network client, logger, token renewal offset\n */\n system?: BrowserSystemOptions,\n /**\n * This is where you can configure telemetry data and options\n */\n telemetry?: BrowserTelemetryOptions\n};\n\nexport type BrowserConfiguration = {\n auth: Required<BrowserAuthOptions>,\n cache: Required<CacheOptions>,\n system: Required<BrowserSystemOptions>,\n telemetry: Required<BrowserTelemetryOptions>\n};\n\n/**\n * MSAL function that sets the default options when not explicitly configured from app developer\n *\n * @param auth\n * @param cache\n * @param system\n *\n * @returns Configuration object\n */\nexport function buildConfiguration({ auth: userInputAuth, cache: userInputCache, system: userInputSystem, telemetry: userInputTelemetry }: Configuration, isBrowserEnvironment: boolean): BrowserConfiguration {\n\n // Default auth options for browser\n const DEFAULT_AUTH_OPTIONS: Required<BrowserAuthOptions> = {\n clientId: Constants.EMPTY_STRING,\n authority: `${Constants.DEFAULT_AUTHORITY}`,\n knownAuthorities: [],\n cloudDiscoveryMetadata: Constants.EMPTY_STRING,\n authorityMetadata: Constants.EMPTY_STRING,\n redirectUri: Constants.EMPTY_STRING,\n postLogoutRedirectUri: Constants.EMPTY_STRING,\n navigateToLoginRequestUrl: true,\n clientCapabilities: [],\n protocolMode: ProtocolMode.AAD,\n azureCloudOptions: {\n azureCloudInstance: AzureCloudInstance.None,\n tenant: Constants.EMPTY_STRING\n },\n skipAuthorityMetadataCache: false,\n };\n\n // Default cache options for browser\n const DEFAULT_CACHE_OPTIONS: Required<CacheOptions> = {\n cacheLocation: BrowserCacheLocation.SessionStorage,\n storeAuthStateInCookie: false,\n secureCookies: false\n };\n\n // Default logger options for browser\n const DEFAULT_LOGGER_OPTIONS: LoggerOptions = {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n loggerCallback: (): void => {},\n logLevel: LogLevel.Info,\n piiLoggingEnabled: false\n };\n\n // Default system options for browser\n const DEFAULT_BROWSER_SYSTEM_OPTIONS: Required<BrowserSystemOptions> = {\n ...DEFAULT_SYSTEM_OPTIONS,\n loggerOptions: DEFAULT_LOGGER_OPTIONS,\n networkClient: isBrowserEnvironment ? BrowserUtils.getBrowserNetworkClient() : StubbedNetworkModule,\n navigationClient: new NavigationClient(),\n loadFrameTimeout: 0,\n // If loadFrameTimeout is provided, use that as default.\n windowHashTimeout: userInputSystem?.loadFrameTimeout || DEFAULT_POPUP_TIMEOUT_MS,\n iframeHashTimeout: userInputSystem?.loadFrameTimeout || DEFAULT_IFRAME_TIMEOUT_MS,\n navigateFrameWait: isBrowserEnvironment && BrowserUtils.detectIEOrEdge() ? 500 : 0,\n redirectNavigationTimeout: DEFAULT_REDIRECT_TIMEOUT_MS,\n asyncPopups: false,\n allowRedirectInIframe: false,\n allowNativeBroker: false,\n nativeBrokerHandshakeTimeout: userInputSystem?.nativeBrokerHandshakeTimeout || DEFAULT_NATIVE_BROKER_HANDSHAKE_TIMEOUT_MS\n };\n\n const DEFAULT_TELEMETRY_OPTIONS: Required<BrowserTelemetryOptions> = {\n application: {\n appName: Constants.EMPTY_STRING,\n appVersion: Constants.EMPTY_STRING\n }\n };\n\n const overlayedConfig: BrowserConfiguration = {\n auth: { ...DEFAULT_AUTH_OPTIONS, ...userInputAuth },\n cache: { ...DEFAULT_CACHE_OPTIONS, ...userInputCache },\n system: { ...DEFAULT_BROWSER_SYSTEM_OPTIONS, ...userInputSystem },\n telemetry: { ...DEFAULT_TELEMETRY_OPTIONS, ...userInputTelemetry }\n };\n return overlayedConfig;\n}\n\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ICrypto, SignedHttpRequestParameters } from \"./ICrypto\";\nimport { TimeUtils } from \"../utils/TimeUtils\";\nimport { UrlString } from \"../url/UrlString\";\n\n/**\n * See eSTS docs for more info.\n * - A kid element, with the value containing an RFC 7638-compliant JWK thumbprint that is base64 encoded.\n * - xms_ksl element, representing the storage location of the key's secret component on the client device. One of two values:\n * - sw: software storage\n * - uhw: hardware storage\n */\ntype ReqCnf = {\n kid: string;\n xms_ksl: KeyLocation;\n};\n\nexport type ReqCnfData = {\n kid: string;\n reqCnfString: string;\n reqCnfHash: string;\n};\n\nenum KeyLocation {\n SW = \"sw\",\n UHW = \"uhw\"\n}\n\nexport class PopTokenGenerator {\n\n private cryptoUtils: ICrypto;\n\n constructor(cryptoUtils: ICrypto) {\n this.cryptoUtils = cryptoUtils;\n }\n\n /**\n * Generates the req_cnf validated at the RP in the POP protocol for SHR parameters\n * and returns an object containing the keyid, the full req_cnf string and the req_cnf string hash\n * @param request\n * @returns\n */\n async generateCnf(request: SignedHttpRequestParameters): Promise<ReqCnfData> {\n const reqCnf = await this.generateKid(request);\n const reqCnfString: string = this.cryptoUtils.base64Encode(JSON.stringify(reqCnf));\n\n return {\n kid: reqCnf.kid,\n reqCnfString, \n reqCnfHash: await this.cryptoUtils.hashString(reqCnfString) \n };\n }\n\n /**\n * Generates key_id for a SHR token request\n * @param request\n * @returns\n */\n async generateKid(request: SignedHttpRequestParameters): Promise<ReqCnf> {\n const kidThumbprint = await this.cryptoUtils.getPublicKeyThumbprint(request);\n\n return {\n kid: kidThumbprint,\n xms_ksl: KeyLocation.SW\n };\n }\n\n /**\n * Signs the POP access_token with the local generated key-pair\n * @param accessToken\n * @param request\n * @returns\n */\n async signPopToken(accessToken: string, keyId: string, request: SignedHttpRequestParameters): Promise<string> {\n return this.signPayload(accessToken, keyId, request);\n }\n\n /**\n * Utility function to generate the signed JWT for an access_token\n * @param payload\n * @param kid\n * @param request\n * @param claims\n * @returns\n */\n async signPayload(payload: string, keyId: string, request: SignedHttpRequestParameters, claims?: object): Promise<string> {\n\n // Deconstruct request to extract SHR parameters\n const { resourceRequestMethod, resourceRequestUri, shrClaims, shrNonce } = request;\n\n const resourceUrlString = (resourceRequestUri) ? new UrlString(resourceRequestUri) : undefined;\n const resourceUrlComponents = resourceUrlString?.getUrlComponents();\n return await this.cryptoUtils.signJwt({\n at: payload,\n ts: TimeUtils.nowSeconds(),\n m: resourceRequestMethod?.toUpperCase(),\n u: resourceUrlComponents?.HostNameAndPort,\n nonce: shrNonce || this.cryptoUtils.createNewGuid(),\n p: resourceUrlComponents?.AbsolutePath,\n q: (resourceUrlComponents?.QueryString) ? [[], resourceUrlComponents.QueryString] : undefined,\n client_claims: shrClaims || undefined,\n ...claims\n }, keyId, request.correlationId);\n }\n}\n","/* eslint-disable header/header */\nexport const name = \"@azure/msal-browser\";\nexport const version = \"2.28.3\";\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ICrypto, Logger, AccountEntity, CacheManager } from \"@azure/msal-common\";\nimport { InteractionType } from \"../utils/BrowserConstants\";\nimport { EventCallbackFunction, EventError, EventMessage, EventPayload } from \"./EventMessage\";\nimport { EventType } from \"./EventType\";\n\nexport class EventHandler {\n // Callback for subscribing to events\n private eventCallbacks: Map<string, EventCallbackFunction>;\n private logger: Logger;\n private browserCrypto: ICrypto;\n private listeningToStorageEvents: boolean;\n\n constructor(logger: Logger, browserCrypto: ICrypto) {\n this.eventCallbacks = new Map();\n this.logger = logger;\n this.browserCrypto = browserCrypto;\n this.listeningToStorageEvents = false;\n this.handleAccountCacheChange = this.handleAccountCacheChange.bind(this);\n }\n\n /**\n * Adds event callbacks to array\n * @param callback\n */\n addEventCallback(callback: EventCallbackFunction): string | null {\n if (typeof window !== \"undefined\") {\n const callbackId = this.browserCrypto.createNewGuid();\n this.eventCallbacks.set(callbackId, callback);\n this.logger.verbose(`Event callback registered with id: ${callbackId}`);\n \n return callbackId;\n }\n \n return null;\n }\n\n /**\n * Removes callback with provided id from callback array\n * @param callbackId\n */\n removeEventCallback(callbackId: string): void {\n this.eventCallbacks.delete(callbackId);\n this.logger.verbose(`Event callback ${callbackId} removed.`);\n }\n\n /**\n * Adds event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window\n */\n enableAccountStorageEvents(): void {\n if (typeof window === \"undefined\") {\n return;\n }\n\n if (!this.listeningToStorageEvents) {\n this.logger.verbose(\"Adding account storage listener.\");\n this.listeningToStorageEvents = true;\n window.addEventListener(\"storage\", this.handleAccountCacheChange);\n } else {\n this.logger.verbose(\"Account storage listener already registered.\");\n }\n }\n\n /**\n * Removes event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window\n */\n disableAccountStorageEvents(): void {\n if (typeof window === \"undefined\") {\n return;\n }\n\n if (this.listeningToStorageEvents) {\n this.logger.verbose(\"Removing account storage listener.\");\n window.removeEventListener(\"storage\", this.handleAccountCacheChange);\n this.listeningToStorageEvents = false;\n } else {\n this.logger.verbose(\"No account storage listener registered.\");\n }\n }\n\n /**\n * Emits events by calling callback with event message\n * @param eventType\n * @param interactionType\n * @param payload\n * @param error\n */\n emitEvent(eventType: EventType, interactionType?: InteractionType, payload?: EventPayload, error?: EventError): void {\n if (typeof window !== \"undefined\") {\n const message: EventMessage = {\n eventType: eventType,\n interactionType: interactionType || null,\n payload: payload || null,\n error: error || null,\n timestamp: Date.now()\n };\n\n this.logger.info(`Emitting event: ${eventType}`);\n\n this.eventCallbacks.forEach((callback: EventCallbackFunction, callbackId: string) => {\n this.logger.verbose(`Emitting event to callback ${callbackId}: ${eventType}`);\n callback.apply(null, [message]);\n });\n }\n }\n\n /**\n * Emit account added/removed events when cached accounts are changed in a different tab or frame\n */\n private handleAccountCacheChange(e: StorageEvent): void {\n try {\n const cacheValue = e.newValue || e.oldValue;\n if (!cacheValue) {\n return;\n }\n const parsedValue = JSON.parse(cacheValue);\n if (typeof parsedValue !== \"object\" || !AccountEntity.isAccountEntity(parsedValue)) {\n return;\n }\n const accountEntity = CacheManager.toObject<AccountEntity>(new AccountEntity(), parsedValue);\n const accountInfo = accountEntity.getAccountInfo();\n if (!e.oldValue && e.newValue) {\n this.logger.info(\"Account was added to cache in a different window\");\n this.emitEvent(EventType.ACCOUNT_ADDED, undefined, accountInfo);\n } else if (!e.newValue && e.oldValue) {\n this.logger.info(\"Account was removed from cache in a different window\");\n this.emitEvent(EventType.ACCOUNT_REMOVED, undefined, accountInfo);\n }\n } catch (e) {\n return;\n }\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { NetworkResponse } from \"./NetworkManager\";\nimport { ServerAuthorizationTokenResponse } from \"../response/ServerAuthorizationTokenResponse\";\nimport { HeaderNames, CacheSchemaType, ThrottlingConstants, Constants } from \"../utils/Constants\";\nimport { CacheManager } from \"../cache/CacheManager\";\nimport { ServerError } from \"../error/ServerError\";\nimport { RequestThumbprint } from \"./RequestThumbprint\";\nimport { ThrottlingEntity } from \"../cache/entities/ThrottlingEntity\";\nimport { BaseAuthRequest } from \"../request/BaseAuthRequest\";\n\nexport class ThrottlingUtils {\n\n /**\n * Prepares a RequestThumbprint to be stored as a key.\n * @param thumbprint\n */\n static generateThrottlingStorageKey(thumbprint: RequestThumbprint): string {\n return `${ThrottlingConstants.THROTTLING_PREFIX}.${JSON.stringify(thumbprint)}`;\n }\n\n /**\n * Performs necessary throttling checks before a network request.\n * @param cacheManager\n * @param thumbprint\n */\n static preProcess(cacheManager: CacheManager, thumbprint: RequestThumbprint): void {\n const key = ThrottlingUtils.generateThrottlingStorageKey(thumbprint);\n const value = cacheManager.getThrottlingCache(key);\n\n if (value) {\n if (value.throttleTime < Date.now()) {\n cacheManager.removeItem(key, CacheSchemaType.THROTTLING);\n return;\n }\n throw new ServerError(value.errorCodes?.join(\" \") || Constants.EMPTY_STRING, value.errorMessage, value.subError);\n }\n }\n\n /**\n * Performs necessary throttling checks after a network request.\n * @param cacheManager\n * @param thumbprint\n * @param response\n */\n static postProcess(cacheManager: CacheManager, thumbprint: RequestThumbprint, response: NetworkResponse<ServerAuthorizationTokenResponse>): void {\n if (ThrottlingUtils.checkResponseStatus(response) || ThrottlingUtils.checkResponseForRetryAfter(response)) {\n const thumbprintValue: ThrottlingEntity = {\n throttleTime: ThrottlingUtils.calculateThrottleTime(parseInt(response.headers[HeaderNames.RETRY_AFTER])),\n error: response.body.error,\n errorCodes: response.body.error_codes,\n errorMessage: response.body.error_description,\n subError: response.body.suberror\n };\n cacheManager.setThrottlingCache(\n ThrottlingUtils.generateThrottlingStorageKey(thumbprint),\n thumbprintValue\n );\n }\n }\n\n /**\n * Checks a NetworkResponse object's status codes against 429 or 5xx\n * @param response\n */\n static checkResponseStatus(response: NetworkResponse<ServerAuthorizationTokenResponse>): boolean {\n return response.status === 429 || response.status >= 500 && response.status < 600;\n }\n\n /**\n * Checks a NetworkResponse object's RetryAfter header\n * @param response\n */\n static checkResponseForRetryAfter(response: NetworkResponse<ServerAuthorizationTokenResponse>): boolean {\n if (response.headers) {\n return response.headers.hasOwnProperty(HeaderNames.RETRY_AFTER) && (response.status < 200 || response.status >= 300);\n }\n return false;\n }\n\n /**\n * Calculates the Unix-time value for a throttle to expire given throttleTime in seconds.\n * @param throttleTime\n */\n static calculateThrottleTime(throttleTime: number): number {\n const time = throttleTime <= 0 ? 0 : throttleTime;\n\n const currentSeconds = Date.now() / 1000;\n return Math.floor(Math.min(\n currentSeconds + (time || ThrottlingConstants.DEFAULT_THROTTLE_TIME_SECONDS),\n currentSeconds + ThrottlingConstants.DEFAULT_MAX_THROTTLE_TIME_SECONDS\n ) * 1000);\n }\n\n static removeThrottle(cacheManager: CacheManager, clientId: string, request: BaseAuthRequest, homeAccountIdentifier?: string): boolean {\n const thumbprint: RequestThumbprint = {\n clientId: clientId,\n authority: request.authority,\n scopes: request.scopes,\n homeAccountIdentifier: homeAccountIdentifier,\n claims: request.claims,\n authenticationScheme: request.authenticationScheme,\n resourceRequestMethod: request.resourceRequestMethod,\n resourceRequestUri: request.resourceRequestUri,\n shrClaims: request.shrClaims,\n sshKid: request.sshKid\n };\n\n const key = this.generateThrottlingStorageKey(thumbprint);\n return cacheManager.removeItem(key, CacheSchemaType.THROTTLING);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { INetworkModule, NetworkRequestOptions } from \"./INetworkModule\";\nimport { RequestThumbprint } from \"./RequestThumbprint\";\nimport { ThrottlingUtils } from \"./ThrottlingUtils\";\nimport { CacheManager } from \"../cache/CacheManager\";\nimport { ClientAuthError } from \"../error/ClientAuthError\";\nimport { AuthError } from \"../error/AuthError\";\n\nexport type NetworkResponse<T> = {\n headers: Record<string, string>;\n body: T;\n status: number;\n};\n\nexport class NetworkManager {\n private networkClient: INetworkModule;\n private cacheManager: CacheManager;\n\n constructor(networkClient: INetworkModule, cacheManager: CacheManager) {\n this.networkClient = networkClient;\n this.cacheManager = cacheManager;\n }\n\n /**\n * Wraps sendPostRequestAsync with necessary preflight and postflight logic\n * @param thumbprint\n * @param tokenEndpoint\n * @param options\n */\n async sendPostRequest<T>(thumbprint: RequestThumbprint, tokenEndpoint: string, options: NetworkRequestOptions): Promise<NetworkResponse<T>> {\n ThrottlingUtils.preProcess(this.cacheManager, thumbprint);\n\n let response;\n try {\n response = await this.networkClient.sendPostRequestAsync<T>(tokenEndpoint, options);\n } catch (e) {\n if (e instanceof AuthError) {\n throw e;\n } else {\n throw ClientAuthError.createNetworkError(tokenEndpoint, e);\n }\n }\n\n ThrottlingUtils.postProcess(this.cacheManager, thumbprint, response);\n\n return response;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ClientConfiguration, buildClientConfiguration, CommonClientConfiguration } from \"../config/ClientConfiguration\";\nimport { INetworkModule } from \"../network/INetworkModule\";\nimport { NetworkManager, NetworkResponse } from \"../network/NetworkManager\";\nimport { ICrypto } from \"../crypto/ICrypto\";\nimport { Authority } from \"../authority/Authority\";\nimport { Logger } from \"../logger/Logger\";\nimport { Constants, HeaderNames } from \"../utils/Constants\";\nimport { ServerAuthorizationTokenResponse } from \"../response/ServerAuthorizationTokenResponse\";\nimport { CacheManager } from \"../cache/CacheManager\";\nimport { ServerTelemetryManager } from \"../telemetry/server/ServerTelemetryManager\";\nimport { RequestThumbprint } from \"../network/RequestThumbprint\";\nimport { version, name } from \"../packageMetadata\";\nimport { ClientAuthError } from \"../error/ClientAuthError\";\nimport { CcsCredential, CcsCredentialType } from \"../account/CcsCredential\";\nimport { buildClientInfoFromHomeAccountId } from \"../account/ClientInfo\";\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient\";\n\n/**\n * Base application class which will construct requests to send to and handle responses from the Microsoft STS using the authorization code flow.\n */\nexport abstract class BaseClient {\n // Logger object\n public logger: Logger;\n\n // Application config\n protected config: CommonClientConfiguration;\n\n // Crypto Interface\n protected cryptoUtils: ICrypto;\n\n // Storage Interface\n protected cacheManager: CacheManager;\n\n // Network Interface\n protected networkClient: INetworkModule;\n\n // Server Telemetry Manager\n protected serverTelemetryManager: ServerTelemetryManager | null;\n\n // Network Manager\n protected networkManager: NetworkManager;\n\n // Default authority object\n public authority: Authority;\n\n // Performance telemetry client\n protected performanceClient?: IPerformanceClient;\n\n protected constructor(configuration: ClientConfiguration, performanceClient?: IPerformanceClient) {\n // Set the configuration\n this.config = buildClientConfiguration(configuration);\n\n // Initialize the logger\n this.logger = new Logger(this.config.loggerOptions, name, version);\n\n // Initialize crypto\n this.cryptoUtils = this.config.cryptoInterface;\n\n // Initialize storage interface\n this.cacheManager = this.config.storageInterface;\n\n // Set the network interface\n this.networkClient = this.config.networkInterface;\n\n // Set the NetworkManager\n this.networkManager = new NetworkManager(this.networkClient, this.cacheManager);\n\n // Set TelemetryManager\n this.serverTelemetryManager = this.config.serverTelemetryManager;\n\n // set Authority\n this.authority = this.config.authOptions.authority;\n\n // set performance telemetry client\n this.performanceClient = performanceClient;\n }\n\n /**\n * Creates default headers for requests to token endpoint\n */\n protected createTokenRequestHeaders(ccsCred?: CcsCredential): Record<string, string> { \n const headers: Record<string, string> = {};\n headers[HeaderNames.CONTENT_TYPE] = Constants.URL_FORM_CONTENT_TYPE;\n\n if (!this.config.systemOptions.preventCorsPreflight && ccsCred) {\n switch (ccsCred.type) {\n case CcsCredentialType.HOME_ACCOUNT_ID:\n try {\n const clientInfo = buildClientInfoFromHomeAccountId(ccsCred.credential);\n headers[HeaderNames.CCS_HEADER] = `Oid:${clientInfo.uid}@${clientInfo.utid}`;\n } catch (e) {\n this.logger.verbose(\"Could not parse home account ID for CCS Header: \" + e);\n }\n break;\n case CcsCredentialType.UPN:\n headers[HeaderNames.CCS_HEADER] = `UPN: ${ccsCred.credential}`;\n break;\n }\n } \n return headers;\n }\n\n /**\n * Http post to token endpoint\n * @param tokenEndpoint\n * @param queryString\n * @param headers\n * @param thumbprint\n */\n protected async executePostToTokenEndpoint(tokenEndpoint: string, queryString: string, headers: Record<string, string>, thumbprint: RequestThumbprint): Promise<NetworkResponse<ServerAuthorizationTokenResponse>> {\n const response = await this.networkManager.sendPostRequest<ServerAuthorizationTokenResponse>(\n thumbprint,\n tokenEndpoint,\n { body: queryString, headers: headers, proxyUrl: this.config.systemOptions.proxyUrl }\n );\n\n if (this.config.serverTelemetryManager && response.status < 500 && response.status !== 429) {\n // Telemetry data successfully logged by server, clear Telemetry cache\n this.config.serverTelemetryManager.clearTelemetryCache();\n }\n\n return response;\n }\n\n /**\n * Updates the authority object of the client. Endpoint discovery must be completed.\n * @param updatedAuthority\n */\n updateAuthority(updatedAuthority: Authority): void {\n if (!updatedAuthority.discoveryComplete()) {\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Updated authority has not completed endpoint discovery.\");\n }\n this.authority = updatedAuthority;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { StringUtils } from \"../utils/StringUtils\";\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\nimport { PromptValue, CodeChallengeMethodValues} from \"../utils/Constants\";\nimport { StringDict } from \"../utils/MsalTypes\";\n\n/**\n * Validates server consumable params from the \"request\" objects\n */\nexport class RequestValidator {\n\n /**\n * Utility to check if the `redirectUri` in the request is a non-null value\n * @param redirectUri\n */\n static validateRedirectUri(redirectUri: string) : void {\n if (StringUtils.isEmpty(redirectUri)) {\n throw ClientConfigurationError.createRedirectUriEmptyError();\n }\n }\n\n /**\n * Utility to validate prompt sent by the user in the request\n * @param prompt\n */\n static validatePrompt(prompt: string) : void {\n const promptValues = [];\n\n for (const value in PromptValue) {\n promptValues.push(PromptValue[value]);\n }\n\n if (promptValues.indexOf(prompt) < 0) {\n throw ClientConfigurationError.createInvalidPromptError(prompt);\n }\n }\n\n static validateClaims(claims: string) : void {\n try {\n JSON.parse(claims);\n } catch(e) {\n throw ClientConfigurationError.createInvalidClaimsRequestError();\n }\n }\n\n /**\n * Utility to validate code_challenge and code_challenge_method\n * @param codeChallenge\n * @param codeChallengeMethod\n */\n static validateCodeChallengeParams(codeChallenge: string, codeChallengeMethod: string) : void {\n if (StringUtils.isEmpty(codeChallenge) || StringUtils.isEmpty(codeChallengeMethod)) {\n throw ClientConfigurationError.createInvalidCodeChallengeParamsError();\n } else {\n this.validateCodeChallengeMethod(codeChallengeMethod);\n }\n }\n\n /**\n * Utility to validate code_challenge_method\n * @param codeChallengeMethod\n */\n static validateCodeChallengeMethod(codeChallengeMethod: string) : void {\n if (\n [\n CodeChallengeMethodValues.PLAIN,\n CodeChallengeMethodValues.S256\n ].indexOf(codeChallengeMethod) < 0\n ) {\n throw ClientConfigurationError.createInvalidCodeChallengeMethodError();\n }\n }\n\n /**\n * Removes unnecessary or duplicate query parameters from extraQueryParameters\n * @param request\n */\n static sanitizeEQParams(eQParams: StringDict, queryParams: Map<string, string>) : StringDict {\n if (!eQParams) {\n return {};\n }\n\n // Remove any query parameters already included in SSO params\n queryParams.forEach((value, key) => {\n if (eQParams[key]) {\n delete eQParams[key];\n }\n });\n\n return eQParams;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AADServerParamKeys, Constants, ResponseMode, SSOTypes, CLIENT_INFO, AuthenticationScheme, ClaimsRequestKeys, PasswordGrantConstants, OIDC_DEFAULT_SCOPES, ThrottlingConstants, HeaderNames} from \"../utils/Constants\";\nimport { ScopeSet } from \"./ScopeSet\";\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\nimport { StringDict } from \"../utils/MsalTypes\";\nimport { RequestValidator } from \"./RequestValidator\";\nimport { ApplicationTelemetry, LibraryInfo } from \"../config/ClientConfiguration\";\nimport { StringUtils } from \"../utils/StringUtils\";\nimport { ServerTelemetryManager } from \"../telemetry/server/ServerTelemetryManager\";\nimport { ClientInfo } from \"../account/ClientInfo\";\n\nexport class RequestParameterBuilder {\n\n private parameters: Map<string, string>;\n\n constructor() {\n this.parameters = new Map<string, string>();\n }\n\n /**\n * add response_type = code\n */\n addResponseTypeCode(): void {\n this.parameters.set(\n AADServerParamKeys.RESPONSE_TYPE, encodeURIComponent(Constants.CODE_RESPONSE_TYPE)\n );\n }\n\n /**\n * add response_type = token id_token\n */\n addResponseTypeForTokenAndIdToken(): void {\n this.parameters.set(\n AADServerParamKeys.RESPONSE_TYPE, encodeURIComponent(`${Constants.TOKEN_RESPONSE_TYPE} ${Constants.ID_TOKEN_RESPONSE_TYPE}`)\n );\n }\n\n /**\n * add response_mode. defaults to query.\n * @param responseMode\n */\n addResponseMode(responseMode?: ResponseMode): void {\n this.parameters.set(\n AADServerParamKeys.RESPONSE_MODE,\n encodeURIComponent((responseMode) ? responseMode : ResponseMode.QUERY)\n );\n }\n\n /**\n * Add flag to indicate STS should attempt to use WAM if available\n */\n addNativeBroker(): void {\n this.parameters.set(\n AADServerParamKeys.NATIVE_BROKER,\n encodeURIComponent(\"1\")\n );\n }\n\n /**\n * add scopes. set addOidcScopes to false to prevent default scopes in non-user scenarios\n * @param scopeSet\n * @param addOidcScopes\n */\n addScopes(scopes: string[], addOidcScopes: boolean = true): void {\n const requestScopes = addOidcScopes ? [...scopes || [], ...OIDC_DEFAULT_SCOPES] : scopes || [];\n const scopeSet = new ScopeSet(requestScopes);\n this.parameters.set(AADServerParamKeys.SCOPE, encodeURIComponent(scopeSet.printScopes()));\n }\n\n /**\n * add clientId\n * @param clientId\n */\n addClientId(clientId: string): void {\n this.parameters.set(AADServerParamKeys.CLIENT_ID, encodeURIComponent(clientId));\n }\n\n /**\n * add redirect_uri\n * @param redirectUri\n */\n addRedirectUri(redirectUri: string): void {\n RequestValidator.validateRedirectUri(redirectUri);\n this.parameters.set(AADServerParamKeys.REDIRECT_URI, encodeURIComponent(redirectUri));\n }\n\n /**\n * add post logout redirectUri\n * @param redirectUri\n */\n addPostLogoutRedirectUri(redirectUri: string): void {\n RequestValidator.validateRedirectUri(redirectUri);\n this.parameters.set(AADServerParamKeys.POST_LOGOUT_URI, encodeURIComponent(redirectUri));\n }\n\n /**\n * add id_token_hint to logout request\n * @param idTokenHint\n */\n addIdTokenHint(idTokenHint: string): void {\n this.parameters.set(AADServerParamKeys.ID_TOKEN_HINT, encodeURIComponent(idTokenHint));\n }\n\n /**\n * add domain_hint\n * @param domainHint\n */\n addDomainHint(domainHint: string): void {\n this.parameters.set(SSOTypes.DOMAIN_HINT, encodeURIComponent(domainHint));\n }\n\n /**\n * add login_hint\n * @param loginHint\n */\n addLoginHint(loginHint: string): void {\n this.parameters.set(SSOTypes.LOGIN_HINT, encodeURIComponent(loginHint));\n }\n\n /**\n * Adds the CCS (Cache Credential Service) query parameter for login_hint\n * @param loginHint\n */\n addCcsUpn(loginHint: string): void {\n this.parameters.set(HeaderNames.CCS_HEADER, encodeURIComponent(`UPN:${loginHint}`));\n }\n\n /**\n * Adds the CCS (Cache Credential Service) query parameter for account object\n * @param loginHint\n */\n addCcsOid(clientInfo: ClientInfo): void {\n this.parameters.set(HeaderNames.CCS_HEADER, encodeURIComponent(`Oid:${clientInfo.uid}@${clientInfo.utid}`));\n }\n\n /**\n * add sid\n * @param sid\n */\n addSid(sid: string): void {\n this.parameters.set(SSOTypes.SID, encodeURIComponent(sid));\n }\n\n /**\n * add claims\n * @param claims\n */\n addClaims(claims?: string, clientCapabilities?: Array<string>): void {\n const mergedClaims = this.addClientCapabilitiesToClaims(claims, clientCapabilities);\n RequestValidator.validateClaims(mergedClaims);\n this.parameters.set(AADServerParamKeys.CLAIMS, encodeURIComponent(mergedClaims));\n }\n\n /**\n * add correlationId\n * @param correlationId\n */\n addCorrelationId(correlationId: string): void {\n this.parameters.set(AADServerParamKeys.CLIENT_REQUEST_ID, encodeURIComponent(correlationId));\n }\n\n /**\n * add library info query params\n * @param libraryInfo\n */\n addLibraryInfo(libraryInfo: LibraryInfo): void {\n // Telemetry Info\n this.parameters.set(AADServerParamKeys.X_CLIENT_SKU, libraryInfo.sku);\n this.parameters.set(AADServerParamKeys.X_CLIENT_VER, libraryInfo.version);\n if (libraryInfo.os) {\n this.parameters.set(AADServerParamKeys.X_CLIENT_OS, libraryInfo.os);\n }\n if (libraryInfo.cpu) {\n this.parameters.set(AADServerParamKeys.X_CLIENT_CPU, libraryInfo.cpu);\n }\n }\n\n /**\n * Add client telemetry parameters\n * @param appTelemetry\n */\n addApplicationTelemetry(appTelemetry: ApplicationTelemetry): void {\n if (appTelemetry?.appName) {\n this.parameters.set(AADServerParamKeys.X_APP_NAME, appTelemetry.appName);\n }\n\n if (appTelemetry?.appVersion) {\n this.parameters.set(AADServerParamKeys.X_APP_VER, appTelemetry.appVersion);\n }\n }\n\n /**\n * add prompt\n * @param prompt\n */\n addPrompt(prompt: string): void {\n RequestValidator.validatePrompt(prompt);\n this.parameters.set(`${AADServerParamKeys.PROMPT}`, encodeURIComponent(prompt));\n }\n\n /**\n * add state\n * @param state\n */\n addState(state: string): void {\n if (!StringUtils.isEmpty(state)) {\n this.parameters.set(AADServerParamKeys.STATE, encodeURIComponent(state));\n }\n }\n\n /**\n * add nonce\n * @param nonce\n */\n addNonce(nonce: string): void {\n this.parameters.set(AADServerParamKeys.NONCE, encodeURIComponent(nonce));\n }\n\n /**\n * add code_challenge and code_challenge_method\n * - throw if either of them are not passed\n * @param codeChallenge\n * @param codeChallengeMethod\n */\n addCodeChallengeParams(\n codeChallenge: string,\n codeChallengeMethod: string\n ): void {\n RequestValidator.validateCodeChallengeParams(codeChallenge, codeChallengeMethod);\n if (codeChallenge && codeChallengeMethod) {\n this.parameters.set(AADServerParamKeys.CODE_CHALLENGE, encodeURIComponent(codeChallenge));\n this.parameters.set(AADServerParamKeys.CODE_CHALLENGE_METHOD, encodeURIComponent(codeChallengeMethod));\n } else {\n throw ClientConfigurationError.createInvalidCodeChallengeParamsError();\n }\n }\n\n /**\n * add the `authorization_code` passed by the user to exchange for a token\n * @param code\n */\n addAuthorizationCode(code: string): void {\n this.parameters.set(AADServerParamKeys.CODE, encodeURIComponent(code));\n }\n\n /**\n * add the `authorization_code` passed by the user to exchange for a token\n * @param code\n */\n addDeviceCode(code: string): void {\n this.parameters.set(AADServerParamKeys.DEVICE_CODE, encodeURIComponent(code));\n }\n\n /**\n * add the `refreshToken` passed by the user\n * @param refreshToken\n */\n addRefreshToken(refreshToken: string): void {\n this.parameters.set(AADServerParamKeys.REFRESH_TOKEN, encodeURIComponent(refreshToken));\n }\n\n /**\n * add the `code_verifier` passed by the user to exchange for a token\n * @param codeVerifier\n */\n addCodeVerifier(codeVerifier: string): void {\n this.parameters.set(AADServerParamKeys.CODE_VERIFIER, encodeURIComponent(codeVerifier));\n }\n\n /**\n * add client_secret\n * @param clientSecret\n */\n addClientSecret(clientSecret: string): void {\n this.parameters.set(AADServerParamKeys.CLIENT_SECRET, encodeURIComponent(clientSecret));\n }\n\n /**\n * add clientAssertion for confidential client flows\n * @param clientAssertion\n */\n addClientAssertion(clientAssertion: string): void {\n if (!StringUtils.isEmpty(clientAssertion)) {\n this.parameters.set(AADServerParamKeys.CLIENT_ASSERTION, encodeURIComponent(clientAssertion));\n }\n }\n\n /**\n * add clientAssertionType for confidential client flows\n * @param clientAssertionType\n */\n addClientAssertionType(clientAssertionType: string): void {\n if (!StringUtils.isEmpty(clientAssertionType)) {\n this.parameters.set(AADServerParamKeys.CLIENT_ASSERTION_TYPE, encodeURIComponent(clientAssertionType));\n }\n }\n\n /**\n * add OBO assertion for confidential client flows\n * @param clientAssertion\n */\n addOboAssertion(oboAssertion: string): void {\n this.parameters.set(AADServerParamKeys.OBO_ASSERTION, encodeURIComponent(oboAssertion));\n }\n\n /**\n * add grant type\n * @param grantType\n */\n addRequestTokenUse(tokenUse: string): void {\n this.parameters.set(AADServerParamKeys.REQUESTED_TOKEN_USE, encodeURIComponent(tokenUse));\n }\n\n /**\n * add grant type\n * @param grantType\n */\n addGrantType(grantType: string): void {\n this.parameters.set(AADServerParamKeys.GRANT_TYPE, encodeURIComponent(grantType));\n }\n\n /**\n * add client info\n *\n */\n addClientInfo(): void {\n this.parameters.set(CLIENT_INFO, \"1\");\n }\n\n /**\n * add extraQueryParams\n * @param eQparams\n */\n addExtraQueryParameters(eQparams: StringDict): void {\n RequestValidator.sanitizeEQParams(eQparams, this.parameters);\n Object.keys(eQparams).forEach((key) => {\n this.parameters.set(key, eQparams[key]);\n });\n }\n\n addClientCapabilitiesToClaims(claims?: string, clientCapabilities?: Array<string>): string {\n let mergedClaims: object;\n\n // Parse provided claims into JSON object or initialize empty object\n if (!claims) {\n mergedClaims = {};\n } else {\n try {\n mergedClaims = JSON.parse(claims);\n } catch(e) {\n throw ClientConfigurationError.createInvalidClaimsRequestError();\n }\n }\n\n if (clientCapabilities && clientCapabilities.length > 0) {\n if (!mergedClaims.hasOwnProperty(ClaimsRequestKeys.ACCESS_TOKEN)){\n // Add access_token key to claims object\n mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN] = {};\n }\n\n // Add xms_cc claim with provided clientCapabilities to access_token key\n mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN][ClaimsRequestKeys.XMS_CC] = {\n values: clientCapabilities\n };\n }\n\n return JSON.stringify(mergedClaims);\n }\n\n /**\n * adds `username` for Password Grant flow\n * @param username\n */\n addUsername(username: string): void {\n this.parameters.set(PasswordGrantConstants.username, encodeURIComponent(username));\n }\n\n /**\n * adds `password` for Password Grant flow\n * @param password\n */\n addPassword(password: string): void {\n this.parameters.set(PasswordGrantConstants.password, encodeURIComponent(password));\n }\n\n /**\n * add pop_jwk to query params\n * @param cnfString\n */\n addPopToken(cnfString: string): void {\n if (!StringUtils.isEmpty(cnfString)) {\n this.parameters.set(AADServerParamKeys.TOKEN_TYPE, AuthenticationScheme.POP);\n this.parameters.set(AADServerParamKeys.REQ_CNF, encodeURIComponent(cnfString));\n }\n }\n\n /**\n * add SSH JWK and key ID to query params\n */\n addSshJwk(sshJwkString: string): void {\n if(!StringUtils.isEmpty(sshJwkString)) {\n this.parameters.set(AADServerParamKeys.TOKEN_TYPE, AuthenticationScheme.SSH);\n this.parameters.set(AADServerParamKeys.REQ_CNF, encodeURIComponent(sshJwkString));\n }\n }\n\n /**\n * add server telemetry fields\n * @param serverTelemetryManager\n */\n addServerTelemetry(serverTelemetryManager: ServerTelemetryManager): void {\n this.parameters.set(AADServerParamKeys.X_CLIENT_CURR_TELEM, serverTelemetryManager.generateCurrentRequestHeaderValue());\n this.parameters.set(AADServerParamKeys.X_CLIENT_LAST_TELEM, serverTelemetryManager.generateLastRequestHeaderValue());\n }\n\n /**\n * Adds parameter that indicates to the server that throttling is supported\n */\n addThrottling(): void {\n this.parameters.set(AADServerParamKeys.X_MS_LIB_CAPABILITY, ThrottlingConstants.X_MS_LIB_CAPABILITY_VALUE);\n }\n\n /**\n * Adds logout_hint parameter for \"silent\" logout which prevent server account picker\n */\n addLogoutHint(logoutHint: string): void {\n this.parameters.set(AADServerParamKeys.LOGOUT_HINT, encodeURIComponent(logoutHint));\n }\n\n /**\n * Utility to create a URL from the params map\n */\n createQueryString(): string {\n const queryParameterArray: Array<string> = new Array<string>();\n\n this.parameters.forEach((value, key) => {\n queryParameterArray.push(`${key}=${value}`);\n });\n\n return queryParameterArray.join(\"&\");\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { IdTokenEntity } from \"./IdTokenEntity\";\nimport { AccessTokenEntity } from \"./AccessTokenEntity\";\nimport { RefreshTokenEntity } from \"./RefreshTokenEntity\";\nimport { AccountEntity } from \"./AccountEntity\";\nimport { AppMetadataEntity } from \"./AppMetadataEntity\";\n\nexport class CacheRecord {\n account: AccountEntity | null;\n idToken: IdTokenEntity | null;\n accessToken: AccessTokenEntity | null;\n refreshToken: RefreshTokenEntity | null;\n appMetadata: AppMetadataEntity | null;\n\n constructor(accountEntity?: AccountEntity | null, idTokenEntity?: IdTokenEntity | null, accessTokenEntity?: AccessTokenEntity | null, refreshTokenEntity?: RefreshTokenEntity | null, appMetadataEntity?: AppMetadataEntity | null) {\n this.account = accountEntity || null;\n this.idToken = idTokenEntity || null;\n this.accessToken = accessTokenEntity || null;\n this.refreshToken = refreshTokenEntity || null;\n this.appMetadata = appMetadataEntity || null;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ISerializableTokenCache } from \"../interface/ISerializableTokenCache\";\n\n/**\n * This class instance helps track the memory changes facilitating\n * decisions to read from and write to the persistent cache\n */export class TokenCacheContext {\n /**\n * boolean indicating cache change\n */\n hasChanged: boolean;\n /**\n * serializable token cache interface\n */\n cache: ISerializableTokenCache;\n\n constructor(tokenCache: ISerializableTokenCache, hasChanged: boolean) {\n this.cache = tokenCache;\n this.hasChanged = hasChanged;\n }\n\n /**\n * boolean which indicates the changes in cache\n */\n get cacheHasChanged(): boolean {\n return this.hasChanged;\n }\n\n /**\n * function to retrieve the token cache\n */\n get tokenCache(): ISerializableTokenCache {\n return this.cache;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ServerAuthorizationTokenResponse } from \"./ServerAuthorizationTokenResponse\";\nimport { buildClientInfo} from \"../account/ClientInfo\";\nimport { ICrypto } from \"../crypto/ICrypto\";\nimport { ClientAuthError } from \"../error/ClientAuthError\";\nimport { StringUtils } from \"../utils/StringUtils\";\nimport { ServerAuthorizationCodeResponse } from \"./ServerAuthorizationCodeResponse\";\nimport { Logger } from \"../logger/Logger\";\nimport { ServerError } from \"../error/ServerError\";\nimport { AuthToken } from \"../account/AuthToken\";\nimport { ScopeSet } from \"../request/ScopeSet\";\nimport { AuthenticationResult } from \"./AuthenticationResult\";\nimport { AccountEntity } from \"../cache/entities/AccountEntity\";\nimport { Authority } from \"../authority/Authority\";\nimport { AuthorityType } from \"../authority/AuthorityType\";\nimport { IdTokenEntity } from \"../cache/entities/IdTokenEntity\";\nimport { AccessTokenEntity } from \"../cache/entities/AccessTokenEntity\";\nimport { RefreshTokenEntity } from \"../cache/entities/RefreshTokenEntity\";\nimport { InteractionRequiredAuthError } from \"../error/InteractionRequiredAuthError\";\nimport { CacheRecord } from \"../cache/entities/CacheRecord\";\nimport { CacheManager } from \"../cache/CacheManager\";\nimport { ProtocolUtils, RequestStateObject } from \"../utils/ProtocolUtils\";\nimport { AuthenticationScheme, Constants, THE_FAMILY_ID } from \"../utils/Constants\";\nimport { PopTokenGenerator } from \"../crypto/PopTokenGenerator\";\nimport { AppMetadataEntity } from \"../cache/entities/AppMetadataEntity\";\nimport { ICachePlugin } from \"../cache/interface/ICachePlugin\";\nimport { TokenCacheContext } from \"../cache/persistence/TokenCacheContext\";\nimport { ISerializableTokenCache } from \"../cache/interface/ISerializableTokenCache\";\nimport { AuthorizationCodePayload } from \"./AuthorizationCodePayload\";\nimport { BaseAuthRequest } from \"../request/BaseAuthRequest\";\n\n/**\n * Class that handles response parsing.\n */\nexport class ResponseHandler {\n private clientId: string;\n private cacheStorage: CacheManager;\n private cryptoObj: ICrypto;\n private logger: Logger;\n private homeAccountIdentifier: string;\n private serializableCache: ISerializableTokenCache | null;\n private persistencePlugin: ICachePlugin | null;\n\n constructor(clientId: string, cacheStorage: CacheManager, cryptoObj: ICrypto, logger: Logger, serializableCache: ISerializableTokenCache | null, persistencePlugin: ICachePlugin | null) {\n this.clientId = clientId;\n this.cacheStorage = cacheStorage;\n this.cryptoObj = cryptoObj;\n this.logger = logger;\n this.serializableCache = serializableCache;\n this.persistencePlugin = persistencePlugin;\n }\n\n /**\n * Function which validates server authorization code response.\n * @param serverResponseHash\n * @param cachedState\n * @param cryptoObj\n */\n validateServerAuthorizationCodeResponse(serverResponseHash: ServerAuthorizationCodeResponse, cachedState: string, cryptoObj: ICrypto): void {\n\n if (!serverResponseHash.state || !cachedState) {\n throw !serverResponseHash.state ? ClientAuthError.createStateNotFoundError(\"Server State\") : ClientAuthError.createStateNotFoundError(\"Cached State\");\n }\n\n if (decodeURIComponent(serverResponseHash.state) !== decodeURIComponent(cachedState)) {\n throw ClientAuthError.createStateMismatchError();\n }\n\n // Check for error\n if (serverResponseHash.error || serverResponseHash.error_description || serverResponseHash.suberror) {\n if (InteractionRequiredAuthError.isInteractionRequiredError(serverResponseHash.error, serverResponseHash.error_description, serverResponseHash.suberror)) {\n throw new InteractionRequiredAuthError(serverResponseHash.error || Constants.EMPTY_STRING, serverResponseHash.error_description, serverResponseHash.suberror);\n }\n\n throw new ServerError(serverResponseHash.error || Constants.EMPTY_STRING, serverResponseHash.error_description, serverResponseHash.suberror);\n }\n\n if (serverResponseHash.client_info) {\n buildClientInfo(serverResponseHash.client_info, cryptoObj);\n }\n }\n\n /**\n * Function which validates server authorization token response.\n * @param serverResponse\n */\n validateTokenResponse(serverResponse: ServerAuthorizationTokenResponse): void {\n // Check for error\n if (serverResponse.error || serverResponse.error_description || serverResponse.suberror) {\n if (InteractionRequiredAuthError.isInteractionRequiredError(serverResponse.error, serverResponse.error_description, serverResponse.suberror)) {\n throw new InteractionRequiredAuthError(serverResponse.error, serverResponse.error_description, serverResponse.suberror);\n }\n\n const errString = `${serverResponse.error_codes} - [${serverResponse.timestamp}]: ${serverResponse.error_description} - Correlation ID: ${serverResponse.correlation_id} - Trace ID: ${serverResponse.trace_id}`;\n throw new ServerError(serverResponse.error, errString, serverResponse.suberror);\n }\n }\n\n /**\n * Returns a constructed token response based on given string. Also manages the cache updates and cleanups.\n * @param serverTokenResponse\n * @param authority\n */\n async handleServerTokenResponse(\n serverTokenResponse: ServerAuthorizationTokenResponse,\n authority: Authority,\n reqTimestamp: number,\n request: BaseAuthRequest,\n authCodePayload?: AuthorizationCodePayload,\n userAssertionHash?: string,\n handlingRefreshTokenResponse?: boolean,\n forceCacheRefreshTokenResponse?: boolean): Promise<AuthenticationResult> {\n\n // create an idToken object (not entity)\n let idTokenObj: AuthToken | undefined;\n if (serverTokenResponse.id_token) {\n idTokenObj = new AuthToken(serverTokenResponse.id_token || Constants.EMPTY_STRING, this.cryptoObj);\n\n // token nonce check (TODO: Add a warning if no nonce is given?)\n if (authCodePayload && !StringUtils.isEmpty(authCodePayload.nonce)) {\n if (idTokenObj.claims.nonce !== authCodePayload.nonce) {\n throw ClientAuthError.createNonceMismatchError();\n }\n }\n }\n\n // generate homeAccountId\n this.homeAccountIdentifier = AccountEntity.generateHomeAccountId(serverTokenResponse.client_info || Constants.EMPTY_STRING, authority.authorityType, this.logger, this.cryptoObj, idTokenObj);\n\n // save the response tokens\n let requestStateObj: RequestStateObject | undefined;\n if (!!authCodePayload && !!authCodePayload.state) {\n requestStateObj = ProtocolUtils.parseRequestState(this.cryptoObj, authCodePayload.state);\n }\n\n // Add keyId from request to serverTokenResponse if defined\n serverTokenResponse.key_id = serverTokenResponse.key_id || request.sshKid || undefined;\n\n const cacheRecord = this.generateCacheRecord(serverTokenResponse, authority, reqTimestamp, request, idTokenObj, userAssertionHash, authCodePayload);\n let cacheContext;\n try {\n if (this.persistencePlugin && this.serializableCache) {\n this.logger.verbose(\"Persistence enabled, calling beforeCacheAccess\");\n cacheContext = new TokenCacheContext(this.serializableCache, true);\n await this.persistencePlugin.beforeCacheAccess(cacheContext);\n }\n /*\n * When saving a refreshed tokens to the cache, it is expected that the account that was used is present in the cache.\n * If not present, we should return null, as it's the case that another application called removeAccount in between\n * the calls to getAllAccounts and acquireTokenSilent. We should not overwrite that removal, unless explicitly flagged by\n * the developer, as in the case of refresh token flow used in ADAL Node to MSAL Node migration.\n */\n if (handlingRefreshTokenResponse && !forceCacheRefreshTokenResponse && cacheRecord.account) {\n const key = cacheRecord.account.generateAccountKey();\n const account = this.cacheStorage.getAccount(key);\n if (!account) {\n this.logger.warning(\"Account used to refresh tokens not in persistence, refreshed tokens will not be stored in the cache\");\n return ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenObj, requestStateObj, undefined);\n }\n }\n await this.cacheStorage.saveCacheRecord(cacheRecord);\n } finally {\n if (this.persistencePlugin && this.serializableCache && cacheContext) {\n this.logger.verbose(\"Persistence enabled, calling afterCacheAccess\");\n await this.persistencePlugin.afterCacheAccess(cacheContext);\n }\n }\n return ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenObj, requestStateObj, serverTokenResponse.spa_code);\n }\n\n /**\n * Generates CacheRecord\n * @param serverTokenResponse\n * @param idTokenObj\n * @param authority\n */\n private generateCacheRecord(serverTokenResponse: ServerAuthorizationTokenResponse, authority: Authority, reqTimestamp: number, request: BaseAuthRequest, idTokenObj?: AuthToken, userAssertionHash?: string, authCodePayload?: AuthorizationCodePayload): CacheRecord {\n const env = authority.getPreferredCache();\n if (StringUtils.isEmpty(env)) {\n throw ClientAuthError.createInvalidCacheEnvironmentError();\n }\n\n // IdToken: non AAD scenarios can have empty realm\n let cachedIdToken: IdTokenEntity | undefined;\n let cachedAccount: AccountEntity | undefined;\n if (!StringUtils.isEmpty(serverTokenResponse.id_token) && !!idTokenObj) {\n cachedIdToken = IdTokenEntity.createIdTokenEntity(\n this.homeAccountIdentifier,\n env,\n serverTokenResponse.id_token || Constants.EMPTY_STRING,\n this.clientId,\n idTokenObj.claims.tid || Constants.EMPTY_STRING,\n );\n\n cachedAccount = this.generateAccountEntity(\n serverTokenResponse,\n idTokenObj,\n authority,\n authCodePayload\n );\n }\n\n // AccessToken\n let cachedAccessToken: AccessTokenEntity | null = null;\n if (!StringUtils.isEmpty(serverTokenResponse.access_token)) {\n\n // If scopes not returned in server response, use request scopes\n const responseScopes = serverTokenResponse.scope ? ScopeSet.fromString(serverTokenResponse.scope) : new ScopeSet(request.scopes || []);\n\n /*\n * Use timestamp calculated before request\n * Server may return timestamps as strings, parse to numbers if so.\n */\n const expiresIn: number = (typeof serverTokenResponse.expires_in === \"string\" ? parseInt(serverTokenResponse.expires_in, 10) : serverTokenResponse.expires_in) || 0;\n const extExpiresIn: number = (typeof serverTokenResponse.ext_expires_in === \"string\" ? parseInt(serverTokenResponse.ext_expires_in, 10) : serverTokenResponse.ext_expires_in) || 0;\n const refreshIn: number | undefined = (typeof serverTokenResponse.refresh_in === \"string\" ? parseInt(serverTokenResponse.refresh_in, 10) : serverTokenResponse.refresh_in) || undefined;\n const tokenExpirationSeconds = reqTimestamp + expiresIn;\n const extendedTokenExpirationSeconds = tokenExpirationSeconds + extExpiresIn;\n const refreshOnSeconds = refreshIn && refreshIn > 0 ? reqTimestamp + refreshIn : undefined;\n\n // non AAD scenarios can have empty realm\n cachedAccessToken = AccessTokenEntity.createAccessTokenEntity(\n this.homeAccountIdentifier,\n env,\n serverTokenResponse.access_token || Constants.EMPTY_STRING,\n this.clientId,\n idTokenObj ? idTokenObj.claims.tid || Constants.EMPTY_STRING : authority.tenant,\n responseScopes.printScopes(),\n tokenExpirationSeconds,\n extendedTokenExpirationSeconds,\n this.cryptoObj,\n refreshOnSeconds,\n serverTokenResponse.token_type,\n userAssertionHash,\n serverTokenResponse.key_id,\n request.claims,\n request.requestedClaimsHash\n );\n }\n\n // refreshToken\n let cachedRefreshToken: RefreshTokenEntity | null = null;\n if (!StringUtils.isEmpty(serverTokenResponse.refresh_token)) {\n cachedRefreshToken = RefreshTokenEntity.createRefreshTokenEntity(\n this.homeAccountIdentifier,\n env,\n serverTokenResponse.refresh_token || Constants.EMPTY_STRING,\n this.clientId,\n serverTokenResponse.foci,\n userAssertionHash\n );\n }\n\n // appMetadata\n let cachedAppMetadata: AppMetadataEntity | null = null;\n if (!StringUtils.isEmpty(serverTokenResponse.foci)) {\n cachedAppMetadata = AppMetadataEntity.createAppMetadataEntity(this.clientId, env, serverTokenResponse.foci);\n }\n\n return new CacheRecord(cachedAccount, cachedIdToken, cachedAccessToken, cachedRefreshToken, cachedAppMetadata);\n }\n\n /**\n * Generate Account\n * @param serverTokenResponse\n * @param idToken\n * @param authority\n */\n private generateAccountEntity(serverTokenResponse: ServerAuthorizationTokenResponse, idToken: AuthToken, authority: Authority, authCodePayload?: AuthorizationCodePayload): AccountEntity {\n const authorityType = authority.authorityType;\n const cloudGraphHostName = authCodePayload ? authCodePayload.cloud_graph_host_name : Constants.EMPTY_STRING;\n const msGraphhost = authCodePayload ? authCodePayload.msgraph_host : Constants.EMPTY_STRING;\n\n // ADFS does not require client_info in the response\n if (authorityType === AuthorityType.Adfs) {\n this.logger.verbose(\"Authority type is ADFS, creating ADFS account\");\n return AccountEntity.createGenericAccount(this.homeAccountIdentifier, idToken, authority, cloudGraphHostName, msGraphhost);\n }\n\n // This fallback applies to B2C as well as they fall under an AAD account type.\n if (StringUtils.isEmpty(serverTokenResponse.client_info) && authority.protocolMode === \"AAD\") {\n throw ClientAuthError.createClientInfoEmptyError();\n }\n\n return serverTokenResponse.client_info ?\n AccountEntity.createAccount(serverTokenResponse.client_info, this.homeAccountIdentifier, idToken, authority, cloudGraphHostName, msGraphhost) :\n AccountEntity.createGenericAccount(this.homeAccountIdentifier, idToken, authority, cloudGraphHostName, msGraphhost);\n }\n\n /**\n * Creates an @AuthenticationResult from @CacheRecord , @IdToken , and a boolean that states whether or not the result is from cache.\n *\n * Optionally takes a state string that is set as-is in the response.\n *\n * @param cacheRecord\n * @param idTokenObj\n * @param fromTokenCache\n * @param stateString\n */\n static async generateAuthenticationResult(\n cryptoObj: ICrypto,\n authority: Authority,\n cacheRecord: CacheRecord,\n fromTokenCache: boolean,\n request: BaseAuthRequest,\n idTokenObj?: AuthToken,\n requestState?: RequestStateObject,\n code?: string,\n ): Promise<AuthenticationResult> {\n let accessToken: string = Constants.EMPTY_STRING;\n let responseScopes: Array<string> = [];\n let expiresOn: Date | null = null;\n let extExpiresOn: Date | undefined;\n let familyId: string = Constants.EMPTY_STRING;\n\n if (cacheRecord.accessToken) {\n if (cacheRecord.accessToken.tokenType === AuthenticationScheme.POP) {\n const popTokenGenerator: PopTokenGenerator = new PopTokenGenerator(cryptoObj);\n const { secret, keyId } = cacheRecord.accessToken;\n\n if (!keyId) {\n throw ClientAuthError.createKeyIdMissingError();\n }\n\n accessToken = await popTokenGenerator.signPopToken(secret, keyId, request);\n } else {\n accessToken = cacheRecord.accessToken.secret;\n }\n responseScopes = ScopeSet.fromString(cacheRecord.accessToken.target).asArray();\n expiresOn = new Date(Number(cacheRecord.accessToken.expiresOn) * 1000);\n extExpiresOn = new Date(Number(cacheRecord.accessToken.extendedExpiresOn) * 1000);\n }\n\n if (cacheRecord.appMetadata) {\n familyId = cacheRecord.appMetadata.familyId === THE_FAMILY_ID ? THE_FAMILY_ID : Constants.EMPTY_STRING;\n }\n const uid = idTokenObj?.claims.oid || idTokenObj?.claims.sub || Constants.EMPTY_STRING;\n const tid = idTokenObj?.claims.tid || Constants.EMPTY_STRING;\n\n return {\n authority: authority.canonicalAuthority,\n uniqueId: uid,\n tenantId: tid,\n scopes: responseScopes,\n account: cacheRecord.account ? cacheRecord.account.getAccountInfo() : null,\n idToken: idTokenObj ? idTokenObj.rawToken : Constants.EMPTY_STRING,\n idTokenClaims: idTokenObj ? idTokenObj.claims : {},\n accessToken: accessToken,\n fromCache: fromTokenCache,\n expiresOn: expiresOn,\n correlationId: request.correlationId,\n extExpiresOn: extExpiresOn,\n familyId: familyId,\n tokenType: cacheRecord.accessToken?.tokenType || Constants.EMPTY_STRING,\n state: requestState ? requestState.userRequestState : Constants.EMPTY_STRING,\n cloudGraphHostName: cacheRecord.account?.cloudGraphHostName || Constants.EMPTY_STRING,\n msGraphHost: cacheRecord.account?.msGraphHost || Constants.EMPTY_STRING,\n code,\n fromNativeBroker: false\n };\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { BaseClient } from \"./BaseClient\";\nimport { CommonAuthorizationUrlRequest } from \"../request/CommonAuthorizationUrlRequest\";\nimport { CommonAuthorizationCodeRequest } from \"../request/CommonAuthorizationCodeRequest\";\nimport { Authority } from \"../authority/Authority\";\nimport { RequestParameterBuilder } from \"../request/RequestParameterBuilder\";\nimport { GrantType, AuthenticationScheme, PromptValue, Separators, AADServerParamKeys } from \"../utils/Constants\";\nimport { ClientConfiguration } from \"../config/ClientConfiguration\";\nimport { ServerAuthorizationTokenResponse } from \"../response/ServerAuthorizationTokenResponse\";\nimport { NetworkResponse } from \"../network/NetworkManager\";\nimport { ResponseHandler } from \"../response/ResponseHandler\";\nimport { AuthenticationResult } from \"../response/AuthenticationResult\";\nimport { StringUtils } from \"../utils/StringUtils\";\nimport { ClientAuthError } from \"../error/ClientAuthError\";\nimport { UrlString } from \"../url/UrlString\";\nimport { ServerAuthorizationCodeResponse } from \"../response/ServerAuthorizationCodeResponse\";\nimport { CommonEndSessionRequest } from \"../request/CommonEndSessionRequest\";\nimport { PopTokenGenerator } from \"../crypto/PopTokenGenerator\";\nimport { RequestThumbprint } from \"../network/RequestThumbprint\";\nimport { AuthorizationCodePayload } from \"../response/AuthorizationCodePayload\";\nimport { TimeUtils } from \"../utils/TimeUtils\";\nimport { AccountInfo } from \"../account/AccountInfo\";\nimport { buildClientInfoFromHomeAccountId, buildClientInfo } from \"../account/ClientInfo\";\nimport { CcsCredentialType, CcsCredential } from \"../account/CcsCredential\";\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\nimport { RequestValidator } from \"../request/RequestValidator\";\n\n/**\n * Oauth2.0 Authorization Code client\n */\nexport class AuthorizationCodeClient extends BaseClient {\n // Flag to indicate if client is for hybrid spa auth code redemption\n protected includeRedirectUri: boolean = true;\n\n constructor(configuration: ClientConfiguration) {\n super(configuration);\n }\n\n /**\n * Creates the URL of the authorization request letting the user input credentials and consent to the\n * application. The URL target the /authorize endpoint of the authority configured in the\n * application object.\n *\n * Once the user inputs their credentials and consents, the authority will send a response to the redirect URI\n * sent in the request and should contain an authorization code, which can then be used to acquire tokens via\n * acquireToken(AuthorizationCodeRequest)\n * @param request\n */\n async getAuthCodeUrl(request: CommonAuthorizationUrlRequest): Promise<string> {\n const queryString = await this.createAuthCodeUrlQueryString(request);\n\n return UrlString.appendQueryString(this.authority.authorizationEndpoint, queryString);\n }\n\n /**\n * API to acquire a token in exchange of 'authorization_code` acquired by the user in the first leg of the\n * authorization_code_grant\n * @param request\n */\n async acquireToken(request: CommonAuthorizationCodeRequest, authCodePayload?: AuthorizationCodePayload): Promise<AuthenticationResult> {\n this.logger.info(\"in acquireToken call\");\n if (!request || StringUtils.isEmpty(request.code)) {\n throw ClientAuthError.createTokenRequestCannotBeMadeError();\n }\n\n const reqTimestamp = TimeUtils.nowSeconds();\n const response = await this.executeTokenRequest(this.authority, request);\n\n const responseHandler = new ResponseHandler(\n this.config.authOptions.clientId,\n this.cacheManager,\n this.cryptoUtils,\n this.logger,\n this.config.serializableCache,\n this.config.persistencePlugin\n );\n\n // Validate response. This function throws a server error if an error is returned by the server.\n responseHandler.validateTokenResponse(response.body);\n return await responseHandler.handleServerTokenResponse(response.body, this.authority, reqTimestamp, request, authCodePayload);\n }\n\n /**\n * Handles the hash fragment response from public client code request. Returns a code response used by\n * the client to exchange for a token in acquireToken.\n * @param hashFragment\n */\n handleFragmentResponse(hashFragment: string, cachedState: string): AuthorizationCodePayload {\n // Handle responses.\n const responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, null, null);\n\n // Deserialize hash fragment response parameters.\n const hashUrlString = new UrlString(hashFragment);\n // Deserialize hash fragment response parameters.\n const serverParams: ServerAuthorizationCodeResponse = UrlString.getDeserializedHash(hashUrlString.getHash());\n\n // Get code response\n responseHandler.validateServerAuthorizationCodeResponse(serverParams, cachedState, this.cryptoUtils);\n\n // throw when there is no auth code in the response\n if (!serverParams.code) {\n throw ClientAuthError.createNoAuthCodeInServerResponseError();\n }\n return {\n ...serverParams,\n // Code param is optional in ServerAuthorizationCodeResponse but required in AuthorizationCodePaylod\n code: serverParams.code\n };\n }\n\n /**\n * Used to log out the current user, and redirect the user to the postLogoutRedirectUri.\n * Default behaviour is to redirect the user to `window.location.href`.\n * @param authorityUri\n */\n getLogoutUri(logoutRequest: CommonEndSessionRequest): string {\n // Throw error if logoutRequest is null/undefined\n if (!logoutRequest) {\n throw ClientConfigurationError.createEmptyLogoutRequestError();\n }\n const queryString = this.createLogoutUrlQueryString(logoutRequest);\n\n // Construct logout URI\n return UrlString.appendQueryString(this.authority.endSessionEndpoint, queryString);\n }\n\n /**\n * Executes POST request to token endpoint\n * @param authority\n * @param request\n */\n private async executeTokenRequest(authority: Authority, request: CommonAuthorizationCodeRequest): Promise<NetworkResponse<ServerAuthorizationTokenResponse>> {\n const thumbprint: RequestThumbprint = {\n clientId: this.config.authOptions.clientId,\n authority: authority.canonicalAuthority,\n scopes: request.scopes,\n claims: request.claims,\n authenticationScheme: request.authenticationScheme,\n resourceRequestMethod: request.resourceRequestMethod,\n resourceRequestUri: request.resourceRequestUri,\n shrClaims: request.shrClaims,\n sshKid: request.sshKid\n };\n\n const requestBody = await this.createTokenRequestBody(request);\n const queryParameters = this.createTokenQueryParameters(request);\n let ccsCredential: CcsCredential | undefined = undefined;\n if (request.clientInfo) {\n try {\n const clientInfo = buildClientInfo(request.clientInfo, this.cryptoUtils);\n ccsCredential = {\n credential: `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`,\n type: CcsCredentialType.HOME_ACCOUNT_ID\n };\n } catch (e) {\n this.logger.verbose(\"Could not parse client info for CCS Header: \" + e);\n }\n }\n const headers: Record<string, string> = this.createTokenRequestHeaders(ccsCredential || request.ccsCredential);\n const endpoint = StringUtils.isEmpty(queryParameters) ? authority.tokenEndpoint : `${authority.tokenEndpoint}?${queryParameters}`;\n\n return this.executePostToTokenEndpoint(endpoint, requestBody, headers, thumbprint);\n }\n\n /**\n * Creates query string for the /token request\n * @param request\n */\n private createTokenQueryParameters(request: CommonAuthorizationCodeRequest): string {\n const parameterBuilder = new RequestParameterBuilder();\n\n if (request.tokenQueryParameters) {\n parameterBuilder.addExtraQueryParameters(request.tokenQueryParameters);\n }\n\n return parameterBuilder.createQueryString();\n }\n\n /**\n * Generates a map for all the params to be sent to the service\n * @param request\n */\n private async createTokenRequestBody(request: CommonAuthorizationCodeRequest): Promise<string> {\n const parameterBuilder = new RequestParameterBuilder();\n\n parameterBuilder.addClientId(this.config.authOptions.clientId);\n\n /*\n * For hybrid spa flow, there will be a code but no verifier\n * In this scenario, don't include redirect uri as auth code will not be bound to redirect URI\n */\n if (!this.includeRedirectUri) {\n // Just validate\n RequestValidator.validateRedirectUri(request.redirectUri);\n } else {\n // Validate and include redirect uri\n parameterBuilder.addRedirectUri(request.redirectUri);\n }\n\n // Add scope array, parameter builder will add default scopes and dedupe\n parameterBuilder.addScopes(request.scopes);\n\n // add code: user set, not validated\n parameterBuilder.addAuthorizationCode(request.code);\n\n // Add library metadata\n parameterBuilder.addLibraryInfo(this.config.libraryInfo);\n parameterBuilder.addApplicationTelemetry(this.config.telemetry.application);\n parameterBuilder.addThrottling();\n\n if (this.serverTelemetryManager) {\n parameterBuilder.addServerTelemetry(this.serverTelemetryManager);\n }\n\n // add code_verifier if passed\n if (request.codeVerifier) {\n parameterBuilder.addCodeVerifier(request.codeVerifier);\n }\n\n if (this.config.clientCredentials.clientSecret) {\n parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret);\n }\n\n if (this.config.clientCredentials.clientAssertion) {\n const clientAssertion = this.config.clientCredentials.clientAssertion;\n parameterBuilder.addClientAssertion(clientAssertion.assertion);\n parameterBuilder.addClientAssertionType(clientAssertion.assertionType);\n }\n\n parameterBuilder.addGrantType(GrantType.AUTHORIZATION_CODE_GRANT);\n parameterBuilder.addClientInfo();\n\n if (request.authenticationScheme === AuthenticationScheme.POP) {\n const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils);\n const reqCnfData = await popTokenGenerator.generateCnf(request);\n // SPA PoP requires full Base64Url encoded req_cnf string (unhashed)\n parameterBuilder.addPopToken(reqCnfData.reqCnfString);\n } else if (request.authenticationScheme === AuthenticationScheme.SSH) {\n if(request.sshJwk) {\n parameterBuilder.addSshJwk(request.sshJwk);\n } else {\n throw ClientConfigurationError.createMissingSshJwkError();\n }\n }\n\n const correlationId = request.correlationId || this.config.cryptoInterface.createNewGuid();\n parameterBuilder.addCorrelationId(correlationId);\n\n if (!StringUtils.isEmptyObj(request.claims) || this.config.authOptions.clientCapabilities && this.config.authOptions.clientCapabilities.length > 0) {\n parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\n }\n\n let ccsCred: CcsCredential | undefined = undefined;\n if (request.clientInfo) {\n try {\n const clientInfo = buildClientInfo(request.clientInfo, this.cryptoUtils);\n ccsCred = {\n credential: `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`,\n type: CcsCredentialType.HOME_ACCOUNT_ID\n };\n } catch (e) {\n this.logger.verbose(\"Could not parse client info for CCS Header: \" + e);\n }\n } else {\n ccsCred = request.ccsCredential;\n }\n\n // Adds these as parameters in the request instead of headers to prevent CORS preflight request\n if (this.config.systemOptions.preventCorsPreflight && ccsCred) {\n switch (ccsCred.type) {\n case CcsCredentialType.HOME_ACCOUNT_ID:\n try {\n const clientInfo = buildClientInfoFromHomeAccountId(ccsCred.credential);\n parameterBuilder.addCcsOid(clientInfo);\n } catch (e) {\n this.logger.verbose(\"Could not parse home account ID for CCS Header: \" + e);\n }\n break;\n case CcsCredentialType.UPN:\n parameterBuilder.addCcsUpn(ccsCred.credential);\n break;\n }\n }\n\n if (request.tokenBodyParameters) {\n parameterBuilder.addExtraQueryParameters(request.tokenBodyParameters);\n }\n\n // Add hybrid spa parameters if not already provided\n if (request.enableSpaAuthorizationCode && (!request.tokenBodyParameters || !request.tokenBodyParameters[AADServerParamKeys.RETURN_SPA_CODE])) {\n parameterBuilder.addExtraQueryParameters({\n [AADServerParamKeys.RETURN_SPA_CODE]: \"1\"\n });\n }\n\n return parameterBuilder.createQueryString();\n }\n\n /**\n * This API validates the `AuthorizationCodeUrlRequest` and creates a URL\n * @param request\n */\n private async createAuthCodeUrlQueryString(request: CommonAuthorizationUrlRequest): Promise<string> {\n const parameterBuilder = new RequestParameterBuilder();\n\n parameterBuilder.addClientId(this.config.authOptions.clientId);\n\n const requestScopes = [...request.scopes || [], ...request.extraScopesToConsent || []];\n parameterBuilder.addScopes(requestScopes);\n\n // validate the redirectUri (to be a non null value)\n parameterBuilder.addRedirectUri(request.redirectUri);\n\n // generate the correlationId if not set by the user and add\n const correlationId = request.correlationId || this.config.cryptoInterface.createNewGuid();\n parameterBuilder.addCorrelationId(correlationId);\n\n // add response_mode. If not passed in it defaults to query.\n parameterBuilder.addResponseMode(request.responseMode);\n\n // add response_type = code\n parameterBuilder.addResponseTypeCode();\n\n // add library info parameters\n parameterBuilder.addLibraryInfo(this.config.libraryInfo);\n parameterBuilder.addApplicationTelemetry(this.config.telemetry.application);\n\n // add client_info=1\n parameterBuilder.addClientInfo();\n\n if (request.codeChallenge && request.codeChallengeMethod) {\n parameterBuilder.addCodeChallengeParams(request.codeChallenge, request.codeChallengeMethod);\n }\n\n if (request.prompt) {\n parameterBuilder.addPrompt(request.prompt);\n }\n\n if (request.domainHint) {\n parameterBuilder.addDomainHint(request.domainHint);\n }\n\n // Add sid or loginHint with preference for login_hint claim (in request) -> sid -> loginHint (upn/email) -> username of AccountInfo object\n if (request.prompt !== PromptValue.SELECT_ACCOUNT) {\n // AAD will throw if prompt=select_account is passed with an account hint\n if (request.sid && request.prompt === PromptValue.NONE) {\n // SessionID is only used in silent calls\n this.logger.verbose(\"createAuthCodeUrlQueryString: Prompt is none, adding sid from request\");\n parameterBuilder.addSid(request.sid);\n } else if (request.account) {\n const accountSid = this.extractAccountSid(request.account);\n const accountLoginHintClaim = this.extractLoginHint(request.account);\n // If login_hint claim is present, use it over sid/username\n if (accountLoginHintClaim) {\n this.logger.verbose(\"createAuthCodeUrlQueryString: login_hint claim present on account\");\n parameterBuilder.addLoginHint(accountLoginHintClaim);\n try {\n const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId);\n parameterBuilder.addCcsOid(clientInfo);\n } catch (e) {\n this.logger.verbose(\"createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header\");\n }\n } else if (accountSid && request.prompt === PromptValue.NONE) {\n /*\n * If account and loginHint are provided, we will check account first for sid before adding loginHint\n * SessionId is only used in silent calls\n */\n this.logger.verbose(\"createAuthCodeUrlQueryString: Prompt is none, adding sid from account\");\n parameterBuilder.addSid(accountSid);\n try {\n const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId);\n parameterBuilder.addCcsOid(clientInfo);\n } catch (e) {\n this.logger.verbose(\"createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header\");\n }\n } else if (request.loginHint) {\n this.logger.verbose(\"createAuthCodeUrlQueryString: Adding login_hint from request\");\n parameterBuilder.addLoginHint(request.loginHint);\n parameterBuilder.addCcsUpn(request.loginHint);\n } else if (request.account.username) {\n // Fallback to account username if provided\n this.logger.verbose(\"createAuthCodeUrlQueryString: Adding login_hint from account\");\n parameterBuilder.addLoginHint(request.account.username);\n try {\n const clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId);\n parameterBuilder.addCcsOid(clientInfo);\n } catch (e) {\n this.logger.verbose(\"createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header\");\n }\n }\n } else if (request.loginHint) {\n this.logger.verbose(\"createAuthCodeUrlQueryString: No account, adding login_hint from request\");\n parameterBuilder.addLoginHint(request.loginHint);\n parameterBuilder.addCcsUpn(request.loginHint);\n }\n } else {\n this.logger.verbose(\"createAuthCodeUrlQueryString: Prompt is select_account, ignoring account hints\");\n }\n\n if (request.nonce) {\n parameterBuilder.addNonce(request.nonce);\n }\n\n if (request.state) {\n parameterBuilder.addState(request.state);\n }\n\n if (!StringUtils.isEmpty(request.claims) || this.config.authOptions.clientCapabilities && this.config.authOptions.clientCapabilities.length > 0) {\n parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\n }\n\n if (request.extraQueryParameters) {\n parameterBuilder.addExtraQueryParameters(request.extraQueryParameters);\n }\n\n if (request.nativeBroker) {\n // signal ests that this is a WAM call\n parameterBuilder.addNativeBroker();\n\n // pass the req_cnf for POP\n if (request.authenticationScheme === AuthenticationScheme.POP) {\n const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils);\n // to reduce the URL length, it is recommended to send the hash of the req_cnf instead of the whole string\n const reqCnfData = await popTokenGenerator.generateCnf(request);\n parameterBuilder.addPopToken(reqCnfData.reqCnfHash);\n }\n }\n\n return parameterBuilder.createQueryString();\n }\n\n /**\n * This API validates the `EndSessionRequest` and creates a URL\n * @param request\n */\n private createLogoutUrlQueryString(request: CommonEndSessionRequest): string {\n const parameterBuilder = new RequestParameterBuilder();\n\n if (request.postLogoutRedirectUri) {\n parameterBuilder.addPostLogoutRedirectUri(request.postLogoutRedirectUri);\n }\n\n if (request.correlationId) {\n parameterBuilder.addCorrelationId(request.correlationId);\n }\n\n if (request.idTokenHint) {\n parameterBuilder.addIdTokenHint(request.idTokenHint);\n }\n\n if(request.state) {\n parameterBuilder.addState(request.state);\n }\n\n if (request.logoutHint) {\n parameterBuilder.addLogoutHint(request.logoutHint);\n }\n\n if (request.extraQueryParameters) {\n parameterBuilder.addExtraQueryParameters(request.extraQueryParameters);\n }\n\n return parameterBuilder.createQueryString();\n }\n\n /**\n * Helper to get sid from account. Returns null if idTokenClaims are not present or sid is not present.\n * @param account\n */\n private extractAccountSid(account: AccountInfo): string | null {\n return account.idTokenClaims?.sid || null;\n }\n\n private extractLoginHint(account: AccountInfo): string | null {\n return account.idTokenClaims?.login_hint || null;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Tenant Discovery Response which contains the relevant OAuth endpoints and data needed for authentication and authorization.\n */\nexport type OpenIdConfigResponse = {\n authorization_endpoint: string;\n token_endpoint: string;\n end_session_endpoint?: string;\n issuer: string;\n jwks_uri: string;\n};\n\nexport function isOpenIdConfigResponse(response: object): boolean {\n return (\n response.hasOwnProperty(\"authorization_endpoint\") &&\n response.hasOwnProperty(\"token_endpoint\") && \n response.hasOwnProperty(\"issuer\") &&\n response.hasOwnProperty(\"jwks_uri\")\n );\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport const rawMetdataJSON = {\"endpointMetadata\":{\"https://login.microsoftonline.com/common/\":{\"token_endpoint\":\"https://login.microsoftonline.com/common/oauth2/v2.0/token\",\"token_endpoint_auth_methods_supported\":[\"client_secret_post\",\"private_key_jwt\",\"client_secret_basic\"],\"jwks_uri\":\"https://login.microsoftonline.com/common/discovery/v2.0/keys\",\"response_modes_supported\":[\"query\",\"fragment\",\"form_post\"],\"subject_types_supported\":[\"pairwise\"],\"id_token_signing_alg_values_supported\":[\"RS256\"],\"response_types_supported\":[\"code\",\"id_token\",\"code id_token\",\"id_token token\"],\"scopes_supported\":[\"openid\",\"profile\",\"email\",\"offline_access\"],\"issuer\":\"https://login.microsoftonline.com/{tenantid}/v2.0\",\"request_uri_parameter_supported\":false,\"userinfo_endpoint\":\"https://graph.microsoft.com/oidc/userinfo\",\"authorization_endpoint\":\"https://login.microsoftonline.com/common/oauth2/v2.0/authorize\",\"device_authorization_endpoint\":\"https://login.microsoftonline.com/common/oauth2/v2.0/devicecode\",\"http_logout_supported\":true,\"frontchannel_logout_supported\":true,\"end_session_endpoint\":\"https://login.microsoftonline.com/common/oauth2/v2.0/logout\",\"claims_supported\":[\"sub\",\"iss\",\"cloud_instance_name\",\"cloud_instance_host_name\",\"cloud_graph_host_name\",\"msgraph_host\",\"aud\",\"exp\",\"iat\",\"auth_time\",\"acr\",\"nonce\",\"preferred_username\",\"name\",\"tid\",\"ver\",\"at_hash\",\"c_hash\",\"email\"],\"kerberos_endpoint\":\"https://login.microsoftonline.com/common/kerberos\",\"tenant_region_scope\":null,\"cloud_instance_name\":\"microsoftonline.com\",\"cloud_graph_host_name\":\"graph.windows.net\",\"msgraph_host\":\"graph.microsoft.com\",\"rbac_url\":\"https://pas.windows.net\"},\"https://login.chinacloudapi.cn/common/\":{\"token_endpoint\":\"https://login.chinacloudapi.cn/common/oauth2/v2.0/token\",\"token_endpoint_auth_methods_supported\":[\"client_secret_post\",\"private_key_jwt\",\"client_secret_basic\"],\"jwks_uri\":\"https://login.chinacloudapi.cn/common/discovery/v2.0/keys\",\"response_modes_supported\":[\"query\",\"fragment\",\"form_post\"],\"subject_types_supported\":[\"pairwise\"],\"id_token_signing_alg_values_supported\":[\"RS256\"],\"response_types_supported\":[\"code\",\"id_token\",\"code id_token\",\"id_token token\"],\"scopes_supported\":[\"openid\",\"profile\",\"email\",\"offline_access\"],\"issuer\":\"https://login.partner.microsoftonline.cn/{tenantid}/v2.0\",\"request_uri_parameter_supported\":false,\"userinfo_endpoint\":\"https://microsoftgraph.chinacloudapi.cn/oidc/userinfo\",\"authorization_endpoint\":\"https://login.chinacloudapi.cn/common/oauth2/v2.0/authorize\",\"device_authorization_endpoint\":\"https://login.chinacloudapi.cn/common/oauth2/v2.0/devicecode\",\"http_logout_supported\":true,\"frontchannel_logout_supported\":true,\"end_session_endpoint\":\"https://login.chinacloudapi.cn/common/oauth2/v2.0/logout\",\"claims_supported\":[\"sub\",\"iss\",\"cloud_instance_name\",\"cloud_instance_host_name\",\"cloud_graph_host_name\",\"msgraph_host\",\"aud\",\"exp\",\"iat\",\"auth_time\",\"acr\",\"nonce\",\"preferred_username\",\"name\",\"tid\",\"ver\",\"at_hash\",\"c_hash\",\"email\"],\"kerberos_endpoint\":\"https://login.chinacloudapi.cn/common/kerberos\",\"tenant_region_scope\":null,\"cloud_instance_name\":\"partner.microsoftonline.cn\",\"cloud_graph_host_name\":\"graph.chinacloudapi.cn\",\"msgraph_host\":\"microsoftgraph.chinacloudapi.cn\",\"rbac_url\":\"https://pas.chinacloudapi.cn\"},\"https://login.microsoftonline.us/common/\":{\"token_endpoint\":\"https://login.microsoftonline.us/common/oauth2/v2.0/token\",\"token_endpoint_auth_methods_supported\":[\"client_secret_post\",\"private_key_jwt\",\"client_secret_basic\"],\"jwks_uri\":\"https://login.microsoftonline.us/common/discovery/v2.0/keys\",\"response_modes_supported\":[\"query\",\"fragment\",\"form_post\"],\"subject_types_supported\":[\"pairwise\"],\"id_token_signing_alg_values_supported\":[\"RS256\"],\"response_types_supported\":[\"code\",\"id_token\",\"code id_token\",\"id_token token\"],\"scopes_supported\":[\"openid\",\"profile\",\"email\",\"offline_access\"],\"issuer\":\"https://login.microsoftonline.us/{tenantid}/v2.0\",\"request_uri_parameter_supported\":false,\"userinfo_endpoint\":\"https://graph.microsoft.com/oidc/userinfo\",\"authorization_endpoint\":\"https://login.microsoftonline.us/common/oauth2/v2.0/authorize\",\"device_authorization_endpoint\":\"https://login.microsoftonline.us/common/oauth2/v2.0/devicecode\",\"http_logout_supported\":true,\"frontchannel_logout_supported\":true,\"end_session_endpoint\":\"https://login.microsoftonline.us/common/oauth2/v2.0/logout\",\"claims_supported\":[\"sub\",\"iss\",\"cloud_instance_name\",\"cloud_instance_host_name\",\"cloud_graph_host_name\",\"msgraph_host\",\"aud\",\"exp\",\"iat\",\"auth_time\",\"acr\",\"nonce\",\"preferred_username\",\"name\",\"tid\",\"ver\",\"at_hash\",\"c_hash\",\"email\"],\"kerberos_endpoint\":\"https://login.microsoftonline.us/common/kerberos\",\"tenant_region_scope\":null,\"cloud_instance_name\":\"microsoftonline.us\",\"cloud_graph_host_name\":\"graph.windows.net\",\"msgraph_host\":\"graph.microsoft.com\",\"rbac_url\":\"https://pasff.usgovcloudapi.net\"},\"https://login.microsoftonline.com/consumers/\":{\"token_endpoint\":\"https://login.microsoftonline.com/consumers/oauth2/v2.0/token\",\"token_endpoint_auth_methods_supported\":[\"client_secret_post\",\"private_key_jwt\",\"client_secret_basic\"],\"jwks_uri\":\"https://login.microsoftonline.com/consumers/discovery/v2.0/keys\",\"response_modes_supported\":[\"query\",\"fragment\",\"form_post\"],\"subject_types_supported\":[\"pairwise\"],\"id_token_signing_alg_values_supported\":[\"RS256\"],\"response_types_supported\":[\"code\",\"id_token\",\"code id_token\",\"id_token token\"],\"scopes_supported\":[\"openid\",\"profile\",\"email\",\"offline_access\"],\"issuer\":\"https://login.microsoftonline.com/9188040d-6c67-4c5b-b112-36a304b66dad/v2.0\",\"request_uri_parameter_supported\":false,\"userinfo_endpoint\":\"https://graph.microsoft.com/oidc/userinfo\",\"authorization_endpoint\":\"https://login.microsoftonline.com/consumers/oauth2/v2.0/authorize\",\"device_authorization_endpoint\":\"https://login.microsoftonline.com/consumers/oauth2/v2.0/devicecode\",\"http_logout_supported\":true,\"frontchannel_logout_supported\":true,\"end_session_endpoint\":\"https://login.microsoftonline.com/consumers/oauth2/v2.0/logout\",\"claims_supported\":[\"sub\",\"iss\",\"cloud_instance_name\",\"cloud_instance_host_name\",\"cloud_graph_host_name\",\"msgraph_host\",\"aud\",\"exp\",\"iat\",\"auth_time\",\"acr\",\"nonce\",\"preferred_username\",\"name\",\"tid\",\"ver\",\"at_hash\",\"c_hash\",\"email\"],\"kerberos_endpoint\":\"https://login.microsoftonline.com/consumers/kerberos\",\"tenant_region_scope\":null,\"cloud_instance_name\":\"microsoftonline.com\",\"cloud_graph_host_name\":\"graph.windows.net\",\"msgraph_host\":\"graph.microsoft.com\",\"rbac_url\":\"https://pas.windows.net\"},\"https://login.chinacloudapi.cn/consumers/\":{\"token_endpoint\":\"https://login.chinacloudapi.cn/consumers/oauth2/v2.0/token\",\"token_endpoint_auth_methods_supported\":[\"client_secret_post\",\"private_key_jwt\",\"client_secret_basic\"],\"jwks_uri\":\"https://login.chinacloudapi.cn/consumers/discovery/v2.0/keys\",\"response_modes_supported\":[\"query\",\"fragment\",\"form_post\"],\"subject_types_supported\":[\"pairwise\"],\"id_token_signing_alg_values_supported\":[\"RS256\"],\"response_types_supported\":[\"code\",\"id_token\",\"code id_token\",\"id_token token\"],\"scopes_supported\":[\"openid\",\"profile\",\"email\",\"offline_access\"],\"issuer\":\"https://login.partner.microsoftonline.cn/9188040d-6c67-4c5b-b112-36a304b66dad/v2.0\",\"request_uri_parameter_supported\":false,\"userinfo_endpoint\":\"https://microsoftgraph.chinacloudapi.cn/oidc/userinfo\",\"authorization_endpoint\":\"https://login.chinacloudapi.cn/consumers/oauth2/v2.0/authorize\",\"device_authorization_endpoint\":\"https://login.chinacloudapi.cn/consumers/oauth2/v2.0/devicecode\",\"http_logout_supported\":true,\"frontchannel_logout_supported\":true,\"end_session_endpoint\":\"https://login.chinacloudapi.cn/consumers/oauth2/v2.0/logout\",\"claims_supported\":[\"sub\",\"iss\",\"cloud_instance_name\",\"cloud_instance_host_name\",\"cloud_graph_host_name\",\"msgraph_host\",\"aud\",\"exp\",\"iat\",\"auth_time\",\"acr\",\"nonce\",\"preferred_username\",\"name\",\"tid\",\"ver\",\"at_hash\",\"c_hash\",\"email\"],\"kerberos_endpoint\":\"https://login.chinacloudapi.cn/consumers/kerberos\",\"tenant_region_scope\":null,\"cloud_instance_name\":\"partner.microsoftonline.cn\",\"cloud_graph_host_name\":\"graph.chinacloudapi.cn\",\"msgraph_host\":\"microsoftgraph.chinacloudapi.cn\",\"rbac_url\":\"https://pas.chinacloudapi.cn\"},\"https://login.microsoftonline.us/consumers/\":{\"token_endpoint\":\"https://login.microsoftonline.us/consumers/oauth2/v2.0/token\",\"token_endpoint_auth_methods_supported\":[\"client_secret_post\",\"private_key_jwt\",\"client_secret_basic\"],\"jwks_uri\":\"https://login.microsoftonline.us/consumers/discovery/v2.0/keys\",\"response_modes_supported\":[\"query\",\"fragment\",\"form_post\"],\"subject_types_supported\":[\"pairwise\"],\"id_token_signing_alg_values_supported\":[\"RS256\"],\"response_types_supported\":[\"code\",\"id_token\",\"code id_token\",\"id_token token\"],\"scopes_supported\":[\"openid\",\"profile\",\"email\",\"offline_access\"],\"issuer\":\"https://login.microsoftonline.us/9188040d-6c67-4c5b-b112-36a304b66dad/v2.0\",\"request_uri_parameter_supported\":false,\"userinfo_endpoint\":\"https://graph.microsoft.com/oidc/userinfo\",\"authorization_endpoint\":\"https://login.microsoftonline.us/consumers/oauth2/v2.0/authorize\",\"device_authorization_endpoint\":\"https://login.microsoftonline.us/consumers/oauth2/v2.0/devicecode\",\"http_logout_supported\":true,\"frontchannel_logout_supported\":true,\"end_session_endpoint\":\"https://login.microsoftonline.us/consumers/oauth2/v2.0/logout\",\"claims_supported\":[\"sub\",\"iss\",\"cloud_instance_name\",\"cloud_instance_host_name\",\"cloud_graph_host_name\",\"msgraph_host\",\"aud\",\"exp\",\"iat\",\"auth_time\",\"acr\",\"nonce\",\"preferred_username\",\"name\",\"tid\",\"ver\",\"at_hash\",\"c_hash\",\"email\"],\"kerberos_endpoint\":\"https://login.microsoftonline.us/consumers/kerberos\",\"tenant_region_scope\":null,\"cloud_instance_name\":\"microsoftonline.us\",\"cloud_graph_host_name\":\"graph.windows.net\",\"msgraph_host\":\"graph.microsoft.com\",\"rbac_url\":\"https://pasff.usgovcloudapi.net\"},\"https://login.microsoftonline.com/organizations/\":{\"token_endpoint\":\"https://login.microsoftonline.com/organizations/oauth2/v2.0/token\",\"token_endpoint_auth_methods_supported\":[\"client_secret_post\",\"private_key_jwt\",\"client_secret_basic\"],\"jwks_uri\":\"https://login.microsoftonline.com/organizations/discovery/v2.0/keys\",\"response_modes_supported\":[\"query\",\"fragment\",\"form_post\"],\"subject_types_supported\":[\"pairwise\"],\"id_token_signing_alg_values_supported\":[\"RS256\"],\"response_types_supported\":[\"code\",\"id_token\",\"code id_token\",\"id_token token\"],\"scopes_supported\":[\"openid\",\"profile\",\"email\",\"offline_access\"],\"issuer\":\"https://login.microsoftonline.com/{tenantid}/v2.0\",\"request_uri_parameter_supported\":false,\"userinfo_endpoint\":\"https://graph.microsoft.com/oidc/userinfo\",\"authorization_endpoint\":\"https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize\",\"device_authorization_endpoint\":\"https://login.microsoftonline.com/organizations/oauth2/v2.0/devicecode\",\"http_logout_supported\":true,\"frontchannel_logout_supported\":true,\"end_session_endpoint\":\"https://login.microsoftonline.com/organizations/oauth2/v2.0/logout\",\"claims_supported\":[\"sub\",\"iss\",\"cloud_instance_name\",\"cloud_instance_host_name\",\"cloud_graph_host_name\",\"msgraph_host\",\"aud\",\"exp\",\"iat\",\"auth_time\",\"acr\",\"nonce\",\"preferred_username\",\"name\",\"tid\",\"ver\",\"at_hash\",\"c_hash\",\"email\"],\"kerberos_endpoint\":\"https://login.microsoftonline.com/organizations/kerberos\",\"tenant_region_scope\":null,\"cloud_instance_name\":\"microsoftonline.com\",\"cloud_graph_host_name\":\"graph.windows.net\",\"msgraph_host\":\"graph.microsoft.com\",\"rbac_url\":\"https://pas.windows.net\"},\"https://login.chinacloudapi.cn/organizations/\":{\"token_endpoint\":\"https://login.chinacloudapi.cn/organizations/oauth2/v2.0/token\",\"token_endpoint_auth_methods_supported\":[\"client_secret_post\",\"private_key_jwt\",\"client_secret_basic\"],\"jwks_uri\":\"https://login.chinacloudapi.cn/organizations/discovery/v2.0/keys\",\"response_modes_supported\":[\"query\",\"fragment\",\"form_post\"],\"subject_types_supported\":[\"pairwise\"],\"id_token_signing_alg_values_supported\":[\"RS256\"],\"response_types_supported\":[\"code\",\"id_token\",\"code id_token\",\"id_token token\"],\"scopes_supported\":[\"openid\",\"profile\",\"email\",\"offline_access\"],\"issuer\":\"https://login.partner.microsoftonline.cn/{tenantid}/v2.0\",\"request_uri_parameter_supported\":false,\"userinfo_endpoint\":\"https://microsoftgraph.chinacloudapi.cn/oidc/userinfo\",\"authorization_endpoint\":\"https://login.chinacloudapi.cn/organizations/oauth2/v2.0/authorize\",\"device_authorization_endpoint\":\"https://login.chinacloudapi.cn/organizations/oauth2/v2.0/devicecode\",\"http_logout_supported\":true,\"frontchannel_logout_supported\":true,\"end_session_endpoint\":\"https://login.chinacloudapi.cn/organizations/oauth2/v2.0/logout\",\"claims_supported\":[\"sub\",\"iss\",\"cloud_instance_name\",\"cloud_instance_host_name\",\"cloud_graph_host_name\",\"msgraph_host\",\"aud\",\"exp\",\"iat\",\"auth_time\",\"acr\",\"nonce\",\"preferred_username\",\"name\",\"tid\",\"ver\",\"at_hash\",\"c_hash\",\"email\"],\"kerberos_endpoint\":\"https://login.chinacloudapi.cn/organizations/kerberos\",\"tenant_region_scope\":null,\"cloud_instance_name\":\"partner.microsoftonline.cn\",\"cloud_graph_host_name\":\"graph.chinacloudapi.cn\",\"msgraph_host\":\"microsoftgraph.chinacloudapi.cn\",\"rbac_url\":\"https://pas.chinacloudapi.cn\"},\"https://login.microsoftonline.us/organizations/\":{\"token_endpoint\":\"https://login.microsoftonline.us/organizations/oauth2/v2.0/token\",\"token_endpoint_auth_methods_supported\":[\"client_secret_post\",\"private_key_jwt\",\"client_secret_basic\"],\"jwks_uri\":\"https://login.microsoftonline.us/organizations/discovery/v2.0/keys\",\"response_modes_supported\":[\"query\",\"fragment\",\"form_post\"],\"subject_types_supported\":[\"pairwise\"],\"id_token_signing_alg_values_supported\":[\"RS256\"],\"response_types_supported\":[\"code\",\"id_token\",\"code id_token\",\"id_token token\"],\"scopes_supported\":[\"openid\",\"profile\",\"email\",\"offline_access\"],\"issuer\":\"https://login.microsoftonline.us/{tenantid}/v2.0\",\"request_uri_parameter_supported\":false,\"userinfo_endpoint\":\"https://graph.microsoft.com/oidc/userinfo\",\"authorization_endpoint\":\"https://login.microsoftonline.us/organizations/oauth2/v2.0/authorize\",\"device_authorization_endpoint\":\"https://login.microsoftonline.us/organizations/oauth2/v2.0/devicecode\",\"http_logout_supported\":true,\"frontchannel_logout_supported\":true,\"end_session_endpoint\":\"https://login.microsoftonline.us/organizations/oauth2/v2.0/logout\",\"claims_supported\":[\"sub\",\"iss\",\"cloud_instance_name\",\"cloud_instance_host_name\",\"cloud_graph_host_name\",\"msgraph_host\",\"aud\",\"exp\",\"iat\",\"auth_time\",\"acr\",\"nonce\",\"preferred_username\",\"name\",\"tid\",\"ver\",\"at_hash\",\"c_hash\",\"email\"],\"kerberos_endpoint\":\"https://login.microsoftonline.us/organizations/kerberos\",\"tenant_region_scope\":null,\"cloud_instance_name\":\"microsoftonline.us\",\"cloud_graph_host_name\":\"graph.windows.net\",\"msgraph_host\":\"graph.microsoft.com\",\"rbac_url\":\"https://pasff.usgovcloudapi.net\"}},\"instanceDiscoveryMetadata\":{\"https://login.microsoftonline.com/common/\":{\"tenant_discovery_endpoint\":\"https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration\",\"api-version\":\"1.1\",\"metadata\":[{\"preferred_network\":\"login.microsoftonline.com\",\"preferred_cache\":\"login.windows.net\",\"aliases\":[\"login.microsoftonline.com\",\"login.windows.net\",\"login.microsoft.com\",\"sts.windows.net\"]},{\"preferred_network\":\"login.partner.microsoftonline.cn\",\"preferred_cache\":\"login.partner.microsoftonline.cn\",\"aliases\":[\"login.partner.microsoftonline.cn\",\"login.chinacloudapi.cn\"]},{\"preferred_network\":\"login.microsoftonline.de\",\"preferred_cache\":\"login.microsoftonline.de\",\"aliases\":[\"login.microsoftonline.de\"]},{\"preferred_network\":\"login.microsoftonline.us\",\"preferred_cache\":\"login.microsoftonline.us\",\"aliases\":[\"login.microsoftonline.us\",\"login.usgovcloudapi.net\"]},{\"preferred_network\":\"login-us.microsoftonline.com\",\"preferred_cache\":\"login-us.microsoftonline.com\",\"aliases\":[\"login-us.microsoftonline.com\"]}]},\"https://login.chinacloudapi.cn/common/\":{\"tenant_discovery_endpoint\":\"https://login.chinacloudapi.cn/common/v2.0/.well-known/openid-configuration\",\"api-version\":\"1.1\",\"metadata\":[{\"preferred_network\":\"login.microsoftonline.com\",\"preferred_cache\":\"login.windows.net\",\"aliases\":[\"login.microsoftonline.com\",\"login.windows.net\",\"login.microsoft.com\",\"sts.windows.net\"]},{\"preferred_network\":\"login.partner.microsoftonline.cn\",\"preferred_cache\":\"login.partner.microsoftonline.cn\",\"aliases\":[\"login.partner.microsoftonline.cn\",\"login.chinacloudapi.cn\"]},{\"preferred_network\":\"login.microsoftonline.de\",\"preferred_cache\":\"login.microsoftonline.de\",\"aliases\":[\"login.microsoftonline.de\"]},{\"preferred_network\":\"login.microsoftonline.us\",\"preferred_cache\":\"login.microsoftonline.us\",\"aliases\":[\"login.microsoftonline.us\",\"login.usgovcloudapi.net\"]},{\"preferred_network\":\"login-us.microsoftonline.com\",\"preferred_cache\":\"login-us.microsoftonline.com\",\"aliases\":[\"login-us.microsoftonline.com\"]}]},\"https://login.microsoftonline.us/common/\":{\"tenant_discovery_endpoint\":\"https://login.microsoftonline.us/common/v2.0/.well-known/openid-configuration\",\"api-version\":\"1.1\",\"metadata\":[{\"preferred_network\":\"login.microsoftonline.com\",\"preferred_cache\":\"login.windows.net\",\"aliases\":[\"login.microsoftonline.com\",\"login.windows.net\",\"login.microsoft.com\",\"sts.windows.net\"]},{\"preferred_network\":\"login.partner.microsoftonline.cn\",\"preferred_cache\":\"login.partner.microsoftonline.cn\",\"aliases\":[\"login.partner.microsoftonline.cn\",\"login.chinacloudapi.cn\"]},{\"preferred_network\":\"login.microsoftonline.de\",\"preferred_cache\":\"login.microsoftonline.de\",\"aliases\":[\"login.microsoftonline.de\"]},{\"preferred_network\":\"login.microsoftonline.us\",\"preferred_cache\":\"login.microsoftonline.us\",\"aliases\":[\"login.microsoftonline.us\",\"login.usgovcloudapi.net\"]},{\"preferred_network\":\"login-us.microsoftonline.com\",\"preferred_cache\":\"login-us.microsoftonline.com\",\"aliases\":[\"login-us.microsoftonline.com\"]}]},\"https://login.microsoftonline.com/consumers/\":{\"tenant_discovery_endpoint\":\"https://login.microsoftonline.com/consumers/v2.0/.well-known/openid-configuration\",\"api-version\":\"1.1\",\"metadata\":[{\"preferred_network\":\"login.microsoftonline.com\",\"preferred_cache\":\"login.windows.net\",\"aliases\":[\"login.microsoftonline.com\",\"login.windows.net\",\"login.microsoft.com\",\"sts.windows.net\"]},{\"preferred_network\":\"login.partner.microsoftonline.cn\",\"preferred_cache\":\"login.partner.microsoftonline.cn\",\"aliases\":[\"login.partner.microsoftonline.cn\",\"login.chinacloudapi.cn\"]},{\"preferred_network\":\"login.microsoftonline.de\",\"preferred_cache\":\"login.microsoftonline.de\",\"aliases\":[\"login.microsoftonline.de\"]},{\"preferred_network\":\"login.microsoftonline.us\",\"preferred_cache\":\"login.microsoftonline.us\",\"aliases\":[\"login.microsoftonline.us\",\"login.usgovcloudapi.net\"]},{\"preferred_network\":\"login-us.microsoftonline.com\",\"preferred_cache\":\"login-us.microsoftonline.com\",\"aliases\":[\"login-us.microsoftonline.com\"]}]},\"https://login.chinacloudapi.cn/consumers/\":{\"tenant_discovery_endpoint\":\"https://login.chinacloudapi.cn/consumers/v2.0/.well-known/openid-configuration\",\"api-version\":\"1.1\",\"metadata\":[{\"preferred_network\":\"login.microsoftonline.com\",\"preferred_cache\":\"login.windows.net\",\"aliases\":[\"login.microsoftonline.com\",\"login.windows.net\",\"login.microsoft.com\",\"sts.windows.net\"]},{\"preferred_network\":\"login.partner.microsoftonline.cn\",\"preferred_cache\":\"login.partner.microsoftonline.cn\",\"aliases\":[\"login.partner.microsoftonline.cn\",\"login.chinacloudapi.cn\"]},{\"preferred_network\":\"login.microsoftonline.de\",\"preferred_cache\":\"login.microsoftonline.de\",\"aliases\":[\"login.microsoftonline.de\"]},{\"preferred_network\":\"login.microsoftonline.us\",\"preferred_cache\":\"login.microsoftonline.us\",\"aliases\":[\"login.microsoftonline.us\",\"login.usgovcloudapi.net\"]},{\"preferred_network\":\"login-us.microsoftonline.com\",\"preferred_cache\":\"login-us.microsoftonline.com\",\"aliases\":[\"login-us.microsoftonline.com\"]}]},\"https://login.microsoftonline.us/consumers/\":{\"tenant_discovery_endpoint\":\"https://login.microsoftonline.us/consumers/v2.0/.well-known/openid-configuration\",\"api-version\":\"1.1\",\"metadata\":[{\"preferred_network\":\"login.microsoftonline.com\",\"preferred_cache\":\"login.windows.net\",\"aliases\":[\"login.microsoftonline.com\",\"login.windows.net\",\"login.microsoft.com\",\"sts.windows.net\"]},{\"preferred_network\":\"login.partner.microsoftonline.cn\",\"preferred_cache\":\"login.partner.microsoftonline.cn\",\"aliases\":[\"login.partner.microsoftonline.cn\",\"login.chinacloudapi.cn\"]},{\"preferred_network\":\"login.microsoftonline.de\",\"preferred_cache\":\"login.microsoftonline.de\",\"aliases\":[\"login.microsoftonline.de\"]},{\"preferred_network\":\"login.microsoftonline.us\",\"preferred_cache\":\"login.microsoftonline.us\",\"aliases\":[\"login.microsoftonline.us\",\"login.usgovcloudapi.net\"]},{\"preferred_network\":\"login-us.microsoftonline.com\",\"preferred_cache\":\"login-us.microsoftonline.com\",\"aliases\":[\"login-us.microsoftonline.com\"]}]},\"https://login.microsoftonline.com/organizations/\":{\"tenant_discovery_endpoint\":\"https://login.microsoftonline.com/organizations/v2.0/.well-known/openid-configuration\",\"api-version\":\"1.1\",\"metadata\":[{\"preferred_network\":\"login.microsoftonline.com\",\"preferred_cache\":\"login.windows.net\",\"aliases\":[\"login.microsoftonline.com\",\"login.windows.net\",\"login.microsoft.com\",\"sts.windows.net\"]},{\"preferred_network\":\"login.partner.microsoftonline.cn\",\"preferred_cache\":\"login.partner.microsoftonline.cn\",\"aliases\":[\"login.partner.microsoftonline.cn\",\"login.chinacloudapi.cn\"]},{\"preferred_network\":\"login.microsoftonline.de\",\"preferred_cache\":\"login.microsoftonline.de\",\"aliases\":[\"login.microsoftonline.de\"]},{\"preferred_network\":\"login.microsoftonline.us\",\"preferred_cache\":\"login.microsoftonline.us\",\"aliases\":[\"login.microsoftonline.us\",\"login.usgovcloudapi.net\"]},{\"preferred_network\":\"login-us.microsoftonline.com\",\"preferred_cache\":\"login-us.microsoftonline.com\",\"aliases\":[\"login-us.microsoftonline.com\"]}]},\"https://login.chinacloudapi.cn/organizations/\":{\"tenant_discovery_endpoint\":\"https://login.chinacloudapi.cn/organizations/v2.0/.well-known/openid-configuration\",\"api-version\":\"1.1\",\"metadata\":[{\"preferred_network\":\"login.microsoftonline.com\",\"preferred_cache\":\"login.windows.net\",\"aliases\":[\"login.microsoftonline.com\",\"login.windows.net\",\"login.microsoft.com\",\"sts.windows.net\"]},{\"preferred_network\":\"login.partner.microsoftonline.cn\",\"preferred_cache\":\"login.partner.microsoftonline.cn\",\"aliases\":[\"login.partner.microsoftonline.cn\",\"login.chinacloudapi.cn\"]},{\"preferred_network\":\"login.microsoftonline.de\",\"preferred_cache\":\"login.microsoftonline.de\",\"aliases\":[\"login.microsoftonline.de\"]},{\"preferred_network\":\"login.microsoftonline.us\",\"preferred_cache\":\"login.microsoftonline.us\",\"aliases\":[\"login.microsoftonline.us\",\"login.usgovcloudapi.net\"]},{\"preferred_network\":\"login-us.microsoftonline.com\",\"preferred_cache\":\"login-us.microsoftonline.com\",\"aliases\":[\"login-us.microsoftonline.com\"]}]},\"https://login.microsoftonline.us/organizations/\":{\"tenant_discovery_endpoint\":\"https://login.microsoftonline.us/organizations/v2.0/.well-known/openid-configuration\",\"api-version\":\"1.1\",\"metadata\":[{\"preferred_network\":\"login.microsoftonline.com\",\"preferred_cache\":\"login.windows.net\",\"aliases\":[\"login.microsoftonline.com\",\"login.windows.net\",\"login.microsoft.com\",\"sts.windows.net\"]},{\"preferred_network\":\"login.partner.microsoftonline.cn\",\"preferred_cache\":\"login.partner.microsoftonline.cn\",\"aliases\":[\"login.partner.microsoftonline.cn\",\"login.chinacloudapi.cn\"]},{\"preferred_network\":\"login.microsoftonline.de\",\"preferred_cache\":\"login.microsoftonline.de\",\"aliases\":[\"login.microsoftonline.de\"]},{\"preferred_network\":\"login.microsoftonline.us\",\"preferred_cache\":\"login.microsoftonline.us\",\"aliases\":[\"login.microsoftonline.us\",\"login.usgovcloudapi.net\"]},{\"preferred_network\":\"login-us.microsoftonline.com\",\"preferred_cache\":\"login-us.microsoftonline.com\",\"aliases\":[\"login-us.microsoftonline.com\"]}]}}};\n\nexport const EndpointMetadata = rawMetdataJSON.endpointMetadata;\nexport const InstanceDiscoveryMetadata = rawMetdataJSON.instanceDiscoveryMetadata;\n\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { INetworkModule } from \"../network/INetworkModule\";\nimport { NetworkResponse } from \"../network/NetworkManager\";\nimport { IMDSBadResponse } from \"../response/IMDSBadResponse\";\nimport { Constants, RegionDiscoverySources, ResponseCodes } from \"../utils/Constants\";\nimport { RegionDiscoveryMetadata } from \"./RegionDiscoveryMetadata\";\nimport { ImdsOptions } from \"./ImdsOptions\";\n\nexport class RegionDiscovery {\n // Network interface to make requests with.\n protected networkInterface: INetworkModule;\n // Options for the IMDS endpoint request\n protected static IMDS_OPTIONS: ImdsOptions = {\n headers: {\n Metadata: \"true\",\n },\n };\n\n constructor(networkInterface: INetworkModule) {\n this.networkInterface = networkInterface;\n }\n\n /**\n * Detect the region from the application's environment.\n * \n * @returns Promise<string | null>\n */\n public async detectRegion(environmentRegion: string | undefined, regionDiscoveryMetadata: RegionDiscoveryMetadata, proxyUrl: string): Promise<string | null> {\n // Initialize auto detected region with the region from the envrionment \n let autodetectedRegionName = environmentRegion;\n\n // Check if a region was detected from the environment, if not, attempt to get the region from IMDS \n if (!autodetectedRegionName) {\n const options = RegionDiscovery.IMDS_OPTIONS;\n if (proxyUrl) {\n options.proxyUrl = proxyUrl;\n }\n\n try {\n const localIMDSVersionResponse = await this.getRegionFromIMDS(Constants.IMDS_VERSION, options);\n if (localIMDSVersionResponse.status === ResponseCodes.httpSuccess) {\n autodetectedRegionName = localIMDSVersionResponse.body;\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.IMDS;\n } \n \n // If the response using the local IMDS version failed, try to fetch the current version of IMDS and retry. \n if (localIMDSVersionResponse.status === ResponseCodes.httpBadRequest) {\n const currentIMDSVersion = await this.getCurrentVersion(options);\n if (!currentIMDSVersion) {\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.FAILED_AUTO_DETECTION;\n return null;\n }\n\n const currentIMDSVersionResponse = await this.getRegionFromIMDS(currentIMDSVersion, options);\n if (currentIMDSVersionResponse.status === ResponseCodes.httpSuccess) {\n autodetectedRegionName = currentIMDSVersionResponse.body;\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.IMDS;\n }\n }\n } catch(e) {\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.FAILED_AUTO_DETECTION;\n return null;\n } \n } else {\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.ENVIRONMENT_VARIABLE;\n }\n\n // If no region was auto detected from the environment or from the IMDS endpoint, mark the attempt as a FAILED_AUTO_DETECTION\n if (!autodetectedRegionName) {\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.FAILED_AUTO_DETECTION;\n }\n\n return autodetectedRegionName || null;\n }\n\n /**\n * Make the call to the IMDS endpoint\n * \n * @param imdsEndpointUrl\n * @returns Promise<NetworkResponse<string>>\n */\n private async getRegionFromIMDS(version: string, options: ImdsOptions): Promise<NetworkResponse<string>> {\n return this.networkInterface.sendGetRequestAsync<string>(`${Constants.IMDS_ENDPOINT}?api-version=${version}&format=text`, options, Constants.IMDS_TIMEOUT);\n }\n\n /**\n * Get the most recent version of the IMDS endpoint available\n * \n * @returns Promise<string | null>\n */\n private async getCurrentVersion(options: ImdsOptions): Promise<string | null> {\n try {\n const response = await this.networkInterface.sendGetRequestAsync<IMDSBadResponse>(`${Constants.IMDS_ENDPOINT}?format=json`, options);\n\n // When IMDS endpoint is called without the api version query param, bad request response comes back with latest version.\n if (response.status === ResponseCodes.httpBadRequest && response.body && response.body[\"newest-versions\"] && response.body[\"newest-versions\"].length > 0) {\n return response.body[\"newest-versions\"][0];\n }\n\n return null;\n } catch (e) {\n return null;\n }\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthError, InteractionRequiredAuthError } from \"@azure/msal-common\";\nimport { BrowserAuthError } from \"./BrowserAuthError\";\n\nexport type OSError = {\n error: number;\n protocol_error: string;\n properties: object;\n status: string;\n retryable?: boolean;\n};\n\nexport enum NativeStatusCode {\n USER_INTERACTION_REQUIRED = \"USER_INTERACTION_REQUIRED\",\n USER_CANCEL = \"USER_CANCEL\",\n NO_NETWORK = \"NO_NETWORK\",\n TRANSIENT_ERROR = \"TRANSIENT_ERROR\",\n PERSISTENT_ERROR = \"PERSISTENT_ERROR\",\n DISABLED = \"DISABLED\",\n ACCOUNT_UNAVAILABLE = \"ACCOUNT_UNAVAILABLE\"\n}\n\nexport const NativeAuthErrorMessage = {\n extensionError: {\n code: \"ContentError\"\n },\n userSwitch: {\n code: \"user_switch\",\n desc: \"User attempted to switch accounts in the native broker, which is not allowed. All new accounts must sign-in through the standard web flow first, please try again.\"\n },\n tokensNotFoundInCache: {\n code: \"tokens_not_found_in_internal_memory_cache\",\n desc: \"Tokens not cached in MSAL JS internal memory, please make the WAM request\"\n }\n};\n\nexport class NativeAuthError extends AuthError {\n ext: OSError | undefined;\n\n constructor(errorCode: string, description: string, ext?: OSError) {\n super(errorCode, description);\n\n Object.setPrototypeOf(this, NativeAuthError.prototype);\n this.name = \"NativeAuthError\";\n this.ext = ext;\n }\n\n /**\n * These errors should result in a fallback to the 'standard' browser based auth flow.\n */\n isFatal(): boolean {\n if (this.ext && this.ext.status && (this.ext.status === NativeStatusCode.PERSISTENT_ERROR || this.ext.status === NativeStatusCode.DISABLED)) {\n return true;\n }\n\n switch (this.errorCode) {\n case NativeAuthErrorMessage.extensionError.code:\n return true;\n default:\n return false;\n }\n }\n\n /**\n * Create the appropriate error object based on the WAM status code.\n * @param code\n * @param description\n * @param ext\n * @returns\n */\n static createError(code: string, description: string, ext?: OSError): AuthError {\n if (ext && ext.status) {\n switch (ext.status) {\n case NativeStatusCode.ACCOUNT_UNAVAILABLE:\n return InteractionRequiredAuthError.createNativeAccountUnavailableError();\n case NativeStatusCode.USER_INTERACTION_REQUIRED:\n return new InteractionRequiredAuthError(code, description);\n case NativeStatusCode.USER_CANCEL:\n return BrowserAuthError.createUserCancelledError();\n case NativeStatusCode.NO_NETWORK:\n return BrowserAuthError.createNoNetworkConnectivityError();\n }\n }\n\n return new NativeAuthError(code, description, ext);\n }\n\n /**\n * Creates user switch error when the user chooses a different account in the native broker prompt\n * @returns\n */\n static createUserSwitchError(): NativeAuthError {\n return new NativeAuthError(NativeAuthErrorMessage.userSwitch.code, NativeAuthErrorMessage.userSwitch.desc);\n }\n\n /**\n * Creates a tokens not found error when the internal cache look up fails\n * @returns NativeAuthError: tokensNotFoundInCache\n */\n static createTokensNotFoundInCacheError(): NativeAuthError {\n return new NativeAuthError(NativeAuthErrorMessage.tokensNotFoundInCache.code, NativeAuthErrorMessage.tokensNotFoundInCache.desc);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthorityType } from \"./AuthorityType\";\nimport { isOpenIdConfigResponse, OpenIdConfigResponse } from \"./OpenIdConfigResponse\";\nimport { UrlString } from \"../url/UrlString\";\nimport { IUri } from \"../url/IUri\";\nimport { ClientAuthError } from \"../error/ClientAuthError\";\nimport { INetworkModule } from \"../network/INetworkModule\";\nimport { AuthorityMetadataSource, Constants, RegionDiscoveryOutcomes } from \"../utils/Constants\";\nimport { EndpointMetadata, InstanceDiscoveryMetadata } from \"./AuthorityMetadata\";\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\nimport { ProtocolMode } from \"./ProtocolMode\";\nimport { ICacheManager } from \"../cache/interface/ICacheManager\";\nimport { AuthorityMetadataEntity } from \"../cache/entities/AuthorityMetadataEntity\";\nimport { AuthorityOptions , AzureCloudInstance } from \"./AuthorityOptions\";\nimport { CloudInstanceDiscoveryResponse, isCloudInstanceDiscoveryResponse } from \"./CloudInstanceDiscoveryResponse\";\nimport { CloudDiscoveryMetadata } from \"./CloudDiscoveryMetadata\";\nimport { RegionDiscovery } from \"./RegionDiscovery\";\nimport { RegionDiscoveryMetadata } from \"./RegionDiscoveryMetadata\";\nimport { ImdsOptions } from \"./ImdsOptions\";\nimport { AzureCloudOptions } from \"../config/ClientConfiguration\";\n\n/**\n * The authority class validates the authority URIs used by the user, and retrieves the OpenID Configuration Data from the\n * endpoint. It will store the pertinent config data in this object for use during token calls.\n */\nexport class Authority {\n\n // Canonical authority url string\n private _canonicalAuthority: UrlString;\n // Canonicaly authority url components\n private _canonicalAuthorityUrlComponents: IUri | null;\n // Network interface to make requests with.\n protected networkInterface: INetworkModule;\n // Cache Manager to cache network responses\n protected cacheManager: ICacheManager;\n // Protocol mode to construct endpoints\n private authorityOptions: AuthorityOptions;\n // Authority metadata\n private metadata: AuthorityMetadataEntity;\n // Region discovery service\n private regionDiscovery: RegionDiscovery;\n // Region discovery metadata\n public regionDiscoveryMetadata: RegionDiscoveryMetadata;\n // Proxy url string\n private proxyUrl: string;\n\n constructor(authority: string, networkInterface: INetworkModule, cacheManager: ICacheManager, authorityOptions: AuthorityOptions, proxyUrl?: string) {\n this.canonicalAuthority = authority;\n this._canonicalAuthority.validateAsUri();\n this.networkInterface = networkInterface;\n this.cacheManager = cacheManager;\n this.authorityOptions = authorityOptions;\n this.regionDiscovery = new RegionDiscovery(networkInterface);\n this.regionDiscoveryMetadata = { region_used: undefined, region_source: undefined, region_outcome: undefined };\n this.proxyUrl = proxyUrl || Constants.EMPTY_STRING;\n }\n\n // See above for AuthorityType\n public get authorityType(): AuthorityType {\n const pathSegments = this.canonicalAuthorityUrlComponents.PathSegments;\n\n if (pathSegments.length && pathSegments[0].toLowerCase() === Constants.ADFS) {\n return AuthorityType.Adfs;\n }\n\n return AuthorityType.Default;\n }\n\n /**\n * ProtocolMode enum representing the way endpoints are constructed.\n */\n public get protocolMode(): ProtocolMode {\n return this.authorityOptions.protocolMode;\n }\n\n /**\n * Returns authorityOptions which can be used to reinstantiate a new authority instance\n */\n public get options(): AuthorityOptions {\n return this.authorityOptions;\n }\n\n /**\n * A URL that is the authority set by the developer\n */\n public get canonicalAuthority(): string {\n return this._canonicalAuthority.urlString;\n }\n\n /**\n * Sets canonical authority.\n */\n public set canonicalAuthority(url: string) {\n this._canonicalAuthority = new UrlString(url);\n this._canonicalAuthority.validateAsUri();\n this._canonicalAuthorityUrlComponents = null;\n }\n\n /**\n * Get authority components.\n */\n public get canonicalAuthorityUrlComponents(): IUri {\n if (!this._canonicalAuthorityUrlComponents) {\n this._canonicalAuthorityUrlComponents = this._canonicalAuthority.getUrlComponents();\n }\n\n return this._canonicalAuthorityUrlComponents;\n }\n\n /**\n * Get hostname and port i.e. login.microsoftonline.com\n */\n public get hostnameAndPort(): string {\n return this.canonicalAuthorityUrlComponents.HostNameAndPort.toLowerCase();\n }\n\n /**\n * Get tenant for authority.\n */\n public get tenant(): string {\n return this.canonicalAuthorityUrlComponents.PathSegments[0];\n }\n\n /**\n * OAuth /authorize endpoint for requests\n */\n public get authorizationEndpoint(): string {\n if(this.discoveryComplete()) {\n const endpoint = this.replacePath(this.metadata.authorization_endpoint);\n return this.replaceTenant(endpoint);\n } else {\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\n }\n }\n\n /**\n * OAuth /token endpoint for requests\n */\n public get tokenEndpoint(): string {\n if(this.discoveryComplete()) {\n const endpoint = this.replacePath(this.metadata.token_endpoint);\n return this.replaceTenant(endpoint);\n } else {\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\n }\n }\n\n public get deviceCodeEndpoint(): string {\n if(this.discoveryComplete()) {\n const endpoint = this.replacePath(this.metadata.token_endpoint.replace(\"/token\", \"/devicecode\"));\n return this.replaceTenant(endpoint);\n } else {\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\n }\n }\n\n /**\n * OAuth logout endpoint for requests\n */\n public get endSessionEndpoint(): string {\n if(this.discoveryComplete()) {\n // ROPC policies may not have end_session_endpoint set\n if (!this.metadata.end_session_endpoint) {\n throw ClientAuthError.createLogoutNotSupportedError();\n }\n const endpoint = this.replacePath(this.metadata.end_session_endpoint);\n return this.replaceTenant(endpoint);\n } else {\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\n }\n }\n\n /**\n * OAuth issuer for requests\n */\n public get selfSignedJwtAudience(): string {\n if(this.discoveryComplete()) {\n const endpoint = this.replacePath(this.metadata.issuer);\n return this.replaceTenant(endpoint);\n } else {\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\n }\n }\n\n /**\n * Jwks_uri for token signing keys\n */\n public get jwksUri(): string {\n if(this.discoveryComplete()) {\n const endpoint = this.replacePath(this.metadata.jwks_uri);\n return this.replaceTenant(endpoint);\n } else {\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\n }\n }\n\n /**\n * Replaces tenant in url path with current tenant. Defaults to common.\n * @param urlString\n */\n private replaceTenant(urlString: string): string {\n return urlString.replace(/{tenant}|{tenantid}/g, this.tenant);\n }\n\n /**\n * Replaces path such as tenant or policy with the current tenant or policy.\n * @param urlString\n */\n private replacePath(urlString: string): string {\n let endpoint = urlString;\n const cachedAuthorityUrl = new UrlString(this.metadata.canonical_authority);\n const cachedAuthorityParts = cachedAuthorityUrl.getUrlComponents().PathSegments;\n const currentAuthorityParts = this.canonicalAuthorityUrlComponents.PathSegments;\n\n currentAuthorityParts.forEach((currentPart, index) => {\n const cachedPart = cachedAuthorityParts[index];\n if (currentPart !== cachedPart) {\n endpoint = endpoint.replace(`/${cachedPart}/`, `/${currentPart}/`);\n }\n });\n\n return endpoint;\n }\n\n /**\n * The default open id configuration endpoint for any canonical authority.\n */\n protected get defaultOpenIdConfigurationEndpoint(): string {\n if (this.authorityType === AuthorityType.Adfs || this.protocolMode === ProtocolMode.OIDC) {\n return `${this.canonicalAuthority}.well-known/openid-configuration`;\n }\n return `${this.canonicalAuthority}v2.0/.well-known/openid-configuration`;\n }\n\n /**\n * Boolean that returns whethr or not tenant discovery has been completed.\n */\n discoveryComplete(): boolean {\n return !!this.metadata;\n }\n\n /**\n * Perform endpoint discovery to discover aliases, preferred_cache, preferred_network\n * and the /authorize, /token and logout endpoints.\n */\n public async resolveEndpointsAsync(): Promise<void> {\n let metadataEntity = this.cacheManager.getAuthorityMetadataByAlias(this.hostnameAndPort);\n if (!metadataEntity) {\n metadataEntity = new AuthorityMetadataEntity();\n metadataEntity.updateCanonicalAuthority(this.canonicalAuthority);\n }\n\n const cloudDiscoverySource = await this.updateCloudDiscoveryMetadata(metadataEntity);\n this.canonicalAuthority = this.canonicalAuthority.replace(this.hostnameAndPort, metadataEntity.preferred_network);\n const endpointSource = await this.updateEndpointMetadata(metadataEntity);\n\n if (cloudDiscoverySource !== AuthorityMetadataSource.CACHE && endpointSource !== AuthorityMetadataSource.CACHE) {\n // Reset the expiration time unless both values came from a successful cache lookup\n metadataEntity.resetExpiresAt();\n metadataEntity.updateCanonicalAuthority(this.canonicalAuthority);\n }\n\n const cacheKey = this.cacheManager.generateAuthorityMetadataCacheKey(metadataEntity.preferred_cache);\n this.cacheManager.setAuthorityMetadata(cacheKey, metadataEntity);\n this.metadata = metadataEntity;\n }\n\n /**\n * Update AuthorityMetadataEntity with new endpoints and return where the information came from\n * @param metadataEntity\n */\n private async updateEndpointMetadata(metadataEntity: AuthorityMetadataEntity): Promise<AuthorityMetadataSource> {\n let metadata = this.getEndpointMetadataFromConfig();\n if (metadata) {\n metadataEntity.updateEndpointMetadata(metadata, false);\n return AuthorityMetadataSource.CONFIG;\n }\n\n if (this.isAuthoritySameType(metadataEntity) && metadataEntity.endpointsFromNetwork && !metadataEntity.isExpired()) {\n // No need to update\n return AuthorityMetadataSource.CACHE;\n }\n\n let harcodedMetadata = this.getEndpointMetadataFromHardcodedValues();\n metadata = await this.getEndpointMetadataFromNetwork();\n if (metadata) {\n // If the user prefers to use an azure region replace the global endpoints with regional information.\n if (this.authorityOptions.azureRegionConfiguration?.azureRegion) {\n metadata = await this.updateMetadataWithRegionalInformation(metadata);\n }\n\n metadataEntity.updateEndpointMetadata(metadata, true);\n return AuthorityMetadataSource.NETWORK;\n } \n\n if (harcodedMetadata && !this.authorityOptions.skipAuthorityMetadataCache) {\n // If the user prefers to use an azure region replace the global endpoints with regional information.\n if (this.authorityOptions.azureRegionConfiguration?.azureRegion) {\n harcodedMetadata = await this.updateMetadataWithRegionalInformation(\n harcodedMetadata\n );\n }\n\n metadataEntity.updateEndpointMetadata(harcodedMetadata, false);\n return AuthorityMetadataSource.HARDCODED_VALUES;\n } else {\n throw ClientAuthError.createUnableToGetOpenidConfigError(\n this.defaultOpenIdConfigurationEndpoint\n );\n }\n }\n\n /**\n * Compares the number of url components after the domain to determine if the cached authority metadata can be used for the requested authority\n * Protects against same domain different authority such as login.microsoftonline.com/tenant and login.microsoftonline.com/tfp/tenant/policy\n * @param metadataEntity\n */\n private isAuthoritySameType(metadataEntity: AuthorityMetadataEntity): boolean {\n const cachedAuthorityUrl = new UrlString(metadataEntity.canonical_authority);\n const cachedParts = cachedAuthorityUrl.getUrlComponents().PathSegments;\n\n return cachedParts.length === this.canonicalAuthorityUrlComponents.PathSegments.length;\n }\n\n /**\n * Parse authorityMetadata config option\n */\n private getEndpointMetadataFromConfig(): OpenIdConfigResponse | null {\n if (this.authorityOptions.authorityMetadata) {\n try {\n return JSON.parse(this.authorityOptions.authorityMetadata) as OpenIdConfigResponse;\n } catch (e) {\n throw ClientConfigurationError.createInvalidAuthorityMetadataError();\n }\n }\n\n return null;\n }\n\n /**\n * Gets OAuth endpoints from the given OpenID configuration endpoint.\n * \n * @param hasHardcodedMetadata boolean\n */\n private async getEndpointMetadataFromNetwork(): Promise<OpenIdConfigResponse | null> {\n const options: ImdsOptions = {};\n if (this.proxyUrl) {\n options.proxyUrl = this.proxyUrl;\n }\n\n /*\n * TODO: Add a timeout if the authority exists in our library's \n * hardcoded list of metadata\n */\n\n try {\n const response = await this.networkInterface.sendGetRequestAsync<OpenIdConfigResponse>(this.defaultOpenIdConfigurationEndpoint, options);\n return isOpenIdConfigResponse(response.body) ? response.body : null;\n } catch (e) {\n return null;\n }\n }\n\n /**\n * Get OAuth endpoints for common authorities.\n */\n private getEndpointMetadataFromHardcodedValues(): OpenIdConfigResponse | null {\n if (this.canonicalAuthority in EndpointMetadata) {\n return EndpointMetadata[this.canonicalAuthority];\n }\n\n return null;\n }\n\n /**\n * Update the retrieved metadata with regional information.\n */\n private async updateMetadataWithRegionalInformation(metadata: OpenIdConfigResponse): Promise<OpenIdConfigResponse> {\n const autodetectedRegionName = await this.regionDiscovery.detectRegion(this.authorityOptions.azureRegionConfiguration?.environmentRegion, this.regionDiscoveryMetadata, this.proxyUrl);\n\n const azureRegion = this.authorityOptions.azureRegionConfiguration?.azureRegion === Constants.AZURE_REGION_AUTO_DISCOVER_FLAG\n ? autodetectedRegionName\n : this.authorityOptions.azureRegionConfiguration?.azureRegion;\n\n if (this.authorityOptions.azureRegionConfiguration?.azureRegion === Constants.AZURE_REGION_AUTO_DISCOVER_FLAG) {\n this.regionDiscoveryMetadata.region_outcome = autodetectedRegionName ?\n RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_SUCCESSFUL :\n RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_FAILED;\n } else {\n if (autodetectedRegionName) {\n this.regionDiscoveryMetadata.region_outcome = (this.authorityOptions.azureRegionConfiguration?.azureRegion === autodetectedRegionName) ?\n RegionDiscoveryOutcomes.CONFIGURED_MATCHES_DETECTED :\n RegionDiscoveryOutcomes.CONFIGURED_NOT_DETECTED;\n } else {\n this.regionDiscoveryMetadata.region_outcome = RegionDiscoveryOutcomes.CONFIGURED_NO_AUTO_DETECTION;\n }\n }\n\n if (azureRegion) {\n this.regionDiscoveryMetadata.region_used = azureRegion;\n return Authority.replaceWithRegionalInformation(metadata, azureRegion);\n }\n\n return metadata;\n }\n\n /**\n * Updates the AuthorityMetadataEntity with new aliases, preferred_network and preferred_cache and returns where the information was retrived from\n * @param cachedMetadata\n * @param newMetadata\n */\n private async updateCloudDiscoveryMetadata(metadataEntity: AuthorityMetadataEntity): Promise<AuthorityMetadataSource> {\n let metadata = this.getCloudDiscoveryMetadataFromConfig();\n if (metadata) {\n metadataEntity.updateCloudDiscoveryMetadata(metadata, false);\n return AuthorityMetadataSource.CONFIG;\n }\n\n // If The cached metadata came from config but that config was not passed to this instance, we must go to the network\n if (this.isAuthoritySameType(metadataEntity) && metadataEntity.aliasesFromNetwork && !metadataEntity.isExpired()) {\n // No need to update\n return AuthorityMetadataSource.CACHE;\n }\n\n const harcodedMetadata = this.getCloudDiscoveryMetadataFromHarcodedValues();\n metadata = await this.getCloudDiscoveryMetadataFromNetwork();\n if (metadata) {\n metadataEntity.updateCloudDiscoveryMetadata(metadata, true);\n return AuthorityMetadataSource.NETWORK;\n } \n \n if (harcodedMetadata && !this.options.skipAuthorityMetadataCache) {\n metadataEntity.updateCloudDiscoveryMetadata(harcodedMetadata, false);\n return AuthorityMetadataSource.HARDCODED_VALUES;\n } else {\n // Metadata could not be obtained from config, cache or network\n throw ClientConfigurationError.createUntrustedAuthorityError();\n }\n }\n\n /**\n * Parse cloudDiscoveryMetadata config or check knownAuthorities\n */\n private getCloudDiscoveryMetadataFromConfig(): CloudDiscoveryMetadata | null {\n // Check if network response was provided in config\n if (this.authorityOptions.cloudDiscoveryMetadata) {\n try {\n const parsedResponse = JSON.parse(this.authorityOptions.cloudDiscoveryMetadata) as CloudInstanceDiscoveryResponse;\n const metadata = Authority.getCloudDiscoveryMetadataFromNetworkResponse(parsedResponse.metadata, this.hostnameAndPort);\n if (metadata) {\n return metadata;\n }\n } catch (e) {\n throw ClientConfigurationError.createInvalidCloudDiscoveryMetadataError();\n }\n }\n\n // If cloudDiscoveryMetadata is empty or does not contain the host, check knownAuthorities\n if (this.isInKnownAuthorities()) {\n return Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\n }\n\n return null;\n }\n\n /**\n * Called to get metadata from network if CloudDiscoveryMetadata was not populated by config\n * \n * @param hasHardcodedMetadata boolean\n */\n private async getCloudDiscoveryMetadataFromNetwork(): Promise<CloudDiscoveryMetadata | null> {\n const instanceDiscoveryEndpoint = `${Constants.AAD_INSTANCE_DISCOVERY_ENDPT}${this.canonicalAuthority}oauth2/v2.0/authorize`;\n const options: ImdsOptions = {};\n if (this.proxyUrl) {\n options.proxyUrl = this.proxyUrl;\n }\n\n /*\n * TODO: Add a timeout if the authority exists in our library's\n * hardcoded list of metadata\n */\n\n let match = null;\n try {\n const response =\n await this.networkInterface.sendGetRequestAsync<CloudInstanceDiscoveryResponse>(\n instanceDiscoveryEndpoint,\n options\n );\n const metadata = isCloudInstanceDiscoveryResponse(response.body)\n ? response.body.metadata\n : [];\n if (metadata.length === 0) {\n // If no metadata is returned, authority is untrusted\n return null;\n }\n match = Authority.getCloudDiscoveryMetadataFromNetworkResponse(\n metadata,\n this.hostnameAndPort\n );\n } catch (e) {\n return null;\n }\n\n if (!match) {\n // Custom Domain scenario, host is trusted because Instance Discovery call succeeded\n match = Authority.createCloudDiscoveryMetadataFromHost(\n this.hostnameAndPort\n );\n }\n return match;\n }\n\n /**\n * Get cloud discovery metadata for common authorities \n */\n private getCloudDiscoveryMetadataFromHarcodedValues(): CloudDiscoveryMetadata | null {\n if (this.canonicalAuthority in InstanceDiscoveryMetadata) {\n return InstanceDiscoveryMetadata[this.canonicalAuthority];\n }\n\n return null;\n }\n\n /**\n * Helper function to determine if this host is included in the knownAuthorities config option\n */\n private isInKnownAuthorities(): boolean {\n const matches = this.authorityOptions.knownAuthorities.filter((authority) => {\n return UrlString.getDomainFromUrl(authority).toLowerCase() === this.hostnameAndPort;\n });\n\n return matches.length > 0;\n }\n\n /**\n * helper function to populate the authority based on azureCloudOptions\n * @param authorityString\n * @param azureCloudOptions\n */\n static generateAuthority(authorityString: string, azureCloudOptions?: AzureCloudOptions): string {\n let authorityAzureCloudInstance;\n\n if (azureCloudOptions && azureCloudOptions.azureCloudInstance !== AzureCloudInstance.None) {\n const tenant = azureCloudOptions.tenant ? azureCloudOptions.tenant : Constants.DEFAULT_COMMON_TENANT;\n authorityAzureCloudInstance = `${azureCloudOptions.azureCloudInstance}/${tenant}/`;\n }\n\n return authorityAzureCloudInstance ? authorityAzureCloudInstance : authorityString;\n }\n\n /**\n * Creates cloud discovery metadata object from a given host\n * @param host\n */\n static createCloudDiscoveryMetadataFromHost(host: string): CloudDiscoveryMetadata {\n return {\n preferred_network: host,\n preferred_cache: host,\n aliases: [host]\n };\n }\n\n /**\n * Searches instance discovery network response for the entry that contains the host in the aliases list\n * @param response\n * @param authority\n */\n static getCloudDiscoveryMetadataFromNetworkResponse(response: CloudDiscoveryMetadata[], authority: string): CloudDiscoveryMetadata | null {\n for (let i = 0; i < response.length; i++) {\n const metadata = response[i];\n if (metadata.aliases.indexOf(authority) > -1) {\n return metadata;\n }\n }\n\n return null;\n }\n\n /**\n * helper function to generate environment from authority object\n */\n getPreferredCache(): string {\n if(this.discoveryComplete()) {\n return this.metadata.preferred_cache;\n } else {\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\n }\n }\n\n /**\n * Returns whether or not the provided host is an alias of this authority instance\n * @param host\n */\n isAlias(host: string): boolean {\n return this.metadata.aliases.indexOf(host) > -1;\n }\n\n /**\n * Checks whether the provided host is that of a public cloud authority\n *\n * @param authority string\n * @returns bool\n */\n static isPublicCloudAuthority(host: string): boolean {\n return Constants.KNOWN_PUBLIC_CLOUDS.indexOf(host) >= 0;\n }\n\n /**\n * Rebuild the authority string with the region\n *\n * @param host string\n * @param region string\n */\n static buildRegionalAuthorityString(host: string, region: string, queryString?: string): string {\n // Create and validate a Url string object with the initial authority string\n const authorityUrlInstance = new UrlString(host);\n authorityUrlInstance.validateAsUri();\n\n const authorityUrlParts = authorityUrlInstance.getUrlComponents();\n\n let hostNameAndPort= `${region}.${authorityUrlParts.HostNameAndPort}`;\n\n if (this.isPublicCloudAuthority(authorityUrlParts.HostNameAndPort)) {\n hostNameAndPort = `${region}.${Constants.REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX}`;\n }\n\n // Include the query string portion of the url\n const url = UrlString.constructAuthorityUriFromObject({\n ...authorityUrlInstance.getUrlComponents(),\n HostNameAndPort: hostNameAndPort\n }).urlString;\n\n // Add the query string if a query string was provided\n if (queryString) return `${url}?${queryString}`;\n\n return url;\n }\n\n /**\n * Replace the endpoints in the metadata object with their regional equivalents.\n *\n * @param metadata OpenIdConfigResponse\n * @param azureRegion string\n */\n static replaceWithRegionalInformation(metadata: OpenIdConfigResponse, azureRegion: string): OpenIdConfigResponse {\n metadata.authorization_endpoint = Authority.buildRegionalAuthorityString(metadata.authorization_endpoint, azureRegion);\n // TODO: Enquire on whether we should leave the query string or remove it before releasing the feature\n metadata.token_endpoint = Authority.buildRegionalAuthorityString(metadata.token_endpoint, azureRegion, \"allowestsrnonmsi=true\");\n\n if (metadata.end_session_endpoint) {\n metadata.end_session_endpoint = Authority.buildRegionalAuthorityString(metadata.end_session_endpoint, azureRegion);\n }\n\n return metadata;\n }\n}\n\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { CloudDiscoveryMetadata } from \"./CloudDiscoveryMetadata\";\n\n/**\n * The OpenID Configuration Endpoint Response type. Used by the authority class to get relevant OAuth endpoints.\n */\nexport type CloudInstanceDiscoveryResponse = {\n tenant_discovery_endpoint: string;\n metadata: Array<CloudDiscoveryMetadata>;\n};\n\nexport function isCloudInstanceDiscoveryResponse(response: object): boolean {\n return (\n response.hasOwnProperty(\"tenant_discovery_endpoint\") &&\n response.hasOwnProperty(\"metadata\")\n );\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Authority } from \"./Authority\";\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\nimport { INetworkModule } from \"../network/INetworkModule\";\nimport { StringUtils } from \"../utils/StringUtils\";\nimport { ClientAuthError } from \"../error/ClientAuthError\";\nimport { ICacheManager } from \"../cache/interface/ICacheManager\";\nimport { AuthorityOptions } from \"./AuthorityOptions\";\n\nexport class AuthorityFactory {\n\n /**\n * Create an authority object of the correct type based on the url\n * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs)\n *\n * Also performs endpoint discovery.\n *\n * @param authorityUri\n * @param networkClient\n * @param protocolMode\n */\n static async createDiscoveredInstance(authorityUri: string, networkClient: INetworkModule, cacheManager: ICacheManager, authorityOptions: AuthorityOptions, proxyUrl?: string): Promise<Authority> {\n // Initialize authority and perform discovery endpoint check.\n const acquireTokenAuthority: Authority = AuthorityFactory.createInstance(authorityUri, networkClient, cacheManager, authorityOptions, proxyUrl);\n\n try {\n await acquireTokenAuthority.resolveEndpointsAsync();\n return acquireTokenAuthority;\n } catch (e) {\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(e);\n }\n }\n\n /**\n * Create an authority object of the correct type based on the url\n * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs)\n *\n * Does not perform endpoint discovery.\n *\n * @param authorityUrl\n * @param networkInterface\n * @param protocolMode\n */\n static createInstance(authorityUrl: string, networkInterface: INetworkModule, cacheManager: ICacheManager, authorityOptions: AuthorityOptions, proxyUrl?: string): Authority {\n // Throw error if authority url is empty\n if (StringUtils.isEmpty(authorityUrl)) {\n throw ClientConfigurationError.createUrlEmptyError();\n }\n\n return new Authority(authorityUrl, networkInterface, cacheManager, authorityOptions, proxyUrl);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { SERVER_TELEM_CONSTANTS, Separators, CacheOutcome, Constants, RegionDiscoverySources, RegionDiscoveryOutcomes } from \"../../utils/Constants\";\nimport { CacheManager } from \"../../cache/CacheManager\";\nimport { AuthError } from \"../../error/AuthError\";\nimport { ServerTelemetryRequest } from \"./ServerTelemetryRequest\";\nimport { ServerTelemetryEntity } from \"../../cache/entities/ServerTelemetryEntity\";\nimport { StringUtils } from \"../../utils/StringUtils\";\nimport { RegionDiscoveryMetadata } from \"../../authority/RegionDiscoveryMetadata\";\n\nexport class ServerTelemetryManager {\n private cacheManager: CacheManager;\n private apiId: number;\n private correlationId: string;\n private telemetryCacheKey: string;\n private wrapperSKU: String;\n private wrapperVer: String;\n private regionUsed: string | undefined;\n private regionSource: RegionDiscoverySources | undefined;\n private regionOutcome: RegionDiscoveryOutcomes | undefined;\n private cacheOutcome: CacheOutcome = CacheOutcome.NO_CACHE_HIT;\n\n constructor(telemetryRequest: ServerTelemetryRequest, cacheManager: CacheManager) {\n this.cacheManager = cacheManager;\n this.apiId = telemetryRequest.apiId;\n this.correlationId = telemetryRequest.correlationId;\n this.wrapperSKU = telemetryRequest.wrapperSKU || Constants.EMPTY_STRING;\n this.wrapperVer = telemetryRequest.wrapperVer || Constants.EMPTY_STRING;\n\n this.telemetryCacheKey = SERVER_TELEM_CONSTANTS.CACHE_KEY + Separators.CACHE_KEY_SEPARATOR + telemetryRequest.clientId;\n }\n\n /**\n * API to add MSER Telemetry to request\n */\n generateCurrentRequestHeaderValue(): string {\n const request = `${this.apiId}${SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR}${this.cacheOutcome}`;\n const platformFields = [this.wrapperSKU, this.wrapperVer].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\n const regionDiscoveryFields = this.getRegionDiscoveryFields();\n const requestWithRegionDiscoveryFields = [request, regionDiscoveryFields].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\n\n return [SERVER_TELEM_CONSTANTS.SCHEMA_VERSION, requestWithRegionDiscoveryFields, platformFields].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR);\n }\n\n /**\n * API to add MSER Telemetry for the last failed request\n */\n generateLastRequestHeaderValue(): string {\n const lastRequests = this.getLastRequests();\n\n const maxErrors = ServerTelemetryManager.maxErrorsToSend(lastRequests);\n const failedRequests = lastRequests.failedRequests.slice(0, 2*maxErrors).join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\n const errors = lastRequests.errors.slice(0, maxErrors).join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\n const errorCount = lastRequests.errors.length;\n\n // Indicate whether this header contains all data or partial data\n const overflow = maxErrors < errorCount ? SERVER_TELEM_CONSTANTS.OVERFLOW_TRUE : SERVER_TELEM_CONSTANTS.OVERFLOW_FALSE;\n const platformFields = [errorCount, overflow].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\n\n return [SERVER_TELEM_CONSTANTS.SCHEMA_VERSION, lastRequests.cacheHits, failedRequests, errors, platformFields].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR);\n }\n\n /**\n * API to cache token failures for MSER data capture\n * @param error\n */\n cacheFailedRequest(error: AuthError): void {\n const lastRequests = this.getLastRequests();\n if (lastRequests.errors.length >= SERVER_TELEM_CONSTANTS.MAX_CACHED_ERRORS) {\n // Remove a cached error to make room, first in first out\n lastRequests.failedRequests.shift(); // apiId\n lastRequests.failedRequests.shift(); // correlationId\n lastRequests.errors.shift();\n }\n \n lastRequests.failedRequests.push(this.apiId, this.correlationId);\n\n if (!StringUtils.isEmpty(error.subError)) {\n lastRequests.errors.push(error.subError);\n } else if (!StringUtils.isEmpty(error.errorCode)) {\n lastRequests.errors.push(error.errorCode);\n } else if (!!error && error.toString()) {\n lastRequests.errors.push(error.toString());\n } else {\n lastRequests.errors.push(SERVER_TELEM_CONSTANTS.UNKNOWN_ERROR);\n }\n\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests);\n\n return;\n }\n\n /**\n * Update server telemetry cache entry by incrementing cache hit counter\n */\n incrementCacheHits(): number {\n const lastRequests = this.getLastRequests();\n lastRequests.cacheHits += 1;\n\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests);\n return lastRequests.cacheHits;\n }\n\n /**\n * Get the server telemetry entity from cache or initialize a new one\n */\n getLastRequests(): ServerTelemetryEntity {\n const initialValue: ServerTelemetryEntity = new ServerTelemetryEntity();\n const lastRequests = this.cacheManager.getServerTelemetry(this.telemetryCacheKey) as ServerTelemetryEntity;\n\n return lastRequests || initialValue;\n }\n\n /**\n * Remove server telemetry cache entry\n */\n clearTelemetryCache(): void {\n const lastRequests = this.getLastRequests();\n const numErrorsFlushed = ServerTelemetryManager.maxErrorsToSend(lastRequests);\n const errorCount = lastRequests.errors.length;\n if (numErrorsFlushed === errorCount) {\n // All errors were sent on last request, clear Telemetry cache\n this.cacheManager.removeItem(this.telemetryCacheKey);\n } else {\n // Partial data was flushed to server, construct a new telemetry cache item with errors that were not flushed\n const serverTelemEntity = new ServerTelemetryEntity();\n serverTelemEntity.failedRequests = lastRequests.failedRequests.slice(numErrorsFlushed*2); // failedRequests contains 2 items for each error\n serverTelemEntity.errors = lastRequests.errors.slice(numErrorsFlushed);\n\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, serverTelemEntity);\n }\n }\n\n /**\n * Returns the maximum number of errors that can be flushed to the server in the next network request\n * @param serverTelemetryEntity\n */\n static maxErrorsToSend(serverTelemetryEntity: ServerTelemetryEntity): number {\n let i;\n let maxErrors = 0;\n let dataSize = 0;\n const errorCount = serverTelemetryEntity.errors.length;\n for (i = 0; i < errorCount; i++) {\n // failedRequests parameter contains pairs of apiId and correlationId, multiply index by 2 to preserve pairs\n const apiId = serverTelemetryEntity.failedRequests[2*i] || Constants.EMPTY_STRING;\n const correlationId = serverTelemetryEntity.failedRequests[2*i + 1] || Constants.EMPTY_STRING;\n const errorCode = serverTelemetryEntity.errors[i] || Constants.EMPTY_STRING;\n\n // Count number of characters that would be added to header, each character is 1 byte. Add 3 at the end to account for separators\n dataSize += apiId.toString().length + correlationId.toString().length + errorCode.length + 3;\n\n if (dataSize < SERVER_TELEM_CONSTANTS.MAX_LAST_HEADER_BYTES) {\n // Adding this entry to the header would still keep header size below the limit\n maxErrors += 1;\n } else {\n break;\n }\n }\n\n return maxErrors;\n }\n\n /**\n * Get the region discovery fields\n * \n * @returns string\n */\n getRegionDiscoveryFields(): string {\n const regionDiscoveryFields: string[] = [];\n\n regionDiscoveryFields.push(this.regionUsed || Constants.EMPTY_STRING);\n regionDiscoveryFields.push(this.regionSource || Constants.EMPTY_STRING);\n regionDiscoveryFields.push(this.regionOutcome || Constants.EMPTY_STRING);\n\n return regionDiscoveryFields.join(\",\");\n }\n\n /**\n * Update the region discovery metadata\n * \n * @param regionDiscoveryMetadata\n * @returns void\n */\n updateRegionDiscoveryMetadata(regionDiscoveryMetadata: RegionDiscoveryMetadata): void {\n this.regionUsed = regionDiscoveryMetadata.region_used;\n this.regionSource = regionDiscoveryMetadata.region_source;\n this.regionOutcome = regionDiscoveryMetadata.region_outcome;\n }\n\n /**\n * Set cache outcome \n */\n setCacheOutcome(cacheOutcome: CacheOutcome): void {\n this.cacheOutcome = cacheOutcome;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ICrypto, INetworkModule, Logger, AuthenticationResult, AccountInfo, AccountEntity, BaseAuthRequest, AuthenticationScheme, UrlString, ServerTelemetryManager, ServerTelemetryRequest, ClientConfigurationError, StringUtils, Authority, AuthorityOptions, AuthorityFactory, IPerformanceClient } from \"@azure/msal-common\";\nimport { BrowserConfiguration } from \"../config/Configuration\";\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\nimport { EventHandler } from \"../event/EventHandler\";\nimport { EndSessionRequest } from \"../request/EndSessionRequest\";\nimport { RedirectRequest } from \"../request/RedirectRequest\";\nimport { PopupRequest } from \"../request/PopupRequest\";\nimport { SsoSilentRequest } from \"../request/SsoSilentRequest\";\nimport { version } from \"../packageMetadata\";\nimport { BrowserConstants } from \"../utils/BrowserConstants\";\nimport { BrowserUtils } from \"../utils/BrowserUtils\";\nimport { INavigationClient } from \"../navigation/INavigationClient\";\nimport { NativeMessageHandler } from \"../broker/nativeBroker/NativeMessageHandler\";\n\nexport abstract class BaseInteractionClient {\n\n protected config: BrowserConfiguration;\n protected browserStorage: BrowserCacheManager;\n protected browserCrypto: ICrypto;\n protected networkClient: INetworkModule;\n protected logger: Logger;\n protected eventHandler: EventHandler;\n protected navigationClient: INavigationClient;\n protected nativeMessageHandler: NativeMessageHandler | undefined;\n protected correlationId: string;\n protected performanceClient: IPerformanceClient;\n\n constructor(config: BrowserConfiguration, storageImpl: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, performanceClient: IPerformanceClient, nativeMessageHandler?: NativeMessageHandler, correlationId?: string) {\n this.config = config;\n this.browserStorage = storageImpl;\n this.browserCrypto = browserCrypto;\n this.networkClient = this.config.system.networkClient;\n this.eventHandler = eventHandler;\n this.navigationClient = navigationClient;\n this.nativeMessageHandler = nativeMessageHandler;\n this.correlationId = correlationId || this.browserCrypto.createNewGuid();\n this.logger = logger.clone(BrowserConstants.MSAL_SKU, version, this.correlationId);\n this.performanceClient = performanceClient;\n }\n\n abstract acquireToken(request: RedirectRequest|PopupRequest|SsoSilentRequest): Promise<AuthenticationResult|void>;\n\n abstract logout(request: EndSessionRequest): Promise<void>;\n\n protected async clearCacheOnLogout(account?: AccountInfo| null): Promise<void> {\n if (account) {\n if (AccountEntity.accountInfoIsEqual(account, this.browserStorage.getActiveAccount(), false)) {\n this.logger.verbose(\"Setting active account to null\");\n this.browserStorage.setActiveAccount(null);\n }\n // Clear given account.\n try {\n await this.browserStorage.removeAccount(AccountEntity.generateAccountCacheKey(account));\n this.logger.verbose(\"Cleared cache items belonging to the account provided in the logout request.\");\n } catch (error) {\n this.logger.error(\"Account provided in logout request was not found. Local cache unchanged.\");\n }\n } else {\n try {\n this.logger.verbose(\"No account provided in logout request, clearing all cache items.\", this.correlationId);\n // Clear all accounts and tokens\n await this.browserStorage.clear();\n // Clear any stray keys from IndexedDB\n await this.browserCrypto.clearKeystore();\n } catch(e) {\n this.logger.error(\"Attempted to clear all MSAL cache items and failed. Local cache unchanged.\");\n }\n }\n }\n\n /**\n * Initializer function for all request APIs\n * @param request\n */\n protected async initializeBaseRequest(request: Partial<BaseAuthRequest>): Promise<BaseAuthRequest> {\n this.logger.verbose(\"Initializing BaseAuthRequest\");\n const authority = request.authority || this.config.auth.authority;\n\n const scopes = [...((request && request.scopes) || [])];\n\n const validatedRequest: BaseAuthRequest = {\n ...request,\n correlationId: this.correlationId,\n authority,\n scopes\n };\n\n // Set authenticationScheme to BEARER if not explicitly set in the request\n if (!validatedRequest.authenticationScheme) {\n validatedRequest.authenticationScheme = AuthenticationScheme.BEARER;\n this.logger.verbose(\"Authentication Scheme wasn't explicitly set in request, defaulting to \\\"Bearer\\\" request\");\n } else {\n if (validatedRequest.authenticationScheme === AuthenticationScheme.SSH) {\n if (!request.sshJwk) {\n throw ClientConfigurationError.createMissingSshJwkError();\n }\n if(!request.sshKid) {\n throw ClientConfigurationError.createMissingSshKidError();\n }\n }\n this.logger.verbose(`Authentication Scheme set to \"${validatedRequest.authenticationScheme}\" as configured in Auth request`);\n }\n\n // Set requested claims hash if claims were requested\n if (request.claims && !StringUtils.isEmpty(request.claims)) {\n validatedRequest.requestedClaimsHash = await this.browserCrypto.hashString(request.claims);\n }\n\n return validatedRequest;\n }\n\n /**\n *\n * Use to get the redirect uri configured in MSAL or null.\n * @param requestRedirectUri\n * @returns Redirect URL\n *\n */\n getRedirectUri(requestRedirectUri?: string): string {\n this.logger.verbose(\"getRedirectUri called\");\n const redirectUri = requestRedirectUri || this.config.auth.redirectUri || BrowserUtils.getCurrentUri();\n return UrlString.getAbsoluteUrl(redirectUri, BrowserUtils.getCurrentUri());\n }\n\n /**\n *\n * @param apiId\n * @param correlationId\n * @param forceRefresh\n */\n protected initializeServerTelemetryManager(apiId: number, forceRefresh?: boolean): ServerTelemetryManager {\n this.logger.verbose(\"initializeServerTelemetryManager called\");\n const telemetryPayload: ServerTelemetryRequest = {\n clientId: this.config.auth.clientId,\n correlationId: this.correlationId,\n apiId: apiId,\n forceRefresh: forceRefresh || false,\n wrapperSKU: this.browserStorage.getWrapperMetadata()[0],\n wrapperVer: this.browserStorage.getWrapperMetadata()[1]\n };\n\n return new ServerTelemetryManager(telemetryPayload, this.browserStorage);\n }\n\n /**\n * Used to get a discovered version of the default authority.\n * @param requestAuthority\n * @param requestCorrelationId\n */\n protected async getDiscoveredAuthority(requestAuthority?: string): Promise<Authority> {\n this.logger.verbose(\"getDiscoveredAuthority called\");\n const authorityOptions: AuthorityOptions = {\n protocolMode: this.config.auth.protocolMode,\n knownAuthorities: this.config.auth.knownAuthorities,\n cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata,\n authorityMetadata: this.config.auth.authorityMetadata\n };\n\n if (requestAuthority) {\n this.logger.verbose(\"Creating discovered authority with request authority\");\n return await AuthorityFactory.createDiscoveredInstance(requestAuthority, this.config.system.networkClient, this.browserStorage, authorityOptions);\n }\n\n this.logger.verbose(\"Creating discovered authority with configured authority\");\n return await AuthorityFactory.createDiscoveredInstance(this.config.auth.authority, this.config.system.networkClient, this.browserStorage, authorityOptions);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ServerTelemetryManager, CommonAuthorizationCodeRequest, Constants, AuthorizationCodeClient, ClientConfiguration, AuthorityOptions, Authority, AuthorityFactory, ServerAuthorizationCodeResponse, UrlString, CommonEndSessionRequest, ProtocolUtils, ResponseMode, StringUtils, IdTokenClaims, AccountInfo, AzureCloudOptions, PerformanceEvents, AuthError } from \"@azure/msal-common\";\nimport { BaseInteractionClient } from \"./BaseInteractionClient\";\nimport { AuthorizationUrlRequest } from \"../request/AuthorizationUrlRequest\";\nimport { BrowserConstants, InteractionType } from \"../utils/BrowserConstants\";\nimport { version } from \"../packageMetadata\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { BrowserProtocolUtils, BrowserStateObject } from \"../utils/BrowserProtocolUtils\";\nimport { EndSessionRequest } from \"../request/EndSessionRequest\";\nimport { BrowserUtils } from \"../utils/BrowserUtils\";\nimport { RedirectRequest } from \"../request/RedirectRequest\";\nimport { PopupRequest } from \"../request/PopupRequest\";\nimport { SsoSilentRequest } from \"../request/SsoSilentRequest\";\n\n/**\n * Defines the class structure and helper functions used by the \"standard\", non-brokered auth flows (popup, redirect, silent (RT), silent (iframe))\n */\nexport abstract class StandardInteractionClient extends BaseInteractionClient {\n /**\n * Generates an auth code request tied to the url request.\n * @param request\n */\n protected async initializeAuthorizationCodeRequest(request: AuthorizationUrlRequest): Promise<CommonAuthorizationCodeRequest> {\n this.logger.verbose(\"initializeAuthorizationRequest called\", request.correlationId);\n const generatedPkceParams = await this.browserCrypto.generatePkceCodes();\n\n const authCodeRequest: CommonAuthorizationCodeRequest = {\n ...request,\n redirectUri: request.redirectUri,\n code: Constants.EMPTY_STRING,\n codeVerifier: generatedPkceParams.verifier\n };\n\n request.codeChallenge = generatedPkceParams.challenge;\n request.codeChallengeMethod = Constants.S256_CODE_CHALLENGE_METHOD;\n\n return authCodeRequest;\n }\n\n /**\n * Initializer for the logout request.\n * @param logoutRequest\n */\n protected initializeLogoutRequest(logoutRequest?: EndSessionRequest): CommonEndSessionRequest {\n this.logger.verbose(\"initializeLogoutRequest called\", logoutRequest?.correlationId);\n\n const validLogoutRequest: CommonEndSessionRequest = {\n correlationId: this.correlationId || this.browserCrypto.createNewGuid(),\n ...logoutRequest\n };\n\n /**\n * Set logout_hint to be login_hint from ID Token Claims if present\n * and logoutHint attribute wasn't manually set in logout request\n */\n if (logoutRequest) {\n // If logoutHint isn't set and an account was passed in, try to extract logoutHint from ID Token Claims\n if (!logoutRequest.logoutHint) {\n if(logoutRequest.account) {\n const logoutHint = this.getLogoutHintFromIdTokenClaims(logoutRequest.account);\n if (logoutHint) {\n this.logger.verbose(\"Setting logoutHint to login_hint ID Token Claim value for the account provided\");\n validLogoutRequest.logoutHint = logoutHint;\n }\n } else {\n this.logger.verbose(\"logoutHint was not set and account was not passed into logout request, logoutHint will not be set\");\n }\n } else {\n this.logger.verbose(\"logoutHint has already been set in logoutRequest\");\n }\n } else {\n this.logger.verbose(\"logoutHint will not be set since no logout request was configured\");\n }\n\n /*\n * Only set redirect uri if logout request isn't provided or the set uri isn't null.\n * Otherwise, use passed uri, config, or current page.\n */\n if (!logoutRequest || logoutRequest.postLogoutRedirectUri !== null) {\n if (logoutRequest && logoutRequest.postLogoutRedirectUri) {\n this.logger.verbose(\"Setting postLogoutRedirectUri to uri set on logout request\", validLogoutRequest.correlationId);\n validLogoutRequest.postLogoutRedirectUri = UrlString.getAbsoluteUrl(logoutRequest.postLogoutRedirectUri, BrowserUtils.getCurrentUri());\n } else if (this.config.auth.postLogoutRedirectUri === null) {\n this.logger.verbose(\"postLogoutRedirectUri configured as null and no uri set on request, not passing post logout redirect\", validLogoutRequest.correlationId);\n } else if (this.config.auth.postLogoutRedirectUri) {\n this.logger.verbose(\"Setting postLogoutRedirectUri to configured uri\", validLogoutRequest.correlationId);\n validLogoutRequest.postLogoutRedirectUri = UrlString.getAbsoluteUrl(this.config.auth.postLogoutRedirectUri, BrowserUtils.getCurrentUri());\n } else {\n this.logger.verbose(\"Setting postLogoutRedirectUri to current page\", validLogoutRequest.correlationId);\n validLogoutRequest.postLogoutRedirectUri = UrlString.getAbsoluteUrl(BrowserUtils.getCurrentUri(), BrowserUtils.getCurrentUri());\n }\n } else {\n this.logger.verbose(\"postLogoutRedirectUri passed as null, not setting post logout redirect uri\", validLogoutRequest.correlationId);\n }\n\n return validLogoutRequest;\n }\n\n /**\n * Parses login_hint ID Token Claim out of AccountInfo object to be used as\n * logout_hint in end session request.\n * @param account\n */\n protected getLogoutHintFromIdTokenClaims(account: AccountInfo): string | null {\n const idTokenClaims: IdTokenClaims | undefined = account.idTokenClaims;\n if (idTokenClaims) {\n if (idTokenClaims.login_hint) {\n return idTokenClaims.login_hint;\n } else {\n this.logger.verbose(\"The ID Token Claims tied to the provided account do not contain a login_hint claim, logoutHint will not be added to logout request\");\n }\n } else {\n this.logger.verbose(\"The provided account does not contain ID Token Claims, logoutHint will not be added to logout request\");\n }\n\n return null;\n }\n\n /**\n * Creates an Authorization Code Client with the given authority, or the default authority.\n * @param serverTelemetryManager\n * @param authorityUrl\n */\n protected async createAuthCodeClient(serverTelemetryManager: ServerTelemetryManager, authorityUrl?: string, requestAzureCloudOptions?: AzureCloudOptions): Promise<AuthorizationCodeClient> {\n // Create auth module.\n const clientConfig = await this.getClientConfiguration(serverTelemetryManager, authorityUrl, requestAzureCloudOptions);\n return new AuthorizationCodeClient(clientConfig);\n }\n\n /**\n * Creates a Client Configuration object with the given request authority, or the default authority.\n * @param serverTelemetryManager\n * @param requestAuthority\n * @param requestCorrelationId\n */\n protected async getClientConfiguration(serverTelemetryManager: ServerTelemetryManager, requestAuthority?: string, requestAzureCloudOptions?: AzureCloudOptions): Promise<ClientConfiguration> {\n this.logger.verbose(\"getClientConfiguration called\", this.correlationId);\n const discoveredAuthority = await this.getDiscoveredAuthority(requestAuthority, requestAzureCloudOptions);\n\n return {\n authOptions: {\n clientId: this.config.auth.clientId,\n authority: discoveredAuthority,\n clientCapabilities: this.config.auth.clientCapabilities\n },\n systemOptions: {\n tokenRenewalOffsetSeconds: this.config.system.tokenRenewalOffsetSeconds,\n preventCorsPreflight: true\n },\n loggerOptions: {\n loggerCallback: this.config.system.loggerOptions.loggerCallback,\n piiLoggingEnabled: this.config.system.loggerOptions.piiLoggingEnabled,\n logLevel: this.config.system.loggerOptions.logLevel,\n correlationId: this.correlationId\n },\n cryptoInterface: this.browserCrypto,\n networkInterface: this.networkClient,\n storageInterface: this.browserStorage,\n serverTelemetryManager: serverTelemetryManager,\n libraryInfo: {\n sku: BrowserConstants.MSAL_SKU,\n version: version,\n cpu: Constants.EMPTY_STRING,\n os: Constants.EMPTY_STRING\n },\n telemetry: this.config.telemetry\n };\n }\n\n /**\n * @param hash\n * @param interactionType\n */\n protected validateAndExtractStateFromHash(serverParams: ServerAuthorizationCodeResponse, interactionType: InteractionType, requestCorrelationId?: string): string {\n this.logger.verbose(\"validateAndExtractStateFromHash called\", requestCorrelationId);\n if (!serverParams.state) {\n throw BrowserAuthError.createHashDoesNotContainStateError();\n }\n\n const platformStateObj = BrowserProtocolUtils.extractBrowserRequestState(this.browserCrypto, serverParams.state);\n if (!platformStateObj) {\n throw BrowserAuthError.createUnableToParseStateError();\n }\n\n if (platformStateObj.interactionType !== interactionType) {\n throw BrowserAuthError.createStateInteractionTypeMismatchError();\n }\n\n this.logger.verbose(\"Returning state from hash\", requestCorrelationId);\n return serverParams.state;\n }\n\n /**\n * Used to get a discovered version of the default authority.\n * @param requestAuthority\n * @param requestCorrelationId\n */\n protected async getDiscoveredAuthority(requestAuthority?: string, requestAzureCloudOptions?: AzureCloudOptions): Promise<Authority> {\n this.logger.verbose(\"getDiscoveredAuthority called\", this.correlationId);\n const getAuthorityMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.StandardInteractionClientGetDiscoveredAuthority, this.correlationId);\n const authorityOptions: AuthorityOptions = {\n protocolMode: this.config.auth.protocolMode,\n knownAuthorities: this.config.auth.knownAuthorities,\n cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata,\n authorityMetadata: this.config.auth.authorityMetadata,\n skipAuthorityMetadataCache: this.config.auth.skipAuthorityMetadataCache\n };\n\n // build authority string based on auth params, precedence - azureCloudInstance + tenant >> authority\n const userAuthority = requestAuthority ? requestAuthority : this.config.auth.authority;\n\n // fall back to the authority from config\n const builtAuthority = Authority.generateAuthority( userAuthority, requestAzureCloudOptions || this.config.auth.azureCloudOptions);\n this.logger.verbose(\"Creating discovered authority with configured authority\", this.correlationId);\n return await AuthorityFactory.createDiscoveredInstance(builtAuthority, this.config.system.networkClient, this.browserStorage, authorityOptions)\n .then((result: Authority) => {\n getAuthorityMeasurement.endMeasurement({\n success: true\n });\n\n return result;\n })\n .catch((error:AuthError) => {\n getAuthorityMeasurement.endMeasurement({\n errorCode: error.errorCode,\n subErrorCode: error.subError,\n success: false\n });\n\n throw error;\n });\n }\n\n /**\n * Helper to initialize required request parameters for interactive APIs and ssoSilent()\n * @param request\n * @param interactionType\n */\n protected async initializeAuthorizationRequest(request: RedirectRequest|PopupRequest|SsoSilentRequest, interactionType: InteractionType): Promise<AuthorizationUrlRequest> {\n this.logger.verbose(\"initializeAuthorizationRequest called\", this.correlationId);\n const redirectUri = this.getRedirectUri(request.redirectUri);\n const browserState: BrowserStateObject = {\n interactionType: interactionType\n };\n const state = ProtocolUtils.setRequestState(\n this.browserCrypto,\n (request && request.state)|| Constants.EMPTY_STRING,\n browserState\n );\n\n const validatedRequest: AuthorizationUrlRequest = {\n ...await this.initializeBaseRequest(request),\n redirectUri: redirectUri,\n state: state,\n nonce: request.nonce || this.browserCrypto.createNewGuid(),\n responseMode: ResponseMode.FRAGMENT\n };\n\n const account = request.account || this.browserStorage.getActiveAccount();\n if (account) {\n this.logger.verbose(\"Setting validated request account\", this.correlationId);\n this.logger.verbosePii(`Setting validated request account: ${account.homeAccountId}`, this.correlationId);\n validatedRequest.account = account;\n }\n\n // Check for ADAL/MSAL v1 SSO\n if (StringUtils.isEmpty(validatedRequest.loginHint) && !account) {\n const legacyLoginHint = this.browserStorage.getLegacyLoginHint();\n if (legacyLoginHint) {\n validatedRequest.loginHint = legacyLoginHint;\n }\n }\n\n return validatedRequest;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ClientConfiguration } from \"../config/ClientConfiguration\";\nimport { BaseClient } from \"./BaseClient\";\nimport { CommonRefreshTokenRequest } from \"../request/CommonRefreshTokenRequest\";\nimport { Authority } from \"../authority/Authority\";\nimport { ServerAuthorizationTokenResponse } from \"../response/ServerAuthorizationTokenResponse\";\nimport { RequestParameterBuilder } from \"../request/RequestParameterBuilder\";\nimport { GrantType, AuthenticationScheme, Errors } from \"../utils/Constants\";\nimport { ResponseHandler } from \"../response/ResponseHandler\";\nimport { AuthenticationResult } from \"../response/AuthenticationResult\";\nimport { PopTokenGenerator } from \"../crypto/PopTokenGenerator\";\nimport { StringUtils } from \"../utils/StringUtils\";\nimport { RequestThumbprint } from \"../network/RequestThumbprint\";\nimport { NetworkResponse } from \"../network/NetworkManager\";\nimport { CommonSilentFlowRequest } from \"../request/CommonSilentFlowRequest\";\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\nimport { ClientAuthError } from \"../error/ClientAuthError\";\nimport { ServerError } from \"../error/ServerError\";\nimport { TimeUtils } from \"../utils/TimeUtils\";\nimport { UrlString } from \"../url/UrlString\";\nimport { CcsCredentialType } from \"../account/CcsCredential\";\nimport { buildClientInfoFromHomeAccountId } from \"../account/ClientInfo\";\nimport { InteractionRequiredAuthError, InteractionRequiredAuthErrorMessage } from \"../error/InteractionRequiredAuthError\";\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient\"; \nimport { PerformanceEvents } from \"../telemetry/performance/PerformanceEvent\";\n\n/**\n * OAuth2.0 refresh token client\n */\nexport class RefreshTokenClient extends BaseClient {\n constructor(configuration: ClientConfiguration, performanceClient?: IPerformanceClient) {\n super(configuration,performanceClient);\n }\n\n public async acquireToken(request: CommonRefreshTokenRequest): Promise<AuthenticationResult> {\n const reqTimestamp = TimeUtils.nowSeconds();\n const response = await this.executeTokenRequest(request, this.authority);\n\n const responseHandler = new ResponseHandler(\n this.config.authOptions.clientId,\n this.cacheManager,\n this.cryptoUtils,\n this.logger,\n this.config.serializableCache,\n this.config.persistencePlugin\n );\n\n responseHandler.validateTokenResponse(response.body);\n return responseHandler.handleServerTokenResponse(\n response.body,\n this.authority,\n reqTimestamp,\n request,\n undefined,\n undefined,\n true,\n request.forceCache\n );\n }\n\n /**\n * Gets cached refresh token and attaches to request, then calls acquireToken API\n * @param request\n */\n public async acquireTokenByRefreshToken(request: CommonSilentFlowRequest): Promise<AuthenticationResult> {\n // Cannot renew token if no request object is given.\n if (!request) {\n throw ClientConfigurationError.createEmptyTokenRequestError();\n }\n\n // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases\n if (!request.account) {\n throw ClientAuthError.createNoAccountInSilentRequestError();\n }\n\n // try checking if FOCI is enabled for the given application\n const isFOCI = this.cacheManager.isAppMetadataFOCI(request.account.environment, this.config.authOptions.clientId);\n\n // if the app is part of the family, retrive a Family refresh token if present and make a refreshTokenRequest\n if (isFOCI) {\n try {\n return this.acquireTokenWithCachedRefreshToken(request, true);\n } catch (e) {\n const noFamilyRTInCache = e instanceof InteractionRequiredAuthError && e.errorCode === InteractionRequiredAuthErrorMessage.noTokensFoundError.code;\n const clientMismatchErrorWithFamilyRT = e instanceof ServerError && e.errorCode === Errors.INVALID_GRANT_ERROR && e.subError === Errors.CLIENT_MISMATCH_ERROR;\n\n // if family Refresh Token (FRT) cache acquisition fails or if client_mismatch error is seen with FRT, reattempt with application Refresh Token (ART)\n if (noFamilyRTInCache || clientMismatchErrorWithFamilyRT) {\n return this.acquireTokenWithCachedRefreshToken(request, false);\n // throw in all other cases\n } else {\n throw e;\n }\n }\n }\n\n // fall back to application refresh token acquisition\n return this.acquireTokenWithCachedRefreshToken(request, false);\n }\n\n /**\n * makes a network call to acquire tokens by exchanging RefreshToken available in userCache; throws if refresh token is not cached\n * @param request\n */\n private async acquireTokenWithCachedRefreshToken(request: CommonSilentFlowRequest, foci: boolean) {\n // fetches family RT or application RT based on FOCI value\n const refreshToken = this.cacheManager.readRefreshTokenFromCache(this.config.authOptions.clientId, request.account, foci);\n\n // no refresh Token\n if (!refreshToken) {\n throw InteractionRequiredAuthError.createNoTokensFoundError();\n }\n\n const refreshTokenRequest: CommonRefreshTokenRequest = {\n ...request,\n refreshToken: refreshToken.secret,\n authenticationScheme: request.authenticationScheme || AuthenticationScheme.BEARER,\n ccsCredential: {\n credential: request.account.homeAccountId,\n type: CcsCredentialType.HOME_ACCOUNT_ID\n }\n };\n\n return this.acquireToken(refreshTokenRequest);\n }\n\n /**\n * Constructs the network message and makes a NW call to the underlying secure token service\n * @param request\n * @param authority\n */\n private async executeTokenRequest(request: CommonRefreshTokenRequest, authority: Authority)\n : Promise<NetworkResponse<ServerAuthorizationTokenResponse>> {\n const acquireTokenMeasurement = this.performanceClient?.startMeasurement(PerformanceEvents.RefreshTokenClientExecuteTokenRequest, request.correlationId); \n const requestBody = await this.createTokenRequestBody(request);\n const queryParameters = this.createTokenQueryParameters(request);\n const headers: Record<string, string> = this.createTokenRequestHeaders(request.ccsCredential);\n const thumbprint: RequestThumbprint = {\n clientId: this.config.authOptions.clientId,\n authority: authority.canonicalAuthority,\n scopes: request.scopes,\n claims: request.claims,\n authenticationScheme: request.authenticationScheme,\n resourceRequestMethod: request.resourceRequestMethod,\n resourceRequestUri: request.resourceRequestUri,\n shrClaims: request.shrClaims,\n sshKid: request.sshKid\n };\n\n const endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParameters);\n return this.executePostToTokenEndpoint(endpoint, requestBody, headers, thumbprint)\n .then((result) =>{\n acquireTokenMeasurement?.endMeasurement({\n success: true\n });\n return result;\n })\n .catch((error) =>{\n acquireTokenMeasurement?.endMeasurement({\n success: false\n });\n throw error;\n });\n }\n\n /**\n * Creates query string for the /token request\n * @param request\n */\n private createTokenQueryParameters(request: CommonRefreshTokenRequest): string {\n const parameterBuilder = new RequestParameterBuilder();\n\n if (request.tokenQueryParameters) {\n parameterBuilder.addExtraQueryParameters(request.tokenQueryParameters);\n }\n\n return parameterBuilder.createQueryString();\n }\n\n /**\n * Helper function to create the token request body\n * @param request\n */\n private async createTokenRequestBody(request: CommonRefreshTokenRequest): Promise<string> {\n const correlationId = request.correlationId;\n const acquireTokenMeasurement = this.performanceClient?.startMeasurement(PerformanceEvents.BaseClientCreateTokenRequestHeaders, correlationId); \n const parameterBuilder = new RequestParameterBuilder();\n\n parameterBuilder.addClientId(this.config.authOptions.clientId);\n\n parameterBuilder.addScopes(request.scopes);\n\n parameterBuilder.addGrantType(GrantType.REFRESH_TOKEN_GRANT);\n\n parameterBuilder.addClientInfo();\n\n parameterBuilder.addLibraryInfo(this.config.libraryInfo);\n parameterBuilder.addApplicationTelemetry(this.config.telemetry.application);\n parameterBuilder.addThrottling();\n\n if (this.serverTelemetryManager) {\n parameterBuilder.addServerTelemetry(this.serverTelemetryManager);\n }\n \n parameterBuilder.addCorrelationId(correlationId);\n\n parameterBuilder.addRefreshToken(request.refreshToken);\n\n if (this.config.clientCredentials.clientSecret) {\n parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret);\n }\n\n if (this.config.clientCredentials.clientAssertion) {\n const clientAssertion = this.config.clientCredentials.clientAssertion;\n parameterBuilder.addClientAssertion(clientAssertion.assertion);\n parameterBuilder.addClientAssertionType(clientAssertion.assertionType);\n }\n\n if (request.authenticationScheme === AuthenticationScheme.POP) {\n const popTokenGenerator = new PopTokenGenerator(this.cryptoUtils);\n const reqCnfData = await popTokenGenerator.generateCnf(request);\n // SPA PoP requires full Base64Url encoded req_cnf string (unhashed)\n parameterBuilder.addPopToken(reqCnfData.reqCnfString);\n } else if (request.authenticationScheme === AuthenticationScheme.SSH) {\n if (request.sshJwk) {\n parameterBuilder.addSshJwk(request.sshJwk);\n } else {\n acquireTokenMeasurement?.endMeasurement({\n success: false\n });\n throw ClientConfigurationError.createMissingSshJwkError();\n }\n }\n\n if (!StringUtils.isEmptyObj(request.claims) || this.config.authOptions.clientCapabilities && this.config.authOptions.clientCapabilities.length > 0) {\n parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\n }\n\n if (this.config.systemOptions.preventCorsPreflight && request.ccsCredential) {\n switch (request.ccsCredential.type) {\n case CcsCredentialType.HOME_ACCOUNT_ID:\n try {\n const clientInfo = buildClientInfoFromHomeAccountId(request.ccsCredential.credential);\n parameterBuilder.addCcsOid(clientInfo);\n } catch (e) {\n this.logger.verbose(\"Could not parse home account ID for CCS Header: \" + e);\n }\n break;\n case CcsCredentialType.UPN:\n parameterBuilder.addCcsUpn(request.ccsCredential.credential);\n break;\n }\n }\n acquireTokenMeasurement?.endMeasurement({\n success: true\n });\n return parameterBuilder.createQueryString();\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { BaseClient } from \"./BaseClient\";\nimport { ClientConfiguration } from \"../config/ClientConfiguration\";\nimport { CommonSilentFlowRequest } from \"../request/CommonSilentFlowRequest\";\nimport { AuthenticationResult } from \"../response/AuthenticationResult\";\nimport { AuthToken } from \"../account/AuthToken\";\nimport { TimeUtils } from \"../utils/TimeUtils\";\nimport { RefreshTokenClient } from \"./RefreshTokenClient\";\nimport { ClientAuthError, ClientAuthErrorMessage } from \"../error/ClientAuthError\";\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\nimport { ResponseHandler } from \"../response/ResponseHandler\";\nimport { CacheRecord } from \"../cache/entities/CacheRecord\";\nimport { CacheOutcome } from \"../utils/Constants\";\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient\";\n\nexport class SilentFlowClient extends BaseClient {\n \n constructor(configuration: ClientConfiguration, performanceClient?: IPerformanceClient) {\n super(configuration,performanceClient);\n }\n\n /**\n * Retrieves a token from cache if it is still valid, or uses the cached refresh token to renew\n * the given token and returns the renewed token\n * @param request\n */\n async acquireToken(request: CommonSilentFlowRequest): Promise<AuthenticationResult> {\n try {\n return await this.acquireCachedToken(request);\n } catch (e) {\n if (e instanceof ClientAuthError && e.errorCode === ClientAuthErrorMessage.tokenRefreshRequired.code) {\n const refreshTokenClient = new RefreshTokenClient(this.config, this.performanceClient);\n return refreshTokenClient.acquireTokenByRefreshToken(request);\n } else {\n throw e;\n }\n }\n }\n\n /**\n * Retrieves token from cache or throws an error if it must be refreshed.\n * @param request\n */\n async acquireCachedToken(request: CommonSilentFlowRequest): Promise<AuthenticationResult> {\n // Cannot renew token if no request object is given.\n if (!request) {\n throw ClientConfigurationError.createEmptyTokenRequestError();\n }\n\n if (request.forceRefresh) {\n // Must refresh due to present force_refresh flag.\n this.serverTelemetryManager?.setCacheOutcome(CacheOutcome.FORCE_REFRESH);\n this.logger.info(\"SilentFlowClient:acquireCachedToken - Skipping cache because forceRefresh is true.\");\n throw ClientAuthError.createRefreshRequiredError();\n }\n\n // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases\n if (!request.account) {\n throw ClientAuthError.createNoAccountInSilentRequestError();\n }\n\n const environment = request.authority || this.authority.getPreferredCache();\n\n const cacheRecord = this.cacheManager.readCacheRecord(request.account, this.config.authOptions.clientId, request, environment);\n\n if (!cacheRecord.accessToken) {\n // Must refresh due to non-existent access_token.\n this.serverTelemetryManager?.setCacheOutcome(CacheOutcome.NO_CACHED_ACCESS_TOKEN);\n this.logger.info(\"SilentFlowClient:acquireCachedToken - No access token found in cache for the given properties.\");\n throw ClientAuthError.createRefreshRequiredError();\n } else if (\n TimeUtils.wasClockTurnedBack(cacheRecord.accessToken.cachedAt) ||\n TimeUtils.isTokenExpired(cacheRecord.accessToken.expiresOn, this.config.systemOptions.tokenRenewalOffsetSeconds)\n ) {\n // Must refresh due to expired access_token.\n this.serverTelemetryManager?.setCacheOutcome(CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED);\n this.logger.info(`SilentFlowClient:acquireCachedToken - Cached access token is expired or will expire within ${this.config.systemOptions.tokenRenewalOffsetSeconds} seconds.`);\n throw ClientAuthError.createRefreshRequiredError();\n } else if (cacheRecord.accessToken.refreshOn && TimeUtils.isTokenExpired(cacheRecord.accessToken.refreshOn, 0)) {\n // Must refresh due to the refresh_in value.\n this.serverTelemetryManager?.setCacheOutcome(CacheOutcome.REFRESH_CACHED_ACCESS_TOKEN);\n this.logger.info(\"SilentFlowClient:acquireCachedToken - Cached access token's refreshOn property has been exceeded'.\");\n throw ClientAuthError.createRefreshRequiredError();\n }\n\n if (this.config.serverTelemetryManager) {\n this.config.serverTelemetryManager.incrementCacheHits();\n }\n\n return await this.generateResultFromCacheRecord(cacheRecord, request);\n }\n\n /**\n * Helper function to build response object from the CacheRecord\n * @param cacheRecord\n */\n private async generateResultFromCacheRecord(cacheRecord: CacheRecord, request: CommonSilentFlowRequest): Promise<AuthenticationResult> {\n let idTokenObj: AuthToken | undefined;\n if (cacheRecord.idToken) {\n idTokenObj = new AuthToken(cacheRecord.idToken.secret, this.config.cryptoInterface);\n }\n return await ResponseHandler.generateAuthenticationResult(\n this.cryptoUtils,\n this.authority,\n cacheRecord,\n true,\n request,\n idTokenObj\n );\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { StandardInteractionClient } from \"./StandardInteractionClient\";\nimport { CommonSilentFlowRequest, AuthenticationResult, SilentFlowClient, ServerTelemetryManager, AccountInfo, AzureCloudOptions, PerformanceEvents, AuthError} from \"@azure/msal-common\";\nimport { SilentRequest } from \"../request/SilentRequest\";\nimport { ApiId } from \"../utils/BrowserConstants\";\nimport { BrowserAuthError, BrowserAuthErrorMessage } from \"../error/BrowserAuthError\";\n\nexport class SilentCacheClient extends StandardInteractionClient {\n /**\n * Returns unexpired tokens from the cache, if available\n * @param silentRequest\n */\n async acquireToken(silentRequest: CommonSilentFlowRequest): Promise<AuthenticationResult> {\n const acquireTokenMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.SilentCacheClientAcquireToken, silentRequest.correlationId);\n // Telemetry manager only used to increment cacheHits here\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenSilent_silentFlow);\n\n const silentAuthClient = await this.createSilentFlowClient(serverTelemetryManager, silentRequest.authority, silentRequest.azureCloudOptions);\n this.logger.verbose(\"Silent auth client created\");\n\n try {\n const cachedToken = await silentAuthClient.acquireCachedToken(silentRequest);\n\n acquireTokenMeasurement.endMeasurement({\n success: true,\n fromCache: true\n });\n return cachedToken;\n } catch (error) {\n if (error instanceof BrowserAuthError && error.errorCode === BrowserAuthErrorMessage.signingKeyNotFoundInStorage.code) {\n this.logger.verbose(\"Signing keypair for bound access token not found. Refreshing bound access token and generating a new crypto keypair.\");\n }\n acquireTokenMeasurement.endMeasurement({\n errorCode: error instanceof AuthError && error.errorCode || undefined,\n subErrorCode: error instanceof AuthError && error.subError || undefined,\n success: false\n });\n throw error;\n }\n }\n\n /**\n * Currently Unsupported\n */\n logout(): Promise<void> {\n // Synchronous so we must reject\n return Promise.reject(BrowserAuthError.createSilentLogoutUnsupportedError());\n }\n\n /**\n * Creates an Silent Flow Client with the given authority, or the default authority.\n * @param serverTelemetryManager\n * @param authorityUrl\n */\n protected async createSilentFlowClient(serverTelemetryManager: ServerTelemetryManager, authorityUrl?: string, azureCloudOptions?: AzureCloudOptions): Promise<SilentFlowClient> {\n // Create auth module.\n const clientConfig = await this.getClientConfiguration(serverTelemetryManager, authorityUrl, azureCloudOptions);\n return new SilentFlowClient(clientConfig, this.performanceClient);\n }\n\n async initializeSilentRequest(request: SilentRequest, account: AccountInfo): Promise<CommonSilentFlowRequest> {\n return {\n ...request,\n ...await this.initializeBaseRequest(request),\n account: account,\n forceRefresh: request.forceRefresh || false\n };\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthenticationResult, Logger, ICrypto, PromptValue, AuthToken, Constants, AccountEntity, AuthorityType, ScopeSet, TimeUtils, AuthenticationScheme, UrlString, OIDC_DEFAULT_SCOPES, PopTokenGenerator, SignedHttpRequestParameters, IPerformanceClient, PerformanceEvents, IdTokenEntity, AccessTokenEntity, ClientAuthError, AuthError, CommonSilentFlowRequest, AccountInfo } from \"@azure/msal-common\";\nimport { BaseInteractionClient } from \"./BaseInteractionClient\";\nimport { BrowserConfiguration } from \"../config/Configuration\";\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\nimport { EventHandler } from \"../event/EventHandler\";\nimport { PopupRequest } from \"../request/PopupRequest\";\nimport { SilentRequest } from \"../request/SilentRequest\";\nimport { SsoSilentRequest } from \"../request/SsoSilentRequest\";\nimport { NativeMessageHandler } from \"../broker/nativeBroker/NativeMessageHandler\";\nimport { NativeExtensionMethod, ApiId, TemporaryCacheKeys, NativeConstants } from \"../utils/BrowserConstants\";\nimport { NativeExtensionRequestBody, NativeTokenRequest } from \"../broker/nativeBroker/NativeRequest\";\nimport { MATS, NativeResponse } from \"../broker/nativeBroker/NativeResponse\";\nimport { NativeAuthError } from \"../error/NativeAuthError\";\nimport { RedirectRequest } from \"../request/RedirectRequest\";\nimport { NavigationOptions } from \"../navigation/NavigationOptions\";\nimport { INavigationClient } from \"../navigation/INavigationClient\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { SilentCacheClient } from \"./SilentCacheClient\";\n\nexport class NativeInteractionClient extends BaseInteractionClient {\n protected apiId: ApiId;\n protected accountId: string;\n protected nativeMessageHandler: NativeMessageHandler;\n protected silentCacheClient: SilentCacheClient;\n protected nativeStorageManager: BrowserCacheManager;\n\n constructor(config: BrowserConfiguration, browserStorage: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, apiId: ApiId, performanceClient: IPerformanceClient, provider: NativeMessageHandler, accountId: string, nativeStorageImpl: BrowserCacheManager, correlationId?: string) {\n super(config, browserStorage, browserCrypto, logger, eventHandler, navigationClient, performanceClient, provider, correlationId);\n this.apiId = apiId;\n this.accountId = accountId;\n this.nativeMessageHandler = provider;\n this.nativeStorageManager = nativeStorageImpl;\n this.silentCacheClient = new SilentCacheClient(config, this.nativeStorageManager, browserCrypto, logger, eventHandler, navigationClient, performanceClient, provider, correlationId);\n }\n\n /**\n * Acquire token from native platform via browser extension\n * @param request\n */\n async acquireToken(request: PopupRequest|SilentRequest|SsoSilentRequest): Promise<AuthenticationResult> {\n this.logger.trace(\"NativeInteractionClient - acquireToken called.\");\n\n // start the perf measurement\n const nativeATMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.NativeInteractionClientAcquireToken, request.correlationId);\n const reqTimestamp = TimeUtils.nowSeconds();\n\n // initialize native request\n const nativeRequest = await this.initializeNativeRequest(request);\n\n // check if the tokens can be retrieved from internal cache\n try {\n const result = await this.acquireTokensFromCache(this.accountId, nativeRequest);\n nativeATMeasurement.endMeasurement({\n success: true,\n isNativeBroker: true,\n fromCache: true\n });\n return result;\n } catch (e) {\n // continue with a native call for any and all errors\n this.logger.info(\"MSAL internal Cache does not contain tokens, proceed to make a native call\");\n }\n\n // fall back to native calls\n const messageBody: NativeExtensionRequestBody = {\n method: NativeExtensionMethod.GetToken,\n request: nativeRequest\n };\n\n const response: object = await this.nativeMessageHandler.sendMessage(messageBody);\n const validatedResponse: NativeResponse = this.validateNativeResponse(response);\n\n return this.handleNativeResponse(validatedResponse, nativeRequest, reqTimestamp)\n .then((result: AuthenticationResult) => {\n nativeATMeasurement.endMeasurement({\n success: true,\n isNativeBroker: true\n });\n return result;\n })\n .catch((error: AuthError) => {\n nativeATMeasurement.endMeasurement({\n success: false,\n errorCode: error.errorCode,\n subErrorCode: error.subError,\n isNativeBroker: true\n });\n throw error;\n });\n }\n\n /**\n * Creates silent flow request\n * @param request\n * @param cachedAccount\n * @returns CommonSilentFlowRequest\n */\n private createSilentCacheRequest(request: NativeTokenRequest, cachedAccount: AccountInfo): CommonSilentFlowRequest {\n return {\n authority: request.authority,\n correlationId: this.correlationId,\n scopes: ScopeSet.fromString(request.scope).asArray(),\n account: cachedAccount,\n forceRefresh: false,\n };\n }\n\n /**\n * Fetches the tokens from the cache if un-expired\n * @param nativeAccountId\n * @param request\n * @returns authenticationResult\n */\n protected async acquireTokensFromCache(nativeAccountId: string, request: NativeTokenRequest): Promise<AuthenticationResult> {\n\n // fetch the account from in-memory cache\n const accountEntity = this.browserStorage.readAccountFromCacheWithNativeAccountId(nativeAccountId);\n if (!accountEntity) {\n throw ClientAuthError.createNoAccountFoundError();\n }\n const account = accountEntity.getAccountInfo();\n\n // leverage silent flow for cached tokens retrieval\n try {\n const silentRequest = this.createSilentCacheRequest(request, account);\n const result = await this.silentCacheClient.acquireToken(silentRequest);\n return result;\n } catch (e) {\n throw e;\n }\n }\n\n /**\n * Acquires a token from native platform then redirects to the redirectUri instead of returning the response\n * @param request\n */\n async acquireTokenRedirect(request: RedirectRequest): Promise<void> {\n this.logger.trace(\"NativeInteractionClient - acquireTokenRedirect called.\");\n const nativeRequest = await this.initializeNativeRequest(request);\n\n const messageBody: NativeExtensionRequestBody = {\n method: NativeExtensionMethod.GetToken,\n request: nativeRequest\n };\n\n try {\n const response: object = await this.nativeMessageHandler.sendMessage(messageBody);\n this.validateNativeResponse(response);\n } catch (e) {\n // Only throw fatal errors here to allow application to fallback to regular redirect. Otherwise proceed and the error will be thrown in handleRedirectPromise\n if (e instanceof NativeAuthError && e.isFatal()) {\n throw e;\n }\n }\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.NATIVE_REQUEST, JSON.stringify(nativeRequest), true);\n\n const navigationOptions: NavigationOptions = {\n apiId: ApiId.acquireTokenRedirect,\n timeout: this.config.system.redirectNavigationTimeout,\n noHistory: false\n };\n const redirectUri = this.config.auth.navigateToLoginRequestUrl ? window.location.href : this.getRedirectUri(request.redirectUri);\n await this.navigationClient.navigateExternal(redirectUri, navigationOptions); // Need to treat this as external to ensure handleRedirectPromise is run again\n }\n\n /**\n * If the previous page called native platform for a token using redirect APIs, send the same request again and return the response\n */\n async handleRedirectPromise(): Promise<AuthenticationResult | null> {\n this.logger.trace(\"NativeInteractionClient - handleRedirectPromise called.\");\n if (!this.browserStorage.isInteractionInProgress(true)) {\n this.logger.info(\"handleRedirectPromise called but there is no interaction in progress, returning null.\");\n return null;\n }\n\n const cachedRequest = this.browserStorage.getCachedNativeRequest();\n if (!cachedRequest) {\n this.logger.verbose(\"NativeInteractionClient - handleRedirectPromise called but there is no cached request, returning null.\");\n return null;\n }\n\n this.browserStorage.removeItem(this.browserStorage.generateCacheKey(TemporaryCacheKeys.NATIVE_REQUEST));\n\n const messageBody: NativeExtensionRequestBody = {\n method: NativeExtensionMethod.GetToken,\n request: cachedRequest\n };\n\n const reqTimestamp = TimeUtils.nowSeconds();\n\n try {\n this.logger.verbose(\"NativeInteractionClient - handleRedirectPromise sending message to native broker.\");\n const response: object = await this.nativeMessageHandler.sendMessage(messageBody);\n this.validateNativeResponse(response);\n const result = this.handleNativeResponse(response as NativeResponse, cachedRequest, reqTimestamp);\n this.browserStorage.setInteractionInProgress(false);\n return result;\n } catch (e) {\n this.browserStorage.setInteractionInProgress(false);\n throw e;\n }\n }\n\n /**\n * Logout from native platform via browser extension\n * @param request\n */\n logout(): Promise<void> {\n this.logger.trace(\"NativeInteractionClient - logout called.\");\n return Promise.reject(\"Logout not implemented yet\");\n }\n\n /**\n * Transform response from native platform into AuthenticationResult object which will be returned to the end user\n * @param response\n * @param request\n * @param reqTimestamp\n */\n protected async handleNativeResponse(response: NativeResponse, request: NativeTokenRequest, reqTimestamp: number): Promise<AuthenticationResult> {\n this.logger.trace(\"NativeInteractionClient - handleNativeResponse called.\");\n\n if (response.account.id !== request.accountId) {\n // User switch in native broker prompt is not supported. All users must first sign in through web flow to ensure server state is in sync\n throw NativeAuthError.createUserSwitchError();\n }\n\n // create an idToken object (not entity)\n const idTokenObj = new AuthToken(response.id_token || Constants.EMPTY_STRING, this.browserCrypto);\n\n // Get the preferred_cache domain for the given authority\n const authority = await this.getDiscoveredAuthority(request.authority);\n const authorityPreferredCache = authority.getPreferredCache();\n\n // Save account in browser storage\n const homeAccountIdentifier = AccountEntity.generateHomeAccountId(response.client_info || Constants.EMPTY_STRING, AuthorityType.Default, this.logger, this.browserCrypto, idTokenObj);\n const accountEntity = AccountEntity.createAccount(response.client_info, homeAccountIdentifier, idTokenObj, undefined, undefined, undefined, authorityPreferredCache, response.account.id);\n this.browserStorage.setAccount(accountEntity);\n\n // If scopes not returned in server response, use request scopes\n const responseScopes = response.scope ? ScopeSet.fromString(response.scope) : ScopeSet.fromString(request.scope);\n\n const accountProperties = response.account.properties || {};\n const uid = accountProperties[\"UID\"] || idTokenObj.claims.oid || idTokenObj.claims.sub || Constants.EMPTY_STRING;\n const tid = accountProperties[\"TenantId\"] || idTokenObj.claims.tid || Constants.EMPTY_STRING;\n\n // This code prioritizes SHR returned from the native layer. In case of error/SHR not calculated from WAM and the AT is still received, SHR is calculated locally\n let responseAccessToken;\n let responseTokenType: AuthenticationScheme = AuthenticationScheme.BEARER;\n switch (request.tokenType) {\n case AuthenticationScheme.POP: {\n // Set the token type to POP in the response\n responseTokenType = AuthenticationScheme.POP;\n\n // Check if native layer returned an SHR token\n if (response.shr) {\n this.logger.trace(\"handleNativeServerResponse: SHR is enabled in native layer\");\n responseAccessToken = response.shr;\n break;\n }\n\n // Generate SHR in msal js if WAM does not compute it when POP is enabled\n const popTokenGenerator: PopTokenGenerator = new PopTokenGenerator(this.browserCrypto);\n const shrParameters: SignedHttpRequestParameters = {\n resourceRequestMethod: request.resourceRequestMethod,\n resourceRequestUri: request.resourceRequestUri,\n shrClaims: request.shrClaims,\n shrNonce: request.shrNonce\n };\n\n /**\n * KeyID must be present in the native request from when the PoP key was generated in order for\n * PopTokenGenerator to query the full key for signing\n */\n if (!request.keyId) {\n throw ClientAuthError.createKeyIdMissingError();\n }\n\n responseAccessToken = await popTokenGenerator.signPopToken(response.access_token, request.keyId, shrParameters);\n break;\n\n }\n // assign the access token to the response for all non-POP cases (Should be Bearer only today)\n default: {\n responseAccessToken = response.access_token;\n }\n }\n\n const mats = this.getMATSFromResponse(response);\n\n const result: AuthenticationResult = {\n authority: authority.canonicalAuthority,\n uniqueId: uid,\n tenantId: tid,\n scopes: responseScopes.asArray(),\n account: accountEntity.getAccountInfo(),\n idToken: response.id_token,\n idTokenClaims: idTokenObj.claims,\n accessToken: responseAccessToken,\n fromCache: mats ? this.isResponseFromCache(mats) : false,\n expiresOn: new Date(Number(reqTimestamp + response.expires_in) * 1000),\n tokenType: responseTokenType,\n correlationId: this.correlationId,\n state: response.state,\n fromNativeBroker: true\n };\n\n // cache idToken in inmemory storage\n const idTokenEntity = IdTokenEntity.createIdTokenEntity(\n homeAccountIdentifier,\n request.authority,\n response.id_token || Constants.EMPTY_STRING,\n request.clientId,\n idTokenObj.claims.tid || Constants.EMPTY_STRING,\n );\n this.nativeStorageManager.setIdTokenCredential(idTokenEntity);\n\n // cache accessToken in inmemory storage\n const expiresIn: number = (responseTokenType === AuthenticationScheme.POP)\n ? Constants.SHR_NONCE_VALIDITY\n : (\n typeof response.expires_in === \"string\"\n ? parseInt(response.expires_in, 10)\n : response.expires_in\n ) || 0;\n const tokenExpirationSeconds = reqTimestamp + expiresIn;\n const accessTokenEntity = AccessTokenEntity.createAccessTokenEntity(\n homeAccountIdentifier,\n request.authority,\n responseAccessToken,\n request.clientId,\n tid,\n responseScopes.printScopes(),\n tokenExpirationSeconds,\n 0,\n this.browserCrypto\n );\n this.nativeStorageManager.setAccessTokenCredential(accessTokenEntity);\n\n // Remove any existing cached tokens for this account in browser storage\n this.browserStorage.removeAccountContext(accountEntity).catch((e) => {\n this.logger.error(`Error occurred while removing account context from browser storage. ${e}`);\n });\n\n return result;\n }\n\n /**\n * Validates native platform response before processing\n * @param response\n */\n private validateNativeResponse(response: object): NativeResponse {\n if (\n response.hasOwnProperty(\"access_token\") &&\n response.hasOwnProperty(\"id_token\") &&\n response.hasOwnProperty(\"client_info\") &&\n response.hasOwnProperty(\"account\") &&\n response.hasOwnProperty(\"scope\") &&\n response.hasOwnProperty(\"expires_in\")\n ) {\n return response as NativeResponse;\n } else {\n throw NativeAuthError.createUnexpectedError(\"Response missing expected properties.\");\n }\n }\n\n /**\n * Gets MATS telemetry from native response\n * @param response\n * @returns\n */\n private getMATSFromResponse(response: NativeResponse): MATS|null {\n if (response.properties.MATS) {\n try {\n return JSON.parse(response.properties.MATS);\n } catch (e) {\n this.logger.error(\"NativeInteractionClient - Error parsing MATS telemetry, returning null instead\");\n }\n }\n\n return null;\n }\n\n /**\n * Returns whether or not response came from native cache\n * @param response\n * @returns\n */\n private isResponseFromCache(mats: MATS): boolean {\n if (typeof mats.is_cached === \"undefined\") {\n this.logger.verbose(\"NativeInteractionClient - MATS telemetry does not contain field indicating if response was served from cache. Returning false.\");\n return false;\n }\n\n return !!mats.is_cached;\n }\n\n /**\n * Translates developer provided request object into NativeRequest object\n * @param request\n */\n protected async initializeNativeRequest(request: PopupRequest|SsoSilentRequest): Promise<NativeTokenRequest> {\n this.logger.trace(\"NativeInteractionClient - initializeNativeRequest called\");\n\n const authority = request.authority || this.config.auth.authority;\n const canonicalAuthority = new UrlString(authority);\n canonicalAuthority.validateAsUri();\n\n // scopes are expected to be received by the native broker as \"scope\" and will be added to the request below. Other properties that should be dropped from the request to the native broker can be included in the object destructuring here.\n const { scopes, ...remainingProperties } = request; \n const scopeSet = new ScopeSet(scopes || []);\n scopeSet.appendScopes(OIDC_DEFAULT_SCOPES);\n\n const getPrompt = () => {\n // If request is silent, prompt is always none\n switch (this.apiId) {\n case ApiId.ssoSilent:\n case ApiId.acquireTokenSilent_silentFlow:\n this.logger.trace(\"initializeNativeRequest: silent request sets prompt to none\");\n return PromptValue.NONE;\n default:\n break;\n }\n\n // Prompt not provided, request may proceed and native broker decides if it needs to prompt\n if (!request.prompt) {\n this.logger.trace(\"initializeNativeRequest: prompt was not provided\");\n return undefined;\n }\n\n // If request is interactive, check if prompt provided is allowed to go directly to native broker\n switch (request.prompt) {\n case PromptValue.NONE:\n case PromptValue.CONSENT:\n case PromptValue.LOGIN:\n this.logger.trace(\"initializeNativeRequest: prompt is compatible with native flow\");\n return request.prompt;\n default:\n this.logger.trace(`initializeNativeRequest: prompt = ${request.prompt} is not compatible with native flow`);\n throw BrowserAuthError.createNativePromptParameterNotSupportedError();\n }\n };\n \n const validatedRequest: NativeTokenRequest = {\n ...remainingProperties,\n accountId: this.accountId,\n clientId: this.config.auth.clientId,\n authority: canonicalAuthority.urlString,\n scope: scopeSet.printScopes(),\n redirectUri: this.getRedirectUri(request.redirectUri),\n prompt: getPrompt(),\n correlationId: this.correlationId,\n tokenType: request.authenticationScheme,\n windowTitleSubstring: document.title,\n extraParameters: {\n ...request.extraQueryParameters,\n ...request.tokenQueryParameters,\n telemetry: NativeConstants.MATS_TELEMETRY\n },\n extendedExpiryToken: false // Make this configurable?\n };\n\n if (request.authenticationScheme === AuthenticationScheme.POP) {\n\n // add POP request type\n const shrParameters: SignedHttpRequestParameters = {\n resourceRequestUri: request.resourceRequestUri,\n resourceRequestMethod: request.resourceRequestMethod,\n shrClaims: request.shrClaims,\n shrNonce: request.shrNonce\n };\n\n const popTokenGenerator = new PopTokenGenerator(this.browserCrypto);\n const reqCnfData = await popTokenGenerator.generateCnf(shrParameters);\n\n // to reduce the URL length, it is recommended to send the hash of the req_cnf instead of the whole string\n validatedRequest.reqCnf = reqCnfData.reqCnfHash;\n validatedRequest.keyId = reqCnfData.kid;\n }\n\n return validatedRequest;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { NativeConstants, NativeExtensionMethod } from \"../../utils/BrowserConstants\";\nimport { Logger, AuthError, AuthenticationScheme } from \"@azure/msal-common\";\nimport { NativeExtensionRequest, NativeExtensionRequestBody } from \"./NativeRequest\";\nimport { NativeAuthError } from \"../../error/NativeAuthError\";\nimport { BrowserAuthError } from \"../../error/BrowserAuthError\";\nimport { BrowserConfiguration } from \"../../config/Configuration\";\n\ntype ResponseResolvers<T> = {\n resolve: (value:T|PromiseLike<T>) => void;\n reject: (value:AuthError|Error|PromiseLike<Error>|PromiseLike<AuthError>) => void;\n};\n\nexport class NativeMessageHandler {\n private extensionId: string | undefined;\n private logger: Logger;\n private handshakeTimeoutMs: number;\n private responseId: number;\n private timeoutId: number | undefined;\n private resolvers: Map<number, ResponseResolvers<object>>;\n private handshakeResolvers: Map<number, ResponseResolvers<void>>;\n private messageChannel: MessageChannel;\n private windowListener: (event: MessageEvent) => void;\n\n constructor(logger: Logger, handshakeTimeoutMs: number, extensionId?: string) {\n this.logger = logger;\n this.handshakeTimeoutMs = handshakeTimeoutMs;\n this.extensionId = extensionId;\n this.resolvers = new Map(); // Used for non-handshake messages\n this.handshakeResolvers = new Map(); // Used for handshake messages\n this.responseId = 0;\n this.messageChannel = new MessageChannel();\n this.windowListener = this.onWindowMessage.bind(this); // Window event callback doesn't have access to 'this' unless it's bound\n }\n\n /**\n * Sends a given message to the extension and resolves with the extension response\n * @param body \n */\n async sendMessage(body: NativeExtensionRequestBody): Promise<object> {\n this.logger.trace(\"NativeMessageHandler - sendMessage called.\");\n const req: NativeExtensionRequest = {\n channel: NativeConstants.CHANNEL_ID,\n extensionId: this.extensionId,\n responseId: this.responseId++,\n body: body\n };\n\n this.logger.trace(\"NativeMessageHandler - Sending request to browser extension\");\n this.logger.tracePii(`NativeMessageHandler - Sending request to browser extension: ${JSON.stringify(req)}`);\n this.messageChannel.port1.postMessage(req);\n\n return new Promise((resolve, reject) => {\n this.resolvers.set(req.responseId, {resolve, reject});\n });\n }\n\n /**\n * Returns an instance of the MessageHandler that has successfully established a connection with an extension\n * @param logger \n * @param handshakeTimeoutMs\n */\n static async createProvider(logger: Logger, handshakeTimeoutMs: number): Promise<NativeMessageHandler> {\n logger.trace(\"NativeMessageHandler - createProvider called.\");\n try {\n const preferredProvider = new NativeMessageHandler(logger, handshakeTimeoutMs, NativeConstants.PREFERRED_EXTENSION_ID);\n await preferredProvider.sendHandshakeRequest();\n return preferredProvider;\n } catch (e) {\n // If preferred extension fails for whatever reason, fallback to using any installed extension\n const backupProvider = new NativeMessageHandler(logger, handshakeTimeoutMs);\n await backupProvider.sendHandshakeRequest();\n return backupProvider;\n }\n }\n\n /**\n * Send handshake request helper.\n */\n private async sendHandshakeRequest(): Promise<void> {\n this.logger.trace(\"NativeMessageHandler - sendHandshakeRequest called.\");\n // Register this event listener before sending handshake\n window.addEventListener(\"message\", this.windowListener, false); // false is important, because content script message processing should work first\n\n const req: NativeExtensionRequest = {\n channel: NativeConstants.CHANNEL_ID,\n extensionId: this.extensionId,\n responseId: this.responseId++,\n\n body: {\n method: NativeExtensionMethod.HandshakeRequest\n }\n };\n\n this.messageChannel.port1.onmessage = (event) => {\n this.onChannelMessage(event);\n };\n\n window.postMessage(req, window.origin, [this.messageChannel.port2]);\n\n return new Promise((resolve, reject) => {\n this.handshakeResolvers.set(req.responseId, {resolve, reject});\n this.timeoutId = window.setTimeout(() => {\n /*\n * Throw an error if neither HandshakeResponse nor original Handshake request are received in a reasonable timeframe.\n * This typically suggests an event handler stopped propagation of the Handshake request but did not respond to it on the MessageChannel port\n */\n window.removeEventListener(\"message\", this.windowListener, false);\n this.messageChannel.port1.close();\n this.messageChannel.port2.close();\n reject(BrowserAuthError.createNativeHandshakeTimeoutError());\n this.handshakeResolvers.delete(req.responseId);\n }, this.handshakeTimeoutMs); // Use a reasonable timeout in milliseconds here\n });\n }\n\n /**\n * Invoked when a message is posted to the window. If a handshake request is received it means the extension is not installed.\n * @param event \n */\n private onWindowMessage(event: MessageEvent): void {\n this.logger.trace(\"NativeMessageHandler - onWindowMessage called\");\n // We only accept messages from ourselves\n if (event.source !== window) {\n return;\n }\n\n const request = event.data;\n\n if (!request.channel || request.channel !== NativeConstants.CHANNEL_ID) {\n return;\n }\n\n if (request.extensionId && request.extensionId !== this.extensionId) {\n return;\n }\n\n if (request.body.method === NativeExtensionMethod.HandshakeRequest) {\n // If we receive this message back it means no extension intercepted the request, meaning no extension supporting handshake protocol is installed\n this.logger.verbose(request.extensionId ? `Extension with id: ${request.extensionId} not installed` : \"No extension installed\");\n clearTimeout(this.timeoutId);\n this.messageChannel.port1.close();\n this.messageChannel.port2.close();\n window.removeEventListener(\"message\", this.windowListener, false);\n const handshakeResolver = this.handshakeResolvers.get(request.responseId);\n if (handshakeResolver) {\n handshakeResolver.reject(BrowserAuthError.createNativeExtensionNotInstalledError());\n }\n }\n }\n\n /**\n * Invoked when a message is received from the extension on the MessageChannel port\n * @param event \n */\n private onChannelMessage(event: MessageEvent): void {\n this.logger.trace(\"NativeMessageHandler - onChannelMessage called.\");\n const request = event.data;\n \n const resolver = this.resolvers.get(request.responseId);\n const handshakeResolver = this.handshakeResolvers.get(request.responseId);\n\n try {\n const method = request.body.method;\n \n if (method === NativeExtensionMethod.Response) {\n if (!resolver) {\n return;\n }\n const response = request.body.response;\n this.logger.trace(\"NativeMessageHandler - Received response from browser extension\");\n this.logger.tracePii(`NativeMessageHandler - Received response from browser extension: ${JSON.stringify(response)}`);\n if (response.status !== \"Success\") {\n resolver.reject(NativeAuthError.createError(response.code, response.description, response.ext));\n } else if (response.result) {\n if (response.result[\"code\"] && response.result[\"description\"]) {\n resolver.reject(NativeAuthError.createError(response.result[\"code\"], response.result[\"description\"], response.result[\"ext\"]));\n } else {\n resolver.resolve(response.result);\n }\n } else {\n throw AuthError.createUnexpectedError(\"Event does not contain result.\");\n }\n this.resolvers.delete(request.responseId);\n } else if (method === NativeExtensionMethod.HandshakeResponse) {\n if (!handshakeResolver) {\n return;\n }\n clearTimeout(this.timeoutId); // Clear setTimeout\n window.removeEventListener(\"message\", this.windowListener, false); // Remove 'No extension' listener\n this.extensionId = request.extensionId;\n this.logger.verbose(`NativeMessageHandler - Received HandshakeResponse from extension: ${this.extensionId}`);\n\n handshakeResolver.resolve();\n this.handshakeResolvers.delete(request.responseId);\n } \n // Do nothing if method is not Response or HandshakeResponse\n } catch (err) {\n this.logger.error(\"Error parsing response from WAM Extension\");\n this.logger.errorPii(`Error parsing response from WAM Extension: ${err.toString()}`);\n this.logger.errorPii(`Unable to parse ${event}`);\n\n if (resolver) {\n resolver.reject(err as AuthError);\n } else if (handshakeResolver) {\n handshakeResolver.reject(err as AuthError);\n }\n }\n }\n \n /**\n * Returns boolean indicating whether or not the request should attempt to use native broker\n * @param logger\n * @param config\n * @param nativeExtensionProvider\n * @param authenticationScheme \n */\n static isNativeAvailable(config: BrowserConfiguration, logger: Logger, nativeExtensionProvider?: NativeMessageHandler, authenticationScheme?: AuthenticationScheme): boolean {\n logger.trace(\"isNativeAvailable called\");\n if (!config.system.allowNativeBroker) {\n logger.trace(\"isNativeAvailable: allowNativeBroker is not enabled, returning false\");\n // Developer disabled WAM\n return false;\n }\n\n if (!nativeExtensionProvider) {\n logger.trace(\"isNativeAvailable: WAM extension provider is not initialized, returning false\");\n // Extension is not available\n return false;\n }\n\n if (authenticationScheme) {\n switch(authenticationScheme) {\n case AuthenticationScheme.BEARER:\n case AuthenticationScheme.POP:\n logger.trace(\"isNativeAvailable: authenticationScheme is supported, returning true\");\n return true;\n default:\n logger.trace(\"isNativeAvailable: authenticationScheme is not supported, returning false\");\n return false;\n }\n }\n\n return true;\n }\n} \n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthorizationCodePayload , StringUtils, CommonAuthorizationCodeRequest, AuthenticationResult, AuthorizationCodeClient, AuthorityFactory, Authority, INetworkModule, ClientAuthError, CcsCredential, Logger, ServerError } from \"@azure/msal-common\";\n\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\nimport { BrowserAuthError, BrowserAuthErrorMessage } from \"../error/BrowserAuthError\";\nimport { TemporaryCacheKeys } from \"../utils/BrowserConstants\";\n\nexport type InteractionParams = {};\n\n/**\n * Abstract class which defines operations for a browser interaction handling class.\n */\nexport class InteractionHandler {\n\n protected authModule: AuthorizationCodeClient;\n protected browserStorage: BrowserCacheManager;\n protected authCodeRequest: CommonAuthorizationCodeRequest;\n protected logger: Logger;\n\n constructor(authCodeModule: AuthorizationCodeClient, storageImpl: BrowserCacheManager, authCodeRequest: CommonAuthorizationCodeRequest, logger: Logger) {\n this.authModule = authCodeModule;\n this.browserStorage = storageImpl;\n this.authCodeRequest = authCodeRequest;\n this.logger = logger;\n }\n\n /**\n * Function to handle response parameters from hash.\n * @param locationHash\n */\n async handleCodeResponseFromHash(locationHash: string, state: string, authority: Authority, networkModule: INetworkModule): Promise<AuthenticationResult> {\n this.logger.verbose(\"InteractionHandler.handleCodeResponse called\");\n // Check that location hash isn't empty.\n if (StringUtils.isEmpty(locationHash)) {\n throw BrowserAuthError.createEmptyHashError(locationHash);\n }\n\n // Handle code response.\n const stateKey = this.browserStorage.generateStateKey(state);\n const requestState = this.browserStorage.getTemporaryCache(stateKey);\n if (!requestState) {\n throw ClientAuthError.createStateNotFoundError(\"Cached State\");\n }\n\n let authCodeResponse;\n try {\n authCodeResponse = this.authModule.handleFragmentResponse(locationHash, requestState);\n } catch (e) {\n if (e instanceof ServerError && e.subError === BrowserAuthErrorMessage.userCancelledError.code) {\n // Translate server error caused by user closing native prompt to corresponding first class MSAL error\n throw BrowserAuthError.createUserCancelledError();\n } else {\n throw e;\n }\n }\n\n return this.handleCodeResponseFromServer(authCodeResponse, state, authority, networkModule);\n }\n\n /**\n * Process auth code response from AAD\n * @param authCodeResponse \n * @param state \n * @param authority \n * @param networkModule \n * @returns \n */\n async handleCodeResponseFromServer(authCodeResponse: AuthorizationCodePayload, state: string, authority: Authority, networkModule: INetworkModule, validateNonce: boolean = true): Promise<AuthenticationResult> {\n this.logger.trace(\"InteractionHandler.handleCodeResponseFromServer called\");\n\n // Handle code response.\n const stateKey = this.browserStorage.generateStateKey(state);\n const requestState = this.browserStorage.getTemporaryCache(stateKey);\n if (!requestState) {\n throw ClientAuthError.createStateNotFoundError(\"Cached State\");\n }\n \n // Get cached items\n const nonceKey = this.browserStorage.generateNonceKey(requestState);\n const cachedNonce = this.browserStorage.getTemporaryCache(nonceKey);\n\n // Assign code to request\n this.authCodeRequest.code = authCodeResponse.code;\n\n // Check for new cloud instance\n if (authCodeResponse.cloud_instance_host_name) {\n await this.updateTokenEndpointAuthority(authCodeResponse.cloud_instance_host_name, authority, networkModule);\n }\n\n // Nonce validation not needed when redirect not involved (e.g. hybrid spa, renewing token via rt)\n if (validateNonce) {\n authCodeResponse.nonce = cachedNonce || undefined;\n }\n \n authCodeResponse.state = requestState;\n\n // Add CCS parameters if available\n if (authCodeResponse.client_info) {\n this.authCodeRequest.clientInfo = authCodeResponse.client_info;\n } else {\n const cachedCcsCred = this.checkCcsCredentials();\n if (cachedCcsCred) {\n this.authCodeRequest.ccsCredential = cachedCcsCred;\n }\n }\n\n // Acquire token with retrieved code.\n const tokenResponse = await this.authModule.acquireToken(this.authCodeRequest, authCodeResponse);\n this.browserStorage.cleanRequestByState(state);\n return tokenResponse;\n }\n\n /**\n * Updates authority based on cloudInstanceHostname\n * @param cloudInstanceHostname \n * @param authority \n * @param networkModule \n */\n protected async updateTokenEndpointAuthority(cloudInstanceHostname: string, authority: Authority, networkModule: INetworkModule): Promise<void> {\n const cloudInstanceAuthorityUri = `https://${cloudInstanceHostname}/${authority.tenant}/`;\n const cloudInstanceAuthority = await AuthorityFactory.createDiscoveredInstance(cloudInstanceAuthorityUri, networkModule, this.browserStorage, authority.options);\n this.authModule.updateAuthority(cloudInstanceAuthority);\n }\n\n /**\n * Looks up ccs creds in the cache\n */\n protected checkCcsCredentials(): CcsCredential | null {\n // Look up ccs credential in temp cache\n const cachedCcsCred = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.CCS_CREDENTIAL, true);\n if (cachedCcsCred) {\n try {\n return JSON.parse(cachedCcsCred) as CcsCredential;\n } catch (e) {\n this.authModule.logger.error(\"Cache credential could not be parsed\");\n this.authModule.logger.errorPii(`Cache credential could not be parsed: ${cachedCcsCred}`);\n }\n }\n return null;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthenticationResult, CommonAuthorizationCodeRequest, AuthorizationCodeClient, ThrottlingUtils, CommonEndSessionRequest, UrlString, AuthError, OIDC_DEFAULT_SCOPES, Constants, ProtocolUtils, ServerAuthorizationCodeResponse, PerformanceEvents, StringUtils, IPerformanceClient, Logger, ICrypto } from \"@azure/msal-common\";\nimport { StandardInteractionClient } from \"./StandardInteractionClient\";\nimport { EventType } from \"../event/EventType\";\nimport { InteractionType, ApiId, BrowserConstants } from \"../utils/BrowserConstants\";\nimport { EndSessionPopupRequest } from \"../request/EndSessionPopupRequest\";\nimport { NavigationOptions } from \"../navigation/NavigationOptions\";\nimport { BrowserUtils } from \"../utils/BrowserUtils\";\nimport { PopupRequest } from \"../request/PopupRequest\";\nimport { NativeInteractionClient } from \"./NativeInteractionClient\";\nimport { NativeMessageHandler } from \"../broker/nativeBroker/NativeMessageHandler\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { INavigationClient } from \"../navigation/INavigationClient\";\nimport { EventHandler } from \"../event/EventHandler\";\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\nimport { BrowserConfiguration } from \"../config/Configuration\";\nimport { InteractionHandler, InteractionParams } from \"../interaction_handler/InteractionHandler\";\nimport { PopupWindowAttributes } from \"../request/PopupWindowAttributes\";\n\nexport type PopupParams = InteractionParams & {\n popup?: Window|null;\n popupName: string;\n popupWindowAttributes: PopupWindowAttributes\n};\n\nexport class PopupClient extends StandardInteractionClient {\n private currentWindow: Window | undefined;\n protected nativeStorage: BrowserCacheManager;\n\n constructor(config: BrowserConfiguration, storageImpl: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, performanceClient: IPerformanceClient, nativeStorageImpl: BrowserCacheManager, nativeMessageHandler?: NativeMessageHandler, correlationId?: string) {\n super(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId);\n // Properly sets this reference for the unload event.\n this.unloadWindow = this.unloadWindow.bind(this);\n this.nativeStorage = nativeStorageImpl;\n }\n\n /**\n * Acquires tokens by opening a popup window to the /authorize endpoint of the authority\n * @param request\n */\n acquireToken(request: PopupRequest): Promise<AuthenticationResult> {\n try {\n const popupName = this.generatePopupName(request.scopes || OIDC_DEFAULT_SCOPES, request.authority || this.config.auth.authority);\n const popupWindowAttributes = request.popupWindowAttributes || {};\n\n // asyncPopups flag is true. Acquires token without first opening popup. Popup will be opened later asynchronously.\n if (this.config.system.asyncPopups) {\n this.logger.verbose(\"asyncPopups set to true, acquiring token\");\n // Passes on popup position and dimensions if in request\n return this.acquireTokenPopupAsync(request, popupName, popupWindowAttributes);\n } else {\n // asyncPopups flag is set to false. Opens popup before acquiring token.\n this.logger.verbose(\"asyncPopup set to false, opening popup before acquiring token\");\n const popup = this.openSizedPopup(\"about:blank\", popupName, popupWindowAttributes);\n return this.acquireTokenPopupAsync(request, popupName, popupWindowAttributes, popup);\n }\n } catch (e) {\n return Promise.reject(e);\n }\n }\n\n /**\n * Clears local cache for the current user then opens a popup window prompting the user to sign-out of the server\n * @param logoutRequest\n */\n logout(logoutRequest?: EndSessionPopupRequest): Promise<void> {\n try {\n this.logger.verbose(\"logoutPopup called\");\n const validLogoutRequest = this.initializeLogoutRequest(logoutRequest);\n\n const popupName = this.generateLogoutPopupName(validLogoutRequest);\n const authority = logoutRequest && logoutRequest.authority;\n const mainWindowRedirectUri = logoutRequest && logoutRequest.mainWindowRedirectUri;\n const popupWindowAttributes = logoutRequest?.popupWindowAttributes || {};\n\n // asyncPopups flag is true. Acquires token without first opening popup. Popup will be opened later asynchronously.\n if (this.config.system.asyncPopups) {\n this.logger.verbose(\"asyncPopups set to true\");\n // Passes on popup position and dimensions if in request\n return this.logoutPopupAsync(validLogoutRequest, popupName, popupWindowAttributes, authority, undefined, mainWindowRedirectUri);\n } else {\n // asyncPopups flag is set to false. Opens popup before logging out.\n this.logger.verbose(\"asyncPopup set to false, opening popup\");\n const popup = this.openSizedPopup(\"about:blank\", popupName, popupWindowAttributes);\n return this.logoutPopupAsync(validLogoutRequest, popupName, popupWindowAttributes, authority, popup, mainWindowRedirectUri);\n }\n } catch (e) {\n // Since this function is synchronous we need to reject\n return Promise.reject(e);\n }\n }\n\n /**\n * Helper which obtains an access_token for your API via opening a popup window in the user's browser\n * @param validRequest\n * @param popupName\n * @param popup\n * @param popupWindowAttributes\n *\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\n */\n protected async acquireTokenPopupAsync(request: PopupRequest, popupName: string, popupWindowAttributes: PopupWindowAttributes, popup?: Window|null): Promise<AuthenticationResult> {\n this.logger.verbose(\"acquireTokenPopupAsync called\");\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenPopup);\n const validRequest = await this.initializeAuthorizationRequest(request, InteractionType.Popup);\n this.browserStorage.updateCacheEntries(validRequest.state, validRequest.nonce, validRequest.authority, validRequest.loginHint || Constants.EMPTY_STRING, validRequest.account || null);\n\n try {\n // Create auth code request and generate PKCE params\n const authCodeRequest: CommonAuthorizationCodeRequest = await this.initializeAuthorizationCodeRequest(validRequest);\n\n // Initialize the client\n const authClient: AuthorizationCodeClient = await this.createAuthCodeClient(serverTelemetryManager, validRequest.authority, validRequest.azureCloudOptions);\n this.logger.verbose(\"Auth code client created\");\n\n const isNativeBroker = NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeMessageHandler, request.authenticationScheme);\n // Start measurement for server calls with native brokering enabled\n let fetchNativeAccountIdMeasurement;\n if (isNativeBroker) {\n fetchNativeAccountIdMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.FetchAccountIdWithNativeBroker, request.correlationId);\n }\n\n // Create acquire token url.\n const navigateUrl = await authClient.getAuthCodeUrl({\n ...validRequest,\n nativeBroker: isNativeBroker\n });\n\n // Create popup interaction handler.\n const interactionHandler = new InteractionHandler(authClient, this.browserStorage, authCodeRequest, this.logger);\n\n // Show the UI once the url has been created. Get the window handle for the popup.\n const popupParameters: PopupParams = {\n popup,\n popupName,\n popupWindowAttributes\n };\n const popupWindow: Window = this.initiateAuthRequest(navigateUrl, popupParameters);\n this.eventHandler.emitEvent(EventType.POPUP_OPENED, InteractionType.Popup, {popupWindow}, null);\n\n // Monitor the window for the hash. Return the string value and close the popup when the hash is received. Default timeout is 60 seconds.\n const hash = await this.monitorPopupForHash(popupWindow);\n // Deserialize hash fragment response parameters.\n const serverParams: ServerAuthorizationCodeResponse = UrlString.getDeserializedHash(hash);\n const state = this.validateAndExtractStateFromHash(serverParams, InteractionType.Popup, validRequest.correlationId);\n // Remove throttle if it exists\n ThrottlingUtils.removeThrottle(this.browserStorage, this.config.auth.clientId, authCodeRequest);\n\n if (serverParams.accountId) {\n this.logger.verbose(\"Account id found in hash, calling WAM for token\");\n // end measurement for server call with native brokering enabled\n if (fetchNativeAccountIdMeasurement) {\n fetchNativeAccountIdMeasurement.endMeasurement({\n success: true,\n isNativeBroker: true\n });\n }\n\n if (!this.nativeMessageHandler) {\n throw BrowserAuthError.createNativeConnectionNotEstablishedError();\n }\n const nativeInteractionClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.acquireTokenPopup, this.performanceClient, this.nativeMessageHandler, serverParams.accountId, this.nativeStorage, validRequest.correlationId);\n const { userRequestState } = ProtocolUtils.parseRequestState(this.browserCrypto, state);\n return nativeInteractionClient.acquireToken({\n ...validRequest,\n state: userRequestState,\n prompt: undefined // Server should handle the prompt, ideally native broker can do this part silently\n }).finally(() => {\n this.browserStorage.cleanRequestByState(state);\n });\n }\n\n // Handle response from hash string.\n const result = await interactionHandler.handleCodeResponseFromHash(hash, state, authClient.authority, this.networkClient);\n\n return result;\n } catch (e) {\n if (popup) {\n // Close the synchronous popup if an error is thrown before the window unload event is registered\n popup.close();\n }\n\n if (e instanceof AuthError) {\n (e as AuthError).setCorrelationId(this.correlationId);\n }\n\n serverTelemetryManager.cacheFailedRequest(e);\n this.browserStorage.cleanRequestByState(validRequest.state);\n throw e;\n }\n }\n\n /**\n *\n * @param validRequest\n * @param popupName\n * @param requestAuthority\n * @param popup\n * @param mainWindowRedirectUri\n * @param popupWindowAttributes\n */\n protected async logoutPopupAsync(validRequest: CommonEndSessionRequest, popupName: string, popupWindowAttributes: PopupWindowAttributes, requestAuthority?: string, popup?: Window|null, mainWindowRedirectUri?: string): Promise<void> {\n this.logger.verbose(\"logoutPopupAsync called\");\n this.eventHandler.emitEvent(EventType.LOGOUT_START, InteractionType.Popup, validRequest);\n\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.logoutPopup);\n\n try {\n // Clear cache on logout\n await this.clearCacheOnLogout(validRequest.account);\n\n // Initialize the client\n const authClient = await this.createAuthCodeClient(serverTelemetryManager, requestAuthority);\n this.logger.verbose(\"Auth code client created\");\n\n // Create logout string and navigate user window to logout.\n const logoutUri: string = authClient.getLogoutUri(validRequest);\n\n this.eventHandler.emitEvent(EventType.LOGOUT_SUCCESS, InteractionType.Popup, validRequest);\n\n // Open the popup window to requestUrl.\n const popupWindow = this.openPopup(logoutUri, {popupName, popupWindowAttributes, popup});\n this.eventHandler.emitEvent(EventType.POPUP_OPENED, InteractionType.Popup, {popupWindow}, null);\n\n await this.waitForLogoutPopup(popupWindow);\n\n if (mainWindowRedirectUri) {\n const navigationOptions: NavigationOptions = {\n apiId: ApiId.logoutPopup,\n timeout: this.config.system.redirectNavigationTimeout,\n noHistory: false\n };\n const absoluteUrl = UrlString.getAbsoluteUrl(mainWindowRedirectUri, BrowserUtils.getCurrentUri());\n\n this.logger.verbose(\"Redirecting main window to url specified in the request\");\n this.logger.verbosePii(`Redirecting main window to: ${absoluteUrl}`);\n this.navigationClient.navigateInternal(absoluteUrl, navigationOptions);\n } else {\n this.logger.verbose(\"No main window navigation requested\");\n }\n } catch (e) {\n if (popup) {\n // Close the synchronous popup if an error is thrown before the window unload event is registered\n popup.close();\n }\n\n if (e instanceof AuthError) {\n (e as AuthError).setCorrelationId(this.correlationId);\n }\n\n this.browserStorage.setInteractionInProgress(false);\n this.eventHandler.emitEvent(EventType.LOGOUT_FAILURE, InteractionType.Popup, null, e);\n this.eventHandler.emitEvent(EventType.LOGOUT_END, InteractionType.Popup);\n serverTelemetryManager.cacheFailedRequest(e);\n throw e;\n }\n\n this.eventHandler.emitEvent(EventType.LOGOUT_END, InteractionType.Popup);\n }\n\n /**\n * Opens a popup window with given request Url.\n * @param requestUrl\n */\n initiateAuthRequest(requestUrl: string, params: PopupParams): Window {\n // Check that request url is not empty.\n if (!StringUtils.isEmpty(requestUrl)) {\n this.logger.infoPii(`Navigate to: ${requestUrl}`);\n // Open the popup window to requestUrl.\n return this.openPopup(requestUrl, params);\n } else {\n // Throw error if request URL is empty.\n this.logger.error(\"Navigate url is empty\");\n throw BrowserAuthError.createEmptyNavigationUriError();\n }\n }\n\n /**\n * Monitors a window until it loads a url with the same origin.\n * @param popupWindow - window that is being monitored\n * @param timeout - timeout for processing hash once popup is redirected back to application\n */\n monitorPopupForHash(popupWindow: Window): Promise<string> {\n return new Promise((resolve, reject) => {\n /*\n * Polling for popups needs to be tick-based,\n * since a non-trivial amount of time can be spent on interaction (which should not count against the timeout).\n */\n const maxTicks = this.config.system.windowHashTimeout / BrowserConstants.POLL_INTERVAL_MS;\n let ticks = 0;\n\n this.logger.verbose(\"PopupHandler.monitorPopupForHash - polling started\");\n\n const intervalId = setInterval(() => {\n // Window is closed\n if (popupWindow.closed) {\n this.logger.error(\"PopupHandler.monitorPopupForHash - window closed\");\n this.cleanPopup();\n clearInterval(intervalId);\n reject(BrowserAuthError.createUserCancelledError());\n return;\n }\n\n let href: string = Constants.EMPTY_STRING;\n let hash: string = Constants.EMPTY_STRING;\n try {\n /*\n * Will throw if cross origin,\n * which should be caught and ignored\n * since we need the interval to keep running while on STS UI.\n */\n href = popupWindow.location.href;\n hash = popupWindow.location.hash;\n } catch (e) {}\n\n // Don't process blank pages or cross domain\n if (StringUtils.isEmpty(href) || href === \"about:blank\") {\n return;\n }\n\n this.logger.verbose(\"PopupHandler.monitorPopupForHash - popup window is on same origin as caller\");\n\n /*\n * Only run clock when we are on same domain for popups\n * as popup operations can take a long time.\n */\n ticks++;\n\n if (hash) {\n this.logger.verbose(\"PopupHandler.monitorPopupForHash - found hash in url\");\n clearInterval(intervalId);\n this.cleanPopup(popupWindow);\n\n if (UrlString.hashContainsKnownProperties(hash)) {\n this.logger.verbose(\"PopupHandler.monitorPopupForHash - hash contains known properties, returning.\");\n resolve(hash);\n } else {\n this.logger.error(\"PopupHandler.monitorPopupForHash - found hash in url but it does not contain known properties. Check that your router is not changing the hash prematurely.\");\n this.logger.errorPii(`PopupHandler.monitorPopupForHash - hash found: ${hash}`);\n reject(BrowserAuthError.createHashDoesNotContainKnownPropertiesError());\n }\n } else if (ticks > maxTicks) {\n this.logger.error(\"PopupHandler.monitorPopupForHash - unable to find hash in url, timing out\");\n clearInterval(intervalId);\n reject(BrowserAuthError.createMonitorPopupTimeoutError());\n }\n }, BrowserConstants.POLL_INTERVAL_MS);\n });\n }\n\n /**\n * Waits for user interaction in logout popup window\n * @param popupWindow\n * @returns\n */\n waitForLogoutPopup(popupWindow: Window): Promise<void> {\n return new Promise((resolve) => {\n this.logger.verbose(\"PopupHandler.waitForLogoutPopup - polling started\");\n\n const intervalId = setInterval(() => {\n // Window is closed\n if (popupWindow.closed) {\n this.logger.error(\"PopupHandler.waitForLogoutPopup - window closed\");\n this.cleanPopup();\n clearInterval(intervalId);\n resolve();\n }\n\n let href: string = Constants.EMPTY_STRING;\n try {\n /*\n * Will throw if cross origin,\n * which should be caught and ignored\n * since we need the interval to keep running while on STS UI.\n */\n href = popupWindow.location.href;\n } catch (e) {}\n\n // Don't process blank pages or cross domain\n if (StringUtils.isEmpty(href) || href === \"about:blank\") {\n return;\n }\n\n this.logger.verbose(\"PopupHandler.waitForLogoutPopup - popup window is on same origin as caller, closing.\");\n\n clearInterval(intervalId);\n this.cleanPopup(popupWindow);\n resolve();\n }, BrowserConstants.POLL_INTERVAL_MS);\n });\n }\n\n /**\n * @hidden\n *\n * Configures popup window for login.\n *\n * @param urlNavigate\n * @param title\n * @param popUpWidth\n * @param popUpHeight\n * @param popupWindowAttributes\n * @ignore\n * @hidden\n */\n openPopup(urlNavigate: string, popupParams: PopupParams): Window {\n try {\n let popupWindow;\n // Popup window passed in, setting url to navigate to\n if (popupParams.popup) {\n popupWindow = popupParams.popup;\n this.logger.verbosePii(`Navigating popup window to: ${urlNavigate}`);\n popupWindow.location.assign(urlNavigate);\n } else if (typeof popupParams.popup === \"undefined\") {\n // Popup will be undefined if it was not passed in\n this.logger.verbosePii(`Opening popup window to: ${urlNavigate}`);\n popupWindow = this.openSizedPopup(urlNavigate, popupParams.popupName, popupParams.popupWindowAttributes);\n }\n\n // Popup will be null if popups are blocked\n if (!popupWindow) {\n throw BrowserAuthError.createEmptyWindowCreatedError();\n }\n if (popupWindow.focus) {\n popupWindow.focus();\n }\n this.currentWindow = popupWindow;\n window.addEventListener(\"beforeunload\", this.unloadWindow);\n\n return popupWindow;\n } catch (e) {\n this.logger.error(\"error opening popup \" + (e as AuthError).message);\n this.browserStorage.setInteractionInProgress(false);\n throw BrowserAuthError.createPopupWindowError((e as AuthError).toString());\n }\n }\n\n /**\n * Helper function to set popup window dimensions and position\n * @param urlNavigate\n * @param popupName\n * @param popupWindowAttributes\n * @returns\n */\n openSizedPopup(urlNavigate: string, popupName: string, popupWindowAttributes: PopupWindowAttributes): Window|null {\n /**\n * adding winLeft and winTop to account for dual monitor\n * using screenLeft and screenTop for IE8 and earlier\n */\n const winLeft = window.screenLeft ? window.screenLeft : window.screenX;\n const winTop = window.screenTop ? window.screenTop : window.screenY;\n /**\n * window.innerWidth displays browser window\"s height and width excluding toolbars\n * using document.documentElement.clientWidth for IE8 and earlier\n */\n const winWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;\n const winHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;\n\n let width = popupWindowAttributes.popupSize?.width;\n let height = popupWindowAttributes.popupSize?.height;\n let top = popupWindowAttributes.popupPosition?.top;\n let left = popupWindowAttributes.popupPosition?.left;\n\n if (!width || width < 0 || width > winWidth) {\n this.logger.verbose(\"Default popup window width used. Window width not configured or invalid.\");\n width = BrowserConstants.POPUP_WIDTH;\n }\n\n if (!height || height < 0 || height > winHeight) {\n this.logger.verbose(\"Default popup window height used. Window height not configured or invalid.\");\n height = BrowserConstants.POPUP_HEIGHT;\n }\n\n if (!top || top < 0 || top > winHeight) {\n this.logger.verbose(\"Default popup window top position used. Window top not configured or invalid.\");\n top = Math.max(0, ((winHeight / 2) - (BrowserConstants.POPUP_HEIGHT / 2)) + winTop);\n }\n\n if (!left || left < 0 || left > winWidth) {\n this.logger.verbose(\"Default popup window left position used. Window left not configured or invalid.\");\n left = Math.max(0, ((winWidth / 2) - (BrowserConstants.POPUP_WIDTH / 2)) + winLeft);\n }\n\n return window.open(urlNavigate, popupName, `width=${width}, height=${height}, top=${top}, left=${left}, scrollbars=yes`);\n }\n\n /**\n * Event callback to unload main window.\n */\n unloadWindow(e: Event): void {\n this.browserStorage.cleanRequestByInteractionType(InteractionType.Popup);\n if (this.currentWindow) {\n this.currentWindow.close();\n }\n // Guarantees browser unload will happen, so no other errors will be thrown.\n e.preventDefault();\n }\n\n /**\n * Closes popup, removes any state vars created during popup calls.\n * @param popupWindow\n */\n cleanPopup(popupWindow?: Window): void {\n if (popupWindow) {\n // Close window.\n popupWindow.close();\n }\n // Remove window unload function\n window.removeEventListener(\"beforeunload\", this.unloadWindow);\n\n // Interaction is completed - remove interaction status.\n this.browserStorage.setInteractionInProgress(false);\n }\n\n /**\n * Generates the name for the popup based on the client id and request\n * @param clientId\n * @param request\n */\n generatePopupName(scopes: Array<string>, authority: string): string {\n return `${BrowserConstants.POPUP_NAME_PREFIX}.${this.config.auth.clientId}.${scopes.join(\"-\")}.${authority}.${this.correlationId}`;\n }\n\n /**\n * Generates the name for the popup based on the client id and request for logouts\n * @param clientId\n * @param request\n */\n generateLogoutPopupName(request: CommonEndSessionRequest): string {\n const homeAccountId = request.account && request.account.homeAccountId;\n return `${BrowserConstants.POPUP_NAME_PREFIX}.${this.config.auth.clientId}.${homeAccountId}.${this.correlationId}`;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthorizationCodeClient, StringUtils, CommonAuthorizationCodeRequest, ICrypto, AuthenticationResult, Authority, INetworkModule, ClientAuthError, Logger, ServerError } from \"@azure/msal-common\";\nimport { BrowserAuthError, BrowserAuthErrorMessage } from \"../error/BrowserAuthError\";\nimport { ApiId, TemporaryCacheKeys } from \"../utils/BrowserConstants\";\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\nimport { InteractionHandler, InteractionParams } from \"./InteractionHandler\";\nimport { INavigationClient } from \"../navigation/INavigationClient\";\nimport { NavigationOptions } from \"../navigation/NavigationOptions\";\n\nexport type RedirectParams = InteractionParams & {\n navigationClient: INavigationClient;\n redirectTimeout: number;\n redirectStartPage: string;\n onRedirectNavigate?: (url: string) => void | boolean;\n};\n\nexport class RedirectHandler extends InteractionHandler {\n\n private browserCrypto: ICrypto;\n\n constructor(authCodeModule: AuthorizationCodeClient, storageImpl: BrowserCacheManager, authCodeRequest: CommonAuthorizationCodeRequest, logger: Logger, browserCrypto: ICrypto) {\n super(authCodeModule, storageImpl, authCodeRequest, logger);\n this.browserCrypto = browserCrypto;\n }\n\n /**\n * Redirects window to given URL.\n * @param urlNavigate\n */\n async initiateAuthRequest(requestUrl: string, params: RedirectParams): Promise<void> {\n this.logger.verbose(\"RedirectHandler.initiateAuthRequest called\");\n // Navigate if valid URL\n if (!StringUtils.isEmpty(requestUrl)) {\n // Cache start page, returns to this page after redirectUri if navigateToLoginRequestUrl is true\n if (params.redirectStartPage) {\n this.logger.verbose(\"RedirectHandler.initiateAuthRequest: redirectStartPage set, caching start page\");\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.ORIGIN_URI, params.redirectStartPage, true);\n }\n\n // Set interaction status in the library.\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.CORRELATION_ID, this.authCodeRequest.correlationId, true);\n this.browserStorage.cacheCodeRequest(this.authCodeRequest, this.browserCrypto);\n this.logger.infoPii(`RedirectHandler.initiateAuthRequest: Navigate to: ${requestUrl}`);\n const navigationOptions: NavigationOptions = {\n apiId: ApiId.acquireTokenRedirect,\n timeout: params.redirectTimeout,\n noHistory: false\n };\n \n // If onRedirectNavigate is implemented, invoke it and provide requestUrl\n if (typeof params.onRedirectNavigate === \"function\") {\n this.logger.verbose(\"RedirectHandler.initiateAuthRequest: Invoking onRedirectNavigate callback\");\n const navigate = params.onRedirectNavigate(requestUrl);\n\n // Returning false from onRedirectNavigate will stop navigation\n if (navigate !== false) {\n this.logger.verbose(\"RedirectHandler.initiateAuthRequest: onRedirectNavigate did not return false, navigating\");\n await params.navigationClient.navigateExternal(requestUrl, navigationOptions);\n return;\n } else {\n this.logger.verbose(\"RedirectHandler.initiateAuthRequest: onRedirectNavigate returned false, stopping navigation\");\n return;\n }\n } else {\n // Navigate window to request URL\n this.logger.verbose(\"RedirectHandler.initiateAuthRequest: Navigating window to navigate url\");\n await params.navigationClient.navigateExternal(requestUrl, navigationOptions);\n return;\n }\n } else {\n // Throw error if request URL is empty.\n this.logger.info(\"RedirectHandler.initiateAuthRequest: Navigate url is empty\");\n throw BrowserAuthError.createEmptyNavigationUriError();\n }\n }\n\n /**\n * Handle authorization code response in the window.\n * @param hash\n */\n async handleCodeResponseFromHash(locationHash: string, state: string, authority: Authority, networkModule: INetworkModule): Promise<AuthenticationResult> {\n this.logger.verbose(\"RedirectHandler.handleCodeResponse called\");\n\n // Check that location hash isn't empty.\n if (StringUtils.isEmpty(locationHash)) {\n throw BrowserAuthError.createEmptyHashError(locationHash);\n }\n\n // Interaction is completed - remove interaction status.\n this.browserStorage.setInteractionInProgress(false);\n\n // Handle code response.\n const stateKey = this.browserStorage.generateStateKey(state);\n const requestState = this.browserStorage.getTemporaryCache(stateKey);\n if (!requestState) {\n throw ClientAuthError.createStateNotFoundError(\"Cached State\");\n }\n\n let authCodeResponse;\n try {\n authCodeResponse = this.authModule.handleFragmentResponse(locationHash, requestState);\n } catch (e) {\n if (e instanceof ServerError && e.subError === BrowserAuthErrorMessage.userCancelledError.code) {\n // Translate server error caused by user closing native prompt to corresponding first class MSAL error\n throw BrowserAuthError.createUserCancelledError();\n } else {\n throw e;\n }\n }\n\n // Get cached items\n const nonceKey = this.browserStorage.generateNonceKey(requestState);\n const cachedNonce = this.browserStorage.getTemporaryCache(nonceKey);\n\n // Assign code to request\n this.authCodeRequest.code = authCodeResponse.code;\n\n // Check for new cloud instance\n if (authCodeResponse.cloud_instance_host_name) {\n await this.updateTokenEndpointAuthority(authCodeResponse.cloud_instance_host_name, authority, networkModule);\n }\n\n authCodeResponse.nonce = cachedNonce || undefined;\n authCodeResponse.state = requestState;\n\n // Add CCS parameters if available\n if (authCodeResponse.client_info) {\n this.authCodeRequest.clientInfo = authCodeResponse.client_info;\n } else {\n const cachedCcsCred = this.checkCcsCredentials();\n if (cachedCcsCred) {\n this.authCodeRequest.ccsCredential = cachedCcsCred;\n }\n }\n\n // Acquire token with retrieved code.\n const tokenResponse = await this.authModule.acquireToken(this.authCodeRequest, authCodeResponse);\n\n this.browserStorage.cleanRequestByState(state);\n return tokenResponse;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthenticationResult, CommonAuthorizationCodeRequest, AuthorizationCodeClient, UrlString, AuthError, ServerTelemetryManager, Constants, ProtocolUtils, ServerAuthorizationCodeResponse, ThrottlingUtils, ICrypto, Logger, IPerformanceClient } from \"@azure/msal-common\";\nimport { StandardInteractionClient } from \"./StandardInteractionClient\";\nimport { ApiId, InteractionType, TemporaryCacheKeys } from \"../utils/BrowserConstants\";\nimport { RedirectHandler } from \"../interaction_handler/RedirectHandler\";\nimport { BrowserUtils } from \"../utils/BrowserUtils\";\nimport { EndSessionRequest } from \"../request/EndSessionRequest\";\nimport { EventType } from \"../event/EventType\";\nimport { NavigationOptions } from \"../navigation/NavigationOptions\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { RedirectRequest } from \"../request/RedirectRequest\";\nimport { NativeInteractionClient } from \"./NativeInteractionClient\";\nimport { NativeMessageHandler } from \"../broker/nativeBroker/NativeMessageHandler\";\nimport { BrowserConfiguration } from \"../config/Configuration\";\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\nimport { EventHandler } from \"../event/EventHandler\";\nimport { INavigationClient } from \"../navigation/INavigationClient\";\n\nexport class RedirectClient extends StandardInteractionClient {\n protected nativeStorage: BrowserCacheManager;\n\n constructor(config: BrowserConfiguration, storageImpl: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, performanceClient: IPerformanceClient, nativeStorageImpl: BrowserCacheManager, nativeMessageHandler?: NativeMessageHandler, correlationId?: string) {\n super(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId);\n this.nativeStorage = nativeStorageImpl;\n }\n\n /**\n * Redirects the page to the /authorize endpoint of the IDP\n * @param request\n */\n async acquireToken(request: RedirectRequest): Promise<void> {\n const validRequest = await this.initializeAuthorizationRequest(request, InteractionType.Redirect);\n this.browserStorage.updateCacheEntries(validRequest.state, validRequest.nonce, validRequest.authority, validRequest.loginHint || Constants.EMPTY_STRING, validRequest.account || null);\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenRedirect);\n\n const handleBackButton = (event: PageTransitionEvent) => {\n // Clear temporary cache if the back button is clicked during the redirect flow.\n if (event.persisted) {\n this.logger.verbose(\"Page was restored from back/forward cache. Clearing temporary cache.\");\n this.browserStorage.cleanRequestByState(validRequest.state);\n }\n };\n\n try {\n // Create auth code request and generate PKCE params\n const authCodeRequest: CommonAuthorizationCodeRequest = await this.initializeAuthorizationCodeRequest(validRequest);\n\n // Initialize the client\n const authClient: AuthorizationCodeClient = await this.createAuthCodeClient(serverTelemetryManager, validRequest.authority, validRequest.azureCloudOptions);\n this.logger.verbose(\"Auth code client created\");\n\n // Create redirect interaction handler.\n const interactionHandler = new RedirectHandler(authClient, this.browserStorage, authCodeRequest, this.logger, this.browserCrypto);\n\n // Create acquire token url.\n const navigateUrl = await authClient.getAuthCodeUrl({\n ...validRequest,\n nativeBroker: NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeMessageHandler, request.authenticationScheme)\n });\n\n const redirectStartPage = this.getRedirectStartPage(request.redirectStartPage);\n this.logger.verbosePii(`Redirect start page: ${redirectStartPage}`);\n\n // Clear temporary cache if the back button is clicked during the redirect flow.\n window.addEventListener(\"pageshow\", handleBackButton);\n\n // Show the UI once the url has been created. Response will come back in the hash, which will be handled in the handleRedirectCallback function.\n return await interactionHandler.initiateAuthRequest(navigateUrl, {\n navigationClient: this.navigationClient,\n redirectTimeout: this.config.system.redirectNavigationTimeout,\n redirectStartPage: redirectStartPage,\n onRedirectNavigate: request.onRedirectNavigate\n });\n } catch (e) {\n if (e instanceof AuthError) {\n e.setCorrelationId(this.correlationId);\n }\n window.removeEventListener(\"pageshow\", handleBackButton);\n serverTelemetryManager.cacheFailedRequest(e);\n this.browserStorage.cleanRequestByState(validRequest.state);\n throw e;\n }\n }\n\n /**\n * Checks if navigateToLoginRequestUrl is set, and:\n * - if true, performs logic to cache and navigate\n * - if false, handles hash string and parses response\n * @param hash\n */\n async handleRedirectPromise(hash?: string): Promise<AuthenticationResult | null> {\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.handleRedirectPromise);\n try {\n if (!this.browserStorage.isInteractionInProgress(true)) {\n this.logger.info(\"handleRedirectPromise called but there is no interaction in progress, returning null.\");\n return null;\n }\n\n const responseHash = this.getRedirectResponseHash(hash || window.location.hash);\n if (!responseHash) {\n // Not a recognized server response hash or hash not associated with a redirect request\n this.logger.info(\"handleRedirectPromise did not detect a response hash as a result of a redirect. Cleaning temporary cache.\");\n this.browserStorage.cleanRequestByInteractionType(InteractionType.Redirect);\n return null;\n }\n\n let state: string;\n try {\n // Deserialize hash fragment response parameters.\n const serverParams: ServerAuthorizationCodeResponse = UrlString.getDeserializedHash(responseHash);\n state = this.validateAndExtractStateFromHash(serverParams, InteractionType.Redirect);\n this.logger.verbose(\"State extracted from hash\");\n } catch (e) {\n this.logger.info(`handleRedirectPromise was unable to extract state due to: ${e}`);\n this.browserStorage.cleanRequestByInteractionType(InteractionType.Redirect);\n return null;\n }\n\n // If navigateToLoginRequestUrl is true, get the url where the redirect request was initiated\n const loginRequestUrl = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.ORIGIN_URI, true) || Constants.EMPTY_STRING;\n const loginRequestUrlNormalized = UrlString.removeHashFromUrl(loginRequestUrl);\n const currentUrlNormalized = UrlString.removeHashFromUrl(window.location.href);\n\n if (loginRequestUrlNormalized === currentUrlNormalized && this.config.auth.navigateToLoginRequestUrl) {\n // We are on the page we need to navigate to - handle hash\n this.logger.verbose(\"Current page is loginRequestUrl, handling hash\");\n const handleHashResult = await this.handleHash(responseHash, state, serverTelemetryManager);\n\n if (loginRequestUrl.indexOf(\"#\") > -1) {\n // Replace current hash with non-msal hash, if present\n BrowserUtils.replaceHash(loginRequestUrl);\n }\n\n return handleHashResult;\n } else if (!this.config.auth.navigateToLoginRequestUrl) {\n this.logger.verbose(\"NavigateToLoginRequestUrl set to false, handling hash\");\n return this.handleHash(responseHash, state, serverTelemetryManager);\n } else if (!BrowserUtils.isInIframe() || this.config.system.allowRedirectInIframe) {\n /*\n * Returned from authority using redirect - need to perform navigation before processing response\n * Cache the hash to be retrieved after the next redirect\n */\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.URL_HASH, responseHash, true);\n const navigationOptions: NavigationOptions = {\n apiId: ApiId.handleRedirectPromise,\n timeout: this.config.system.redirectNavigationTimeout,\n noHistory: true\n };\n\n /**\n * Default behavior is to redirect to the start page and not process the hash now.\n * The start page is expected to also call handleRedirectPromise which will process the hash in one of the checks above.\n */\n let processHashOnRedirect: boolean = true;\n if (!loginRequestUrl || loginRequestUrl === \"null\") {\n // Redirect to home page if login request url is null (real null or the string null)\n const homepage = BrowserUtils.getHomepage();\n // Cache the homepage under ORIGIN_URI to ensure cached hash is processed on homepage\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.ORIGIN_URI, homepage, true);\n this.logger.warning(\"Unable to get valid login request url from cache, redirecting to home page\");\n processHashOnRedirect = await this.navigationClient.navigateInternal(homepage, navigationOptions);\n } else {\n // Navigate to page that initiated the redirect request\n this.logger.verbose(`Navigating to loginRequestUrl: ${loginRequestUrl}`);\n processHashOnRedirect = await this.navigationClient.navigateInternal(loginRequestUrl, navigationOptions);\n }\n\n // If navigateInternal implementation returns false, handle the hash now\n if (!processHashOnRedirect) {\n return this.handleHash(responseHash, state, serverTelemetryManager);\n }\n }\n\n return null;\n } catch (e) {\n if (e instanceof AuthError) {\n (e as AuthError).setCorrelationId(this.correlationId);\n }\n serverTelemetryManager.cacheFailedRequest(e);\n this.browserStorage.cleanRequestByInteractionType(InteractionType.Redirect);\n throw e;\n }\n }\n\n /**\n * Gets the response hash for a redirect request\n * Returns null if interactionType in the state value is not \"redirect\" or the hash does not contain known properties\n * @param hash\n */\n protected getRedirectResponseHash(hash: string): string | null {\n this.logger.verbose(\"getRedirectResponseHash called\");\n // Get current location hash from window or cache.\n const isResponseHash: boolean = UrlString.hashContainsKnownProperties(hash);\n\n if (isResponseHash) {\n BrowserUtils.clearHash(window);\n this.logger.verbose(\"Hash contains known properties, returning response hash\");\n return hash;\n }\n\n const cachedHash = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.URL_HASH, true);\n this.browserStorage.removeItem(this.browserStorage.generateCacheKey(TemporaryCacheKeys.URL_HASH));\n\n this.logger.verbose(\"Hash does not contain known properties, returning cached hash\");\n return cachedHash;\n }\n\n /**\n * Checks if hash exists and handles in window.\n * @param hash\n * @param state\n */\n protected async handleHash(hash: string, state: string, serverTelemetryManager: ServerTelemetryManager): Promise<AuthenticationResult> {\n const cachedRequest = this.browserStorage.getCachedRequest(state, this.browserCrypto);\n this.logger.verbose(\"handleHash called, retrieved cached request\");\n\n const serverParams: ServerAuthorizationCodeResponse = UrlString.getDeserializedHash(hash);\n\n if (serverParams.accountId) {\n this.logger.verbose(\"Account id found in hash, calling WAM for token\");\n if (!this.nativeMessageHandler) {\n throw BrowserAuthError.createNativeConnectionNotEstablishedError();\n }\n const nativeInteractionClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.acquireTokenPopup, this.performanceClient, this.nativeMessageHandler, serverParams.accountId, this.browserStorage, cachedRequest.correlationId);\n const { userRequestState } = ProtocolUtils.parseRequestState(this.browserCrypto, state);\n return nativeInteractionClient.acquireToken({\n ...cachedRequest,\n state: userRequestState,\n prompt: undefined // Server should handle the prompt, ideally native broker can do this part silently\n }).finally(() => {\n this.browserStorage.cleanRequestByState(state);\n });\n }\n\n // Hash contains known properties - handle and return in callback\n const currentAuthority = this.browserStorage.getCachedAuthority(state);\n if (!currentAuthority) {\n throw BrowserAuthError.createNoCachedAuthorityError();\n }\n\n const authClient = await this.createAuthCodeClient(serverTelemetryManager, currentAuthority);\n this.logger.verbose(\"Auth code client created\");\n ThrottlingUtils.removeThrottle(this.browserStorage, this.config.auth.clientId, cachedRequest);\n const interactionHandler = new RedirectHandler(authClient, this.browserStorage, cachedRequest, this.logger, this.browserCrypto);\n return await interactionHandler.handleCodeResponseFromHash(hash, state, authClient.authority, this.networkClient);\n }\n\n /**\n * Use to log out the current user, and redirect the user to the postLogoutRedirectUri.\n * Default behaviour is to redirect the user to `window.location.href`.\n * @param logoutRequest\n */\n async logout(logoutRequest?: EndSessionRequest): Promise<void> {\n this.logger.verbose(\"logoutRedirect called\");\n const validLogoutRequest = this.initializeLogoutRequest(logoutRequest);\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.logout);\n\n try {\n this.eventHandler.emitEvent(EventType.LOGOUT_START, InteractionType.Redirect, logoutRequest);\n\n // Clear cache on logout\n await this.clearCacheOnLogout(validLogoutRequest.account);\n\n const navigationOptions: NavigationOptions = {\n apiId: ApiId.logout,\n timeout: this.config.system.redirectNavigationTimeout,\n noHistory: false\n };\n const authClient = await this.createAuthCodeClient(serverTelemetryManager, logoutRequest && logoutRequest.authority);\n this.logger.verbose(\"Auth code client created\");\n\n // Create logout string and navigate user window to logout.\n const logoutUri: string = authClient.getLogoutUri(validLogoutRequest);\n\n this.eventHandler.emitEvent(EventType.LOGOUT_SUCCESS, InteractionType.Redirect, validLogoutRequest);\n // Check if onRedirectNavigate is implemented, and invoke it if so\n if (logoutRequest && typeof logoutRequest.onRedirectNavigate === \"function\") {\n const navigate = logoutRequest.onRedirectNavigate(logoutUri);\n\n if (navigate !== false) {\n this.logger.verbose(\"Logout onRedirectNavigate did not return false, navigating\");\n // Ensure interaction is in progress\n if (!this.browserStorage.getInteractionInProgress()) {\n this.browserStorage.setInteractionInProgress(true);\n }\n await this.navigationClient.navigateExternal(logoutUri, navigationOptions);\n return;\n } else {\n // Ensure interaction is not in progress\n this.browserStorage.setInteractionInProgress(false);\n this.logger.verbose(\"Logout onRedirectNavigate returned false, stopping navigation\");\n }\n } else {\n // Ensure interaction is in progress\n if (!this.browserStorage.getInteractionInProgress()) {\n this.browserStorage.setInteractionInProgress(true);\n }\n await this.navigationClient.navigateExternal(logoutUri, navigationOptions);\n return;\n }\n } catch(e) {\n if (e instanceof AuthError) {\n (e as AuthError).setCorrelationId(this.correlationId);\n }\n serverTelemetryManager.cacheFailedRequest(e);\n this.eventHandler.emitEvent(EventType.LOGOUT_FAILURE, InteractionType.Redirect, null, e);\n this.eventHandler.emitEvent(EventType.LOGOUT_END, InteractionType.Redirect);\n throw e;\n }\n\n this.eventHandler.emitEvent(EventType.LOGOUT_END, InteractionType.Redirect);\n }\n\n /**\n * Use to get the redirectStartPage either from request or use current window\n * @param requestStartPage\n */\n protected getRedirectStartPage(requestStartPage?: string): string {\n const redirectStartPage = requestStartPage || window.location.href;\n return UrlString.getAbsoluteUrl(redirectStartPage, BrowserUtils.getCurrentUri());\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { UrlString, StringUtils, CommonAuthorizationCodeRequest, AuthorizationCodeClient, Constants, Logger } from \"@azure/msal-common\";\nimport { InteractionHandler } from \"./InteractionHandler\";\nimport { BrowserConstants } from \"../utils/BrowserConstants\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\nimport { DEFAULT_IFRAME_TIMEOUT_MS } from \"../config/Configuration\";\n\nexport class SilentHandler extends InteractionHandler {\n\n private navigateFrameWait: number;\n constructor(authCodeModule: AuthorizationCodeClient, storageImpl: BrowserCacheManager, authCodeRequest: CommonAuthorizationCodeRequest, logger: Logger, navigateFrameWait: number) {\n super(authCodeModule, storageImpl, authCodeRequest, logger);\n this.navigateFrameWait = navigateFrameWait;\n }\n\n /**\n * Creates a hidden iframe to given URL using user-requested scopes as an id.\n * @param urlNavigate\n * @param userRequestScopes\n */\n async initiateAuthRequest(requestUrl: string): Promise<HTMLIFrameElement> {\n if (StringUtils.isEmpty(requestUrl)) {\n // Throw error if request URL is empty.\n this.logger.info(\"Navigate url is empty\");\n throw BrowserAuthError.createEmptyNavigationUriError();\n }\n\n return this.navigateFrameWait ? await this.loadFrame(requestUrl) : this.loadFrameSync(requestUrl);\n }\n\n /**\n * Monitors an iframe content window until it loads a url with a known hash, or hits a specified timeout.\n * @param iframe\n * @param timeout\n */\n monitorIframeForHash(iframe: HTMLIFrameElement, timeout: number): Promise<string> {\n return new Promise((resolve, reject) => {\n if (timeout < DEFAULT_IFRAME_TIMEOUT_MS) {\n this.logger.warning(`system.loadFrameTimeout or system.iframeHashTimeout set to lower (${timeout}ms) than the default (${DEFAULT_IFRAME_TIMEOUT_MS}ms). This may result in timeouts.`);\n }\n\n /*\n * Polling for iframes can be purely timing based,\n * since we don't need to account for interaction.\n */\n const nowMark = window.performance.now();\n const timeoutMark = nowMark + timeout;\n\n const intervalId = setInterval(() => {\n if (window.performance.now() > timeoutMark) {\n this.removeHiddenIframe(iframe);\n clearInterval(intervalId);\n reject(BrowserAuthError.createMonitorIframeTimeoutError());\n return;\n }\n\n let href: string = Constants.EMPTY_STRING;\n const contentWindow = iframe.contentWindow;\n try {\n /*\n * Will throw if cross origin,\n * which should be caught and ignored\n * since we need the interval to keep running while on STS UI.\n */\n href = contentWindow ? contentWindow.location.href : Constants.EMPTY_STRING;\n } catch (e) {}\n\n if (StringUtils.isEmpty(href)) {\n return;\n }\n\n const contentHash = contentWindow ? contentWindow.location.hash: Constants.EMPTY_STRING;\n if (UrlString.hashContainsKnownProperties(contentHash)) {\n // Success case\n this.removeHiddenIframe(iframe);\n clearInterval(intervalId);\n resolve(contentHash);\n return;\n }\n }, BrowserConstants.POLL_INTERVAL_MS);\n });\n }\n\n /**\n * @hidden\n * Loads iframe with authorization endpoint URL\n * @ignore\n */\n private loadFrame(urlNavigate: string): Promise<HTMLIFrameElement> {\n /*\n * This trick overcomes iframe navigation in IE\n * IE does not load the page consistently in iframe\n */\n\n return new Promise((resolve, reject) => {\n const frameHandle = this.createHiddenIframe();\n\n setTimeout(() => {\n if (!frameHandle) {\n reject(\"Unable to load iframe\");\n return;\n }\n\n frameHandle.src = urlNavigate;\n\n resolve(frameHandle);\n }, this.navigateFrameWait);\n });\n }\n\n /**\n * @hidden\n * Loads the iframe synchronously when the navigateTimeFrame is set to `0`\n * @param urlNavigate\n * @param frameName\n * @param logger\n */\n private loadFrameSync(urlNavigate: string): HTMLIFrameElement{\n const frameHandle = this.createHiddenIframe();\n\n frameHandle.src = urlNavigate;\n\n return frameHandle;\n }\n\n /**\n * @hidden\n * Creates a new hidden iframe or gets an existing one for silent token renewal.\n * @ignore\n */\n private createHiddenIframe(): HTMLIFrameElement {\n const authFrame = document.createElement(\"iframe\");\n\n authFrame.style.visibility = \"hidden\";\n authFrame.style.position = \"absolute\";\n authFrame.style.width = authFrame.style.height = \"0\";\n authFrame.style.border = \"0\";\n authFrame.setAttribute(\"sandbox\", \"allow-scripts allow-same-origin allow-forms\");\n document.getElementsByTagName(\"body\")[0].appendChild(authFrame);\n\n return authFrame;\n }\n\n /**\n * @hidden\n * Removes a hidden iframe from the page.\n * @ignore\n */\n private removeHiddenIframe(iframe: HTMLIFrameElement): void {\n if (document.body === iframe.parentNode) {\n document.body.removeChild(iframe);\n }\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthenticationResult, ICrypto, Logger, StringUtils, PromptValue, CommonAuthorizationCodeRequest, AuthorizationCodeClient, AuthError, Constants, UrlString, ServerAuthorizationCodeResponse, ProtocolUtils, IPerformanceClient, PerformanceEvents } from \"@azure/msal-common\";\nimport { StandardInteractionClient } from \"./StandardInteractionClient\";\nimport { AuthorizationUrlRequest } from \"../request/AuthorizationUrlRequest\";\nimport { BrowserConfiguration } from \"../config/Configuration\";\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\nimport { EventHandler } from \"../event/EventHandler\";\nimport { INavigationClient } from \"../navigation/INavigationClient\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { InteractionType, ApiId } from \"../utils/BrowserConstants\";\nimport { SilentHandler } from \"../interaction_handler/SilentHandler\";\nimport { SsoSilentRequest } from \"../request/SsoSilentRequest\";\nimport { NativeMessageHandler } from \"../broker/nativeBroker/NativeMessageHandler\";\nimport { NativeInteractionClient } from \"./NativeInteractionClient\";\n\nexport class SilentIframeClient extends StandardInteractionClient {\n protected apiId: ApiId;\n protected nativeStorage: BrowserCacheManager;\n\n constructor(config: BrowserConfiguration, storageImpl: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, apiId: ApiId, performanceClient: IPerformanceClient, nativeStorageImpl: BrowserCacheManager, nativeMessageHandler?: NativeMessageHandler, correlationId?: string) {\n super(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId);\n this.apiId = apiId;\n this.nativeStorage = nativeStorageImpl;\n }\n\n /**\n * Acquires a token silently by opening a hidden iframe to the /authorize endpoint with prompt=none\n * @param request\n */\n async acquireToken(request: SsoSilentRequest): Promise<AuthenticationResult> {\n this.logger.verbose(\"acquireTokenByIframe called\");\n const acquireTokenMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.SilentIframeClientAcquireToken, request.correlationId);\n // Check that we have some SSO data\n if (StringUtils.isEmpty(request.loginHint) && StringUtils.isEmpty(request.sid) && (!request.account || StringUtils.isEmpty(request.account.username))) {\n this.logger.warning(\"No user hint provided. The authorization server may need more information to complete this request.\");\n }\n\n // Check that prompt is set to none, throw error if it is set to anything else.\n if (request.prompt && request.prompt !== PromptValue.NONE) {\n acquireTokenMeasurement.endMeasurement({\n success: false\n });\n throw BrowserAuthError.createSilentPromptValueError(request.prompt);\n }\n\n // Create silent request\n const silentRequest: AuthorizationUrlRequest = await this.initializeAuthorizationRequest({\n ...request,\n prompt: PromptValue.NONE\n }, InteractionType.Silent);\n this.browserStorage.updateCacheEntries(silentRequest.state, silentRequest.nonce, silentRequest.authority, silentRequest.loginHint || Constants.EMPTY_STRING, silentRequest.account || null);\n\n const serverTelemetryManager = this.initializeServerTelemetryManager(this.apiId);\n\n try {\n // Initialize the client\n const authClient: AuthorizationCodeClient = await this.createAuthCodeClient(serverTelemetryManager, silentRequest.authority, silentRequest.azureCloudOptions);\n this.logger.verbose(\"Auth code client created\");\n\n return await this.silentTokenHelper(authClient, silentRequest).then((result: AuthenticationResult) => {\n acquireTokenMeasurement.endMeasurement({\n success: true,\n fromCache: false\n });\n return result;\n });\n } catch (e) {\n if (e instanceof AuthError) {\n (e as AuthError).setCorrelationId(this.correlationId);\n }\n serverTelemetryManager.cacheFailedRequest(e);\n this.browserStorage.cleanRequestByState(silentRequest.state);\n acquireTokenMeasurement.endMeasurement({\n errorCode: e instanceof AuthError && e.errorCode || undefined,\n subErrorCode: e instanceof AuthError && e.subError || undefined,\n success: false\n });\n throw e;\n }\n }\n\n /**\n * Currently Unsupported\n */\n logout(): Promise<void> {\n // Synchronous so we must reject\n return Promise.reject(BrowserAuthError.createSilentLogoutUnsupportedError());\n }\n\n /**\n * Helper which acquires an authorization code silently using a hidden iframe from given url\n * using the scopes requested as part of the id, and exchanges the code for a set of OAuth tokens.\n * @param navigateUrl\n * @param userRequestScopes\n */\n protected async silentTokenHelper(authClient: AuthorizationCodeClient, silentRequest: AuthorizationUrlRequest): Promise<AuthenticationResult> {\n // Create auth code request and generate PKCE params\n const authCodeRequest: CommonAuthorizationCodeRequest = await this.initializeAuthorizationCodeRequest(silentRequest);\n // Create authorize request url\n const navigateUrl = await authClient.getAuthCodeUrl({\n ...silentRequest,\n nativeBroker: NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeMessageHandler, silentRequest.authenticationScheme)\n });\n // Create silent handler\n const silentHandler = new SilentHandler(authClient, this.browserStorage, authCodeRequest, this.logger, this.config.system.navigateFrameWait);\n // Get the frame handle for the silent request\n const msalFrame = await silentHandler.initiateAuthRequest(navigateUrl);\n // Monitor the window for the hash. Return the string value and close the popup when the hash is received. Default timeout is 60 seconds.\n const hash = await silentHandler.monitorIframeForHash(msalFrame, this.config.system.iframeHashTimeout);\n // Deserialize hash fragment response parameters.\n const serverParams: ServerAuthorizationCodeResponse = UrlString.getDeserializedHash(hash);\n const state = this.validateAndExtractStateFromHash(serverParams, InteractionType.Silent, authCodeRequest.correlationId);\n\n if (serverParams.accountId) {\n this.logger.verbose(\"Account id found in hash, calling WAM for token\");\n if (!this.nativeMessageHandler) {\n throw BrowserAuthError.createNativeConnectionNotEstablishedError();\n }\n const nativeInteractionClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.apiId, this.performanceClient, this.nativeMessageHandler, serverParams.accountId, this.browserStorage, this.correlationId);\n const { userRequestState } = ProtocolUtils.parseRequestState(this.browserCrypto, state);\n return nativeInteractionClient.acquireToken({\n ...silentRequest,\n state: userRequestState,\n prompt: PromptValue.NONE\n }).finally(() => {\n this.browserStorage.cleanRequestByState(state);\n });\n }\n\n // Handle response from hash string\n return silentHandler.handleCodeResponseFromHash(hash, state, authClient.authority, this.networkClient);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { StandardInteractionClient } from \"./StandardInteractionClient\";\nimport { CommonSilentFlowRequest, AuthenticationResult, ServerTelemetryManager, RefreshTokenClient, AuthError, AzureCloudOptions, PerformanceEvents } from \"@azure/msal-common\";\nimport { ApiId } from \"../utils/BrowserConstants\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\n\nexport class SilentRefreshClient extends StandardInteractionClient {\n /**\n * Exchanges the refresh token for new tokens\n * @param request\n */\n async acquireToken(request: CommonSilentFlowRequest): Promise<AuthenticationResult> {\n const silentRequest: CommonSilentFlowRequest = {\n ...request,\n ...await this.initializeBaseRequest(request)\n };\n const acquireTokenMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.SilentRefreshClientAcquireToken, silentRequest.correlationId);\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenSilent_silentFlow);\n\n const refreshTokenClient = await this.createRefreshTokenClient(serverTelemetryManager, silentRequest.authority, silentRequest.azureCloudOptions);\n this.logger.verbose(\"Refresh token client created\");\n // Send request to renew token. Auth module will throw errors if token cannot be renewed.\n return refreshTokenClient.acquireTokenByRefreshToken(silentRequest)\n .then((result: AuthenticationResult) => {\n acquireTokenMeasurement.endMeasurement({\n success: true,\n fromCache: result.fromCache\n });\n\n return result;\n })\n .catch((e: AuthError) => {\n if (e instanceof AuthError) {\n (e as AuthError).setCorrelationId(this.correlationId);\n }\n serverTelemetryManager.cacheFailedRequest(e);\n acquireTokenMeasurement.endMeasurement({\n errorCode: e.errorCode,\n subErrorCode: e.subError,\n success: false\n });\n throw e;\n });\n }\n\n /**\n * Currently Unsupported\n */\n logout(): Promise<void> {\n // Synchronous so we must reject\n return Promise.reject(BrowserAuthError.createSilentLogoutUnsupportedError());\n }\n\n /**\n * Creates a Refresh Client with the given authority, or the default authority.\n * @param serverTelemetryManager\n * @param authorityUrl\n */\n protected async createRefreshTokenClient(serverTelemetryManager: ServerTelemetryManager, authorityUrl?: string, azureCloudOptions?: AzureCloudOptions): Promise<RefreshTokenClient> {\n // Create auth module.\n const clientConfig = await this.getClientConfiguration(serverTelemetryManager, authorityUrl, azureCloudOptions);\n return new RefreshTokenClient(clientConfig, this.performanceClient);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AccessTokenEntity, ICrypto, IdTokenEntity, Logger, ScopeSet, Authority, AuthorityOptions, ExternalTokenResponse, AccountEntity, AuthToken } from \"@azure/msal-common\";\nimport { BrowserConfiguration } from \"../config/Configuration\";\nimport { SilentRequest } from \"../request/SilentRequest\";\nimport { BrowserCacheManager } from \"./BrowserCacheManager\";\nimport { ITokenCache } from \"./ITokenCache\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\n\nexport type LoadTokenOptions = {\n clientInfo?: string,\n expiresOn?: number,\n extendedExpiresOn?: number\n};\n\n/**\n * Token cache manager\n */\nexport class TokenCache implements ITokenCache {\n // Flag to indicate if in browser environment\n public isBrowserEnvironment: boolean;\n // Input configuration by developer/user\n protected config: BrowserConfiguration;\n // Browser cache storage\n private storage: BrowserCacheManager;\n // Logger\n private logger: Logger;\n // Crypto class\n private cryptoObj: ICrypto;\n\n constructor(configuration: BrowserConfiguration, storage: BrowserCacheManager, logger: Logger, cryptoObj: ICrypto) {\n this.isBrowserEnvironment = typeof window !== \"undefined\";\n this.config = configuration;\n this.storage = storage;\n this.logger = logger;\n this.cryptoObj = cryptoObj;\n }\n\n // Move getAllAccounts here and cache utility APIs\n\n /**\n * API to load tokens to msal-browser cache.\n * @param request\n * @param response\n * @param options\n */\n loadExternalTokens(request: SilentRequest, response: ExternalTokenResponse, options: LoadTokenOptions): void {\n this.logger.info(\"TokenCache - loadExternalTokens called\");\n\n if (!response.id_token) {\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please ensure server response includes id token.\");\n }\n\n if (request.account) {\n this.loadIdToken(response.id_token, request.account.homeAccountId, request.account.environment, request.account.tenantId, options);\n this.loadAccessToken(request, response, request.account.homeAccountId, request.account.environment, request.account.tenantId, options);\n } else if (request.authority) {\n\n const authorityUrl = Authority.generateAuthority(request.authority, request.azureCloudOptions);\n const authorityOptions: AuthorityOptions = {\n protocolMode: this.config.auth.protocolMode,\n knownAuthorities: this.config.auth.knownAuthorities,\n cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata,\n authorityMetadata: this.config.auth.authorityMetadata,\n skipAuthorityMetadataCache: this.config.auth.skipAuthorityMetadataCache,\n };\n const authority = new Authority(authorityUrl, this.config.system.networkClient, this.storage, authorityOptions);\n\n // \"clientInfo\" from options takes precedence over \"clientInfo\" in response\n if (options.clientInfo) {\n this.logger.trace(\"TokenCache - homeAccountId from options\");\n this.loadIdToken(response.id_token, options.clientInfo, authority.hostnameAndPort, authority.tenant, options);\n this.loadAccessToken(request, response, options.clientInfo, authority.hostnameAndPort, authority.tenant, options);\n } else if (response.client_info) {\n this.logger.trace(\"TokenCache - homeAccountId from response\");\n this.loadIdToken(response.id_token, response.client_info, authority.hostnameAndPort, authority.tenant, options);\n this.loadAccessToken(request, response, response.client_info, authority.hostnameAndPort, authority.tenant, options);\n } else {\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please provide clientInfo in the response or options.\");\n }\n } else {\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please provide a request with an account or a request with authority.\");\n }\n }\n\n /**\n * Helper function to load id tokens to msal-browser cache\n * @param idToken\n * @param homeAccountId\n * @param environment\n * @param tenantId\n * @param options\n */\n private loadIdToken(idToken: string, homeAccountId: string, environment: string, tenantId: string, options: LoadTokenOptions): void {\n\n const idTokenEntity = IdTokenEntity.createIdTokenEntity(homeAccountId, environment, idToken, this.config.auth.clientId, tenantId);\n const idAuthToken = new AuthToken(idToken, this.cryptoObj);\n const accountEntity = options.clientInfo ?\n AccountEntity.createAccount(options.clientInfo, homeAccountId, idAuthToken, undefined, undefined, undefined, environment) :\n AccountEntity.createGenericAccount(homeAccountId, idAuthToken, undefined, undefined, undefined, environment);\n\n if (this.isBrowserEnvironment) {\n this.logger.verbose(\"TokenCache - loading id token\");\n this.storage.setAccount(accountEntity);\n this.storage.setIdTokenCredential(idTokenEntity);\n } else {\n throw BrowserAuthError.createUnableToLoadTokenError(\"loadExternalTokens is designed to work in browser environments only.\");\n }\n }\n\n /**\n * Helper function to load access tokens to msal-browser cache\n * @param request\n * @param response\n * @param options\n * @param homeAccountId\n * @param environment\n * @param tenantId\n * @returns\n */\n private loadAccessToken(request: SilentRequest, response: ExternalTokenResponse, homeAccountId: string, environment: string, tenantId: string, options: LoadTokenOptions): void {\n\n if (!response.access_token) {\n this.logger.verbose(\"TokenCache - No access token provided for caching\");\n return;\n }\n\n if (!response.expires_in) {\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please ensure server response includes expires_in value.\");\n }\n\n if (!options.extendedExpiresOn) {\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please provide an extendedExpiresOn value in the options.\");\n }\n\n const scopes = new ScopeSet(request.scopes).printScopes();\n const expiresOn = options.expiresOn || (response.expires_in + new Date().getTime() / 1000);\n const extendedExpiresOn = options.extendedExpiresOn;\n\n const accessTokenEntity = AccessTokenEntity.createAccessTokenEntity(homeAccountId, environment, response.access_token, this.config.auth.clientId, tenantId, scopes, expiresOn, extendedExpiresOn, this.cryptoObj);\n\n if (this.isBrowserEnvironment) {\n this.logger.verbose(\"TokenCache - loading access token\");\n this.storage.setAccessTokenCredential(accessTokenEntity);\n } else {\n throw BrowserAuthError.createUnableToLoadTokenError(\"loadExternalTokens is designed to work in browser environments only.\");\n }\n }\n}\n\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthorizationCodeClient, ClientConfiguration } from \"@azure/msal-common\";\n\nexport class HybridSpaAuthorizationCodeClient extends AuthorizationCodeClient {\n constructor(config: ClientConfiguration) {\n super(config);\n this.includeRedirectUri = false;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthenticationResult, ICrypto, Logger, CommonAuthorizationCodeRequest, AuthError, Constants, IPerformanceClient } from \"@azure/msal-common\";\nimport { StandardInteractionClient } from \"./StandardInteractionClient\";\nimport { AuthorizationUrlRequest } from \"../request/AuthorizationUrlRequest\";\nimport { BrowserConfiguration } from \"../config/Configuration\";\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\nimport { EventHandler } from \"../event/EventHandler\";\nimport { INavigationClient } from \"../navigation/INavigationClient\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { InteractionType, ApiId } from \"../utils/BrowserConstants\";\nimport { SilentHandler } from \"../interaction_handler/SilentHandler\";\nimport { AuthorizationCodeRequest } from \"../request/AuthorizationCodeRequest\";\nimport { HybridSpaAuthorizationCodeClient } from \"./HybridSpaAuthorizationCodeClient\";\nimport { NativeMessageHandler } from \"../broker/nativeBroker/NativeMessageHandler\";\n\nexport class SilentAuthCodeClient extends StandardInteractionClient {\n private apiId: ApiId;\n\n constructor(config: BrowserConfiguration, storageImpl: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, apiId: ApiId, performanceClient: IPerformanceClient, nativeMessageHandler?: NativeMessageHandler, correlationId?: string) {\n super(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId);\n this.apiId = apiId;\n }\n\n /**\n * Acquires a token silently by redeeming an authorization code against the /token endpoint\n * @param request\n */\n async acquireToken(request: AuthorizationCodeRequest): Promise<AuthenticationResult> {\n this.logger.trace(\"SilentAuthCodeClient.acquireToken called\");\n\n // Auth code payload is required\n if (!request.code) {\n throw BrowserAuthError.createAuthCodeRequiredError();\n\n }\n\n // Create silent request\n const silentRequest: AuthorizationUrlRequest = await this.initializeAuthorizationRequest(request, InteractionType.Silent);\n this.browserStorage.updateCacheEntries(silentRequest.state, silentRequest.nonce, silentRequest.authority, silentRequest.loginHint || Constants.EMPTY_STRING, silentRequest.account || null);\n\n const serverTelemetryManager = this.initializeServerTelemetryManager(this.apiId);\n\n try {\n\n // Create auth code request (PKCE not needed)\n const authCodeRequest: CommonAuthorizationCodeRequest = {\n ...silentRequest,\n code: request.code\n };\n\n // Initialize the client\n const clientConfig = await this.getClientConfiguration(serverTelemetryManager, silentRequest.authority);\n const authClient: HybridSpaAuthorizationCodeClient = new HybridSpaAuthorizationCodeClient(clientConfig);\n this.logger.verbose(\"Auth code client created\");\n\n // Create silent handler\n const silentHandler = new SilentHandler(authClient, this.browserStorage, authCodeRequest, this.logger, this.config.system.navigateFrameWait);\n\n // Handle auth code parameters from request\n return silentHandler.handleCodeResponseFromServer(\n {\n code: request.code,\n msgraph_host: request.msGraphHost,\n cloud_graph_host_name: request.cloudGraphHostName,\n cloud_instance_host_name: request.cloudInstanceHostName\n },\n silentRequest.state,\n authClient.authority,\n this.networkClient,\n false\n );\n } catch (e) {\n if (e instanceof AuthError) {\n (e as AuthError).setCorrelationId(this.correlationId);\n }\n serverTelemetryManager.cacheFailedRequest(e);\n this.browserStorage.cleanRequestByState(silentRequest.state);\n throw e;\n }\n }\n\n /**\n * Currently Unsupported\n */\n logout(): Promise<void> {\n // Synchronous so we must reject\n return Promise.reject(BrowserAuthError.createSilentLogoutUnsupportedError());\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { IPerformanceMeasurement } from \"@azure/msal-common\";\n\nexport class BrowserPerformanceMeasurement implements IPerformanceMeasurement {\n private measureName: string;\n private correlationId: string;\n private startMark: string;\n private endMark: string;\n\n constructor(name: string, correlationId: string) {\n this.correlationId = correlationId;\n this.measureName = `msal.measure.${name}.${this.correlationId}`;\n this.startMark = `msal.start.${name}.${this.correlationId}`;\n this.endMark = `msal.end.${name}.${this.correlationId}`;\n }\n\n static supportsBrowserPerformance(): boolean {\n return typeof window !== \"undefined\" &&\n typeof window.performance !== \"undefined\" &&\n typeof window.performance.mark === \"function\" && \n typeof window.performance.measure === \"function\" &&\n typeof window.performance.clearMarks === \"function\" &&\n typeof window.performance.clearMeasures === \"function\" &&\n typeof window.performance.getEntriesByName === \"function\";\n }\n\n startMeasurement(): void {\n if (BrowserPerformanceMeasurement.supportsBrowserPerformance()) {\n try {\n window.performance.mark(this.startMark);\n } catch (e) {\n // Silently catch\n }\n }\n }\n\n endMeasurement():void {\n if (BrowserPerformanceMeasurement.supportsBrowserPerformance()) {\n try {\n window.performance.mark(this.endMark);\n window.performance.measure(this.measureName, this.startMark, this.endMark);\n } catch (e) {\n // Silently catch\n }\n }\n }\n\n flushMeasurement(): number | null {\n if (BrowserPerformanceMeasurement.supportsBrowserPerformance()) {\n try {\n const entriesForMeasurement = window.performance.getEntriesByName(this.measureName, \"measure\");\n if (entriesForMeasurement.length > 0) {\n const durationMs = entriesForMeasurement[0].duration;\n window.performance.clearMeasures(this.measureName);\n window.performance.clearMarks(this.startMark);\n window.performance.clearMarks(this.endMark);\n return durationMs;\n }\n } catch (e) {\n // Silently catch and return null\n }\n }\n return null;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Logger, PerformanceEvent, PerformanceEvents, IPerformanceClient, PerformanceClient, IPerformanceMeasurement, InProgressPerformanceEvent, ApplicationTelemetry } from \"@azure/msal-common\";\nimport { BrowserCrypto } from \"../crypto/BrowserCrypto\";\nimport { GuidGenerator } from \"../crypto/GuidGenerator\";\nimport { BrowserPerformanceMeasurement } from \"./BrowserPerformanceMeasurement\";\n\nexport class BrowserPerformanceClient extends PerformanceClient implements IPerformanceClient {\n private browserCrypto: BrowserCrypto;\n private guidGenerator: GuidGenerator;\n \n constructor(clientId: string, authority: string, logger: Logger, libraryName: string, libraryVersion: string, applicationTelemetry: ApplicationTelemetry) {\n super(clientId, authority, logger, libraryName, libraryVersion, applicationTelemetry);\n this.browserCrypto = new BrowserCrypto(this.logger);\n this.guidGenerator = new GuidGenerator(this.browserCrypto);\n }\n \n startPerformanceMeasuremeant(measureName: string, correlationId: string): IPerformanceMeasurement {\n return new BrowserPerformanceMeasurement(measureName, correlationId);\n }\n\n generateId() : string {\n return this.guidGenerator.generateGuid();\n }\n\n private getPageVisibility(): string | null {\n return document.visibilityState?.toString() || null;\n }\n \n /**\n * Starts measuring performance for a given operation. Returns a function that should be used to end the measurement.\n * Also captures browser page visibilityState.\n *\n * @param {PerformanceEvents} measureName\n * @param {?string} [correlationId]\n * @returns {((event?: Partial<PerformanceEvent>) => PerformanceEvent| null)}\n */\n startMeasurement(measureName: PerformanceEvents, correlationId?: string): InProgressPerformanceEvent {\n // Capture page visibilityState and then invoke start/end measurement\n const startPageVisibility = this.getPageVisibility();\n \n const inProgressEvent = super.startMeasurement(measureName, correlationId);\n\n return {\n ...inProgressEvent,\n endMeasurement: (event?: Partial<PerformanceEvent>): PerformanceEvent | null => {\n return inProgressEvent.endMeasurement({\n startPageVisibility,\n endPageVisibility: this.getPageVisibility(),\n ...event\n });\n }\n };\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { CryptoOps } from \"../crypto/CryptoOps\";\nimport { StringUtils, ServerError, InteractionRequiredAuthError, AccountInfo, Constants, INetworkModule, AuthenticationResult, Logger, CommonSilentFlowRequest, ICrypto, DEFAULT_CRYPTO_IMPLEMENTATION, AuthError, PerformanceEvents, PerformanceCallbackFunction, StubPerformanceClient, IPerformanceClient, BaseAuthRequest, PromptValue } from \"@azure/msal-common\";\nimport { BrowserCacheManager, DEFAULT_BROWSER_CACHE_MANAGER } from \"../cache/BrowserCacheManager\";\nimport { BrowserConfiguration, buildConfiguration, CacheOptions, Configuration } from \"../config/Configuration\";\nimport { InteractionType, ApiId, BrowserConstants, BrowserCacheLocation, WrapperSKU, TemporaryCacheKeys } from \"../utils/BrowserConstants\";\nimport { BrowserUtils } from \"../utils/BrowserUtils\";\nimport { RedirectRequest } from \"../request/RedirectRequest\";\nimport { PopupRequest } from \"../request/PopupRequest\";\nimport { SsoSilentRequest } from \"../request/SsoSilentRequest\";\nimport { version, name } from \"../packageMetadata\";\nimport { EventCallbackFunction } from \"../event/EventMessage\";\nimport { EventType } from \"../event/EventType\";\nimport { EndSessionRequest } from \"../request/EndSessionRequest\";\nimport { BrowserConfigurationAuthError } from \"../error/BrowserConfigurationAuthError\";\nimport { EndSessionPopupRequest } from \"../request/EndSessionPopupRequest\";\nimport { INavigationClient } from \"../navigation/INavigationClient\";\nimport { EventHandler } from \"../event/EventHandler\";\nimport { PopupClient } from \"../interaction_client/PopupClient\";\nimport { RedirectClient } from \"../interaction_client/RedirectClient\";\nimport { SilentIframeClient } from \"../interaction_client/SilentIframeClient\";\nimport { SilentRefreshClient } from \"../interaction_client/SilentRefreshClient\";\nimport { TokenCache } from \"../cache/TokenCache\";\nimport { ITokenCache } from \"../cache/ITokenCache\";\nimport { NativeInteractionClient } from \"../interaction_client/NativeInteractionClient\";\nimport { NativeMessageHandler } from \"../broker/nativeBroker/NativeMessageHandler\";\nimport { SilentRequest } from \"../request/SilentRequest\";\nimport { NativeAuthError } from \"../error/NativeAuthError\";\nimport { SilentCacheClient } from \"../interaction_client/SilentCacheClient\";\nimport { SilentAuthCodeClient } from \"../interaction_client/SilentAuthCodeClient\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { AuthorizationCodeRequest } from \"../request/AuthorizationCodeRequest\";\nimport { NativeTokenRequest } from \"../broker/nativeBroker/NativeRequest\";\nimport { BrowserPerformanceClient } from \"../telemetry/BrowserPerformanceClient\";\n\nexport abstract class ClientApplication {\n\n // Crypto interface implementation\n protected readonly browserCrypto: ICrypto;\n\n // Storage interface implementation\n protected readonly browserStorage: BrowserCacheManager;\n\n // Native Cache in memory storage implementation\n protected readonly nativeInternalStorage: BrowserCacheManager;\n\n // Network interface implementation\n protected readonly networkClient: INetworkModule;\n\n // Navigation interface implementation\n protected navigationClient: INavigationClient;\n\n // Input configuration by developer/user\n protected config: BrowserConfiguration;\n\n // Token cache implementation\n private tokenCache: TokenCache;\n\n // Logger\n protected logger: Logger;\n\n // Flag to indicate if in browser environment\n protected isBrowserEnvironment: boolean;\n\n protected eventHandler: EventHandler;\n\n // Redirect Response Object\n protected redirectResponse: Map<string, Promise<AuthenticationResult | null>>;\n\n // Native Extension Provider\n protected nativeExtensionProvider: NativeMessageHandler | undefined;\n\n // Hybrid auth code responses\n private hybridAuthCodeResponses: Map<string, Promise<AuthenticationResult>>;\n\n // Performance telemetry client\n protected performanceClient: IPerformanceClient;\n\n // Flag representing whether or not the initialize API has been called and completed\n protected initialized: boolean;\n\n /**\n * @constructor\n * Constructor for the PublicClientApplication used to instantiate the PublicClientApplication object\n *\n * Important attributes in the Configuration object for auth are:\n * - clientID: the application ID of your application. You can obtain one by registering your application with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview\n * - authority: the authority URL for your application.\n * - redirect_uri: the uri of your application registered in the portal.\n *\n * In Azure AD, authority is a URL indicating the Azure active directory that MSAL uses to obtain tokens.\n * It is of the form https://login.microsoftonline.com/{Enter_the_Tenant_Info_Here}\n * If your application supports Accounts in one organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com).\n * If your application supports Accounts in any organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with organizations.\n * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace \"Enter_the_Tenant_Info_Here\" value with common.\n * To restrict support to Personal Microsoft accounts only, replace \"Enter_the_Tenant_Info_Here\" value with consumers.\n *\n * In Azure B2C, authority is of the form https://{instance}/tfp/{tenant}/{policyName}/\n * Full B2C functionality will be available in this library in future versions.\n *\n * @param configuration Object for the MSAL PublicClientApplication instance\n */\n constructor(configuration: Configuration) {\n /*\n * If loaded in an environment where window is not available,\n * set internal flag to false so that further requests fail.\n * This is to support server-side rendering environments.\n */\n this.isBrowserEnvironment = typeof window !== \"undefined\";\n // Set the configuration.\n this.config = buildConfiguration(configuration, this.isBrowserEnvironment);\n this.initialized = false;\n\n // Initialize logger\n this.logger = new Logger(this.config.system.loggerOptions, name, version);\n\n // Initialize the network module class.\n this.networkClient = this.config.system.networkClient;\n\n // Initialize the navigation client class.\n this.navigationClient = this.config.system.navigationClient;\n\n // Initialize redirectResponse Map\n this.redirectResponse = new Map();\n\n // Initial hybrid spa map\n this.hybridAuthCodeResponses = new Map();\n\n // Initialize performance client\n this.performanceClient = this.isBrowserEnvironment ?\n new BrowserPerformanceClient(this.config.auth.clientId, this.config.auth.authority, this.logger, name, version, this.config.telemetry.application) :\n new StubPerformanceClient(this.config.auth.clientId, this.config.auth.authority, this.logger, name, version, this.config.telemetry.application);\n\n // Initialize the crypto class.\n this.browserCrypto = this.isBrowserEnvironment ? new CryptoOps(this.logger, this.performanceClient) : DEFAULT_CRYPTO_IMPLEMENTATION;\n\n this.eventHandler = new EventHandler(this.logger, this.browserCrypto);\n\n // Initialize the browser storage class.\n this.browserStorage = this.isBrowserEnvironment ?\n new BrowserCacheManager(this.config.auth.clientId, this.config.cache, this.browserCrypto, this.logger) :\n DEFAULT_BROWSER_CACHE_MANAGER(this.config.auth.clientId, this.logger);\n\n // initialize in memory storage for native flows\n const nativeCacheOptions: Required<CacheOptions> = {\n cacheLocation: BrowserCacheLocation.MemoryStorage,\n storeAuthStateInCookie: false,\n secureCookies: false\n };\n this.nativeInternalStorage = new BrowserCacheManager(this.config.auth.clientId, nativeCacheOptions, this.browserCrypto, this.logger);\n\n // Initialize the token cache\n this.tokenCache = new TokenCache(this.config, this.browserStorage, this.logger, this.browserCrypto);\n }\n\n /**\n * Initializer function to perform async startup tasks such as connecting to WAM extension\n */\n async initialize(): Promise<void> {\n this.logger.trace(\"initialize called\");\n if (this.initialized) {\n this.logger.info(\"initialize has already been called, exiting early.\");\n return;\n }\n this.eventHandler.emitEvent(EventType.INITIALIZE_START);\n if (this.config.system.allowNativeBroker) {\n try {\n this.nativeExtensionProvider = await NativeMessageHandler.createProvider(this.logger, this.config.system.nativeBrokerHandshakeTimeout);\n } catch (e) {\n this.logger.verbose(e);\n }\n }\n this.initialized = true;\n this.eventHandler.emitEvent(EventType.INITIALIZE_END);\n }\n\n // #region Redirect Flow\n\n /**\n * Event handler function which allows users to fire events after the PublicClientApplication object\n * has loaded during redirect flows. This should be invoked on all page loads involved in redirect\n * auth flows.\n * @param hash Hash to process. Defaults to the current value of window.location.hash. Only needs to be provided explicitly if the response to be handled is not contained in the current value.\n * @returns Token response or null. If the return value is null, then no auth redirect was detected.\n */\n async handleRedirectPromise(hash?: string): Promise<AuthenticationResult | null> {\n this.logger.verbose(\"handleRedirectPromise called\");\n // Block token acquisition before initialize has been called if native brokering is enabled\n BrowserUtils.blockNativeBrokerCalledBeforeInitialized(this.config.system.allowNativeBroker, this.initialized);\n\n const loggedInAccounts = this.getAllAccounts();\n if (this.isBrowserEnvironment) {\n /**\n * Store the promise on the PublicClientApplication instance if this is the first invocation of handleRedirectPromise,\n * otherwise return the promise from the first invocation. Prevents race conditions when handleRedirectPromise is called\n * several times concurrently.\n */\n const redirectResponseKey = hash || Constants.EMPTY_STRING;\n let response = this.redirectResponse.get(redirectResponseKey);\n if (typeof response === \"undefined\") {\n this.eventHandler.emitEvent(EventType.HANDLE_REDIRECT_START, InteractionType.Redirect);\n this.logger.verbose(\"handleRedirectPromise has been called for the first time, storing the promise\");\n\n const request: NativeTokenRequest | null = this.browserStorage.getCachedNativeRequest();\n let redirectResponse: Promise<AuthenticationResult | null>;\n if (request && NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeExtensionProvider) && this.nativeExtensionProvider && !hash) {\n this.logger.trace(\"handleRedirectPromise - acquiring token from native platform\");\n const nativeClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.handleRedirectPromise, this.performanceClient, this.nativeExtensionProvider, request.accountId, this.nativeInternalStorage, request.correlationId);\n redirectResponse = nativeClient.handleRedirectPromise();\n } else {\n this.logger.trace(\"handleRedirectPromise - acquiring token from web flow\");\n const correlationId = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.CORRELATION_ID, true) || Constants.EMPTY_STRING;\n const redirectClient = this.createRedirectClient(correlationId);\n redirectResponse = redirectClient.handleRedirectPromise(hash);\n }\n\n response = redirectResponse.then((result: AuthenticationResult | null) => {\n if (result) {\n // Emit login event if number of accounts change\n\n const isLoggingIn = loggedInAccounts.length < this.getAllAccounts().length;\n if (isLoggingIn) {\n this.eventHandler.emitEvent(EventType.LOGIN_SUCCESS, InteractionType.Redirect, result);\n this.logger.verbose(\"handleRedirectResponse returned result, login success\");\n } else {\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, InteractionType.Redirect, result);\n this.logger.verbose(\"handleRedirectResponse returned result, acquire token success\");\n }\n }\n this.eventHandler.emitEvent(EventType.HANDLE_REDIRECT_END, InteractionType.Redirect);\n\n return result;\n }).catch((e) => {\n // Emit login event if there is an account\n if (loggedInAccounts.length > 0) {\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Redirect, null, e);\n } else {\n this.eventHandler.emitEvent(EventType.LOGIN_FAILURE, InteractionType.Redirect, null, e);\n }\n this.eventHandler.emitEvent(EventType.HANDLE_REDIRECT_END, InteractionType.Redirect);\n\n throw e;\n });\n this.redirectResponse.set(redirectResponseKey, response);\n } else {\n this.logger.verbose(\"handleRedirectPromise has been called previously, returning the result from the first call\");\n }\n\n return response;\n }\n this.logger.verbose(\"handleRedirectPromise returns null, not browser environment\");\n return null;\n }\n\n /**\n * Use when you want to obtain an access_token for your API by redirecting the user's browser window to the authorization endpoint. This function redirects\n * the page, so any code that follows this function will not execute.\n *\n * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current\n * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function.\n *\n * @param request\n */\n async acquireTokenRedirect(request: RedirectRequest): Promise<void> {\n // Preflight request\n const correlationId = this.getRequestCorrelationId(request);\n this.logger.verbose(\"acquireTokenRedirect called\", correlationId);\n this.preflightBrowserEnvironmentCheck(InteractionType.Redirect);\n\n // If logged in, emit acquire token events\n const isLoggedIn = this.getAllAccounts().length > 0;\n if (isLoggedIn) {\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_START, InteractionType.Redirect, request);\n } else {\n this.eventHandler.emitEvent(EventType.LOGIN_START, InteractionType.Redirect, request);\n }\n\n let result: Promise<void>;\n\n if (this.nativeExtensionProvider && this.canUseNative(request)) {\n const nativeClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.acquireTokenRedirect, this.performanceClient, this.nativeExtensionProvider, this.getNativeAccountId(request), this.nativeInternalStorage, request.correlationId);\n result = nativeClient.acquireTokenRedirect(request).catch((e: AuthError) => {\n if (e instanceof NativeAuthError && e.isFatal()) {\n this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt\n const redirectClient = this.createRedirectClient(request.correlationId);\n return redirectClient.acquireToken(request);\n } else if (e instanceof InteractionRequiredAuthError) {\n this.logger.verbose(\"acquireTokenRedirect - Resolving interaction required error thrown by native broker by falling back to web flow\");\n const redirectClient = this.createRedirectClient(request.correlationId);\n return redirectClient.acquireToken(request);\n }\n this.browserStorage.setInteractionInProgress(false);\n throw e;\n });\n } else {\n const redirectClient = this.createRedirectClient(request.correlationId);\n result = redirectClient.acquireToken(request);\n }\n\n return result.catch((e) => {\n // If logged in, emit acquire token events\n if (isLoggedIn) {\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Redirect, null, e);\n } else {\n this.eventHandler.emitEvent(EventType.LOGIN_FAILURE, InteractionType.Redirect, null, e);\n }\n throw e;\n });\n }\n\n // #endregion\n\n // #region Popup Flow\n\n /**\n * Use when you want to obtain an access_token for your API via opening a popup window in the user's browser\n *\n * @param request\n *\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\n */\n acquireTokenPopup(request: PopupRequest): Promise<AuthenticationResult> {\n const correlationId = this.getRequestCorrelationId(request);\n const atPopupMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenPopup, correlationId);\n\n try {\n this.logger.verbose(\"acquireTokenPopup called\", correlationId);\n this.preflightBrowserEnvironmentCheck(InteractionType.Popup);\n } catch (e) {\n // Since this function is syncronous we need to reject\n return Promise.reject(e);\n }\n\n // If logged in, emit acquire token events\n const loggedInAccounts = this.getAllAccounts();\n if (loggedInAccounts.length > 0) {\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_START, InteractionType.Popup, request);\n } else {\n this.eventHandler.emitEvent(EventType.LOGIN_START, InteractionType.Popup, request);\n }\n\n let result: Promise<AuthenticationResult>;\n\n if (this.canUseNative(request)) {\n result = this.acquireTokenNative(request, ApiId.acquireTokenPopup).then((response) => {\n this.browserStorage.setInteractionInProgress(false);\n atPopupMeasurement.endMeasurement({\n success: true,\n isNativeBroker: true,\n accessTokenSize: response.accessToken.length,\n idTokenSize: response.idToken.length,\n });\n atPopupMeasurement.flushMeasurement();\n return response;\n }).catch((e: AuthError) => {\n if (e instanceof NativeAuthError && e.isFatal()) {\n this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt\n const popupClient = this.createPopupClient(request.correlationId);\n return popupClient.acquireToken(request);\n } else if (e instanceof InteractionRequiredAuthError) {\n this.logger.verbose(\"acquireTokenPopup - Resolving interaction required error thrown by native broker by falling back to web flow\");\n const popupClient = this.createPopupClient(request.correlationId);\n return popupClient.acquireToken(request);\n }\n this.browserStorage.setInteractionInProgress(false);\n throw e;\n });\n } else {\n const popupClient = this.createPopupClient(request.correlationId);\n result = popupClient.acquireToken(request);\n }\n\n return result.then((result) => {\n\n /*\n * If logged in, emit acquire token events\n */\n const isLoggingIn = loggedInAccounts.length < this.getAllAccounts().length;\n if (isLoggingIn) {\n this.eventHandler.emitEvent(EventType.LOGIN_SUCCESS, InteractionType.Popup, result);\n } else {\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, InteractionType.Popup, result);\n }\n\n atPopupMeasurement.endMeasurement({\n success: true,\n accessTokenSize: result.accessToken.length,\n idTokenSize: result.idToken.length,\n });\n\n atPopupMeasurement.flushMeasurement();\n return result;\n }).catch((e: AuthError) => {\n if (loggedInAccounts.length > 0) {\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Popup, null, e);\n } else {\n this.eventHandler.emitEvent(EventType.LOGIN_FAILURE, InteractionType.Popup, null, e);\n }\n\n atPopupMeasurement.endMeasurement({\n errorCode: e.errorCode,\n subErrorCode: e.subError,\n success: false\n });\n atPopupMeasurement.flushMeasurement();\n\n // Since this function is syncronous we need to reject\n return Promise.reject(e);\n });\n }\n\n // #endregion\n\n // #region Silent Flow\n\n /**\n * This function uses a hidden iframe to fetch an authorization code from the eSTS. There are cases where this may not work:\n * - Any browser using a form of Intelligent Tracking Prevention\n * - If there is not an established session with the service\n *\n * In these cases, the request must be done inside a popup or full frame redirect.\n *\n * For the cases where interaction is required, you cannot send a request with prompt=none.\n *\n * If your refresh token has expired, you can use this function to fetch a new set of tokens silently as long as\n * you session on the server still exists.\n * @param request {@link SsoSilentRequest}\n *\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\n */\n async ssoSilent(request: SsoSilentRequest): Promise<AuthenticationResult> {\n const correlationId = this.getRequestCorrelationId(request);\n const validRequest = {\n ...request,\n prompt: PromptValue.NONE,\n correlationId: correlationId\n };\n this.preflightBrowserEnvironmentCheck(InteractionType.Silent);\n const ssoSilentMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.SsoSilent, correlationId);\n this.logger.verbose(\"ssoSilent called\", correlationId);\n this.eventHandler.emitEvent(EventType.SSO_SILENT_START, InteractionType.Silent, validRequest);\n\n let result: Promise<AuthenticationResult>;\n\n if (this.canUseNative(validRequest)) {\n result = this.acquireTokenNative(validRequest, ApiId.ssoSilent).catch((e: AuthError) => {\n // If native token acquisition fails for availability reasons fallback to standard flow\n if (e instanceof NativeAuthError && e.isFatal()) {\n this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt\n const silentIframeClient = this.createSilentIframeClient(validRequest.correlationId);\n return silentIframeClient.acquireToken(validRequest);\n }\n throw e;\n });\n } else {\n const silentIframeClient = this.createSilentIframeClient(validRequest.correlationId);\n result = silentIframeClient.acquireToken(validRequest);\n }\n\n return result.then((response) => {\n this.eventHandler.emitEvent(EventType.SSO_SILENT_SUCCESS, InteractionType.Silent, response);\n ssoSilentMeasurement.endMeasurement({\n success: true,\n isNativeBroker: response.fromNativeBroker,\n accessTokenSize: response.accessToken.length,\n idTokenSize: response.idToken.length\n });\n ssoSilentMeasurement.flushMeasurement();\n return response;\n }).catch((e: AuthError) => {\n this.eventHandler.emitEvent(EventType.SSO_SILENT_FAILURE, InteractionType.Silent, null, e);\n ssoSilentMeasurement.endMeasurement({\n errorCode: e.errorCode,\n subErrorCode: e.subError,\n success: false\n });\n ssoSilentMeasurement.flushMeasurement();\n throw e;\n });\n }\n\n /**\n * This function redeems an authorization code (passed as code) from the eSTS token endpoint.\n * This authorization code should be acquired server-side using a confidential client to acquire a spa_code.\n * This API is not indended for normal authorization code acquisition and redemption.\n *\n * Redemption of this authorization code will not require PKCE, as it was acquired by a confidential client.\n *\n * @param request {@link AuthorizationCodeRequest}\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\n */\n async acquireTokenByCode(request: AuthorizationCodeRequest): Promise<AuthenticationResult> {\n const correlationId = this.getRequestCorrelationId(request);\n this.preflightBrowserEnvironmentCheck(InteractionType.Silent);\n this.logger.trace(\"acquireTokenByCode called\", correlationId);\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_BY_CODE_START, InteractionType.Silent, request);\n const atbcMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenByCode, request.correlationId);\n\n try {\n if (request.code) {\n const hybridAuthCode = request.code;\n let response = this.hybridAuthCodeResponses.get(hybridAuthCode);\n if (!response) {\n this.logger.verbose(\"Initiating new acquireTokenByCode request\", correlationId);\n response = this.acquireTokenByCodeAsync({\n ...request,\n correlationId\n })\n .then((result: AuthenticationResult) => {\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_BY_CODE_SUCCESS, InteractionType.Silent, result);\n this.hybridAuthCodeResponses.delete(hybridAuthCode);\n atbcMeasurement.endMeasurement({\n success: true,\n accessTokenSize: result.accessToken.length,\n idTokenSize: result.idToken.length,\n isNativeBroker: result.fromNativeBroker\n });\n atbcMeasurement.flushMeasurement();\n return result;\n })\n .catch((error: AuthError) => {\n this.hybridAuthCodeResponses.delete(hybridAuthCode);\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_BY_CODE_FAILURE, InteractionType.Silent, null, error);\n atbcMeasurement.endMeasurement({\n errorCode: error.errorCode,\n subErrorCode: error.subError,\n success: false\n });\n atbcMeasurement.flushMeasurement();\n throw error;\n });\n this.hybridAuthCodeResponses.set(hybridAuthCode, response);\n } else {\n this.logger.verbose(\"Existing acquireTokenByCode request found\", request.correlationId);\n atbcMeasurement.endMeasurement({\n success: true\n });\n atbcMeasurement.discardMeasurement();\n }\n return response;\n } else if (request.nativeAccountId) {\n if (this.canUseNative(request, request.nativeAccountId)) {\n return this.acquireTokenNative(request, ApiId.acquireTokenByCode, request.nativeAccountId).catch((e: AuthError) => {\n // If native token acquisition fails for availability reasons fallback to standard flow\n if (e instanceof NativeAuthError && e.isFatal()) {\n this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt\n }\n throw e;\n });\n } else {\n throw BrowserAuthError.createUnableToAcquireTokenFromNativePlatformError();\n }\n } else {\n throw BrowserAuthError.createAuthCodeOrNativeAccountIdRequiredError();\n }\n\n } catch (e) {\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_BY_CODE_FAILURE, InteractionType.Silent, null, e);\n atbcMeasurement.endMeasurement({\n errorCode: e instanceof AuthError && e.errorCode || undefined,\n subErrorCode: e instanceof AuthError && e.subError || undefined,\n success: false\n });\n throw e;\n }\n }\n\n /**\n * Creates a SilentAuthCodeClient to redeem an authorization code.\n * @param request\n * @returns Result of the operation to redeem the authorization code\n */\n private async acquireTokenByCodeAsync(request: AuthorizationCodeRequest): Promise<AuthenticationResult> {\n this.logger.trace(\"acquireTokenByCodeAsync called\", request.correlationId);\n const silentAuthCodeClient = this.createSilentAuthCodeClient(request.correlationId);\n const silentTokenResult = await silentAuthCodeClient.acquireToken(request);\n return silentTokenResult;\n }\n\n /**\n * Use this function to obtain a token before every call to the API / resource provider\n *\n * MSAL return's a cached token when available\n * Or it send's a request to the STS to obtain a new token using a refresh token.\n *\n * @param {@link SilentRequest}\n *\n * To renew idToken, please pass clientId as the only scope in the Authentication Parameters\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\n */\n protected async acquireTokenByRefreshToken(request: CommonSilentFlowRequest): Promise<AuthenticationResult> {\n // block the reload if it occurred inside a hidden iframe\n BrowserUtils.blockReloadInHiddenIframes();\n const atbrtMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenByRefreshToken, request.correlationId);\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_NETWORK_START, InteractionType.Silent, request);\n\n const silentRefreshClient = this.createSilentRefreshClient(request.correlationId);\n\n return silentRefreshClient.acquireToken(request)\n .then((result: AuthenticationResult) => {\n atbrtMeasurement.endMeasurement({\n success: true,\n fromCache: result.fromCache,\n accessTokenSize: result.accessToken.length,\n idTokenSize: result.idToken.length,\n });\n return result;\n })\n .catch(e => {\n const isServerError = e instanceof ServerError;\n const isInteractionRequiredError = e instanceof InteractionRequiredAuthError;\n const isInvalidGrantError = (e.errorCode === BrowserConstants.INVALID_GRANT_ERROR);\n if (isServerError && isInvalidGrantError && !isInteractionRequiredError) {\n this.logger.verbose(\"Refresh token expired or invalid, attempting acquire token by iframe\", request.correlationId);\n\n const silentIframeClient = this.createSilentIframeClient(request.correlationId);\n return silentIframeClient.acquireToken(request)\n .then((result: AuthenticationResult) => {\n atbrtMeasurement.endMeasurement({\n success: true,\n fromCache: result.fromCache,\n accessTokenSize: result.accessToken.length,\n idTokenSize: result.idToken.length,\n });\n\n return result;\n })\n .catch((error) => {\n atbrtMeasurement.endMeasurement({\n errorCode: error.errorCode,\n subErrorCode: error.subError,\n success: false\n });\n throw error;\n });\n }\n atbrtMeasurement.endMeasurement({\n success: false\n });\n throw e;\n });\n }\n\n // #endregion\n\n // #region Logout\n\n /**\n * Deprecated logout function. Use logoutRedirect or logoutPopup instead\n * @param logoutRequest\n * @deprecated\n */\n async logout(logoutRequest?: EndSessionRequest): Promise<void> {\n const correlationId = this.getRequestCorrelationId(logoutRequest);\n this.logger.warning(\"logout API is deprecated and will be removed in msal-browser v3.0.0. Use logoutRedirect instead.\", correlationId);\n return this.logoutRedirect({\n correlationId,\n ...logoutRequest\n });\n }\n\n /**\n * Use to log out the current user, and redirect the user to the postLogoutRedirectUri.\n * Default behaviour is to redirect the user to `window.location.href`.\n * @param logoutRequest\n */\n async logoutRedirect(logoutRequest?: EndSessionRequest): Promise<void> {\n const correlationId = this.getRequestCorrelationId(logoutRequest);\n this.preflightBrowserEnvironmentCheck(InteractionType.Redirect);\n\n const redirectClient = this.createRedirectClient(correlationId);\n return redirectClient.logout(logoutRequest);\n }\n\n /**\n * Clears local cache for the current user then opens a popup window prompting the user to sign-out of the server\n * @param logoutRequest\n */\n logoutPopup(logoutRequest?: EndSessionPopupRequest): Promise<void> {\n try {\n const correlationId = this.getRequestCorrelationId(logoutRequest);\n this.preflightBrowserEnvironmentCheck(InteractionType.Popup);\n const popupClient = this.createPopupClient(correlationId);\n return popupClient.logout(logoutRequest);\n } catch (e) {\n // Since this function is syncronous we need to reject\n return Promise.reject(e);\n }\n }\n\n // #endregion\n\n // #region Account APIs\n\n /**\n * Returns all accounts that MSAL currently has data for.\n * (the account object is created at the time of successful login)\n * or empty array when no accounts are found\n * @returns Array of account objects in cache\n */\n getAllAccounts(): AccountInfo[] {\n this.logger.verbose(\"getAllAccounts called\");\n return this.isBrowserEnvironment ? this.browserStorage.getAllAccounts() : [];\n }\n\n /**\n * Returns the signed in account matching username.\n * (the account object is created at the time of successful login)\n * or null when no matching account is found.\n * This API is provided for convenience but getAccountById should be used for best reliability\n * @param userName\n * @returns The account object stored in MSAL\n */\n getAccountByUsername(userName: string): AccountInfo | null {\n const allAccounts = this.getAllAccounts();\n if (!StringUtils.isEmpty(userName) && allAccounts && allAccounts.length) {\n this.logger.verbose(\"Account matching username found, returning\");\n this.logger.verbosePii(`Returning signed-in accounts matching username: ${userName}`);\n return allAccounts.filter(accountObj => accountObj.username.toLowerCase() === userName.toLowerCase())[0] || null;\n } else {\n this.logger.verbose(\"getAccountByUsername: No matching account found, returning null\");\n return null;\n }\n }\n\n /**\n * Returns the signed in account matching homeAccountId.\n * (the account object is created at the time of successful login)\n * or null when no matching account is found\n * @param homeAccountId\n * @returns The account object stored in MSAL\n */\n getAccountByHomeId(homeAccountId: string): AccountInfo | null {\n const allAccounts = this.getAllAccounts();\n if (!StringUtils.isEmpty(homeAccountId) && allAccounts && allAccounts.length) {\n this.logger.verbose(\"Account matching homeAccountId found, returning\");\n this.logger.verbosePii(`Returning signed-in accounts matching homeAccountId: ${homeAccountId}`);\n return allAccounts.filter(accountObj => accountObj.homeAccountId === homeAccountId)[0] || null;\n } else {\n this.logger.verbose(\"getAccountByHomeId: No matching account found, returning null\");\n return null;\n }\n }\n\n /**\n * Returns the signed in account matching localAccountId.\n * (the account object is created at the time of successful login)\n * or null when no matching account is found\n * @param localAccountId\n * @returns The account object stored in MSAL\n */\n getAccountByLocalId(localAccountId: string): AccountInfo | null {\n const allAccounts = this.getAllAccounts();\n if (!StringUtils.isEmpty(localAccountId) && allAccounts && allAccounts.length) {\n this.logger.verbose(\"Account matching localAccountId found, returning\");\n this.logger.verbosePii(`Returning signed-in accounts matching localAccountId: ${localAccountId}`);\n return allAccounts.filter(accountObj => accountObj.localAccountId === localAccountId)[0] || null;\n } else {\n this.logger.verbose(\"getAccountByLocalId: No matching account found, returning null\");\n return null;\n }\n }\n\n /**\n * Sets the account to use as the active account. If no account is passed to the acquireToken APIs, then MSAL will use this active account.\n * @param account\n */\n setActiveAccount(account: AccountInfo | null): void {\n this.browserStorage.setActiveAccount(account);\n }\n\n /**\n * Gets the currently active account\n */\n getActiveAccount(): AccountInfo | null {\n return this.browserStorage.getActiveAccount();\n }\n\n // #endregion\n\n // #region Helpers\n\n /**\n * Helper to validate app environment before making an auth request\n *\n * @protected\n * @param {InteractionType} interactionType What kind of interaction is being used\n * @param {boolean} [setInteractionInProgress=true] Whether to set interaction in progress temp cache flag\n */\n protected preflightBrowserEnvironmentCheck(interactionType: InteractionType, setInteractionInProgress: boolean = true): void {\n this.logger.verbose(\"preflightBrowserEnvironmentCheck started\");\n // Block request if not in browser environment\n BrowserUtils.blockNonBrowserEnvironment(this.isBrowserEnvironment);\n\n // Block redirects if in an iframe\n BrowserUtils.blockRedirectInIframe(interactionType, this.config.system.allowRedirectInIframe);\n\n // Block auth requests inside a hidden iframe\n BrowserUtils.blockReloadInHiddenIframes();\n\n // Block redirectUri opened in a popup from calling MSAL APIs\n BrowserUtils.blockAcquireTokenInPopups();\n\n // Block token acquisition before initialize has been called if native brokering is enabled\n BrowserUtils.blockNativeBrokerCalledBeforeInitialized(this.config.system.allowNativeBroker, this.initialized);\n\n // Block redirects if memory storage is enabled but storeAuthStateInCookie is not\n if (interactionType === InteractionType.Redirect &&\n this.config.cache.cacheLocation === BrowserCacheLocation.MemoryStorage &&\n !this.config.cache.storeAuthStateInCookie) {\n throw BrowserConfigurationAuthError.createInMemoryRedirectUnavailableError();\n }\n\n if (interactionType === InteractionType.Redirect || interactionType === InteractionType.Popup) {\n this.preflightInteractiveRequest(setInteractionInProgress);\n }\n }\n\n /**\n * Preflight check for interactive requests\n *\n * @protected\n * @param {boolean} setInteractionInProgress Whether to set interaction in progress temp cache flag\n */\n protected preflightInteractiveRequest(setInteractionInProgress: boolean): void {\n this.logger.verbose(\"preflightInteractiveRequest called, validating app environment\");\n // block the reload if it occurred inside a hidden iframe\n BrowserUtils.blockReloadInHiddenIframes();\n\n // Set interaction in progress temporary cache or throw if alread set.\n if (setInteractionInProgress) {\n this.browserStorage.setInteractionInProgress(true);\n }\n }\n\n /**\n * Acquire a token from native device (e.g. WAM)\n * @param request\n */\n protected async acquireTokenNative(request: PopupRequest | SilentRequest | SsoSilentRequest, apiId: ApiId, accountId?: string): Promise<AuthenticationResult> {\n this.logger.trace(\"acquireTokenNative called\");\n if (!this.nativeExtensionProvider) {\n throw BrowserAuthError.createNativeConnectionNotEstablishedError();\n }\n\n const nativeClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, apiId, this.performanceClient, this.nativeExtensionProvider, accountId || this.getNativeAccountId(request), this.nativeInternalStorage, request.correlationId);\n\n return nativeClient.acquireToken(request);\n }\n\n /**\n * Returns boolean indicating if this request can use the native broker\n * @param request\n */\n protected canUseNative(request: RedirectRequest | PopupRequest | SsoSilentRequest, accountId?: string): boolean {\n this.logger.trace(\"canUseNative called\");\n if (!NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeExtensionProvider, request.authenticationScheme)) {\n this.logger.trace(\"canUseNative: isNativeAvailable returned false, returning false\");\n return false;\n }\n\n if (request.prompt) {\n switch (request.prompt) {\n case PromptValue.NONE:\n case PromptValue.CONSENT:\n case PromptValue.LOGIN:\n this.logger.trace(\"canUseNative: prompt is compatible with native flow\");\n break;\n default:\n this.logger.trace(`canUseNative: prompt = ${request.prompt} is not compatible with native flow, returning false`);\n return false;\n }\n }\n\n if (!accountId && !this.getNativeAccountId(request)) {\n this.logger.trace(\"canUseNative: nativeAccountId is not available, returning false\");\n return false;\n }\n\n return true;\n }\n\n /**\n * Get the native accountId from the account\n * @param request\n * @returns\n */\n protected getNativeAccountId(request: RedirectRequest | PopupRequest | SsoSilentRequest): string {\n const account = request.account || this.browserStorage.getAccountInfoByHints(request.loginHint, request.sid) || this.getActiveAccount();\n\n return account && account.nativeAccountId || \"\";\n }\n\n /**\n * Returns new instance of the Popup Interaction Client\n * @param correlationId\n */\n protected createPopupClient(correlationId?: string): PopupClient {\n return new PopupClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.performanceClient, this.nativeInternalStorage, this.nativeExtensionProvider, correlationId);\n }\n\n /**\n * Returns new instance of the Redirect Interaction Client\n * @param correlationId\n */\n protected createRedirectClient(correlationId?: string): RedirectClient {\n return new RedirectClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.performanceClient, this.nativeInternalStorage, this.nativeExtensionProvider, correlationId);\n }\n\n /**\n * Returns new instance of the Silent Iframe Interaction Client\n * @param correlationId\n */\n protected createSilentIframeClient(correlationId?: string): SilentIframeClient {\n return new SilentIframeClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.ssoSilent, this.performanceClient, this.nativeInternalStorage, this.nativeExtensionProvider, correlationId);\n }\n\n /**\n * Returns new instance of the Silent Cache Interaction Client\n */\n protected createSilentCacheClient(correlationId?: string): SilentCacheClient {\n return new SilentCacheClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.performanceClient, this.nativeExtensionProvider, correlationId);\n }\n\n /**\n * Returns new instance of the Silent Refresh Interaction Client\n */\n protected createSilentRefreshClient(correlationId?: string): SilentRefreshClient {\n return new SilentRefreshClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.performanceClient, this.nativeExtensionProvider, correlationId);\n }\n\n /**\n * Returns new instance of the Silent AuthCode Interaction Client\n */\n protected createSilentAuthCodeClient(correlationId?: string): SilentAuthCodeClient {\n return new SilentAuthCodeClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.acquireTokenByCode, this.performanceClient, this.nativeExtensionProvider, correlationId);\n }\n\n /**\n * Adds event callbacks to array\n * @param callback\n */\n addEventCallback(callback: EventCallbackFunction): string | null {\n return this.eventHandler.addEventCallback(callback);\n }\n\n /**\n * Removes callback with provided id from callback array\n * @param callbackId\n */\n removeEventCallback(callbackId: string): void {\n this.eventHandler.removeEventCallback(callbackId);\n }\n\n /**\n * Registers a callback to receive performance events.\n *\n * @param {PerformanceCallbackFunction} callback\n * @returns {string}\n */\n addPerformanceCallback(callback: PerformanceCallbackFunction): string {\n return this.performanceClient.addPerformanceCallback(callback);\n }\n\n /**\n * Removes a callback registered with addPerformanceCallback.\n *\n * @param {string} callbackId\n * @returns {boolean}\n */\n removePerformanceCallback(callbackId: string): boolean {\n return this.performanceClient.removePerformanceCallback(callbackId);\n }\n\n /**\n * Adds event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window\n */\n enableAccountStorageEvents(): void {\n this.eventHandler.enableAccountStorageEvents();\n }\n\n /**\n * Removes event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window\n */\n disableAccountStorageEvents(): void {\n this.eventHandler.disableAccountStorageEvents();\n }\n\n /**\n * Gets the token cache for the application.\n */\n getTokenCache(): ITokenCache {\n return this.tokenCache;\n }\n\n /**\n * Returns the logger instance\n */\n getLogger(): Logger {\n return this.logger;\n }\n\n /**\n * Replaces the default logger set in configurations with new Logger with new configurations\n * @param logger Logger instance\n */\n setLogger(logger: Logger): void {\n this.logger = logger;\n }\n\n /**\n * Called by wrapper libraries (Angular & React) to set SKU and Version passed down to telemetry, logger, etc.\n * @param sku\n * @param version\n */\n initializeWrapperLibrary(sku: WrapperSKU, version: string): void {\n // Validate the SKU passed in is one we expect\n this.browserStorage.setWrapperMetadata(sku, version);\n }\n\n /**\n * Sets navigation client\n * @param navigationClient\n */\n setNavigationClient(navigationClient: INavigationClient): void {\n this.navigationClient = navigationClient;\n }\n\n /**\n * Returns the configuration object\n */\n getConfiguration(): BrowserConfiguration {\n return this.config;\n }\n\n /**\n * Generates a correlation id for a request if none is provided.\n *\n * @protected\n * @param {?Partial<BaseAuthRequest>} [request]\n * @returns {string}\n */\n protected getRequestCorrelationId(request?: Partial<BaseAuthRequest>): string {\n if (request?.correlationId) {\n return request.correlationId;\n }\n\n if (this.isBrowserEnvironment) {\n return this.browserCrypto.createNewGuid();\n }\n\n /*\n * Included for fallback for non-browser environments,\n * and to ensure this method always returns a string.\n */\n return Constants.EMPTY_STRING;\n }\n\n // #endregion\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AccountInfo, AuthenticationResult, Constants, RequestThumbprint, AuthError, PerformanceEvents } from \"@azure/msal-common\";\nimport { Configuration } from \"../config/Configuration\";\nimport { DEFAULT_REQUEST, InteractionType, ApiId } from \"../utils/BrowserConstants\";\nimport { IPublicClientApplication } from \"./IPublicClientApplication\";\nimport { RedirectRequest } from \"../request/RedirectRequest\";\nimport { PopupRequest } from \"../request/PopupRequest\";\nimport { ClientApplication } from \"./ClientApplication\";\nimport { SilentRequest } from \"../request/SilentRequest\";\nimport { EventType } from \"../event/EventType\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { NativeAuthError } from \"../error/NativeAuthError\";\nimport { NativeMessageHandler } from \"../broker/nativeBroker/NativeMessageHandler\";\n\n/**\n * The PublicClientApplication class is the object exposed by the library to perform authentication and authorization functions in Single Page Applications\n * to obtain JWT tokens as described in the OAuth 2.0 Authorization Code Flow with PKCE specification.\n */\nexport class PublicClientApplication extends ClientApplication implements IPublicClientApplication {\n\n // Active requests\n private activeSilentTokenRequests: Map<string, Promise<AuthenticationResult>>;\n\n /**\n * @constructor\n * Constructor for the PublicClientApplication used to instantiate the PublicClientApplication object\n *\n * Important attributes in the Configuration object for auth are:\n * - clientID: the application ID of your application. You can obtain one by registering your application with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview\n * - authority: the authority URL for your application.\n * - redirect_uri: the uri of your application registered in the portal.\n *\n * In Azure AD, authority is a URL indicating the Azure active directory that MSAL uses to obtain tokens.\n * It is of the form https://login.microsoftonline.com/{Enter_the_Tenant_Info_Here}\n * If your application supports Accounts in one organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com).\n * If your application supports Accounts in any organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with organizations.\n * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace \"Enter_the_Tenant_Info_Here\" value with common.\n * To restrict support to Personal Microsoft accounts only, replace \"Enter_the_Tenant_Info_Here\" value with consumers.\n *\n * In Azure B2C, authority is of the form https://{instance}/tfp/{tenant}/{policyName}/\n * Full B2C functionality will be available in this library in future versions.\n *\n * @param configuration object for the MSAL PublicClientApplication instance\n */\n constructor(configuration: Configuration) {\n super(configuration);\n\n this.activeSilentTokenRequests = new Map();\n }\n\n /**\n * Use when initiating the login process by redirecting the user's browser to the authorization endpoint. This function redirects the page, so\n * any code that follows this function will not execute.\n *\n * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current\n * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function.\n *\n * @param request\n */\n async loginRedirect(request?: RedirectRequest): Promise<void> {\n const correlationId: string = this.getRequestCorrelationId(request);\n this.logger.verbose(\"loginRedirect called\", correlationId);\n return this.acquireTokenRedirect({\n correlationId,\n ...(request || DEFAULT_REQUEST)\n });\n }\n\n /**\n * Use when initiating the login process via opening a popup window in the user's browser\n *\n * @param request\n *\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\n */\n loginPopup(request?: PopupRequest): Promise<AuthenticationResult> {\n const correlationId: string = this.getRequestCorrelationId(request);\n this.logger.verbose(\"loginPopup called\", correlationId);\n return this.acquireTokenPopup({\n correlationId,\n ...(request || DEFAULT_REQUEST)\n });\n }\n\n /**\n * Silently acquire an access token for a given set of scopes. Returns currently processing promise if parallel requests are made.\n *\n * @param {@link (SilentRequest:type)}\n * @returns {Promise.<AuthenticationResult>} - a promise that is fulfilled when this function has completed, or rejected if an error was raised. Returns the {@link AuthResponse} object\n */\n async acquireTokenSilent(request: SilentRequest): Promise<AuthenticationResult> {\n const correlationId = this.getRequestCorrelationId(request);\n const atsMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenSilent, correlationId);\n this.preflightBrowserEnvironmentCheck(InteractionType.Silent);\n this.logger.verbose(\"acquireTokenSilent called\", correlationId);\n const account = request.account || this.getActiveAccount();\n if (!account) {\n throw BrowserAuthError.createNoAccountError();\n }\n const thumbprint: RequestThumbprint = {\n clientId: this.config.auth.clientId,\n authority: request.authority || Constants.EMPTY_STRING,\n scopes: request.scopes,\n homeAccountIdentifier: account.homeAccountId,\n claims: request.claims,\n authenticationScheme: request.authenticationScheme,\n resourceRequestMethod: request.resourceRequestMethod,\n resourceRequestUri: request.resourceRequestUri,\n shrClaims: request.shrClaims,\n sshKid: request.sshKid\n };\n const silentRequestKey = JSON.stringify(thumbprint);\n const cachedResponse = this.activeSilentTokenRequests.get(silentRequestKey);\n if (typeof cachedResponse === \"undefined\") {\n this.logger.verbose(\"acquireTokenSilent called for the first time, storing active request\", correlationId);\n const response = this.acquireTokenSilentAsync({\n ...request,\n correlationId\n }, account)\n .then((result) => {\n this.activeSilentTokenRequests.delete(silentRequestKey);\n atsMeasurement.endMeasurement({\n success: true,\n fromCache: result.fromCache,\n accessTokenSize: result.accessToken.length,\n idTokenSize: result.idToken.length,\n isNativeBroker: result.fromNativeBroker\n });\n atsMeasurement.flushMeasurement();\n return result;\n })\n .catch((error: AuthError) => {\n this.activeSilentTokenRequests.delete(silentRequestKey);\n atsMeasurement.endMeasurement({\n errorCode: error.errorCode,\n subErrorCode: error.subError,\n success: false\n });\n atsMeasurement.flushMeasurement();\n throw error;\n });\n this.activeSilentTokenRequests.set(silentRequestKey, response);\n return response;\n } else {\n this.logger.verbose(\"acquireTokenSilent has been called previously, returning the result from the first call\", correlationId);\n atsMeasurement.endMeasurement({\n success: true\n });\n // Discard measurements for memoized calls, as they are usually only a couple of ms and will artificially deflate metrics\n atsMeasurement.discardMeasurement();\n return cachedResponse;\n }\n }\n\n /**\n * Silently acquire an access token for a given set of scopes. Will use cached token if available, otherwise will attempt to acquire a new token from the network via refresh token.\n * @param {@link (SilentRequest:type)}\n * @param {@link (AccountInfo:type)}\n * @returns {Promise.<AuthenticationResult>} - a promise that is fulfilled when this function has completed, or rejected if an error was raised. Returns the {@link AuthResponse} \n */\n protected async acquireTokenSilentAsync(request: SilentRequest, account: AccountInfo): Promise<AuthenticationResult>{\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_START, InteractionType.Silent, request);\n const astsAsyncMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenSilentAsync, request.correlationId);\n\n let result: Promise<AuthenticationResult>;\n if (NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeExtensionProvider, request.authenticationScheme) && account.nativeAccountId) {\n this.logger.verbose(\"acquireTokenSilent - attempting to acquire token from native platform\");\n const silentRequest: SilentRequest = {\n ...request,\n account\n };\n result = this.acquireTokenNative(silentRequest, ApiId.acquireTokenSilent_silentFlow).catch(async (e: AuthError) => {\n // If native token acquisition fails for availability reasons fallback to web flow\n if (e instanceof NativeAuthError && e.isFatal()) {\n this.logger.verbose(\"acquireTokenSilent - native platform unavailable, falling back to web flow\");\n this.nativeExtensionProvider = undefined; // Prevent future requests from continuing to attempt \n\n // Cache will not contain tokens, given that previous WAM requests succeeded. Skip cache and RT renewal and go straight to iframe renewal\n const silentIframeClient = this.createSilentIframeClient(request.correlationId);\n return silentIframeClient.acquireToken(request);\n }\n throw e;\n }); \n } else {\n this.logger.verbose(\"acquireTokenSilent - attempting to acquire token from web flow\");\n const silentCacheClient = this.createSilentCacheClient(request.correlationId);\n const silentRequest = await silentCacheClient.initializeSilentRequest(request, account);\n result = silentCacheClient.acquireToken(silentRequest).catch(async () => {\n return this.acquireTokenByRefreshToken(silentRequest);\n });\n }\n\n return result.then((response) => {\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, InteractionType.Silent, response);\n astsAsyncMeasurement.endMeasurement({\n success: true,\n fromCache: response.fromCache,\n accessTokenSize: response.accessToken.length,\n idTokenSize: response.idToken.length,\n isNativeBroker: response.fromNativeBroker\n });\n return response;\n }).catch((tokenRenewalError: AuthError) => {\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Silent, null, tokenRenewalError);\n astsAsyncMeasurement.endMeasurement({\n errorCode: tokenRenewalError.errorCode,\n subErrorCode: tokenRenewalError.subError,\n success: false\n });\n throw tokenRenewalError;\n });\n }\n}\n","var Et=Object.create,Pe=Object.defineProperty;var bt=Object.getOwnPropertyDescriptor;var gt=Object.getOwnPropertyNames;var yt=Object.getPrototypeOf,wt=Object.prototype.hasOwnProperty;var Lt=t=>Pe(t,\"__esModule\",{value:!0});var Pt=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var kt=(t,e,n)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let i of gt(e))!wt.call(t,i)&&i!==\"default\"&&Pe(t,i,{get:()=>e[i],enumerable:!(n=bt(e,i))||n.enumerable});return t},Mt=t=>kt(Lt(Pe(t!=null?Et(yt(t)):{},\"default\",t&&t.__esModule&&\"default\"in t?{get:()=>t.default,enumerable:!0}:{value:t,enumerable:!0})),t);var $e=Pt((de,Ye)=>{(function(t,e){typeof de==\"object\"&&typeof Ye!=\"undefined\"?e(de):typeof define==\"function\"&&define.amd?define([\"exports\"],e):(t=typeof globalThis!=\"undefined\"?globalThis:t||self,e(t.fastUniqueNumbers={}))})(de,function(t){\"use strict\";var e=function(d){return function(h){var o=d(h);return h.add(o),o}},n=function(d){return function(h,o){return d.set(h,o),o}},i=Number.MAX_SAFE_INTEGER===void 0?9007199254740991:Number.MAX_SAFE_INTEGER,c=536870912,m=c*2,y=function(d,h){return function(o){var B=h.get(o),w=B===void 0?o.size:B<m?B+1:0;if(!o.has(w))return d(o,w);if(o.size<c){for(;o.has(w);)w=Math.floor(Math.random()*m);return d(o,w)}if(o.size>i)throw new Error(\"Congratulations, you created a collection of unique numbers which uses all available integers!\");for(;o.has(w);)w=Math.floor(Math.random()*i);return d(o,w)}},S=new WeakMap,W=n(S),p=y(W,S),l=e(p);t.addUniqueNumber=l,t.generateUniqueNumber=p,Object.defineProperty(t,\"__esModule\",{value:!0})})});import xt,{Component as At,forwardRef as St}from\"react\";function Ot(t){return St(function(n,i){let c={...n},m=re(c);return typeof i==\"function\"?i(m):i&&(i.current=m),xt.createElement(t,{...n,...m})})}var qe=class extends At{},je=class extends qe{constructor(e){super(e);this.onPresenceChange&&e.setOnPresenceChange(this.onPresenceChange.bind(this)),this.onPrompt&&e.setOnPrompt(this.onPrompt.bind(this)),this.onIdle&&e.setOnIdle(this.onIdle.bind(this)),this.onActive&&e.setOnActive(this.onActive.bind(this)),this.onAction&&e.setOnAction(this.onAction.bind(this)),this.onMessage&&e.setOnMessage(this.onMessage.bind(this))}};import{useEffect as g,useRef as u,useCallback as I,useMemo as Rt}from\"react\";var ne=Mt($e());var Je=t=>t.method!==void 0&&t.method===\"call\";var ze=t=>t.error===null&&typeof t.id==\"number\";var Xe=t=>{let e=new Map([[0,()=>{}]]),n=new Map([[0,()=>{}]]),i=new Map,c=new Worker(t);return c.addEventListener(\"message\",({data:p})=>{if(Je(p)){let{params:{timerId:l,timerType:f}}=p;if(f===\"interval\"){let d=e.get(l);if(typeof d==\"number\"){let h=i.get(d);if(h===void 0||h.timerId!==l||h.timerType!==f)throw new Error(\"The timer is in an undefined state.\")}else if(typeof d!=\"undefined\")d();else throw new Error(\"The timer is in an undefined state.\")}else if(f===\"timeout\"){let d=n.get(l);if(typeof d==\"number\"){let h=i.get(d);if(h===void 0||h.timerId!==l||h.timerType!==f)throw new Error(\"The timer is in an undefined state.\")}else if(typeof d!=\"undefined\")d(),n.delete(l);else throw new Error(\"The timer is in an undefined state.\")}}else if(ze(p)){let{id:l}=p,f=i.get(l);if(f===void 0)throw new Error(\"The timer is in an undefined state.\");let{timerId:d,timerType:h}=f;i.delete(l),h===\"interval\"?e.delete(d):n.delete(d)}else{let{error:{message:l}}=p;throw new Error(l)}}),{clearInterval:p=>{let l=(0,ne.generateUniqueNumber)(i);i.set(l,{timerId:p,timerType:\"interval\"}),e.set(p,l),c.postMessage({id:l,method:\"clear\",params:{timerId:p,timerType:\"interval\"}})},clearTimeout:p=>{let l=(0,ne.generateUniqueNumber)(i);i.set(l,{timerId:p,timerType:\"timeout\"}),n.set(p,l),c.postMessage({id:l,method:\"clear\",params:{timerId:p,timerType:\"timeout\"}})},setInterval:(p,l)=>{let f=(0,ne.generateUniqueNumber)(e);return e.set(f,()=>{p(),typeof e.get(f)==\"function\"&&c.postMessage({id:null,method:\"set\",params:{delay:l,now:performance.now(),timerId:f,timerType:\"interval\"}})}),c.postMessage({id:null,method:\"set\",params:{delay:l,now:performance.now(),timerId:f,timerType:\"interval\"}}),f},setTimeout:(p,l)=>{let f=(0,ne.generateUniqueNumber)(n);return n.set(f,p),c.postMessage({id:null,method:\"set\",params:{delay:l,now:performance.now(),timerId:f,timerType:\"timeout\"}}),f}}};var ie=null,Ke=(t,e)=>()=>{if(ie!==null)return ie;let n=new Blob([e],{type:\"application/javascript; charset=utf-8\"}),i=URL.createObjectURL(n);return ie=t(i),ie.setTimeout(()=>URL.revokeObjectURL(i),0),ie};var Qe=`(()=>{\"use strict\";const e=new Map,t=new Map,r=(e,t)=>{let r,o;const i=performance.now();r=i,o=e-Math.max(0,i-t);return{expected:r+o,remainingDelay:o}},o=(e,t,r,i)=>{const s=performance.now();s>r?postMessage({id:null,method:\"call\",params:{timerId:t,timerType:i}}):e.set(t,setTimeout(o,r-s,e,t,r,i))};addEventListener(\"message\",(i=>{let{data:s}=i;try{if(\"clear\"===s.method){const{id:r,params:{timerId:o,timerType:i}}=s;if(\"interval\"===i)(t=>{const r=e.get(t);if(void 0===r)throw new Error('There is no interval scheduled with the given id \"'.concat(t,'\".'));clearTimeout(r),e.delete(t)})(o),postMessage({error:null,id:r});else{if(\"timeout\"!==i)throw new Error('The given type \"'.concat(i,'\" is not supported'));(e=>{const r=t.get(e);if(void 0===r)throw new Error('There is no timeout scheduled with the given id \"'.concat(e,'\".'));clearTimeout(r),t.delete(e)})(o),postMessage({error:null,id:r})}}else{if(\"set\"!==s.method)throw new Error('The given method \"'.concat(s.method,'\" is not supported'));{const{params:{delay:i,now:n,timerId:a,timerType:d}}=s;if(\"interval\"===d)((t,i,s)=>{const{expected:n,remainingDelay:a}=r(t,s);e.set(i,setTimeout(o,a,e,i,n,\"interval\"))})(i,a,n);else{if(\"timeout\"!==d)throw new Error('The given type \"'.concat(d,'\" is not supported'));((e,i,s)=>{const{expected:n,remainingDelay:a}=r(e,s);t.set(i,setTimeout(o,a,t,i,n,\"timeout\"))})(i,a,n)}}}}catch(e){postMessage({error:{message:e.message},id:s.id,result:null})}}))})();`;var pe=Ke(Xe,Qe),Ze=t=>pe().clearInterval(t),et=t=>pe().clearTimeout(t),tt=(t,e)=>pe().setInterval(t,e),rt=(t,e)=>pe().setTimeout(t,e);var x=(typeof window==\"undefined\"?\"undefined\":typeof window)==\"object\";var E={setTimeout:x?setTimeout.bind(window):setTimeout,clearTimeout:x?clearTimeout.bind(window):clearTimeout,setInterval:x?setInterval.bind(window):setInterval,clearInterval:x?clearInterval.bind(window):clearInterval},oe={setTimeout:rt,clearTimeout:et,setInterval:tt,clearInterval:Ze};function Ct(){E.setTimeout=setTimeout,E.clearTimeout=clearTimeout,E.setInterval=setInterval,E.clearInterval=clearInterval,oe.setTimeout=setTimeout,oe.clearTimeout=clearTimeout,oe.setInterval=setInterval,oe.clearInterval=clearInterval}function nt(t){E.setTimeout=t.setTimeout,E.clearTimeout=t.clearTimeout,E.setInterval=t.setInterval,E.clearInterval=t.clearInterval}var X={},it=class{constructor(e){this.closed=!1;this.mc=new MessageChannel;this.name=e,X[e]=X[e]||[],X[e].push(this),this.mc.port1.start(),this.mc.port2.start(),this.onStorage=this.onStorage.bind(this),window.addEventListener(\"storage\",this.onStorage)}onStorage(e){if(e.storageArea!==window.localStorage||e.key.substring(0,this.name.length)!==this.name||e.newValue===null)return;let n=JSON.parse(e.newValue);this.mc.port2.postMessage(n)}postMessage(e){if(this.closed)throw new Error(\"InvalidStateError\");let n=JSON.stringify(e),i=`${this.name}:${String(Date.now())}${String(Math.random())}`;window.localStorage.setItem(i,n),E.setTimeout(()=>{window.localStorage.removeItem(i)},500),X[this.name].forEach(c=>{c!==this&&c.mc.port2.postMessage(JSON.parse(n))})}close(){if(this.closed)return;this.closed=!0,this.mc.port1.close(),this.mc.port2.close(),window.removeEventListener(\"storage\",this.onStorage);let e=X[this.name].indexOf(this);X[this.name].splice(e,1)}get onmessage(){return this.mc.port1.onmessage}set onmessage(e){this.mc.port1.onmessage=e}get onmessageerror(){return this.mc.port1.onmessageerror}set onmessageerror(e){this.mc.port1.onmessageerror=e}addEventListener(e,n){return this.mc.port1.addEventListener(e,n)}removeEventListener(e,n){return this.mc.port1.removeEventListener(e,n)}dispatchEvent(e){return this.mc.port1.dispatchEvent(e)}},ot=typeof window==\"undefined\"?void 0:typeof window.BroadcastChannel==\"function\"?window.BroadcastChannel:it;function st(t=0){return new Promise(e=>E.setTimeout(e,t))}function fe(){return Math.random().toString(36).substring(2)}var a;(function(o){o[o.APPLY=0]=\"APPLY\",o[o.TELL=1]=\"TELL\",o[o.CLOSE=2]=\"CLOSE\",o[o.REGISTER=3]=\"REGISTER\",o[o.DEREGISTER=4]=\"DEREGISTER\",o[o.IDLE=5]=\"IDLE\",o[o.ACTIVE=6]=\"ACTIVE\",o[o.PROMPT=7]=\"PROMPT\",o[o.START=8]=\"START\",o[o.RESET=9]=\"RESET\",o[o.ACTIVATE=10]=\"ACTIVATE\",o[o.PAUSE=11]=\"PAUSE\",o[o.RESUME=12]=\"RESUME\",o[o.MESSAGE=13]=\"MESSAGE\"})(a||(a={}));var ke=class{constructor(e,n){this.token=fe();this.isLeader=!1;this.isDead=!1;this.isApplying=!1;this.reApply=!1;this.intervals=[];this.listeners=[];this.channel=e,this.options=n,this.apply=this.apply.bind(this),this.awaitLeadership=this.awaitLeadership.bind(this),this.sendAction=this.sendAction.bind(this)}async apply(){if(this.isLeader||this.isDead)return!1;if(this.isApplying)return this.reApply=!0,!1;this.isApplying=!0;let e=!1,n=i=>{let{token:c,action:m}=i.data;c!==this.token&&(m===a.APPLY&&c>this.token&&(e=!0),m===a.TELL&&(e=!0))};this.channel.addEventListener(\"message\",n);try{return this.sendAction(a.APPLY),await st(this.options.responseTime),this.channel.removeEventListener(\"message\",n),this.isApplying=!1,e?this.reApply?this.apply():!1:(this.assumeLead(),!0)}catch{return!1}}awaitLeadership(){if(this.isLeader)return Promise.resolve();let e=!1,n=null;return new Promise(i=>{let c=()=>{if(e)return;e=!0,E.clearInterval(n);let y=this.intervals.indexOf(n);this.intervals.splice(y,1),this.channel.removeEventListener(\"message\",m),i()};n=E.setInterval(()=>{this.apply().then(()=>{this.isLeader&&c()})},this.options.fallbackInterval),this.intervals.push(n);let m=y=>{let{action:S}=y.data;S===a.CLOSE&&this.apply().then(()=>{this.isLeader&&c()})};this.channel.addEventListener(\"message\",m)})}sendAction(e){this.channel.postMessage({action:e,token:this.token})}assumeLead(){this.isLeader=!0;let e=n=>{let{action:i}=n.data;i===a.APPLY&&this.sendAction(a.TELL)};return this.channel.addEventListener(\"message\",e),this.listeners.push(e),this.sendAction(a.TELL)}waitForLeadership(){return this.deferred?this.deferred:(this.deferred=this.awaitLeadership(),this.deferred)}close(){this.isDead||(this.isDead=!0,this.isLeader=!1,this.sendAction(a.CLOSE),this.listeners.forEach(e=>this.channel.removeEventListener(\"message\",e)),this.intervals.forEach(e=>E.clearInterval(e)))}};var k;(function(i){i[i.PROMPTED=0]=\"PROMPTED\",i[i.ACTIVE=1]=\"ACTIVE\",i[i.IDLE=2]=\"IDLE\"})(k||(k={}));var Me=class{constructor(e){this.token=fe();this.registry=new Map;this.allIdle=!1;this.isLastActive=!1;let{channelName:n}=e;if(this.options=e,this.channel=new ot(n),this.registry.set(this.token,1),e.leaderElection){let i={fallbackInterval:2e3,responseTime:100};this.elector=new ke(this.channel,i),this.elector.waitForLeadership()}this.channel.addEventListener(\"message\",i=>{let{action:c,token:m,data:y}=i.data;switch(c){case a.REGISTER:this.registry.set(m,2);break;case a.DEREGISTER:this.registry.delete(m);break;case a.IDLE:this.idle(m);break;case a.ACTIVE:this.active(m);break;case a.PROMPT:this.prompt(m);break;case a.START:this.start(m);break;case a.RESET:this.reset(m);break;case a.ACTIVATE:this.activate(m);break;case a.PAUSE:this.pause(m);break;case a.RESUME:this.resume(m);break;case a.MESSAGE:this.options.onMessage(y);break}}),this.send(a.REGISTER)}get isLeader(){if(!this.elector)throw new Error('\\u274C Leader election is not enabled. To Enable it set the \"leaderElection\" property to true.');return this.elector.isLeader}prompt(e=this.token){this.registry.set(e,0);let n=[...this.registry.values()].every(i=>i===0);e===this.token&&this.send(a.PROMPT),n&&this.options.onPrompt()}idle(e=this.token){this.registry.set(e,2);let n=[...this.registry.values()].every(i=>i===2);e===this.token&&this.send(a.IDLE),!this.allIdle&&n&&(this.allIdle=!0,this.options.onIdle())}active(e=this.token){this.allIdle=!1,this.registry.set(e,1);let n=[...this.registry.values()].some(i=>i===1);e===this.token&&this.send(a.ACTIVE),n&&this.options.onActive(),this.isLastActive=e===this.token}start(e=this.token){this.allIdle=!1,this.registry.set(e,1),e===this.token?this.send(a.START):this.options.start(!0),this.isLastActive=e===this.token}reset(e=this.token){this.allIdle=!1,this.registry.set(e,1),e===this.token?this.send(a.RESET):this.options.reset(!0),this.isLastActive=e===this.token}activate(e=this.token){this.allIdle=!1,this.registry.set(e,1),e===this.token?this.send(a.ACTIVATE):this.options.activate(!0),this.isLastActive=e===this.token}pause(e=this.token){e===this.token?this.send(a.PAUSE):this.options.pause(!0)}resume(e=this.token){e===this.token?this.send(a.RESUME):this.options.resume(!0)}message(e){try{this.channel.postMessage({action:a.MESSAGE,token:this.token,data:e})}catch{}}send(e){try{this.channel.postMessage({action:e,token:this.token})}catch{}}close(){this.options.leaderElection&&this.elector.close(),this.send(a.DEREGISTER),this.channel.close()}};var at=x?document:null,xe=[\"mousemove\",\"keydown\",\"wheel\",\"DOMMouseScroll\",\"mousewheel\",\"mousedown\",\"touchstart\",\"touchmove\",\"MSPointerDown\",\"MSPointerMove\",\"visibilitychange\",\"focus\"];function ct(t,e){let n;function i(...c){n&&clearTimeout(n),n=setTimeout(()=>{t(...c),n=null},e)}return i.cancel=function(){clearTimeout(n)},i}function he(t,e){let n=0;return function(...i){let c=new Date().getTime();if(!(c-n<e))return n=c,t(...i)}}var T=()=>Date.now();var K=2147483647;function re({timeout:t=1e3*60*20,promptTimeout:e=0,promptBeforeIdle:n=0,element:i=at,events:c=xe,timers:m=void 0,immediateEvents:y=[],onPresenceChange:S=()=>{},onPrompt:W=()=>{},onIdle:p=()=>{},onActive:l=()=>{},onAction:f=()=>{},onMessage:d=()=>{},debounce:h=0,throttle:o=0,eventsThrottle:B=200,startOnMount:w=!0,startManually:_=!1,stopOnIdle:se=!1,crossTab:j=!1,name:Ae=\"idle-timer\",syncTimers:Q=0,leaderElection:Se=!1}={}){let Oe=u(T()),ae=u(T()),L=u(null),O=u(null),H=u(0),Z=u(0),R=u(0),M=u(0),v=u(!1),b=u(!1),D=u(!1),F=u(!0),ee=u(!1),N=u(null),s=u(null),C=u(t),Y=u(0);g(()=>{if(e&&console.warn(\"\\u26A0\\uFE0F IdleTimer -- The `promptTimeout` property has been deprecated in favor of `promptBeforeIdle`. It will be removed in the next major release.\"),n&&e)throw new Error(\"\\u274C Both promptTimeout and promptBeforeIdle can not be set. The promptTimeout property will be deprecated in a future version.\");if(t>=K)throw new Error(`\\u274C The value for the timeout property must fit in a 32 bit signed integer, ${K}.`);if(e>=K)throw new Error(`\\u274C The value for the promptTimeout property must fit in a 32 bit signed integer, ${K}.`);if(n>=K)throw new Error(`\\u274C The value for the promptBeforeIdle property must fit in a 32 bit signed integer, ${K}.`);if(n?(C.current=t-n,Y.current=n):(C.current=t,Y.current=e),!F.current){if(_)return;v.current&&($.current(),s.current&&s.current.active()),z()}},[t,e,n,_]);let Ce=u(se);g(()=>{Ce.current=se},[se]);let Re=u(y),Te=u(i),Ie=u([...new Set([...c,...y]).values()]),te=u(S);g(()=>{te.current=S},[S]);let ce=u(W);g(()=>{ce.current=W},[W]);let le=u(p);g(()=>{le.current=p},[p]);let $=u(l);g(()=>{$.current=l},[l]);let ue=u(f);g(()=>{ue.current=f},[f]);let J=u(d);g(()=>{J.current=d},[d]);let V=Rt(()=>{let r=P=>ue.current(P);return h>0?ct(r,h):o>0?he(r,o):r},[o,h]),De=u();g(()=>{j&&Q&&(De.current=he(()=>{s.current.active()},Q))},[j,Q]);let A=()=>{N.current!==null&&(E.clearTimeout(N.current),N.current=null)},G=(r,P=!0)=>{A(),N.current=E.setTimeout(be,r||C.current),P&&(O.current=T())},Ne=r=>{!b.current&&!v.current&&(ce.current(r),te.current({type:\"active\",prompted:!0})),M.current=0,R.current=T(),b.current=!0,G(Y.current,!1)},_e=()=>{A(),v.current||(le.current(),te.current({type:\"idle\"})),v.current=!0,L.current=T(),Ce.current?q():b.current&&(R.current=0,b.current=!1)},Ee=r=>{A(),(v.current||b.current)&&($.current(r),te.current({type:\"active\",prompted:!1})),b.current=!1,R.current=0,v.current=!1,H.current+=T()-L.current,Z.current+=T()-L.current,U(),G()},be=r=>{if(!v.current){if(V.cancel&&V.cancel(),Y.current>0&&!b.current){s.current?s.current.prompt():Ne(r);return}s.current?s.current.idle():_e();return}s.current?s.current.active():Ee(r)},ge=r=>{if(!w&&!O.current&&(O.current=T(),$.current()),V(r),b.current)return;if(A(),!v.current&&Re.current.includes(r.type)){be(r);return}let P=T()-O.current;if(v.current&&!se||!v.current&&P>=C.current){be(r);return}D.current=!1,M.current=0,R.current=0,G(),j&&Q&&De.current()},me=u(ge);g(()=>{let r=ee.current;r&&q(),B>0?me.current=he(ge,B):me.current=ge,r&&U()},[B,o,h,ue,j,Q]);let U=()=>{!x||ee.current||(Ie.current.forEach(r=>{Te.current.addEventListener(r,me.current,{capture:!0,passive:!0})}),ee.current=!0)},q=(r=!1)=>{!x||(ee.current||r)&&(Ie.current.forEach(P=>{Te.current.removeEventListener(P,me.current,{capture:!0})}),ee.current=!1)},z=I(r=>{A(),U(),v.current=!1,b.current=!1,D.current=!1,M.current=0,R.current=0,s.current&&!r&&s.current.start(),G()},[N,v,C,s]),ye=I(r=>{A(),U(),ae.current=T(),H.current+=T()-L.current,Z.current+=T()-L.current,H.current=0,v.current=!1,b.current=!1,D.current=!1,M.current=0,R.current=0,s.current&&!r&&s.current.reset(),_||G()},[N,v,C,_,s]),He=I(r=>{A(),U(),(v.current||b.current)&&Ee(),v.current=!1,b.current=!1,D.current=!1,M.current=0,R.current=0,ae.current=T(),s.current&&!r&&s.current.activate(),G()},[N,v,b,C,s]),we=I((r=!1)=>D.current?!1:(M.current=Fe(),D.current=!0,q(),A(),s.current&&!r&&s.current.pause(),!0),[N,s]),Le=I((r=!1)=>D.current?(D.current=!1,b.current||U(),v.current||G(M.current),R.current&&(R.current=T()),s.current&&!r&&s.current.resume(),!0):!1,[N,C,M,s]),lt=I((r,P)=>{s.current?(P&&J.current(r),s.current.message(r)):P&&J.current(r)},[d]),ut=I(()=>v.current,[v]),mt=I(()=>b.current,[b]),dt=I(()=>s.current?s.current.isLeader:null,[s]),pt=I(()=>s.current?s.current.isLastActive:null,[s]),ft=I(()=>s.current?s.current.token:null,[s]),Fe=I(()=>{if(D.current)return M.current;let r=M.current?M.current:Y.current+C.current,P=O.current?T()-O.current:0,Ge=Math.floor(r-P);return Ge<0?0:Math.abs(Ge)},[C,Y,b,M,O]),Ue=I(()=>Math.round(T()-ae.current),[ae]),We=I(()=>Math.round(T()-Oe.current),[Oe]),ht=I(()=>L.current?new Date(L.current):null,[L]),vt=I(()=>O.current?new Date(O.current):null,[O]),Be=I(()=>v.current?Math.round(T()-L.current+H.current):Math.round(H.current),[L,H]),Ve=I(()=>v.current?Math.round(T()-L.current+Z.current):Math.round(Z.current),[L,Z]),Tt=I(()=>{let r=Math.round(Ue()-Be());return r>=0?r:0},[L,H]),It=I(()=>{let r=Math.round(We()-Ve());return r>=0?r:0},[L,H]);return g(()=>{if(h>0&&o>0)throw new Error(\"\\u274C onAction can either be throttled or debounced, not both.\");m&&nt(m);let r=()=>{s.current&&s.current.close(),V.cancel&&V.cancel(),A(),q(!0)};return x&&window.addEventListener(\"beforeunload\",r),()=>{x&&window.removeEventListener(\"beforeunload\",r),s.current&&s.current.close(),V.cancel&&V.cancel(),A(),q(!0)}},[]),g(()=>{s.current&&s.current.close(),j?s.current=new Me({channelName:Ae,leaderElection:Se,onPrompt:()=>{Ne()},onIdle:()=>{_e()},onActive:()=>{Ee()},onMessage:J.current,start:z,reset:ye,activate:He,pause:we,resume:Le}):s.current=null},[j,Ae,Se,ce,le,$,J,z,ye,we,Le]),g(()=>{F.current||(A(),q(!0)),!_&&(w?z():U())},[_,w,F]),g(()=>{if(!F.current){let r=[...new Set([...c,...y]).values()];if(q(),Ie.current=r,Te.current=i,Re.current=y,_)return;w?z():U()}},[i,JSON.stringify(c),JSON.stringify(y),F,_,w]),g(()=>{F.current&&(F.current=!1)},[F]),{message:lt,start:z,reset:ye,activate:He,pause:we,resume:Le,isIdle:ut,isPrompted:mt,isLeader:dt,isLastActiveTab:pt,getTabId:ft,getRemainingTime:Fe,getElapsedTime:Ue,getTotalElapsedTime:We,getLastIdleTime:ht,getLastActiveTime:vt,getIdleTime:Be,getTotalIdleTime:Ve,getActiveTime:Tt,getTotalActiveTime:It,setOnPresenceChange:r=>{S=r,te.current=r},setOnPrompt:r=>{W=r,ce.current=r},setOnIdle:r=>{p=r,le.current=r},setOnActive:r=>{l=r,$.current=r},setOnAction:r=>{f=r,ue.current=r},setOnMessage:r=>{d=r,J.current=r}}}import Dt,{createContext as Nt,useContext as _t}from\"react\";var ve=Nt(null);function Ht(t){let e=re(t);return Dt.createElement(ve.Provider,{value:e},t.children)}var Ft=ve.Consumer;function Ut(){return _t(ve)}export{xe as DEFAULT_EVENTS,je as IdleTimerComponent,Ft as IdleTimerConsumer,ve as IdleTimerContext,Ht as IdleTimerProvider,Ct as createMocks,re as useIdleTimer,Ut as useIdleTimerContext,Ot as withIdleTimer,oe as workerTimers};\n","import { PublicClientApplication } from '@azure/msal-browser'\r\nimport { useEffect, useState } from 'react'\r\nimport { Button, Container, Modal, Row } from 'react-bootstrap'\r\nimport { useIdleTimer } from 'react-idle-timer'\r\nimport { msalConfig } from '../../helper/authConfig'\r\n\r\nconst timeout = 60 * 1000 * 20;\r\nconst promptBeforeIdle = 60 * 1000 * 2;\r\n\r\nexport default function LogoutOnIdle() {\r\n const [remaining, setRemaining] = useState<number>(timeout);\r\n const [open, setOpen] = useState<boolean>(false);\r\n\r\n const onIdle = () => {\r\n setOpen(false);\r\n signOut();\r\n };\r\n\r\n const onActive = () => {\r\n setOpen(false);\r\n };\r\n\r\n const onPrompt = () => {\r\n setOpen(true);\r\n };\r\n\r\n const signOut = () => {\r\n const myMSALObj = new PublicClientApplication(msalConfig);\r\n myMSALObj.logoutRedirect({\r\n postLogoutRedirectUri: \"/\",\r\n });\r\n };\r\n\r\n const handleClose = () => {\r\n if (getRemainingTime() <= 0) {\r\n signOut();\r\n return;\r\n }\r\n setOpen(false);\r\n activate();\r\n };\r\n\r\n const handleLogout = () => {\r\n setOpen(false);\r\n signOut();\r\n };\r\n\r\n const { getRemainingTime, activate } = useIdleTimer({\r\n onIdle,\r\n onActive,\r\n onPrompt,\r\n timeout,\r\n promptBeforeIdle,\r\n throttle: 500\r\n });\r\n\r\n useEffect(() => {\r\n const interval = setInterval(() => {\r\n setRemaining(Math.ceil(getRemainingTime() / 1000));\r\n }, 500)\r\n\r\n return () => {\r\n clearInterval(interval);\r\n }\r\n });\r\n\r\n const remainingSeconds = remaining > 1 ? 'seconds' : 'second';\r\n\r\n return (\r\n <>\r\n <Modal className='text-center' size=\"lg\" show={open} onHide={handleClose} centered>\r\n <Modal.Body>\r\n <Container className='text-center' >\r\n <Row>\r\n <h3 className=\"impact\">Your session is about to time out!</h3>\r\n </Row>\r\n <Row>\r\n <p>You are about to be automatically signed out. What would you like to do?</p>\r\n <p>(Automatic log out in {remaining} {remainingSeconds})</p>\r\n </Row>\r\n </Container>\r\n </Modal.Body>\r\n <Modal.Footer className='text-center justify-center'>\r\n <Button className='btn btn-standard-transparent big btn-outline' onClick={handleLogout}>\r\n Logout\r\n </Button>\r\n <Button className='btn btn-standard big' onClick={handleClose}>\r\n Stay\r\n </Button>\r\n </Modal.Footer>\r\n </Modal>\r\n </>\r\n )\r\n}\r\n\r\n","import { Component } from 'react';\r\nimport 'bootstrap/dist/css/bootstrap.min.css';\r\nimport { Col, Container, Form, Row } from 'react-bootstrap';\r\nimport axios from 'axios';\r\nimport { UserContextComponent } from '../components/UserContextComponent';\r\nimport { Navigate, useNavigate } from 'react-router-dom';\r\nimport { NotFound } from './NotFound';\r\n\r\nexport class ImpersonateContact extends UserContextComponent<any, any> {\r\n constructor(props: any) {\r\n super(props);\r\n const searchParams = new URLSearchParams(document.location.search);\r\n let contactId = searchParams.get('contactId') ?? \"\";\r\n this.state = { impersonated: false, contact: contactId, loading: false, autoImpersonate: contactId!=\"\" };\r\n this.impersonateContact = this.impersonateContact.bind(this);\r\n this.onChange = this.onChange.bind(this);\r\n this.checkIsImpersonated = this.checkIsImpersonated.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n\r\n // axios.defaults.baseURL = process.env.REACT_APP_API_URL;\r\n // axios.get('/Contacts/GetCaptchaPublicKey')\r\n // .then((response) => {\r\n // this.setState({ captchaKey: response.data, loading: false });\r\n // });\r\n }\r\n\r\n onChange(value: string) {\r\n this.setState({ contact: value });\r\n }\r\n\r\n impersonateContact() {\r\n if (this.state.contact === \"\" || this.state.contact === null) {\r\n return;\r\n }\r\n sessionStorage.setItem(\"imp\", \"\");\r\n\r\n axios.defaults.baseURL = process.env.REACT_APP_API_URL;\r\n axios\r\n .post('/Contacts/impersonate', null, { params: { id: this.state.contact } })\r\n .then(() => {\r\n let context = this.getContext();\r\n context.impersonatedId = this.state.contact;\r\n //context.load\r\n context.reloadMortgage();\r\n this.setState({loading: true});\r\n setTimeout(this.checkIsImpersonated, 500); \r\n }\r\n );\r\n\r\n }\r\n\r\n checkIsImpersonated() {\r\n let context = this.getContext();\r\n if (context.contact?.contactId === context.impersonatedId) {\r\n context.impersonatedId = this.state.contact;\r\n this.setState({ impersonated: true, loading: false });\r\n return;\r\n }\r\n\r\n setTimeout(this.checkIsImpersonated, 500);\r\n }\r\n\r\n render() {\r\n let context = this.getContext();\r\n if (!this.state.impersonated && (context.contact === null || context.contact.isAdmin !== true)) {\r\n return <NotFound />\r\n }\r\n\r\n if (this.state.autoImpersonate) {\r\n this.impersonateContact();\r\n }\r\n\r\n if (this.state.loading)\r\n return <p><em>Loading...</em></p>;\r\n\r\n return (\r\n <Container className=\"ps-5\">\r\n <Row className=\"page-title\" style={{ textAlign: \"center\" }}>\r\n <h1>Admin</h1>\r\n </Row>\r\n {this.state.impersonated === false &&\r\n <Row>\r\n <Col className=\"col-2\"></Col>\r\n <Col className=\"col-8\">\r\n <p><span>Id:</span></p>\r\n <Form.Control type=\"text\" defaultValue={this.state.contact} onChange={e => {this.onChange(e.target.value); }} />\r\n </Col>\r\n <Col className=\"col-2\"></Col>\r\n </Row>\r\n }\r\n <Row style={{ textAlign: \"center\", padding: \"20px\" }}>\r\n {this.state.impersonated === false && this.state.autoImpersonate === false &&\r\n <p>\r\n <button className=\"btn btn-standard btn-wide200\" onClick={this.impersonateContact}>Go</button>\r\n </p>\r\n }\r\n {this.state.autoImpersonate &&\r\n <p>\r\n <button disabled className=\"btn btn-standard btn-wide200\" >Impersonating...</button>\r\n </p>\r\n }\r\n {this.state.impersonated === true &&\r\n <Navigate to=\"/\" />\r\n //<p className='subtext'><span style={{ color: 'rgba(51, 204, 153, 1)' }} className=\"fa-solid fa-check fa-xl\"></span> Request sent</p>\r\n }\r\n </Row>\r\n </Container>\r\n );\r\n }\r\n}\r\n","import { Form, Col, Row, Container, Stack, ButtonGroup } from \"react-bootstrap\";\r\nimport { PortalPage } from \"../components/PortalPage\";\r\nimport { UserContextComponent } from \"../components/UserContextComponent\";\r\nimport { ApplicantMobileMenu } from \"./ApplicantMobileMenu\";\r\n\r\ninterface IApplicantPageProps {\r\n applicantNo: number;\r\n title: string;\r\n subTitle: any;\r\n titleCta?: any;\r\n next(): void;\r\n prev(): void;\r\n contact: any;\r\n handleSubmit(event: any): void;\r\n emptyOnlyClick?(): void;\r\n showFinishButton: boolean;\r\n children: JSX.Element;\r\n percentComplete: number;\r\n}\r\n\r\nexport class ApplicantPage extends UserContextComponent<IApplicantPageProps, any> {\r\n constructor(props: IApplicantPageProps) {\r\n super(props);\r\n }\r\n\r\n statusClass() {\r\n if (this.props.percentComplete === 0) return '';\r\n if (this.props.percentComplete >= 100) return 'complete'\r\n return 'inprogress';\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n <PortalPage className={`bump-right ${this.statusClass()}`} title={this.props.title} mobileTitle={this.props.contact.firstName}>\r\n <Row className=\" max-w-wide\">\r\n <Col className=\"col-12\">\r\n <Form onSubmit={this.props.handleSubmit}>\r\n <Row className={`sub-title-box ${this.props.titleCta ? 'pb-2' : ''}`}>\r\n <div className=\"subtext\">{this.props.subTitle}</div>\r\n </Row>\r\n {this.props.titleCta ?? <></>}\r\n {this.props.percentComplete !== 100 && this.props.emptyOnlyClick &&\r\n <Row>\r\n <Col className=\"toggle-box\">\r\n <Form.Check\r\n type=\"switch\"\r\n id=\"empty-fields-switch\"\r\n label=\"Incomplete fields only\"\r\n reverse\r\n onClick={this.props.emptyOnlyClick} />\r\n </Col>\r\n </Row>\r\n }\r\n {this.props.children}\r\n <br />\r\n <br />\r\n <Container>\r\n <Stack direction=\"horizontal\" gap={3} className=\"text-center justify-center\">\r\n <ButtonGroup>\r\n <button type=\"button\" className=\"btn btn-standard-transparent btn-outline btn-wide\" onClick={this.props.prev}>Previous</button>\r\n {this.props.showFinishButton === false &&\r\n <button type=\"button\" className=\"btn btn-dark btn-wide\" onClick={this.props.next}>Next</button>\r\n }\r\n {this.props.showFinishButton === true &&\r\n <button type=\"button\" className=\"btn btn-dark btn-wide\" onClick={this.props.handleSubmit}>Finish</button>\r\n }\r\n </ButtonGroup>\r\n </Stack>\r\n </Container>\r\n <br />\r\n <br />\r\n </Form>\r\n </Col>\r\n </Row>\r\n </PortalPage>\r\n </>\r\n );\r\n }\r\n}\r\n","import { FieldsCollection } from \"../forms/FieldsCollection\";\r\nimport { UserContextComponent } from \"../components/UserContextComponent\";\r\nimport { IAggregateItemProps } from \"../components/Pills/AggregatePill\";\r\nimport { FormLookupItem } from \"../models/PortalMetadata\";\r\nimport UserContextState, { UserContext } from \"../components/UserContext\";\r\nimport { IFileItem } from \"../components/DocumentManager\";\r\n\r\nexport interface IApplicantState {\r\n loading: boolean;\r\n usingCard: boolean;\r\n contact: any;\r\n otherContact: any;\r\n step: number;\r\n selectedPrediction: string;\r\n predictions: any[];\r\n searchValue?: string | null;\r\n AutoComplete: boolean;\r\n helperTexts: any[];\r\n mortgageDocumentList: any[];\r\n documentTypeList: any[];\r\n occupationList: any[];\r\n nationalitiesList: any[];\r\n countryList: any[];\r\n applicantNo: any;\r\n fields: FieldsCollection;\r\n emptyOnly: boolean | null;\r\n finished?: boolean | null;\r\n redirectTo?: string | null;\r\n dochelperTexts: any[];\r\n address1IsValid: boolean;\r\n address1Error?: string;\r\n address2IsValid: boolean;\r\n address2Error?: string;\r\n refreshToggle:boolean;\r\n files: IFileItem[];\r\n bankingRender?: 'openbanking' | 'manual' | null;\r\n openBankingChecker?: boolean;\r\n}\r\n\r\nexport class ApplicantBaseComponent extends UserContextComponent<any, IApplicantState> { \r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n usingCard: false,\r\n contact: null,\r\n otherContact: null,\r\n step: 1,\r\n selectedPrediction: \"\",\r\n predictions: [],\r\n AutoComplete: true,\r\n helperTexts: [],\r\n mortgageDocumentList: [],\r\n documentTypeList: [],\r\n occupationList: [],\r\n nationalitiesList: [],\r\n countryList: [],\r\n applicantNo: this.props.applicantNo,\r\n fields: new FieldsCollection(),\r\n emptyOnly: false,\r\n dochelperTexts: [],\r\n address1IsValid: true,\r\n address2IsValid: true,\r\n files: [],\r\n refreshToggle: false\r\n };\r\n }\r\n}\r\n","import { Component } from \"react\";\r\n\r\nexport interface IAggregatePillOverlayProps {\r\n closePill?(): void;\r\n}\r\n\r\nexport class AggregatePillOverlay<T extends IAggregatePillOverlayProps, S> extends Component<T, S> {\r\n constructor(props: any) {\r\n super(props);\r\n }\r\n}","import { Col, Container, Row } from \"react-bootstrap\";\r\nimport { FormControl } from \"./FormControl\";\r\nimport { AggregatePillOverlay, IAggregatePillOverlayProps } from \"./Pills/AggregatePillOverlay\";\r\nimport { UserContext } from \"./UserContext\";\r\nimport { Field } from \"../models/PortalMetadata\";\r\n\r\nexport interface IFieldWithHelptextProps extends IAggregatePillOverlayProps {\r\n field: Field,\r\n}\r\ninterface IFieldWithHelptextState {\r\n field: Field,\r\n}\r\n\r\nexport class FieldWithHelptext extends AggregatePillOverlay<IFieldWithHelptextProps, IFieldWithHelptextState> {\r\n static contextType = UserContext;\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n field: this.props.field,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({\r\n field: this.props.field,\r\n });\r\n }\r\n\r\n close(): void {\r\n if (this.props.closePill)\r\n this.props.closePill();\r\n }\r\n\r\n render() {\r\n return (\r\n <Container className=\"profit-container\">\r\n <Row className='text-center'>\r\n <h3>{this.state.field.tooltip?.content}</h3>\r\n </Row>\r\n <Row>\r\n <Col>\r\n <FormControl light field={this.state.field} customLabel=\" \"></FormControl>\r\n </Col>\r\n </Row>\r\n </Container>\r\n );\r\n }\r\n}","import { Col, Container, Row } from \"react-bootstrap\";\r\nimport { FormControl } from \"./FormControl\";\r\nimport { AggregatePillOverlay, IAggregatePillOverlayProps } from \"./Pills/AggregatePillOverlay\";\r\nimport { UserContext } from \"./UserContext\";\r\nimport { ControlType, DataType, Field } from \"../models/PortalMetadata\";\r\nimport currencyFormatter, { currencyToNumber } from \"../helper/currencyFormatter\";\r\n\r\nexport interface IBothApplicantFieldsWithAggregateProps extends IAggregatePillOverlayProps {\r\n field: Field,\r\n fieldLabel: string,\r\n field2: Field,\r\n field2Label: string,\r\n totalLabel: string,\r\n title: string,\r\n}\r\ninterface IBothApplicantFieldsWithAggregateState {\r\n field: Field,\r\n field2: Field,\r\n}\r\n\r\nexport class BothApplicantFieldsWithAggregate extends AggregatePillOverlay<IBothApplicantFieldsWithAggregateProps, IBothApplicantFieldsWithAggregateState> {\r\n static contextType = UserContext;\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n field: this.props.field,\r\n field2: this.props.field2\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({\r\n field: this.props.field,\r\n field2: this.props.field2\r\n });\r\n }\r\n\r\n close(): void {\r\n if (this.props.closePill)\r\n this.props.closePill();\r\n }\r\n\r\n render() {\r\n var value1 = currencyToNumber(this.state.field.value as string);\r\n var value2 = currencyToNumber(this.state.field2.value as string);\r\n\r\n var totalField: Field = {\r\n value: currencyFormatter(value1+value2),\r\n name: \"\",\r\n label: this.props.totalLabel,\r\n dataType: DataType.number,\r\n controlType: ControlType.currency,\r\n originalValue: undefined,\r\n dateValue: null,\r\n isDirty: false,\r\n options: null,\r\n lookupValues: null,\r\n api: null,\r\n isPill: false,\r\n minValue: undefined,\r\n maxValue: undefined,\r\n maxLength: undefined,\r\n optional: false\r\n };\r\n\r\n return (\r\n <Container className=\"profit-container\">\r\n <Row>\r\n <Col>\r\n <FormControl light field={this.state.field} customLabel={this.props.fieldLabel}></FormControl>\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col>\r\n <FormControl light field={this.state.field2} customLabel={this.props.field2Label}></FormControl>\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col>\r\n <FormControl light readOnly field={totalField}></FormControl>\r\n </Col>\r\n </Row>\r\n </Container>\r\n );\r\n }\r\n}","import 'bootstrap/dist/css/bootstrap.min.css';\r\nimport { Row, Container, Stack } from \"react-bootstrap\";\r\nimport './Applicant.css';\r\nimport { Navigate } from \"react-router-dom\";\r\nimport { InputPill } from '../components/Pills/InputPill';\r\nimport { LinkPill } from \"../components/Pills/LinkPill\";\r\nimport { Address } from \"../components/Address\";\r\nimport { ApplicantPage } from \"./ApplicantPage\";\r\nimport { ApplicantService } from './ApplicantService';\r\nimport { ApplicantBaseComponent } from './ApplicantBaseComponent';\r\nimport { FieldWithHelptext } from '../components/FieldWithHelptext';\r\nimport currencyFormatter, { currencyToNumber } from '../helper/currencyFormatter';\r\nimport { BothApplicantFieldsWithAggregate } from '../components/BothApplicantFieldsWithAggregate';\r\nimport { MortgageSubType } from '../models/PortalMortgageModel';\r\n\r\nexport class ApplicantResidential extends ApplicantBaseComponent {\r\n applicantService: ApplicantService;\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.prev = this.prev.bind(this);\r\n this.next = this.next.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n let context = this.getContext();\r\n this.applicantService = new ApplicantService(context, this, this.props.applicantNo);\r\n this.applicantService.getApplicantData();\r\n }\r\n\r\n prev() {\r\n this.applicantService.saveAllFields(false);\r\n this.setState({ redirectTo: \"/personal\" + this.props.applicantNo });\r\n }\r\n\r\n next() {\r\n this.applicantService.saveAllFields(false);\r\n this.setState({ redirectTo: \"/employment\" + this.props.applicantNo });\r\n }\r\n\r\n ppsInvalidCheck(value: string) {\r\n var regex = /^\\d{7}[A-Za-z]{1,2}$/\r\n if (value && !regex.test(value)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n render() {\r\n if (this.state.loading) {\r\n return;\r\n }\r\n\r\n if (this.state.redirectTo) {\r\n return <Navigate to={this.state.redirectTo} />;\r\n }\r\n\r\n if (!this.state.contact)\r\n return <span>Applicant information not found</span>;\r\n\r\n let context = this.getContext();\r\n\r\n //address\r\n let threeYearsAgo = new Date();\r\n threeYearsAgo.setFullYear(threeYearsAgo.getFullYear() - 3);\r\n let movedInDate = this.state.contact.address1MovedIn !== null ? new Date(this.state.contact.address1MovedIn) : null;\r\n let movedInLessThanThreeYearsAgo = movedInDate !== null && movedInDate.toISOString() > threeYearsAgo.toISOString();\r\n\r\n var title = this.state.contact.firstName + \"'s Residential Information\";\r\n var subTitle = <>Banks need to know if you currently rent or own your own home, and your monthly rent or mortgage payments.</>;\r\n\r\n var applicantOnePaysText;\r\n var applicantTwoPaysText;\r\n if (context.mortgage?.secondaryApplicant !== null) {\r\n if (context.applicantNo === 1) {\r\n applicantOnePaysText = \"you pay\";\r\n applicantTwoPaysText = context.mortgage?.secondaryApplicant.firstName + \" pays\";\r\n } else {\r\n applicantOnePaysText = context.mortgage?.primaryApplicant.firstName + \" pays\";\r\n applicantTwoPaysText = \"you pay\";\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n <ApplicantPage applicantNo={this.state.applicantNo} title={title} subTitle={subTitle} next={this.next} prev={this.prev}\r\n contact={this.state.contact} handleSubmit={this.applicantService.handleSubmit} showFinishButton={false}\r\n emptyOnlyClick={() => this.setState({ emptyOnly: !this.state.emptyOnly })} percentComplete={this.state.contact.residentialInfoPercentage}>\r\n <Container className=\"pill-form\">\r\n <>\r\n\r\n <Container>\r\n <Row className=\"pill-row\">\r\n <Stack gap={1} direction=\"horizontal\" className=\"pill-stack\">\r\n <LinkPill\r\n hideIfValue={this.state.emptyOnly}\r\n extraClass={this.state.contact.address1MovedIn === null || this.state.contact.eircode === null ? \"pill-missing\" : undefined}\r\n field={this.state.fields.getFieldByName(\"address1\")}\r\n canSave={this.state.address1IsValid}\r\n saveOnDone={this.applicantService.saveAllFields}\r\n overlay={<Address bubbleUpValidity={(isValid:boolean) => this.setState({address1IsValid: isValid})} helperTexts={this.state.helperTexts} record={this.state.contact} fields={this.state.fields}\r\n handleChange={this.applicantService.handleChange} address=\"address1\" addressLine1=\"address1Line1\" addressLine2=\"address1Line2\"\r\n addressLine3=\"address1Line3\" country=\"address1Country\" county=\"address1County\" city=\"address1City\" eircode=\"address1Eircode\" movedInDate=\"address1MovedIn\" mortgageBefore=\"previouslyHaveMortgageLoan\" letManual={true} \r\n customAddressPrompt={\r\n <>\r\n <div className=\"input-group-text pb-0\">Start typing your address or Eircode, please ensure that the Eircode address matches your 'proof of address'.</div>\r\n <div className=\"input-group-text pt-0\">If your address is wrong in the Eircode Finder, you should <strong> manually enter the address</strong></div>\r\n </>\r\n }/>}\r\n />\r\n {movedInLessThanThreeYearsAgo &&\r\n <LinkPill\r\n hideIfValue={this.state.emptyOnly}\r\n field={this.state.fields.getFieldByName(\"address2\")}\r\n canSave={this.state.address2IsValid}\r\n saveOnDone={this.applicantService.saveAllFields}\r\n overlay={<Address bubbleUpValidity={(isValid:boolean) => this.setState({address2IsValid: isValid})} helperTexts={this.state.helperTexts} record={this.state.contact} fields={this.state.fields}\r\n handleChange={this.applicantService.handleChange} address=\"address2\" addressLine1=\"address2Line1\" addressLine2=\"address2Line2\"\r\n addressLine3=\"address2Line3\" country=\"address2Country\" county=\"address2County\" city=\"address2City\" eircode=\"address2Eircode\" movedInDate=\"address2MovedIn\" letManual={true} />}\r\n />}\r\n <InputPill hideIfValue={this.state.emptyOnly} field={this.state.fields.getFieldByName(\"ownerOrRenter\")} ></InputPill>\r\n {(this.state.contact.ownerOrRenter === \"778390001\" || this.state.contact.ownerOrRenter === 778390001 || context.mortgage?.subType === MortgageSubType.SecondTimeBuyer) && <>\r\n <InputPill hideIfValue={this.state.emptyOnly} field={this.state.fields.getFieldByName(\"doYouPayYourRentThroughYourBankAccount\")} ></InputPill>\r\n <LinkPill\r\n hideIfValue={this.state.emptyOnly}\r\n field={this.state.fields.getFieldByName(\"monthlyRentAmount\")}\r\n valueToDisplay={context.mortgage?.secondaryApplicant === null ?\r\n this.state.fields.getFieldByName(\"monthlyRentAmount\").value as string\r\n :\r\n currencyFormatter(currencyToNumber(this.state.fields.getFieldByName(\"monthlyRentAmount\").value as string)+currencyToNumber(this.state.fields.getFieldByName(\"monthlyRentAmountOther\").value as string))\r\n }\r\n label='Mortgage/Rent'\r\n modalSize='lg'\r\n saveOnDone={this.applicantService.saveAllFields}\r\n overlay={context.mortgage?.secondaryApplicant === null ?\r\n <FieldWithHelptext field={this.state.fields.getFieldByName(\"monthlyRentAmount\")} />\r\n :\r\n <BothApplicantFieldsWithAggregate\r\n title='Mortgage/Rent'\r\n field={this.state.fields.getFieldByName(\"monthlyRentAmount\")}\r\n fieldLabel={`How much ${this.state.applicantNo === 1 ? applicantOnePaysText : applicantTwoPaysText}:`} \r\n field2={this.state.fields.getFieldByName(\"monthlyRentAmountOther\")}\r\n field2Label={`How much ${this.state.applicantNo === 1 ? applicantTwoPaysText : applicantOnePaysText}:`} \r\n totalLabel={'Total Mortgage/Rent:'} />\r\n }\r\n />\r\n </>\r\n }\r\n {movedInLessThanThreeYearsAgo &&\r\n <InputPill hideIfValue={this.state.emptyOnly} field={this.state.fields.getFieldByName(\"livedOutsideofIreland\")} ></InputPill>\r\n }\r\n </Stack>\r\n </Row>\r\n </Container>\r\n </>\r\n </Container>\r\n\r\n </ApplicantPage>\r\n </>\r\n );\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n","export var DEFAULT_LABELKEY = 'label';\nexport var SIZES = ['lg', 'sm'];","import { DEFAULT_LABELKEY } from '../constants';\nexport default function getStringLabelKey(labelKey) {\n return typeof labelKey === 'string' ? labelKey : DEFAULT_LABELKEY;\n}","/**\n * Check if an object has the given property in a type-safe way.\n */\nexport default function hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}","var idCounter = 0; // eslint-disable-next-line @typescript-eslint/ban-types\n\nexport function isFunction(value) {\n return typeof value === 'function';\n}\nexport function isString(value) {\n return typeof value === 'string';\n} // eslint-disable-next-line @typescript-eslint/no-empty-function\n\nexport function noop() {}\nexport function pick(obj, keys) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var result = {};\n keys.forEach(function (key) {\n result[key] = obj[key];\n });\n return result;\n}\nexport function uniqueId(prefix) {\n idCounter += 1;\n return (prefix == null ? '' : String(prefix)) + idCounter;\n}","import invariant from 'invariant';\nimport getStringLabelKey from './getStringLabelKey';\nimport hasOwnProperty from './hasOwnProperty';\nimport { isFunction, isString } from './nodash';\n\n/**\n * Retrieves the display string from an option. Options can be the string\n * themselves, or an object with a defined display string. Anything else throws\n * an error.\n */\nfunction getOptionLabel(option, labelKey) {\n // Handle internally created options first.\n if (!isString(option) && (hasOwnProperty(option, 'paginationOption') || hasOwnProperty(option, 'customOption'))) {\n return option[getStringLabelKey(labelKey)];\n }\n\n var optionLabel;\n\n if (isFunction(labelKey)) {\n optionLabel = labelKey(option);\n } else if (isString(option)) {\n optionLabel = option;\n } else {\n // `option` is an object and `labelKey` is a string.\n optionLabel = option[labelKey];\n }\n\n !isString(optionLabel) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'One or more options does not have a valid label string. Check the ' + '`labelKey` prop to ensure that it matches the correct option key and ' + 'provides a string for filtering and display.') : invariant(false) : void 0;\n return optionLabel;\n}\n\nexport default getOptionLabel;","import getOptionLabel from './getOptionLabel';\nimport { isFunction } from './nodash';\n\nfunction addCustomOption(results, props) {\n var allowNew = props.allowNew,\n labelKey = props.labelKey,\n text = props.text;\n\n if (!allowNew || !text.trim()) {\n return false;\n } // If the consumer has provided a callback, use that to determine whether or\n // not to add the custom option.\n\n\n if (isFunction(allowNew)) {\n return allowNew(results, props);\n } // By default, don't add the custom option if there is an exact text match\n // with an existing option.\n\n\n return !results.some(function (o) {\n return getOptionLabel(o, labelKey) === text;\n });\n}\n\nexport default addCustomOption;","import { isString } from './nodash';\nexport default function getOptionProperty(option, key) {\n if (isString(option)) {\n return undefined;\n }\n\n return option[key];\n}","/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * Taken from: http://stackoverflow.com/questions/990904/remove-accents-diacritics-in-a-string-in-javascript/18391901#18391901\n */\n// prettier-ignore\nvar map = [{\n base: 'A',\n letters: \"A\\u24B6\\uFF21\\xC0\\xC1\\xC2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\xC3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\xC4\\u01DE\\u1EA2\\xC5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F\"\n}, {\n base: 'AA',\n letters: \"\\uA732\"\n}, {\n base: 'AE',\n letters: \"\\xC6\\u01FC\\u01E2\"\n}, {\n base: 'AO',\n letters: \"\\uA734\"\n}, {\n base: 'AU',\n letters: \"\\uA736\"\n}, {\n base: 'AV',\n letters: \"\\uA738\\uA73A\"\n}, {\n base: 'AY',\n letters: \"\\uA73C\"\n}, {\n base: 'B',\n letters: \"B\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181\"\n}, {\n base: 'C',\n letters: \"C\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\xC7\\u1E08\\u0187\\u023B\\uA73E\"\n}, {\n base: 'D',\n letters: \"D\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779\\xD0\"\n}, {\n base: 'DZ',\n letters: \"\\u01F1\\u01C4\"\n}, {\n base: 'Dz',\n letters: \"\\u01F2\\u01C5\"\n}, {\n base: 'E',\n letters: \"E\\u24BA\\uFF25\\xC8\\xC9\\xCA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\xCB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E\"\n}, {\n base: 'F',\n letters: \"F\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B\"\n}, {\n base: 'G',\n letters: \"G\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E\"\n}, {\n base: 'H',\n letters: \"H\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D\"\n}, {\n base: 'I',\n letters: \"I\\u24BE\\uFF29\\xCC\\xCD\\xCE\\u0128\\u012A\\u012C\\u0130\\xCF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197\"\n}, {\n base: 'J',\n letters: \"J\\u24BF\\uFF2A\\u0134\\u0248\"\n}, {\n base: 'K',\n letters: \"K\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2\"\n}, {\n base: 'L',\n letters: \"L\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780\"\n}, {\n base: 'LJ',\n letters: \"\\u01C7\"\n}, {\n base: 'Lj',\n letters: \"\\u01C8\"\n}, {\n base: 'M',\n letters: \"M\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C\"\n}, {\n base: 'N',\n letters: \"N\\u24C3\\uFF2E\\u01F8\\u0143\\xD1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4\"\n}, {\n base: 'NJ',\n letters: \"\\u01CA\"\n}, {\n base: 'Nj',\n letters: \"\\u01CB\"\n}, {\n base: 'O',\n letters: \"O\\u24C4\\uFF2F\\xD2\\xD3\\xD4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\xD5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\xD6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\xD8\\u01FE\\u0186\\u019F\\uA74A\\uA74C\"\n}, {\n base: 'OI',\n letters: \"\\u01A2\"\n}, {\n base: 'OO',\n letters: \"\\uA74E\"\n}, {\n base: 'OU',\n letters: \"\\u0222\"\n}, {\n base: 'OE',\n letters: \"\\x8C\\u0152\"\n}, {\n base: 'oe',\n letters: \"\\x9C\\u0153\"\n}, {\n base: 'P',\n letters: \"P\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754\"\n}, {\n base: 'Q',\n letters: \"Q\\u24C6\\uFF31\\uA756\\uA758\\u024A\"\n}, {\n base: 'R',\n letters: \"R\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782\"\n}, {\n base: 'S',\n letters: \"S\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784\"\n}, {\n base: 'T',\n letters: \"T\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786\"\n}, {\n base: 'TZ',\n letters: \"\\uA728\"\n}, {\n base: 'U',\n letters: \"U\\u24CA\\uFF35\\xD9\\xDA\\xDB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\xDC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244\"\n}, {\n base: 'V',\n letters: \"V\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245\"\n}, {\n base: 'VY',\n letters: \"\\uA760\"\n}, {\n base: 'W',\n letters: \"W\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72\"\n}, {\n base: 'X',\n letters: \"X\\u24CD\\uFF38\\u1E8A\\u1E8C\"\n}, {\n base: 'Y',\n letters: \"Y\\u24CE\\uFF39\\u1EF2\\xDD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE\"\n}, {\n base: 'Z',\n letters: \"Z\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762\"\n}, {\n base: 'a',\n letters: \"a\\u24D0\\uFF41\\u1E9A\\xE0\\xE1\\xE2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\xE3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\xE4\\u01DF\\u1EA3\\xE5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250\"\n}, {\n base: 'aa',\n letters: \"\\uA733\"\n}, {\n base: 'ae',\n letters: \"\\xE6\\u01FD\\u01E3\"\n}, {\n base: 'ao',\n letters: \"\\uA735\"\n}, {\n base: 'au',\n letters: \"\\uA737\"\n}, {\n base: 'av',\n letters: \"\\uA739\\uA73B\"\n}, {\n base: 'ay',\n letters: \"\\uA73D\"\n}, {\n base: 'b',\n letters: \"b\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253\"\n}, {\n base: 'c',\n letters: \"c\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\xE7\\u1E09\\u0188\\u023C\\uA73F\\u2184\"\n}, {\n base: 'd',\n letters: \"d\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A\"\n}, {\n base: 'dz',\n letters: \"\\u01F3\\u01C6\"\n}, {\n base: 'e',\n letters: \"e\\u24D4\\uFF45\\xE8\\xE9\\xEA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\xEB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD\"\n}, {\n base: 'f',\n letters: \"f\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C\"\n}, {\n base: 'g',\n letters: \"g\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F\"\n}, {\n base: 'h',\n letters: \"h\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265\"\n}, {\n base: 'hv',\n letters: \"\\u0195\"\n}, {\n base: 'i',\n letters: \"i\\u24D8\\uFF49\\xEC\\xED\\xEE\\u0129\\u012B\\u012D\\xEF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131\"\n}, {\n base: 'j',\n letters: \"j\\u24D9\\uFF4A\\u0135\\u01F0\\u0249\"\n}, {\n base: 'k',\n letters: \"k\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3\"\n}, {\n base: 'l',\n letters: \"l\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747\"\n}, {\n base: 'lj',\n letters: \"\\u01C9\"\n}, {\n base: 'm',\n letters: \"m\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F\"\n}, {\n base: 'n',\n letters: \"n\\u24DD\\uFF4E\\u01F9\\u0144\\xF1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5\"\n}, {\n base: 'nj',\n letters: \"\\u01CC\"\n}, {\n base: 'o',\n letters: \"o\\u24DE\\uFF4F\\xF2\\xF3\\xF4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\xF5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\xF6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\xF8\\u01FF\\u0254\\uA74B\\uA74D\\u0275\"\n}, {\n base: 'oi',\n letters: \"\\u01A3\"\n}, {\n base: 'ou',\n letters: \"\\u0223\"\n}, {\n base: 'oo',\n letters: \"\\uA74F\"\n}, {\n base: 'p',\n letters: \"p\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755\"\n}, {\n base: 'q',\n letters: \"q\\u24E0\\uFF51\\u024B\\uA757\\uA759\"\n}, {\n base: 'r',\n letters: \"r\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783\"\n}, {\n base: 's',\n letters: \"s\\u24E2\\uFF53\\xDF\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B\"\n}, {\n base: 't',\n letters: \"t\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787\"\n}, {\n base: 'tz',\n letters: \"\\uA729\"\n}, {\n base: 'u',\n letters: \"u\\u24E4\\uFF55\\xF9\\xFA\\xFB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\xFC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289\"\n}, {\n base: 'v',\n letters: \"v\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C\"\n}, {\n base: 'vy',\n letters: \"\\uA761\"\n}, {\n base: 'w',\n letters: \"w\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73\"\n}, {\n base: 'x',\n letters: \"x\\u24E7\\uFF58\\u1E8B\\u1E8D\"\n}, {\n base: 'y',\n letters: \"y\\u24E8\\uFF59\\u1EF3\\xFD\\u0177\\u1EF9\\u0233\\u1E8F\\xFF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF\"\n}, {\n base: 'z',\n letters: \"z\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763\"\n}].reduce(function (acc, _ref) {\n var base = _ref.base,\n letters = _ref.letters;\n letters.split('').forEach(function (letter) {\n acc[letter] = base;\n });\n return acc;\n}, {}); // \"what?\" version ... http://jsperf.com/diacritics/12\n\nexport default function stripDiacritics(str) {\n return str.normalize('NFD').replace(/[\\u0300-\\u036F]/g, '') // Remove combining diacritics\n\n /* eslint-disable-next-line no-control-regex */\n .replace(/[^\\u0000-\\u007E]/g, function (a) {\n return map[a] || a;\n });\n}","// @flow\nimport warning from 'warning';\nvar warned = {};\n/**\n * Copied from: https://github.com/ReactTraining/react-router/blob/master/modules/routerWarning.js\n */\n\nexport default function warn(falseToWarn, message) {\n // Only issue deprecation warnings once.\n if (!falseToWarn && message.indexOf('deprecated') !== -1) {\n if (warned[message]) {\n return;\n }\n\n warned[message] = true;\n }\n\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n warning.apply(void 0, [falseToWarn, \"[react-bootstrap-typeahead] \".concat(message)].concat(args));\n}\nexport function resetWarned() {\n warned = {};\n}","import isEqual from 'fast-deep-equal';\nimport getOptionProperty from './getOptionProperty';\nimport { isFunction, isString } from './nodash';\nimport stripDiacritics from './stripDiacritics';\nimport warn from './warn';\n\nfunction isMatch(input, string, props) {\n var searchStr = input;\n var str = string;\n\n if (!props.caseSensitive) {\n searchStr = searchStr.toLowerCase();\n str = str.toLowerCase();\n }\n\n if (props.ignoreDiacritics) {\n searchStr = stripDiacritics(searchStr);\n str = stripDiacritics(str);\n }\n\n return str.indexOf(searchStr) !== -1;\n}\n/**\n * Default algorithm for filtering results.\n */\n\n\nexport default function defaultFilterBy(option, props) {\n var filterBy = props.filterBy,\n labelKey = props.labelKey,\n multiple = props.multiple,\n selected = props.selected,\n text = props.text; // Don't show selected options in the menu for the multi-select case.\n\n if (multiple && selected.some(function (o) {\n return isEqual(o, option);\n })) {\n return false;\n }\n\n if (isFunction(labelKey)) {\n return isMatch(text, labelKey(option), props);\n }\n\n var fields = filterBy.slice();\n\n if (isString(labelKey)) {\n // Add the `labelKey` field to the list of fields if it isn't already there.\n if (fields.indexOf(labelKey) === -1) {\n fields.unshift(labelKey);\n }\n }\n\n if (isString(option)) {\n warn(fields.length <= 1, 'You cannot filter by properties when `option` is a string.');\n return isMatch(text, option, props);\n }\n\n return fields.some(function (field) {\n var value = getOptionProperty(option, field);\n\n if (!isString(value)) {\n warn(false, 'Fields passed to `filterBy` should have string values. Value will ' + 'be converted to a string; results may be unexpected.');\n value = String(value);\n }\n\n return isMatch(text, value, props);\n });\n}","/**\n * Check if an input type is selectable, based on WHATWG spec.\n *\n * See:\n * - https://stackoverflow.com/questions/21177489/selectionstart-selectionend-on-input-type-number-no-longer-allowed-in-chrome/24175357\n * - https://html.spec.whatwg.org/multipage/input.html#do-not-apply\n */\nexport default function isSelectable(inputNode) {\n return inputNode.selectionStart != null;\n}","import invariant from 'invariant';\nimport stripDiacritics from './stripDiacritics';\nvar CASE_INSENSITIVE = 'i';\nvar COMBINING_MARKS = /[\\u0300-\\u036F]/;\n// Export for testing.\nexport function escapeStringRegexp(str) {\n !(typeof str === 'string') ? process.env.NODE_ENV !== \"production\" ? invariant(false, '`escapeStringRegexp` expected a string.') : invariant(false) : void 0; // Escape characters with special meaning either inside or outside character\n // sets. Use a simple backslash escape when it’s always valid, and a \\unnnn\n // escape when the simpler form would be disallowed by Unicode patterns’\n // stricter grammar.\n\n return str.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&').replace(/-/g, '\\\\x2d');\n}\nexport default function getMatchBounds(subject, str) {\n var search = new RegExp(escapeStringRegexp(stripDiacritics(str)), CASE_INSENSITIVE);\n var matches = search.exec(stripDiacritics(subject));\n\n if (!matches) {\n return null;\n }\n\n var start = matches.index;\n var matchLength = matches[0].length; // Account for combining marks, which changes the indices.\n\n if (COMBINING_MARKS.test(subject)) {\n // Starting at the beginning of the subject string, check for the number of\n // combining marks and increment the start index whenever one is found.\n for (var ii = 0; ii <= start; ii++) {\n if (COMBINING_MARKS.test(subject[ii])) {\n start += 1;\n }\n } // Similarly, increment the length of the match string if it contains a\n // combining mark.\n\n\n for (var _ii = start; _ii <= start + matchLength; _ii++) {\n if (COMBINING_MARKS.test(subject[_ii])) {\n matchLength += 1;\n }\n }\n }\n\n return {\n end: start + matchLength,\n start: start\n };\n}","import getMatchBounds from './getMatchBounds';\nimport getOptionLabel from './getOptionLabel';\nimport hasOwnProperty from './hasOwnProperty';\nimport { isString } from './nodash';\n\nfunction getHintText(_ref) {\n var activeIndex = _ref.activeIndex,\n initialItem = _ref.initialItem,\n isFocused = _ref.isFocused,\n isMenuShown = _ref.isMenuShown,\n labelKey = _ref.labelKey,\n multiple = _ref.multiple,\n selected = _ref.selected,\n text = _ref.text;\n\n // Don't display a hint under the following conditions:\n if ( // No text entered.\n !text || // The input is not focused.\n !isFocused || // The menu is hidden.\n !isMenuShown || // No item in the menu.\n !initialItem || // The initial item is a custom option.\n !isString(initialItem) && hasOwnProperty(initialItem, 'customOption') || // One of the menu items is active.\n activeIndex > -1 || // There's already a selection in single-select mode.\n !!selected.length && !multiple) {\n return '';\n }\n\n var initialItemStr = getOptionLabel(initialItem, labelKey);\n var bounds = getMatchBounds(initialItemStr.toLowerCase(), text.toLowerCase());\n\n if (!(bounds && bounds.start === 0)) {\n return '';\n } // Text matching is case- and accent-insensitive, so to display the hint\n // correctly, splice the input string with the hint string.\n\n\n return text + initialItemStr.slice(bounds.end, initialItemStr.length);\n}\n\nexport default getHintText;","export default function getMenuItemId() {\n var id = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var position = arguments.length > 1 ? arguments[1] : undefined;\n return \"\".concat(id, \"-item-\").concat(position);\n}","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"activeIndex\", \"id\", \"isFocused\", \"isMenuShown\", \"multiple\", \"onClick\", \"onFocus\", \"placeholder\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nimport cx from 'classnames';\nimport getMenuItemId from './getMenuItemId';\nimport hasOwnProperty from './hasOwnProperty';\n\nvar getInputProps = function getInputProps(_ref) {\n var activeIndex = _ref.activeIndex,\n id = _ref.id,\n isFocused = _ref.isFocused,\n isMenuShown = _ref.isMenuShown,\n multiple = _ref.multiple,\n onClick = _ref.onClick,\n onFocus = _ref.onFocus,\n placeholder = _ref.placeholder,\n rest = _objectWithoutProperties(_ref, _excluded);\n\n return function () {\n var _cx;\n\n var inputProps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var className = hasOwnProperty(inputProps, 'className') ? inputProps.className : undefined;\n\n var props = _objectSpread(_objectSpread(_objectSpread({\n // These props can be overridden by values in `inputProps`.\n autoComplete: 'off',\n placeholder: placeholder,\n type: 'text'\n }, inputProps), rest), {}, {\n 'aria-activedescendant': activeIndex >= 0 ? getMenuItemId(id, activeIndex) : undefined,\n 'aria-autocomplete': 'both',\n 'aria-expanded': isMenuShown,\n 'aria-haspopup': 'listbox',\n 'aria-owns': isMenuShown ? id : undefined,\n className: cx((_cx = {}, _defineProperty(_cx, className || '', !multiple), _defineProperty(_cx, \"focus\", isFocused), _cx)),\n onClick: onClick,\n onFocus: onFocus,\n // Comboboxes are single-select by definition:\n // https://www.w3.org/TR/wai-aria-practices-1.1/#combobox\n role: 'combobox'\n });\n\n if (!multiple) {\n return props;\n }\n\n return _objectSpread(_objectSpread({}, props), {}, {\n 'aria-autocomplete': 'list',\n 'aria-expanded': undefined,\n inputClassName: className,\n role: undefined\n });\n };\n};\n\nexport default getInputProps;","import getOptionLabel from './getOptionLabel';\n\nfunction getInputText(props) {\n var activeItem = props.activeItem,\n labelKey = props.labelKey,\n multiple = props.multiple,\n selected = props.selected,\n text = props.text;\n\n if (activeItem) {\n // Display the input value if the pagination item is active.\n return getOptionLabel(activeItem, labelKey);\n }\n\n if (!multiple && selected.length && selected[0]) {\n return getOptionLabel(selected[0], labelKey);\n }\n\n return text;\n}\n\nexport default getInputText;","import getOptionProperty from './getOptionProperty';\n\nfunction getIsOnlyResult(props) {\n var allowNew = props.allowNew,\n highlightOnlyResult = props.highlightOnlyResult,\n results = props.results;\n\n if (!highlightOnlyResult || allowNew) {\n return false;\n }\n\n return results.length === 1 && !getOptionProperty(results[0], 'disabled');\n}\n\nexport default getIsOnlyResult;","/**\n * Truncates the result set based on `maxResults` and returns the new set.\n */\nfunction getTruncatedOptions(options, maxResults) {\n if (!maxResults || maxResults >= options.length) {\n return options;\n }\n\n return options.slice(0, maxResults);\n}\n\nexport default getTruncatedOptions;","import { isString } from './nodash';\nimport hasOwnProperty from './hasOwnProperty';\nexport function isDisabledOption(index, items) {\n var option = items[index];\n return !!option && !isString(option) && hasOwnProperty(option, 'disabled');\n}\nexport function skipDisabledOptions(currentIndex, key, items) {\n var newIndex = currentIndex;\n\n while (isDisabledOption(newIndex, items)) {\n newIndex += key === 'ArrowUp' ? -1 : 1;\n }\n\n return newIndex;\n}\nexport default function getUpdatedActiveIndex(currentIndex, key, items) {\n var newIndex = currentIndex; // Increment or decrement index based on user keystroke.\n\n newIndex += key === 'ArrowUp' ? -1 : 1; // Skip over any disabled options.\n\n newIndex = skipDisabledOptions(newIndex, key, items); // If we've reached the end, go back to the beginning or vice-versa.\n\n if (newIndex === items.length) {\n newIndex = -1;\n } else if (newIndex === -2) {\n newIndex = items.length - 1; // Skip over any disabled options.\n\n newIndex = skipDisabledOptions(newIndex, key, items);\n }\n\n return newIndex;\n}","/**\n * Prevent the main input from blurring when a menu item or the clear button is\n * clicked. (#226 & #310)\n */\nexport default function preventInputBlur(e) {\n e.preventDefault();\n}","export function isSizeLarge(size) {\n return size === 'lg';\n}\nexport function isSizeSmall(size) {\n return size === 'sm';\n}","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"className\", \"isInvalid\", \"isValid\", \"size\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nimport cx from 'classnames';\nimport { isSizeLarge, isSizeSmall } from './size';\n\n/**\n * Returns Bootstrap classnames from `size` and validation props, along\n * with pass-through props.\n */\nexport default function propsWithBsClassName(_ref) {\n var className = _ref.className,\n isInvalid = _ref.isInvalid,\n isValid = _ref.isValid,\n size = _ref.size,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return _objectSpread(_objectSpread({}, props), {}, {\n className: cx('form-control', 'rbt-input', {\n 'form-control-lg': isSizeLarge(size),\n 'form-control-sm': isSizeSmall(size),\n 'is-invalid': isInvalid,\n 'is-valid': isValid\n }, className)\n });\n}","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport PropTypes from 'prop-types';\nimport { SIZES } from './constants';\nimport { isFunction, warn } from './utils';\nvar INPUT_PROPS_BLACKLIST = [{\n alt: 'onBlur',\n prop: 'onBlur'\n}, {\n alt: 'onInputChange',\n prop: 'onChange'\n}, {\n alt: 'onFocus',\n prop: 'onFocus'\n}, {\n alt: 'onKeyDown',\n prop: 'onKeyDown'\n}];\nexport var sizeType = PropTypes.oneOf(SIZES);\n\n/**\n * Allows additional warnings or messaging related to prop validation.\n */\nexport function checkPropType(validator, callback) {\n return function (props, propName, componentName) {\n PropTypes.checkPropTypes(_defineProperty({}, propName, validator), props, 'prop', componentName);\n isFunction(callback) && callback(props, propName, componentName);\n };\n}\nexport function caseSensitiveType(props) {\n var caseSensitive = props.caseSensitive,\n filterBy = props.filterBy;\n warn(!caseSensitive || typeof filterBy !== 'function', 'Your `filterBy` function will override the `caseSensitive` prop.');\n}\nexport function deprecated(validator, reason) {\n return function (props, propName, componentName) {\n if (props[propName] != null) {\n warn(false, \"The `\".concat(propName, \"` prop is deprecated. \").concat(reason));\n }\n\n return PropTypes.checkPropTypes(_defineProperty({}, propName, validator), props, 'prop', componentName);\n };\n}\nexport function defaultInputValueType(props) {\n var defaultInputValue = props.defaultInputValue,\n defaultSelected = props.defaultSelected,\n multiple = props.multiple,\n selected = props.selected;\n var name = defaultSelected.length ? 'defaultSelected' : 'selected';\n warn(!(!multiple && defaultInputValue && (defaultSelected.length || selected && selected.length)), \"`defaultInputValue` will be overridden by the value from `\".concat(name, \"`.\"));\n}\nexport function defaultSelectedType(props) {\n var defaultSelected = props.defaultSelected,\n multiple = props.multiple;\n warn(multiple || defaultSelected.length <= 1, 'You are passing multiple options to the `defaultSelected` prop of a ' + 'Typeahead in single-select mode. The selections will be truncated to a ' + 'single selection.');\n}\nexport function highlightOnlyResultType(_ref) {\n var allowNew = _ref.allowNew,\n highlightOnlyResult = _ref.highlightOnlyResult;\n warn(!(highlightOnlyResult && allowNew), '`highlightOnlyResult` will not work with `allowNew`.');\n}\nexport function ignoreDiacriticsType(props) {\n var filterBy = props.filterBy,\n ignoreDiacritics = props.ignoreDiacritics;\n warn(ignoreDiacritics || typeof filterBy !== 'function', 'Your `filterBy` function will override the `ignoreDiacritics` prop.');\n}\nexport function inputPropsType(_ref2) {\n var inputProps = _ref2.inputProps;\n\n if (!(inputProps && Object.prototype.toString.call(inputProps) === '[object Object]')) {\n return;\n } // Blacklisted properties.\n\n\n INPUT_PROPS_BLACKLIST.forEach(function (_ref3) {\n var alt = _ref3.alt,\n prop = _ref3.prop;\n var msg = alt ? \" Use the top-level `\".concat(alt, \"` prop instead.\") : null;\n warn(!inputProps[prop], \"The `\".concat(prop, \"` property of `inputProps` will be ignored.\").concat(msg));\n });\n}\nexport function isRequiredForA11y(props, propName, componentName) {\n warn(props[propName] != null, \"The prop `\".concat(propName, \"` is required to make `\").concat(componentName, \"` \") + 'accessible for users of assistive technologies such as screen readers.');\n}\nexport function labelKeyType(_ref4) {\n var allowNew = _ref4.allowNew,\n labelKey = _ref4.labelKey;\n warn(!(isFunction(labelKey) && allowNew), '`labelKey` must be a string when `allowNew={true}`.');\n}\nexport var optionType = PropTypes.oneOfType([PropTypes.object, PropTypes.string]);\nexport function selectedType(_ref5) {\n var multiple = _ref5.multiple,\n onChange = _ref5.onChange,\n selected = _ref5.selected;\n warn(multiple || !selected || selected.length <= 1, 'You are passing multiple options to the `selected` prop of a Typeahead ' + 'in single-select mode. This may lead to unexpected behaviors or errors.');\n warn(!selected || selected && isFunction(onChange), 'You provided a `selected` prop without an `onChange` handler. If you ' + 'want the typeahead to be uncontrolled, use `defaultSelected`. ' + 'Otherwise, set `onChange`.');\n}","import _extends from \"@babel/runtime/helpers/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"allowNew\", \"delay\", \"emptyLabel\", \"isLoading\", \"minLength\", \"onInputChange\", \"onSearch\", \"options\", \"promptText\", \"searchText\", \"useCache\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nimport debounce from 'lodash.debounce';\nimport PropTypes from 'prop-types';\nimport React, { forwardRef, useCallback, useEffect, useRef } from 'react';\nimport useForceUpdate from '@restart/hooks/useForceUpdate';\nimport usePrevious from '@restart/hooks/usePrevious';\nimport { optionType } from '../propTypes';\nimport { getDisplayName, isFunction } from '../utils';\nvar propTypes = {\n /**\n * Delay, in milliseconds, before performing search.\n */\n delay: PropTypes.number,\n\n /**\n * Whether or not a request is currently pending. Necessary for the\n * container to know when new results are available.\n */\n isLoading: PropTypes.bool.isRequired,\n\n /**\n * Number of input characters that must be entered before showing results.\n */\n minLength: PropTypes.number,\n\n /**\n * Callback to perform when the search is executed.\n */\n onSearch: PropTypes.func.isRequired,\n\n /**\n * Options to be passed to the typeahead. Will typically be the query\n * results, but can also be initial default options.\n */\n options: PropTypes.arrayOf(optionType),\n\n /**\n * Message displayed in the menu when there is no user input.\n */\n promptText: PropTypes.node,\n\n /**\n * Message displayed in the menu while the request is pending.\n */\n searchText: PropTypes.node,\n\n /**\n * Whether or not the component should cache query results.\n */\n useCache: PropTypes.bool\n};\n\n/**\n * Logic that encapsulates common behavior and functionality around\n * asynchronous searches, including:\n *\n * - Debouncing user input\n * - Optional query caching\n * - Search prompt and empty results behaviors\n */\nexport function useAsync(props) {\n var allowNew = props.allowNew,\n _props$delay = props.delay,\n delay = _props$delay === void 0 ? 200 : _props$delay,\n emptyLabel = props.emptyLabel,\n isLoading = props.isLoading,\n _props$minLength = props.minLength,\n minLength = _props$minLength === void 0 ? 2 : _props$minLength,\n onInputChange = props.onInputChange,\n onSearch = props.onSearch,\n _props$options = props.options,\n options = _props$options === void 0 ? [] : _props$options,\n _props$promptText = props.promptText,\n promptText = _props$promptText === void 0 ? 'Type to search...' : _props$promptText,\n _props$searchText = props.searchText,\n searchText = _props$searchText === void 0 ? 'Searching...' : _props$searchText,\n _props$useCache = props.useCache,\n useCache = _props$useCache === void 0 ? true : _props$useCache,\n otherProps = _objectWithoutProperties(props, _excluded);\n\n var cacheRef = useRef({});\n var handleSearchDebouncedRef = useRef(null);\n var queryRef = useRef(props.defaultInputValue || '');\n var forceUpdate = useForceUpdate();\n var prevProps = usePrevious(props);\n var handleSearch = useCallback(function (query) {\n queryRef.current = query;\n\n if (!query || minLength && query.length < minLength) {\n return;\n } // Use cached results, if applicable.\n\n\n if (useCache && cacheRef.current[query]) {\n // Re-render the component with the cached results.\n forceUpdate();\n return;\n } // Perform the search.\n\n\n onSearch(query);\n }, [forceUpdate, minLength, onSearch, useCache]); // Set the debounced search function.\n\n useEffect(function () {\n handleSearchDebouncedRef.current = debounce(handleSearch, delay);\n return function () {\n handleSearchDebouncedRef.current && handleSearchDebouncedRef.current.cancel();\n };\n }, [delay, handleSearch]);\n useEffect(function () {\n // Ensure that we've gone from a loading to a completed state. Otherwise\n // an empty response could get cached if the component updates during the\n // request (eg: if the parent re-renders for some reason).\n if (!isLoading && prevProps && prevProps.isLoading && useCache) {\n cacheRef.current[queryRef.current] = options;\n }\n });\n\n var getEmptyLabel = function getEmptyLabel() {\n if (!queryRef.current.length) {\n return promptText;\n }\n\n if (isLoading) {\n return searchText;\n }\n\n return emptyLabel;\n };\n\n var handleInputChange = useCallback(function (query, e) {\n onInputChange && onInputChange(query, e);\n handleSearchDebouncedRef.current && handleSearchDebouncedRef.current(query);\n }, [onInputChange]);\n var cachedQuery = cacheRef.current[queryRef.current];\n return _objectSpread(_objectSpread({}, otherProps), {}, {\n // Disable custom selections during a search if `allowNew` isn't a function.\n allowNew: isFunction(allowNew) ? allowNew : allowNew && !isLoading,\n emptyLabel: getEmptyLabel(),\n isLoading: isLoading,\n minLength: minLength,\n onInputChange: handleInputChange,\n options: useCache && cachedQuery ? cachedQuery : options\n });\n}\nexport function withAsync(Component) {\n var AsyncTypeahead = /*#__PURE__*/forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, useAsync(props), {\n ref: ref\n }));\n });\n AsyncTypeahead.displayName = \"withAsync(\".concat(getDisplayName(Component), \")\"); // @ts-ignore\n\n AsyncTypeahead.propTypes = propTypes;\n return AsyncTypeahead;\n}","import ownerDocument from 'dom-helpers/ownerDocument';\nimport safeFindDOMNode from './safeFindDOMNode';\nexport default (function (componentOrElement) {\n return ownerDocument(safeFindDOMNode(componentOrElement));\n});","import ReactDOM from 'react-dom';\nexport default function safeFindDOMNode(componentOrElement) {\n if (componentOrElement && 'setState' in componentOrElement) {\n return ReactDOM.findDOMNode(componentOrElement);\n }\n\n return componentOrElement != null ? componentOrElement : null;\n}","import contains from 'dom-helpers/contains';\nimport listen from 'dom-helpers/listen';\nimport { useCallback, useEffect, useRef } from 'react';\nimport useEventCallback from '@restart/hooks/useEventCallback';\nimport warning from 'warning';\nimport ownerDocument from './ownerDocument';\nvar escapeKeyCode = 27;\n\nvar noop = function noop() {};\n\nfunction isLeftClickEvent(event) {\n return event.button === 0;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nvar getRefTarget = function getRefTarget(ref) {\n return ref && ('current' in ref ? ref.current : ref);\n};\n\n/**\n * The `useRootClose` hook registers your callback on the document\n * when rendered. Powers the `<Overlay/>` component. This is used achieve modal\n * style behavior where your callback is triggered when the user tries to\n * interact with the rest of the document or hits the `esc` key.\n *\n * @param {Ref<HTMLElement>| HTMLElement} ref The element boundary\n * @param {function} onRootClose\n * @param {object=} options\n * @param {boolean=} options.disabled\n * @param {string=} options.clickTrigger The DOM event name (click, mousedown, etc) to attach listeners on\n */\nfunction useRootClose(ref, onRootClose, _temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n disabled = _ref.disabled,\n _ref$clickTrigger = _ref.clickTrigger,\n clickTrigger = _ref$clickTrigger === void 0 ? 'click' : _ref$clickTrigger;\n\n var preventMouseRootCloseRef = useRef(false);\n var onClose = onRootClose || noop;\n var handleMouseCapture = useCallback(function (e) {\n var _e$composedPath$;\n\n var currentTarget = getRefTarget(ref);\n warning(!!currentTarget, 'RootClose captured a close event but does not have a ref to compare it to. ' + 'useRootClose(), should be passed a ref that resolves to a DOM node');\n preventMouseRootCloseRef.current = !currentTarget || isModifiedEvent(e) || !isLeftClickEvent(e) || !!contains(currentTarget, (_e$composedPath$ = e.composedPath == null ? void 0 : e.composedPath()[0]) != null ? _e$composedPath$ : e.target);\n }, [ref]);\n var handleMouse = useEventCallback(function (e) {\n if (!preventMouseRootCloseRef.current) {\n onClose(e);\n }\n });\n var handleKeyUp = useEventCallback(function (e) {\n if (e.keyCode === escapeKeyCode) {\n onClose(e);\n }\n });\n useEffect(function () {\n if (disabled || ref == null) return undefined; // Store the current event to avoid triggering handlers immediately\n // https://github.com/facebook/react/issues/20074\n\n var currentEvent = window.event;\n var doc = ownerDocument(getRefTarget(ref)); // Use capture for this listener so it fires before React's listener, to\n // avoid false positives in the contains() check below if the target DOM\n // element is removed in the React mouse callback.\n\n var removeMouseCaptureListener = listen(doc, clickTrigger, handleMouseCapture, true);\n var removeMouseListener = listen(doc, clickTrigger, function (e) {\n // skip if this event is the same as the one running when we added the handlers\n if (e === currentEvent) {\n currentEvent = undefined;\n return;\n }\n\n handleMouse(e);\n });\n var removeKeyupListener = listen(doc, 'keyup', function (e) {\n // skip if this event is the same as the one running when we added the handlers\n if (e === currentEvent) {\n currentEvent = undefined;\n return;\n }\n\n handleKeyUp(e);\n });\n var mobileSafariHackListeners = [];\n\n if ('ontouchstart' in doc.documentElement) {\n mobileSafariHackListeners = [].slice.call(doc.body.children).map(function (el) {\n return listen(el, 'mousemove', noop);\n });\n }\n\n return function () {\n removeMouseCaptureListener();\n removeMouseListener();\n removeKeyupListener();\n mobileSafariHackListeners.forEach(function (remove) {\n return remove();\n });\n };\n }, [ref, disabled, clickTrigger, handleMouseCapture, handleMouse, handleKeyUp]);\n}\n\nexport default useRootClose;","import { createContext, useContext } from 'react';\nimport { noop } from '../utils';\nexport var defaultContext = {\n activeIndex: -1,\n hintText: '',\n id: '',\n initialItem: null,\n inputNode: null,\n isOnlyResult: false,\n onActiveItemChange: noop,\n onAdd: noop,\n onInitialItemChange: noop,\n onMenuItemClick: noop,\n setItem: noop\n};\nexport var TypeaheadContext = /*#__PURE__*/createContext(defaultContext);\nexport var useTypeaheadContext = function useTypeaheadContext() {\n return useContext(TypeaheadContext);\n};","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nimport React, { useEffect } from 'react';\nimport usePrevious from '@restart/hooks/usePrevious';\nimport { TypeaheadContext } from './Context';\nimport { defaultSelectHint, getHintText, getInputProps, getInputText, getIsOnlyResult, isFunction, pick } from '../utils';\nvar inputPropKeys = ['activeIndex', 'disabled', 'id', 'inputRef', 'isFocused', 'isMenuShown', 'multiple', 'onBlur', 'onChange', 'onClick', 'onFocus', 'onKeyDown', 'placeholder'];\nvar propKeys = ['activeIndex', 'hideMenu', 'isMenuShown', 'labelKey', 'onClear', 'onHide', 'onRemove', 'results', 'selected', 'text', 'toggleMenu'];\nvar contextKeys = ['activeIndex', 'id', 'initialItem', 'inputNode', 'onActiveItemChange', 'onAdd', 'onInitialItemChange', 'onMenuItemClick', 'setItem'];\n\nvar TypeaheadManager = function TypeaheadManager(props) {\n var allowNew = props.allowNew,\n children = props.children,\n initialItem = props.initialItem,\n isMenuShown = props.isMenuShown,\n onAdd = props.onAdd,\n onInitialItemChange = props.onInitialItemChange,\n onKeyDown = props.onKeyDown,\n onMenuToggle = props.onMenuToggle,\n results = props.results,\n selectHint = props.selectHint;\n var prevProps = usePrevious(props);\n var hintText = getHintText(props);\n useEffect(function () {\n // Clear the initial item when there are no results.\n if (!(allowNew || results.length)) {\n onInitialItemChange();\n }\n });\n useEffect(function () {\n if (prevProps && prevProps.isMenuShown !== isMenuShown) {\n onMenuToggle(isMenuShown);\n }\n });\n\n var handleKeyDown = function handleKeyDown(e) {\n onKeyDown(e);\n\n if (!initialItem) {\n return;\n }\n\n var addOnlyResult = e.key === 'Enter' && getIsOnlyResult(props);\n var shouldSelectHint = hintText && defaultSelectHint(e, selectHint);\n\n if (addOnlyResult || shouldSelectHint) {\n onAdd(initialItem);\n }\n };\n\n var childProps = _objectSpread(_objectSpread({}, pick(props, propKeys)), {}, {\n getInputProps: getInputProps(_objectSpread(_objectSpread({}, pick(props, inputPropKeys)), {}, {\n onKeyDown: handleKeyDown,\n value: getInputText(props)\n }))\n });\n\n var contextValue = _objectSpread(_objectSpread({}, pick(props, contextKeys)), {}, {\n hintText: hintText,\n isOnlyResult: getIsOnlyResult(props)\n });\n\n return /*#__PURE__*/React.createElement(TypeaheadContext.Provider, {\n value: contextValue\n }, isFunction(children) ? children(childProps) : children);\n};\n\nexport default TypeaheadManager;","import isSelectable from './isSelectable';\nexport default function defaultSelectHint(e, selectHint) {\n var shouldSelectHint = false;\n\n if (e.key === 'ArrowRight') {\n // For selectable input types (\"text\", \"search\"), only select the hint if\n // it's at the end of the input value. For non-selectable types (\"email\",\n // \"number\"), always select the hint.\n shouldSelectHint = isSelectable(e.currentTarget) ? e.currentTarget.selectionStart === e.currentTarget.value.length : true;\n }\n\n if (e.key === 'Tab') {\n // Prevent input from blurring on TAB.\n e.preventDefault();\n shouldSelectHint = true;\n }\n\n return selectHint ? selectHint(shouldSelectHint, e) : shouldSelectHint;\n}","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nvar _excluded = [\"onChange\"];\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nimport isEqual from 'fast-deep-equal';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport TypeaheadManager from './TypeaheadManager';\nimport { caseSensitiveType, checkPropType, defaultInputValueType, defaultSelectedType, highlightOnlyResultType, ignoreDiacriticsType, isRequiredForA11y, labelKeyType, optionType, selectedType } from '../propTypes';\nimport { addCustomOption, defaultFilterBy, getOptionLabel, getOptionProperty, getStringLabelKey, getUpdatedActiveIndex, getTruncatedOptions, isFunction, isShown, isString, noop, uniqueId, validateSelectedPropChange } from '../utils';\nimport { DEFAULT_LABELKEY } from '../constants';\nvar propTypes = {\n /**\n * Allows the creation of new selections on the fly. Note that any new items\n * will be added to the list of selections, but not the list of original\n * options unless handled as such by `Typeahead`'s parent.\n *\n * If a function is specified, it will be used to determine whether a custom\n * option should be included. The return value should be true or false.\n */\n allowNew: PropTypes.oneOfType([PropTypes.bool, PropTypes.func]),\n\n /**\n * Autofocus the input when the component initially mounts.\n */\n autoFocus: PropTypes.bool,\n\n /**\n * Whether or not filtering should be case-sensitive.\n */\n caseSensitive: checkPropType(PropTypes.bool, caseSensitiveType),\n\n /**\n * The initial value displayed in the text input.\n */\n defaultInputValue: checkPropType(PropTypes.string, defaultInputValueType),\n\n /**\n * Whether or not the menu is displayed upon initial render.\n */\n defaultOpen: PropTypes.bool,\n\n /**\n * Specify any pre-selected options. Use only if you want the component to\n * be uncontrolled.\n */\n defaultSelected: checkPropType(PropTypes.arrayOf(optionType), defaultSelectedType),\n\n /**\n * Either an array of fields in `option` to search, or a custom filtering\n * callback.\n */\n filterBy: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string.isRequired), PropTypes.func]),\n\n /**\n * Highlights the menu item if there is only one result and allows selecting\n * that item by hitting enter. Does not work with `allowNew`.\n */\n highlightOnlyResult: checkPropType(PropTypes.bool, highlightOnlyResultType),\n\n /**\n * An html id attribute, required for assistive technologies such as screen\n * readers.\n */\n id: checkPropType(PropTypes.oneOfType([PropTypes.number, PropTypes.string]), isRequiredForA11y),\n\n /**\n * Whether the filter should ignore accents and other diacritical marks.\n */\n ignoreDiacritics: checkPropType(PropTypes.bool, ignoreDiacriticsType),\n\n /**\n * Specify the option key to use for display or a function returning the\n * display string. By default, the selector will use the `label` key.\n */\n labelKey: checkPropType(PropTypes.oneOfType([PropTypes.string, PropTypes.func]), labelKeyType),\n\n /**\n * Maximum number of results to display by default. Mostly done for\n * performance reasons so as not to render too many DOM nodes in the case of\n * large data sets.\n */\n maxResults: PropTypes.number,\n\n /**\n * Number of input characters that must be entered before showing results.\n */\n minLength: PropTypes.number,\n\n /**\n * Whether or not multiple selections are allowed.\n */\n multiple: PropTypes.bool,\n\n /**\n * Invoked when the input is blurred. Receives an event.\n */\n onBlur: PropTypes.func,\n\n /**\n * Invoked whenever items are added or removed. Receives an array of the\n * selected options.\n */\n onChange: PropTypes.func,\n\n /**\n * Invoked when the input is focused. Receives an event.\n */\n onFocus: PropTypes.func,\n\n /**\n * Invoked when the input value changes. Receives the string value of the\n * input.\n */\n onInputChange: PropTypes.func,\n\n /**\n * Invoked when a key is pressed. Receives an event.\n */\n onKeyDown: PropTypes.func,\n\n /**\n * Invoked when menu visibility changes.\n */\n onMenuToggle: PropTypes.func,\n\n /**\n * Invoked when the pagination menu item is clicked. Receives an event.\n */\n onPaginate: PropTypes.func,\n\n /**\n * Whether or not the menu should be displayed. `undefined` allows the\n * component to control visibility, while `true` and `false` show and hide\n * the menu, respectively.\n */\n open: PropTypes.bool,\n\n /**\n * Full set of options, including pre-selected options. Must either be an\n * array of objects (recommended) or strings.\n */\n options: PropTypes.arrayOf(optionType).isRequired,\n\n /**\n * Give user the ability to display additional results if the number of\n * results exceeds `maxResults`.\n */\n paginate: PropTypes.bool,\n\n /**\n * The selected option(s) displayed in the input. Use this prop if you want\n * to control the component via its parent.\n */\n selected: checkPropType(PropTypes.arrayOf(optionType), selectedType)\n};\nvar defaultProps = {\n allowNew: false,\n autoFocus: false,\n caseSensitive: false,\n defaultInputValue: '',\n defaultOpen: false,\n defaultSelected: [],\n filterBy: [],\n highlightOnlyResult: false,\n ignoreDiacritics: true,\n labelKey: DEFAULT_LABELKEY,\n maxResults: 100,\n minLength: 0,\n multiple: false,\n onBlur: noop,\n onFocus: noop,\n onInputChange: noop,\n onKeyDown: noop,\n onMenuToggle: noop,\n onPaginate: noop,\n paginate: true\n};\nexport function getInitialState(props) {\n var defaultInputValue = props.defaultInputValue,\n defaultOpen = props.defaultOpen,\n defaultSelected = props.defaultSelected,\n maxResults = props.maxResults,\n multiple = props.multiple;\n var selected = props.selected ? props.selected.slice() : defaultSelected.slice();\n var text = defaultInputValue;\n\n if (!multiple && selected.length) {\n // Set the text if an initial selection is passed in.\n text = getOptionLabel(selected[0], props.labelKey);\n\n if (selected.length > 1) {\n // Limit to 1 selection in single-select mode.\n selected = selected.slice(0, 1);\n }\n }\n\n return {\n activeIndex: -1,\n activeItem: undefined,\n initialItem: undefined,\n isFocused: false,\n selected: selected,\n showMenu: defaultOpen,\n shownResults: maxResults,\n text: text\n };\n}\nexport function clearTypeahead(state, props) {\n return _objectSpread(_objectSpread({}, getInitialState(props)), {}, {\n isFocused: state.isFocused,\n selected: [],\n text: ''\n });\n}\nexport function clickOrFocusInput(state) {\n return _objectSpread(_objectSpread({}, state), {}, {\n isFocused: true,\n showMenu: true\n });\n}\nexport function hideMenu(state, props) {\n var _getInitialState = getInitialState(props),\n activeIndex = _getInitialState.activeIndex,\n activeItem = _getInitialState.activeItem,\n initialItem = _getInitialState.initialItem,\n shownResults = _getInitialState.shownResults;\n\n return _objectSpread(_objectSpread({}, state), {}, {\n activeIndex: activeIndex,\n activeItem: activeItem,\n initialItem: initialItem,\n showMenu: false,\n shownResults: shownResults\n });\n}\nexport function toggleMenu(state, props) {\n return state.showMenu ? hideMenu(state, props) : _objectSpread(_objectSpread({}, state), {}, {\n showMenu: true\n });\n}\n/**\n * Manually trigger the input's change event.\n * https://stackoverflow.com/questions/23892547/what-is-the-best-way-to-trigger-onchange-event-in-react-js/46012210#46012210\n */\n\nfunction triggerInputChange(input, value) {\n var inputValue = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, 'value');\n inputValue && inputValue.set && inputValue.set.call(input, value);\n var e = new Event('input', {\n bubbles: true\n });\n input.dispatchEvent(e);\n}\n\nvar Typeahead = /*#__PURE__*/function (_React$Component) {\n _inherits(Typeahead, _React$Component);\n\n var _super = _createSuper(Typeahead);\n\n function Typeahead() {\n var _this;\n\n _classCallCheck(this, Typeahead);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", getInitialState(_this.props));\n\n _defineProperty(_assertThisInitialized(_this), \"inputNode\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"isMenuShown\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"items\", []);\n\n _defineProperty(_assertThisInitialized(_this), \"blur\", function () {\n _this.inputNode && _this.inputNode.blur();\n\n _this.hideMenu();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"clear\", function () {\n _this.setState(clearTypeahead);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"focus\", function () {\n _this.inputNode && _this.inputNode.focus();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getInput\", function () {\n return _this.inputNode;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"inputRef\", function (inputNode) {\n _this.inputNode = inputNode;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"setItem\", function (item, position) {\n _this.items[position] = item;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"hideMenu\", function () {\n _this.setState(hideMenu);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"toggleMenu\", function () {\n _this.setState(toggleMenu);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_handleActiveIndexChange\", function (activeIndex) {\n _this.setState(function (state) {\n return {\n activeIndex: activeIndex,\n activeItem: activeIndex >= 0 ? state.activeItem : undefined\n };\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_handleActiveItemChange\", function (activeItem) {\n // Don't update the active item if it hasn't changed.\n if (!isEqual(activeItem, _this.state.activeItem)) {\n _this.setState({\n activeItem: activeItem\n });\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_handleBlur\", function (e) {\n e.persist();\n\n _this.setState({\n isFocused: false\n }, function () {\n return _this.props.onBlur(e);\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_handleChange\", function (selected) {\n _this.props.onChange && _this.props.onChange(selected);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_handleClear\", function () {\n _this.inputNode && triggerInputChange(_this.inputNode, '');\n\n _this.setState(clearTypeahead, function () {\n // Change handler is automatically triggered for single selections but\n // not multi-selections.\n if (_this.props.multiple) {\n _this._handleChange([]);\n }\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_handleClick\", function (e) {\n var _this$props$inputProp;\n\n e.persist();\n var onClick = (_this$props$inputProp = _this.props.inputProps) === null || _this$props$inputProp === void 0 ? void 0 : _this$props$inputProp.onClick;\n\n _this.setState(clickOrFocusInput, function () {\n return isFunction(onClick) && onClick(e);\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_handleFocus\", function (e) {\n e.persist();\n\n _this.setState(clickOrFocusInput, function () {\n return _this.props.onFocus(e);\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_handleInitialItemChange\", function (initialItem) {\n // Don't update the initial item if it hasn't changed.\n if (!isEqual(initialItem, _this.state.initialItem)) {\n _this.setState({\n initialItem: initialItem\n });\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_handleInputChange\", function (e) {\n e.persist();\n var text = e.currentTarget.value;\n var _this$props = _this.props,\n multiple = _this$props.multiple,\n onInputChange = _this$props.onInputChange; // Clear selections when the input value changes in single-select mode.\n\n var shouldClearSelections = _this.state.selected.length && !multiple;\n\n _this.setState(function (state, props) {\n var _getInitialState2 = getInitialState(props),\n activeIndex = _getInitialState2.activeIndex,\n activeItem = _getInitialState2.activeItem,\n shownResults = _getInitialState2.shownResults;\n\n return {\n activeIndex: activeIndex,\n activeItem: activeItem,\n selected: shouldClearSelections ? [] : state.selected,\n showMenu: true,\n shownResults: shownResults,\n text: text\n };\n }, function () {\n onInputChange(text, e);\n shouldClearSelections && _this._handleChange([]);\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_handleKeyDown\", function (e) {\n var activeItem = _this.state.activeItem; // Skip most actions when the menu is hidden.\n\n if (!_this.isMenuShown) {\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n _this.setState({\n showMenu: true\n });\n }\n\n _this.props.onKeyDown(e);\n\n return;\n }\n\n switch (e.key) {\n case 'ArrowUp':\n case 'ArrowDown':\n // Prevent input cursor from going to the beginning when pressing up.\n e.preventDefault();\n\n _this._handleActiveIndexChange(getUpdatedActiveIndex(_this.state.activeIndex, e.key, _this.items));\n\n break;\n\n case 'Enter':\n // Prevent form submission while menu is open.\n e.preventDefault();\n activeItem && _this._handleMenuItemSelect(activeItem, e);\n break;\n\n case 'Escape':\n case 'Tab':\n // ESC simply hides the menu. TAB will blur the input and move focus to\n // the next item; hide the menu so it doesn't gain focus.\n _this.hideMenu();\n\n break;\n\n default:\n break;\n }\n\n _this.props.onKeyDown(e);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_handleMenuItemSelect\", function (option, e) {\n if (getOptionProperty(option, 'paginationOption')) {\n _this._handlePaginate(e);\n } else {\n _this._handleSelectionAdd(option);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_handlePaginate\", function (e) {\n e.persist();\n\n _this.setState(function (state, props) {\n return {\n shownResults: state.shownResults + props.maxResults\n };\n }, function () {\n return _this.props.onPaginate(e, _this.state.shownResults);\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_handleSelectionAdd\", function (option) {\n var _this$props2 = _this.props,\n multiple = _this$props2.multiple,\n labelKey = _this$props2.labelKey;\n var selected;\n var selection = option;\n var text; // Add a unique id to the custom selection. Avoid doing this in `render` so\n // the id doesn't increment every time.\n\n if (!isString(selection) && selection.customOption) {\n selection = _objectSpread(_objectSpread({}, selection), {}, {\n id: uniqueId('new-id-')\n });\n }\n\n if (multiple) {\n // If multiple selections are allowed, add the new selection to the\n // existing selections.\n selected = _this.state.selected.concat(selection);\n text = '';\n } else {\n // If only a single selection is allowed, replace the existing selection\n // with the new one.\n selected = [selection];\n text = getOptionLabel(selection, labelKey);\n }\n\n _this.setState(function (state, props) {\n return _objectSpread(_objectSpread({}, hideMenu(state, props)), {}, {\n initialItem: selection,\n selected: selected,\n text: text\n });\n }, function () {\n return _this._handleChange(selected);\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_handleSelectionRemove\", function (selection) {\n var selected = _this.state.selected.filter(function (option) {\n return !isEqual(option, selection);\n }); // Make sure the input stays focused after the item is removed.\n\n\n _this.focus();\n\n _this.setState(function (state, props) {\n return _objectSpread(_objectSpread({}, hideMenu(state, props)), {}, {\n selected: selected\n });\n }, function () {\n return _this._handleChange(selected);\n });\n });\n\n return _this;\n }\n\n _createClass(Typeahead, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.props.autoFocus && this.focus();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n var _this$props3 = this.props,\n labelKey = _this$props3.labelKey,\n multiple = _this$props3.multiple,\n selected = _this$props3.selected;\n validateSelectedPropChange(selected, prevProps.selected); // Sync selections in state with those in props.\n\n if (selected && !isEqual(selected, prevState.selected)) {\n this.setState({\n selected: selected\n });\n\n if (!multiple) {\n this.setState({\n text: selected.length ? getOptionLabel(selected[0], labelKey) : ''\n });\n }\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props4 = this.props,\n onChange = _this$props4.onChange,\n props = _objectWithoutProperties(_this$props4, _excluded);\n\n var mergedPropsAndState = _objectSpread(_objectSpread({}, props), this.state);\n\n var filterBy = mergedPropsAndState.filterBy,\n labelKey = mergedPropsAndState.labelKey,\n options = mergedPropsAndState.options,\n paginate = mergedPropsAndState.paginate,\n shownResults = mergedPropsAndState.shownResults,\n text = mergedPropsAndState.text;\n this.isMenuShown = isShown(mergedPropsAndState);\n this.items = []; // Reset items on re-render.\n\n var results = [];\n\n if (this.isMenuShown) {\n var cb = isFunction(filterBy) ? filterBy : defaultFilterBy;\n results = options.filter(function (option) {\n return cb(option, mergedPropsAndState);\n }); // This must come before results are truncated.\n\n var shouldPaginate = paginate && results.length > shownResults; // Truncate results if necessary.\n\n results = getTruncatedOptions(results, shownResults); // Add the custom option if necessary.\n\n if (addCustomOption(results, mergedPropsAndState)) {\n results.push(_defineProperty({\n customOption: true\n }, getStringLabelKey(labelKey), text));\n } // Add the pagination item if necessary.\n\n\n if (shouldPaginate) {\n var _results$push2;\n\n results.push((_results$push2 = {}, _defineProperty(_results$push2, getStringLabelKey(labelKey), ''), _defineProperty(_results$push2, \"paginationOption\", true), _results$push2));\n }\n }\n\n return /*#__PURE__*/React.createElement(TypeaheadManager, _extends({}, mergedPropsAndState, {\n hideMenu: this.hideMenu,\n inputNode: this.inputNode,\n inputRef: this.inputRef,\n isMenuShown: this.isMenuShown,\n onActiveItemChange: this._handleActiveItemChange,\n onAdd: this._handleSelectionAdd,\n onBlur: this._handleBlur,\n onChange: this._handleInputChange,\n onClear: this._handleClear,\n onClick: this._handleClick,\n onFocus: this._handleFocus,\n onHide: this.hideMenu,\n onInitialItemChange: this._handleInitialItemChange,\n onKeyDown: this._handleKeyDown,\n onMenuItemClick: this._handleMenuItemSelect,\n onRemove: this._handleSelectionRemove,\n results: results,\n setItem: this.setItem,\n toggleMenu: this.toggleMenu\n }));\n }\n }]);\n\n return Typeahead;\n}(React.Component);\n\n_defineProperty(Typeahead, \"propTypes\", propTypes);\n\n_defineProperty(Typeahead, \"defaultProps\", defaultProps);\n\nexport default Typeahead;","import warn from './warn';\nexport default function validateSelectedPropChange(prevSelected, selected) {\n var uncontrolledToControlled = !prevSelected && selected;\n var controlledToUncontrolled = prevSelected && !selected;\n var from, to, precedent;\n\n if (uncontrolledToControlled) {\n from = 'uncontrolled';\n to = 'controlled';\n precedent = 'an';\n } else {\n from = 'controlled';\n to = 'uncontrolled';\n precedent = 'a';\n }\n\n var message = \"You are changing \".concat(precedent, \" \").concat(from, \" typeahead to be \").concat(to, \". \") + \"Input elements should not switch from \".concat(from, \" to \").concat(to, \" (or vice versa). \") + 'Decide between using a controlled or uncontrolled element for the ' + 'lifetime of the component.';\n warn(!(uncontrolledToControlled || controlledToUncontrolled), message);\n}","export default function isShown(_ref) {\n var open = _ref.open,\n minLength = _ref.minLength,\n showMenu = _ref.showMenu,\n text = _ref.text;\n\n // If menu visibility is controlled via props, that value takes precedence.\n if (open || open === false) {\n return open;\n }\n\n if (text.length < minLength) {\n return false;\n }\n\n return showMenu;\n}","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"className\", \"label\", \"onClick\", \"onKeyDown\", \"size\"];\nimport cx from 'classnames';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { isSizeLarge, isSizeSmall } from '../../utils';\nimport { sizeType } from '../../propTypes';\nvar propTypes = {\n label: PropTypes.string,\n onClick: PropTypes.func,\n onKeyDown: PropTypes.func,\n size: sizeType\n};\nvar defaultProps = {\n label: 'Clear'\n};\n\n/**\n * ClearButton\n *\n * http://getbootstrap.com/css/#helper-classes-close\n */\nvar ClearButton = function ClearButton(_ref) {\n var className = _ref.className,\n label = _ref.label,\n _onClick = _ref.onClick,\n _onKeyDown = _ref.onKeyDown,\n size = _ref.size,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"button\", _extends({}, props, {\n \"aria-label\": label,\n className: cx('close', 'btn-close', 'rbt-close', {\n 'rbt-close-lg': isSizeLarge(size),\n 'rbt-close-sm': isSizeSmall(size)\n }, className),\n onClick: function onClick(e) {\n e.stopPropagation();\n _onClick && _onClick(e);\n },\n onKeyDown: function onKeyDown(e) {\n // Prevent browser from navigating back.\n if (e.key === 'Backspace') {\n e.preventDefault();\n }\n\n _onKeyDown && _onKeyDown(e);\n },\n type: \"button\"\n }), /*#__PURE__*/React.createElement(\"span\", {\n \"aria-hidden\": \"true\",\n className: \"rbt-close-content\"\n }, \"\\xD7\"), /*#__PURE__*/React.createElement(\"span\", {\n className: \"sr-only visually-hidden\"\n }, label));\n};\n\nClearButton.propTypes = propTypes;\nClearButton.defaultProps = defaultProps;\nexport default ClearButton;","import PropTypes from 'prop-types';\nimport React from 'react';\nvar propTypes = {\n label: PropTypes.string\n};\nvar defaultProps = {\n label: 'Loading...'\n};\n\nvar Loader = function Loader(_ref) {\n var label = _ref.label;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"rbt-loader spinner-border spinner-border-sm\",\n role: \"status\"\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: \"sr-only visually-hidden\"\n }, label));\n};\n\nLoader.propTypes = propTypes;\nLoader.defaultProps = defaultProps;\nexport default Loader;","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import * as React from 'react';\n\n/**\n * Takes an argument and if it's an array, returns the first item in the array,\n * otherwise returns the argument. Used for Preact compatibility.\n */\nexport var unwrapArray = function unwrapArray(arg) {\n return Array.isArray(arg) ? arg[0] : arg;\n};\n/**\n * Takes a maybe-undefined function and arbitrary args and invokes the function\n * only if it is defined.\n */\n\nexport var safeInvoke = function safeInvoke(fn) {\n if (typeof fn === 'function') {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return fn.apply(void 0, args);\n }\n};\n/**\n * Sets a ref using either a ref callback or a ref object\n */\n\nexport var setRef = function setRef(ref, node) {\n // if its a function call it\n if (typeof ref === 'function') {\n return safeInvoke(ref, node);\n } // otherwise we should treat it as a ref object\n else if (ref != null) {\n ref.current = node;\n }\n};\n/**\n * Simple ponyfill for Object.fromEntries\n */\n\nexport var fromEntries = function fromEntries(entries) {\n return entries.reduce(function (acc, _ref) {\n var key = _ref[0],\n value = _ref[1];\n acc[key] = value;\n return acc;\n }, {});\n};\n/**\n * Small wrapper around `useLayoutEffect` to get rid of the warning on SSR envs\n */\n\nexport var useIsomorphicLayoutEffect = typeof window !== 'undefined' && window.document && window.document.createElement ? React.useLayoutEffect : React.useEffect;","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { createPopper as defaultCreatePopper } from '@popperjs/core';\nimport isEqual from 'react-fast-compare';\nimport { fromEntries, useIsomorphicLayoutEffect } from './utils';\nvar EMPTY_MODIFIERS = [];\nexport var usePopper = function usePopper(referenceElement, popperElement, options) {\n if (options === void 0) {\n options = {};\n }\n\n var prevOptions = React.useRef(null);\n var optionsWithDefaults = {\n onFirstUpdate: options.onFirstUpdate,\n placement: options.placement || 'bottom',\n strategy: options.strategy || 'absolute',\n modifiers: options.modifiers || EMPTY_MODIFIERS\n };\n\n var _React$useState = React.useState({\n styles: {\n popper: {\n position: optionsWithDefaults.strategy,\n left: '0',\n top: '0'\n },\n arrow: {\n position: 'absolute'\n }\n },\n attributes: {}\n }),\n state = _React$useState[0],\n setState = _React$useState[1];\n\n var updateStateModifier = React.useMemo(function () {\n return {\n name: 'updateState',\n enabled: true,\n phase: 'write',\n fn: function fn(_ref) {\n var state = _ref.state;\n var elements = Object.keys(state.elements);\n ReactDOM.flushSync(function () {\n setState({\n styles: fromEntries(elements.map(function (element) {\n return [element, state.styles[element] || {}];\n })),\n attributes: fromEntries(elements.map(function (element) {\n return [element, state.attributes[element]];\n }))\n });\n });\n },\n requires: ['computeStyles']\n };\n }, []);\n var popperOptions = React.useMemo(function () {\n var newOptions = {\n onFirstUpdate: optionsWithDefaults.onFirstUpdate,\n placement: optionsWithDefaults.placement,\n strategy: optionsWithDefaults.strategy,\n modifiers: [].concat(optionsWithDefaults.modifiers, [updateStateModifier, {\n name: 'applyStyles',\n enabled: false\n }])\n };\n\n if (isEqual(prevOptions.current, newOptions)) {\n return prevOptions.current || newOptions;\n } else {\n prevOptions.current = newOptions;\n return newOptions;\n }\n }, [optionsWithDefaults.onFirstUpdate, optionsWithDefaults.placement, optionsWithDefaults.strategy, optionsWithDefaults.modifiers, updateStateModifier]);\n var popperInstanceRef = React.useRef();\n useIsomorphicLayoutEffect(function () {\n if (popperInstanceRef.current) {\n popperInstanceRef.current.setOptions(popperOptions);\n }\n }, [popperOptions]);\n useIsomorphicLayoutEffect(function () {\n if (referenceElement == null || popperElement == null) {\n return;\n }\n\n var createPopper = options.createPopper || defaultCreatePopper;\n var popperInstance = createPopper(referenceElement, popperElement, popperOptions);\n popperInstanceRef.current = popperInstance;\n return function () {\n popperInstance.destroy();\n popperInstanceRef.current = null;\n };\n }, [referenceElement, popperElement, options.createPopper]);\n return {\n state: popperInstanceRef.current ? popperInstanceRef.current.state : null,\n styles: state.styles,\n attributes: state.attributes,\n update: popperInstanceRef.current ? popperInstanceRef.current.update : null,\n forceUpdate: popperInstanceRef.current ? popperInstanceRef.current.forceUpdate : null\n };\n};","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"referenceElement\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nimport PropTypes from 'prop-types';\nimport { useLayoutEffect, useState } from 'react';\nimport { usePopper } from 'react-popper';\nimport { noop } from '../../utils';\nvar alignValues = ['justify', 'left', 'right'];\n// `Element` is not defined during server-side rendering, so shim it here.\n\n/* istanbul ignore next */\nvar SafeElement = typeof Element === 'undefined' ? noop : Element;\nvar propTypes = {\n /**\n * Specify menu alignment. The default value is `justify`, which makes the\n * menu as wide as the input and truncates long values. Specifying `left`\n * or `right` will align the menu to that side and the width will be\n * determined by the length of menu item values.\n */\n align: PropTypes.oneOf(alignValues),\n children: PropTypes.func.isRequired,\n\n /**\n * Specify whether the menu should appear above the input.\n */\n dropup: PropTypes.bool,\n\n /**\n * Whether or not to automatically adjust the position of the menu when it\n * reaches the viewport boundaries.\n */\n flip: PropTypes.bool,\n isMenuShown: PropTypes.bool,\n positionFixed: PropTypes.bool,\n // @ts-ignore\n referenceElement: PropTypes.instanceOf(SafeElement)\n};\nvar defaultProps = {\n align: 'justify',\n dropup: false,\n flip: false,\n isMenuShown: false,\n positionFixed: false\n};\nvar setPopperWidth = {\n enabled: true,\n fn: function fn(data) {\n // eslint-disable-next-line no-param-reassign\n data.state.styles.popper.width = \"\".concat(data.state.rects.reference.width, \"px\");\n },\n name: 'setPopperWidth',\n phase: 'write'\n};\nexport function getModifiers(props) {\n var modifiers = [{\n enabled: !!props.flip,\n name: 'flip'\n }];\n\n if (props.align !== 'right' && props.align !== 'left') {\n modifiers.push(setPopperWidth);\n }\n\n return modifiers;\n}\nexport function getPlacement(props) {\n var x = props.align === 'right' ? 'end' : 'start';\n var y = props.dropup ? 'top' : 'bottom';\n return \"\".concat(y, \"-\").concat(x);\n}\n\nvar Overlay = function Overlay(_ref) {\n var referenceElement = _ref.referenceElement,\n props = _objectWithoutProperties(_ref, _excluded);\n\n var _useState = useState(null),\n _useState2 = _slicedToArray(_useState, 2),\n popperElement = _useState2[0],\n attachRef = _useState2[1];\n\n var _usePopper = usePopper(referenceElement, popperElement, {\n modifiers: getModifiers(props),\n placement: getPlacement(props),\n strategy: props.positionFixed ? 'fixed' : 'absolute'\n }),\n attributes = _usePopper.attributes,\n styles = _usePopper.styles,\n forceUpdate = _usePopper.forceUpdate;\n\n var refElementHeight = referenceElement === null || referenceElement === void 0 ? void 0 : referenceElement.offsetHeight; // Re-position the popper if the height of the reference element changes.\n // Exclude `forceUpdate` from dependencies since it changes with each render.\n\n useLayoutEffect(function () {\n forceUpdate && forceUpdate();\n }, [refElementHeight]); // eslint-disable-line\n\n if (!props.isMenuShown) {\n return null;\n }\n\n return props.children(_objectSpread(_objectSpread({}, attributes.popper), {}, {\n innerRef: attachRef,\n style: styles.popper\n }));\n};\n\nOverlay.propTypes = propTypes;\nOverlay.defaultProps = defaultProps;\nexport default Overlay;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"onBlur\", \"onClick\", \"onFocus\", \"onRemove\", \"option\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nimport PropTypes from 'prop-types';\nimport React, { useState } from 'react';\nimport useRootClose from \"react-overlays/useRootClose\";\nimport { getDisplayName, isFunction } from '../utils';\nimport { optionType } from '../propTypes';\nvar propTypes = {\n onBlur: PropTypes.func,\n onClick: PropTypes.func,\n onFocus: PropTypes.func,\n onRemove: PropTypes.func,\n option: optionType.isRequired\n};\nexport function useToken(_ref) {\n var onBlur = _ref.onBlur,\n onClick = _ref.onClick,\n onFocus = _ref.onFocus,\n onRemove = _ref.onRemove,\n option = _ref.option,\n props = _objectWithoutProperties(_ref, _excluded);\n\n var _useState = useState(false),\n _useState2 = _slicedToArray(_useState, 2),\n active = _useState2[0],\n setActive = _useState2[1];\n\n var _useState3 = useState(null),\n _useState4 = _slicedToArray(_useState3, 2),\n rootElement = _useState4[0],\n attachRef = _useState4[1];\n\n var handleBlur = function handleBlur(e) {\n setActive(false);\n onBlur && onBlur(e);\n };\n\n var handleClick = function handleClick(e) {\n setActive(true);\n onClick && onClick(e);\n };\n\n var handleFocus = function handleFocus(e) {\n setActive(true);\n onFocus && onFocus(e);\n };\n\n var handleRemove = function handleRemove() {\n onRemove && onRemove(option);\n };\n\n var handleKeyDown = function handleKeyDown(e) {\n if (e.key === 'Backspace' && active) {\n // Prevent browser from going back.\n e.preventDefault();\n handleRemove();\n }\n };\n\n useRootClose(rootElement, handleBlur, _objectSpread(_objectSpread({}, props), {}, {\n disabled: !active\n }));\n return {\n active: active,\n onBlur: handleBlur,\n onClick: handleClick,\n onFocus: handleFocus,\n onKeyDown: handleKeyDown,\n onRemove: isFunction(onRemove) ? handleRemove : undefined,\n ref: attachRef\n };\n}\n/* istanbul ignore next */\n\nexport function withToken(Component) {\n var displayName = \"withToken(\".concat(getDisplayName(Component), \")\");\n\n var WrappedToken = function WrappedToken(props) {\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, useToken(props)));\n };\n\n WrappedToken.displayName = displayName;\n WrappedToken.propTypes = propTypes;\n return WrappedToken;\n}","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"active\", \"children\", \"className\", \"onRemove\", \"tabIndex\"],\n _excluded2 = [\"children\", \"option\", \"readOnly\"],\n _excluded3 = [\"ref\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nimport cx from 'classnames';\nimport React, { forwardRef } from 'react';\nimport ClearButton from '../ClearButton';\nimport { useToken } from '../../behaviors/token';\nimport { isFunction } from '../../utils';\nvar InteractiveToken = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var active = _ref.active,\n children = _ref.children,\n className = _ref.className,\n onRemove = _ref.onRemove,\n tabIndex = _ref.tabIndex,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, props, {\n className: cx('rbt-token', 'rbt-token-removeable', {\n 'rbt-token-active': !!active\n }, className),\n ref: ref,\n tabIndex: tabIndex || 0\n }), children, /*#__PURE__*/React.createElement(ClearButton, {\n className: \"rbt-token-remove-button\",\n label: \"Remove\",\n onClick: onRemove,\n tabIndex: -1\n }));\n});\n\nvar StaticToken = function StaticToken(_ref2) {\n var children = _ref2.children,\n className = _ref2.className,\n disabled = _ref2.disabled,\n href = _ref2.href;\n var classnames = cx('rbt-token', {\n 'rbt-token-disabled': disabled\n }, className);\n\n if (href && !disabled) {\n return /*#__PURE__*/React.createElement(\"a\", {\n className: classnames,\n href: href\n }, children);\n }\n\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classnames\n }, children);\n};\n\n/**\n * Individual token component, generally displayed within the\n * `TypeaheadInputMulti` component, but can also be rendered on its own.\n */\nvar Token = function Token(_ref3) {\n var children = _ref3.children,\n option = _ref3.option,\n readOnly = _ref3.readOnly,\n props = _objectWithoutProperties(_ref3, _excluded2);\n\n var _useToken = useToken(_objectSpread(_objectSpread({}, props), {}, {\n option: option\n })),\n ref = _useToken.ref,\n tokenProps = _objectWithoutProperties(_useToken, _excluded3);\n\n var child = /*#__PURE__*/React.createElement(\"div\", {\n className: \"rbt-token-label\"\n }, children);\n return !props.disabled && !readOnly && isFunction(tokenProps.onRemove) ? /*#__PURE__*/React.createElement(InteractiveToken, _extends({}, props, tokenProps, {\n ref: ref\n }), child) : /*#__PURE__*/React.createElement(StaticToken, props, child);\n};\n\nexport default Token;","import React, { useEffect, useRef } from 'react';\nimport { useTypeaheadContext } from '../../core/Context'; // IE doesn't seem to get the composite computed value (eg: 'padding',\n// 'borderStyle', etc.), so generate these from the individual values.\n\nfunction interpolateStyle(styles, attr) {\n var subattr = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n\n // Title-case the sub-attribute.\n if (subattr) {\n /* eslint-disable-next-line no-param-reassign */\n subattr = subattr.replace(subattr[0], subattr[0].toUpperCase());\n }\n\n return ['Top', 'Right', 'Bottom', 'Left'].map(function (dir) {\n return styles[\"\".concat(attr).concat(dir).concat(subattr)];\n }).join(' ');\n}\n\nfunction copyStyles(inputNode, hintNode) {\n var inputStyle = window.getComputedStyle(inputNode);\n /* eslint-disable no-param-reassign */\n\n hintNode.style.borderStyle = interpolateStyle(inputStyle, 'border', 'style');\n hintNode.style.borderWidth = interpolateStyle(inputStyle, 'border', 'width');\n hintNode.style.fontSize = inputStyle.fontSize;\n hintNode.style.fontWeight = inputStyle.fontWeight;\n hintNode.style.height = inputStyle.height;\n hintNode.style.lineHeight = inputStyle.lineHeight;\n hintNode.style.margin = interpolateStyle(inputStyle, 'margin');\n hintNode.style.padding = interpolateStyle(inputStyle, 'padding');\n /* eslint-enable no-param-reassign */\n}\n\nexport var useHint = function useHint() {\n var _useTypeaheadContext = useTypeaheadContext(),\n hintText = _useTypeaheadContext.hintText,\n inputNode = _useTypeaheadContext.inputNode;\n\n var hintRef = useRef(null);\n useEffect(function () {\n if (inputNode && hintRef.current) {\n copyStyles(inputNode, hintRef.current);\n }\n });\n return {\n hintRef: hintRef,\n hintText: hintText\n };\n};\n\nvar Hint = function Hint(_ref) {\n var children = _ref.children,\n className = _ref.className;\n\n var _useHint = useHint(),\n hintRef = _useHint.hintRef,\n hintText = _useHint.hintText;\n\n return /*#__PURE__*/React.createElement(\"div\", {\n className: className,\n style: {\n display: 'flex',\n flex: 1,\n height: '100%',\n position: 'relative'\n }\n }, children, /*#__PURE__*/React.createElement(\"input\", {\n \"aria-hidden\": true,\n className: \"rbt-input-hint\",\n ref: hintRef,\n readOnly: true,\n style: {\n backgroundColor: 'transparent',\n borderColor: 'transparent',\n boxShadow: 'none',\n color: 'rgba(0, 0, 0, 0.54)',\n left: 0,\n pointerEvents: 'none',\n position: 'absolute',\n top: 0,\n width: '100%'\n },\n tabIndex: -1,\n value: hintText\n }));\n};\n\nexport default Hint;","import _extends from \"@babel/runtime/helpers/extends\";\nimport cx from 'classnames';\nimport React, { forwardRef } from 'react';\nvar Input = /*#__PURE__*/forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(\"input\", _extends({}, props, {\n className: cx('rbt-input-main', props.className),\n ref: ref\n }));\n});\nexport default Input;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nvar _excluded = [\"children\", \"className\", \"inputClassName\", \"inputRef\", \"referenceElementRef\", \"selected\"];\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\n/* eslint-disable jsx-a11y/no-static-element-interactions */\n\n/* eslint-disable jsx-a11y/click-events-have-key-events */\nimport cx from 'classnames';\nimport React from 'react';\nimport Hint from '../Hint';\nimport Input from '../Input';\nimport { isSelectable, propsWithBsClassName } from '../../utils';\n\nvar TypeaheadInputMulti = /*#__PURE__*/function (_React$Component) {\n _inherits(TypeaheadInputMulti, _React$Component);\n\n var _super = _createSuper(TypeaheadInputMulti);\n\n function TypeaheadInputMulti() {\n var _this;\n\n _classCallCheck(this, TypeaheadInputMulti);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"wrapperRef\", /*#__PURE__*/React.createRef());\n\n _defineProperty(_assertThisInitialized(_this), \"_input\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"getInputRef\", function (input) {\n _this._input = input;\n\n _this.props.inputRef(input);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_handleContainerClickOrFocus\", function (e) {\n // Don't focus the input if it's disabled.\n if (_this.props.disabled) {\n e.currentTarget.blur();\n return;\n }\n\n var inputNode = _this._input;\n\n if (!inputNode || // Ignore if the clicked element is a child of the container, ie: a token\n // or the input itself.\n e.currentTarget.contains(e.target) && e.currentTarget !== e.target) {\n return;\n }\n\n if (isSelectable(inputNode)) {\n // Move cursor to the end if the user clicks outside the actual input.\n inputNode.selectionStart = inputNode.value.length;\n }\n\n inputNode.focus();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_handleKeyDown\", function (e) {\n var _this$props = _this.props,\n onKeyDown = _this$props.onKeyDown,\n selected = _this$props.selected,\n value = _this$props.value;\n\n if (e.key === 'Backspace' && selected.length && !value) {\n // Prevent browser from going back.\n e.preventDefault(); // If the input is selected and there is no text, focus the last\n // token when the user hits backspace.\n\n if (_this.wrapperRef.current) {\n var children = _this.wrapperRef.current.children;\n var lastToken = children[children.length - 2];\n lastToken && lastToken.focus();\n }\n }\n\n onKeyDown && onKeyDown(e);\n });\n\n return _this;\n }\n\n _createClass(TypeaheadInputMulti, [{\n key: \"render\",\n value: function render() {\n var _propsWithBsClassName = propsWithBsClassName(this.props),\n children = _propsWithBsClassName.children,\n className = _propsWithBsClassName.className,\n inputClassName = _propsWithBsClassName.inputClassName,\n inputRef = _propsWithBsClassName.inputRef,\n referenceElementRef = _propsWithBsClassName.referenceElementRef,\n selected = _propsWithBsClassName.selected,\n props = _objectWithoutProperties(_propsWithBsClassName, _excluded);\n\n return /*#__PURE__*/React.createElement(\"div\", {\n className: cx('rbt-input-multi', {\n disabled: props.disabled\n }, className),\n onClick: this._handleContainerClickOrFocus,\n onFocus: this._handleContainerClickOrFocus,\n ref: referenceElementRef,\n tabIndex: -1\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"rbt-input-wrapper\",\n ref: this.wrapperRef\n }, children, /*#__PURE__*/React.createElement(Hint, null, /*#__PURE__*/React.createElement(Input, _extends({}, props, {\n className: inputClassName,\n onKeyDown: this._handleKeyDown,\n ref: this.getInputRef,\n style: {\n backgroundColor: 'transparent',\n border: 0,\n boxShadow: 'none',\n cursor: 'inherit',\n outline: 'none',\n padding: 0,\n width: '100%',\n zIndex: 1\n }\n })))));\n }\n }]);\n\n return TypeaheadInputMulti;\n}(React.Component);\n\nexport default TypeaheadInputMulti;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"inputRef\", \"referenceElementRef\"];\nimport React from 'react';\nimport Hint from '../Hint';\nimport Input from '../Input';\nimport { propsWithBsClassName } from '../../utils';\n\nvar TypeaheadInputSingle = function TypeaheadInputSingle(_ref) {\n var inputRef = _ref.inputRef,\n referenceElementRef = _ref.referenceElementRef,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(Hint, null, /*#__PURE__*/React.createElement(Input, _extends({}, propsWithBsClassName(props), {\n ref: function ref(node) {\n inputRef(node);\n referenceElementRef(node);\n }\n })));\n};\n\nexport default TypeaheadInputSingle;","import PropTypes from 'prop-types';\nimport React from 'react';\nimport { getMatchBounds } from '../../utils';\nvar propTypes = {\n children: PropTypes.string.isRequired,\n highlightClassName: PropTypes.string,\n search: PropTypes.string.isRequired\n};\nvar defaultProps = {\n highlightClassName: 'rbt-highlight-text'\n};\n\n/**\n * Stripped-down version of https://github.com/helior/react-highlighter\n *\n * Results are already filtered by the time the component is used internally so\n * we can safely ignore case and diacritical marks for the purposes of matching.\n */\nvar Highlighter = function Highlighter(_ref) {\n var children = _ref.children,\n highlightClassName = _ref.highlightClassName,\n search = _ref.search;\n\n if (!search || !children) {\n return /*#__PURE__*/React.createElement(React.Fragment, null, children);\n }\n\n var matchCount = 0;\n var remaining = children;\n var highlighterChildren = [];\n\n while (remaining) {\n var bounds = getMatchBounds(remaining, search); // No match anywhere in the remaining string, stop.\n\n if (!bounds) {\n highlighterChildren.push(remaining);\n break;\n } // Capture the string that leads up to a match.\n\n\n var nonMatch = remaining.slice(0, bounds.start);\n\n if (nonMatch) {\n highlighterChildren.push(nonMatch);\n } // Capture the matching string.\n\n\n var match = remaining.slice(bounds.start, bounds.end);\n highlighterChildren.push( /*#__PURE__*/React.createElement(\"mark\", {\n className: highlightClassName,\n key: matchCount\n }, match));\n matchCount += 1; // And if there's anything left over, continue the loop.\n\n remaining = remaining.slice(bounds.end);\n }\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, highlighterChildren);\n};\n\nHighlighter.propTypes = propTypes;\nHighlighter.defaultProps = defaultProps;\nexport default Highlighter;","// Compute what scrolling needs to be done on required scrolling boxes for target to be in view\n\n// The type names here are named after the spec to make it easier to find more information around what they mean:\n// To reduce churn and reduce things that need be maintained things from the official TS DOM library is used here\n// https://drafts.csswg.org/cssom-view/\n\n// For a definition on what is \"block flow direction\" exactly, check this: https://drafts.csswg.org/css-writing-modes-4/#block-flow-direction\n\n// add support for visualViewport object currently implemented in chrome\ninterface visualViewport {\n height: number\n width: number\n}\n\ntype ScrollLogicalPosition = 'start' | 'center' | 'end' | 'nearest'\n// This new option is tracked in this PR, which is the most likely candidate at the time: https://github.com/w3c/csswg-drafts/pull/1805\ntype ScrollMode = 'always' | 'if-needed'\n// New option that skips auto-scrolling all nodes with overflow: hidden set\n// See FF implementation: https://hg.mozilla.org/integration/fx-team/rev/c48c3ec05012#l7.18\ntype SkipOverflowHiddenElements = boolean\n\ninterface Options {\n block?: ScrollLogicalPosition\n inline?: ScrollLogicalPosition\n scrollMode?: ScrollMode\n boundary?: CustomScrollBoundary\n skipOverflowHiddenElements?: SkipOverflowHiddenElements\n}\n\n// Custom behavior, not in any spec\ntype CustomScrollBoundaryCallback = (parent: Element) => boolean\ntype CustomScrollBoundary = Element | CustomScrollBoundaryCallback | null\ninterface CustomScrollAction {\n el: Element\n top: number\n left: number\n}\n\n// @TODO better shadowdom test, 11 = document fragment\nfunction isElement(el: any): el is Element {\n return typeof el === 'object' && el != null && el.nodeType === 1\n}\n\nfunction canOverflow(\n overflow: string | null,\n skipOverflowHiddenElements?: boolean\n) {\n if (skipOverflowHiddenElements && overflow === 'hidden') {\n return false\n }\n\n return overflow !== 'visible' && overflow !== 'clip'\n}\n\nfunction getFrameElement(el: Element) {\n if (!el.ownerDocument || !el.ownerDocument.defaultView) {\n return null\n }\n\n try {\n return el.ownerDocument.defaultView.frameElement\n } catch (e) {\n return null\n }\n}\n\nfunction isHiddenByFrame(el: Element): boolean {\n const frame = getFrameElement(el)\n if (!frame) {\n return false\n }\n\n return (\n frame.clientHeight < el.scrollHeight || frame.clientWidth < el.scrollWidth\n )\n}\n\nfunction isScrollable(el: Element, skipOverflowHiddenElements?: boolean) {\n if (el.clientHeight < el.scrollHeight || el.clientWidth < el.scrollWidth) {\n const style = getComputedStyle(el, null)\n return (\n canOverflow(style.overflowY, skipOverflowHiddenElements) ||\n canOverflow(style.overflowX, skipOverflowHiddenElements) ||\n isHiddenByFrame(el)\n )\n }\n\n return false\n}\n/**\n * Find out which edge to align against when logical scroll position is \"nearest\"\n * Interesting fact: \"nearest\" works similarily to \"if-needed\", if the element is fully visible it will not scroll it\n *\n * Legends:\n * ┌────────┠┠┠┠┠┓\n * │ target │ frame\n * └────────┘ â”— â” â” â” â”›\n */\nfunction alignNearest(\n scrollingEdgeStart: number,\n scrollingEdgeEnd: number,\n scrollingSize: number,\n scrollingBorderStart: number,\n scrollingBorderEnd: number,\n elementEdgeStart: number,\n elementEdgeEnd: number,\n elementSize: number\n) {\n /**\n * If element edge A and element edge B are both outside scrolling box edge A and scrolling box edge B\n *\n * ┌──â”\n * â”â”│â”â”│â”┓\n * │ │\n * ┃ │ │ ┃ do nothing\n * │ │\n * â”—â”│â”â”│â”â”›\n * └──┘\n *\n * If element edge C and element edge D are both outside scrolling box edge C and scrolling box edge D\n *\n * ┠┠┠┠┠┓\n * ┌───────────â”\n * │┃ ┃│ do nothing\n * └───────────┘\n * â”— â” â” â” â” â”›\n */\n if (\n (elementEdgeStart < scrollingEdgeStart &&\n elementEdgeEnd > scrollingEdgeEnd) ||\n (elementEdgeStart > scrollingEdgeStart && elementEdgeEnd < scrollingEdgeEnd)\n ) {\n return 0\n }\n\n /**\n * If element edge A is outside scrolling box edge A and element height is less than scrolling box height\n *\n * ┌──â”\n * â”â”│â”â”│â”┓ â”â”┌â”â”â”â”┓\n * └──┘ │ │\n * from ┃ ┃ to ┃ └──┘ ┃\n *\n * â”—â” â”â” â”â”› â”—â” â”â” â”â”›\n *\n * If element edge B is outside scrolling box edge B and element height is greater than scrolling box height\n *\n * â”â” â”â” â”┓ â”â”┌â”â”â”â”┓\n * │ │\n * from ┃ ┌──┠┃ to ┃ │ │ ┃\n * │ │ │ │\n * â”—â”│â”â”│â”â”› â”—â”│â”â”│â”â”›\n * │ │ └──┘\n * │ │\n * └──┘\n *\n * If element edge C is outside scrolling box edge C and element width is less than scrolling box width\n *\n * from to\n * ┠┠┠┠┠┓ ┠┠┠┠┠┓\n * ┌───┠┌───â”\n * │ ┃ │ ┃ ┃ │ ┃\n * └───┘ └───┘\n * â”— â” â” â” â” â”› â”— â” â” â” â” â”›\n *\n * If element edge D is outside scrolling box edge D and element width is greater than scrolling box width\n *\n * from to\n * ┠┠┠┠┠┓ ┠┠┠┠┠┓\n * ┌───────────┠┌───────────â”\n * ┃ │ ┃ │ ┃ ┃ │\n * └───────────┘ └───────────┘\n * â”— â” â” â” â” â”› â”— â” â” â” â” â”›\n */\n if (\n (elementEdgeStart <= scrollingEdgeStart && elementSize <= scrollingSize) ||\n (elementEdgeEnd >= scrollingEdgeEnd && elementSize >= scrollingSize)\n ) {\n return elementEdgeStart - scrollingEdgeStart - scrollingBorderStart\n }\n\n /**\n * If element edge B is outside scrolling box edge B and element height is less than scrolling box height\n *\n * â”â” â”â” â”┓ â”â” â”â” â”┓\n *\n * from ┃ ┃ to ┃ ┌──┠┃\n * ┌──┠│ │\n * â”—â”│â”â”│â”â”› â”—â”â””â”â”┘â”â”›\n * └──┘\n *\n * If element edge A is outside scrolling box edge A and element height is greater than scrolling box height\n *\n * ┌──â”\n * │ │\n * │ │ ┌──â”\n * â”â”│â”â”│â”┓ â”â”│â”â”│â”┓\n * │ │ │ │\n * from ┃ └──┘ ┃ to ┃ │ │ ┃\n * │ │\n * â”—â” â”â” â”â”› â”—â”â””â”â”┘â”â”›\n *\n * If element edge C is outside scrolling box edge C and element width is greater than scrolling box width\n *\n * from to\n * ┠┠┠┠┠┓ ┠┠┠┠┠┓\n * ┌───────────┠┌───────────â”\n * │ ┃ │ ┃ │ ┃ ┃\n * └───────────┘ └───────────┘\n * â”— â” â” â” â” â”› â”— â” â” â” â” â”›\n *\n * If element edge D is outside scrolling box edge D and element width is less than scrolling box width\n *\n * from to\n * ┠┠┠┠┠┓ ┠┠┠┠┠┓\n * ┌───┠┌───â”\n * ┃ │ ┃ │ ┃ │ ┃\n * └───┘ └───┘\n * â”— â” â” â” â” â”› â”— â” â” â” â” â”›\n *\n */\n if (\n (elementEdgeEnd > scrollingEdgeEnd && elementSize < scrollingSize) ||\n (elementEdgeStart < scrollingEdgeStart && elementSize > scrollingSize)\n ) {\n return elementEdgeEnd - scrollingEdgeEnd + scrollingBorderEnd\n }\n\n return 0\n}\n\nfunction getParentElement(element: Node): Element | null {\n const parent = element.parentElement\n if (parent == null) {\n return (element.getRootNode() as ShadowRoot).host || null\n }\n return parent\n}\n\nexport default (target: Element, options: Options): CustomScrollAction[] => {\n //TODO: remove this hack when microbundle will support typescript >= 4.0\n const windowWithViewport = window as unknown as Window & {\n visualViewport: visualViewport\n }\n\n const { scrollMode, block, inline, boundary, skipOverflowHiddenElements } =\n options\n // Allow using a callback to check the boundary\n // The default behavior is to check if the current target matches the boundary element or not\n // If undefined it'll check that target is never undefined (can happen as we recurse up the tree)\n const checkBoundary =\n typeof boundary === 'function' ? boundary : (node: any) => node !== boundary\n\n if (!isElement(target)) {\n throw new TypeError('Invalid target')\n }\n\n // Used to handle the top most element that can be scrolled\n const scrollingElement = document.scrollingElement || document.documentElement\n\n // Collect all the scrolling boxes, as defined in the spec: https://drafts.csswg.org/cssom-view/#scrolling-box\n const frames: Element[] = []\n let cursor: Element | null = target\n while (isElement(cursor) && checkBoundary(cursor)) {\n // Move cursor to parent\n cursor = getParentElement(cursor)\n\n // Stop when we reach the viewport\n if (cursor === scrollingElement) {\n frames.push(cursor)\n break\n }\n\n // Skip document.body if it's not the scrollingElement and documentElement isn't independently scrollable\n if (\n cursor != null &&\n cursor === document.body &&\n isScrollable(cursor) &&\n !isScrollable(document.documentElement)\n ) {\n continue\n }\n\n // Now we check if the element is scrollable, this code only runs if the loop haven't already hit the viewport or a custom boundary\n if (cursor != null && isScrollable(cursor, skipOverflowHiddenElements)) {\n frames.push(cursor)\n }\n }\n\n // Support pinch-zooming properly, making sure elements scroll into the visual viewport\n // Browsers that don't support visualViewport will report the layout viewport dimensions on document.documentElement.clientWidth/Height\n // and viewport dimensions on window.innerWidth/Height\n // https://www.quirksmode.org/mobile/viewports2.html\n // https://bokand.github.io/viewport/index.html\n const viewportWidth = windowWithViewport.visualViewport\n ? windowWithViewport.visualViewport.width\n : innerWidth\n const viewportHeight = windowWithViewport.visualViewport\n ? windowWithViewport.visualViewport.height\n : innerHeight\n\n // Newer browsers supports scroll[X|Y], page[X|Y]Offset is\n const viewportX = window.scrollX || pageXOffset\n const viewportY = window.scrollY || pageYOffset\n\n const {\n height: targetHeight,\n width: targetWidth,\n top: targetTop,\n right: targetRight,\n bottom: targetBottom,\n left: targetLeft,\n } = target.getBoundingClientRect()\n\n // These values mutate as we loop through and generate scroll coordinates\n let targetBlock: number =\n block === 'start' || block === 'nearest'\n ? targetTop\n : block === 'end'\n ? targetBottom\n : targetTop + targetHeight / 2 // block === 'center\n let targetInline: number =\n inline === 'center'\n ? targetLeft + targetWidth / 2\n : inline === 'end'\n ? targetRight\n : targetLeft // inline === 'start || inline === 'nearest\n\n // Collect new scroll positions\n const computations: CustomScrollAction[] = []\n // In chrome there's no longer a difference between caching the `frames.length` to a var or not, so we don't in this case (size > speed anyways)\n for (let index = 0; index < frames.length; index++) {\n const frame = frames[index]\n\n // @TODO add a shouldScroll hook here that allows userland code to take control\n\n const { height, width, top, right, bottom, left } =\n frame.getBoundingClientRect()\n\n // If the element is already visible we can end it here\n // @TODO targetBlock and targetInline should be taken into account to be compliant with https://github.com/w3c/csswg-drafts/pull/1805/files#diff-3c17f0e43c20f8ecf89419d49e7ef5e0R1333\n if (\n scrollMode === 'if-needed' &&\n targetTop >= 0 &&\n targetLeft >= 0 &&\n targetBottom <= viewportHeight &&\n targetRight <= viewportWidth &&\n targetTop >= top &&\n targetBottom <= bottom &&\n targetLeft >= left &&\n targetRight <= right\n ) {\n // Break the loop and return the computations for things that are not fully visible\n return computations\n }\n\n const frameStyle = getComputedStyle(frame)\n const borderLeft = parseInt(frameStyle.borderLeftWidth as string, 10)\n const borderTop = parseInt(frameStyle.borderTopWidth as string, 10)\n const borderRight = parseInt(frameStyle.borderRightWidth as string, 10)\n const borderBottom = parseInt(frameStyle.borderBottomWidth as string, 10)\n\n let blockScroll: number = 0\n let inlineScroll: number = 0\n\n // The property existance checks for offfset[Width|Height] is because only HTMLElement objects have them, but any Element might pass by here\n // @TODO find out if the \"as HTMLElement\" overrides can be dropped\n const scrollbarWidth =\n 'offsetWidth' in frame\n ? (frame as HTMLElement).offsetWidth -\n (frame as HTMLElement).clientWidth -\n borderLeft -\n borderRight\n : 0\n const scrollbarHeight =\n 'offsetHeight' in frame\n ? (frame as HTMLElement).offsetHeight -\n (frame as HTMLElement).clientHeight -\n borderTop -\n borderBottom\n : 0\n\n const scaleX =\n 'offsetWidth' in frame\n ? (frame as HTMLElement).offsetWidth === 0\n ? 0\n : width / (frame as HTMLElement).offsetWidth\n : 0\n const scaleY =\n 'offsetHeight' in frame\n ? (frame as HTMLElement).offsetHeight === 0\n ? 0\n : height / (frame as HTMLElement).offsetHeight\n : 0\n\n if (scrollingElement === frame) {\n // Handle viewport logic (document.documentElement or document.body)\n\n if (block === 'start') {\n blockScroll = targetBlock\n } else if (block === 'end') {\n blockScroll = targetBlock - viewportHeight\n } else if (block === 'nearest') {\n blockScroll = alignNearest(\n viewportY,\n viewportY + viewportHeight,\n viewportHeight,\n borderTop,\n borderBottom,\n viewportY + targetBlock,\n viewportY + targetBlock + targetHeight,\n targetHeight\n )\n } else {\n // block === 'center' is the default\n blockScroll = targetBlock - viewportHeight / 2\n }\n\n if (inline === 'start') {\n inlineScroll = targetInline\n } else if (inline === 'center') {\n inlineScroll = targetInline - viewportWidth / 2\n } else if (inline === 'end') {\n inlineScroll = targetInline - viewportWidth\n } else {\n // inline === 'nearest' is the default\n inlineScroll = alignNearest(\n viewportX,\n viewportX + viewportWidth,\n viewportWidth,\n borderLeft,\n borderRight,\n viewportX + targetInline,\n viewportX + targetInline + targetWidth,\n targetWidth\n )\n }\n\n // Apply scroll position offsets and ensure they are within bounds\n // @TODO add more test cases to cover this 100%\n blockScroll = Math.max(0, blockScroll + viewportY)\n inlineScroll = Math.max(0, inlineScroll + viewportX)\n } else {\n // Handle each scrolling frame that might exist between the target and the viewport\n\n if (block === 'start') {\n blockScroll = targetBlock - top - borderTop\n } else if (block === 'end') {\n blockScroll = targetBlock - bottom + borderBottom + scrollbarHeight\n } else if (block === 'nearest') {\n blockScroll = alignNearest(\n top,\n bottom,\n height,\n borderTop,\n borderBottom + scrollbarHeight,\n targetBlock,\n targetBlock + targetHeight,\n targetHeight\n )\n } else {\n // block === 'center' is the default\n blockScroll = targetBlock - (top + height / 2) + scrollbarHeight / 2\n }\n\n if (inline === 'start') {\n inlineScroll = targetInline - left - borderLeft\n } else if (inline === 'center') {\n inlineScroll = targetInline - (left + width / 2) + scrollbarWidth / 2\n } else if (inline === 'end') {\n inlineScroll = targetInline - right + borderRight + scrollbarWidth\n } else {\n // inline === 'nearest' is the default\n inlineScroll = alignNearest(\n left,\n right,\n width,\n borderLeft,\n borderRight + scrollbarWidth,\n targetInline,\n targetInline + targetWidth,\n targetWidth\n )\n }\n\n const { scrollLeft, scrollTop } = frame\n // Ensure scroll coordinates are not out of bounds while applying scroll offsets\n blockScroll = Math.max(\n 0,\n Math.min(\n scrollTop + blockScroll / scaleY,\n frame.scrollHeight - height / scaleY + scrollbarHeight\n )\n )\n inlineScroll = Math.max(\n 0,\n Math.min(\n scrollLeft + inlineScroll / scaleX,\n frame.scrollWidth - width / scaleX + scrollbarWidth\n )\n )\n\n // Cache the offset so that parent frames can scroll this into view correctly\n targetBlock += scrollTop - blockScroll\n targetInline += scrollLeft - inlineScroll\n }\n\n computations.push({ el: frame, top: blockScroll, left: inlineScroll })\n }\n\n return computations\n}\n","import compute from 'compute-scroll-into-view';\nfunction isOptionsObject(options) {\n return options === Object(options) && Object.keys(options).length !== 0;\n}\nfunction defaultBehavior(actions, behavior) {\n if (behavior === void 0) {\n behavior = 'auto';\n }\n var canSmoothScroll = ('scrollBehavior' in document.body.style);\n actions.forEach(function (_ref) {\n var el = _ref.el,\n top = _ref.top,\n left = _ref.left;\n if (el.scroll && canSmoothScroll) {\n el.scroll({\n top: top,\n left: left,\n behavior: behavior\n });\n } else {\n el.scrollTop = top;\n el.scrollLeft = left;\n }\n });\n}\nfunction getOptions(options) {\n if (options === false) {\n return {\n block: 'end',\n inline: 'nearest'\n };\n }\n if (isOptionsObject(options)) {\n return options;\n }\n return {\n block: 'start',\n inline: 'nearest'\n };\n}\nfunction scrollIntoView(target, options) {\n var isTargetAttached = target.isConnected || target.ownerDocument.documentElement.contains(target);\n if (isOptionsObject(options) && typeof options.behavior === 'function') {\n return options.behavior(isTargetAttached ? compute(target, options) : []);\n }\n if (!isTargetAttached) {\n return;\n }\n var computeOptions = getOptions(options);\n return defaultBehavior(compute(target, computeOptions), computeOptions.behavior);\n}\nexport default scrollIntoView;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"label\", \"onClick\", \"option\", \"position\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nimport PropTypes from 'prop-types';\nimport React, { useCallback, useEffect, useRef } from 'react';\nimport scrollIntoView from 'scroll-into-view-if-needed';\nimport { useTypeaheadContext } from '../core/Context';\nimport { getDisplayName, getMenuItemId, preventInputBlur } from '../utils';\nimport { optionType } from '../propTypes';\nvar propTypes = {\n option: optionType.isRequired,\n position: PropTypes.number\n};\nexport function useItem(_ref) {\n var label = _ref.label,\n onClick = _ref.onClick,\n option = _ref.option,\n position = _ref.position,\n props = _objectWithoutProperties(_ref, _excluded);\n\n var _useTypeaheadContext = useTypeaheadContext(),\n activeIndex = _useTypeaheadContext.activeIndex,\n id = _useTypeaheadContext.id,\n isOnlyResult = _useTypeaheadContext.isOnlyResult,\n onActiveItemChange = _useTypeaheadContext.onActiveItemChange,\n onInitialItemChange = _useTypeaheadContext.onInitialItemChange,\n onMenuItemClick = _useTypeaheadContext.onMenuItemClick,\n setItem = _useTypeaheadContext.setItem;\n\n var itemRef = useRef(null);\n useEffect(function () {\n if (position === 0) {\n onInitialItemChange(option);\n }\n });\n useEffect(function () {\n if (position === activeIndex) {\n onActiveItemChange(option); // Automatically scroll the menu as the user keys through it.\n\n var node = itemRef.current;\n node && scrollIntoView(node, {\n block: 'nearest',\n boundary: node.parentNode,\n inline: 'nearest',\n scrollMode: 'if-needed'\n });\n }\n });\n var handleClick = useCallback(function (e) {\n onMenuItemClick(option, e);\n onClick && onClick(e);\n }, [onClick, onMenuItemClick, option]);\n var active = isOnlyResult || activeIndex === position; // Update the item's position in the item stack.\n\n setItem(option, position);\n return _objectSpread(_objectSpread({}, props), {}, {\n active: active,\n 'aria-label': label,\n 'aria-selected': active,\n id: getMenuItemId(id, position),\n onClick: handleClick,\n onMouseDown: preventInputBlur,\n ref: itemRef,\n role: 'option'\n });\n}\n/* istanbul ignore next */\n\nexport function withItem(Component) {\n var WrappedMenuItem = function WrappedMenuItem(props) {\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, useItem(props)));\n };\n\n WrappedMenuItem.displayName = \"withItem(\".concat(getDisplayName(Component), \")\");\n WrappedMenuItem.propTypes = propTypes;\n return WrappedMenuItem;\n}","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"active\", \"children\", \"className\", \"disabled\", \"onClick\"];\nimport cx from 'classnames';\nimport React, { forwardRef } from 'react';\nimport { useItem } from '../../behaviors/item';\nexport var BaseMenuItem = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var active = _ref.active,\n children = _ref.children,\n className = _ref.className,\n disabled = _ref.disabled,\n _onClick = _ref.onClick,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"a\", _extends({}, props, {\n className: cx('dropdown-item', {\n active: active,\n disabled: disabled\n }, className),\n href: props.href || '#',\n onClick: function onClick(e) {\n e.preventDefault();\n !disabled && _onClick && _onClick(e);\n },\n ref: ref\n }), children);\n});\nexport default function MenuItem(props) {\n return /*#__PURE__*/React.createElement(BaseMenuItem, useItem(props));\n}","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nvar _excluded = [\"emptyLabel\", \"innerRef\", \"maxHeight\", \"style\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nimport cx from 'classnames';\nimport PropTypes from 'prop-types';\nimport React, { Children } from 'react';\nimport { BaseMenuItem } from '../MenuItem';\nimport { preventInputBlur } from '../../utils';\nimport { checkPropType, isRequiredForA11y } from '../../propTypes';\n\nvar MenuDivider = function MenuDivider() {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"dropdown-divider\",\n role: \"separator\"\n });\n};\n\nvar MenuHeader = function MenuHeader(props) {\n return (\n /*#__PURE__*/\n // eslint-disable-next-line jsx-a11y/role-has-required-aria-props\n React.createElement(\"div\", _extends({}, props, {\n className: \"dropdown-header\",\n role: \"heading\"\n }))\n );\n};\n\nvar propTypes = {\n 'aria-label': PropTypes.string,\n\n /**\n * Message to display in the menu if there are no valid results.\n */\n emptyLabel: PropTypes.node,\n\n /**\n * Needed for accessibility.\n */\n id: checkPropType(PropTypes.oneOfType([PropTypes.number, PropTypes.string]), isRequiredForA11y),\n\n /**\n * Maximum height of the dropdown menu.\n */\n maxHeight: PropTypes.string\n};\nvar defaultProps = {\n 'aria-label': 'menu-options'\n};\n\n/**\n * Menu component that handles empty state when passed a set of results.\n */\nvar Menu = function Menu(_ref) {\n var _ref$emptyLabel = _ref.emptyLabel,\n emptyLabel = _ref$emptyLabel === void 0 ? 'No matches found.' : _ref$emptyLabel,\n innerRef = _ref.innerRef,\n _ref$maxHeight = _ref.maxHeight,\n maxHeight = _ref$maxHeight === void 0 ? '300px' : _ref$maxHeight,\n style = _ref.style,\n props = _objectWithoutProperties(_ref, _excluded);\n\n var children = Children.count(props.children) === 0 ? /*#__PURE__*/React.createElement(BaseMenuItem, {\n disabled: true,\n role: \"option\"\n }, emptyLabel) : props.children;\n return (\n /*#__PURE__*/\n\n /* eslint-disable jsx-a11y/interactive-supports-focus */\n React.createElement(\"div\", _extends({}, props, {\n className: cx('rbt-menu', 'dropdown-menu', 'show', props.className),\n onMouseDown: // Prevent input from blurring when clicking on the menu scrollbar.\n preventInputBlur,\n ref: innerRef,\n role: \"listbox\",\n style: _objectSpread(_objectSpread({}, style), {}, {\n display: 'block',\n maxHeight: maxHeight,\n overflow: 'auto'\n })\n }), children)\n /* eslint-enable jsx-a11y/interactive-supports-focus */\n\n );\n};\n\nMenu.propTypes = propTypes;\nMenu.defaultProps = defaultProps;\nMenu.Divider = MenuDivider;\nMenu.Header = MenuHeader;\nexport default Menu;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"labelKey\", \"newSelectionPrefix\", \"options\", \"paginationText\", \"renderMenuItemChildren\", \"text\"];\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport Highlighter from '../Highlighter';\nimport Menu from '../Menu';\nimport MenuItem from '../MenuItem';\nimport { getOptionLabel, getOptionProperty, isString } from '../../utils';\nvar propTypes = {\n /**\n * Provides the ability to specify a prefix before the user-entered text to\n * indicate that the selection will be new. No-op unless `allowNew={true}`.\n */\n newSelectionPrefix: PropTypes.node,\n\n /**\n * Prompt displayed when large data sets are paginated.\n */\n paginationText: PropTypes.node,\n\n /**\n * Provides a hook for customized rendering of menu item contents.\n */\n renderMenuItemChildren: PropTypes.func\n};\nvar defaultProps = {\n newSelectionPrefix: 'New selection: ',\n paginationText: 'Display additional results...',\n renderMenuItemChildren: function renderMenuItemChildren(option, props) {\n return /*#__PURE__*/React.createElement(Highlighter, {\n search: props.text\n }, getOptionLabel(option, props.labelKey));\n }\n};\n\nvar TypeaheadMenu = function TypeaheadMenu(props) {\n var labelKey = props.labelKey,\n newSelectionPrefix = props.newSelectionPrefix,\n options = props.options,\n paginationText = props.paginationText,\n renderMenuItemChildren = props.renderMenuItemChildren,\n text = props.text,\n menuProps = _objectWithoutProperties(props, _excluded);\n\n var renderMenuItem = function renderMenuItem(option, position) {\n var label = getOptionLabel(option, labelKey);\n var menuItemProps = {\n disabled: !!getOptionProperty(option, 'disabled'),\n label: label,\n option: option,\n position: position\n };\n\n if (getOptionProperty(option, 'customOption')) {\n return /*#__PURE__*/React.createElement(MenuItem, _extends({}, menuItemProps, {\n className: \"rbt-menu-custom-option\",\n key: position,\n label: label\n }), newSelectionPrefix, /*#__PURE__*/React.createElement(Highlighter, {\n search: text\n }, label));\n }\n\n if (getOptionProperty(option, 'paginationOption')) {\n return /*#__PURE__*/React.createElement(React.Fragment, {\n key: \"pagination-option-divider\"\n }, /*#__PURE__*/React.createElement(Menu.Divider, null), /*#__PURE__*/React.createElement(MenuItem, _extends({}, menuItemProps, {\n className: \"rbt-menu-pagination-option\",\n label: // TODO: Fix how (aria-)labels are passed to `MenuItem`.\n // `paginationText` can be a ReactNode.\n isString(paginationText) ? paginationText : ''\n }), paginationText));\n }\n\n return /*#__PURE__*/React.createElement(MenuItem, _extends({}, menuItemProps, {\n key: position\n }), renderMenuItemChildren(option, props, position));\n };\n\n return /*#__PURE__*/React.createElement(Menu, _extends({}, menuProps, {\n key: // Force a re-render if the text changes to ensure that menu\n // positioning updates correctly.\n text\n }), options.map(renderMenuItem));\n};\n\nTypeaheadMenu.propTypes = propTypes;\nTypeaheadMenu.defaultProps = defaultProps;\nexport default TypeaheadMenu;","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nvar _excluded = [\"children\", \"onRootClose\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nimport cx from 'classnames';\nimport PropTypes from 'prop-types';\nimport React, { forwardRef, useState } from 'react';\nimport useRootClose from \"react-overlays/useRootClose\";\nimport Typeahead from '../../core/Typeahead';\nimport ClearButton from '../ClearButton';\nimport Loader from '../Loader';\nimport Overlay from '../Overlay';\nimport Token from '../Token/Token';\nimport TypeaheadInputMulti from '../TypeaheadInputMulti';\nimport TypeaheadInputSingle from '../TypeaheadInputSingle';\nimport TypeaheadMenu from '../TypeaheadMenu';\nimport { getOptionLabel, isFunction, isSizeLarge, pick, preventInputBlur } from '../../utils';\nimport { checkPropType, inputPropsType, sizeType } from '../../propTypes';\nvar propTypes = {\n /**\n * Displays a button to clear the input when there are selections.\n */\n clearButton: PropTypes.bool,\n\n /**\n * Props to be applied directly to the input. `onBlur`, `onChange`,\n * `onFocus`, and `onKeyDown` are ignored.\n */\n inputProps: checkPropType(PropTypes.object, inputPropsType),\n\n /**\n * Bootstrap 4 only. Adds the `is-invalid` classname to the `form-control`.\n */\n isInvalid: PropTypes.bool,\n\n /**\n * Indicate whether an asynchronous data fetch is happening.\n */\n isLoading: PropTypes.bool,\n\n /**\n * Bootstrap 4 only. Adds the `is-valid` classname to the `form-control`.\n */\n isValid: PropTypes.bool,\n\n /**\n * Callback for custom input rendering.\n */\n renderInput: PropTypes.func,\n\n /**\n * Callback for custom menu rendering.\n */\n renderMenu: PropTypes.func,\n\n /**\n * Callback for custom menu rendering.\n */\n renderToken: PropTypes.func,\n\n /**\n * Specifies the size of the input.\n */\n size: sizeType\n};\nvar defaultProps = {\n isLoading: false\n};\n\nvar defaultRenderMenu = function defaultRenderMenu(results, menuProps, props) {\n return /*#__PURE__*/React.createElement(TypeaheadMenu, _extends({}, menuProps, {\n labelKey: props.labelKey,\n options: results,\n text: props.text\n }));\n};\n\nvar defaultRenderToken = function defaultRenderToken(option, props, idx) {\n return /*#__PURE__*/React.createElement(Token, {\n disabled: props.disabled,\n key: idx,\n onRemove: props.onRemove,\n option: option,\n tabIndex: props.tabIndex\n }, getOptionLabel(option, props.labelKey));\n};\n\nvar overlayPropKeys = ['align', 'dropup', 'flip', 'positionFixed'];\n\nfunction getOverlayProps(props) {\n return pick(props, overlayPropKeys);\n}\n\nvar RootClose = function RootClose(_ref) {\n var children = _ref.children,\n onRootClose = _ref.onRootClose,\n props = _objectWithoutProperties(_ref, _excluded);\n\n var _useState = useState(null),\n _useState2 = _slicedToArray(_useState, 2),\n rootElement = _useState2[0],\n attachRef = _useState2[1];\n\n useRootClose(rootElement, onRootClose, props);\n return children(attachRef);\n};\n\nvar TypeaheadComponent = /*#__PURE__*/function (_React$Component) {\n _inherits(TypeaheadComponent, _React$Component);\n\n var _super = _createSuper(TypeaheadComponent);\n\n function TypeaheadComponent() {\n var _this;\n\n _classCallCheck(this, TypeaheadComponent);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"_referenceElement\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"referenceElementRef\", function (referenceElement) {\n _this._referenceElement = referenceElement;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_renderInput\", function (inputProps, props) {\n var _this$props = _this.props,\n isInvalid = _this$props.isInvalid,\n isValid = _this$props.isValid,\n multiple = _this$props.multiple,\n renderInput = _this$props.renderInput,\n renderToken = _this$props.renderToken,\n size = _this$props.size;\n\n if (isFunction(renderInput)) {\n return renderInput(inputProps, props);\n }\n\n var commonProps = _objectSpread(_objectSpread({}, inputProps), {}, {\n isInvalid: isInvalid,\n isValid: isValid,\n size: size\n });\n\n if (!multiple) {\n return /*#__PURE__*/React.createElement(TypeaheadInputSingle, commonProps);\n }\n\n var labelKey = props.labelKey,\n onRemove = props.onRemove,\n selected = props.selected;\n return /*#__PURE__*/React.createElement(TypeaheadInputMulti, _extends({}, commonProps, {\n placeholder: selected.length ? '' : inputProps.placeholder,\n selected: selected\n }), selected.map(function (option, idx) {\n return (renderToken || defaultRenderToken)(option, _objectSpread(_objectSpread({}, commonProps), {}, {\n labelKey: labelKey,\n onRemove: onRemove\n }), idx);\n }));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_renderMenu\", function (results, menuProps, props) {\n var _this$props2 = _this.props,\n emptyLabel = _this$props2.emptyLabel,\n id = _this$props2.id,\n maxHeight = _this$props2.maxHeight,\n newSelectionPrefix = _this$props2.newSelectionPrefix,\n paginationText = _this$props2.paginationText,\n renderMenu = _this$props2.renderMenu,\n renderMenuItemChildren = _this$props2.renderMenuItemChildren;\n return (renderMenu || defaultRenderMenu)(results, _objectSpread(_objectSpread({}, menuProps), {}, {\n emptyLabel: emptyLabel,\n id: id,\n maxHeight: maxHeight,\n newSelectionPrefix: newSelectionPrefix,\n paginationText: paginationText,\n renderMenuItemChildren: renderMenuItemChildren\n }), props);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_renderAux\", function (_ref2) {\n var onClear = _ref2.onClear,\n selected = _ref2.selected;\n var _this$props3 = _this.props,\n clearButton = _this$props3.clearButton,\n disabled = _this$props3.disabled,\n isLoading = _this$props3.isLoading,\n size = _this$props3.size;\n var content;\n\n if (isLoading) {\n content = /*#__PURE__*/React.createElement(Loader, null);\n } else if (clearButton && !disabled && selected.length) {\n content = /*#__PURE__*/React.createElement(ClearButton, {\n onClick: onClear,\n onMouseDown: preventInputBlur,\n size: size\n });\n }\n\n return content ? /*#__PURE__*/React.createElement(\"div\", {\n className: cx('rbt-aux', {\n 'rbt-aux-lg': isSizeLarge(size)\n })\n }, content) : null;\n });\n\n return _this;\n }\n\n _createClass(TypeaheadComponent, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props4 = this.props,\n children = _this$props4.children,\n className = _this$props4.className,\n instanceRef = _this$props4.instanceRef,\n open = _this$props4.open,\n options = _this$props4.options,\n style = _this$props4.style;\n return /*#__PURE__*/React.createElement(Typeahead, _extends({}, this.props, {\n options: options,\n ref: instanceRef\n }), function (props) {\n var hideMenu = props.hideMenu,\n isMenuShown = props.isMenuShown,\n results = props.results;\n\n var auxContent = _this2._renderAux(props);\n\n return /*#__PURE__*/React.createElement(RootClose, {\n disabled: open || !isMenuShown,\n onRootClose: hideMenu\n }, function (ref) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: cx('rbt', {\n 'has-aux': !!auxContent\n }, className),\n ref: ref,\n style: _objectSpread(_objectSpread({}, style), {}, {\n outline: 'none',\n position: 'relative'\n }),\n tabIndex: -1\n }, _this2._renderInput(_objectSpread(_objectSpread({}, props.getInputProps(_this2.props.inputProps)), {}, {\n referenceElementRef: _this2.referenceElementRef\n }), props), /*#__PURE__*/React.createElement(Overlay, _extends({}, getOverlayProps(_this2.props), {\n isMenuShown: isMenuShown,\n referenceElement: _this2._referenceElement\n }), function (menuProps) {\n return _this2._renderMenu(results, menuProps, props);\n }), auxContent, isFunction(children) ? children(props) : children);\n });\n });\n }\n }]);\n\n return TypeaheadComponent;\n}(React.Component);\n\n_defineProperty(TypeaheadComponent, \"propTypes\", propTypes);\n\n_defineProperty(TypeaheadComponent, \"defaultProps\", defaultProps);\n\nexport default /*#__PURE__*/forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(TypeaheadComponent, _extends({}, props, {\n instanceRef: ref\n }));\n});","import React, { Component } from \"react\";\r\nimport { Modal } from \"react-bootstrap\";\r\nimport { IPillElementModel } from \"./PillElement\";\r\nimport { Pill } from \"./Pill\";\r\nimport currencyFormatter from \"../../helper/currencyFormatter\";\r\nimport { PortalHelperTextModel } from \"../../models/PortalHelperTextModel\";\r\nimport { IAggregatePillOverlayProps } from \"./AggregatePillOverlay\";\r\n\r\nexport enum AggregateType {\r\n count,\r\n sum, // sum each field individually\r\n list,\r\n firstValue,\r\n sumAll, // sum across all the fields\r\n status, // show a status\r\n}\r\n\r\nexport enum AggregateStatus {\r\n todo,\r\n inprogress,\r\n done,\r\n error\r\n}\r\n\r\nexport interface IAggregateItemProps {\r\n key: string;\r\n isCollapsed: boolean;\r\n hasAny: boolean | null;\r\n}\r\n\r\nexport interface IAggregateListItem {\r\n key: string;\r\n values: any[];\r\n}\r\n\r\nexport interface IAggregatePillProps {\r\n uniqueKey: string;\r\n label: string;\r\n showLabelCount?: boolean;\r\n items: IAggregateListItem[] | null;\r\n aggregate1type: AggregateType;\r\n aggregate1label: string;\r\n aggregate1currency: boolean | undefined;\r\n aggregate1status?: AggregateStatus;\r\n aggregate2type?: AggregateType;\r\n aggregate2label?: string;\r\n aggregate2currency?: boolean | undefined;\r\n confirmationMessageFirst?: string;\r\n overlay: React.ReactNode;\r\n hideIfValue: boolean | null;\r\n firstCellColored?: boolean,\r\n size?: \"lg\" | \"sm\" | \"xl\" | undefined,\r\n className?: string | undefined,\r\n tooltip?: PortalHelperTextModel | undefined | null,\r\n isMissing?: boolean | undefined,\r\n contentClassName?: string | undefined,\r\n headerClassName?: string | undefined,\r\n autoOpen?: boolean;\r\n closePill?(): void;\r\n}\r\n\r\ninterface IAggregatePillState {\r\n hideIfValue: boolean | null;\r\n items: IAggregateListItem[] | null;\r\n collapsed: boolean;\r\n autoOpen: boolean;\r\n}\r\n\r\n\r\nexport class AggregatePill extends Component<IAggregatePillProps, IAggregatePillState> {\r\n constructor(props: IAggregatePillProps) {\r\n super(props);\r\n //this.state = { hideIfValue: false, collapsed: this.props.itemProp?.isCollapsed ?? true, items: props.items };\r\n this.state = { hideIfValue: false, collapsed: true, items: props.items, autoOpen: this.props.autoOpen??false };\r\n this.collapse = this.collapse.bind(this);\r\n this.hide = this.hide.bind(this);\r\n this.show = this.show.bind(this);\r\n this.getStatusColour = this.getStatusColour.bind(this);\r\n }\r\n\r\n componentDidUpdate() {\r\n if (this.state.hideIfValue !== this.props.hideIfValue)\r\n this.setState({ hideIfValue: this.props.hideIfValue });\r\n\r\n // debugger;\r\n // if (this.props.itemProp?.isCollapsed !== null && this.state.collapsed !== (this.props.itemProp?.isCollapsed ?? true))\r\n // {\r\n // let v = this.props.itemProp?.isCollapsed ?? true;\r\n // if(this.state.collapsed !== v)\r\n // this.setState({ collapsed: v });\r\n // }\r\n \r\n }\r\n\r\n componentDidMount() {\r\n if (this.state.hideIfValue !== this.props.hideIfValue)\r\n this.setState({ hideIfValue: this.props.hideIfValue });\r\n }\r\n\r\n private collapse() {\r\n this.setState({ collapsed: true });\r\n }\r\n\r\n asNum(v:any) {\r\n let r = 0;\r\n if (v !== \"\" && v !== '' && v !== null && v !== undefined)\r\n r = parseFloat(v);\r\n \r\n return r;\r\n }\r\n\r\n getAggregate(valueToAggregate: number, type: AggregateType) {\r\n let items = this.props.items;\r\n if(items === null)\r\n return \"\";\r\n\r\n if (type === AggregateType.count) {\r\n return items.length.toString();\r\n }\r\n else if (type === AggregateType.sum) {\r\n return items.reduce((partialSum: any, a: IAggregateListItem) => this.asNum(partialSum) + (this.asNum(a.values[valueToAggregate])), 0).toString();\r\n }\r\n else if (type === AggregateType.sumAll) {\r\n return items.reduce((partialSum: any, a: IAggregateListItem) => this.asNum(partialSum) + (a.values.reduce((pSum2: any, a2: any) => this.asNum(pSum2) + this.asNum(a2))), 0).toString();\r\n }\r\n else if (type === AggregateType.list) {\r\n return items.map((e: IAggregateListItem) => { return e.values[valueToAggregate] }).join(\", \");\r\n }\r\n else if (type === AggregateType.firstValue) {\r\n return items.length > 0 ? items[0].values[valueToAggregate] : \"\";\r\n }\r\n return \"\";\r\n }\r\n hide() {\r\n this.collapse();\r\n //this.props.setCloseModal(this.props.uniqueKey);\r\n }\r\n show() {\r\n this.setState({ autoOpen: false, collapsed: false });\r\n //this.props.setOpenModal(this.props.uniqueKey);\r\n }\r\n\r\n getPillClass() {\r\n // if (this.props.status === MortgageDocumentStatusCode.Active)\r\n // return this.props.files?.length > 0 ? \"inprogress\" : \"notstarted\";\r\n // if (this.props.status === MortgageDocumentStatusCode.Uploaded)\r\n // return \"done\";\r\n // if (this.props.status === MortgageDocumentStatusCode.NeedsAction)\r\n // return \"error\"\r\n return \"notstarted\";\r\n }\r\n\r\n getStatusColour() {\r\n if (this.props.aggregate1status == AggregateStatus.done)\r\n return 'var(--chertreuse)';\r\n if (this.props.aggregate1status == AggregateStatus.inprogress || this.props.aggregate1status == AggregateStatus.error)\r\n return 'var(--sage)';\r\n if (this.props.aggregate1status == AggregateStatus.todo)\r\n return 'var(--limestone)';\r\n return undefined;\r\n }\r\n\r\n render() {\r\n var value1ToDisplay = this.getAggregate(0, this.props.aggregate1type);\r\n if (this.props.aggregate1currency)\r\n value1ToDisplay = currencyFormatter(parseInt(value1ToDisplay));\r\n\r\n var value2ToDisplay = this.props.aggregate2type ? this.getAggregate(1, this.props.aggregate2type) : \"\";\r\n if (this.props.aggregate2currency)\r\n value2ToDisplay = currencyFormatter(parseInt(value2ToDisplay));\r\n\r\n var countToDisplay = this.getAggregate(0, AggregateType.count);\r\n\r\n if (this.state.hideIfValue && this.props.items !== null && !this.props.isMissing) \r\n return \"\";\r\n\r\n var components: IPillElementModel[] = [];\r\n components.push({\r\n leftBorder: true,\r\n rightBorder: true,\r\n backgroundColor: this.props.firstCellColored === true ? \"#eee\" : undefined,\r\n content: <div>{this.props.label} {this.props.showLabelCount && countToDisplay > 0 && <> : {countToDisplay}</>\r\n }</div >\r\n });\r\n\r\n components.push({\r\n leftBorder: false,\r\n rightBorder: true,\r\n backgroundColor: this.getStatusColour(),\r\n fontSize: this.getStatusColour() ? 14 : undefined,\r\n content: <>{(this.props.items !== null && this.props.items.length === 0) && \"None\"}{this.props.items !== null && this.props.items.length > 0 && <>{this.props.aggregate1label} {value1ToDisplay}</>}</>\r\n });\r\n\r\n if (this.props.aggregate2label && this.props.items !== null && this.props.items.length > 0) {\r\n components.push({\r\n leftBorder: false,\r\n rightBorder: true,\r\n content: <>{this.props.aggregate2label} {value2ToDisplay == 'null' ? \"-\" : value2ToDisplay}</>\r\n });\r\n }\r\n \r\n var cloned = React.cloneElement(this.props.overlay as React.ReactElement<IAggregatePillOverlayProps>, {\r\n closePill: this.collapse\r\n });\r\n\r\n if (this.state.autoOpen) {\r\n this.show();\r\n }\r\n\r\n return (\r\n <>\r\n <Pill extraClass={`${this.props.className??''} ${this.props.isMissing === true ? \"pill-missing\" : \"\"}`} onClick={() => this.show()} components={components} tooltip={this.props.tooltip ?? undefined}></Pill>\r\n\r\n <Modal contentClassName={this.props.contentClassName} fullscreen=\"lg-down\" size={this.props.size ?? \"xl\"} show={!this.state.collapsed} onHide={() => this.hide()} centered>\r\n <Modal.Header className={this.props.headerClassName} closeButton></Modal.Header>\r\n \r\n {/* {this.props.overlay} */}\r\n {cloned}\r\n </Modal>\r\n </>\r\n );\r\n }\r\n}","import { Component } from \"react\";\r\nimport { Card, Col, Container, Form, Row } from \"react-bootstrap\";\r\nimport { FormControl } from \"./FormControl\";\r\nimport \"./Address.css\";\r\nimport { ApplicantFieldsCollection } from \"../forms/ApplicantFields\";\r\nimport \"./Employment.css\";\r\nimport { FormLookupItem } from \"../models/PortalMetadata\";\r\nimport { Typeahead } from 'react-bootstrap-typeahead';\r\nimport 'react-bootstrap-typeahead/css/Typeahead.css';\r\nimport React from \"react\";\r\nimport { LinkPill } from \"./Pills/LinkPill\";\r\nimport { Address } from \"./Address\";\r\n\r\ninterface IEmploymentProps {\r\n employersName: string;\r\n occupation: string;\r\n address1: string;\r\n address2: string;\r\n lengthYears: string;\r\n lengthMonths: string;\r\n\r\n helperTexts: any[];\r\n record: any;\r\n fields: ApplicantFieldsCollection;\r\n handleChange(event: any): void;\r\n occupationList: FormLookupItem[]\r\n}\r\n\r\ninterface IEmploymentState {\r\n helperTexts: any[];\r\n record: any;\r\n fields: ApplicantFieldsCollection;\r\n occupation: string;\r\n selectedOccupation: any[];\r\n addressIsValid: boolean;\r\n}\r\n\r\nexport class Employment extends Component<IEmploymentProps, IEmploymentState> {\r\n constructor(props: any) {\r\n super(props);\r\n\r\n let ocVal = this.props.fields.getFieldByName(this.props.occupation)?.value;\r\n\r\n this.state = {\r\n helperTexts: [],\r\n record: props.record,\r\n fields: props.fields,\r\n occupation: \"\",\r\n selectedOccupation: (this.props.occupationList.filter(c => c.value == ocVal)),\r\n addressIsValid: true,\r\n }\r\n }\r\n\r\n setOccupationValue(selected: any[]) {\r\n let val: any;\r\n if (selected.length == 0) {\r\n this.setFieldValue(this.props.occupation, \"\");\r\n val = \"\";\r\n }\r\n else {\r\n this.setFieldValue(this.props.occupation, selected[0].value);\r\n val = selected[0].value;\r\n }\r\n\r\n this.props.handleChange({ target: { value: val, name: this.props.occupation } });\r\n }\r\n\r\n setFieldValue(fieldName: string, value: string) {\r\n let fields = this.state.fields;\r\n if (fields) {\r\n fields.updateModel(this.state.record, fieldName, value);\r\n fields.updateFieldValue(fieldName, value);\r\n }\r\n this.setState({ fields: this.state.fields, record: this.state.record });\r\n }\r\n\r\n render() {\r\n\r\n return (\r\n <Container className=\"employment-container\">\r\n <Row>\r\n <Col>\r\n <FormControl icon=\"fas fa-house\" field={this.props.fields.getFieldByName(this.props.employersName)}></FormControl>\r\n </Col>\r\n </Row>\r\n <Address helperTexts={this.state.helperTexts} record={this.state.record} fields={this.state.fields}\r\n handleChange={this.props.handleChange} address={this.props.address1} letManual={false} />\r\n {/* <FormControl icon=\"fa-regular fa-address-book\" field={this.props.fields.getFieldByName(this.props.address1)}></FormControl> */}\r\n {/* <Col>\r\n <FormControl field={this.props.fields.getFieldByName(this.props.address2)} ></FormControl>\r\n </Col> */}\r\n <Row>\r\n <Col>\r\n <span className=\"input-group-text\">Occupation</span>\r\n <Typeahead\r\n id=\"occupationid\"\r\n onChange={(selected) => {\r\n\r\n this.setState({ selectedOccupation: selected });\r\n this.setOccupationValue(selected);\r\n\r\n }}\r\n options={this.props.occupationList}\r\n selected={this.state.selectedOccupation}\r\n labelKey=\"text\"\r\n allowNew={false}\r\n multiple={false}\r\n\r\n />\r\n {/*<Form.Control value={this.state.occupation} type=\"text\"*/}\r\n {/* onChange={e => { this.setSearchValue(e.target.value); this.props.handleChange(e); }}*/}\r\n {/* onBlur={e => this.clearSearch(e.target.value)} />*/}\r\n {/*<FormControl icon=\"fas fa-user-doctor\" field={this.props.fields.getFieldByName(this.props.occupation)}></FormControl>*/}\r\n </Col>\r\n <Col>\r\n <FormControl icon=\"far fa-calendar\" field={this.props.fields.getFieldByName(this.props.lengthYears)} ></FormControl>\r\n </Col>\r\n <Col>\r\n <FormControl icon=\"far fa-calendar\" field={this.props.fields.getFieldByName(this.props.lengthMonths)} ></FormControl>\r\n </Col>\r\n </Row>\r\n </Container>\r\n );\r\n }\r\n}","// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport default function getDisplayName(Component) {\n return Component.displayName || Component.name || 'Component';\n}","import { withAsync } from '../../behaviors/async';\nimport Typeahead from '../Typeahead'; // @ts-ignore\n\nexport default withAsync(Typeahead);","import { Component } from \"react\";\r\nimport { Card, Col, Container, Form, Row } from \"react-bootstrap\";\r\nimport { ApplicantFieldsCollection } from \"../forms/ApplicantFields\";\r\nimport \"./SelfEmployment.css\";\r\nimport 'react-bootstrap-typeahead/css/Typeahead.css';\r\nimport { FormControl } from \"./FormControl\";\r\nimport { Address } from \"./Address\";\r\n\r\ninterface ISelfEmploymentProps {\r\n helperTexts: any[];\r\n record: any;\r\n fields: ApplicantFieldsCollection;\r\n handleChange(event: any): void;\r\n}\r\n\r\ninterface ISelfEmploymentState {\r\n helperTexts: any[];\r\n record: any;\r\n fields: ApplicantFieldsCollection;\r\n addressIsValid: boolean;\r\n}\r\n\r\nexport class SelfEmployment extends Component<ISelfEmploymentProps, ISelfEmploymentState> {\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n helperTexts: [],\r\n record: props.record,\r\n fields: props.fields,\r\n addressIsValid: true,\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n <Container className=\"selfemployment-container\">\r\n <Row>\r\n <Col>\r\n <FormControl light field={this.state.fields.getFieldByName(\"companyName\")} ></FormControl>\r\n </Col>\r\n </Row>\r\n <Address helperTexts={this.state.helperTexts} record={this.state.record} fields={this.state.fields}\r\n handleChange={this.props.handleChange} address=\"businessAddress1\" letManual={false} />\r\n {/* <FormControl light field={this.state.fields.getFieldByName(\"businessAddress1\")} ></FormControl> */}\r\n <Row>\r\n {/* <Col>\r\n <FormControl light field={this.state.fields.getFieldByName(\"businessAddress2\")} ></FormControl>\r\n </Col> */}\r\n\r\n <Col>\r\n <FormControl light field={this.state.fields.getFieldByName(\"natureOfBusiness\")} ></FormControl>\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col>\r\n <FormControl light field={this.state.fields.getFieldByName(\"accountantsName\")} ></FormControl>\r\n\r\n </Col>\r\n\r\n <Col>\r\n <FormControl light field={this.state.fields.getFieldByName(\"shareholdingPercentage\")} ></FormControl>\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col>\r\n\r\n <FormControl light field={this.state.fields.getFieldByName(\"businessEstablishedDate\")} ></FormControl>\r\n </Col>\r\n\r\n <Col>\r\n\r\n </Col>\r\n </Row>\r\n </Container>\r\n );\r\n }\r\n}","import { Component } from \"react\";\r\nimport { Button, Col, Container, Modal, Row } from \"react-bootstrap\";\r\nimport { ApplicantFieldsCollection } from \"../../forms/ApplicantFields\";\r\nimport { FormControl } from \"../FormControl\";\r\nimport { AggregatePillOverlay, IAggregatePillOverlayProps } from \"../Pills/AggregatePillOverlay\";\r\nimport { UserContext } from \"../UserContext\";\r\nimport \"./Profit.css\"\r\n\r\nexport interface IProfitProps extends IAggregatePillOverlayProps {\r\n fields: ApplicantFieldsCollection,\r\n record: any,\r\n}\r\ninterface IProfitState {\r\n fields: ApplicantFieldsCollection,\r\n record: any\r\n}\r\n\r\nexport class Profit extends AggregatePillOverlay<IProfitProps, IProfitState> {\r\n static contextType = UserContext;\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n fields: this.props.fields,\r\n record: this.props.record\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({\r\n fields: this.props.fields,\r\n record: this.props.record\r\n });\r\n }\r\n\r\n close(): void {\r\n if (this.props.closePill)\r\n this.props.closePill();\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n <div>\r\n <Modal.Body>\r\n <Container className=\"profit-container\">\r\n <Row>\r\n <Col>\r\n <FormControl field={this.state.fields.getFieldByName(\"grossProfit\")} ></FormControl>\r\n </Col>\r\n\r\n <Col>\r\n <FormControl field={this.state.fields.getFieldByName(\"previousYearProfit\")} ></FormControl>\r\n </Col>\r\n </Row>\r\n </Container>\r\n </Modal.Body>\r\n <Modal.Footer>\r\n <Button className=\"btn btn-standard btn-wide\" onClick={() => { this.close(); }}>Done</Button>\r\n </Modal.Footer>\r\n </div>\r\n </>\r\n );\r\n }\r\n}","import { Component } from \"react\";\r\nimport { Button, Col, Container, Modal, Row } from \"react-bootstrap\";\r\nimport { ApplicantFieldsCollection } from \"../../forms/ApplicantFields\";\r\nimport { FormControl } from \"../FormControl\";\r\nimport { IAggregatePillOverlayProps, AggregatePillOverlay } from \"../Pills/AggregatePillOverlay\";\r\nimport { UserContext } from \"../UserContext\";\r\nimport \"./Profit.css\"\r\n\r\nexport interface IVariableIncomeProps extends IAggregatePillOverlayProps {\r\n fields: ApplicantFieldsCollection,\r\n record: any,\r\n}\r\ninterface IVariableIncomeState {\r\n fields: ApplicantFieldsCollection,\r\n record: any,\r\n hasAny: boolean | null\r\n}\r\n\r\nexport class VariableIncome extends AggregatePillOverlay<IVariableIncomeProps, IVariableIncomeState> {\r\n static contextType = UserContext;\r\n\r\n constructor(props: any) {\r\n super(props);\r\n\r\n this.state = {\r\n fields: this.props.fields,\r\n record: this.props.record,\r\n hasAny: this.props.fields.getFieldByName(\"hasVariableIncome\").value === 755980000 ? true : false\r\n };\r\n\r\n this.hasAny = this.hasAny.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({\r\n fields: this.props.fields,\r\n record: this.props.record\r\n });\r\n }\r\n\r\n close(): void {\r\n if (this.props.closePill)\r\n this.props.closePill();\r\n }\r\n\r\n hasAny(hasAny: boolean) {\r\n if (!hasAny) {\r\n let fields = this.state.fields;\r\n if (fields) {\r\n fields.updateModel(this.props.record, \"hasVariableIncome\", 755980001);\r\n fields.updateFieldValue(\"hasVariableIncome\", 755980001);\r\n }\r\n this.setState({ fields: this.state.fields });\r\n this.close();\r\n }\r\n else {\r\n let fields = this.state.fields;\r\n if (fields) {\r\n fields.updateModel(this.props.record, \"hasVariableIncome\", 755980000);\r\n fields.updateFieldValue(\"hasVariableIncome\", 755980000);\r\n }\r\n this.setState({ fields: this.state.fields });\r\n this.setState({ hasAny: hasAny });\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n <div>\r\n <Modal.Body>\r\n <Container className=\"profit-container text-center\">\r\n {(this.state.hasAny === null || this.state.hasAny === false) &&\r\n <div>\r\n <h3>Do you any variable income?\r\n </h3>\r\n <br />\r\n <Button className=\"btn btn-standard btn-outline btn-wide\" onClick={e => this.hasAny(true)}>Yes</Button> \r\n <Button className=\"btn btn-standard btn-outline btn-wide\" onClick={e => this.hasAny(false)}>No</Button>\r\n </div>\r\n }\r\n {this.state.hasAny === true &&\r\n <>\r\n <Row>\r\n <Col>\r\n <FormControl field={this.state.fields.getFieldByName(\"commission\")} ></FormControl>\r\n </Col>\r\n <Col>\r\n <FormControl field={this.state.fields.getFieldByName(\"overtime\")} ></FormControl>\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col>\r\n <FormControl field={this.state.fields.getFieldByName(\"bonus\")} ></FormControl>\r\n </Col>\r\n <Col>\r\n <FormControl field={this.state.fields.getFieldByName(\"otherIncome\")} ></FormControl>\r\n </Col>\r\n </Row>\r\n </>\r\n }\r\n </Container>\r\n </Modal.Body>\r\n {this.state.hasAny === true &&\r\n <Modal.Footer>\r\n <Button className=\"btn btn-standard btn-wide\" onClick={() => { this.close(); }}>Done</Button>\r\n </Modal.Footer>\r\n }\r\n </div >\r\n </>\r\n );\r\n }\r\n}","import React from 'react';\r\nimport 'bootstrap/dist/css/bootstrap.min.css';\r\nimport { Row, Container, Stack } from \"react-bootstrap\";\r\nimport './Applicant.css';\r\nimport { Navigate } from \"react-router-dom\";\r\nimport { InputPill } from '../components/Pills/InputPill';\r\nimport { LinkPill } from \"../components/Pills/LinkPill\";\r\nimport { ApplicantPage } from \"./ApplicantPage\";\r\nimport { ApplicantService } from './ApplicantService';\r\nimport { ApplicantBaseComponent } from './ApplicantBaseComponent';\r\nimport { Employment } from '../components/Employment';\r\nimport { AggregatePill, AggregateType, IAggregateListItem, IAggregatePillProps } from '../components/Pills/AggregatePill';\r\nimport { SelfEmployment } from '../components/SelfEmployment';\r\nimport { getTooltip } from '../components/Tooltip';\r\nimport { Profit } from '../components/Applicant/Profit';\r\nimport { VariableIncome } from '../components/Applicant/VariableIncome';\r\n\r\nexport class ApplicantEmployment extends ApplicantBaseComponent {\r\n applicantService: ApplicantService;\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.prev = this.prev.bind(this);\r\n this.next = this.next.bind(this);\r\n this.visaExpiryCheck = this.visaExpiryCheck.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n let context = this.getContext();\r\n this.applicantService = new ApplicantService(context, this, this.props.applicantNo);\r\n this.applicantService.getOccupations().then(() => {\r\n this.applicantService.getApplicantData();\r\n });\r\n }\r\n\r\n prev() {\r\n // if (this.state.contact.requireWorkPermit === true && this.visaExpiryCheck(this.state.fields.getFieldByName(\"visaExpiryDate\").value as string))\r\n // return;\r\n\r\n this.applicantService.saveAllFields(false);\r\n this.setState({ redirectTo: \"/residential\" + this.props.applicantNo });\r\n }\r\n\r\n next() {\r\n // if (this.state.contact.requireWorkPermit === true && this.visaExpiryCheck(this.state.fields.getFieldByName(\"visaExpiryDate\").value as string))\r\n // return;\r\n\r\n this.applicantService.saveAllFields(false);\r\n this.setState({ redirectTo: \"/financial\" + this.props.applicantNo });\r\n }\r\n\r\n visaExpiryCheck(value: string) {\r\n\r\n let today = new Date();\r\n let visaExpiryDate = new Date(value);\r\n\r\n if (value && visaExpiryDate.toISOString() < today.toISOString()) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n render() {\r\n if (this.state.loading) {\r\n return;\r\n }\r\n\r\n let context = this.getContext();\r\n\r\n if (this.state.redirectTo) {\r\n return <Navigate to={this.state.redirectTo} />;\r\n }\r\n\r\n if (!this.state.contact)\r\n return <span>Applicant information not found</span>;\r\n\r\n //employers\r\n let showPrevEmployer = (this.state.contact.lengthOfTimeEmployerYears + this.state.contact.lengthOfTimeEmployerMonths / 12) < 3 ? true : false;\r\n\r\n let occupation = (this.state.fields.getFieldValueByName(\"occupationId\", this.state.contact) ?? \"\");\r\n if (occupation !== \"\")\r\n occupation = this.state.occupationList.find(o => o.value === occupation)?.text;\r\n let prevOccupation = (this.state.fields.getFieldValueByName(\"prevOccupationId\", this.state.contact) ?? \"\");\r\n if (prevOccupation !== \"\")\r\n prevOccupation = this.state.occupationList.find(o => o.value === prevOccupation)?.text;\r\n\r\n let employersValue = this.state.fields.getFieldValueByName(\"employersName\", this.state.contact) ?\r\n (this.state.fields.getFieldValueByName(\"employersName\", this.state.contact) + \" | \" +\r\n occupation + \" | \" +\r\n (this.state.fields.getFieldValueByName(\"employersAddress1\", this.state.contact) ?? \"\")) : \"\";\r\n let prevEmployersValue = this.state.fields.getFieldValueByName(\"prevEmployersName\", this.state.contact) ?\r\n (this.state.fields.getFieldValueByName(\"prevEmployersName\", this.state.contact) + \" | \" +\r\n prevOccupation + \" | \" +\r\n (this.state.fields.getFieldValueByName(\"prevEmployersAddress1\", this.state.contact) ?? \"\")) : \"\";\r\n\r\n //profit pill\r\n let profitItems: IAggregateListItem[] = [];\r\n profitItems.push({ key: \"Profit\", values: [this.state.contact.grossProfit, this.state.contact.previousYearProfit] });\r\n let profitPill: IAggregatePillProps = {\r\n uniqueKey: \"profit\",\r\n label: \"Drawings\",\r\n showLabelCount: false,\r\n items: profitItems,\r\n aggregate1type: AggregateType.firstValue,\r\n aggregate1label: \"Last Financial Year\",\r\n aggregate1currency: true,\r\n aggregate2type: AggregateType.firstValue,\r\n aggregate2label: \"Prev Financial Year\",\r\n aggregate2currency: true,\r\n overlay: <Profit key=\"grossProfitPill\" record={this.state.contact} fields={this.state.fields}></Profit>,\r\n hideIfValue: this.state.emptyOnly,\r\n tooltip: getTooltip(context.tooltips ?? [], \"profit\")\r\n };\r\n\r\n //variable income pill\r\n let variableIncomeItems: IAggregateListItem[] = [];\r\n if (this.state.contact.hasVariableIncome === 755980000)\r\n variableIncomeItems.push({ key: \"VariableIncome\", values: [this.state.contact.commission, this.state.contact.overtime, this.state.contact.bonus, this.state.contact.otherIncome] });\r\n\r\n let variableIncomePill: IAggregatePillProps = {\r\n uniqueKey: \"variableIncome\",\r\n label: \"Variable Income\",\r\n showLabelCount: false,\r\n items: variableIncomeItems,\r\n aggregate1type: AggregateType.sumAll,\r\n aggregate1label: \"\",\r\n aggregate1currency: true,\r\n overlay: <VariableIncome key=\"variableIncomePill\" record={this.state.contact} fields={this.state.fields}></VariableIncome>,\r\n hideIfValue: this.state.emptyOnly,\r\n // setCloseModal: this.setCloseVariableIncomeModal,\r\n // setOpenModal: this.setOpenVariableIncomeModal,\r\n // itemProp: this.state.variableIncome,\r\n tooltip: getTooltip(context.tooltips ?? [], \"variableIncome\")\r\n };\r\n\r\n\r\n var title = this.state.contact.firstName + \"'s Employment & Income\";\r\n var subTitle = <>Banks calculate your loan value based on your gross income. They will often consider a percentage of any variable income too.</>;\r\n\r\n return (\r\n <>\r\n <ApplicantPage applicantNo={this.state.applicantNo} title={title} subTitle={subTitle} next={this.next} prev={this.prev}\r\n contact={this.state.contact} handleSubmit={this.applicantService.handleSubmit} showFinishButton={false}\r\n emptyOnlyClick={() => this.setState({ emptyOnly: !this.state.emptyOnly })} percentComplete={this.state.contact.employmentInfoPercentage}>\r\n <Container className=\"pill-form\">\r\n <>\r\n <Container>\r\n <Row className=\"pill-row\">\r\n <Stack gap={1} direction=\"horizontal\" className=\"pill-stack\">\r\n\r\n {/* Moved to AppolicantPersonal as per request from Grainne on 10th May 2024 */}\r\n {/* <InputPill hideIfValue={this.state.emptyOnly} field={this.state.fields.getFieldByName(\"employmentStatus\")} ></InputPill> */}\r\n\r\n {(this.state.contact.employmentStatus === \"778390000\" || this.state.contact.employmentStatus === 778390000) &&\r\n <>\r\n <LinkPill\r\n hideIfValue={this.state.emptyOnly}\r\n field={this.state.fields.getFieldByName(\"employersName\")}\r\n label=\"Employment Details\"\r\n valueToDisplay={employersValue}\r\n saveOnDone={this.applicantService.saveAllFields}\r\n overlay={<Employment helperTexts={this.state.helperTexts} record={this.state.contact} fields={this.state.fields}\r\n handleChange={this.applicantService.handleChange} employersName=\"employersName\" occupation=\"occupationId\"\r\n address1=\"employersAddress1\" address2=\"employersAddress2\" lengthYears=\"lengthOfTimeEmployerYears\"\r\n lengthMonths=\"lengthOfTimeEmployerMonths\" occupationList={this.state.occupationList} />} />\r\n {showPrevEmployer &&\r\n <LinkPill\r\n hideIfValue={this.state.emptyOnly}\r\n field={this.state.fields.getFieldByName(\"prevEmployersName\")}\r\n label=\"Previous Employment Details\"\r\n valueToDisplay={prevEmployersValue}\r\n saveOnDone={this.applicantService.saveAllFields}\r\n overlay={<Employment helperTexts={this.state.helperTexts} record={this.state.contact} fields={this.state.fields}\r\n handleChange={this.applicantService.handleChange} employersName=\"prevEmployersName\" occupation=\"prevOccupationId\"\r\n address1=\"prevEmployersAddress1\" address2=\"prevEmployersAddress2\" lengthYears=\"lengthOfTimePrevEmployerYears\"\r\n lengthMonths=\"lengthOfTimePrevEmployerMonths\" occupationList={this.state.occupationList} />} />\r\n }\r\n <InputPill hideIfValue={this.state.emptyOnly} field={this.state.fields.getFieldByName(\"jobType\")} ></InputPill>\r\n <InputPill hideIfValue={this.state.emptyOnly} field={this.state.fields.getFieldByName(\"grossSalary\")} ></InputPill>\r\n <InputPill hideIfValue={this.state.emptyOnly} field={this.state.fields.getFieldByName(\"salaryFrequency\")} ></InputPill>\r\n <InputPill hideIfValue={this.state.emptyOnly} field={this.state.fields.getFieldByName(\"incomePaidInEuro\")} ></InputPill>\r\n\r\n <AggregatePill size=\"lg\" {...variableIncomePill} ></AggregatePill>\r\n </>\r\n }\r\n\r\n {(this.state.contact.employmentStatus === \"778390001\" || this.state.contact.employmentStatus === 778390001) &&\r\n <>\r\n <LinkPill\r\n hideIfValue={this.state.emptyOnly}\r\n field={this.state.fields.getFieldByName(\"companyName\")}\r\n valueToDisplay={this.state.fields.getFieldByName(\"companyName\").value?.toString()}\r\n label=\"Company Details\"\r\n tooltip={getTooltip(context.tooltips ?? [], \"selfEmployment\")}\r\n saveOnDone={this.applicantService.saveAllFields}\r\n overlay={<SelfEmployment handleChange={this.applicantService.handleChange} fields={this.state.fields} helperTexts={this.state.helperTexts} record={this.state.contact} ></SelfEmployment>} />\r\n\r\n\r\n <AggregatePill size=\"lg\" {...profitPill} ></AggregatePill>\r\n </>\r\n }\r\n <InputPill hideIfValue={this.state.emptyOnly} field={this.state.fields.getFieldByName(\"missedPayments\")} ></InputPill>\r\n <InputPill hideIfValue={this.state.emptyOnly} field={this.state.fields.getFieldByName(\"bankrupcyOrCourt\")} ></InputPill>\r\n <InputPill hideIfValue={this.state.emptyOnly} field={this.state.fields.getFieldByName(\"requireWorkPermit\")} ></InputPill>\r\n {this.state.contact.requireWorkPermit === true && <>\r\n <InputPill hideIfValue={this.state.emptyOnly} field={this.state.fields.getFieldByName(\"visaType\")} ></InputPill>\r\n <InputPill hideIfValue={this.state.emptyOnly} field={this.state.fields.getFieldByName(\"visaExpiryDate\")} invalidText=\"Should be a future date\"\r\n //isInvalid={this.visaExpiryCheck} \r\n ></InputPill>\r\n </>\r\n }\r\n </Stack>\r\n </Row>\r\n </Container>\r\n </>\r\n </Container>\r\n\r\n </ApplicantPage>\r\n </>\r\n );\r\n }\r\n}","import React from \"react\";\r\nimport { Component } from \"react\";\r\nimport { Typeahead } from \"react-bootstrap-typeahead\";\r\nimport { ControlType, Field } from \"../../models/PortalMetadata\";\r\nimport { Tooltip } from \"../Tooltip\";\r\nimport \"./AutoPill.css\";\r\n\r\ninterface IAutoCompletePillProps {\r\n field: Field;\r\n hideIfValue: boolean | null;\r\n handleChange(event: any): any;\r\n list: any[],\r\n //onDone(mortgageDocumentId: string): void;\r\n}\r\n\r\ninterface IAutoCompletePillState {\r\n hideIfValue: boolean | null;\r\n value: any[]\r\n hasFocus: boolean;\r\n}\r\n\r\n\r\nexport class AutoCompletePill extends Component<IAutoCompletePillProps, IAutoCompletePillState> {\r\n constructor(props: IAutoCompletePillProps) {\r\n super(props);\r\n this.toggleFocus = this.toggleFocus.bind(this);\r\n this.state = {\r\n hideIfValue: false, \r\n value: (this.props.list.filter(c => c.value == this.props.field.value)),\r\n hasFocus: false,\r\n };\r\n }\r\n\r\n componentDidUpdate() {\r\n if (this.state.hideIfValue !== this.props.hideIfValue)\r\n this.setState({ hideIfValue: this.props.hideIfValue });\r\n }\r\n\r\n componentDidMount() {\r\n if (this.state.hideIfValue !== this.props.hideIfValue)\r\n this.setState({ hideIfValue: this.props.hideIfValue });\r\n }\r\n\r\n getPillClass() {\r\n return \"notstarted\";\r\n }\r\n\r\n focus(field: Field) {\r\n // if (field.controlType == ControlType.text || field.controlType == ControlType.textarea || field.controlType == ControlType.number || field.controlType == ControlType.decimal\r\n // || field.controlType == ControlType.currency) {\r\n //let inputs = document.getElementsByName(field.name);\r\n let input = document.getElementById(field.name+\"pill2\");\r\n if (input != null) {\r\n input.focus();\r\n }\r\n // }\r\n }\r\n\r\n setValue(selected: any[]) {\r\n let val: any;\r\n if (selected.length == 0) {\r\n val = \"\";\r\n }\r\n else {\r\n val = selected[0].value;\r\n }\r\n this.props.handleChange({ target: { value: val, name: this.props.field.name } });\r\n }\r\n\r\n isFocused():boolean {\r\n let focused = false;\r\n let inputs = document.getElementsByName(this.props.field.name);\r\n if (inputs != null && inputs[0] && inputs[0].id === document.activeElement!.id) {\r\n focused = true;\r\n }\r\n return focused;\r\n }\r\n\r\n toggleFocus() {\r\n var newFocus = !this.state.hasFocus;\r\n this.setState({hasFocus: newFocus});\r\n // if(this.props.onClick) {\r\n // this.props.onClick();\r\n // }\r\n }\r\n \r\n render() {\r\n if (this.state.hideIfValue && (this.props.field.value || this.props.field.optional) && !this.isFocused())\r\n return \"\";\r\n\r\n var f = this.props.field;\r\n let text = f.controlType === ControlType.date ? \"\" : f.value;\r\n if (f.controlType === ControlType.lookup) {\r\n let item = f.lookupValues?.find(x => { return x.value == f.value });\r\n if (item)\r\n text = item.text;\r\n }\r\n\r\n var pillMissingClass:string = (!this.props.field.optional && !this.props.field.value ? \"pill-missing\" : \"\");\r\n var pill:any;\r\n if (!this.props.field.value && !this.state.hasFocus) {\r\n pill = <div className=\"pill-container\" onClick={this.toggleFocus}>\r\n <div className=\"pill-container\">\r\n <div key={\"pill1\"} className={\"pill-component \" + pillMissingClass}\r\n style={{\r\n borderLeftStyle: 'solid',\r\n borderRightStyle: 'solid',\r\n backgroundColor: \"#FF000002\",\r\n }}>{<Tooltip tooltip={this.props.field.tooltip}><div onClick={() => this.focus(this.props.field)}>{this.props.field.label}</div></Tooltip>}</div>\r\n </div></div>;\r\n } else {\r\n pill = \r\n <div className=\"pill-container\">\r\n <div className=\"pill-container\">\r\n <div key=\"pill1\" className={\"pill-component \" + pillMissingClass}\r\n style={{\r\n borderLeftStyle: 'solid',\r\n borderRightStyle: \"solid\",\r\n }}>\r\n {<Tooltip tooltip={this.props.field.tooltip}><div onClick={() => this.focus(this.props.field)}>{this.props.field.label}</div></Tooltip>}\r\n </div>\r\n <div id={this.props.field.name+\"pill2\"} key=\"pill2\" className={\"autopill-component \" + (!this.props.field.optional && !this.props.field.value ? \"pill-missing\" : \"\")}\r\n style={{\r\n borderLeftStyle: 'none',\r\n borderRightStyle: 'solid',\r\n textAlign: \"left\"\r\n\r\n }}>{<>\r\n <Typeahead\r\n id={this.props.field.name}\r\n className=\"autopill-typeahead\"\r\n onChange={(selected) => {\r\n this.setState({ value: selected });\r\n this.setValue(selected);\r\n\r\n }}\r\n options={this.props.list}\r\n selected={this.state.value}\r\n labelKey=\"text\"\r\n allowNew={false}\r\n multiple={false}\r\n highlightOnlyResult={false}\r\n align=\"left\"\r\n \r\n // style={{width: spanWidth}}\r\n />\r\n <span id={this.props.field.name + \"-span\"} style={{ visibility: \"hidden\", height: \"1px\", whiteSpace:\"nowrap\" }}>{text}</span>\r\n </>}\r\n </div>\r\n </div></div>\r\n }\r\n setTimeout(() => {\r\n if (this.state.hasFocus) {\r\n this.focus(this.props.field);\r\n }\r\n }, 200);\r\n\r\n return (pill);\r\n }\r\n}","import { Component } from \"react\";\r\nimport { Col, Container, Form, InputGroup, Modal, Row } from \"react-bootstrap\";\r\nimport { ApplicantFieldsCollection } from \"../../forms/ApplicantFields\";\r\nimport { DataType } from \"../../models/PortalMetadata\";\r\nimport { IAggregateListItem } from \"../Pills/AggregatePill\";\r\nimport { IAggregatePillOverlayProps, AggregatePillOverlay } from \"../Pills/AggregatePillOverlay\";\r\nimport { UserContext } from \"../UserContext\";\r\nimport \"./Children.css\";\r\n\r\nexport interface IChildrenProps extends IAggregatePillOverlayProps {\r\n items: IAggregateListItem[],\r\n fields: ApplicantFieldsCollection,\r\n save: any,\r\n record: any,\r\n hasAny: boolean\r\n}\r\ninterface IChildrenState {\r\n items: IAggregateListItem[],\r\n fields: ApplicantFieldsCollection,\r\n childrenNumber: number,\r\n ages: { key: string, value: number }[],\r\n showItems: boolean,\r\n record: any\r\n}\r\n\r\nexport class Children extends AggregatePillOverlay<IChildrenProps, IChildrenState> {\r\n static contextType = UserContext;\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n items: this.props.items,\r\n fields: this.props.fields,\r\n childrenNumber: this.props.fields.getFieldValueByName(\"childrenNumber\", this.props.record) !== undefined ? parseInt(this.props.fields.getFieldValueByName(\"childrenNumber\", this.props.record).toString()) : 0,\r\n ages: [],\r\n showItems: this.props.hasAny,\r\n record: this.props.record\r\n };\r\n this.hasChildrenOnChange = this.hasChildrenOnChange.bind(this);\r\n this.childrenNumberOnChange = this.childrenNumberOnChange.bind(this);\r\n this.setAges = this.setAges.bind(this);\r\n this.save = this.save.bind(this);\r\n this.decrease = this.decrease.bind(this);\r\n this.increase = this.increase.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n this.setAges(this.state.childrenNumber);\r\n }\r\n\r\n close(): void {\r\n if (this.props.closePill)\r\n this.props.closePill();\r\n }\r\n\r\n hasChildrenOnChange(hasChildren: number) {\r\n let fields = this.state.fields;\r\n if (fields) {\r\n fields.updateModel(this.state.record, \"hasChildren\", hasChildren);\r\n fields.updateFieldValue(\"hasChildren\", hasChildren);\r\n }\r\n this.setState({ fields: this.state.fields });\r\n\r\n if (hasChildren === 0) {\r\n this.props.save([], this.state.fields);\r\n this.close();\r\n }\r\n else {\r\n this.setState({ showItems: true });\r\n }\r\n }\r\n\r\n setAge(event: any, key: string) {\r\n const target = event.target;\r\n let value = target.value;\r\n if (value == \"\")\r\n value = 0;\r\n this.setAgeValue(key, value);\r\n }\r\n\r\n childrenNumberOnChange(event: any) {\r\n const target = event.target;\r\n let value = target.value;\r\n const name = target.name || target.getAttribute('name');\r\n\r\n if (!name) return;\r\n\r\n let f = this.state.fields.getFieldByName(name);\r\n if (f.dataType === DataType.number && value !== null) {\r\n value = value.replace(/\\D/g, '');\r\n }\r\n\r\n let fields = this.state.fields;\r\n if (fields) {\r\n fields.updateModel(this.state.record, name, parseInt(value));\r\n fields.updateFieldValue(name, parseInt(value));\r\n }\r\n this.setState({ fields: this.state.fields, childrenNumber: parseInt(value) });\r\n\r\n if (isNaN(value))\r\n value = 0;\r\n\r\n this.setAges(parseInt(value));\r\n }\r\n\r\n setAges(childrenNumber: number) {\r\n let ages: { key: string, value: number }[] = [];\r\n if (this.state.items.length != 0 && this.state.items.length === childrenNumber) {\r\n this.state.items.forEach((item) => ages.push({ key: item.key, value: parseInt(item.values[0]) }));\r\n }\r\n else if (this.state.items.length < childrenNumber) {\r\n this.state.items.forEach((item, i) => ages.push({ key: item.key, value: parseInt(item.values[0]) }));\r\n\r\n for (var i = this.state.items.length; i < childrenNumber; i++) {\r\n ages.push({ key: i.toString(), value: 0 });\r\n }\r\n }\r\n else {\r\n for (var i = 0; i < childrenNumber; i++) {\r\n ages.push({ key: this.state.items[i].key, value: parseInt(this.state.items[i].values[0]) })\r\n }\r\n }\r\n this.setState({ ages: ages });\r\n }\r\n\r\n save() {\r\n let items: IAggregateListItem[] = [];\r\n this.state.ages.forEach((a, i) => {\r\n items.push({ key: a.key, values: [a.value as any] });\r\n })\r\n\r\n this.props.save(items, this.state.fields);\r\n this.close();\r\n }\r\n\r\n increase(a: { key: string, value: number }) {\r\n let newValue: number = a.value + 1;\r\n this.setAgeValue(a.key, newValue);\r\n }\r\n\r\n decrease(a: { key: string, value: number }) {\r\n let newValue: number = a.value === 0 ? 0 : a.value - 1;\r\n this.setAgeValue(a.key, newValue);\r\n }\r\n\r\n setAgeValue(key: string, value: number) {\r\n if (isNaN(value))\r\n value = 0;\r\n\r\n let items: IAggregateListItem[] = this.state.items;\r\n let item: IAggregateListItem | undefined = items.find(x => x.key === key);\r\n if (!item)\r\n items.push({ key: key, values: [value as any] });\r\n else {\r\n item.values = [];\r\n item.values.push(value as any);\r\n }\r\n this.setState({ items: items });\r\n this.setAges(this.state.childrenNumber);\r\n }\r\n\r\n render() {\r\n let ageConst: any[] = [];\r\n this.state.ages.forEach((a, i) => ageConst.push(\r\n <div key={a.key} className=\"justify-center\" style={{ display: \"flex\" }}>\r\n <InputGroup className=\"mb-3\" style={{ maxWidth: 200 }}>\r\n <InputGroup.Text><i className=\"far fa-square-minus fa-2xl\" onClick={(e) => this.decrease(a)}></i></InputGroup.Text>\r\n <Form.Control className=\"children-age-control\" htmlSize={3} name={\"age\" + i.toString()} type=\"text\" value={this.state.ages[i].value} onChange={e => { this.setAge(e, a.key); }} />\r\n <InputGroup.Text><i className=\"far fa-square-plus fa-2xl\" onClick={(e) => this.increase(a)}></i></InputGroup.Text>\r\n </InputGroup>\r\n </div >));\r\n\r\n return (\r\n <>\r\n <Modal.Body>\r\n {!this.state.showItems &&\r\n <Container className=\"text-center\">\r\n <h3>Do you have any dependants?</h3>\r\n <br />\r\n <button className=\"btn btn-standard btn-outline btn-wide\" onClick={e => this.hasChildrenOnChange(1)}>Yes</button> \r\n <button className=\"btn btn-standard btn-outline btn-wide\" onClick={e => this.hasChildrenOnChange(0)}>No</button>\r\n </Container>\r\n }\r\n {this.state.showItems &&\r\n <Container className=\"text-center\">\r\n <h3>Number of dependants</h3>\r\n <Row>\r\n <Col></Col>\r\n <Col className=\"col-10 children-container\">\r\n <Form.Control name=\"childrenNumber\" placeholder={this.state.fields.getFieldByName(\"childrenNumber\").placeholder ?? \"\"} type=\"number\" value={this.state.fields.getFieldValueByName(\"childrenNumber\", this.state.record)}\r\n onChange={e => { this.childrenNumberOnChange(e); }} />\r\n </Col>\r\n <Col></Col></Row>\r\n <br />\r\n <Row className=\"text-center\">\r\n {this.state.ages.length > 0 &&\r\n <h3 className=\"children-ages-title\">Ages</h3>\r\n }\r\n {ageConst.map((a) => a)}\r\n </Row>\r\n </Container>\r\n }\r\n </Modal.Body>\r\n {this.state.showItems && <Modal.Footer>\r\n <Container>\r\n <Row className=\"justify-center\">\r\n <button className=\"btn btn-standard btn-wide\" onClick={() => { this.save(); }}>Done</button>\r\n </Row>\r\n </Container>\r\n </Modal.Footer>}\r\n </>\r\n );\r\n }\r\n}","import React from 'react';\r\nimport 'bootstrap/dist/css/bootstrap.min.css';\r\nimport { Row, Container, Stack } from \"react-bootstrap\";\r\nimport './Applicant.css';\r\nimport { Navigate } from \"react-router-dom\";\r\nimport { InputPill } from '../components/Pills/InputPill';\r\nimport { ApplicantPage } from \"./ApplicantPage\";\r\nimport { ApplicantService } from './ApplicantService';\r\nimport { ApplicantBaseComponent } from './ApplicantBaseComponent';\r\nimport { AggregatePill, AggregateType, IAggregateListItem, IAggregatePillProps } from '../components/Pills/AggregatePill';\r\nimport { AutoCompletePill } from '../components/Pills/AutoCompletePill';\r\nimport { getTooltip } from '../components/Tooltip';\r\nimport axios from 'axios';\r\nimport { PublicClientApplication } from '@azure/msal-browser';\r\nimport { msalConfig } from '../helper/authConfig';\r\nimport { Children } from '../components/Applicant/Children';\r\nimport { HasChildren } from '../models/PortalContactModel';\r\nimport { LinkPill } from '../components/Pills/LinkPill';\r\nimport { FieldWithHelptext } from '../components/FieldWithHelptext';\r\nimport { BothApplicantFieldsWithAggregate } from '../components/BothApplicantFieldsWithAggregate';\r\nimport currencyFormatter, { currencyToNumber } from '../helper/currencyFormatter';\r\n\r\nexport class ApplicantPersonal extends ApplicantBaseComponent {\r\n applicantService: ApplicantService;\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.prev = this.prev.bind(this);\r\n this.next = this.next.bind(this);\r\n\r\n this.changeEmail = this.changeEmail.bind(this);\r\n this.saveChildrenPill = this.saveChildrenPill.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n let context = this.getContext();\r\n this.applicantService = new ApplicantService(context, this, this.props.applicantNo);\r\n this.applicantService.getNationalities().then(() => {\r\n this.applicantService.getCountries().then(() => {\r\n this.applicantService.getApplicantData();\r\n });\r\n });\r\n }\r\n\r\n // #region Email\r\n changeEmail(email: string) {\r\n this.applicantService.handleChange({ target: { name: \"emailAddress\", value: email } });\r\n this.applicantService.saveAllFields(false);\r\n\r\n axios.post('/Contacts/ChangeEmail', null, { params: { applicantNo: this.state.applicantNo, mortgageId: this.getContext().mortgage?.mortgageId } })\r\n .then((response) => {\r\n const myMSALObj = new PublicClientApplication(msalConfig);\r\n myMSALObj.logoutRedirect();\r\n\r\n })\r\n .catch((error) => {\r\n //if (error.response.statusCode === 401) {\r\n // alert(\"Unauthorized\");\r\n //}\r\n });\r\n\r\n }\r\n // #endregion\r\n\r\n // #region children\r\n saveChildrenPill(items: IAggregateListItem[], fields: any) {\r\n let context = this.getContext();\r\n let otherContact: any;\r\n if (this.state.applicantNo === 1)\r\n otherContact = context.mortgage?.secondaryApplicant;\r\n else if (this.state.applicantNo === 2)\r\n otherContact = context.mortgage?.primaryApplicant;\r\n\r\n if (items.length === 0) {\r\n //they said no to has children\r\n if (fields) {\r\n fields.updateModel(this.state.contact, \"hasChildren\", 0);\r\n fields.updateFieldValue(\"hasChildren\", 0);\r\n\r\n fields.updateModel(this.state.contact, \"childrenNumber\", 0);\r\n fields.updateFieldValue(\"childrenNumber\", 0);\r\n\r\n fields.updateModel(this.state.contact, \"childrenAge\", \"\");\r\n fields.updateFieldValue(\"childrenAge\", \"\");\r\n\r\n if (otherContact?.hasChildren === null && otherContact.childrenNumber === null && (otherContact.childrenAge === null || otherContact.childrenAge === \"\")) {\r\n otherContact.hasChildren = 0;\r\n otherContact.childrenNumber = 0;\r\n otherContact.childrenAge = \"\";\r\n\r\n if (this.state.applicantNo === 1)\r\n context.mortgage!.secondaryApplicant = otherContact;\r\n else if (this.state.applicantNo === 2)\r\n context.mortgage!.primaryApplicant = otherContact;\r\n }\r\n }\r\n this.setState({ fields: this.state.fields });\r\n this.applicantService.saveAllFields(false);\r\n }\r\n else {\r\n if (fields) {\r\n fields.updateModel(this.state.contact, \"hasChildren\", fields.getFieldValueByName(\"hasChildren\", this.state.contact));\r\n fields.updateFieldValue(\"hasChildren\", fields.getFieldValueByName(\"hasChildren\", this.state.contact));\r\n\r\n fields.updateModel(this.state.contact, \"childrenNumber\", fields.getFieldValueByName(\"childrenNumber\", this.state.contact));\r\n fields.updateFieldValue(\"childrenNumber\", fields.getFieldValueByName(\"childrenNumber\", this.state.contact));\r\n\r\n let ages: string = \"\";\r\n items.forEach((item, i) => { ages += item.values[0].toString(); if (items.length - 1 !== i) ages += \",\" });\r\n fields.updateModel(this.state.contact, \"childrenAge\", ages);\r\n fields.updateFieldValue(\"childrenAge\", ages);\r\n\r\n if (otherContact?.hasChildren === null && otherContact.childrenNumber === null && (otherContact.childrenAge === null || otherContact.childrenAge === \"\")) {\r\n otherContact.hasChildren = fields.getFieldValueByName(\"hasChildren\", this.state.contact);\r\n otherContact.childrenNumber = fields.getFieldValueByName(\"childrenNumber\", this.state.contact);\r\n otherContact.childrenAge = ages;\r\n\r\n if (this.state.applicantNo === 1)\r\n context.mortgage!.secondaryApplicant = otherContact;\r\n else if (this.state.applicantNo === 2)\r\n context.mortgage!.primaryApplicant = otherContact;\r\n }\r\n }\r\n\r\n this.setState({ fields: this.state.fields });\r\n this.applicantService.saveAllFields(false);\r\n }\r\n }\r\n\r\n // #endregion\r\n\r\n prev() {\r\n if (this.ppsInvalidCheck(this.state.fields.getFieldByName(\"ppsNumber\").value as string))\r\n return;\r\n\r\n this.applicantService.saveAllFields(false);\r\n this.setState({ redirectTo: \"/profile\" });\r\n }\r\n\r\n next() {\r\n if (this.ppsInvalidCheck(this.state.fields.getFieldByName(\"ppsNumber\").value as string))\r\n return;\r\n\r\n this.applicantService.saveAllFields(false);\r\n this.setState({ redirectTo: \"/residential\" + this.props.applicantNo });\r\n }\r\n\r\n ppsInvalidCheck(value: string) {\r\n var regex = /^\\d{7}[A-Za-z]{1,2}$/\r\n if (value && !regex.test(value)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n render() {\r\n if (this.state.loading) {\r\n return;\r\n }\r\n\r\n let context = this.getContext();\r\n\r\n if (this.state.redirectTo) {\r\n return <Navigate to={this.state.redirectTo} />;\r\n }\r\n\r\n if (!this.state.contact)\r\n return <span>Applicant information not found</span>;\r\n\r\n //email pill\r\n // let emailItems: IAggregateListItem[] = [];\r\n // emailItems.push({ key: \"Email\", values: [this.state.contact.emailAddress] });\r\n // let emailPill: IAggregatePillProps =\r\n // {\r\n // uniqueKey: \"email\",\r\n // label: \"Email\",\r\n // items: emailItems,\r\n // showLabelCount: false,\r\n // aggregate1type: AggregateType.firstValue,\r\n // aggregate1label: \"\",\r\n // aggregate1currency: false,\r\n // aggregate2type: undefined,\r\n // aggregate2label: undefined,\r\n // aggregate2currency: undefined,\r\n // overlay: <Email record={this.state.contact} fields={this.state.fields} changeEmail={this.changeEmail} helperTexts={this.state.helperTexts} ></Email>,\r\n // hideIfValue: this.state.emptyOnly,\r\n // //setCloseModal: this.setCloseEmailModal,\r\n // //setOpenModal: this.setOpenEmailModal,\r\n // //itemProp: this.state.email,\r\n // tooltip: getTooltip(context.tooltips ?? [], \"email\")\r\n // };\r\n\r\n //children\r\n let ages = [];\r\n let childrenAges = this.state.fields.getFieldValueByName(\"childrenAge\", this.state.contact);\r\n if (childrenAges !== null && childrenAges !== undefined && childrenAges !== \"\")\r\n ages = childrenAges.split(\",\");\r\n let childrenItems: IAggregateListItem[] = [];\r\n\r\n for (var i = 0; i < ages.length; i++) {\r\n childrenItems.push({ key: i.toString(), values: [parseInt(ages[i])] });\r\n }\r\n\r\n let childrenPill: IAggregatePillProps = {\r\n uniqueKey: \"Children\",\r\n label: \"Children\",\r\n showLabelCount: true,\r\n items: this.state.contact.hasChildren === null && childrenItems.length === 0 ? null : childrenItems,\r\n aggregate1type: AggregateType.list,\r\n aggregate1label: \"\",\r\n aggregate1currency: false,\r\n aggregate2type: undefined,\r\n aggregate2label: undefined,\r\n aggregate2currency: undefined,\r\n overlay: <Children key={JSON.stringify(childrenItems)} record={this.state.contact} items={childrenItems} fields={this.state.fields} save={this.saveChildrenPill} hasAny={this.state.contact.hasChildren === HasChildren.Yes}></Children>,\r\n hideIfValue: this.state.emptyOnly,\r\n tooltip: getTooltip(context.tooltips ?? [], \"children\"),\r\n isMissing: this.state.contact.hasChildren === null\r\n };\r\n\r\n var title = this.state.contact.firstName + \"'s Personal Information\";\r\n var subTitle = <>Complete your digital application starting with your personal information.<br />Once complete we will review everything and send this application form to you for electronic signature.</>;\r\n\r\n var ptsb = context.mortgage?.preferredLender === \"PTSB\";\r\n var f = this.state.fields.getFieldByName(\"mothersMaidenName\");\r\n f.optional = (ptsb === false);\r\n\r\n var applicantOnePaysText;\r\n var applicantTwoPaysText;\r\n if (context.mortgage?.secondaryApplicant !== null) {\r\n if (context.applicantNo === 1) {\r\n applicantOnePaysText = \"you pay\";\r\n applicantTwoPaysText = context.mortgage?.secondaryApplicant.firstName + \" pays\";\r\n } else {\r\n applicantOnePaysText = context.mortgage?.primaryApplicant.firstName + \" pays\";\r\n applicantTwoPaysText = \"you pay\";\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n <ApplicantPage applicantNo={this.state.applicantNo} title={title} subTitle={subTitle} next={this.next} prev={this.prev}\r\n contact={this.state.contact} handleSubmit={this.applicantService.handleSubmit} showFinishButton={false}\r\n emptyOnlyClick={() => this.setState({ emptyOnly: !this.state.emptyOnly })} percentComplete={this.state.contact.personalInfoPercentage}>\r\n <Container className=\"pill-form\">\r\n <>\r\n <Container>\r\n <Row className=\"pill-row\">\r\n <Stack gap={1} direction=\"horizontal\" className=\"pill-stack\">\r\n <InputPill hideIfValue={this.state.emptyOnly} field={this.state.fields.getFieldByName(\"firstName\")} ></InputPill>\r\n <InputPill hideIfValue={this.state.emptyOnly} field={this.state.fields.getFieldByName(\"lastName\")} ></InputPill>\r\n <InputPill hideIfValue={this.state.emptyOnly} field={this.state.fields.getFieldByName(\"sex\")} ></InputPill>\r\n <InputPill hideIfValue={this.state.emptyOnly} field={this.state.fields.getFieldByName(\"maritalStatus\")} ></InputPill>\r\n\r\n <InputPill hideIfValue={this.state.emptyOnly} field={this.state.fields.getFieldByName(\"birthDate\")} ></InputPill>\r\n <InputPill hideIfValue={this.state.emptyOnly} field={this.state.fields.getFieldByName(\"placeOfBirth\")} ></InputPill>\r\n <AutoCompletePill field={this.state.fields.getFieldByName(\"nationality\")}\r\n handleChange={this.applicantService.handleChange}\r\n hideIfValue={this.state.emptyOnly}\r\n list={this.state.nationalitiesList}\r\n ></AutoCompletePill>\r\n <AutoCompletePill field={this.state.fields.getFieldByName(\"countryOfBirth\")}\r\n handleChange={this.applicantService.handleChange}\r\n hideIfValue={this.state.emptyOnly}\r\n list={this.state.countryList}\r\n ></AutoCompletePill>\r\n\r\n <AggregatePill size=\"lg\" {...childrenPill}></AggregatePill>\r\n <InputPill hideIfValue={this.state.emptyOnly} field={this.state.fields.getFieldByName(\"hasChildcareCost\")} ></InputPill>\r\n {this.state.contact.hasChildcareCost && context.mortgage?.secondaryApplicant !== null &&\r\n <LinkPill\r\n hideIfValue={this.state.emptyOnly}\r\n field={this.state.fields.getFieldByName(\"monthlyChildcareCost\")}\r\n valueToDisplay={currencyFormatter(currencyToNumber(this.state.fields.getFieldByName(\"monthlyChildcareCost\").value as string)+currencyToNumber(this.state.fields.getFieldByName(\"monthlyChildcareCostOther\").value as string))}\r\n label='Childcare'\r\n modalSize='lg'\r\n saveOnDone={this.applicantService.saveAllFields}\r\n overlay={<BothApplicantFieldsWithAggregate\r\n title='Childcare'\r\n field={this.state.fields.getFieldByName(\"monthlyChildcareCost\")}\r\n fieldLabel={`How much ${this.state.applicantNo === 1 ? applicantOnePaysText : applicantTwoPaysText}:`} \r\n field2={this.state.fields.getFieldByName(\"monthlyChildcareCostOther\")}\r\n field2Label={`How much ${this.state.applicantNo === 1 ? applicantTwoPaysText : applicantOnePaysText}:`} \r\n totalLabel={'Total childcare costs:'} />}\r\n />\r\n }\r\n {this.state.contact.hasChildcareCost && context.mortgage?.secondaryApplicant === null &&\r\n <InputPill hideIfValue={this.state.emptyOnly} field={this.state.fields.getFieldByName(\"monthlyChildcareCost\")} ></InputPill>\r\n }\r\n <InputPill hideIfValue={this.state.emptyOnly} field={this.state.fields.getFieldByName(\"smoker\")} ></InputPill>\r\n <InputPill hideIfValue={this.state.emptyOnly} field={this.state.fields.getFieldByName(\"mobile\")} ></InputPill>\r\n {/*<AggregatePill {...emailPill} ></AggregatePill>*/}\r\n\r\n {/* Moved to AppolicantPersonal as per request from Grainne on 10th May 2024 */}\r\n <InputPill hideIfValue={this.state.emptyOnly} field={this.state.fields.getFieldByName(\"employmentStatus\")} ></InputPill>\r\n\r\n <InputPill hideIfValue={this.state.emptyOnly} field={this.state.fields.getFieldByName(\"ppsNumber\")} isInvalid={this.ppsInvalidCheck} invalidText=\"PPS looks invalid\" ></InputPill>\r\n {context.mortgage?.preferredLender === \"PTSB\" &&\r\n <InputPill hideIfValue={this.state.emptyOnly} field={this.state.fields.getFieldByName(\"mothersMaidenName\")} ></InputPill>\r\n }\r\n </Stack>\r\n </Row>\r\n </Container>\r\n </>\r\n </Container>\r\n\r\n </ApplicantPage>\r\n </>\r\n );\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n","import { FieldsCollection } from './FieldsCollection';\r\n\r\nexport class FinanceFieldsCollection extends FieldsCollection {\r\n constructor() {\r\n super();\r\n this.addTextField(\"name\", \"Name / Address\");\r\n this.addLookupField(\"institutionId\", \"Institution\");\r\n this.addTextField(\"institution\", \"Institution (label)\");\r\n this.addTextAsNumberField(\"accountNumber\", \"Last 4 digits of Account Number\", 4);\r\n this.addCurrencyField(\"currentBalance\", \"Balance\", 0, 1000000);\r\n this.addCurrencyField(\"limit\", \"Limit\", 0, 1000000);\r\n this.addNumberWithControlsField(\"termLeft\", \"Term Remaining\", 0, 1000);\r\n this.addPicklistField(\"termPeriod\", \"Term Period\", [{ text: \"Months\", value: 755980000 }, { text: \"Years\", value: 755980001 }]);\r\n\r\n this.addPicklistField(\"planOnClearingTheBalance\", \"Plan on clearing the balance?\", [{ text: \"No\", value: 755980001 }, { text: \"Yes\", value: 755980000 }]);\r\n this.addCurrencyField(\"recurringMonthlyValue\", \"Recurring Monthly Value\", 0, 1000000);\r\n this.addCurrencyField(\"recurringYearlyValue\", \"Recurring Yearly Value\", 0, 1000000);\r\n this.addBooleanField(\"sellBeforePurchasing\", \"Sell before purchasing your new home?\");\r\n this.addBooleanField(\"isJoint\", \"Joint with co-applicant?\");\r\n this.addCurrencyField(\"mortgageBalanceOutstanding\", \"Mortgage Balance Outstanding\", 0, 1000000);\r\n this.addPicklistField(\"loanType\", \"Loan Type\", [{ text: \"Car\", value: 755980000 }, { text: \"Personal\", value: 755980001 },\r\n { text: \"Home improvement\", value: 755980002 }, { text: \"Mortgage\", value: 755980005 }, { text: \"Other\", value: 755980004 }]);\r\n this.addTextField(\"otherInstitutionName\", \"Other Institution Name\", 100);\r\n this.addBooleanField(\"usedForDeposit\", \"Are you using part or all of the balance towards the deposit?\");\r\n this.addPicklistField(\"termRemaining\", \"Term remaining (years)\", [{ text: \"1\", value: 755980000 }, { text: \"2\", value: 755980001 },\r\n { text: \"3\", value: 755980002 }, { text: \"4\", value: 755980003 }, { text: \"5+\", value: 755980004 }]);\r\n this.addCurrencyField(\"overdraftLimit\", \"Overdraft Limit\", -1000000, 1000000); \r\n }\r\n}","import { Component } from \"react\";\r\nimport UserContextState, { UserContext } from '../UserContext';\r\nimport { FinanceFieldsCollection } from \"../../forms/FinanceFields\";\r\nimport { Col, Container, Form, Row } from \"react-bootstrap\";\r\nimport * as Icons from \"react-bootstrap\";\r\nimport { FormControl } from \"../FormControl\";\r\nimport { ControlType, FormLookupItem } from \"../../models/PortalMetadata\";\r\nimport { FieldsCollection } from \"../../forms/FieldsCollection\";\r\nimport \"./Finance.css\"\r\nimport currencyFormatter from \"../../helper/currencyFormatter\";\r\nimport { LoanType } from \"../../models/PortalMortgageDocumentModel\";\r\nimport { MortgageType } from \"../../models/PortalMortgageModel\";\r\nimport { addressAutocomplete, addressRetrieve } from \"../Data8AutoComplete\";\r\nimport { Address } from \"../Address\";\r\n\r\nexport interface IFinanceProps {\r\n className?: string;\r\n item: any,\r\n institutionList: FormLookupItem[],\r\n helperTexts: any[],\r\n checkAccountNumber: any,\r\n isDirty?(value: boolean): void,\r\n}\r\ninterface IFinanceState {\r\n fields: FieldsCollection;\r\n helperTexts: [] | null;\r\n loading: boolean;\r\n institutionList: any[];\r\n selectedPrediction: string;\r\n predictions: any[];\r\n searchValue?: string | null;\r\n AutoComplete: boolean;\r\n invalidAddress: boolean;\r\n sessionId: string;\r\n}\r\n\r\nexport class Finance extends Component<IFinanceProps, IFinanceState> {\r\n static contextType = UserContext;\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n fields: new FieldsCollection(),\r\n helperTexts: null,\r\n loading: true,\r\n institutionList: [],\r\n selectedPrediction: \"\",\r\n predictions: [],\r\n AutoComplete: true,\r\n invalidAddress: false,\r\n sessionId: \"\",\r\n };\r\n this.handleChange = this.handleChange.bind(this);\r\n this.updateByName = this.updateByName.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n\r\n let fields = new FinanceFieldsCollection();\r\n fields.addLookupValues(\"institutionId\", this.props.institutionList);\r\n fields.loadData(this.props.item, this.props.helperTexts, true, this.handleChange);\r\n this.props.item.autoOpen = false;\r\n this.setState({ fields: fields, loading: false });\r\n }\r\n\r\n handleChange(event: any) {\r\n const target = event.target;\r\n let value = (target.type === 'checkbox' ? target.checked : target.value) || (target.textContent || '');\r\n const name = target.name || target.getAttribute('name');\r\n\r\n if (!name)\r\n return;\r\n this.updateByName(name, value);\r\n if (this.props.isDirty) {\r\n this.props.isDirty(this.state.fields.fields.filter(f => f.isDirty).length > 0);\r\n }\r\n }\r\n\r\n updateByName(name: string, value: any, data?: any) {\r\n let f = this.state.fields.getFieldByName(name);\r\n if (name === \"accountNumber\") {\r\n value = value.replace(/\\D/g, '');\r\n }\r\n if (f.controlType === ControlType.lookup && value === \"-\") {\r\n value = null;\r\n }\r\n //// if we don't set the value here it sometimes doesn't get set and causes a bug with reverting to the original value\r\n let fields = this.state.fields;\r\n if (fields) { \r\n if (f.controlType == ControlType.currency) {\r\n var v = value?.replaceAll(\",\", \"\").replaceAll(\"€\", \"\").replaceAll(\" \", \"\");\r\n if (v === \"\" || isNaN(v)) {\r\n v = null;\r\n }\r\n fields.updateModel(this.props.item, name, v);\r\n fields.updateFieldValue(name, currencyFormatter(Number(v)));\r\n } else if (f.name === 'institutionId') {\r\n fields.updateModel(this.props.item, name, value);\r\n fields.updateFieldValue(name, value);\r\n fields.updateFieldValue('institution', data);\r\n } else {\r\n fields.updateModel(this.props.item, name, value);\r\n fields.updateFieldValue(name, value);\r\n }\r\n\r\n // This is a bandaid to fix how the insitution lookups don't pass back the name\r\n\r\n }\r\n this.setState({ fields: this.state.fields });\r\n }\r\n\r\n\r\n renderAsset() {\r\n\r\n }\r\n\r\n render() {\r\n var context = this.context as UserContextState;\r\n\r\n if (this.state.fields === null || this.state.loading === true)\r\n return <div><Icons.Spinner animation=\"border\" role=\"status\" /></div>;\r\n\r\n let institutionId = this.state.fields.getFieldByName(\"institutionId\");\r\n var other = institutionId.lookupValues?.find(x => x.text === \"Other\");\r\n let isOtherInstitutionSelected = this.props.item.institutionId === other?.value;\r\n\r\n let isAsset = this.props.item.categoryUniqueCode === \"PROPERTYASSETS\" || this.props.item.categoryUniqueCode === \"OTHERASSETS\";\r\n\r\n let switching = context.mortgage?.type === MortgageType.RemortgagingExistingLoan;\r\n let sellBeforePurchasing = this.props.item.sellBeforePurchasing;\r\n\r\n if (isAsset) {\r\n return (\r\n <div key={this.props.item}>\r\n <Container className={`finance-container`}>\r\n <Row>\r\n <Col>\r\n {this.props.item.categoryUniqueCode === \"OTHERASSETS\" &&\r\n <FormControl light alignLeft isRequired={true} field={this.state.fields.getFieldByName(\"name\")} customLabel=\"Name\" ></FormControl>\r\n }\r\n {this.props.item.categoryUniqueCode !== \"OTHERASSETS\" &&\r\n <Address helperTexts={this.state.helperTexts??[]} record={this.props.item} fields={this.state.fields} handleChange={this.handleChange} address=\"name\" letManual={false} />\r\n }\r\n </Col>\r\n <Col>\r\n <FormControl light alignLeft field={this.state.fields.getFieldByName(\"currentBalance\")} customLabel=\"Value\" ></FormControl>\r\n </Col>\r\n </Row>\r\n <Row>\r\n {switching !== true &&\r\n <Col>\r\n <FormControl light alignLeft field={this.state.fields.getFieldByName(\"sellBeforePurchasing\")}></FormControl>\r\n </Col>\r\n }\r\n {(switching === true || sellBeforePurchasing !== true) &&\r\n <Col>\r\n <FormControl light alignLeft field={this.state.fields.getFieldByName(\"recurringYearlyValue\")} customLabel=\"Annual rental income(market rent if not yet rented)\"></FormControl>\r\n </Col>\r\n }\r\n </Row>\r\n <Row>\r\n {this.props.item.categoryUniqueCode === \"PROPERTYASSETS\" &&\r\n <Col>\r\n <FormControl light alignLeft field={this.state.fields.getFieldByName(\"mortgageBalanceOutstanding\")}></FormControl>\r\n </Col>\r\n }\r\n <Col>\r\n <FormControl light alignLeft field={this.state.fields.getFieldByName(\"isJoint\")}></FormControl>\r\n </Col>\r\n </Row>\r\n </Container>\r\n </div>\r\n );\r\n }\r\n\r\n if (this.state.fields.getFieldByName(\"termLeft\").value == \"\")\r\n this.state.fields.getFieldByName(\"termLeft\").value = 20;\r\n\r\n let isLoan = this.props.item.categoryUniqueCode === \"LOAN\" || this.props.item.categoryUniqueCode === \"MORTGAGEACCOUNT\";\r\n if (isLoan) {\r\n\r\n //let isOverdraft = this.props.item.loanType === LoanType.Overdraft;\r\n return (\r\n <div key={this.props.item}>\r\n <Container className=\"finance-container\">\r\n <Row>\r\n <Col md={isOtherInstitutionSelected ? 3 : 6}>\r\n <FormControl light alignLeft isRequired={true} icon=\"fas fa-building-columns\" field={this.state.fields.getFieldByName(\"institutionId\")} ></FormControl>\r\n </Col>\r\n {isOtherInstitutionSelected === true &&\r\n <Col>\r\n <FormControl light alignLeft isRequired={true} field={this.state.fields.getFieldByName(\"otherInstitutionName\")} ></FormControl>\r\n </Col>\r\n }\r\n {this.props.item.categoryUniqueCode === \"LOAN\" &&\r\n <Col>\r\n <FormControl light alignLeft field={this.state.fields.getFieldByName(\"loanType\")} isRequired={true}></FormControl>\r\n </Col>\r\n }\r\n <Col>\r\n <FormControl light alignLeft icon=\"fa-regular fa-credit-card\" field={this.state.fields.getFieldByName(\"accountNumber\")} isInvalid={this.props.checkAccountNumber} invalidText=\"Needs to be 4 digits!\" ></FormControl>\r\n </Col>\r\n </Row>\r\n\r\n <Row>\r\n <Col md={6}>\r\n <FormControl light alignLeft isRequired={true} field={this.state.fields.getFieldByName(\"currentBalance\")}></FormControl>\r\n </Col>\r\n <Col>\r\n <FormControl light alignLeft field={this.state.fields.getFieldByName(\"planOnClearingTheBalance\")} ></FormControl>\r\n </Col>\r\n <Col>\r\n <FormControl light alignLeft field={this.state.fields.getFieldByName(\"isJoint\")} ></FormControl>\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col md={6}>\r\n <FormControl light alignLeft field={this.state.fields.getFieldByName(\"recurringMonthlyValue\")} customLabel=\"Monthly Payment\"></FormControl>\r\n </Col>\r\n\r\n {this.props.item.categoryUniqueCode === \"MORTGAGEACCOUNT\" &&\r\n <Col>\r\n <FormControl light field={this.state.fields.getFieldByName(\"termLeft\")} ></FormControl>\r\n </Col>\r\n }\r\n {this.props.item.categoryUniqueCode === \"LOAN\" &&\r\n <Col>\r\n <FormControl light alignLeft field={this.state.fields.getFieldByName(\"termRemaining\")} ></FormControl>\r\n </Col>}\r\n </Row>\r\n\r\n {/* <Row>\r\n <Col>\r\n <PlusMinusBox field={this.state.fields.getFieldByName(\"termLeft\")}></PlusMinusBox>\r\n </Col>\r\n </Row> */}\r\n </Container>\r\n </div>\r\n );\r\n }\r\n\r\n let isStock = this.props.item.categoryUniqueCode === \"STOCK\";\r\n if (isStock) {\r\n return (\r\n <div key={this.props.item}>\r\n <Container className=\"finance-container\">\r\n <Row>\r\n <Col>\r\n <FormControl light alignLeft icon=\"fas fa-building-columns\" isRequired={true} field={this.state.fields.getFieldByName(\"otherInstitutionName\")} customLabel={\"Institution\"} ></FormControl>\r\n </Col>\r\n <Col>\r\n <FormControl light alignLeft field={this.state.fields.getFieldByName(\"currentBalance\")} ></FormControl>\r\n </Col>\r\n <Col md={4} sm={12}>\r\n <FormControl light alignLeft field={this.state.fields.getFieldByName(\"usedForDeposit\")} ></FormControl>\r\n </Col>\r\n </Row>\r\n </Container>\r\n </div>\r\n );\r\n }\r\n\r\n let isCreditCard = this.props.item.categoryUniqueCode === \"CREDITCARD\";\r\n if (isCreditCard) {\r\n return (\r\n <div key={this.props.item}>\r\n <Container className=\"finance-container\">\r\n <Row>\r\n <>\r\n <Col md={isOtherInstitutionSelected ? 3 : 6}>\r\n <FormControl light alignLeft icon=\"fas fa-building-columns\" isRequired={true} field={this.state.fields.getFieldByName(\"institutionId\")} ></FormControl>\r\n </Col>\r\n {isOtherInstitutionSelected === true &&\r\n <Col md={3}>\r\n <FormControl light alignLeft isRequired={true} field={this.state.fields.getFieldByName(\"otherInstitutionName\")} ></FormControl>\r\n </Col>\r\n }\r\n </>\r\n <Col>\r\n <FormControl light alignLeft isRequired={true} icon=\"fa-regular fa-credit-card\" field={this.state.fields.getFieldByName(\"accountNumber\")} isInvalid={this.props.checkAccountNumber} invalidText=\"Needs to be 4 digits!\"></FormControl>\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col md={3}>\r\n <FormControl light alignLeft field={this.state.fields.getFieldByName(\"limit\")} customLabel=\"Credit Limit\"></FormControl>\r\n </Col>\r\n <Col md={3}>\r\n <FormControl light alignLeft field={this.state.fields.getFieldByName(\"currentBalance\")} ></FormControl>\r\n </Col>\r\n <Col md={3}>\r\n <FormControl light alignLeft field={this.state.fields.getFieldByName(\"planOnClearingTheBalance\")} ></FormControl>\r\n </Col>\r\n <Col md={3}>\r\n <FormControl light alignLeft field={this.state.fields.getFieldByName(\"isJoint\")}></FormControl>\r\n </Col>\r\n </Row>\r\n </Container>\r\n </div>\r\n );\r\n }\r\n\r\n let isSavings = this.props.item.categoryUniqueCode === \"SAVING\";\r\n if (isSavings) {\r\n return (\r\n <div key={this.props.item}>\r\n <Container className={`finance-container ${this.props.className??''}`}>\r\n <Row>\r\n <Col xs={12} md={isOtherInstitutionSelected ? 3 : 6}>\r\n <FormControl light alignLeft icon=\"fas fa-building-columns\" isRequired={true} field={this.state.fields.getFieldByName(\"institutionId\")} ></FormControl>\r\n </Col>\r\n {isOtherInstitutionSelected === true &&\r\n <Col xs={12} md={3}>\r\n <FormControl light alignLeft isRequired={true} field={this.state.fields.getFieldByName(\"otherInstitutionName\")} ></FormControl>\r\n </Col>\r\n }\r\n <Col xs={12} md={6}>\r\n <FormControl light alignLeft isRequired={true} icon=\"fa-regular fa-credit-card\" field={this.state.fields.getFieldByName(\"accountNumber\")} isInvalid={this.props.checkAccountNumber} invalidText=\"Needs to be 4 digits!\"></FormControl>\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col md={6}>\r\n <FormControl light alignLeft field={this.state.fields.getFieldByName(\"currentBalance\")} ></FormControl>\r\n </Col>\r\n <Col md={3}>\r\n <FormControl light alignLeft field={this.state.fields.getFieldByName(\"recurringMonthlyValue\")} customLabel=\"Monthly Savings Amount\"></FormControl>\r\n </Col>\r\n <Col md={3}>\r\n <FormControl light alignLeft field={this.state.fields.getFieldByName(\"isJoint\")}></FormControl>\r\n </Col>\r\n </Row>\r\n </Container>\r\n </div>\r\n );\r\n }\r\n\r\n let institutionAsTextField = this.props.item.categoryUniqueCode === \"FOREIGNACCOUNT\";\r\n return (\r\n <div key={this.props.item}>\r\n <Container className={`finance-container ${this.props.className??''}`}>\r\n <Row>\r\n {institutionAsTextField === true &&\r\n <Col xs={12} md={\"auto\"}>\r\n <FormControl light alignLeft icon=\"fas fa-building-columns\" isRequired={true} field={this.state.fields.getFieldByName(\"otherInstitutionName\")} customLabel={\"Institution\"} ></FormControl>\r\n </Col>\r\n }\r\n {institutionAsTextField === false &&\r\n <>\r\n <Col xs={12} md={\"auto\"}>\r\n <FormControl light alignLeft icon=\"fas fa-building-columns\" isRequired={true} field={this.state.fields.getFieldByName(\"institutionId\")} ></FormControl>\r\n </Col>\r\n {isOtherInstitutionSelected === true &&\r\n <Col xs={12} md={\"auto\"}>\r\n <FormControl light alignLeft isRequired={true} field={this.state.fields.getFieldByName(\"otherInstitutionName\")} ></FormControl>\r\n </Col>\r\n }\r\n </>\r\n }\r\n <Col xs={12} md={\"auto\"}>\r\n <FormControl light alignLeft isRequired={true} icon=\"fa-regular fa-credit-card\" field={this.state.fields.getFieldByName(\"accountNumber\")} isInvalid={this.props.checkAccountNumber} invalidText=\"Needs to be 4 digits!\"></FormControl>\r\n </Col>\r\n <Col xs={12} md={\"auto\"}>\r\n <FormControl light alignLeft field={this.state.fields.getFieldByName(\"isJoint\")}></FormControl>\r\n </Col>\r\n </Row>\r\n </Container>\r\n </div>\r\n );\r\n }\r\n}","import axios from \"axios\";\r\nimport AnimateHeight from \"react-animate-height\";\r\nimport { Stack, Container, Row, Col, Modal, Form } from \"react-bootstrap\";\r\nimport { ApplicableTo, HasAny, MortgageDocumentStatusCode, PortalDocumentType, PortalMortgageDocumentModel } from \"../../models/PortalMortgageDocumentModel\";\r\nimport { IFileItem } from \"../DocumentManager\";\r\nimport { FileUpload } from \"../FileUpload\";\r\nimport * as Icons from \"react-bootstrap\";\r\nimport { UserContextComponent } from \"../UserContextComponent\";\r\nimport { Tooltip } from \"../Tooltip\";\r\nimport { Navigate } from \"react-router-dom\";\r\nimport { OpenBanking } from \"../../pages/OpenBanking\";\r\nimport { ChevronUp } from \"react-bootstrap-icons\";\r\nimport { UploadResponse } from \"../../models/UploadResponse\";\r\nimport { logger } from \"../../helper/Logger\";\r\nimport { AIPType } from \"../../models/PortalAIPApplication\";\r\nimport { FileUploadLegacy } from \"../FileUploadLegacy\";\r\nimport { TransactionComments } from \"./TransactionComments\";\r\nimport DraggableModal from \"../DraggableModal\";\r\nimport { Pill } from \"./Pill\";\r\nimport { IPillElementModel } from \"./PillElement\";\r\nimport { Finance } from \"../Finance/Finance\";\r\nimport { PortalContactModel } from \"../../models/PortalContactModel\";\r\n\r\ninterface IFinancePillProps {\r\n mortgageId: string | undefined;\r\n document: PortalMortgageDocumentModel;\r\n files: IFileItem[];\r\n contactId: string | null;\r\n helperTexts: any[];\r\n applicantNo: number;\r\n onDone(mortgageDocumentId: string, status: MortgageDocumentStatusCode): void;\r\n onUploadComplete?(url: string): void;\r\n setContact(contact: any): void;\r\n refreshParent(): any;\r\n}\r\n\r\ninterface IFinancePillState {\r\n isCollapsed: boolean;\r\n isHelpTextCollapsed: boolean;\r\n files: IFileItem[];\r\n showPinDialog: boolean;\r\n customerComment: string;\r\n originalPin: string;\r\n pin: string;\r\n selectedFileName: string;\r\n idPalLoader: boolean;\r\n selectedFileUploadId: string;\r\n useOpenBanking: boolean;\r\n navigateTo: string | null;\r\n uploadcollapsed: boolean;\r\n showTransactionComments: boolean;\r\n modalpage: number;\r\n isSaving: boolean;\r\n isSavingForFiles: boolean;\r\n isDirty: boolean;\r\n validationError: boolean;\r\n duplicateAccountError: boolean;\r\n}\r\n\r\nexport class FinancePill extends UserContextComponent<IFinancePillProps, IFinancePillState> {\r\n private documentType: PortalDocumentType | null;\r\n\r\n constructor(props: IFinancePillProps) {\r\n super(props);\r\n this.state = { \r\n isCollapsed: !(this.props.document as any).autoOpen,\r\n files: this.props.files, \r\n uploadcollapsed: this.props.files.length > 0, \r\n showPinDialog: false, \r\n customerComment: \"\", \r\n originalPin: \"\", \r\n pin: \"\", \r\n selectedFileName: \"\", \r\n idPalLoader: false, \r\n selectedFileUploadId: \"\", \r\n navigateTo: null, \r\n useOpenBanking: true, \r\n isHelpTextCollapsed: true,\r\n showTransactionComments: false,\r\n modalpage: 1,\r\n isSaving: false,\r\n isSavingForFiles: false,\r\n isDirty: false,\r\n validationError: false,\r\n duplicateAccountError: false,\r\n };\r\n this.downloadFile = this.downloadFile.bind(this);\r\n\r\n this.uploadComplete = this.uploadComplete.bind(this);\r\n this.deleteComplete = this.deleteComplete.bind(this);\r\n this.confirmUpload = this.confirmUpload.bind(this);\r\n this.getPillClass = this.getPillClass.bind(this);\r\n\r\n\r\n this.documentType = this.props.document.documentType;\r\n\r\n this.closePinDialog = this.closePinDialog.bind(this);\r\n this.showCommentAndPinDialog = this.showCommentAndPinDialog.bind(this);\r\n this.saveCommentAndPin = this.saveCommentAndPin.bind(this);\r\n\r\n this.collapsePill = this.collapsePill.bind(this);\r\n this.handleClose = this.handleClose.bind(this);\r\n this.createDocument = this.createDocument.bind(this);\r\n this.updateDocument = this.updateDocument.bind(this);\r\n this.deleteDocumentEx = this.deleteDocumentEx.bind(this);\r\n this.goToFiles = this.goToFiles.bind(this);\r\n this.isDirty = this.isDirty.bind(this);\r\n }\r\n\r\n componentDidMount(): void {\r\n let context = this.getContext();\r\n (this.props.document as any).autoOpen = false;\r\n }\r\n\r\n closePinDialog() {\r\n this.setState({ showPinDialog: false });\r\n }\r\n\r\n showCommentAndPinDialog(filename: string, uploadId: string, custComment: string, pin: string) {\r\n this.setState({ selectedFileName: filename, customerComment: custComment, originalPin: pin, pin: pin, showPinDialog: true, selectedFileUploadId: uploadId });\r\n }\r\n\r\n saveCommentAndPin() {\r\n // Send in a null for the pin if not updated. Sending in a pin will trigger the automatic file unlock which clears the Comments on success, and we only want that when a pin changes.\r\n axios.post('/SP/UpdateCommentPin', null, { params: { mortgageId: this.props.mortgageId, filename: this.state.selectedFileName, uploadId: this.state.selectedFileUploadId, custComment: this.state.customerComment, pin: (this.state.pin == this.state.originalPin ? null : this.state.pin), mortgageDocumentId: this.props.document.mortgageDocumentId } })\r\n .then(response => {\r\n this.setState({ showPinDialog: false });\r\n let items: IFileItem[] = this.state.files;\r\n let item = items.find(x => x.name === this.state.selectedFileName);\r\n if (item) {\r\n item.customerComment = this.state.customerComment;\r\n item.pin = this.state.pin;\r\n item.status = \"Awaiting advisor review\";\r\n if (this.state.pin != this.state.originalPin) {\r\n item.comment = \"\";\r\n }\r\n }\r\n })\r\n .catch((e) => {\r\n logger.log(e);\r\n });\r\n }\r\n\r\n getPillClass() {\r\n if (this.needsAction() && this.props.document.statusReason !== MortgageDocumentStatusCode.Approved)\r\n return \"needsattention\";\r\n if (this.props.document.statusReason === MortgageDocumentStatusCode.Active)\r\n return this.state.files?.length > 0 ? \"inprogress\" : \"notstarted\";\r\n if (this.props.document.statusReason === MortgageDocumentStatusCode.Uploaded)\r\n return \"done\";\r\n if (this.props.document.statusReason === MortgageDocumentStatusCode.InProgress)\r\n return \"inprogress\"\r\n if (this.props.document.statusReason === MortgageDocumentStatusCode.Approved)\r\n return \"approved\"\r\n\r\n return \"notstarted\";\r\n }\r\n\r\n needsAction() {\r\n var filesWithComments = this.props.files.filter(f => (\r\n (f.comment??\"\")!==\"\" || \r\n (f.transactionComments??[]).filter(t => !t.customerComment).length>0\r\n ));\r\n if (this.props.document.comments ||\r\n filesWithComments.length > 0 ||\r\n this.props.document.statusReason === MortgageDocumentStatusCode.NeedsAction)\r\n return true;\r\n return false;\r\n }\r\n\r\n private uploadComplete(data: UploadResponse, category: string, mortgageDocumentId: string, contactId: string, uploadId: any) {\r\n if (this.props.onUploadComplete)\r\n this.props.onUploadComplete(data.url);\r\n let items: IFileItem[] = this.state.files;\r\n let mortgageDocument = items.find(x => x.mortgageDocumentId === mortgageDocumentId)?.mortgageDocument;\r\n let item: IFileItem = {\r\n id: items.length + 100000,\r\n category: category,\r\n mortgageDocument: mortgageDocument,\r\n mortgageDocumentId: mortgageDocumentId,\r\n name: data.url.split('/').pop()!,\r\n status: (data.accepted ? \"For advisor review\" : \"Rejected\"),\r\n comment: data.message || \"\",\r\n customerComment: \"\",\r\n pin: \"\",\r\n uploadId: uploadId\r\n };\r\n items.push(item);\r\n this.setState({ files: items, isDirty: true });\r\n }\r\n\r\n private deleteComplete(data: any, mortgageDocumentId: string) {\r\n let items: IFileItem[] = this.state.files;\r\n let itemIndex = items.findIndex(x => x.mortgageDocumentId === mortgageDocumentId && x.name === data.split('/').pop());\r\n if (itemIndex > -1)\r\n items.splice(itemIndex, 1);\r\n this.setState({ files: items });\r\n }\r\n\r\n confirmUpload(mortgageDocumentId: string): void {\r\n const context = this.getContext();\r\n axios.post('/MortgageDocuments/MarkMortgageDocumentAsUploaded', null, { params: { mortgageDocumentId: mortgageDocumentId, mortgageId: context.mortgage?.mortgageId } })\r\n .then(response => {\r\n this.props.document.statusReason = MortgageDocumentStatusCode.Uploaded;\r\n context.updateDoc(this.props.document);\r\n this.setState({isDirty: true});\r\n this.props.onDone(mortgageDocumentId, MortgageDocumentStatusCode.Uploaded);\r\n });\r\n }\r\n\r\n downloadFile(mortgageId: string | undefined, fileName: string, uploadId: string): void {\r\n if (mortgageId) {\r\n axios({\r\n url: `/SP/DownloadFile?mortgageId=${mortgageId}&fileName=${encodeURIComponent(fileName)}&uploadId=${uploadId}`,\r\n method: \"GET\",\r\n responseType: \"blob\"\r\n }).then(response => {\r\n const url = window.URL.createObjectURL(new Blob([response.data]));\r\n const link = document.createElement(\"a\");\r\n link.href = url;\r\n if (response.headers[\"content-type\"] === \"application/pdf\" && fileName.indexOf(\".pdf\") === -1) {\r\n fileName = fileName + \".pdf\";\r\n }\r\n link.setAttribute(\"download\", fileName);\r\n document.body.appendChild(link);\r\n link.click();\r\n if (link.parentNode != null)\r\n link.parentNode.removeChild(link);\r\n });\r\n }\r\n }\r\n\r\n getStatusColour() {\r\n var currentStatus = this.props.document.statusReason ?? 0;\r\n if (currentStatus === MortgageDocumentStatusCode.Approved){\r\n return 'var(--chertreuse)';\r\n } else if (this.needsAction()) {\r\n return 'var(--limestone)';\r\n } else if (currentStatus === MortgageDocumentStatusCode.Uploaded) {\r\n return 'var(--chartreuse)';\r\n } else if (currentStatus === MortgageDocumentStatusCode.InProgress) {\r\n return 'var(--sage)';\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n getStatusText() {\r\n var currentStatus = this.props.document.statusReason ?? 0;\r\n if (currentStatus === MortgageDocumentStatusCode.Approved){\r\n return \"Statements Complete\";\r\n } else if (this.needsAction()) {\r\n return \"Needs Action\";\r\n } else if (currentStatus === MortgageDocumentStatusCode.Uploaded) {\r\n return \"Statements Uploaded\";\r\n } else if (currentStatus === MortgageDocumentStatusCode.InProgress) {\r\n return \"Statements Needed\";\r\n }\r\n return \"Waiting\";\r\n }\r\n\r\n collapsePill() {\r\n if (this.state.files.length > 0 && this.props.document.statusReason !== MortgageDocumentStatusCode.Approved) {\r\n this.confirmUpload(this.props.document.mortgageDocumentId!);\r\n }\r\n this.setState({ isCollapsed: true, isSaving: false, isSavingForFiles: false, modalpage: 1 });\r\n }\r\n\r\n handleClose() {\r\n if (this.state.isDirty) {\r\n this.setState({isSaving: true});\r\n if ((this.props.document as any).new) {\r\n this.createDocument(false);\r\n } else {\r\n this.updateDocument(false);\r\n }\r\n } else {\r\n if((this.props.document as any).new) {\r\n this.getContext().deleteDoc(this.props.document);\r\n }\r\n this.collapsePill();\r\n }\r\n }\r\n\r\n createDocument = (goToFiles: boolean) => {\r\n let context = this.getContext();\r\n let doc = this.props.document;\r\n\r\n if (doc.accountNumber && this.accountNumberAlreadyExists(doc)) {\r\n this.setState({duplicateAccountError: true, isSaving: false, isSavingForFiles: false});\r\n return;\r\n }\r\n if (this.state.duplicateAccountError) {\r\n this.setState({duplicateAccountError: false});\r\n }\r\n\r\n let institutionName = doc.institutionId != null ? context.institutions.find(i => i.value === doc.institutionId)?.text : doc.otherInstitutionName;\r\n var newMortgageDoc = {\r\n documentId: doc.documentId,\r\n institutionId: doc.institutionId,\r\n mortgageId: doc.mortgageId,\r\n applicableTo: this.props.applicantNo === 1 ? ApplicableTo.Primary : ApplicableTo.Secondary,\r\n name: ((institutionName ?? '') + ' ' + (doc.accountNumber ?? '')).trim(),\r\n category: doc.category,\r\n categoryId: doc.categoryId,\r\n document: doc.document,\r\n institution: institutionName,\r\n currentBalance: doc.currentBalance ?? 0,\r\n documentType: doc.documentType,\r\n limit: doc.limit ?? 0,\r\n termLeft: doc.termLeft ?? 0,\r\n termPeriod: doc.termPeriod ?? null,\r\n termRemaining: doc.termRemaining ?? null,\r\n categoryUniqueCode: doc.categoryUniqueCode,\r\n accountNumber: doc.accountNumber ?? \"\",\r\n planOnClearingTheBalance: doc.planOnClearingTheBalance,\r\n recurringYearlyValue: doc.recurringYearlyValue,\r\n recurringMonthlyValue: doc.recurringMonthlyValue,\r\n contactId: this.props.contactId,\r\n hasAny: HasAny.Yes,\r\n statusReason: MortgageDocumentStatusCode.Active,\r\n isJoint: doc.isJoint,\r\n otherInstitutionName: doc.otherInstitutionName,\r\n key: this.props.document.mortgageDocumentId\r\n };\r\n\r\n axios.post('/MortgageDocuments/CreateDocument', newMortgageDoc)\r\n .then(response => {\r\n let resp = response.data;\r\n var contact = this.getContact();\r\n contact.assetsInfoPercentage = resp.assetsPercentage;\r\n contact.bankingInfoPercentage = resp.bankingPercentage;\r\n contact.percentageOfCompletion = (\r\n (contact.personalInfoPercentage??0) +\r\n (contact.residentialInfoPercentage??0) +\r\n (contact.employmentInfoPercentage??0) +\r\n (contact.bankingInfoPercentage??0) +\r\n (contact.assetsInfoPercentage??0)\r\n ) / 5;\r\n\r\n // BANDAID - THIS IS TO KEEP THE APPLICANT MENU IN SYNC AS IT USES THE CONTEXT\r\n let context = this.getContext();\r\n if (this.props.applicantNo === 1) {\r\n context.mortgage!.primaryApplicant = contact;\r\n } else {\r\n context.mortgage!.secondaryApplicant = contact;\r\n }\r\n context.updateDoc(newMortgageDoc);\r\n context.updateId(doc.mortgageDocumentId, resp.mortgageDocumentId);\r\n\r\n this.props.setContact(contact);\r\n if (goToFiles) {\r\n this.setState({ modalpage:2, isSaving: false, isSavingForFiles: false });\r\n } else {\r\n this.collapsePill();\r\n }\r\n })\r\n .catch(() => {\r\n this.setState({ isSaving: false, isSavingForFiles: false });\r\n }\r\n );\r\n }\r\n\r\n \r\n accountNumberAlreadyExists(doc:PortalMortgageDocumentModel) {\r\n var context = this.getContext();\r\n if (context.mortgageDocumentList != null) {\r\n let categories = ['STATEMENT','SAVING'];\r\n\r\n let docs = context.mortgageDocumentList.filter(\r\n c => \r\n categories.includes(c.categoryUniqueCode??'') && \r\n c.accountNumber === doc.accountNumber &&\r\n c.mortgageDocumentId !== doc.mortgageDocumentId\r\n );\r\n\r\n return docs.length > 0;\r\n }\r\n return [];\r\n }\r\n\r\n updateDocument = (goToFiles: boolean) => {\r\n let doc = this.props.document;\r\n if (doc.accountNumber && this.accountNumberAlreadyExists(doc)) {\r\n this.setState({duplicateAccountError: true, isSaving: false, isSavingForFiles: false});\r\n return;\r\n }\r\n if (this.state.duplicateAccountError) {\r\n this.setState({duplicateAccountError: false});\r\n }\r\n\r\n doc.currentBalance = (!doc.currentBalance || doc.currentBalance?.toString().trim() === \"\") ? 0 : doc.currentBalance;\r\n doc.applicableTo = this.props.applicantNo === 1 ? ApplicableTo.Primary : ApplicableTo.Secondary;\r\n let context = this.getContext();\r\n doc.institution = (doc.institutionId != null ? context.institutions.find(i => i.value === doc.institutionId)?.text : doc.otherInstitutionName) ?? '';\r\n doc.name = ((doc.institution ?? '') + ' ' + (doc.accountNumber ?? '')).trim();\r\n\r\n axios.post('/MortgageDocuments/UpdateDocument', doc)\r\n .then(response => {\r\n var contact = this.getContact();\r\n\r\n // There's a rogue order of events someplace blowing up the asset calculation.\r\n // To protect against this we may get a -1 back. Handle that situation\r\n if (response.data != -1) {\r\n var percentages = response.data;\r\n contact.assetsInfoPercentage = percentages.assetsAndLoans;\r\n contact.bankingInfoPercentage = percentages.banking; \r\n contact.percentageOfCompletion = (\r\n (contact.personalInfoPercentage??0) +\r\n (contact.residentialInfoPercentage??0) +\r\n (contact.employmentInfoPercentage??0) +\r\n (contact.assetsInfoPercentage??0) + \r\n (contact.bankingInfoPercentage??0)\r\n ) / 5;\r\n }\r\n \r\n // BANDAID - THIS IS TO KEEP THE APPLICANT MENU IN SYNC AS IT USES THE CONTEXT\r\n let context = this.getContext();\r\n if (this.props.applicantNo === 1) {\r\n context.mortgage!.primaryApplicant = contact;\r\n } else {\r\n context.mortgage!.secondaryApplicant = contact;\r\n }\r\n this.props.setContact(contact);\r\n context.updateDoc(doc);\r\n\r\n if (goToFiles) {\r\n this.setState({ modalpage:2, isSaving: false, isSavingForFiles: false });\r\n } else {\r\n this.collapsePill();\r\n }\r\n })\r\n .catch(() => {\r\n this.setState({ isSaving: false, isSavingForFiles: false });\r\n });\r\n }\r\n \r\n \r\n deleteDocumentEx() {\r\n if (!this.state.isSaving) {\r\n this.setState({isSaving: true});\r\n this.deleteDocument();\r\n }\r\n }\r\n\r\n deleteDocument = () => {\r\n let doc = this.props.document as any;\r\n if (doc.new || doc.mortgageDocumentId.indexOf(\".\") > -1) {\r\n logger.log(\"cancelDocument\");\r\n //this.cancelDocument(e, doc);\r\n this.getContext().deleteDoc(doc);\r\n this.setState({isCollapsed: true, isSaving: false});\r\n }\r\n else {\r\n logger.log(\"DeleteDocument\");\r\n axios.post('/MortgageDocuments/DeleteDocument', null, { params: { mortgageDocumentId: doc.mortgageDocumentId } })\r\n .then(response => {\r\n this.getContext().deleteDoc(doc);\r\n this.setState({isCollapsed: true, isSaving: false});\r\n })\r\n .catch(() => {\r\n this.setState({isSaving: false});\r\n });\r\n }\r\n }\r\n\r\n getContact() {\r\n let context = this.getContext();\r\n var contact:PortalContactModel;\r\n if (this.props.applicantNo === 1) {\r\n contact = context.mortgage!.primaryApplicant!;\r\n } else {\r\n contact = context.mortgage!.secondaryApplicant!;\r\n }\r\n return contact;\r\n }\r\n\r\n goToFiles() {\r\n let doc = this.props.document as any;\r\n if (!this.props.document.institutionId) \r\n {\r\n this.setState({ validationError: true });\r\n }\r\n else {\r\n if (doc.new || doc.mortgageDocumentId.indexOf(\".\") > -1) {\r\n this.setState({ isSavingForFiles: true });\r\n this.createDocument(true)\r\n } else {\r\n if (this.state.isDirty) {\r\n this.setState({ isSavingForFiles: true });\r\n this.updateDocument(true);\r\n } else {\r\n this.setState({ modalpage: 2 });\r\n }\r\n }\r\n }\r\n }\r\n\r\n isDirty(value: boolean) {\r\n const context = this.getContext();\r\n let doc = this.props.document;\r\n\r\n let institutionName = doc.institutionId != null ? context.institutions.find(i => i.value === doc.institutionId)?.text : doc.otherInstitutionName;\r\n this.props.document.institution = institutionName ?? '';\r\n\r\n this.setState({isDirty: value});\r\n }\r\n\r\n render() {\r\n const context = this.getContext();\r\n var pillStatus = this.getPillClass();\r\n var comments = this.state.files.filter(f => f.comment || (f.transactionComments && f.transactionComments.length > 0));\r\n const {institution, accountNumber, isJoint} = (this.props.document);\r\n\r\n if (this.state.navigateTo) {\r\n return <Navigate to={this.state.navigateTo} />;\r\n }\r\n\r\n // This section displays on a different place depending on whether you are on mobile or desktop\r\n var commentsAndFiles = <>\r\n {!this.props.document.comments && comments.length === 0 && this.state.files.length === 1 &&\r\n <>\r\n <div className=\"pb-1\"><span><strong>{this.state.files.length} File</strong> added</span></div>\r\n </>\r\n }\r\n {!this.props.document.comments && comments.length === 0 && this.state.files.length !== 1 && \r\n <>\r\n <div className=\"pb-1\"><span><strong>{this.state.files.length} Files</strong> added</span></div>\r\n </>\r\n }\r\n {(this.props.document.comments || comments.length > 0) &&\r\n <div className=\"box box-travertine\">\r\n <i className=\"fas fa-triangle-exclamation pill-big needsattention\"></i>\r\n {this.props.document.comments &&\r\n <div className=\"pt-2\">\r\n <Row>\r\n <Col>\r\n <h6 className=\"mb-0\"><strong>For review</strong></h6>\r\n <h6 className=\"render-linebreaks\">{this.props.document.comments}</h6>\r\n </Col>\r\n </Row>\r\n </div>\r\n }\r\n \r\n {comments.length > 0 && comments.map((item, idx) => {\r\n return <div key={\"comment-\"+item.id} className=\"pt-2\">\r\n <Row>\r\n <Col>\r\n <h6 className=\"mb-0 filename\"><strong>{item.name}</strong></h6>\r\n {item.comment &&\r\n <h6 className=\"render-linebreaks\">{item.comment} <span className=\"pointer doddltext\" style={{marginLeft: 4}} onClick={e => this.showCommentAndPinDialog(item.name, item.uploadId, item.customerComment, item.pin)}><u><i className=\"fa-solid fa-reply\"></i> reply</u></span></h6>\r\n }\r\n <TransactionComments item={item} mortgageId={this.props.mortgageId!} />\r\n </Col>\r\n </Row>\r\n </div>;\r\n }\r\n )}\r\n </div>\r\n }\r\n\r\n {this.state.files.map((item, idx) => {\r\n return <div key={\"file-\" + item.id} className={`document-file ${item.status === 'Approved' ? 'complete' : ''}`}>\r\n <Row>\r\n <Col xs=\"1\">\r\n {item.status === 'Approved' &&\r\n <Tooltip tooltip={{ \"fieldname\": \"\", \"title\": \"\", \"content\": \"doddl will review your documents and get back to you soon!\" }}>\r\n <i className=\"fa fa-circle-check file-icon\" style={{color: 'var(--teal)'}}></i>\r\n </Tooltip>\r\n }\r\n {item.status === 'Rejected' &&\r\n <Tooltip tooltip={{ \"fieldname\": \"\", \"title\": \"\", \"content\": \"There is an issue with this document\" }}>\r\n <i className=\"fas fa-triangle-exclamation pill-big pill-icon needsattention\"></i>\r\n </Tooltip>\r\n }\r\n {item.status !== 'Approved' && item.status !== 'Rejected' &&\r\n <i className=\"far fa-clock file-icon\"></i>\r\n }\r\n </Col>\r\n <Col xs=\"8\">\r\n <h6 className=\"filename\">\r\n <strong><span style={{ paddingLeft: 10, cursor: \"pointer\" }} onClick={e => { this.downloadFile(this.props.mortgageId, item.name, item.uploadId); }}>{item.name}</span></strong>\r\n </h6>\r\n </Col>\r\n <Col xs=\"3\" className=\"text-end\">\r\n <Tooltip tooltip={{ \"fieldname\": \"\", \"title\": \"\", \"content\": \"Download file\" }}>\r\n <i className=\"fas fa-cloud-download pointer pe-2\" onClick={e => { this.downloadFile(this.props.mortgageId, item.name, item.uploadId); }}></i>\r\n </Tooltip>\r\n <Tooltip tooltip={{ \"fieldname\": \"\", \"title\": \"\", \"content\": \"Add a comment or let us know if a pin is required to unlock this file\" }}>\r\n <i className=\"fas fa-pencil pointer pe-2\" onClick={e => this.showCommentAndPinDialog(item.name, item.uploadId, item.customerComment, item.pin)}></i>\r\n </Tooltip>\r\n {/* <Tooltip tooltip={{ \"fieldname\": \"\", \"title\": \"\", \"content\": \"Delete this file\" }}>\r\n <i className=\"fa fa-trash pointer pe-2\" onClick={e => this.showCommentAndPinDialog(item.name, item.uploadId, item.customerComment, item.pin)}></i>\r\n </Tooltip> */}\r\n\r\n </Col>\r\n </Row>\r\n </div>\r\n } \r\n )}\r\n\r\n </>;\r\n var institutionLookupItem = context.institutions.find(x => x.value == this.props.document.institutionId);\r\n var bg = institutionLookupItem?.item.logoTile ?? 'https://doddl.ie/wp-content/uploads/bank-tile.png';\r\n\r\n return (\r\n <Container className={`finance-pill-container w-360 ${' ' ?? pillStatus}`} >\r\n <div title={this.props.document.name}\r\n onClick={() => this.setState({ isCollapsed: !this.state.isCollapsed })}\r\n className={`finance-pill w-360 nowrap`}>\r\n <Row>\r\n <Col xs={2} className=\"pt-col me-3-mobile\">\r\n <div className={\"finance-pill-logo\"} style={{backgroundImage: `url('${bg}')`}} />\r\n </Col>\r\n <Col xs={7} className=\"text-start pt-col\">\r\n <div>\r\n <strong>{institution??''}</strong>\r\n <span className=\"ms-2 me-2\">|</span>\r\n {accountNumber??''}\r\n <span className=\"ms-2 me-2\">|</span>\r\n <i className=\"fa fa-user\" />\r\n {isJoint && <i className=\"fa fa-user ps-1\" /> }\r\n </div>\r\n </Col>\r\n <Col xs={3} className=\"pt-col\">\r\n <div style={{marginTop: -4}}>\r\n {this.props.document.statusReason === MortgageDocumentStatusCode.Approved && !this.needsAction() &&\r\n <>\r\n <Row>\r\n <Tooltip tooltip={{ \"fieldname\": \"\", \"title\": \"\", \"content\": \"Your documents have been reviewed and approved!\" }}>\r\n <i className={`fas fa-circle-check pill-big`}></i>\r\n </Tooltip>\r\n </Row>\r\n <Row>\r\n <p className=\"tiny impact pt-1\">COMPLETE</p>\r\n </Row>\r\n </>\r\n }\r\n\r\n {this.props.document.statusReason === MortgageDocumentStatusCode.Uploaded && !this.needsAction() &&\r\n <>\r\n <Row>\r\n <Tooltip tooltip={{ \"fieldname\": \"\", \"title\": \"\", \"content\": \"doddl will review your documents and get back to you soon!\" }}>\r\n <i className=\"far fa-clock pill-big inprogress\"></i>\r\n </Tooltip>\r\n </Row>\r\n <Row>\r\n <p className=\"tiny pt-1\">CHECKING</p>\r\n </Row>\r\n </>\r\n }\r\n {this.needsAction() &&\r\n <>\r\n <Row>\r\n <Tooltip tooltip={{ \"fieldname\": \"\", \"title\": \"\", \"content\": \"There are some issues that need to be addressed on your documents\" }}>\r\n <i className=\"fas fa-triangle-exclamation pill-big needsattention\"></i>\r\n </Tooltip>\r\n </Row>\r\n <Row>\r\n <p className=\"tiny pt-1\">ATTENTION</p>\r\n </Row>\r\n </>\r\n }\r\n </div>\r\n </Col>\r\n </Row>\r\n </div>\r\n <Modal className=\"modal-fullscreen-xs\" size=\"xl\" show={!this.state.isCollapsed} onHide={this.collapsePill} centered>\r\n <Modal.Header>\r\n {this.state.modalpage === 1 &&\r\n <Stack direction=\"horizontal\" gap={2} className=\"pill-buttons-right pe-3 pt-3\">\r\n {this.state.isSavingForFiles &&\r\n <button className='btn btn-light big'><Icons.Spinner size=\"sm\" animation=\"border\" role=\"status\" /></button>}\r\n \r\n {/* Hide upload button for savings account */}\r\n {/* {(!this.state.isSavingForFiles && context.mortgage?.approvalType === AIPType.HouseHunter && this.props.document.categoryUniqueCode===\"SAVING\") ?\"\": */}\r\n <button className=\"btn btn-secondary big m nowrap\" onClick={this.goToFiles}>{'Upload Statements >'}</button>{/*}*/}\r\n \r\n\r\n {this.state.isSaving ?\r\n <button className='btn btn-light big'><Icons.Spinner size=\"sm\" animation=\"border\" role=\"status\" /></button>\r\n :\r\n <button className='btn btn-light big' onClick={this.handleClose}>Close</button>\r\n }\r\n </Stack>\r\n }\r\n </Modal.Header>\r\n {this.state.modalpage === 1 && <> \r\n <Modal.Body className=\"px-4 py-4\">\r\n <Row>\r\n <Col xs={12} className=\"pe-4 minheight200\">\r\n <h1 className=\"pb-3 minheight64 desktop-only\">{institution}</h1>\r\n {this.state.validationError &&\r\n <>\r\n <p className=\"needsattention desktop-only\">Please select the institution</p>\r\n <p className=\"needsattention mobile-only mt-5\">Please select the institution</p>\r\n </>\r\n }\r\n {this.state.duplicateAccountError &&\r\n <>\r\n <p className=\"needsattention desktop-only\">Account number already added</p>\r\n <p className=\"needsattention mobile-only mt-5\">Account number already added</p>\r\n </>\r\n }\r\n <Row className=\"xs-margin-top-3\">\r\n <Col xs={11}>\r\n <Finance \r\n className='mt-3'\r\n item={this.props.document} \r\n institutionList={context.institutions} \r\n helperTexts={this.props.helperTexts} \r\n checkAccountNumber={undefined}\r\n isDirty={this.isDirty}\r\n />\r\n </Col>\r\n <Col xs={1}>\r\n <div style={{ cursor: \"pointer\", top: \"40%\", position: \"relative\", fontSize: 25, color: \"rgb(153,153,153)\" }} className=\"far fa-trash-can\" onClick={e => this.deleteDocumentEx()}>\r\n </div>\r\n </Col>\r\n </Row>\r\n </Col>\r\n </Row>\r\n </Modal.Body>\r\n </>\r\n }\r\n {this.state.modalpage === 2 && <>\r\n <Modal.Body className=\"px-4 py-4\">\r\n <Row>\r\n <Col xs={12} md={8} className=\"pe-4 document-upload minheight200\">\r\n <h1 className=\"pb-3\">{institution}</h1>\r\n <h4 style={this.props.document.statusReason === MortgageDocumentStatusCode.Approved ? { paddingBottom: 10 } : { paddingBottom: 10 }} dangerouslySetInnerHTML={{ __html: this.props.document.helpText ?? \"\" }}></h4>\r\n {(this.needsAction() && (this.props.document.comments === \"\" || this.props.document.comments === null)) &&\r\n <br />\r\n }\r\n <div className=\"mobile-only\">\r\n {commentsAndFiles}\r\n </div>\r\n <div style={{paddingTop: 10}} />\r\n {this.props.document.statusReason !== MortgageDocumentStatusCode.Approved &&\r\n <>\r\n {context.mortgage?.useLegacyUploader \r\n \r\n ?\r\n <FileUploadLegacy\r\n mortgageId={context.mortgage?.mortgageId}\r\n contactId={this.props.contactId}\r\n category={this.props.document.category}\r\n mortgageDocumentId={this.props.document.mortgageDocumentId}\r\n onUploadComplete={(d: UploadResponse, uploadId: any) => { this.uploadComplete(d, this.props.document.category!, this.props.document.mortgageDocumentId!, this.props.contactId!, uploadId); }}\r\n onDeleteComplete={(d: any) => { this.deleteComplete(d, this.props.document.mortgageDocumentId!); }} />\r\n\r\n :\r\n <FileUpload\r\n mortgageId={context.mortgage?.mortgageId}\r\n contactId={this.props.contactId}\r\n category={this.props.document.category}\r\n mortgageDocumentId={this.props.document.mortgageDocumentId}\r\n onUploadComplete={(d: UploadResponse, uploadId: any) => { this.uploadComplete(d, this.props.document.category!, this.props.document.mortgageDocumentId!, this.props.contactId!, uploadId); }}\r\n onDeleteComplete={(d: any) => { this.deleteComplete(d, this.props.document.mortgageDocumentId!); }} />\r\n }\r\n </>\r\n }\r\n </Col>\r\n <Col xs={4}>\r\n <Stack direction=\"horizontal\" gap={2} className=\"pill-buttons-right\">\r\n {this.state.isSaving ?\r\n <button className='btn btn-light big'><Icons.Spinner size=\"sm\" animation=\"border\" role=\"status\" /></button>\r\n :\r\n <button className='btn btn-light big' onClick={this.collapsePill}>Close</button>\r\n }\r\n </Stack>\r\n\r\n <div className=\"desktop-only\">\r\n {commentsAndFiles}\r\n </div>\r\n </Col>\r\n </Row>\r\n\r\n </Modal.Body>\r\n <DraggableModal \r\n show={this.state.showPinDialog} \r\n onHide={() => { this.closePinDialog(); }} \r\n title={\"\"}\r\n body={\r\n <Form>\r\n <Form.Group className=\"mb-3\">\r\n <Form.Label>Comment</Form.Label>\r\n <Form.Control onMouseDown={(e) => {e.stopPropagation()}} disabled={this.props.document.statusReason === MortgageDocumentStatusCode.Approved && !this.needsAction()} as=\"textarea\" rows={3} defaultValue={this.state.customerComment} onChange={e => this.setState({ customerComment: e.target.value })} autoFocus />\r\n </Form.Group>\r\n <Form.Group className=\"mb-3\">\r\n <Form.Label>Document Password (if applicable)</Form.Label>\r\n <Form.Control onMouseDown={(e) => {e.stopPropagation()}} disabled={this.props.document.statusReason === MortgageDocumentStatusCode.Approved} type=\"password\" defaultValue={this.state.pin} onChange={e => this.setState({ pin: e.target.value })} />\r\n </Form.Group>\r\n </Form>\r\n }\r\n footer={\r\n <>\r\n <button className=\"btn btn-light\" onClick={this.closePinDialog}>\r\n Close\r\n </button>\r\n {this.props.document.statusReason !== MortgageDocumentStatusCode.Approved &&\r\n <button className=\"btn btn-standard\" onClick={this.saveCommentAndPin}>\r\n Save\r\n </button>\r\n }\r\n </>\r\n }\r\n />\r\n </>\r\n }\r\n </Modal>\r\n </Container>\r\n );\r\n }\r\n}","import React from \"react\";\r\nimport { Button, ButtonGroup } from \"react-bootstrap\";\r\n\r\ninterface IProps {\r\n size?: 's'|'m'|'l';\r\n className?: string;\r\n}\r\n\r\nexport class OpenBankingBubbles extends React.Component<IProps, any> {\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.state = { currentValue: props.value };\r\n }\r\n\r\n render() {\r\n const size = this.props.size ?? 'm';\r\n const margin = (size === 's' ? -50 : -85);\r\n const className = this.props.className??'';\r\n return (<>\r\n <div className={className} style={{display:'inline-block'}}>\r\n <div className={`bubble dark justify-center ${size}`} style={{marginRight:margin}}>\r\n <i className=\"fa-solid fa-building-columns\"></i>\r\n </div>\r\n <div className={`bubble white justify-center ${size}`}>\r\n <i className=\"fa-solid fa-arrow-right-arrow-left\"></i>\r\n </div>\r\n </div>\r\n </>\r\n );\r\n }\r\n}","import \"bootstrap/dist/css/bootstrap.min.css\";\r\nimport { Col, Container, Modal, Row, Stack } from \"react-bootstrap\";\r\nimport { Navigate } from \"react-router-dom\";\r\nimport { ApplicantPage } from \"./ApplicantPage\";\r\nimport { ApplicantService } from \"./ApplicantService\";\r\nimport { ApplicantBaseComponent } from \"./ApplicantBaseComponent\";\r\nimport {\r\n AggregatePill,\r\n AggregateStatus,\r\n AggregateType,\r\n IAggregateListItem,\r\n IAggregatePillProps,\r\n} from \"../components/Pills/AggregatePill\";\r\nimport { getTooltip } from \"../components/Tooltip\";\r\nimport {\r\n HasAny,\r\n MortgageDocumentStatusCode,\r\n ApplicableTo,\r\n PortalMortgageDocumentModel,\r\n PortalDocumentType,\r\n TransactionSource,\r\n} from \"../models/PortalMortgageDocumentModel\";\r\nimport { FinanceManager } from \"../components/Finance/FinanceManager\";\r\nimport UserContextState from \"../components/UserContext\";\r\nimport { MortgageSubType } from \"../models/PortalMortgageModel\";\r\nimport { Profile } from \"./Profile\";\r\nimport { OpenBanking } from \"./OpenBanking\";\r\nimport axios from \"axios\";\r\nimport { AIPType } from \"../models/PortalAIPApplication\";\r\nimport { FinancePill } from \"../components/Pills/FinancePill\";\r\nimport { DocumentManager } from \"../components/DocumentManager\";\r\nimport { PortalPage } from \"../components/PortalPage\";\r\nimport { OpenBankingBubbles } from \"../components/OpenBankingBubbles\";\r\n\r\nexport class ApplicantFinancial extends ApplicantBaseComponent {\r\n applicantService: ApplicantService;\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.prev = this.prev.bind(this);\r\n this.next = this.next.bind(this);\r\n this.getFilteredDocs = this.getFilteredDocs.bind(this);\r\n this.onDocumentDone = this.onDocumentDone.bind(this);\r\n this.waitForFiles = this.waitForFiles.bind(this);\r\n this.addOpenBankingChecker = this.addOpenBankingChecker.bind(this);\r\n this.openBankingChecker = this.openBankingChecker.bind(this);\r\n this.openBankingSuccess = this.openBankingSuccess.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n let context = this.getContext();\r\n this.applicantService = new ApplicantService(\r\n context,\r\n this,\r\n this.props.applicantNo\r\n );\r\n this.applicantService.getApplicantData();\r\n this.applicantService.getMortgageDocuments();\r\n this.applicantService.getDocumentTypes();\r\n this.applicantService.getFinanceTooltips();\r\n this.waitForFiles();\r\n }\r\n\r\n onDocumentDone(\r\n mortgageDocumentId: string,\r\n status: MortgageDocumentStatusCode\r\n ) {\r\n let context = this.getContext();\r\n var doc: PortalMortgageDocumentModel | undefined =\r\n context.mortgageDocumentList?.find(\r\n (i) => i.mortgageDocumentId === mortgageDocumentId\r\n );\r\n if (doc) {\r\n doc.statusReason = status;\r\n context.mortgage!.documentsPercentComplete =\r\n DocumentManager.calculatePercent(context, this.props.documents);\r\n this.setState({ refreshToggle: !this.state.refreshToggle });\r\n }\r\n }\r\n\r\n prev() {\r\n this.applicantService.saveAllFields(false);\r\n this.setState({ redirectTo: \"/employment\" + this.props.applicantNo });\r\n }\r\n\r\n next() {\r\n this.applicantService.saveAllFields(false);\r\n this.setState({ redirectTo: \"/assetsandloans\" + this.props.applicantNo });\r\n }\r\n\r\n hasActiveWithMissingData(\r\n key: string,\r\n activeDocuments: PortalMortgageDocumentModel[]\r\n ): boolean {\r\n if (key === \"PROPERTYASSETS\" || key === \"OTHERASSETS\") {\r\n return (\r\n activeDocuments.filter(\r\n (e) =>\r\n isNullOrEmpty(e.name) ||\r\n isNullOrEmpty(e.currentBalance) ||\r\n e.currentBalance === 0\r\n ).length > 0\r\n );\r\n } else if (key === \"LOAN\") {\r\n return (\r\n activeDocuments.filter(\r\n (e) =>\r\n isNullOrEmpty(e.currentBalance) ||\r\n isNullOrEmpty(e.institutionId) ||\r\n isNullOrEmpty(e.accountNumber) ||\r\n e.currentBalance === 0\r\n ).length > 0\r\n );\r\n } else if (key === \"MORTGAGEACCOUNT\") {\r\n return (\r\n activeDocuments.filter(\r\n (e) =>\r\n isNullOrEmpty(e.currentBalance) ||\r\n isNullOrEmpty(e.institutionId) ||\r\n isNullOrEmpty(e.accountNumber) ||\r\n e.currentBalance === 0\r\n ).length > 0\r\n );\r\n } else if (key === \"STATEMENT\") {\r\n return (\r\n activeDocuments.filter((e) => isNullOrEmpty(e.accountNumber)).length > 0\r\n );\r\n } else {\r\n return (\r\n activeDocuments.filter(\r\n (e) => isNullOrEmpty(e.currentBalance) || e.currentBalance === 0\r\n ).length > 0\r\n );\r\n }\r\n }\r\n\r\n hasMissingData(key: string, value: PortalMortgageDocumentModel[]): boolean {\r\n var activeDocuments = value.filter(\r\n (e) => e.statusReason !== MortgageDocumentStatusCode.Inactive\r\n );\r\n var inActiveDocuments = value.filter(\r\n (e) => e.statusReason === MortgageDocumentStatusCode.Inactive\r\n );\r\n let hasInactiveWithHasAnyEqualToNo =\r\n inActiveDocuments.filter((e) => e.hasAny === HasAny.No).length > 0;\r\n let activeWithMissingData = this.hasActiveWithMissingData(\r\n key,\r\n activeDocuments\r\n );\r\n\r\n if (activeWithMissingData === true) return true;\r\n\r\n if (activeDocuments.length > 0 || hasInactiveWithHasAnyEqualToNo)\r\n return false;\r\n\r\n return true;\r\n }\r\n\r\n getFilteredDocs(context?: UserContextState | null, category?: string) {\r\n if (!context) context = this.getContext();\r\n if (context.mortgageDocumentList != null) {\r\n let applicableTo =\r\n this.props.applicantNo === 1\r\n ? ApplicableTo.Primary\r\n : ApplicableTo.Secondary;\r\n let categories = [\"STATEMENT\", \"SAVING\"];\r\n if (category) {\r\n categories = [category];\r\n }\r\n let docs = context.mortgageDocumentList.filter(\r\n (c) =>\r\n categories.includes(c.categoryUniqueCode ?? \"\") &&\r\n (c.applicableTo === ApplicableTo.Shared ||\r\n c.applicableTo === applicableTo ||\r\n c.isJoint === true)\r\n );\r\n\r\n docs.sort((a: any, b: any) => {\r\n // We want to primarily sort by mortgage document id, but if these are null make sure they appear first\r\n // We next want to sort by the order property (if its set) as this allows to change the order before merging\r\n if (a.categoryOrder === b.categoryOrder) {\r\n // if we have 2 null mortgage documents, or 2 matching mortgage documents, sort by the order attribute\r\n if (!a.applicableTo && !b.applicableTo) return 1;\r\n if (a.applicableTo < b.applicableTo) return -1;\r\n if (a.applicableTo > b.applicableTo) return 1;\r\n }\r\n\r\n // Compare if the document needs to come before or after\r\n if (a.categoryOrder < b.categoryOrder) return -1;\r\n if (a.categoryOrder > b.categoryOrder) return 1;\r\n\r\n // If we get here, we've probably hit equal documents and orders...\r\n // shouldn't happen, but in case paul got at the code you never know\r\n return 0;\r\n });\r\n return docs;\r\n }\r\n return [];\r\n }\r\n\r\n addNewDocument(doc: any, label: string, documentCode: string) {\r\n let isNew = true;\r\n let doclist = this.getFilteredDocs() as any[];\r\n const context = this.getContext();\r\n if (doc === null) {\r\n //they said yes newly\r\n let inactiveDoc = doclist.find(\r\n (e) => e.categoryUniqueCode === documentCode\r\n );\r\n if (inactiveDoc) {\r\n doc = inactiveDoc;\r\n doc.hasAny = HasAny.Yes;\r\n doc.statusReason = MortgageDocumentStatusCode.Active;\r\n doc.autoOpen = true;\r\n isNew = false;\r\n this.getContext().updateDoc(doc);\r\n } else {\r\n doc = {\r\n document: documentCode,\r\n documentId: null, // let the API resolve this for us\r\n documentType: PortalDocumentType.Document,\r\n category: \"Banking\",\r\n categoryUniqueCode: documentCode,\r\n categoryOrder: 1,\r\n };\r\n }\r\n }\r\n if (isNew) {\r\n let id = this.applicantService.getApplicantId();\r\n let myId = Math.random().toString();\r\n doclist.push({\r\n name: \"\", //doc.name,\r\n document: doc.document,\r\n documentId: doc.documentId,\r\n documentType: doc.documentType,\r\n new: isNew,\r\n autoOpen: true,\r\n mortgageId: context.mortgage?.mortgageId,\r\n applicableTo:\r\n this.props.applicantNo === 1\r\n ? ApplicableTo.Primary\r\n : ApplicableTo.Secondary, //doclist[0].applicableTo,// changed this one for \"is joint\" too\r\n category: doc.category,\r\n categoryUniqueCode: doc.categoryUniqueCode,\r\n mortgageDocumentId: myId,\r\n currentBalance: 0,\r\n limit: 0,\r\n termLeft: 0,\r\n termPeriod: null,\r\n hasAny: HasAny.Yes,\r\n isJoint: false,\r\n contactId: id,\r\n statusReason: MortgageDocumentStatusCode.Active,\r\n categoryOrder: doc.categoryOrder,\r\n termRemaining: null,\r\n key: myId,\r\n });\r\n this.getContext().addDoc(doclist.at(doclist.length - 1));\r\n }\r\n this.setState({ refreshToggle: !this.state.refreshToggle });\r\n }\r\n\r\n getStatusText(doc: PortalMortgageDocumentModel) {\r\n var currentStatus = doc.statusReason ?? 0;\r\n if (currentStatus === MortgageDocumentStatusCode.Approved) {\r\n return \"Statements Complete\";\r\n } else if (doc.statusReason === MortgageDocumentStatusCode.Uploaded) {\r\n return \"Statements Uploaded\";\r\n } else if (doc.statusReason === MortgageDocumentStatusCode.InProgress) {\r\n return \"Statements Needed\";\r\n } else if (doc.statusReason === MortgageDocumentStatusCode.NeedsAction) {\r\n return \"Needs Action\";\r\n }\r\n return \"Waiting\";\r\n }\r\n\r\n refreshMortgageDocuments() {\r\n let context = this.getContext();\r\n let url = `/MortgageDocuments/GetAllDocuments?mortgageId=${\r\n context.mortgage!.mortgageId\r\n }`;\r\n return axios.get(url).then((mortgageDocumentsResponse) => {\r\n context.mortgageDocumentList = mortgageDocumentsResponse.data;\r\n this.setState({\r\n refreshToggle: !this.state.refreshToggle,\r\n openBankingChecker: false,\r\n });\r\n });\r\n }\r\n\r\n private waitForFiles(): void {\r\n const context = this.getContext();\r\n if (!context.files || context.loadingFiles == true) {\r\n if (!this.state.loading) {\r\n this.setState({ loading: true });\r\n }\r\n setTimeout(this.waitForFiles, 1000);\r\n return;\r\n }\r\n this.setState({ loading: false, files: context.files });\r\n }\r\n\r\n addOpenBankingChecker(requestId?: string) {\r\n this.setState({ openBankingChecker: true });\r\n // Give the first check about 5 seconds to run...\r\n setTimeout(() => {\r\n this.openBankingChecker(requestId);\r\n }, 5000);\r\n }\r\n\r\n openBankingChecker(requestId?: string) {\r\n const context = this.getContext();\r\n let applicableTo =\r\n this.props.applicantNo === 1\r\n ? ApplicableTo.Primary\r\n : ApplicableTo.Secondary;\r\n axios\r\n .get(\"/OpenBanking/Processing?requestId=\" + requestId)\r\n .then((response) => {\r\n var processing = response.data;\r\n if (processing) {\r\n setTimeout(() => {\r\n this.openBankingChecker(requestId);\r\n }, 1000);\r\n } else {\r\n this.refreshMortgageDocuments();\r\n }\r\n })\r\n .catch((error) => {\r\n this.setState({ openBankingChecker: false });\r\n });\r\n }\r\n\r\n openBankingSuccess(mortgageDocumentId?: string, requestId?: string) {\r\n this.addOpenBankingChecker(requestId);\r\n this.setState({ bankingRender: \"openbanking\" });\r\n }\r\n\r\n renderInitial() {\r\n let context = this.getContext();\r\n return (\r\n <>\r\n <div className=\"boxty short wide box-teal-outline mb-3 mt-3\">\r\n <div style={{ marginTop: -45 }}>\r\n <OpenBankingBubbles />\r\n </div>\r\n <Stack\r\n direction=\"horizontal\"\r\n gap={3}\r\n className=\"justify-center mt-4 mb-4\"\r\n >\r\n <div className=\"aib-tile\" />\r\n <div className=\"boi-tile\" />\r\n <div className=\"n26-tile\" />\r\n <div className=\"ptsb-tile\" />\r\n <div className=\"revolut-tile\" />\r\n </Stack>\r\n\r\n <Row className=\"mb-4\">\r\n <h3>Access your statements securely with Open Banking</h3>\r\n <p>\r\n Connect with your bank securely, automatically pulling in all\r\n required statements and dates into your doddl account -\r\n eliminating the need to download and upload files separately.\r\n </p>\r\n </Row>\r\n <Row className=\"mb-5\">\r\n <Stack\r\n direction=\"horizontal\"\r\n className=\"justify-center desktop-only\"\r\n gap={4}\r\n >\r\n <div>\r\n <button\r\n type=\"button\"\r\n className=\"btn btn-dark xl nowrap\"\r\n onClick={() => this.setState({ bankingRender: \"manual\" })}\r\n >\r\n Manually Upload Statements\r\n </button>\r\n </div>\r\n <div>\r\n <OpenBanking\r\n className=\"btn xl btn-secondary bold nowrap\"\r\n label={\r\n <>\r\n <strong>Access Open</strong> Banking\r\n </>\r\n }\r\n applicableTo={\r\n this.props.applicantNo === 1\r\n ? ApplicableTo.Primary\r\n : ApplicableTo.Secondary\r\n }\r\n onSuccess={this.openBankingSuccess}\r\n />\r\n </div>\r\n </Stack>\r\n <Stack direction=\"vertical\" className=\"justify-center mobile-only\">\r\n <button\r\n type=\"button\"\r\n className=\"btn btn-dark xl nowrap mb-3\"\r\n onClick={() => this.setState({ bankingRender: \"manual\" })}\r\n >\r\n Manually Upload Statements\r\n </button>\r\n <OpenBanking\r\n className=\"btn xl btn-secondary bold nowrap\"\r\n label={\r\n <>\r\n <strong>Access Open</strong> Banking\r\n </>\r\n }\r\n applicableTo={\r\n this.props.applicantNo === 1\r\n ? ApplicableTo.Primary\r\n : ApplicableTo.Secondary\r\n }\r\n onSuccess={this.openBankingSuccess}\r\n />\r\n </Stack>\r\n </Row>\r\n </div>\r\n <div style={{ marginTop: -40 }}>\r\n <a className=\"btn btn-light bigger\" href=\"#ob-benefits\">\r\n Benefits of Open Banking\r\n </a>\r\n </div>\r\n <div id=\"ob-benefits\" className=\"mt-5\">\r\n <h2 className=\"light mb-4\">\r\n The easiest & fastest way to securely upload your account statements\r\n into your mortgage account.\r\n </h2>\r\n <p className=\"mt-3 l\">\r\n No more downloading, uploading or chasing missing statements.\r\n </p>\r\n <div className=\"desktop-only\">\r\n <Stack className=\"justify-center mt-5\">\r\n <div className=\"ob-step2\" />\r\n <div className=\"ob-step1\" />\r\n <div className=\"ob-step3\" />\r\n </Stack>\r\n <Stack direction=\"horizontal\" className=\"justify-center mt-5\">\r\n <div className=\"ob-step1-text\">\r\n <h1>Secure</h1>\r\n <p className=\"nowrap\">\r\n Securely login with your existing\r\n <br />\r\n online banking credentials\r\n </p>\r\n </div>\r\n <div className=\"ob-step2-text\">\r\n <h1>Easy</h1>\r\n <p className=\"nowrap\">\r\n Choose which accounts you’d\r\n <br />\r\n like to provide statements from.\r\n </p>\r\n </div>\r\n <div className=\"ob-step3-text\">\r\n <h1>Faster</h1>\r\n <p className=\"nowrap\">\r\n We’ll receive the full 6 months of\r\n <br />\r\n statements needed.\r\n </p>\r\n </div>\r\n </Stack>\r\n <Row className=\"mt-5 mb-5 pb-5\">\r\n <Stack direction=\"horizontal\" className=\"justify-center\" gap={4}>\r\n <div>\r\n <button\r\n type=\"button\"\r\n className=\"btn btn-light xl\"\r\n onClick={() => this.setState({ bankingRender: \"manual\" })}\r\n >\r\n Upload Statements Manually\r\n </button>\r\n </div>\r\n <div>\r\n <OpenBanking\r\n className=\"btn xl btn-secondary bold\"\r\n label=\"Access Open Banking\"\r\n applicableTo={\r\n this.props.applicantNo === 1\r\n ? ApplicableTo.Primary\r\n : ApplicableTo.Secondary\r\n }\r\n onSuccess={this.openBankingSuccess}\r\n />\r\n </div>\r\n </Stack>\r\n </Row>\r\n </div>\r\n <div className=\"mt-5 mobile-only\">\r\n <Stack className=\"justify-center mt-5\">\r\n <div className=\"ob-step1\" />\r\n <div className=\"ob-step1-text\">\r\n <h1>Secure</h1>\r\n <p className=\"nowrap\">\r\n Securely login with your existing\r\n <br />\r\n online banking credentials\r\n </p>\r\n </div>\r\n <div className=\"ob-step2 mt-2\" />\r\n <div className=\"ob-step2-text\">\r\n <h1>Easy</h1>\r\n <p className=\"nowrap\">\r\n Choose which accounts you’d\r\n <br />\r\n like to provide statements from.\r\n </p>\r\n </div>\r\n <div className=\"ob-step3\" />\r\n <div className=\"ob-step3-text\">\r\n <h1>Faster</h1>\r\n <p className=\"nowrap\">\r\n We’ll receive the full 6 months of\r\n <br />\r\n statements needed.\r\n </p>\r\n </div>\r\n </Stack>\r\n <Row className=\"mt-5 mb-5 pb-5\">\r\n <Stack direction=\"vertical\" className=\"justify-center\">\r\n <button\r\n type=\"button\"\r\n className=\"btn btn-light xl mb-3\"\r\n onClick={() => this.setState({ bankingRender: \"manual\" })}\r\n >\r\n Upload Statements Manually\r\n </button>\r\n <OpenBanking\r\n className=\"btn xl btn-secondary bold\"\r\n label=\"Access Open Banking\"\r\n applicableTo={\r\n this.props.applicantNo === 1\r\n ? ApplicableTo.Primary\r\n : ApplicableTo.Secondary\r\n }\r\n onSuccess={this.openBankingSuccess}\r\n />\r\n </Stack>\r\n </Row>\r\n </div>\r\n </div>\r\n </>\r\n );\r\n }\r\n\r\n renderPills(initialRenderState?: \"openbanking\" | \"manual\" | undefined) {\r\n let context = this.getContext();\r\n let currentAccountDocs = this.getFilteredDocs(context, \"STATEMENT\").filter(\r\n (e) => e.statusReason !== MortgageDocumentStatusCode.Inactive\r\n );\r\n let savingsAccountDocs = this.getFilteredDocs(context, \"SAVING\").filter(\r\n (e) => e.statusReason !== MortgageDocumentStatusCode.Inactive\r\n );\r\n var openBankingDocs =\r\n currentAccountDocs.filter(\r\n (x) => x.transactionSource === TransactionSource.OpenBanking\r\n ).length +\r\n savingsAccountDocs.filter(\r\n (x) => x.transactionSource === TransactionSource.OpenBanking\r\n ).length;\r\n var renderState: \"openbanking\" | \"manual\" =\r\n initialRenderState ??\r\n this.state.bankingRender ??\r\n (openBankingDocs > 0 ? \"openbanking\" : \"manual\");\r\n\r\n return (\r\n <Container className=\"pill-form justify-center ps-2\">\r\n <>\r\n <Container>\r\n <Row className=\"pill-row\">\r\n <Col lg={12} xl={6} className=\"ps-1\">\r\n <Stack gap={2} className=\"justify-center\">\r\n <p className=\"impact\">Current Accounts</p>\r\n {currentAccountDocs.map((item: any, idx) => (\r\n <FinancePill\r\n document={item}\r\n key={`financepill-current-${\r\n item.key ?? item.mortgageDocumentId\r\n }`}\r\n files={this.state.files.filter(\r\n (f) => f.mortgageDocumentId === item.mortgageDocumentId\r\n )}\r\n contactId={this.applicantService.getApplicantId()}\r\n applicantNo={this.props.applicantNo}\r\n onDone={this.onDocumentDone}\r\n mortgageId={context.mortgage?.mortgageId}\r\n helperTexts={this.state.dochelperTexts}\r\n setContact={(contact) => {\r\n this.setState({ contact: contact });\r\n }}\r\n refreshParent={this.refreshMortgageDocuments}\r\n />\r\n ))}\r\n {this.state.openBankingChecker && (\r\n <Container className={`finance-pill-container w-360`}>\r\n <div className={`finance-pill w-360 nowrap`}>\r\n <Row>\r\n <Col xs={9} className=\"text-start pt-col\">\r\n <div>\r\n <p className=\"s\">\r\n Adding institution, one moment please\r\n </p>\r\n </div>\r\n </Col>\r\n <Col xs={3} className=\"pt-col\">\r\n <div style={{ marginTop: -4 }}>\r\n <Row>\r\n <i className=\"far fa-clock pill-big inprogress\"></i>\r\n </Row>\r\n <Row>\r\n <p className=\"tiny pt-1\">CONNECTING</p>\r\n </Row>\r\n </div>\r\n </Col>\r\n </Row>\r\n </div>\r\n </Container>\r\n )}\r\n {renderState === \"manual\" && (\r\n <button\r\n key=\"add-ca-button\"\r\n type=\"button\"\r\n className=\"btn big btn-light w-360 xl rad-s\"\r\n onClick={() => {\r\n this.addNewDocument(\r\n currentAccountDocs.length == 0\r\n ? null\r\n : currentAccountDocs[0],\r\n \"Current\",\r\n \"STATEMENT\"\r\n );\r\n }}\r\n >\r\n <span className=\" float-left\">\r\n <i className=\"fas fa-plus-circle fa-xl\" />\r\n </span>{\" \"}\r\n Add a Current Account\r\n </button>\r\n )}\r\n </Stack>\r\n </Col>\r\n {/*they want to show again the savings account for HH {!(context.mortgage?.approvalType === AIPType.HouseHunter) && (*/}\r\n <Col lg={12} xl={6} className=\"lg-margin-top-2 ps-1\">\r\n <Stack gap={2} className=\"justify-center\">\r\n <p className=\"impact\">Savings Accounts</p>\r\n {savingsAccountDocs.map((item: any, idx) => (\r\n <FinancePill\r\n document={item}\r\n key={`financepill-savings-${\r\n item.key ?? item.mortgageDocumentId\r\n }`}\r\n files={this.state.files.filter(\r\n (f) =>\r\n f.mortgageDocumentId === item.mortgageDocumentId\r\n )}\r\n contactId={this.applicantService.getApplicantId()}\r\n applicantNo={this.props.applicantNo}\r\n onDone={this.onDocumentDone}\r\n mortgageId={context.mortgage?.mortgageId}\r\n helperTexts={this.state.dochelperTexts}\r\n setContact={(contact) => {\r\n this.setState({ contact: contact });\r\n }}\r\n refreshParent={this.refreshMortgageDocuments}\r\n />\r\n ))}\r\n {renderState === \"manual\" && (\r\n <button\r\n key=\"add-sa-button\"\r\n type=\"button\"\r\n className=\"btn big btn-light w-360 xl rad-s\"\r\n onClick={() => {\r\n this.addNewDocument(\r\n savingsAccountDocs.length == 0\r\n ? null\r\n : savingsAccountDocs[0],\r\n \"Savings\",\r\n \"SAVING\"\r\n );\r\n }}\r\n >\r\n <span className=\" float-left\">\r\n <i className=\"fas fa-plus-circle fa-xl\" />\r\n </span>{\" \"}\r\n Add a Savings Account\r\n </button>\r\n )}\r\n </Stack>\r\n </Col>\r\n {/*)}*/}\r\n </Row>\r\n {renderState === \"openbanking\" && (\r\n <Stack className=\"justify-center mt-5\">\r\n <OpenBanking\r\n className=\"btn xl btn-secondary w-360 rad-s\"\r\n label={\r\n <>\r\n <OpenBankingBubbles\r\n size=\"s\"\r\n className=\"float-left ms-3\"\r\n />{\" \"}\r\n <strong>Add another</strong> account\r\n </>\r\n }\r\n applicableTo={\r\n this.props.applicantNo === 1\r\n ? ApplicableTo.Primary\r\n : ApplicableTo.Secondary\r\n }\r\n onSuccess={(mDocId?: string, requestId?: string) => {\r\n this.addOpenBankingChecker(requestId);\r\n }}\r\n />\r\n </Stack>\r\n )}\r\n </Container>\r\n <Container className=\"pt-5\">\r\n <Row className=\"mt-5 mb-4\">\r\n {renderState === \"manual\" ? (\r\n <>\r\n {context.settings?.openBanking !== \"disabled\" &&\r\n (context.mortgage?.mortgageAmountProposed ?? 0) >=\r\n (context.settings?.openBankingLowerAmount ?? 0) &&\r\n (context.mortgage?.mortgageAmountProposed ?? 0) <=\r\n (context.settings?.openBankingUpperAmount ?? 0) &&\r\n context.mortgage?.approvalType === AIPType.HouseHunter && (\r\n <>\r\n <p>Switch to Open Banking</p>\r\n <Stack className=\"justify-center\">\r\n <button\r\n type=\"button\"\r\n className=\"btn btn-light bigger rad-s\"\r\n onClick={() => {\r\n this.setState({ bankingRender: \"openbanking\" });\r\n }}\r\n >\r\n Open Banking\r\n </button>\r\n </Stack>\r\n </>\r\n )}\r\n </>\r\n ) : (\r\n <>\r\n <p>\r\n If you could not retrieve an account via Open\r\n <br />\r\n Banking, please add the account manually.\r\n </p>\r\n <Stack className=\"justify-center\">\r\n <button\r\n type=\"button\"\r\n className=\"btn btn-light bigger rad-s\"\r\n onClick={() => this.setState({ bankingRender: \"manual\" })}\r\n >\r\n Add Manually\r\n </button>\r\n </Stack>\r\n </>\r\n )}\r\n </Row>\r\n </Container>\r\n </>\r\n </Container>\r\n );\r\n }\r\n\r\n render() {\r\n let context = this.getContext();\r\n\r\n if (this.state.redirectTo) {\r\n return <Navigate to={this.state.redirectTo} />;\r\n }\r\n\r\n if (!this.state.files || context.loadingFiles) {\r\n this.waitForFiles();\r\n return <span>Loading financial details...</span>;\r\n }\r\n\r\n if (this.state.loading) {\r\n return <span>Loading financial details...</span>;\r\n }\r\n\r\n if (!this.state.contact) {\r\n return <span>Applicant information not found</span>;\r\n }\r\n\r\n var noDocs =\r\n this.getFilteredDocs(context).filter(\r\n (e) => e.statusReason !== MortgageDocumentStatusCode.Inactive\r\n ).length === 0;\r\n var title = this.state.contact.firstName + \"'s Bank Details\";\r\n var subTitle = (\r\n <>\r\n This bit is important! Please set out all current and savings accounts you hold, this includes Revolut, N26 and all other digital\r\n banking apps\r\n {/* {\" \"}\r\n {!(context.mortgage?.approvalType === AIPType.HouseHunter) &&\r\n \"and savings\"}{\" \"} */}\r\n \r\n </>\r\n );\r\n var content = <></>;\r\n\r\n // Decide what content we want to display. This will\r\n if (\r\n context.settings?.openBanking === \"disabled\" ||\r\n context.mortgage?.approvalType !== AIPType.HouseHunter ||\r\n this.state.bankingRender === \"manual\" ||\r\n !context.mortgage?.mortgageAmountProposed ||\r\n (context.mortgage?.mortgageAmountProposed ?? 0) <\r\n (context.settings?.openBankingLowerAmount ?? 0) ||\r\n (context.mortgage?.mortgageAmountProposed ?? 0) >\r\n (context.settings?.openBankingUpperAmount ?? 0)\r\n ) {\r\n content = this.renderPills(\"manual\");\r\n } else if (noDocs && this.state.bankingRender !== \"openbanking\") {\r\n // If we're rendering initial then we don't want previous and next buttons. Just return the standard portal page\r\n // Note that the only time we might have nodocs in this scenario is if they've activated open banking\r\n content = this.renderInitial();\r\n return (\r\n <PortalPage\r\n applicantNo={this.state.applicantNo}\r\n title={title}\r\n description={subTitle}\r\n next={this.next}\r\n prev={this.prev}\r\n contact={this.state.contact}\r\n handleSubmit={this.applicantService.handleSubmit}\r\n showFinishButton={false}\r\n percentComplete={0}\r\n >\r\n <>\r\n <br />\r\n {content}\r\n </>\r\n </PortalPage>\r\n );\r\n } else {\r\n content = this.renderPills();\r\n\r\n // Decide if we should default to OB mode or Manual mode\r\n // var openBankingDocs = currentAccountDocs.filter(x => x.transactionSource === TransactionSource.OpenBanking).length + savingsAccountDocs.filter(x => x.transactionSource === TransactionSource.OpenBanking).length;\r\n // if (openBankingDocs > 0 || this.state.bankingRender === 'openbanking') {\r\n // content = this.renderOpenBanking(currentAccountDocs, savingsAccountDocs);\r\n // } else {\r\n // content = this.renderManual(currentAccountDocs, savingsAccountDocs);\r\n // }\r\n }\r\n\r\n return (\r\n <>\r\n <ApplicantPage\r\n applicantNo={this.state.applicantNo}\r\n title={title}\r\n subTitle={subTitle}\r\n next={this.next}\r\n prev={this.prev}\r\n contact={this.state.contact}\r\n handleSubmit={this.applicantService.handleSubmit}\r\n showFinishButton={false}\r\n percentComplete={0}\r\n >\r\n <>{content}</>\r\n </ApplicantPage>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nfunction isNullOrEmpty(value: any): boolean {\r\n return value === undefined || value === null || value === \"\";\r\n}\r\n","import UserContextState, { UserContext } from '../UserContext';\r\nimport { IAggregateListItem } from \"../Pills/AggregatePill\";\r\nimport { Button, Col, Container, Modal, Row, Stack } from \"react-bootstrap\";\r\nimport { Finance } from \"./Finance\";\r\nimport * as Icons from \"react-bootstrap\";\r\nimport { FormLookupItem } from \"../../models/PortalMetadata\";\r\nimport { ApplicableTo, HasAny, MortgageDocumentStatusCode, PortalMortgageDocumentModel } from \"../../models/PortalMortgageDocumentModel\";\r\nimport { AggregatePillOverlay, IAggregatePillOverlayProps } from \"../Pills/AggregatePillOverlay\";\r\nimport { ApplicantService } from '../../pages/ApplicantService';\r\nimport axios from 'axios';\r\nimport { logger } from '../../helper/Logger';\r\n\r\nexport interface IFinanceManagerProps extends IAggregatePillOverlayProps {\r\n uniqueKey: string;\r\n items: IAggregateListItem[] | null,\r\n values: any[],\r\n //addAnother: any;\r\n //save: any;\r\n //deleteDocument: any;\r\n label: any;\r\n hasAny: boolean | null;\r\n institutionList: FormLookupItem[],\r\n helperTexts: any[],\r\n applicantNo: number;\r\n contact: any;\r\n hideAdd?: boolean;\r\n setContact(contact: any): void;\r\n}\r\n\r\ninterface IFinanceManagerState {\r\n items: IAggregateListItem[] | null,\r\n values: any[],\r\n emptyOnly: boolean,\r\n helperTexts: [],\r\n //hasAny: boolean | null,\r\n loading: boolean,\r\n requiredField: string\r\n}\r\n\r\nexport class FinanceManager extends AggregatePillOverlay<IFinanceManagerProps, IFinanceManagerState> {\r\n static contextType = UserContext;\r\n applicantService: ApplicantService;\r\n deleting: boolean;\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.deleting = false;\r\n\r\n this.state = {\r\n items: this.props.items,\r\n values: this.props.values,\r\n emptyOnly: true,\r\n helperTexts: [],\r\n //hasAny: this.props.hasAny,\r\n //hasAny: this.hasActiveItems(),\r\n loading: false,\r\n requiredField: \"\"\r\n };\r\n\r\n this.deleteDocumentEx = this.deleteDocumentEx.bind(this);\r\n this.checkAccountNumber = this.checkAccountNumber.bind(this);\r\n\r\n this.addNewDocument = this.addNewDocument.bind(this);\r\n this.updateDocument = this.updateDocument.bind(this);\r\n this.deactivateDocument = this.deactivateDocument.bind(this);\r\n this.saveDocuments = this.saveDocuments.bind(this);\r\n this.getFilteredDocs = this.getFilteredDocs.bind(this);\r\n this.saveAsDeactivatedDocument = this.saveAsDeactivatedDocument.bind(this);\r\n }\r\n\r\n public getContext(): UserContextState {\r\n const context = this.context as UserContextState;\r\n return context;\r\n }\r\n\r\n componentDidMount() {\r\n if (this.state.values !== this.props.values)\r\n this.setState({ values: this.props.values, items: this.props.items });\r\n\r\n let context = this.getContext();\r\n this.applicantService = new ApplicantService(context, this, this.props.applicantNo);\r\n }\r\n\r\n close(): void {\r\n if (this.props.closePill)\r\n this.props.closePill();\r\n }\r\n\r\n hasAny(hasAny: boolean) {\r\n if (!hasAny) {\r\n this.saveDocuments(this.props.uniqueKey, false, this.state.items!, this.state.values);\r\n //this.setState({ hasAny: false });\r\n this.close();\r\n }\r\n else {\r\n //this.setState({ hasAny: true });\r\n this.addNewDocument(null, this.props.label); //\r\n }\r\n }\r\n\r\n checkAccountNumber(value: string) {\r\n if (value && value.length !== 4) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n save() {\r\n let key = this.props.uniqueKey;\r\n let nameRequired = key === \"OTHERASSETS\";\r\n let balanceRequired = key === \"MORTGAGEACCOUNT\" || key === \"LOAN\";\r\n let institutionRequired = key === \"MORTGAGEACCOUNT\" || key === \"LOAN\" || key === \"SAVING\" || key === \"CREDITCARD\" || key === \"STATEMENT\";\r\n let addressRequired = key === \"PROPERTYASSETS\";\r\n let accountNumberRequired = key === \"STATEMENT\" || key === \"SAVING\" || key === \"CREDITCARD\" || key === \"FOREIGNACCOUNT\";\r\n let institutionNameRequired = key === \"STOCK\" || key === \"FOREIGNACCOUNT\";\r\n let institutionNameOnOtherRequired = key === \"LOAN\";\r\n let loanTypeRequired = key === \"LOAN\";\r\n\r\n for (var i = 0; i < this.state.values.length; i++) {\r\n var item = this.state.values[i];\r\n let otherIsSelected = this.props.institutionList.find(x => x.value == item.institutionId)?.text.toLowerCase() === \"other\";\r\n if (balanceRequired && (item.currentBalance === \"\" || item.currentBalance <= 0)) {\r\n this.setState({ requiredField: \"Balance\" });\r\n return;\r\n }\r\n\r\n if (nameRequired && (item.name === \"\" || item.name === null)) {\r\n this.setState({ requiredField: \"Name\" });\r\n return;\r\n }\r\n\r\n if (addressRequired && (item.name === \"\" || item.name === null)) {\r\n this.setState({ requiredField: \"Address\" });\r\n return;\r\n }\r\n\r\n if (institutionRequired && (item.institutionId === \"\" || item.institutionId === null)) {\r\n this.setState({ requiredField: \"Institution\" });\r\n return;\r\n }\r\n\r\n if (institutionNameOnOtherRequired && otherIsSelected && ( item.otherInstitutionName === \"\" || item.otherInstitutionName === null)) {\r\n this.setState({ requiredField: \"Institution Name\" });\r\n return;\r\n }\r\n\r\n if (institutionNameRequired && (item.otherInstitutionName === \"\" || item.otherInstitutionName === null)) {\r\n this.setState({ requiredField: \"Institution\" });\r\n return;\r\n }\r\n\r\n if (accountNumberRequired && (item.accountNumber === \"\" || item.accountNumber === null)) {\r\n this.setState({ requiredField: \"Account Number\" });\r\n return;\r\n }\r\n\r\n if (accountNumberRequired && this.checkAccountNumber(item.accountNumber)) {\r\n this.setState({ requiredField: \"4 digit account number\" });\r\n return;\r\n }\r\n\r\n if (loanTypeRequired && (item.loanType === \"\" || item.loanType === null)) {\r\n this.setState({ requiredField: \"Loan Type\" });\r\n return;\r\n }\r\n\r\n if (!nameRequired && !addressRequired)\r\n item.name = \"\";\r\n };\r\n\r\n this.setState({ loading: true });\r\n this.saveDocuments(this.props.uniqueKey, this.hasActiveItems(), this.state.items!, this.state.values);\r\n this.setState({ loading: false });\r\n\r\n this.close();\r\n }\r\n\r\n hasActiveItems(): boolean {\r\n var activeItems = this.props.values?.filter((item) => { return item.statusReason !== MortgageDocumentStatusCode.Inactive });\r\n return activeItems?.length > 0;\r\n }\r\n\r\n deleteDocumentEx(e: any, item: any, values: any[]) {\r\n if (!this.deleting) {\r\n this.deleting = true;\r\n this.deleteDocument(e, item, values);\r\n\r\n if (!this.hasActiveItems() || this.props.hideAdd)\r\n this.close();\r\n }\r\n }\r\n\r\n // #region doc functions\r\n getFilteredDocs(context?: UserContextState | null) {\r\n if (!context) context = this.getContext();\r\n if (context.mortgageDocumentList != null) {\r\n let applicableTo = this.props.applicantNo === 1 ? ApplicableTo.Primary : ApplicableTo.Secondary;\r\n let docs = context.mortgageDocumentList.filter(c => c.applicableTo === ApplicableTo.Shared || c.applicableTo === applicableTo || c.isJoint === true);\r\n docs.sort(\r\n (a: any, b: any) => {\r\n // put new to the bottom\r\n if (a.new && !b.new) return -1;\r\n if (b.new && !a.new) return 1;\r\n // We want to primarily sort by mortgage document id, but if these are null make sure they appear first\r\n // We next want to sort by the order property (if its set) as this allows to change the order before merging\r\n if (\r\n a.categoryOrder === b.categoryOrder) {\r\n // if we have 2 null mortgage documents, or 2 matching mortgage documents, sort by the order attribute\r\n if (!a.applicableTo && !b.applicableTo) return 1;\r\n if (a.applicableTo < b.applicableTo) return -1;\r\n if (a.applicableTo > b.applicableTo) return 1;\r\n }\r\n\r\n // Compare if the document needs to come before or after\r\n if (a.categoryOrder < b.categoryOrder) return -1;\r\n if (a.categoryOrder > b.categoryOrder) return 1;\r\n\r\n // If we get here, we've probably hit equal documents and orders... \r\n // shouldn't happen, but in case paul got at the code you never know\r\n return 0;\r\n }\r\n );\r\n return docs;\r\n }\r\n return [];\r\n }\r\n\r\n addNewDocument(doc: any, label: string) {\r\n let isNew = true;\r\n let doclist = this.getFilteredDocs() as any[];// this.state.mortgageDocumentList;\r\n if (doc === null) {\r\n //they said yes newly\r\n let inactiveDoc = doclist.find(e => e.document === label);\r\n if (inactiveDoc !== null) {\r\n doc = inactiveDoc;\r\n doc.hasAny = HasAny.Yes;\r\n doc.statusReason = MortgageDocumentStatusCode.Active;\r\n isNew = false;\r\n logger.log(\"addNewDocument\");\r\n this.getContext().updateDoc(doc);\r\n }\r\n }\r\n if (isNew) {\r\n let id = this.applicantService.getApplicantId();\r\n doclist.push({\r\n name: \"\", //doc.name,\r\n document: doc.document,\r\n documentId: doc.documentId,\r\n documentType: doc.documentType,\r\n new: isNew,\r\n mortgageId: doclist[0].mortgageId,\r\n applicableTo: this.props.applicantNo === 1 ? ApplicableTo.Primary : ApplicableTo.Secondary, //doclist[0].applicableTo,// changed this one for \"is joint\" too\r\n category: doc.category,\r\n categoryUniqueCode: doc.categoryUniqueCode,\r\n mortgageDocumentId: isNew ? Math.random().toString() : doc.mortgageDocumentId,\r\n currentBalance: 0,\r\n limit: 0,\r\n termLeft: 0,\r\n termPeriod: null,\r\n hasAny: HasAny.Yes,\r\n isJoint: false,\r\n contactId: id,\r\n statusReason: MortgageDocumentStatusCode.Active,\r\n categoryOrder: doc.categoryOrder,\r\n termRemaining: null\r\n });\r\n this.getContext().addDoc(doclist.at(doclist.length - 1));\r\n }\r\n }\r\n\r\n // cancelDocument = (e: any, doc: any) => {\r\n // e.preventDefault()\r\n // let doclist = this.getFilteredDocs() as any[]; //this.state.mortgageDocumentList;\r\n // doclist = doclist.filter((o: any) => o.mortgageDocumentId !== doc.mortgageDocumentId);\r\n // this.setState({\r\n // mortgageDocumentList: doclist\r\n // });\r\n // }\r\n\r\n saveDocuments(key: string, hasAny: boolean | null, items: IAggregateListItem[], values: any[]) {\r\n let id = this.applicantService.getApplicantId();\r\n\r\n if (values.length === 0) {\r\n hasAny = false;\r\n\r\n // BANDAID - Bit of a bandaid until I figure out a better way to do this... \r\n // basically this code tries to get the original mortgageDocumentList (including inactives)\r\n // and then find the \"property\" that matches this saveDocuments category key\r\n // Then it will save that inactive document as being marked as \"hasAny = no\" \r\n var catGrouped = this.applicantService.groupBy(this.getFilteredDocs() as any[], \"categoryUniqueCode\");//this.state.mortgageDocumentList\r\n Object.entries(catGrouped).forEach(([catKey, value]) => {\r\n if (catKey === key) {\r\n let inActive = (value as PortalMortgageDocumentModel[]).filter(e => e.statusReason === MortgageDocumentStatusCode.Inactive);\r\n if (inActive.length > 0) {\r\n var val: any = inActive[0];\r\n val.contactId = id;\r\n val.hasAny = HasAny.No;\r\n this.updateDocument(true, val);\r\n }\r\n }\r\n });\r\n }\r\n\r\n values.forEach((val, i) => {\r\n val.contactId = id;\r\n if (hasAny === true)\r\n val.hasAny = HasAny.Yes;\r\n else if (hasAny === false)\r\n val.hasAny = HasAny.No;\r\n else\r\n val.hasAny = null;\r\n\r\n var isLatest = i === values.length - 1 ? true : false;\r\n if (hasAny === false) {\r\n this.deactivateDocument(isLatest, val);\r\n }\r\n else if (val.new || val.mortgageDocumentId.indexOf(\".\") > -1) {\r\n val.hasAny = HasAny.Yes;\r\n this.saveDocument(isLatest, val);\r\n }\r\n else {\r\n this.updateDocument(isLatest, val);\r\n }\r\n });\r\n }\r\n\r\n saveDocument = (isLatest: boolean, doc: any) => {\r\n let context = this.getContext();\r\n let id = this.applicantService.getApplicantId();\r\n var newMortgageDoc = {\r\n documentId: doc.documentId,\r\n institutionId: doc.institutionId,\r\n mortgageId: doc.mortgageId,\r\n applicableTo: this.props.applicantNo === 1 ? ApplicableTo.Primary : ApplicableTo.Secondary,\r\n name: doc.name,\r\n category: doc.category,\r\n categoryId: doc.categoryId,\r\n document: doc.document,\r\n institution: doc.institutionId != null ? context.institutions.find(i => i.value === doc.institutionId)?.text : doc.otherInstitutionName,\r\n currentBalance: doc.currentBalance ?? 0,\r\n documentType: doc.documentType,\r\n limit: doc.limit ?? 0,\r\n termLeft: doc.termLeft ?? 0,\r\n termPeriod: doc.termPeriod ?? null,\r\n termRemaining: doc.termRemaining ?? null,\r\n categoryUniqueCode: doc.categoryUniqueCode,\r\n accountNumber: doc.accountNumber ?? \"\",\r\n planOnClearingTheBalance: doc.planOnClearingTheBalance,\r\n recurringYearlyValue: doc.recurringYearlyValue,\r\n recurringMonthlyValue: doc.recurringMonthlyValue,\r\n contactId: id,\r\n hasAny: HasAny.Yes,\r\n statusReason: MortgageDocumentStatusCode.Active,\r\n isJoint: doc.isJoint,\r\n otherInstitutionName: doc.otherInstitutionName\r\n };\r\n\r\n axios.post('/MortgageDocuments/CreateDocument', newMortgageDoc)\r\n .then(response => {\r\n let resp = response.data;\r\n\r\n var contact = this.props.contact;\r\n contact.assetsInfoPercentage = resp.assetsPercentage;\r\n contact.bankingInfoPercentage = resp.bankingPercentage;\r\n contact.percentageOfCompletion =\r\n (contact.personalInfoPercentage +\r\n contact.residentialInfoPercentage +\r\n contact.employmentInfoPercentage +\r\n contact.bankingInfoPercentage +\r\n contact.assetsInfoPercentage) / 5;\r\n\r\n // BANDAID - THIS IS TO KEEP THE APPLICANT MENU IN SYNC AS IT USES THE CONTEXT\r\n let context = this.getContext();\r\n if (this.props.applicantNo === 1) {\r\n context.mortgage!.primaryApplicant = contact;\r\n } else {\r\n context.mortgage!.secondaryApplicant = contact;\r\n }\r\n context.updateDoc(newMortgageDoc);\r\n context.updateId(doc.mortgageDocumentId, resp.mortgageDocumentId);\r\n\r\n if (isLatest) {\r\n this.props.setContact(contact);\r\n }\r\n });\r\n }\r\n\r\n saveAsDeactivatedDocument = (isLatest: boolean, doc: any) => {\r\n let id = this.applicantService.getApplicantId();\r\n let newMortgageDoc: any = {\r\n documentId: doc.documentId,\r\n institutionId: null,\r\n mortgageId: doc.mortgageId,\r\n applicableTo: this.props.applicantNo === 1 ? ApplicableTo.Primary : ApplicableTo.Secondary,\r\n name: null,\r\n category: doc.category,\r\n categoryId: doc.categoryId,\r\n document: doc.document,\r\n //institution: doc.institution,\r\n currentBalance: null,\r\n documentType: doc.documentType,\r\n limit: null,\r\n termLeft: null,\r\n termPeriod: null,\r\n categoryUniqueCode: doc.categoryUniqueCode,\r\n accountNumber: \"\",\r\n planOnClearingTheBalance: null,\r\n recurringYearlyValue: null,\r\n recurringMonthlyValue: null,\r\n contactId: id,\r\n hasAny: HasAny.No,\r\n isJoint: doc.isJoint,\r\n statusReason: MortgageDocumentStatusCode.Inactive,\r\n termRemaining: null\r\n };\r\n\r\n axios.post('/MortgageDocuments/CreateAsDeactivated', newMortgageDoc)\r\n .then(response => {\r\n let resp = response.data;\r\n\r\n doc.hasAny = HasAny.No;\r\n doc.statusReason = MortgageDocumentStatusCode.Inactive;\r\n doc.institutionId = null;\r\n doc.name = null;\r\n doc.currentBalance = null;\r\n doc.limit = null;\r\n doc.termLeft = null;\r\n doc.termPeriod = null;\r\n doc.planOnClearingTheBalance = null;\r\n doc.recurringYearlyValue = null;\r\n doc.recurringMonthlyValue = null;\r\n doc.accountNumber = \"\";\r\n doc.termRemaining = null;\r\n this.getContext().updateDoc(doc);\r\n this.getContext().updateId(doc.mortgageDocumentId, resp.MortgageDocumentId);\r\n\r\n //update percentage\r\n var contact = this.props.contact;\r\n contact.assetsInfoPercentage = resp.assetsPercentage;\r\n contact.bankingInfoPercentage = resp.bankingPercentage;\r\n contact.percentageOfCompletion =\r\n (contact.personalInfoPercentage +\r\n contact.residentialInfoPercentage +\r\n contact.employmentInfoPercentage +\r\n contact.bankingInfoPercentage +\r\n contact.assetsInfoPercentage) / 5;\r\n\r\n // BANDAID - THIS IS TO KEEP THE APPLICANT MENU IN SYNC AS IT USES THE CONTEXT\r\n let context = this.getContext();\r\n if (this.props.applicantNo === 1) {\r\n context.mortgage!.primaryApplicant = contact;\r\n } else {\r\n context.mortgage!.secondaryApplicant = contact;\r\n }\r\n this.props.setContact(contact);\r\n //this.applicantService.updateFinanceCollapsed(doc.categoryUniqueCode, true);\r\n //this.getContext().getMortgageDocuments();\r\n //this.applicantService.getMortgageDocuments();\r\n });\r\n }\r\n\r\n updateDocument = (isLatest: boolean, doc: any) => {\r\n doc.currentBalance = (!doc.currentBalance || doc.currentBalance?.toString().trim() === \"\") ? 0 : doc.currentBalance;\r\n doc.applicableTo = this.props.applicantNo === 1 ? ApplicableTo.Primary : ApplicableTo.Secondary;\r\n let context = this.getContext();\r\n doc.institution = doc.institutionId != null ? context.institutions.find(i => i.value === doc.institutionId)?.text : doc.otherInstitutionName;\r\n axios.post('/MortgageDocuments/UpdateDocument', doc)\r\n .then(response => {\r\n var contact = this.props.contact;\r\n\r\n // There's a rogue order of events someplace blowing up the asset calculation.\r\n // To protect against this we may get a -1 back. Handle that situation\r\n if (response.data != -1) {\r\n var percentages = response.data;\r\n contact.assetsInfoPercentage = percentages.assetsAndLoans;\r\n contact.bankingInfoPercentage = percentages.banking; \r\n contact.percentageOfCompletion =\r\n (contact.personalInfoPercentage +\r\n contact.residentialInfoPercentage +\r\n contact.employmentInfoPercentage +\r\n contact.assetsInfoPercentage + \r\n contact.bankingInfoPercentage) / 5;\r\n }\r\n \r\n // BANDAID - THIS IS TO KEEP THE APPLICANT MENU IN SYNC AS IT USES THE CONTEXT\r\n let context = this.getContext();\r\n if (this.props.applicantNo === 1) {\r\n context.mortgage!.primaryApplicant = contact;\r\n } else {\r\n context.mortgage!.secondaryApplicant = contact;\r\n }\r\n this.props.setContact(contact);\r\n this.getContext().updateDoc(doc);\r\n //this.getContext().getMortgageDocuments();\r\n //this.applicantService.getMortgageDocuments();\r\n\r\n if (isLatest) {\r\n logger.log(\"updateDocument\");\r\n }\r\n });\r\n }\r\n\r\n deactivateDocument = (isLatest: boolean, doc: any) => {\r\n doc.contactId = this.applicantService.getApplicantId();\r\n doc.hasAny = HasAny.No;\r\n doc.statusReason = MortgageDocumentStatusCode.Inactive;\r\n //this.getContext().updateDoc(doc);\r\n //this.applicantService.getMortgageDocuments();\r\n axios.post('/MortgageDocuments/DeactivateDocument', doc)\r\n .then(response => {\r\n var contact = this.props.contact;\r\n var percentages = response.data;\r\n contact.assetsInfoPercentage = percentages.assetsAndLoans;\r\n contact.bankingInfoPercentage = percentages.banking; \r\n contact.percentageOfCompletion =\r\n (contact.personalInfoPercentage +\r\n contact.residentialInfoPercentage +\r\n contact.employmentInfoPercentage +\r\n contact.assetsInfoPercentage +\r\n contact.bankingInfoPercentage) / 5;\r\n\r\n // BANDAID - THIS IS TO KEEP THE APPLICANT MENU IN SYNC AS IT USES THE CONTEXT\r\n let context = this.getContext();\r\n if (this.props.applicantNo === 1) {\r\n context.mortgage!.primaryApplicant = contact;\r\n } else {\r\n context.mortgage!.secondaryApplicant = contact;\r\n }\r\n\r\n if (isLatest) {\r\n logger.log(\"deactivateDocument\");\r\n doc.hasAny = HasAny.No;\r\n doc.statusReason = MortgageDocumentStatusCode.Inactive;\r\n doc.institutionId = null;\r\n doc.name = null;\r\n doc.currentBalance = null;\r\n doc.limit = null;\r\n doc.termLeft = null;\r\n doc.termPeriod = null;\r\n doc.termRemaining = null;\r\n doc.planOnClearingTheBalance = null;\r\n doc.recurringYearlyValue = null;\r\n doc.recurringMonthlyValue = null;\r\n doc.accountNumber = \"\";\r\n this.getContext().updateDoc(doc);\r\n //this.getContext().getMortgageDocuments();\r\n //this.applicantService.getMortgageDocuments();\r\n }\r\n this.props.setContact(contact);\r\n });\r\n }\r\n\r\n deleteDocument = (e: any, doc: any, values: any[]) => {\r\n let docs = this.getFilteredDocs().filter((x: any) => x.statusReason !== MortgageDocumentStatusCode.Inactive).filter((x: any) => { return x.categoryUniqueCode === doc.categoryUniqueCode; });// this.state.mortgageDocumentList\r\n logger.log(\"docs length:\" + docs.length);\r\n if (docs.length === 1) {\r\n if (doc.new) {\r\n logger.log(\"saveAsDeactivatedDocument\");\r\n this.saveAsDeactivatedDocument(true, doc);\r\n }\r\n else {\r\n logger.log(\"deactivateDocument\");\r\n this.deactivateDocument(true, doc);\r\n }\r\n }\r\n else {\r\n if (doc.new || doc.mortgageDocumentId.indexOf(\".\") > -1) {\r\n logger.log(\"cancelDocument\");\r\n //this.cancelDocument(e, doc);\r\n this.getContext().deleteDoc(doc);\r\n }\r\n else {\r\n logger.log(\"DeleteDocument\");\r\n axios.post('/MortgageDocuments/DeleteDocument', null, { params: { mortgageDocumentId: doc.mortgageDocumentId } })\r\n .then(response => {\r\n this.getContext().deleteDoc(doc);\r\n });\r\n }\r\n }\r\n }\r\n // #endregion\r\n\r\n render() {\r\n let label = this.props.label;\r\n if (label.substring(this.props.label.length - 1, this.props.label.length) === \"s\") { //last char == 's'\r\n label = label.substring(0, this.props.label.length - 1);\r\n }\r\n\r\n return (\r\n <>\r\n <Modal className='text-center' size=\"lg\" show={this.state.requiredField !== \"\"} onHide={() => { this.setState({ requiredField: \"\" }) }} centered>\r\n <Modal.Header closeButton></Modal.Header>\r\n <Modal.Body>\r\n <Container className='text-center' >\r\n <Row>\r\n <h3 className=\"impact\">Field '{this.state.requiredField}' is required!</h3>\r\n </Row>\r\n {/* <Row>\r\n <p></p>\r\n </Row> */}\r\n </Container>\r\n </Modal.Body>\r\n <Modal.Footer className='text-center justify-center'>\r\n <Button className='btn btn-standard' onClick={() => { this.setState({ requiredField: \"\" }) }}>\r\n OK\r\n </Button>\r\n </Modal.Footer>\r\n </Modal>\r\n\r\n <div className=\"finance-modal\">\r\n <Modal.Body>\r\n {(this.props.hasAny === null || this.props.hasAny === false) &&\r\n <Container className=\"finance-document text-center\">\r\n <h3>Do you have any {this.props.label}?</h3>\r\n <br />\r\n <Button className=\"btn btn-standard btn-outline btn-wide\" onClick={e => this.hasAny(true)}>Yes</Button> \r\n <Button className=\"btn btn-standard btn-outline btn-wide\" onClick={e => this.hasAny(false)}>No</Button>\r\n </Container>\r\n }\r\n {this.props.hasAny === true && this.state.values.map((item: any, i) =>\r\n <Container key={item.key} className=\"finance-document text-center pb-4\">\r\n {i === 0 &&\r\n <Row>\r\n <h3 className=\"impact\">{this.props.label}</h3>\r\n </Row>\r\n }\r\n <Row>\r\n <Col className=\"col-11\"><Finance key={item} item={item} helperTexts={this.props.helperTexts} institutionList={this.props.institutionList} checkAccountNumber={this.checkAccountNumber} /></Col>\r\n <Col className=\"col-1\"><div style={{ cursor: \"pointer\", top: \"40%\", position: \"relative\", fontSize: 25, color: \"rgb(153,153,153)\" }} className=\"far fa-trash-can\" onClick={e => this.deleteDocumentEx(e, item, this.state.values)}></div></Col>\r\n </Row>\r\n {i === this.state.values.length - 1 &&\r\n <>\r\n {!this.props.hideAdd &&\r\n <Row className=\"text-center pt-5\">\r\n <Stack direction=\"horizontal\" className=\"justify-center\">\r\n <div className=\"doddltext h4\" style={{ cursor: \"pointer\" }} onClick={() => { this.addNewDocument(this.props.values.length > 0 ? this.props.values[0] : null, this.props.label) }}>\r\n <i className=\"fas fa-square-plus\" style={{ verticalAlign: \"middle\" }}></i> <span className=\"h5 doddltext ps-2\">Add another</span>\r\n </div>\r\n </Stack>\r\n </Row>\r\n }\r\n <Row className=\"text-center pt-3\">\r\n {!this.state.loading &&\r\n <Stack className=\"justify-center\" direction=\"horizontal\" gap={3}>\r\n <Button className=\"btn btn-standard big btn-wide\" onClick={() => { this.close() }}>Close</Button>\r\n <Button className=\"btn btn-standard big btn-wide\" onClick={() => { this.save() }}>Done</Button>\r\n </Stack>\r\n }\r\n {this.state.loading && <Icons.Spinner animation=\"border\" role=\"status\" />}\r\n </Row>\r\n </>\r\n }\r\n </Container>\r\n )\r\n }\r\n </Modal.Body>\r\n </div>\r\n </>\r\n );\r\n }\r\n}","import 'bootstrap/dist/css/bootstrap.min.css';\r\nimport { Col, Container, Modal, Row, Stack } from \"react-bootstrap\";\r\nimport { Navigate } from \"react-router-dom\";\r\nimport { ApplicantPage } from \"./ApplicantPage\";\r\nimport { ApplicantService } from './ApplicantService';\r\nimport { ApplicantBaseComponent } from './ApplicantBaseComponent';\r\nimport { AggregatePill, AggregateType, IAggregateListItem, IAggregatePillProps } from '../components/Pills/AggregatePill';\r\nimport { getTooltip } from '../components/Tooltip';\r\nimport { HasAny, MortgageDocumentStatusCode, ApplicableTo, PortalMortgageDocumentModel } from '../models/PortalMortgageDocumentModel';\r\nimport { FinanceManager } from '../components/Finance/FinanceManager';\r\nimport UserContextState from '../components/UserContext';\r\nimport { MortgageSubType } from '../models/PortalMortgageModel';\r\nimport { Profile } from './Profile';\r\nimport { OpenBanking } from './OpenBanking';\r\nimport axios from 'axios';\r\nimport { AIPType } from '../models/PortalAIPApplication';\r\n\r\nexport class ApplicantAssetsAndLoans extends ApplicantBaseComponent {\r\n applicantService: ApplicantService;\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.prev = this.prev.bind(this);\r\n this.next = this.next.bind(this);\r\n this.getFilteredDocs = this.getFilteredDocs.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n let context = this.getContext();\r\n this.applicantService = new ApplicantService(context, this, this.props.applicantNo);\r\n this.applicantService.getApplicantData();\r\n this.applicantService.getMortgageDocuments();\r\n this.applicantService.getDocumentTypes();\r\n //this.applicantService.getInstitutions();\r\n this.applicantService.getFinanceTooltips();\r\n }\r\n\r\n prev() {\r\n this.applicantService.saveAllFields(false);\r\n this.setState({ redirectTo: \"/employment\" + this.props.applicantNo });\r\n }\r\n\r\n next() {\r\n this.applicantService.saveAllFields(false);\r\n this.setState({ redirectTo: \"/profile\" });\r\n }\r\n\r\n hasActiveWithMissingData(key: string, activeDocuments: PortalMortgageDocumentModel[]): boolean {\r\n if (key === \"PROPERTYASSETS\" || key === \"OTHERASSETS\") {\r\n return activeDocuments.filter(e => isNullOrEmpty(e.name) || isNullOrEmpty(e.currentBalance) || e.currentBalance === 0).length > 0;\r\n }\r\n else if (key === \"LOAN\") {\r\n return activeDocuments.filter(e => isNullOrEmpty(e.currentBalance) || isNullOrEmpty(e.institutionId)\r\n || isNullOrEmpty(e.accountNumber) || e.currentBalance === 0).length > 0;\r\n }\r\n else if (key === \"MORTGAGEACCOUNT\") {\r\n return activeDocuments.filter(e => isNullOrEmpty(e.currentBalance) || isNullOrEmpty(e.institutionId)\r\n || isNullOrEmpty(e.accountNumber) || e.currentBalance === 0).length > 0;\r\n } else {\r\n return activeDocuments.filter(e => isNullOrEmpty(e.currentBalance) || e.currentBalance === 0).length > 0;\r\n }\r\n }\r\n\r\n hasMissingData(key: string, value: PortalMortgageDocumentModel[]): boolean {\r\n var activeDocuments = value.filter(e => e.statusReason !== MortgageDocumentStatusCode.Inactive);\r\n var inActiveDocuments = value.filter(e => e.statusReason === MortgageDocumentStatusCode.Inactive);\r\n let hasInactiveWithHasAnyEqualToNo = inActiveDocuments.filter(e => e.hasAny === HasAny.No).length > 0;\r\n let activeWithMissingData = this.hasActiveWithMissingData(key, activeDocuments);\r\n\r\n if (activeWithMissingData === true)\r\n return true;\r\n\r\n if (activeDocuments.length > 0 || hasInactiveWithHasAnyEqualToNo)\r\n return false;\r\n\r\n return true;\r\n }\r\n\r\n getFilteredDocs(context?: UserContextState | null) {\r\n if (!context) context = this.getContext();\r\n if (context.mortgageDocumentList != null) {\r\n let applicableTo = this.props.applicantNo === 1 ? ApplicableTo.Primary : ApplicableTo.Secondary;\r\n let categories = ['STATEMENT','SAVING'];\r\n let docs = context.mortgageDocumentList.filter(c => \r\n (!categories.includes(c.categoryUniqueCode??'')) &&\r\n (c.applicableTo === ApplicableTo.Shared || c.applicableTo === applicableTo || c.isJoint === true)\r\n );\r\n\r\n docs.sort(\r\n (a: any, b: any) => {\r\n // We want to primarily sort by mortgage document id, but if these are null make sure they appear first\r\n // We next want to sort by the order property (if its set) as this allows to change the order before merging\r\n if (\r\n a.categoryOrder === b.categoryOrder) {\r\n // if we have 2 null mortgage documents, or 2 matching mortgage documents, sort by the order attribute\r\n if (!a.applicableTo && !b.applicableTo) return 1;\r\n if (a.applicableTo < b.applicableTo) return -1;\r\n if (a.applicableTo > b.applicableTo) return 1;\r\n }\r\n\r\n // Compare if the document needs to come before or after\r\n if (a.categoryOrder < b.categoryOrder) return -1;\r\n if (a.categoryOrder > b.categoryOrder) return 1;\r\n\r\n // If we get here, we've probably hit equal documents and orders... \r\n // shouldn't happen, but in case paul got at the code you never know\r\n return 0;\r\n }\r\n );\r\n return docs;\r\n }\r\n return [];\r\n }\r\n\r\n getPillList(context: UserContextState): any[] {\r\n var list: any[] = [];\r\n if (context.mortgageDocumentList === null) return [];\r\n\r\n let docs = this.getFilteredDocs(context);\r\n let catGrouped: any = this.applicantService.groupBy(docs, \"categoryUniqueCode\");\r\n\r\n Object.entries(catGrouped).forEach(([key, value]) => {\r\n if ((key === \"MORTGAGEACCOUNT\" || key === \"PROPERTYASSETS\") && context.mortgage?.subType === MortgageSubType.FirstTimeBuyer) {\r\n return;\r\n }\r\n if (key === \"OTHERASSETS\")\r\n return;\r\n\r\n let active = (value as PortalMortgageDocumentModel[]).filter(e => e.statusReason !== MortgageDocumentStatusCode.Inactive);\r\n let inActive = (value as PortalMortgageDocumentModel[]).filter(e => e.statusReason === MortgageDocumentStatusCode.Inactive);\r\n\r\n let hasAny = null;\r\n if (active.length > 0) {\r\n hasAny = true;\r\n } else {\r\n if (inActive.length > 0 && inActive[0].hasAny !== null)\r\n hasAny = false;\r\n }\r\n\r\n // let finance = this.state.finances.find(f => f.key === key);\r\n // let hasAny = finance ? finance.hasAny : null;\r\n\r\n var label: string | null;\r\n var aggregate2type: AggregateType | undefined;\r\n var aggregate2label: string | undefined;\r\n var aggregate2currency: boolean | undefined;\r\n var items: IAggregateListItem[] | null;\r\n var toolTipKey = key.toLowerCase();\r\n\r\n var hasMissingData = this.hasMissingData(key, value as PortalMortgageDocumentModel[]);\r\n\r\n label = (value as PortalMortgageDocumentModel[])[0].document;\r\n if (key === \"LOAN\" || key === \"MORTGAGEACCOUNT\") {\r\n items = (value as PortalMortgageDocumentModel[])\r\n .filter(e => e.statusReason !== MortgageDocumentStatusCode.Inactive)\r\n .map(\r\n (e: PortalMortgageDocumentModel) => {\r\n return { key: e.mortgageDocumentId, values: [e.currentBalance] } as IAggregateListItem;\r\n }\r\n );\r\n\r\n } else if (key === \"PROPERTYASSETS\") {// || key === \"OTHERASSETS\") {\r\n items = (value as PortalMortgageDocumentModel[])\r\n .filter(e => e.statusReason !== MortgageDocumentStatusCode.Inactive)\r\n .map(\r\n (e: PortalMortgageDocumentModel) => {\r\n return { key: e.mortgageDocumentId, values: [e.recurringYearlyValue] } as IAggregateListItem;\r\n }\r\n );\r\n }\r\n else {\r\n aggregate2type = undefined;\r\n aggregate2label = undefined;\r\n aggregate2currency = undefined;\r\n items = (value as PortalMortgageDocumentModel[])\r\n .filter(e => e.statusReason !== MortgageDocumentStatusCode.Inactive)\r\n .map(\r\n (e: PortalMortgageDocumentModel) => {\r\n return { key: e.mortgageDocumentId, values: [e.currentBalance] } as IAggregateListItem;\r\n }\r\n );\r\n }\r\n\r\n var val: any[] = [];\r\n (value as any[])\r\n .filter(e => e.statusReason !== MortgageDocumentStatusCode.Inactive)\r\n .sort((a:any,b:any) => {\r\n if (a.new && b.new) return 1;\r\n if (b.new) return -1;\r\n return 1;\r\n }\r\n )\r\n .forEach((e, i) => { e.key = e.mortgageDocumentId; val.push(e); });\r\n\r\n if (items.length == 0 && hasAny == null) {\r\n items = null;\r\n }\r\n //logger.log(finance, hasAny);\r\n let item : IAggregatePillProps = {\r\n //key: JSON.stringify(finance) + JSON.stringify(val),\r\n //key: \"pill-\" + key,\r\n uniqueKey: key,\r\n label: label ?? \"\",\r\n showLabelCount: true,\r\n items: items,\r\n aggregate1type: AggregateType.sum,\r\n aggregate1label: \"Balance:\",\r\n aggregate1currency: true,\r\n aggregate2type: aggregate2type,\r\n aggregate2label: aggregate2label,\r\n aggregate2currency: aggregate2currency,\r\n overlay: <FinanceManager key={JSON.stringify(val)} uniqueKey={key} label={label} items={items} values={val} institutionList={context.institutions} \r\n helperTexts={this.state.dochelperTexts} applicantNo={this.state.applicantNo} contact={this.state.contact} setContact={(contact) => { this.setState({contact: contact});}} hasAny={hasAny} />,\r\n hideIfValue: this.state.emptyOnly,\r\n //itemProp: null, //finance,\r\n isMissing: hasMissingData, //anyMissing.length > 0,\r\n // setCloseModal: this.setCloseModal,\r\n // setOpenModal: this.setOpenModal,\r\n tooltip: getTooltip(context.tooltips ?? [], toolTipKey)\r\n };\r\n\r\n\r\n if (key === \"PROPERTYASSETS\" || key === \"OTHERASSETS\") {\r\n item.aggregate1label = \"Income:\";\r\n }\r\n\r\n list.push(item);\r\n });\r\n return list;\r\n }\r\n\r\n refreshMortgageDocuments() {\r\n let context = this.getContext();\r\n let url = `/MortgageDocuments/GetAllDocuments?mortgageId=${context.mortgage!.mortgageId}`;\r\n return axios.get(url).then((mortgageDocumentsResponse) => {\r\n context.mortgageDocumentList = mortgageDocumentsResponse.data;\r\n this.setState({refreshToggle: false});\r\n });\r\n }\r\n\r\n render() {\r\n let context = this.getContext();\r\n\r\n if (this.state.redirectTo) {\r\n return <Navigate to={this.state.redirectTo} />;\r\n }\r\n\r\n if (!this.state.contact)\r\n return <span>Applicant information not found</span>;\r\n\r\n let list = this.getPillList(context);\r\n\r\n var title = this.state.contact.firstName + \"'s Assets & Loans\";\r\n var subTitle = <>This bit is important! Please set out all Assets and Loan accounts you hold.</>;\r\n \r\n return (\r\n <>\r\n <ApplicantPage applicantNo={this.state.applicantNo} title={title} subTitle={subTitle} next={this.next} prev={this.prev}\r\n contact={this.state.contact} handleSubmit={this.applicantService.handleSubmit} showFinishButton={true}\r\n emptyOnlyClick={() => this.setState({ emptyOnly: !this.state.emptyOnly })} percentComplete={this.state.contact.assetsInfoPercentage}>\r\n <>\r\n <Container className=\"pill-form\">\r\n <>\r\n <Container>\r\n <Row className=\"pill-row\">\r\n <Stack gap={1} direction=\"horizontal\" className=\"pill-stack\">\r\n {list.map((pill, idx) =>\r\n <AggregatePill key={\"pill_\" + idx} className=\"finance-modal\" contentClassName=\"financial-modal-content\" headerClassName=\"finance-modal-header\"\r\n {...pill}\r\n ></AggregatePill>\r\n )}\r\n </Stack>\r\n </Row>\r\n </Container>\r\n </>\r\n </Container>\r\n <Modal size=\"xl\" fullscreen=\"lg-down\" show={this.state.finished === true} onHide={() => this.setState({ finished: false })} centered>\r\n <Modal.Body>\r\n <Container className=\"text-center justify-center\">\r\n <div className=\"page-title\">\r\n <h1>Thanks, {this.state.contact.firstName}!</h1>\r\n <h3>Your personal details section is now <strong>{Math.round(this.state.contact.percentageOfCompletion)}% complete!</strong></h3>\r\n <h5>What would you like to do next?</h5>\r\n </div>\r\n <Profile splashScreen={true} />\r\n <br />\r\n </Container>\r\n </Modal.Body>\r\n </Modal>\r\n </>\r\n </ApplicantPage>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nfunction isNullOrEmpty(value: any): boolean {\r\n return (value === undefined || value === null || value === \"\");\r\n}\r\n","import { Component } from 'react';\r\n\r\ninterface IProps {\r\n value?: number;\r\n}\r\n\r\nexport class NumberAsCurrency extends Component<IProps, any> {\r\n\r\n render() {\r\n return (\r\n '€' + (Math.round(this.props.value!) ?? 0).toLocaleString('en-US', { useGrouping: true })\r\n );\r\n }\r\n}\r\n","import React from \"react\";\r\nimport \"bootstrap/dist/css/bootstrap.min.css\";\r\nimport \"../../pages/Applicant.css\";\r\nimport { UserContextComponent } from \"../UserContextComponent\";\r\nimport axios from \"axios\";\r\nimport { ILenderProduct } from \"../../models/CalculatorModels\";\r\nimport { Col, Container, Row, Stack } from \"react-bootstrap\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { NextButton } from \"../NextButton\";\r\nimport { NumberAsCurrency } from \"../NumberAsCurrency\";\r\n\r\ninterface IProps {\r\n item?: ILenderProduct;\r\n repayment?: number;\r\n className?: string;\r\n}\r\n\r\nexport class CalculatedLenderProductRow extends UserContextComponent<\r\n IProps,\r\n any\r\n> {\r\n constructor(props: IProps) {\r\n super(props);\r\n }\r\n\r\n fixedYearText(product: ILenderProduct): any {\r\n var rateText = \"\";\r\n if (!product) return \"\";\r\n if (product.fixedYears > 0) {\r\n rateText = `${product.fixedYears} year, ${product.type}`;\r\n if (rateText.endsWith(\"rate\")) {\r\n rateText = rateText.replace(\"rate\", \"\");\r\n }\r\n } else {\r\n rateText = product.type;\r\n }\r\n return rateText;\r\n }\r\n\r\n render() {\r\n var item = this.props.item;\r\n if (!item) return <></>;\r\n return (\r\n <>\r\n <Row\r\n className={`desktop-only m-2 box-teal-outline-1 px-0 ${\r\n this.props.className ?? \"\"\r\n }`}\r\n >\r\n <Col className=\"w-20 border-left-curved bg-white border-teal border-right-teal p-0 justify-center py-5\">\r\n {item.lenderLogo ? (\r\n <img\r\n className=\"\"\r\n style={{\r\n height: \"60px\",\r\n marginTop: -5,\r\n }}\r\n src={item.lenderLogo}\r\n ></img>\r\n ) : (\r\n <h1>{item.lenderName}</h1>\r\n )}\r\n </Col>\r\n\r\n <Col className=\"w-40 border-right p-0 py-5 border-right-teal pe-5 px-4\">\r\n <Row>\r\n <Col xs={6} className=\"ps-5\">\r\n <p className=\"mb-0\">Type:</p>\r\n <p className=\"mt-0 impact\">{<>{this.fixedYearText(item)}</>}</p>\r\n </Col>\r\n <Col xs={6}>\r\n <p className=\"mb-0\">\r\n {item.minBer && item.minBer <= 755980005\r\n ? \"Green Rate:\"\r\n : \"Rate:\"}\r\n </p>\r\n <p className=\"mt-0 impact\">{item.rate + \"%\"}</p>\r\n {item.cashback && item.cashbackAmount && (\r\n <CashbackStamp item={item} />\r\n )}\r\n </Col>\r\n </Row>\r\n </Col>\r\n\r\n <Col className=\"w-40 border-right-curved justify-center bg-chartreuse\">\r\n <Row className=\"justify-center ms-5\">\r\n <Col className=\" p-0\">\r\n <p className=\"nowrap text-start tight\">Monthly repayment</p>\r\n <h2 className=\"impact tight\">\r\n <NumberAsCurrency value={item.repayment} />\r\n </h2>\r\n </Col>\r\n\r\n {/* <Col className=\"text-end ms-5\">\r\n <Stack gap={2}>\r\n <Link to=\"/profile\" className=\" a-s-e\">\r\n <button className=\"btn btn-primary btn-wider big btn-dark chartreuse-font ps-3 text-start\">\r\n <i className=\"far fa-circle-right fa-xl pe-2\" />{\" \"}\r\n <strong>Continue</strong>\r\n </button>\r\n </Link>\r\n <Link to=\"#\" className=\" a-s-e\">\r\n <button className=\"btn btn-primary btn-wider big btn-standard nowrap ps-3 text-start\">\r\n <i className=\"far fa-calendar-days fa-xl pe-2\" /> Book a\r\n FREE call\r\n </button>\r\n </Link>\r\n </Stack>\r\n </Col> */}\r\n </Row>\r\n </Col>\r\n </Row>\r\n\r\n {/* Mobile Mode - it's completely different so just put it in it's own row */}\r\n <Row\r\n className={`mobile-only m-2 box-teal-outline-1 p-0 ${\r\n this.props.className ?? \"\"\r\n }`}\r\n >\r\n <Row className=\"m-0 border-top-curved bg-white border-bottom-teal py-3 text-start\">\r\n {item.lenderLogo ? (\r\n <img\r\n className=\"\"\r\n style={{\r\n width: \"160px\",\r\n marginTop: -5,\r\n }}\r\n src={item.lenderLogo}\r\n ></img>\r\n ) : (\r\n <h1>{item.lenderName}</h1>\r\n )}\r\n </Row>\r\n\r\n <Row className=\"m-0 p-0\">\r\n <Col className=\"border-bottom-left-curved border-right p-0 justify-center py-4 border-right-teal\">\r\n <p className=\"mb-0\">Type:</p>\r\n <p className=\"mt-0 impact\">{<>{this.fixedYearText(item)}</>}</p>\r\n <p className=\"mb-0\">\r\n {item.minBer && item.minBer <= 755980005\r\n ? \"Green Rate:\"\r\n : \"Rate:\"}\r\n </p>\r\n <p className=\"mt-0 impact\">{item.rate + \"%\"}</p>\r\n {item.cashback && item.cashbackAmount && (\r\n <CashbackStamp item={item} />\r\n )}\r\n </Col>\r\n\r\n <Col\r\n className=\"border-bottom-right-curved justify-center bg-chartreuse pe-5 m-0\"\r\n style={{ width: \"60%\" }}\r\n >\r\n <Row className=\"justify-center ms-5 p-0 me-0\">\r\n <Col className=\" p-0\">\r\n <p className=\"text-start tight nowrap\">Monthly repayment</p>\r\n <h2 className=\"impact tight\">\r\n <NumberAsCurrency value={item.repayment} />\r\n </h2>\r\n </Col>\r\n </Row>\r\n </Col>\r\n </Row>\r\n </Row>\r\n </>\r\n );\r\n }\r\n}\r\n\r\nfunction CashbackStamp({ item }: { item: ILenderProduct }) {\r\n return (\r\n <>\r\n <div className=\"stamp-container\">\r\n <div className=\"stamp bg-chartreuse justify-center\">\r\n <p className=\"s p-0 m-0\">\r\n {!item.fixedCashback && `${item.cashback}%`} Cashback\r\n </p>\r\n <p className=\"impact p-0 m-0\">\r\n <NumberAsCurrency value={item.cashbackAmount} />\r\n </p>\r\n </div>\r\n </div>\r\n </>\r\n );\r\n}\r\n","import {\r\n ICalculationResult,\r\n ILenderProduct,\r\n IRepaymentCalculationRequest,\r\n ISwitcherCalculationRequest,\r\n ProductCategory,\r\n} from \"../models/CalculatorModels\";\r\nimport { NumberAsCurrency } from \"../components/NumberAsCurrency\";\r\nimport axios from \"axios\";\r\nimport { PortalPage } from \"../components/PortalPage\";\r\nimport \"./Calculators.css\";\r\nimport {\r\n Col,\r\n Container,\r\n Modal,\r\n ModalBody,\r\n ModalFooter,\r\n ModalHeader,\r\n Row,\r\n Stack,\r\n} from \"react-bootstrap\";\r\nimport { UserContextComponent } from \"../components/UserContextComponent\";\r\nimport { CalculatedLenderProductRow } from \"../components/Cards/CalculatedLenderProductRow\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { AppointSolicitorTile } from \"../components/Tiles/AppointSolicitorTile\";\r\nimport { LifeCoverTile } from \"../components/Tiles/LifeCoverTile\";\r\nimport { MortgageType } from \"../models/PortalMortgageModel\";\r\n\r\ninterface IProps {\r\n isPurchaser?: boolean;\r\n homeValue?: number;\r\n existingMortgage?: number;\r\n remainingTerm?: number;\r\n repayments?: number;\r\n interestRate?: number;\r\n subtitle?: any;\r\n}\r\n\r\ninterface IState {\r\n hasError: boolean;\r\n errors?: string[];\r\n homeValue?: number | null;\r\n existingMortgage: number | null;\r\n remainingTerm: number | null;\r\n repayments?: number;\r\n interestRate?: number;\r\n exploreOptions: boolean;\r\n showSavings: boolean;\r\n calculationResult?: ICalculationResult;\r\n calculatingResults: boolean;\r\n ber: string | null;\r\n cashbackOnly: boolean;\r\n showBooking: boolean;\r\n}\r\n\r\nexport class MortgageCalculator extends UserContextComponent<IProps, IState> {\r\n constructor(props: IProps) {\r\n super(props);\r\n const context = this.getContext();\r\n this.state = {\r\n calculatingResults: false,\r\n hasError: false,\r\n homeValue: this.props.homeValue ?? null,\r\n existingMortgage: this.props.existingMortgage ?? null,\r\n ber: null,\r\n exploreOptions: false,\r\n showSavings: false,\r\n remainingTerm: this.props.remainingTerm ?? 25,\r\n cashbackOnly: false,\r\n showBooking: false,\r\n };\r\n this.calculateRepayments = this.calculateRepayments.bind(this);\r\n this.calculateRepaymentsDelayed =\r\n this.calculateRepaymentsDelayed.bind(this);\r\n this.pageRefreshListener = this.pageRefreshListener.bind(this);\r\n }\r\n\r\n componentDidMount(): void {\r\n const context = this.getContext();\r\n context.setPageRefreshListener(this.pageRefreshListener);\r\n if (\r\n context?.mortgage?.mortgageAmountProposed ||\r\n context?.mortgage?.propertyValue ||\r\n context?.mortgage?.purchasePrice\r\n ) {\r\n this.setState({\r\n existingMortgage: context?.mortgage?.mortgageAmountProposed,\r\n homeValue:\r\n context?.mortgage?.propertyValue ?? context?.mortgage?.purchasePrice,\r\n });\r\n this.calculateRepaymentsDelayed();\r\n }\r\n }\r\n\r\n pageRefreshListener(): void {\r\n const context = this.getContext();\r\n\r\n if (\r\n (context.calculatorState.homeValue &&\r\n context.calculatorState.homeValue !== this.state.homeValue) ||\r\n (context.calculatorState.mortgageAmount &&\r\n context.calculatorState.mortgageAmount !==\r\n this.state.existingMortgage) ||\r\n (context.calculatorState.mortgageTerm &&\r\n context.calculatorState.mortgageTerm != this.state.remainingTerm) ||\r\n (context.calculatorState.berRating &&\r\n context.calculatorState.berRating !== this.state.ber) ||\r\n (context.calculatorState.cashbackOnly !== undefined &&\r\n context.calculatorState.cashbackOnly !== this.state.cashbackOnly)\r\n ) {\r\n this.setState({\r\n homeValue: context.calculatorState.homeValue || this.state.homeValue,\r\n existingMortgage:\r\n context.calculatorState.mortgageAmount || this.state.existingMortgage,\r\n remainingTerm:\r\n context.calculatorState.mortgageTerm || this.state.remainingTerm,\r\n ber: context.calculatorState.berRating || this.state.ber,\r\n cashbackOnly: context.calculatorState.cashbackOnly || false,\r\n });\r\n\r\n this.calculateRepaymentsDelayed();\r\n }\r\n }\r\n\r\n calculateRepaymentsDelayed() {\r\n setTimeout(this.calculateRepayments, 500);\r\n }\r\n\r\n calculateRepayments() {\r\n const context = this.getContext();\r\n var homeValue = this.state.homeValue;\r\n var existingMortgage = this.state.existingMortgage;\r\n var term = this.state.remainingTerm;\r\n var repayments = this.state.repayments;\r\n var interestRate = this.state.interestRate;\r\n var ber = this.state.ber;\r\n if (!homeValue || !existingMortgage || !term) {\r\n return;\r\n }\r\n\r\n if (existingMortgage / homeValue > 0.9) {\r\n var errors: string[] = [];\r\n errors.push(\r\n \"Mortgage amount required cannot be greater than 90% of the property value\"\r\n );\r\n //this.setState({errors: errors, hasError: true, showSavings: false, existingMortgage: Math.round(this.state.homeValue * 0.9)});\r\n this.setState({ errors: errors, hasError: true, showSavings: false });\r\n return;\r\n }\r\n\r\n this.setState({ calculatingResults: true, errors: [], hasError: false });\r\n\r\n var request: ISwitcherCalculationRequest = {\r\n purchasePrice: homeValue,\r\n mortgageAmount: existingMortgage,\r\n term: term,\r\n interestRate: interestRate!,\r\n repayments: repayments!,\r\n ber: ber!,\r\n cashbackOnly: !!context.calculatorState.cashbackOnly,\r\n };\r\n\r\n if (context.mortgage?.type === MortgageType.RemortgagingExistingLoan) {\r\n //AxiosRequestConfig;\r\n axios({\r\n url: \"/Calculator/CalculateSwitcher\",\r\n method: \"post\",\r\n baseURL: process.env.REACT_APP_PUBLIC_API_URL,\r\n data: request,\r\n })\r\n .then((response: { data: any }) => {\r\n this.setState({\r\n calculatingResults: false,\r\n calculationResult: response.data,\r\n showSavings: true,\r\n });\r\n })\r\n .catch(() => {\r\n this.setState({ calculatingResults: false });\r\n //alert('submit error: ' + error.message);\r\n });\r\n // this.setState({checking: true});\r\n } else {\r\n var purchaseRequest: IRepaymentCalculationRequest = {\r\n purchasePrice: homeValue,\r\n mortgageAmount: existingMortgage,\r\n term: term,\r\n ber: ber!,\r\n cashbackOnly: this.state.cashbackOnly,\r\n };\r\n axios({\r\n url: \"/Calculator/CalculateRepayment\",\r\n method: \"post\",\r\n baseURL: process.env.REACT_APP_PUBLIC_API_URL,\r\n data: request,\r\n })\r\n .then((response) => {\r\n var showResults = response.data.products.length > 0;\r\n this.setState({\r\n calculatingResults: false,\r\n calculationResult: response.data,\r\n showSavings: true,\r\n });\r\n })\r\n .catch((error) => {\r\n this.setState({ calculatingResults: false });\r\n //alert('submit error: ' + error.message);\r\n });\r\n }\r\n }\r\n\r\n fixedYearText(product: ILenderProduct): any {\r\n var rateText = \"\";\r\n if (!product) return \"\";\r\n if (product.fixedYears > 0) {\r\n rateText = `${product.fixedYears} year, ${product.type}`;\r\n if (rateText.endsWith(\"rate\")) {\r\n rateText = rateText.replace(\"rate\", \"\");\r\n }\r\n } else {\r\n rateText = product.type;\r\n }\r\n return rateText;\r\n }\r\n\r\n render() {\r\n const context = this.getContext();\r\n var rates = [{}];\r\n if (this.state.calculationResult?.products) {\r\n this.state.calculationResult.products.map(\r\n (p: ILenderProduct, i: number) => {\r\n return rates.push(p);\r\n }\r\n );\r\n }\r\n return (\r\n <PortalPage\r\n title={<>Hey {context.contact?.firstName}</>}\r\n description={\r\n <>\r\n <p className=\"nowrap desktop-only\">\r\n Based on the information supplied, we have set out below some\r\n initial mortgage options for your review.\r\n <br />\r\n <strong>The next step</strong> is to understand your exact\r\n requirements so we can identify the best mortgage for you.\r\n </p>\r\n <p className=\"mobile-only m\">\r\n Based on the information supplied, we have set out below some\r\n initial mortgage options for your review.\r\n </p>\r\n </>\r\n }\r\n alignTitleLeft={true}\r\n containerClassName={\"wide-portal-page\"}\r\n >\r\n <Container className=\"pe-0 me-0\">\r\n {\r\n <>\r\n <Row\r\n className=\"sticky-div bg-limestone\"\r\n style={{ width: \"calc(100%+ + 10px)\" }}\r\n >\r\n {/* Desktop version */}\r\n <Row className=\"desktop-only pe-0\">\r\n <Col\r\n className={`ms-2 me-0 box-teal-outline-1 box-chartreuse p-3 text-start`}\r\n >\r\n <h3 className=\"impact\">Let's keep going!</h3>\r\n <p className=\"mt-2\">\r\n Or continue to provide more information online to help\r\n your advisor to tailor options for you.{\" \"}\r\n </p>\r\n <Row>\r\n <Link to=\"/profile\" className=\"\">\r\n <button className=\"btn btn-xxl-wide bigger btn-dark chartreuse-font ps-3 text-start\">\r\n <i className=\"far fa-circle-right fa-xl pe-2\" />{\" \"}\r\n <strong>Continue</strong> online\r\n </button>\r\n </Link>\r\n </Row>\r\n </Col>\r\n\r\n <Col\r\n className={`ms-2 me-0 box-teal-outline-1 bg-white p-3 text-start`}\r\n >\r\n <h3 className=\"impact\">Speak to an expert!</h3>\r\n <p className=\"\">\r\n Book a call with your advisor to discuss your initial\r\n requirements & options\r\n </p>\r\n <Row className=\"px-3\">\r\n <Link to=\"#\" className=\"p-0\">\r\n <button\r\n className=\"btn btn-primary btn-xxl-wide bigger btn-standard nowrap ps-3 text-start\"\r\n disabled={\r\n !context.mortgage?.owner?.bookingCalendarLink\r\n }\r\n onClick={() => {\r\n this.setState({ showBooking: true });\r\n }}\r\n >\r\n <i className=\"far fa-calendar-days fa-xl pe-2\" /> Book\r\n a call with your advisor\r\n </button>\r\n </Link>\r\n </Row>\r\n </Col>\r\n </Row>\r\n\r\n {/* Mobile version */}\r\n <Row className={`mobile-only`}>\r\n <Row\r\n className={`ms-2 me-0 box-teal-outline-1 box-chartreuse p-3 text-center`}\r\n >\r\n <h3 className=\"impact\">Let's keep going!</h3>\r\n <p className=\"m\">\r\n Book a call with your advisor to discuss your initial\r\n requirements & options\r\n </p>\r\n <Row className=\"px-3\">\r\n <Link to=\"#\" className=\"p-0\">\r\n <button\r\n className=\"btn btn-primary btn-xxl-wide bigger btn-standard nowrap ps-3 text-start\"\r\n onClick={() => {\r\n this.setState({ showBooking: true });\r\n }}\r\n >\r\n <i className=\"far fa-calendar-days fa-xl pe-2\" /> Book\r\n a call with your advisor\r\n </button>\r\n </Link>\r\n </Row>\r\n\r\n <p className=\"mt-2 m\">\r\n Or continue to provide more information online to help\r\n your advisor to tailor options for you.{\" \"}\r\n </p>\r\n <Row>\r\n <Link to=\"/profile\" className=\"p-0\">\r\n <button className=\"btn btn-xxl-wide bigger btn-dark chartreuse-font ps-3 text-start\">\r\n <i className=\"far fa-circle-right fa-xl pe-2\" />{\" \"}\r\n <strong>Continue</strong> online\r\n </button>\r\n </Link>\r\n </Row>\r\n </Row>\r\n </Row>\r\n </Row>\r\n <Row style={{ width: \"100%\" }}>\r\n <Row className={`desktop-only m-2 px-3 py-4 justify-center`}>\r\n <p>\r\n <strong>Remember, </strong>we work with all major mortgage\r\n lenders.\r\n <br />\r\n Your free mortgage advisor will work with you to secure the\r\n best lender for you.\r\n </p>\r\n <div className=\"lenders\"></div>\r\n </Row>\r\n <Row className={`mobile-only m-2 px-3 pt-2 justify-center`}>\r\n <p className=\"xs\">\r\n <strong>Remember, </strong>we work with all major mortgage\r\n lenders.\r\n <br />\r\n Your free mortgage advisor will work with you to secure the\r\n best lender for you.\r\n </p>\r\n <div className=\"lenders s\"></div>\r\n </Row>\r\n </Row>\r\n </>\r\n }\r\n\r\n {this.state.showSavings && this.state.calculationResult?.products && (\r\n <>\r\n {this.state.calculationResult.products.map(\r\n (item: ILenderProduct, index: number) => {\r\n return (\r\n <div key={`product-${index}`}>\r\n {/* {index === 2 && (\r\n <Row style={{ width: \"100%\" }}>\r\n <Row className={`m-2 px-3 py-4 justify-center`}>\r\n <p>\r\n <strong>Remember, </strong>we work with all major\r\n mortgage lenders.\r\n <br />\r\n Your free mortgage advisor will work with you to\r\n secure the best lender for you.\r\n </p>\r\n <div className=\"desktop-only lenders\"></div>\r\n </Row>\r\n </Row>\r\n )} */}\r\n <Row style={{ width: \"100%\" }} className=\"me-0 pe-0\">\r\n <CalculatedLenderProductRow\r\n item={item}\r\n repayment={this.state.calculationResult?.repayment}\r\n />\r\n </Row>\r\n </div>\r\n );\r\n }\r\n )}\r\n </>\r\n )}\r\n\r\n <div className=\"mobile-only mt-3\">\r\n <button\r\n className=\"btn btn-third\"\r\n onClick={() => {\r\n // Admittedly a bit of a hack, but I can't find a better way to open this\r\n var nav: any =\r\n document.getElementsByClassName(\"navbar-toggler\");\r\n if (nav?.length > 0) nav[0].click();\r\n window.scrollTo(0, 0);\r\n }}\r\n >\r\n Update your requirement <i className=\"fas fa-filter\" />\r\n </button>\r\n </div>\r\n\r\n {context.mortgage?.type === MortgageType.RemortgagingExistingLoan && (\r\n <Row className=\"mt-5 ps-2 text-start\" style={{ marginLeft: -30 }}>\r\n <h1>What's next?</h1>\r\n <div className=\"boxty tall grid box-chartreuse m-3 text-start\">\r\n <h3 className=\"pb-3\">Complete your application</h3>\r\n <p>\r\n Glide through all the mandatory information requited and\r\n upload the all the mandatory documents.\r\n </p>\r\n <p>Your advisor will help you select the best loan for you.</p>\r\n <Link to=\"/profile\" className=\" a-s-e\">\r\n <button className=\"btn fw big btn-dark next chartreuse-font pe-5 mt-3\">\r\n Complete application\r\n </button>\r\n </Link>\r\n </div>\r\n {!context.mortgage?.solicitor && <AppointSolicitorTile />}\r\n {!context.mortgage?.hasInsuranceQuote && <LifeCoverTile />}\r\n </Row>\r\n )}\r\n </Container>\r\n <Modal\r\n size=\"lg\"\r\n fullscreen=\"lg-down\"\r\n show={this.state.showBooking}\r\n centered\r\n onHide={() => this.setState({ showBooking: false })}\r\n >\r\n <ModalHeader closeButton className=\"-mt-2\"></ModalHeader>\r\n <ModalBody\r\n style={{ background: \"transparent\", height: \"calc(100vh - 100px)\" }}\r\n >\r\n <iframe\r\n src={context.mortgage?.owner?.bookingCalendarLink ?? \"\"}\r\n width=\"100%\"\r\n //height=\"100%\"\r\n scrolling=\"yes\"\r\n style={{ border: 0, height: \"calc(100% - 40px)\", marginTop: 20 }}\r\n ></iframe>\r\n </ModalBody>\r\n </Modal>\r\n </PortalPage>\r\n );\r\n }\r\n}\r\n","import { Component } from \"react\";\r\nimport \"./App.css\";\r\nimport \"bootstrap/dist/css/bootstrap.min.css\";\r\nimport { Menu } from \"./components/Menu\";\r\nimport {\r\n BrowserRouter as Router,\r\n Routes,\r\n Route,\r\n useLocation,\r\n} from \"react-router-dom\";\r\nimport { Profile } from \"./pages/Profile\";\r\nimport { MortgageDetails } from \"./pages/MortgageDetails\";\r\nimport Property from \"./pages/Property\";\r\nimport \"./styles.css?v=1.0\";\r\nimport { Documents } from \"./pages/Documents\";\r\nimport { DocumentReview } from \"./pages/DocumentReview\";\r\nimport { NotFound } from \"./pages/NotFound\";\r\nimport { ErrorPage } from \"./pages/Error\";\r\nimport { LenderAdvice } from \"./pages/LenderAdvice\";\r\nimport { UserProvider } from \"./components/UserProvider\";\r\nimport { AIPApplication } from \"./pages/AIPApplication\";\r\nimport { SideNav } from \"./components/SideNav\";\r\nimport Shared from \"./pages/Shared\";\r\nimport { HomePage } from \"./pages/HomePage\";\r\nimport { SolicitorDetails } from \"./pages/SolicitorDetails\";\r\nimport { SharedDetails } from \"./pages/SharedDetails\";\r\nimport { NotValid } from \"./pages/NotValid\";\r\nimport RequestInterceptor from \"./components/RequestInterceptor\";\r\nimport { Dashboard } from \"./pages/Dashboard\";\r\nimport { LoanCompletion } from \"./pages/LoanCompletion\";\r\nimport { LenderConfirmation } from \"./pages/LenderConfirmation\";\r\nimport LogoutOnIdle from \"./components/Idle/LogoutOnIdle\";\r\nimport { ImpersonateContact } from \"./pages/ImpersonateContact\";\r\nimport { ApplicantResidential } from \"./pages/ApplicantResidential\";\r\nimport { ApplicantEmployment } from \"./pages/ApplicantEmployment\";\r\nimport { ApplicantPersonal } from \"./pages/ApplicantPersonal\";\r\nimport { ApplicantFinancial } from \"./pages/ApplicantFinancial\";\r\nimport { logger } from \"./helper/Logger\";\r\nimport { ApplicantAssetsAndLoans } from \"./pages/ApplicantAssetsAndLoans\";\r\nimport { SwitchingCalculator } from \"./pages/SwitchingCalculator\";\r\nimport { PurchasingCalculator } from \"./pages/PurchasingCalculator\";\r\nimport { MortgageCalculator } from \"./pages/MortgageCalculator\";\r\n\r\nclass App extends Component {\r\n componentDidMount() {}\r\n\r\n componentWillUnmount() {}\r\n\r\n unhandledrejection(event: any) {\r\n logger.log(event.reason);\r\n }\r\n\r\n render() {\r\n logger.log(\"App was loaded\");\r\n\r\n return (\r\n <div className=\"App\">\r\n <div>\r\n <Menu></Menu>\r\n </div>\r\n\r\n <Router>\r\n <RequestInterceptor>\r\n <UserProvider>\r\n {/* <IdleTimerModal /> */}\r\n <LogoutOnIdle></LogoutOnIdle>\r\n <div className=\"doddl-bg\">\r\n <SideNav authenticated={true}></SideNav>\r\n <Routes>\r\n <Route path=\"/\" element={<HomePage />}></Route>\r\n <Route path=\"/dashboard\" element={<Dashboard />}></Route>\r\n <Route path=\"/mortgage\" element={<MortgageDetails />}></Route>\r\n <Route path=\"/profile\" element={<Profile />}></Route>\r\n\r\n {/* <Route path=\"/applicant1\" element={<Applicant key={1} applicantNo={1}></Applicant>}>\r\n </Route> */}\r\n <Route\r\n path=\"/applicant1\"\r\n element={\r\n <ApplicantPersonal\r\n key={10}\r\n applicantNo={1}\r\n ></ApplicantPersonal>\r\n }\r\n ></Route>\r\n <Route\r\n path=\"/personal1\"\r\n element={\r\n <ApplicantPersonal\r\n key={11}\r\n applicantNo={1}\r\n ></ApplicantPersonal>\r\n }\r\n ></Route>\r\n <Route\r\n path=\"/residential1\"\r\n element={\r\n <ApplicantResidential\r\n key={12}\r\n applicantNo={1}\r\n ></ApplicantResidential>\r\n }\r\n ></Route>\r\n <Route\r\n path=\"/employment1\"\r\n element={\r\n <ApplicantEmployment\r\n key={13}\r\n applicantNo={1}\r\n ></ApplicantEmployment>\r\n }\r\n ></Route>\r\n <Route\r\n path=\"/financial1\"\r\n element={\r\n <ApplicantFinancial\r\n key={14}\r\n applicantNo={1}\r\n ></ApplicantFinancial>\r\n }\r\n ></Route>\r\n <Route\r\n path=\"/assetsandloans1\"\r\n element={\r\n <ApplicantAssetsAndLoans\r\n key={15}\r\n applicantNo={1}\r\n ></ApplicantAssetsAndLoans>\r\n }\r\n ></Route>\r\n\r\n {/* <Route path=\"/applicant2\" element={<Applicant key={2} applicantNo={2}></Applicant>}>\r\n </Route> */}\r\n <Route\r\n path=\"/applicant2\"\r\n element={\r\n <ApplicantPersonal\r\n key={20}\r\n applicantNo={2}\r\n ></ApplicantPersonal>\r\n }\r\n ></Route>\r\n <Route\r\n path=\"/personal2\"\r\n element={\r\n <ApplicantPersonal\r\n key={21}\r\n applicantNo={2}\r\n ></ApplicantPersonal>\r\n }\r\n ></Route>\r\n <Route\r\n path=\"/residential2\"\r\n element={\r\n <ApplicantResidential\r\n key={22}\r\n applicantNo={2}\r\n ></ApplicantResidential>\r\n }\r\n ></Route>\r\n <Route\r\n path=\"/employment2\"\r\n element={\r\n <ApplicantEmployment\r\n key={23}\r\n applicantNo={2}\r\n ></ApplicantEmployment>\r\n }\r\n ></Route>\r\n <Route\r\n path=\"/financial2\"\r\n element={\r\n <ApplicantFinancial\r\n key={24}\r\n applicantNo={2}\r\n ></ApplicantFinancial>\r\n }\r\n ></Route>\r\n <Route\r\n path=\"/assetsandloans2\"\r\n element={\r\n <ApplicantAssetsAndLoans\r\n key={25}\r\n applicantNo={2}\r\n ></ApplicantAssetsAndLoans>\r\n }\r\n ></Route>\r\n\r\n <Route path=\"/documents\" element={<Documents />}></Route>\r\n {/* <Route path=\"/open-banking\" element={<OpenBanking />}>\r\n </Route> */}\r\n <Route\r\n path=\"/document-review\"\r\n element={<DocumentReview />}\r\n ></Route>\r\n <Route\r\n path=\"/lender-advice\"\r\n element={<LenderAdvice />}\r\n ></Route>\r\n <Route\r\n path=\"/aip-application\"\r\n element={<AIPApplication />}\r\n ></Route>\r\n <Route path=\"/property\" element={<Property />}></Route>\r\n <Route\r\n path=\"/solicitor-details\"\r\n element={<SolicitorDetails />}\r\n ></Route>\r\n <Route path=\"/shared\" element={<Shared />}></Route>\r\n <Route\r\n path=\"/shared-details\"\r\n element={<SharedDetails />}\r\n ></Route>\r\n\r\n <Route\r\n path=\"/completion\"\r\n element={<LoanCompletion />}\r\n ></Route>\r\n\r\n <Route\r\n path=\"/lender-confirmation\"\r\n element={<LenderConfirmation />}\r\n ></Route>\r\n\r\n <Route path=\"/not-valid\" element={<NotValid />}></Route>\r\n\r\n <Route path=\"/error\" element={<ErrorPage />} />\r\n\r\n <Route\r\n path=\"/_impersonate\"\r\n element={<ImpersonateContact />}\r\n />\r\n\r\n <Route\r\n path=\"/calculators/switcher\"\r\n element={<MortgageCalculator />}\r\n />\r\n <Route\r\n path=\"/calculators/purchaser\"\r\n element={<MortgageCalculator />}\r\n />\r\n <Route\r\n path=\"/calculators/mortgage\"\r\n element={<MortgageCalculator />}\r\n />\r\n\r\n <Route path=\"*\" element={<NotFound />} />\r\n </Routes>\r\n </div>\r\n </UserProvider>\r\n </RequestInterceptor>\r\n </Router>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default App;\r\n","import { ReportHandler } from 'web-vitals';\r\n\r\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\r\n if (onPerfEntry && onPerfEntry instanceof Function) {\r\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\r\n getCLS(onPerfEntry);\r\n getFID(onPerfEntry);\r\n getFCP(onPerfEntry);\r\n getLCP(onPerfEntry);\r\n getTTFB(onPerfEntry);\r\n });\r\n }\r\n};\r\n\r\nexport default reportWebVitals;\r\n","import { Component } from 'react';\r\n\r\nexport class GoToLoginPage extends Component<any, any> {\r\n constructor(props: any) {\r\n super(props);\r\n }\r\n\r\n render() {\r\n return (<p><em>Redirecting to the sign in page...</em></p>);\r\n }\r\n}\r\n","import { useMsal } from \"@azure/msal-react\";\r\nimport { Route, BrowserRouter as Router, Routes } from \"react-router-dom\";\r\nimport { loginApiRequest } from \"../helper/authConfig\";\r\nimport { ErrorPage } from \"../pages/Error\";\r\nimport { GoToLoginPage } from \"../pages/GoToLoginPage\";\r\nimport { NotValid } from \"../pages/NotValid\";\r\nimport { Login } from \"../pages/Login\";\r\nimport React from \"react\";\r\nimport { UserContext } from \"./UserContext\";\r\n\r\nexport default function Unauthenticated() {\r\n const userContext = React.useContext(UserContext);\r\n const { instance } = useMsal();\r\n\r\n const handleLogin = () => {\r\n if (window.location.href.indexOf(\"AADB2C90208\") > 0) {\r\n window.location.href = \"/not-valid\";\r\n } else if (window.location.pathname !== \"/error\" && window.location.pathname !== \"/not-valid\" && window.location.pathname !== \"/SignOutComplete\") {\r\n \r\n if (window.location.href.includes(\"_impersonate\")) {\r\n sessionStorage.setItem(\"imp\", window.location.href.split(\"=\").pop() ?? \"\");\r\n }\r\n \r\n instance.loginRedirect(loginApiRequest)\r\n .catch((e) => {});\r\n }\r\n };\r\n\r\n if (window.location.href.endsWith(\"login\") === false)\r\n handleLogin();\r\n \r\n return <>\r\n <Router>\r\n <Routes>\r\n <Route path=\"/\" element={<GoToLoginPage />}></Route>\r\n <Route path=\"/not-valid\" element={<NotValid />}></Route>\r\n <Route path=\"/error\" element={<ErrorPage />} />\r\n <Route path=\"*\" element={<GoToLoginPage />}></Route>\r\n {/* <Route path=\"/login\" element={<Login />}></Route> */}\r\n {/* <Route path=\"*\" element={<NotFound />} /> */} \r\n </Routes>\r\n </Router>\r\n </>;\r\n};","import React from 'react';\r\nimport ReactDOM from 'react-dom/client';\r\nimport './index.css';\r\nimport App from './App';\r\nimport reportWebVitals from './reportWebVitals';\r\nimport { PublicClientApplication } from \"@azure/msal-browser\";\r\nimport { AuthenticatedTemplate, MsalProvider, UnauthenticatedTemplate } from \"@azure/msal-react\";\r\nimport { msalConfig } from \"./helper/authConfig\";\r\nimport { Footer } from './components/Footer';\r\nimport RequestInterceptor from './components/RequestInterceptor';\r\nimport Unauthenticated from './components/Unauthenticated';\r\n\r\nconst root = ReactDOM.createRoot(\r\n document.getElementById('root') as HTMLElement\r\n);\r\n\r\nconst msalInstance = new PublicClientApplication(msalConfig);\r\n\r\nroot.render(\r\n <>\r\n {/* <React.StrictMode>*/}\r\n <MsalProvider instance={msalInstance}>\r\n <UnauthenticatedTemplate>\r\n <Unauthenticated />\r\n </UnauthenticatedTemplate>\r\n <AuthenticatedTemplate>\r\n <App />\r\n </AuthenticatedTemplate>\r\n </MsalProvider>\r\n {/* <Footer /> */}\r\n {/* </React.StrictMode> */}\r\n </>\r\n);\r\n\r\n/**/\r\n// If you want to start measuring performance in your app, pass a function\r\n// to log results (for example: reportWebVitals(logger.log))\r\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\nreportWebVitals();\r\n"],"names":["makeGetEdgeOfNeighbor","getPeriod","getEdgeOfPeriod","defaultOffset","date","offset","previousPeriod","makeGetEnd","getBeginOfNextPeriod","Date","getTime","makeGetRange","getStart","getEnd","getYear","getFullYear","year","parseInt","isNaN","Error","concat","getMonth","getMonthHuman","getDate","getHours","datePieces","split","length","hoursString","hours","getMinutes","minutesString","minutes","getSeconds","secondsString","seconds","getCenturyStart","centuryStartYear","centuryStartDate","setFullYear","setHours","getPreviousCenturyStart","getNextCenturyStart","getCenturyEnd","getPreviousCenturyEnd","getNextCenturyEnd","getCenturyRange","getDecadeStart","decadeStartYear","decadeStartDate","getPreviousDecadeStart","getNextDecadeStart","getDecadeEnd","getPreviousDecadeEnd","getNextDecadeEnd","getDecadeRange","getYearStart","yearStartDate","getPreviousYearStart","getNextYearStart","getYearEnd","getPreviousYearEnd","getNextYearEnd","getYearRange","makeGetEdgeOfNeighborMonth","month","getMonthStart","monthStartDate","getPreviousMonthStart","getNextMonthStart","getMonthEnd","getPreviousMonthEnd","getNextMonthEnd","getMonthRange","makeGetEdgeOfNeighborDay","day","getDayStart","dayStartDate","getPreviousDayStart","getNextDayStart","getDayEnd","getPreviousDayEnd","getNextDayEnd","getDayRange","getDaysInMonth","padStart","num","val","numStr","slice","getHoursMinutes","getHoursMinutesSeconds","getISOLocalMonth","getISOLocalDate","getISOLocalDateTime","module","exports","utils","require","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","transitionalDefaults","AxiosError","CanceledError","parseProtocol","config","Promise","resolve","reject","onCanceled","requestData","data","requestHeaders","headers","responseType","done","cancelToken","unsubscribe","signal","removeEventListener","isFormData","isStandardBrowserEnv","request","XMLHttpRequest","auth","username","password","unescape","encodeURIComponent","Authorization","btoa","fullPath","baseURL","url","onloadend","responseHeaders","getAllResponseHeaders","response","responseText","status","statusText","value","err","open","method","toUpperCase","params","paramsSerializer","timeout","onreadystatechange","readyState","responseURL","indexOf","setTimeout","onabort","ECONNABORTED","onerror","ERR_NETWORK","ontimeout","timeoutErrorMessage","transitional","clarifyTimeoutError","ETIMEDOUT","xsrfValue","withCredentials","xsrfCookieName","read","undefined","xsrfHeaderName","forEach","key","toLowerCase","setRequestHeader","isUndefined","onDownloadProgress","addEventListener","onUploadProgress","upload","cancel","type","abort","subscribe","aborted","protocol","ERR_BAD_REQUEST","send","bind","Axios","mergeConfig","axios","createInstance","defaultConfig","context","instance","prototype","extend","create","instanceConfig","CancelToken","isCancel","VERSION","toFormData","Cancel","all","promises","spread","isAxiosError","executor","TypeError","resolvePromise","this","promise","token","then","_listeners","i","l","onfulfilled","_resolve","message","reason","throwIfRequested","listener","push","index","splice","source","c","call","ERR_CANCELED","name","inherits","__CANCEL__","InterceptorManager","dispatchRequest","validator","validators","defaults","interceptors","configOrUrl","assertOptions","silentJSONParsing","boolean","forcedJSONParsing","requestInterceptorChain","synchronousRequestInterceptors","interceptor","runWhen","synchronous","unshift","fulfilled","rejected","responseInterceptorChain","chain","Array","apply","shift","newConfig","onFulfilled","onRejected","error","getUri","generateHTTPMethod","isForm","code","toJSON","description","number","fileName","lineNumber","columnNumber","stack","descriptors","Object","defineProperties","defineProperty","from","customProps","axiosError","toFlatObject","obj","assign","handlers","use","options","eject","id","fn","h","isAbsoluteURL","combineURLs","requestedURL","transformData","throwIfCancellationRequested","transformRequest","merge","common","adapter","transformResponse","config1","config2","getMergedValue","target","isPlainObject","isArray","mergeDeepProperties","prop","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","keys","configValue","validateStatus","ERR_BAD_RESPONSE","Math","floor","fns","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","process","toString","getDefaultAdapter","isArrayBuffer","isBuffer","isStream","isFile","isBlob","isArrayBufferView","buffer","isURLSearchParams","isFileList","isObjectPayload","isObject","contentType","_FormData","env","FormData","rawValue","parser","encoder","isString","JSON","parse","trim","e","stringify","stringifySafely","strictJSONParsing","maxContentLength","maxBodyLength","thisArg","args","arguments","encode","replace","serializedParams","parts","v","isDate","toISOString","join","hashmarkIndex","relativeURL","write","expires","path","domain","secure","cookie","isNumber","toGMTString","document","match","RegExp","decodeURIComponent","remove","now","test","payload","originURL","msie","navigator","userAgent","urlParsingNode","createElement","resolveURL","href","setAttribute","host","search","hash","hostname","port","pathname","charAt","window","location","requestURL","parsed","normalizedName","ignoreDuplicateOf","line","substr","exec","callback","arr","formData","convertValue","isTypedArray","Blob","Buffer","build","parentKey","fullKey","endsWith","toArray","el","append","pop","thing","deprecatedWarnings","version","formatMessage","opt","desc","opts","ERR_DEPRECATED","console","warn","schema","allowUnknown","ERR_BAD_OPTION_VALUE","result","ERR_BAD_OPTION","cache","kindOf","str","kindOfTest","getPrototypeOf","isFunction","hasOwnProperty","TypedArray","Uint8Array","constructor","pattern","ArrayBuffer","isView","pipe","product","assignValue","a","b","stripBOM","content","charCodeAt","superConstructor","props","sourceObj","destObj","filter","merged","getOwnPropertyNames","searchString","position","String","lastIndex","hasOwn","classNames","classes","arg","argType","inner","includes","default","r","t","f","n","clsx","equal","flags","valueOf","DataURIWorker","self","onmessage","convert","postMessage","cb","file","reader","FileReader","readAsDataURL","plugin","_ref","addFilter","Type","createWorker","createRoute","_ref2","worker","post","terminate","base64Cache","item","_ref3","query","fileType","shouldPrepareOutput","_ref4","_ref5","metadata","getMetadata","map","dataItems","viewAPI","is","view","registerWriter","DID_PREPARE_OUTPUT","_ref6","root","action","size","ref","dispatch","DID_REMOVE_ITEM","_ref7","allowFileEncode","BOOLEAN","dispatchEvent","CustomEvent","detail","factory","replaceInString","guesstimateMimeType","getExtensionFromFilename","getFilenameFromURL","mimeTypeMatchesWildCard","mimeType","wildcard","isValidMimeType","acceptedTypes","userInputType","some","acceptedType","getItemType","filename","extension","validateFile","acceptedFileTypes","typeDetector","detectedType","catch","applyMimeTypeMap","acceptedFileType","accept","validationResult","handleRejection","acceptedFileTypesMapped","label","acceptedFileTypesMapped_unique","main","sub","allTypes","allButLastType","lastType","allowFileTypeValidation","ARRAY","labelFileTypeNotAllowed","STRING","fileValidateTypeLabelExpectedTypes","fileValidateTypeLabelExpectedTypesMap","OBJECT","fileValidateTypeDetectType","FUNCTION","isNode","HTMLElement","createStore","initialState","queries","actions","state","actionQueue","dispatchQueue","processDispatchQueue","queue","isBlocking","hidden","actionHandlers","_queryHandles","_len","_key","queryHandles","api","getState","processActionQueue","property","definition","forin","createObject","attr","node","getAttribute","hasAttribute","ns","svgElements","isSVGElement","tag","className","attributes","element","createElementNS","appendChild","parent","child","children","insertBefore","appendChildView","childViews","removeChildView","parentNode","removeChild","IS_BROWSER","isBrowser","getChildCount","childNodes","getViewRect","elementRect","scale","left","top","right","width","bottom","height","rect","outer","childView","isRectIgnored","childViewRect","expandRect","calculateRectSize","marginBottom","marginRight","thereYet","destination","velocity","errorMargin","abs","spring","_ref$stiffness","stiffness","_ref$damping","damping","_ref$mass","mass","resting","interpolate","ts","skipToEndState","onupdate","oncomplete","set","get","easeInOutQuad","tween","p","_ref$duration","duration","_ref$easing","easing","_ref$delay","delay","start","reverse","animator","createAnimator","category","def","addGetSet","overwrite","o","getter","setter","animations","mixinConfig","viewProps","viewInternalAPI","viewExternalAPI","initialProps","animation","destroy","addEvent","removeEvent","listeners","viewState","events","add","on","off","findIndex","event","isDefined","opacity","scaleX","scaleY","translateX","translateY","rotateX","rotateY","rotateZ","originX","originY","styles","currentProps","getOffset","getScale","getRect","propsHaveChanged","applyStyles","newProps","perspective","transforms","elementCurrentStyle","style","cssText","Mixins","apis","updateRect","layoutCalculated","paddingTop","marginTop","marginLeft","offsetLeft","offsetTop","offsetWidth","offsetHeight","scrollTop","offsetParent","createView","_ref$tag","_ref$name","_ref$attributes","_ref$read","_ref$write","_ref$create","_ref$destroy","_ref$filterFrameActio","filterFrameActionsForChild","_ref$didCreateView","didCreateView","_ref$didWriteView","didWriteView","_ref$ignoreRect","ignoreRect","_ref$ignoreRectUpdate","ignoreRectUpdate","_ref$mixins","mixins","store","getComputedStyle","frameRect","isResting","activeMixins","writers","readers","destroyers","getElement","getChildViews","getReference","createChildView","_read","internalAPI","_write","frameActions","shouldOptimize","writer","timestamp","mixin","_destroy","destroyer","sharedAPIDefinition","internalAPIDefinition","needle","linkView","unlinkView","registerReader","registerDestroyer","invalidateLayout","externalAPIDefinition","mixinAPIDefinition","sort","mixinAPI","childCount","createPainter","fps","painter","interval","last","requestTick","cancelTick","setTimerType","tick","performance","clearTimeout","requestAnimationFrame","cancelAnimationFrame","delta","pause","routes","_ref$actions","newNode","referenceNode","insertAfter","nextSibling","isEmpty","splitter","isBoolean","toBoolean","toNumber","toInt","toFloat","parseFloat","isInt","isFinite","toBytes","base","naturalFileSize","toFunctionReference","string","levels","level","methods","patch","revert","fetch","restore","load","createServerAPI","outline","createAction","onload","ondata","header","isNull","isAPI","getType","replaceSingleQuotes","conversionTable","array","int","float","bytes","function","serverapi","object","convertTo","getValueByType","newValue","defaultValue","valueType","newValueType","convertedValue","option","createOption","currentValue","enumerable","createOptions","optionDefinition","createInitialState","items","listUpdateTimeout","itemUpdateTimeout","processingQueue","fromCamels","separator","part","createOptionAPI","createOptionActions","createOptionQueries","InteractionMethod","API","DROP","BROWSE","PASTE","NONE","getUniqueId","random","substring","_AwaitValue","wrapped","_AsyncGenerator","gen","front","back","next","resume","wrappedAwait","_invoke","return","_objectWithoutPropertiesLoose","excluded","sourceKeys","_objectWithoutProperties","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","arr2","iter","Symbol","iterator","asyncIterator","throw","arrayRemove","run","sync","_fire","fireSync","fire","_len2","_key2","onOnce","_cb","copyObjectPropertiesToObject","src","getOwnPropertyDescriptor","PRIVATE","createItemAPI","removeReleasedItems","released","ItemStatus","INIT","IDLE","PROCESSING_QUEUED","PROCESSING","PROCESSING_COMPLETE","PROCESSING_ERROR","PROCESSING_REVERT_ERROR","LOADING","LOAD_ERROR","FileOrigin","INPUT","LIMBO","LOCAL","getNonNumeric","getDecimalSeparator","toLocaleString","getThousandsSeparator","decimalSeparator","thousandsStringWithSeparator","INT","NUMBER","ACTION","SERVER_API","REGEX","filters","applyFilterChain","matchingFilters","initialFilter","reduce","current","applyFilters","extendDefaultOptions","additionalOptions","defaultOptions","getOptions","setOptions","disabled","required","captureMethod","allowSyncAcceptAttribute","allowDrop","allowBrowse","allowPaste","allowMultiple","allowReplace","allowRevert","allowRemove","allowProcess","allowReorder","allowDirectoriesOnly","storeAsFile","forceRevert","maxFiles","checkValidity","itemInsertLocationFreedom","itemInsertLocation","itemInsertInterval","dropOnPage","dropOnElement","dropValidation","ignoredFiles","instantUpload","maxParallelUploads","allowMinimumUploadDuration","chunkUploads","chunkForce","chunkSize","chunkRetryDelays","server","fileSizeBase","labelFileSizeBytes","labelFileSizeKilobytes","labelFileSizeMegabytes","labelFileSizeGigabytes","labelDecimalSeparator","labelThousandsSeparator","labelIdle","labelInvalidField","labelFileWaitingForSize","labelFileSizeNotAvailable","labelFileCountSingular","labelFileCountPlural","labelFileLoading","labelFileAdded","labelFileLoadError","labelFileRemoved","labelFileRemoveError","labelFileProcessing","labelFileProcessingComplete","labelFileProcessingAborted","labelFileProcessingError","labelFileProcessingRevertError","labelTapToCancel","labelTapToRetry","labelTapToUndo","labelButtonRemoveItem","labelButtonAbortItemLoad","labelButtonRetryItemLoad","labelButtonAbortItemProcessing","labelButtonUndoItemProcessing","labelButtonRetryItemProcessing","labelButtonProcessItem","iconRemove","iconProcess","iconRetry","iconUndo","iconDone","oninit","onwarning","onactivatefile","oninitfile","onaddfilestart","onaddfileprogress","onaddfile","onprocessfilestart","onprocessfileprogress","onprocessfileabort","onprocessfilerevert","onprocessfile","onprocessfiles","onremovefile","onpreparefile","onupdatefiles","onreorderfiles","beforeDropFile","beforeAddFile","beforeRemoveFile","beforePrepareFile","stylePanelLayout","stylePanelAspectRatio","styleItemPanelAspectRatio","styleButtonRemoveItemPosition","styleButtonProcessItemPosition","styleLoadIndicatorPosition","styleProgressIndicatorPosition","styleButtonRemoveItemAlign","files","credits","getItemByQuery","find","getNumericAspectRatioFromString","aspectRatio","getActiveItems","archived","Status","EMPTY","ERROR","BUSY","READY","res","canUpdateFileInput","dataTransfer","DataTransfer","File","ITEM_ERROR","ITEM_BUSY","ITEM_READY","isItemInErrorState","isItemInBusyState","isItemInReadyState","isAsync","GET_STATUS","GET_ITEM","GET_ACTIVE_ITEM","GET_ACTIVE_ITEMS","GET_ITEMS","GET_ITEM_NAME","GET_ITEM_SIZE","fileSize","GET_STYLES","GET_PANEL_ASPECT_RATIO","GET_ITEM_PANEL_ASPECT_RATIO","GET_ITEMS_BY_STATUS","GET_TOTAL_ITEMS","SHOULD_UPDATE_FILE_INPUT","IS_ASYNC","GET_FILE_SIZE_LABELS","labelBytes","labelKilobytes","labelMegabytes","labelGigabytes","hasRoomForItem","count","maxFileCount","limit","min","max","arrayInsert","insertItem","isBase64DataURI","guesstimateExtension","subtype","leftPad","padding","getDateString","getFileFromBlob","blob","lastModifiedDate","_relativePath","getBlobBuilder","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","MSBlobBuilder","createBlob","arrayBuffer","BB","bb","getBlob","getBlobFromByteStringWithMimeType","byteString","ab","ia","getMimeTypeFromBase64DataURI","dataURI","getBase64DataFromBase64DataURI","getByteStringFromBase64DataURI","atob","getBlobFromBase64DataURI","getFileFromBase64DataURI","getFileNameFromHeader","matches","decodeURI","getFileSizeFromHeader","getTranfserIdFromHeader","getFileInfoFromHeaders","info","rows","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","createFileLoader","fetchFn","complete","progress","getProgress","loadURL","body","computable","total","fileinfo","setSource","isGet","sendRequest","onheaders","onprogress","xhr","headersReceived","encodeURI","lengthComputable","loaded","createResponse","createTimeoutResponse","hasQS","createFetchFunction","apiUrl","ChunkStatus","QUEUED","COMPLETE","WAITING","processFileChunked","transfer","chunks","chunkTransferId","chunkServer","serverId","fd","getResponseHeader","requestTransferId","requestParams","requestTransferOffset","requestUrl","lastChunkIndex","retries","completeProcessingChunks","canProcessChunk","chunk","processChunk","processChunks","updateTotalProgress","retryProcessChunk","every","totalBytesTransfered","totalSize","abortChunks","createFileProcessorFunction","canChunkUpload","shouldChunkUpload","willChunkUpload","createProcessorFunction","createRevertFunction","uniqueFileId","getRandomNumber","createPerceivedPerformanceUpdater","tickMin","tickMax","runtime","clear","createFileProcessor","processFn","perceivedProgress","perceivedPerformanceUpdater","perceivedDuration","progressFn","completeFn","transferId","reset","getDuration","getFilenameWithoutExtension","lastIndexOf","createFileStub","deepCloneObject","createItem","origin","serverFileReference","frozen","processingAborted","activeLoader","activeProcessor","abortProcessingRequestComplete","setStatus","getFileExtension","getFileType","getFileSize","getFile","loader","meta","success","retryLoad","abortLoad","processor","onprocess","requestProcessing","abortProcessing","revertFileUpload","serverTransferId","_setMetadata","silent","filenameWithoutExtension","fileExtension","relativePath","setMetadata","handler","itemAPI","freeze","release","archive","getItemIndexByQuery","getItemById","itemId","fetchBlob","getDomainFromURL","isExternalURL","dynamicLabel","isMockItem","listUpdated","optionalPromise","sortItems","compare","getItemByQueryFromState","itemHandler","_ref$success","_ref$failure","failure","ABORT_ALL","DID_SET_FILES","_ref2$value","activeItems","interactionMethod","DID_UPDATE_ITEM_METADATA","change","doUpload","MOVE_ITEM","currentIndex","SORT","ADD_ITEMS","_ref6$success","_ref6$failure","insertLocation","totalItems","isValidFile","ADD_ITEM","_ref7$index","_ref7$success","_ref7$failure","_ref7$options","_item","mainStatus","handleAdd","shouldAdd","loadComplete","_ref8","REQUEST_PREPARE_OUTPUT","_ref9","_ref9$failure","COMPLETE_LOAD_ITEM","_ref10","RETRY_ITEM_LOAD","REQUEST_ITEM_PREPARE","_success","output","REQUEST_ITEM_PROCESSING","processNow","PROCESS_ITEM","processNext","queueEntry","itemReference","noop","RETRY_ITEM_PROCESSING","REQUEST_REMOVE_ITEM","shouldRemove","RELEASE_ITEM","REMOVE_ITEM","removeFromView","ABORT_ITEM_LOAD","ABORT_ITEM_PROCESSING","REQUEST_REVERT_ITEM_PROCESSING","handleRevert","shouldRevert","requestRemoveResult","REVERT_ITEM_PROCESSING","SET_OPTIONS","_ref11","optionKeys","prioritizedOptionKeys","PrioritizedOptions","formatFilename","createElement$1","tagName","text","textNode","nodeValue","createTextNode","polarToCartesian","centerX","centerY","radius","angleInDegrees","angleInRadians","PI","x","cos","y","sin","describeArc","startAngle","endAngle","arcSweep","end","percentageArc","to","spin","svg","align","dataset","ringStrokeWidth","ringFrom","ringTo","coordinates","progressIndicator","create$1","innerHTML","icon","isDisabled","write$1","shouldDisable","removeAttribute","fileActionButton","toNaturalFileSize","_options$labelBytes","_options$labelKilobyt","_options$labelMegabyt","_options$labelGigabyt","KB","MB","GB","round","removeDecimalsWhenZero","decimalCount","toFixed","create$2","updateFile","updateFileSizeOnError","fileInfo","DID_LOAD_ITEM","DID_UPDATE_ITEM_META","DID_THROW_ITEM_LOAD_ERROR","DID_THROW_ITEM_INVALID","toPercentage","create$3","didSetItemLoadProgress","title","didSetItemProcessProgress","didRequestItemProcessing","didAbortItemProcessing","didCompleteItemProcessing","fileStatus","DID_REVERT_ITEM_PROCESSING","DID_REQUEST_ITEM_PROCESSING","DID_ABORT_ITEM_PROCESSING","DID_COMPLETE_ITEM_PROCESSING","DID_UPDATE_ITEM_PROCESS_PROGRESS","DID_UPDATE_ITEM_LOAD_PROGRESS","DID_THROW_ITEM_PROCESSING_ERROR","DID_THROW_ITEM_PROCESSING_REVERT_ERROR","DID_THROW_ITEM_REMOVE_ERROR","Buttons","AbortItemLoad","RetryItemLoad","RemoveItem","ProcessItem","AbortItemProcessing","RetryItemProcessing","RevertItemProcessing","ButtonKeys","calculateFileInfoOffset","getRemoveIndicatorAligment","buttonRect","buttonRemoveItem","calculateButtonWidth","buttonAbortItemLoad","calculateFileVerticalCenterOffset","calculateFileHorizontalCenterOffset","getLoadIndicatorAlignment","getProcessIndicatorAlignment","DefaultStyle","buttonRetryItemLoad","buttonProcessItem","buttonAbortItemProcessing","buttonRetryItemProcessing","buttonRevertItemProcessing","loadProgressIndicator","processProgressIndicator","processingCompleteIndicator","IdleStyle","ProcessingStyle","StyleMap","DID_START_ITEM_LOAD","DID_START_ITEM_REMOVE","DID_LOAD_LOCAL_ITEM","DID_START_ITEM_PROCESSING","processingCompleteIndicatorView","create$4","buttonFilter","LocalButtons","prev","curr","alignRemoveItemButton","enabledButtons","_map","buttonView","classList","stopPropagation","loadIndicatorView","progressIndicatorView","activeStyles","write$2","route","stylesToApply","defaultStyles","control","DID_SET_LABEL_BUTTON_ABORT_ITEM_PROCESSING","DID_SET_LABEL_BUTTON_ABORT_ITEM_LOAD","DID_SET_LABEL_BUTTON_ABORT_ITEM_REMOVAL","buttonAbortItemRemoval","_ref12","create$5","didLoadItem","fileWrapper","PANEL_SPRING_PROPS","create$6","section","createSection","scalable","viewConstructor","write$3","topRect","bottomRect","center","panel","heightCurrent","createDragHelper","itemIds","prevIndex","setIndex","getIndex","getItemIndex","ITEM_TRANSLATE_SPRING","ITEM_SCALE_SPRING","StateMap","create$7","handleClick","container","markedForRemoval","dragState","grab","isPrimary","removedActivateListener","pageX","pageY","dragOrigin","dragCenter","offsetX","offsetY","drag","preventDefault","dragOffset","drop","route$1","DID_UPDATE_PANEL_HEIGHT","write$4","DID_GRAB_ITEM","DID_DRAG_ITEM","DID_DROP_ITEM","currentState","filepondItemState","getItemsPerRow","horizontalSpace","itemWidth","getItemIndexByPosition","positionInView","itemRect","itemHorizontalMargin","itemsPerRow","childMid","itemVerticalMargin","itemHeight","_index","itemTop","itemRight","itemBottom","dropAreaDimensions","getHeight","setHeight","getWidth","setWidth","setDimensions","create$8","lastItemSpanwDate","addItemView","addIndex","spawnDate","cooldown","dist","moveItem","vx","vy","introItemView","removeItemView","getItemHeight","getItemWidth","dragItem","numItems","oldIndex","dragPosition","dragHeight","dragWidth","cols","getGridIndex","getColIndex","visibleChildren","idx","childBottom","childTop","route$2","DID_ADD_ITEM","write$5","dragCoordinates","dragIndex","dragIndexOffset","removeIndexOffset","addIndexOffset","childRect","visualHeight","prevX","prevY","visualIndex","indexX","indexY","vectorX","sign","vectorY","filterSetItemActions","list","create$9","overflowing","storeDragCoordinates","scopeLeft","scopeTop","route$3","DID_DRAG","DID_END_DRAG","write$6","overflow","newHeight","listScroller","attrToggle","resetFileInput","input","form","create$a","setAcceptedFileTypes","toggleAllowMultiple","toggleDirectoryFilter","toggleDisabled","toggleRequired","setCaptureMethod","handleChange","webkitRelativePath","doesAllowBrowse","disableField","updateRequiredStatus","setCustomValidity","updateFieldValidityStatus","browser","DID_SET_DISABLED","DID_SET_ALLOW_BROWSE","DID_SET_ALLOW_DIRECTORIES_ONLY","DID_SET_ALLOW_MULTIPLE","DID_SET_ACCEPTED_FILE_TYPES","DID_SET_CAPTURE_METHOD","DID_SET_REQUIRED","Key","ENTER","SPACE","create$b","handleKeyDown","keyCode","click","contains","updateLabelValue","caption","clickable","querySelector","dropLabel","DID_SET_LABEL_IDLE","addBlob","moveBlob","hideBlob","explodeBlob","write$7","route$4","DID_DROP","drip","setInputFiles","create$c","fields","getField","syncFieldPositionsWithItems","didReorderItems","didAddItem","shouldUseFileInput","dataContainer","didLoadItem$1","field","fileItem","didPrepareOutput","didSetDisabled","didRemoveItem","didDefineValue","write$8","DID_DEFINE_VALUE","DID_REORDER_ITEMS","DID_SORT_ITEMS","getRootNode","images","text$1","zip","epub","requestDataTransferItems","links","getLinks","hasFiles","getFiles","promisedFiles","isFileSystemItem","getFilesFromItem","returnedFileGroups","group","isEntry","entry","getAsEntry","isDirectory","kind","isDirectoryEntry","getFilesInDirectory","getAsFile","dirCounter","fileCounter","resolveIfDone","readEntries","dirEntry","directoryReader","createReader","readBatch","entries","correctedFile","correctMissingFileType","webkitGetAsEntry","getLinksFromTransferMetaData","getLinksFromTransferURLData","getData","dragNDropObservers","eventPosition","pageLeft","pageTop","layerX","layerY","createDragNDropClient","scopeToObserve","filterElement","observer","getDragNDropObserver","client","ondrop","onenter","ondrag","onexit","allowdrop","addListener","newObserver","createDragNDropObserver","clients","dragenter","dragover","dragleave","createHandler","elementFromPoint","point","isEventTarget","elementAtPosition","pageXOffset","pageYOffset","initialTarget","setDropEffect","effect","dropEffect","overDropTarget","allowsTransfer","createHopper","scope","validateItems","catchesDropsOnPage","requiresDropOnElement","_options$filterItems","filterItems","documentElement","lastState","filteredItems","ondragend","ondragstart","updateHopperState","hopperState","listening","listeners$1","handlePaste","activeEl","activeElement","nodeName","inScope","clipboardData","listen","unlisten","createPaster","create$d","addFilesNotificationTimeout","notificationClearTimeout","filenames","assist","textContent","clear$1","listModified","isUsingFilePond","itemAdded","itemRemoved","itemProcessed","itemProcessedUndo","itemError","assistant","toCamels","debounce","func","immidiateOnly","MAX_FILES_LIMIT","prevent","create$e","measure","bounds","widthPrevious","widthUpdated","updateHistory","previousAspectRatio","canHover","matchMedia","hasPointerEvents","passive","frag","tabindex","rel","write$9","route$5","calculateRootBoundingBoxHeight","_root$ref","hopper","isMultiItem","atMaxCapacity","addAction","listItemMargin","calculateListItemMargin","listHeight","calculateListHeight","labelHeight","currentLabelHeight","listMarginTop","listMarginBottom","visual","boundsHeight","history","MAX_BOUNCES","bounces","listAvailableHeight","fixedHeight","_listAvailableHeight","cappedHeight","isCappedHeight","panelHeight","_listAvailableHeight2","itemMargin","transform","scrollList","itemList","newItem","removedItem","verticalItemCount","ceil","measureHeight","maxHeight","exceedsMaxFiles","maxItems","totalBrowseItems","getDragIndex","toggleDrop","isAllowed","enabled","toggleBrowse","togglePaste","paster","DID_SET_ALLOW_DROP","DID_SET_ALLOW_PASTE","createApp","initialOptions","originalElement","visibilityHandler","resizeDoneTimer","isResizing","isResizingHorizontally","initialWindowWidth","currentWindowWidth","resizeHandler","isHidden","readWriteApi","innerWidth","routeActionsToEvents","createEvent","eventRoutes","DID_DESTROY","DID_INIT","DID_THROW_MAX_FILES","DID_INIT_ITEM","DID_COMPLETE_ITEM_PROCESSING_ALL","DID_UPDATE_ITEMS","DID_ACTIVATE_ITEM","exposeEvent","pond","bubbles","cancelable","composed","filtered","prepareFile","addFile","addFiles","isFilePondFile","removeFile","sources","lastArgument","processFile","prepareFiles","processFiles","_len3","_key3","removeFiles","_len4","_key4","q","moveFile","browse","appendTo","replaceElement","restoreElement","isAttachedTo","createAppObject","customOptions","lowerCaseFirstLetter","attributeNameToPropertyName","attributeName","mapObject","propertyMap","selector","mapping","selectorRegExp","getAttributesAsObject","attributeMapping","attribute","createAppAtElement","mergedOptions","attributeOptions","querySelectorAll","app","createApp$1","PRIVATE_METHODS","createAppAPI","replacements","workerBlob","workerURL","URL","createObjectURL","Worker","transferList","revokeObjectURL","loadImage","img","Image","renameFile","renamedFile","copyFile","registeredPlugins","createAppPlugin","pluginOutline","views","isOperaMini","operamini","hasPromises","hasBlobSlice","hasCreateObjectURL","hasVisibility","hasTiming","hasCSSSupports","CSS","isIE11","supported","isSupported","apps","FileStatus","OptionTypes","registerPlugin","updateOptionTypes","hook","indexToRemove","newHook","plugins","installedModules","__webpack_require__","moduleId","modules","m","d","toStringTag","mode","__esModule","s","extendStatics","setPrototypeOf","__proto__","__extends","__","__assign","__awaiter","_arguments","P","generator","step","__generator","g","_","sent","trys","ops","verb","op","__values","__read","ar","__spread","ExtensionsMap","mobileRegexp","md5","b64","safeUrl","getVersion","isMobile","isFacebook","resolveCdnUrl","session","handle","cdnURL","urls","cdnUrl","apikey","resolveHost","cname","hosts","newObj","k","uniqueTime","time","uniqueId","len","mime","w","isutf8","ext","toLocaleLowerCase","mapLen","sanitizeName","replacement","exclude","fileParts","char","j","toFilter","requiredFields","cleanUpCallbacks","FsRequestErrorCode","log","formatArgs","useColors","namespace","humanize","diff","color","lastC","save","namespaces","storage","setItem","removeItem","getItem","DEBUG","__nwjs","WebkitAppearance","firebug","exception","table","$1","localStorage","localstorage","colors","formatters","isError","wat","isInstanceOf","isPrimitive","isEvent","Event","isElement","Element","isRegExp","isThenable","Boolean","isSyntheticEvent","_e","URLSearchParams","FsHttpMethod","nameRegexp","regexName","isExist","isEmptyObject","arrayMode","getValue","buildOptions","newOptions","isName","getAllMatches","regex","allmatches","has","prefix","Events","EE","once","emitter","evt","_events","_eventsCount","clearEvent","EventEmitter","eventNames","names","ee","listenerCount","emit","a1","a2","a3","a4","a5","removeListener","removeAllListeners","prefixed","fallbackGlobalObject","getGlobalObject","global","uuid4","crypto","msCrypto","getRandomValues","Uint16Array","pad","consoleSandbox","originalConsole","wrappedLevels","__sentry_original__","truncate","snipLine","colno","newLine","ll","ignoreDuplicates","setIFExists","normalizeName","dnt","etag","tcn","te","debug","filestackHeaders","bufferToString","ignoreAttributes","trimValues","bufView","addition","pow","fromCharCode","subarray","combineURL","serialized","urlfy","hashIndex","uri","ValidationError","propertyPath","argument","ValidatorResult","ctx","errors","throwError","disableFormat","stringizer","addError","importErrors","validatorType","SchemaError","msg","captureStackTrace","SchemaContext","schemas","makeChild","propertyName","makeSuffix","FORMAT_REGEXPS","email","ipv6","alpha","alphanumeric","phone","regexp","ipv4","isFormat","format","customFormats","deepMerger","dst","deepMerge","copyist","copyistWithDeepMerge","pathEncoder","deepCompareStrict","aKeys","bKeys","objectGetPath","encodePath","getDecimalPlaces","decimalPlaces","Number","decimalParts","isNodeEnv","dynamicRequire","mod","Function","util","xmlNode","regx","attributeNamePrefix","attrNodeName","textNodeName","ignoreNameSpace","allowBooleanAttributes","parseNodeValue","parseAttributeValue","cdataTagName","cdataPositionChar","tagValueProcessor","attrValueProcessor","attrName","stopNodes","processTagValue","parsedTags","parentTagName","parseValue","parseTrueNumberOnly","checkForTagType","TagType","resolveNameSpace","tagname","tags","shouldParse","attrsRegx","buildAttributesMap","attrStr","attrs","attrCollection","getTraversalObj","xmlData","xmlObj","currentNode","tagsRegx","nextTag","tagType","attrsMap","startIndex","childNode","addChild","shouldRetry","NETWORK","SERVER","TIMEOUT","ABORTED","xpiZipFilename","oxmlContentTypes","oxmlRels","readUInt64LE","buf","mul","check","mask","checkString","findNextZipHeaderIndex","startAt","zipHeaderIndex","oxmlFound","sliced","idPos","docTypePos","findDocType","objectSize","stream","readableStream","eval","pass","PassThrough","minimumBytes","pipeline","Validator","SchemaScanResult","scan","validate","punycode","Url","slashes","urlParse","relative","resolveObject","protocolPattern","portPattern","simplePathPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","javascript","hostlessProtocol","slashedProtocol","http","https","ftp","gopher","querystring","parseQueryString","slashesDenoteHost","u","queryIndex","uSplit","rest","simplePath","proto","lowerProto","atSign","hostEnd","hec","parseHost","ipv6Hostname","hostparts","newpart","validParts","notHost","bit","toASCII","ae","esc","escape","qm","tkeys","tk","tkey","rkeys","rk","rkey","relPath","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","isNullOrUndefined","authInHost","hasTrailingSlash","up","isAbsolute","urilib","helpers","found","scanSchema","baseuri","$ref","resolvedUri","ourBase","scanArray","extends","additionalItems","scanObject","properties","additionalProperties","definitions","patternProperties","dependencies","disallow","allOf","anyOf","oneOf","not","nodeToJson","xmlToNodeobj","x2xmlnode","validationOption","convertToJson","convertTonimn","convert2nimn","convertToJsonString","j2xParser","parseToNimn","htmlTreeAsString","elem","currentElem","out","sepLength","nextStr","_htmlElementAsString","_oO","allowedAttrs","webpackPolyfill","deprecate","paths","__webpack_amd_options__","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","marker","runClearTimeout","Item","nextTick","argv","versions","prependListener","prependOnceListener","binding","cwd","chdir","dir","umask","hex_chr","md5cycle","md5blk","md5blks","md5blk_array","md51","tail","tmp","lo","hi","rhex","hex","toUtf8","hexToBinaryString","SparkMD5","clamp","targetArray","sourceArray","byteLength","begin","appendBinary","contents","_buff","_length","_hash","raw","ret","buff","_finish","setState","hashBinary","first","second","returnUInt8Array","utf8Str2ArrayBuffer","md51_array","define","PriorityQueue","_queue","priority","comp","it","lowerBound","PQueue","carryoverConcurrencyCount","intervalCap","Infinity","concurrency","autoStart","queueClass","_carryoverConcurrencyCount","_isIntervalIgnored","_intervalCount","_intervalCap","_interval","_intervalId","_intervalEnd","_timeoutId","_queueClass","_pendingCount","_concurrency","_isPaused","_resolveEmpty","_resolveIdle","_tryToStartAnother","_onInterval","_initializeIntervalIfNeeded","_onResumeInterval","clearInterval","_resolvePromises","canInitializeInterval","_intervalPaused","_doesIntervalAllowAnother","_doesConcurrentAllowAnother","dequeue","setInterval","enqueue","_next","existingResolve","argsTag","funcTag","genTag","mapTag","setTag","reFlags","reIsHostCtor","reIsUint","cloneableTags","freeGlobal","freeSelf","freeExports","nodeType","freeModule","moduleExports","addMapEntry","pair","addSetEntry","arrayReduce","iteratee","accumulator","initAccum","isHostObject","mapToArray","overArg","setToArray","uid","arrayProto","funcProto","objectProto","coreJsData","maskSrcKey","IE_PROTO","funcToString","objectToString","reIsNative","getPrototype","objectCreate","nativeGetSymbols","nativeIsBuffer","nativeKeys","DataView","getNative","Map","Set","WeakMap","nativeCreate","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","Hash","ListCache","MapCache","Stack","__data__","objValue","eq","assocIndexOf","baseClone","isDeep","isFull","customizer","isArr","initCloneArray","copyArray","getTag","isFunc","copy","cloneBuffer","isPrototype","initCloneObject","copyObject","getSymbols","copySymbols","baseAssign","cloneFunc","symbol","Ctor","cloneArrayBuffer","dataView","byteOffset","cloneDataView","typedArray","cloneTypedArray","cloneMap","cloneRegExp","cloneSet","initCloneByTag","stacked","keysFunc","symbolsFunc","values","arrayPush","baseGetAllKeys","getAllKeys","arrayEach","subValue","getMapData","baseIsNative","pairs","LARGE_ARRAY_SIZE","isIndex","other","ctorString","isArrayLike","isLength","inherited","isObjectLike","isArrayLikeObject","isArguments","baseTimes","skipIndexes","arrayLikeKeys","baseKeys","getFunctionName","_hasWeakSet","WeakSet","_inner","delete","unresolvedRefs","types","shouldResolve","addSchema","ourUri","addSubSchemaArray","addSubSchema","addSubSchemaObject","setSchemas","getSchema","urn","sch","validateSchema","switchSchema","schemaobj","schemaTraverser","superResolve","resolved","subctx","subschema","skipAttributes","ignoreProperties","validatorErr","allowUnknownAttributes","rewrite","fragment","testType","integer","null","any","maxInt","regexPunycode","regexNonASCII","regexSeparators","stringFromCharCode","RangeError","mapDomain","ucs2decode","extra","counter","ucs2encode","digitToBasic","digit","flag","adapt","numPoints","firstTime","baseMinusTMin","decode","basic","oldi","baseMinusT","codePoint","inputLength","bias","handledCPCount","basicLength","handledCPCountPlusOne","qMinusT","ucs2","toUnicode","qs","sep","maxKeys","kstr","vstr","xs","stringifyPrimitive","objectKeys","ks","exclusiveMinimum","exclusiveMaximum","$schema","testSchemaNoThrow","valid","testAdditionalProperty","preValidateProperty","nestedErrors","minProperties","maxProperties","minimum","maximum","validateMultipleOfOrDivisbleBy","validationType","errorMessage","validationArgument","instanceDecimals","divisorDecimals","maxDecimals","multiplier","testArrays","multipleOf","divisibleBy","minLength","hsp","maxLength","minItems","uniqueItems","dep","childContext","enum","const","notTypes","schemaId","selectColor","createDebug","prevTime","ms","coerce","formatter","logFn","init","instances","delimiter","newDebug","toNamespace","disable","skips","enable","plural","msAbs","isPlural","long","fmtLong","fmtShort","blobResponse","cancelListener","responseData","REQUEST","onProgress","POST","PUT","jObj","readPI","getErrorObject","getLineNumberForPosition","readCommentAndCDATA","angleBracketsCount","readAttributeStr","startChar","tagClosed","tagFound","reachedRoot","closingTag","isValid","validateAttributeString","otg","afterAmp","validateAmpersand","validAttrStrRegxp","attrNames","getPositionFromMatch","validateAttrName","re","validateNumberAmpersand","chars","nilChar","missingChar","nilPremitive","missingPremitive","emptyChar","emptyValue","boundryChar","objStart","arrStart","arrayEnd","charsArr","e_schema","hasValidData","itemSchema","arr_len","arr_i","processValue","isAppChar","ch","x2j","_cToJsonStr","indentBy","supressEmptyNode","Parser","isAttribute","attrPrefixLen","isCDATA","replaceCDATAstr","replaceCDATAarr","indentate","tagEndChar","buildTextNode","buildEmptyTextNode","buildObjNode","buildEmptyObjNode","buildTextValNode","buildObjectNode","cdata","repeat","startsWith","j2x","arrLen","Ks","L","originalModule","FILESTACK_MODULES","globalHolder","filestackInternals","holder","detachEvent","loadModules","modulesList","loadModule","toReturn","moduleDefinition","readyStateChange","currentTarget","srcElement","script","attachEvent","registerModule","loadCss","head","getElementsByTagName","link","FILESTACK_SDK","TRANSFORMS_UI","PICKER","getSecurity","policyOptions","appSecret","validateWebhookSignature","secret","rawBody","toCompare","Ok","Exited","Crashed","Abnormal","PREFIX","_enabled","__SENTRY__","States","logger","_state","PENDING","_handlers","_setResult","RESOLVED","_reject","REJECTED","_value","_executeHandlers","_attachHandler","cachedHandlers","onrejected","SyncPromise","collection","resolvedCollection","onfinally","isRejected","_notifyingListeners","_scopeListeners","_eventProcessors","_breadcrumbs","_user","_tags","_extra","_contexts","newScope","Scope","_level","_span","_session","_transactionName","_fingerprint","user","update","_notifyScopeListeners","extras","fingerprint","setTransactionName","span","getSpan","transaction","spanRecorder","spans","captureContext","updatedScope","contexts","breadcrumb","maxBreadcrumbs","mergedBreadcrumb","hint","trace","getTraceContext","transactionName","_applyFingerprint","breadcrumbs","_notifyEventProcessors","globalEventProcessors","getGlobalEventProcessors","processors","final","S","sid","started","SessionStatus","ip_address","ipAddress","did","environment","user_agent","E","_version","_stack","getStackTop","bindClient","setupIntegrations","clone","getScope","getStack","getClient","pushScope","popScope","eventId","_lastEventId","finalHint","syntheticException","originalException","_invokeClient","event_id","beforeBreadcrumb","finalBreadcrumb","addBreadcrumb","setUser","setTags","setExtras","setExtra","setContext","oldHub","makeMain","integration","getIntegration","_callExtensionMethod","customSamplingContext","endSession","_sendSessionUpdate","getSession","close","setSession","getUser","currentSession","captureSession","carrier","getMainCarrier","sentry","extensions","hub","registry","getHubFromCarrier","setHubOnCarrier","getCurrentHub","hasHubOnCarrier","isOlderThan","activeDomain","active","registryHubTopStack","_Oo","getHubFromActiveDomain","callOnHub","captureException","withScope","FilestackErrorType","$","processUrl","fileApiUrl","uploadApiUrl","cloudApiUrl","pickerUrl","details","FilestackError","TransformSchema","flip","auto_image","no_metadata","compress","flop","enhance","preset","redeye","monochrome","negative","sfw","imagesize","smart_crop","animate","loop","fit","background","resize","crop","dim","rotate","deg","exif","detect_faces","maxsize","minsize","export","crop_faces","faces","pixelate_faces","amount","blur","blur_faces","rounded_corners","vignette","blurmode","polaroid","torn_edges","shadow","vector","circle","border","sharpen","blackwhite","threshold","sepia","tone","pixelate","oil_paint","modulate","brightness","saturation","hue","ascii","foreground","colored","collage","margin","autorotate","urlscreenshot","agent","orientation","device","upscale","noise","page","density","quality","docinfo","strip","colorspace","pageformat","pageorientation","pjpg","expiry","video_convert","force","extname","aspect_mode","audio_sample_rate","two_pass","video_bitrate","keyframe_interval","audio_bitrate","audio_channels","clip_length","clip_offset","watermark_url","watermark_top","watermark_right","watermark_bottom","watermark_left","frame_count","access","region","base64decode","workflows","watermark","partial_blur","objects","partial_pixelate","security","policy","signature","pdfinfo","colorinfo","pdfconvert","pages","fallback","minify_css","gzip","minify_js","use_babel_polyfill","keep_fn_name","keep_class_name","mangle","merge_vars","remove_console","remove_undefined","targets","DefinitionsSchema","workflowsDef","securityCallDef","regionsDef","locationsDef","colorDef","pageFormatDef","pageRangeDef","facesDef","objectsDef","positionDef","D","HTMLContainer","V","Align","FitOptions","BlurMode","ShapeType","NoiseType","StyleType","ColorspaceType","CropfacesType","ImageWatermarkPosition","SmartCropMode","VideoTypes","URLScreenshotAgent","URLScreenshotMode","URLScreenshotOrientation","Locations","VideoAccess","VideoAccessMode","EnhancePreset","Z","EAlignOptions","EAlignFacesOptions","EFitOptions","EBlurMode","EShapeType","ENoiseType","EStyleType","EColorspaceType","ECropfacesType","ESmartCropMode","EImageWatermarkPosition","EVideoTypes","EUrlscreenshotAgent","EUrlscreenshotMode","EUrlscreenshotOrientation","EVideoLocations","EVideoAccess","EVideoAccessMode","handleRegexp","ht","useValidator","arrayToObject","nameKey","dataKey","customDomain","isExternal","isSourceExternal","validateTasks","returnUrl","getCdnHost","transformsString","generateTransformString","arrayToString","escapeValue","J","addTask","toTest","transformations","Filelink","VALIDATION","optionToString","optionsString","StoreParamsSchema","disableStorageKey","sanitizer","PreviewParamsSchema","css","UploadParamsSchema","partSize","progressInterval","retry","retryFactor","retryMaxTime","intelligent","intelligentChunkSize","onRetry","disableIntegrityCheck","maxlength","PickerParamsSchema","allowManualRetry","acceptFn","fromSources","cleanupImageExif","keepOrientation","keepICCandAPP","displayMode","supportEmail","customSourceContainer","customSourcePath","customSourceName","disableTransformer","disableThumbnails","exposeOriginalFile","globalDropZone","hideModalWhenUploading","imageDim","imageMax","imageMin","imageMinMaxBlock","lang","minFiles","maxSize","modalSize","rootId","startUploadingWhenMaxFilesReached","uploadInBackground","videoResolution","onCancel","onClose","onOpen","onFileSelected","onFileUploadCancel","onFileUploadStarted","onFileUploadFinished","onFileUploadFailed","onFileUploadProgress","onUploadStarted","onUploadDone","onFileCropped","storeTo","viewType","customText","cropFiles","failOverMaxFiles","dropPane","disableClick","overlay","showIcon","showProgress","onDragEnter","onDragLeave","onDragOver","onDrop","onSuccess","onError","onClick","errorsTimeout","customAuthText","uploadConfig","useSentryBreadcrumbs","pasteMode","pasteToFirstInViewPort","pasteToFirstInstance","MetadataParamsSchema","mimetype","uploaded","writeable","cloud","sourceUrl","sha1","sha224","sha256","sha384","sha512","RetrieveParamsSchema","dl","jt","Ot","retryConfig","attempts","retryCount","retryDelay","RequestAdapter","XhrAdapter","Et","dispatcher","FsRequest","wt","GET","getInstance","HEAD","OPTIONS","PURGE","DELETE","PATH","Tt","At","skipStorage","skip_storage","Gt","toSnakeCase","original","snakeCased","newKey","Pt","filelink","setCname","setBase64","STORE_TYPE","_file","_sanitizeOptions","partNum","startByte","endByte","partNumber","md5Enabled","uploadTags","base64Regexp","sanitizeOptions","isFileNamed","isFileBrowser","isFileBase","b64Data","sliceSize","byteCharacters","byteArrays","byteNumbers","b64toBlob","isFileBlob","_a","readAsArrayBuffer","readPart","readFile","_b","H","Xt","ce","pe","storeOptions","cfg","integrityCheck","lock","isModeLocked","uploadMode","ue","le","partsQueue","isPaused","tasks","payloads","startRequest","prepareParts","startPartsQueue","completeRequest","getPayloadById","location_url","fiiFallback","upload_id","fii","getStoreOptions","location_region","partsCount","getPartsCount","getPartMetadata","setPayloadStatus","getUrl","getDefaultFields","getDefaultHeaders","updatePayload","upload_type","setUploadMode","rejectUpload","waitingLength","startPart","onIdle","uploadRegular","uploadIntelligent","getUploadUrl","partMetadata","getPartByMetadata","getS3PartMetadata","put","pr","onProgressUpdate","setPartETag","resp","uploadNextChunk","commitPart","getChunkByMetadata","newOffset","setPartData","nextChunkSize","partsHandle","partLen","part_number","upload_tags","emitProgress","totalBytes","filesProgress","totalParts","totalPercent","Ct","parseError","normalizeProgress","de","validateRes","storeValidateRes","overrideFileName","sanitizerOptions","uploader","setRetryConfig","setPartSize","setIntelligentChunkSize","setIntegrityCheck","setUploadTags","handleProgress","setApikey","setSecurity","setUrl","customName","startProgressInterval","execute","stopProgressInterval","progressIntervalHandler","lastProgress","he","ye","Store","availableTypes","sessionStorage","SESSION","hasAccess","prefType","getStore","PrefetchEvents","PICKER_KEY","be","storeAdapter","sessionCache","isInAppBrowser","_token","prefetch","settings","inapp_browser","clouds","cancelTokenInput","flow","appurl","currentAppUrl","customSource","customsource","requestOptions","sessionId","session_id","archiveId","archive_id","searchParams","RotateDirection","PickerDisplayMode","param","Oe","pickerOptions","permissions","paramsToSend","pickerOptionsToSend","xe","picker_config","updated_config","reassignCallbacks","objOld","objTarget","_initialized","forwardErrors","prefetchInstance","getConfig","logout","source_url","je","hasSecurity","baseUrl","previewTask","iframe","domElement","getElementById","me","storeParams","workflowIds","getTasks","fl","setToken","M","uploadOptions","N","multiupload","Se","dateTimestampSource","nowSeconds","platformPerformance","getNodePerformance","timeOrigin","getBrowserPerformance","timestampSource","dateTimestampInSeconds","timing","navigationStart","dropUndefinedKeys","rv","resolver","getUserLocales","memoize","_temp","_ref$useFallbackLocal","useFallbackLocale","_ref$fallbackLocale","fallbackLocale","languageList","languages","language","userLanguage","browserLanguage","systemLanguage","splitEl","normalizeLocales","getUserLocale","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","defaultProps","displayName","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","propTypes","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","TYPE_STATICS","getStatics","component","isMemo","ForwardRef","render","Memo","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","descriptor","for","z","$$typeof","A","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Fragment","Lazy","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","condition","argIndex","framesToPop","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","nativeMax","nativeMin","isSymbol","isBinary","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","remainingWait","debounced","isInvoking","flush","HASH_UNDEFINED","isKeyable","memoized","Cache","__spreadArray","pack","clipboardEvents","compositionEvents","keyboardEvents","focusEvents","formEvents","genericEvents","mouseEvents","pointerEvents","selectionEvents","touchEvents","uiEvents","wheelEvents","mediaEvents","imageEvents","animationEvents","transitionEvents","otherEvents","allEvents","makeEventProps","getArgs","eventProps","eventName","eventHandler","allPropTypes","_createChainableTypeChecker2","_createChainableTypeChecker","checkType","isRequired","propName","componentName","propFullName","componentNameSafe","propFullNameSafe","chainedCheckType","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","getShim","ReactPropTypes","bigint","bool","arrayOf","elementType","instanceOf","objectOf","oneOfType","shape","exact","checkPropTypes","PropTypes","_CALENDAR_TYPE_LOCALE","_arrayLikeToArray","_defineProperty","configurable","writable","CALENDAR_TYPES","ARABIC","HEBREW","ISO_8601","US","CALENDAR_TYPE_LOCALES","WEEKDAYS","minLen","_unsupportedIterableToArray","formatterCache","getSafeFormatter","locale","localeWithDefault","formatterCacheLocale","Intl","DateTimeFormat","getFormatter","safeDate","toSafeHour","formatDay","formatLongDate","formatMonth","formatMonthYear","formatShortWeekday","weekday","formatWeekday","formatYear","SUNDAY","FRIDAY","SATURDAY","getDayOfWeek","calendarType","getDay","getBeginOfWeek","monthIndex","getMonthIndex","getBegin","rangeType","getBeginNext","getRange","getValueRange","date1","date2","rawNextValue","toYearLabel","defaultFormatYear","dates","getDecadeLabel","isWeekend","_typeof","calendarTypes","allViews","isCalendarType","isClassName","isMinDate","minDate","maxDate","isMaxDate","isRef","isValue","isViews","allowedViews","tileGroupProps","activeStartDate","hover","onMouseOver","tileClassName","tileContent","tileProps","tileDisabled","Navigation","drillUp","_ref$formatMonthYear","defaultFormatMonthYear","_ref$formatYear","_ref$navigationAriaLa","navigationAriaLabel","navigationAriaLive","navigationLabel","_ref$next2AriaLabel","next2AriaLabel","_ref$next2Label","next2Label","_ref$nextAriaLabel","nextAriaLabel","_ref$nextLabel","nextLabel","_ref$prev2AriaLabel","prev2AriaLabel","_ref$prev2Label","prev2Label","_ref$prevAriaLabel","prevAriaLabel","_ref$prevLabel","prevLabel","setActiveStartDate","showDoubleView","drillUpAvailable","shouldShowPrevNext2Buttons","previousActiveStartDate","getBeginPrevious","previousActiveStartDate2","getBeginPrevious2","nextActiveStartDate","nextActiveStartDate2","getBeginNext2","prevButtonDisabled","previousActiveEndDate","getEndPrevious","prev2ButtonDisabled","getEndPrevious2","nextButtonDisabled","next2ButtonDisabled","renderLabel","getCenturyLabel","React","labelClassName","flexGrow","renderButton","_excluded","_extends","ownKeys","enumerableOnly","symbols","sym","_objectSpread","getOwnPropertyDescriptors","toPercent","Flex","direction","wrap","otherProps","display","flexDirection","flexWrap","flexBasis","flexShrink","isValueWithinRange","range","isRangeWithinRange","greaterRange","smallerRange","doRangesOverlap","range1","range2","getRangeClassNames","valueRange","dateRange","baseClassName","isRangeStart","isRangeEnd","getTileClasses","dateType","valueRangeClassNames","valueArray","hoverRange","hoverRangeClassNames","TileGroup","_ref$count","dateTransform","_ref$step","Tile","tile","tiles","_classCallCheck","Constructor","_defineProperties","_setPrototypeOf","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","_possibleConstructorReturn","_assertThisInitialized","ReferenceError","datesAreDifferent","nextProps","_Component","subClass","superClass","_inherits","protoProps","staticProps","_super","_this","prevState","nextState","tileClassNameProps","activeStartDateProps","tileContentProps","_this$props","formatAbbr","maxDateTransform","minDateTransform","_this$state","onFocus","Component","Decade","Decades","beginOfCentury","getBeginOfCenturyYear","CenturyView","Year","Years","beginOfDecade","getBeginOfDecadeYear","DecadeView","Month","_ref$formatMonth","defaultFormatMonth","Months","YearView","Day","_ref$formatDay","defaultFormatDay","_ref$formatLongDate","defaultFormatLongDate","currentMonthIndex","Days","showFixedNumberOfWeeks","showNeighboringMonth","hasFixedNumberOfWeeks","dayOfWeek","daysInMonth","activeEndDate","weekdayClassName","Weekdays","_props$formatShortWee","defaultFormatShortWeekday","_props$formatWeekday","defaultFormatWeekday","onMouseLeave","anyDate","beginOfMonth","weekdays","weekdayDate","abbr","WeekNumber","onClickWeekNumber","weekNumber","WeekNumbers","numberOfWeeks","days","weekNumbers","beginOfFirstWeek","calendarTypeForWeekNumber","beginOfWeek","getWeekNumber","weekIndex","MonthView","_props$calendarType","getCalendarTypeFromLocale","showWeekNumbers","childProps","alignItems","defaultMinDate","defaultMaxDate","allValueTypes","getLimitedViews","minDetail","maxDetail","getView","isViewAllowed","getValueType","valueDate","toDate","getDetailValue","valuePiece","between","getDetailValueFrom","getDetailValueTo","getDetailValueArray","getActiveStartDate","getIsSingleValue","Calendar","_args","defaultActiveStartDate","defaultView","_assertThisInitialize","previousView","allowPartialRange","onActiveStartDateChange","onChange","onViewChange","selectRange","prevArgs","shouldUpdate","setStateAndCallCallbacks","drillDownAvailable","onClickTile","_assertThisInitialize2","onDrillDown","nextView","_assertThisInitialize3","onDrillUp","previousValue","_this$props2","goToRangeStartOnSelect","nextValue","isFirstValueInRange","getProcessedValue","persist","_this$props3","onClickDay","onClickDecade","onClickMonth","onClickYear","activeStartDateState","valueFrom","getInitialActiveStartDate","_this$props4","valueProps","valueState","_this$props5","_this$props6","_this$props7","returnValue","processFunction","currentActiveStartDate","_this$props8","commonProps","drillDown","_formatYear","_this$props9","_this$props10","showNavigation","_this$props11","_this$props12","inputRef","renderNavigation","onBlur","renderContent","isActiveStartDate","isLooseValue","_react","nodeInterop","_getRequireWildcardCache","hasPropertyDescriptor","_interopRequireWildcard","_propTypes","_interopRequireDefault","_dateUtils","_Divider","_DayInput","_MonthInput","_MonthSelect","_YearInput","_NativeInput","_dateFormatter","_dates","_propTypes2","_utils","cacheBabelInterop","cacheNodeInterop","_slicedToArray","_arrayWithHoles","_i","_s","_x","_r","_arr","_n","_d","_iterableToArrayLimit","_nonIterableRest","_toPropertyKey","prim","toPrimitive","_toPrimitive","getFormatterOptionsCache","detailValueFrom","isInternalInput","findInput","nextElement","focus","DateInput","_PureComponent","createRef","divider","_event$target","onChangeExternal","_value$split2","yearString","monthString","dayString","proposedValue","formElements","dayInput","monthInput","yearInput","formElement","validity","currentMatch","autoFocus","dayAriaLabel","dayPlaceholder","showLeadingZeros","showLeadingZerosFromFormat","commonInputProps","ariaLabel","placeholder","monthAriaLabel","monthPlaceholder","_this$state2","yearAriaLabel","yearPlaceholder","isCalendarOpen","formatterOptions","dividers","formattedDate","formatDate","datePieceReplacements","datePiece","formattedDatePiece","dateToFormat","useGrouping","formatDatePiece","datePieceReplacement","onKeyDown","onKeyUp","elementFunctions","allowMultipleInstances","usedFunctions","renderFunction","elementFunction","_renderCustomInputs","renderDay","renderMonth","renderYear","nativeInputAriaLabel","onChangeNative","renderNativeInput","renderCustomInputs","PureComponent","DayInput","_Input","currentMonthMaxDays","isSameMonth","maxDay","safeMin","minDay","safeMax","Input","_clsx","_updateInputWidth","useIsomorphicLayoutEffect","useLayoutEffect","useEffect","isIEOrEdgeLegacy","isFirefox","select","makeOnKeyPress","isNumberKey","selection","selectionStart","selectionEnd","getSelection","getSelectionString","nameForClass","_onKeyUp","_ref$placeholder","fonts","font","getFontShorthand","updateInputWidthOnFontLoad","hasLeadingZero","autoComplete","inputMode","onKeyPress","MonthInput","isSameYear","maxMonth","minMonth","MonthSelect","_short","formatShortMonth","NativeInput","nativeInputType","nativeValueParser","visibility","zIndex","isValueType","YearInput","maxYear","minYear","yearStep","_reactDom","_makeEventProps","_reactCalendar","_reactFit","_DateInput","_excluded2","outsideActionEvents","DatePicker","wrapper","calendarWrapper","composedPath","closeCalendar","openCalendarOnFocus","openCalendar","isOpen","isOpenProps","handleOutsideActionListeners","prevProps","onCalendarClose","onCalendarOpen","shouldListen","_this2","fnName","onOutsideAction","calendarAriaLabel","calendarIcon","clearAriaLabel","clearIcon","disableCalendar","ariaLabelProps","placeholderProps","resetValue","toggleCalendar","_this3","calendarClassName","portalContainer","calendarProps","calendar","createPortal","dataTestid","eventPropsWithoutOnChange","renderInputs","renderCalendar","iconProps","xmlns","viewBox","stroke","strokeWidth","CalendarIcon","fill","x1","x2","y1","y2","ClearIcon","Divider","_DatePicker","_default","_getUserLocale","isValidNumber","aa","ca","da","ea","fa","ha","ja","ka","la","ma","acceptsBooleans","attributeNamespace","mustUseProperty","sanitizeURL","removeEmptyString","ra","sa","ta","pa","qa","oa","setAttributeNS","xlinkHref","ua","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","prepareStackTrace","Pa","Qa","_context","_payload","_init","Ra","Sa","Ta","Va","_valueTracker","setValue","stopTracking","Ua","Wa","checked","Xa","Ya","defaultChecked","_wrapperState","initialChecked","Za","initialValue","controlled","db","ownerDocument","eb","fb","selected","defaultSelected","gb","dangerouslySetInnerHTML","hb","ib","jb","kb","lb","mb","nb","namespaceURI","firstChild","MSApp","execUnsafeLocalFunction","ob","lastChild","pb","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexPositive","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","order","orphans","tabSize","widows","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","qb","rb","sb","setProperty","tb","menuitem","area","br","col","embed","hr","keygen","track","wbr","ub","vb","wb","xb","correspondingUseElement","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Nb","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","Wb","memoizedState","dehydrated","Xb","Zb","sibling","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","B","unstable_now","ec","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","clz32","pc","qc","LN2","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","C","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","Rc","Sc","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","isDehydrated","containerInfo","Xc","Yc","Zc","$c","ad","bd","cd","ReactCurrentBatchConfig","dd","ed","transition","gd","hd","Uc","jd","kd","ld","md","nd","od","charCode","pd","qd","rd","_reactName","_targetInst","isDefaultPrevented","defaultPrevented","isPropagationStopped","cancelBubble","isPersistent","wd","xd","yd","sd","eventPhase","timeStamp","isTrusted","td","ud","vd","Ad","screenX","screenY","clientX","clientY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","which","Rd","Td","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","documentMode","fe","ge","ie","datetime","tel","week","ne","oe","qe","se","ve","we","ze","oninput","Ae","Be","Ce","De","Ee","Fe","He","Ie","Je","Ke","Le","compareDocumentPosition","Me","HTMLIFrameElement","contentWindow","Ne","contentEditable","focusedElem","selectionRange","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","scrollLeft","Pe","Qe","Re","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","$e","af","bf","cf","df","ef","ff","gf","hf","lf","mf","nf","Ub","of","pf","qf","rf","sf","capture","F","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","ke","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","Gf","Hf","Jf","queueMicrotask","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","G","Vf","Wf","Xf","Yf","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","$f","ag","bg","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","gg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","I","zg","Ag","Bg","deletions","Cg","pendingProps","treeContext","retryLane","Dg","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","Mg","Ng","Og","Pg","Qg","Rg","_currentValue","Sg","childLanes","Tg","firstContext","lanes","Ug","Vg","memoizedValue","Wg","Xg","Yg","interleaved","Zg","$g","ah","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","bh","eventTime","lane","dh","K","eh","fh","gh","hh","ih","jh","refs","kh","nh","isMounted","_reactInternals","enqueueSetState","lh","mh","enqueueReplaceState","enqueueForceUpdate","oh","shouldComponentUpdate","isPureReactComponent","ph","updater","qh","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","rh","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","sh","_owner","_stringRef","th","uh","vh","wh","xh","yh","implementation","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","Jh","Kh","Lh","Mh","revealOrder","Nh","Oh","_workInProgressVersionPrimary","Ph","ReactCurrentDispatcher","Qh","Rh","O","Sh","Th","Uh","Vh","Q","Wh","Xh","Yh","Zh","$h","ai","bi","ci","baseQueue","di","ei","fi","lastRenderedReducer","hasEagerState","eagerState","lastRenderedState","gi","ii","ji","ki","getSnapshot","li","mi","R","ni","lastEffect","stores","oi","pi","qi","ri","deps","si","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","readContext","useCallback","useContext","useImperativeHandle","useInsertionEffect","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ki","digest","Li","Mi","Ni","Oi","Pi","Qi","Ri","componentDidCatch","Si","componentStack","Ti","pingCache","Ui","Vi","Wi","Xi","ReactCurrentOwner","Yi","Zi","$i","aj","bj","cj","dj","ej","baseLanes","cachePool","transitions","fj","gj","hj","ij","jj","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","kj","lj","pendingContext","mj","Aj","Cj","Dj","nj","oj","pj","qj","rj","tj","dgst","uj","vj","_reactRetry","sj","subtreeFlags","wj","xj","isBackwards","rendering","renderingStartTime","tailMode","yj","Ej","Fj","Gj","wasMultiple","multiple","suppressHydrationWarning","onclick","T","Hj","Ij","Jj","Kj","U","Lj","Mj","W","Nj","Oj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","_reactRootContainer","Xj","X","Yj","Zj","ak","onCommitFiberUnmount","componentWillUnmount","bk","ck","dk","ek","fk","gk","hk","ik","jk","kk","lk","__reactInternalSnapshotBeforeUpdate","Wk","mk","nk","ok","pk","Y","qk","sk","uk","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Pk","finishedWork","finishedLanes","Qk","timeoutHandle","Rk","Sk","Tk","Uk","Vk","mutableReadLanes","Bc","Pj","onCommitFiberRoot","mc","onRecoverableError","Xk","onPostCommitFiberRoot","Yk","Zk","al","isReactComponent","pendingChildren","bl","mutableSourceEagerHydrationData","cl","pendingSuspenseBoundaries","gl","hl","il","jl","zj","$k","reportError","ml","_internalRoot","nl","ol","pl","ql","sl","rl","unmount","unstable_scheduleHydration","tl","usingClientEntryPoint","ul","findFiberByHostInstance","bundleType","rendererPackageName","vl","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","wl","supportsFiber","inject","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","_DraggableCore","_domFns","_positionFns","_shims","_log","Draggable","coreData","onStart","createDraggableData","dragging","dragged","uiData","newState","slackX","slackY","getBoundPosition","newStateX","newStateY","onDrag","onStop","defaultPosition","prevPropsPosition","isElementSVG","SVGElement","_this$props$nodeRef$c","nodeRef","axis","defaultClassName","defaultClassNameDragging","defaultClassNameDragged","positionOffset","draggableCoreProps","svgTransform","draggable","validPosition","transformOpts","canDragX","canDragY","createSVGTransform","createCSSTransform","onDragStart","onDragStop","cloneElement","Children","only","dontSetMe","eventsFor","move","stop","dragEventFor","DraggableCore","NaN","onMouseDown","allowAnyClick","thisNode","Node","matchesSelectorAndParentsTo","touchIdentifier","getTouchIdentifier","getControlPosition","coreEvent","createCoreData","mounted","enableUserSelectHack","addUserSelectStyles","lastX","lastY","handleDrag","handleDragStop","grid","snapToGrid","MouseEvent","initMouseEvent","removeUserSelectStyles","handleDragStart","onTouchStart","onMouseUp","onTouchEnd","addClassName","inputOptions","doc","styleEl","controlPos","translation","getTranslation","_getPrefix","browserPrefixToKey","getTouch","identifier","findInArray","innerHeight","clientHeight","computedStyle","paddingBottom","clientWidth","paddingLeft","paddingRight","matchesSelector","baseNode","offsetXYFromParent","offsetParentRect","getBoundingClientRect","outerHeight","borderTopWidth","borderBottomWidth","outerWidth","borderLeftWidth","borderRightWidth","removeClassName","empty","matchesSelectorFunc","unitSuffix","defaultX","defaultY","browserPrefixToStyle","getPrefix","prefixes","_window$document","shouldCapitalize","kebabToTitleCase","isStart","isNum","cloneBounds","boundNode","ownerWindow","boundNodeEl","nodeStyle","boundNodeStyle","draggableCore","touchObj","pendingX","pendingY","hasElementType","hasMap","hasSet","hasArrayBuffer","_createClass","_react2","_filepond","filteredMethods","_React$Component","FilePond","allowFilesSync","_input","_element","_inputClone","cloneNode","_pond","bin","_props","detectElementOverflow","collidedTop","collidedBottom","collidedLeft","collidedRight","overflowTop","overflowBottom","overflowLeft","overflowRight","__rest","isDisplayContentsSupported","supports","isMutationObserverSupported","capitalize","findScrollContainer","parentElement","alignAxis","invertAxis","secondary","scrollContainer","spacing","scrollContainerCollisions","documentCollisions","isX","startProperty","endProperty","sizeProperty","overflowStartProperty","overflowEndProperty","scrollProperty","uppercasedSizeProperty","offsetSizeProperty","clientSizeProperty","minSizeProperty","scrollbarWidth","startSpacing","availableStartSpace","endSpacing","availableEndSpace","offsetSize","displayStartIfFits","displayEndIfFits","moreSpaceStart","rawMinSize","getPropertyValue","minSize","shrinkToSize","warning","newSize","displayStart","displayEnd","displayWhereverShrinkedFits","displayIfFits","availableSpace","fits","alignBothAxis","invertSecondaryAxis","commonArgs","alignMainAxis","alignSecondaryAxis","Fit","elementWidth","elementHeight","parentPosition","_c","mainAxis","MutationObserver","observe","attributeFilter","firstElementChild","react","react__default","_objectSpread2","commonjsGlobal","globalThis","unwrapExports","createCommonjsModule","useScript_1","scripts","checkExisting","existing","loading","scriptEl","useScript","checkForExisting","setLoading","setError","handleLoad","handleError","PlaidLinkStableEvent","lib","__importDefault","renameKeyInObject","oldKey","newObject","createPlaid","plaid","onExitCallback","Plaid","onExit","exit","exitOptions","PLAID_LINK_STABLE_URL","usePlaidLink","_useScript2","_useState2","setPlaid","_useState4","iframeLoaded","setIframeLoaded","products","publicKey","onLoad","openNoOp","ready","PlaidLink","_usePlaidLink","borderRadius","__self","__source","jsx","jsxs","forceUpdate","_status","_result","createContext","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","createFactory","forwardRef","isValidElement","lazy","memo","startTransition","unstable_act","sortIndex","setImmediate","startTime","expirationTime","priorityLevel","scheduling","isInputPending","MessageChannel","port2","port1","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","unstable_wrapCallback","cachedCanvas","allowedVariants","fontFamily","fontVariant","fontStyle","fontSize","measureText","getContext","updateInputWidth","isNativeReflectConstruct","possibleConstructorReturn","objectWithoutPropertiesLoose","assertThisInitialized","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","arrayLikeToArray","__webpack_module_cache__","cachedModule","__webpack_modules__","amdO","chunkId","miniCssF","inProgress","dataWebpackPrefix","needAttach","charset","nc","onScriptComplete","doneFns","installedChunks","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","chunkLoadingGlobal","rHyphen","DEFAULT_BREAKPOINTS","DEFAULT_MIN_BREAKPOINT","ThemeContext","breakpoints","minBreakpoint","useBootstrapPrefix","defaultPrefix","useBootstrapBreakpoints","useBootstrapMinBreakpoint","useIsRTL","pascalCase","chr","createWithBsPrefix","BsComponent","bsPrefix","as","Tag","resolvedPrefix","_jsx","makeEventKey","eventKey","defaultKey","useUncontrolledProp","propValue","wasPropRef","_useState","stateValue","isProp","wasProp","useUncontrolled","fieldName","_extends2","Utils","propsValue","handlerName","_useUncontrolledProp","__reactInternalSnapshotFlag","__reactInternalSnapshot","__suppressDeprecationWarning","NavbarBrand","psuedoElement","rUpper","msPattern","hyphenateStyleName","hyphenate","supportedTransforms","isTransform","removeProperty","forceReflow","UNMOUNTED","EXITED","ENTERING","ENTERED","EXITING","Transition","initialStatus","appear","isMounting","enter","appearStatus","in","unmountOnExit","mountOnEnter","nextCallback","_inheritsLoose","_proto","updateStatus","nextStatus","cancelNextCallback","getTimeouts","mounting","ReactDOM","performEnter","performExit","appearing","maybeNode","maybeAppearing","timeouts","enterTimeout","safeSetState","onEntered","onEnter","onEntering","onTransitionEnd","onExiting","onExited","setNextCallback","_this4","doesNotHaveTimeoutOrListener","addEndListener","maybeNextCallback","TransitionGroupContext","optionsSupported","onceSupported","canUseDOM","wrappedHandler","__once","onceHandler","emulateTransitionEnd","called","initEvent","triggerEvent","transitionEnd","mult","parseDuration","removeEmulate","transitionEndListener","funcs","acc","triggerBrowserReflow","toFnRef","refA","refB","mergeRefs","safeFindDOMNode","componentOrElement","TransitionWrapper","childRef","mergedRef","useMergedRefs","attachRef","normalize","handleEnter","handleEntering","handleEntered","handleExit","handleExiting","handleExited","handleAddEndListener","innerProps","MARGINS","getDefaultDimensionValue","dimension","margins","collapseStyles","getDimensionValue","Collapse","computedDimension","createChainedFunction","scroll","role","NavbarCollapse","NavbarContext","expanded","useEventCallback","useCommittedRef","NavbarToggle","onToggle","isReactNative","matchersByWindow","getMatcher","targetWindow","matchers","mql","refCount","media","useMediaQuery","setMatches","breakpointValues","and","getMaxQuery","breakpoint","getNext","breakpointOrMap","breakpointMap","_breakpointMap","getMinQuery","createBreakpointHook","sm","xl","xxl","useMounted","useWillUnmount","onUnmount","valueRef","useUpdatedRef","usePrevious","dataAttr","OPEN_DATA_ATTRIBUTE","ModalManager","handleContainerOverflow","isRTL","modals","getBodyScrollbarWidth","_modal","containerState","paddingProp","scrollBarWidth","modal","modalIdx","setModalAttributes","getScrollbarWidth","setContainerStyle","removeContainerStyle","removeModalAttributes","Context","useWindow","resolveContainerRef","useWaitForDOMRef","onResolved","resolvedRef","setRef","earlyRef","nextRef","manager","useModalManager","provided","modalManager","getManager","dialog","backdrop","isTopModal","setDialogRef","setBackdropRef","Modal","show","keyboard","onBackdropClick","onEscapeKeyDown","backdropTransition","enforceFocus","restoreFocus","restoreFocusOptions","renderDialog","renderBackdrop","providedManager","containerRef","onShow","onHide","prevShow","exited","setExited","lastFocusRef","handleShow","removeKeydownListenerRef","handleDocumentKeyDown","removeFocusListenerRef","handleEnforceFocus","currentActiveElement","handleHide","_lastFocusRef$current","handleBackdropClick","dialogProps","tabIndex","backdropElement","BackdropTransition","_Fragment","_jsxs","Manager","fadeStyles","Fade","transitionClasses","isAppearing","transitionStyles","OffcanvasToggling","variant","CloseButton","AbstractModalHeader","closeLabel","closeVariant","closeButton","ModalContext","OffcanvasHeader","divWithClassName","_superPropBase","_get","receiver","hasClass","baseVal","addClass","qsa","replaceClassName","origClass","classToRemove","removeClass","sharedManager","Selector","BootstrapModalManager","adjust","actual","marginProp","adjustAndStore","getSharedManager","DialogTransition","Offcanvas","ariaLabelledby","placement","responsive","backdropClassName","propsManager","renderStaticNode","showOffcanvas","setShowOffcanvas","hideResponsiveOffcanvas","useBreakpoint","modalContext","backdropProps","BaseModal","Body","OffcanvasBody","Header","Title","OffcanvasTitle","NavbarOffcanvas","NavbarText","Navbar","initialBsPrefix","expand","fixed","sticky","onSelect","collapseOnSelect","controlledProps","handleCollapse","expandClass","navbarContext","SelectableContext","Brand","Text","Toggle","useForceUpdate","useCallbackRef","allowArrayLike","normalCompletion","didErr","_e2","tar","dequal","foo","bar","ctor","getInt8","getBasePlacement","getWindow","isHTMLElement","isShadowRoot","ShadowRoot","getUAString","uaData","userAgentData","brands","brand","isLayoutViewport","includeScale","isFixedStrategy","clientRect","visualViewport","addVisualOffsets","getLayoutRect","rootNode","isSameNode","getNodeName","isTableElement","getDocumentElement","getParentNode","assignedSlot","getTrueOffsetParent","getOffsetParent","contain","willChange","getContainingBlock","getMainAxisFromPlacement","within","mathMax","mathMin","mergePaddingObject","paddingObject","expandToHashMap","hashMap","auto","basePlacements","viewport","popper","variationPlacements","placements","modifierPhases","phase","_state$modifiersData$","arrowElement","elements","arrow","popperOffsets","modifiersData","basePlacement","rects","toPaddingObject","arrowRect","minProp","maxProp","endDiff","reference","startDiff","arrowOffsetParent","clientSize","centerToReference","axisProp","centerOffset","_options$element","requires","requiresIfExists","getVariation","unsetSides","mapToStyles","_Object$assign2","popperRect","variation","offsets","gpuAcceleration","adaptive","roundOffsets","isFixed","_offsets$x","_offsets$y","hasX","hasY","sideX","sideY","win","heightProp","widthProp","_Object$assign","commonStyles","dpr","devicePixelRatio","roundOffsetsByDPR","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","strategy","_options$scroll","_options$resize","scrollParents","scrollParent","getOppositePlacement","matched","getOppositeVariationPlacement","getWindowScroll","getWindowScrollBarX","isScrollParent","_getComputedStyle","overflowX","overflowY","getScrollParent","listScrollParents","_element$ownerDocumen","isBody","updatedList","rectToClientRect","getClientRectFromMixedType","clippingParent","html","layoutViewport","getViewportRect","clientTop","clientLeft","getInnerBoundingClientRect","winScroll","scrollWidth","scrollHeight","getDocumentRect","getClippingRect","boundary","rootBoundary","mainClippingParents","clippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","computeOffsets","commonX","commonY","detectOverflow","_options","_options$placement","_options$strategy","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","clippingClientRect","contextElement","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","_options$allowedAutoP","allPlacements","allowedPlacements","overflows","computeAutoPlacement","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","_loop","fittingPlacement","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","_options$offset","invertDistance","skidding","distance","distanceAndSkiddingToXY","_data$state$placement","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","maxLen","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","clientOffset","offsetModifierValue","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_offset","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","withinMaxClamp","getCompositeRect","elementOrVirtualElement","isOffsetParentAnElement","offsetParentIsScaled","isElementScaled","getNodeScroll","modifiers","visited","modifier","depModifier","DEFAULT_OPTIONS","areValidElements","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","orderedModifiers","effectCleanupFns","isDestroyed","setOptionsAction","cleanupModifierEffects","orderModifiers","mergeByName","_ref3$options","cleanupFn","noopFn","_state$elements","_state$orderedModifie","_state$orderedModifie2","onFirstUpdate","createPopper","hide","computeStyles","eventListeners","disabledApplyStylesModifier","ariaDescribedByModifier","ids","_popper$getAttribute","EMPTY_MODIFIERS","referenceElement","popperElement","prevModifiers","popperInstanceRef","_popperInstanceRef$cu","_popperInstanceRef$cu2","useSafeState","popperState","updateModifier","nextModifiers","isLeftClickEvent","isModifiedEvent","getRefTarget","InitialTriggerEvents","mouseup","pointerup","onClickOutside","clickTrigger","preventMouseClickOutsideRef","waitingForTrigger","handleMouseCapture","handleInitialMouse","handleMouse","currentEvent","removeInitialTriggerListener","removeMouseCaptureListener","removeMouseListener","mobileSafariHackListeners","toModifierArray","mergeOptionsWithPopperConfig","_modifiers$preventOve","_modifiers$preventOve2","_modifiers$offset","_modifiers$arrow","enableEvents","containerPadding","popperConfig","toModifierMap","useDropdownMenu","DropdownContext","attachArrowRef","hasShownRef","rootCloseEvent","placementOverride","enableEventListeners","usePopper","shouldUsePopper","handleClose","toggle","setMenu","menuElement","toggleElement","menuProps","hasShown","arrowProps","useClickOutside","DropdownMenu","$704cf1d3b684cc5c$var$defaultContext","$704cf1d3b684cc5c$var$SSRContext","$89yE2$react","$704cf1d3b684cc5c$var$canUseDOM","isRoleMenu","_el$getAttribute","useDropdownToggle","defaultId","$89yE2$useContext","$89yE2$useMemo","useSSRSafeId","setToggle","DropdownToggle","NavContext","useButtonProps","isTrivialHref","Button","asProp","buttonProps","useDropdownItem","onSelectCtx","activeKey","isActive","DropdownItem","dropdownItemProps","useRefWithUpdate","Dropdown","defaultShow","rawShow","rawOnToggle","itemSelector","focusFirstItemOnShow","menuRef","toggleRef","lastShow","lastSourceEvent","focusInDropdown","nextShow","originalEvent","handleSelect","focusToggle","maybeFocusFirst","focusType","getNextFocusedChild","eventTarget","useEventListener","_menuRef$current","_toggleRef$current","fromMenu","fromToggle","_menuRef$current2","Anchor","useWrappedRefWithWarning","getDropdownMenuPlacement","alignEnd","dropDirection","showProps","renderOnMount","isNavbar","contextAlign","isInputGroup","InputGroupContext","alignClasses","brkPoint","useIsomorphicEffect","childBsPrefix","dropdownContext","toggleProps","DropdownHeader","DropdownDivider","DropdownItemText","pProps","autoClose","navbar","handleToggle","contextValue","BaseDropdown","ItemText","useNavItem","parentOnSelect","navContext","tabContext","TabContext","contextControllerId","getControllerId","contextControlledId","getControlledId","NavItem","NavLink","navItemProps","NavDropdown","menuRole","renderMenuOnMount","menuVariant","navItemPrefix","HeaderNames","PersistentCacheKeys","AADAuthorityConstants","AADServerParamKeys","ClaimsRequestKeys","Constants","LIBRARY_NAME","SKU","CACHE_PREFIX","DEFAULT_AUTHORITY","DEFAULT_AUTHORITY_HOST","DEFAULT_COMMON_TENANT","ADFS","AAD_INSTANCE_DISCOVERY_ENDPT","RESOURCE_DELIM","NO_ACCOUNT","CLAIMS","CONSUMER_UTID","OPENID_SCOPE","PROFILE_SCOPE","OFFLINE_ACCESS_SCOPE","EMAIL_SCOPE","CODE_RESPONSE_TYPE","CODE_GRANT_TYPE","RT_GRANT_TYPE","FRAGMENT_RESPONSE_MODE","S256_CODE_CHALLENGE_METHOD","URL_FORM_CONTENT_TYPE","AUTHORIZATION_PENDING","NOT_DEFINED","EMPTY_STRING","FORWARD_SLASH","IMDS_ENDPOINT","IMDS_VERSION","IMDS_TIMEOUT","AZURE_REGION_AUTO_DISCOVER_FLAG","REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX","KNOWN_PUBLIC_CLOUDS","TOKEN_RESPONSE_TYPE","ID_TOKEN_RESPONSE_TYPE","SHR_NONCE_VALIDITY","OIDC_SCOPES","OIDC_DEFAULT_SCOPES","SSOTypes","PromptValue","LOGIN","SELECT_ACCOUNT","CONSENT","CREATE","ResponseMode","GrantType","CacheAccountType","Separators","CredentialType","CacheSchemaType","CacheType","CodeChallengeMethodValues","PLAIN","S256","AuthorityMetadataSource","APP_METADATA","THE_FAMILY_ID","AUTHORITY_METADATA_CONSTANTS","AuthenticationScheme","SERVER_TELEM_CONSTANTS","SCHEMA_VERSION","MAX_CUR_HEADER_BYTES","MAX_LAST_HEADER_BYTES","MAX_CACHED_ERRORS","CACHE_KEY","CATEGORY_SEPARATOR","VALUE_SEPARATOR","OVERFLOW_TRUE","OVERFLOW_FALSE","UNKNOWN_ERROR","PasswordGrantConstants","ResponseCodes","RegionDiscoverySources","RegionDiscoveryOutcomes","CacheOutcome","JsonTypes","ThrottlingConstants","Errors","NativeExtensionMethod","BrowserCacheLocation","HTTP_REQUEST_TYPE","TemporaryCacheKeys","InMemoryCacheKeys","ApiId","InteractionType","InteractionStatus","AuthErrorMessage","errorCode","suberror","errorString","AuthError","subError","setCorrelationId","correlationId","errDesc","BrowserConfigurationAuthErrorMessage","BrowserConfigurationAuthError","givenStorageLocation","stubbedPublicClientApplication","initialize","createStubPcaInstanceCalledError","acquireTokenPopup","acquireTokenRedirect","acquireTokenSilent","acquireTokenByCode","getAllAccounts","getAccountByHomeId","getAccountByUsername","getAccountByLocalId","handleRedirectPromise","loginPopup","loginRedirect","logoutRedirect","logoutPopup","ssoSilent","addEventCallback","removeEventCallback","addPerformanceCallback","removePerformanceCallback","enableAccountStorageEvents","disableAccountStorageEvents","getTokenCache","getLogger","setLogger","setActiveAccount","getActiveAccount","initializeWrapperLibrary","setNavigationClient","getConfiguration","BrowserConstants","NativeConstants","WrapperSKU","DEFAULT_REQUEST","scopes","KEY_FORMAT_JWK","LogLevel","DB_NAME","ClientAuthErrorMessage","ClientAuthError","caughtError","caughtExtractionError","invalidRawTokenString","errDetail","endpoint","hashParamObj","invalidState","missingState","missingNonce","givenScope","appendError","operationName","StringUtils","authToken","createTokenNullOrEmptyError","createTokenParsingError","JWSPayload","JWSSig","strObj","EventType","loggerOptions","packageName","packageVersion","Info","localCallback","loggerCallback","piiLoggingEnabled","logLevel","Logger","logMessage","containsPii","toUTCString","executeCallback","Warning","Verbose","Trace","AuthorityType","EventMessageUtils","currentStatus","eventType","interactionType","buildClientInfo","rawClientInfo","createClientInfoEmptyError","decodedClientInfo","base64Decode","createClientInfoDecodingError","buildClientInfoFromHomeAccountId","homeAccountId","clientInfoParts","CLIENT_INFO_SEPARATOR","utid","AccountEntity","CACHE_KEY_SEPARATOR","generateAccountCacheKey","tenantId","realm","localAccountId","authorityType","ADFS_ACCOUNT_TYPE","MSAV1_ACCOUNT_TYPE","MSA","MSSTS_ACCOUNT_TYPE","MSSTS","GENERIC_ACCOUNT_TYPE","GENERIC","createUnexpectedAccountTypeError","idTokenClaims","nativeAccountId","accountInterface","clientInfo","idToken","authority","cloudGraphHostName","msGraphHost","account","getPreferredCache","createInvalidCacheEnvironmentError","claims","oid","preferred_username","emails","_f","Adfs","serverClientInfo","authType","cryptoObj","accountId","verbose","entity","accountA","accountB","compareClaims","claimsMatch","accountAClaims","accountBClaims","iat","nonce","defaultMsalContext","accounts","MsalContext","getChildrenOrFunction","accountArraysAreEqual","arrayA","arrayB","comparisonArray","elementA","elementB","getAccountByIdentifiers","allAccounts","accountIdentifiers","accountObj","MsalProviderActionType","reducer","previousState","newInProgress","UNBLOCK_INPROGRESS","EVENT","getInteractionStatusFromEvent","currentAccounts","MsalProvider","updateState","callbackId","finally","useMsal","isAuthenticated","matchAccount","useIsAuthenticated","hasAuthenticated","setHasAuthenticated","AuthenticatedTemplate","UnauthenticatedTemplate","getAccount","useAccount","setAccount","currentAccount","nextAccount","accountInfoIsEqual","getParameter","b2cPolicies","signUpSignIn","forgotPassword","editProfile","authorities","authorityDomain","msalConfig","clientId","knownAuthorities","redirectUri","postLogoutRedirectUri","navigateToLoginRequestUrl","cacheLocation","storeAuthStateInCookie","loginApiRequest","SignInButton","SignOutButton","invariant","cond","NavigationContext","LocationContext","RouteContext","outlet","Navigate","useInRouterContext","navigate","useNavigate","Outlet","React.createElement","OutletContext","useOutlet","Route","Router","basename","basenameProp","locationProp","navigationType","NavigationType","static","staticProp","normalizePathname","navigationContext","parsePath","trailingPathname","stripBasename","Routes","locationArg","parentMatches","routeMatch","parentParams","parentPathnameBase","pathnameBase","locationFromContext","useLocation","parsedLocationArg","_parsedLocationArg$pa","remainingPathname","branches","flattenRoutes","score","siblings","compareIndexes","routesMeta","childrenIndex","rankRouteBranches","matchRouteBranch","matchRoutes","_renderMatches","joinPaths","useRoutes","createRoutesFromChildren","useHref","useResolvedPath","joinedPathname","toPathname","getToPathname","endsWithSlash","createHref","locationPathname","routePathnamesJson","activeRef","resolveTo","go","caseSensitive","parentsMeta","parentPath","computeScore","paramRe","isSplat","segments","initialScore","segment","branch","matchedParams","matchedPathname","matchPath","reduceRight","paramNames","regexpSource","paramName","compilePath","matcher","captureGroups","splatValue","safelyDecodeURIComponent","toArg","routePathnames","routePathnameIndex","toSegments","fromPathname","resolvePathname","normalizeSearch","normalizeHash","resolvePath","nextChar","BrowserRouter","historyRef","createBrowserHistory","Link","reloadDocument","internalOnClick","replaceProp","createPath","useLinkClickHandler","Op","$Symbol","iteratorSymbol","asyncIteratorSymbol","toStringTagSymbol","innerFn","outerFn","tryLocsList","protoGenerator","Generator","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","_sent","dispatchException","abrupt","record","tryCatch","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","invoke","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iterable","iteratorMethod","isGeneratorFunction","genFun","mark","awrap","async","skipTempReset","rootRecord","rval","loc","caught","hasCatch","hasFinally","finallyEntry","finish","thrown","delegateYield","asyncGeneratorStep","_throw","PortalStatus","MortgageSubType","MortgageType","PropertyType","SelfOwnedSite","MortgageStatus","YesNoBlank","ArrangeSolicitor","ProfileItemModel","durationClass","percent","progressClass","initials","initialsClass","createUtilityClassName","utilityValues","utilName","utilValue","bpValue","infix","gap","Row","decoratedBsPrefix","sizePrefix","Col","useCol","colProps","Container","fluid","suffix","HasAny","PortalDocumentType","ApplicableTo","MortgageDocumentStatusCode","LoanType","TransactionSource","UserContext","contact","mortgage","tooltips","reloadMortgage","isDirty","setIsDirty","dirty","impersonateContact","contactId","impersonatedId","refreshMenuState","mortgageDocumentList","getMortgageDocuments","addDoc","updateDoc","deleteDoc","updateId","oldId","newId","institutions","applicantNo","loadingFiles","calculatorState","updateCalculatorState","setPageRefreshListener","callPageRefreshListener","Intercom","emailAddress","intercomScript","fullName","UserContextComponent","secondaryApplicant","primaryApplicant","firstName","Primary","Secondary","ImpersonateContactButton","impersonate","toggleRefresh","isAdmin","PortalPage","containerClassName","titleClassName","lightTitle","alignTitleLeft","mobileTitle","subtitle","UNDEFINED","Prototype","strFunction","DynClassName","UnknownValue","DynProtoBaseProto","Obj","_objGetPrototypeOf","_objGetOwnProps","_gbl","_getGlobal","_gblInst","_hasOwnProperty","_isObjectOrArrayPrototype","_isObjectArrayOrFunctionPrototype","_getObjProto","newProto","curProto","_forEachProp","name_1","lp","_isDynamicCandidate","funcName","skipOwn","_throwTypeError","_hasVisited","_getInstFunc","currentDynProtoProxy","instFunc","instFuncTable","canAddInst","objProto","protoFunc","_getProtoFunc","_populatePrototype","baseInstFuncs","setInstanceFunc","instFuncs_1","dynProtoProxy","_createDynamicPrototype","_getObjName","unknownValue","dynamicProto","theClass","delegateFunc","classProto","thisTarget","thisProto","_checkPrototype","perfOptions","useBaseInst","instFuncs","_getInstanceFuncs","baseFuncs","_instFuncProxy","funcHost","theFunc","baseProto","_getBaseFuncs","strShimFunction","strShimObject","strShimUndefined","ObjClass","ObjProto","ObjAssign","ObjCreate","ObjDefineProperty","ObjHasOwnProperty","_cachedGlobal","getGlobal","useCached","throwTypeError","objCreateFn","tmpFunc","__assignFn","extendStaticsFn","__extendsFn","__spreadArrayFn","STR_CHANNELS","STR_CREATE_PERF_MGR","STR_EXTENSION_CONFIG","STR_EVENTS_SENT","STR_EVENTS_DISCARDED","STR_EVENTS_SEND_REQUEST","STR_PERF_EVENT","STR_ERROR_TO_CONSOLE","STR_WARN_TO_CONSOLE","strConstructor","_objDefineProperty","_objFreeze","_objKeys","StringProto","_strTrim","_strEndsWith","_dataToISOString","_isArray","_objToString","_fnToString","_objFunctionString","rCamelCase","rNormalizeInvalid","rLeadingNumeric","isNotNullOrUndefined","normalizeJsName","callbackfn","strEndsWith","pos","strContains","arrIndexOf","searchElement","fromIndex","arrMap","results","arrReduce","_objKeysHasDontEnumBug","_objKeysDontEnums","objKeys","objDefineAccessors","getProp","setProp","_doNothing","objForEachKey","objFreeze","dateNow","getExceptionName","valChk","srcChk","theValue","getSetValue","defValue","getCfgValue","isTruthy","_createProxyFunction","srcFunc","proxyFunctionAs","overwriteTarget","proxyFunctions","functionsToProxy","arrForEach","optimizeObject","theObject","objExtend","obj1","obj2","obj3","obj4","obj5","obj6","deep","extended","_DYN_CORRELATION_HEADER_E0","stringToBoolOrDefault","msToTimeSpan","totalms","sec","hour","isCrossOriginError","strWindow","strJSON","strMsie","strTrident","strXMLHttpRequest","_isTrident","_navUserAgentCheck","_enableMocks","_useXDomainRequest","_beaconsSupported","_hasProperty","getGlobalInst","hasWindow","hasDocument","hasNavigator","getNavigator","hasHistory","getLocation","checkForMock","getPerformance","hasJSON","getJSON","isIE","getIEVersion","userAgentStr","dumpObj","propertyValueDump","isBeaconsSupported","isFetchSupported","withKeepAlive","useXDomainRequest","isXhrSupported","_debugListener","listenerFuncs","_aiNamespace","_listenerProxyFunc","getDebugExt","getDebugListener","_sanitizeDiagnosticText","_logToConsole","logFunc","theConsole","_InternalLogMessage","isUserAct","_self","msgId","strProps","safeGetLogger","core","DiagnosticLogger","_messageLogged","_messageCount","_debugExtMsg","dbgExt","_loggingLevelConsole","_loggingLevelTelemetry","_maxInternalMessageLimit","_enableDebugExceptions","_setDefaultsFromConfig","_logInternalMessage","_getLogger","_throwInternal","severity","_warnToConsole","createEnumStyle","enumClass","StorageType","LocalStorage","SessionStorage","_canUseLocalStorage","AI","AI_AND_W3C","W3C","_canUseSessionStorage","_getLocalStorageObject","_getVerifiedStorageObject","storageType","_getSessionStorageObject","utlDisableStorage","utlCanUseLocalStorage","utlGetLocalStorage","utlSetLocalStorage","utlRemoveStorage","utlCanUseSessionStorage","utlGetSessionStorage","utlSetSessionStorage","utlRemoveSessionStorage","PropertiesPluginIdentifier","BreezeChannelIdentifier","AnalyticsPluginIdentifier","DisabledPropertyName","HttpMethod","DEFAULT_BREEZE_ENDPOINT","DEFAULT_BREEZE_PATH","strNotSpecified","dataSanitizeKeyAndAddUniqueness","uniqueField","dataSanitizeKey","nameTrunc","dataSanitizeString","valueTrunc","dataSanitizeUrl","dataSanitizeMessage","messageTrunc","dataSanitizeException","exceptionTrunc","dataSanitizeProperties","tempProps_1","dataSanitizeMeasurements","measurements","tempMeasurements_1","dataSanitizeId","dataSanitizeInput","_msgId","inputTrunc","dsPadNumber","MAX_NAME_LENGTH","MAX_ID_LENGTH","MAX_PROPERTY_LENGTH","MAX_STRING_LENGTH","MAX_URL_LENGTH","MAX_MESSAGE_LENGTH","MAX_EXCEPTION_LENGTH","createTelemetryItem","baseType","envelopeName","customProperties","systemProperties","iKey","telemetryItem","TelemetryItemCreator","ver","severityLevel","DataPoint","stdDev","Metric","metrics","dataPoint","PageView","PageViewPerformance","perfTotal","networkConnect","sentRequest","receivedResponse","domProcessing","_stringify","convertToString","_formatMessage","theEvent","evtMessage","_isStackDetails","_convertStackObj","errorStack","_getStackFromErrorObj","errorObj","_getErrorType","typeName","_formatErrorCode","Exception","exceptions","_ExceptionDetails","outerId","hasFullStack","parsedStack","totalSizeInBytes_1","acceptedLeft","acceptedRight","stackDetails","_StackFrame","assembly","strToGMTString","strToUTCString","strExpires","_supportsCookies","_allowUaSameSite","_parsedCookieValue","_doc","_cookieCache","_globalCookieConfig","_gblCookieMgr","inst","_isMgrEnabled","cookieMgr","_isIgnoredCookie","cookieMgrCfg","safeGetCookieMgr","createCookieMgr","rootConfig","cookieEnabled","isEnabled","setCookieFn","delCookie","areCookiesSupported","_extractParts","thePart","_formatDate","theDate","_formatCookieValue","cookieValue","_getCookieValue","_setCookieValue","uaDisallowsSameSiteNone","UInt32Mask","MaxUInt32","_mwcSeeded","_mwcW","_mwcZ","_mwcSeed","seedValue","_autoSeedMwc","signed","mwcRandom32","instanceName","_dataUid","_canAcceptData","_getCache","theCache","createUniqueNamespace","includeVersion","createElmNodeData","kill","strEvents","strVisibilityChangeEvt","strPageHide","strUnload","strBeforeUnload","strPageHideNamespace","rRemoveEmptyNs","rRemoveTrailingEmptyNs","_guid","elmNodeData","eventNamespace","_normalizeNamespace","_getEvtNamespace","evtNamespace","theNamespace_1","_getRegisteredEvents","evtName","addDefault","registeredEvents","_doDetach","handlerRef","useCapture","_doUnregister","unRegFn","mergeEvtNamespace","theNamespace","newNamespaces","eventOn","guid","eventOff","_unregisterEvents","found_1","addEventHandler","_addEventListeners","excludeEvents","added","removeEventListeners","removeEventHandler","addPageUnloadEventListener","addPageHideEventListener","pageUnloadAdded","generateW3CId","oct","hexValues","DEFAULT_VERSION","INVALID_VERSION","INVALID_TRACE_ID","INVALID_SPAN_ID","_isValid","invalidValue","_formatValue","_formatFlags","createTraceParent","traceId","spanId","isValidTraceId","isValidSpanId","formatTraceParent","createDomEvent","RequestHeaders","mapClass","createValueMap","requestContextHeader","requestContextTargetKey","requestContextAppIdFormat","requestIdHeader","traceParentHeader","traceStateHeader","sdkContextHeader","sdkContextHeaderAppIdRequest","requestContextHeaderLowerCase","_document","_htmlAnchorIdx","_htmlAnchorElement","urlParseUrl","tempAnchor","anchorIdx","urlGetAbsoluteUrl","urlGetCompleteUrl","absoluteUrl","urlParseHost","inclPort","urlParseFullHost","_internalEndpoints","isInternalApplicationInsightsEndpoint","endpointUrl","CorrelationIdHelper","correlationIdPrefix","canIncludeCorrelationHeader","requestHost","matchExists_1","getCorrelationContext","getCorrelationContextValue","dateTimeUtilsNow","dateTimeUtilsDuration","createDistributedTraceContextFromTrace","telemetryTrace","parentCtx","getName","setName","getTraceId","setTraceId","getSpanId","setSpanId","getTraceFlags","setTraceFlags","RemoteDependencyData","requestAPI","resultCode","dependencyKind","dependencySource","commandName","dependencyTypeName","pathName","_defaultPerfManager","PerfEvent","accessorDefined","theDetails_1","payloadDetails","childTime","PerfManager","perfEvent","doPerfActiveKey","doPerf","mgrSource","getSource","perfMgr","perfEvt","currentActive","pluginStateData","_getPluginState","initializePlugins","processContext","lastPlugin","isInitialized","pluginState","initPlugins","proxy","thePlugin","sortPlugins","strTelemetryPluginChain","_chainId","_createInternalContext","telemetryChain","_nextProxy","completeDetails","_onComplete","diagLog","getCfg","getExtCfg","hasNext","setNext","iterate","onComplete","mergeDefault","theConfig","newConfig_1","createProcessTelemetryContext","nextPlugin","createProcessTelemetryUnloadContext","createProcessTelemetryUpdateContext","createTelemetryProxyChain","chainId","getPlugin","processTelemetry","unload","_id","_setNext","nextProxy","itemCtx","hasRunContext","hasRun","unloadCtx","updateCtx","firstProxy","lastProxy_1","cbNames","_arrLoop","_doCallbacks","hooks","callDetails","cbArgs","hookCtx","hookErrorCb","_getOwner","checkPrototype","owner","_createInstrumentHook","callbacks","aiHook","orgArgs","funcArgs","newFunc","cbks","rm","InstrumentFunc","InstrumentEvent","createUnloadHandlerContainer","BaseTelemetryPlugin","currentCtx","pluginChain","_rootCtx","_isinitialized","_nextPlugin","_hooks","_unloadHandlerContainer","_initDefaults","_setDefaults","_unloadCallback","unloadDone","theUnloadCtx","_updateCallback","updateDone","_DYN_ENABLE_UNHANDLED_PRO3","_DYN_IS_BROWSER_LINK_TRAC5","_DYN_SEND_PAGE_VIEW_PERFO11","_DYN_POPULATE_PAGE_VIEW_P12","PageViewManager","_logger","appInsights","_flushChannels","customDuration","pageViewSent","_addQueue","processed","pageViewPerformanceManager","pageViewPerformanceSent","itemQueue","intervalHandle","doFlush","doFlush_1","MAX_DURATION_ALLOWED","botAgentNames","_isPerformanceTimingSupported","_isPerformanceTimingDataReady","_getPerformanceTiming","_getPerformanceNavigationTiming","_shouldCollectDuration","durations","isGoogleBot","PageViewPerformanceManager","pageViewPerformance","network","dom","PageVisitTimeManager","prevPageVisitData","startPageVisitTimer","pageVisitTimeTrackingHandler","PageVisitData","Timing","_dispatchEvent","evnt","_configMilliseconds","_getDefaultConfig","_updateStorageUsage","extConfig","AnalyticsPlugin","_eventTracking","_pageTracking","_pageViewManager","_pageViewPerformanceManager","_pageVisitTimeManager","_preInitTelemetryInitializers","_isBrowserLinkTrackingEnabled","_browserLinkInitializerAdded","_enableAutoRouteTracking","_historyListenerAdded","_disableExceptionTracking","_autoExceptionInstrumented","_enableUnhandledPromiseRejectionTracking","_autoUnhandledPromiseInstrumented","_trackAjaxAttempts","_prevUri","_currUri","_evtNamespace","pageView","errorSrc","_sendCORSException","_base","PageName","PageUrl","average","sampleCount","_addDefaultTelemetryInitializers","_updateBrowserLinkTracking","_addHook","rsp","_addUnhandledPromiseRejectionTracking","_updateExceptionTracking","distributedTraceCtx","traceLocationName","refUri","_addHistoryListener","_updateLocationChange","_aiNameFunc","baseName","_aiApplication","_aiDevice","_aiLocation","_aiOperation","_aiSession","_aiUser","_aiCloud","_aiInternal","ContextTagKeys","createClassFromInterface","applicationVersion","applicationBuild","applicationTypeId","applicationId","applicationLayer","deviceId","deviceIp","deviceLanguage","deviceLocale","deviceModel","deviceFriendlyName","deviceNetwork","deviceNetworkName","deviceOEMName","deviceOS","deviceOSVersion","deviceRoleInstance","deviceRoleName","deviceScreenResolution","deviceType","deviceMachineName","deviceVMName","deviceBrowser","deviceBrowserVersion","locationIp","locationCountry","locationProvince","locationCity","operationId","operationParentId","operationRootId","operationSyntheticSource","operationCorrelationVector","sessionIsFirst","sessionIsNew","userAccountAcquisitionDate","userAccountId","userId","userStoreRegion","userAuthUserId","userAnonymousUserAcquisitionDate","userAuthenticatedUserAcquisitionDate","cloudName","cloudRole","cloudRoleVer","cloudRoleInstance","cloudEnvironment","cloudLocation","cloudDeploymentUnit","internalNodeName","internalSdkVersion","internalAgentVersion","internalSnippet","internalSdkSrc","_this_1","Extensions","UserExt","DeviceExt","TraceExt","WebExt","AppExt","OSExt","SessionExt","SDKExt","CtxTagKeys","Envelope","sampleRate","Data","baseData","_DYN_DISABLE_INSTRUMENTAT7","strTrue","_setValueIf","_extractPropsAndMeasurements","_convertPropsUndefinedToCustomDefinedValue","customUndefinedValue","_createEnvelope","envelopeType","envelope","tgs","itmTags","theTags","_extractPartAExtensions","EnvelopeCreatorInit","EnvelopeCreator","Version","EventEnvelopeCreator","customMeasurements","_disableEvents","BaseSendBuffer","_buffer","_bufferFullMessageSent","ArraySendBuffer","SessionStorageSendBuffer","remaining","prefixedKey","buffer_1","_setBuffer","sentElements","Serializer","HashCodeScoreGenerator","SamplingScoreGenerator","Sample","samplingRate","isSampledIn","_getResponseText","_getDefaultAppInsightsChannelConfig","EnvelopeTypeCreator","currentContextId","Sender","_resendPayload","_checkAndUpdateEndPointUrl","_consecutiveErrors","_syncUnloadSender","_beaconSender","droppedPayload","_fallbackSender","payloadSize","_doFetchSender","ignoreResponse","_syncFetchPayload","batchLength","responseHandled","_checkResponsStatus","linearFactor","delayInSeconds","backOffDelay","_retryAt","_setRetryTime","_setupTimer","_timeoutHandle","timerValue","statusCode","xdr","_headers","_offlineListener","_lastSend","_paused","_serializer","_stamp_specific_redirects","_clearScheduledTimer","parentEvtNamespace","_isListening","_onlineStatus","isOnline","isListening","sendPostFunc","SampleRate","doNotSendItem_1","_notifySendRequest","forcedSender","failed","parseConnectionString","connectionString","Information","Critical","ConfigurationManager","ChannelControllerPriority","_addChannelQueue","channelQueue","TelemetryInitializerPlugin","_initializers","doNotSendItem","strValidationError","strSdkUnloadingError","defaultInitConfig","loggingLevelConsole","_createPerfManager","notificationMgr","_isPluginPresent","exists","BaseCore","_isInitialized","_config","_telemetryInitializerPlugin","_eventQueue","_notificationManager","_perfManager","_cfgPerfManager","_cookieManager","_pluginChain","_coreExtensions","_configExtensions","_channelControl","_channelConfig","_channelQueue","_isUnloading","_internalLogsEventName","_unloadHandlers","_traceCtx","channelPriority","allExtensions","extPriorities","coreExtensions","channels","extensionQueue_1","waiting","chainCtx","_runChainOnComplete","_processChannelQueue","teardown","getChannel","cbTimer","callBack","cbTimeout","handled_1","doCallback","sendReason","doneIterating","_setQueue","_doUpdate","theExt","_removePlugins","_initPluginChain","removed","removeCb","newConfigExtensions","newQueue","newChannelConfig","removeComplete","_initDebugListener","_initPerfManager","controls","_createTelCtx","_internalLogPoller","_flushInternalLogs","unloadState","processUnloadCtx","unloadComplete","_doUnload","addCb","_logOrThrowError","_addPlugin","_runListeners","NotificationManager","AppInsightsCore","_notifyInvalidEvent","_validateTelemetryItem","_DYN_EXCLUDE_REQUEST_FROM11","_calcPerfDuration","resourceEntry","_setPerfDuration","_setPerfValue","perfData","XHRMonitoringState","ajaxRecord","dependency","ajaxData","propsSet","server_1","_populatePerfData","correlationContext","partA","traceExt","AJAX_MONITOR_PREFIX","strFetch","ERROR_HEADER","ERROR_PREFIX","ERROR_POSTFIX","ERROR_NOT_SENT","CORRELATION_HEADER_ERROR","CUSTOM_REQUEST_CONTEXT_ERROR","FAILED_TO_CALCULATE_DURATION_ERROR","_markCount","_getFailedAjaxDiagnosticsMessage","_throwInternalCritical","ajaxMonitorInstance","_throwInternalWarning","_createErrorCallbackFunc","internalMessage","ajaxDiagnosticsMessage","_indexOf","_addHandler","_processDependencyContainer","BLOB_CORE","DfltAjaxCorrelationHeaderExDomains","_internalExcludeEndpoints","_getEmptyConfig","emptyConfig","AjaxMonitor","_fetchInitialized","_xhrInitialized","_currentWindowHost","_enableRequestHeaderTracking","_enableAjaxErrorStatusText","_isUsingW3CHeaders","_isUsingAIHeaders","_markPrefix","_enableAjaxPerfTracking","_maxAjaxCallsPerView","_enableResponseHeaderTracking","_disabledUrls","_disableAjaxTracking","_disableFetchTracking","_excludeRequestFromAutoTrackingPatterns","_addRequestContext","_dependencyHandlerId","_dependencyListeners","_dependencyInitializers","rlt","theRegex","theUrl","ajaxValidation","performance_1","attempt","perfTiming","trackCallback","errorProps","_findPerfResourceEntry","_reportDependencyInternal","_reportFetchError","requestSentTime","responseFinishedTime","_populateDefaults","_hookProto","req","_openHandler","responseHeaderMap_2","ajaxResponse","_reportXhrError","_onAjaxComplete","_attachToOnReadyStateChange","hkErr","_createMarkId","_isDisabledRequest","fetchData","_reportFetchMetrics","fetchDiagnosticsMessage","responseHeaderMap_1","_instrumentFetch","_populateContext","_processDependencyListeners","traceFlags","Application","Device","Internal","Location","Session","_SessionManager","maxAgeSec","_cookieUpdatedTimestamp","_storageNamePrefix","isExpired","_setCookie","_renew","_setStorage","TelemetryTrace","_validateUserInput","User","_setUserCookie","authCookie","storeInCookie","strExt","strTags","_removeEmpty","_internalSdkSrc","TelemetryContext","parentId","sesId","traceID","parentID","PropertiesPlugin","_extensionConfig","_distributedTraceCtx","_previousTraceCtx","theContext","userCtx","_processTelemetryInternal","instrumentationKey","STR_SNIPPET","STR_ADD_TELEMETRY_INITIALIZER","STR_POLL_INTERNAL_LOGS","STR_GET_PLUGIN","STR_EVT_NAMESPACE","_DYN_DISABLE_IKEY_DEPRECA18","_ignoreUpdateSnippetProperties","Initialization","_houseKeepingNamespace","_sender","_snippetVersion","snippet","_core","channel","legacyMode","snippetVer","_updateSnippetProperties","chkSet","_loop_1","proxyAssign","properties_1","appInsightsInstance","propertiesPlugin","removePageUnloadEventListener","removePageHideEventListener","_TRACK","sdkSrc","ProgressTileSize","ReactPlugin","_analyticsPlugin","_unlisten","_pageViewTimer","locn","reactPlugin","appInsightsHelper","ApplicationInsights","enableAutoRouteTracking","loadAppInsights","trackPageView","ProgressTile","progressTilePercentage","progressTileInitials","progressTileHeader","progressTileSize","XSmall","Small","Medium","Large","Document","alwaysShowAsStarted","getTilePercentageStyle","textcolor","getColor","getTextColor","scrollbarSize","recalc","scrollDiv","ModalDialog","contentClassName","centered","fullscreen","scrollable","dialogClass","fullScreenClass","ModalHeader","dialogAs","dialogClassName","Dialog","ariaDescribedby","modalStyle","setStyle","animateStaticModal","setAnimateStaticModal","waitingForMouseUpRef","ignoreBackdropClickRef","removeStaticModalAnimationRef","setModalRef","getModalManager","updateDialogStyle","containerIsOverflowing","modalIsOverflowing","getScrollbarSize","handleWindowResize","handleDialogMouseDown","handleMouseUp","handleStaticModalAnimation","handleStaticBackdropClick","baseModalStyle","DataType","ControlType","ModalBody","ModalTitle","Footer","ModalFooter","TRANSITION_DURATION","BACKDROP_TRANSITION_DURATION","tooltip","Feedback","FormCheckInput","isInvalid","controlId","FormContext","FormCheckLabel","htmlFor","FormCheck","bsSwitchPrefix","inline","feedbackTooltip","feedback","feedbackType","innerFormContext","hasLabel","hasChildOfType","Label","FormControl","htmlSize","plaintext","readOnly","FormGroup","FormLabel","column","visuallyHidden","columnClass","FormRange","FormSelect","FormText","muted","Switch","FloatingLabel","validated","Form","Group","Floating","FormFloating","Check","Range","Select","InputGroupText","InputGroup","hasValidation","Radio","Checkbox","MAX_DELAY_MS","setChainedTimeout","handleRef","timeoutAtMs","delayMs","useTimeout","onRootClose","handleKeyUp","removeKeyupListener","Overlay","outerRef","rootElement","mountOverlay","useRootClose","rootClose","rootCloseDisabled","Popover","primaryPlacement","bsDirection","getOverlayDirection","PopoverBody","PopoverHeader","POPPER_OFFSET","outerProps","popperRef","firstRenderedState","setFirstRenderedState","customOffset","overlayRef","popoverClass","useOverlayOffset","actualTransition","handleFirstUpdate","BaseOverlay","overlayProps","_popperObj$state","_popperObj$state$modi","popperObj","aRef","__wrapped","wrapRefs","updatedPlacement","outOfBoundaries","handleMouseOverOut","relatedNative","related","OverlayTrigger","trigger","propsShow","propsDelay","triggerNodeRef","hoverStateRef","setShow","normalizeDelay","handleFocus","handleBlur","handleMouseOver","handleMouseOut","triggers","triggerProps","onMouseOut","Tooltip","getTooltip","texts","fieldname","lookupValues","handleIsDirty","controlType","dateValue","originalValue","currency","minValue","extraClasses","alignLeft","light","fieldUpdated","textarea","picklist","dataType","lookup","maxValue","numberWithControls","decrement","textAlign","increment","decimal","fieldOnly","invalidText","customLabel","Pill","hasFocus","toggleFocus","newFocus","pill","extraClass","displayExpanded","disableCollapse","labelOnly","borderLeftStyle","borderRightStyle","backgroundColor","components","leftBorder","rightBorder","InputPill","hideIfValue","toggleState","inputs","getElementsByName","focused","optional","isFocused","readonly","usePlaceHolderForMinWidth","Spinner","bsSpinnerPrefix","currencyFormatter","currencyToNumber","FieldsCollection","getFieldByName","addField","entityReference","isPill","idAttribute","idValue","newEntity","dirtyFields","getFieldValueForEntity","model","replaceAll","handleDateChange","getFieldValue","addTextField","Applicant2SetupFieldsCollection","ApplicantSetup","validateEmail","saving","lastName","allowedSave","newContact","mortgageId","reload","alert","ApplicantSetupDialog","borderWidth","finished","AppointSolicitorTile","PurchasingaNewHome","InsuranceValidator","missingDetails","missingApplicant2","missingApplicant1Fields","missingApplicant2Fields","applicant1","birthDate","smoker","sex","applicationType","applicant2","InsuranceQuoteButton","requestAQuote","confirmation","showConfirm","missingDetailsResponse","profileComplete","hasInsuranceQuote","mini","alreadyQuoted","LifeCoverTile","quoted","quoteLoader","onDone","Profile","isCompleted","navigateTo","missingSecondary","formatNumbers","navigateToIncompletePage","percentageOfCompletion","mortgageDetailsPercentage","documentsPercentComplete","mortgageDetailsPerc","RemortgagingExistingLoan","saleAgreed","propertyDetailsPercentage","a1TimeLeft","mdTimeLeft","docTimeLeft","createProfileItem","getIconColor","a2TimeLeft","titleName","otherName","splashScreen","onApplicantSetupFinished","durationText","MortgageDetails","smokers","age","occupations","occupation","getApplicantNames","fullNames","getFullNames","ageAndOccupation","getAgeAndOccupation","getSmokers","subTypeFormatted","grossBasicIncomeFormatted","grossVariableIncomeFormatted","propertyValueFormatted","mortgageAmountProposedFormatted","berRatingFormatted","preferredLenders","preferredProduct","renderTable","ButtonGroup","vertical","baseClass","GetTooltips","entityname","PropertyFieldsCollection","addPicklistField","addDecimalField","addNumberField","addBooleanField","addCurrencyField","NO_OP","ConsoleLogger","logs","optionalParams","console_log","console_warn","console_error","addressAutocomplete","addressDrilldown","addressRetrieve","Address","handlePredictionSelection","prediction","bubbleUpValidity","drilldownPredictions","selectAddress","address","setFieldValue","eircode","county","city","country","addressLine1","addressLine2","addressLine3","lines","term","getCompositeAddress","selectedPrediction","predictions","searchValue","invalidAddress","toggleManualEntry","toggleAddressSearch","setPredictions","onBlurEvent","AutoComplete","helperTexts","customError","searchPredictions","sessionID","nextPredictions","reg","updateModel","updateFieldValue","isNullOrEmpty","clearSearch","letManual","customAddressPrompt","setSearchValue","addressManuallyUpdated","movedInDate","mortgageBefore","LinkPill","collapsed","canSave","collapse","saveOnDone","valueToDisplay","Property","redirectTo","addressIsValid","handleSubmit","saveAllFields","getTooltips","loadData","fieldCount","EquityReleaseTopup","EquityReleaseWithWorks","subType","equityReleasetoCarryOutHomeImprovements","propertyType","SelfBuild","selfOwnedSite","Yes","SecondHand","requirestructuralrenovations","fieldsDone","No","getFieldsDone","getFieldCount","newMortgage","getAsEntity","onSubmit","emptyOnly","NewBuild","MessageDirection","DocumentList","categories","documents","needsActionDocs","statusReason","NeedsAction","class","percentComplete","drillthrough","legend","needsAction","rootProps","legendClass","home","item_idx","portalName","Approved","comments","ChatMessage","Incoming","addclass","Outgoing","getChildMapping","mapFn","mapper","getNextChildMapping","prevChildMapping","nextChildMapping","getValueForKey","nextKeysPending","pendingKeys","prevKey","childMapping","nextKey","pendingNextKey","mergeChildMappings","hasPrev","prevChild","isLeaving","TransitionGroup","firstRender","currentChildMapping","childFactory","removeOneClass","CSSTransition","appliedClasses","_this$resolveArgument","resolveArguments","removeClasses","_this$resolveArgument2","_this$resolveArgument3","getClassNames","isStringClassNames","activeClassName","doneClassName","addOneClass","_addClass","_this$appliedClasses$","ChatQuestionType","QuestionManager","questions","currentQuestion","question","chatQuestionId","parentQuestionId","getFirstQuestion","getChildQuestions","ChatButtonList","showMore","primaryQuestions","secondaryQuestions","hasMoreQuestions","moreButtonVisible","setAnswer","FilePondPluginFileEncode","FilePondPluginFileValidateType","FileUploadLegacy","uploading","uploadStarted","uploadComplete","mortgageDocumentId","onUploadComplete","onDeleteComplete","ChatUpload","Saving","Current","fileUploaded","minWidth","documentCategory","goBack","confirmUpload","ChatControl","messagesEnd","questionManager","addAnswer","addQuestion","messages","uploadedDocuments","getQuestions","getNextQuestion","scrollToBottom","scrollIntoView","behavior","prevQuestion","getParentQuestion","getInitials","appendMessage","questionType","Statement","addChildQuestions","addBackButton","PrimaryApplicant","SecondaryApplicant","isBackButtonEnabled","DocumentCategory","updateApplicantName","Upload","helpText","helpTextMessage","uploadQuestion","removeLastMessage","removeQuestion","documentTypeQuestion","documentTypeQuestionTitle","hasChildQuestions","applicantQuestion","applicantQuestionTitle","documentCategoryQuestion","documentCategoryQuestionTitle","lastMessage","answer","CardImg","CardHeader","cardHeaderBsPrefix","CardHeaderContext","DivStyledAsH5","DivStyledAsH6","CardBody","CardTitle","CardSubtitle","CardLink","CardText","CardFooter","CardImgOverlay","Card","Img","Subtitle","ImgOverlay","isAccordionItemSelected","activeEventKey","AccordionCollapse","AccordionContext","AccordionBody","AccordionItemContext","AccordionButton","accordionOnClick","alwaysOpen","eventKeyPassed","useAccordionButton","AccordionHeader","AccordionItem","Accordion","require$$0","propIsEnumerable","toObject","test1","test2","order2","test3","letter","shouldUseNative","typeSpecs","require$$2","pickerPropTypes","clientOptions","_generateRandomId","usePicker","_onError","_onUploadDone","containerId","picker","filestack","PickerInline","FileUpload","filesUploaded","originalFile","uploadId","expandForMobile","burgerMenu","getElementsByClassName","simulateMouseClick","mouseEventType","PlaidLinkCustom","OpenBanking","publicToken","LinkOpenBanking","openBankingRequest","onEvent","linkToken","reportToken","transactions","createLinkToken","applicableTo","ChevronUp","fillRule","AIPStatus","AIPDDLStatus","AIPType","footer","FormattedDate","dateString","dayPart","yearPart","splitBy","convertStringToDate","monthFormat","excludeYear","toLocaleDateString","TransactionComments","saveComment","loadComments","transactionId","currentTransaction","customerComment","currentComment","showReply","transactionComments","showTransactionComments","DocumentPill","documentType","isCollapsed","uploadcollapsed","showPinDialog","originalPin","pin","selectedFileName","idPalLoader","selectedFileUploadId","useOpenBanking","isHelpTextCollapsed","downloadFile","deleteComplete","getPillClass","closePinDialog","showCommentAndPinDialog","saveCommentAndPin","collapsePill","custComment","comment","Active","Uploaded","InProgress","filesWithComments","mortgageDocument","accepted","itemIndex","approvalType","HouseHunter","houseHunterDocument","pillStatus","commentsAndFiles","cursor","getHouseHunterClass","metFaceToFace","IDPal","useIDPal","useLegacyUploader","DocumentManager","onDocumentDone","currentCategory","currentItem","refreshItem","primaryFilter","secondaryFilter","sharedFilter","cval","myAttribute","docs","calculatePercent","calcPercent","applicant","Shared","secondaryApplicantExist","applicants","allItems","primaryItems","secondaryItems","sharedItems","Inactive","displayToCustomer","fullPercent","primaryDocs","acat","bcat","secondaryDocs","sharedDocs","firstCategory","primaryCategories","holdingPage","firstPrimaryCategory","firstSecondaryCategory","secondaryCategories","cat","getCardClass","defaultActiveKey","getCardHeaderClass","idx2","primaryApplicantMetFaceToFace","secondaryApplicantMetFaceToFace","doneDocs","allDocs","completedDocs","Documents","selectedCategory","selectedDocument","documentsListKey","isChat","getCategories","loadFiles","addOpenBankingDocumentComments","openBankingfiles","statusClass","HelpBox","DocumentReview","specialConditionsId","handleDocumentClick","populateData","filteredDocuments","AIPApproved","AIPSubmitted","NotFound","ErrorPage","redirectExpired","LenderAdvice","UserProvider","onRequest","onRequestError","callErrorApi","onResponse","onResponseError","loadPillsTooltips","loadUserDetails","loadMortgage","loadMortgageDocuments","userNotFound","errorDetails","contactNotFound","newCalculatorState","pageRefreshListener","loadTooltips","loadSettings","settingsResponse","userDetailsResponse","setLastLoginTime","noMortgageError","mortgageResponse","mortgageDocumentsResponse","loadInstitutions","institutionsResponse","institutionId","tooltipsResponse","doclist","oldDocs","new","oldDoc","imp","DownloadDocumentButton","buttonStyle","download","documentTitle","textIndent","showError","ValuationDownloadButton","downloadValuation","downloadError","aipApplicationId","valuationExpiryDate","AIPDownloadButton","downloadDocument","Masonry","getColumns","columnsCount","renderColumns","gutter","justifyContent","alignContent","boxSizing","useWindowWidth","hasMounted","setHasMounted","useHasMounted","handleResize","MasonryResponsive","_ref$columnsCountBrea","columnsCountBreakPoints","_ref$className","_ref$style","windowWidth","breakPoints","breakPoint","AIPApplication","savingSaleAgreed","showSaleAgreedModal","applications","redirectToPropertyPage","redirectToCompletions","cta1Collapsed","cta2Collapsed","cta3Collapsed","onSpecialConditionsDeleteComplete","onSpecialConditionsUploadComplete","confirmSpecialConditionsUpload","foundMyNewHome","specialConditions","getSpecialConditionsById","Submitted","Clarifications","clarifications","Rejected","Expired","clarification","clarificationId","getClarificationById","lender","lenderChoice","chosenLender","chosenLenderFullName","aipDdlStatus","Proceeding","expirationDate","isFileAvailable","isValuationAvailable","submissionDate","responseDate","aips","completed","Withdrawn","aipStatus","awaitingOthers","awaitingOtherDocs","applicationsToDisplay","FullApplication","activeFullApplications","New","RejectedByLender","shortestSLA","sla","getStatusClass","lenderLogo","renderNew","renderExpired","renderRejected","renderSubmitted","renderApproved","renderClarifications","solicitor","ResponsiveMasonry","EVENT_KEY_ATTR","Nav","needsRefocusRef","listNode","getNextActiveTab","currentListNode","activeChild","nextIndex","nextActiveChild","uncontrolledProps","navbarBsPrefix","justify","navbarScroll","cardHeaderContext","BaseNav","TimelineItemStatus","SharedFieldsCollection","addDateField","_g","terms","berRatings","CalculatorFieldsCollection","NumberInput","snapshot","replaceWith","percentFormatter","percentToNumber","toFormat","getPlaceholder","numberValue","toValue","TermSelect","selectedterm","BooleanInput","SvgDodbera","svgRef","titleId","clipPath","SvgDodberb","SvgDodberc","SvgDodberd","SvgDodbere","SvgDodberf","SvgDodberg","SvgDodberIdle","BerImage","ratio","ber","SideNav","titleCol","fullTitleCol","percCol","renderOtherItemsOfImportanceMenu","renderApplicantMenu","saleAgreedNav","confirmTitleDeeds","metWithSolicitor","setClientAdvisedClosingDate","activeAppKey","appMenu","Applicant1","sharedFields","closeDateCollapsed","calculatorFields","homeValue","mortgageAmount","berRating","cashbackOnly","homeValueSliderRef","mortgageAmountSliderRef","termSliderRef","berSliderRef","appMenuSetup","findAppKey","ParentKey","stageSelected","Stage","menuItem","stage","contact1","contact2","Applicant2","refreshToggle","mortgageAmountProposed","propertyValue","purchasePrice","mortgageTerm","ApprovedByLender","Clarification","refresher","Icon","activeCompletions","stateClass","headersList","GetMortgageApproval","GetReadyForSaleAgreed","OtherImportantInfo","OtherResources","ComleteOnYourMortgage","FinalSteps","noHoversList","LifeCover","SaleAgreed","Solicitor","Completion","menu","useText","defaultToWaiting","Completed","Waiting","ToDo","DownloadEsis","downloadEsis","DownloadCostOfCredit","downloadCostOfCredit","dateIn","confirmedChosenLender","loanOfferRequested","conditions","PreLoanOfferClarification","atLoanOfferConditions","atLoanOfferClarifications","loanOfferReceived","conditionsLoaded","outstandingConditions","isEsisDownloaded","isCostOfCreditDownloaded","confirmedTitleDeeds","secureMortgageStatus","finalStepsStatus","loanOfferStatus","waitingForOffer","downloadESISStatus","downloadCostOfCreditStatus","isEsisAvailable","isCostOfCreditAvailable","uploadDocsStatus","titleDeedsStatus","ConfirmChosenLender","GetLetterOfOffer","CompletionDocs","ConfirmSolicitorHasDeeds","SecureMortgage","solicitorStatus","closingDateStatus","fundReleaseStatus","fundsReleaseDate","clientAdvisedClosingDate","estimatedClosingDate","MeetSolicitor","AgreeClosing","FundRelease","savingCloseDate","showCompletionsText","SaleAgreedCompletions","buttonCol","applicantStage","applicantMenu","personalInfoPercentage","residentialInfoPercentage","employmentInfoPercentage","assetsInfoPercentage","Applicant","Personal","Personal1","Residential","Residential1","Employment","Employment1","Financial","Financial1","AssetsAndLoans","AssetsAndLoans1","Personal2","Residential2","Employment2","Financial2","AssetsAndLoans2","handleAppSelect","setStep","bankingInfoPercentage","mortgageCalculator","MortgageCalculator","fullTextCol","purchaserHeader","switcherHeader","solicitorNav","solicitorDetailsPercentage","lifeCoverNav","propertyNav","calcState","selectedBer","sliderIndex","authenticated","primary","completionSteps","getCompletionSteps","activeCompletionStep","getActiveCompletionStep","applyLcoked","Closed","aipLocked","NewLead","ClientContacted","PortalSetup","PortalLogin","InformationGathering","completionsLocked","PreAIPClarification","maxWidth","handleHomeValueUpdate","handleMortgageAmountUpdate","handleTermUpdate","handleBerRatingSliderUpdate","handleCashbackOnlyUpdate","AIP","Mortgage","timelineCol","renderOtherResourcesMenu","deferredPayment","textCol","logo","alt","Dashboard","SharedDetails","LenderConfirmation","Step","NoHover","updateDirtyFlag","EquityReleaseNoWorks","giftAmount","otherSavingsAmount","topUpAmount","preferenceForYourRate","HomePage","aipCountLoaded","aipApprovedCount","hasApprovedHouseHunterAIP","portalFirstLogin","houseHunterApprovedCount","firstLogin","setFirstLoginTime","setMortgageFirstLoginTime","profileLandingPage","loadApprovedAIPCount","LoanOfferReceived","LoanOfferRequested","Completions","SolicitorFieldsCollection","SuppressedError","CalendlyEvent","sanitizeColorString","insertAt","styleSheet","styleInject","formatCalendlyUrl","prefill","pageSettings","utm","embedType","sanitizedPageSettings","primaryColor","textColor","hideEventTypeDetails","hideLandingPageDetails","hideGdprBanner","customAnswers","guests","smsReminderNumber","utmCampaign","utmContent","utmMedium","utmSource","utmTerm","salesforce_uuid","queryStringIndex","hasQueryString","queryString","updatedQueryString","formatCustomAnswers","CUSTOM_ANSWER_PATTERN","customAnswersFiltered","LoadingSpinner","InlineWidget","isLoading","LoadingSpinner$1","frameBorder","iframeTitle","ModalContent","ReactDom","onModalClose","PopupButton","PopupWidget","branding","SolicitorDetails","ownSolicitorPanel","useBeam","continueWithBeamPanel","letsBeamCalendlyPanel","useOwnSolicitor","bookACall","getfields","f1","emailAddress2","beamEmail","useLetsBeam","beamPanel","showOwnSolicitorOption","minHeight","usingBeam","decidePanel","redirectOnNext","switcherOrSaleAgreedPurchaser","steps","bumpRight","hideNav","getProperty","ReCAPTCHA","handleExpired","handleErrored","handleRecaptchaRef","grecaptcha","_widgetId","getResponse","getWidgetId","_executeRequested","executeAsync","executionResolve","executionReject","onExpired","onErrored","explicitRender","sitekey","theme","stoken","badge","captcha","delayOfCaptchaIframeRemoving","temporaryNode","SCRIPT_MAP","idCount","callbackName","SpecialConditionsType","getScriptURL","WrappedComponent","wrappedComponentName","AsyncScriptLoader","__scriptURL","asyncScriptLoaderGetScriptLoaderID","__scriptLoaderID","setupScriptURL","asyncScriptLoaderHandleLoad","asyncScriptOnLoad","asyncScriptLoaderTriggerOnScriptLoaded","mapEntry","obsKey","observers","scriptURL","globalName","scriptId","errored","callObserverFuncAndRemoveObserver","observersMap","removeOnUnmount","allScripts","forwardedRef","ForwardedComponent","hoistStatics","makeAsyncScriptLoader","recaptchaOptions","useRecaptchaNet","NotValid","captchaKey","requestNewLink","captchaOnChange","bearer","accessToken","showWelcomeVideo","startWelcomeVideo","LivingStatus","MaritalStatus","Nationality","Gender","EmploymentStatus","HasChildren","MissedPayments","BankrupcyOrCourt","OptInOut","ButtonSubmitPill","allowSubmit","handleWindowSizeChange","isMobileOrTablet","whiteSpace","mobileLabel","buttonLabel","CopyPill","copied","clipboard","writeText","ReferralBox","showReferral","sending","showEmailDialog","createReferrals","email1","email2","referral","contactCode","emailAddresses","ApplicantFieldsCollection","addLookupField","ApplicantService","userContext","handleTitleChange","occupationList","addLookupValues","nationalitiesList","countryList","redirect","otherApplicant","rateUpdateStatus","contact1Id","contact2Id","isJoint","categoryOrder","documentTypeList","ocpList","occupationId","dochelperTexts","concatStyleSets","styleSets","subComponentStyles","mergedSet","workingSubcomponentStyles","currentSet","currentComponentStyles","subCompProp","mergedValue","mergedSubStyles","workingSet_1","styleProps","styleFunctionOrObject","_window","_counter","GlobalSettings","globalSettings","_getGlobalSettings","oldValue","changeDescription","__id__","_getCallbacks","globalObj","NO_CUSTOMIZATIONS","scopedSettings","inCustomizerContext","_allSettings","Customizations","_raiseChange","scopeName","localSettings","localScopedSettings","globalScopedSettings","suppressUpdate","_suppressUpdates","CustomizerContext","customizations","useCustomizationSettings","unobserve","getSettings","DefaultFields","styled","baseStyles","getProps","customizable","pure","Wrapped","customizedStyles","additionalProps","__cachedInputs__","propStyles","concatenatedStyles","allStyles","concatStyleSetsWithProps","__noStyleOverride__","pureComponent","useConst","_stylesheet","InjectionMode","REUSE_STYLE_NODE","_global","serializedStylesheet","_rules","_preservedRules","_keyToClassName","_onInsertRuleCallbacks","_onResetCallbacks","_classNameToArgs","injectionMode","cspSettings","classNameToArgs","classNameCache","keyToClassName","preservedRules","rules","Stylesheet","_lastStyleElement","fabricConfig","FabricConfig","stylesheet","mergeStyles","rule","preserve","_getStyleElement","sheet","insertRule","cssRules","onInsertRule","includePreservedRules","_styleElement","_createStyleElement","styleElement","nodeToInsertBefore","nextElementSibling","placeholderStyleTag","_findPlaceholderStyleTag","_initializedStylesheetResets","resetIds","providedId","onReset","getId","extractStyleParts","_processArgs","argsList","translatedArgs","argsFromClassName","_vendorSettings","kebabRules","rulePairs","autoPrefixNames","prefixRules","vendorSettings","nav","isWebkit","isMoz","isOpera","isMs","getVendorSettings","NON_PIXEL_NUMBER_PROPS","provideUnits","isNonPixelProp","isVariableOrPrefixed","unit","LEFT","RIGHT","NAME_REPLACEMENTS","VALUE_REPLACEMENTS","rtlifyRules","rtl","flipQuad","partIndex","numberVal","negateNum","getDisplayName","rootStyle","_rtl","globalSelectorRegExp","expandSelector","newSelector","currentSelector","extractSelector","__order","extractRules","selectorWithGlobals","replacementInfo","findGlobal","matchIndex","matchEndIndex","expandCommaSeparatedGlobals","separatedSelector","currentRules","expandedRules","selectors","expandQuads","partStart","parens","tokenizeWithParentheses","getKeyForRules","hasProps","rulesForSelector","repeatString","serializeRuleEntries","ruleEntries","allEntries","styleToRegistration","registration","classNameFromKey","getClassName","rulesToInsert","applyRegistration","specificityMultiplier","processedRule","cacheClassName","mergeCssSets","classNameSet","concatenatedStyleSet","registrations","styleSetArea","getDocument","setRTL","getRTL","_isRTL","RTL_LOCAL_STORAGE_KEY","savedRTL","persistSetting","mergeStylesSetRTL","_memoizedClassNames","retVal","classNamesFunction","styleCalcCount","getClassNamesCount","currentMemoizedClassNames","useStaticStyles","disableCaching","_traverseMap","cacheSize","enableClassNameCacheFullWarning","_traverseEdge","_normalizeValue","toObjectMap","baseElementEvents","baseElementProperties","htmlElementProperties","audioProperties","buttonProperties","inputProperties","divProperties","getNativeProps","allowedPropNames","excludedPropNames","KeyCodes","DirectionalKeyCodes","isDirectionalKeyCode","IsFocusVisibleClassName","IsFocusHiddenClassName","updateClassList","setFocusVisibility","registeredProviders","mountCounters","callbackMap","setMountCounters","currValue","FocusRectsContext","useFocusRects","rootRef","disableFocusRects","onPointerDown","providerRef","ev","_onMouseDown","_onPointerDown","_onKeyDown","setCallbackMap","LocalizedFontNames","LocalizedFontFamilies","FontSizes","FontWeights","IconFontSizes","LabelBase","RootType","Arabic","Cyrillic","EastEuropean","Greek","Hebrew","Selawik","Vietnamese","WestEuropean","Armenian","Georgian","HighContrastSelector","ZIndexes","getFocusStyle","insetOrOptions","highContrastStyle","borderColor","outlineColor","isFocusedOnly","_getFocusStyleInternal","inset","palette","white","neutralSecondary","_h","FocusStyle","packagesCache","_win","setVersion","packages","__packages__","_root","_styleNonce","CSPSettings","_themeState","__themeState__","lastStyleElement","registeredStyles","runState","perf","flushTimer","registeredThemableStyles","initializeThemeState","applyThemableStyles","stylesArray","styleRecord","loadStyles","resolveThemableArray","styleString","styleArray","themable","newStyle","themableStyle","registerStyles","loadTheme","themableStyles","clearStylesInternal","clearStyles","reloadStyles","records","splitStyleArray","themeSlot","themedValue","rawString","Depths","DefaultPalette","themeDarker","themeDark","themeDarkAlt","themePrimary","themeSecondary","themeTertiary","themeLight","themeLighter","themeLighterAlt","black","blackTranslucent40","neutralDark","neutralPrimary","neutralPrimaryAlt","neutralSecondaryAlt","neutralTertiary","neutralTertiaryAlt","neutralQuaternary","neutralQuaternaryAlt","neutralLight","neutralLighter","neutralLighterAlt","accent","whiteTranslucent40","yellowDark","yellow","yellowLight","orange","orangeLight","orangeLighter","redDark","red","magentaDark","magenta","magentaLight","purpleDark","purple","purpleLight","blueDark","blueMid","blue","blueLight","tealDark","teal","tealLight","greenDark","green","greenLight","DefaultEffects","elevation4","depth4","elevation8","depth8","elevation16","depth16","elevation64","depth64","roundedCorner2","roundedCorner4","roundedCorner6","fontFace","_language","defaultFontFamily","LanguageToFontMap","cs","et","Hindi","hu","Japanese","ko","Korean","lt","lv","ru","Thai","tr","ChineseSimplified","ChineseTraditional","hy","_createFont","weight","MozOsxFontSmoothing","WebkitFontSmoothing","STORAGE_KEY","DefaultFontStyles","localeCode","fontFamilyWithFallback","_getLocalizedFontFamily","tiny","regular","xSmall","small","smallPlus","medium","mediumPlus","large","xLarge","semibold","xLargePlus","xxLarge","xxLargePlus","superLarge","mega","createFontStyles","persistenceType","savedLanguage","getLanguage","_registerFontFace","localFontName","localFontSrc","fontDisplay","_registerFontFaceSet","cdnFolder","cdnFontName","urlBase","semilight","bold","_merge","circularReferences","isCircularReference","makeSemanticColors","isInverted","depComments","listTextColor","listText","menuItemBackgroundChecked","warningHighlight","warningText","messageText","successText","_fixDeprecatedSlots","getSemanticColors","primaryButtonBorder","errorText","messageLink","messageLinkHovered","infoIcon","errorIcon","blockingIcon","warningIcon","severeWarningIcon","successIcon","infoBackground","errorBackground","blockingBackground","warningBackground","severeWarningBackground","successBackground","bodyBackground","bodyFrameBackground","accentButtonText","buttonBackground","primaryButtonText","primaryButtonTextHovered","primaryButtonTextPressed","inputBackground","inputForegroundChecked","listBackground","menuBackground","cardStandoutBackground","bodyTextChecked","buttonTextCheckedHovered","primaryButtonBackground","inputBackgroundChecked","inputIcon","inputFocusBorderAlt","menuIcon","menuHeader","accentButtonBackground","primaryButtonBackgroundPressed","inputBackgroundCheckedHovered","inputIconHovered","linkHovered","primaryButtonBackgroundHovered","inputPlaceholderBackgroundChecked","bodyBackgroundChecked","bodyFrameDivider","bodyDivider","variantBorder","buttonBackgroundCheckedHovered","buttonBackgroundPressed","listItemBackgroundChecked","listHeaderBackgroundPressed","menuItemBackgroundPressed","bodyBackgroundHovered","buttonBackgroundHovered","buttonBackgroundDisabled","buttonBorderDisabled","primaryButtonBackgroundDisabled","disabledBackground","listItemBackgroundHovered","listHeaderBackgroundHovered","menuItemBackgroundHovered","primaryButtonTextDisabled","disabledSubtext","listItemBackgroundCheckedHovered","disabledBodyText","variantBorderHovered","buttonTextDisabled","inputIconDisabled","disabledText","bodyText","actionLink","buttonText","inputBorderHovered","inputText","menuItemText","bodyStandoutBackground","defaultStateBackground","actionLinkHovered","buttonTextHovered","buttonTextChecked","buttonTextPressed","inputTextHovered","menuItemTextHovered","bodySubtext","focusBorder","inputBorder","smallInputBorder","inputPlaceholderText","buttonBorder","disabledBodySubtext","disabledBorder","buttonBackgroundChecked","menuDivider","cardShadow","cardShadowHovered","fontUrl","registerDefaultFontFaces","fontBaseUrl","_getFontBaseUrl","DefaultSpacing","s2","s1","l1","l2","createTheme","partialTheme","mergedTheme","semanticColors","defaultFontStyle","mergeThemes","disableGlobalClassNames","_theme","_onThemeChangeCallbacks","ThemeSettingName","initializeThemeInCustomizations","legacyTheme","legacyLoadTheme","fontName","_loadFonts","labelFontWeight","labelColor","labelDisabledColor","labelRequiredStarColor","boxShadow","wordWrap","overflowWrap","forcedColorAdjust","MsHighContrastAdjust","COMPONENT_NAME","ToggleBase","controlledChecked","inlineLabel","offAriaLabel","offText","onAriaLabel","onChanged","onToggleClick","onText","controlledValue","defaultUncontrolledValue","isControlled","onChangeRef","setValueOrCallOnChange","useControllableValue","isChecked","setChecked","onOffMissing","badAriaLabel","labelId","stateTextId","stateText","toggleNativeProps","labelledById","toggleButton","useComponentRef","slotProps","thumb","toggleButtonRef","componentRef","pillUncheckedBackground","pillCheckedBackground","pillCheckedHoveredBackground","thumbUncheckedHoveredBackground","pillCheckedDisabledBackground","thumbBackground","thumbCheckedBackground","thumbDisabledBackground","thumbCheckedDisabledBackground","pillBorderColor","pillBorderHoveredColor","pillBorderDisabledColor","textDisabledColor","wordBreak","DEFAULT_PILL_HEIGHT","DEFAULT_THUMB_SIZE","borderStyle","userSelect","RateCheckerTile","applicantService","saveRateUpdated","getApplicantData","saveRateUpdateStatus","OptIn","OptOut","fixedTermYearsProposed","offeredInterestRate","SpreadTheWordTile","StayInformedTile","LoanOfferDownloadButton","downloadLO","ConfirmTitleDeedsTile","ESISTile","CostOfCreditTile","LoanCompletion","detailsExpanded","navigateToSolicitor","navigateToProperty","navigateToMortgageDetails","navigateToDocumentsPage","confirmingDetails","confirmingTitleDeeds","confirmingMetSolicitor","displayOnMobile","hasHouseHunterApprovedAIPOnly","refresh","conditionId","confirmClarificationUpload","onLODocumentDone","LoanofferCustomercondition","box","mortgagedetails","propertyAddress","loanofferdetails","allDone","conditionalDocsTile","hasIncompleteConditions","faIcon","renderLOClarification","renderSpecialCondition","loanOfferTile","outstandingClarifications","getTextClass","estimatedLoanOfferIssueDate","chosenAip","loanOfferExpiryDate","isLoanOfferAvailable","referralTile","horizontal","mortgageDetailsLarge","passedLenderDetailsHoldingScreen","address1Line1","companyName","mobile","mortgageDetailsMini","chosenLenderLogo","chosenLenderProduct","termAdditionalMonths","purchasePriceFormatted","redirectToDocuments","mortgageDetailsTile","houseHunterAIPCount","fullAIPCount","PerformanceEvents","PerformanceEventStatus","application","confirming","confirmed","specialOffers","confirmApplication","CryptoKeyStoreNames","JoseHeaderErrorMessage","JoseHeaderError","typ","alg","kid","JoseHeader","shrHeaderOptions","createMissingKidError","createMissingAlgError","shrHeader","Jwt","MathUtils","GuidGenerator","decimalToHex","guidHolder","guidResponse","BrowserStringUtils","sDOMStr","nChr","nArrLen","nStrLen","nMapIdx","aBytes","nIdx","nChrIdx","dataString","sView","nPart","nLen","Base64Encode","inputArr","base64EncArr","inputUtf8Arr","stringToUtf8Arr","eqLen","sB64Enc","nMod3","nUint24","uint6ToB64","nUint6","Base64Decode","encodedString","base64DecToArr","utf8ArrToString","base64String","nBlockSize","nInLen","nOutLen","nMod4","nOutIdx","nInIdx","b64ToUint6","charNum","BrowserAuthErrorMessage","BrowserAuthError","hashValue","windowParentCheck","givenPrompt","errorDesc","errorDetail","keyId","base64Encode","PkceGenerator","codeVerifier","generateCodeVerifier","generateCodeChallengeFromVerifier","codeChallenge","verifier","challenge","urlEncodeArr","createPkceNotGeneratedError","pkceCodeVerifier","sha256Digest","pkceHashedCodeVerifier","e_1","S256_HASH_ALG","PUBLIC_EXPONENT","hasCryptoAPI","createCryptoNotAvailableError","_keygenAlgorithmOptions","modulusLength","publicExponent","BrowserCrypto","hasIECrypto","getMSCryptoDigest","getSubtleCryptoDigest","dataBuffer","extractable","usages","msCryptoGenerateKey","subtle","generateKey","msCryptoExportJwk","exportKey","keyString","getJwkString","keyBuffer","stringToArrayBuffer","msCryptoImportKey","importKey","msCryptoSign","hasBrowserCrypto","algorithm","digestOperation","msGenerateKey","msExportKey","resultBuffer","resultString","msImportKey","msSign","jwk","dbName","tableName","dbOpen","DatabaseStorage","openDB","indexedDB","createObjectStore","createDatabaseUnavailableError","validateDbIsOpen","createDatabaseNotOpenError","dbGet","objectStore","closeConnection","dbPut","dbDelete","dbGetKeys","dbContainsKey","deleteDbRequest","deleteDatabase","MemoryStorage","cacheKeys","storeName","inMemoryCache","indexedDBCache","AsyncMemoryStorage","handleDatabaseAccessError","e_2","e_3","getKeys","e_4","containsKey","e_5","dbDeleted","e_6","CcsCredentialType","asymmetricKeys","symmetricKeys","CryptoKeyStore","clearInMemory","clearPersistent","performanceClient","browserCrypto","b64Encode","b64Decode","guidGenerator","pkceGenerator","CryptoOps","generateGuid","generateCodes","publicKeyThumbMeasurement","startMeasurement","CryptoOptsGetPublicKeyThumbprint","generateKeyPair","EXTRACTABLE","POP_KEY_USAGES","keyPair","exportJwk","publicKeyJwk","pubKeyThumprintObj","kty","publicJwkString","hashString","publicJwkHash","privateKey","privateKeyJwk","importJwk","unextractablePrivateKey","requestMethod","resourceRequestMethod","requestUri","resourceRequestUri","endMeasurement","signJwtMeasurement","CryptoOptsSignJwt","cachedKeyPair","createSigningKeyNotFoundInStorageError","publicKeyJwkString","encodedKeyIdThumbprint","urlEncode","getShrHeaderString","encodedShrHeader","cnf","encodedPayload","tokenString","tokenBuffer","signatureBuffer","encodedSignature","signedJwt","plainText","hashBuffer","hashBytes","PerformanceClient","libraryName","libraryVersion","applicationTelemetry","eventsByCorrelationId","measurementsById","measureName","eventCorrelationId","generateId","performanceMeasurement","startPerformanceMeasuremeant","inProgressEvent","appName","appVersion","startTimeMs","cacheEventByCorrelationId","cacheMeasurement","completedEvent","flushMeasurement","flushMeasurements","discardMeasurement","discardMeasurements","measurement","durationMs","existingEvents","eventsForCorrelationId","completedEvents_1","sortedCompletedEvents","eventA","eventB","topLevelEvents","topLevelEvent","eventToEmit","previous","subMeasurementName","accessTokenSize","idTokenSize","emitEvents","StubPerformanceMeasurement","StubPerformanceClient","DEFAULT_CRYPTO_IMPLEMENTATION","createNewGuid","createUnexpectedError","generatePkceCodes","getPublicKeyThumbprint","removeTokenBindingKey","clearKeystore","signJwt","InteractionRequiredServerErrorMessage","InteractionRequiredAuthSubErrorMessage","InteractionRequiredAuthErrorMessage","InteractionRequiredAuthError","isInteractionRequiredErrorCode","isInteractionRequiredSubError","isInteractionRequiredErrorDesc","irErrorCode","ServerError","CredentialEntity","generateAccountIdForCacheKey","generateCredentialIdForCacheKey","credentialType","familyId","generateTargetForCacheKey","generateCredentialCacheKey","tokenType","requestedClaimsHash","ID_TOKEN","ACCESS_TOKEN","ACCESS_TOKEN_WITH_AUTH_SCHEME","REFRESH_TOKEN","createUnexpectedCredentialTypeError","generateClaimsHashForCacheKey","generateSchemeForCacheKey","BEARER","ClientConfigurationErrorMessage","ClientConfigurationError","claimsRequestParseError","urlString","urlParseError","inputScopes","promptValue","invalidHeaderName","scopeArr","trimArrayEntries","__spreadArrays","filteredInput","removeEmptyStringsFromArray","validateInputScopes","ScopeSet","inputScopeString","createEmptyScopesArrayError","containsScope","lowerCaseScopesSet","printScopesLowerCase","containsScopeSet","scopeSet","asArray","defaultScopeCount","defaultScope","appendScope","appendScopes","newScopes","createAppendScopeSetError","removeScope","createRemoveEmptyScopeFromSetError","unionScopeSets","otherScopes","createEmptyInputScopeSetError","unionScopes","intersectingScopeSets","containsOnlyOIDCScopes","removeOIDCScopes","sizeOtherScopes","getScopeCount","sizeThisScopes","printScopes","AuthToken","rawToken","extractTokenClaims","encodedToken","decodedToken","decodeAuthToken","base64TokenPayload","base64Decoded","CacheManager","cryptoImpl","getAccountsFilteredBy","accountValues","accountKey","accountInfo","getAccountInfo","readIdTokenFromCache","saveCacheRecord","cacheRecord","createNullOrUndefinedCacheRecord","setIdTokenCredential","saveAccessToken","refreshToken","setRefreshTokenCredential","appMetadata","setAppMetadata","credential","currentTokenCache","getCredentialsFilteredBy","currentScopes","fromString","currentAccessTokens","accessTokens","removedAccessTokens_1","tokenEntity","removeCredential","setAccessTokenCredential","accountFilter","getAccountsFilteredByInternal","allCacheKeys","matchingAccounts","cacheKey","matchHomeAccountId","matchEnvironment","matchRealm","matchNativeAccountId","getCredentialsFilteredByInternal","userAssertionHash","matchingCredentials","idTokens","refreshTokens","credType","getCredentialType","getSpecificCredential","matchUserAssertionHash","matchCredentialType","matchClientId","matchFamilyId","matchTarget","matchTokenType","SSH","matchKeyId","updatedCacheKey","updateCredentialCacheKey","getAppMetadataFilteredBy","getAppMetadataFilteredByInternal","matchingAppMetadata","isAppMetadata","getAppMetadata","getAuthorityMetadataByAlias","getAuthorityMetadataKeys","matchedEntity","isAuthorityMetadata","getAuthorityMetadata","aliases","removedAccounts","removeAccount","createNoAccountFoundError","removeAccountContext","ACCOUNT","generateAccountId","removedCredentials","cacheEntity","generateCredentialKey","POP","createBindingKeyNotRemovedError","CREDENTIAL","readCacheRecord","cachedAccount","readAccountFromCache","cachedIdToken","cachedAccessToken","readAccessTokenFromCache","cachedRefreshToken","readRefreshTokenFromCache","cachedAppMetadata","readAppMetadataFromCache","readAccountFromCacheWithNativeAccountId","accountCache","createMultipleMatchingAccountsInCacheError","idTokenFilter","credentialCache","numIdTokens","createMultipleMatchingTokensInCacheError","authScheme","authenticationScheme","accessTokenFilter","sshKid","numAccessTokens","familyRT","refreshTokenFilter","appMetadataFilter","appMetadataEntries","numAppMetadata","createMultipleMatchingAppMetadataInCacheError","cloudMetadata","entityScopeSet","requestTargetScopeSet","generateAuthorityMetadataCacheKey","getIdTokenCredential","getAccessTokenCredential","getRefreshTokenCredential","json","DefaultStorageClass","IdTokenEntity","idTokenEntity","TimeUtils","expiresOn","expirationSec","cachedAt","AccessTokenEntity","extExpiresOn","cryptoUtils","refreshOn","requestedClaims","atEntity","currentTime","extendedExpiresOn","tokenClaims","createTokenClaimsRequiredError","RefreshTokenEntity","rtEntity","AppMetadataEntity","generateAppMetadataCacheKey","failedRequests","cacheHits","ServerTelemetryEntity","validateKey","validateEntity","expiresAt","AuthorityMetadataEntity","fromNetwork","preferred_cache","preferred_network","aliasesFromNetwork","authorization_endpoint","token_endpoint","end_session_endpoint","issuer","endpointsFromNetwork","jwks_uri","updateCanonicalAuthority","canonical_authority","ThrottlingEntity","ProtocolUtils","userState","libraryState","generateLibraryState","createNoCryptoObjectError","stateObj","stateString","createInvalidStateError","splitState","libraryStateString","libraryStateObj","userRequestState","ProtocolMode","AzureCloudInstance","validateWindowStorage","windowStorage","BrowserStorage","createStorageNotSupportedError","_urlString","createUrlEmptyError","getHash","UrlString","canonicalizeUri","lowerCaseUrl","getUrlComponents","createUrlParseError","HostNameAndPort","PathSegments","Protocol","createInsecureAuthorityUriError","replaceTenantPath","urlObject","pathArray","COMMON","ORGANIZATIONS","constructAuthorityUriFromObject","parseHash","regEx","urlComponents","AbsolutePath","QueryString","pathSegments","relativeUrl","baseComponents","hashIndex1","hashIndex2","queryIndex1","queryIndex2","parsedHash","deserializedHash","queryStringToObject","createHashNotDeserializedError","parsedQueryString","deserializedQueryString","parameters","getDeserializedHash","error_description","BrowserProtocolUtils","parseRequestState","locationHash","hashUrlString","cacheConfig","internalStorage","browserStorage","setupBrowserStorage","temporaryCacheStorage","setupTemporaryCacheStorage","migrateCacheEntries","BrowserCacheManager","idTokenKey","clientInfoKey","CLIENT_INFO","errorKey","errorDescKey","ERROR_DESC","migrateCacheEntry","setTemporaryCache","jsonValue","parsedJson","parsedAccount","validateAndParseJson","isAccountEntity","generateAccountKey","parsedIdToken","isIdTokenEntity","accessTokenKey","parsedAccessToken","isAccessTokenEntity","refreshTokenKey","parsedRefreshToken","isRefreshTokenEntity","appMetadataKey","parsedMetadata","isAppMetadataEntity","generateAppMetadataKey","serverTelemetryKey","isServerTelemetryEntity","serverTelemetry","isAuthorityMetadataEntity","wrapperSKU","wrapperVersion","WRAPPER_SKU","WRAPPER_VER","activeAccountKeyFilters","generateCacheKey","ACTIVE_ACCOUNT_FILTERS","activeAccountValueFilters","activeAccountKeyLocal","ACTIVE_ACCOUNT","activeAccountValueLocal","activeAccount","getAccountInfoByFilter","activeAccountValueObj","activeAccountKey","activeAccountValue","loginHint","accountSid","throttlingCacheKey","parsedThrottlingCache","isThrottlingEntity","throttlingCache","itemCookie","getItemCookie","setItemCookie","clearItemCookie","removeAllAccounts","removeAppMetadata","cookieName","cookieStr","getCookieExpirationTime","secureCookies","cookieList","cookiePrefix","cookieKey","cookieLifeDays","today","COOKIE_LIFE_MULTIPLIER","ADAL_ID_TOKEN","stateId","AUTHORITY","NONCE_IDTOKEN","REQUEST_STATE","cachedState","stateCacheKey","generateStateKey","getTemporaryCache","authorityCacheKey","generateAuthorityKey","authorityInstance","nonceCacheKey","generateNonceKey","ccsCredential","HOME_ACCOUNT_ID","CCS_CREDENTIAL","UPN","REQUEST_PARAMS","ORIGIN_URI","URL_HASH","CORRELATION_ID","NATIVE_REQUEST","setInteractionInProgress","stateKey","infoPii","resetRequestCache","clearMsalCookies","parsedState","extractBrowserRequestState","authCodeRequest","encodedValue","encodedTokenRequest","createNoTokenRequestCacheError","parsedRequest","createUnableToParseTokenRequestCacheError","cachedAuthority","createNoCachedAuthorityError","cachedRequest","getInteractionInProgress","INTERACTION_STATUS_KEY","createInteractionInProgressError","adalIdTokenString","msalIdTokenString","cachedIdTokenString","IdToken","upn","currentCacheKey","cacheItem","DEFAULT_SYSTEM_OPTIONS","tokenRenewalOffsetSeconds","preventCorsPreflight","proxyUrl","DEFAULT_LOGGER_IMPLEMENTATION","DEFAULT_NETWORK_IMPLEMENTATION","sendGetRequestAsync","sendPostRequestAsync","DEFAULT_LIBRARY_INFO","sku","cpu","os","DEFAULT_CLIENT_CREDENTIALS","clientSecret","clientAssertion","DEFAULT_AZURE_CLOUD_OPTIONS","azureCloudInstance","None","tenant","DEFAULT_TELEMETRY_OPTIONS","StubbedNetworkModule","FetchClient","getFetchHeaders","onLine","createGetRequestFailedError","createNoNetworkConnectivityError","getHeaderDict","createFailedToParseNetworkResponseError","reqBody","createPostRequestFailedError","Headers","optionsHeaders","headerDict","XhrClient","sendRequestAsync","setXhrHeaders","jsonResponse","networkResponse","createHttpMethodNotImplementedError","headers_1","headerArr","headerName","headerVal","BrowserUtils","replaceState","urlParts","opener","hashContainsKnownProperties","isInIframe","createBlockReloadInHiddenIframeError","allowRedirectInIframe","isIframedApp","createRedirectInIframeError","isInPopup","createBlockAcquireTokenInPopupsError","isBrowserEnvironment","createNonBrowserEnvironmentError","allowNativeBroker","initialized","createNativeBrokerCalledBeforeInitialize","msie11","msedge","NavigationClient","defaultNavigateWindow","noHistory","DEFAULT_IFRAME_TIMEOUT_MS","KeyLocation","eventCallbacks","listeningToStorageEvents","handleAccountCacheChange","EventHandler","message_1","cacheValue","parsedValue","emitEvent","ThrottlingUtils","thumbprint","cacheManager","generateThrottlingStorageKey","getThrottlingCache","throttleTime","THROTTLING","errorCodes","checkResponseStatus","checkResponseForRetryAfter","thumbprintValue","calculateThrottleTime","RETRY_AFTER","error_codes","setThrottlingCache","currentSeconds","homeAccountIdentifier","shrClaims","NetworkManager","networkClient","tokenEndpoint","preProcess","createNetworkError","postProcess","BaseClient","configuration","authOptions","userAuthOptions","userSystemOptions","userLoggerOption","storageImplementation","networkImplementation","cryptoImplementation","clientCredentials","libraryInfo","telemetry","serverTelemetryManager","persistencePlugin","serializableCache","clientCapabilities","azureCloudOptions","skipAuthorityMetadataCache","systemOptions","storageInterface","networkInterface","cryptoInterface","buildClientConfiguration","networkManager","createTokenRequestHeaders","ccsCred","CONTENT_TYPE","CCS_HEADER","executePostToTokenEndpoint","sendPostRequest","clearTelemetryCache","updateAuthority","updatedAuthority","discoveryComplete","createEndpointDiscoveryIncompleteError","RequestValidator","createRedirectUriEmptyError","prompt","promptValues","createInvalidPromptError","createInvalidClaimsRequestError","codeChallengeMethod","createInvalidCodeChallengeParamsError","validateCodeChallengeMethod","createInvalidCodeChallengeMethodError","eQParams","queryParams","RequestParameterBuilder","RESPONSE_TYPE","addResponseMode","responseMode","RESPONSE_MODE","QUERY","NATIVE_BROKER","addOidcScopes","requestScopes","SCOPE","addClientId","CLIENT_ID","addRedirectUri","validateRedirectUri","REDIRECT_URI","addPostLogoutRedirectUri","POST_LOGOUT_URI","addIdTokenHint","idTokenHint","ID_TOKEN_HINT","addDomainHint","domainHint","DOMAIN_HINT","addLoginHint","LOGIN_HINT","addCcsUpn","addCcsOid","addSid","SID","mergedClaims","addClientCapabilitiesToClaims","validateClaims","addCorrelationId","CLIENT_REQUEST_ID","addLibraryInfo","X_CLIENT_SKU","X_CLIENT_VER","X_CLIENT_OS","X_CLIENT_CPU","addApplicationTelemetry","appTelemetry","X_APP_NAME","X_APP_VER","addPrompt","validatePrompt","PROMPT","addState","STATE","addNonce","NONCE","validateCodeChallengeParams","CODE_CHALLENGE","CODE_CHALLENGE_METHOD","addAuthorizationCode","CODE","addDeviceCode","DEVICE_CODE","addRefreshToken","addCodeVerifier","CODE_VERIFIER","addClientSecret","CLIENT_SECRET","addClientAssertion","CLIENT_ASSERTION","addClientAssertionType","clientAssertionType","CLIENT_ASSERTION_TYPE","addOboAssertion","oboAssertion","OBO_ASSERTION","addRequestTokenUse","tokenUse","REQUESTED_TOKEN_USE","addGrantType","grantType","GRANT_TYPE","addExtraQueryParameters","eQparams","sanitizeEQParams","XMS_CC","addUsername","addPassword","addPopToken","cnfString","TOKEN_TYPE","REQ_CNF","addSshJwk","sshJwkString","addServerTelemetry","X_CLIENT_CURR_TELEM","generateCurrentRequestHeaderValue","X_CLIENT_LAST_TELEM","generateLastRequestHeaderValue","X_MS_LIB_CAPABILITY","addLogoutHint","logoutHint","LOGOUT_HINT","queryParameterArray","accountEntity","accessTokenEntity","refreshTokenEntity","appMetadataEntity","PopTokenGenerator","generateCnf","generateKid","reqCnf","reqCnfString","reqCnfHash","xms_ksl","SW","signPayload","shrNonce","resourceUrlString","resourceUrlComponents","at","client_claims","TokenCacheContext","tokenCache","hasChanged","ResponseHandler","cacheStorage","serverResponseHash","createStateNotFoundError","createStateMismatchError","client_info","validateTokenResponse","serverResponse","errString","correlation_id","trace_id","serverTokenResponse","reqTimestamp","authCodePayload","handlingRefreshTokenResponse","forceCacheRefreshTokenResponse","id_token","idTokenObj","createNonceMismatchError","generateHomeAccountId","requestStateObj","key_id","generateCacheRecord","cacheContext","beforeCacheAccess","generateAuthenticationResult","afterCacheAccess","spa_code","createIdTokenEntity","tid","generateAccountEntity","access_token","responseScopes","expiresIn","expires_in","extExpiresIn","ext_expires_in","refreshIn","refresh_in","tokenExpirationSeconds","extendedTokenExpirationSeconds","refreshOnSeconds","createAccessTokenEntity","token_type","refresh_token","createRefreshTokenEntity","foci","createAppMetadataEntity","CacheRecord","cloud_graph_host_name","msGraphhost","msgraph_host","createGenericAccount","protocolMode","createAccount","fromTokenCache","requestState","popTokenGenerator","createKeyIdMissingError","signPopToken","canonicalAuthority","fromCache","fromNativeBroker","AuthorizationCodeClient","getAuthCodeUrl","createAuthCodeUrlQueryString","appendQueryString","authorizationEndpoint","createTokenRequestCannotBeMadeError","executeTokenRequest","responseHandler","handleServerTokenResponse","hashFragment","serverParams","validateServerAuthorizationCodeResponse","createNoAuthCodeInServerResponseError","getLogoutUri","logoutRequest","createEmptyLogoutRequestError","createLogoutUrlQueryString","endSessionEndpoint","createTokenRequestBody","requestBody","queryParameters","createTokenQueryParameters","parameterBuilder","tokenQueryParameters","createQueryString","includeRedirectUri","addScopes","addThrottling","assertion","assertionType","AUTHORIZATION_CODE_GRANT","addClientInfo","reqCnfData","sshJwk","createMissingSshJwkError","isEmptyObj","addClaims","tokenBodyParameters","enableSpaAuthorizationCode","RETURN_SPA_CODE","extraScopesToConsent","addResponseTypeCode","addCodeChallengeParams","extractAccountSid","accountLoginHintClaim","extractLoginHint","extraQueryParameters","nativeBroker","addNativeBroker","login_hint","isOpenIdConfigResponse","EndpointMetadata","InstanceDiscoveryMetadata","NativeStatusCode","RegionDiscovery","environmentRegion","regionDiscoveryMetadata","autodetectedRegionName","IMDS_OPTIONS","getRegionFromIMDS","localIMDSVersionResponse","httpSuccess","region_source","IMDS","httpBadRequest","getCurrentVersion","currentIMDSVersion","FAILED_AUTO_DETECTION","currentIMDSVersionResponse","ENVIRONMENT_VARIABLE","Metadata","Authority","authorityOptions","_canonicalAuthority","validateAsUri","regionDiscovery","region_used","region_outcome","canonicalAuthorityUrlComponents","Default","_canonicalAuthorityUrlComponents","replacePath","replaceTenant","createLogoutNotSupportedError","cachedAuthorityParts","currentPart","cachedPart","OIDC","metadataEntity","hostnameAndPort","updateCloudDiscoveryMetadata","cloudDiscoverySource","updateEndpointMetadata","endpointSource","CACHE","resetExpiresAt","setAuthorityMetadata","getEndpointMetadataFromConfig","isAuthoritySameType","harcodedMetadata","getEndpointMetadataFromHardcodedValues","getEndpointMetadataFromNetwork","azureRegionConfiguration","azureRegion","updateMetadataWithRegionalInformation","createUnableToGetOpenidConfigError","defaultOpenIdConfigurationEndpoint","authorityMetadata","createInvalidAuthorityMetadataError","detectRegion","AUTO_DETECTION_REQUESTED_SUCCESSFUL","AUTO_DETECTION_REQUESTED_FAILED","CONFIGURED_MATCHES_DETECTED","CONFIGURED_NOT_DETECTED","CONFIGURED_NO_AUTO_DETECTION","replaceWithRegionalInformation","getCloudDiscoveryMetadataFromConfig","getCloudDiscoveryMetadataFromHarcodedValues","getCloudDiscoveryMetadataFromNetwork","createUntrustedAuthorityError","cloudDiscoveryMetadata","parsedResponse","getCloudDiscoveryMetadataFromNetworkResponse","createInvalidCloudDiscoveryMetadataError","isInKnownAuthorities","createCloudDiscoveryMetadataFromHost","instanceDiscoveryEndpoint","isCloudInstanceDiscoveryResponse","getDomainFromUrl","authorityString","authorityAzureCloudInstance","isAlias","authorityUrlInstance","authorityUrlParts","hostNameAndPort","isPublicCloudAuthority","buildRegionalAuthorityString","AuthorityFactory","authorityUri","acquireTokenAuthority","resolveEndpointsAsync","authorityUrl","ServerTelemetryManager","telemetryRequest","cacheOutcome","NO_CACHE_HIT","apiId","wrapperVer","telemetryCacheKey","platformFields","requestWithRegionDiscoveryFields","getRegionDiscoveryFields","lastRequests","getLastRequests","maxErrors","maxErrorsToSend","errorCount","cacheFailedRequest","setServerTelemetry","getServerTelemetry","numErrorsFlushed","serverTelemEntity","serverTelemetryEntity","dataSize","regionDiscoveryFields","regionUsed","regionSource","regionOutcome","updateRegionDiscoveryMetadata","setCacheOutcome","storageImpl","navigationClient","nativeMessageHandler","system","BaseInteractionClient","validatedRequest","createMissingSshKidError","requestRedirectUri","getCurrentUri","getAbsoluteUrl","forceRefresh","telemetryPayload","getWrapperMetadata","requestAuthority","createDiscoveredInstance","StandardInteractionClient","generatedPkceParams","validLogoutRequest","getLogoutHintFromIdTokenClaims","requestAzureCloudOptions","getClientConfiguration","clientConfig","getDiscoveredAuthority","discoveredAuthority","requestCorrelationId","createHashDoesNotContainStateError","platformStateObj","createUnableToParseStateError","createStateInteractionTypeMismatchError","getAuthorityMeasurement","StandardInteractionClientGetDiscoveredAuthority","userAuthority","builtAuthority","generateAuthority","subErrorCode","getRedirectUri","browserState","setRequestState","initializeBaseRequest","FRAGMENT","verbosePii","legacyLoginHint","getLegacyLoginHint","NativeAuthErrorMessage","NativeAuthError","PERSISTENT_ERROR","DISABLED","ACCOUNT_UNAVAILABLE","USER_INTERACTION_REQUIRED","USER_CANCEL","createUserCancelledError","NO_NETWORK","RefreshTokenClient","acquireToken","forceCache","acquireTokenByRefreshToken","createEmptyTokenRequestError","createNoAccountInSilentRequestError","isAppMetadataFOCI","acquireTokenWithCachedRefreshToken","noFamilyRTInCache","clientMismatchErrorWithFamilyRT","refreshTokenRequest","acquireTokenMeasurement","RefreshTokenClientExecuteTokenRequest","BaseClientCreateTokenRequestHeaders","REFRESH_TOKEN_GRANT","SilentFlowClient","acquireCachedToken","FORCE_REFRESH","createRefreshRequiredError","NO_CACHED_ACCESS_TOKEN","wasClockTurnedBack","isTokenExpired","CACHED_ACCESS_TOKEN_EXPIRED","REFRESH_CACHED_ACCESS_TOKEN","incrementCacheHits","generateResultFromCacheRecord","SilentCacheClient","silentRequest","SilentCacheClientAcquireToken","initializeServerTelemetryManager","acquireTokenSilent_silentFlow","createSilentFlowClient","silentAuthClient","cachedToken","error_1","createSilentLogoutUnsupportedError","provider","nativeStorageImpl","nativeStorageManager","silentCacheClient","NativeInteractionClient","nativeATMeasurement","NativeInteractionClientAcquireToken","initializeNativeRequest","nativeRequest","acquireTokensFromCache","isNativeBroker","messageBody","GetToken","sendMessage","validatedResponse","validateNativeResponse","handleNativeResponse","createSilentCacheRequest","isFatal","navigationOptions","redirectNavigationTimeout","navigateExternal","isInteractionInProgress","getCachedNativeRequest","createUserSwitchError","authorityPreferredCache","accountProperties","responseTokenType","shr","responseAccessToken","shrParameters","mats","getMATSFromResponse","isResponseFromCache","MATS","is_cached","remainingProperties","getPrompt","createNativePromptParameterNotSupportedError","windowTitleSubstring","extraParameters","extendedExpiryToken","handshakeTimeoutMs","extensionId","resolvers","handshakeResolvers","responseId","messageChannel","windowListener","onWindowMessage","NativeMessageHandler","tracePii","preferredProvider","sendHandshakeRequest","backupProvider","HandshakeRequest","onChannelMessage","timeoutId","createNativeHandshakeTimeoutError","handshakeResolver","createNativeExtensionNotInstalledError","Response","createError","HandshakeResponse","errorPii","nativeExtensionProvider","authCodeModule","authModule","InteractionHandler","networkModule","createEmptyHashError","authCodeResponse","handleFragmentResponse","handleCodeResponseFromServer","validateNonce","nonceKey","cachedNonce","cloud_instance_host_name","updateTokenEndpointAuthority","cachedCcsCred","checkCcsCredentials","tokenResponse","cleanRequestByState","cloudInstanceHostname","cloudInstanceAuthorityUri","cloudInstanceAuthority","unloadWindow","nativeStorage","PopupClient","popupName","generatePopupName","popupWindowAttributes","asyncPopups","acquireTokenPopupAsync","popup","openSizedPopup","initializeLogoutRequest","generateLogoutPopupName","mainWindowRedirectUri","logoutPopupAsync","initializeAuthorizationRequest","validRequest","updateCacheEntries","initializeAuthorizationCodeRequest","createAuthCodeClient","authClient","isNativeAvailable","fetchNativeAccountIdMeasurement","FetchAccountIdWithNativeBroker","navigateUrl","interactionHandler","popupParameters","popupWindow","initiateAuthRequest","monitorPopupForHash","state_1","validateAndExtractStateFromHash","removeThrottle","createNativeConnectionNotEstablishedError","nativeInteractionClient","handleCodeResponseFromHash","clearCacheOnLogout","logoutUri","openPopup","waitForLogoutPopup","navigateInternal","createEmptyNavigationUriError","maxTicks","windowHashTimeout","ticks","intervalId","closed","cleanPopup","createHashDoesNotContainKnownPropertiesError","createMonitorPopupTimeoutError","urlNavigate","popupParams","createEmptyWindowCreatedError","currentWindow","createPopupWindowError","winLeft","screenLeft","winTop","screenTop","winWidth","winHeight","popupSize","popupPosition","cleanRequestByInteractionType","RedirectHandler","redirectStartPage","cacheCodeRequest","redirectTimeout","onRedirectNavigate","RedirectClient","handleBackButton","persisted","getRedirectStartPage","responseHash","getRedirectResponseHash","loginRequestUrl","loginRequestUrlNormalized","removeHashFromUrl","currentUrlNormalized","handleHash","handleHashResult","replaceHash","processHashOnRedirect","homepage","getHomepage","clearHash","cachedHash","getCachedRequest","currentAuthority","getCachedAuthority","requestStartPage","navigateFrameWait","SilentHandler","loadFrame","loadFrameSync","timeoutMark","removeHiddenIframe","createMonitorIframeTimeoutError","contentHash","frameHandle","createHiddenIframe","authFrame","SilentIframeClient","SilentIframeClientAcquireToken","createSilentPromptValueError","silentTokenHelper","silentHandler","msalFrame","monitorIframeForHash","iframeHashTimeout","SilentRefreshClient","SilentRefreshClientAcquireToken","createRefreshTokenClient","refreshTokenClient","TokenCache","createUnableToLoadTokenError","loadIdToken","loadAccessToken","idAuthToken","SilentAuthCodeClient","createAuthCodeRequiredError","HybridSpaAuthorizationCodeClient","cloudInstanceHostName","startMark","endMark","BrowserPerformanceMeasurement","clearMarks","clearMeasures","getEntriesByName","supportsBrowserPerformance","entriesForMeasurement","BrowserPerformanceClient","visibilityState","startPageVisibility","getPageVisibility","endPageVisibility","userInputAuth","userInputCache","userInputSystem","userInputTelemetry","DEFAULT_AUTH_OPTIONS","AAD","DEFAULT_CACHE_OPTIONS","DEFAULT_LOGGER_OPTIONS","DEFAULT_BROWSER_SYSTEM_OPTIONS","getBrowserNetworkClient","loadFrameTimeout","detectIEOrEdge","nativeBrokerHandshakeTimeout","buildConfiguration","redirectResponse","hybridAuthCodeResponses","cacheOptions","DEFAULT_BROWSER_CACHE_MANAGER","nativeCacheOptions","nativeInternalStorage","ClientApplication","createProvider","blockNativeBrokerCalledBeforeInitialized","loggedInAccounts","redirectResponseKey","nativeClient","redirectClient","createRedirectClient","getRequestCorrelationId","preflightBrowserEnvironmentCheck","isLoggedIn","canUseNative","getNativeAccountId","atPopupMeasurement","AcquireTokenPopup","acquireTokenNative","createPopupClient","ssoSilentMeasurement","SsoSilent","createSilentIframeClient","silentIframeClient","atbcMeasurement","AcquireTokenByCode","hybridAuthCode_1","acquireTokenByCodeAsync","createUnableToAcquireTokenFromNativePlatformError","createAuthCodeOrNativeAccountIdRequiredError","createSilentAuthCodeClient","blockReloadInHiddenIframes","atbrtMeasurement","AcquireTokenByRefreshToken","createSilentRefreshClient","isServerError","isInteractionRequiredError","isInvalidGrantError","userName","blockNonBrowserEnvironment","blockRedirectInIframe","blockAcquireTokenInPopups","createInMemoryRedirectUnavailableError","preflightInteractiveRequest","getAccountInfoByHints","setWrapperMetadata","activeSilentTokenRequests","PublicClientApplication","atsMeasurement","AcquireTokenSilent","createNoAccountError","silentRequestKey","cachedResponse","acquireTokenSilentAsync","astsAsyncMeasurement","AcquireTokenSilentAsync","createSilentCacheClient","initializeSilentRequest","silentRequest_1","tokenRenewalError","bt","gt","yt","fastUniqueNumbers","MAX_SAFE_INTEGER","addUniqueNumber","generateUniqueNumber","kt","Lt","Mt","timerType","nt","onStorage","storageArea","onmessageerror","ot","BroadcastChannel","st","APPLY","TELL","CLOSE","REGISTER","DEREGISTER","ACTIVE","START","RESET","ACTIVATE","PAUSE","RESUME","MESSAGE","isLeader","isDead","isApplying","reApply","intervals","awaitLeadership","sendAction","responseTime","assumeLead","fallbackInterval","deferred","PROMPTED","allIdle","isLastActive","channelName","leaderElection","elector","waitForLeadership","idle","activate","onMessage","onPrompt","onActive","ct","promptTimeout","promptBeforeIdle","timers","immediateEvents","onPresenceChange","onAction","throttle","eventsThrottle","startOnMount","startManually","stopOnIdle","crossTab","syncTimers","Rt","prompted","ut","mt","dt","pt","ft","Ge","vt","It","isIdle","isPrompted","isLastActiveTab","getTabId","getRemainingTime","getElapsedTime","getTotalElapsedTime","getLastIdleTime","getLastActiveTime","getIdleTime","getTotalIdleTime","getActiveTime","getTotalActiveTime","setOnPresenceChange","setOnPrompt","setOnIdle","setOnActive","setOnAction","setOnMessage","Nt","LogoutOnIdle","setRemaining","setOpen","signOut","useIdleTimer","remainingSeconds","ImpersonateContact","impersonated","autoImpersonate","checkIsImpersonated","ApplicantPage","titleCta","subTitle","emptyOnlyClick","showFinishButton","ApplicantBaseComponent","usingCard","otherContact","address1IsValid","address2IsValid","AggregatePillOverlay","FieldWithHelptext","closePill","BothApplicantFieldsWithAggregate","field2","totalField","totalLabel","fieldLabel","field2Label","ApplicantResidential","threeYearsAgo","applicantOnePaysText","applicantTwoPaysText","address1MovedIn","movedInLessThanThreeYearsAgo","ownerOrRenter","SecondTimeBuyer","DEFAULT_LABELKEY","getStringLabelKey","labelKey","idCounter","pick","optionLabel","allowNew","getOptionLabel","getOptionProperty","letters","stripDiacritics","warned","falseToWarn","isMatch","searchStr","ignoreDiacritics","defaultFilterBy","filterBy","isEqual","isSelectable","inputNode","COMBINING_MARKS","getMatchBounds","subject","escapeStringRegexp","matchLength","_ii","activeIndex","initialItem","isMenuShown","initialItemStr","getMenuItemId","_cx","inputProps","cx","inputClassName","activeItem","highlightOnlyResult","maxResults","isDisabledOption","skipDisabledOptions","newIndex","getUpdatedActiveIndex","preventInputBlur","isSizeLarge","isSizeSmall","propsWithBsClassName","INPUT_PROPS_BLACKLIST","sizeType","checkPropType","isRequiredForA11y","optionType","onSearch","promptText","searchText","useCache","_ref$clickTrigger","preventMouseRootCloseRef","_e$composedPath$","defaultContext","hintText","isOnlyResult","onActiveItemChange","onAdd","onInitialItemChange","onMenuItemClick","TypeaheadContext","useTypeaheadContext","inputPropKeys","propKeys","contextKeys","onMenuToggle","selectHint","getHintText","getInputProps","addOnlyResult","getIsOnlyResult","shouldSelectHint","defaultSelectHint","getInputText","defaultInputValue","defaultOpen","onInputChange","onPaginate","paginate","getInitialState","showMenu","shownResults","clearTypeahead","clickOrFocusInput","hideMenu","_getInitialState","toggleMenu","triggerInputChange","inputValue","HTMLInputElement","Typeahead","_handleChange","_this$props$inputProp","shouldClearSelections","_getInitialState2","_handleActiveIndexChange","_handleMenuItemSelect","_handlePaginate","_handleSelectionAdd","customOption","prevSelected","precedent","uncontrolledToControlled","validateSelectedPropChange","mergedPropsAndState","isShown","_results$push2","shouldPaginate","getTruncatedOptions","addCustomOption","TypeaheadManager","_handleActiveItemChange","_handleBlur","_handleInputChange","onClear","_handleClear","_handleClick","_handleFocus","_handleInitialItemChange","_handleKeyDown","onRemove","_handleSelectionRemove","ClearButton","_onClick","Loader","initialStyles","fromEntries","SafeElement","dropup","positionFixed","setPopperWidth","getModifiers","getPlacement","_usePopper","prevOptions","optionsWithDefaults","_React$useState","updateStateModifier","popperOptions","popperInstance","defaultCreatePopper","refElementHeight","innerRef","useToken","setActive","handleRemove","_excluded3","InteractiveToken","StaticToken","classnames","_useToken","tokenProps","interpolateStyle","subattr","useHint","_useTypeaheadContext","hintRef","hintNode","inputStyle","copyStyles","_useHint","TypeaheadInputMulti","wrapperRef","lastToken","_propsWithBsClassName","referenceElementRef","_handleContainerClickOrFocus","Hint","getInputRef","highlightClassName","Highlighter","matchCount","highlighterChildren","nonMatch","canOverflow","skipOverflowHiddenElements","isScrollable","frame","frameElement","getFrameElement","isHiddenByFrame","scrollingEdgeStart","scrollingEdgeEnd","scrollingSize","scrollingBorderStart","scrollingBorderEnd","elementEdgeStart","elementEdgeEnd","elementSize","windowWithViewport","scrollMode","block","checkBoundary","scrollingElement","frames","viewportWidth","viewportHeight","scrollX","viewportY","scrollY","_target$getBoundingCl","targetHeight","targetWidth","targetTop","targetRight","targetBottom","targetLeft","targetBlock","targetInline","computations","_frame$getBoundingCli","frameStyle","borderLeft","borderTop","borderBottom","blockScroll","inlineScroll","borderRight","scrollbarHeight","alignNearest","viewportX","isOptionsObject","isTargetAttached","isConnected","compute","computeOptions","canSmoothScroll","defaultBehavior","useItem","itemRef","BaseMenuItem","MenuItem","emptyLabel","_ref$emptyLabel","_ref$maxHeight","newSelectionPrefix","paginationText","renderMenuItemChildren","TypeaheadMenu","menuItemProps","clearButton","renderInput","renderMenu","renderToken","defaultRenderMenu","defaultRenderToken","Token","overlayPropKeys","RootClose","TypeaheadComponent","_referenceElement","TypeaheadInputSingle","instanceRef","auxContent","_renderAux","_renderInput","getOverlayProps","_renderMenu","AggregateType","AggregateStatus","AsyncTypeahead","_props$delay","_props$minLength","_props$options","_props$promptText","_props$searchText","_props$useCache","cacheRef","handleSearchDebouncedRef","queryRef","handleSearch","handleInputChange","cachedQuery","useAsync","ocVal","selectedOccupation","employersName","address1","setOccupationValue","lengthYears","lengthMonths","AggregatePill","autoOpen","getStatusColour","valueToAggregate","sum","partialSum","asNum","sumAll","pSum2","firstValue","aggregate1status","inprogress","todo","value1ToDisplay","getAggregate","aggregate1type","aggregate1currency","value2ToDisplay","aggregate2type","aggregate2currency","countToDisplay","isMissing","firstCellColored","showLabelCount","aggregate1label","aggregate2label","cloned","headerClassName","SelfEmployment","Profit","VariableIncome","hasAny","ApplicantEmployment","visaExpiryCheck","getOccupations","visaExpiryDate","showPrevEmployer","lengthOfTimeEmployerYears","lengthOfTimeEmployerMonths","getFieldValueByName","prevOccupation","employersValue","prevEmployersValue","profitItems","grossProfit","previousYearProfit","profitPill","uniqueKey","variableIncomeItems","hasVariableIncome","commission","overtime","bonus","otherIncome","variableIncomePill","employmentStatus","address2","requireWorkPermit","AutoCompletePill","pillMissingClass","childrenNumber","ages","showItems","hasChildrenOnChange","childrenNumberOnChange","setAges","decrease","increase","hasChildren","setAgeValue","ageConst","setAge","ApplicantPersonal","changeEmail","saveChildrenPill","getNationalities","getCountries","childrenAge","ppsInvalidCheck","childrenAges","childrenItems","childrenPill","ptsb","preferredLender","hasChildcareCost","FinanceFieldsCollection","addTextAsNumberField","addNumberWithControlsField","Finance","institutionList","updateByName","isOtherInstitutionSelected","isAsset","categoryUniqueCode","switching","sellBeforePurchasing","checkAccountNumber","institutionAsTextField","FinancePill","createDocument","goToFiles","accountNumber","accountNumberAlreadyExists","duplicateAccountError","isSaving","isSavingForFiles","institutionName","otherInstitutionName","newMortgageDoc","documentId","categoryId","institution","currentBalance","termLeft","termPeriod","termRemaining","planOnClearingTheBalance","recurringYearlyValue","recurringMonthlyValue","getContact","assetsPercentage","bankingPercentage","setContact","modalpage","updateDocument","percentages","assetsAndLoans","banking","deleteDocument","validationError","deleteDocumentEx","institutionLookupItem","logoTile","backgroundImage","OpenBankingBubbles","ApplicantFinancial","getFilteredDocs","waitForFiles","addOpenBankingChecker","openBankingChecker","openBankingSuccess","getDocumentTypes","getFinanceTooltips","activeDocuments","inActiveDocuments","hasInactiveWithHasAnyEqualToNo","hasActiveWithMissingData","documentCode","isNew","inactiveDoc","getApplicantId","myId","requestId","refreshMortgageDocuments","bankingRender","initialRenderState","currentAccountDocs","savingsAccountDocs","openBankingDocs","transactionSource","renderState","refreshParent","addNewDocument","mDocId","openBanking","openBankingLowerAmount","openBankingUpperAmount","noDocs","renderPills","renderInitial","FinanceManager","deleting","saveDocument","isLatest","saveAsDeactivatedDocument","MortgageDocumentId","deactivateDocument","requiredField","saveDocuments","nameRequired","balanceRequired","institutionRequired","addressRequired","accountNumberRequired","institutionNameRequired","institutionNameOnOtherRequired","loanTypeRequired","otherIsSelected","loanType","hasActiveItems","hideAdd","catGrouped","groupBy","catKey","inActive","verticalAlign","ApplicantAssetsAndLoans","FirstTimeBuyer","toolTipKey","hasMissingData","getPillList","NumberAsCurrency","CalculatedLenderProductRow","rateText","fixedYears","lenderName","fixedYearText","minBer","rate","cashback","cashbackAmount","CashbackStamp","repayment","fixedCashback","calculatingResults","hasError","existingMortgage","exploreOptions","showSavings","remainingTerm","showBooking","calculateRepayments","calculateRepaymentsDelayed","repayments","interestRate","calculationResult","rates","bookingCalendarLink","scrollTo","scrolling","App","onPerfEntry","getCLS","getFID","getFCP","getLCP","getTTFB","GoToLoginPage","Unauthenticated","handleLogin","msalInstance","reportWebVitals"],"sourceRoot":""}